From 771c6cdcdbf8e53cdc49550c6811c0b198c32e1b Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 22 Apr 2020 14:25:30 +0100 Subject: [PATCH 001/271] Initial pci/usb support for rpi4 --- ...ost-support-for-Raspberry-Pi-4-board.patch | 2810 +++++++++++++++++ uboot-tools.spec | 7 +- 2 files changed, 2816 insertions(+), 1 deletion(-) create mode 100644 USB-host-support-for-Raspberry-Pi-4-board.patch diff --git a/USB-host-support-for-Raspberry-Pi-4-board.patch b/USB-host-support-for-Raspberry-Pi-4-board.patch new file mode 100644 index 0000000..7e025be --- /dev/null +++ b/USB-host-support-for-Raspberry-Pi-4-board.patch @@ -0,0 +1,2810 @@ +From patchwork Tue Apr 21 16:50:51 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sylwester Nawrocki +X-Patchwork-Id: 1274440 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 + header.s=mail20170921 header.b=WdQxUAmP; + dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4969pg3b6Yz9sSK + for ; Wed, 22 Apr 2020 03:41:15 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 1D29881C54; + Tue, 21 Apr 2020 19:40:35 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.b="WdQxUAmP"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id E6A1F819C9; Tue, 21 Apr 2020 18:51:20 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com + [210.118.77.12]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 665AF81737 + for ; Tue, 21 Apr 2020 18:51:15 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=s.nawrocki@samsung.com +Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) + by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id + 20200421165114euoutp02bbb9b5239f2513e0d9189f1226e47b4e~H48_1WmIq2124521245euoutp026 + for ; Tue, 21 Apr 2020 16:51:14 +0000 (GMT) +DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com + 20200421165114euoutp02bbb9b5239f2513e0d9189f1226e47b4e~H48_1WmIq2124521245euoutp026 +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; + s=mail20170921; t=1587487874; + bh=Zh1jdwMgEAvoABbbE+QRkb2erc3Jnb/5dK4/yTSfw9Q=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=WdQxUAmPR/8BTQJNAOZ3VNgu4eLYoptuxvKy/Yqhou6BXOeS3JwKEk34KeKRklEc+ + FiY/P2KH6XE18mliOjTqaql/Pmjyt4Gq4sNeNovGLMZqns//HAqOhxjkwAyHIEVI5H + 7in6T9IHRS81wSQrhXBRn+OOSDuEsg7mF8fimx7M= +Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by + eucas1p1.samsung.com (KnoxPortal) with ESMTP id + 20200421165114eucas1p176bc9417a0233a1932c7afc9fceaf79b~H48_nyHX51420814208eucas1p1r; + Tue, 21 Apr 2020 16:51:14 +0000 (GMT) +Received: from eucas1p2.samsung.com ( [182.198.249.207]) by + eusmges2new.samsung.com (EUCPMTA) with SMTP id 76.64.60679.2842F9E5; Tue, 21 + Apr 2020 17:51:14 +0100 (BST) +Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by + eucas1p2.samsung.com (KnoxPortal) with ESMTPA id + 20200421165114eucas1p2baa595b46f7503331ab86163f69b7c0e~H48_Wawfs1251112511eucas1p21; + Tue, 21 Apr 2020 16:51:14 +0000 (GMT) +Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by + eusmtrp2.samsung.com (KnoxPortal) with ESMTP id + 20200421165114eusmtrp2117931fb5a824a7165802d118f9e594c~H48_VyRz83266732667eusmtrp2J; + Tue, 21 Apr 2020 16:51:14 +0000 (GMT) +X-AuditID: cbfec7f4-0e5ff7000001ed07-07-5e9f24824ca7 +Received: from eusmtip1.samsung.com ( [203.254.199.221]) by + eusmgms1.samsung.com (EUCPMTA) with SMTP id 19.0E.08375.2842F9E5; Tue, 21 + Apr 2020 17:51:14 +0100 (BST) +Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by + eusmtip1.samsung.com (KnoxPortal) with ESMTPA id + 20200421165113eusmtip1034aafe2f169d868259e3244756060a5~H489q-u5q0895708957eusmtip1D; + Tue, 21 Apr 2020 16:51:13 +0000 (GMT) +From: Sylwester Nawrocki +To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com +Cc: agraf@suse.de, sjg@chrmium.org, jh80.chung@samsung.com, + m.szyprowski@samsung.com, b.zolnierkie@samsung.com, Sylwester Nawrocki + +Subject: [RFC PATCH 1/9] usb: xhci: Add missing cache flush in the + scratchpad array initialization +Date: Tue, 21 Apr 2020 18:50:51 +0200 +Message-Id: <20200421165059.19394-2-s.nawrocki@samsung.com> +X-Mailer: git-send-email 2.17.1 +In-Reply-To: <20200421165059.19394-1-s.nawrocki@samsung.com> +X-Brightmail-Tracker: H4sIAAAAAAAAA0VSa0hTYRjm2zln5zhbHKfgi1nCMqJMTTM4qN1IbP4Toh8VaqsdVNymbV7z + j5dQ8555w8RZYa2ZaCbiBcXU5S2TQE3TKaZFefkzTacOze2s+vc8z/s8z8v38lGYqJRwoaKV + 8axKKZWL+QK89cP2mGeGuyb8bGndSWZwfA8xbysbCaYsP4KZ2skimIZ+A8msZqUjpvbJEsH0 + rWYTTM7EPmLWuh6RlwWS+eE0QlJTNYhL2qsMpGR0tg1JClt0SNLYMoFL3o2khpK3BIEyVh6d + yKq8L94RRM1V6/G4HCrZ1J9FpqFJfi6iKKD9YPuLay4SUCJai8D4owZxZAPBpmkO48g6grFp + Iy8X2VkTHeM6m+sVgmHNb/JfpGF7E7e4+LQPFOgLkQU70aEwuV1uTWC0BoHZWG4dONIy0OaX + kRaM0yfg5dMVzIKFdACsTG7xuXVuUN/UY9Xt6EAwbFXiliKgi0hI3yi2vSIIXmfIOb8jLA+0 + kBx2hf12DY/zZyLI75whOVKMYH6gFnGuAJj9tGMtwuhT0NjhzclX4KNpCOf6D8PUmoNFxg5g + SWsFxslCyMkScW532NVV2C7kAnlL+ziHJZBeUGc7YxGCrtJFohi5Vf1fVouQDjmzCWpFJKv2 + VbJJXmqpQp2gjPS6F6toRgd/ZWRvYKMNdZjv9iKaQuJDwqmxmnARIU1Upyh6EVCY2EnYtHAg + CWXSlAesKjZClSBn1b3oCIWLnYXnnv8KE9GR0ng2hmXjWNXfKY+yc0lD55dz3ienzrwJDn7s + UPJicdX3+efuozvfpvLOUKb7RRm3/et/ZhcOL+xEDdZc0l4I0HfaDxUbPHljHl4hZuOk4usz + o71upE3f85A8brgaM+8d1u0nModcr69sdg84tha+eyPyuwc/SJu5sTCtunlttNof9FVFtCyp + sLfOdb3Pw1OMq6OkPqcxlVr6Bzy9nkcnAwAA +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrMLMWRmVeSWpSXmKPExsVy+t/xu7pNKvPjDE7cEbA4ceUfo8XGGetZ + Lab2xFvc+NXGarH2yF12izdtjYwWCyY/YbU4/Kad1aLj6n9Gi7d7O9kduDzun2pg9Zg36wSL + x85Zd9k9zt7ZwejRt2UVo8f6LVdZPDafrg5gj9KzKcovLUlVyMgvLrFVija0MNIztLTQMzKx + 1DM0No+1MjJV0rezSUnNySxLLdK3S9DLuDfnKEtBB0fFjyNt7A2M19i6GDk5JARMJHZdWcXY + xcjFISSwlFFi0rUZQA4HUEJKYn6LEkSNsMSfa11g9UICnxglHj5wBLHZBAwleo/2MYLYIgIh + Ei+OXmECmcMMMudPwxtWkDnCAkkSu39yg9SwCKhKLJv9mhnE5hWwlnh97TvUDfISqzccAItz + CthI3P0+gwVil7VEw6UlLBMY+RYwMqxiFEktLc5Nzy021CtOzC0uzUvXS87P3cQIDPBtx35u + 3sF4aWPwIUYBDkYlHt4b5+fFCbEmlhVX5h5ilOBgVhLh3fAQKMSbklhZlVqUH19UmpNafIjR + FOioicxSosn5wOjLK4k3NDU0t7A0NDc2NzazUBLn7RA4GCMkkJ5YkpqdmlqQWgTTx8TBKdXA + 6LTra6plWsQmuwWK045dDM48yj+vtfXqqqSkoqBLwilHPikq2hWa3TbO25/wunvjY6ZD87SD + 2Sr/ON7d9NNMXpLHyiQiOfEn///MTYYno6+0nPnLOJdpR3t9L/8PU0Gh/YXHVzzNn2YzQ/37 + HO6/kmeSvty49tbYRC7kbMl5hcQNLmukTv+pU2Ipzkg01GIuKk4EAE74o8yGAgAA +X-CMS-MailID: 20200421165114eucas1p2baa595b46f7503331ab86163f69b7c0e +X-Msg-Generator: CA +X-RootMTR: 20200421165114eucas1p2baa595b46f7503331ab86163f69b7c0e +X-EPHeader: CA +CMS-TYPE: 201P +X-CMS-RootMailID: 20200421165114eucas1p2baa595b46f7503331ab86163f69b7c0e +References: <20200421165059.19394-1-s.nawrocki@samsung.com> + +X-Mailman-Approved-At: Tue, 21 Apr 2020 19:40:20 +0200 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +In current code there is no cache flush after initializing the scratchpad +buffer array with the scratchpad buffer pointers. This leads to a failure +of the "slot enable" command on the rpi4 board (Broadcom STB PCIe +controller + VL805 USB hub) - the very first TRB transfer on the command +ring fails and there is a timeout while waiting for the command completion +event. After adding the missing cache flush everything seems to be working +as expected. + +Signed-off-by: Sylwester Nawrocki +--- + drivers/usb/host/xhci-mem.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c +index 93450ee..729bdc3 100644 +--- a/drivers/usb/host/xhci-mem.c ++++ b/drivers/usb/host/xhci-mem.c +@@ -393,6 +393,9 @@ static int xhci_scratchpad_alloc(struct xhci_ctrl *ctrl) + scratchpad->sp_array[i] = cpu_to_le64(ptr); + } + ++ xhci_flush_cache((uintptr_t)scratchpad->sp_array, ++ sizeof(u64) * num_sp); ++ + return 0; + + fail_sp3: + +From patchwork Tue Apr 21 16:50:52 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sylwester Nawrocki +X-Patchwork-Id: 1274444 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 + header.s=mail20170921 header.b=WrpEgeC1; + dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4969qX0gklz9sSJ + for ; Wed, 22 Apr 2020 03:42:00 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id EEA2E81C76; + Tue, 21 Apr 2020 19:41:00 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.b="WrpEgeC1"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 5F23A811EC; Tue, 21 Apr 2020 18:51:24 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com + [210.118.77.11]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 15403811EC + for ; Tue, 21 Apr 2020 18:51:19 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=s.nawrocki@samsung.com +Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) + by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id + 20200421165118euoutp01eb9cb893b86512593aecaf9a2229fe2d~H49CKBnJp0962409624euoutp01V + for ; Tue, 21 Apr 2020 16:51:18 +0000 (GMT) +DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com + 20200421165118euoutp01eb9cb893b86512593aecaf9a2229fe2d~H49CKBnJp0962409624euoutp01V +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; + s=mail20170921; t=1587487878; + bh=KSIQabzU4eCsy6wbbJGuIQNoLGRG3kAK+Gl/QiVIJMs=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=WrpEgeC1CIx4w1CdlpymTRY8cl0+Ia9ijznf1+Z8UCa/CZFgB3/S/hqWZ6K2YjB2Y + ge7GsvvD5BjmikoYnxVQvFdOp0lD+N7WkzMk+O7z59VTw5U6AIpnL5VzpiLdO7X8fs + 5DI5tI15DScmUhhodpPMAQat42Uyw1S0vOTS/GVo= +Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by + eucas1p2.samsung.com (KnoxPortal) with ESMTP id + 20200421165117eucas1p29a916cf9bbe2c32a300f5aaa8dfdb36b~H49BqkmUJ2629726297eucas1p2b; + Tue, 21 Apr 2020 16:51:17 +0000 (GMT) +Received: from eucas1p2.samsung.com ( [182.198.249.207]) by + eusmges1new.samsung.com (EUCPMTA) with SMTP id C5.5D.61286.5842F9E5; Tue, 21 + Apr 2020 17:51:17 +0100 (BST) +Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by + eucas1p2.samsung.com (KnoxPortal) with ESMTPA id + 20200421165117eucas1p220b0a5f7820c7cf7bae20dc693584ad4~H49A4JpFy2629726297eucas1p2a; + Tue, 21 Apr 2020 16:51:17 +0000 (GMT) +Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by + eusmtrp2.samsung.com (KnoxPortal) with ESMTP id + 20200421165117eusmtrp29c22dabecb77d9c7b6eb9b0e54f6d365~H49A3fIX-3266732667eusmtrp2O; + Tue, 21 Apr 2020 16:51:17 +0000 (GMT) +X-AuditID: cbfec7f2-ef1ff7000001ef66-6c-5e9f2485c8e2 +Received: from eusmtip1.samsung.com ( [203.254.199.221]) by + eusmgms2.samsung.com (EUCPMTA) with SMTP id 67.3B.07950.5842F9E5; Tue, 21 + Apr 2020 17:51:17 +0100 (BST) +Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by + eusmtip1.samsung.com (KnoxPortal) with ESMTPA id + 20200421165116eusmtip188463c8be99c6ed75bb173aa0c7300bd~H49AUM8hT0891608916eusmtip1E; + Tue, 21 Apr 2020 16:51:16 +0000 (GMT) +From: Sylwester Nawrocki +To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com +Cc: agraf@suse.de, sjg@chrmium.org, jh80.chung@samsung.com, + m.szyprowski@samsung.com, b.zolnierkie@samsung.com, Sylwester Nawrocki + +Subject: [RFC PATCH 2/9] pci: Move some PCIe register offset definitions to + a common header +Date: Tue, 21 Apr 2020 18:50:52 +0200 +Message-Id: <20200421165059.19394-3-s.nawrocki@samsung.com> +X-Mailer: git-send-email 2.17.1 +In-Reply-To: <20200421165059.19394-1-s.nawrocki@samsung.com> +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprCKsWRmVeSWpSXmKPExsWy7djP87qtKvPjDK5dMbM4ceUfo8XGGetZ + Lab2xFvc+NXGarH2yF12izdtjYwWCyY/YbU4/Kad1aLj6n9Gi7d7O9kduDzun2pg9Zg36wSL + x85Zd9k9zt7ZwejRt2UVo8f6LVdZPDafrg5gj+KySUnNySxLLdK3S+DKON7ZzlSwX6xi2at2 + pgbGA0JdjJwcEgImEi/+n2brYuTiEBJYwShxZF4DO4TzhVHi1PNNjBDOZ0aJlYtWs8G0HOnt + ZoZILGeU+P7vEitcy+Qtv5hBqtgEDCV6j/YxgtgiAgES135OAxvFLDCfUeLPp2lgCWGBWImT + E66zgNgsAqoSP+aAjOXg4BWwlpj1sx5im7zE6g0HwGZyCthI3P0+gwVkjoTAZHaJSRPPM0EU + uUg8/n0EyhaWeHV8CzuELSPxf+d8JoiGZkaJnt232SGcCYwS948vYISospa4c+4XG8hmZgFN + ifW79EFMCQFHidPb5CFMPokbbwVBipmBzEnbpjNDhHklOtqg4agi8XvVdKgLpCS6n/xngbA9 + JBbf+8oECZ9+RolHG2YyT2CUn4WwawEj4ypG8dTS4tz01GLDvNRyveLE3OLSvHS95PzcTYzA + tHL63/FPOxi/Xko6xCjAwajEw3vj/Lw4IdbEsuLK3EOMEhzMSiK8Gx4ChXhTEiurUovy44tK + c1KLDzFKc7AoifMaL3oZKySQnliSmp2aWpBaBJNl4uCUamAM1bM8nhboKbXx7a5/eqenrpBc + tPL6zokpcze+/LRigtJtgRWKVoIl1RW8pb6qJ95eN1v41OnOn84lYXtf5K0TsM3e92h1v7Lt + yq+rpFqvOn0IZYzqz3+7I3/fnBWKcdt7vH43TD9o9Okyc3dFx+X2AL/FXx8+WfxJ9RvTypyr + 7qdPiU3yqLH7o8RSnJFoqMVcVJwIAHPQd5InAwAA +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrELMWRmVeSWpSXmKPExsVy+t/xu7qtKvPjDNa+Z7I4ceUfo8XGGetZ + Lab2xFvc+NXGarH2yF12izdtjYwWCyY/YbU4/Kad1aLj6n9Gi7d7O9kduDzun2pg9Zg36wSL + x85Zd9k9zt7ZwejRt2UVo8f6LVdZPDafrg5gj9KzKcovLUlVyMgvLrFVija0MNIztLTQMzKx + 1DM0No+1MjJV0rezSUnNySxLLdK3S9DLON7ZzlSwX6xi2at2pgbGA0JdjJwcEgImEkd6u5lB + bCGBpYwSl7fqdDFyAMWlJOa3KEGUCEv8udbF1sXIBVTyiVHi2YqjLCAJNgFDid6jfYwgtohA + iMSLo1eYQIqYQeb8aXjDCjJIWCBa4uupMpAaFgFViR9zQHZxcPAKWEvM+lkPMV9eYvWGA2An + cArYSNz9PoMF4hxriYZLS1gmMPItYGRYxSiSWlqcm55bbKRXnJhbXJqXrpecn7uJERje2479 + 3LKDsetd8CFGAQ5GJR7eG+fnxQmxJpYVV+YeYpTgYFYS4d3wECjEm5JYWZValB9fVJqTWnyI + 0RToponMUqLJ+cDYyyuJNzQ1NLewNDQ3Njc2s1AS5+0QOBgjJJCeWJKanZpakFoE08fEwSnV + wMi3jLGLQadphdgdbz2tW8UOS69dvPMj9d/ET4o918pV/k2+mS3v/vDrq0P8v6P+B189IDYj + YqlOR/nJS1e27LKtm/pvqnhR0vU5yjvur384TfHDtiSLPwenSLRn3T+6eW/b0c39z2s58nbZ + TuD7dGVfnRlzzBkv65yPq8u6k1yOf8ttZ88qPf5eiaU4I9FQi7moOBEAMpRHSYUCAAA= +X-CMS-MailID: 20200421165117eucas1p220b0a5f7820c7cf7bae20dc693584ad4 +X-Msg-Generator: CA +X-RootMTR: 20200421165117eucas1p220b0a5f7820c7cf7bae20dc693584ad4 +X-EPHeader: CA +CMS-TYPE: 201P +X-CMS-RootMailID: 20200421165117eucas1p220b0a5f7820c7cf7bae20dc693584ad4 +References: <20200421165059.19394-1-s.nawrocki@samsung.com> + +X-Mailman-Approved-At: Tue, 21 Apr 2020 19:40:20 +0200 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +Some PCI Express register offsets are currently defined in multiple +drivers, move them to a common header to avoid re-definitions and +as a pre-requisite for adding new PCIe driver. + +Signed-off-by: Sylwester Nawrocki +--- + drivers/pci/pci-rcar-gen3.c | 8 -------- + drivers/pci/pcie_intel_fpga.c | 3 --- + include/pci.h | 13 +++++++++++++ + 3 files changed, 13 insertions(+), 11 deletions(-) + +diff --git a/drivers/pci/pci-rcar-gen3.c b/drivers/pci/pci-rcar-gen3.c +index 30eff67..393f1c9 100644 +--- a/drivers/pci/pci-rcar-gen3.c ++++ b/drivers/pci/pci-rcar-gen3.c +@@ -117,14 +117,6 @@ + #define RCAR_PCI_MAX_RESOURCES 4 + #define MAX_NR_INBOUND_MAPS 6 + +-#define PCI_EXP_FLAGS 2 /* Capabilities register */ +-#define PCI_EXP_FLAGS_TYPE 0x00f0 /* Device/Port type */ +-#define PCI_EXP_TYPE_ROOT_PORT 0x4 /* Root Port */ +-#define PCI_EXP_LNKCAP 12 /* Link Capabilities */ +-#define PCI_EXP_LNKCAP_DLLLARC 0x00100000 /* Data Link Layer Link Active Reporting Capable */ +-#define PCI_EXP_SLTCAP 20 /* Slot Capabilities */ +-#define PCI_EXP_SLTCAP_PSN 0xfff80000 /* Physical Slot Number */ +- + enum { + RCAR_PCI_ACCESS_READ, + RCAR_PCI_ACCESS_WRITE, +diff --git a/drivers/pci/pcie_intel_fpga.c b/drivers/pci/pcie_intel_fpga.c +index 6a9f29c..69363a0 100644 +--- a/drivers/pci/pcie_intel_fpga.c ++++ b/drivers/pci/pcie_intel_fpga.c +@@ -65,9 +65,6 @@ + #define IS_ROOT_PORT(pcie, bdf) \ + ((PCI_BUS(bdf) == pcie->first_busno) ? true : false) + +-#define PCI_EXP_LNKSTA 18 /* Link Status */ +-#define PCI_EXP_LNKSTA_DLLLA 0x2000 /* Data Link Layer Link Active */ +- + /** + * struct intel_fpga_pcie - Intel FPGA PCIe controller state + * @bus: Pointer to the PCI bus +diff --git a/include/pci.h b/include/pci.h +index 174ddd4..3d7646d 100644 +--- a/include/pci.h ++++ b/include/pci.h +@@ -471,11 +471,24 @@ + #define PCI_EA_FIELD_MASK 0xfffffffc /* For Base & Max Offset */ + + /* PCI Express capabilities */ ++#define PCI_EXP_FLAGS 2 /* Capabilities register */ ++#define PCI_EXP_FLAGS_TYPE 0x00f0 /* Device/Port type */ ++#define PCI_EXP_TYPE_ROOT_PORT 0x4 /* Root Port */ ++ + #define PCI_EXP_DEVCAP 4 /* Device capabilities */ + #define PCI_EXP_DEVCAP_FLR 0x10000000 /* Function Level Reset */ + #define PCI_EXP_DEVCTL 8 /* Device Control */ + #define PCI_EXP_DEVCTL_BCR_FLR 0x8000 /* Bridge Configuration Retry / FLR */ + ++#define PCI_EXP_LNKCAP 12 /* Link Capabilities */ ++#define PCI_EXP_LNKCAP_DLLLARC 0x00100000 /* Data Link Layer Link Active Reporting Capable */ ++ ++#define PCI_EXP_LNKSTA 18 /* Link Status */ ++#define PCI_EXP_LNKSTA_DLLLA 0x2000 /* Data Link Layer Link Active */ ++ ++#define PCI_EXP_SLTCAP 20 /* Slot Capabilities */ ++#define PCI_EXP_SLTCAP_PSN 0xfff80000 /* Physical Slot Number */ ++ + /* Include the ID list */ + + #include + +From patchwork Tue Apr 21 16:50:53 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sylwester Nawrocki +X-Patchwork-Id: 1274441 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 + header.s=mail20170921 header.b=Yu5kjAkM; + dkim-atps=neutral +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4969px52wlz9sSJ + for ; Wed, 22 Apr 2020 03:41:29 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 787CB81A66; + Tue, 21 Apr 2020 19:40:37 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.b="Yu5kjAkM"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 1EFB581A18; Tue, 21 Apr 2020 18:51:24 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com + [210.118.77.12]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 17525804CD + for ; Tue, 21 Apr 2020 18:51:21 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=s.nawrocki@samsung.com +Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) + by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id + 20200421165119euoutp025d880bb6159dc765cf0ece2a051a72cb~H49DZFSkb2124521245euoutp029 + for ; Tue, 21 Apr 2020 16:51:19 +0000 (GMT) +DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com + 20200421165119euoutp025d880bb6159dc765cf0ece2a051a72cb~H49DZFSkb2124521245euoutp029 +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; + s=mail20170921; t=1587487879; + bh=WNNhWM4zcFS/lfPm8PP33MTtxfHK2zyA/Si0TW7/3sI=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=Yu5kjAkMFxSRf43BjFXkZe/LA5aG+xRXU0dc898zHqguHt1aA6hFOXt03P/k1fPCR + WYQi2bfU7cCVPJC6SDeUnugU+cZjnLjzmmuVpvRd/xti6PVppz5EBV57X47SWeCbF2 + JALYvbIagHlPik2+AFFD5hJo9IeBlWlun8z7tpNo= +Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by + eucas1p1.samsung.com (KnoxPortal) with ESMTP id + 20200421165119eucas1p1ccc185676ac9d6692b18fb9800fbb677~H49DL6KFx1440514405eucas1p1g; + Tue, 21 Apr 2020 16:51:19 +0000 (GMT) +Received: from eucas1p2.samsung.com ( [182.198.249.207]) by + eusmges2new.samsung.com (EUCPMTA) with SMTP id B7.64.60679.7842F9E5; Tue, 21 + Apr 2020 17:51:19 +0100 (BST) +Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by + eucas1p1.samsung.com (KnoxPortal) with ESMTPA id + 20200421165118eucas1p1dc542f61cefcf53cdb1f17cc59baee5f~H49CWvwMj1422014220eucas1p1f; + Tue, 21 Apr 2020 16:51:18 +0000 (GMT) +Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by + eusmtrp2.samsung.com (KnoxPortal) with ESMTP id + 20200421165118eusmtrp289a599d1b59e605a4f088531bfef168f~H49CWKCGS3266732667eusmtrp2R; + Tue, 21 Apr 2020 16:51:18 +0000 (GMT) +X-AuditID: cbfec7f4-0cbff7000001ed07-0e-5e9f2487e6f8 +Received: from eusmtip1.samsung.com ( [203.254.199.221]) by + eusmgms1.samsung.com (EUCPMTA) with SMTP id 5A.0E.08375.6842F9E5; Tue, 21 + Apr 2020 17:51:18 +0100 (BST) +Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by + eusmtip1.samsung.com (KnoxPortal) with ESMTPA id + 20200421165118eusmtip18d32d5c3341151e30d4362872584f1bb~H49BwUnLM0895708957eusmtip1F; + Tue, 21 Apr 2020 16:51:18 +0000 (GMT) +From: Sylwester Nawrocki +To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com +Cc: agraf@suse.de, sjg@chrmium.org, jh80.chung@samsung.com, + m.szyprowski@samsung.com, b.zolnierkie@samsung.com +Subject: [RFC PATCH 3/9] rpi4: shorten a mapping for the DRAM +Date: Tue, 21 Apr 2020 18:50:53 +0200 +Message-Id: <20200421165059.19394-4-s.nawrocki@samsung.com> +X-Mailer: git-send-email 2.17.1 +In-Reply-To: <20200421165059.19394-1-s.nawrocki@samsung.com> +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFuphleLIzCtJLcpLzFFi42LZduzned12lflxBvuPyVucuPKP0WLjjPWs + FlN74i1u/GpjtVh75C67xZu2RkaLBZOfsFp0XP3PaPF2bye7A6fH/VMNrB7zZp1g8dg56y67 + x9k7Oxg9+rasYvRYv+Uqi8fm09UB7FFcNimpOZllqUX6dglcGbsm+hQcYa2YOnUjawPjMZYu + Rk4OCQETifN7HwPZXBxCAisYJT6uWsMG4XxhlPiyuoMJwvnMKLHvcA8TTEv/hQ/sILaQwHJG + iXVfzOE6vnd3s4Ek2AQMJXqP9jGC2CICARLXfk4Ds5kFCiSmXX8CVMPBISxgK/H5chiIySKg + KtF/JxGkglfAWuLnvm9Qq+QlVm84wAxicwrYSNz9PgPsUgmBfnaJOZ8us0MUuUhsWjwPqkFY + 4tXxLVBxGYn/O+czQTQ0M0r07L7NDuFMYJS4f3wBI0SVtcSdc7/ADmIW0JRYv0sfIuwo8erC + Z1aQsIQAn8SNt4IQ5/NJTNo2nRkizCvR0SYEUa0i8XvVdKgTpCS6n/yHhq6HxPupGxkhwdPP + KHGyt4dpAqP8LIRlCxgZVzGKp5YW56anFhvlpZbrFSfmFpfmpesl5+duYgSmkdP/jn/Zwbjr + T9IhRgEORiUe3hvn58UJsSaWFVfmHmKU4GBWEuHd8BAoxJuSWFmVWpQfX1Sak1p8iFGag0VJ + nNd40ctYIYH0xJLU7NTUgtQimCwTB6dUA+NUxfXJz2dus5RY+bSb7fomAzW90PsbLA4fkFM7 + oMC1yHDTraNxEdWsDqZ3tl4/sYeRe/dGjsroKydCHT/smr8k1l5mmuv/NWLW0r6pGyRUpBJF + E6Y3u3Y9mPk5qXPrbbn2dTv/W6u++MKYsX3durkaIlPmtYgV1madmSLLqdtxKOTq7dPS31cp + sRRnJBpqMRcVJwIAzgomnR8DAAA= +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrDLMWRmVeSWpSXmKPExsVy+t/xu7ptKvPjDBZtUbY4ceUfo8XGGetZ + Lab2xFvc+NXGarH2yF12izdtjYwWCyY/YbXouPqf0eLt3k52B06P+6caWD3mzTrB4rFz1l12 + j7N3djB69G1ZxeixfstVFo/Np6sD2KP0bIryS0tSFTLyi0tslaINLYz0DC0t9IxMLPUMjc1j + rYxMlfTtbFJSczLLUov07RL0MnZN9Ck4wloxdepG1gbGYyxdjJwcEgImEv0XPrB3MXJxCAks + ZZT4cm85WxcjB1BCSmJ+ixJEjbDEn2tdbBA1nxgl3rZ/YAVJsAkYSvQe7WMEsUUEQiReHL3C + BGIzC5RJrGl9zQgyR1jAVuLz5TAQk0VAVaL/TiJIBa+AtcTPfd+YIMbLS6zecIAZxOYUsJG4 + +30G2GlCQDUNl5awTGDkW8DIsIpRJLW0ODc9t9hQrzgxt7g0L10vOT93EyMwpLcd+7l5B+Ol + jcGHGAU4GJV4eG+cnxcnxJpYVlyZe4hRgoNZSYR3w0OgEG9KYmVValF+fFFpTmrxIUZToJsm + MkuJJucD4y2vJN7Q1NDcwtLQ3Njc2MxCSZy3Q+BgjJBAemJJanZqakFqEUwfEwenVANjYcji + LZPer+/Y0MPtIfRmV51exSSJ2SV811+ffXz75D7159HLFwjO7tlmvXTO9pCba14u3qO01GSf + 24En9YuKjf8+S/72beIE082sV9N0zy9R5LnLcEnsMOeMWLkXLydZH/MrF1y0abt0nr7k0yLD + Hs/+JXuF2tb+f/hqZ/DjyYEbVZ8V6OhfO67EUpyRaKjFXFScCAB3Tn4hfwIAAA== +X-CMS-MailID: 20200421165118eucas1p1dc542f61cefcf53cdb1f17cc59baee5f +X-Msg-Generator: CA +X-RootMTR: 20200421165118eucas1p1dc542f61cefcf53cdb1f17cc59baee5f +X-EPHeader: CA +CMS-TYPE: 201P +X-CMS-RootMailID: 20200421165118eucas1p1dc542f61cefcf53cdb1f17cc59baee5f +References: <20200421165059.19394-1-s.nawrocki@samsung.com> + +X-Mailman-Approved-At: Tue, 21 Apr 2020 19:40:20 +0200 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +From: Marek Szyprowski + +Remove the overlap between DRAM and device's IO area. + +Signed-off-by: Marek Szyprowski +--- + arch/arm/mach-bcm283x/init.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c +index 9966d6c..4295356 100644 +--- a/arch/arm/mach-bcm283x/init.c ++++ b/arch/arm/mach-bcm283x/init.c +@@ -38,7 +38,7 @@ static struct mm_region bcm2711_mem_map[] = { + { + .virt = 0x00000000UL, + .phys = 0x00000000UL, +- .size = 0xfe000000UL, ++ .size = 0xfc000000UL, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_INNER_SHARE + }, { + +From patchwork Tue Apr 21 16:50:54 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sylwester Nawrocki +X-Patchwork-Id: 1274442 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 + header.s=mail20170921 header.b=W9S6JG/g; + dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4969q812W9z9sSJ + for ; Wed, 22 Apr 2020 03:41:39 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id D70A281C61; + Tue, 21 Apr 2020 19:40:41 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.b="W9S6JG/g"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 1CC4281A0D; Tue, 21 Apr 2020 18:51:25 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com + [210.118.77.11]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 2DCCB81737 + for ; Tue, 21 Apr 2020 18:51:21 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=s.nawrocki@samsung.com +Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) + by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id + 20200421165120euoutp0101ec21506fef207024eec068bd2713f3~H49EUIi7N0962409624euoutp01X + for ; Tue, 21 Apr 2020 16:51:20 +0000 (GMT) +DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com + 20200421165120euoutp0101ec21506fef207024eec068bd2713f3~H49EUIi7N0962409624euoutp01X +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; + s=mail20170921; t=1587487880; + bh=dqMAZVBRR9AX01Hgc3T6VfoE0znPLsfUFWVSuYq0+c4=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=W9S6JG/gS0hScvMlp/3epnfVC4hXCCQVdSWs/HmbozVZy1tC0RnFAo/3I16oYIbkc + +pZI/20PwYLhme7RT6MLSyS+lUE0/4ixnMQwnXv/DUpZWYlvIK0LcCDDGu9M1BJPdc + CAdBy0xK4HCDR5Ar4NYeI3D3yBeyZBXXkhJfBheA= +Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by + eucas1p2.samsung.com (KnoxPortal) with ESMTP id + 20200421165120eucas1p297b1e3453e703f8e5eda14172d0f83d1~H49EBiVo82629626296eucas1p2m; + Tue, 21 Apr 2020 16:51:20 +0000 (GMT) +Received: from eucas1p1.samsung.com ( [182.198.249.206]) by + eusmges2new.samsung.com (EUCPMTA) with SMTP id 78.64.60679.8842F9E5; Tue, 21 + Apr 2020 17:51:20 +0100 (BST) +Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by + eucas1p1.samsung.com (KnoxPortal) with ESMTPA id + 20200421165119eucas1p19a1103b9f6b952bd83086a77df71e837~H49DkOhQc1429214292eucas1p1l; + Tue, 21 Apr 2020 16:51:19 +0000 (GMT) +Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by + eusmtrp2.samsung.com (KnoxPortal) with ESMTP id + 20200421165119eusmtrp29ad6632f3c6393b1aa457330e8cf88ab~H49DjrPER3266732667eusmtrp2V; + Tue, 21 Apr 2020 16:51:19 +0000 (GMT) +X-AuditID: cbfec7f4-0cbff7000001ed07-12-5e9f2488998e +Received: from eusmtip1.samsung.com ( [203.254.199.221]) by + eusmgms1.samsung.com (EUCPMTA) with SMTP id 3B.0E.08375.7842F9E5; Tue, 21 + Apr 2020 17:51:19 +0100 (BST) +Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by + eusmtip1.samsung.com (KnoxPortal) with ESMTPA id + 20200421165119eusmtip1f1b67aa1787772211a1def16f65bc6d6~H49DErhFS0901309013eusmtip1B; + Tue, 21 Apr 2020 16:51:19 +0000 (GMT) +From: Sylwester Nawrocki +To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com +Cc: agraf@suse.de, sjg@chrmium.org, jh80.chung@samsung.com, + m.szyprowski@samsung.com, b.zolnierkie@samsung.com +Subject: [RFC PATCH 4/9] rpi4: add a mapping for the PCIe XHCI controller + MMIO registers (ARM 64bit) +Date: Tue, 21 Apr 2020 18:50:54 +0200 +Message-Id: <20200421165059.19394-5-s.nawrocki@samsung.com> +X-Mailer: git-send-email 2.17.1 +In-Reply-To: <20200421165059.19394-1-s.nawrocki@samsung.com> +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupjleLIzCtJLcpLzFFi42LZduznOd0OlflxBleWSlqcuPKP0WLjjPWs + FlN74i1u/GpjtVh75C67xZu2RkaLBZOfsFp0XP3PaPF2bye7A6fH/VMNrB7zZp1g8dg56y67 + x9k7Oxg9+rasYvRYv+Uqi8fm09UB7FFcNimpOZllqUX6dglcGUterGUvOMFf8XXacaYGxhs8 + XYycHBICJhKT2+8zgdhCAisYJX5vreti5AKyvzBKTOy7zwLhfGaUOHVoLjNMx4Ztc5ggEssZ + JWb/OsEC19L2+zQ7SBWbgKFE79E+RhBbRCBA4trPaWA2s0CBxLTrT9hAbGGBNIl9l78DTeXg + YBFQlVjxvQokzCtgLTF/+zk2iGXyEqs3HABbzClgI3H3+wywXRIC3ewSk4/ugipykfhz5CUj + hC0s8er4FnYIW0bi/875TBANzYwSPbtvs0M4Exgl7h9fANVhLXHn3C82kCuYBTQl1u/Shwg7 + Sqw/dJcJJCwhwCdx460gxP18EpO2TWeGCPNKdLQJQVSrSPxeNZ0JwpaS6H7ynwXC9pCY9mwi + MyR8+hklfh3uYJ/AKD8LYdkCRsZVjOKppcW56anFRnmp5XrFibnFpXnpesn5uZsYgank9L/j + X3Yw7vqTdIhRgINRiYf3xvl5cUKsiWXFlbmHGCU4mJVEeDc8BArxpiRWVqUW5ccXleakFh9i + lOZgURLnNV70MlZIID2xJDU7NbUgtQgmy8TBKdXAOHuVS7S8w6+vK66y3jUUn9Eot2jjWc3T + 07clrGqY05D8vcnIWUTH3vg1g5PMzX1+c36v/DlvjcjllKft3RM2Pq5d+XPC/m3LHth0shma + z2SJSs1Se6xv6SxU0zgnqmNN+KFzZtOdvtidECi//MLjlMPXX+HtjPmqCWHZkS7vDq+tcu+e + oxC6VomlOCPRUIu5qDgRAPNyI+ohAwAA +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrHLMWRmVeSWpSXmKPExsVy+t/xu7rtKvPjDC6fsbI4ceUfo8XGGetZ + Lab2xFvc+NXGarH2yF12izdtjYwWCyY/YbXouPqf0eLt3k52B06P+6caWD3mzTrB4rFz1l12 + j7N3djB69G1ZxeixfstVFo/Np6sD2KP0bIryS0tSFTLyi0tslaINLYz0DC0t9IxMLPUMjc1j + rYxMlfTtbFJSczLLUov07RL0Mpa8WMtecIK/4uu040wNjDd4uhg5OSQETCQ2bJvD1MXIxSEk + sJRR4uvF/yxdjBxACSmJ+S1KEDXCEn+udbFB1HxilJja9IUZJMEmYCjRe7SPEcQWEQiReHH0 + ChOIzSxQJrGm9TVYXFggRWLyrSlsIDNZBFQlVnyvAgnzClhLzN9+jg1ivrzE6g0HwEZyCthI + 3P0+gwXEFgKqabi0hGUCI98CRoZVjCKppcW56bnFhnrFibnFpXnpesn5uZsYgWG97djPzTsY + L20MPsQowMGoxMN74/y8OCHWxLLiytxDjBIczEoivBseAoV4UxIrq1KL8uOLSnNSiw8xmgLd + NJFZSjQ5HxhzeSXxhqaG5haWhubG5sZmFkrivB0CB2OEBNITS1KzU1MLUotg+pg4OKUaGLX1 + Tpc+7j1lL7kgh/HtV62FV+8ti952/p9Snln59awyjq46dndey3c+M7oZG3/ERqdbyH/I23a0 + b2EwV5eJ844j/B9f3fctmXPoxNKu3dMMl+y2rjzHa2Yuc11bPLbK8Uvn5cuav+bfXGP73eOv + qbWD1uuNaSbcN6ekvG3fH66u9K8y+S5fshJLcUaioRZzUXEiAOSx0z6BAgAA +X-CMS-MailID: 20200421165119eucas1p19a1103b9f6b952bd83086a77df71e837 +X-Msg-Generator: CA +X-RootMTR: 20200421165119eucas1p19a1103b9f6b952bd83086a77df71e837 +X-EPHeader: CA +CMS-TYPE: 201P +X-CMS-RootMailID: 20200421165119eucas1p19a1103b9f6b952bd83086a77df71e837 +References: <20200421165059.19394-1-s.nawrocki@samsung.com> + +X-Mailman-Approved-At: Tue, 21 Apr 2020 19:40:20 +0200 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +From: Marek Szyprowski + +Create a non-cacheable mapping for the 0x600000000 physical memory region, +where MMIO registers for the PCIe XHCI controller are instantiated by the +PCIe bridge. + +Signed-off-by: Marek Szyprowski +--- + arch/arm/mach-bcm283x/init.c | 18 +++++++++++++++--- + 1 file changed, 15 insertions(+), 3 deletions(-) + +diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c +index 4295356..6a748da 100644 +--- a/arch/arm/mach-bcm283x/init.c ++++ b/arch/arm/mach-bcm283x/init.c +@@ -11,10 +11,15 @@ + #include + #include + ++#define BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS 0x600000000UL ++#define BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE 0x800000UL ++ + #ifdef CONFIG_ARM64 + #include + +-static struct mm_region bcm283x_mem_map[] = { ++#define MAX_MAP_MAX_ENTRIES (4) ++ ++static struct mm_region bcm283x_mem_map[MAX_MAP_MAX_ENTRIES] = { + { + .virt = 0x00000000UL, + .phys = 0x00000000UL, +@@ -34,7 +39,7 @@ static struct mm_region bcm283x_mem_map[] = { + } + }; + +-static struct mm_region bcm2711_mem_map[] = { ++static struct mm_region bcm2711_mem_map[MAX_MAP_MAX_ENTRIES] = { + { + .virt = 0x00000000UL, + .phys = 0x00000000UL, +@@ -49,6 +54,13 @@ static struct mm_region bcm2711_mem_map[] = { + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, { ++ .virt = BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS, ++ .phys = BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS, ++ .size = BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE, ++ .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | ++ PTE_BLOCK_NON_SHARE | ++ PTE_BLOCK_PXN | PTE_BLOCK_UXN ++ }, { + /* List terminator */ + 0, + } +@@ -71,7 +83,7 @@ static void _rpi_update_mem_map(struct mm_region *pd) + { + int i; + +- for (i = 0; i < 2; i++) { ++ for (i = 0; i < MAX_MAP_MAX_ENTRIES; i++) { + mem_map[i].virt = pd[i].virt; + mem_map[i].phys = pd[i].phys; + mem_map[i].size = pd[i].size; + +From patchwork Tue Apr 21 16:50:55 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sylwester Nawrocki +X-Patchwork-Id: 1274445 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 + header.s=mail20170921 header.b=lLBogEzN; + dkim-atps=neutral +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4969qr1fWZz9sSJ + for ; Wed, 22 Apr 2020 03:42:16 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id F35DC81A07; + Tue, 21 Apr 2020 19:41:09 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.b="lLBogEzN"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 5701E804CD; Tue, 21 Apr 2020 18:51:28 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com + [210.118.77.12]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 94B9A804CD + for ; Tue, 21 Apr 2020 18:51:24 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=s.nawrocki@samsung.com +Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) + by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id + 20200421165124euoutp028b281b51c07dd33d34f567bc48e48780~H49HhCWEk2231522315euoutp02b + for ; Tue, 21 Apr 2020 16:51:24 +0000 (GMT) +DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com + 20200421165124euoutp028b281b51c07dd33d34f567bc48e48780~H49HhCWEk2231522315euoutp02b +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; + s=mail20170921; t=1587487884; + bh=SeubgiN7Xoo7MhXFId4svRjAX/097OBMOrYqb8zcjX4=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=lLBogEzNsIrCr1ijgduFlRI6hX9VIcrxf+NCOLPoGXULqWWO+ZF7D+NiXpRYXQzDV + 1gUgGi/AoiozShvfdcBygAExo9xz/H8KQmq4GL9kAjWVtDpRuUOKR2vYZIIWsh1aPo + yf/W4nuSnJNWkJEuXpNMRtBcyzNZ9/G76bBPTYkg= +Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by + eucas1p1.samsung.com (KnoxPortal) with ESMTP id + 20200421165123eucas1p1960c9d7984fb217f5fd4c505a29633eb~H49HSMJfH1746117461eucas1p1m; + Tue, 21 Apr 2020 16:51:23 +0000 (GMT) +Received: from eucas1p2.samsung.com ( [182.198.249.207]) by + eusmges2new.samsung.com (EUCPMTA) with SMTP id 99.64.60679.B842F9E5; Tue, 21 + Apr 2020 17:51:23 +0100 (BST) +Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by + eucas1p1.samsung.com (KnoxPortal) with ESMTPA id + 20200421165123eucas1p171701bd64ed84a9c740331ce87c7ff6c~H49G08mx61445214452eucas1p1f; + Tue, 21 Apr 2020 16:51:23 +0000 (GMT) +Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by + eusmtrp2.samsung.com (KnoxPortal) with ESMTP id + 20200421165123eusmtrp26c5fceeaa8775f129b92588ca20429ad~H49G0VD0c3266732667eusmtrp2Y; + Tue, 21 Apr 2020 16:51:23 +0000 (GMT) +X-AuditID: cbfec7f4-0e5ff7000001ed07-19-5e9f248b9eea +Received: from eusmtip1.samsung.com ( [203.254.199.221]) by + eusmgms1.samsung.com (EUCPMTA) with SMTP id EB.0E.08375.B842F9E5; Tue, 21 + Apr 2020 17:51:23 +0100 (BST) +Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by + eusmtip1.samsung.com (KnoxPortal) with ESMTPA id + 20200421165122eusmtip112e78411cfff99904aa9ac5a6477a857~H49GPKBTO0891608916eusmtip1I; + Tue, 21 Apr 2020 16:51:22 +0000 (GMT) +From: Sylwester Nawrocki +To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com +Cc: agraf@suse.de, sjg@chrmium.org, jh80.chung@samsung.com, + m.szyprowski@samsung.com, b.zolnierkie@samsung.com +Subject: [RFC PATCH 5/9] rpi4: add a mapping for the PCIe XHCI controller + MMIO registers (ARM 32bit) +Date: Tue, 21 Apr 2020 18:50:55 +0200 +Message-Id: <20200421165059.19394-6-s.nawrocki@samsung.com> +X-Mailer: git-send-email 2.17.1 +In-Reply-To: <20200421165059.19394-1-s.nawrocki@samsung.com> +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFuplleLIzCtJLcpLzFFi42LZduzned1ulflxBi8vWlmcuPKP0WLjjPWs + FlN74i1u/GpjtVh75C67xZu2RkaLBZOfsFp0XP3PaPF2bye7A6fH/VMNrB7zZp1g8dg56y67 + x9k7Oxg9+rasYvRYv+Uqi8fm09UB7FFcNimpOZllqUX6dglcGefnzWMp2CJZsf/SSqYGxnbR + LkZODgkBE4lTm2cxg9hCAisYJa6sUOpi5AKyvzBK7Pv6iQnC+cwoceHlCSCHA6zj0ndfiPhy + RolDOw6xwXUseN7FBjKKTcBQovdoHyOILSIQIHHt5zQwm1mgQGLa9SdsIIOEBdIk1q2PBgmz + CKhK/H/RD1bCK2At0TFxJxPEdfISqzccALuOU8BG4u73GSwguyQE2tklOv78Y4MocpHYMes8 + M4QtLPHq+BZ2CFtG4v/O+UwQDc2MEj27b7NDOBMYJe4fX8AIUWUtcefcL7CLmAU0Jdbv0ocI + O0r8m9nGAvExn8SNt4IQ9/NJTNo2nRkizCvR0SYEUa0i8XvVdKibpSS6n/xngbA9JG6dPA4N + n35GiePvzjFNYJSfhbBsASPjKkbx1NLi3PTUYqO81HK94sTc4tK8dL3k/NxNjMBEcvrf8S87 + GHf9STrEKMDBqMTDe+P8vDgh1sSy4srcQ4wSHMxKIrwbHgKFeFMSK6tSi/Lji0pzUosPMUpz + sCiJ8xovehkrJJCeWJKanZpakFoEk2Xi4JRqYMycbb2Z6X6zsffx891uL9M/pBpM6e2R1eC9 + abXvg86THVnXDczb86Y+OMHaoPR/br7E63VbvxR+W2dz0rk55FRyaoRhh0zfOdW+qE8RhULe + uua2f/9Er3VKF+SdfO+WeUdN1OvHCeb8hSZMUmWns/kD5+YUcs2ruebh9cbjSfyOudeaOG+u + UGIpzkg01GIuKk4EAPSLu8IgAwAA +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrHLMWRmVeSWpSXmKPExsVy+t/xu7rdKvPjDPZOELc4ceUfo8XGGetZ + Lab2xFvc+NXGarH2yF12izdtjYwWCyY/YbXouPqf0eLt3k52B06P+6caWD3mzTrB4rFz1l12 + j7N3djB69G1ZxeixfstVFo/Np6sD2KP0bIryS0tSFTLyi0tslaINLYz0DC0t9IxMLPUMjc1j + rYxMlfTtbFJSczLLUov07RL0Ms7Pm8dSsEWyYv+llUwNjO2iXYwcHBICJhKXvvt2MXJxCAks + ZZSYeGIiG0RcSmJ+i1IXIyeQKSzx51oXG0TNJ6CaT0tYQRJsAoYSvUf7GEFsEYEQiRdHrzCB + 2MwCZRJrWl+DxYUFUiSuXF3EAmKzCKhK/H/RDxbnFbCW6Ji4kwligbzE6g0HmEFsTgEbibvf + Z4DVCwHVNFxawjKBkW8BI8MqRpHU0uLc9NxiQ73ixNzi0rx0veT83E2MwLDeduzn5h2MlzYG + H2IU4GBU4uG9cX5enBBrYllxZe4hRgkOZiUR3g0PgUK8KYmVValF+fFFpTmpxYcYTYGOmsgs + JZqcD4y5vJJ4Q1NDcwtLQ3Njc2MzCyVx3g6BgzFCAumJJanZqakFqUUwfUwcnFINjBb7jphd + cHW99k349Za3DneDPqszyswoTlnxNfKtkWFuc5Csol6xgNDNrf81Vl0WSrujb8a/c0dDBov1 + VuvDybd359g1/47sUkpb+OjKVF6W8u93CmvurMn8qPdFbQ5v7o0PSkKqc6qO/5uycZf73oz0 + /OnXBAqkdeRl7nGl6t3qNFCMTqgxV2Ipzkg01GIuKk4EAH1/U2eBAgAA +X-CMS-MailID: 20200421165123eucas1p171701bd64ed84a9c740331ce87c7ff6c +X-Msg-Generator: CA +X-RootMTR: 20200421165123eucas1p171701bd64ed84a9c740331ce87c7ff6c +X-EPHeader: CA +CMS-TYPE: 201P +X-CMS-RootMailID: 20200421165123eucas1p171701bd64ed84a9c740331ce87c7ff6c +References: <20200421165059.19394-1-s.nawrocki@samsung.com> + +X-Mailman-Approved-At: Tue, 21 Apr 2020 19:40:20 +0200 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +From: Marek Szyprowski + +Create a non-cacheable mapping for the 0x600000000 physical memory region, +where MMIO registers for the PCIe XHCI controller are instantiated by the +PCIe bridge. Due to 32bit limit in the CPU virtual address space in ARM +32bit mode, this region is mapped at 0xff800000 CPU virtual address. + +Signed-off-by: Marek Szyprowski +--- + arch/arm/mach-bcm283x/Kconfig | 1 + + arch/arm/mach-bcm283x/include/mach/base.h | 7 +++++ + arch/arm/mach-bcm283x/init.c | 52 +++++++++++++++++++++++++++++++ + 3 files changed, 60 insertions(+) + +diff --git a/arch/arm/mach-bcm283x/Kconfig b/arch/arm/mach-bcm283x/Kconfig +index 00419bf..bcb7f1d 100644 +--- a/arch/arm/mach-bcm283x/Kconfig ++++ b/arch/arm/mach-bcm283x/Kconfig +@@ -36,6 +36,7 @@ config BCM2711_32B + select BCM2711 + select ARMV7_LPAE + select CPU_V7A ++ select PHYS_64BIT + + config BCM2711_64B + bool "Broadcom BCM2711 SoC 64-bit support" +diff --git a/arch/arm/mach-bcm283x/include/mach/base.h b/arch/arm/mach-bcm283x/include/mach/base.h +index c4ae398..1d10dc9 100644 +--- a/arch/arm/mach-bcm283x/include/mach/base.h ++++ b/arch/arm/mach-bcm283x/include/mach/base.h +@@ -6,6 +6,13 @@ + #ifndef _BCM283x_BASE_H_ + #define _BCM283x_BASE_H_ + ++#include ++ + extern unsigned long rpi_bcm283x_base; + ++#ifdef CONFIG_ARMV7_LPAE ++extern void *rpi4_phys_to_virt(phys_addr_t paddr); ++#define phys_to_virt(x) rpi4_phys_to_virt(x) ++#endif ++ + #endif +diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c +index 6a748da..5d0d160 100644 +--- a/arch/arm/mach-bcm283x/init.c ++++ b/arch/arm/mach-bcm283x/init.c +@@ -145,6 +145,58 @@ int mach_cpu_init(void) + } + + #ifdef CONFIG_ARMV7_LPAE ++ ++#define BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT 0xff800000UL ++ ++void *rpi4_phys_to_virt(phys_addr_t paddr) ++{ ++ if (paddr >= BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS) ++ paddr = paddr - BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS + ++ BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT; ++ return (void *)(unsigned long)paddr; ++} ++ ++static void set_section_phys(unsigned int section, phys_addr_t phys, ++ enum dcache_option option) ++{ ++ u64 *page_table = (u64 *)gd->arch.tlb_addr; ++ /* Need to set the access flag to not fault */ ++ u64 value = TTB_SECT_AP | TTB_SECT_AF; ++ ++ /* Add the page offset */ ++ value |= (phys); ++ ++ /* Add caching bits */ ++ value |= option; ++ ++ /* Set PTE */ ++ page_table[section] = value; ++} ++ ++static void rpi4_create_pcie_xhci_mapping(void) ++{ ++ unsigned sect = BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT >> MMU_SECTION_SHIFT; ++ phys_addr_t phys_addr = BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS; ++ unsigned int size = BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE; ++ ++ while (size) { ++ set_section_phys(sect, phys_addr, DCACHE_OFF); ++ sect++; ++ phys_addr += MMU_SECTION_SIZE; ++ size -= MMU_SECTION_SIZE; ++ } ++} ++ ++void arm_init_domains(void) ++{ ++ /* ++ * Hijack this function to prepare a mappings for the PCIe MMIO ++ * region for the XHCI controller on RPi4 board. ++ * This code is called before enabling the MMU in ARM 32bit mode. ++ */ ++ rpi4_create_pcie_xhci_mapping(); ++} ++ + void enable_caches(void) + { + dcache_enable(); + +From patchwork Tue Apr 21 16:50:56 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sylwester Nawrocki +X-Patchwork-Id: 1274443 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 + header.s=mail20170921 header.b=TdaEIEQw; + dkim-atps=neutral +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4969qL0CtWz9sSK + for ; Wed, 22 Apr 2020 03:41:49 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 0B3E7811EC; + Tue, 21 Apr 2020 19:40:47 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.b="TdaEIEQw"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id BB38A81BC1; Tue, 21 Apr 2020 18:51:28 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com + [210.118.77.12]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 38EFA81737 + for ; Tue, 21 Apr 2020 18:51:25 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=s.nawrocki@samsung.com +Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) + by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id + 20200421165124euoutp021fb4b724898c009874780933c7d14680~H49IAvOSY2231422314euoutp02e + for ; Tue, 21 Apr 2020 16:51:24 +0000 (GMT) +DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com + 20200421165124euoutp021fb4b724898c009874780933c7d14680~H49IAvOSY2231422314euoutp02e +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; + s=mail20170921; t=1587487884; + bh=K5kn614EGEGq9XoRGx08RBxVoAnisE7ZdTKndMJbDRM=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=TdaEIEQw+FnhAJ4fnk4tmLrXmueW2he//FahOikgAeJ6M+OUzadWhD3z2FaQlXB+o + eLYh80t9Zmtxjnb8VqEE1Keye1xwPlQilyQlxddEuU4CRUtb1bSTay6Q1TUzHOSaIj + HvCnkkprHeRHnhrs7cj1RJfUYImrhaBUSxNNZCGE= +Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by + eucas1p2.samsung.com (KnoxPortal) with ESMTP id + 20200421165124eucas1p2c8640007863ed087707c8d010be6be09~H49HqVo__0783407834eucas1p2_; + Tue, 21 Apr 2020 16:51:24 +0000 (GMT) +Received: from eucas1p1.samsung.com ( [182.198.249.206]) by + eusmges1new.samsung.com (EUCPMTA) with SMTP id 57.5D.61286.C842F9E5; Tue, 21 + Apr 2020 17:51:24 +0100 (BST) +Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by + eucas1p1.samsung.com (KnoxPortal) with ESMTPA id + 20200421165124eucas1p161d4049c0e136fc74ae2b00c2a1b3883~H49HV1Vh41763717637eucas1p1o; + Tue, 21 Apr 2020 16:51:24 +0000 (GMT) +Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by + eusmtrp2.samsung.com (KnoxPortal) with ESMTP id + 20200421165124eusmtrp2db8fc0e5d79f82c5cc88dc94100c80ec~H49HVJgfe3266732667eusmtrp2Z; + Tue, 21 Apr 2020 16:51:24 +0000 (GMT) +X-AuditID: cbfec7f2-f0bff7000001ef66-79-5e9f248c9bc0 +Received: from eusmtip1.samsung.com ( [203.254.199.221]) by + eusmgms2.samsung.com (EUCPMTA) with SMTP id 19.3B.07950.B842F9E5; Tue, 21 + Apr 2020 17:51:23 +0100 (BST) +Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by + eusmtip1.samsung.com (KnoxPortal) with ESMTPA id + 20200421165123eusmtip15bd7207cfa303d93b849089978670beb~H49GwZGUR0901309013eusmtip1C; + Tue, 21 Apr 2020 16:51:23 +0000 (GMT) +From: Sylwester Nawrocki +To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com +Cc: agraf@suse.de, sjg@chrmium.org, jh80.chung@samsung.com, + m.szyprowski@samsung.com, b.zolnierkie@samsung.com, Sylwester Nawrocki + +Subject: [RFC PATCH 6/9] usb: xhci: Allow accessing 64-bit registers with + DWORD accesses only +Date: Tue, 21 Apr 2020 18:50:56 +0200 +Message-Id: <20200421165059.19394-7-s.nawrocki@samsung.com> +X-Mailer: git-send-email 2.17.1 +In-Reply-To: <20200421165059.19394-1-s.nawrocki@samsung.com> +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprCKsWRmVeSWpSXmKPExsWy7djPc7o9KvPjDFY9ErA4ceUfo8XGGetZ + Lab2xFvc+NXGarH2yF12izdtjYwWCyY/YbU4/Kad1aLj6n9Gi7d7O9kduDzun2pg9Zg36wSL + x85Zd9k9zt7ZwejRt2UVo8f6LVdZPDafrg5gj+KySUnNySxLLdK3S+DKWHP3JXNBg1DFl0W7 + mBsY7/J1MXJySAiYSLy/coIVxBYSWMEo8e2sYxcjF5D9hVFi4beHjBDOZ0aJZQ0/GGE6Jn1d + wASRWM4osW7OOWa4lgfr5oFVsQkYSvQe7QOzRQQCJK79nAY2illgPqPEn0/TwBLCAvES958s + ZgOxWQRUJSZ2rGECsXkFrCWuLp/GDrFOXmL1hgPMIDangI3E3e8zWCDik9klFt2XhrBdJC5c + usoGYQtLvDq+BapXRuL/zvlgp0oINDNK9Oy+zQ7hTGCUuH98AdRD1hJ3zv0C6uYAOk9TYv0u + fYiwo0Tf1HesIGEJAT6JG28FQcLMQOakbdOZIcK8Eh1tQhDVKhK/V01ngrClJLqf/Ic600Pi + w8fFLJAA6meU6Nr7nnECo/wshGULGBlXMYqnlhbnpqcWG+allusVJ+YWl+al6yXn525iBKaV + 0/+Of9rB+PVS0iFGAQ5GJR7eG+fnxQmxJpYVV+YeYpTgYFYS4d3wECjEm5JYWZValB9fVJqT + WnyIUZqDRUmc13jRy1ghgfTEktTs1NSC1CKYLBMHp1QDo0NlrlZnZIZvA8+uwiqVNYzC/zbd + 8izctWfuNx4XYxXelzfU2SRYA08E32U8UlLxXiGjV3fxrc/35C7e3pyxj0dLTePrncrpBptb + FX6rXZLVnDGhff2fSQf+6HP95tKR3+wkzi0kXB99vkvDK6eoVW5d0uRYRxXTCfGnozzfc+wL + 6X+tWFehxFKckWioxVxUnAgAMSV15icDAAA= +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrKLMWRmVeSWpSXmKPExsVy+t/xu7rdKvPjDPr7bCxOXPnHaLFxxnpW + i6k98RY3frWxWqw9cpfd4k1bI6PFgslPWC0Ov2lntei4+p/R4u3eTnYHLo/7pxpYPebNOsHi + sXPWXXaPs3d2MHr0bVnF6LF+y1UWj82nqwPYo/RsivJLS1IVMvKLS2yVog0tjPQMLS30jEws + 9QyNzWOtjEyV9O1sUlJzMstSi/TtEvQy1tx9yVzQIFTxZdEu5gbGu3xdjJwcEgImEpO+LmDq + YuTiEBJYyihx8udKxi5GDqCElMT8FiWIGmGJP9e62CBqPjFKfOxoZgJJsAkYSvQe7WMEsUUE + QiReHL0CNogZZNCfhjesIAlhgViJGXMWsYPYLAKqEhM71oA18wpYS1xdPo0dYoO8xOoNB5hB + bE4BG4m732ewgNhCQDUNl5awTGDkW8DIsIpRJLW0ODc9t9hIrzgxt7g0L10vOT93EyMwyLcd + +7llB2PXu+BDjAIcjEo8vDfOz4sTYk0sK67MPcQowcGsJMK74SFQiDclsbIqtSg/vqg0J7X4 + EKMp0FETmaVEk/OBEZhXEm9oamhuYWlobmxubGahJM7bIXAwRkggPbEkNTs1tSC1CKaPiYNT + qoExbeNShg0BsVpXNX2+ynqZ6E7NXSE7VcnncfFtX/399bscXzZ29OomzhFKnuj8rz715Ruj + Dfa+8s+n7hDYcHyawgFVruDoGTumeS/WeHOltsT4QDWHrfWL65mbVjLm/99wxqyee9+3r8fY + 3h36XGPv8K1gQVD7jm/XPqUe2OMxsVg3m+mz4/cjSizFGYmGWsxFxYkAsqsjeYgCAAA= +X-CMS-MailID: 20200421165124eucas1p161d4049c0e136fc74ae2b00c2a1b3883 +X-Msg-Generator: CA +X-RootMTR: 20200421165124eucas1p161d4049c0e136fc74ae2b00c2a1b3883 +X-EPHeader: CA +CMS-TYPE: 201P +X-CMS-RootMailID: 20200421165124eucas1p161d4049c0e136fc74ae2b00c2a1b3883 +References: <20200421165059.19394-1-s.nawrocki@samsung.com> + +X-Mailman-Approved-At: Tue, 21 Apr 2020 19:40:20 +0200 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +This patch adds a Kconfig option which allows accessing 64-bit xHCI +IO registers only with 2 double word accesses rather than using +a single quad word access. There might be HW configurations where +single quad word access doesn't work, even though the CPU is 64-bit. +That seems to be the case on rpi4 board with Broadcom BCM2711 SoC, +where the VL805 USB xHCI hub is connected to the PCIe controller +behind the SCB bridge. + +Signed-off-by: Sylwester Nawrocki +--- +So far I couldn't come up with anything better to make the xHCI host +controller working on the rpi4 board. For some reason dereferencing +a 64-bit pointer to access 64-bit registers doesn't work there, +might be a limitation of the PCIe bridge behind the SCB. In Linux +always 2 double word accesses are used. +--- + drivers/usb/host/Kconfig | 7 +++++++ + include/usb/xhci.h | 4 ++-- + 2 files changed, 9 insertions(+), 2 deletions(-) + +diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig +index 0987ff2..3990b8a 100644 +--- a/drivers/usb/host/Kconfig ++++ b/drivers/usb/host/Kconfig +@@ -15,6 +15,13 @@ config USB_XHCI_HCD + + if USB_XHCI_HCD + ++config XHCI_64BIT_DWORD_ACCESS_ONLY ++ bool "Access xHCI 64-bit registers with double word accesses only" ++ help ++ Choose this option if your hardware does not support quad word accesses ++ for registers with 64-bit address pointers. ++ If unsure, say Y. ++ + config USB_XHCI_DWC3 + bool "DesignWare USB3 DRD Core Support" + help +diff --git a/include/usb/xhci.h b/include/usb/xhci.h +index 6017504..459e76b 100644 +--- a/include/usb/xhci.h ++++ b/include/usb/xhci.h +@@ -1111,7 +1111,7 @@ static inline void xhci_writel(uint32_t volatile *regs, const unsigned int val) + */ + static inline u64 xhci_readq(__le64 volatile *regs) + { +-#if BITS_PER_LONG == 64 ++#if BITS_PER_LONG == 64 && !defined(CONFIG_XHCI_64BIT_DWORD_ACCESS_ONLY) + return readq(regs); + #else + __u32 *ptr = (__u32 *)regs; +@@ -1123,7 +1123,7 @@ static inline u64 xhci_readq(__le64 volatile *regs) + + static inline void xhci_writeq(__le64 volatile *regs, const u64 val) + { +-#if BITS_PER_LONG == 64 ++#if BITS_PER_LONG == 64 && !defined(CONFIG_XHCI_64BIT_DWORD_ACCESS_ONLY) + writeq(val, regs); + #else + __u32 *ptr = (__u32 *)regs; + +From patchwork Tue Apr 21 16:50:57 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sylwester Nawrocki +X-Patchwork-Id: 1274447 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 + header.s=mail20170921 header.b=kJBt9MQT; + dkim-atps=neutral +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4969r762FQz9sSK + for ; Wed, 22 Apr 2020 03:42:31 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 6363A81C5C; + Tue, 21 Apr 2020 19:41:12 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.b="kJBt9MQT"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 33EC581A07; Tue, 21 Apr 2020 18:51:30 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com + [210.118.77.11]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id D6CEE8184C + for ; Tue, 21 Apr 2020 18:51:25 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=s.nawrocki@samsung.com +Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) + by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id + 20200421165125euoutp017478067b4a8bcca514dc40fb627f8acd~H49IcW7dO0962409624euoutp01a + for ; Tue, 21 Apr 2020 16:51:25 +0000 (GMT) +DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com + 20200421165125euoutp017478067b4a8bcca514dc40fb627f8acd~H49IcW7dO0962409624euoutp01a +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; + s=mail20170921; t=1587487885; + bh=QSdxf5aZ1i+jg2fjLAbBS232kWZjIZ9zY4PIHR2Ni14=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=kJBt9MQTfmkeKhmiceQe/HUCmI96oRoDNPi5nn3ky/Y/Kh/4hsthKjmpse7p+jiPh + l1humgHswaPtb/kwiWawEP4oQeD+g1ttz9BnBrOk/9YpQrhoD46wGVfSuVlD+yprPM + j3DXWoNkCb5Jy2Ii1dO+p4MBcfHyCpQNuyBKhxX4= +Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by + eucas1p2.samsung.com (KnoxPortal) with ESMTP id + 20200421165124eucas1p22e6a58349823ac3889aa6b696d47eef7~H49IIOxKO2494924949eucas1p2s; + Tue, 21 Apr 2020 16:51:24 +0000 (GMT) +Received: from eucas1p1.samsung.com ( [182.198.249.206]) by + eusmges1new.samsung.com (EUCPMTA) with SMTP id 08.5D.61286.C842F9E5; Tue, 21 + Apr 2020 17:51:24 +0100 (BST) +Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by + eucas1p2.samsung.com (KnoxPortal) with ESMTPA id + 20200421165124eucas1p2e7cbc2eea896a682961304de7ff53dc2~H49H2hSgu2493024930eucas1p2e; + Tue, 21 Apr 2020 16:51:24 +0000 (GMT) +Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by + eusmtrp2.samsung.com (KnoxPortal) with ESMTP id + 20200421165124eusmtrp2805e4f2d242b9fde671b88d2af6d3996~H49H19aau3266732667eusmtrp2a; + Tue, 21 Apr 2020 16:51:24 +0000 (GMT) +X-AuditID: cbfec7f2-f0bff7000001ef66-7b-5e9f248ccc1b +Received: from eusmtip1.samsung.com ( [203.254.199.221]) by + eusmgms1.samsung.com (EUCPMTA) with SMTP id 8C.0E.08375.C842F9E5; Tue, 21 + Apr 2020 17:51:24 +0100 (BST) +Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by + eusmtip1.samsung.com (KnoxPortal) with ESMTPA id + 20200421165123eusmtip17d0177368f95f9d2fdda3229641c093c~H49HSnwTG0895708957eusmtip1I; + Tue, 21 Apr 2020 16:51:23 +0000 (GMT) +From: Sylwester Nawrocki +To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com +Cc: agraf@suse.de, sjg@chrmium.org, jh80.chung@samsung.com, + m.szyprowski@samsung.com, b.zolnierkie@samsung.com, Sylwester Nawrocki + +Subject: [RFC PATCH 7/9] pci: Add some PCI Express capability register + offset definitions +Date: Tue, 21 Apr 2020 18:50:57 +0200 +Message-Id: <20200421165059.19394-8-s.nawrocki@samsung.com> +X-Mailer: git-send-email 2.17.1 +In-Reply-To: <20200421165059.19394-1-s.nawrocki@samsung.com> +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprKKsWRmVeSWpSXmKPExsWy7djPc7o9KvPjDOb3GFqcuPKP0WLjjPWs + FlN74i1u/GpjtVh75C67xZu2RkaLBZOfsFocftPOatFx9T+jxdu9newOXB73TzWwesybdYLF + Y+esu+weZ+/sYPTo27KK0WP9lqssHptPVwewR3HZpKTmZJalFunbJXBlLOnbw1Zwi7Ni8+9z + bA2Mv9m7GDk5JARMJA78WsXaxcjFISSwglHixo1PbBDOF0aJxyvOMUM4nxklNn7czwbT0j75 + CSNEYjmjxP62HQgtB7eeZQWpYhMwlOg92scIYosIBEhc+zkNrINZYD6jxJ9P08ASwgLREt3L + poI1sAioSkw9dxgszitgLXH2+hMWiHXyEqs3HGAGsTkFbCTufp/BAjJIQqCfXeL43lag1RxA + jovEu7+uEPXCEq+Ob4H6Tkbi/875TBD1zYwSPbtvs0M4Exgl7h9fwAhRZS1x59wvsEHMApoS + 63fpQ4QdJaaufM8MMZ9P4sZbQZAwM5A5adt0qDCvREebEES1isTvVdOZIGwpie4n/6HO95CY + fG0pNID7GSWmv97INIFRfhbCsgWMjKsYxVNLi3PTU4sN81LL9YoTc4tL89L1kvNzNzECE8vp + f8c/7WD8einpEKMAB6MSD++N8/PihFgTy4orcw8xSnAwK4nwbngIFOJNSaysSi3Kjy8qzUkt + PsQozcGiJM5rvOhlrJBAemJJanZqakFqEUyWiYNTqoGx87UC54UXWU93H7X3MdWs/ZIef/B0 + 3D53q9ijlfeuCDrs1ouV0Xb4NO2RzMookbe3C+r83nb/Vpl4buWKTbnZG1bl3P5wxG5v5FeO + oCX3/7xinv/YaN69yH1cNeoyB/P/eq51Tzi/6ekicea0JYofo1L/Km4UqslcO1nz2Z5FqnoP + Zj3o108XVWIpzkg01GIuKk4EAKEb1VEoAwAA +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrKLMWRmVeSWpSXmKPExsVy+t/xu7o9KvPjDD58lrc4ceUfo8XGGetZ + Lab2xFvc+NXGarH2yF12izdtjYwWCyY/YbU4/Kad1aLj6n9Gi7d7O9kduDzun2pg9Zg36wSL + x85Zd9k9zt7ZwejRt2UVo8f6LVdZPDafrg5gj9KzKcovLUlVyMgvLrFVija0MNIztLTQMzKx + 1DM0No+1MjJV0rezSUnNySxLLdK3S9DLWNK3h63gFmfF5t/n2BoYf7N3MXJySAiYSLRPfsLY + xcjFISSwlFHi9/leIIcDKCElMb9FCaJGWOLPtS42iJpPjBK7GxYwgiTYBAwleo/2gdkiAiES + L45eYQIpYgYZ9KfhDStIQlggUuL5pSawbSwCqhJTzx0Ga+AVsJY4e/0JC8QGeYnVGw4wg9ic + AjYSd7/PAIsLAdU0XFrCMoGRbwEjwypGkdTS4tz03GJDveLE3OLSvHS95PzcTYzAIN927Ofm + HYyXNgYfYhTgYFTi4b1xfl6cEGtiWXFl7iFGCQ5mJRHeDQ+BQrwpiZVVqUX58UWlOanFhxhN + gY6ayCwlmpwPjMC8knhDU0NzC0tDc2NzYzMLJXHeDoGDMUIC6YklqdmpqQWpRTB9TBycUg2M + /pZZnzwOiax7IzV3XvqV1Vo/f7fMV/lY+/0d17pVLAxlCnkPI9+WiZ+ez6JbPNtuRtAP9fxH + DnsX8yb+fpP/9sOanwvXbZbiWOiiOVPNzd9Oc0vW1JIX2Rm7/ZTL2XvPhJfM/PF3L0PINbOe + PwxuK+0yjEWzp5uVrThasfjjykKLz69ZrqRMV2Ipzkg01GIuKk4EAJrdLQ6IAgAA +X-CMS-MailID: 20200421165124eucas1p2e7cbc2eea896a682961304de7ff53dc2 +X-Msg-Generator: CA +X-RootMTR: 20200421165124eucas1p2e7cbc2eea896a682961304de7ff53dc2 +X-EPHeader: CA +CMS-TYPE: 201P +X-CMS-RootMailID: 20200421165124eucas1p2e7cbc2eea896a682961304de7ff53dc2 +References: <20200421165059.19394-1-s.nawrocki@samsung.com> + +X-Mailman-Approved-At: Tue, 21 Apr 2020 19:40:20 +0200 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +Add PCI Express capability definitions required by the Broadcom STB PCIe +driver. + +Signed-off-by: Sylwester Nawrocki +--- + include/pci.h | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/include/pci.h b/include/pci.h +index 3d7646d..2b25a17 100644 +--- a/include/pci.h ++++ b/include/pci.h +@@ -481,10 +481,17 @@ + #define PCI_EXP_DEVCTL_BCR_FLR 0x8000 /* Bridge Configuration Retry / FLR */ + + #define PCI_EXP_LNKCAP 12 /* Link Capabilities */ ++#define PCI_EXP_LNKCAP_SLS 0x0000000f /* Supported Link Speeds */ ++#define PCI_EXP_LNKCAP_MLW 0x000003f0 /* Maximum Link Width */ + #define PCI_EXP_LNKCAP_DLLLARC 0x00100000 /* Data Link Layer Link Active Reporting Capable */ + + #define PCI_EXP_LNKSTA 18 /* Link Status */ ++#define PCI_EXP_LNKSTA_CLS 0x000f /* Current Link Speed */ ++#define PCI_EXP_LNKSTA_NLW 0x03f0 /* Negotiated Link Width */ ++#define PCI_EXP_LNKSTA_NLW_SHIFT 4 /* start of NLW mask in link status */ ++ + #define PCI_EXP_LNKSTA_DLLLA 0x2000 /* Data Link Layer Link Active */ ++#define PCI_EXP_LNKCTL2 48 /* Link Control 2 */ + + #define PCI_EXP_SLTCAP 20 /* Slot Capabilities */ + #define PCI_EXP_SLTCAP_PSN 0xfff80000 /* Physical Slot Number */ + +From patchwork Tue Apr 21 16:50:58 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sylwester Nawrocki +X-Patchwork-Id: 1274450 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 + header.s=mail20170921 header.b=V2q01bQ/; + dkim-atps=neutral +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4969rc1xCYz9sSJ + for ; Wed, 22 Apr 2020 03:42:56 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 6CE2681C7F; + Tue, 21 Apr 2020 19:41:23 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.b="V2q01bQ/"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 9467681903; Tue, 21 Apr 2020 18:51:34 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com + [210.118.77.12]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 47472811EC + for ; Tue, 21 Apr 2020 18:51:26 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=s.nawrocki@samsung.com +Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) + by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id + 20200421165125euoutp027c2f8629ce3ba4a84d60b754a01e5b68~H49JAGcq02124521245euoutp02G + for ; Tue, 21 Apr 2020 16:51:25 +0000 (GMT) +DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com + 20200421165125euoutp027c2f8629ce3ba4a84d60b754a01e5b68~H49JAGcq02124521245euoutp02G +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; + s=mail20170921; t=1587487885; + bh=SgT5EbyyriPRlKXZCt8gGCg2BwcMKYEjMNbrTo1rN9Y=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=V2q01bQ/gRkexQmJ08rqktSSG2IIw4Oxph9as+yifS3FoSk2X9PC8am9EU71ZVFVD + NtGG2hSZAE1jVhNja+T7NhJsoPyJCBuezCB2h3S5qLFnfOTfNwY6S4MNfpwzycIhDu + gw/ekSJd9UfyRgnyQKd2WDWeFXzicX1P3HwlgFyc= +Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by + eucas1p2.samsung.com (KnoxPortal) with ESMTP id + 20200421165125eucas1p256a778789f1a945c6d829c4107899732~H49IzeZiQ2498424984eucas1p2s; + Tue, 21 Apr 2020 16:51:25 +0000 (GMT) +Received: from eucas1p1.samsung.com ( [182.198.249.206]) by + eusmges2new.samsung.com (EUCPMTA) with SMTP id 0B.64.60679.D842F9E5; Tue, 21 + Apr 2020 17:51:25 +0100 (BST) +Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by + eucas1p1.samsung.com (KnoxPortal) with ESMTPA id + 20200421165125eucas1p1a4cc19f4c58f449375e6d66b19d51e04~H49IdXmcE1760817608eucas1p1l; + Tue, 21 Apr 2020 16:51:25 +0000 (GMT) +Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by + eusmtrp2.samsung.com (KnoxPortal) with ESMTP id + 20200421165125eusmtrp27d7ff3dfafaa5b2e7a932be0db501d35~H49IcvAN33266732667eusmtrp2d; + Tue, 21 Apr 2020 16:51:25 +0000 (GMT) +X-AuditID: cbfec7f4-0cbff7000001ed07-20-5e9f248d424a +Received: from eusmtip1.samsung.com ( [203.254.199.221]) by + eusmgms2.samsung.com (EUCPMTA) with SMTP id 0A.3B.07950.D842F9E5; Tue, 21 + Apr 2020 17:51:25 +0100 (BST) +Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by + eusmtip1.samsung.com (KnoxPortal) with ESMTPA id + 20200421165124eusmtip15fa0a5ba05c41b46ed86e7d3b1fc2541~H49H0sDr10901309013eusmtip1D; + Tue, 21 Apr 2020 16:51:24 +0000 (GMT) +From: Sylwester Nawrocki +To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com +Cc: agraf@suse.de, sjg@chrmium.org, jh80.chung@samsung.com, + m.szyprowski@samsung.com, b.zolnierkie@samsung.com, Sylwester Nawrocki + +Subject: [RFC PATCH 8/9] pci: Add driver for Broadcom STB PCIe controller +Date: Tue, 21 Apr 2020 18:50:58 +0200 +Message-Id: <20200421165059.19394-9-s.nawrocki@samsung.com> +X-Mailer: git-send-email 2.17.1 +In-Reply-To: <20200421165059.19394-1-s.nawrocki@samsung.com> +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprOKsWRmVeSWpSXmKPExsWy7djPc7q9KvPjDB5NVbE4ceUfo8XGGetZ + Lab2xFvc+NXGarH2yF12izdtjYwWCyY/YbU4/Kad1aLj6n9Gi7d7O9kduDzun2pg9Zg36wSL + x85Zd9k9zt7ZwejRt2UVo8f6LVdZPDafrg5gj+KySUnNySxLLdK3S+DKWDfvFnPB4weMFVdb + bzA1MK7dwdjFyMkhIWAi0fL6L3MXIxeHkMAKRomXO/ugnC+MEqvn/2aEcD4zSkzdfAau5fSE + iVCJ5YwS/3fMYIJr6f36igmkik3AUKL3aB9Yh4hAgMS1n9PAOpgF5jNK/PkE4nBwCAt4Suzo + CAWpYRFQlbh6+CAziM0rYC2xbvdyNoht8hKrNxwAi3MK2Ejc/T6DBWSOhMBkdokXe+YzQRS5 + SFxZtZcFwhaWeHV8CzuELSPxf+d8JoiGZkaJnt232SGcCYwS948vgHrIWuLOuV9sIBcxC2hK + rN+lDxF2lOg5sZYZJCwhwCdx460gSJgZyJy0bTpUmFeio00IolpF4veq6VDnSEl0P/kPdY6H + xNVD3ayQAOpnlGj5+IVxAqP8LIRlCxgZVzGKp5YW56anFhvlpZbrFSfmFpfmpesl5+duYgQm + l9P/jn/ZwbjrT9IhRgEORiUe3hvn58UJsSaWFVfmHmKU4GBWEuHd8BAoxJuSWFmVWpQfX1Sa + k1p8iFGag0VJnNd40ctYIYH0xJLU7NTUgtQimCwTB6dUA2NEb/K2v9c3Gf2/fPSEilQmt+fk + nIuydjubLxYYtAan14tELLJf07M5eo3f7Q0K4rtel5bILQwvEN7/6szi8pMCOwxfLSwvdWVX + YrbkST/8boPRrDSlBDUhGZ6EVXHT1MxnGUr9vbc77bd1uFRUvab57JT/TxiftN7W/C48kcF/ + rvLXJXPSQpVYijMSDbWYi4oTAdsPWBwqAwAA +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrKLMWRmVeSWpSXmKPExsVy+t/xu7q9KvPjDH7e4LA4ceUfo8XGGetZ + Lab2xFvc+NXGarH2yF12izdtjYwWCyY/YbU4/Kad1aLj6n9Gi7d7O9kduDzun2pg9Zg36wSL + x85Zd9k9zt7ZwejRt2UVo8f6LVdZPDafrg5gj9KzKcovLUlVyMgvLrFVija0MNIztLTQMzKx + 1DM0No+1MjJV0rezSUnNySxLLdK3S9DLWDfvFnPB4weMFVdbbzA1MK7dwdjFyMkhIWAicXrC + RCCbi0NIYCmjxPzGAyxdjBxACSmJ+S1KEDXCEn+udbGB2EICnxgldq0uALHZBAwleo/2gc0R + EQiReHH0ChPIHGaQOX8a3rCCzBEW8JTY0REKUsMioCpx9fBBZhCbV8BaYt3u5WwQ8+UlVm84 + ABbnFLCRuPt9BgvELmuJhktLWCYw8i1gZFjFKJJaWpybnltspFecmFtcmpeul5yfu4kRGOTb + jv3cAvTPu+BDjAIcjEo8vDfOz4sTYk0sK67MPcQowcGsJMK74SFQiDclsbIqtSg/vqg0J7X4 + EKMp0FETmaVEk/OBEZhXEm9oamhuYWlobmxubGahJM7bIXAwRkggPbEkNTs1tSC1CKaPiYNT + qoHxyITUbVOmzfOe6xBQei+5rl3V9HyUYsrtstT3c/rPzTS5LfD/4tcN+rExMZsfCgefY3u/ + S3bGuWj2fSqzpogm8l8sO5tk0pj8VP3c50dhfaJ7u0JT1D8Ebdu46dSWX/8NJVkncJTv+3h4 + q3zpPtHlG9bk7lRYe1juQ+jL8jebYzzemgp82DHxjxJLcUaioRZzUXEiAG5+y62IAgAA +X-CMS-MailID: 20200421165125eucas1p1a4cc19f4c58f449375e6d66b19d51e04 +X-Msg-Generator: CA +X-RootMTR: 20200421165125eucas1p1a4cc19f4c58f449375e6d66b19d51e04 +X-EPHeader: CA +CMS-TYPE: 201P +X-CMS-RootMailID: 20200421165125eucas1p1a4cc19f4c58f449375e6d66b19d51e04 +References: <20200421165059.19394-1-s.nawrocki@samsung.com> + +X-Mailman-Approved-At: Tue, 21 Apr 2020 19:40:20 +0200 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +This patch adds basic driver for the Broadcom STB PCIe host controller. +The code is based on Linux upstream driver (pcie-brcmtsb.c) with MSI +handling removed. The inbound access memory region is not currently +parsed from dma-ranges DT property and is fixed as a 1:1 mapping of +whole RAM. +The patch has been tested on rpi4 board, i.e. on BCM2711 SoC with VL805 +USB Host Controller. + +Signed-off-by: Sylwester Nawrocki +--- + drivers/pci/Kconfig | 5 + + drivers/pci/Makefile | 1 + + drivers/pci/pcie_brcmstb.c | 844 +++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 850 insertions(+) + create mode 100644 drivers/pci/pcie_brcmstb.c + +diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig +index 437cd9a..02dcc57 100644 +--- a/drivers/pci/Kconfig ++++ b/drivers/pci/Kconfig +@@ -197,4 +197,9 @@ config PCIE_MEDIATEK + Say Y here if you want to enable Gen2 PCIe controller, + which could be found on MT7623 SoC family. + ++config PCI_BRCMSTB ++ bool "Broadcom STB PCIe controller" ++ depends on DM_PCI ++ help ++ Say Y here if you want to enable PCI controller support on BCM2711 SoC. + endif +diff --git a/drivers/pci/Makefile b/drivers/pci/Makefile +index c051ecc..3e53b1f 100644 +--- a/drivers/pci/Makefile ++++ b/drivers/pci/Makefile +@@ -43,3 +43,4 @@ obj-$(CONFIG_PCI_PHYTIUM) += pcie_phytium.o + obj-$(CONFIG_PCIE_INTEL_FPGA) += pcie_intel_fpga.o + obj-$(CONFIG_PCI_KEYSTONE) += pcie_dw_ti.o + obj-$(CONFIG_PCIE_MEDIATEK) += pcie_mediatek.o ++obj-$(CONFIG_PCI_BRCMSTB) += pcie_brcmstb.o +diff --git a/drivers/pci/pcie_brcmstb.c b/drivers/pci/pcie_brcmstb.c +new file mode 100644 +index 0000000..e96e163 +--- /dev/null ++++ b/drivers/pci/pcie_brcmstb.c +@@ -0,0 +1,844 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Broadcom STB PCIe controller driver ++ * ++ * Copyright (C) 2020 Samsung Electronics Co., Ltd. ++ * Author: Sylwester Nawrocki ++ * ++ * Based on upstream Linux kernel driver: ++ * ++ * drivers/pci/controller/pcie-brcmstb.c ++ * Copyright (C) 2009 - 2017 Broadcom ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++DECLARE_GLOBAL_DATA_PTR; ++ ++/* BRCM_PCIE_CAP_REGS - Offset for the mandatory capability config regs */ ++#define BRCM_PCIE_CAP_REGS 0x00ac ++ ++/* ++ * Broadcom Settop Box PCIe Register Offsets. The names are from ++ * the chip's RDB and we use them here so that a script can correlate ++ * this code and the RDB to prevent discrepancies. ++ */ ++#define PCIE_RC_CFG_VENDOR_VENDOR_SPECIFIC_REG1 0x0188 ++#define PCIE_RC_CFG_PRIV1_ID_VAL3 0x043c ++#define PCIE_RC_DL_MDIO_ADDR 0x1100 ++#define PCIE_RC_DL_MDIO_WR_DATA 0x1104 ++#define PCIE_RC_DL_MDIO_RD_DATA 0x1108 ++#define PCIE_MISC_MISC_CTRL 0x4008 ++#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LO 0x400c ++#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_HI 0x4010 ++#define PCIE_MISC_RC_BAR1_CONFIG_LO 0x402c ++#define PCIE_MISC_RC_BAR2_CONFIG_LO 0x4034 ++#define PCIE_MISC_RC_BAR2_CONFIG_HI 0x4038 ++#define PCIE_MISC_RC_BAR3_CONFIG_LO 0x403c ++#define PCIE_MISC_MSI_BAR_CONFIG_LO 0x4044 ++#define PCIE_MISC_MSI_BAR_CONFIG_HI 0x4048 ++#define PCIE_MISC_MSI_DATA_CONFIG 0x404c ++#define PCIE_MISC_EOI_CTRL 0x4060 ++#define PCIE_MISC_PCIE_CTRL 0x4064 ++#define PCIE_MISC_PCIE_STATUS 0x4068 ++#define PCIE_MISC_REVISION 0x406c ++#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT 0x4070 ++#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_HI 0x4080 ++#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LIMIT_HI 0x4084 ++#define PCIE_MISC_HARD_PCIE_HARD_DEBUG 0x4204 ++#define PCIE_INTR2_CPU_BASE 0x4300 ++#define PCIE_MSI_INTR2_BASE 0x4500 ++ ++/* ++ * Broadcom Settop Box PCIe Register Field shift and mask info. The ++ * names are from the chip's RDB and we use them here so that a script ++ * can correlate this code and the RDB to prevent discrepancies. ++ */ ++#define PCIE_RC_CFG_VENDOR_VENDOR_SPECIFIC_REG1_ENDIAN_MODE_BAR2_MASK 0xc ++#define PCIE_RC_CFG_VENDOR_VENDOR_SPECIFIC_REG1_ENDIAN_MODE_BAR2_SHIFT 0x2 ++#define PCIE_RC_CFG_PRIV1_ID_VAL3_CLASS_CODE_MASK 0xffffff ++#define PCIE_RC_CFG_PRIV1_ID_VAL3_CLASS_CODE_SHIFT 0x0 ++#define PCIE_MISC_MISC_CTRL_SCB_ACCESS_EN_MASK 0x1000 ++#define PCIE_MISC_MISC_CTRL_SCB_ACCESS_EN_SHIFT 0xc ++#define PCIE_MISC_MISC_CTRL_CFG_READ_UR_MODE_MASK 0x2000 ++#define PCIE_MISC_MISC_CTRL_CFG_READ_UR_MODE_SHIFT 0xd ++#define PCIE_MISC_MISC_CTRL_MAX_BURST_SIZE_MASK 0x300000 ++#define PCIE_MISC_MISC_CTRL_MAX_BURST_SIZE_SHIFT 0x14 ++#define PCIE_MISC_MISC_CTRL_SCB0_SIZE_MASK 0xf8000000 ++#define PCIE_MISC_MISC_CTRL_SCB0_SIZE_SHIFT 0x1b ++#define PCIE_MISC_MISC_CTRL_SCB1_SIZE_MASK 0x7c00000 ++#define PCIE_MISC_MISC_CTRL_SCB1_SIZE_SHIFT 0x16 ++#define PCIE_MISC_MISC_CTRL_SCB2_SIZE_MASK 0x1f ++#define PCIE_MISC_MISC_CTRL_SCB2_SIZE_SHIFT 0x0 ++#define PCIE_MISC_RC_BAR1_CONFIG_LO_SIZE_MASK 0x1f ++#define PCIE_MISC_RC_BAR1_CONFIG_LO_SIZE_SHIFT 0x0 ++#define PCIE_MISC_RC_BAR2_CONFIG_LO_SIZE_MASK 0x1f ++#define PCIE_MISC_RC_BAR2_CONFIG_LO_SIZE_SHIFT 0x0 ++#define PCIE_MISC_RC_BAR3_CONFIG_LO_SIZE_MASK 0x1f ++#define PCIE_MISC_RC_BAR3_CONFIG_LO_SIZE_SHIFT 0x0 ++#define PCIE_MISC_PCIE_CTRL_PCIE_PERSTB_MASK 0x4 ++#define PCIE_MISC_PCIE_CTRL_PCIE_PERSTB_SHIFT 0x2 ++#define PCIE_MISC_PCIE_CTRL_PCIE_L23_REQUEST_MASK 0x1 ++#define PCIE_MISC_PCIE_CTRL_PCIE_L23_REQUEST_SHIFT 0x0 ++#define PCIE_MISC_PCIE_STATUS_PCIE_PORT_MASK 0x80 ++#define PCIE_MISC_PCIE_STATUS_PCIE_PORT_SHIFT 0x7 ++#define PCIE_MISC_PCIE_STATUS_PCIE_DL_ACTIVE_MASK 0x20 ++#define PCIE_MISC_PCIE_STATUS_PCIE_DL_ACTIVE_SHIFT 0x5 ++#define PCIE_MISC_PCIE_STATUS_PCIE_PHYLINKUP_MASK 0x10 ++#define PCIE_MISC_PCIE_STATUS_PCIE_PHYLINKUP_SHIFT 0x4 ++#define PCIE_MISC_PCIE_STATUS_PCIE_LINK_IN_L23_MASK 0x40 ++#define PCIE_MISC_PCIE_STATUS_PCIE_LINK_IN_L23_SHIFT 0x6 ++#define PCIE_MISC_REVISION_MAJMIN_MASK 0xffff ++#define PCIE_MISC_REVISION_MAJMIN_SHIFT 0 ++#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT_LIMIT_MASK 0xfff00000 ++#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT_LIMIT_SHIFT 0x14 ++#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT_BASE_MASK 0xfff0 ++#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT_BASE_SHIFT 0x4 ++#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT_NUM_MASK_BITS 0xc ++#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_HI_BASE_MASK 0xff ++#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_HI_BASE_SHIFT 0x0 ++#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LIMIT_HI_LIMIT_MASK 0xff ++#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LIMIT_HI_LIMIT_SHIFT 0x0 ++#define PCIE_MISC_HARD_PCIE_HARD_DEBUG_CLKREQ_DEBUG_ENABLE_MASK 0x2 ++#define PCIE_MISC_HARD_PCIE_HARD_DEBUG_CLKREQ_DEBUG_ENABLE_SHIFT 0x1 ++#define PCIE_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK 0x08000000 ++#define PCIE_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_SHIFT 0x1b ++#define PCIE_RGR1_SW_INIT_1_PERST_MASK 0x1 ++#define PCIE_RGR1_SW_INIT_1_PERST_SHIFT 0x0 ++ ++/* Offsets from PCIE_INTR2_CPU_BASE */ ++#define STATUS 0x0 ++#define SET 0x4 ++#define CLR 0x8 ++#define MASK_STATUS 0xc ++#define MASK_SET 0x10 ++#define MASK_CLR 0x14 ++ ++#define BRCM_NUM_PCIE_OUT_WINS 0x4 ++#define BRCM_MAX_SCB 0x4 ++ ++#define BURST_SIZE_128 0 ++ ++#define PCIE_BUSNUM_SHIFT 20 ++#define PCIE_SLOT_SHIFT 15 ++#define PCIE_FUNC_SHIFT 12 ++ ++#if defined(__BIG_ENDIAN) ++#define DATA_ENDIAN 2 /* PCIe->DDR inbound traffic */ ++#define MMIO_ENDIAN 2 /* CPU->PCIe outbound traffic */ ++#else ++#define DATA_ENDIAN 0 ++#define MMIO_ENDIAN 0 ++#endif ++ ++#define MDIO_PORT0 0x0 ++#define MDIO_DATA_MASK 0x7fffffff ++#define MDIO_DATA_SHIFT 0x0 ++#define MDIO_PORT_MASK 0xf0000 ++#define MDIO_PORT_SHIFT 0x16 ++#define MDIO_REGAD_MASK 0xffff ++#define MDIO_REGAD_SHIFT 0x0 ++#define MDIO_CMD_MASK 0xfff00000 ++#define MDIO_CMD_SHIFT 0x14 ++#define MDIO_CMD_READ 0x1 ++#define MDIO_CMD_WRITE 0x0 ++#define MDIO_DATA_DONE_MASK 0x80000000 ++#define MDIO_RD_DONE(x) (((x) & MDIO_DATA_DONE_MASK) ? 1 : 0) ++#define MDIO_WT_DONE(x) (((x) & MDIO_DATA_DONE_MASK) ? 0 : 1) ++#define SSC_REGS_ADDR 0x1100 ++#define SET_ADDR_OFFSET 0x1f ++#define SSC_CNTL_OFFSET 0x2 ++#define SSC_CNTL_OVRD_EN_MASK 0x8000 ++#define SSC_CNTL_OVRD_EN_SHIFT 0xf ++#define SSC_CNTL_OVRD_VAL_MASK 0x4000 ++#define SSC_CNTL_OVRD_VAL_SHIFT 0xe ++#define SSC_STATUS_OFFSET 0x1 ++#define SSC_STATUS_SSC_MASK 0x400 ++#define SSC_STATUS_SSC_SHIFT 0xa ++#define SSC_STATUS_PLL_LOCK_MASK 0x800 ++#define SSC_STATUS_PLL_LOCK_SHIFT 0xb ++ ++#define IDX_ADDR(pcie) ((pcie)->reg_offsets[EXT_CFG_INDEX]) ++#define DATA_ADDR(pcie) ((pcie)->reg_offsets[EXT_CFG_DATA]) ++#define PCIE_RGR1_SW_INIT_1(pcie) ((pcie)->reg_offsets[RGR1_SW_INIT_1]) ++ ++enum { ++ RGR1_SW_INIT_1, ++ EXT_CFG_INDEX, ++ EXT_CFG_DATA, ++}; ++ ++enum { ++ RGR1_SW_INIT_1_INIT_MASK, ++ RGR1_SW_INIT_1_INIT_SHIFT, ++ RGR1_SW_INIT_1_PERST_MASK, ++ RGR1_SW_INIT_1_PERST_SHIFT, ++}; ++ ++enum pcie_type { ++ BCM7425, ++ BCM7435, ++ GENERIC, ++ BCM7278, ++ BCM2711, ++}; ++ ++struct brcm_window { ++ dma_addr_t pci_addr; ++ phys_addr_t phys_addr; ++ dma_addr_t size; ++}; ++ ++struct brcm_pcie { ++ struct resource mem; ++ bool ssc; ++ ++ struct device_node *dn; ++ void __iomem *base; ++ ++ int num_out_wins; ++ struct brcm_window out_wins[BRCM_NUM_PCIE_OUT_WINS]; ++ ++ int gen; ++ unsigned int rev; ++ ++ const int *reg_offsets; ++ const int *reg_field_info; ++ u32 max_burst_size; ++ enum pcie_type type; ++}; ++ ++struct pcie_cfg_data { ++ const int *reg_field_info; ++ const int *offsets; ++ const u32 max_burst_size; ++ const enum pcie_type type; ++}; ++ ++static struct brcm_window dma_ranges[1]; ++static int num_dma_ranges; ++ ++static const int pcie_reg_field_info[] = { ++ [RGR1_SW_INIT_1_INIT_MASK] = 0x2, ++ [RGR1_SW_INIT_1_INIT_SHIFT] = 0x1, ++}; ++ ++static const int pcie_offsets[] = { ++ [RGR1_SW_INIT_1] = 0x9210, ++ [EXT_CFG_INDEX] = 0x9000, ++ [EXT_CFG_DATA] = 0x8000, ++}; ++ ++static const struct pcie_cfg_data generic_cfg = { ++ .reg_field_info = pcie_reg_field_info, ++ .offsets = pcie_offsets, ++ .max_burst_size = BURST_SIZE_128, ++ .type = GENERIC, ++}; ++ ++static const struct pcie_cfg_data bcm2711_cfg = { ++ .reg_field_info = pcie_reg_field_info, ++ .offsets = pcie_offsets, ++ .max_burst_size = BURST_SIZE_128, ++ .type = BCM2711, ++}; ++ ++/* These macros extract/insert fields to host controller's register set */ ++#define WR_FLD(base, reg, field, val) \ ++ wr_fld(base + reg, reg##_##field##_MASK, reg##_##field##_SHIFT, val) ++#define WR_FLD_RB(base, reg, field, val) \ ++ wr_fld_rb(base + reg, reg##_##field##_MASK, reg##_##field##_SHIFT, val) ++#define WR_FLD_WITH_OFFSET(base, off, reg, field, val) \ ++ wr_fld(base + reg + off, reg##_##field##_MASK, \ ++ reg##_##field##_SHIFT, val) ++#define EXTRACT_FIELD(val, reg, field) \ ++ ((val & reg##_##field##_MASK) >> reg##_##field##_SHIFT) ++#define INSERT_FIELD(val, reg, field, field_val) \ ++ ((val & ~reg##_##field##_MASK) | \ ++ (reg##_##field##_MASK & (field_val << reg##_##field##_SHIFT))) ++ ++#define msleep(a) udelay((a) * 1000) ++ ++/* ++ * The roundup_pow_of_two() from log2.h invokes ++ * __roundup_pow_of_two(unsigned long), but we really need ++ * such a function to take a native u64 since unsigned long ++ * is 32 bits on some configurations. So we provide this helper ++ * function below. ++ */ ++static u64 roundup_pow_of_two_64(u64 n) ++{ ++ return 1ULL << fls64(n - 1); ++} ++ ++/* ++ * This is to convert the size of the inbound "BAR" region to the ++ * non-linear values of PCIE_X_MISC_RC_BAR[123]_CONFIG_LO.SIZE ++ */ ++int encode_ibar_size(u64 size) ++{ ++ int log2_in = ilog2(size); ++ ++ if (log2_in >= 12 && log2_in <= 15) ++ /* Covers 4KB to 32KB (inclusive) */ ++ return (log2_in - 12) + 0x1c; ++ else if (log2_in >= 16 && log2_in <= 37) ++ /* Covers 64KB to 32GB, (inclusive) */ ++ return log2_in - 15; ++ /* Something is awry so disable */ ++ return 0; ++} ++ ++/* Configuration space read/write support */ ++static int cfg_index(int busnr, int devfn, int reg) ++{ ++ return (PCI_DEV(devfn) << PCIE_SLOT_SHIFT) ++ | (PCI_FUNC(devfn) << PCIE_FUNC_SHIFT) ++ | (busnr << PCIE_BUSNUM_SHIFT) ++ | (reg & ~3); ++} ++ ++/* The controller is capable of serving in both RC and EP roles */ ++static bool brcm_pcie_rc_mode(struct brcm_pcie *pcie) ++{ ++ void __iomem *base = pcie->base; ++ u32 val = readl(base + PCIE_MISC_PCIE_STATUS); ++ ++ return !!EXTRACT_FIELD(val, PCIE_MISC_PCIE_STATUS, PCIE_PORT); ++} ++ ++static bool brcm_pcie_link_up(struct brcm_pcie *pcie) ++{ ++ void __iomem *base = pcie->base; ++ u32 val = readl(base + PCIE_MISC_PCIE_STATUS); ++ u32 dla = EXTRACT_FIELD(val, PCIE_MISC_PCIE_STATUS, PCIE_DL_ACTIVE); ++ u32 plu = EXTRACT_FIELD(val, PCIE_MISC_PCIE_STATUS, PCIE_PHYLINKUP); ++ ++ return (dla && plu) ? true : false; ++} ++ ++static int brcm_pcie_config_address(const struct udevice *udev, pci_dev_t bdf, ++ uint offset, void **paddress) ++{ ++ struct brcm_pcie *pcie = dev_get_priv(udev); ++ unsigned int bus = PCI_BUS(bdf); ++ unsigned int dev = PCI_DEV(bdf); ++ int idx; ++ ++ if (bus > 0 && !brcm_pcie_link_up(pcie)) ++ return -ENODEV; ++ ++ /* ++ * Busses 0 (host PCIe bridge) and 1 (its immediate child) ++ * are limited to a single device each ++ */ ++ if ((bus == (udev->seq + 1)) && dev > 0) ++ return -ENODEV; ++ ++ /* Accesses to the RC go right to the RC registers if PCI device == 0 */ ++ if (bus == udev->seq) { ++ if (PCI_DEV(bdf)) ++ return -ENODEV; ++ ++ *paddress = pcie->base + offset; ++ return 0; ++ } ++ ++ /* For devices, write to the config space index register */ ++ idx = cfg_index(bus, bdf, 0); ++ ++ writel(idx, pcie->base + IDX_ADDR(pcie)); ++ *paddress = pcie->base + DATA_ADDR(pcie) + offset; ++ ++ return 0; ++} ++ ++static int brcm_pcie_read_config(const struct udevice *bus, pci_dev_t bdf, ++ uint offset, ulong *valuep, ++ enum pci_size_t size) ++{ ++ return pci_generic_mmap_read_config(bus, brcm_pcie_config_address, ++ bdf, offset, valuep, size); ++} ++ ++static int brcm_pcie_write_config(struct udevice *bus, pci_dev_t bdf, ++ uint offset, ulong value, ++ enum pci_size_t size) ++{ ++ return pci_generic_mmap_write_config(bus, brcm_pcie_config_address, ++ bdf, offset, value, size); ++} ++ ++static void wr_fld(void __iomem *p, u32 mask, int shift, u32 val) ++{ ++ u32 reg = readl(p); ++ ++ reg = (reg & ~mask) | ((val << shift) & mask); ++ writel(reg, p); ++} ++ ++static void wr_fld_rb(void __iomem *p, u32 mask, int shift, u32 val) ++{ ++ wr_fld(p, mask, shift, val); ++ (void)readl(p); ++} ++ ++static const char *link_speed_to_str(int s) ++{ ++ switch (s) { ++ case 1: ++ return "2.5"; ++ case 2: ++ return "5.0"; ++ case 3: ++ return "8.0"; ++ default: ++ break; ++ } ++ return "???"; ++} ++ ++static inline void brcm_pcie_bridge_sw_init_set(struct brcm_pcie *pcie, ++ unsigned int val) ++{ ++ unsigned int shift = pcie->reg_field_info[RGR1_SW_INIT_1_INIT_SHIFT]; ++ u32 mask = pcie->reg_field_info[RGR1_SW_INIT_1_INIT_MASK]; ++ ++ wr_fld_rb(pcie->base + PCIE_RGR1_SW_INIT_1(pcie), mask, shift, val); ++} ++ ++static inline void brcm_pcie_perst_set(struct brcm_pcie *pcie, ++ unsigned int val) ++{ ++ if (pcie->type != BCM7278) ++ wr_fld_rb(pcie->base + PCIE_RGR1_SW_INIT_1(pcie), ++ PCIE_RGR1_SW_INIT_1_PERST_MASK, ++ PCIE_RGR1_SW_INIT_1_PERST_SHIFT, val); ++ else ++ /* Assert = 0, de-assert = 1 on 7278 */ ++ WR_FLD_RB(pcie->base, PCIE_MISC_PCIE_CTRL, PCIE_PERSTB, !val); ++} ++ ++static u32 mdio_form_pkt(int port, int regad, int cmd) ++{ ++ u32 pkt = 0; ++ ++ pkt |= (port << MDIO_PORT_SHIFT) & MDIO_PORT_MASK; ++ pkt |= (regad << MDIO_REGAD_SHIFT) & MDIO_REGAD_MASK; ++ pkt |= (cmd << MDIO_CMD_SHIFT) & MDIO_CMD_MASK; ++ ++ return pkt; ++} ++ ++/* Negative return value indicates error */ ++static int mdio_read(void __iomem *base, u8 port, u8 regad) ++{ ++ int tries; ++ u32 data; ++ ++ writel(mdio_form_pkt(port, regad, MDIO_CMD_READ), ++ base + PCIE_RC_DL_MDIO_ADDR); ++ readl(base + PCIE_RC_DL_MDIO_ADDR); ++ ++ data = readl(base + PCIE_RC_DL_MDIO_RD_DATA); ++ for (tries = 0; !MDIO_RD_DONE(data) && tries < 10; tries++) { ++ udelay(10); ++ data = readl(base + PCIE_RC_DL_MDIO_RD_DATA); ++ } ++ ++ return MDIO_RD_DONE(data) ++ ? (data & MDIO_DATA_MASK) >> MDIO_DATA_SHIFT ++ : -EIO; ++} ++ ++/* Negative return value indicates error */ ++static int mdio_write(void __iomem *base, u8 port, u8 regad, u16 wrdata) ++{ ++ int tries; ++ u32 data; ++ ++ writel(mdio_form_pkt(port, regad, MDIO_CMD_WRITE), ++ base + PCIE_RC_DL_MDIO_ADDR); ++ readl(base + PCIE_RC_DL_MDIO_ADDR); ++ writel(MDIO_DATA_DONE_MASK | wrdata, ++ base + PCIE_RC_DL_MDIO_WR_DATA); ++ ++ data = readl(base + PCIE_RC_DL_MDIO_WR_DATA); ++ for (tries = 0; !MDIO_WT_DONE(data) && tries < 10; tries++) { ++ udelay(10); ++ data = readl(base + PCIE_RC_DL_MDIO_WR_DATA); ++ } ++ ++ return MDIO_WT_DONE(data) ? 0 : -EIO; ++} ++ ++/* ++ * Configures device for Spread Spectrum Clocking (SSC) mode; negative ++ * return value indicates error. ++ */ ++static int set_ssc(void __iomem *base) ++{ ++ int tmp; ++ u16 wrdata; ++ int pll, ssc; ++ ++ tmp = mdio_write(base, MDIO_PORT0, SET_ADDR_OFFSET, SSC_REGS_ADDR); ++ if (tmp < 0) ++ return tmp; ++ ++ tmp = mdio_read(base, MDIO_PORT0, SSC_CNTL_OFFSET); ++ if (tmp < 0) ++ return tmp; ++ ++ wrdata = INSERT_FIELD(tmp, SSC_CNTL_OVRD, EN, 1); ++ wrdata = INSERT_FIELD(wrdata, SSC_CNTL_OVRD, VAL, 1); ++ tmp = mdio_write(base, MDIO_PORT0, SSC_CNTL_OFFSET, wrdata); ++ if (tmp < 0) ++ return tmp; ++ ++ udelay(1500); ++ tmp = mdio_read(base, MDIO_PORT0, SSC_STATUS_OFFSET); ++ if (tmp < 0) ++ return tmp; ++ ++ ssc = EXTRACT_FIELD(tmp, SSC_STATUS, SSC); ++ pll = EXTRACT_FIELD(tmp, SSC_STATUS, PLL_LOCK); ++ ++ return (ssc && pll) ? 0 : -EIO; ++} ++ ++/* Limits operation to a specific generation (1, 2, or 3) */ ++static void set_gen(void __iomem *base, int gen) ++{ ++ u32 lnkcap = readl(base + BRCM_PCIE_CAP_REGS + PCI_EXP_LNKCAP); ++ u16 lnkctl2 = readw(base + BRCM_PCIE_CAP_REGS + PCI_EXP_LNKCTL2); ++ ++ lnkcap = (lnkcap & ~PCI_EXP_LNKCAP_SLS) | gen; ++ writel(lnkcap, base + BRCM_PCIE_CAP_REGS + PCI_EXP_LNKCAP); ++ ++ lnkctl2 = (lnkctl2 & ~0xf) | gen; ++ writew(lnkctl2, base + BRCM_PCIE_CAP_REGS + PCI_EXP_LNKCTL2); ++} ++ ++static void brcm_pcie_set_outbound_win(struct brcm_pcie *pcie, ++ unsigned int win, phys_addr_t phys_addr, ++ dma_addr_t pcie_addr, dma_addr_t size) ++{ ++ void __iomem *base = pcie->base; ++ phys_addr_t phys_addr_mb, limit_addr_mb; ++ u32 tmp; ++ ++ /* Set the base of the pcie_addr window */ ++ writel(lower_32_bits(pcie_addr) + MMIO_ENDIAN, ++ base + PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LO + (win * 8)); ++ writel(upper_32_bits(pcie_addr), ++ base + PCIE_MISC_CPU_2_PCIE_MEM_WIN0_HI + (win * 8)); ++ ++ phys_addr_mb = phys_addr >> 20; ++ limit_addr_mb = (phys_addr + size - 1) >> 20; ++ ++ /* Write the addr base low register */ ++ WR_FLD_WITH_OFFSET(base, (win * 4), ++ PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT, ++ BASE, phys_addr_mb); ++ /* Write the addr limit low register */ ++ WR_FLD_WITH_OFFSET(base, (win * 4), ++ PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT, ++ LIMIT, limit_addr_mb); ++ ++ if (pcie->type != BCM7435 && pcie->type != BCM7425) { ++ /* Write the cpu addr high register */ ++ tmp = (u32)(phys_addr_mb >> ++ PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT_NUM_MASK_BITS); ++ WR_FLD_WITH_OFFSET(base, (win * 8), ++ PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_HI, ++ BASE, tmp); ++ /* Write the cpu limit high register */ ++ tmp = (u32)(limit_addr_mb >> ++ PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT_NUM_MASK_BITS); ++ WR_FLD_WITH_OFFSET(base, (win * 8), ++ PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LIMIT_HI, ++ LIMIT, tmp); ++ } ++} ++ ++static int brcm_pcie_setup(struct brcm_pcie *pcie) ++{ ++ phys_addr_t scb_size[BRCM_MAX_SCB] = {0}; ++ void __iomem *base = pcie->base; ++ unsigned int scb_size_val; ++ u64 rc_bar2_offset, rc_bar2_size; ++ u64 total_mem_size = 0; ++ int i, j, ret, limit, num_memc; ++ u16 nlw, cls, lnksta; ++ bool ssc_good = false; ++ u32 tmp; ++ ++ /* Reset the bridge */ ++ brcm_pcie_bridge_sw_init_set(pcie, 1); ++ ++ /* ++ * Ensure that the fundamental reset is asserted, except for 7278, ++ * which fails if we do this. ++ */ ++ if (pcie->type != BCM7278) ++ brcm_pcie_perst_set(pcie, 1); ++ ++ udelay(150); ++ ++ /* Take the bridge out of reset */ ++ brcm_pcie_bridge_sw_init_set(pcie, 0); ++ ++ WR_FLD_RB(base, PCIE_MISC_HARD_PCIE_HARD_DEBUG, SERDES_IDDQ, 0); ++ /* Wait for SerDes to be stable */ ++ udelay(150); ++ ++ /* Grab the PCIe hw revision number */ ++ tmp = readl(base + PCIE_MISC_REVISION); ++ pcie->rev = EXTRACT_FIELD(tmp, PCIE_MISC_REVISION, MAJMIN); ++ ++ /* Set SCB_MAX_BURST_SIZE, CFG_READ_UR_MODE, SCB_ACCESS_EN */ ++ tmp = INSERT_FIELD(0, PCIE_MISC_MISC_CTRL, SCB_ACCESS_EN, 1); ++ tmp = INSERT_FIELD(tmp, PCIE_MISC_MISC_CTRL, CFG_READ_UR_MODE, 1); ++ tmp = INSERT_FIELD(tmp, PCIE_MISC_MISC_CTRL, MAX_BURST_SIZE, ++ pcie->max_burst_size); ++ writel(tmp, base + PCIE_MISC_MISC_CTRL); ++ ++ /* ++ * Set up inbound memory view for the EP (called RC_BAR2, not to be ++ * confused with the BARs that are advertised by the EP). ++ * ++ * The PCIe host controller by design must set the inbound viewport ++ * to be a contiguous arrangement of all of the system's memory. ++ * In addition, its size must be a power of two. Further, the MSI ++ * target address must NOT be placed inside this region, as the ++ * decoding logic will consider its address to be inbound memory ++ * traffic. To further complicate matters, the viewport must start ++ * on a pcie-address that is aligned on a multiple of its size. ++ * If a portion of the viewport does not represent system memory ++ * -- e.g. 3GB of memory requires a 4GB viewport -- we can map ++ * the outbound memory in or after 3GB and even though the viewport ++ * will overlap the outbound memory the controller will know to send ++ * outbound memory downstream and everything else upstream. ++ */ ++ ++ if (num_dma_ranges) { ++ /* ++ * Use the base address and size(s) provided in the dma-ranges ++ * property. ++ */ ++ for (i = 0; i < num_dma_ranges; i++) ++ scb_size[i] = roundup_pow_of_two_64(dma_ranges[i].size); ++ ++ num_memc = num_dma_ranges; ++ rc_bar2_offset = dma_ranges[0].pci_addr; ++ } else { ++ return -EINVAL; ++ } ++ ++ for (i = 0; i < num_memc; i++) ++ total_mem_size += scb_size[i]; ++ ++ rc_bar2_size = roundup_pow_of_two_64(total_mem_size); ++ ++ /* Verify the alignment is correct */ ++ if (rc_bar2_offset & (rc_bar2_size - 1)) { ++ printf("PCIe BRCM: inbound window is misaligned\n"); ++ return -EINVAL; ++ } ++ ++ tmp = lower_32_bits(rc_bar2_offset); ++ tmp = INSERT_FIELD(tmp, PCIE_MISC_RC_BAR2_CONFIG_LO, SIZE, ++ encode_ibar_size(rc_bar2_size)); ++ writel(tmp, base + PCIE_MISC_RC_BAR2_CONFIG_LO); ++ writel(upper_32_bits(rc_bar2_offset), ++ base + PCIE_MISC_RC_BAR2_CONFIG_HI); ++ ++ scb_size_val = scb_size[0] ++ ? ilog2(scb_size[0]) - 15 : 0xf; /* 0xf is 1GB */ ++ WR_FLD(base, PCIE_MISC_MISC_CTRL, SCB0_SIZE, scb_size_val); ++ ++ if (num_memc > 1) { ++ scb_size_val = scb_size[1] ++ ? ilog2(scb_size[1]) - 15 : 0xf; /* 0xf is 1GB */ ++ WR_FLD(base, PCIE_MISC_MISC_CTRL, SCB1_SIZE, scb_size_val); ++ } ++ ++ if (num_memc > 2) { ++ scb_size_val = scb_size[2] ++ ? ilog2(scb_size[2]) - 15 : 0xf; /* 0xf is 1GB */ ++ WR_FLD(base, PCIE_MISC_MISC_CTRL, SCB2_SIZE, scb_size_val); ++ } ++ ++ /* Disable the PCIe->GISB memory window (RC_BAR1) */ ++ WR_FLD(base, PCIE_MISC_RC_BAR1_CONFIG_LO, SIZE, 0); ++ ++ /* Disable the PCIe->SCB memory window (RC_BAR3) */ ++ WR_FLD(base, PCIE_MISC_RC_BAR3_CONFIG_LO, SIZE, 0); ++ ++ /* Clear any interrupts we find on boot */ ++ writel(0xffffffff, base + PCIE_INTR2_CPU_BASE + CLR); ++ (void)readl(base + PCIE_INTR2_CPU_BASE + CLR); ++ ++ /* Mask all interrupts since we are not handling any yet */ ++ writel(0xffffffff, base + PCIE_INTR2_CPU_BASE + MASK_SET); ++ (void)readl(base + PCIE_INTR2_CPU_BASE + MASK_SET); ++ ++ if (pcie->gen) ++ set_gen(base, pcie->gen); ++ ++ /* Unassert the fundamental reset */ ++ brcm_pcie_perst_set(pcie, 0); ++ ++ /* Give the RC/EP time to wake up, before trying to configure RC. */ ++ limit = 100; ++ for (i = 1, j = 0; j < limit && !brcm_pcie_link_up(pcie); ++ j += i, i = i * 2) ++ msleep(i + j > limit ? limit - j : i); ++ ++ if (!brcm_pcie_link_up(pcie)) { ++ printf("PCIe BRCM: link down\n"); ++ return -ENODEV; ++ } ++ ++ if (!brcm_pcie_rc_mode(pcie)) { ++ printf("PCIe misconfigured; is in EP mode\n"); ++ return -EINVAL; ++ } ++ ++ for (i = 0; i < pcie->num_out_wins; i++) ++ brcm_pcie_set_outbound_win(pcie, i, pcie->out_wins[i].phys_addr, ++ pcie->out_wins[i].pci_addr, ++ pcie->out_wins[i].size); ++ ++ /* ++ * For config space accesses on the RC, show the right class for ++ * a PCIe-PCIe bridge (the default setting is to be EP mode). ++ */ ++ WR_FLD_RB(base, PCIE_RC_CFG_PRIV1_ID_VAL3, CLASS_CODE, 0x060400); ++ ++ if (pcie->ssc) { ++ ret = set_ssc(base); ++ if (ret == 0) ++ ssc_good = true; ++ else ++ printf("PCIe BRCM: failed attempt to enter ssc mode\n"); ++ } ++ ++ lnksta = readw(base + BRCM_PCIE_CAP_REGS + PCI_EXP_LNKSTA); ++ cls = lnksta & PCI_EXP_LNKSTA_CLS; ++ nlw = (lnksta & PCI_EXP_LNKSTA_NLW) >> PCI_EXP_LNKSTA_NLW_SHIFT; ++ ++ printf("PCIe BRCM: link up, %s Gbps x%u %s\n", link_speed_to_str(cls), ++ nlw, ssc_good ? "(SSC)" : "(!SSC)"); ++ ++ /* PCIe->SCB endian mode for BAR */ ++ /* field ENDIAN_MODE_BAR2 = DATA_ENDIAN */ ++ WR_FLD_RB(base, PCIE_RC_CFG_VENDOR_VENDOR_SPECIFIC_REG1, ++ ENDIAN_MODE_BAR2, DATA_ENDIAN); ++ ++ /* ++ * Refclk from RC should be gated with CLKREQ# input when ASPM L0s,L1 ++ * is enabled => setting the CLKREQ_DEBUG_ENABLE field to 1. ++ */ ++ WR_FLD_RB(base, PCIE_MISC_HARD_PCIE_HARD_DEBUG, CLKREQ_DEBUG_ENABLE, 1); ++ ++ return 0; ++} ++ ++static const struct udevice_id brcm_pcie_ids[] = { ++ { .compatible = "brcm,bcm7445-pcie", .data = (ulong)&generic_cfg }, ++ { .compatible = "brcm,bcm2711-pcie", .data = (ulong)&bcm2711_cfg }, ++ { } ++}; ++ ++static int brcm_pcie_probe(struct udevice *dev) ++{ ++ struct udevice *ctlr = pci_get_controller(dev); ++ struct pci_controller *hose = dev_get_uclass_priv(ctlr); ++ struct brcm_pcie *pcie = dev_get_priv(dev); ++ struct pcie_cfg_data *data = (struct pcie_cfg_data *)dev_get_driver_data(dev); ++ ofnode dn = dev_ofnode(dev); ++ u32 max_link_speed; ++ int i; ++ ++ if (hose->region_count < 2) { ++ pr_err("PCIe BRCM: Missing PCI regions definition"); ++ return -EINVAL; ++ } ++ ++ for (i = 0; i < hose->region_count; i++) { ++ if (hose->regions[i].flags == PCI_REGION_SYS_MEMORY) ++ continue; ++ ++ pcie->out_wins[i].phys_addr = hose->regions[i].phys_start; ++ pcie->out_wins[i].pci_addr = hose->regions[i].bus_start; ++ pcie->out_wins[i].size = hose->regions[i].size; ++ pcie->num_out_wins++; ++ } ++ ++ /* TODO: Parse inbound access mapping from dma-ranges DT property */ ++ num_dma_ranges = 1; ++ for (i = 0; i < hose->region_count; i++) { ++ if (hose->regions[i].flags != PCI_REGION_SYS_MEMORY) ++ continue; ++ ++ dma_ranges[0].pci_addr = hose->regions[i].bus_start; ++ dma_ranges[0].phys_addr = hose->regions[i].phys_start; ++ dma_ranges[0].size = hose->regions[i].size; ++ break; ++ } ++ ++ pcie->reg_offsets = data->offsets; ++ pcie->reg_field_info = data->reg_field_info; ++ pcie->max_burst_size = data->max_burst_size; ++ pcie->type = data->type; ++ ++ if (ofnode_read_u32(dn, "max-link-speed", &max_link_speed) || ++ max_link_speed > 4) ++ pcie->gen = 0; ++ else ++ pcie->gen = max_link_speed; ++ ++ pcie->ssc = ofnode_read_bool(dn, "brcm,enable-ssc"); ++ ++ return brcm_pcie_setup(pcie); ++} ++ ++static int brcm_pcie_ofdata_to_platdata(struct udevice *dev) ++{ ++ struct brcm_pcie *pcie = dev_get_priv(dev); ++ ++ /* Get the controller base address */ ++ pcie->base = dev_read_addr_ptr(dev); ++ if (!pcie->base) ++ return -EINVAL; ++ ++ return 0; ++} ++ ++static const struct dm_pci_ops brcm_pcie_ops = { ++ .read_config = brcm_pcie_read_config, ++ .write_config = brcm_pcie_write_config, ++}; ++ ++U_BOOT_DRIVER(pcie_brcm_base) = { ++ .name = "pcie_brcm", ++ .id = UCLASS_PCI, ++ .ops = &brcm_pcie_ops, ++ .of_match = brcm_pcie_ids, ++ .probe = brcm_pcie_probe, ++ .ofdata_to_platdata = brcm_pcie_ofdata_to_platdata, ++ .priv_auto_alloc_size = sizeof(struct brcm_pcie), ++}; + +From patchwork Tue Apr 21 16:50:59 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sylwester Nawrocki +X-Patchwork-Id: 1274448 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 + header.s=mail20170921 header.b=RBB5T/f+; + dkim-atps=neutral +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4969rP1mTgz9sSJ + for ; Wed, 22 Apr 2020 03:42:45 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 622F381C7C; + Tue, 21 Apr 2020 19:41:20 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.b="RBB5T/f+"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 6ACE281A07; Tue, 21 Apr 2020 18:51:32 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,UPPERCASE_50_75,URIBL_BLOCKED + autolearn=no autolearn_force=no version=3.4.2 +Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com + [210.118.77.11]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 349DF81A18 + for ; Tue, 21 Apr 2020 18:51:27 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=s.nawrocki@samsung.com +Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) + by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id + 20200421165126euoutp01ba71afc4eba05b35dc346ebddbc61e90~H49JqbGbV0959709597euoutp01d + for ; Tue, 21 Apr 2020 16:51:26 +0000 (GMT) +DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com + 20200421165126euoutp01ba71afc4eba05b35dc346ebddbc61e90~H49JqbGbV0959709597euoutp01d +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; + s=mail20170921; t=1587487886; + bh=8f+WvUWDLHHwwlhMHv7Ajbo0xyRT3miVzyvERB5pdSk=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=RBB5T/f+9abZt7lxRvmjd9QryZYRjDraN7ut4dXLhBwPD2eV+kaieGV249a0v7U+3 + tqOn6re8nw14/F7arQUaSDrIpPkgXeCpdB6PobnHkkarORdCeBSzm+uXPDb0+oCD3X + tddbFFXixkL45CFRP0UHTYBPA7shkibzGJy1hnOc= +Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by + eucas1p2.samsung.com (KnoxPortal) with ESMTP id + 20200421165126eucas1p2eee4102e9b89b1ee388217f4081c67f0~H49JVcFSF1251112511eucas1p25; + Tue, 21 Apr 2020 16:51:26 +0000 (GMT) +Received: from eucas1p2.samsung.com ( [182.198.249.207]) by + eusmges2new.samsung.com (EUCPMTA) with SMTP id EB.64.60679.E842F9E5; Tue, 21 + Apr 2020 17:51:26 +0100 (BST) +Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by + eucas1p1.samsung.com (KnoxPortal) with ESMTPA id + 20200421165125eucas1p12d7451082887a52073ba795aa0ee398a~H49I7LR4B1762717627eucas1p1U; + Tue, 21 Apr 2020 16:51:25 +0000 (GMT) +Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by + eusmtrp2.samsung.com (KnoxPortal) with ESMTP id + 20200421165125eusmtrp222bb00f71d4a2ef821d21350fb24e056~H49I6l4i73266732667eusmtrp2f; + Tue, 21 Apr 2020 16:51:25 +0000 (GMT) +X-AuditID: cbfec7f4-0e5ff7000001ed07-23-5e9f248e6317 +Received: from eusmtip1.samsung.com ( [203.254.199.221]) by + eusmgms2.samsung.com (EUCPMTA) with SMTP id BA.3B.07950.D842F9E5; Tue, 21 + Apr 2020 17:51:25 +0100 (BST) +Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by + eusmtip1.samsung.com (KnoxPortal) with ESMTPA id + 20200421165125eusmtip1a3d057804e72a9f3cec2268d56b5f631~H49IZf0be0895708957eusmtip1J; + Tue, 21 Apr 2020 16:51:25 +0000 (GMT) +From: Sylwester Nawrocki +To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com +Cc: agraf@suse.de, sjg@chrmium.org, jh80.chung@samsung.com, + m.szyprowski@samsung.com, b.zolnierkie@samsung.com +Subject: [RFC PATCH 9/9] config: Enable support for the XHCI controller on + RPI4 board +Date: Tue, 21 Apr 2020 18:50:59 +0200 +Message-Id: <20200421165059.19394-10-s.nawrocki@samsung.com> +X-Mailer: git-send-email 2.17.1 +In-Reply-To: <20200421165059.19394-1-s.nawrocki@samsung.com> +X-Brightmail-Tracker: H4sIAAAAAAAAA0WSbUhTcRTG+e++zppcp+AflYxhH9LUzIhbiVkG3Q998ENkRWpTb1PTKfc6 + zYQwheVbU7OcTFJLaWWEM81Xwlo1zdcvvoEbthzhLAObIFq63K7Vt995zvNwOIdDItIqzI9M + V+aynFKeKcM90G7TxmSoJqgp8fBYCUoPT20DuqO+HaMfVibRc5tqjH75wULQ39V3AN1ca8Po + 0mknoFfelBExYmZhpAhjGnXDKNOnsxDMuLkXMJquNsC0d02jTOdoYRxxxSMqlc1Mz2O58Ohr + HmnFzRt4TuX+m7XqQawIfPYvByQJqaPQ8DS2HHiQUuoZgMsPHCKhWAOwxdqJCIUDQJNmCZQD + sTvR8mlgt6EHsNioBf8iG48eYy4XTkXAex817oQPFQdnNurcjFA5sG7WhrvYm4qHFYb3bkap + A7DB8U7kYgkVBecNHbgwLRC+MLxFXCze0S3r9ahrGKQqCLhp78EE01lY12ncDXjD5aEuQuAA + 6OxrEgmBEgArB+YJoagGcGGoeXehk9A8sYm7zoFQB2F7f7ggn4Z6rRMTruQJ51a8hAU84f1u + LSLIEliqlgruIPirTSsS2A9W2JyowAy011h3r1UF4OvnZqIaBOr+D2sGoA34sio+S8HyR5Rs + fhgvz+JVSkVYSnbWK7DzJqPbQ2u9oP93shFQJJDtlcxNNiZKMXkeX5BlBJBEZD4Sg3VHkqTK + C26xXHYSp8pkeSPwJ1GZryTyiT1BSinkuewNls1hub9dESn2KwLJg1+3GcJnoqnQntS+dGor + g3FOHjdfGtBf3qOc0h3Sr0dor2/GpFrGwsdmW+P3rVGj+DHrlk2f34qDkC8hIzWmqbvG1YD+ + tBlrRoiXmps5Lynzjmsd+ZnClZ5zLJ4oi/3mQ6Y3jJ9R9Ny2R5pCfySsXo1WiS8uhnHBjYkd + F2QonyaPCEY4Xv4HlRBgdCIDAAA= +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrPLMWRmVeSWpSXmKPExsVy+t/xu7q9KvPjDBrnaFmcuPKP0WLjjPWs + FlN74i1u/GpjtVh75C67xZu2RkaLBZOfsFp0XP3PaPF2bye7A6fH/VMNrB7zZp1g8dg56y67 + x9k7Oxg9+rasYvRYv+Uqi8fm09UB7FF6NkX5pSWpChn5xSW2StGGFkZ6hpYWekYmlnqGxuax + VkamSvp2NimpOZllqUX6dgl6GU0LfrIV9ChUTG7bz9rA+EC6i5GTQ0LARGLxyd3MXYxcHEIC + SxklPvy/yt7FyAGUkJKY36IEUSMs8edaFxtEzSdGibXPXzGDJNgEDCV6j/YxgtgiAiESL45e + YQKxmQXKJNa0vgaLCwuEStyd0gNmswioSsz+fBCshlfARuL2ho1sEAvkJVZvOAA2kxMofvf7 + DBYQW0jAWqLh0hKWCYx8CxgZVjGKpJYW56bnFhvpFSfmFpfmpesl5+duYgQG9rZjP7fsYOx6 + F3yIUYCDUYmH98b5eXFCrIllxZW5hxglOJiVRHg3PAQK8aYkVlalFuXHF5XmpBYfYjQFOmoi + s5Rocj4w6vJK4g1NDc0tLA3Njc2NzSyUxHk7BA7GCAmkJ5akZqemFqQWwfQxcXBKNTBWTnjA + 9rfi5OHFK1WDPefc1Lu4NHa3k0wcX1F135VL2qWb2AoizLZIZYrNyrjw0f+d94ZWruRVorea + j/wSO5bju/fInhW3XUo8DDUe22meFxPewrSBefPkV4tqufjmZfw2215cNE+8PDvoi1vXG/vu + HJazefOrPDX48nXr2GPVpXas8L377pESS3FGoqEWc1FxIgDja1QoggIAAA== +X-CMS-MailID: 20200421165125eucas1p12d7451082887a52073ba795aa0ee398a +X-Msg-Generator: CA +X-RootMTR: 20200421165125eucas1p12d7451082887a52073ba795aa0ee398a +X-EPHeader: CA +CMS-TYPE: 201P +X-CMS-RootMailID: 20200421165125eucas1p12d7451082887a52073ba795aa0ee398a +References: <20200421165059.19394-1-s.nawrocki@samsung.com> + +X-Mailman-Approved-At: Tue, 21 Apr 2020 19:40:20 +0200 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +From: Marek Szyprowski + +This requires enabling BRCMSTB PCIe and XHCI_PCI drivers as well as PCI +and USB commands. To get it working one has to call the following commands: +"pci enum; usb start;", thus such commands have been added to the default +"preboot" environment variable. One has to update his environment if it is +already configured to get this feature working out of the box. + +Signed-off-by: Marek Szyprowski +--- + configs/rpi_4_32b_defconfig | 9 +++++++++ + configs/rpi_4_defconfig | 10 ++++++++++ + configs/rpi_arm64_defconfig | 9 ++++++++- + 3 files changed, 27 insertions(+), 1 deletion(-) + +diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig +index 72cda5d..0dd763f 100644 +--- a/configs/rpi_4_32b_defconfig ++++ b/configs/rpi_4_32b_defconfig +@@ -8,6 +8,8 @@ CONFIG_NR_DRAM_BANKS=2 + CONFIG_DISTRO_DEFAULTS=y + CONFIG_OF_BOARD_SETUP=y + # CONFIG_ARCH_FIXUP_FDT_MEMORY is not set ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start;" + CONFIG_MISC_INIT_R=y + # CONFIG_DISPLAY_CPUINFO is not set + # CONFIG_DISPLAY_BOARDINFO is not set +@@ -15,6 +17,8 @@ CONFIG_SYS_PROMPT="U-Boot> " + CONFIG_CMD_DFU=y + CONFIG_CMD_GPIO=y + CONFIG_CMD_MMC=y ++CONFIG_CMD_PCI=y ++CONFIG_CMD_USB=y + CONFIG_CMD_FS_UUID=y + CONFIG_OF_BOARD=y + CONFIG_ENV_FAT_INTERFACE="mmc" +@@ -28,12 +32,17 @@ CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_BCM2835=y + CONFIG_DM_ETH=y + CONFIG_BCMGENET=y ++CONFIG_PCI=y ++CONFIG_DM_PCI=y ++CONFIG_PCI_BRCMSTB=y + CONFIG_PINCTRL=y + # CONFIG_PINCTRL_GENERIC is not set + # CONFIG_REQUIRE_SERIAL_CONSOLE is not set + CONFIG_USB=y + CONFIG_DM_USB=y + CONFIG_DM_USB_GADGET=y ++CONFIG_USB_XHCI_HCD=y ++CONFIG_USB_XHCI_PCI=y + CONFIG_USB_GADGET=y + CONFIG_USB_GADGET_MANUFACTURER="FSL" + CONFIG_USB_GADGET_VENDOR_NUM=0x0525 +diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig +index 6d148da..f80e5da 100644 +--- a/configs/rpi_4_defconfig ++++ b/configs/rpi_4_defconfig +@@ -8,6 +8,8 @@ CONFIG_NR_DRAM_BANKS=2 + CONFIG_DISTRO_DEFAULTS=y + CONFIG_OF_BOARD_SETUP=y + # CONFIG_ARCH_FIXUP_FDT_MEMORY is not set ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start;" + CONFIG_MISC_INIT_R=y + # CONFIG_DISPLAY_CPUINFO is not set + # CONFIG_DISPLAY_BOARDINFO is not set +@@ -15,6 +17,8 @@ CONFIG_SYS_PROMPT="U-Boot> " + CONFIG_CMD_DFU=y + CONFIG_CMD_GPIO=y + CONFIG_CMD_MMC=y ++CONFIG_CMD_PCI=y ++CONFIG_CMD_USB=y + CONFIG_CMD_FS_UUID=y + CONFIG_OF_BOARD=y + CONFIG_ENV_FAT_INTERFACE="mmc" +@@ -28,12 +32,18 @@ CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_BCM2835=y + CONFIG_DM_ETH=y + CONFIG_BCMGENET=y ++CONFIG_PCI=y ++CONFIG_DM_PCI=y ++CONFIG_PCI_BRCMSTB=y + CONFIG_PINCTRL=y + # CONFIG_PINCTRL_GENERIC is not set + # CONFIG_REQUIRE_SERIAL_CONSOLE is not set + CONFIG_USB=y + CONFIG_DM_USB=y + CONFIG_DM_USB_GADGET=y ++CONFIG_USB_XHCI_HCD=y ++CONFIG_XHCI_64BIT_DWORD_ACCESS_ONLY=y ++CONFIG_USB_XHCI_PCI=y + CONFIG_USB_GADGET=y + CONFIG_USB_GADGET_MANUFACTURER="FSL" + CONFIG_USB_GADGET_VENDOR_NUM=0x0525 +diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig +index fea86be..926dfc3 100644 +--- a/configs/rpi_arm64_defconfig ++++ b/configs/rpi_arm64_defconfig +@@ -7,13 +7,14 @@ CONFIG_NR_DRAM_BANKS=2 + CONFIG_DISTRO_DEFAULTS=y + CONFIG_OF_BOARD_SETUP=y + CONFIG_USE_PREBOOT=y +-CONFIG_PREBOOT="usb start" ++CONFIG_PREBOOT="pci enum; usb start;" + CONFIG_MISC_INIT_R=y + # CONFIG_DISPLAY_CPUINFO is not set + # CONFIG_DISPLAY_BOARDINFO is not set + CONFIG_SYS_PROMPT="U-Boot> " + CONFIG_CMD_GPIO=y + CONFIG_CMD_MMC=y ++CONFIG_CMD_PCI=y + CONFIG_CMD_USB=y + CONFIG_CMD_FS_UUID=y + CONFIG_OF_BOARD=y +@@ -26,11 +27,17 @@ CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_BCM2835=y + CONFIG_DM_ETH=y + CONFIG_BCMGENET=y ++CONFIG_PCI=y ++CONFIG_DM_PCI=y ++CONFIG_PCI_BRCMSTB=y + CONFIG_PINCTRL=y + # CONFIG_PINCTRL_GENERIC is not set + # CONFIG_REQUIRE_SERIAL_CONSOLE is not set + CONFIG_USB=y + CONFIG_DM_USB=y ++CONFIG_USB_XHCI_HCD=y ++CONFIG_XHCI_64BIT_DWORD_ACCESS_ONLY=y ++CONFIG_USB_XHCI_PCI=y + CONFIG_USB_DWC2=y + CONFIG_USB_KEYBOARD=y + CONFIG_USB_HOST_ETHER=y +From 41e5d853779e91ea193ea0251bae9328083e2374 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Tue, 21 Apr 2020 20:18:31 +0100 +Subject: [PATCH] rpi4: add usb keyboard/storage + +Signed-off-by: Peter Robinson +--- + configs/rpi_4_32b_defconfig | 2 ++ + configs/rpi_4_defconfig | 2 ++ + 2 files changed, 4 insertions(+) + +diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig +index 0dd763f06f..2e137414f7 100644 +--- a/configs/rpi_4_32b_defconfig ++++ b/configs/rpi_4_32b_defconfig +@@ -49,6 +49,8 @@ CONFIG_USB_GADGET_VENDOR_NUM=0x0525 + CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5 + CONFIG_USB_GADGET_DWC2_OTG=y + CONFIG_USB_GADGET_DOWNLOAD=y ++CONFIG_USB_KEYBOARD=y ++CONFIG_USB_STORAGE=y + CONFIG_DM_VIDEO=y + # CONFIG_VIDEO_BPP8 is not set + # CONFIG_VIDEO_BPP16 is not set +diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig +index f80e5dac3e..bdefbd2a45 100644 +--- a/configs/rpi_4_defconfig ++++ b/configs/rpi_4_defconfig +@@ -50,6 +50,8 @@ CONFIG_USB_GADGET_VENDOR_NUM=0x0525 + CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5 + CONFIG_USB_GADGET_DWC2_OTG=y + CONFIG_USB_GADGET_DOWNLOAD=y ++CONFIG_USB_KEYBOARD=y ++CONFIG_USB_STORAGE=y + CONFIG_DM_VIDEO=y + # CONFIG_VIDEO_BPP8 is not set + # CONFIG_VIDEO_BPP16 is not set +-- +2.26.1 + diff --git a/uboot-tools.spec b/uboot-tools.spec index 71db9e9..52d19f2 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -2,7 +2,7 @@ Name: uboot-tools Version: 2020.04 -Release: 3%{?candidate:.%{candidate}}%{?dist} +Release: 4%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -39,6 +39,8 @@ Patch16: initial-support-for-the-Pinebook-Pro-laptop-from.patch Patch17: rockpro64-limit-speed-on-mSD-slot.patch # AllWinner improvements Patch18: AllWinner-Pine64-bits.patch +# RPi4 +Patch19: USB-host-support-for-Raspberry-Pi-4-board.patch BuildRequires: bc BuildRequires: dtc @@ -252,6 +254,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Tue Apr 21 2020 Peter Robinson - 2020.04-4 +- Initial support for USB on Rasperry Pi 4 + * Tue Apr 21 2020 Peter Robinson - 2020.04-3 - Ship u-boot-rockchip.bin for SPI flash From e46467332f26ff81ef10f5d8080cfb5651cecf5a Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 29 Apr 2020 23:07:34 +0100 Subject: [PATCH 002/271] 2020.07 RC1 --- Misc-fixes-for-Tegra.patch | 120 --- ...ader-enable-RNG-if-DM_RNG-is-enabled.patch | 31 - ...ort-for-the-Pinebook-Pro-laptop-from.patch | 189 ---- sources | 2 +- uboot-tools.spec | 29 +- ...rsion-detection-for-mx6q-mx6dl-revD1.patch | 825 ------------------ 6 files changed, 15 insertions(+), 1181 deletions(-) delete mode 100644 Misc-fixes-for-Tegra.patch delete mode 100644 efi_loader-enable-RNG-if-DM_RNG-is-enabled.patch delete mode 100644 wandboard-Fix-version-detection-for-mx6q-mx6dl-revD1.patch diff --git a/Misc-fixes-for-Tegra.patch b/Misc-fixes-for-Tegra.patch deleted file mode 100644 index 2c3223d..0000000 --- a/Misc-fixes-for-Tegra.patch +++ /dev/null @@ -1,120 +0,0 @@ -From patchwork Thu Mar 26 22:20:44 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Tom Warren -X-Patchwork-Id: 1262378 -X-Patchwork-Delegate: sjg@chromium.org -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) - smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; - helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; - receiver=) -Authentication-Results: ozlabs.org; - dmarc=fail (p=none dis=none) header.from=gmail.com -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 RSA-PSS (4096 bits) - server-digest SHA256) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 48pKFx5Ckxz9sPR - for ; - Fri, 27 Mar 2020 09:21:25 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id D8D4281885; - Thu, 26 Mar 2020 23:21:03 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=fail (p=none dis=none) header.from=gmail.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 3F8FD8185A; Thu, 26 Mar 2020 23:20:56 +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=0.0 required=5.0 tests=BAYES_00, - DKIM_ADSP_CUSTOM_MED, - FORGED_GMAIL_RCVD,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED,SPF_HELO_NONE, - URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.2 -Received: from hqnvemgate25.nvidia.com (hqnvemgate25.nvidia.com - [216.228.121.64]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 - bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 40F8C8183F - for ; Thu, 26 Mar 2020 23:20:51 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=fail (p=none dis=none) header.from=gmail.com -Authentication-Results: phobos.denx.de; - spf=fail smtp.mailfrom=tomcwarren3959@gmail.com -Received: from hqpgpgate102.nvidia.com (Not Verified[216.228.121.13]) by - hqnvemgate25.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) - id ; Thu, 26 Mar 2020 15:20:03 -0700 -Received: from hqmail.nvidia.com ([172.20.161.6]) - by hqpgpgate102.nvidia.com (PGP Universal service); - Thu, 26 Mar 2020 15:20:49 -0700 -X-PGP-Universal: processed; - by hqpgpgate102.nvidia.com on Thu, 26 Mar 2020 15:20:49 -0700 -Received: from HQMAIL101.nvidia.com (172.20.187.10) by HQMAIL111.nvidia.com - (172.20.187.18) with Microsoft SMTP Server (TLS) id 15.0.1473.3; - Thu, 26 Mar 2020 22:20:49 +0000 -Received: from rnnvemgw01.nvidia.com (10.128.109.123) by HQMAIL101.nvidia.com - (172.20.187.10) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via - Frontend Transport; Thu, 26 Mar 2020 22:20:49 +0000 -Received: from tom-lt2.nvidia.com (Not Verified[10.2.63.13]) by - rnnvemgw01.nvidia.com with Trustwave SEG (v7, 5, 8, 10121) - id ; Thu, 26 Mar 2020 15:20:48 -0700 -From: -To: -CC: , , , - , -Subject: [PATCH 2/3] fdt: Fix 'system' command -Date: Thu, 26 Mar 2020 15:20:44 -0700 -Message-ID: <1585261245-1740-3-git-send-email-tomcwarren3959@gmail.com> -X-Mailer: git-send-email 1.8.2.1.610.g562af5b -In-Reply-To: <1585261245-1740-1-git-send-email-tomcwarren3959@gmail.com> -References: <1585261245-1740-1-git-send-email-tomcwarren3959@gmail.com> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -From: Tom Warren - -'fdt systemsetup' wasn't working, due to the fact that the 'set' command -was being parsed in do_fdt() by only testing for the leading 's' instead -of "se", which kept the "sys" test further down from executing. Changed -to test for "se" instead, now 'fdt systemsetup' works (to test the -ft_system_setup proc w/o having to boot a kernel). - -Signed-off-by: Tom Warren ---- - cmd/fdt.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/cmd/fdt.c b/cmd/fdt.c -index 25a6ed4..36cc726 100644 ---- a/cmd/fdt.c -+++ b/cmd/fdt.c -@@ -286,7 +286,7 @@ static int do_fdt(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) - /* - * Set the value of a property in the working_fdt. - */ -- } else if (argv[1][0] == 's') { -+ } else if (strncmp(argv[1], "se", 2) == 0) { - char *pathp; /* path */ - char *prop; /* property */ - int nodeoffset; /* node offset from libfdt */ - diff --git a/efi_loader-enable-RNG-if-DM_RNG-is-enabled.patch b/efi_loader-enable-RNG-if-DM_RNG-is-enabled.patch deleted file mode 100644 index bd70605..0000000 --- a/efi_loader-enable-RNG-if-DM_RNG-is-enabled.patch +++ /dev/null @@ -1,31 +0,0 @@ -From af59a07dad603740d0aaa103cd02b97e4a3267af Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Wed, 1 Apr 2020 11:11:12 +0100 -Subject: [PATCH] efi_loader: enable RNG if DM_RNG is enabled - -Enable EFI_RNG_PROTOCOL by default if DM_RNG is set. - -Signed-off-by: Peter Robinson ---- - -I think it makes sense to enable EFI_RNG_PROTOCOL by default if a config -has enabled both DM_RNG and UEFI. - - lib/efi_loader/Kconfig | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig -index 9890144d41..b9a770281e 100644 ---- a/lib/efi_loader/Kconfig -+++ b/lib/efi_loader/Kconfig -@@ -125,6 +125,7 @@ config EFI_GRUB_ARM32_WORKAROUND - - config EFI_RNG_PROTOCOL - bool "EFI_RNG_PROTOCOL support" -+ default y if DM_RNG - depends on DM_RNG - help - Provide a EFI_RNG_PROTOCOL implementation using the hardware random --- -2.26.0 - diff --git a/initial-support-for-the-Pinebook-Pro-laptop-from.patch b/initial-support-for-the-Pinebook-Pro-laptop-from.patch index 8d1473b..defa2f6 100644 --- a/initial-support-for-the-Pinebook-Pro-laptop-from.patch +++ b/initial-support-for-the-Pinebook-Pro-laptop-from.patch @@ -1,31 +1,3 @@ -From cc06e37c2b69b7a1263dabeb39aafc1cf98560d8 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Sun, 19 Jan 2020 03:13:02 +0000 -Subject: [PATCH 1/5] video: simple_panel: add boe,nv140fhmn49 display - -add "boe,nv140fhmn49" display to compatible node. - -Signed-off-by: Peter Robinson -Cc: Anatolij Gustschin ---- - drivers/video/simple_panel.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/drivers/video/simple_panel.c b/drivers/video/simple_panel.c -index c3c0e84732..5722811117 100644 ---- a/drivers/video/simple_panel.c -+++ b/drivers/video/simple_panel.c -@@ -105,6 +105,7 @@ static const struct udevice_id simple_panel_ids[] = { - { .compatible = "auo,b133xtn01" }, - { .compatible = "auo,b116xw03" }, - { .compatible = "auo,b133htn01" }, -+ { .compatible = "boe,nv140fhmn49" }, - { .compatible = "lg,lb070wv8" }, - { } - }; --- -2.26.1 - From a3e23dca57bff1043bd6c746458dae2dd446948e Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sun, 19 Apr 2020 10:31:53 +0100 @@ -62,120 +34,6 @@ index 0000000000..8962df79e7 -- 2.26.1 -From 6c657b48a13be9b98fea18cd5a72b0d6f547a9d0 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Sun, 19 Apr 2020 10:32:21 +0100 -Subject: [PATCH 3/5] dt-bindings: leds: adopt Linux leds common binding - constants - -Sync the common leds bindings from linux 5.7-rc1. - -Signed-off-by: Peter Robinson ---- - include/dt-bindings/leds/common.h | 91 +++++++++++++++++++++++++++++++ - 1 file changed, 91 insertions(+) - create mode 100644 include/dt-bindings/leds/common.h - -diff --git a/include/dt-bindings/leds/common.h b/include/dt-bindings/leds/common.h -new file mode 100644 -index 0000000000..0ce7dfc00d ---- /dev/null -+++ b/include/dt-bindings/leds/common.h -@@ -0,0 +1,91 @@ -+/* SPDX-License-Identifier: GPL-2.0 */ -+/* -+ * This header provides macros for the common LEDs device tree bindings. -+ * -+ * Copyright (C) 2015, Samsung Electronics Co., Ltd. -+ * Author: Jacek Anaszewski -+ * -+ * Copyright (C) 2019 Jacek Anaszewski -+ * Copyright (C) 2020 Pavel Machek -+ */ -+ -+#ifndef __DT_BINDINGS_LEDS_H -+#define __DT_BINDINGS_LEDS_H -+ -+/* External trigger type */ -+#define LEDS_TRIG_TYPE_EDGE 0 -+#define LEDS_TRIG_TYPE_LEVEL 1 -+ -+/* Boost modes */ -+#define LEDS_BOOST_OFF 0 -+#define LEDS_BOOST_ADAPTIVE 1 -+#define LEDS_BOOST_FIXED 2 -+ -+/* Standard LED colors */ -+#define LED_COLOR_ID_WHITE 0 -+#define LED_COLOR_ID_RED 1 -+#define LED_COLOR_ID_GREEN 2 -+#define LED_COLOR_ID_BLUE 3 -+#define LED_COLOR_ID_AMBER 4 -+#define LED_COLOR_ID_VIOLET 5 -+#define LED_COLOR_ID_YELLOW 6 -+#define LED_COLOR_ID_IR 7 -+#define LED_COLOR_ID_MAX 8 -+ -+/* Standard LED functions */ -+/* Keyboard LEDs, usually it would be input4::capslock etc. */ -+/* Obsolete equivalent: "shift-key-light" */ -+#define LED_FUNCTION_CAPSLOCK "capslock" -+#define LED_FUNCTION_SCROLLLOCK "scrolllock" -+#define LED_FUNCTION_NUMLOCK "numlock" -+/* Obsolete equivalents: "tpacpi::thinklight" (IBM/Lenovo Thinkpads), -+ "lp5523:kb{1,2,3,4,5,6}" (Nokia N900) */ -+#define LED_FUNCTION_KBD_BACKLIGHT "kbd_backlight" -+ -+/* System LEDs, usually found on system body. -+ platform::mute (etc) is sometimes seen, :mute would be better */ -+#define LED_FUNCTION_POWER "power" -+#define LED_FUNCTION_DISK "disk" -+ -+/* Obsolete: "platform:*:charging" (allwinner sun50i) */ -+#define LED_FUNCTION_CHARGING "charging" -+/* Used RGB notification LEDs common on phones. -+ Obsolete equivalents: "status-led:{red,green,blue}" (Motorola Droid 4), -+ "lp5523:{r,g,b}" (Nokia N900) */ -+#define LED_FUNCTION_STATUS "status" -+ -+#define LED_FUNCTION_MICMUTE "micmute" -+#define LED_FUNCTION_MUTE "mute" -+ -+/* Miscelleaus functions. Use functions above if you can. */ -+#define LED_FUNCTION_ACTIVITY "activity" -+#define LED_FUNCTION_ALARM "alarm" -+#define LED_FUNCTION_BACKLIGHT "backlight" -+#define LED_FUNCTION_BLUETOOTH "bluetooth" -+#define LED_FUNCTION_BOOT "boot" -+#define LED_FUNCTION_CPU "cpu" -+#define LED_FUNCTION_DEBUG "debug" -+#define LED_FUNCTION_DISK_ACTIVITY "disk-activity" -+#define LED_FUNCTION_DISK_ERR "disk-err" -+#define LED_FUNCTION_DISK_READ "disk-read" -+#define LED_FUNCTION_DISK_WRITE "disk-write" -+#define LED_FUNCTION_FAULT "fault" -+#define LED_FUNCTION_FLASH "flash" -+#define LED_FUNCTION_HEARTBEAT "heartbeat" -+#define LED_FUNCTION_INDICATOR "indicator" -+#define LED_FUNCTION_LAN "lan" -+#define LED_FUNCTION_MAIL "mail" -+#define LED_FUNCTION_MTD "mtd" -+#define LED_FUNCTION_PANIC "panic" -+#define LED_FUNCTION_PROGRAMMING "programming" -+#define LED_FUNCTION_RX "rx" -+#define LED_FUNCTION_SD "sd" -+#define LED_FUNCTION_STANDBY "standby" -+#define LED_FUNCTION_TORCH "torch" -+#define LED_FUNCTION_TX "tx" -+#define LED_FUNCTION_USB "usb" -+#define LED_FUNCTION_WAN "wan" -+#define LED_FUNCTION_WLAN "wlan" -+#define LED_FUNCTION_WPS "wps" -+ -+#endif /* __DT_BINDINGS_LEDS_H */ --- -2.26.1 - From 27f56eec1fa5baa4fc82ebb356a50826bb9f5643 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sun, 19 Apr 2020 13:28:51 +0100 @@ -1713,50 +1571,3 @@ index 0e9f0ec250..c15c17a1b0 100644 CONFIG_USB=y -- 2.26.1 - -From 7db304da3ae9480f49febc5968e4d02c171d7080 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Sun, 19 Apr 2020 13:13:37 +0100 -Subject: [PATCH 08/10] drivers: video: rockchip: fix building eDP and LVDS - drivers - -The rk_edp.c and rk_lvds.c files reference rk_setreg which is declared in -hardware.h so include it so the drivers build. Adjust rk_lvds.c so -includes are in alphabetical order while updating. - -Signed-off-by: Peter Robinson ---- - drivers/video/rockchip/rk_edp.c | 1 + - drivers/video/rockchip/rk_lvds.c | 3 ++- - 2 files changed, 3 insertions(+), 1 deletion(-) - -diff --git a/drivers/video/rockchip/rk_edp.c b/drivers/video/rockchip/rk_edp.c -index 8703df0ec0..cf84b886e7 100644 ---- a/drivers/video/rockchip/rk_edp.c -+++ b/drivers/video/rockchip/rk_edp.c -@@ -18,6 +18,7 @@ - #include - #include - #include -+#include - #include - - #define MAX_CR_LOOP 5 -diff --git a/drivers/video/rockchip/rk_lvds.c b/drivers/video/rockchip/rk_lvds.c -index cf5c0439b1..79e24baf53 100644 ---- a/drivers/video/rockchip/rk_lvds.c -+++ b/drivers/video/rockchip/rk_lvds.c -@@ -13,8 +13,9 @@ - #include - #include - #include --#include - #include -+#include -+#include - #include - #include - --- -2.26.1 - diff --git a/sources b/sources index bd41109..875b362 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2020.04.tar.bz2) = e04fe54883149123730605b084324ac0d1d72ce6913467bbe587a5a2675bcf7bb393405d9a446dc0c64ba42abc1e862ae5a132e9e51aa7390e2e9fce045af8d8 +SHA512 (u-boot-2020.07-rc1.tar.bz2) = 345b451652ca8bf539f6629ce618113d66ff6690a1f9ccf5a5a4638e6f30c0302fe4af365b5751fa229b09dd354de1db1480c869f511384855d32f692a95acf7 diff --git a/uboot-tools.spec b/uboot-tools.spec index 52d19f2..044a7c4 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -#global candidate rc1 +%global candidate rc1 Name: uboot-tools -Version: 2020.04 -Release: 4%{?candidate:.%{candidate}}%{?dist} +Version: 2020.07 +Release: 0.1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -24,23 +24,19 @@ Patch2: uefi-use-Fedora-specific-path-name.patch Patch4: usb-kbd-fixes.patch Patch5: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch Patch6: dragonboard-fixes.patch -Patch7: efi_loader-enable-RNG-if-DM_RNG-is-enabled.patch # Tegra improvements -Patch10: Misc-fixes-for-Tegra.patch -Patch11: arm-tegra-define-fdtfile-option-for-distro-boot.patch -Patch12: arm-add-BOOTENV_EFI_SET_FDTFILE_FALLBACK-for-tegra186-be.patch -# Wandboard fixes -Patch13: wandboard-Fix-version-detection-for-mx6q-mx6dl-revD1.patch +Patch10: arm-tegra-define-fdtfile-option-for-distro-boot.patch +Patch11: arm-add-BOOTENV_EFI_SET_FDTFILE_FALLBACK-for-tegra186-be.patch # Rockchips improvements -Patch14: arm-dts-rockchip-rk3399-add-and-enable-rng-node.patch -Patch15: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch -Patch16: initial-support-for-the-Pinebook-Pro-laptop-from.patch -Patch17: rockpro64-limit-speed-on-mSD-slot.patch +Patch12: arm-dts-rockchip-rk3399-add-and-enable-rng-node.patch +Patch13: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch +Patch14: initial-support-for-the-Pinebook-Pro-laptop-from.patch +Patch15: rockpro64-limit-speed-on-mSD-slot.patch # AllWinner improvements -Patch18: AllWinner-Pine64-bits.patch +Patch16: AllWinner-Pine64-bits.patch # RPi4 -Patch19: USB-host-support-for-Raspberry-Pi-4-board.patch +Patch17: USB-host-support-for-Raspberry-Pi-4-board.patch BuildRequires: bc BuildRequires: dtc @@ -254,6 +250,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Wed Apr 29 2020 Peter Robinson - 2020.07-0.1.rc1 +- 2020.07 RC1 + * Tue Apr 21 2020 Peter Robinson - 2020.04-4 - Initial support for USB on Rasperry Pi 4 diff --git a/wandboard-Fix-version-detection-for-mx6q-mx6dl-revD1.patch b/wandboard-Fix-version-detection-for-mx6q-mx6dl-revD1.patch deleted file mode 100644 index 06cbf88..0000000 --- a/wandboard-Fix-version-detection-for-mx6q-mx6dl-revD1.patch +++ /dev/null @@ -1,825 +0,0 @@ -From patchwork Fri Apr 17 12:27:09 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Fabio Estevam -X-Patchwork-Id: 1272209 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 - header.s=20161025 header.b=EAIj/FG0; dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 493b7n0mJKz9sR4 - for ; Fri, 17 Apr 2020 22:32:04 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 639D181C7F; - Fri, 17 Apr 2020 14:31:55 +0200 (CEST) -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="EAIj/FG0"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 2EE0081C82; Fri, 17 Apr 2020 14:31:05 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,SPF_HELO_NONE,URIBL_BLOCKED - autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-qv1-xf44.google.com (mail-qv1-xf44.google.com - [IPv6:2607:f8b0:4864:20::f44]) - (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 8CFAA81C5E - for ; Fri, 17 Apr 2020 14:26:40 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=festevam@gmail.com -Received: by mail-qv1-xf44.google.com with SMTP id p13so735488qvt.12 - for ; Fri, 17 Apr 2020 05:26:40 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; - h=from:to:cc:subject:date:message-id; - bh=+UNc8xSG4dR5pzZrug24r0eJIzJ1UzI7Zx0RxPEtkrw=; - b=EAIj/FG0uOOOplW/rM1+gBAHkePE2S4RbHIIn0SVgmk+RAC85WMZ8aikf/wQo+59oL - /7gghroOYpKSiFh1MSUvRO0cf1pUDONW+x2/HURglkF6gWiSWIEOVvDfn+6ilDbvVSEn - rIFt1ZbYkWbOTI9mWdS/eZQjwtXIF7rcn/LcHFd8pVZh9O9ROK2HMQWcXuXKXZDGx4bx - I2+Hr/Bwx1uUH/zl49lJElc5k3xntapExMj5+6kcaH2Wxf+N7AOEgzMRnpywpMJJFmME - GymiR3BzmXfsxR/kH5V7wKecPS4RP2TgL+PJ7PwYWXLpOAS0sli+rwF4/Mcxh7k8xVEd - EUqg== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20161025; - h=x-gm-message-state:from:to:cc:subject:date:message-id; - bh=+UNc8xSG4dR5pzZrug24r0eJIzJ1UzI7Zx0RxPEtkrw=; - b=Hu3IWCXBhUu2/7cSqsoVPbhKPDOi2/oh90Gzr4yXbTIgxn3ne1HF/fKFI/Gq/jamRS - iN+w4eZZ9zx5H9kjY6nIq5JFxgeEwG/h1IAqx1UcJe0qNfB7vwY3ePyAOW7oBnuXylDf - WrXohl/U3ymUzzbEgLi6NYL/Z3SJ4j3zB8sSXRi+c6HHIH+tVLVLs3XlxJRa1dif0XXU - eJlbd5jUHUvwOsQdoM3n+ZVGZPbrGAFWm+lGDHTx26BcZrM9q+9PnAbx4/4ZvoRJJcen - SWBPZphP5rjWVyCk9b2dfi/Dp4NaRcO65ZsOVERt3NcilCgwxIRAEYcI6q+L7zdBmE6p - yigA== -X-Gm-Message-State: AGi0PuY8qGOajwvy6JwT80Fbmptp07Y7mYxASXaQOMzq7Zz+2hR/IB0u - b0XKpYdTKrRFEhXCBWt2r+I= -X-Google-Smtp-Source: APiQypJmWKVXJ1vqzczVXCZwBsTc2a61MLwOaBpbm68gWvLz1VgwstSv+1pLnnCRoj3F+Qa5wbv5uQ== -X-Received: by 2002:a05:6214:a8a:: with SMTP id - ev10mr2386895qvb.20.1587126398661; - Fri, 17 Apr 2020 05:26:38 -0700 (PDT) -Received: from localhost.localdomain ([2804:14c:482:271:a8cc:37bd:62f6:da03]) - by smtp.gmail.com with ESMTPSA id - m66sm16997985qkf.42.2020.04.17.05.26.36 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Fri, 17 Apr 2020 05:26:37 -0700 (PDT) -From: Fabio Estevam -To: sbabic@denx.de -Cc: hs@denx.de, derek@ihtfp.com, u-boot@lists.denx.de, - Fabio Estevam -Subject: [PATCH v2 1/5] wandboard: Fix version detection for mx6q/mx6dl revD1 -Date: Fri, 17 Apr 2020 09:27:09 -0300 -Message-Id: <20200417122713.30574-1-festevam@gmail.com> -X-Mailer: git-send-email 2.17.1 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -The detection of the revD1 version is based on the presence of the PMIC. - -Currently revb1 device trees are used for mx6q/mx6dl variants, which -do not have the PMIC nodes. - -This causes revD1 boards to be incorrectly be detected as revB1. - -Fix this issue by using the revd1 device trees, so that the PMIC node can be -found and then the PMIC can be detected by reading its register ID. - -Imported the revd1 device trees from mainline kernel version 5.7-rc1. - -Reported-by: Heiko Schocher -Reported-by: Derek Atkins -Signed-off-by: Fabio Estevam -Tested-by: Derek Atkins ---- -Changes since v1: -- Also use the revd1 dtb's inside board_fit_config_name_match(), which -fixes truncated console output on i.MX6DL wandboard as reported by Heiko. -- Added Tested-by from Derek as he confirmed it works on a imx6q revd1. - - arch/arm/dts/Makefile | 4 ++-- - ...{imx6dl-wandboard-revb1.dts => imx6dl-wandboard-revd1.dts} | 4 ++-- - .../{imx6q-wandboard-revb1.dts => imx6q-wandboard-revd1.dts} | 4 ++-- - board/wandboard/wandboard.c | 4 ++-- - configs/wandboard_defconfig | 4 ++-- - 5 files changed, 10 insertions(+), 10 deletions(-) - rename arch/arm/dts/{imx6dl-wandboard-revb1.dts => imx6dl-wandboard-revd1.dts} (78%) - rename arch/arm/dts/{imx6q-wandboard-revb1.dts => imx6q-wandboard-revd1.dts} (80%) - -diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile -index 820ee9733a..2a71917c92 100644 ---- a/arch/arm/dts/Makefile -+++ b/arch/arm/dts/Makefile -@@ -622,7 +622,7 @@ dtb-y += \ - imx6dl-pico.dtb \ - imx6dl-sabreauto.dtb \ - imx6dl-sabresd.dtb \ -- imx6dl-wandboard-revb1.dtb \ -+ imx6dl-wandboard-revd1.dtb \ - - endif - -@@ -654,7 +654,7 @@ dtb-y += \ - imx6q-sabrelite.dtb \ - imx6q-sabresd.dtb \ - imx6q-tbs2910.dtb \ -- imx6q-wandboard-revb1.dtb \ -+ imx6q-wandboard-revd1.dtb \ - imx6qp-sabreauto.dtb \ - imx6qp-sabresd.dtb \ - imx6qp-wandboard-revd1.dtb \ -diff --git a/arch/arm/dts/imx6dl-wandboard-revb1.dts b/arch/arm/dts/imx6dl-wandboard-revd1.dts -similarity index 78% -rename from arch/arm/dts/imx6dl-wandboard-revb1.dts -rename to arch/arm/dts/imx6dl-wandboard-revd1.dts -index c2946fbaa0..6d1d863c2e 100644 ---- a/arch/arm/dts/imx6dl-wandboard-revb1.dts -+++ b/arch/arm/dts/imx6dl-wandboard-revd1.dts -@@ -6,10 +6,10 @@ - */ - /dts-v1/; - #include "imx6dl.dtsi" --#include "imx6qdl-wandboard-revb1.dtsi" -+#include "imx6qdl-wandboard-revd1.dtsi" - - / { -- model = "Wandboard i.MX6 Dual Lite Board rev B1"; -+ model = "Wandboard i.MX6 Dual Lite Board revD1"; - compatible = "wand,imx6dl-wandboard", "fsl,imx6dl"; - - memory@10000000 { -diff --git a/arch/arm/dts/imx6q-wandboard-revb1.dts b/arch/arm/dts/imx6q-wandboard-revd1.dts -similarity index 80% -rename from arch/arm/dts/imx6q-wandboard-revb1.dts -rename to arch/arm/dts/imx6q-wandboard-revd1.dts -index f6ccbecff9..55331021d8 100644 ---- a/arch/arm/dts/imx6q-wandboard-revb1.dts -+++ b/arch/arm/dts/imx6q-wandboard-revd1.dts -@@ -6,10 +6,10 @@ - */ - /dts-v1/; - #include "imx6q.dtsi" --#include "imx6qdl-wandboard-revb1.dtsi" -+#include "imx6qdl-wandboard-revd1.dtsi" - - / { -- model = "Wandboard i.MX6 Quad Board rev B1"; -+ model = "Wandboard i.MX6 Quad Board revD1"; - compatible = "wand,imx6q-wandboard", "fsl,imx6q"; - - memory@10000000 { -diff --git a/board/wandboard/wandboard.c b/board/wandboard/wandboard.c -index 5725c5816c..90957167b2 100644 ---- a/board/wandboard/wandboard.c -+++ b/board/wandboard/wandboard.c -@@ -484,13 +484,13 @@ int checkboard(void) - int board_fit_config_name_match(const char *name) - { - if (is_mx6dq()) { -- if (!strcmp(name, "imx6q-wandboard-revb1")) -+ if (!strcmp(name, "imx6q-wandboard-revd1")) - return 0; - } else if (is_mx6dqp()) { - if (!strcmp(name, "imx6qp-wandboard-revd1")) - return 0; - } else if (is_mx6dl() || is_mx6solo()) { -- if (!strcmp(name, "imx6dl-wandboard-revb1")) -+ if (!strcmp(name, "imx6dl-wandboard-revd1")) - return 0; - } - -diff --git a/configs/wandboard_defconfig b/configs/wandboard_defconfig -index 82e517b90f..ee70758f3a 100644 ---- a/configs/wandboard_defconfig -+++ b/configs/wandboard_defconfig -@@ -46,8 +46,8 @@ CONFIG_CMD_BMP=y - CONFIG_CMD_CACHE=y - CONFIG_CMD_EXT4_WRITE=y - CONFIG_OF_CONTROL=y --CONFIG_DEFAULT_DEVICE_TREE="imx6dl-wandboard-revb1" --CONFIG_OF_LIST="imx6q-wandboard-revb1 imx6qp-wandboard-revd1 imx6dl-wandboard-revb1" -+CONFIG_DEFAULT_DEVICE_TREE="imx6dl-wandboard-revd1" -+CONFIG_OF_LIST="imx6q-wandboard-revd1 imx6qp-wandboard-revd1 imx6dl-wandboard-revd1" - CONFIG_MULTI_DTB_FIT=y - CONFIG_ENV_IS_IN_MMC=y - CONFIG_SYS_RELOC_GD_ENV_ADDR=y - -From patchwork Fri Apr 17 12:27:10 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Fabio Estevam -X-Patchwork-Id: 1272206 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 - header.s=20161025 header.b=bjS3sLPb; dkim-atps=neutral -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 493b6w3W3pz9sSM - for ; Fri, 17 Apr 2020 22:31:17 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 0C67D81C7C; - Fri, 17 Apr 2020 14:30:57 +0200 (CEST) -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="bjS3sLPb"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 0A0BC81C7B; Fri, 17 Apr 2020 14:28:04 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,SPF_HELO_NONE autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mail-qt1-x844.google.com (mail-qt1-x844.google.com - [IPv6:2607:f8b0:4864:20::844]) - (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 EEEE881C6F - for ; Fri, 17 Apr 2020 14:26:42 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=festevam@gmail.com -Received: by mail-qt1-x844.google.com with SMTP id b10so1699344qtt.9 - for ; Fri, 17 Apr 2020 05:26:42 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; - h=from:to:cc:subject:date:message-id:in-reply-to:references; - bh=SEa+t6cQaXgxxA4Y7Up9ysvPNRNK9h6sEy0NNEiLAR4=; - b=bjS3sLPbaEmj2GWLgQFIKNI0EAwh6RZ6Pztx5H15NZZKPqjoD1Z88WI2jpIhxJyNak - BcteAk3INIwMum4HutgQg4Y0bUAZBqNNCirviMntPnsHM2awkA/RyAuHIJgrE/L3Y3S/ - OniOm47hTEiWjwkCVTgGM0xdxPiBjw6BloJhf1URPeXgPn6+VBbcxDo5qu+4La85EvOZ - 4lhoosXvzDGxYQFog57g2naLpRXjEJ8D9UWllnm34jvc6pJuHaZPp7prvbP5VDJ3EnEs - c9NE9VQq86Iyks2pjqsomm2nDAAaq0NQfOOtYiOjt+H4kkauuwdKeEw8/bR+0jM7a+qV - 4UEA== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20161025; - h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to - :references; - bh=SEa+t6cQaXgxxA4Y7Up9ysvPNRNK9h6sEy0NNEiLAR4=; - b=mL0IbpTGQAbQkQPXmv50jUtDn8k53J4JFcUglUKbPLP8H7MgTzG8NWJzR20dxr3J83 - 4tkwsEjtZa4AjfSIfNJ582QSbCLpti9RWyoxy/zZ7i3WBFaNJbdIbcJmgcj6p7NDQdjW - 0v4KMG26xq03cQUTFDDVmhgqZfxnOLRv18/BG7pLuMvlrIqaIf53pFRvF3EoHvSOjw4E - HAAi+FbKdAxIHtLpQtXjSYpc7zBKBHoLjNdNqZK4LMxbGeNvTEz6Q1kH55rfkkBlUffi - +MTJKStLwVa2KRFVawIUTtYaAcvqk9VVZzCOp3CHCppFAW1UWvzlzPahUj66fKE36BNj - ibTg== -X-Gm-Message-State: AGi0PuYELpYONIrEGt/XSj6jjqR9+mIHe3e8KU6mbv9Qv5krUdet4ULh - h/c/Syh+Lgt2BDPUK75zuPs= -X-Google-Smtp-Source: APiQypIfw6VM2+E84OcTk5FFI353h/dzDsqsD4Qt+RlOZ/sQbQg3TSx8Ug6JfkFbEU1gUdEAhxWcVw== -X-Received: by 2002:ac8:7a84:: with SMTP id x4mr2647880qtr.28.1587126401182; - Fri, 17 Apr 2020 05:26:41 -0700 (PDT) -Received: from localhost.localdomain ([2804:14c:482:271:a8cc:37bd:62f6:da03]) - by smtp.gmail.com with ESMTPSA id - m66sm16997985qkf.42.2020.04.17.05.26.38 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Fri, 17 Apr 2020 05:26:40 -0700 (PDT) -From: Fabio Estevam -To: sbabic@denx.de -Cc: hs@denx.de, derek@ihtfp.com, u-boot@lists.denx.de, - Fabio Estevam -Subject: [PATCH v2 2/5] pmic: pfuze100: Change error message level to debug -Date: Fri, 17 Apr 2020 09:27:10 -0300 -Message-Id: <20200417122713.30574-2-festevam@gmail.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200417122713.30574-1-festevam@gmail.com> -References: <20200417122713.30574-1-festevam@gmail.com> -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -In some cases U-Boot runs the same binary on different board versions. - -In wandboard, for example, there are versions with the PFUZE100 PMIC -populated and others without it. - -When the PMIC is not present, it is not really useful to get PMIC error, -so change the error message level to debug instead. - -Signed-off-by: Fabio Estevam ---- -Changes since v1: -- Reworded the commit log for clarity - - drivers/power/pmic/pfuze100.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/power/pmic/pfuze100.c b/drivers/power/pmic/pfuze100.c -index 6cf5f35f0f..db630f3ad0 100644 ---- a/drivers/power/pmic/pfuze100.c -+++ b/drivers/power/pmic/pfuze100.c -@@ -41,7 +41,7 @@ static int pfuze100_write(struct udevice *dev, uint reg, const uint8_t *buff, - static int pfuze100_read(struct udevice *dev, uint reg, uint8_t *buff, int len) - { - if (dm_i2c_read(dev, reg, buff, len)) { -- pr_err("read error from device: %p register: %#x!\n", dev, reg); -+ debug("read error from device: %p register: %#x!\n", dev, reg); - return -EIO; - } - - -From patchwork Fri Apr 17 12:27:11 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Fabio Estevam -X-Patchwork-Id: 1272207 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 - header.s=20161025 header.b=EvnTm2er; dkim-atps=neutral -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 493b7F6VRzz9sR4 - for ; Fri, 17 Apr 2020 22:31:37 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 6375581C84; - Fri, 17 Apr 2020 14:31:12 +0200 (CEST) -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="EvnTm2er"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 7145A81C65; Fri, 17 Apr 2020 14:30:56 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,SPF_HELO_NONE autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mail-qt1-x831.google.com (mail-qt1-x831.google.com - [IPv6:2607:f8b0:4864:20::831]) - (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 E48D381C65 - for ; Fri, 17 Apr 2020 14:26:52 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=festevam@gmail.com -Received: by mail-qt1-x831.google.com with SMTP id 71so1678656qtc.12 - for ; Fri, 17 Apr 2020 05:26:52 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; - h=from:to:cc:subject:date:message-id:in-reply-to:references; - bh=DxzkgDAuKP/Aj1iVz4BmIUNG0Kfvsf00gg+pGnik5Ug=; - b=EvnTm2erj5r+5xjvUQrzgNM/0ku2G6uCz6n4xP1xt89H3HuXs+lniiScfykB0ixe2f - zf0jOjvL+j9JQotSmEFsrbUh4oALFyKtAJdWXqK6kSgymSM9JoSfKqxEDd0/NahH3X/8 - scONO4WqmrEMJrRPtoFiuGSBTu5tr8KLzC5mwoyhStMpiL5mBXBWza3qIzwnKk745XIp - f7yRJpTeNRhPncqlIGBUMoTN+yywJVSbgtb3WVcBDTVSfvnTJ/eGU06NEmN58b2tTwU9 - afcCVvjwyv72rwm5GbI92nqYdMsnjJtwEzgxw20TbP/xsQxxVkdI2snL6wU8QbE37PRN - Br2g== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20161025; - h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to - :references; - bh=DxzkgDAuKP/Aj1iVz4BmIUNG0Kfvsf00gg+pGnik5Ug=; - b=i4S++pqeR0IBXfpF5PxJJRWQ2AF5yvB7MHIt3lwOP+e/SrD0YGhtHcZvtodGj0lQGM - PwaZf82674bw9rnPpj13KzXydssrVMpVHjl3oOCumpnNnlk/tycAB9A1KR2O6eOCi5w9 - fauuI2Cb/S0nMLetDb+640UInt8/Wrnux+kytcLzbf3gXflHkKwaHXVUXLCZCgthcJtW - DgQMs29NYAmTaxxxoVUPGXZslhIbRBCGXXFICkdew1gzl1/IXsx3/QzSMbFp4owIVE/5 - LcFfEOnCkedrdAyeueWolOIir4elPyqZiCMd+06EcsJWqXzT5fjgrfWrLNSw97gsSJM+ - fZCA== -X-Gm-Message-State: AGi0PuY4l4f6xUXE+EJACpAheWt0P33LDdCkzoKuKrXgkuEmqlZF5ggm - 5zR1hxBRok8sCBYChmPm++KrKq/o -X-Google-Smtp-Source: APiQypLr3nu5LREHX349UWX68+4TIpL1QmD1fr6yMclfANVp5StRX+cPdJuviT2OLs9QkjvZycKpLw== -X-Received: by 2002:aed:37c4:: with SMTP id j62mr2584750qtb.279.1587126403781; - Fri, 17 Apr 2020 05:26:43 -0700 (PDT) -Received: from localhost.localdomain ([2804:14c:482:271:a8cc:37bd:62f6:da03]) - by smtp.gmail.com with ESMTPSA id - m66sm16997985qkf.42.2020.04.17.05.26.41 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Fri, 17 Apr 2020 05:26:43 -0700 (PDT) -From: Fabio Estevam -To: sbabic@denx.de -Cc: hs@denx.de, derek@ihtfp.com, u-boot@lists.denx.de, - Fabio Estevam -Subject: [PATCH v2 3/5] wandboard: Do not print error when PMIC is not present -Date: Fri, 17 Apr 2020 09:27:11 -0300 -Message-Id: <20200417122713.30574-3-festevam@gmail.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200417122713.30574-1-festevam@gmail.com> -References: <20200417122713.30574-1-festevam@gmail.com> -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -On wandboard variants prior to revD1, there is no PMIC populated, so -do not print an error when the reading of the device ID register fails. - -Signed-off-by: Fabio Estevam ---- -Changes since v1: -- None - - board/wandboard/wandboard.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/board/wandboard/wandboard.c b/board/wandboard/wandboard.c -index 90957167b2..7fd60682a5 100644 ---- a/board/wandboard/wandboard.c -+++ b/board/wandboard/wandboard.c -@@ -369,7 +369,7 @@ int power_init_board(void) - - reg = pmic_reg_read(dev, PFUZE100_DEVICEID); - if (reg < 0) { -- printf("pmic_reg_read() ret %d\n", reg); -+ debug("pmic_reg_read() ret %d\n", reg); - return 0; - } - printf("PMIC: PFUZE100 ID=0x%02x\n", reg); - -From patchwork Fri Apr 17 12:27:12 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Fabio Estevam -X-Patchwork-Id: 1272208 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 - header.s=20161025 header.b=Obn1Ycw6; dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 493b7d0GvNz9sR4 - for ; Fri, 17 Apr 2020 22:31:56 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id B111B81C78; - Fri, 17 Apr 2020 14:31:47 +0200 (CEST) -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="Obn1Ycw6"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 9D27A81C77; Fri, 17 Apr 2020 14:31:00 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,SPF_HELO_NONE autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mail-qt1-x841.google.com (mail-qt1-x841.google.com - [IPv6:2607:f8b0:4864:20::841]) - (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 E839E81C77 - for ; Fri, 17 Apr 2020 14:26:56 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=festevam@gmail.com -Received: by mail-qt1-x841.google.com with SMTP id l13so1715491qtr.7 - for ; Fri, 17 Apr 2020 05:26:56 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; - h=from:to:cc:subject:date:message-id:in-reply-to:references; - bh=Yz3tmmzY0y8w44Gsa9P6xR/Sz6lAJi28zFytmrf/4F8=; - b=Obn1Ycw6rRh7tbOFfpJ2IIgAW3NS09vOYQ+Bno5ZqLElYgmHZ+aIoJMViDdrTOSf73 - MqznEmhYo46DMzZerFjImkD1mP16Rp3+MPpMJVBb9m8ae7zwxiuB0Djn6VP6b0LlmZNX - EgDgG2MunWs0Af8EeOVUFCMgrSr31TVIAltV1lwQ250eqhi+CNEkwbu6LReASA0W8hqM - W/K/ORYmysI/Uy3gcFZ66xJuO7mp7MKO4RyNh/9xHMxA9wC1oa9+w/kXDDOzX7yiTNZm - AvvETqylxNWIQWcOOZ/IAeRjB0iqaY7XGimgCQ4XTdSEQinQdHOKxktF3ufRs1EUUdaf - 75Xw== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20161025; - h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to - :references; - bh=Yz3tmmzY0y8w44Gsa9P6xR/Sz6lAJi28zFytmrf/4F8=; - b=jkbEIwzMg7wtMAqumOLXPmSVsE8mpwcwmVVyazGqJPtX2P313S7sAP3cXzAzaAVkvf - 0P8BUhQ+R/21EfZMR3T4udH/oY93XWJhrgdJu0ClA2rO0Wux8l9EYOee06uWxvdBd5bG - /sv26HGaq1LJlHHmsaWqSzjUPAqxoO1hNFRYKYtxH7dHpBO6jHlwjbZxTFJodL4mEIfc - E136PeaJRD4qvFSxWya9Z68zlO7yoNb20LvrIApd/+/MrjHrfYkK9h3S0Dnemzl5qOhg - WhJpuyxdeoDIJRQQPat+uyZeiB7H5KKonhEx0Sy7ZZQIG9qktlSRbNcEsVNoqwnzxQUc - ZbXg== -X-Gm-Message-State: AGi0PuYK/1FP4wdgAiG9nzpPyCzJXcVP5l02Ym2GUcTfClQACUKxz0sa - dwHHN0sUSOgHsLfuoj2Nbb1hNT+r -X-Google-Smtp-Source: APiQypLq78TR3pZF9eTcxq6m4el0vlaakGrPpfeGB9OnTjMdfTXMr8kYL3w70szL8m9W7VfFBe4ALA== -X-Received: by 2002:aed:2b64:: with SMTP id p91mr2558197qtd.202.1587126406763; - Fri, 17 Apr 2020 05:26:46 -0700 (PDT) -Received: from localhost.localdomain ([2804:14c:482:271:a8cc:37bd:62f6:da03]) - by smtp.gmail.com with ESMTPSA id - m66sm16997985qkf.42.2020.04.17.05.26.44 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Fri, 17 Apr 2020 05:26:45 -0700 (PDT) -From: Fabio Estevam -To: sbabic@denx.de -Cc: hs@denx.de, derek@ihtfp.com, u-boot@lists.denx.de, - Fabio Estevam -Subject: [PATCH v2 4/5] wandboard: Remove CONFIG_DISPLAY_BOARDINFO_LATE -Date: Fri, 17 Apr 2020 09:27:12 -0300 -Message-Id: <20200417122713.30574-4-festevam@gmail.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200417122713.30574-1-festevam@gmail.com> -References: <20200417122713.30574-1-festevam@gmail.com> -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -Since we are using revD1 device tree for all board revisions, the -following can be seen on a revB1 board: - -Model: Wandboard i.MX6 Quad Board revD1 -Board: Wandboard rev B1 - -To avoid such confusing messages, disable CONFIG_DISPLAY_BOARDINFO_LATE. - -Signed-off-by: Fabio Estevam ---- -Changes since v1: -- None - - configs/wandboard_defconfig | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/configs/wandboard_defconfig b/configs/wandboard_defconfig -index ee70758f3a..f9a5fe479b 100644 ---- a/configs/wandboard_defconfig -+++ b/configs/wandboard_defconfig -@@ -29,7 +29,6 @@ CONFIG_BOOTCOMMAND="run findfdt; run finduuid; run distro_bootcmd" - CONFIG_SYS_CONSOLE_IS_IN_ENV=y - CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y - # CONFIG_DISPLAY_BOARDINFO is not set --CONFIG_DISPLAY_BOARDINFO_LATE=y - CONFIG_BOUNCE_BUFFER=y - CONFIG_BOARD_EARLY_INIT_F=y - CONFIG_SPL_SEPARATE_BSS=y - -From patchwork Fri Apr 17 12:27:13 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Fabio Estevam -X-Patchwork-Id: 1272210 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 - header.s=20161025 header.b=kEVeM9Yu; dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 493b890NQDz9sR4 - for ; Fri, 17 Apr 2020 22:32:24 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id E930381C7B; - Fri, 17 Apr 2020 14:32:21 +0200 (CEST) -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="kEVeM9Yu"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 400F381C86; Fri, 17 Apr 2020 14:31:14 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,SPF_HELO_NONE autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mail-qt1-x842.google.com (mail-qt1-x842.google.com - [IPv6:2607:f8b0:4864:20::842]) - (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 50F0281C75 - for ; Fri, 17 Apr 2020 14:27:00 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=festevam@gmail.com -Received: by mail-qt1-x842.google.com with SMTP id x2so1760430qtr.0 - for ; Fri, 17 Apr 2020 05:26:59 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; - h=from:to:cc:subject:date:message-id:in-reply-to:references; - bh=3HF8cr/rao8oJ0zsntZOqYzXFkwf96B2yY/ZChxh8hA=; - b=kEVeM9YuxkHXOYNnLm22Y1/PbZEbJpVp0PJRWfukGF9cB+fJnoJ0lrMIda6NqW+KKZ - 7cnrjIJVguVd7jK+KFcRSBWHZdJmhBEmlfXCRumotwiEYwtIoHE94irEk4J1yFw4Fod6 - tA5W0Khd6vuIL5dLCtwWSZtzqyw3zMLpnHuWL4ll+w5A543DizEQJggV+Q/F5uiqBJGl - uHu0/E9lyiVKWkxc80kJOOpdgcqyAlgRR8yRkuEvFwhMztryRke8/HNO4EHCRSO+W5lx - aAnYVxDiawemHtGVvghRtOttFrnH7GXhczvJLb1vRbECpcCiP/xM6FAuUZpsH3uoHZ/l - m6xg== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20161025; - h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to - :references; - bh=3HF8cr/rao8oJ0zsntZOqYzXFkwf96B2yY/ZChxh8hA=; - b=s5nOddnzLsGO7SSn8th5L74ICAM/6VKR0WmglzEpYSfowFNhdbmtbnpOEaQfb+zN0J - VUglrv+nhkmDyLYSEozQRlNh60fIuY7XoFzITSnZZ0FKrOOvCtNEOOJGvrul5T54h3Hs - jgD/rE2q2ubuYvIGjtASW7JEWfz+z2dT25pmTDau2nB9+1OrIRrbEEka0gLdLmZl7Nks - TvynVt0hofekTXmVW8FOVyKH1hYJ3tcugQX+MblNjznwSZynLUXintKHKmCNaDf6OQcZ - MIg0D/9vy0D6Ir/fTbXw3aPzNkFfrBMscumNzJ6uBPLvnBZ50FKizjzk6vVoGh4yfmbO - DKuw== -X-Gm-Message-State: AGi0Pub/h3ZQNjRAI0yUHZOfEKgWLEDhrJ3MPyc93lhoBoOp69JXLp59 - LA2iPoHLknyPq5kBhiSsPI3BXP5V -X-Google-Smtp-Source: APiQypIfbXHKlg1oFI7xhEx2yvP2YtoKjBXDsnznfvcPu/KZHdKYikE4kDiOsmEZWdz3IHLDCcNfMw== -X-Received: by 2002:aed:2625:: with SMTP id z34mr2664135qtc.70.1587126409337; - Fri, 17 Apr 2020 05:26:49 -0700 (PDT) -Received: from localhost.localdomain ([2804:14c:482:271:a8cc:37bd:62f6:da03]) - by smtp.gmail.com with ESMTPSA id - m66sm16997985qkf.42.2020.04.17.05.26.47 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Fri, 17 Apr 2020 05:26:48 -0700 (PDT) -From: Fabio Estevam -To: sbabic@denx.de -Cc: hs@denx.de, derek@ihtfp.com, u-boot@lists.denx.de, - Fabio Estevam -Subject: [PATCH v2 5/5] wandboard: Print the board version in board_late_init() -Date: Fri, 17 Apr 2020 09:27:13 -0300 -Message-Id: <20200417122713.30574-5-festevam@gmail.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200417122713.30574-1-festevam@gmail.com> -References: <20200417122713.30574-1-festevam@gmail.com> -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -Since CONFIG_DISPLAY_BOARDINFO_LATE is no longer used, the checkboard() -function is no longer called. - -As it is useful to print the board revision, print it inside -board_late_init() instead. - -Also, to avoid GPIO errors related to using a GPIO without requesting it, -move the gpio_request(REV_DETECTION, "REV_DETECT") call prior to its -usage. - -Signed-off-by: Fabio Estevam ---- -Changes since v1: -- Still print the board revision, but on a different location now. - - board/wandboard/wandboard.c | 23 +++++++++-------------- - 1 file changed, 9 insertions(+), 14 deletions(-) - -diff --git a/board/wandboard/wandboard.c b/board/wandboard/wandboard.c -index 7fd60682a5..fb2f3c1fd2 100644 ---- a/board/wandboard/wandboard.c -+++ b/board/wandboard/wandboard.c -@@ -404,6 +404,7 @@ static const struct boot_mode board_boot_modes[] = { - static bool is_revc1(void) - { - SETUP_IOMUX_PADS(rev_detection_pad); -+ gpio_request(REV_DETECTION, "REV_DETECT"); - gpio_direction_input(REV_DETECTION); - - if (gpio_get_value(REV_DETECTION)) -@@ -442,6 +443,14 @@ int board_late_init(void) - env_set("board_name", "B1"); - #endif - setup_iomux_enet(); -+ -+ if (is_revd1()) -+ puts("Board: Wandboard rev D1\n"); -+ else if (is_revc1()) -+ puts("Board: Wandboard rev C1\n"); -+ else -+ puts("Board: Wandboard rev B1\n"); -+ - return 0; - } - -@@ -466,20 +475,6 @@ int board_init(void) - return 0; - } - --int checkboard(void) --{ -- gpio_request(REV_DETECTION, "REV_DETECT"); -- -- if (is_revd1()) -- puts("Board: Wandboard rev D1\n"); -- else if (is_revc1()) -- puts("Board: Wandboard rev C1\n"); -- else -- puts("Board: Wandboard rev B1\n"); -- -- return 0; --} -- - #ifdef CONFIG_SPL_LOAD_FIT - int board_fit_config_name_match(const char *name) - { From 3e0e8cf1f39da0f2aa0afbb602e3ef73803afb30 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 30 Apr 2020 09:04:51 +0100 Subject: [PATCH 003/271] Xilinx ZYNQ now has a single U-Boot for all boards --- arm-boards | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/arm-boards b/arm-boards index 19326dc..ec11458 100644 --- a/arm-boards +++ b/arm-boards @@ -137,6 +137,4 @@ warp7 Wexler_TAB7200 Wits_Pro_A20_DKT Yones_Toptech_BS1078_V2 -zynq_microzed -zynq_zed -zynq_zybo +xilinx_zynq_virt From d5c5edbb726592651c9e4bbdc9b2074dc41312af Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 12 May 2020 23:33:51 +0100 Subject: [PATCH 004/271] 2020.07 RC2 --- ...port-for-Raspberry-Pi-4-board-64-bit.patch | 2526 +++++++++++++++ ...ost-support-for-Raspberry-Pi-4-board.patch | 2810 ----------------- aarch64-boards | 1 + ...kchip-rk3399-add-and-enable-rng-node.patch | 863 ----- ...efine-fdtfile-option-for-distro-boot.patch | 14 +- ...ort-for-the-Pinebook-Pro-laptop-from.patch | 6 +- ...-the-DT-provided-by-the-Raspberry-Pi.patch | 36 +- ...pport-for-the-XHCI-controller-on-RPI.patch | 62 + rpi4-enable-ARCH_FIXUP_FDT_MEMORY.patch | 40 + sources | 2 +- uboot-tools.spec | 26 +- ...Load-Raspberry-Pi-4-VL805-s-firmware.patch | 361 +++ 12 files changed, 3035 insertions(+), 3712 deletions(-) create mode 100644 USB-host-support-for-Raspberry-Pi-4-board-64-bit.patch delete mode 100644 USB-host-support-for-Raspberry-Pi-4-board.patch delete mode 100644 arm-dts-rockchip-rk3399-add-and-enable-rng-node.patch create mode 100644 rpi4-Enable-support-for-the-XHCI-controller-on-RPI.patch create mode 100644 rpi4-enable-ARCH_FIXUP_FDT_MEMORY.patch create mode 100644 usb-xhci-Load-Raspberry-Pi-4-VL805-s-firmware.patch diff --git a/USB-host-support-for-Raspberry-Pi-4-board-64-bit.patch b/USB-host-support-for-Raspberry-Pi-4-board-64-bit.patch new file mode 100644 index 0000000..3e76ea9 --- /dev/null +++ b/USB-host-support-for-Raspberry-Pi-4-board-64-bit.patch @@ -0,0 +1,2526 @@ +From patchwork Tue May 12 18:47:08 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sylwester Nawrocki +X-Patchwork-Id: 1288721 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 + header.s=mail20170921 header.b=d38K5udu; + dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest + SHA256) (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 49M6Hv66Ygz9sRR + for ; Wed, 13 May 2020 04:47:55 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id B84F981CA7; + Tue, 12 May 2020 20:47:46 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.b="d38K5udu"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 58E8981CB4; Tue, 12 May 2020 20:47:46 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com + [210.118.77.11]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 5033481CA7 + for ; Tue, 12 May 2020 20:47:43 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=s.nawrocki@samsung.com +Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) + by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id + 20200512184742euoutp01bc8b3eb5b03aea7061c9771d94376063~OXFqTZrdZ0824908249euoutp01M + for ; Tue, 12 May 2020 18:47:42 +0000 (GMT) +DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com + 20200512184742euoutp01bc8b3eb5b03aea7061c9771d94376063~OXFqTZrdZ0824908249euoutp01M +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; + s=mail20170921; t=1589309262; + bh=y/xHx6cn6ZNuvX3V5jxpugf8Q65fZIBo5wp4jEitdVo=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=d38K5uduUnUgAuBY2HpLVidScZmwLS83XuAEP71VwqJPtHkIEcrtqnNuN+x7Vo5LB + xI47QIftGzVsub55jILxMD5WJglh2JRL6h/sha0zJZGbRvnGclE1yePigHBSvHJq8e + NKVp6Rgvvlb/0F3rQzneLiaVnOQ04AM1cU+Q0O5U= +Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by + eucas1p2.samsung.com (KnoxPortal) with ESMTP id + 20200512184741eucas1p2f963249ca616e99f379cb8519a45c7df~OXFpSf8vj0944309443eucas1p2h; + Tue, 12 May 2020 18:47:41 +0000 (GMT) +Received: from eucas1p1.samsung.com ( [182.198.249.206]) by + eusmges3new.samsung.com (EUCPMTA) with SMTP id 06.03.60698.D4FEABE5; Tue, 12 + May 2020 19:47:41 +0100 (BST) +Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by + eucas1p2.samsung.com (KnoxPortal) with ESMTPA id + 20200512184740eucas1p2912f07b9e34cc769604d641adb0e13c9~OXFopWAVc0733307333eucas1p2p; + Tue, 12 May 2020 18:47:40 +0000 (GMT) +Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by + eusmtrp2.samsung.com (KnoxPortal) with ESMTP id + 20200512184740eusmtrp285c7f01d30cd705bf6708beea010fb5e~OXFootnX41654116541eusmtrp2e; + Tue, 12 May 2020 18:47:40 +0000 (GMT) +X-AuditID: cbfec7f5-a0fff7000001ed1a-48-5ebaef4d163d +Received: from eusmtip1.samsung.com ( [203.254.199.221]) by + eusmgms1.samsung.com (EUCPMTA) with SMTP id 87.DA.08375.C4FEABE5; Tue, 12 + May 2020 19:47:40 +0100 (BST) +Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by + eusmtip1.samsung.com (KnoxPortal) with ESMTPA id + 20200512184740eusmtip1218b8e5fecda20fd55cc193294a6f3b1~OXFoEyWsp2574925749eusmtip16; + Tue, 12 May 2020 18:47:40 +0000 (GMT) +From: Sylwester Nawrocki +To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com +Cc: james.quinlan@broadcom.com, nsaenzjulienne@suse.de, sjg@chromium.org, + jh80.chung@samsung.com, m.szyprowski@samsung.com, b.zolnierkie@samsung.com, + Sylwester Nawrocki +Subject: [PATCH v3 1/9] usb: xhci: Add missing cache flush in the scratchpad + array initialization +Date: Tue, 12 May 2020 20:47:08 +0200 +Message-Id: <20200512184716.2869-2-s.nawrocki@samsung.com> +X-Mailer: git-send-email 2.17.1 +In-Reply-To: <20200512184716.2869-1-s.nawrocki@samsung.com> +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprHKsWRmVeSWpSXmKPExsWy7djPc7q+73fFGWxeLm2xccZ6VoupPfEW + e9/0s1nc+NXGarH2yF12izdtjYwWCyY/YbXYNms5m8XhN+2sFt+2bGO0eLu3k92B22PW/bNs + HrMbLrJ4zJt1gsVj56y77B5n7+xg9OjbsorRY/2Wqywem09XB3BEcdmkpOZklqUW6dslcGXc + XfWasWAKZ8XHpQeYGhjPsncxcnJICJhIrF/3BMjm4hASWMEo8fr8L1YI5wujxJmdXcwQzmdG + idPv17PAtNxZtJQRIrGcUWLemw8scC33Vj8EG8wmYCjRe7SPEcQWEQiQuPZzGlgHs8BRRok1 + +/+AjRIWSJbY+GYJmM0ioCpxsucAmM0rYCXx7u4iVoh18hKrNxxgBrE5Bawlrm8+BnaThMAq + dokV/6ZAveEiMXnjaqgGYYlXx7dAxWUk/u+czwTR0Mwo0bP7NjuEM4FR4v7xBYwQVdYSd879 + Yuti5AC6T1Ni/S59EFNCwFHi83MtCJNP4sZbQZBiZiBz0rbpzBBhXomONiGIGSoSv1dNZ4Kw + pSS6n/yHhpaHxIFJu8DOFxLoY5SY9NFzAqP8LIRVCxgZVzGKp5YW56anFhvnpZbrFSfmFpfm + pesl5+duYgSmmtP/jn/dwbjvT9IhRgEORiUe3oj6XXFCrIllxZW5hxglOJiVRHhbMnfGCfGm + JFZWpRblxxeV5qQWH2KU5mBREuc1XvQyVkggPbEkNTs1tSC1CCbLxMEp1cAY8FeRl+/HltTN + X4Xs903RVHy5e6dgqpeg0jm+4OVBkrPvpUVJPnj+KVdkzo41t/PuMjReEPlxUCtyWmyHz103 + rgXPZq0ykbWOfJ3YefagS9XPQu/PB+O5tq6w9/7zm4Vf6+bV1z8qDodnyLT/WPJqT6T6+32H + jgl/27XgeAnrlllibgaZdotvKrEUZyQaajEXFScCAAKlHx8xAwAA +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrPLMWRmVeSWpSXmKPExsVy+t/xu7o+73fFGUxZr2+xccZ6VoupPfEW + e9/0s1nc+NXGarH2yF12izdtjYwWCyY/YbXYNms5m8XhN+2sFt+2bGO0eLu3k92B22PW/bNs + HrMbLrJ4zJt1gsVj56y77B5n7+xg9OjbsorRY/2Wqywem09XB3BE6dkU5ZeWpCpk5BeX2CpF + G1oY6RlaWugZmVjqGRqbx1oZmSrp29mkpOZklqUW6dsl6GXcXfWasWAKZ8XHpQeYGhjPsncx + cnJICJhI3Fm0lLGLkYtDSGApo8SCbWtZuhg5gBJSEvNblCBqhCX+XOtig6j5xCixZOleFpAE + m4ChRO/RPkYQW0QgROLF0StMIEXMAmcZJRZ1fmAFSQgLJErMbDgGZrMIqEqc7DkA1swrYCXx + 7u4iVogN8hKrNxxgBrE5Bawlrm8+BmYLAdXs+faObQIj3wJGhlWMIqmlxbnpucWGesWJucWl + eel6yfm5mxiBgb/t2M/NOxgvbQw+xCjAwajEw8tQuytOiDWxrLgy9xCjBAezkghvS+bOOCHe + lMTKqtSi/Pii0pzU4kOMpkBHTWSWEk3OB0ZlXkm8oamhuYWlobmxubGZhZI4b4fAwRghgfTE + ktTs1NSC1CKYPiYOTqkGRvHA5utdDK+71Gc8yncU/Jl1s8GwlfnWtf/fvVcf2j1n1dGNJtMn + +bzXEb/JdkYl/OLZA3Vvo7aKLFyzg7Gsd9N+h4PpR6bHn7zJ79VRWnHmnV1WVtDq6BmPbh3d + 8qTxqqDqXif96Ra5p80yGxK5+NgP7Gd22F52neeB/7I+A4//v1Y946i/MFmJpTgj0VCLuag4 + EQDJGyeQkgIAAA== +X-CMS-MailID: 20200512184740eucas1p2912f07b9e34cc769604d641adb0e13c9 +X-Msg-Generator: CA +X-RootMTR: 20200512184740eucas1p2912f07b9e34cc769604d641adb0e13c9 +X-EPHeader: CA +CMS-TYPE: 201P +X-CMS-RootMailID: 20200512184740eucas1p2912f07b9e34cc769604d641adb0e13c9 +References: <20200512184716.2869-1-s.nawrocki@samsung.com> + +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +In current code there is no cache flush after initializing the scratchpad +buffer array with the scratchpad buffer pointers. This leads to a failure +of the "slot enable" command on the rpi4 board (Broadcom STB PCIe +controller + VL805 USB hub) - the very first TRB transfer on the command +ring fails and there is a timeout while waiting for the command completion +event. After adding the missing cache flush everything seems to be working +as expected. + +Signed-off-by: Sylwester Nawrocki +Reviewed-by: Bin Meng +Reviewed-by: Nicolas Saenz Julienne +--- +Changes since v1: + - none. +--- + drivers/usb/host/xhci-mem.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c +index 93450ee..729bdc3 100644 +--- a/drivers/usb/host/xhci-mem.c ++++ b/drivers/usb/host/xhci-mem.c +@@ -393,6 +393,9 @@ static int xhci_scratchpad_alloc(struct xhci_ctrl *ctrl) + scratchpad->sp_array[i] = cpu_to_le64(ptr); + } + ++ xhci_flush_cache((uintptr_t)scratchpad->sp_array, ++ sizeof(u64) * num_sp); ++ + return 0; + + fail_sp3: + +From patchwork Tue May 12 18:47:09 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sylwester Nawrocki +X-Patchwork-Id: 1288726 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 + header.s=mail20170921 header.b=grr5hJg0; + dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 49M6J52FSkz9sSc + for ; Wed, 13 May 2020 04:48:05 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 031D381CCA; + Tue, 12 May 2020 20:47:52 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.b="grr5hJg0"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id DBE4481CCA; Tue, 12 May 2020 20:47:49 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com + [210.118.77.11]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 3D53381CC5 + for ; Tue, 12 May 2020 20:47:47 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=s.nawrocki@samsung.com +Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) + by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id + 20200512184746euoutp01fb38409a07247ba29f423e8e26c681a3~OXFtquXqn0815408154euoutp01S + for ; Tue, 12 May 2020 18:47:46 +0000 (GMT) +DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com + 20200512184746euoutp01fb38409a07247ba29f423e8e26c681a3~OXFtquXqn0815408154euoutp01S +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; + s=mail20170921; t=1589309266; + bh=mpc5rYw/U19wNz9z3l9qIGYqOM/GqAOeD9khN0UIZwU=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=grr5hJg01HyaYOSo5sRsqNi8H29+t1SJtvzpcW0TcS7Uq3xNGmFHYWcWw2hlEFBXm + SQcD5H70xlOq1k6aVxDV3EJK128Qww1iZyma0H7nEfCs1WuOaohM/qnzdBhfwcwftI + AmLAlKxzDpQym+Hg21E2PBd9E56u9ZhxeKuVbjNs= +Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by + eucas1p2.samsung.com (KnoxPortal) with ESMTP id + 20200512184745eucas1p29454eee0ca9ecc030620e98c3cb0577f~OXFspLApW2836228362eucas1p2B; + Tue, 12 May 2020 18:47:45 +0000 (GMT) +Received: from eucas1p2.samsung.com ( [182.198.249.207]) by + eusmges3new.samsung.com (EUCPMTA) with SMTP id C6.03.60698.05FEABE5; Tue, 12 + May 2020 19:47:44 +0100 (BST) +Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by + eucas1p2.samsung.com (KnoxPortal) with ESMTPA id + 20200512184743eucas1p28e9d93ba5e46ed900a88bf0bf85fda58~OXFrcGgkD0735407354eucas1p2X; + Tue, 12 May 2020 18:47:43 +0000 (GMT) +Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by + eusmtrp2.samsung.com (KnoxPortal) with ESMTP id + 20200512184743eusmtrp22630032f69ad78af217c4cc4e810fb3e~OXFrbdvJf1654916549eusmtrp2d; + Tue, 12 May 2020 18:47:43 +0000 (GMT) +X-AuditID: cbfec7f5-a0fff7000001ed1a-4c-5ebaef500edc +Received: from eusmtip1.samsung.com ( [203.254.199.221]) by + eusmgms1.samsung.com (EUCPMTA) with SMTP id 48.DA.08375.F4FEABE5; Tue, 12 + May 2020 19:47:43 +0100 (BST) +Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by + eusmtip1.samsung.com (KnoxPortal) with ESMTPA id + 20200512184743eusmtip16a33a390496025d0cd045c1a3826c2c0~OXFqzC1Wy3146231462eusmtip1f; + Tue, 12 May 2020 18:47:43 +0000 (GMT) +From: Sylwester Nawrocki +To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com +Cc: james.quinlan@broadcom.com, nsaenzjulienne@suse.de, sjg@chromium.org, + jh80.chung@samsung.com, m.szyprowski@samsung.com, b.zolnierkie@samsung.com, + Sylwester Nawrocki , Sergey Temerkhanov + +Subject: [PATCH v3 2/9] usb: xhci: Use only 32-bit accesses in + xhci_writeq/xhci_readq +Date: Tue, 12 May 2020 20:47:09 +0200 +Message-Id: <20200512184716.2869-3-s.nawrocki@samsung.com> +X-Mailer: git-send-email 2.17.1 +In-Reply-To: <20200512184716.2869-1-s.nawrocki@samsung.com> +X-Brightmail-Tracker: H4sIAAAAAAAAA0VSa0hTYRju2845O5qL05R8M8EYRRhecdQhLylJnh8ikpJSNFt5UPHappb1 + Q0NZzjuJGou8NGyhpKlrOW95NxLTJE1KUcMyRQu1RTPRnEfr3/M+l/d9+PhIvqgatyNjEpJZ + eYIsTkxYYvp+07Bz8I8WqVtrhxfd8KAep0vyIuj2pUKCnlhX4vSz3ikBvaS8i+jK4jmc1qu1 + BN2zdA+nq9UdAvqXTo/o5XaVwNeKUU8PEczDjHcYU65+jTEG9ZSAGZpsRkyBrgYx9boxjGka + vBNMXrL0imTjYlJZuavPVctoQ3EVnrRG3VrJ1hAZaFaYgyxIoCSge1mO5yBLUkQ9RfBdtUhw + w08Ekwuju8MaAlONUrAXaVQqESdoETR8LOH9i+hqX/DMLoJyh/y+AmTGNlQwjJtKdxJ8yojg + Te4IZhasqTBQjc4SZoxRx0G7odkJC6kz8HWwA+POOUDt806+GVtQnvChqZ9vXgRUnQDaCvMJ + zuQPBqMK57A1LA7odrvaw5ahgscFMhHktX4ScEMRgumBSsS5PGHy7fr2JnK7nyPUt7hytB9U + /NbzzDRQB2Bi+aCZ5m/D+/oyPkcLIVsp4tzH4E9NGY/DdpA7t7Xbn4G1vjoB90IFCDK7THgR + clD/P1aJUA2yZVMU8VGswiOBvemikMUrUhKiXK4nxjei7c8zuDlgbEYdG9e6EUUisZUwPL1F + KsJlqYq0+G4EJF9sI8yKMUhFwkhZ2m1WnhghT4ljFd3oCImJbYUejxeuiKgoWTIby7JJrHxP + 5ZEWdhno9GbOeQf7Vl+Jk8nnRLVIMhTnGHaoR+Kq6kppqzi7fMF7ZSKwp9d/3njKu0UyrZUG + Tc84TXaFfjOi1dHQi/OJY5rxG6VPqoZfHVWpIoICwvcHhkCAW2Rr+8RI+rBGmV13+Zzmi/Oj + GTj8WYhQFa/Or3a1d19tQ2xI5/ssqU2BGFNEy9xP8uUK2V8p3t8YOAMAAA== +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmphkeLIzCtJLcpLzFFi42I5/e/4XV3/97viDHb26llsnLGe1WJqT7zF + 3jf9bBY3frWxWqw9cpfd4k1bI6PFgslPWC22zVrOZnH4TTurxdJZ+9gtvm3Zxmjxdm8nuwOP + x6z7Z9k8ZjdcZPGYN+sEi8fOWXfZPc7e2cHo0bdlFaPH+i1XWTw2n64O4IjSsynKLy1JVcjI + Ly6xVYo2tDDSM7S00DMysdQzNDaPtTIyVdK3s0lJzcksSy3St0vQy9g5eSFrwWeBio8di9ka + GB/ydjFyckgImEhsamtj7GLk4hASWMoosWrtQiCHAyghJTG/RQmiRljiz7UuNoiaT4wSjVff + soAk2AQMJXqP9jGC2CICIRIvjl5hAiliFvjLKDGp9QkrSEJYIFTi7tP5YDaLgKrE8j+LmUBs + XgEriWen97FAbJCXWL3hADOIzSlgLXF98zEwWwioZs+3d2wTGPkWMDKsYhRJLS3OTc8tNtQr + TswtLs1L10vOz93ECIyBbcd+bt7BeGlj8CFGAQ5GJR5ehtpdcUKsiWXFlbmHGCU4mJVEeFsy + d8YJ8aYkVlalFuXHF5XmpBYfYjQFOmois5Rocj4wPvNK4g1NDc0tLA3Njc2NzSyUxHk7BA7G + CAmkJ5akZqemFqQWwfQxcXBKNTB6nbS75KLLcXaSEefxVQuf7fj8f9bj7/+W83UdTBPtbEo9 + LXT2+/znb9WWx/X7dl++fTu/uqBaPixV8t3/v6YG/SXmdQ/NeHqaT3MnmTe3rbNZkZFrr1IY + y//PRYDVYEtvSsrjr8UK0VdCpk42XPb0vaNeRErYDM4ZZm4ajV3LF4k56rzcN0uJpTgj0VCL + uag4EQCTL19flwIAAA== +X-CMS-MailID: 20200512184743eucas1p28e9d93ba5e46ed900a88bf0bf85fda58 +X-Msg-Generator: CA +X-RootMTR: 20200512184743eucas1p28e9d93ba5e46ed900a88bf0bf85fda58 +X-EPHeader: CA +CMS-TYPE: 201P +X-CMS-RootMailID: 20200512184743eucas1p28e9d93ba5e46ed900a88bf0bf85fda58 +References: <20200512184716.2869-1-s.nawrocki@samsung.com> + +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +There might be hardware configurations where 64-bit data accesses +to XHCI registers are not supported properly. This patch removes +the readq/writeq so always two 32-bit accesses are used to read/write +64-bit XHCI registers, similarly as it is done in Linux kernel. + +This patch fixes operation of the XHCI controller on RPI4 Broadcom +BCM2711 SoC based board, where the VL805 USB XHCI controller is +connected to the PCIe Root Complex, which is attached to the system +through the SCB bridge. + +Even though the architecture is 64-bit the PCIe BAR is 32-bit and likely +the 64-bit wide register accesses initiated by the CPU are not properly +translated to a sequence of 32-bit PCIe accesses. +xhci_readq(), for example, always returns same value in upper and lower +32-bits, e.g. 0xabcd1234abcd1234 instead of 0x00000000abcd1234. + +Cc: Sergey Temerkhanov +Signed-off-by: Sylwester Nawrocki +Reviewed-by: Bin Meng +Reviewed-by: Nicolas Saenz Julienne +--- +Changes since v1: + - none. +Changes since RFC: + - dropped Kconfig option, switched to not using readq/writeq + unconditionally. +--- + include/usb/xhci.h | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/include/usb/xhci.h b/include/usb/xhci.h +index 6017504..c16106a 100644 +--- a/include/usb/xhci.h ++++ b/include/usb/xhci.h +@@ -1111,28 +1111,20 @@ static inline void xhci_writel(uint32_t volatile *regs, const unsigned int val) + */ + static inline u64 xhci_readq(__le64 volatile *regs) + { +-#if BITS_PER_LONG == 64 +- return readq(regs); +-#else + __u32 *ptr = (__u32 *)regs; + u64 val_lo = readl(ptr); + u64 val_hi = readl(ptr + 1); + return val_lo + (val_hi << 32); +-#endif + } + + static inline void xhci_writeq(__le64 volatile *regs, const u64 val) + { +-#if BITS_PER_LONG == 64 +- writeq(val, regs); +-#else + __u32 *ptr = (__u32 *)regs; + u32 val_lo = lower_32_bits(val); + /* FIXME */ + u32 val_hi = upper_32_bits(val); + writel(val_lo, ptr); + writel(val_hi, ptr + 1); +-#endif + } + + int xhci_hcd_init(int index, struct xhci_hccr **ret_hccr, + +From patchwork Tue May 12 18:47:10 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sylwester Nawrocki +X-Patchwork-Id: 1288728 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 + header.s=mail20170921 header.b=MQb96qeW; + dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 49M6JZ0HY9z9sRR + for ; Wed, 13 May 2020 04:48:29 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 97A5E81CE6; + Tue, 12 May 2020 20:47:55 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.b="MQb96qeW"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 91CEA81CD5; Tue, 12 May 2020 20:47:52 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com + [210.118.77.11]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id EC86281C9C + for ; Tue, 12 May 2020 20:47:49 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=s.nawrocki@samsung.com +Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) + by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id + 20200512184749euoutp01f49ee1d587539ddc7a686993e968522f~OXFw3ZAYX0815408154euoutp01T + for ; Tue, 12 May 2020 18:47:49 +0000 (GMT) +DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com + 20200512184749euoutp01f49ee1d587539ddc7a686993e968522f~OXFw3ZAYX0815408154euoutp01T +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; + s=mail20170921; t=1589309269; + bh=o2n59jAOXed94iksPXrzyyjRiAB6FlEj8rUQ47ogyyk=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=MQb96qeW8BGeMLYvoFF8R5AK1VxRLBF9DKrHdA78h1FGD56P/N3T9UWKZFfPK+zeT + 0f2oSHQ2MVqRnuwpxzTWSHmbVuBZJE89UYjb1wU+vXivuiwfqiftxIkx0H74WHDljA + QPw23KgCLp0pZQt4sPsJz2xniqkbi21z32ANnwxM= +Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by + eucas1p1.samsung.com (KnoxPortal) with ESMTP id + 20200512184748eucas1p11ef796b4c399aa64b9557a31eeeb908b~OXFwGTfiE2309523095eucas1p1z; + Tue, 12 May 2020 18:47:48 +0000 (GMT) +Received: from eucas1p1.samsung.com ( [182.198.249.206]) by + eusmges2new.samsung.com (EUCPMTA) with SMTP id 52.AA.60679.45FEABE5; Tue, 12 + May 2020 19:47:48 +0100 (BST) +Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by + eucas1p2.samsung.com (KnoxPortal) with ESMTPA id + 20200512184747eucas1p25ed7fb872416271dd34806ccfb4197e5~OXFvEnnod0735407354eucas1p2Z; + Tue, 12 May 2020 18:47:47 +0000 (GMT) +Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by + eusmtrp2.samsung.com (KnoxPortal) with ESMTP id + 20200512184747eusmtrp220606fb120fb3b6d130b61b70b1a907f~OXFvD_isr1654116541eusmtrp2g; + Tue, 12 May 2020 18:47:47 +0000 (GMT) +X-AuditID: cbfec7f4-0cbff7000001ed07-c4-5ebaef540342 +Received: from eusmtip1.samsung.com ( [203.254.199.221]) by + eusmgms1.samsung.com (EUCPMTA) with SMTP id 89.DA.08375.35FEABE5; Tue, 12 + May 2020 19:47:47 +0100 (BST) +Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by + eusmtip1.samsung.com (KnoxPortal) with ESMTPA id + 20200512184747eusmtip1652b74d3fc922a12e92ef0d0910e99c5~OXFub85B-3146231462eusmtip1g; + Tue, 12 May 2020 18:47:46 +0000 (GMT) +From: Sylwester Nawrocki +To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com +Cc: james.quinlan@broadcom.com, nsaenzjulienne@suse.de, sjg@chromium.org, + jh80.chung@samsung.com, m.szyprowski@samsung.com, b.zolnierkie@samsung.com, + Sylwester Nawrocki +Subject: [PATCH v3 3/9] pci: Move some PCIe register offset definitions to a + common header +Date: Tue, 12 May 2020 20:47:10 +0200 +Message-Id: <20200512184716.2869-4-s.nawrocki@samsung.com> +X-Mailer: git-send-email 2.17.1 +In-Reply-To: <20200512184716.2869-1-s.nawrocki@samsung.com> +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprDKsWRmVeSWpSXmKPExsWy7djPc7oh73fFGTw6rm2xccZ6VoupPfEW + e9/0s1nc+NXGarH2yF12izdtjYwWCyY/YbXYNms5m8XhN+2sFt+2bGO0eLu3k92B22PW/bNs + HrMbLrJ4zJt1gsVj56y77B5n7+xg9OjbsorRY/2Wqywem09XB3BEcdmkpOZklqUW6dslcGVM + nqNYMF2y4vHC/4wNjM9Euhg5OSQETCSm/ZvDDmILCaxglOjZH9DFyAVkf2GUeLzoMzuE85lR + ou/UDXaYjlM9R1khEssZJQ4+P8UK0Q7Usmy+B4jNJmAo0Xu0jxHEFhEIkLj2cxojSAOzwFFG + iTX7/7CAJIQFYiTO77/MBGKzCKhKTL1xBKyBV8BKYs3S12wQ2+QlVm84wAxicwpYS1zffIwZ + ZJCEwDJ2iVW7F0Kd5CKx79h1RghbWOLV8S1QcRmJ/zvnM0E0NAM9t/s2O4QzgVHi/vEFUB3W + EnfO/QJaxwF0n6bE+l36EGFHiemPdoCFJQT4JG68FQQJMwOZk7ZNZ4YI80p0tAlBVKtI/F41 + nQnClpLofvKfBaLEQ2L5NAdIYPUB/d76iW0Co/wshF0LGBlXMYqnlhbnpqcWG+WllusVJ+YW + l+al6yXn525iBKaZ0/+Of9nBuOtP0iFGAQ5GJR5ehtpdcUKsiWXFlbmHGCU4mJVEeFsyd8YJ + 8aYkVlalFuXHF5XmpBYfYpTmYFES5zVe9DJWSCA9sSQ1OzW1ILUIJsvEwSnVwLh1z5TeG0az + +Xfd3FB0+/pjvrtznq13cFFY6DvDfpdPqclmFr4pB1beCCs7lOQ78cOhHwlnVjI6zEmc2Ozz + UzA48qrRrx/LPvqqt87Nqaz10/n2edvVDtvtE8Xe3rXad+vYkdXTZH6FOV5copT6IaCd1+u9 + COurmnJJL6c5pbV9++z8vrjw1O5UYinOSDTUYi4qTgQAvI6vdC8DAAA= +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrHLMWRmVeSWpSXmKPExsVy+t/xu7rB73fFGTxpUbXYOGM9q8XUnniL + vW/62Sxu/GpjtVh75C67xZu2RkaLBZOfsFpsm7WczeLwm3ZWi29btjFavN3bye7A7THr/lk2 + j9kNF1k85s06weKxc9Zddo+zd3YwevRtWcXosX7LVRaPzaerAzii9GyK8ktLUhUy8otLbJWi + DS2M9AwtLfSMTCz1DI3NY62MTJX07WxSUnMyy1KL9O0S9DImz1EsmC5Z8Xjhf8YGxmciXYyc + HBICJhKneo6ydjFycQgJLGWUOL/kGnsXIwdQQkpifosSRI2wxJ9rXWwQNZ8YJe61LGACSbAJ + GEr0Hu1jBLFFBEIkXhy9wgRSxCxwllFiUecHVpCEsECUxIvfjWBFLAKqElNvHAGzeQWsJNYs + fc0GsUFeYvWGA8wgNqeAtcT1zcfAbCGgmj3f3rFNYORbwMiwilEktbQ4Nz232FCvODG3uDQv + XS85P3cTIzDstx37uXkH46WNwYcYBTgYlXh4GWp3xQmxJpYVV+YeYpTgYFYS4W3J3BknxJuS + WFmVWpQfX1Sak1p8iNEU6KiJzFKiyfnAmMwriTc0NTS3sDQ0NzY3NrNQEuftEDgYIySQnliS + mp2aWpBaBNPHxMEp1cAo8NYxO8Jqj6PRV77edRqM6d/fPNh+ckp9/fKwsoWn/NSufp8boJey + O+/Wy/nTzpj1bt4798PtHSdmhmywaQj0KVYtD5qat1b7GMvEYBcra0Ze5hft2f6SH/t0Lumf + lXf9Pqv43uddiwVjUyRvrP5qZmy664CmlFb7nrstPeLfGxjWC3ooze9TYinOSDTUYi4qTgQA + d2ZzFZECAAA= +X-CMS-MailID: 20200512184747eucas1p25ed7fb872416271dd34806ccfb4197e5 +X-Msg-Generator: CA +X-RootMTR: 20200512184747eucas1p25ed7fb872416271dd34806ccfb4197e5 +X-EPHeader: CA +CMS-TYPE: 201P +X-CMS-RootMailID: 20200512184747eucas1p25ed7fb872416271dd34806ccfb4197e5 +References: <20200512184716.2869-1-s.nawrocki@samsung.com> + +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +Some PCI Express register offsets are currently defined in multiple +drivers, move them to a common header to avoid re-definitions and +as a pre-requisite for adding new PCIe driver. +While at it replace some spaces with tabs. + +Signed-off-by: Sylwester Nawrocki +Reviewed-by: Bin Meng +Reviewed-by: Nicolas Saenz Julienne +--- +Changes since v1: + - none. +Changes since RFC: + - whitespace clean up. +--- + drivers/pci/pci-rcar-gen3.c | 8 -------- + drivers/pci/pcie_intel_fpga.c | 3 --- + include/pci.h | 13 +++++++++++-- + 3 files changed, 11 insertions(+), 13 deletions(-) + +diff --git a/drivers/pci/pci-rcar-gen3.c b/drivers/pci/pci-rcar-gen3.c +index 30eff67..393f1c9 100644 +--- a/drivers/pci/pci-rcar-gen3.c ++++ b/drivers/pci/pci-rcar-gen3.c +@@ -117,14 +117,6 @@ + #define RCAR_PCI_MAX_RESOURCES 4 + #define MAX_NR_INBOUND_MAPS 6 + +-#define PCI_EXP_FLAGS 2 /* Capabilities register */ +-#define PCI_EXP_FLAGS_TYPE 0x00f0 /* Device/Port type */ +-#define PCI_EXP_TYPE_ROOT_PORT 0x4 /* Root Port */ +-#define PCI_EXP_LNKCAP 12 /* Link Capabilities */ +-#define PCI_EXP_LNKCAP_DLLLARC 0x00100000 /* Data Link Layer Link Active Reporting Capable */ +-#define PCI_EXP_SLTCAP 20 /* Slot Capabilities */ +-#define PCI_EXP_SLTCAP_PSN 0xfff80000 /* Physical Slot Number */ +- + enum { + RCAR_PCI_ACCESS_READ, + RCAR_PCI_ACCESS_WRITE, +diff --git a/drivers/pci/pcie_intel_fpga.c b/drivers/pci/pcie_intel_fpga.c +index 6a9f29c..69363a0 100644 +--- a/drivers/pci/pcie_intel_fpga.c ++++ b/drivers/pci/pcie_intel_fpga.c +@@ -65,9 +65,6 @@ + #define IS_ROOT_PORT(pcie, bdf) \ + ((PCI_BUS(bdf) == pcie->first_busno) ? true : false) + +-#define PCI_EXP_LNKSTA 18 /* Link Status */ +-#define PCI_EXP_LNKSTA_DLLLA 0x2000 /* Data Link Layer Link Active */ +- + /** + * struct intel_fpga_pcie - Intel FPGA PCIe controller state + * @bus: Pointer to the PCI bus +diff --git a/include/pci.h b/include/pci.h +index aff56b2..dfdbb32 100644 +--- a/include/pci.h ++++ b/include/pci.h +@@ -471,10 +471,19 @@ + #define PCI_EA_FIELD_MASK 0xfffffffc /* For Base & Max Offset */ + + /* PCI Express capabilities */ ++#define PCI_EXP_FLAGS 2 /* Capabilities register */ ++#define PCI_EXP_FLAGS_TYPE 0x00f0 /* Device/Port type */ ++#define PCI_EXP_TYPE_ROOT_PORT 0x4 /* Root Port */ + #define PCI_EXP_DEVCAP 4 /* Device capabilities */ +-#define PCI_EXP_DEVCAP_FLR 0x10000000 /* Function Level Reset */ ++#define PCI_EXP_DEVCAP_FLR 0x10000000 /* Function Level Reset */ + #define PCI_EXP_DEVCTL 8 /* Device Control */ +-#define PCI_EXP_DEVCTL_BCR_FLR 0x8000 /* Bridge Configuration Retry / FLR */ ++#define PCI_EXP_DEVCTL_BCR_FLR 0x8000 /* Bridge Configuration Retry / FLR */ ++#define PCI_EXP_LNKCAP 12 /* Link Capabilities */ ++#define PCI_EXP_LNKCAP_DLLLARC 0x00100000 /* Data Link Layer Link Active Reporting Capable */ ++#define PCI_EXP_LNKSTA 18 /* Link Status */ ++#define PCI_EXP_LNKSTA_DLLLA 0x2000 /* Data Link Layer Link Active */ ++#define PCI_EXP_SLTCAP 20 /* Slot Capabilities */ ++#define PCI_EXP_SLTCAP_PSN 0xfff80000 /* Physical Slot Number */ + + /* Include the ID list */ + + +From patchwork Tue May 12 18:47:11 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sylwester Nawrocki +X-Patchwork-Id: 1288729 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 + header.s=mail20170921 header.b=DMPfLXHn; + dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 49M6Jq5kVFz9sSW + for ; Wed, 13 May 2020 04:48:43 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 6DD0981CA0; + Tue, 12 May 2020 20:48:35 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.b="DMPfLXHn"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 1708981CCA; Tue, 12 May 2020 20:48:34 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com + [210.118.77.11]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 268AA81C8F + for ; Tue, 12 May 2020 20:48:31 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=s.nawrocki@samsung.com +Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) + by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id + 20200512184830euoutp01ccbc955d4e553cfcc652df2a8a26a7bd~OXGXNrozu0823008230euoutp01U + for ; Tue, 12 May 2020 18:48:30 +0000 (GMT) +DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com + 20200512184830euoutp01ccbc955d4e553cfcc652df2a8a26a7bd~OXGXNrozu0823008230euoutp01U +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; + s=mail20170921; t=1589309310; + bh=3E0AOgx9hU8sLyjssq8h9uGtoMBKiYQYmWKYKj8g+7M=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=DMPfLXHnOgmW1Z4KlAl/NdPP5dLcXH56gib60eMcKVBH/cg4pQkIlBSZPlg8WU47T + OSf3QryKG/0HgRi0epoYgVCWYqdtWu+elalkhjiDXrHEaN9KpotUASwVVmKc6vxZUq + sQhwySR6duVQzCazExVuqPC71RShDpAqqkiFjqrg= +Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by + eucas1p2.samsung.com (KnoxPortal) with ESMTP id + 20200512184830eucas1p26b67732246d5cd7a6247fa6e114db6d0~OXGW73iC-0949309493eucas1p2v; + Tue, 12 May 2020 18:48:30 +0000 (GMT) +Received: from eucas1p2.samsung.com ( [182.198.249.207]) by + eusmges3new.samsung.com (EUCPMTA) with SMTP id 7D.03.60698.E7FEABE5; Tue, 12 + May 2020 19:48:30 +0100 (BST) +Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by + eucas1p1.samsung.com (KnoxPortal) with ESMTPA id + 20200512184829eucas1p10c67592f9af7879f51eee9bff8fa76d7~OXGVv7OF12080520805eucas1p1u; + Tue, 12 May 2020 18:48:29 +0000 (GMT) +Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by + eusmtrp2.samsung.com (KnoxPortal) with ESMTP id + 20200512184829eusmtrp262ea470daeba61b3d4efb349c6418007~OXGVvS8Ut1654916549eusmtrp2n; + Tue, 12 May 2020 18:48:29 +0000 (GMT) +X-AuditID: cbfec7f5-a29ff7000001ed1a-89-5ebaef7eefa5 +Received: from eusmtip1.samsung.com ( [203.254.199.221]) by + eusmgms2.samsung.com (EUCPMTA) with SMTP id 22.F8.07950.D7FEABE5; Tue, 12 + May 2020 19:48:29 +0100 (BST) +Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by + eusmtip1.samsung.com (KnoxPortal) with ESMTPA id + 20200512184828eusmtip1a8d7ad1b8a25aeb694a863a0e7798f73~OXGVOX36p1659716597eusmtip1h; + Tue, 12 May 2020 18:48:28 +0000 (GMT) +From: Sylwester Nawrocki +To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com +Cc: james.quinlan@broadcom.com, nsaenzjulienne@suse.de, sjg@chromium.org, + jh80.chung@samsung.com, m.szyprowski@samsung.com, b.zolnierkie@samsung.com, + Sylwester Nawrocki +Subject: [PATCH v3 4/9] rpi4: shorten a mapping for the DRAM +Date: Tue, 12 May 2020 20:47:11 +0200 +Message-Id: <20200512184716.2869-5-s.nawrocki@samsung.com> +X-Mailer: git-send-email 2.17.1 +In-Reply-To: <20200512184716.2869-1-s.nawrocki@samsung.com> +X-Brightmail-Tracker: H4sIAAAAAAAAA0VSa0hTYRjm81x2XC5O0/JLLWPUj6J0YuQhpQv24/wKIQgzUpee3NBN2bxk + oS4Mzfs0dDIlh3jDvOVs3tPMqWFzpmiS1x9aZLMQU9KstXlm/Xue532f73le+AiEX4G5ERJZ + PCOXiWIEOBfVD22bzqV+7woVDhYfp16UNmNUcW4Y1WsuwKmZnQyMahyc51DmjEeA0j5dxii9 + phan3pgzMWqrTQ+otd4szpUDtGbRiNNlyvco/UwzgtKdmnkObZzrAHR+Wz2gm9umUFo3+jCI + COEGRDIxkkRG7n0pnCve2tWicUv4/W1LHq4ERiwbOBKQPA8/Npai2YBL8Mk6AFd/btjJDwBL + THMISzasRNXH2bcY2iftg1oAK7+asH+WpkIdYtvCSR+YZ8gHNuxCBsHp7RJgW0JIA4ANfbuo + beBMBsCcniLchlHyFPxdZNlrxSMvwkrLCmDjPOHzlv69Rx1Jf/hBN7QXDckaDlypWbGfcQ2O + j1fbDc5wdbjN3tUDWjorHFhDOoC53bMclqgAXBzW2h3+cG5sx1qDsPY7DZu7vFn5Kuxez0Jt + MiQPwpm1QzYZscIivRphZR58ksFnt0/CX/VqBxa7wZxlC8piGr6c+LSH+WQ+gB2tUSrgqfmf + pQWgHrgyCQppFKPwlTFJXgqRVJEgi/KKiJW2Auu3Gf0zvNkBXu3eHQAkAQROvOC0rlA+JkpU + JEsHACQQgQvvsaQzlM+LFCU/YOSxYfKEGEYxANwJVODK8638codPRonimWiGiWPk+1MHwtFN + CYQpQnVaT2nysfDE1aaIqtbArJWlneYF9eWFw7cmMt3zI/JC1lMLouP8/IzY5G2TIbVxqvCd + wXzEYEkp32whdEwVphuZnvFQjZWVI6iY+rYutIyf1SjXTtyQ3HybHmjYckraaA++J25AEi+o + xrizkuu6sv7Pr49W96fWVaVwBahCLPI5g8gVor/Jvg12MgMAAA== +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrPLMWRmVeSWpSXmKPExsVy+t/xu7q173fFGcx6xW2xccZ6VoupPfEW + e9/0s1nc+NXGarH2yF12izdtjYwWCyY/YbXYNms5m8XhN+2sFt+2bGO0eLu3k92B22PW/bNs + HrMbLrJ4zJt1gsVj56y77B5n7+xg9OjbsorRY/2Wqywem09XB3BE6dkU5ZeWpCpk5BeX2CpF + G1oY6RlaWugZmVjqGRqbx1oZmSrp29mkpOZklqUW6dsl6GV8+7OApeABW8XP/71sDYxnWbsY + OTkkBEwkjm6/zNzFyMUhJLCUUaJjUzuQwwGUkJKY36IEUSMs8edaFxtEzSdGif+9b5hAEmwC + hhK9R/sYQWwRgRCJF0evMIEUMQucZZRY1PkBbIOwgI1E955JbCA2i4CqxN9J/8HivAJWEov+ + P2WE2CAvsXrDAWYQm1PAWuL65mNgthBQzZ5v79gmMPItYGRYxSiSWlqcm55bbKRXnJhbXJqX + rpecn7uJERj424793LKDsetd8CFGAQ5GJR7eiPpdcUKsiWXFlbmHGCU4mJVEeFsyd8YJ8aYk + VlalFuXHF5XmpBYfYjQFOmois5Rocj4wKvNK4g1NDc0tLA3Njc2NzSyUxHk7BA7GCAmkJ5ak + ZqemFqQWwfQxcXBKNTCeUDjUsfdYk+GanwELP95YN2/J9NfGstu3nn42YcH/6UqTTE3bU24L + K74vEv6+x/hg276183j4TsoumBXpvTTv7cVjU+IfTC3dfey+2rcNU7fGmcuxiewVihLapvRL + 0n1/s5XyjSCz0n3PbGavd9gQt2xnnWCOWl68jfxdD++dF5ce1wrYx2xorcRSnJFoqMVcVJwI + AKKisECSAgAA +X-CMS-MailID: 20200512184829eucas1p10c67592f9af7879f51eee9bff8fa76d7 +X-Msg-Generator: CA +X-RootMTR: 20200512184829eucas1p10c67592f9af7879f51eee9bff8fa76d7 +X-EPHeader: CA +CMS-TYPE: 201P +X-CMS-RootMailID: 20200512184829eucas1p10c67592f9af7879f51eee9bff8fa76d7 +References: <20200512184716.2869-1-s.nawrocki@samsung.com> + +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +From: Marek Szyprowski + +Remove the overlap between DRAM and device's IO area. + +Signed-off-by: Marek Szyprowski +Signed-off-by: Sylwester Nawrocki +Reviewed-by: Nicolas Saenz Julienne +--- +Changes since v1: + - none. +--- + arch/arm/mach-bcm283x/init.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c +index 9966d6c..4295356 100644 +--- a/arch/arm/mach-bcm283x/init.c ++++ b/arch/arm/mach-bcm283x/init.c +@@ -38,7 +38,7 @@ static struct mm_region bcm2711_mem_map[] = { + { + .virt = 0x00000000UL, + .phys = 0x00000000UL, +- .size = 0xfe000000UL, ++ .size = 0xfc000000UL, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_INNER_SHARE + }, { + +From patchwork Tue May 12 18:47:12 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sylwester Nawrocki +X-Patchwork-Id: 1288730 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 + header.s=mail20170921 header.b=PpqM0F3J; + dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 49M6K33sdWz9sSW + for ; Wed, 13 May 2020 04:48:55 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 305E681CD4; + Tue, 12 May 2020 20:48:38 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.b="PpqM0F3J"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 2729181CA1; Tue, 12 May 2020 20:48:35 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com + [210.118.77.12]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 520C381CA0 + for ; Tue, 12 May 2020 20:48:32 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=s.nawrocki@samsung.com +Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) + by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id + 20200512184831euoutp0223716d2be7dd8466639bb75ecdcd79b0~OXGXwE2rE0645506455euoutp02c + for ; Tue, 12 May 2020 18:48:31 +0000 (GMT) +DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com + 20200512184831euoutp0223716d2be7dd8466639bb75ecdcd79b0~OXGXwE2rE0645506455euoutp02c +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; + s=mail20170921; t=1589309311; + bh=1pvJmD4788qVg9pTe/vSEzdnItJirsmIW08n7dgVDSA=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=PpqM0F3JtuV/Gbbx4WZDA0/EUnzelZKHiPHcezW/bOT3ROKOpL5P+hTILHd2Fa9az + AgjMlAoSUTV5jgyC183yxJiA00nZs3FMJ0Bs5apO3yGnMQ0VplTKbdtZOYCjfPLsW9 + X1PqGYiWoAETAzfxMLvtiQYLn2baNQR7KG6BB4jc= +Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by + eucas1p2.samsung.com (KnoxPortal) with ESMTP id + 20200512184831eucas1p28c8414af443b820cd0031316c0b5f158~OXGXgiZCQ0944309443eucas1p2q; + Tue, 12 May 2020 18:48:31 +0000 (GMT) +Received: from eucas1p2.samsung.com ( [182.198.249.207]) by + eusmges1new.samsung.com (EUCPMTA) with SMTP id 2E.FF.61286.F7FEABE5; Tue, 12 + May 2020 19:48:31 +0100 (BST) +Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by + eucas1p1.samsung.com (KnoxPortal) with ESMTPA id + 20200512184830eucas1p198b1439122e2da299c563726fe17f9ef~OXGXJNK8p2314823148eucas1p1B; + Tue, 12 May 2020 18:48:30 +0000 (GMT) +Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by + eusmtrp2.samsung.com (KnoxPortal) with ESMTP id + 20200512184830eusmtrp2079ea429a5356a2e5cc978b0d5f43d24~OXGXIonFW1654116541eusmtrp2p; + Tue, 12 May 2020 18:48:30 +0000 (GMT) +X-AuditID: cbfec7f2-f0bff7000001ef66-8a-5ebaef7f3368 +Received: from eusmtip1.samsung.com ( [203.254.199.221]) by + eusmgms2.samsung.com (EUCPMTA) with SMTP id E2.F8.07950.E7FEABE5; Tue, 12 + May 2020 19:48:30 +0100 (BST) +Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by + eusmtip1.samsung.com (KnoxPortal) with ESMTPA id + 20200512184830eusmtip128dac35d637f9caa48c5da04fe7aeb84~OXGWqET-G2778327783eusmtip1U; + Tue, 12 May 2020 18:48:30 +0000 (GMT) +From: Sylwester Nawrocki +To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com +Cc: james.quinlan@broadcom.com, nsaenzjulienne@suse.de, sjg@chromium.org, + jh80.chung@samsung.com, m.szyprowski@samsung.com, b.zolnierkie@samsung.com, + Sylwester Nawrocki +Subject: [PATCH v3 5/9] rpi4: add a mapping for the PCIe XHCI controller + MMIO registers (ARM 64bit) +Date: Tue, 12 May 2020 20:47:12 +0200 +Message-Id: <20200512184716.2869-6-s.nawrocki@samsung.com> +X-Mailer: git-send-email 2.17.1 +In-Reply-To: <20200512184716.2869-1-s.nawrocki@samsung.com> +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprPKsWRmVeSWpSXmKPExsWy7djP87r173fFGXxfxWKxccZ6VoupPfEW + e9/0s1nc+NXGarH2yF12izdtjYwWCyY/YbXYNms5m8XhN+2sFt+2bGO0eLu3k92B22PW/bNs + HrMbLrJ4zJt1gsVj56y77B5n7+xg9OjbsorRY/2Wqywem09XB3BEcdmkpOZklqUW6dslcGV8 + WriNvWCTYMWOfbvYGxgX8HUxcnJICJhITDy4ka2LkYtDSGAFo0TT213MEM4XRokzu3YwQjif + GSXajuxjg2npnd7MBJFYzihx7fJ5FriWpYe+M4NUsQkYSvQe7WMEsUUEAiSu/ZwGNopZ4Cij + xJr9f1hAEsICqRKNrx6CjWURUJX4Nm82WJxXwEriSu8/qHXyEqs3HAAbyilgLXF98zFmiPgy + domli0UgbBeJ39tnM0HYwhKvjm9hh7BlJP7vnA92qoRAM6NEz+7b7BDOBEaJ+8cXMEJUWUvc + OfcLaBsH0HmaEut36UOEHSWWbO5iBQlLCPBJ3HgrCBJmBjInbZvODBHmlehoE4KoVpH4vWo6 + 1AlSEt1P/rNA2B4St/YcYIUEUB8wgP6dZ5zAKD8LYdkCRsZVjOKppcW56anFhnmp5XrFibnF + pXnpesn5uZsYgcnm9L/jn3Ywfr2UdIhRgINRiYeXoXZXnBBrYllxZe4hRgkOZiUR3pbMnXFC + vCmJlVWpRfnxRaU5qcWHGKU5WJTEeY0XvYwVEkhPLEnNTk0tSC2CyTJxcEo1MM6MW6vHlv9O + LFWw4mzJiaOX1tgbcVh+DyhbVxBTPOG2iGxd2Z4Xll4nbb/t4i7Uli7/c69kR8TPP/0y3085 + Vj6bYJ3UkaklyinuIOjU32D/wGfFROcjPf0LmWOyko9vzpQ+8m5a1vbG6Ci9qXytx2L3WDz5 + PG/nWzffGb6Vz5lVNPRa7Y9PUmIpzkg01GIuKk4EAHeTlcEyAwAA +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrPLMWRmVeSWpSXmKPExsVy+t/xu7p173fFGbxeo2WxccZ6VoupPfEW + e9/0s1nc+NXGarH2yF12izdtjYwWCyY/YbXYNms5m8XhN+2sFt+2bGO0eLu3k92B22PW/bNs + HrMbLrJ4zJt1gsVj56y77B5n7+xg9OjbsorRY/2Wqywem09XB3BE6dkU5ZeWpCpk5BeX2CpF + G1oY6RlaWugZmVjqGRqbx1oZmSrp29mkpOZklqUW6dsl6GV8WriNvWCTYMWOfbvYGxgX8HUx + cnJICJhI9E5vZupi5OIQEljKKHGu/wJjFyMHUEJKYn6LEkSNsMSfa11sEDWfGCXO7z3LDJJg + EzCU6D3axwhiiwiESLw4egVsELPAWUaJRZ0fWEESwgLJEk17voPZLAKqEt/mzWYBsXkFrCSu + 9P5jg9ggL7F6wwGwoZwC1hLXNx8Ds4WAavZ8e8c2gZFvASPDKkaR1NLi3PTcYiO94sTc4tK8 + dL3k/NxNjMDA33bs55YdjF3vgg8xCnAwKvHwRtTvihNiTSwrrsw9xCjBwawkwtuSuTNOiDcl + sbIqtSg/vqg0J7X4EKMp0FETmaVEk/OBUZlXEm9oamhuYWlobmxubGahJM7bIXAwRkggPbEk + NTs1tSC1CKaPiYNTqoGx5PTNH9vfNYXt1fTI2Ri57W1dk3bLB5Oe1B677C7vZQ+UNDK97736 + GtxycMG/FZ1LPORF49uy7zIsCZ7yWaS86edL/cnPJy8yvPHwlfWjq88f3fuxPeLDtLv3DQwX + HQjYNnX2LFsJnrKN/Ie9Fuzg5Z80z6DQUyG07uzDQvtHUSKTnBo2Ki3xUmIpzkg01GIuKk4E + AGD+HDOSAgAA +X-CMS-MailID: 20200512184830eucas1p198b1439122e2da299c563726fe17f9ef +X-Msg-Generator: CA +X-RootMTR: 20200512184830eucas1p198b1439122e2da299c563726fe17f9ef +X-EPHeader: CA +CMS-TYPE: 201P +X-CMS-RootMailID: 20200512184830eucas1p198b1439122e2da299c563726fe17f9ef +References: <20200512184716.2869-1-s.nawrocki@samsung.com> + +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +From: Marek Szyprowski + +Create a non-cacheable mapping for the 0x600000000 physical memory region, +where MMIO registers for the PCIe XHCI controller are instantiated by the +PCIe bridge. + +Signed-off-by: Marek Szyprowski +Signed-off-by: Sylwester Nawrocki +Reviewed-by: Nicolas Saenz Julienne +--- +Changes since v2: + - fixed typo MAX_MAP_MAX_ENTRIES -> MEM_MAP_MAX_ENTRIES +Changes since v1: + - none. +--- + arch/arm/mach-bcm283x/init.c | 18 +++++++++++++++--- + 1 file changed, 15 insertions(+), 3 deletions(-) + +diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c +index 4295356..9f5bca3 100644 +--- a/arch/arm/mach-bcm283x/init.c ++++ b/arch/arm/mach-bcm283x/init.c +@@ -11,10 +11,15 @@ + #include + #include + ++#define BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS 0x600000000UL ++#define BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE 0x800000UL ++ + #ifdef CONFIG_ARM64 + #include + +-static struct mm_region bcm283x_mem_map[] = { ++#define MEM_MAP_MAX_ENTRIES (4) ++ ++static struct mm_region bcm283x_mem_map[MEM_MAP_MAX_ENTRIES] = { + { + .virt = 0x00000000UL, + .phys = 0x00000000UL, +@@ -34,7 +39,7 @@ static struct mm_region bcm283x_mem_map[] = { + } + }; + +-static struct mm_region bcm2711_mem_map[] = { ++static struct mm_region bcm2711_mem_map[MEM_MAP_MAX_ENTRIES] = { + { + .virt = 0x00000000UL, + .phys = 0x00000000UL, +@@ -49,6 +54,13 @@ static struct mm_region bcm2711_mem_map[] = { + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, { ++ .virt = BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS, ++ .phys = BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS, ++ .size = BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE, ++ .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | ++ PTE_BLOCK_NON_SHARE | ++ PTE_BLOCK_PXN | PTE_BLOCK_UXN ++ }, { + /* List terminator */ + 0, + } +@@ -71,7 +83,7 @@ static void _rpi_update_mem_map(struct mm_region *pd) + { + int i; + +- for (i = 0; i < 2; i++) { ++ for (i = 0; i < MEM_MAP_MAX_ENTRIES; i++) { + mem_map[i].virt = pd[i].virt; + mem_map[i].phys = pd[i].phys; + mem_map[i].size = pd[i].size; + +From patchwork Tue May 12 18:47:13 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sylwester Nawrocki +X-Patchwork-Id: 1288732 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 + header.s=mail20170921 header.b=OrqQU0UN; + dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 49M6KH0ykgz9sSW + for ; Wed, 13 May 2020 04:49:07 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 43B8081CF5; + Tue, 12 May 2020 20:48:39 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.b="OrqQU0UN"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id A041C81CD4; Tue, 12 May 2020 20:48:36 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com + [210.118.77.12]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id AF9CA81CB4 + for ; Tue, 12 May 2020 20:48:33 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=s.nawrocki@samsung.com +Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) + by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id + 20200512184833euoutp02024bfc004b3a38e7abe168cdd77f5dbb~OXGZmHDwG0461204612euoutp024 + for ; Tue, 12 May 2020 18:48:33 +0000 (GMT) +DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com + 20200512184833euoutp02024bfc004b3a38e7abe168cdd77f5dbb~OXGZmHDwG0461204612euoutp024 +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; + s=mail20170921; t=1589309313; + bh=gVSWmpdQ36VgD8o/W/rduik6grJJCng+jGVfBPUAF8U=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=OrqQU0UN8Z7QKS+4Unt5PDDDw3i2iYhOJT4TdbEKloVbg23X7ARl1QJTAaFBBNzJT + 8AXLlGfGZj4mJo1gPBdQ/TOVDG7RDy4i/+ujixIckKJXDA+AjclrJdeEAcngq0Ulnn + NbOUAtPbCSEM0S/0RPnWwC90UpPAmcqGeCkVrazE= +Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by + eucas1p1.samsung.com (KnoxPortal) with ESMTP id + 20200512184833eucas1p1dc7466ebb73dd2f787e4253f171a3b9d~OXGZbAMzF2083120831eucas1p1w; + Tue, 12 May 2020 18:48:33 +0000 (GMT) +Received: from eucas1p2.samsung.com ( [182.198.249.207]) by + eusmges2new.samsung.com (EUCPMTA) with SMTP id F5.AA.60679.18FEABE5; Tue, 12 + May 2020 19:48:33 +0100 (BST) +Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by + eucas1p1.samsung.com (KnoxPortal) with ESMTPA id + 20200512184832eucas1p1b75fca7f5ed42e3cb38f98410f51f1ad~OXGZA7swA2288022880eucas1p17; + Tue, 12 May 2020 18:48:32 +0000 (GMT) +Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by + eusmtrp2.samsung.com (KnoxPortal) with ESMTP id + 20200512184832eusmtrp2c7ee802f60d431184d93a34cbe4b5279~OXGZAXbrx1654916549eusmtrp2o; + Tue, 12 May 2020 18:48:32 +0000 (GMT) +X-AuditID: cbfec7f4-0e5ff7000001ed07-fd-5ebaef8142ae +Received: from eusmtip1.samsung.com ( [203.254.199.221]) by + eusmgms2.samsung.com (EUCPMTA) with SMTP id A3.F8.07950.08FEABE5; Tue, 12 + May 2020 19:48:32 +0100 (BST) +Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by + eusmtip1.samsung.com (KnoxPortal) with ESMTPA id + 20200512184832eusmtip1ffa9d15a350dcc63557ad23be081cb76~OXGYefx_f2778327783eusmtip1V; + Tue, 12 May 2020 18:48:32 +0000 (GMT) +From: Sylwester Nawrocki +To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com +Cc: james.quinlan@broadcom.com, nsaenzjulienne@suse.de, sjg@chromium.org, + jh80.chung@samsung.com, m.szyprowski@samsung.com, b.zolnierkie@samsung.com, + Sylwester Nawrocki +Subject: [PATCH v3 6/9] linux/bitfield.h: Add primitives for manipulating + bitfields both in host- and fixed-endian +Date: Tue, 12 May 2020 20:47:13 +0200 +Message-Id: <20200512184716.2869-7-s.nawrocki@samsung.com> +X-Mailer: git-send-email 2.17.1 +In-Reply-To: <20200512184716.2869-1-s.nawrocki@samsung.com> +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrAKsWRmVeSWpSXmKPExsWy7djP87qN73fFGdy/yWqxccZ6VoupPfEW + e9/0s1nc+NXGarH2yF12izdtjYwWCyY/YbXYNms5m8XhN+2sFt+2bGO0eLu3k92B22PW/bNs + HrMbLrJ4zJt1gsVj56y77B5n7+xg9OjbsorRY/2Wqywem09XB3BEcdmkpOZklqUW6dslcGW8 + v/6XuWCuSMXm151sDYzHBboYOTkkBEwkrv3+z9LFyMUhJLCCUeLqqz+MEM4XRom+t9+gnM+M + Em3XbrLAtGy428wOkVjOKPG0YSMbXMvD1X3sIFVsAoYSvUf7GEFsEYEAiWs/p4GNYhY4yiix + Zv8fsFHCAiUSs/9OZgWxWQRUJZbeOQXWwCtgJfH35FwmiHXyEqs3HGAGsTkFrCWubz7GDDJI + QmAVu8S60+uhbnKRmL9tJTuELSzx6vgWKFtG4v/O+UwQDc2MEj27b7NDOBMYJe4fX8AIUWUt + cefcL6AnOIDu05RYv0sfIuwo0Xb0KTtIWEKAT+LGW0GQMDOQOWnbdGaIMK9ER5sQRLWKxO9V + 06FulpLofvIf6jQPiebdl6Ah1McocXD2TqYJjPKzEJYtYGRcxSieWlqcm55abJSXWq5XnJhb + XJqXrpecn7uJEZhuTv87/mUH464/SYcYBTgYlXh4GWp3xQmxJpYVV+YeYpTgYFYS4W3J3Bkn + xJuSWFmVWpQfX1Sak1p8iFGag0VJnNd40ctYIYH0xJLU7NTUgtQimCwTB6dUA6ODfX6J8vRP + kS+KX7b+sr18ZKLND/H+CxvqW3meFD769EE8d07Cr1VxR9y0XX2uzm7Ya7jTOKjbT6fT7NTx + ctavcrxzXr8sF/94MOp3a0neVQeztyzlwSmL/z0VS1j6k2HvYg9180Vfo4KOzvp5jX/63V7/ + KbVNp0sWCu+TUPHIenjq2JX2Xy5KLMUZiYZazEXFiQAsWJztMwMAAA== +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrHLMWRmVeSWpSXmKPExsVy+t/xu7oN73fFGWxZpGGxccZ6VoupPfEW + e9/0s1nc+NXGarH2yF12izdtjYwWCyY/YbXYNms5m8XhN+2sFt+2bGO0eLu3k92B22PW/bNs + HrMbLrJ4zJt1gsVj56y77B5n7+xg9OjbsorRY/2Wqywem09XB3BE6dkU5ZeWpCpk5BeX2CpF + G1oY6RlaWugZmVjqGRqbx1oZmSrp29mkpOZklqUW6dsl6GW8v/6XuWCuSMXm151sDYzHBboY + OTkkBEwkNtxtZu9i5OIQEljKKNG88z5jFyMHUEJKYn6LEkSNsMSfa11sILaQwCdGiQPbpUFs + NgFDid6jfYwgtohAiMSLo1eYQOYwC5xllFjU+YEVJCEsUCRxef86JhCbRUBVYumdU2ANvAJW + En9PzmWCWCAvsXrDAWYQm1PAWuL65mPMEMusJPZ8e8c2gZFvASPDKkaR1NLi3PTcYiO94sTc + 4tK8dL3k/NxNjMCw33bs55YdjF3vgg8xCnAwKvHwRtTvihNiTSwrrsw9xCjBwawkwtuSuTNO + iDclsbIqtSg/vqg0J7X4EKMp0FETmaVEk/OBMZlXEm9oamhuYWlobmxubGahJM7bIXAwRkgg + PbEkNTs1tSC1CKaPiYNTqoGRL+bltk22/7+9+eEy57X8YZkID4Uj5VoKoSuTez9IRTw9cJA9 + f+mEOlbeZyvTnFlM/r3fsWl2FUuAYz97waprdvs3vpx9QyUl8rbyZJloPYMp4k5TRTm2vecX + qjC8NG3F+bgO9kV25i0VwYy7Fnjm/ZmhHZI93Y7bduZik0DpvXJcJvwfj8opsRRnJBpqMRcV + JwIAdir705ECAAA= +X-CMS-MailID: 20200512184832eucas1p1b75fca7f5ed42e3cb38f98410f51f1ad +X-Msg-Generator: CA +X-RootMTR: 20200512184832eucas1p1b75fca7f5ed42e3cb38f98410f51f1ad +X-EPHeader: CA +CMS-TYPE: 201P +X-CMS-RootMailID: 20200512184832eucas1p1b75fca7f5ed42e3cb38f98410f51f1ad +References: <20200512184716.2869-1-s.nawrocki@samsung.com> + +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +From: Nicolas Saenz Julienne + +Imports Al Viro's original Linux commit 00b0c9b82663a, which contains +an in depth explanation and two fixes from Johannes Berg: + e7d4a95da86e0 "bitfield: fix *_encode_bits()", + 37a3862e12382 "bitfield: add u8 helpers". + +Signed-off-by: Nicolas Saenz Julienne +[s.nawrocki: added empty lines between functions and macros] +Signed-off-by: Sylwester Nawrocki +--- +Changes since v1: + - added empty lines between functions and macros. + +Changes since RFC: + - new patch. +--- + include/linux/bitfield.h | 50 ++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 50 insertions(+) + +diff --git a/include/linux/bitfield.h b/include/linux/bitfield.h +index 8b9d6ff..7acba4c 100644 +--- a/include/linux/bitfield.h ++++ b/include/linux/bitfield.h +@@ -103,4 +103,54 @@ + (typeof(_mask))(((_reg) & (_mask)) >> __bf_shf(_mask)); \ + }) + ++extern void __compiletime_error("value doesn't fit into mask") ++__field_overflow(void); ++extern void __compiletime_error("bad bitfield mask") ++__bad_mask(void); ++static __always_inline u64 field_multiplier(u64 field) ++{ ++ if ((field | (field - 1)) & ((field | (field - 1)) + 1)) ++ __bad_mask(); ++ return field & -field; ++} ++static __always_inline u64 field_mask(u64 field) ++{ ++ return field / field_multiplier(field); ++} ++ ++#define ____MAKE_OP(type,base,to,from) \ ++static __always_inline __##type type##_encode_bits(base v, base field) \ ++{ \ ++ if (__builtin_constant_p(v) && (v & ~field_mask(field))) \ ++ __field_overflow(); \ ++ return to((v & field_mask(field)) * field_multiplier(field)); \ ++} \ ++static __always_inline __##type type##_replace_bits(__##type old, \ ++ base val, base field) \ ++{ \ ++ return (old & ~to(field)) | type##_encode_bits(val, field); \ ++} \ ++static __always_inline void type##p_replace_bits(__##type *p, \ ++ base val, base field) \ ++{ \ ++ *p = (*p & ~to(field)) | type##_encode_bits(val, field); \ ++} \ ++static __always_inline base type##_get_bits(__##type v, base field) \ ++{ \ ++ return (from(v) & field)/field_multiplier(field); \ ++} ++ ++#define __MAKE_OP(size) \ ++ ____MAKE_OP(le##size,u##size,cpu_to_le##size,le##size##_to_cpu) \ ++ ____MAKE_OP(be##size,u##size,cpu_to_be##size,be##size##_to_cpu) \ ++ ____MAKE_OP(u##size,u##size,,) ++ ++____MAKE_OP(u8,u8,,) ++__MAKE_OP(16) ++__MAKE_OP(32) ++__MAKE_OP(64) ++ ++#undef __MAKE_OP ++#undef ____MAKE_OP ++ + #endif + +From patchwork Tue May 12 18:47:14 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sylwester Nawrocki +X-Patchwork-Id: 1288733 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 + header.s=mail20170921 header.b=Fm50fcBL; + dkim-atps=neutral +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 49M6KV3jXsz9sRR + for ; Wed, 13 May 2020 04:49:18 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 7663481CC1; + Tue, 12 May 2020 20:48:44 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.b="Fm50fcBL"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 497CE81CE3; Tue, 12 May 2020 20:48:41 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com + [210.118.77.11]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 53C8F81CD9 + for ; Tue, 12 May 2020 20:48:38 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=s.nawrocki@samsung.com +Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) + by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id + 20200512184838euoutp019e25bda09342202a0eda043f595e3c22~OXGd7TgBd0706107061euoutp01m + for ; Tue, 12 May 2020 18:48:38 +0000 (GMT) +DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com + 20200512184838euoutp019e25bda09342202a0eda043f595e3c22~OXGd7TgBd0706107061euoutp01m +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; + s=mail20170921; t=1589309318; + bh=HzMTU/TXuht/pqPHaK0Ik2xR+VGQDcf9rtO4VMSyKJM=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=Fm50fcBLGZyjlJzMo4Jk2kL21fNnnNiYQPGuvZ9uYJHcoSJzOfuJZKLNBoAFhG6Q1 + 7NBIjapXv/0ZFqIcyF8vg14dGk5aNjSHNtjyeLaSxxf0+jcM23co7gshLtNg2WB2Jv + 1m1YEKUU/fA0BznXct760bitBngMWoUq+d7qDQHM= +Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by + eucas1p1.samsung.com (KnoxPortal) with ESMTP id + 20200512184836eucas1p1135921d83070d86d6e8b1bb64b8f8be4~OXGczeB0p2080520805eucas1p1w; + Tue, 12 May 2020 18:48:36 +0000 (GMT) +Received: from eucas1p2.samsung.com ( [182.198.249.207]) by + eusmges3new.samsung.com (EUCPMTA) with SMTP id 7F.03.60698.48FEABE5; Tue, 12 + May 2020 19:48:36 +0100 (BST) +Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by + eucas1p2.samsung.com (KnoxPortal) with ESMTPA id + 20200512184836eucas1p2f357a332cd99d6e287a74405d75c0985~OXGcRwgxc0943909439eucas1p25; + Tue, 12 May 2020 18:48:36 +0000 (GMT) +Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by + eusmtrp2.samsung.com (KnoxPortal) with ESMTP id + 20200512184836eusmtrp2d133993e54b8ae3b6e45209e4cf24ca5~OXGcRC2XF1654116541eusmtrp2q; + Tue, 12 May 2020 18:48:36 +0000 (GMT) +X-AuditID: cbfec7f5-a0fff7000001ed1a-92-5ebaef84302e +Received: from eusmtip1.samsung.com ( [203.254.199.221]) by + eusmgms2.samsung.com (EUCPMTA) with SMTP id 64.F8.07950.48FEABE5; Tue, 12 + May 2020 19:48:36 +0100 (BST) +Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by + eusmtip1.samsung.com (KnoxPortal) with ESMTPA id + 20200512184835eusmtip109d2fc69bebbcdfc5800da0da0dc6fc3~OXGbx_UD72778327783eusmtip1W; + Tue, 12 May 2020 18:48:35 +0000 (GMT) +From: Sylwester Nawrocki +To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com +Cc: james.quinlan@broadcom.com, nsaenzjulienne@suse.de, sjg@chromium.org, + jh80.chung@samsung.com, m.szyprowski@samsung.com, b.zolnierkie@samsung.com, + Sylwester Nawrocki +Subject: [PATCH v3 7/9] pci: Add some PCI Express capability register offset + definitions +Date: Tue, 12 May 2020 20:47:14 +0200 +Message-Id: <20200512184716.2869-8-s.nawrocki@samsung.com> +X-Mailer: git-send-email 2.17.1 +In-Reply-To: <20200512184716.2869-1-s.nawrocki@samsung.com> +X-Brightmail-Tracker: H4sIAAAAAAAAA0WSfUhTURjGObt323U6uV4FDysQhoUFaaLgJUUqpW4QaP1lxrSZFzXnB7vT + siBXyTS/MXQyQ6dBs6lpOYabzGqls0Qtxa9STDHF0kLLcqYt59X67/c+53nO+3A4GELUckVY + SrqClqdLZWKeADX22AeP5H0zxx1VLviTT6pbuWRlcTxpWSrjkeMbKi7Z8mqKTy6pbgFSe2+O + Sxo1Oh75cimfS/40GAG5bLnLP+5Kaab7eVSN8h1K1Wp6UcqkmeJT/ZMdgCo16AHVahhBqfa+ + G9FYrCAskZalZNPygPBLguTBolkks8v9mvK1GlGCdddC4IJBPBh+LankFwIBRuCNAFavlvHY + 4QeAM58+ok4XgX8HULUQtZeoaejisCYdgGrdEPdfQmfJ5zhdPDwQlnSXAid74dFw1F4FnCYE + 7waw+dnmzrWeeCwsGOjdCaD4AWhvuo84WYgfg1vvGzjsOh/Y1PZ8R3fBQ+FYew/C6g/5cP6B + H8uRcO2LhceyJ/xsM/BZ3g8dprqdqhC/A2Bx5wc+O5QDOG3TAtYVCicHNrbT2Ha9Q7DVHMDK + J+DKozXglCHuDseXPZwyso0VRjXCykJYoCJYty/8rVfvVhbBojkHyjIF+yre7j5pKYCWF/1o + OfDR/F+mBUAPvOksJi2JZoLS6av+jDSNyUpP8r+ckfYUbP+avj+2tQ7QtZlgBTgGxG7CmFxz + HMGVZjM5aVYAMUTsJcxLMcURwkRpznVanhEvz5LRjBXsw1CxtzCoYVFC4ElSBZ1K05m0fO+U + g7mIlOCg92jfROiKbSLLrf4cdabRivg9doQREZ0z4cGySNFJ02xeSU3RWcEUNbKuNtd7RNAJ + FaYW/akoEedmSArhMNpDtAXJt+fDJb+ar2z4etddOJ9rLpD0SqrGKmN835we2qoYlcQr/Vwj + U1eNwQp1m+bicEeTTr94UVESmz8cJ0aZZGngYUTOSP8C7G85NjEDAAA= +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrPLMWRmVeSWpSXmKPExsVy+t/xu7ot73fFGTRO47HYOGM9q8XUnniL + vW/62Sxu/GpjtVh75C67xZu2RkaLBZOfsFpsm7WczeLwm3ZWi29btjFavN3bye7A7THr/lk2 + j9kNF1k85s06weKxc9Zddo+zd3YwevRtWcXosX7LVRaPzaerAzii9GyK8ktLUhUy8otLbJWi + DS2M9AwtLfSMTCz1DI3NY62MTJX07WxSUnMyy1KL9O0S9DLOdz9iLtjHV9FwcjpzA+MP7i5G + Tg4JAROJ2Yv2MXUxcnEICSxllHj+p5+ti5EDKCElMb9FCaJGWOLPtS42iJpPjBITXm1gBEmw + CRhK9B7tA7NFBEIkXhy9AjaIWeAso8Sizg+sIAlhgQiJHXOusoDYLAKqEj9Xz2EGsXkFrCT+ + 3lrEBLFBXmL1hgNgcU4Ba4nrm4+B2UJANXu+vWObwMi3gJFhFaNIamlxbnpusZFecWJucWle + ul5yfu4mRmDgbzv2c8sOxq53wYcYBTgYlXh4I+p3xQmxJpYVV+YeYpTgYFYS4W3J3BknxJuS + WFmVWpQfX1Sak1p8iNEU6KiJzFKiyfnAqMwriTc0NTS3sDQ0NzY3NrNQEuftEDgYIySQnliS + mp2aWpBaBNPHxMEp1cCY/4XD7PPi+S+2KkXMPlP5dGW7dVZWdvNlA7N3Sw6+ZOOuq5RnEq38 + /Hri8TyzzOI1Zop5dQadajuPpBekXn9f6P/3t+Mlo5d+fKvCcsUu+u4L59j6PlMo6vszCVXn + A0d2PnB/kCX47mLjVS3XtoS1P7J82hflcfkF+dxsDLSex/XRxFGj5roSS3FGoqEWc1FxIgBl + vUv9kgIAAA== +X-CMS-MailID: 20200512184836eucas1p2f357a332cd99d6e287a74405d75c0985 +X-Msg-Generator: CA +X-RootMTR: 20200512184836eucas1p2f357a332cd99d6e287a74405d75c0985 +X-EPHeader: CA +CMS-TYPE: 201P +X-CMS-RootMailID: 20200512184836eucas1p2f357a332cd99d6e287a74405d75c0985 +References: <20200512184716.2869-1-s.nawrocki@samsung.com> + +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +Add PCI Express capability definitions required by the Broadcom +STB PCIe controller driver. + +Signed-off-by: Sylwester Nawrocki +Reviewed-by: Bin Meng +Reviewed-by: Nicolas Saenz Julienne +--- +Changes since v2: + - added Current Link Speed defines. +Changes since v1: + - none. +Changes since RFC: + - ensure the entries are added in order, sorted by ascending + address values. +--- + include/pci.h | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/include/pci.h b/include/pci.h +index dfdbb32..ff5f620 100644 +--- a/include/pci.h ++++ b/include/pci.h +@@ -479,11 +479,20 @@ + #define PCI_EXP_DEVCTL 8 /* Device Control */ + #define PCI_EXP_DEVCTL_BCR_FLR 0x8000 /* Bridge Configuration Retry / FLR */ + #define PCI_EXP_LNKCAP 12 /* Link Capabilities */ ++#define PCI_EXP_LNKCAP_SLS 0x0000000f /* Supported Link Speeds */ ++#define PCI_EXP_LNKCAP_MLW 0x000003f0 /* Maximum Link Width */ + #define PCI_EXP_LNKCAP_DLLLARC 0x00100000 /* Data Link Layer Link Active Reporting Capable */ + #define PCI_EXP_LNKSTA 18 /* Link Status */ ++#define PCI_EXP_LNKSTA_CLS 0x000f /* Current Link Speed */ ++#define PCI_EXP_LNKSTA_CLS_2_5GB 0x0001 /* Current Link Speed 2.5GT/s */ ++#define PCI_EXP_LNKSTA_CLS_5_0GB 0x0002 /* Current Link Speed 5.0GT/s */ ++#define PCI_EXP_LNKSTA_CLS_8_0GB 0x0003 /* Current Link Speed 8.0GT/s */ ++#define PCI_EXP_LNKSTA_NLW 0x03f0 /* Negotiated Link Width */ ++#define PCI_EXP_LNKSTA_NLW_SHIFT 4 /* start of NLW mask in link status */ + #define PCI_EXP_LNKSTA_DLLLA 0x2000 /* Data Link Layer Link Active */ + #define PCI_EXP_SLTCAP 20 /* Slot Capabilities */ + #define PCI_EXP_SLTCAP_PSN 0xfff80000 /* Physical Slot Number */ ++#define PCI_EXP_LNKCTL2 48 /* Link Control 2 */ + + /* Include the ID list */ + + +From patchwork Tue May 12 18:47:15 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sylwester Nawrocki +X-Patchwork-Id: 1288734 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 + header.s=mail20170921 header.b=BIPbrQ8g; + dkim-atps=neutral +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 49M6Kj3M0tz9sRR + for ; Wed, 13 May 2020 04:49:29 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 185C181CF7; + Tue, 12 May 2020 20:48:49 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.b="BIPbrQ8g"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 26C8D81D0A; Tue, 12 May 2020 20:48:45 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com + [210.118.77.12]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 1403981CFD + for ; Tue, 12 May 2020 20:48:41 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=s.nawrocki@samsung.com +Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) + by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id + 20200512184840euoutp0291a9b700643a42d241b5e145554cb765~OXGfyehRC0461204612euoutp027 + for ; Tue, 12 May 2020 18:48:40 +0000 (GMT) +DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com + 20200512184840euoutp0291a9b700643a42d241b5e145554cb765~OXGfyehRC0461204612euoutp027 +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; + s=mail20170921; t=1589309320; + bh=TE9MyxK4mFntVW0fX+JmwIIwSpgKd4htbD5XCXxsM1I=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=BIPbrQ8gtigJfiy8ORfo+Qpp6HkymthVnUJBjoJlhoRKQAFXeIndDOOroFN8+Givz + 5kQXtvIJNzzZLnA1WeEtInnFBydhbpbY34BCuDFzq0lH7QCPH4ZHj7ScIRySxzJNEt + gdGeQ4yOBI/arQQSbBp77pL23dh1EFNbN/7gAdNw= +Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by + eucas1p2.samsung.com (KnoxPortal) with ESMTP id + 20200512184839eucas1p2fd05e5c1731867685fef1171042b653c~OXGfJVP1W2380523805eucas1p2c; + Tue, 12 May 2020 18:48:39 +0000 (GMT) +Received: from eucas1p1.samsung.com ( [182.198.249.206]) by + eusmges1new.samsung.com (EUCPMTA) with SMTP id 0F.FF.61286.78FEABE5; Tue, 12 + May 2020 19:48:39 +0100 (BST) +Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by + eucas1p2.samsung.com (KnoxPortal) with ESMTPA id + 20200512184838eucas1p249588f9ee76dcb5a10209fcb7de01fae~OXGegIxSM0944309443eucas1p2t; + Tue, 12 May 2020 18:48:38 +0000 (GMT) +Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by + eusmtrp1.samsung.com (KnoxPortal) with ESMTP id + 20200512184838eusmtrp1b8fcb72a4b1949c5b25111f77829cebe~OXGefeG9e0405704057eusmtrp1W; + Tue, 12 May 2020 18:48:38 +0000 (GMT) +X-AuditID: cbfec7f2-f0bff7000001ef66-94-5ebaef873740 +Received: from eusmtip1.samsung.com ( [203.254.199.221]) by + eusmgms1.samsung.com (EUCPMTA) with SMTP id 9E.DA.08375.68FEABE5; Tue, 12 + May 2020 19:48:38 +0100 (BST) +Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by + eusmtip1.samsung.com (KnoxPortal) with ESMTPA id + 20200512184838eusmtip1e590ff27b66706ef16e7b7683ec1cc3d~OXGd_Ln563146531465eusmtip1X; + Tue, 12 May 2020 18:48:38 +0000 (GMT) +From: Sylwester Nawrocki +To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com +Cc: james.quinlan@broadcom.com, nsaenzjulienne@suse.de, sjg@chromium.org, + jh80.chung@samsung.com, m.szyprowski@samsung.com, b.zolnierkie@samsung.com, + Sylwester Nawrocki +Subject: [PATCH v3 8/9] pci: Add driver for Broadcom BCM2711 SoC PCIe + controller +Date: Tue, 12 May 2020 20:47:15 +0200 +Message-Id: <20200512184716.2869-9-s.nawrocki@samsung.com> +X-Mailer: git-send-email 2.17.1 +In-Reply-To: <20200512184716.2869-1-s.nawrocki@samsung.com> +X-Brightmail-Tracker: H4sIAAAAAAAAA0WSe0hTcRTH/Xkfu65m12n5S4XhKqgsHyh40bSC/rgRyQgMKpyueZmWTtnU + 0iiMytmcTrdKnWBm4TNdzTVfmLbyEaI9wLJSJBhCqQSViU5Wu95J/33O95zvOYfDIRDhfSyI + yFTmMSqlLEuM81HbyOrkQc2PPmnkQjdJPa0xY9RdXSo1sKjHqem1EozqeDXLoxZLrgOqwejA + KJupGadeLmow6o/VBqilgdu8I1to09wETtcVv0PpetMYSveaZnn0xEwPoCusbYA2W6dQumv8 + ioQ4yz+UzmRlFjCqiMQ0fkadqwPJfWgBl/WvzWgxMFUBLfAhIBkDn3VrUJaFZAuAL+xxWsB3 + 828AHxtmcC74BeCKed5702EsH0O5RDOAJY9WPHa3RdNygmWcjILlwxUbIwJICfyweg+wBoQc + drcdXHcbCMKfPAXN1sNsDUrugYsdeoRlARkHay1TCDdMBNufDG2wDxkPP3aNIGwfSDbx4ODQ + W89Gx+Cas8nD/vD7qJXHcQgcN+pQznADQF3/Fx4XVAI4N9rguUA8nJlcw9mNEHIfNPdFcPJR + 6HLewlgZkr5wesmPlRE3GmzVCCcLYGmJkKveDZ1t1Z4VgmCZ4y/KMQ2nmzu9uWNVAFjb/ACp + BCLT/2ENALSBQCZfna1g1FFK5lK4WpatzlcqwuU52Rbgfptx1+jPHrD8/rwdkAQQbxV4Xe2T + CjFZgbow2w4ggYgDBDcze6VCQbqssIhR5aSq8rMYtR0EE6g4UBDd+C1FSCpkecxFhsllVJtZ + b8InqBh0++ZJtMtarcsiSIqxDPkZOlun8OBtjuQDjV7zocvHd+iSQyIXUgoLqhrl1zD+emd0 + GhlW018lb2/MfX4nLKe+CMZLkwYUVlqpD3WezqyN3RlSHphgM+2dKN31OUG+XeI4+fWTwUdU + UI/56USCC3gkk2g8FyttLVO9OWPOE6PqDFnUfkSllv0DEe0vVDIDAAA= +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpkkeLIzCtJLcpLzFFi42I5/e/4Xd2297viDGbcUrbYOGM9q8XUnniL + vW/62Sxu/GpjtVh75C67xZu2RkaLBZOfsFpsm7WczeLwm3ZWi29btjFavN3bye7A7THr/lk2 + j9kNF1k85s06weKxc9Zddo+zd3YwevRtWcXosX7LVRaPzaerAzii9GyK8ktLUhUy8otLbJWi + DS2M9AwtLfSMTCz1DI3NY62MTJX07WxSUnMyy1KL9O0S9DJm/1vLXLB4E2NF/8n1LA2MsyYy + djFyckgImEhM7j3B0sXIxSEksJRR4tmUu+xdjBxACSmJ+S1KEDXCEn+udbFB1HxilOib8JkZ + JMEmYCjRe7QPbJCIQIjEi6NXmECKmAXOMkos6vzACpIQFgiQuLD+PlgDi4CqxJu1/WA2r4CV + xMxNV5khNshLrN5wAMzmFLCWuL75GJgtBFSz59s7tgmMfAsYGVYxiqSWFuem5xYb6hUn5haX + 5qXrJefnbmIEBv+2Yz8372C8tDH4EKMAB6MSDy9D7a44IdbEsuLK3EOMEhzMSiK8LZk744R4 + UxIrq1KL8uOLSnNSiw8xmgIdNZFZSjQ5HxiZeSXxhqaG5haWhubG5sZmFkrivB0CB2OEBNIT + S1KzU1MLUotg+pg4OKUaGJPlvkyzyk+preH72cpxeeuD0O6oZUuNDc6o7P/6ZEOS840NPztO + zFocIGBSrq8toH7DTqlo+xFl5cUxn++VzqmJ1dnc+TTr4cFVZVYcppGhk4w3f/jD9fxs3+WL + Wnb8zSL+Ns2veIuTnb2qf8vebr9gOEl60xZ9E5XA+gz5i8fX7pF+yWCWpsRSnJFoqMVcVJwI + AL42I8OUAgAA +X-CMS-MailID: 20200512184838eucas1p249588f9ee76dcb5a10209fcb7de01fae +X-Msg-Generator: CA +X-RootMTR: 20200512184838eucas1p249588f9ee76dcb5a10209fcb7de01fae +X-EPHeader: CA +CMS-TYPE: 201P +X-CMS-RootMailID: 20200512184838eucas1p249588f9ee76dcb5a10209fcb7de01fae +References: <20200512184716.2869-1-s.nawrocki@samsung.com> + +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +This patch adds basic driver PCI Express controller found on Broadcom +set-top-box SoCs, e.g. BCM2711. +The code is based on Linux upstream driver (pcie-brcmstb.c) with MSI +handling removed. The inbound access memory region is not currently +parsed from dma-ranges DT property and a fixed 3GB region is used. + +The patch has been tested on RPI4 board, i.e. on BCM2711 SoC with VL805 +USB Host Controller. + +Signed-off-by: Nicolas Saenz Julienne +Signed-off-by: Sylwester Nawrocki +--- +Changes since v2: + - removed MDO_RD_DONE, MDIO_WT_DONE macro definitions, + - updated the Kconfig entry help text, + - reordered #include entries to match the coding style, + - s/udev/dev, + - s/ENODEV/EINVAL in brcm_pcie_probe() and brcm_pcie_config_address() + functions, + - Simplified brcm_pcie_mdio_{read, write} functions (readl_poll_timeout), + - shortened register bit fields macro definitions, + - dropped brcm_pcie_perst_set() and brcm_pcie_bridge_sw_init_set() + function in favour of direct clrbits_le32/setbits_le32 calls, + - use setbits_le32/clrbits_le32/clrsetbits_le32 instead of + readl(), u32p_replace_bits(), writel() sequence + - simplified brcm_pcie_config_address(), brcm_pcie_set_gen() functions, + - changed reset pulse delay to 100 us, + - Replaced FIELD_GET() with open coded bitwise operations, + - brcm_cpie_cfg_index() function merged into brcm_pcie_config_address(), + - use standard PCI PCI_EXP_LNKSTA_CLS_* link speed defines + - added kernel-doc function comments. + +Changes since v1: + - fixed argument in brcm_pcie_set_ssc() function call, + - changed rc_bar2_size assignment to value 0xC0000000, as in upstream + devicetree. +Changes since RFC: + - reworked to align with current Linux mainline version and u-boot + driver by Nicolas Saenz Julienne. +--- + drivers/pci/Kconfig | 9 + + drivers/pci/Makefile | 1 + + drivers/pci/pcie_brcmstb.c | 623 +++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 633 insertions(+) + create mode 100644 drivers/pci/pcie_brcmstb.c + +diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig +index 437cd9a..543bd46 100644 +--- a/drivers/pci/Kconfig ++++ b/drivers/pci/Kconfig +@@ -197,4 +197,13 @@ config PCIE_MEDIATEK + Say Y here if you want to enable Gen2 PCIe controller, + which could be found on MT7623 SoC family. + ++config PCI_BRCMSTB ++ bool "Broadcom STB PCIe controller" ++ depends on DM_PCI ++ depends on ARCH_BCM283X ++ help ++ Say Y here if you want to enable support for PCIe controller ++ on Broadcom set-top-box (STB) SoCs. ++ This driver currently supports only BCM2711 SoC and RC mode ++ of the controller. + endif +diff --git a/drivers/pci/Makefile b/drivers/pci/Makefile +index c051ecc..3e53b1f 100644 +--- a/drivers/pci/Makefile ++++ b/drivers/pci/Makefile +@@ -43,3 +43,4 @@ obj-$(CONFIG_PCI_PHYTIUM) += pcie_phytium.o + obj-$(CONFIG_PCIE_INTEL_FPGA) += pcie_intel_fpga.o + obj-$(CONFIG_PCI_KEYSTONE) += pcie_dw_ti.o + obj-$(CONFIG_PCIE_MEDIATEK) += pcie_mediatek.o ++obj-$(CONFIG_PCI_BRCMSTB) += pcie_brcmstb.o +diff --git a/drivers/pci/pcie_brcmstb.c b/drivers/pci/pcie_brcmstb.c +new file mode 100644 +index 0000000..dade79e +--- /dev/null ++++ b/drivers/pci/pcie_brcmstb.c +@@ -0,0 +1,623 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Broadcom STB PCIe controller driver ++ * ++ * Copyright (C) 2020 Samsung Electronics Co., Ltd. ++ * ++ * Based on upstream Linux kernel driver: ++ * drivers/pci/controller/pcie-brcmstb.c ++ * Copyright (C) 2009 - 2017 Broadcom ++ * ++ * Based driver by Nicolas Saenz Julienne ++ * Copyright (C) 2020 Nicolas Saenz Julienne ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++/* Offset of the mandatory PCIe capability config registers */ ++#define BRCM_PCIE_CAP_REGS 0x00ac ++ ++/* The PCIe controller register offsets */ ++#define PCIE_RC_CFG_VENDOR_SPECIFIC_REG1 0x0188 ++#define VENDOR_SPECIFIC_REG1_ENDIAN_MODE_BAR2_MASK 0xc ++#define VENDOR_SPECIFIC_REG1_LITTLE_ENDIAN 0x0 ++ ++#define PCIE_RC_CFG_PRIV1_ID_VAL3 0x043c ++#define CFG_PRIV1_ID_VAL3_CLASS_CODE_MASK 0xffffff ++ ++#define PCIE_RC_DL_MDIO_ADDR 0x1100 ++#define PCIE_RC_DL_MDIO_WR_DATA 0x1104 ++#define PCIE_RC_DL_MDIO_RD_DATA 0x1108 ++ ++#define PCIE_MISC_MISC_CTRL 0x4008 ++#define MISC_CTRL_SCB_ACCESS_EN_MASK 0x1000 ++#define MISC_CTRL_CFG_READ_UR_MODE_MASK 0x2000 ++#define MISC_CTRL_MAX_BURST_SIZE_MASK 0x300000 ++#define MISC_CTRL_MAX_BURST_SIZE_128 0x0 ++#define MISC_CTRL_SCB0_SIZE_MASK 0xf8000000 ++ ++#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LO 0x400c ++#define PCIE_MEM_WIN0_LO(win) \ ++ PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LO + ((win) * 4) ++ ++#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_HI 0x4010 ++#define PCIE_MEM_WIN0_HI(win) \ ++ PCIE_MISC_CPU_2_PCIE_MEM_WIN0_HI + ((win) * 4) ++ ++#define PCIE_MISC_RC_BAR1_CONFIG_LO 0x402c ++#define RC_BAR1_CONFIG_LO_SIZE_MASK 0x1f ++ ++#define PCIE_MISC_RC_BAR2_CONFIG_LO 0x4034 ++#define RC_BAR2_CONFIG_LO_SIZE_MASK 0x1f ++#define PCIE_MISC_RC_BAR2_CONFIG_HI 0x4038 ++ ++#define PCIE_MISC_RC_BAR3_CONFIG_LO 0x403c ++#define RC_BAR3_CONFIG_LO_SIZE_MASK 0x1f ++ ++#define PCIE_MISC_PCIE_STATUS 0x4068 ++#define STATUS_PCIE_PORT_MASK 0x80 ++#define STATUS_PCIE_PORT_SHIFT 7 ++#define STATUS_PCIE_DL_ACTIVE_MASK 0x20 ++#define STATUS_PCIE_DL_ACTIVE_SHIFT 5 ++#define STATUS_PCIE_PHYLINKUP_MASK 0x10 ++#define STATUS_PCIE_PHYLINKUP_SHIFT 4 ++ ++#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT 0x4070 ++#define MEM_WIN0_BASE_LIMIT_LIMIT_MASK 0xfff00000 ++#define MEM_WIN0_BASE_LIMIT_BASE_MASK 0xfff0 ++#define MEM_WIN0_BASE_LIMIT_BASE_HI_SHIFT 12 ++#define PCIE_MEM_WIN0_BASE_LIMIT(win) \ ++ PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT + ((win) * 4) ++ ++#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_HI 0x4080 ++#define MEM_WIN0_BASE_HI_BASE_MASK 0xff ++#define PCIE_MEM_WIN0_BASE_HI(win) \ ++ PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_HI + ((win) * 8) ++ ++#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LIMIT_HI 0x4084 ++#define PCIE_MEM_WIN0_LIMIT_HI_LIMIT_MASK 0xff ++#define PCIE_MEM_WIN0_LIMIT_HI(win) \ ++ PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LIMIT_HI + ((win) * 8) ++ ++#define PCIE_MISC_HARD_PCIE_HARD_DEBUG 0x4204 ++#define PCIE_HARD_DEBUG_CLKREQ_DEBUG_ENABLE_MASK 0x2 ++#define PCIE_HARD_DEBUG_SERDES_IDDQ_MASK 0x08000000 ++ ++#define PCIE_MSI_INTR2_CLR 0x4508 ++#define PCIE_MSI_INTR2_MASK_SET 0x4510 ++ ++#define PCIE_EXT_CFG_DATA 0x8000 ++ ++#define PCIE_EXT_CFG_INDEX 0x9000 ++#define PCIE_EXT_BUSNUM_SHIFT 20 ++#define PCIE_EXT_SLOT_SHIFT 15 ++#define PCIE_EXT_FUNC_SHIFT 12 ++ ++#define PCIE_RGR1_SW_INIT_1 0x9210 ++#define RGR1_SW_INIT_1_PERST_MASK 0x1 ++#define RGR1_SW_INIT_1_INIT_MASK 0x2 ++ ++/* PCIe parameters */ ++#define BRCM_NUM_PCIE_OUT_WINS 4 ++ ++/* MDIO registers */ ++#define MDIO_PORT0 0x0 ++#define MDIO_DATA_MASK 0x7fffffff ++#define MDIO_DATA_SHIFT 0 ++#define MDIO_PORT_MASK 0xf0000 ++#define MDIO_PORT_SHIFT 16 ++#define MDIO_REGAD_MASK 0xffff ++#define MDIO_REGAD_SHIFT 0 ++#define MDIO_CMD_MASK 0xfff00000 ++#define MDIO_CMD_SHIFT 20 ++#define MDIO_CMD_READ 0x1 ++#define MDIO_CMD_WRITE 0x0 ++#define MDIO_DATA_DONE_MASK 0x80000000 ++#define SSC_REGS_ADDR 0x1100 ++#define SET_ADDR_OFFSET 0x1f ++#define SSC_CNTL_OFFSET 0x2 ++#define SSC_CNTL_OVRD_EN_MASK 0x8000 ++#define SSC_CNTL_OVRD_VAL_MASK 0x4000 ++#define SSC_STATUS_OFFSET 0x1 ++#define SSC_STATUS_SSC_MASK 0x400 ++#define SSC_STATUS_SSC_SHIFT 10 ++#define SSC_STATUS_PLL_LOCK_MASK 0x800 ++#define SSC_STATUS_PLL_LOCK_SHIFT 11 ++ ++/** ++ * struct brcm_pcie - the PCIe controller state ++ * @base: Base address of memory mapped IO registers of the controller ++ * @gen: Non-zero value indicates limitation of the PCIe controller operation ++ * to a specific generation (1, 2 or 3) ++ * @ssc: true indicates active Spread Spectrum Clocking operation ++ */ ++struct brcm_pcie { ++ void __iomem *base; ++ ++ int gen; ++ bool ssc; ++}; ++ ++/** ++ * brcm_pcie_encode_ibar_size() - Encode the inbound "BAR" region size ++ * @size: The inbound region size ++ * ++ * This function converts size of the inbound "BAR" region to the non-linear ++ * values of the PCIE_MISC_RC_BAR[123]_CONFIG_LO register SIZE field. ++ * ++ * Return: The encoded inbound region size ++ */ ++static int brcm_pcie_encode_ibar_size(u64 size) ++{ ++ int log2_in = ilog2(size); ++ ++ if (log2_in >= 12 && log2_in <= 15) ++ /* Covers 4KB to 32KB (inclusive) */ ++ return (log2_in - 12) + 0x1c; ++ else if (log2_in >= 16 && log2_in <= 37) ++ /* Covers 64KB to 32GB, (inclusive) */ ++ return log2_in - 15; ++ ++ /* Something is awry so disable */ ++ return 0; ++} ++ ++/** ++ * brcm_pcie_rc_mode() - Check if PCIe controller is in RC mode ++ * @pcie: Pointer to the PCIe controller state ++ * ++ * The controller is capable of serving in both RC and EP roles. ++ * ++ * Return: true for RC mode, false for EP mode. ++ */ ++static bool brcm_pcie_rc_mode(struct brcm_pcie *pcie) ++{ ++ u32 val; ++ ++ val = readl(pcie->base + PCIE_MISC_PCIE_STATUS); ++ ++ return (val & STATUS_PCIE_PORT_MASK) >> STATUS_PCIE_PORT_SHIFT; ++} ++ ++/** ++ * brcm_pcie_link_up() - Check whether the PCIe link is up ++ * @pcie: Pointer to the PCIe controller state ++ * ++ * Return: true if the link is up, false otherwise. ++ */ ++static bool brcm_pcie_link_up(struct brcm_pcie *pcie) ++{ ++ u32 val, dla, plu; ++ ++ val = readl(pcie->base + PCIE_MISC_PCIE_STATUS); ++ dla = (val & STATUS_PCIE_DL_ACTIVE_MASK) >> STATUS_PCIE_DL_ACTIVE_SHIFT; ++ plu = (val & STATUS_PCIE_PHYLINKUP_MASK) >> STATUS_PCIE_PHYLINKUP_SHIFT; ++ ++ return dla && plu; ++} ++ ++static int brcm_pcie_config_address(const struct udevice *dev, pci_dev_t bdf, ++ uint offset, void **paddress) ++{ ++ struct brcm_pcie *pcie = dev_get_priv(dev); ++ unsigned int pci_bus = PCI_BUS(bdf); ++ unsigned int pci_dev = PCI_DEV(bdf); ++ unsigned int pci_func = PCI_FUNC(bdf); ++ int idx; ++ ++ /* ++ * Busses 0 (host PCIe bridge) and 1 (its immediate child) ++ * are limited to a single device each ++ */ ++ if (pci_bus < 2 && pci_dev > 0) ++ return -EINVAL; ++ ++ /* Accesses to the RC go right to the RC registers */ ++ if (pci_bus == 0) { ++ *paddress = pcie->base + offset; ++ return 0; ++ } ++ ++ /* For devices, write to the config space index register */ ++ idx = (pci_bus << PCIE_EXT_BUSNUM_SHIFT) ++ | (pci_dev << PCIE_EXT_SLOT_SHIFT) ++ | (pci_func << PCIE_EXT_FUNC_SHIFT); ++ ++ writel(idx, pcie->base + PCIE_EXT_CFG_INDEX); ++ *paddress = pcie->base + PCIE_EXT_CFG_DATA + offset; ++ ++ return 0; ++} ++ ++static int brcm_pcie_read_config(const struct udevice *bus, pci_dev_t bdf, ++ uint offset, ulong *valuep, ++ enum pci_size_t size) ++{ ++ return pci_generic_mmap_read_config(bus, brcm_pcie_config_address, ++ bdf, offset, valuep, size); ++} ++ ++static int brcm_pcie_write_config(struct udevice *bus, pci_dev_t bdf, ++ uint offset, ulong value, ++ enum pci_size_t size) ++{ ++ return pci_generic_mmap_write_config(bus, brcm_pcie_config_address, ++ bdf, offset, value, size); ++} ++ ++static const char *link_speed_to_str(unsigned int cls) ++{ ++ switch (cls) { ++ case PCI_EXP_LNKSTA_CLS_2_5GB: return "2.5"; ++ case PCI_EXP_LNKSTA_CLS_5_0GB: return "5.0"; ++ case PCI_EXP_LNKSTA_CLS_8_0GB: return "8.0"; ++ default: ++ break; ++ } ++ ++ return "??"; ++} ++ ++static u32 brcm_pcie_mdio_form_pkt(unsigned int port, unsigned int regad, ++ unsigned int cmd) ++{ ++ u32 pkt; ++ ++ pkt = (port << MDIO_PORT_SHIFT) & MDIO_PORT_MASK; ++ pkt |= (regad << MDIO_REGAD_SHIFT) & MDIO_REGAD_MASK; ++ pkt |= (cmd << MDIO_CMD_SHIFT) & MDIO_CMD_MASK; ++ ++ return pkt; ++} ++ ++/** ++ * brcm_pcie_mdio_read() - Perform a register read on the internal MDIO bus ++ * @base: Pointer to the PCIe controller IO registers ++ * @port: The MDIO port number ++ * @regad: The register address ++ * @val: A pointer at which to store the read value ++ * ++ * Return: 0 on success and register value in @val, negative error value ++ * on failure. ++ */ ++static int brcm_pcie_mdio_read(void __iomem *base, unsigned int port, ++ unsigned int regad, u32 *val) ++{ ++ u32 data, addr; ++ int ret; ++ ++ addr = brcm_pcie_mdio_form_pkt(port, regad, MDIO_CMD_READ); ++ writel(addr, base + PCIE_RC_DL_MDIO_ADDR); ++ readl(base + PCIE_RC_DL_MDIO_ADDR); ++ ++ ret = readl_poll_timeout(base + PCIE_RC_DL_MDIO_RD_DATA, data, ++ (data & MDIO_DATA_DONE_MASK), 100); ++ ++ *val = data & MDIO_DATA_MASK; ++ ++ return ret; ++} ++ ++/** ++ * brcm_pcie_mdio_write() - Perform a register write on the internal MDIO bus ++ * @base: Pointer to the PCIe controller IO registers ++ * @port: The MDIO port number ++ * @regad: Address of the register ++ * @wrdata: The value to write ++ * ++ * Return: 0 on success, negative error value on failure. ++ */ ++static int brcm_pcie_mdio_write(void __iomem *base, unsigned int port, ++ unsigned int regad, u16 wrdata) ++{ ++ u32 data, addr; ++ ++ addr = brcm_pcie_mdio_form_pkt(port, regad, MDIO_CMD_WRITE); ++ writel(addr, base + PCIE_RC_DL_MDIO_ADDR); ++ readl(base + PCIE_RC_DL_MDIO_ADDR); ++ writel(MDIO_DATA_DONE_MASK | wrdata, base + PCIE_RC_DL_MDIO_WR_DATA); ++ ++ return readl_poll_timeout(base + PCIE_RC_DL_MDIO_WR_DATA, data, ++ !(data & MDIO_DATA_DONE_MASK), 100); ++} ++ ++/** ++ * brcm_pcie_set_ssc() - Configure the controller for Spread Spectrum Clocking ++ * @base: pointer to the PCIe controller IO registers ++ * ++ * Return: 0 on success, negative error value on failure. ++ */ ++static int brcm_pcie_set_ssc(void __iomem *base) ++{ ++ int pll, ssc; ++ int ret; ++ u32 tmp; ++ ++ ret = brcm_pcie_mdio_write(base, MDIO_PORT0, SET_ADDR_OFFSET, ++ SSC_REGS_ADDR); ++ if (ret < 0) ++ return ret; ++ ++ ret = brcm_pcie_mdio_read(base, MDIO_PORT0, SSC_CNTL_OFFSET, &tmp); ++ if (ret < 0) ++ return ret; ++ ++ tmp |= (SSC_CNTL_OVRD_EN_MASK | SSC_CNTL_OVRD_VAL_MASK); ++ ++ ret = brcm_pcie_mdio_write(base, MDIO_PORT0, SSC_CNTL_OFFSET, tmp); ++ if (ret < 0) ++ return ret; ++ ++ udelay(1000); ++ ret = brcm_pcie_mdio_read(base, MDIO_PORT0, SSC_STATUS_OFFSET, &tmp); ++ if (ret < 0) ++ return ret; ++ ++ ssc = (tmp & SSC_STATUS_SSC_MASK) >> SSC_STATUS_SSC_SHIFT; ++ pll = (tmp & SSC_STATUS_PLL_LOCK_MASK) >> SSC_STATUS_PLL_LOCK_SHIFT; ++ ++ return ssc && pll ? 0 : -EIO; ++} ++ ++/** ++ * brcm_pcie_set_gen() - Limits operation to a specific generation (1, 2 or 3) ++ * @pcie: pointer to the PCIe controller state ++ * @gen: PCIe generation to limit the controller's operation to ++ */ ++static void brcm_pcie_set_gen(struct brcm_pcie *pcie, unsigned int gen) ++{ ++ void __iomem *cap_base = pcie->base + BRCM_PCIE_CAP_REGS; ++ ++ u16 lnkctl2 = readw(cap_base + PCI_EXP_LNKCTL2); ++ u32 lnkcap = readl(cap_base + PCI_EXP_LNKCAP); ++ ++ lnkcap = (lnkcap & ~PCI_EXP_LNKCAP_SLS) | gen; ++ writel(lnkcap, cap_base + PCI_EXP_LNKCAP); ++ ++ lnkctl2 = (lnkctl2 & ~0xf) | gen; ++ writew(lnkctl2, cap_base + PCI_EXP_LNKCTL2); ++} ++ ++static void brcm_pcie_set_outbound_win(struct brcm_pcie *pcie, ++ unsigned int win, u64 phys_addr, ++ u64 pcie_addr, u64 size) ++{ ++ void __iomem *base = pcie->base; ++ u32 phys_addr_mb_high, limit_addr_mb_high; ++ phys_addr_t phys_addr_mb, limit_addr_mb; ++ int high_addr_shift; ++ u32 tmp; ++ ++ /* Set the base of the pcie_addr window */ ++ writel(lower_32_bits(pcie_addr), base + PCIE_MEM_WIN0_LO(win)); ++ writel(upper_32_bits(pcie_addr), base + PCIE_MEM_WIN0_HI(win)); ++ ++ /* Write the addr base & limit lower bits (in MBs) */ ++ phys_addr_mb = phys_addr / SZ_1M; ++ limit_addr_mb = (phys_addr + size - 1) / SZ_1M; ++ ++ tmp = readl(base + PCIE_MEM_WIN0_BASE_LIMIT(win)); ++ u32p_replace_bits(&tmp, phys_addr_mb, ++ MEM_WIN0_BASE_LIMIT_BASE_MASK); ++ u32p_replace_bits(&tmp, limit_addr_mb, ++ MEM_WIN0_BASE_LIMIT_LIMIT_MASK); ++ writel(tmp, base + PCIE_MEM_WIN0_BASE_LIMIT(win)); ++ ++ /* Write the cpu & limit addr upper bits */ ++ high_addr_shift = MEM_WIN0_BASE_LIMIT_BASE_HI_SHIFT; ++ phys_addr_mb_high = phys_addr_mb >> high_addr_shift; ++ tmp = readl(base + PCIE_MEM_WIN0_BASE_HI(win)); ++ u32p_replace_bits(&tmp, phys_addr_mb_high, ++ MEM_WIN0_BASE_HI_BASE_MASK); ++ writel(tmp, base + PCIE_MEM_WIN0_BASE_HI(win)); ++ ++ limit_addr_mb_high = limit_addr_mb >> high_addr_shift; ++ tmp = readl(base + PCIE_MEM_WIN0_LIMIT_HI(win)); ++ u32p_replace_bits(&tmp, limit_addr_mb_high, ++ PCIE_MEM_WIN0_LIMIT_HI_LIMIT_MASK); ++ writel(tmp, base + PCIE_MEM_WIN0_LIMIT_HI(win)); ++} ++ ++static int brcm_pcie_probe(struct udevice *dev) ++{ ++ struct udevice *ctlr = pci_get_controller(dev); ++ struct pci_controller *hose = dev_get_uclass_priv(ctlr); ++ struct brcm_pcie *pcie = dev_get_priv(dev); ++ void __iomem *base = pcie->base; ++ bool ssc_good = false; ++ int num_out_wins = 0; ++ u64 rc_bar2_offset, rc_bar2_size; ++ unsigned int scb_size_val; ++ int i, ret; ++ u16 nlw, cls, lnksta; ++ u32 tmp; ++ ++ /* ++ * Reset the bridge, assert the fundamental reset. Note for some SoCs, ++ * e.g. BCM7278, the fundamental reset should not be asserted here. ++ * This will need to be changed when support for other SoCs is added. ++ */ ++ setbits_le32(base + PCIE_RGR1_SW_INIT_1, ++ RGR1_SW_INIT_1_INIT_MASK | RGR1_SW_INIT_1_PERST_MASK); ++ /* ++ * The delay is a safety precaution to preclude the reset signal ++ * from looking like a glitch. ++ */ ++ udelay(100); ++ ++ /* Take the bridge out of reset */ ++ clrbits_le32(base + PCIE_RGR1_SW_INIT_1, RGR1_SW_INIT_1_INIT_MASK); ++ ++ clrbits_le32(base + PCIE_MISC_HARD_PCIE_HARD_DEBUG, ++ PCIE_HARD_DEBUG_SERDES_IDDQ_MASK); ++ ++ /* Wait for SerDes to be stable */ ++ udelay(100); ++ ++ /* Set SCB_MAX_BURST_SIZE, CFG_READ_UR_MODE, SCB_ACCESS_EN */ ++ clrsetbits_le32(base + PCIE_MISC_MISC_CTRL, ++ MISC_CTRL_MAX_BURST_SIZE_MASK, ++ MISC_CTRL_SCB_ACCESS_EN_MASK | ++ MISC_CTRL_CFG_READ_UR_MODE_MASK | ++ MISC_CTRL_MAX_BURST_SIZE_128); ++ /* ++ * TODO: When support for other SoCs than BCM2711 is added we may ++ * need to use the base address and size(s) provided in the dma-ranges ++ * property. ++ */ ++ rc_bar2_offset = 0; ++ rc_bar2_size = 0xc0000000; ++ ++ tmp = lower_32_bits(rc_bar2_offset); ++ u32p_replace_bits(&tmp, brcm_pcie_encode_ibar_size(rc_bar2_size), ++ RC_BAR2_CONFIG_LO_SIZE_MASK); ++ writel(tmp, base + PCIE_MISC_RC_BAR2_CONFIG_LO); ++ writel(upper_32_bits(rc_bar2_offset), ++ base + PCIE_MISC_RC_BAR2_CONFIG_HI); ++ ++ scb_size_val = rc_bar2_size ? ++ ilog2(rc_bar2_size) - 15 : 0xf; /* 0xf is 1GB */ ++ ++ tmp = readl(base + PCIE_MISC_MISC_CTRL); ++ u32p_replace_bits(&tmp, scb_size_val, ++ MISC_CTRL_SCB0_SIZE_MASK); ++ writel(tmp, base + PCIE_MISC_MISC_CTRL); ++ ++ /* Disable the PCIe->GISB memory window (RC_BAR1) */ ++ clrbits_le32(base + PCIE_MISC_RC_BAR1_CONFIG_LO, ++ RC_BAR1_CONFIG_LO_SIZE_MASK); ++ ++ /* Disable the PCIe->SCB memory window (RC_BAR3) */ ++ clrbits_le32(base + PCIE_MISC_RC_BAR3_CONFIG_LO, ++ RC_BAR3_CONFIG_LO_SIZE_MASK); ++ ++ /* Mask all interrupts since we are not handling any yet */ ++ writel(0xffffffff, base + PCIE_MSI_INTR2_MASK_SET); ++ ++ /* Clear any interrupts we find on boot */ ++ writel(0xffffffff, base + PCIE_MSI_INTR2_CLR); ++ ++ if (pcie->gen) ++ brcm_pcie_set_gen(pcie, pcie->gen); ++ ++ /* Unassert the fundamental reset */ ++ clrbits_le32(pcie->base + PCIE_RGR1_SW_INIT_1, ++ RGR1_SW_INIT_1_PERST_MASK); ++ ++ /* Give the RC/EP time to wake up, before trying to configure RC. ++ * Intermittently check status for link-up, up to a total of 100ms. ++ */ ++ for (i = 0; i < 100 && !brcm_pcie_link_up(pcie); i += 5) ++ mdelay(5); ++ ++ if (!brcm_pcie_link_up(pcie)) { ++ printf("PCIe BRCM: link down\n"); ++ return -EINVAL; ++ } ++ ++ if (!brcm_pcie_rc_mode(pcie)) { ++ printf("PCIe misconfigured; is in EP mode\n"); ++ return -EINVAL; ++ } ++ ++ for (i = 0; i < hose->region_count; i++) { ++ struct pci_region *reg = &hose->regions[i]; ++ ++ if (reg->flags != PCI_REGION_MEM) ++ continue; ++ ++ if (num_out_wins >= BRCM_NUM_PCIE_OUT_WINS) ++ return -EINVAL; ++ ++ brcm_pcie_set_outbound_win(pcie, num_out_wins, reg->phys_start, ++ reg->bus_start, reg->size); ++ ++ num_out_wins++; ++ } ++ ++ /* ++ * For config space accesses on the RC, show the right class for ++ * a PCIe-PCIe bridge (the default setting is to be EP mode). ++ */ ++ clrsetbits_le32(base + PCIE_RC_CFG_PRIV1_ID_VAL3, ++ CFG_PRIV1_ID_VAL3_CLASS_CODE_MASK, 0x060400); ++ ++ if (pcie->ssc) { ++ ret = brcm_pcie_set_ssc(pcie->base); ++ if (!ret) ++ ssc_good = true; ++ else ++ printf("PCIe BRCM: failed attempt to enter SSC mode\n"); ++ } ++ ++ lnksta = readw(base + BRCM_PCIE_CAP_REGS + PCI_EXP_LNKSTA); ++ cls = lnksta & PCI_EXP_LNKSTA_CLS; ++ nlw = (lnksta & PCI_EXP_LNKSTA_NLW) >> PCI_EXP_LNKSTA_NLW_SHIFT; ++ ++ printf("PCIe BRCM: link up, %s Gbps x%u %s\n", link_speed_to_str(cls), ++ nlw, ssc_good ? "(SSC)" : "(!SSC)"); ++ ++ /* PCIe->SCB endian mode for BAR */ ++ clrsetbits_le32(base + PCIE_RC_CFG_VENDOR_SPECIFIC_REG1, ++ VENDOR_SPECIFIC_REG1_ENDIAN_MODE_BAR2_MASK, ++ VENDOR_SPECIFIC_REG1_LITTLE_ENDIAN); ++ /* ++ * Refclk from RC should be gated with CLKREQ# input when ASPM L0s,L1 ++ * is enabled => setting the CLKREQ_DEBUG_ENABLE field to 1. ++ */ ++ setbits_le32(base + PCIE_MISC_HARD_PCIE_HARD_DEBUG, ++ PCIE_HARD_DEBUG_CLKREQ_DEBUG_ENABLE_MASK); ++ ++ return 0; ++} ++ ++static int brcm_pcie_ofdata_to_platdata(struct udevice *dev) ++{ ++ struct brcm_pcie *pcie = dev_get_priv(dev); ++ ofnode dn = dev_ofnode(dev); ++ u32 max_link_speed; ++ int ret; ++ ++ /* Get the controller base address */ ++ pcie->base = dev_read_addr_ptr(dev); ++ if (!pcie->base) ++ return -EINVAL; ++ ++ pcie->ssc = ofnode_read_bool(dn, "brcm,enable-ssc"); ++ ++ ret = ofnode_read_u32(dn, "max-link-speed", &max_link_speed); ++ if (ret < 0 || max_link_speed > 4) ++ pcie->gen = 0; ++ else ++ pcie->gen = max_link_speed; ++ ++ return 0; ++} ++ ++static const struct dm_pci_ops brcm_pcie_ops = { ++ .read_config = brcm_pcie_read_config, ++ .write_config = brcm_pcie_write_config, ++}; ++ ++static const struct udevice_id brcm_pcie_ids[] = { ++ { .compatible = "brcm,bcm2711-pcie" }, ++ { } ++}; ++ ++U_BOOT_DRIVER(pcie_brcm_base) = { ++ .name = "pcie_brcm", ++ .id = UCLASS_PCI, ++ .ops = &brcm_pcie_ops, ++ .of_match = brcm_pcie_ids, ++ .probe = brcm_pcie_probe, ++ .ofdata_to_platdata = brcm_pcie_ofdata_to_platdata, ++ .priv_auto_alloc_size = sizeof(struct brcm_pcie), ++}; + +From patchwork Tue May 12 18:47:16 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sylwester Nawrocki +X-Patchwork-Id: 1288735 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 + header.s=mail20170921 header.b=cv2KHkH+; + dkim-atps=neutral +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 49M6Kw6S8rz9sRR + for ; Wed, 13 May 2020 04:49:40 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 6561C81D0C; + Tue, 12 May 2020 20:48:50 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.b="cv2KHkH+"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id C928581D0C; Tue, 12 May 2020 20:48:47 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com + [210.118.77.12]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id A273781CE3 + for ; Tue, 12 May 2020 20:48:44 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=s.nawrocki@samsung.com +Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) + by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id + 20200512184844euoutp02e55ba929fd9f79911a420a566ce0e756~OXGjzHTY40461204612euoutp028 + for ; Tue, 12 May 2020 18:48:44 +0000 (GMT) +DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com + 20200512184844euoutp02e55ba929fd9f79911a420a566ce0e756~OXGjzHTY40461204612euoutp028 +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; + s=mail20170921; t=1589309324; + bh=hzK/mVSsiHm3Pc+zxgVzX6oxEFhxHphU75wkCaQSwV4=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=cv2KHkH+WRTNWeHkLSgxvaKrbRdv4aXDBJ9rm82p9sUIKoZ2ZUWHIBjiSVlx4KkeE + fEVI2vFzo+mNlTVnEelEvDqFzVOXb6dvim6uuExIcjBm08RtCT6hIIYdvb01II9zw8 + 4YrLGyDb5u4RQ0w28BrdUJzxip35lr+/ro5y+Xgw= +Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by + eucas1p2.samsung.com (KnoxPortal) with ESMTP id + 20200512184843eucas1p2ba3d75b717bad767d94d483b4c7ce11d~OXGix0EoA0735307353eucas1p2x; + Tue, 12 May 2020 18:48:43 +0000 (GMT) +Received: from eucas1p1.samsung.com ( [182.198.249.206]) by + eusmges1new.samsung.com (EUCPMTA) with SMTP id CF.FF.61286.B8FEABE5; Tue, 12 + May 2020 19:48:43 +0100 (BST) +Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by + eucas1p1.samsung.com (KnoxPortal) with ESMTPA id + 20200512184842eucas1p1b2edc2128ddf134553805db77451648f~OXGhrdRbd2314823148eucas1p1D; + Tue, 12 May 2020 18:48:42 +0000 (GMT) +Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by + eusmtrp2.samsung.com (KnoxPortal) with ESMTP id + 20200512184842eusmtrp2c531b7ae799511a665083c7202f8cf1c~OXGhqxf_u1654916549eusmtrp2q; + Tue, 12 May 2020 18:48:42 +0000 (GMT) +X-AuditID: cbfec7f2-ef1ff7000001ef66-99-5ebaef8bc506 +Received: from eusmtip1.samsung.com ( [203.254.199.221]) by + eusmgms2.samsung.com (EUCPMTA) with SMTP id 35.F8.07950.98FEABE5; Tue, 12 + May 2020 19:48:41 +0100 (BST) +Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by + eusmtip1.samsung.com (KnoxPortal) with ESMTPA id + 20200512184841eusmtip10bf41891c807e8917bd954874636d5ef~OXGhLVMJk2778327783eusmtip1X; + Tue, 12 May 2020 18:48:41 +0000 (GMT) +From: Sylwester Nawrocki +To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com +Cc: james.quinlan@broadcom.com, nsaenzjulienne@suse.de, sjg@chromium.org, + jh80.chung@samsung.com, m.szyprowski@samsung.com, b.zolnierkie@samsung.com, + Sylwester Nawrocki +Subject: [PATCH v3 9/9] configs: Enable support for the XHCI controller on + RPI4 board (ARM 64-bit) +Date: Tue, 12 May 2020 20:47:16 +0200 +Message-Id: <20200512184716.2869-10-s.nawrocki@samsung.com> +X-Mailer: git-send-email 2.17.1 +In-Reply-To: <20200512184716.2869-1-s.nawrocki@samsung.com> +X-Brightmail-Tracker: H4sIAAAAAAAAA0WSe0hTYRjG/XbO2Y7T2WlafqhgDIMUUkdGpxRNKDp/Cl3+CFJnO03Jqeyo + ZREtlXm/oJi2UMeMzKlt5ZrXYaw2K9FUugzULJBMmdjFC2q0th2t/37v8z4Pz8vHhyNCDRaE + Z2Tl0oosSaaIy0dNts3xwxUrA8nRb3t9yCdNeoxsqEwhzY4aLmnfUmFk98tZHulQ3QGkpn4e + I03qdi75wlGCketGEyCXzWW8kz6Uem6MS91XTqJUi/oVSvWrZ3nU2EwfoKqNOkDpje9Rqmf0 + ZhJ+kR8npTMz8mlFVHwqP326YRjLMfldn2i1Y0rQ6lsOvHFIxMB7IypQDvi4kHgE4JRFi7DD + KoCLPYUcdvjl2qzVcHcjXUPOHVc7gENjX7n/IssTHZjbxSXEsMpaDdwcQCTBD5t3PSUIYQWw + a/g36l74E1K4al7wMEochHXlhZ4KARELrYZBjK0LhZ2G54ibvV36xx6bpxoSD3mwaFMLWNMp + +KZxfYf94dKIkcdyCHT2t3LYQBGAlYPTPHaoBXBuRLOTiIUz41uuatx1XzjUD0SxciJcMDs4 + bhkSftC+vNctIy6sMzUirCyApSoh6w6D27pGDstBsGLeibJMwS9l7Sj7QtUATsxUgVoQqv5f + pgFABwLpPEYuoxlxFn0tkpHImbwsWeTlbPlT4Po3o39GfvaBtak0CyBwIPIVeN0aSBZiknym + QG4BEEdEAYLijP5koUAqKbhBK7JTFHmZNGMBwTgqChQc0S5eEhIySS59laZzaMXuloN7BymB + cKWgqiXttOJBRaU+xkboTQm+VRPbD3jhne+WnKU2wQG5jFvS9v3E6meDoAy90pEabN5TH5cQ + 0db7rXnKdMgAa5uRpo3l2LP7DUfrZn9sKJtrzr0+XxQUPVZ83P/ZGXviBeUnzT7d427oEzZw + W+wVptjWTlrVHevxxxhpSHaeCGXSJeIIRMFI/gJkR9I/MwMAAA== +X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrPLMWRmVeSWpSXmKPExsVy+t/xu7qd73fFGVxeZWOxccZ6VoupPfEW + e9/0s1nc+NXGarH2yF12izdtjYwWCyY/YbXYNms5m8XhN+2sFt+2bGO0eLu3k92B22PW/bNs + HrMbLrJ4zJt1gsVj56y77B5n7+xg9OjbsorRY/2Wqywem09XB3BE6dkU5ZeWpCpk5BeX2CpF + G1oY6RlaWugZmVjqGRqbx1oZmSrp29mkpOZklqUW6dsl6GXcnrqftWAbX8WF+TdYGxjn83Qx + cnJICJhIrNnzn7mLkYtDSGApo8TXHX1sXYwcQAkpifktShA1whJ/rnWxQdR8YpSY9PMgK0iC + TcBQovdoHyOILSIQIvHi6BUmkCJmgbOMEos6P4AVCQskSczvPccOYrMIqEpM6mpiA7F5Bawl + jm7YzQqxQV5i9YYDzCA2J1D8+uZjYLaQgJXEnm/v2CYw8i1gZFjFKJJaWpybnltspFecmFtc + mpeul5yfu4kRGPjbjv3csoOx613wIUYBDkYlHt6I+l1xQqyJZcWVuYcYJTiYlUR4WzJ3xgnx + piRWVqUW5ccXleakFh9iNAU6aiKzlGhyPjAq80riDU0NzS0sDc2NzY3NLJTEeTsEDsYICaQn + lqRmp6YWpBbB9DFxcEo1MJZuMOdQWFlcxNH1cnlrV4CI9YveFVpbur+ZL3998nbrx5IJO+5v + NQnONn+wO4m3/3tYYOTuoMvVPAmZDS/anbJea/5TzOpcFnR9x5G3L0zaRfS23RPYadWx1kVi + pvyV8/EB7wQLzOxvdPXy3agLUd4qc0Q9xNdok+uL3ZJbS/2Wpfa8TVjxTomlOCPRUIu5qDgR + ANQtnEOSAgAA +X-CMS-MailID: 20200512184842eucas1p1b2edc2128ddf134553805db77451648f +X-Msg-Generator: CA +X-RootMTR: 20200512184842eucas1p1b2edc2128ddf134553805db77451648f +X-EPHeader: CA +CMS-TYPE: 201P +X-CMS-RootMailID: 20200512184842eucas1p1b2edc2128ddf134553805db77451648f +References: <20200512184716.2869-1-s.nawrocki@samsung.com> + +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +This requires enabling BRCMSTB PCIe and XHCI_PCI drivers as well as PCI +and USB commands. To get it working one has to call the following commands: +"pci enum; usb start;", thus such commands have been added to the default +"preboot" environment variable. One has to update their environment if it +is already configured to get this feature working out of the box. + +Signed-off-by: Marek Szyprowski +Signed-off-by: Sylwester Nawrocki +--- +Changes since v2: + - rpi_4_32b_defconfig, rpi_4_defconfig changes moved to separate + patch +Changes since v1: + - removed unneeded CONFIG_XHCI_64BIT_DWORD_ACCESS_ONLY entry. + +Changes since RFC: + - none. +--- + configs/rpi_arm64_defconfig | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig +index fea86be..f12d1e3 100644 +--- a/configs/rpi_arm64_defconfig ++++ b/configs/rpi_arm64_defconfig +@@ -7,13 +7,14 @@ CONFIG_NR_DRAM_BANKS=2 + CONFIG_DISTRO_DEFAULTS=y + CONFIG_OF_BOARD_SETUP=y + CONFIG_USE_PREBOOT=y +-CONFIG_PREBOOT="usb start" ++CONFIG_PREBOOT="pci enum; usb start;" + CONFIG_MISC_INIT_R=y + # CONFIG_DISPLAY_CPUINFO is not set + # CONFIG_DISPLAY_BOARDINFO is not set + CONFIG_SYS_PROMPT="U-Boot> " + CONFIG_CMD_GPIO=y + CONFIG_CMD_MMC=y ++CONFIG_CMD_PCI=y + CONFIG_CMD_USB=y + CONFIG_CMD_FS_UUID=y + CONFIG_OF_BOARD=y +@@ -26,11 +27,16 @@ CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_BCM2835=y + CONFIG_DM_ETH=y + CONFIG_BCMGENET=y ++CONFIG_PCI=y ++CONFIG_DM_PCI=y ++CONFIG_PCI_BRCMSTB=y + CONFIG_PINCTRL=y + # CONFIG_PINCTRL_GENERIC is not set + # CONFIG_REQUIRE_SERIAL_CONSOLE is not set + CONFIG_USB=y + CONFIG_DM_USB=y ++CONFIG_USB_XHCI_HCD=y ++CONFIG_USB_XHCI_PCI=y + CONFIG_USB_DWC2=y + CONFIG_USB_KEYBOARD=y + CONFIG_USB_HOST_ETHER=y diff --git a/USB-host-support-for-Raspberry-Pi-4-board.patch b/USB-host-support-for-Raspberry-Pi-4-board.patch deleted file mode 100644 index 7e025be..0000000 --- a/USB-host-support-for-Raspberry-Pi-4-board.patch +++ /dev/null @@ -1,2810 +0,0 @@ -From patchwork Tue Apr 21 16:50:51 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Sylwester Nawrocki -X-Patchwork-Id: 1274440 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 - header.s=mail20170921 header.b=WdQxUAmP; - dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4969pg3b6Yz9sSK - for ; Wed, 22 Apr 2020 03:41:15 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 1D29881C54; - Tue, 21 Apr 2020 19:40:35 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.b="WdQxUAmP"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id E6A1F819C9; Tue, 21 Apr 2020 18:51:20 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com - [210.118.77.12]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 665AF81737 - for ; Tue, 21 Apr 2020 18:51:15 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=s.nawrocki@samsung.com -Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) - by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id - 20200421165114euoutp02bbb9b5239f2513e0d9189f1226e47b4e~H48_1WmIq2124521245euoutp026 - for ; Tue, 21 Apr 2020 16:51:14 +0000 (GMT) -DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com - 20200421165114euoutp02bbb9b5239f2513e0d9189f1226e47b4e~H48_1WmIq2124521245euoutp026 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; - s=mail20170921; t=1587487874; - bh=Zh1jdwMgEAvoABbbE+QRkb2erc3Jnb/5dK4/yTSfw9Q=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=WdQxUAmPR/8BTQJNAOZ3VNgu4eLYoptuxvKy/Yqhou6BXOeS3JwKEk34KeKRklEc+ - FiY/P2KH6XE18mliOjTqaql/Pmjyt4Gq4sNeNovGLMZqns//HAqOhxjkwAyHIEVI5H - 7in6T9IHRS81wSQrhXBRn+OOSDuEsg7mF8fimx7M= -Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by - eucas1p1.samsung.com (KnoxPortal) with ESMTP id - 20200421165114eucas1p176bc9417a0233a1932c7afc9fceaf79b~H48_nyHX51420814208eucas1p1r; - Tue, 21 Apr 2020 16:51:14 +0000 (GMT) -Received: from eucas1p2.samsung.com ( [182.198.249.207]) by - eusmges2new.samsung.com (EUCPMTA) with SMTP id 76.64.60679.2842F9E5; Tue, 21 - Apr 2020 17:51:14 +0100 (BST) -Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by - eucas1p2.samsung.com (KnoxPortal) with ESMTPA id - 20200421165114eucas1p2baa595b46f7503331ab86163f69b7c0e~H48_Wawfs1251112511eucas1p21; - Tue, 21 Apr 2020 16:51:14 +0000 (GMT) -Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by - eusmtrp2.samsung.com (KnoxPortal) with ESMTP id - 20200421165114eusmtrp2117931fb5a824a7165802d118f9e594c~H48_VyRz83266732667eusmtrp2J; - Tue, 21 Apr 2020 16:51:14 +0000 (GMT) -X-AuditID: cbfec7f4-0e5ff7000001ed07-07-5e9f24824ca7 -Received: from eusmtip1.samsung.com ( [203.254.199.221]) by - eusmgms1.samsung.com (EUCPMTA) with SMTP id 19.0E.08375.2842F9E5; Tue, 21 - Apr 2020 17:51:14 +0100 (BST) -Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by - eusmtip1.samsung.com (KnoxPortal) with ESMTPA id - 20200421165113eusmtip1034aafe2f169d868259e3244756060a5~H489q-u5q0895708957eusmtip1D; - Tue, 21 Apr 2020 16:51:13 +0000 (GMT) -From: Sylwester Nawrocki -To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com -Cc: agraf@suse.de, sjg@chrmium.org, jh80.chung@samsung.com, - m.szyprowski@samsung.com, b.zolnierkie@samsung.com, Sylwester Nawrocki - -Subject: [RFC PATCH 1/9] usb: xhci: Add missing cache flush in the - scratchpad array initialization -Date: Tue, 21 Apr 2020 18:50:51 +0200 -Message-Id: <20200421165059.19394-2-s.nawrocki@samsung.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200421165059.19394-1-s.nawrocki@samsung.com> -X-Brightmail-Tracker: H4sIAAAAAAAAA0VSa0hTYRjm2zln5zhbHKfgi1nCMqJMTTM4qN1IbP4Toh8VaqsdVNymbV7z - j5dQ8555w8RZYa2ZaCbiBcXU5S2TQE3TKaZFefkzTacOze2s+vc8z/s8z8v38lGYqJRwoaKV - 8axKKZWL+QK89cP2mGeGuyb8bGndSWZwfA8xbysbCaYsP4KZ2skimIZ+A8msZqUjpvbJEsH0 - rWYTTM7EPmLWuh6RlwWS+eE0QlJTNYhL2qsMpGR0tg1JClt0SNLYMoFL3o2khpK3BIEyVh6d - yKq8L94RRM1V6/G4HCrZ1J9FpqFJfi6iKKD9YPuLay4SUCJai8D4owZxZAPBpmkO48g6grFp - Iy8X2VkTHeM6m+sVgmHNb/JfpGF7E7e4+LQPFOgLkQU70aEwuV1uTWC0BoHZWG4dONIy0OaX - kRaM0yfg5dMVzIKFdACsTG7xuXVuUN/UY9Xt6EAwbFXiliKgi0hI3yi2vSIIXmfIOb8jLA+0 - kBx2hf12DY/zZyLI75whOVKMYH6gFnGuAJj9tGMtwuhT0NjhzclX4KNpCOf6D8PUmoNFxg5g - SWsFxslCyMkScW532NVV2C7kAnlL+ziHJZBeUGc7YxGCrtJFohi5Vf1fVouQDjmzCWpFJKv2 - VbJJXmqpQp2gjPS6F6toRgd/ZWRvYKMNdZjv9iKaQuJDwqmxmnARIU1Upyh6EVCY2EnYtHAg - CWXSlAesKjZClSBn1b3oCIWLnYXnnv8KE9GR0ng2hmXjWNXfKY+yc0lD55dz3ienzrwJDn7s - UPJicdX3+efuozvfpvLOUKb7RRm3/et/ZhcOL+xEDdZc0l4I0HfaDxUbPHljHl4hZuOk4usz - o71upE3f85A8brgaM+8d1u0nModcr69sdg84tha+eyPyuwc/SJu5sTCtunlttNof9FVFtCyp - sLfOdb3Pw1OMq6OkPqcxlVr6Bzy9nkcnAwAA -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrMLMWRmVeSWpSXmKPExsVy+t/xu7pNKvPjDE7cEbA4ceUfo8XGGetZ - Lab2xFvc+NXGarH2yF12izdtjYwWCyY/YbU4/Kad1aLj6n9Gi7d7O9kduDzun2pg9Zg36wSL - x85Zd9k9zt7ZwejRt2UVo8f6LVdZPDafrg5gj9KzKcovLUlVyMgvLrFVija0MNIztLTQMzKx - 1DM0No+1MjJV0rezSUnNySxLLdK3S9DLuDfnKEtBB0fFjyNt7A2M19i6GDk5JARMJHZdWcXY - xcjFISSwlFFi0rUZQA4HUEJKYn6LEkSNsMSfa11g9UICnxglHj5wBLHZBAwleo/2MYLYIgIh - Ei+OXmECmcMMMudPwxtWkDnCAkkSu39yg9SwCKhKLJv9mhnE5hWwlnh97TvUDfISqzccAItz - CthI3P0+gwVil7VEw6UlLBMY+RYwMqxiFEktLc5Nzy021CtOzC0uzUvXS87P3cQIDPBtx35u - 3sF4aWPwIUYBDkYlHt4b5+fFCbEmlhVX5h5ilOBgVhLh3fAQKMSbklhZlVqUH19UmpNafIjR - FOioicxSosn5wOjLK4k3NDU0t7A0NDc2NzazUBLn7RA4GCMkkJ5YkpqdmlqQWgTTx8TBKdXA - 6LTra6plWsQmuwWK045dDM48yj+vtfXqqqSkoqBLwilHPikq2hWa3TbO25/wunvjY6ZD87SD - 2Sr/ON7d9NNMXpLHyiQiOfEn///MTYYno6+0nPnLOJdpR3t9L/8PU0Gh/YXHVzzNn2YzQ/37 - HO6/kmeSvty49tbYRC7kbMl5hcQNLmukTv+pU2Ipzkg01GIuKk4EAE74o8yGAgAA -X-CMS-MailID: 20200421165114eucas1p2baa595b46f7503331ab86163f69b7c0e -X-Msg-Generator: CA -X-RootMTR: 20200421165114eucas1p2baa595b46f7503331ab86163f69b7c0e -X-EPHeader: CA -CMS-TYPE: 201P -X-CMS-RootMailID: 20200421165114eucas1p2baa595b46f7503331ab86163f69b7c0e -References: <20200421165059.19394-1-s.nawrocki@samsung.com> - -X-Mailman-Approved-At: Tue, 21 Apr 2020 19:40:20 +0200 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -In current code there is no cache flush after initializing the scratchpad -buffer array with the scratchpad buffer pointers. This leads to a failure -of the "slot enable" command on the rpi4 board (Broadcom STB PCIe -controller + VL805 USB hub) - the very first TRB transfer on the command -ring fails and there is a timeout while waiting for the command completion -event. After adding the missing cache flush everything seems to be working -as expected. - -Signed-off-by: Sylwester Nawrocki ---- - drivers/usb/host/xhci-mem.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c -index 93450ee..729bdc3 100644 ---- a/drivers/usb/host/xhci-mem.c -+++ b/drivers/usb/host/xhci-mem.c -@@ -393,6 +393,9 @@ static int xhci_scratchpad_alloc(struct xhci_ctrl *ctrl) - scratchpad->sp_array[i] = cpu_to_le64(ptr); - } - -+ xhci_flush_cache((uintptr_t)scratchpad->sp_array, -+ sizeof(u64) * num_sp); -+ - return 0; - - fail_sp3: - -From patchwork Tue Apr 21 16:50:52 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Sylwester Nawrocki -X-Patchwork-Id: 1274444 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 - header.s=mail20170921 header.b=WrpEgeC1; - dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4969qX0gklz9sSJ - for ; Wed, 22 Apr 2020 03:42:00 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id EEA2E81C76; - Tue, 21 Apr 2020 19:41:00 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.b="WrpEgeC1"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 5F23A811EC; Tue, 21 Apr 2020 18:51:24 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com - [210.118.77.11]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 15403811EC - for ; Tue, 21 Apr 2020 18:51:19 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=s.nawrocki@samsung.com -Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) - by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id - 20200421165118euoutp01eb9cb893b86512593aecaf9a2229fe2d~H49CKBnJp0962409624euoutp01V - for ; Tue, 21 Apr 2020 16:51:18 +0000 (GMT) -DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com - 20200421165118euoutp01eb9cb893b86512593aecaf9a2229fe2d~H49CKBnJp0962409624euoutp01V -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; - s=mail20170921; t=1587487878; - bh=KSIQabzU4eCsy6wbbJGuIQNoLGRG3kAK+Gl/QiVIJMs=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=WrpEgeC1CIx4w1CdlpymTRY8cl0+Ia9ijznf1+Z8UCa/CZFgB3/S/hqWZ6K2YjB2Y - ge7GsvvD5BjmikoYnxVQvFdOp0lD+N7WkzMk+O7z59VTw5U6AIpnL5VzpiLdO7X8fs - 5DI5tI15DScmUhhodpPMAQat42Uyw1S0vOTS/GVo= -Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by - eucas1p2.samsung.com (KnoxPortal) with ESMTP id - 20200421165117eucas1p29a916cf9bbe2c32a300f5aaa8dfdb36b~H49BqkmUJ2629726297eucas1p2b; - Tue, 21 Apr 2020 16:51:17 +0000 (GMT) -Received: from eucas1p2.samsung.com ( [182.198.249.207]) by - eusmges1new.samsung.com (EUCPMTA) with SMTP id C5.5D.61286.5842F9E5; Tue, 21 - Apr 2020 17:51:17 +0100 (BST) -Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by - eucas1p2.samsung.com (KnoxPortal) with ESMTPA id - 20200421165117eucas1p220b0a5f7820c7cf7bae20dc693584ad4~H49A4JpFy2629726297eucas1p2a; - Tue, 21 Apr 2020 16:51:17 +0000 (GMT) -Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by - eusmtrp2.samsung.com (KnoxPortal) with ESMTP id - 20200421165117eusmtrp29c22dabecb77d9c7b6eb9b0e54f6d365~H49A3fIX-3266732667eusmtrp2O; - Tue, 21 Apr 2020 16:51:17 +0000 (GMT) -X-AuditID: cbfec7f2-ef1ff7000001ef66-6c-5e9f2485c8e2 -Received: from eusmtip1.samsung.com ( [203.254.199.221]) by - eusmgms2.samsung.com (EUCPMTA) with SMTP id 67.3B.07950.5842F9E5; Tue, 21 - Apr 2020 17:51:17 +0100 (BST) -Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by - eusmtip1.samsung.com (KnoxPortal) with ESMTPA id - 20200421165116eusmtip188463c8be99c6ed75bb173aa0c7300bd~H49AUM8hT0891608916eusmtip1E; - Tue, 21 Apr 2020 16:51:16 +0000 (GMT) -From: Sylwester Nawrocki -To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com -Cc: agraf@suse.de, sjg@chrmium.org, jh80.chung@samsung.com, - m.szyprowski@samsung.com, b.zolnierkie@samsung.com, Sylwester Nawrocki - -Subject: [RFC PATCH 2/9] pci: Move some PCIe register offset definitions to - a common header -Date: Tue, 21 Apr 2020 18:50:52 +0200 -Message-Id: <20200421165059.19394-3-s.nawrocki@samsung.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200421165059.19394-1-s.nawrocki@samsung.com> -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprCKsWRmVeSWpSXmKPExsWy7djP87qtKvPjDK5dMbM4ceUfo8XGGetZ - Lab2xFvc+NXGarH2yF12izdtjYwWCyY/YbU4/Kad1aLj6n9Gi7d7O9kduDzun2pg9Zg36wSL - x85Zd9k9zt7ZwejRt2UVo8f6LVdZPDafrg5gj+KySUnNySxLLdK3S+DKON7ZzlSwX6xi2at2 - pgbGA0JdjJwcEgImEi/+n2brYuTiEBJYwShxZF4DO4TzhVHi1PNNjBDOZ0aJlYtWs8G0HOnt - ZoZILGeU+P7vEitcy+Qtv5hBqtgEDCV6j/YxgtgiAgES135OAxvFLDCfUeLPp2lgCWGBWImT - E66zgNgsAqoSP+aAjOXg4BWwlpj1sx5im7zE6g0HwGZyCthI3P0+gwVkjoTAZHaJSRPPM0EU - uUg8/n0EyhaWeHV8CzuELSPxf+d8JoiGZkaJnt232SGcCYwS948vYISospa4c+4XG8hmZgFN - ifW79EFMCQFHidPb5CFMPokbbwVBipmBzEnbpjNDhHklOtqg4agi8XvVdKgLpCS6n/xngbA9 - JBbf+8oECZ9+RolHG2YyT2CUn4WwawEj4ypG8dTS4tz01GLDvNRyveLE3OLSvHS95PzcTYzA - tHL63/FPOxi/Xko6xCjAwajEw3vj/Lw4IdbEsuLK3EOMEhzMSiK8Gx4ChXhTEiurUovy44tK - c1KLDzFKc7AoifMaL3oZKySQnliSmp2aWpBaBJNl4uCUamAM1bM8nhboKbXx7a5/eqenrpBc - tPL6zokpcze+/LRigtJtgRWKVoIl1RW8pb6qJ95eN1v41OnOn84lYXtf5K0TsM3e92h1v7Lt - yq+rpFqvOn0IZYzqz3+7I3/fnBWKcdt7vH43TD9o9Okyc3dFx+X2AL/FXx8+WfxJ9RvTypyr - 7qdPiU3yqLH7o8RSnJFoqMVcVJwIAHPQd5InAwAA -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrELMWRmVeSWpSXmKPExsVy+t/xu7qtKvPjDNa+Z7I4ceUfo8XGGetZ - Lab2xFvc+NXGarH2yF12izdtjYwWCyY/YbU4/Kad1aLj6n9Gi7d7O9kduDzun2pg9Zg36wSL - x85Zd9k9zt7ZwejRt2UVo8f6LVdZPDafrg5gj9KzKcovLUlVyMgvLrFVija0MNIztLTQMzKx - 1DM0No+1MjJV0rezSUnNySxLLdK3S9DLON7ZzlSwX6xi2at2pgbGA0JdjJwcEgImEkd6u5lB - bCGBpYwSl7fqdDFyAMWlJOa3KEGUCEv8udbF1sXIBVTyiVHi2YqjLCAJNgFDid6jfYwgtohA - iMSLo1eYQIqYQeb8aXjDCjJIWCBa4uupMpAaFgFViR9zQHZxcPAKWEvM+lkPMV9eYvWGA2An - cArYSNz9PoMF4hxriYZLS1gmMPItYGRYxSiSWlqcm55bbKRXnJhbXJqXrpecn7uJERje2479 - 3LKDsetd8CFGAQ5GJR7eG+fnxQmxJpYVV+YeYpTgYFYS4d3wECjEm5JYWZValB9fVJqTWnyI - 0RToponMUqLJ+cDYyyuJNzQ1NLewNDQ3Njc2s1AS5+0QOBgjJJCeWJKanZpakFoE08fEwSnV - wMi3jLGLQadphdgdbz2tW8UOS69dvPMj9d/ET4o918pV/k2+mS3v/vDrq0P8v6P+B189IDYj - YqlOR/nJS1e27LKtm/pvqnhR0vU5yjvur384TfHDtiSLPwenSLRn3T+6eW/b0c39z2s58nbZ - TuD7dGVfnRlzzBkv65yPq8u6k1yOf8ttZ88qPf5eiaU4I9FQi7moOBEAMpRHSYUCAAA= -X-CMS-MailID: 20200421165117eucas1p220b0a5f7820c7cf7bae20dc693584ad4 -X-Msg-Generator: CA -X-RootMTR: 20200421165117eucas1p220b0a5f7820c7cf7bae20dc693584ad4 -X-EPHeader: CA -CMS-TYPE: 201P -X-CMS-RootMailID: 20200421165117eucas1p220b0a5f7820c7cf7bae20dc693584ad4 -References: <20200421165059.19394-1-s.nawrocki@samsung.com> - -X-Mailman-Approved-At: Tue, 21 Apr 2020 19:40:20 +0200 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -Some PCI Express register offsets are currently defined in multiple -drivers, move them to a common header to avoid re-definitions and -as a pre-requisite for adding new PCIe driver. - -Signed-off-by: Sylwester Nawrocki ---- - drivers/pci/pci-rcar-gen3.c | 8 -------- - drivers/pci/pcie_intel_fpga.c | 3 --- - include/pci.h | 13 +++++++++++++ - 3 files changed, 13 insertions(+), 11 deletions(-) - -diff --git a/drivers/pci/pci-rcar-gen3.c b/drivers/pci/pci-rcar-gen3.c -index 30eff67..393f1c9 100644 ---- a/drivers/pci/pci-rcar-gen3.c -+++ b/drivers/pci/pci-rcar-gen3.c -@@ -117,14 +117,6 @@ - #define RCAR_PCI_MAX_RESOURCES 4 - #define MAX_NR_INBOUND_MAPS 6 - --#define PCI_EXP_FLAGS 2 /* Capabilities register */ --#define PCI_EXP_FLAGS_TYPE 0x00f0 /* Device/Port type */ --#define PCI_EXP_TYPE_ROOT_PORT 0x4 /* Root Port */ --#define PCI_EXP_LNKCAP 12 /* Link Capabilities */ --#define PCI_EXP_LNKCAP_DLLLARC 0x00100000 /* Data Link Layer Link Active Reporting Capable */ --#define PCI_EXP_SLTCAP 20 /* Slot Capabilities */ --#define PCI_EXP_SLTCAP_PSN 0xfff80000 /* Physical Slot Number */ -- - enum { - RCAR_PCI_ACCESS_READ, - RCAR_PCI_ACCESS_WRITE, -diff --git a/drivers/pci/pcie_intel_fpga.c b/drivers/pci/pcie_intel_fpga.c -index 6a9f29c..69363a0 100644 ---- a/drivers/pci/pcie_intel_fpga.c -+++ b/drivers/pci/pcie_intel_fpga.c -@@ -65,9 +65,6 @@ - #define IS_ROOT_PORT(pcie, bdf) \ - ((PCI_BUS(bdf) == pcie->first_busno) ? true : false) - --#define PCI_EXP_LNKSTA 18 /* Link Status */ --#define PCI_EXP_LNKSTA_DLLLA 0x2000 /* Data Link Layer Link Active */ -- - /** - * struct intel_fpga_pcie - Intel FPGA PCIe controller state - * @bus: Pointer to the PCI bus -diff --git a/include/pci.h b/include/pci.h -index 174ddd4..3d7646d 100644 ---- a/include/pci.h -+++ b/include/pci.h -@@ -471,11 +471,24 @@ - #define PCI_EA_FIELD_MASK 0xfffffffc /* For Base & Max Offset */ - - /* PCI Express capabilities */ -+#define PCI_EXP_FLAGS 2 /* Capabilities register */ -+#define PCI_EXP_FLAGS_TYPE 0x00f0 /* Device/Port type */ -+#define PCI_EXP_TYPE_ROOT_PORT 0x4 /* Root Port */ -+ - #define PCI_EXP_DEVCAP 4 /* Device capabilities */ - #define PCI_EXP_DEVCAP_FLR 0x10000000 /* Function Level Reset */ - #define PCI_EXP_DEVCTL 8 /* Device Control */ - #define PCI_EXP_DEVCTL_BCR_FLR 0x8000 /* Bridge Configuration Retry / FLR */ - -+#define PCI_EXP_LNKCAP 12 /* Link Capabilities */ -+#define PCI_EXP_LNKCAP_DLLLARC 0x00100000 /* Data Link Layer Link Active Reporting Capable */ -+ -+#define PCI_EXP_LNKSTA 18 /* Link Status */ -+#define PCI_EXP_LNKSTA_DLLLA 0x2000 /* Data Link Layer Link Active */ -+ -+#define PCI_EXP_SLTCAP 20 /* Slot Capabilities */ -+#define PCI_EXP_SLTCAP_PSN 0xfff80000 /* Physical Slot Number */ -+ - /* Include the ID list */ - - #include - -From patchwork Tue Apr 21 16:50:53 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Sylwester Nawrocki -X-Patchwork-Id: 1274441 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 - header.s=mail20170921 header.b=Yu5kjAkM; - dkim-atps=neutral -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4969px52wlz9sSJ - for ; Wed, 22 Apr 2020 03:41:29 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 787CB81A66; - Tue, 21 Apr 2020 19:40:37 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.b="Yu5kjAkM"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 1EFB581A18; Tue, 21 Apr 2020 18:51:24 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com - [210.118.77.12]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 17525804CD - for ; Tue, 21 Apr 2020 18:51:21 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=s.nawrocki@samsung.com -Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) - by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id - 20200421165119euoutp025d880bb6159dc765cf0ece2a051a72cb~H49DZFSkb2124521245euoutp029 - for ; Tue, 21 Apr 2020 16:51:19 +0000 (GMT) -DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com - 20200421165119euoutp025d880bb6159dc765cf0ece2a051a72cb~H49DZFSkb2124521245euoutp029 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; - s=mail20170921; t=1587487879; - bh=WNNhWM4zcFS/lfPm8PP33MTtxfHK2zyA/Si0TW7/3sI=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=Yu5kjAkMFxSRf43BjFXkZe/LA5aG+xRXU0dc898zHqguHt1aA6hFOXt03P/k1fPCR - WYQi2bfU7cCVPJC6SDeUnugU+cZjnLjzmmuVpvRd/xti6PVppz5EBV57X47SWeCbF2 - JALYvbIagHlPik2+AFFD5hJo9IeBlWlun8z7tpNo= -Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by - eucas1p1.samsung.com (KnoxPortal) with ESMTP id - 20200421165119eucas1p1ccc185676ac9d6692b18fb9800fbb677~H49DL6KFx1440514405eucas1p1g; - Tue, 21 Apr 2020 16:51:19 +0000 (GMT) -Received: from eucas1p2.samsung.com ( [182.198.249.207]) by - eusmges2new.samsung.com (EUCPMTA) with SMTP id B7.64.60679.7842F9E5; Tue, 21 - Apr 2020 17:51:19 +0100 (BST) -Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by - eucas1p1.samsung.com (KnoxPortal) with ESMTPA id - 20200421165118eucas1p1dc542f61cefcf53cdb1f17cc59baee5f~H49CWvwMj1422014220eucas1p1f; - Tue, 21 Apr 2020 16:51:18 +0000 (GMT) -Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by - eusmtrp2.samsung.com (KnoxPortal) with ESMTP id - 20200421165118eusmtrp289a599d1b59e605a4f088531bfef168f~H49CWKCGS3266732667eusmtrp2R; - Tue, 21 Apr 2020 16:51:18 +0000 (GMT) -X-AuditID: cbfec7f4-0cbff7000001ed07-0e-5e9f2487e6f8 -Received: from eusmtip1.samsung.com ( [203.254.199.221]) by - eusmgms1.samsung.com (EUCPMTA) with SMTP id 5A.0E.08375.6842F9E5; Tue, 21 - Apr 2020 17:51:18 +0100 (BST) -Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by - eusmtip1.samsung.com (KnoxPortal) with ESMTPA id - 20200421165118eusmtip18d32d5c3341151e30d4362872584f1bb~H49BwUnLM0895708957eusmtip1F; - Tue, 21 Apr 2020 16:51:18 +0000 (GMT) -From: Sylwester Nawrocki -To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com -Cc: agraf@suse.de, sjg@chrmium.org, jh80.chung@samsung.com, - m.szyprowski@samsung.com, b.zolnierkie@samsung.com -Subject: [RFC PATCH 3/9] rpi4: shorten a mapping for the DRAM -Date: Tue, 21 Apr 2020 18:50:53 +0200 -Message-Id: <20200421165059.19394-4-s.nawrocki@samsung.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200421165059.19394-1-s.nawrocki@samsung.com> -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFuphleLIzCtJLcpLzFFi42LZduzned12lflxBvuPyVucuPKP0WLjjPWs - FlN74i1u/GpjtVh75C67xZu2RkaLBZOfsFp0XP3PaPF2bye7A6fH/VMNrB7zZp1g8dg56y67 - x9k7Oxg9+rasYvRYv+Uqi8fm09UB7FFcNimpOZllqUX6dglcGbsm+hQcYa2YOnUjawPjMZYu - Rk4OCQETifN7HwPZXBxCAisYJT6uWsMG4XxhlPiyuoMJwvnMKLHvcA8TTEv/hQ/sILaQwHJG - iXVfzOE6vnd3s4Ek2AQMJXqP9jGC2CICARLXfk4Ds5kFCiSmXX8CVMPBISxgK/H5chiIySKg - KtF/JxGkglfAWuLnvm9Qq+QlVm84wAxicwrYSNz9PgPsUgmBfnaJOZ8us0MUuUhsWjwPqkFY - 4tXxLVBxGYn/O+czQTQ0M0r07L7NDuFMYJS4f3wBI0SVtcSdc7/ADmIW0JRYv0sfIuwo8erC - Z1aQsIQAn8SNt4IQ5/NJTNo2nRkizCvR0SYEUa0i8XvVdKgTpCS6n/yHhq6HxPupGxkhwdPP - KHGyt4dpAqP8LIRlCxgZVzGKp5YW56anFhvlpZbrFSfmFpfmpesl5+duYgSmkdP/jn/Zwbjr - T9IhRgEORiUe3hvn58UJsSaWFVfmHmKU4GBWEuHd8BAoxJuSWFmVWpQfX1Sak1p8iFGag0VJ - nNd40ctYIYH0xJLU7NTUgtQimCwTB6dUA+NUxfXJz2dus5RY+bSb7fomAzW90PsbLA4fkFM7 - oMC1yHDTraNxEdWsDqZ3tl4/sYeRe/dGjsroKydCHT/smr8k1l5mmuv/NWLW0r6pGyRUpBJF - E6Y3u3Y9mPk5qXPrbbn2dTv/W6u++MKYsX3durkaIlPmtYgV1madmSLLqdtxKOTq7dPS31cp - sRRnJBpqMRcVJwIAzgomnR8DAAA= -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrDLMWRmVeSWpSXmKPExsVy+t/xu7ptKvPjDBZtUbY4ceUfo8XGGetZ - Lab2xFvc+NXGarH2yF12izdtjYwWCyY/YbXouPqf0eLt3k52B06P+6caWD3mzTrB4rFz1l12 - j7N3djB69G1ZxeixfstVFo/Np6sD2KP0bIryS0tSFTLyi0tslaINLYz0DC0t9IxMLPUMjc1j - rYxMlfTtbFJSczLLUov07RL0MnZN9Ck4wloxdepG1gbGYyxdjJwcEgImEv0XPrB3MXJxCAks - ZZT4cm85WxcjB1BCSmJ+ixJEjbDEn2tdbBA1nxgl3rZ/YAVJsAkYSvQe7WMEsUUEQiReHL3C - BGIzC5RJrGl9zQgyR1jAVuLz5TAQk0VAVaL/TiJIBa+AtcTPfd+YIMbLS6zecIAZxOYUsJG4 - +30G2GlCQDUNl5awTGDkW8DIsIpRJLW0ODc9t9hQrzgxt7g0L10vOT93EyMwpLcd+7l5B+Ol - jcGHGAU4GJV4eG+cnxcnxJpYVlyZe4hRgoNZSYR3w0OgEG9KYmVValF+fFFpTmrxIUZToJsm - MkuJJucD4y2vJN7Q1NDcwtLQ3Njc2MxCSZy3Q+BgjJBAemJJanZqakFqEUwfEwenVANjYcji - LZPer+/Y0MPtIfRmV51exSSJ2SV811+ffXz75D7159HLFwjO7tlmvXTO9pCba14u3qO01GSf - 24En9YuKjf8+S/72beIE082sV9N0zy9R5LnLcEnsMOeMWLkXLydZH/MrF1y0abt0nr7k0yLD - Hs/+JXuF2tb+f/hqZ/DjyYEbVZ8V6OhfO67EUpyRaKjFXFScCAB3Tn4hfwIAAA== -X-CMS-MailID: 20200421165118eucas1p1dc542f61cefcf53cdb1f17cc59baee5f -X-Msg-Generator: CA -X-RootMTR: 20200421165118eucas1p1dc542f61cefcf53cdb1f17cc59baee5f -X-EPHeader: CA -CMS-TYPE: 201P -X-CMS-RootMailID: 20200421165118eucas1p1dc542f61cefcf53cdb1f17cc59baee5f -References: <20200421165059.19394-1-s.nawrocki@samsung.com> - -X-Mailman-Approved-At: Tue, 21 Apr 2020 19:40:20 +0200 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -From: Marek Szyprowski - -Remove the overlap between DRAM and device's IO area. - -Signed-off-by: Marek Szyprowski ---- - arch/arm/mach-bcm283x/init.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c -index 9966d6c..4295356 100644 ---- a/arch/arm/mach-bcm283x/init.c -+++ b/arch/arm/mach-bcm283x/init.c -@@ -38,7 +38,7 @@ static struct mm_region bcm2711_mem_map[] = { - { - .virt = 0x00000000UL, - .phys = 0x00000000UL, -- .size = 0xfe000000UL, -+ .size = 0xfc000000UL, - .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | - PTE_BLOCK_INNER_SHARE - }, { - -From patchwork Tue Apr 21 16:50:54 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Sylwester Nawrocki -X-Patchwork-Id: 1274442 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 - header.s=mail20170921 header.b=W9S6JG/g; - dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4969q812W9z9sSJ - for ; Wed, 22 Apr 2020 03:41:39 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id D70A281C61; - Tue, 21 Apr 2020 19:40:41 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.b="W9S6JG/g"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 1CC4281A0D; Tue, 21 Apr 2020 18:51:25 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com - [210.118.77.11]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 2DCCB81737 - for ; Tue, 21 Apr 2020 18:51:21 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=s.nawrocki@samsung.com -Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) - by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id - 20200421165120euoutp0101ec21506fef207024eec068bd2713f3~H49EUIi7N0962409624euoutp01X - for ; Tue, 21 Apr 2020 16:51:20 +0000 (GMT) -DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com - 20200421165120euoutp0101ec21506fef207024eec068bd2713f3~H49EUIi7N0962409624euoutp01X -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; - s=mail20170921; t=1587487880; - bh=dqMAZVBRR9AX01Hgc3T6VfoE0znPLsfUFWVSuYq0+c4=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=W9S6JG/gS0hScvMlp/3epnfVC4hXCCQVdSWs/HmbozVZy1tC0RnFAo/3I16oYIbkc - +pZI/20PwYLhme7RT6MLSyS+lUE0/4ixnMQwnXv/DUpZWYlvIK0LcCDDGu9M1BJPdc - CAdBy0xK4HCDR5Ar4NYeI3D3yBeyZBXXkhJfBheA= -Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by - eucas1p2.samsung.com (KnoxPortal) with ESMTP id - 20200421165120eucas1p297b1e3453e703f8e5eda14172d0f83d1~H49EBiVo82629626296eucas1p2m; - Tue, 21 Apr 2020 16:51:20 +0000 (GMT) -Received: from eucas1p1.samsung.com ( [182.198.249.206]) by - eusmges2new.samsung.com (EUCPMTA) with SMTP id 78.64.60679.8842F9E5; Tue, 21 - Apr 2020 17:51:20 +0100 (BST) -Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by - eucas1p1.samsung.com (KnoxPortal) with ESMTPA id - 20200421165119eucas1p19a1103b9f6b952bd83086a77df71e837~H49DkOhQc1429214292eucas1p1l; - Tue, 21 Apr 2020 16:51:19 +0000 (GMT) -Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by - eusmtrp2.samsung.com (KnoxPortal) with ESMTP id - 20200421165119eusmtrp29ad6632f3c6393b1aa457330e8cf88ab~H49DjrPER3266732667eusmtrp2V; - Tue, 21 Apr 2020 16:51:19 +0000 (GMT) -X-AuditID: cbfec7f4-0cbff7000001ed07-12-5e9f2488998e -Received: from eusmtip1.samsung.com ( [203.254.199.221]) by - eusmgms1.samsung.com (EUCPMTA) with SMTP id 3B.0E.08375.7842F9E5; Tue, 21 - Apr 2020 17:51:19 +0100 (BST) -Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by - eusmtip1.samsung.com (KnoxPortal) with ESMTPA id - 20200421165119eusmtip1f1b67aa1787772211a1def16f65bc6d6~H49DErhFS0901309013eusmtip1B; - Tue, 21 Apr 2020 16:51:19 +0000 (GMT) -From: Sylwester Nawrocki -To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com -Cc: agraf@suse.de, sjg@chrmium.org, jh80.chung@samsung.com, - m.szyprowski@samsung.com, b.zolnierkie@samsung.com -Subject: [RFC PATCH 4/9] rpi4: add a mapping for the PCIe XHCI controller - MMIO registers (ARM 64bit) -Date: Tue, 21 Apr 2020 18:50:54 +0200 -Message-Id: <20200421165059.19394-5-s.nawrocki@samsung.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200421165059.19394-1-s.nawrocki@samsung.com> -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupjleLIzCtJLcpLzFFi42LZduznOd0OlflxBleWSlqcuPKP0WLjjPWs - FlN74i1u/GpjtVh75C67xZu2RkaLBZOfsFp0XP3PaPF2bye7A6fH/VMNrB7zZp1g8dg56y67 - x9k7Oxg9+rasYvRYv+Uqi8fm09UB7FFcNimpOZllqUX6dglcGUterGUvOMFf8XXacaYGxhs8 - XYycHBICJhKT2+8zgdhCAisYJX5vreti5AKyvzBKTOy7zwLhfGaUOHVoLjNMx4Ztc5ggEssZ - JWb/OsEC19L2+zQ7SBWbgKFE79E+RhBbRCBA4trPaWA2s0CBxLTrT9hAbGGBNIl9l78DTeXg - YBFQlVjxvQokzCtgLTF/+zk2iGXyEqs3HABbzClgI3H3+wywXRIC3ewSk4/ugipykfhz5CUj - hC0s8er4FnYIW0bi/875TBANzYwSPbtvs0M4Exgl7h9fANVhLXHn3C82kCuYBTQl1u/Shwg7 - Sqw/dJcJJCwhwCdx460gxP18EpO2TWeGCPNKdLQJQVSrSPxeNZ0JwpaS6H7ynwXC9pCY9mwi - MyR8+hklfh3uYJ/AKD8LYdkCRsZVjOKppcW56anFRnmp5XrFibnFpXnpesn5uZsYgank9L/j - X3Yw7vqTdIhRgINRiYf3xvl5cUKsiWXFlbmHGCU4mJVEeDc8BArxpiRWVqUW5ccXleakFh9i - lOZgURLnNV70MlZIID2xJDU7NbUgtQgmy8TBKdXAOHuVS7S8w6+vK66y3jUUn9Eot2jjWc3T - 07clrGqY05D8vcnIWUTH3vg1g5PMzX1+c36v/DlvjcjllKft3RM2Pq5d+XPC/m3LHth0shma - z2SJSs1Se6xv6SxU0zgnqmNN+KFzZtOdvtidECi//MLjlMPXX+HtjPmqCWHZkS7vDq+tcu+e - oxC6VomlOCPRUIu5qDgRAPNyI+ohAwAA -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrHLMWRmVeSWpSXmKPExsVy+t/xu7rtKvPjDC6fsbI4ceUfo8XGGetZ - Lab2xFvc+NXGarH2yF12izdtjYwWCyY/YbXouPqf0eLt3k52B06P+6caWD3mzTrB4rFz1l12 - j7N3djB69G1ZxeixfstVFo/Np6sD2KP0bIryS0tSFTLyi0tslaINLYz0DC0t9IxMLPUMjc1j - rYxMlfTtbFJSczLLUov07RL0Mpa8WMtecIK/4uu040wNjDd4uhg5OSQETCQ2bJvD1MXIxSEk - sJRR4uvF/yxdjBxACSmJ+S1KEDXCEn+udbFB1HxilJja9IUZJMEmYCjRe7SPEcQWEQiReHH0 - ChOIzSxQJrGm9TVYXFggRWLyrSlsIDNZBFQlVnyvAgnzClhLzN9+jg1ivrzE6g0HwEZyCthI - 3P0+gwXEFgKqabi0hGUCI98CRoZVjCKppcW56bnFhnrFibnFpXnpesn5uZsYgWG97djPzTsY - L20MPsQowMGoxMN74/y8OCHWxLLiytxDjBIczEoivBseAoV4UxIrq1KL8uOLSnNSiw8xmgLd - NJFZSjQ5HxhzeSXxhqaG5haWhubG5sZmFkrivB0CB2OEBNITS1KzU1MLUotg+pg4OKUaGLX1 - Tpc+7j1lL7kgh/HtV62FV+8ti952/p9Snln59awyjq46dndey3c+M7oZG3/ERqdbyH/I23a0 - b2EwV5eJ844j/B9f3fctmXPoxNKu3dMMl+y2rjzHa2Yuc11bPLbK8Uvn5cuav+bfXGP73eOv - qbWD1uuNaSbcN6ekvG3fH66u9K8y+S5fshJLcUaioRZzUXEiAOSx0z6BAgAA -X-CMS-MailID: 20200421165119eucas1p19a1103b9f6b952bd83086a77df71e837 -X-Msg-Generator: CA -X-RootMTR: 20200421165119eucas1p19a1103b9f6b952bd83086a77df71e837 -X-EPHeader: CA -CMS-TYPE: 201P -X-CMS-RootMailID: 20200421165119eucas1p19a1103b9f6b952bd83086a77df71e837 -References: <20200421165059.19394-1-s.nawrocki@samsung.com> - -X-Mailman-Approved-At: Tue, 21 Apr 2020 19:40:20 +0200 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -From: Marek Szyprowski - -Create a non-cacheable mapping for the 0x600000000 physical memory region, -where MMIO registers for the PCIe XHCI controller are instantiated by the -PCIe bridge. - -Signed-off-by: Marek Szyprowski ---- - arch/arm/mach-bcm283x/init.c | 18 +++++++++++++++--- - 1 file changed, 15 insertions(+), 3 deletions(-) - -diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c -index 4295356..6a748da 100644 ---- a/arch/arm/mach-bcm283x/init.c -+++ b/arch/arm/mach-bcm283x/init.c -@@ -11,10 +11,15 @@ - #include - #include - -+#define BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS 0x600000000UL -+#define BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE 0x800000UL -+ - #ifdef CONFIG_ARM64 - #include - --static struct mm_region bcm283x_mem_map[] = { -+#define MAX_MAP_MAX_ENTRIES (4) -+ -+static struct mm_region bcm283x_mem_map[MAX_MAP_MAX_ENTRIES] = { - { - .virt = 0x00000000UL, - .phys = 0x00000000UL, -@@ -34,7 +39,7 @@ static struct mm_region bcm283x_mem_map[] = { - } - }; - --static struct mm_region bcm2711_mem_map[] = { -+static struct mm_region bcm2711_mem_map[MAX_MAP_MAX_ENTRIES] = { - { - .virt = 0x00000000UL, - .phys = 0x00000000UL, -@@ -49,6 +54,13 @@ static struct mm_region bcm2711_mem_map[] = { - PTE_BLOCK_NON_SHARE | - PTE_BLOCK_PXN | PTE_BLOCK_UXN - }, { -+ .virt = BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS, -+ .phys = BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS, -+ .size = BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE, -+ .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | -+ PTE_BLOCK_NON_SHARE | -+ PTE_BLOCK_PXN | PTE_BLOCK_UXN -+ }, { - /* List terminator */ - 0, - } -@@ -71,7 +83,7 @@ static void _rpi_update_mem_map(struct mm_region *pd) - { - int i; - -- for (i = 0; i < 2; i++) { -+ for (i = 0; i < MAX_MAP_MAX_ENTRIES; i++) { - mem_map[i].virt = pd[i].virt; - mem_map[i].phys = pd[i].phys; - mem_map[i].size = pd[i].size; - -From patchwork Tue Apr 21 16:50:55 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Sylwester Nawrocki -X-Patchwork-Id: 1274445 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 - header.s=mail20170921 header.b=lLBogEzN; - dkim-atps=neutral -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4969qr1fWZz9sSJ - for ; Wed, 22 Apr 2020 03:42:16 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id F35DC81A07; - Tue, 21 Apr 2020 19:41:09 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.b="lLBogEzN"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 5701E804CD; Tue, 21 Apr 2020 18:51:28 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com - [210.118.77.12]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 94B9A804CD - for ; Tue, 21 Apr 2020 18:51:24 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=s.nawrocki@samsung.com -Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) - by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id - 20200421165124euoutp028b281b51c07dd33d34f567bc48e48780~H49HhCWEk2231522315euoutp02b - for ; Tue, 21 Apr 2020 16:51:24 +0000 (GMT) -DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com - 20200421165124euoutp028b281b51c07dd33d34f567bc48e48780~H49HhCWEk2231522315euoutp02b -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; - s=mail20170921; t=1587487884; - bh=SeubgiN7Xoo7MhXFId4svRjAX/097OBMOrYqb8zcjX4=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=lLBogEzNsIrCr1ijgduFlRI6hX9VIcrxf+NCOLPoGXULqWWO+ZF7D+NiXpRYXQzDV - 1gUgGi/AoiozShvfdcBygAExo9xz/H8KQmq4GL9kAjWVtDpRuUOKR2vYZIIWsh1aPo - yf/W4nuSnJNWkJEuXpNMRtBcyzNZ9/G76bBPTYkg= -Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by - eucas1p1.samsung.com (KnoxPortal) with ESMTP id - 20200421165123eucas1p1960c9d7984fb217f5fd4c505a29633eb~H49HSMJfH1746117461eucas1p1m; - Tue, 21 Apr 2020 16:51:23 +0000 (GMT) -Received: from eucas1p2.samsung.com ( [182.198.249.207]) by - eusmges2new.samsung.com (EUCPMTA) with SMTP id 99.64.60679.B842F9E5; Tue, 21 - Apr 2020 17:51:23 +0100 (BST) -Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by - eucas1p1.samsung.com (KnoxPortal) with ESMTPA id - 20200421165123eucas1p171701bd64ed84a9c740331ce87c7ff6c~H49G08mx61445214452eucas1p1f; - Tue, 21 Apr 2020 16:51:23 +0000 (GMT) -Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by - eusmtrp2.samsung.com (KnoxPortal) with ESMTP id - 20200421165123eusmtrp26c5fceeaa8775f129b92588ca20429ad~H49G0VD0c3266732667eusmtrp2Y; - Tue, 21 Apr 2020 16:51:23 +0000 (GMT) -X-AuditID: cbfec7f4-0e5ff7000001ed07-19-5e9f248b9eea -Received: from eusmtip1.samsung.com ( [203.254.199.221]) by - eusmgms1.samsung.com (EUCPMTA) with SMTP id EB.0E.08375.B842F9E5; Tue, 21 - Apr 2020 17:51:23 +0100 (BST) -Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by - eusmtip1.samsung.com (KnoxPortal) with ESMTPA id - 20200421165122eusmtip112e78411cfff99904aa9ac5a6477a857~H49GPKBTO0891608916eusmtip1I; - Tue, 21 Apr 2020 16:51:22 +0000 (GMT) -From: Sylwester Nawrocki -To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com -Cc: agraf@suse.de, sjg@chrmium.org, jh80.chung@samsung.com, - m.szyprowski@samsung.com, b.zolnierkie@samsung.com -Subject: [RFC PATCH 5/9] rpi4: add a mapping for the PCIe XHCI controller - MMIO registers (ARM 32bit) -Date: Tue, 21 Apr 2020 18:50:55 +0200 -Message-Id: <20200421165059.19394-6-s.nawrocki@samsung.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200421165059.19394-1-s.nawrocki@samsung.com> -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFuplleLIzCtJLcpLzFFi42LZduzned1ulflxBi8vWlmcuPKP0WLjjPWs - FlN74i1u/GpjtVh75C67xZu2RkaLBZOfsFp0XP3PaPF2bye7A6fH/VMNrB7zZp1g8dg56y67 - x9k7Oxg9+rasYvRYv+Uqi8fm09UB7FFcNimpOZllqUX6dglcGefnzWMp2CJZsf/SSqYGxnbR - LkZODgkBE4lTm2cxg9hCAisYJa6sUOpi5AKyvzBK7Pv6iQnC+cwoceHlCSCHA6zj0ndfiPhy - RolDOw6xwXUseN7FBjKKTcBQovdoHyOILSIQIHHt5zQwm1mgQGLa9SdsIIOEBdIk1q2PBgmz - CKhK/H/RD1bCK2At0TFxJxPEdfISqzccALuOU8BG4u73GSwguyQE2tklOv78Y4MocpHYMes8 - M4QtLPHq+BZ2CFtG4v/O+UwQDc2MEj27b7NDOBMYJe4fX8AIUWUtcefcL7CLmAU0Jdbv0ocI - O0r8m9nGAvExn8SNt4IQ9/NJTNo2nRkizCvR0SYEUa0i8XvVdKibpSS6n/xngbA9JG6dPA4N - n35GiePvzjFNYJSfhbBsASPjKkbx1NLi3PTUYqO81HK94sTc4tK8dL3k/NxNjMBEcvrf8S87 - GHf9STrEKMDBqMTDe+P8vDgh1sSy4srcQ4wSHMxKIrwbHgKFeFMSK6tSi/Lji0pzUosPMUpz - sCiJ8xovehkrJJCeWJKanZpakFoEk2Xi4JRqYMycbb2Z6X6zsffx891uL9M/pBpM6e2R1eC9 - abXvg86THVnXDczb86Y+OMHaoPR/br7E63VbvxR+W2dz0rk55FRyaoRhh0zfOdW+qE8RhULe - uua2f/9Er3VKF+SdfO+WeUdN1OvHCeb8hSZMUmWns/kD5+YUcs2ruebh9cbjSfyOudeaOG+u - UGIpzkg01GIuKk4EAPSLu8IgAwAA -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrHLMWRmVeSWpSXmKPExsVy+t/xu7rdKvPjDPZOELc4ceUfo8XGGetZ - Lab2xFvc+NXGarH2yF12izdtjYwWCyY/YbXouPqf0eLt3k52B06P+6caWD3mzTrB4rFz1l12 - j7N3djB69G1ZxeixfstVFo/Np6sD2KP0bIryS0tSFTLyi0tslaINLYz0DC0t9IxMLPUMjc1j - rYxMlfTtbFJSczLLUov07RL0Ms7Pm8dSsEWyYv+llUwNjO2iXYwcHBICJhKXvvt2MXJxCAks - ZZSYeGIiG0RcSmJ+i1IXIyeQKSzx51oXG0TNJ6CaT0tYQRJsAoYSvUf7GEFsEYEQiRdHrzCB - 2MwCZRJrWl+DxYUFUiSuXF3EAmKzCKhK/H/RDxbnFbCW6Ji4kwligbzE6g0HmEFsTgEbibvf - Z4DVCwHVNFxawjKBkW8BI8MqRpHU0uLc9NxiQ73ixNzi0rx0veT83E2MwLDeduzn5h2MlzYG - H2IU4GBU4uG9cX5enBBrYllxZe4hRgkOZiUR3g0PgUK8KYmVValF+fFFpTmpxYcYTYGOmsgs - JZqcD4y5vJJ4Q1NDcwtLQ3Njc2MzCyVx3g6BgzFCAumJJanZqakFqUUwfUwcnFINjBb7jphd - cHW99k349Za3DneDPqszyswoTlnxNfKtkWFuc5Csol6xgNDNrf81Vl0WSrujb8a/c0dDBov1 - VuvDybd359g1/47sUkpb+OjKVF6W8u93CmvurMn8qPdFbQ5v7o0PSkKqc6qO/5uycZf73oz0 - /OnXBAqkdeRl7nGl6t3qNFCMTqgxV2Ipzkg01GIuKk4EAH1/U2eBAgAA -X-CMS-MailID: 20200421165123eucas1p171701bd64ed84a9c740331ce87c7ff6c -X-Msg-Generator: CA -X-RootMTR: 20200421165123eucas1p171701bd64ed84a9c740331ce87c7ff6c -X-EPHeader: CA -CMS-TYPE: 201P -X-CMS-RootMailID: 20200421165123eucas1p171701bd64ed84a9c740331ce87c7ff6c -References: <20200421165059.19394-1-s.nawrocki@samsung.com> - -X-Mailman-Approved-At: Tue, 21 Apr 2020 19:40:20 +0200 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -From: Marek Szyprowski - -Create a non-cacheable mapping for the 0x600000000 physical memory region, -where MMIO registers for the PCIe XHCI controller are instantiated by the -PCIe bridge. Due to 32bit limit in the CPU virtual address space in ARM -32bit mode, this region is mapped at 0xff800000 CPU virtual address. - -Signed-off-by: Marek Szyprowski ---- - arch/arm/mach-bcm283x/Kconfig | 1 + - arch/arm/mach-bcm283x/include/mach/base.h | 7 +++++ - arch/arm/mach-bcm283x/init.c | 52 +++++++++++++++++++++++++++++++ - 3 files changed, 60 insertions(+) - -diff --git a/arch/arm/mach-bcm283x/Kconfig b/arch/arm/mach-bcm283x/Kconfig -index 00419bf..bcb7f1d 100644 ---- a/arch/arm/mach-bcm283x/Kconfig -+++ b/arch/arm/mach-bcm283x/Kconfig -@@ -36,6 +36,7 @@ config BCM2711_32B - select BCM2711 - select ARMV7_LPAE - select CPU_V7A -+ select PHYS_64BIT - - config BCM2711_64B - bool "Broadcom BCM2711 SoC 64-bit support" -diff --git a/arch/arm/mach-bcm283x/include/mach/base.h b/arch/arm/mach-bcm283x/include/mach/base.h -index c4ae398..1d10dc9 100644 ---- a/arch/arm/mach-bcm283x/include/mach/base.h -+++ b/arch/arm/mach-bcm283x/include/mach/base.h -@@ -6,6 +6,13 @@ - #ifndef _BCM283x_BASE_H_ - #define _BCM283x_BASE_H_ - -+#include -+ - extern unsigned long rpi_bcm283x_base; - -+#ifdef CONFIG_ARMV7_LPAE -+extern void *rpi4_phys_to_virt(phys_addr_t paddr); -+#define phys_to_virt(x) rpi4_phys_to_virt(x) -+#endif -+ - #endif -diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c -index 6a748da..5d0d160 100644 ---- a/arch/arm/mach-bcm283x/init.c -+++ b/arch/arm/mach-bcm283x/init.c -@@ -145,6 +145,58 @@ int mach_cpu_init(void) - } - - #ifdef CONFIG_ARMV7_LPAE -+ -+#define BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT 0xff800000UL -+ -+void *rpi4_phys_to_virt(phys_addr_t paddr) -+{ -+ if (paddr >= BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS) -+ paddr = paddr - BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS + -+ BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT; -+ return (void *)(unsigned long)paddr; -+} -+ -+static void set_section_phys(unsigned int section, phys_addr_t phys, -+ enum dcache_option option) -+{ -+ u64 *page_table = (u64 *)gd->arch.tlb_addr; -+ /* Need to set the access flag to not fault */ -+ u64 value = TTB_SECT_AP | TTB_SECT_AF; -+ -+ /* Add the page offset */ -+ value |= (phys); -+ -+ /* Add caching bits */ -+ value |= option; -+ -+ /* Set PTE */ -+ page_table[section] = value; -+} -+ -+static void rpi4_create_pcie_xhci_mapping(void) -+{ -+ unsigned sect = BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT >> MMU_SECTION_SHIFT; -+ phys_addr_t phys_addr = BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS; -+ unsigned int size = BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE; -+ -+ while (size) { -+ set_section_phys(sect, phys_addr, DCACHE_OFF); -+ sect++; -+ phys_addr += MMU_SECTION_SIZE; -+ size -= MMU_SECTION_SIZE; -+ } -+} -+ -+void arm_init_domains(void) -+{ -+ /* -+ * Hijack this function to prepare a mappings for the PCIe MMIO -+ * region for the XHCI controller on RPi4 board. -+ * This code is called before enabling the MMU in ARM 32bit mode. -+ */ -+ rpi4_create_pcie_xhci_mapping(); -+} -+ - void enable_caches(void) - { - dcache_enable(); - -From patchwork Tue Apr 21 16:50:56 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Sylwester Nawrocki -X-Patchwork-Id: 1274443 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 - header.s=mail20170921 header.b=TdaEIEQw; - dkim-atps=neutral -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4969qL0CtWz9sSK - for ; Wed, 22 Apr 2020 03:41:49 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 0B3E7811EC; - Tue, 21 Apr 2020 19:40:47 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.b="TdaEIEQw"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id BB38A81BC1; Tue, 21 Apr 2020 18:51:28 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com - [210.118.77.12]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 38EFA81737 - for ; Tue, 21 Apr 2020 18:51:25 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=s.nawrocki@samsung.com -Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) - by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id - 20200421165124euoutp021fb4b724898c009874780933c7d14680~H49IAvOSY2231422314euoutp02e - for ; Tue, 21 Apr 2020 16:51:24 +0000 (GMT) -DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com - 20200421165124euoutp021fb4b724898c009874780933c7d14680~H49IAvOSY2231422314euoutp02e -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; - s=mail20170921; t=1587487884; - bh=K5kn614EGEGq9XoRGx08RBxVoAnisE7ZdTKndMJbDRM=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=TdaEIEQw+FnhAJ4fnk4tmLrXmueW2he//FahOikgAeJ6M+OUzadWhD3z2FaQlXB+o - eLYh80t9Zmtxjnb8VqEE1Keye1xwPlQilyQlxddEuU4CRUtb1bSTay6Q1TUzHOSaIj - HvCnkkprHeRHnhrs7cj1RJfUYImrhaBUSxNNZCGE= -Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by - eucas1p2.samsung.com (KnoxPortal) with ESMTP id - 20200421165124eucas1p2c8640007863ed087707c8d010be6be09~H49HqVo__0783407834eucas1p2_; - Tue, 21 Apr 2020 16:51:24 +0000 (GMT) -Received: from eucas1p1.samsung.com ( [182.198.249.206]) by - eusmges1new.samsung.com (EUCPMTA) with SMTP id 57.5D.61286.C842F9E5; Tue, 21 - Apr 2020 17:51:24 +0100 (BST) -Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by - eucas1p1.samsung.com (KnoxPortal) with ESMTPA id - 20200421165124eucas1p161d4049c0e136fc74ae2b00c2a1b3883~H49HV1Vh41763717637eucas1p1o; - Tue, 21 Apr 2020 16:51:24 +0000 (GMT) -Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by - eusmtrp2.samsung.com (KnoxPortal) with ESMTP id - 20200421165124eusmtrp2db8fc0e5d79f82c5cc88dc94100c80ec~H49HVJgfe3266732667eusmtrp2Z; - Tue, 21 Apr 2020 16:51:24 +0000 (GMT) -X-AuditID: cbfec7f2-f0bff7000001ef66-79-5e9f248c9bc0 -Received: from eusmtip1.samsung.com ( [203.254.199.221]) by - eusmgms2.samsung.com (EUCPMTA) with SMTP id 19.3B.07950.B842F9E5; Tue, 21 - Apr 2020 17:51:23 +0100 (BST) -Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by - eusmtip1.samsung.com (KnoxPortal) with ESMTPA id - 20200421165123eusmtip15bd7207cfa303d93b849089978670beb~H49GwZGUR0901309013eusmtip1C; - Tue, 21 Apr 2020 16:51:23 +0000 (GMT) -From: Sylwester Nawrocki -To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com -Cc: agraf@suse.de, sjg@chrmium.org, jh80.chung@samsung.com, - m.szyprowski@samsung.com, b.zolnierkie@samsung.com, Sylwester Nawrocki - -Subject: [RFC PATCH 6/9] usb: xhci: Allow accessing 64-bit registers with - DWORD accesses only -Date: Tue, 21 Apr 2020 18:50:56 +0200 -Message-Id: <20200421165059.19394-7-s.nawrocki@samsung.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200421165059.19394-1-s.nawrocki@samsung.com> -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprCKsWRmVeSWpSXmKPExsWy7djPc7o9KvPjDFY9ErA4ceUfo8XGGetZ - Lab2xFvc+NXGarH2yF12izdtjYwWCyY/YbU4/Kad1aLj6n9Gi7d7O9kduDzun2pg9Zg36wSL - x85Zd9k9zt7ZwejRt2UVo8f6LVdZPDafrg5gj+KySUnNySxLLdK3S+DKWHP3JXNBg1DFl0W7 - mBsY7/J1MXJySAiYSLy/coIVxBYSWMEo8e2sYxcjF5D9hVFi4beHjBDOZ0aJZQ0/GGE6Jn1d - wASRWM4osW7OOWa4lgfr5oFVsQkYSvQe7QOzRQQCJK79nAY2illgPqPEn0/TwBLCAvES958s - ZgOxWQRUJSZ2rGECsXkFrCWuLp/GDrFOXmL1hgPMIDangI3E3e8zWCDik9klFt2XhrBdJC5c - usoGYQtLvDq+BapXRuL/zvlgp0oINDNK9Oy+zQ7hTGCUuH98AdRD1hJ3zv0C6uYAOk9TYv0u - fYiwo0Tf1HesIGEJAT6JG28FQcLMQOakbdOZIcK8Eh1tQhDVKhK/V01ngrClJLqf/Ic600Pi - w8fFLJAA6meU6Nr7nnECo/wshGULGBlXMYqnlhbnpqcWG+allusVJ+YWl+al6yXn525iBKaV - 0/+Of9rB+PVS0iFGAQ5GJR7eG+fnxQmxJpYVV+YeYpTgYFYS4d3wECjEm5JYWZValB9fVJqT - WnyIUZqDRUmc13jRy1ghgfTEktTs1NSC1CKYLBMHp1QDo0NlrlZnZIZvA8+uwiqVNYzC/zbd - 8izctWfuNx4XYxXelzfU2SRYA08E32U8UlLxXiGjV3fxrc/35C7e3pyxj0dLTePrncrpBptb - FX6rXZLVnDGhff2fSQf+6HP95tKR3+wkzi0kXB99vkvDK6eoVW5d0uRYRxXTCfGnozzfc+wL - 6X+tWFehxFKckWioxVxUnAgAMSV15icDAAA= -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrKLMWRmVeSWpSXmKPExsVy+t/xu7rdKvPjDPr7bCxOXPnHaLFxxnpW - i6k98RY3frWxWqw9cpfd4k1bI6PFgslPWC0Ov2lntei4+p/R4u3eTnYHLo/7pxpYPebNOsHi - sXPWXXaPs3d2MHr0bVnF6LF+y1UWj82nqwPYo/RsivJLS1IVMvKLS2yVog0tjPQMLS30jEws - 9QyNzWOtjEyV9O1sUlJzMstSi/TtEvQy1tx9yVzQIFTxZdEu5gbGu3xdjJwcEgImEpO+LmDq - YuTiEBJYyihx8udKxi5GDqCElMT8FiWIGmGJP9e62CBqPjFKfOxoZgJJsAkYSvQe7WMEsUUE - QiReHL0CNogZZNCfhjesIAlhgViJGXMWsYPYLAKqEhM71oA18wpYS1xdPo0dYoO8xOoNB5hB - bE4BG4m732ewgNhCQDUNl5awTGDkW8DIsIpRJLW0ODc9t9hIrzgxt7g0L10vOT93EyMwyLcd - +7llB2PXu+BDjAIcjEo8vDfOz4sTYk0sK67MPcQowcGsJMK74SFQiDclsbIqtSg/vqg0J7X4 - EKMp0FETmaVEk/OBEZhXEm9oamhuYWlobmxubGahJM7bIXAwRkggPbEkNTs1tSC1CKaPiYNT - qoExbeNShg0BsVpXNX2+ynqZ6E7NXSE7VcnncfFtX/399bscXzZ29OomzhFKnuj8rz715Ruj - Dfa+8s+n7hDYcHyawgFVruDoGTumeS/WeHOltsT4QDWHrfWL65mbVjLm/99wxqyee9+3r8fY - 3h36XGPv8K1gQVD7jm/XPqUe2OMxsVg3m+mz4/cjSizFGYmGWsxFxYkAsqsjeYgCAAA= -X-CMS-MailID: 20200421165124eucas1p161d4049c0e136fc74ae2b00c2a1b3883 -X-Msg-Generator: CA -X-RootMTR: 20200421165124eucas1p161d4049c0e136fc74ae2b00c2a1b3883 -X-EPHeader: CA -CMS-TYPE: 201P -X-CMS-RootMailID: 20200421165124eucas1p161d4049c0e136fc74ae2b00c2a1b3883 -References: <20200421165059.19394-1-s.nawrocki@samsung.com> - -X-Mailman-Approved-At: Tue, 21 Apr 2020 19:40:20 +0200 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -This patch adds a Kconfig option which allows accessing 64-bit xHCI -IO registers only with 2 double word accesses rather than using -a single quad word access. There might be HW configurations where -single quad word access doesn't work, even though the CPU is 64-bit. -That seems to be the case on rpi4 board with Broadcom BCM2711 SoC, -where the VL805 USB xHCI hub is connected to the PCIe controller -behind the SCB bridge. - -Signed-off-by: Sylwester Nawrocki ---- -So far I couldn't come up with anything better to make the xHCI host -controller working on the rpi4 board. For some reason dereferencing -a 64-bit pointer to access 64-bit registers doesn't work there, -might be a limitation of the PCIe bridge behind the SCB. In Linux -always 2 double word accesses are used. ---- - drivers/usb/host/Kconfig | 7 +++++++ - include/usb/xhci.h | 4 ++-- - 2 files changed, 9 insertions(+), 2 deletions(-) - -diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig -index 0987ff2..3990b8a 100644 ---- a/drivers/usb/host/Kconfig -+++ b/drivers/usb/host/Kconfig -@@ -15,6 +15,13 @@ config USB_XHCI_HCD - - if USB_XHCI_HCD - -+config XHCI_64BIT_DWORD_ACCESS_ONLY -+ bool "Access xHCI 64-bit registers with double word accesses only" -+ help -+ Choose this option if your hardware does not support quad word accesses -+ for registers with 64-bit address pointers. -+ If unsure, say Y. -+ - config USB_XHCI_DWC3 - bool "DesignWare USB3 DRD Core Support" - help -diff --git a/include/usb/xhci.h b/include/usb/xhci.h -index 6017504..459e76b 100644 ---- a/include/usb/xhci.h -+++ b/include/usb/xhci.h -@@ -1111,7 +1111,7 @@ static inline void xhci_writel(uint32_t volatile *regs, const unsigned int val) - */ - static inline u64 xhci_readq(__le64 volatile *regs) - { --#if BITS_PER_LONG == 64 -+#if BITS_PER_LONG == 64 && !defined(CONFIG_XHCI_64BIT_DWORD_ACCESS_ONLY) - return readq(regs); - #else - __u32 *ptr = (__u32 *)regs; -@@ -1123,7 +1123,7 @@ static inline u64 xhci_readq(__le64 volatile *regs) - - static inline void xhci_writeq(__le64 volatile *regs, const u64 val) - { --#if BITS_PER_LONG == 64 -+#if BITS_PER_LONG == 64 && !defined(CONFIG_XHCI_64BIT_DWORD_ACCESS_ONLY) - writeq(val, regs); - #else - __u32 *ptr = (__u32 *)regs; - -From patchwork Tue Apr 21 16:50:57 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Sylwester Nawrocki -X-Patchwork-Id: 1274447 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 - header.s=mail20170921 header.b=kJBt9MQT; - dkim-atps=neutral -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4969r762FQz9sSK - for ; Wed, 22 Apr 2020 03:42:31 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 6363A81C5C; - Tue, 21 Apr 2020 19:41:12 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.b="kJBt9MQT"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 33EC581A07; Tue, 21 Apr 2020 18:51:30 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com - [210.118.77.11]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id D6CEE8184C - for ; Tue, 21 Apr 2020 18:51:25 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=s.nawrocki@samsung.com -Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) - by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id - 20200421165125euoutp017478067b4a8bcca514dc40fb627f8acd~H49IcW7dO0962409624euoutp01a - for ; Tue, 21 Apr 2020 16:51:25 +0000 (GMT) -DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com - 20200421165125euoutp017478067b4a8bcca514dc40fb627f8acd~H49IcW7dO0962409624euoutp01a -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; - s=mail20170921; t=1587487885; - bh=QSdxf5aZ1i+jg2fjLAbBS232kWZjIZ9zY4PIHR2Ni14=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=kJBt9MQTfmkeKhmiceQe/HUCmI96oRoDNPi5nn3ky/Y/Kh/4hsthKjmpse7p+jiPh - l1humgHswaPtb/kwiWawEP4oQeD+g1ttz9BnBrOk/9YpQrhoD46wGVfSuVlD+yprPM - j3DXWoNkCb5Jy2Ii1dO+p4MBcfHyCpQNuyBKhxX4= -Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by - eucas1p2.samsung.com (KnoxPortal) with ESMTP id - 20200421165124eucas1p22e6a58349823ac3889aa6b696d47eef7~H49IIOxKO2494924949eucas1p2s; - Tue, 21 Apr 2020 16:51:24 +0000 (GMT) -Received: from eucas1p1.samsung.com ( [182.198.249.206]) by - eusmges1new.samsung.com (EUCPMTA) with SMTP id 08.5D.61286.C842F9E5; Tue, 21 - Apr 2020 17:51:24 +0100 (BST) -Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by - eucas1p2.samsung.com (KnoxPortal) with ESMTPA id - 20200421165124eucas1p2e7cbc2eea896a682961304de7ff53dc2~H49H2hSgu2493024930eucas1p2e; - Tue, 21 Apr 2020 16:51:24 +0000 (GMT) -Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by - eusmtrp2.samsung.com (KnoxPortal) with ESMTP id - 20200421165124eusmtrp2805e4f2d242b9fde671b88d2af6d3996~H49H19aau3266732667eusmtrp2a; - Tue, 21 Apr 2020 16:51:24 +0000 (GMT) -X-AuditID: cbfec7f2-f0bff7000001ef66-7b-5e9f248ccc1b -Received: from eusmtip1.samsung.com ( [203.254.199.221]) by - eusmgms1.samsung.com (EUCPMTA) with SMTP id 8C.0E.08375.C842F9E5; Tue, 21 - Apr 2020 17:51:24 +0100 (BST) -Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by - eusmtip1.samsung.com (KnoxPortal) with ESMTPA id - 20200421165123eusmtip17d0177368f95f9d2fdda3229641c093c~H49HSnwTG0895708957eusmtip1I; - Tue, 21 Apr 2020 16:51:23 +0000 (GMT) -From: Sylwester Nawrocki -To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com -Cc: agraf@suse.de, sjg@chrmium.org, jh80.chung@samsung.com, - m.szyprowski@samsung.com, b.zolnierkie@samsung.com, Sylwester Nawrocki - -Subject: [RFC PATCH 7/9] pci: Add some PCI Express capability register - offset definitions -Date: Tue, 21 Apr 2020 18:50:57 +0200 -Message-Id: <20200421165059.19394-8-s.nawrocki@samsung.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200421165059.19394-1-s.nawrocki@samsung.com> -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprKKsWRmVeSWpSXmKPExsWy7djPc7o9KvPjDOb3GFqcuPKP0WLjjPWs - FlN74i1u/GpjtVh75C67xZu2RkaLBZOfsFocftPOatFx9T+jxdu9newOXB73TzWwesybdYLF - Y+esu+weZ+/sYPTo27KK0WP9lqssHptPVwewR3HZpKTmZJalFunbJXBlLOnbw1Zwi7Ni8+9z - bA2Mv9m7GDk5JARMJA78WsXaxcjFISSwglHixo1PbBDOF0aJxyvOMUM4nxklNn7czwbT0j75 - CSNEYjmjxP62HQgtB7eeZQWpYhMwlOg92scIYosIBEhc+zkNrINZYD6jxJ9P08ASwgLREt3L - poI1sAioSkw9dxgszitgLXH2+hMWiHXyEqs3HGAGsTkFbCTufp/BAjJIQqCfXeL43lag1RxA - jovEu7+uEPXCEq+Ob4H6Tkbi/875TBD1zYwSPbtvs0M4Exgl7h9fwAhRZS1x59wvsEHMApoS - 63fpQ4QdJaaufM8MMZ9P4sZbQZAwM5A5adt0qDCvREebEES1isTvVdOZIGwpie4n/6HO95CY - fG0pNID7GSWmv97INIFRfhbCsgWMjKsYxVNLi3PTU4sN81LL9YoTc4tL89L1kvNzNzECE8vp - f8c/7WD8einpEKMAB6MSD++N8/PihFgTy4orcw8xSnAwK4nwbngIFOJNSaysSi3Kjy8qzUkt - PsQozcGiJM5rvOhlrJBAemJJanZqakFqEUyWiYNTqoGx87UC54UXWU93H7X3MdWs/ZIef/B0 - 3D53q9ijlfeuCDrs1ouV0Xb4NO2RzMookbe3C+r83nb/Vpl4buWKTbnZG1bl3P5wxG5v5FeO - oCX3/7xinv/YaN69yH1cNeoyB/P/eq51Tzi/6ekicea0JYofo1L/Km4UqslcO1nz2Z5FqnoP - Zj3o108XVWIpzkg01GIuKk4EAKEb1VEoAwAA -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrKLMWRmVeSWpSXmKPExsVy+t/xu7o9KvPjDD58lrc4ceUfo8XGGetZ - Lab2xFvc+NXGarH2yF12izdtjYwWCyY/YbU4/Kad1aLj6n9Gi7d7O9kduDzun2pg9Zg36wSL - x85Zd9k9zt7ZwejRt2UVo8f6LVdZPDafrg5gj9KzKcovLUlVyMgvLrFVija0MNIztLTQMzKx - 1DM0No+1MjJV0rezSUnNySxLLdK3S9DLWNK3h63gFmfF5t/n2BoYf7N3MXJySAiYSLRPfsLY - xcjFISSwlFHi9/leIIcDKCElMb9FCaJGWOLPtS42iJpPjBK7GxYwgiTYBAwleo/2gdkiAiES - L45eYQIpYgYZ9KfhDStIQlggUuL5pSawbSwCqhJTzx0Ga+AVsJY4e/0JC8QGeYnVGw4wg9ic - AjYSd7/PAIsLAdU0XFrCMoGRbwEjwypGkdTS4tz03GJDveLE3OLSvHS95PzcTYzAIN927Ofm - HYyXNgYfYhTgYFTi4b1xfl6cEGtiWXFl7iFGCQ5mJRHeDQ+BQrwpiZVVqUX58UWlOanFhxhN - gY6ayCwlmpwPjMC8knhDU0NzC0tDc2NzYzMLJXHeDoGDMUIC6YklqdmpqQWpRTB9TBycUg2M - /pZZnzwOiax7IzV3XvqV1Vo/f7fMV/lY+/0d17pVLAxlCnkPI9+WiZ+ez6JbPNtuRtAP9fxH - DnsX8yb+fpP/9sOanwvXbZbiWOiiOVPNzd9Oc0vW1JIX2Rm7/ZTL2XvPhJfM/PF3L0PINbOe - PwxuK+0yjEWzp5uVrThasfjjykKLz69ZrqRMV2Ipzkg01GIuKk4EAJrdLQ6IAgAA -X-CMS-MailID: 20200421165124eucas1p2e7cbc2eea896a682961304de7ff53dc2 -X-Msg-Generator: CA -X-RootMTR: 20200421165124eucas1p2e7cbc2eea896a682961304de7ff53dc2 -X-EPHeader: CA -CMS-TYPE: 201P -X-CMS-RootMailID: 20200421165124eucas1p2e7cbc2eea896a682961304de7ff53dc2 -References: <20200421165059.19394-1-s.nawrocki@samsung.com> - -X-Mailman-Approved-At: Tue, 21 Apr 2020 19:40:20 +0200 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -Add PCI Express capability definitions required by the Broadcom STB PCIe -driver. - -Signed-off-by: Sylwester Nawrocki ---- - include/pci.h | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/include/pci.h b/include/pci.h -index 3d7646d..2b25a17 100644 ---- a/include/pci.h -+++ b/include/pci.h -@@ -481,10 +481,17 @@ - #define PCI_EXP_DEVCTL_BCR_FLR 0x8000 /* Bridge Configuration Retry / FLR */ - - #define PCI_EXP_LNKCAP 12 /* Link Capabilities */ -+#define PCI_EXP_LNKCAP_SLS 0x0000000f /* Supported Link Speeds */ -+#define PCI_EXP_LNKCAP_MLW 0x000003f0 /* Maximum Link Width */ - #define PCI_EXP_LNKCAP_DLLLARC 0x00100000 /* Data Link Layer Link Active Reporting Capable */ - - #define PCI_EXP_LNKSTA 18 /* Link Status */ -+#define PCI_EXP_LNKSTA_CLS 0x000f /* Current Link Speed */ -+#define PCI_EXP_LNKSTA_NLW 0x03f0 /* Negotiated Link Width */ -+#define PCI_EXP_LNKSTA_NLW_SHIFT 4 /* start of NLW mask in link status */ -+ - #define PCI_EXP_LNKSTA_DLLLA 0x2000 /* Data Link Layer Link Active */ -+#define PCI_EXP_LNKCTL2 48 /* Link Control 2 */ - - #define PCI_EXP_SLTCAP 20 /* Slot Capabilities */ - #define PCI_EXP_SLTCAP_PSN 0xfff80000 /* Physical Slot Number */ - -From patchwork Tue Apr 21 16:50:58 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Sylwester Nawrocki -X-Patchwork-Id: 1274450 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 - header.s=mail20170921 header.b=V2q01bQ/; - dkim-atps=neutral -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4969rc1xCYz9sSJ - for ; Wed, 22 Apr 2020 03:42:56 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 6CE2681C7F; - Tue, 21 Apr 2020 19:41:23 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.b="V2q01bQ/"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 9467681903; Tue, 21 Apr 2020 18:51:34 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com - [210.118.77.12]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 47472811EC - for ; Tue, 21 Apr 2020 18:51:26 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=s.nawrocki@samsung.com -Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) - by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id - 20200421165125euoutp027c2f8629ce3ba4a84d60b754a01e5b68~H49JAGcq02124521245euoutp02G - for ; Tue, 21 Apr 2020 16:51:25 +0000 (GMT) -DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com - 20200421165125euoutp027c2f8629ce3ba4a84d60b754a01e5b68~H49JAGcq02124521245euoutp02G -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; - s=mail20170921; t=1587487885; - bh=SgT5EbyyriPRlKXZCt8gGCg2BwcMKYEjMNbrTo1rN9Y=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=V2q01bQ/gRkexQmJ08rqktSSG2IIw4Oxph9as+yifS3FoSk2X9PC8am9EU71ZVFVD - NtGG2hSZAE1jVhNja+T7NhJsoPyJCBuezCB2h3S5qLFnfOTfNwY6S4MNfpwzycIhDu - gw/ekSJd9UfyRgnyQKd2WDWeFXzicX1P3HwlgFyc= -Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by - eucas1p2.samsung.com (KnoxPortal) with ESMTP id - 20200421165125eucas1p256a778789f1a945c6d829c4107899732~H49IzeZiQ2498424984eucas1p2s; - Tue, 21 Apr 2020 16:51:25 +0000 (GMT) -Received: from eucas1p1.samsung.com ( [182.198.249.206]) by - eusmges2new.samsung.com (EUCPMTA) with SMTP id 0B.64.60679.D842F9E5; Tue, 21 - Apr 2020 17:51:25 +0100 (BST) -Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by - eucas1p1.samsung.com (KnoxPortal) with ESMTPA id - 20200421165125eucas1p1a4cc19f4c58f449375e6d66b19d51e04~H49IdXmcE1760817608eucas1p1l; - Tue, 21 Apr 2020 16:51:25 +0000 (GMT) -Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by - eusmtrp2.samsung.com (KnoxPortal) with ESMTP id - 20200421165125eusmtrp27d7ff3dfafaa5b2e7a932be0db501d35~H49IcvAN33266732667eusmtrp2d; - Tue, 21 Apr 2020 16:51:25 +0000 (GMT) -X-AuditID: cbfec7f4-0cbff7000001ed07-20-5e9f248d424a -Received: from eusmtip1.samsung.com ( [203.254.199.221]) by - eusmgms2.samsung.com (EUCPMTA) with SMTP id 0A.3B.07950.D842F9E5; Tue, 21 - Apr 2020 17:51:25 +0100 (BST) -Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by - eusmtip1.samsung.com (KnoxPortal) with ESMTPA id - 20200421165124eusmtip15fa0a5ba05c41b46ed86e7d3b1fc2541~H49H0sDr10901309013eusmtip1D; - Tue, 21 Apr 2020 16:51:24 +0000 (GMT) -From: Sylwester Nawrocki -To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com -Cc: agraf@suse.de, sjg@chrmium.org, jh80.chung@samsung.com, - m.szyprowski@samsung.com, b.zolnierkie@samsung.com, Sylwester Nawrocki - -Subject: [RFC PATCH 8/9] pci: Add driver for Broadcom STB PCIe controller -Date: Tue, 21 Apr 2020 18:50:58 +0200 -Message-Id: <20200421165059.19394-9-s.nawrocki@samsung.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200421165059.19394-1-s.nawrocki@samsung.com> -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprOKsWRmVeSWpSXmKPExsWy7djPc7q9KvPjDB5NVbE4ceUfo8XGGetZ - Lab2xFvc+NXGarH2yF12izdtjYwWCyY/YbU4/Kad1aLj6n9Gi7d7O9kduDzun2pg9Zg36wSL - x85Zd9k9zt7ZwejRt2UVo8f6LVdZPDafrg5gj+KySUnNySxLLdK3S+DKWDfvFnPB4weMFVdb - bzA1MK7dwdjFyMkhIWAi0fL6L3MXIxeHkMAKRomXO/ugnC+MEqvn/2aEcD4zSkzdfAau5fSE - iVCJ5YwS/3fMYIJr6f36igmkik3AUKL3aB9Yh4hAgMS1n9PAOpgF5jNK/PkE4nBwCAt4Suzo - CAWpYRFQlbh6+CAziM0rYC2xbvdyNoht8hKrNxwAi3MK2Ejc/T6DBWSOhMBkdokXe+YzQRS5 - SFxZtZcFwhaWeHV8CzuELSPxf+d8JoiGZkaJnt232SGcCYwS948vgHrIWuLOuV9sIBcxC2hK - rN+lDxF2lOg5sZYZJCwhwCdx460gSJgZyJy0bTpUmFeio00IolpF4veq6VDnSEl0P/kPdY6H - xNVD3ayQAOpnlGj5+IVxAqP8LIRlCxgZVzGKp5YW56anFhvlpZbrFSfmFpfmpesl5+duYgQm - l9P/jn/ZwbjrT9IhRgEORiUe3hvn58UJsSaWFVfmHmKU4GBWEuHd8BAoxJuSWFmVWpQfX1Sa - k1p8iFGag0VJnNd40ctYIYH0xJLU7NTUgtQimCwTB6dUA2NEb/K2v9c3Gf2/fPSEilQmt+fk - nIuydjubLxYYtAan14tELLJf07M5eo3f7Q0K4rtel5bILQwvEN7/6szi8pMCOwxfLSwvdWVX - YrbkST/8boPRrDSlBDUhGZ6EVXHT1MxnGUr9vbc77bd1uFRUvab57JT/TxiftN7W/C48kcF/ - rvLXJXPSQpVYijMSDbWYi4oTAdsPWBwqAwAA -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrKLMWRmVeSWpSXmKPExsVy+t/xu7q9KvPjDH7e4LA4ceUfo8XGGetZ - Lab2xFvc+NXGarH2yF12izdtjYwWCyY/YbU4/Kad1aLj6n9Gi7d7O9kduDzun2pg9Zg36wSL - x85Zd9k9zt7ZwejRt2UVo8f6LVdZPDafrg5gj9KzKcovLUlVyMgvLrFVija0MNIztLTQMzKx - 1DM0No+1MjJV0rezSUnNySxLLdK3S9DLWDfvFnPB4weMFVdbbzA1MK7dwdjFyMkhIWAicXrC - RCCbi0NIYCmjxPzGAyxdjBxACSmJ+S1KEDXCEn+udbGB2EICnxgldq0uALHZBAwleo/2gc0R - EQiReHH0ChPIHGaQOX8a3rCCzBEW8JTY0REKUsMioCpx9fBBZhCbV8BaYt3u5WwQ8+UlVm84 - ABbnFLCRuPt9BgvELmuJhktLWCYw8i1gZFjFKJJaWpybnltspFecmFtcmpeul5yfu4kRGOTb - jv3cAvTPu+BDjAIcjEo8vDfOz4sTYk0sK67MPcQowcGsJMK74SFQiDclsbIqtSg/vqg0J7X4 - EKMp0FETmaVEk/OBEZhXEm9oamhuYWlobmxubGahJM7bIXAwRkggPbEkNTs1tSC1CKaPiYNT - qoHxyITUbVOmzfOe6xBQei+5rl3V9HyUYsrtstT3c/rPzTS5LfD/4tcN+rExMZsfCgefY3u/ - S3bGuWj2fSqzpogm8l8sO5tk0pj8VP3c50dhfaJ7u0JT1D8Ebdu46dSWX/8NJVkncJTv+3h4 - q3zpPtHlG9bk7lRYe1juQ+jL8jebYzzemgp82DHxjxJLcUaioRZzUXEiAG5+y62IAgAA -X-CMS-MailID: 20200421165125eucas1p1a4cc19f4c58f449375e6d66b19d51e04 -X-Msg-Generator: CA -X-RootMTR: 20200421165125eucas1p1a4cc19f4c58f449375e6d66b19d51e04 -X-EPHeader: CA -CMS-TYPE: 201P -X-CMS-RootMailID: 20200421165125eucas1p1a4cc19f4c58f449375e6d66b19d51e04 -References: <20200421165059.19394-1-s.nawrocki@samsung.com> - -X-Mailman-Approved-At: Tue, 21 Apr 2020 19:40:20 +0200 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -This patch adds basic driver for the Broadcom STB PCIe host controller. -The code is based on Linux upstream driver (pcie-brcmtsb.c) with MSI -handling removed. The inbound access memory region is not currently -parsed from dma-ranges DT property and is fixed as a 1:1 mapping of -whole RAM. -The patch has been tested on rpi4 board, i.e. on BCM2711 SoC with VL805 -USB Host Controller. - -Signed-off-by: Sylwester Nawrocki ---- - drivers/pci/Kconfig | 5 + - drivers/pci/Makefile | 1 + - drivers/pci/pcie_brcmstb.c | 844 +++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 850 insertions(+) - create mode 100644 drivers/pci/pcie_brcmstb.c - -diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig -index 437cd9a..02dcc57 100644 ---- a/drivers/pci/Kconfig -+++ b/drivers/pci/Kconfig -@@ -197,4 +197,9 @@ config PCIE_MEDIATEK - Say Y here if you want to enable Gen2 PCIe controller, - which could be found on MT7623 SoC family. - -+config PCI_BRCMSTB -+ bool "Broadcom STB PCIe controller" -+ depends on DM_PCI -+ help -+ Say Y here if you want to enable PCI controller support on BCM2711 SoC. - endif -diff --git a/drivers/pci/Makefile b/drivers/pci/Makefile -index c051ecc..3e53b1f 100644 ---- a/drivers/pci/Makefile -+++ b/drivers/pci/Makefile -@@ -43,3 +43,4 @@ obj-$(CONFIG_PCI_PHYTIUM) += pcie_phytium.o - obj-$(CONFIG_PCIE_INTEL_FPGA) += pcie_intel_fpga.o - obj-$(CONFIG_PCI_KEYSTONE) += pcie_dw_ti.o - obj-$(CONFIG_PCIE_MEDIATEK) += pcie_mediatek.o -+obj-$(CONFIG_PCI_BRCMSTB) += pcie_brcmstb.o -diff --git a/drivers/pci/pcie_brcmstb.c b/drivers/pci/pcie_brcmstb.c -new file mode 100644 -index 0000000..e96e163 ---- /dev/null -+++ b/drivers/pci/pcie_brcmstb.c -@@ -0,0 +1,844 @@ -+// SPDX-License-Identifier: GPL-2.0 -+/* -+ * Broadcom STB PCIe controller driver -+ * -+ * Copyright (C) 2020 Samsung Electronics Co., Ltd. -+ * Author: Sylwester Nawrocki -+ * -+ * Based on upstream Linux kernel driver: -+ * -+ * drivers/pci/controller/pcie-brcmstb.c -+ * Copyright (C) 2009 - 2017 Broadcom -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+DECLARE_GLOBAL_DATA_PTR; -+ -+/* BRCM_PCIE_CAP_REGS - Offset for the mandatory capability config regs */ -+#define BRCM_PCIE_CAP_REGS 0x00ac -+ -+/* -+ * Broadcom Settop Box PCIe Register Offsets. The names are from -+ * the chip's RDB and we use them here so that a script can correlate -+ * this code and the RDB to prevent discrepancies. -+ */ -+#define PCIE_RC_CFG_VENDOR_VENDOR_SPECIFIC_REG1 0x0188 -+#define PCIE_RC_CFG_PRIV1_ID_VAL3 0x043c -+#define PCIE_RC_DL_MDIO_ADDR 0x1100 -+#define PCIE_RC_DL_MDIO_WR_DATA 0x1104 -+#define PCIE_RC_DL_MDIO_RD_DATA 0x1108 -+#define PCIE_MISC_MISC_CTRL 0x4008 -+#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LO 0x400c -+#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_HI 0x4010 -+#define PCIE_MISC_RC_BAR1_CONFIG_LO 0x402c -+#define PCIE_MISC_RC_BAR2_CONFIG_LO 0x4034 -+#define PCIE_MISC_RC_BAR2_CONFIG_HI 0x4038 -+#define PCIE_MISC_RC_BAR3_CONFIG_LO 0x403c -+#define PCIE_MISC_MSI_BAR_CONFIG_LO 0x4044 -+#define PCIE_MISC_MSI_BAR_CONFIG_HI 0x4048 -+#define PCIE_MISC_MSI_DATA_CONFIG 0x404c -+#define PCIE_MISC_EOI_CTRL 0x4060 -+#define PCIE_MISC_PCIE_CTRL 0x4064 -+#define PCIE_MISC_PCIE_STATUS 0x4068 -+#define PCIE_MISC_REVISION 0x406c -+#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT 0x4070 -+#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_HI 0x4080 -+#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LIMIT_HI 0x4084 -+#define PCIE_MISC_HARD_PCIE_HARD_DEBUG 0x4204 -+#define PCIE_INTR2_CPU_BASE 0x4300 -+#define PCIE_MSI_INTR2_BASE 0x4500 -+ -+/* -+ * Broadcom Settop Box PCIe Register Field shift and mask info. The -+ * names are from the chip's RDB and we use them here so that a script -+ * can correlate this code and the RDB to prevent discrepancies. -+ */ -+#define PCIE_RC_CFG_VENDOR_VENDOR_SPECIFIC_REG1_ENDIAN_MODE_BAR2_MASK 0xc -+#define PCIE_RC_CFG_VENDOR_VENDOR_SPECIFIC_REG1_ENDIAN_MODE_BAR2_SHIFT 0x2 -+#define PCIE_RC_CFG_PRIV1_ID_VAL3_CLASS_CODE_MASK 0xffffff -+#define PCIE_RC_CFG_PRIV1_ID_VAL3_CLASS_CODE_SHIFT 0x0 -+#define PCIE_MISC_MISC_CTRL_SCB_ACCESS_EN_MASK 0x1000 -+#define PCIE_MISC_MISC_CTRL_SCB_ACCESS_EN_SHIFT 0xc -+#define PCIE_MISC_MISC_CTRL_CFG_READ_UR_MODE_MASK 0x2000 -+#define PCIE_MISC_MISC_CTRL_CFG_READ_UR_MODE_SHIFT 0xd -+#define PCIE_MISC_MISC_CTRL_MAX_BURST_SIZE_MASK 0x300000 -+#define PCIE_MISC_MISC_CTRL_MAX_BURST_SIZE_SHIFT 0x14 -+#define PCIE_MISC_MISC_CTRL_SCB0_SIZE_MASK 0xf8000000 -+#define PCIE_MISC_MISC_CTRL_SCB0_SIZE_SHIFT 0x1b -+#define PCIE_MISC_MISC_CTRL_SCB1_SIZE_MASK 0x7c00000 -+#define PCIE_MISC_MISC_CTRL_SCB1_SIZE_SHIFT 0x16 -+#define PCIE_MISC_MISC_CTRL_SCB2_SIZE_MASK 0x1f -+#define PCIE_MISC_MISC_CTRL_SCB2_SIZE_SHIFT 0x0 -+#define PCIE_MISC_RC_BAR1_CONFIG_LO_SIZE_MASK 0x1f -+#define PCIE_MISC_RC_BAR1_CONFIG_LO_SIZE_SHIFT 0x0 -+#define PCIE_MISC_RC_BAR2_CONFIG_LO_SIZE_MASK 0x1f -+#define PCIE_MISC_RC_BAR2_CONFIG_LO_SIZE_SHIFT 0x0 -+#define PCIE_MISC_RC_BAR3_CONFIG_LO_SIZE_MASK 0x1f -+#define PCIE_MISC_RC_BAR3_CONFIG_LO_SIZE_SHIFT 0x0 -+#define PCIE_MISC_PCIE_CTRL_PCIE_PERSTB_MASK 0x4 -+#define PCIE_MISC_PCIE_CTRL_PCIE_PERSTB_SHIFT 0x2 -+#define PCIE_MISC_PCIE_CTRL_PCIE_L23_REQUEST_MASK 0x1 -+#define PCIE_MISC_PCIE_CTRL_PCIE_L23_REQUEST_SHIFT 0x0 -+#define PCIE_MISC_PCIE_STATUS_PCIE_PORT_MASK 0x80 -+#define PCIE_MISC_PCIE_STATUS_PCIE_PORT_SHIFT 0x7 -+#define PCIE_MISC_PCIE_STATUS_PCIE_DL_ACTIVE_MASK 0x20 -+#define PCIE_MISC_PCIE_STATUS_PCIE_DL_ACTIVE_SHIFT 0x5 -+#define PCIE_MISC_PCIE_STATUS_PCIE_PHYLINKUP_MASK 0x10 -+#define PCIE_MISC_PCIE_STATUS_PCIE_PHYLINKUP_SHIFT 0x4 -+#define PCIE_MISC_PCIE_STATUS_PCIE_LINK_IN_L23_MASK 0x40 -+#define PCIE_MISC_PCIE_STATUS_PCIE_LINK_IN_L23_SHIFT 0x6 -+#define PCIE_MISC_REVISION_MAJMIN_MASK 0xffff -+#define PCIE_MISC_REVISION_MAJMIN_SHIFT 0 -+#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT_LIMIT_MASK 0xfff00000 -+#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT_LIMIT_SHIFT 0x14 -+#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT_BASE_MASK 0xfff0 -+#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT_BASE_SHIFT 0x4 -+#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT_NUM_MASK_BITS 0xc -+#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_HI_BASE_MASK 0xff -+#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_HI_BASE_SHIFT 0x0 -+#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LIMIT_HI_LIMIT_MASK 0xff -+#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LIMIT_HI_LIMIT_SHIFT 0x0 -+#define PCIE_MISC_HARD_PCIE_HARD_DEBUG_CLKREQ_DEBUG_ENABLE_MASK 0x2 -+#define PCIE_MISC_HARD_PCIE_HARD_DEBUG_CLKREQ_DEBUG_ENABLE_SHIFT 0x1 -+#define PCIE_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK 0x08000000 -+#define PCIE_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_SHIFT 0x1b -+#define PCIE_RGR1_SW_INIT_1_PERST_MASK 0x1 -+#define PCIE_RGR1_SW_INIT_1_PERST_SHIFT 0x0 -+ -+/* Offsets from PCIE_INTR2_CPU_BASE */ -+#define STATUS 0x0 -+#define SET 0x4 -+#define CLR 0x8 -+#define MASK_STATUS 0xc -+#define MASK_SET 0x10 -+#define MASK_CLR 0x14 -+ -+#define BRCM_NUM_PCIE_OUT_WINS 0x4 -+#define BRCM_MAX_SCB 0x4 -+ -+#define BURST_SIZE_128 0 -+ -+#define PCIE_BUSNUM_SHIFT 20 -+#define PCIE_SLOT_SHIFT 15 -+#define PCIE_FUNC_SHIFT 12 -+ -+#if defined(__BIG_ENDIAN) -+#define DATA_ENDIAN 2 /* PCIe->DDR inbound traffic */ -+#define MMIO_ENDIAN 2 /* CPU->PCIe outbound traffic */ -+#else -+#define DATA_ENDIAN 0 -+#define MMIO_ENDIAN 0 -+#endif -+ -+#define MDIO_PORT0 0x0 -+#define MDIO_DATA_MASK 0x7fffffff -+#define MDIO_DATA_SHIFT 0x0 -+#define MDIO_PORT_MASK 0xf0000 -+#define MDIO_PORT_SHIFT 0x16 -+#define MDIO_REGAD_MASK 0xffff -+#define MDIO_REGAD_SHIFT 0x0 -+#define MDIO_CMD_MASK 0xfff00000 -+#define MDIO_CMD_SHIFT 0x14 -+#define MDIO_CMD_READ 0x1 -+#define MDIO_CMD_WRITE 0x0 -+#define MDIO_DATA_DONE_MASK 0x80000000 -+#define MDIO_RD_DONE(x) (((x) & MDIO_DATA_DONE_MASK) ? 1 : 0) -+#define MDIO_WT_DONE(x) (((x) & MDIO_DATA_DONE_MASK) ? 0 : 1) -+#define SSC_REGS_ADDR 0x1100 -+#define SET_ADDR_OFFSET 0x1f -+#define SSC_CNTL_OFFSET 0x2 -+#define SSC_CNTL_OVRD_EN_MASK 0x8000 -+#define SSC_CNTL_OVRD_EN_SHIFT 0xf -+#define SSC_CNTL_OVRD_VAL_MASK 0x4000 -+#define SSC_CNTL_OVRD_VAL_SHIFT 0xe -+#define SSC_STATUS_OFFSET 0x1 -+#define SSC_STATUS_SSC_MASK 0x400 -+#define SSC_STATUS_SSC_SHIFT 0xa -+#define SSC_STATUS_PLL_LOCK_MASK 0x800 -+#define SSC_STATUS_PLL_LOCK_SHIFT 0xb -+ -+#define IDX_ADDR(pcie) ((pcie)->reg_offsets[EXT_CFG_INDEX]) -+#define DATA_ADDR(pcie) ((pcie)->reg_offsets[EXT_CFG_DATA]) -+#define PCIE_RGR1_SW_INIT_1(pcie) ((pcie)->reg_offsets[RGR1_SW_INIT_1]) -+ -+enum { -+ RGR1_SW_INIT_1, -+ EXT_CFG_INDEX, -+ EXT_CFG_DATA, -+}; -+ -+enum { -+ RGR1_SW_INIT_1_INIT_MASK, -+ RGR1_SW_INIT_1_INIT_SHIFT, -+ RGR1_SW_INIT_1_PERST_MASK, -+ RGR1_SW_INIT_1_PERST_SHIFT, -+}; -+ -+enum pcie_type { -+ BCM7425, -+ BCM7435, -+ GENERIC, -+ BCM7278, -+ BCM2711, -+}; -+ -+struct brcm_window { -+ dma_addr_t pci_addr; -+ phys_addr_t phys_addr; -+ dma_addr_t size; -+}; -+ -+struct brcm_pcie { -+ struct resource mem; -+ bool ssc; -+ -+ struct device_node *dn; -+ void __iomem *base; -+ -+ int num_out_wins; -+ struct brcm_window out_wins[BRCM_NUM_PCIE_OUT_WINS]; -+ -+ int gen; -+ unsigned int rev; -+ -+ const int *reg_offsets; -+ const int *reg_field_info; -+ u32 max_burst_size; -+ enum pcie_type type; -+}; -+ -+struct pcie_cfg_data { -+ const int *reg_field_info; -+ const int *offsets; -+ const u32 max_burst_size; -+ const enum pcie_type type; -+}; -+ -+static struct brcm_window dma_ranges[1]; -+static int num_dma_ranges; -+ -+static const int pcie_reg_field_info[] = { -+ [RGR1_SW_INIT_1_INIT_MASK] = 0x2, -+ [RGR1_SW_INIT_1_INIT_SHIFT] = 0x1, -+}; -+ -+static const int pcie_offsets[] = { -+ [RGR1_SW_INIT_1] = 0x9210, -+ [EXT_CFG_INDEX] = 0x9000, -+ [EXT_CFG_DATA] = 0x8000, -+}; -+ -+static const struct pcie_cfg_data generic_cfg = { -+ .reg_field_info = pcie_reg_field_info, -+ .offsets = pcie_offsets, -+ .max_burst_size = BURST_SIZE_128, -+ .type = GENERIC, -+}; -+ -+static const struct pcie_cfg_data bcm2711_cfg = { -+ .reg_field_info = pcie_reg_field_info, -+ .offsets = pcie_offsets, -+ .max_burst_size = BURST_SIZE_128, -+ .type = BCM2711, -+}; -+ -+/* These macros extract/insert fields to host controller's register set */ -+#define WR_FLD(base, reg, field, val) \ -+ wr_fld(base + reg, reg##_##field##_MASK, reg##_##field##_SHIFT, val) -+#define WR_FLD_RB(base, reg, field, val) \ -+ wr_fld_rb(base + reg, reg##_##field##_MASK, reg##_##field##_SHIFT, val) -+#define WR_FLD_WITH_OFFSET(base, off, reg, field, val) \ -+ wr_fld(base + reg + off, reg##_##field##_MASK, \ -+ reg##_##field##_SHIFT, val) -+#define EXTRACT_FIELD(val, reg, field) \ -+ ((val & reg##_##field##_MASK) >> reg##_##field##_SHIFT) -+#define INSERT_FIELD(val, reg, field, field_val) \ -+ ((val & ~reg##_##field##_MASK) | \ -+ (reg##_##field##_MASK & (field_val << reg##_##field##_SHIFT))) -+ -+#define msleep(a) udelay((a) * 1000) -+ -+/* -+ * The roundup_pow_of_two() from log2.h invokes -+ * __roundup_pow_of_two(unsigned long), but we really need -+ * such a function to take a native u64 since unsigned long -+ * is 32 bits on some configurations. So we provide this helper -+ * function below. -+ */ -+static u64 roundup_pow_of_two_64(u64 n) -+{ -+ return 1ULL << fls64(n - 1); -+} -+ -+/* -+ * This is to convert the size of the inbound "BAR" region to the -+ * non-linear values of PCIE_X_MISC_RC_BAR[123]_CONFIG_LO.SIZE -+ */ -+int encode_ibar_size(u64 size) -+{ -+ int log2_in = ilog2(size); -+ -+ if (log2_in >= 12 && log2_in <= 15) -+ /* Covers 4KB to 32KB (inclusive) */ -+ return (log2_in - 12) + 0x1c; -+ else if (log2_in >= 16 && log2_in <= 37) -+ /* Covers 64KB to 32GB, (inclusive) */ -+ return log2_in - 15; -+ /* Something is awry so disable */ -+ return 0; -+} -+ -+/* Configuration space read/write support */ -+static int cfg_index(int busnr, int devfn, int reg) -+{ -+ return (PCI_DEV(devfn) << PCIE_SLOT_SHIFT) -+ | (PCI_FUNC(devfn) << PCIE_FUNC_SHIFT) -+ | (busnr << PCIE_BUSNUM_SHIFT) -+ | (reg & ~3); -+} -+ -+/* The controller is capable of serving in both RC and EP roles */ -+static bool brcm_pcie_rc_mode(struct brcm_pcie *pcie) -+{ -+ void __iomem *base = pcie->base; -+ u32 val = readl(base + PCIE_MISC_PCIE_STATUS); -+ -+ return !!EXTRACT_FIELD(val, PCIE_MISC_PCIE_STATUS, PCIE_PORT); -+} -+ -+static bool brcm_pcie_link_up(struct brcm_pcie *pcie) -+{ -+ void __iomem *base = pcie->base; -+ u32 val = readl(base + PCIE_MISC_PCIE_STATUS); -+ u32 dla = EXTRACT_FIELD(val, PCIE_MISC_PCIE_STATUS, PCIE_DL_ACTIVE); -+ u32 plu = EXTRACT_FIELD(val, PCIE_MISC_PCIE_STATUS, PCIE_PHYLINKUP); -+ -+ return (dla && plu) ? true : false; -+} -+ -+static int brcm_pcie_config_address(const struct udevice *udev, pci_dev_t bdf, -+ uint offset, void **paddress) -+{ -+ struct brcm_pcie *pcie = dev_get_priv(udev); -+ unsigned int bus = PCI_BUS(bdf); -+ unsigned int dev = PCI_DEV(bdf); -+ int idx; -+ -+ if (bus > 0 && !brcm_pcie_link_up(pcie)) -+ return -ENODEV; -+ -+ /* -+ * Busses 0 (host PCIe bridge) and 1 (its immediate child) -+ * are limited to a single device each -+ */ -+ if ((bus == (udev->seq + 1)) && dev > 0) -+ return -ENODEV; -+ -+ /* Accesses to the RC go right to the RC registers if PCI device == 0 */ -+ if (bus == udev->seq) { -+ if (PCI_DEV(bdf)) -+ return -ENODEV; -+ -+ *paddress = pcie->base + offset; -+ return 0; -+ } -+ -+ /* For devices, write to the config space index register */ -+ idx = cfg_index(bus, bdf, 0); -+ -+ writel(idx, pcie->base + IDX_ADDR(pcie)); -+ *paddress = pcie->base + DATA_ADDR(pcie) + offset; -+ -+ return 0; -+} -+ -+static int brcm_pcie_read_config(const struct udevice *bus, pci_dev_t bdf, -+ uint offset, ulong *valuep, -+ enum pci_size_t size) -+{ -+ return pci_generic_mmap_read_config(bus, brcm_pcie_config_address, -+ bdf, offset, valuep, size); -+} -+ -+static int brcm_pcie_write_config(struct udevice *bus, pci_dev_t bdf, -+ uint offset, ulong value, -+ enum pci_size_t size) -+{ -+ return pci_generic_mmap_write_config(bus, brcm_pcie_config_address, -+ bdf, offset, value, size); -+} -+ -+static void wr_fld(void __iomem *p, u32 mask, int shift, u32 val) -+{ -+ u32 reg = readl(p); -+ -+ reg = (reg & ~mask) | ((val << shift) & mask); -+ writel(reg, p); -+} -+ -+static void wr_fld_rb(void __iomem *p, u32 mask, int shift, u32 val) -+{ -+ wr_fld(p, mask, shift, val); -+ (void)readl(p); -+} -+ -+static const char *link_speed_to_str(int s) -+{ -+ switch (s) { -+ case 1: -+ return "2.5"; -+ case 2: -+ return "5.0"; -+ case 3: -+ return "8.0"; -+ default: -+ break; -+ } -+ return "???"; -+} -+ -+static inline void brcm_pcie_bridge_sw_init_set(struct brcm_pcie *pcie, -+ unsigned int val) -+{ -+ unsigned int shift = pcie->reg_field_info[RGR1_SW_INIT_1_INIT_SHIFT]; -+ u32 mask = pcie->reg_field_info[RGR1_SW_INIT_1_INIT_MASK]; -+ -+ wr_fld_rb(pcie->base + PCIE_RGR1_SW_INIT_1(pcie), mask, shift, val); -+} -+ -+static inline void brcm_pcie_perst_set(struct brcm_pcie *pcie, -+ unsigned int val) -+{ -+ if (pcie->type != BCM7278) -+ wr_fld_rb(pcie->base + PCIE_RGR1_SW_INIT_1(pcie), -+ PCIE_RGR1_SW_INIT_1_PERST_MASK, -+ PCIE_RGR1_SW_INIT_1_PERST_SHIFT, val); -+ else -+ /* Assert = 0, de-assert = 1 on 7278 */ -+ WR_FLD_RB(pcie->base, PCIE_MISC_PCIE_CTRL, PCIE_PERSTB, !val); -+} -+ -+static u32 mdio_form_pkt(int port, int regad, int cmd) -+{ -+ u32 pkt = 0; -+ -+ pkt |= (port << MDIO_PORT_SHIFT) & MDIO_PORT_MASK; -+ pkt |= (regad << MDIO_REGAD_SHIFT) & MDIO_REGAD_MASK; -+ pkt |= (cmd << MDIO_CMD_SHIFT) & MDIO_CMD_MASK; -+ -+ return pkt; -+} -+ -+/* Negative return value indicates error */ -+static int mdio_read(void __iomem *base, u8 port, u8 regad) -+{ -+ int tries; -+ u32 data; -+ -+ writel(mdio_form_pkt(port, regad, MDIO_CMD_READ), -+ base + PCIE_RC_DL_MDIO_ADDR); -+ readl(base + PCIE_RC_DL_MDIO_ADDR); -+ -+ data = readl(base + PCIE_RC_DL_MDIO_RD_DATA); -+ for (tries = 0; !MDIO_RD_DONE(data) && tries < 10; tries++) { -+ udelay(10); -+ data = readl(base + PCIE_RC_DL_MDIO_RD_DATA); -+ } -+ -+ return MDIO_RD_DONE(data) -+ ? (data & MDIO_DATA_MASK) >> MDIO_DATA_SHIFT -+ : -EIO; -+} -+ -+/* Negative return value indicates error */ -+static int mdio_write(void __iomem *base, u8 port, u8 regad, u16 wrdata) -+{ -+ int tries; -+ u32 data; -+ -+ writel(mdio_form_pkt(port, regad, MDIO_CMD_WRITE), -+ base + PCIE_RC_DL_MDIO_ADDR); -+ readl(base + PCIE_RC_DL_MDIO_ADDR); -+ writel(MDIO_DATA_DONE_MASK | wrdata, -+ base + PCIE_RC_DL_MDIO_WR_DATA); -+ -+ data = readl(base + PCIE_RC_DL_MDIO_WR_DATA); -+ for (tries = 0; !MDIO_WT_DONE(data) && tries < 10; tries++) { -+ udelay(10); -+ data = readl(base + PCIE_RC_DL_MDIO_WR_DATA); -+ } -+ -+ return MDIO_WT_DONE(data) ? 0 : -EIO; -+} -+ -+/* -+ * Configures device for Spread Spectrum Clocking (SSC) mode; negative -+ * return value indicates error. -+ */ -+static int set_ssc(void __iomem *base) -+{ -+ int tmp; -+ u16 wrdata; -+ int pll, ssc; -+ -+ tmp = mdio_write(base, MDIO_PORT0, SET_ADDR_OFFSET, SSC_REGS_ADDR); -+ if (tmp < 0) -+ return tmp; -+ -+ tmp = mdio_read(base, MDIO_PORT0, SSC_CNTL_OFFSET); -+ if (tmp < 0) -+ return tmp; -+ -+ wrdata = INSERT_FIELD(tmp, SSC_CNTL_OVRD, EN, 1); -+ wrdata = INSERT_FIELD(wrdata, SSC_CNTL_OVRD, VAL, 1); -+ tmp = mdio_write(base, MDIO_PORT0, SSC_CNTL_OFFSET, wrdata); -+ if (tmp < 0) -+ return tmp; -+ -+ udelay(1500); -+ tmp = mdio_read(base, MDIO_PORT0, SSC_STATUS_OFFSET); -+ if (tmp < 0) -+ return tmp; -+ -+ ssc = EXTRACT_FIELD(tmp, SSC_STATUS, SSC); -+ pll = EXTRACT_FIELD(tmp, SSC_STATUS, PLL_LOCK); -+ -+ return (ssc && pll) ? 0 : -EIO; -+} -+ -+/* Limits operation to a specific generation (1, 2, or 3) */ -+static void set_gen(void __iomem *base, int gen) -+{ -+ u32 lnkcap = readl(base + BRCM_PCIE_CAP_REGS + PCI_EXP_LNKCAP); -+ u16 lnkctl2 = readw(base + BRCM_PCIE_CAP_REGS + PCI_EXP_LNKCTL2); -+ -+ lnkcap = (lnkcap & ~PCI_EXP_LNKCAP_SLS) | gen; -+ writel(lnkcap, base + BRCM_PCIE_CAP_REGS + PCI_EXP_LNKCAP); -+ -+ lnkctl2 = (lnkctl2 & ~0xf) | gen; -+ writew(lnkctl2, base + BRCM_PCIE_CAP_REGS + PCI_EXP_LNKCTL2); -+} -+ -+static void brcm_pcie_set_outbound_win(struct brcm_pcie *pcie, -+ unsigned int win, phys_addr_t phys_addr, -+ dma_addr_t pcie_addr, dma_addr_t size) -+{ -+ void __iomem *base = pcie->base; -+ phys_addr_t phys_addr_mb, limit_addr_mb; -+ u32 tmp; -+ -+ /* Set the base of the pcie_addr window */ -+ writel(lower_32_bits(pcie_addr) + MMIO_ENDIAN, -+ base + PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LO + (win * 8)); -+ writel(upper_32_bits(pcie_addr), -+ base + PCIE_MISC_CPU_2_PCIE_MEM_WIN0_HI + (win * 8)); -+ -+ phys_addr_mb = phys_addr >> 20; -+ limit_addr_mb = (phys_addr + size - 1) >> 20; -+ -+ /* Write the addr base low register */ -+ WR_FLD_WITH_OFFSET(base, (win * 4), -+ PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT, -+ BASE, phys_addr_mb); -+ /* Write the addr limit low register */ -+ WR_FLD_WITH_OFFSET(base, (win * 4), -+ PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT, -+ LIMIT, limit_addr_mb); -+ -+ if (pcie->type != BCM7435 && pcie->type != BCM7425) { -+ /* Write the cpu addr high register */ -+ tmp = (u32)(phys_addr_mb >> -+ PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT_NUM_MASK_BITS); -+ WR_FLD_WITH_OFFSET(base, (win * 8), -+ PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_HI, -+ BASE, tmp); -+ /* Write the cpu limit high register */ -+ tmp = (u32)(limit_addr_mb >> -+ PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT_NUM_MASK_BITS); -+ WR_FLD_WITH_OFFSET(base, (win * 8), -+ PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LIMIT_HI, -+ LIMIT, tmp); -+ } -+} -+ -+static int brcm_pcie_setup(struct brcm_pcie *pcie) -+{ -+ phys_addr_t scb_size[BRCM_MAX_SCB] = {0}; -+ void __iomem *base = pcie->base; -+ unsigned int scb_size_val; -+ u64 rc_bar2_offset, rc_bar2_size; -+ u64 total_mem_size = 0; -+ int i, j, ret, limit, num_memc; -+ u16 nlw, cls, lnksta; -+ bool ssc_good = false; -+ u32 tmp; -+ -+ /* Reset the bridge */ -+ brcm_pcie_bridge_sw_init_set(pcie, 1); -+ -+ /* -+ * Ensure that the fundamental reset is asserted, except for 7278, -+ * which fails if we do this. -+ */ -+ if (pcie->type != BCM7278) -+ brcm_pcie_perst_set(pcie, 1); -+ -+ udelay(150); -+ -+ /* Take the bridge out of reset */ -+ brcm_pcie_bridge_sw_init_set(pcie, 0); -+ -+ WR_FLD_RB(base, PCIE_MISC_HARD_PCIE_HARD_DEBUG, SERDES_IDDQ, 0); -+ /* Wait for SerDes to be stable */ -+ udelay(150); -+ -+ /* Grab the PCIe hw revision number */ -+ tmp = readl(base + PCIE_MISC_REVISION); -+ pcie->rev = EXTRACT_FIELD(tmp, PCIE_MISC_REVISION, MAJMIN); -+ -+ /* Set SCB_MAX_BURST_SIZE, CFG_READ_UR_MODE, SCB_ACCESS_EN */ -+ tmp = INSERT_FIELD(0, PCIE_MISC_MISC_CTRL, SCB_ACCESS_EN, 1); -+ tmp = INSERT_FIELD(tmp, PCIE_MISC_MISC_CTRL, CFG_READ_UR_MODE, 1); -+ tmp = INSERT_FIELD(tmp, PCIE_MISC_MISC_CTRL, MAX_BURST_SIZE, -+ pcie->max_burst_size); -+ writel(tmp, base + PCIE_MISC_MISC_CTRL); -+ -+ /* -+ * Set up inbound memory view for the EP (called RC_BAR2, not to be -+ * confused with the BARs that are advertised by the EP). -+ * -+ * The PCIe host controller by design must set the inbound viewport -+ * to be a contiguous arrangement of all of the system's memory. -+ * In addition, its size must be a power of two. Further, the MSI -+ * target address must NOT be placed inside this region, as the -+ * decoding logic will consider its address to be inbound memory -+ * traffic. To further complicate matters, the viewport must start -+ * on a pcie-address that is aligned on a multiple of its size. -+ * If a portion of the viewport does not represent system memory -+ * -- e.g. 3GB of memory requires a 4GB viewport -- we can map -+ * the outbound memory in or after 3GB and even though the viewport -+ * will overlap the outbound memory the controller will know to send -+ * outbound memory downstream and everything else upstream. -+ */ -+ -+ if (num_dma_ranges) { -+ /* -+ * Use the base address and size(s) provided in the dma-ranges -+ * property. -+ */ -+ for (i = 0; i < num_dma_ranges; i++) -+ scb_size[i] = roundup_pow_of_two_64(dma_ranges[i].size); -+ -+ num_memc = num_dma_ranges; -+ rc_bar2_offset = dma_ranges[0].pci_addr; -+ } else { -+ return -EINVAL; -+ } -+ -+ for (i = 0; i < num_memc; i++) -+ total_mem_size += scb_size[i]; -+ -+ rc_bar2_size = roundup_pow_of_two_64(total_mem_size); -+ -+ /* Verify the alignment is correct */ -+ if (rc_bar2_offset & (rc_bar2_size - 1)) { -+ printf("PCIe BRCM: inbound window is misaligned\n"); -+ return -EINVAL; -+ } -+ -+ tmp = lower_32_bits(rc_bar2_offset); -+ tmp = INSERT_FIELD(tmp, PCIE_MISC_RC_BAR2_CONFIG_LO, SIZE, -+ encode_ibar_size(rc_bar2_size)); -+ writel(tmp, base + PCIE_MISC_RC_BAR2_CONFIG_LO); -+ writel(upper_32_bits(rc_bar2_offset), -+ base + PCIE_MISC_RC_BAR2_CONFIG_HI); -+ -+ scb_size_val = scb_size[0] -+ ? ilog2(scb_size[0]) - 15 : 0xf; /* 0xf is 1GB */ -+ WR_FLD(base, PCIE_MISC_MISC_CTRL, SCB0_SIZE, scb_size_val); -+ -+ if (num_memc > 1) { -+ scb_size_val = scb_size[1] -+ ? ilog2(scb_size[1]) - 15 : 0xf; /* 0xf is 1GB */ -+ WR_FLD(base, PCIE_MISC_MISC_CTRL, SCB1_SIZE, scb_size_val); -+ } -+ -+ if (num_memc > 2) { -+ scb_size_val = scb_size[2] -+ ? ilog2(scb_size[2]) - 15 : 0xf; /* 0xf is 1GB */ -+ WR_FLD(base, PCIE_MISC_MISC_CTRL, SCB2_SIZE, scb_size_val); -+ } -+ -+ /* Disable the PCIe->GISB memory window (RC_BAR1) */ -+ WR_FLD(base, PCIE_MISC_RC_BAR1_CONFIG_LO, SIZE, 0); -+ -+ /* Disable the PCIe->SCB memory window (RC_BAR3) */ -+ WR_FLD(base, PCIE_MISC_RC_BAR3_CONFIG_LO, SIZE, 0); -+ -+ /* Clear any interrupts we find on boot */ -+ writel(0xffffffff, base + PCIE_INTR2_CPU_BASE + CLR); -+ (void)readl(base + PCIE_INTR2_CPU_BASE + CLR); -+ -+ /* Mask all interrupts since we are not handling any yet */ -+ writel(0xffffffff, base + PCIE_INTR2_CPU_BASE + MASK_SET); -+ (void)readl(base + PCIE_INTR2_CPU_BASE + MASK_SET); -+ -+ if (pcie->gen) -+ set_gen(base, pcie->gen); -+ -+ /* Unassert the fundamental reset */ -+ brcm_pcie_perst_set(pcie, 0); -+ -+ /* Give the RC/EP time to wake up, before trying to configure RC. */ -+ limit = 100; -+ for (i = 1, j = 0; j < limit && !brcm_pcie_link_up(pcie); -+ j += i, i = i * 2) -+ msleep(i + j > limit ? limit - j : i); -+ -+ if (!brcm_pcie_link_up(pcie)) { -+ printf("PCIe BRCM: link down\n"); -+ return -ENODEV; -+ } -+ -+ if (!brcm_pcie_rc_mode(pcie)) { -+ printf("PCIe misconfigured; is in EP mode\n"); -+ return -EINVAL; -+ } -+ -+ for (i = 0; i < pcie->num_out_wins; i++) -+ brcm_pcie_set_outbound_win(pcie, i, pcie->out_wins[i].phys_addr, -+ pcie->out_wins[i].pci_addr, -+ pcie->out_wins[i].size); -+ -+ /* -+ * For config space accesses on the RC, show the right class for -+ * a PCIe-PCIe bridge (the default setting is to be EP mode). -+ */ -+ WR_FLD_RB(base, PCIE_RC_CFG_PRIV1_ID_VAL3, CLASS_CODE, 0x060400); -+ -+ if (pcie->ssc) { -+ ret = set_ssc(base); -+ if (ret == 0) -+ ssc_good = true; -+ else -+ printf("PCIe BRCM: failed attempt to enter ssc mode\n"); -+ } -+ -+ lnksta = readw(base + BRCM_PCIE_CAP_REGS + PCI_EXP_LNKSTA); -+ cls = lnksta & PCI_EXP_LNKSTA_CLS; -+ nlw = (lnksta & PCI_EXP_LNKSTA_NLW) >> PCI_EXP_LNKSTA_NLW_SHIFT; -+ -+ printf("PCIe BRCM: link up, %s Gbps x%u %s\n", link_speed_to_str(cls), -+ nlw, ssc_good ? "(SSC)" : "(!SSC)"); -+ -+ /* PCIe->SCB endian mode for BAR */ -+ /* field ENDIAN_MODE_BAR2 = DATA_ENDIAN */ -+ WR_FLD_RB(base, PCIE_RC_CFG_VENDOR_VENDOR_SPECIFIC_REG1, -+ ENDIAN_MODE_BAR2, DATA_ENDIAN); -+ -+ /* -+ * Refclk from RC should be gated with CLKREQ# input when ASPM L0s,L1 -+ * is enabled => setting the CLKREQ_DEBUG_ENABLE field to 1. -+ */ -+ WR_FLD_RB(base, PCIE_MISC_HARD_PCIE_HARD_DEBUG, CLKREQ_DEBUG_ENABLE, 1); -+ -+ return 0; -+} -+ -+static const struct udevice_id brcm_pcie_ids[] = { -+ { .compatible = "brcm,bcm7445-pcie", .data = (ulong)&generic_cfg }, -+ { .compatible = "brcm,bcm2711-pcie", .data = (ulong)&bcm2711_cfg }, -+ { } -+}; -+ -+static int brcm_pcie_probe(struct udevice *dev) -+{ -+ struct udevice *ctlr = pci_get_controller(dev); -+ struct pci_controller *hose = dev_get_uclass_priv(ctlr); -+ struct brcm_pcie *pcie = dev_get_priv(dev); -+ struct pcie_cfg_data *data = (struct pcie_cfg_data *)dev_get_driver_data(dev); -+ ofnode dn = dev_ofnode(dev); -+ u32 max_link_speed; -+ int i; -+ -+ if (hose->region_count < 2) { -+ pr_err("PCIe BRCM: Missing PCI regions definition"); -+ return -EINVAL; -+ } -+ -+ for (i = 0; i < hose->region_count; i++) { -+ if (hose->regions[i].flags == PCI_REGION_SYS_MEMORY) -+ continue; -+ -+ pcie->out_wins[i].phys_addr = hose->regions[i].phys_start; -+ pcie->out_wins[i].pci_addr = hose->regions[i].bus_start; -+ pcie->out_wins[i].size = hose->regions[i].size; -+ pcie->num_out_wins++; -+ } -+ -+ /* TODO: Parse inbound access mapping from dma-ranges DT property */ -+ num_dma_ranges = 1; -+ for (i = 0; i < hose->region_count; i++) { -+ if (hose->regions[i].flags != PCI_REGION_SYS_MEMORY) -+ continue; -+ -+ dma_ranges[0].pci_addr = hose->regions[i].bus_start; -+ dma_ranges[0].phys_addr = hose->regions[i].phys_start; -+ dma_ranges[0].size = hose->regions[i].size; -+ break; -+ } -+ -+ pcie->reg_offsets = data->offsets; -+ pcie->reg_field_info = data->reg_field_info; -+ pcie->max_burst_size = data->max_burst_size; -+ pcie->type = data->type; -+ -+ if (ofnode_read_u32(dn, "max-link-speed", &max_link_speed) || -+ max_link_speed > 4) -+ pcie->gen = 0; -+ else -+ pcie->gen = max_link_speed; -+ -+ pcie->ssc = ofnode_read_bool(dn, "brcm,enable-ssc"); -+ -+ return brcm_pcie_setup(pcie); -+} -+ -+static int brcm_pcie_ofdata_to_platdata(struct udevice *dev) -+{ -+ struct brcm_pcie *pcie = dev_get_priv(dev); -+ -+ /* Get the controller base address */ -+ pcie->base = dev_read_addr_ptr(dev); -+ if (!pcie->base) -+ return -EINVAL; -+ -+ return 0; -+} -+ -+static const struct dm_pci_ops brcm_pcie_ops = { -+ .read_config = brcm_pcie_read_config, -+ .write_config = brcm_pcie_write_config, -+}; -+ -+U_BOOT_DRIVER(pcie_brcm_base) = { -+ .name = "pcie_brcm", -+ .id = UCLASS_PCI, -+ .ops = &brcm_pcie_ops, -+ .of_match = brcm_pcie_ids, -+ .probe = brcm_pcie_probe, -+ .ofdata_to_platdata = brcm_pcie_ofdata_to_platdata, -+ .priv_auto_alloc_size = sizeof(struct brcm_pcie), -+}; - -From patchwork Tue Apr 21 16:50:59 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Sylwester Nawrocki -X-Patchwork-Id: 1274448 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 - header.s=mail20170921 header.b=RBB5T/f+; - dkim-atps=neutral -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4969rP1mTgz9sSJ - for ; Wed, 22 Apr 2020 03:42:45 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 622F381C7C; - Tue, 21 Apr 2020 19:41:20 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.b="RBB5T/f+"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 6ACE281A07; Tue, 21 Apr 2020 18:51:32 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,UPPERCASE_50_75,URIBL_BLOCKED - autolearn=no autolearn_force=no version=3.4.2 -Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com - [210.118.77.11]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 349DF81A18 - for ; Tue, 21 Apr 2020 18:51:27 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=s.nawrocki@samsung.com -Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) - by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id - 20200421165126euoutp01ba71afc4eba05b35dc346ebddbc61e90~H49JqbGbV0959709597euoutp01d - for ; Tue, 21 Apr 2020 16:51:26 +0000 (GMT) -DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com - 20200421165126euoutp01ba71afc4eba05b35dc346ebddbc61e90~H49JqbGbV0959709597euoutp01d -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; - s=mail20170921; t=1587487886; - bh=8f+WvUWDLHHwwlhMHv7Ajbo0xyRT3miVzyvERB5pdSk=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=RBB5T/f+9abZt7lxRvmjd9QryZYRjDraN7ut4dXLhBwPD2eV+kaieGV249a0v7U+3 - tqOn6re8nw14/F7arQUaSDrIpPkgXeCpdB6PobnHkkarORdCeBSzm+uXPDb0+oCD3X - tddbFFXixkL45CFRP0UHTYBPA7shkibzGJy1hnOc= -Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by - eucas1p2.samsung.com (KnoxPortal) with ESMTP id - 20200421165126eucas1p2eee4102e9b89b1ee388217f4081c67f0~H49JVcFSF1251112511eucas1p25; - Tue, 21 Apr 2020 16:51:26 +0000 (GMT) -Received: from eucas1p2.samsung.com ( [182.198.249.207]) by - eusmges2new.samsung.com (EUCPMTA) with SMTP id EB.64.60679.E842F9E5; Tue, 21 - Apr 2020 17:51:26 +0100 (BST) -Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by - eucas1p1.samsung.com (KnoxPortal) with ESMTPA id - 20200421165125eucas1p12d7451082887a52073ba795aa0ee398a~H49I7LR4B1762717627eucas1p1U; - Tue, 21 Apr 2020 16:51:25 +0000 (GMT) -Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by - eusmtrp2.samsung.com (KnoxPortal) with ESMTP id - 20200421165125eusmtrp222bb00f71d4a2ef821d21350fb24e056~H49I6l4i73266732667eusmtrp2f; - Tue, 21 Apr 2020 16:51:25 +0000 (GMT) -X-AuditID: cbfec7f4-0e5ff7000001ed07-23-5e9f248e6317 -Received: from eusmtip1.samsung.com ( [203.254.199.221]) by - eusmgms2.samsung.com (EUCPMTA) with SMTP id BA.3B.07950.D842F9E5; Tue, 21 - Apr 2020 17:51:25 +0100 (BST) -Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by - eusmtip1.samsung.com (KnoxPortal) with ESMTPA id - 20200421165125eusmtip1a3d057804e72a9f3cec2268d56b5f631~H49IZf0be0895708957eusmtip1J; - Tue, 21 Apr 2020 16:51:25 +0000 (GMT) -From: Sylwester Nawrocki -To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com -Cc: agraf@suse.de, sjg@chrmium.org, jh80.chung@samsung.com, - m.szyprowski@samsung.com, b.zolnierkie@samsung.com -Subject: [RFC PATCH 9/9] config: Enable support for the XHCI controller on - RPI4 board -Date: Tue, 21 Apr 2020 18:50:59 +0200 -Message-Id: <20200421165059.19394-10-s.nawrocki@samsung.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200421165059.19394-1-s.nawrocki@samsung.com> -X-Brightmail-Tracker: H4sIAAAAAAAAA0WSbUhTcRTG+e++zppcp+AflYxhH9LUzIhbiVkG3Q998ENkRWpTb1PTKfc6 - zYQwheVbU7OcTFJLaWWEM81Xwlo1zdcvvoEbthzhLAObIFq63K7Vt995zvNwOIdDItIqzI9M - V+aynFKeKcM90G7TxmSoJqgp8fBYCUoPT20DuqO+HaMfVibRc5tqjH75wULQ39V3AN1ca8Po - 0mknoFfelBExYmZhpAhjGnXDKNOnsxDMuLkXMJquNsC0d02jTOdoYRxxxSMqlc1Mz2O58Ohr - HmnFzRt4TuX+m7XqQawIfPYvByQJqaPQ8DS2HHiQUuoZgMsPHCKhWAOwxdqJCIUDQJNmCZQD - sTvR8mlgt6EHsNioBf8iG48eYy4XTkXAex817oQPFQdnNurcjFA5sG7WhrvYm4qHFYb3bkap - A7DB8U7kYgkVBecNHbgwLRC+MLxFXCze0S3r9ahrGKQqCLhp78EE01lY12ncDXjD5aEuQuAA - 6OxrEgmBEgArB+YJoagGcGGoeXehk9A8sYm7zoFQB2F7f7ggn4Z6rRMTruQJ51a8hAU84f1u - LSLIEliqlgruIPirTSsS2A9W2JyowAy011h3r1UF4OvnZqIaBOr+D2sGoA34sio+S8HyR5Rs - fhgvz+JVSkVYSnbWK7DzJqPbQ2u9oP93shFQJJDtlcxNNiZKMXkeX5BlBJBEZD4Sg3VHkqTK - C26xXHYSp8pkeSPwJ1GZryTyiT1BSinkuewNls1hub9dESn2KwLJg1+3GcJnoqnQntS+dGor - g3FOHjdfGtBf3qOc0h3Sr0dor2/GpFrGwsdmW+P3rVGj+DHrlk2f34qDkC8hIzWmqbvG1YD+ - tBlrRoiXmps5Lynzjmsd+ZnClZ5zLJ4oi/3mQ6Y3jJ9R9Ny2R5pCfySsXo1WiS8uhnHBjYkd - F2QonyaPCEY4Xv4HlRBgdCIDAAA= -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrPLMWRmVeSWpSXmKPExsVy+t/xu7q9KvPjDBrnaFmcuPKP0WLjjPWs - FlN74i1u/GpjtVh75C67xZu2RkaLBZOfsFp0XP3PaPF2bye7A6fH/VMNrB7zZp1g8dg56y67 - x9k7Oxg9+rasYvRYv+Uqi8fm09UB7FF6NkX5pSWpChn5xSW2StGGFkZ6hpYWekYmlnqGxuax - VkamSvp2NimpOZllqUX6dgl6GU0LfrIV9ChUTG7bz9rA+EC6i5GTQ0LARGLxyd3MXYxcHEIC - SxklPvy/yt7FyAGUkJKY36IEUSMs8edaFxtEzSdGibXPXzGDJNgEDCV6j/YxgtgiAiESL45e - YQKxmQXKJNa0vgaLCwuEStyd0gNmswioSsz+fBCshlfARuL2ho1sEAvkJVZvOAA2kxMofvf7 - DBYQW0jAWqLh0hKWCYx8CxgZVjGKpJYW56bnFhvpFSfmFpfmpesl5+duYgQG9rZjP7fsYOx6 - F3yIUYCDUYmH98b5eXFCrIllxZW5hxglOJiVRHg3PAQK8aYkVlalFuXHF5XmpBYfYjQFOmoi - s5Rocj4w6vJK4g1NDc0tLA3Njc2NzSyUxHk7BA7GCAmkJ5akZqemFqQWwfQxcXBKNTBWTnjA - 9rfi5OHFK1WDPefc1Lu4NHa3k0wcX1F135VL2qWb2AoizLZIZYrNyrjw0f+d94ZWruRVorea - j/wSO5bju/fInhW3XUo8DDUe22meFxPewrSBefPkV4tqufjmZfw2215cNE+8PDvoi1vXG/vu - HJazefOrPDX48nXr2GPVpXas8L377pESS3FGoqEWc1FxIgDja1QoggIAAA== -X-CMS-MailID: 20200421165125eucas1p12d7451082887a52073ba795aa0ee398a -X-Msg-Generator: CA -X-RootMTR: 20200421165125eucas1p12d7451082887a52073ba795aa0ee398a -X-EPHeader: CA -CMS-TYPE: 201P -X-CMS-RootMailID: 20200421165125eucas1p12d7451082887a52073ba795aa0ee398a -References: <20200421165059.19394-1-s.nawrocki@samsung.com> - -X-Mailman-Approved-At: Tue, 21 Apr 2020 19:40:20 +0200 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -From: Marek Szyprowski - -This requires enabling BRCMSTB PCIe and XHCI_PCI drivers as well as PCI -and USB commands. To get it working one has to call the following commands: -"pci enum; usb start;", thus such commands have been added to the default -"preboot" environment variable. One has to update his environment if it is -already configured to get this feature working out of the box. - -Signed-off-by: Marek Szyprowski ---- - configs/rpi_4_32b_defconfig | 9 +++++++++ - configs/rpi_4_defconfig | 10 ++++++++++ - configs/rpi_arm64_defconfig | 9 ++++++++- - 3 files changed, 27 insertions(+), 1 deletion(-) - -diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig -index 72cda5d..0dd763f 100644 ---- a/configs/rpi_4_32b_defconfig -+++ b/configs/rpi_4_32b_defconfig -@@ -8,6 +8,8 @@ CONFIG_NR_DRAM_BANKS=2 - CONFIG_DISTRO_DEFAULTS=y - CONFIG_OF_BOARD_SETUP=y - # CONFIG_ARCH_FIXUP_FDT_MEMORY is not set -+CONFIG_USE_PREBOOT=y -+CONFIG_PREBOOT="pci enum; usb start;" - CONFIG_MISC_INIT_R=y - # CONFIG_DISPLAY_CPUINFO is not set - # CONFIG_DISPLAY_BOARDINFO is not set -@@ -15,6 +17,8 @@ CONFIG_SYS_PROMPT="U-Boot> " - CONFIG_CMD_DFU=y - CONFIG_CMD_GPIO=y - CONFIG_CMD_MMC=y -+CONFIG_CMD_PCI=y -+CONFIG_CMD_USB=y - CONFIG_CMD_FS_UUID=y - CONFIG_OF_BOARD=y - CONFIG_ENV_FAT_INTERFACE="mmc" -@@ -28,12 +32,17 @@ CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_BCM2835=y - CONFIG_DM_ETH=y - CONFIG_BCMGENET=y -+CONFIG_PCI=y -+CONFIG_DM_PCI=y -+CONFIG_PCI_BRCMSTB=y - CONFIG_PINCTRL=y - # CONFIG_PINCTRL_GENERIC is not set - # CONFIG_REQUIRE_SERIAL_CONSOLE is not set - CONFIG_USB=y - CONFIG_DM_USB=y - CONFIG_DM_USB_GADGET=y -+CONFIG_USB_XHCI_HCD=y -+CONFIG_USB_XHCI_PCI=y - CONFIG_USB_GADGET=y - CONFIG_USB_GADGET_MANUFACTURER="FSL" - CONFIG_USB_GADGET_VENDOR_NUM=0x0525 -diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig -index 6d148da..f80e5da 100644 ---- a/configs/rpi_4_defconfig -+++ b/configs/rpi_4_defconfig -@@ -8,6 +8,8 @@ CONFIG_NR_DRAM_BANKS=2 - CONFIG_DISTRO_DEFAULTS=y - CONFIG_OF_BOARD_SETUP=y - # CONFIG_ARCH_FIXUP_FDT_MEMORY is not set -+CONFIG_USE_PREBOOT=y -+CONFIG_PREBOOT="pci enum; usb start;" - CONFIG_MISC_INIT_R=y - # CONFIG_DISPLAY_CPUINFO is not set - # CONFIG_DISPLAY_BOARDINFO is not set -@@ -15,6 +17,8 @@ CONFIG_SYS_PROMPT="U-Boot> " - CONFIG_CMD_DFU=y - CONFIG_CMD_GPIO=y - CONFIG_CMD_MMC=y -+CONFIG_CMD_PCI=y -+CONFIG_CMD_USB=y - CONFIG_CMD_FS_UUID=y - CONFIG_OF_BOARD=y - CONFIG_ENV_FAT_INTERFACE="mmc" -@@ -28,12 +32,18 @@ CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_BCM2835=y - CONFIG_DM_ETH=y - CONFIG_BCMGENET=y -+CONFIG_PCI=y -+CONFIG_DM_PCI=y -+CONFIG_PCI_BRCMSTB=y - CONFIG_PINCTRL=y - # CONFIG_PINCTRL_GENERIC is not set - # CONFIG_REQUIRE_SERIAL_CONSOLE is not set - CONFIG_USB=y - CONFIG_DM_USB=y - CONFIG_DM_USB_GADGET=y -+CONFIG_USB_XHCI_HCD=y -+CONFIG_XHCI_64BIT_DWORD_ACCESS_ONLY=y -+CONFIG_USB_XHCI_PCI=y - CONFIG_USB_GADGET=y - CONFIG_USB_GADGET_MANUFACTURER="FSL" - CONFIG_USB_GADGET_VENDOR_NUM=0x0525 -diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig -index fea86be..926dfc3 100644 ---- a/configs/rpi_arm64_defconfig -+++ b/configs/rpi_arm64_defconfig -@@ -7,13 +7,14 @@ CONFIG_NR_DRAM_BANKS=2 - CONFIG_DISTRO_DEFAULTS=y - CONFIG_OF_BOARD_SETUP=y - CONFIG_USE_PREBOOT=y --CONFIG_PREBOOT="usb start" -+CONFIG_PREBOOT="pci enum; usb start;" - CONFIG_MISC_INIT_R=y - # CONFIG_DISPLAY_CPUINFO is not set - # CONFIG_DISPLAY_BOARDINFO is not set - CONFIG_SYS_PROMPT="U-Boot> " - CONFIG_CMD_GPIO=y - CONFIG_CMD_MMC=y -+CONFIG_CMD_PCI=y - CONFIG_CMD_USB=y - CONFIG_CMD_FS_UUID=y - CONFIG_OF_BOARD=y -@@ -26,11 +27,17 @@ CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_BCM2835=y - CONFIG_DM_ETH=y - CONFIG_BCMGENET=y -+CONFIG_PCI=y -+CONFIG_DM_PCI=y -+CONFIG_PCI_BRCMSTB=y - CONFIG_PINCTRL=y - # CONFIG_PINCTRL_GENERIC is not set - # CONFIG_REQUIRE_SERIAL_CONSOLE is not set - CONFIG_USB=y - CONFIG_DM_USB=y -+CONFIG_USB_XHCI_HCD=y -+CONFIG_XHCI_64BIT_DWORD_ACCESS_ONLY=y -+CONFIG_USB_XHCI_PCI=y - CONFIG_USB_DWC2=y - CONFIG_USB_KEYBOARD=y - CONFIG_USB_HOST_ETHER=y -From 41e5d853779e91ea193ea0251bae9328083e2374 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Tue, 21 Apr 2020 20:18:31 +0100 -Subject: [PATCH] rpi4: add usb keyboard/storage - -Signed-off-by: Peter Robinson ---- - configs/rpi_4_32b_defconfig | 2 ++ - configs/rpi_4_defconfig | 2 ++ - 2 files changed, 4 insertions(+) - -diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig -index 0dd763f06f..2e137414f7 100644 ---- a/configs/rpi_4_32b_defconfig -+++ b/configs/rpi_4_32b_defconfig -@@ -49,6 +49,8 @@ CONFIG_USB_GADGET_VENDOR_NUM=0x0525 - CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5 - CONFIG_USB_GADGET_DWC2_OTG=y - CONFIG_USB_GADGET_DOWNLOAD=y -+CONFIG_USB_KEYBOARD=y -+CONFIG_USB_STORAGE=y - CONFIG_DM_VIDEO=y - # CONFIG_VIDEO_BPP8 is not set - # CONFIG_VIDEO_BPP16 is not set -diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig -index f80e5dac3e..bdefbd2a45 100644 ---- a/configs/rpi_4_defconfig -+++ b/configs/rpi_4_defconfig -@@ -50,6 +50,8 @@ CONFIG_USB_GADGET_VENDOR_NUM=0x0525 - CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5 - CONFIG_USB_GADGET_DWC2_OTG=y - CONFIG_USB_GADGET_DOWNLOAD=y -+CONFIG_USB_KEYBOARD=y -+CONFIG_USB_STORAGE=y - CONFIG_DM_VIDEO=y - # CONFIG_VIDEO_BPP8 is not set - # CONFIG_VIDEO_BPP16 is not set --- -2.26.1 - diff --git a/aarch64-boards b/aarch64-boards index 4782501..cc0d265 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -61,6 +61,7 @@ rockpro64-rk3399 roc-pc-rk3399 rpi_3 rpi_4 +rpi_arm64 sopine_baseboard teres_i turris_mox diff --git a/arm-dts-rockchip-rk3399-add-and-enable-rng-node.patch b/arm-dts-rockchip-rk3399-add-and-enable-rng-node.patch deleted file mode 100644 index 0dea1a8..0000000 --- a/arm-dts-rockchip-rk3399-add-and-enable-rng-node.patch +++ /dev/null @@ -1,863 +0,0 @@ -From patchwork Tue Mar 31 09:39:57 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Lin Jinhan -X-Patchwork-Id: 1264692 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) - smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; - helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; - receiver=) -Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) - header.from=rock-chips.com -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 48s6hn3fdhz9sRN - for ; - Tue, 31 Mar 2020 22:35:53 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 5F650819E0; - Tue, 31 Mar 2020 13:35:36 +0200 (CEST) -Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) - header.from=rock-chips.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 954FF819AD; Tue, 31 Mar 2020 11:40:13 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-0.4 required=5.0 tests=BAYES_00, RCVD_IN_SORBS_WEB, - SPF_HELO_NONE,URIBL_BLOCKED autolearn=no autolearn_force=no - version=3.4.2 -Received: from lucky1.263xmail.com (lucky1.263xmail.com [211.157.147.131]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 09E15819A7 - for ; Tue, 31 Mar 2020 11:40:07 +0200 (CEST) -Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) - header.from=rock-chips.com -Authentication-Results: phobos.denx.de; - spf=fail smtp.mailfrom=troy.lin@rock-chips.com -Received: from localhost (unknown [192.168.167.235]) - by lucky1.263xmail.com (Postfix) with ESMTP id D98D394B53; - Tue, 31 Mar 2020 17:40:03 +0800 (CST) -X-MAIL-GRAY: 0 -X-MAIL-DELIVERY: 1 -X-ADDR-CHECKED: 0 -X-ANTISPAM-LEVEL: 2 -X-ABS-CHECKED: 0 -Received: from localhost.localdomain (unknown [58.22.7.114]) - by smtp.263.net (postfix) whith ESMTP id - P29487T139780956792576S1585647603180703_; - Tue, 31 Mar 2020 17:40:04 +0800 (CST) -X-IP-DOMAINF: 1 -X-UNIQUE-TAG: <29a98dd6429030be44046c52ecfec245> -X-RL-SENDER: troy.lin@rock-chips.com -X-SENDER: troy.lin@rock-chips.com -X-LOGIN-NAME: troy.lin@rock-chips.com -X-FST-TO: u-boot@lists.denx.de -X-SENDER-IP: 58.22.7.114 -X-ATTACHMENT-NUM: 0 -X-DNS-TYPE: 0 -X-System-Flag: 0 -From: Lin Jinhan -To: u-boot@lists.denx.de, - sughosh.ganu@linaro.org, - xypron.glpk@gmx.de -Cc: kever.yang@rock-chips.com, zhangzj@rock-chips.com, - Lin Jinhan -Subject: [PATCH 1/5] arm: dts: rockchip: rk3399: add and enable rng node -Date: Tue, 31 Mar 2020 17:39:57 +0800 -Message-Id: <20200331094001.13441-1-troy.lin@rock-chips.com> -X-Mailer: git-send-email 2.17.1 -X-Mailman-Approved-At: Tue, 31 Mar 2020 13:35:19 +0200 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -Add rng node in rk3399-u-boot.dtsi and enable it in -rk3399-evb-u-boot.dtsi. - -Signed-off-by: Lin Jinhan ---- - arch/arm/dts/rk3399-evb-u-boot.dtsi | 5 +++++ - arch/arm/dts/rk3399-u-boot.dtsi | 6 ++++++ - 2 files changed, 11 insertions(+) - -diff --git a/arch/arm/dts/rk3399-evb-u-boot.dtsi b/arch/arm/dts/rk3399-evb-u-boot.dtsi -index ccb33d34d1..5b50c5ba30 100644 ---- a/arch/arm/dts/rk3399-evb-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-evb-u-boot.dtsi -@@ -11,3 +11,8 @@ - u-boot,spl-boot-order = &sdhci, &sdmmc; - }; - }; -+ -+&rng { -+ status = "okay"; -+}; -+ -diff --git a/arch/arm/dts/rk3399-u-boot.dtsi b/arch/arm/dts/rk3399-u-boot.dtsi -index 8b857ccfc7..757b8c10a2 100644 ---- a/arch/arm/dts/rk3399-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-u-boot.dtsi -@@ -25,6 +25,12 @@ - clock-names = "pclk_ddr_mon"; - }; - -+ rng: rng@ff8b8000 { -+ compatible = "rockchip,cryptov1-rng"; -+ reg = <0x0 0xff8b8000 0x0 0x1000>; -+ status = "disabled"; -+ }; -+ - dmc: dmc { - u-boot,dm-pre-reloc; - compatible = "rockchip,rk3399-dmc"; - -From patchwork Tue Mar 31 09:39:58 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Lin Jinhan -X-Patchwork-Id: 1264694 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) - smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; - helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; - receiver=) -Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) - header.from=rock-chips.com -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 48s6jD6Vlrz9sQt - for ; - Tue, 31 Mar 2020 22:36:16 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 826F0819FE; - Tue, 31 Mar 2020 13:35:41 +0200 (CEST) -Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) - header.from=rock-chips.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 99DE6819A6; Tue, 31 Mar 2020 11:40:17 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-0.4 required=5.0 tests=BAYES_00, RCVD_IN_SORBS_WEB, - SPF_HELO_NONE,URIBL_BLOCKED autolearn=no autolearn_force=no - version=3.4.2 -Received: from lucky1.263xmail.com (lucky1.263xmail.com [211.157.147.131]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 4316F819A8 - for ; Tue, 31 Mar 2020 11:40:10 +0200 (CEST) -Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) - header.from=rock-chips.com -Authentication-Results: phobos.denx.de; - spf=fail smtp.mailfrom=troy.lin@rock-chips.com -Received: from localhost (unknown [192.168.167.235]) - by lucky1.263xmail.com (Postfix) with ESMTP id 65A9594DC1; - Tue, 31 Mar 2020 17:40:04 +0800 (CST) -X-MAIL-GRAY: 0 -X-MAIL-DELIVERY: 1 -X-ADDR-CHECKED: 0 -X-ANTISPAM-LEVEL: 2 -X-ABS-CHECKED: 0 -Received: from localhost.localdomain (unknown [58.22.7.114]) - by smtp.263.net (postfix) whith ESMTP id - P29487T139780956792576S1585647603180703_; - Tue, 31 Mar 2020 17:40:04 +0800 (CST) -X-IP-DOMAINF: 1 -X-UNIQUE-TAG: <5d721e76916e55da5c0d6122d449dd8b> -X-RL-SENDER: troy.lin@rock-chips.com -X-SENDER: troy.lin@rock-chips.com -X-LOGIN-NAME: troy.lin@rock-chips.com -X-FST-TO: u-boot@lists.denx.de -X-SENDER-IP: 58.22.7.114 -X-ATTACHMENT-NUM: 0 -X-DNS-TYPE: 0 -X-System-Flag: 0 -From: Lin Jinhan -To: u-boot@lists.denx.de, - sughosh.ganu@linaro.org, - xypron.glpk@gmx.de -Cc: kever.yang@rock-chips.com, zhangzj@rock-chips.com, - Lin Jinhan -Subject: [PATCH 2/5] arm: dts: rockchip: px30: add and enable rng node -Date: Tue, 31 Mar 2020 17:39:58 +0800 -Message-Id: <20200331094001.13441-2-troy.lin@rock-chips.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200331094001.13441-1-troy.lin@rock-chips.com> -References: <20200331094001.13441-1-troy.lin@rock-chips.com> -X-Mailman-Approved-At: Tue, 31 Mar 2020 13:35:19 +0200 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -Add enable rng node in px30-evb-u-boot.dtsi. - -Signed-off-by: Lin Jinhan ---- - arch/arm/dts/px30-evb-u-boot.dtsi | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/arch/arm/dts/px30-evb-u-boot.dtsi b/arch/arm/dts/px30-evb-u-boot.dtsi -index a2a2c07dcc..a73c215c05 100644 ---- a/arch/arm/dts/px30-evb-u-boot.dtsi -+++ b/arch/arm/dts/px30-evb-u-boot.dtsi -@@ -12,6 +12,13 @@ - chosen { - u-boot,spl-boot-order = &emmc, &sdmmc; - }; -+ -+ rng: rng@ff0b0000 { -+ compatible = "rockchip,cryptov2-rng"; -+ reg = <0x0 0xff0b0000 0x0 0x4000>; -+ status = "okay"; -+ }; -+ - }; - - &dmc { - -From patchwork Tue Mar 31 09:39:59 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Lin Jinhan -X-Patchwork-Id: 1264693 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) - smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; - helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; - receiver=) -Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) - header.from=rock-chips.com -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 48s6j253gKz9sR4 - for ; - Tue, 31 Mar 2020 22:36:06 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 380C9819EA; - Tue, 31 Mar 2020 13:35:38 +0200 (CEST) -Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) - header.from=rock-chips.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 88872819A9; Tue, 31 Mar 2020 11:40:15 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-0.4 required=5.0 tests=BAYES_00, RCVD_IN_SORBS_WEB, - SPF_HELO_NONE,URIBL_BLOCKED autolearn=no autolearn_force=no - version=3.4.2 -Received: from lucky1.263xmail.com (lucky1.263xmail.com [211.157.147.130]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 449FA819A6 - for ; Tue, 31 Mar 2020 11:40:09 +0200 (CEST) -Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) - header.from=rock-chips.com -Authentication-Results: phobos.denx.de; - spf=fail smtp.mailfrom=troy.lin@rock-chips.com -Received: from localhost (unknown [192.168.167.235]) - by lucky1.263xmail.com (Postfix) with ESMTP id B1262A3EF8; - Tue, 31 Mar 2020 17:40:04 +0800 (CST) -X-MAIL-GRAY: 0 -X-MAIL-DELIVERY: 1 -X-ADDR-CHECKED: 0 -X-ANTISPAM-LEVEL: 2 -X-ABS-CHECKED: 0 -Received: from localhost.localdomain (unknown [58.22.7.114]) - by smtp.263.net (postfix) whith ESMTP id - P29487T139780956792576S1585647603180703_; - Tue, 31 Mar 2020 17:40:04 +0800 (CST) -X-IP-DOMAINF: 1 -X-UNIQUE-TAG: <78d4a197cac8da659f7b02fbce5e0ad8> -X-RL-SENDER: troy.lin@rock-chips.com -X-SENDER: troy.lin@rock-chips.com -X-LOGIN-NAME: troy.lin@rock-chips.com -X-FST-TO: u-boot@lists.denx.de -X-SENDER-IP: 58.22.7.114 -X-ATTACHMENT-NUM: 0 -X-DNS-TYPE: 0 -X-System-Flag: 0 -From: Lin Jinhan -To: u-boot@lists.denx.de, - sughosh.ganu@linaro.org, - xypron.glpk@gmx.de -Cc: kever.yang@rock-chips.com, zhangzj@rock-chips.com, - Lin Jinhan -Subject: [PATCH 3/5] rockchip: rng: Add a driver for random number - generator(rng) device -Date: Tue, 31 Mar 2020 17:39:59 +0800 -Message-Id: <20200331094001.13441-3-troy.lin@rock-chips.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200331094001.13441-1-troy.lin@rock-chips.com> -References: <20200331094001.13441-1-troy.lin@rock-chips.com> -X-Mailman-Approved-At: Tue, 31 Mar 2020 13:35:19 +0200 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -Add a driver for the rng device found on rockchip platforms. -Support rng module of crypto v1 and crypto v2. - -Signed-off-by: Lin Jinhan ---- - drivers/rng/Kconfig | 8 ++ - drivers/rng/Makefile | 1 + - drivers/rng/rockchip_rng.c | 224 +++++++++++++++++++++++++++++++++++++ - 3 files changed, 233 insertions(+) - create mode 100644 drivers/rng/rockchip_rng.c - -diff --git a/drivers/rng/Kconfig b/drivers/rng/Kconfig -index edb6152bb9..e4b22d79eb 100644 ---- a/drivers/rng/Kconfig -+++ b/drivers/rng/Kconfig -@@ -31,4 +31,12 @@ config RNG_STM32MP1 - help - Enable STM32MP1 rng driver. - -+config RNG_ROCKCHIP -+ bool "Enable random number generator for rockchip crypto rng" -+ depends on ARCH_ROCKCHIP && DM_RNG -+ default n -+ help -+ Enable random number generator for rockchip.This driver is -+ support rng module of crypto v1 and crypto v2. -+ - endif -diff --git a/drivers/rng/Makefile b/drivers/rng/Makefile -index 6a8a66779b..44a0003917 100644 ---- a/drivers/rng/Makefile -+++ b/drivers/rng/Makefile -@@ -7,3 +7,4 @@ obj-$(CONFIG_DM_RNG) += rng-uclass.o - obj-$(CONFIG_RNG_MESON) += meson-rng.o - obj-$(CONFIG_RNG_SANDBOX) += sandbox_rng.o - obj-$(CONFIG_RNG_STM32MP1) += stm32mp1_rng.o -+obj-$(CONFIG_RNG_ROCKCHIP) += rockchip_rng.o -diff --git a/drivers/rng/rockchip_rng.c b/drivers/rng/rockchip_rng.c -new file mode 100644 -index 0000000000..47fb140077 ---- /dev/null -+++ b/drivers/rng/rockchip_rng.c -@@ -0,0 +1,224 @@ -+// SPDX-License-Identifier: GPL-2.0 -+/* -+ * Copyright (c) 2020 Fuzhou Rockchip Electronics Co., Ltd -+ */ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#define RK_HW_RNG_MAX 32 -+ -+#define _SBF(s, v) ((v) << (s)) -+ -+/* start of CRYPTO V1 register define */ -+#define CRYPTO_V1_CTRL 0x0008 -+#define CRYPTO_V1_RNG_START BIT(8) -+#define CRYPTO_V1_RNG_FLUSH BIT(9) -+ -+#define CRYPTO_V1_TRNG_CTRL 0x0200 -+#define CRYPTO_V1_OSC_ENABLE BIT(16) -+#define CRYPTO_V1_TRNG_SAMPLE_PERIOD(x) (x) -+ -+#define CRYPTO_V1_TRNG_DOUT_0 0x0204 -+/* end of CRYPTO V1 register define */ -+ -+/* start of CRYPTO V2 register define */ -+#define CRYPTO_V2_RNG_CTL 0x0400 -+#define CRYPTO_V2_RNG_64_BIT_LEN _SBF(4, 0x00) -+#define CRYPTO_V2_RNG_128_BIT_LEN _SBF(4, 0x01) -+#define CRYPTO_V2_RNG_192_BIT_LEN _SBF(4, 0x02) -+#define CRYPTO_V2_RNG_256_BIT_LEN _SBF(4, 0x03) -+#define CRYPTO_V2_RNG_FATESY_SOC_RING _SBF(2, 0x00) -+#define CRYPTO_V2_RNG_SLOWER_SOC_RING_0 _SBF(2, 0x01) -+#define CRYPTO_V2_RNG_SLOWER_SOC_RING_1 _SBF(2, 0x02) -+#define CRYPTO_V2_RNG_SLOWEST_SOC_RING _SBF(2, 0x03) -+#define CRYPTO_V2_RNG_ENABLE BIT(1) -+#define CRYPTO_V2_RNG_START BIT(0) -+#define CRYPTO_V2_RNG_SAMPLE_CNT 0x0404 -+#define CRYPTO_V2_RNG_DOUT_0 0x0410 -+/* end of CRYPTO V2 register define */ -+ -+#define RK_RNG_TIME_OUT 50000 /* max 50ms */ -+ -+struct rk_rng_soc_data { -+ int (*rk_rng_read)(struct udevice *dev, void *data, size_t len); -+}; -+ -+struct rk_rng_platdata { -+ fdt_addr_t base; -+ struct rk_rng_soc_data *soc_data; -+}; -+ -+static int rk_rng_read_regs(fdt_addr_t addr, void *buf, size_t size) -+{ -+ u32 count = RK_HW_RNG_MAX / sizeof(u32); -+ u32 reg, tmp_len; -+ -+ if (size > RK_HW_RNG_MAX) -+ return -EINVAL; -+ -+ while (size && count) { -+ reg = readl(addr); -+ tmp_len = min(size, sizeof(u32)); -+ memcpy(buf, ®, tmp_len); -+ addr += sizeof(u32); -+ buf += tmp_len; -+ size -= tmp_len; -+ count--; -+ } -+ -+ return 0; -+} -+ -+static int rk_v1_rng_read(struct udevice *dev, void *data, size_t len) -+{ -+ struct rk_rng_platdata *pdata = dev_get_priv(dev); -+ u32 reg = 0; -+ int retval; -+ -+ if (len > RK_HW_RNG_MAX) -+ return -EINVAL; -+ -+ /* enable osc_ring to get entropy, sample period is set as 100 */ -+ writel(CRYPTO_V1_OSC_ENABLE | CRYPTO_V1_TRNG_SAMPLE_PERIOD(100), -+ pdata->base + CRYPTO_V1_TRNG_CTRL); -+ -+ rk_clrsetreg(pdata->base + CRYPTO_V1_CTRL, CRYPTO_V1_RNG_START, -+ CRYPTO_V1_RNG_START); -+ -+ retval = readl_poll_timeout(pdata->base + CRYPTO_V1_CTRL, reg, -+ !(reg & CRYPTO_V1_RNG_START), -+ RK_RNG_TIME_OUT); -+ if (retval) -+ goto exit; -+ -+ rk_rng_read_regs(pdata->base + CRYPTO_V1_TRNG_DOUT_0, data, len); -+ -+exit: -+ /* close TRNG */ -+ rk_clrreg(pdata->base + CRYPTO_V1_CTRL, CRYPTO_V1_RNG_START); -+ -+ return 0; -+} -+ -+static int rk_v2_rng_read(struct udevice *dev, void *data, size_t len) -+{ -+ struct rk_rng_platdata *pdata = dev_get_priv(dev); -+ u32 reg = 0; -+ int retval; -+ -+ if (len > RK_HW_RNG_MAX) -+ return -EINVAL; -+ -+ /* enable osc_ring to get entropy, sample period is set as 100 */ -+ writel(100, pdata->base + CRYPTO_V2_RNG_SAMPLE_CNT); -+ -+ reg |= CRYPTO_V2_RNG_256_BIT_LEN; -+ reg |= CRYPTO_V2_RNG_SLOWER_SOC_RING_0; -+ reg |= CRYPTO_V2_RNG_ENABLE; -+ reg |= CRYPTO_V2_RNG_START; -+ -+ rk_clrsetreg(pdata->base + CRYPTO_V2_RNG_CTL, 0xffff, reg); -+ -+ retval = readl_poll_timeout(pdata->base + CRYPTO_V2_RNG_CTL, reg, -+ !(reg & CRYPTO_V2_RNG_START), -+ RK_RNG_TIME_OUT); -+ if (retval) -+ goto exit; -+ -+ rk_rng_read_regs(pdata->base + CRYPTO_V2_RNG_DOUT_0, data, len); -+ -+exit: -+ /* close TRNG */ -+ rk_clrreg(pdata->base + CRYPTO_V2_RNG_CTL, 0xffff); -+ -+ return retval; -+} -+ -+static int rockchip_rng_read(struct udevice *dev, void *data, size_t len) -+{ -+ unsigned char *buf = data; -+ unsigned int i; -+ int ret = -EIO; -+ -+ struct rk_rng_platdata *pdata = dev_get_priv(dev); -+ -+ if (!len) -+ return 0; -+ -+ if (!pdata->soc_data || !pdata->soc_data->rk_rng_read) -+ return -EINVAL; -+ -+ for (i = 0; i < len / RK_HW_RNG_MAX; i++, buf += RK_HW_RNG_MAX) { -+ ret = pdata->soc_data->rk_rng_read(dev, buf, RK_HW_RNG_MAX); -+ if (ret) -+ goto exit; -+ } -+ -+ if (len % RK_HW_RNG_MAX) -+ ret = pdata->soc_data->rk_rng_read(dev, buf, -+ len % RK_HW_RNG_MAX); -+ -+exit: -+ return ret; -+} -+ -+static int rockchip_rng_ofdata_to_platdata(struct udevice *dev) -+{ -+ struct rk_rng_platdata *pdata = dev_get_priv(dev); -+ -+ memset(pdata, 0x00, sizeof(*pdata)); -+ -+ pdata->base = (fdt_addr_t)dev_read_addr_ptr(dev); -+ if (!pdata->base) -+ return -ENOMEM; -+ -+ return 0; -+} -+ -+static int rockchip_rng_probe(struct udevice *dev) -+{ -+ struct rk_rng_platdata *pdata = dev_get_priv(dev); -+ -+ pdata->soc_data = (struct rk_rng_soc_data *)dev_get_driver_data(dev); -+ -+ return 0; -+} -+ -+static const struct rk_rng_soc_data rk_rng_v1_soc_data = { -+ .rk_rng_read = rk_v1_rng_read, -+}; -+ -+static const struct rk_rng_soc_data rk_rng_v2_soc_data = { -+ .rk_rng_read = rk_v2_rng_read, -+}; -+ -+static const struct dm_rng_ops rockchip_rng_ops = { -+ .read = rockchip_rng_read, -+}; -+ -+static const struct udevice_id rockchip_rng_match[] = { -+ { -+ .compatible = "rockchip,cryptov1-rng", -+ .data = (ulong)&rk_rng_v1_soc_data, -+ }, -+ { -+ .compatible = "rockchip,cryptov2-rng", -+ .data = (ulong)&rk_rng_v2_soc_data, -+ }, -+ {}, -+}; -+ -+U_BOOT_DRIVER(rockchip_rng) = { -+ .name = "rockchip-rng", -+ .id = UCLASS_RNG, -+ .of_match = rockchip_rng_match, -+ .ops = &rockchip_rng_ops, -+ .probe = rockchip_rng_probe, -+ .ofdata_to_platdata = rockchip_rng_ofdata_to_platdata, -+ .priv_auto_alloc_size = sizeof(struct rk_rng_platdata), -+}; - -From patchwork Tue Mar 31 09:40:00 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Lin Jinhan -X-Patchwork-Id: 1264696 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) - smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; - helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; - receiver=) -Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) - header.from=rock-chips.com -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 48s6jd3kYlz9sQt - for ; - Tue, 31 Mar 2020 22:36:37 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id E4DBD81A1A; - Tue, 31 Mar 2020 13:35:48 +0200 (CEST) -Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) - header.from=rock-chips.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 35E9F819AD; Tue, 31 Mar 2020 11:40:17 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-0.4 required=5.0 tests=BAYES_00, RCVD_IN_SORBS_WEB, - SPF_HELO_NONE,URIBL_BLOCKED autolearn=no autolearn_force=no - version=3.4.2 -Received: from lucky1.263xmail.com (lucky1.263xmail.com [211.157.147.132]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 3D2A781901 - for ; Tue, 31 Mar 2020 11:40:07 +0200 (CEST) -Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) - header.from=rock-chips.com -Authentication-Results: phobos.denx.de; - spf=fail smtp.mailfrom=troy.lin@rock-chips.com -Received: from localhost (unknown [192.168.167.235]) - by lucky1.263xmail.com (Postfix) with ESMTP id 2A506BED2E; - Tue, 31 Mar 2020 17:40:05 +0800 (CST) -X-MAIL-GRAY: 0 -X-MAIL-DELIVERY: 1 -X-ADDR-CHECKED: 0 -X-ANTISPAM-LEVEL: 2 -X-ABS-CHECKED: 0 -Received: from localhost.localdomain (unknown [58.22.7.114]) - by smtp.263.net (postfix) whith ESMTP id - P29487T139780956792576S1585647603180703_; - Tue, 31 Mar 2020 17:40:05 +0800 (CST) -X-IP-DOMAINF: 1 -X-UNIQUE-TAG: <7a2dd5c9974cf72e82c0752b3ad6f8eb> -X-RL-SENDER: troy.lin@rock-chips.com -X-SENDER: troy.lin@rock-chips.com -X-LOGIN-NAME: troy.lin@rock-chips.com -X-FST-TO: u-boot@lists.denx.de -X-SENDER-IP: 58.22.7.114 -X-ATTACHMENT-NUM: 0 -X-DNS-TYPE: 0 -X-System-Flag: 0 -From: Lin Jinhan -To: u-boot@lists.denx.de, - sughosh.ganu@linaro.org, - xypron.glpk@gmx.de -Cc: kever.yang@rock-chips.com, zhangzj@rock-chips.com, - Lin Jinhan -Subject: [PATCH 4/5] rockchip: rk3399: Enable CONFIG_RNG_ROCKCHIP -Date: Tue, 31 Mar 2020 17:40:00 +0800 -Message-Id: <20200331094001.13441-4-troy.lin@rock-chips.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200331094001.13441-1-troy.lin@rock-chips.com> -References: <20200331094001.13441-1-troy.lin@rock-chips.com> -X-Mailman-Approved-At: Tue, 31 Mar 2020 13:35:19 +0200 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -CONFIG_RNG_ROCKCHIP/CONFIG_DM_RNG is enabled. - -Signed-off-by: Lin Jinhan ---- - configs/evb-rk3399_defconfig | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/configs/evb-rk3399_defconfig b/configs/evb-rk3399_defconfig -index 3f74be3b3c..7f14e18b1b 100644 ---- a/configs/evb-rk3399_defconfig -+++ b/configs/evb-rk3399_defconfig -@@ -39,6 +39,8 @@ CONFIG_PMIC_RK8XX=y - CONFIG_REGULATOR_PWM=y - CONFIG_REGULATOR_RK8XX=y - CONFIG_PWM_ROCKCHIP=y -+CONFIG_DM_RNG=y -+CONFIG_RNG_ROCKCHIP=y - CONFIG_BAUDRATE=1500000 - CONFIG_DEBUG_UART_SHIFT=2 - CONFIG_SYSRESET=y - -From patchwork Tue Mar 31 09:40:01 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Lin Jinhan -X-Patchwork-Id: 1264695 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) - smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; - helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; - receiver=) -Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) - header.from=rock-chips.com -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 48s6jR3jp0z9sR4 - for ; - Tue, 31 Mar 2020 22:36:27 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 632D581A0D; - Tue, 31 Mar 2020 13:35:45 +0200 (CEST) -Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) - header.from=rock-chips.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id C79E8819A8; Tue, 31 Mar 2020 11:40:17 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-0.4 required=5.0 tests=BAYES_00, RCVD_IN_SORBS_WEB, - SPF_HELO_NONE,URIBL_BLOCKED autolearn=no autolearn_force=no - version=3.4.2 -Received: from lucky1.263xmail.com (lucky1.263xmail.com [211.157.147.132]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id CCF75819A2 - for ; Tue, 31 Mar 2020 11:40:08 +0200 (CEST) -Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) - header.from=rock-chips.com -Authentication-Results: phobos.denx.de; - spf=fail smtp.mailfrom=troy.lin@rock-chips.com -Received: from localhost (unknown [192.168.167.235]) - by lucky1.263xmail.com (Postfix) with ESMTP id BCA3DBEE49; - Tue, 31 Mar 2020 17:40:05 +0800 (CST) -X-MAIL-GRAY: 0 -X-MAIL-DELIVERY: 1 -X-ADDR-CHECKED: 0 -X-ANTISPAM-LEVEL: 2 -X-ABS-CHECKED: 0 -Received: from localhost.localdomain (unknown [58.22.7.114]) - by smtp.263.net (postfix) whith ESMTP id - P29487T139780956792576S1585647603180703_; - Tue, 31 Mar 2020 17:40:05 +0800 (CST) -X-IP-DOMAINF: 1 -X-UNIQUE-TAG: <81a0d8eceb16099cd760d4d11030d27a> -X-RL-SENDER: troy.lin@rock-chips.com -X-SENDER: troy.lin@rock-chips.com -X-LOGIN-NAME: troy.lin@rock-chips.com -X-FST-TO: u-boot@lists.denx.de -X-SENDER-IP: 58.22.7.114 -X-ATTACHMENT-NUM: 0 -X-DNS-TYPE: 0 -X-System-Flag: 0 -From: Lin Jinhan -To: u-boot@lists.denx.de, - sughosh.ganu@linaro.org, - xypron.glpk@gmx.de -Cc: kever.yang@rock-chips.com, zhangzj@rock-chips.com, - Lin Jinhan -Subject: [PATCH 5/5] rockchip: px30: Enable CONFIG_RNG_ROCKCHIP -Date: Tue, 31 Mar 2020 17:40:01 +0800 -Message-Id: <20200331094001.13441-5-troy.lin@rock-chips.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200331094001.13441-1-troy.lin@rock-chips.com> -References: <20200331094001.13441-1-troy.lin@rock-chips.com> -X-Mailman-Approved-At: Tue, 31 Mar 2020 13:35:19 +0200 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -CONFIG_RNG_ROCKCHIP/CONFIG_DM_RNG is enabled. - -Signed-off-by: Lin Jinhan ---- - configs/evb-px30_defconfig | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/configs/evb-px30_defconfig b/configs/evb-px30_defconfig -index b5ba75cc6e..d2cf13e54a 100644 ---- a/configs/evb-px30_defconfig -+++ b/configs/evb-px30_defconfig -@@ -85,6 +85,8 @@ CONFIG_SPL_RAM=y - CONFIG_TPL_RAM=y - CONFIG_ROCKCHIP_SDRAM_COMMON=y - CONFIG_DM_RESET=y -+CONFIG_DM_RNG=y -+CONFIG_RNG_ROCKCHIP=y - # CONFIG_SPECIFY_CONSOLE_INDEX is not set - CONFIG_DEBUG_UART_SHIFT=2 - CONFIG_DEBUG_UART_SKIP_INIT=y diff --git a/arm-tegra-define-fdtfile-option-for-distro-boot.patch b/arm-tegra-define-fdtfile-option-for-distro-boot.patch index 4f065ff..923ccb1 100644 --- a/arm-tegra-define-fdtfile-option-for-distro-boot.patch +++ b/arm-tegra-define-fdtfile-option-for-distro-boot.patch @@ -1,6 +1,6 @@ -From ce2493a9dec8af2dd57839e337b002d256d2a842 Mon Sep 17 00:00:00 2001 +From c3332b102d2ddae01710ae8f4393a2a18a3a1bb3 Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Tue, 31 Mar 2020 10:38:41 +0100 +Date: Tue, 12 May 2020 08:19:48 +0100 Subject: [PATCH] arm: tegra: define fdtfile option for distro boot For booting via UEFI we need to define the fdtfile option so @@ -20,12 +20,12 @@ Signed-off-by: Peter Robinson 7 files changed, 12 insertions(+) diff --git a/include/configs/tegra-common.h b/include/configs/tegra-common.h -index f2cdd9c019..997b50394b 100644 +index 175c55c613..8026f4b32e 100644 --- a/include/configs/tegra-common.h +++ b/include/configs/tegra-common.h -@@ -55,6 +55,12 @@ - #define CONFIG_SYS_MEMTEST_START (NV_PA_SDRC_CS0 + 0x600000) - #define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_MEMTEST_START + 0x100000) +@@ -52,6 +52,12 @@ + /* Boot Argument Buffer Size */ + #define CONFIG_SYS_BARGSIZE (CONFIG_SYS_CBSIZE) +#ifdef CONFIG_ARM64 +#define FDTFILE "nvidia/" CONFIG_DEFAULT_DEVICE_TREE ".dtb" @@ -109,5 +109,5 @@ index 54bc6756ab..6c5dc24b26 100644 "ramdisk_addr_r=0x83100000\0" -- -2.26.0 +2.26.2 diff --git a/initial-support-for-the-Pinebook-Pro-laptop-from.patch b/initial-support-for-the-Pinebook-Pro-laptop-from.patch index defa2f6..b8b6f34 100644 --- a/initial-support-for-the-Pinebook-Pro-laptop-from.patch +++ b/initial-support-for-the-Pinebook-Pro-laptop-from.patch @@ -49,11 +49,11 @@ Signed-off-by: Peter Robinson create mode 100644 arch/arm/dts/rk3399-pinebook-pro.dts diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile -index 820ee9733a..885bf0ef58 100644 +index 1325134bd4..c4d8ffb13c 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile -@@ -125,6 +125,7 @@ dtb-$(CONFIG_ROCKCHIP_RK3399) += \ - rk3399-nanopi-m4.dtb \ +@@ -129,6 +129,7 @@ + rk3399-nanopi-m4-2gb.dtb \ rk3399-nanopi-neo4.dtb \ rk3399-orangepi.dtb \ + rk3399-pinebook-pro.dtb \ diff --git a/rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch b/rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch index 0efd838..0e30129 100644 --- a/rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch +++ b/rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch @@ -1,6 +1,6 @@ -From 7bf054b1b2e1e4105e94642e18fc74a63eccce97 Mon Sep 17 00:00:00 2001 +From 7389a936fbd5ccaae7c39d38d1440e0359f9d0e5 Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Tue, 4 Dec 2018 15:26:59 +0000 +Date: Tue, 12 May 2020 08:14:26 +0100 Subject: [PATCH] rpi: Use firmware provided device tree Signed-off-by: Peter Robinson @@ -13,70 +13,70 @@ Signed-off-by: Peter Robinson 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/configs/rpi_0_w_defconfig b/configs/rpi_0_w_defconfig -index 66b0de31b60..9446465fdf7 100644 +index 5053a38822..3c6af2b367 100644 --- a/configs/rpi_0_w_defconfig +++ b/configs/rpi_0_w_defconfig -@@ -14,7 +14,7 @@ CONFIG_CMD_GPIO=y +@@ -17,7 +17,7 @@ CONFIG_CMD_GPIO=y CONFIG_CMD_MMC=y CONFIG_CMD_USB=y CONFIG_CMD_FS_UUID=y -CONFIG_OF_EMBED=y +CONFIG_OF_BOARD=y CONFIG_DEFAULT_DEVICE_TREE="bcm2835-rpi-zero-w" - CONFIG_ENV_FAT_INTERFACE="mmc" CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" + CONFIG_SYS_RELOC_GD_ENV_ADDR=y diff --git a/configs/rpi_2_defconfig b/configs/rpi_2_defconfig -index ba75e52dda0..d324e2bdd33 100644 +index 0000a759f1..f27c5ab1f6 100644 --- a/configs/rpi_2_defconfig +++ b/configs/rpi_2_defconfig -@@ -14,7 +14,7 @@ CONFIG_CMD_GPIO=y +@@ -17,7 +17,7 @@ CONFIG_CMD_GPIO=y CONFIG_CMD_MMC=y CONFIG_CMD_USB=y CONFIG_CMD_FS_UUID=y -CONFIG_OF_EMBED=y +CONFIG_OF_BOARD=y CONFIG_DEFAULT_DEVICE_TREE="bcm2836-rpi-2-b" - CONFIG_ENV_FAT_INTERFACE="mmc" CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" + CONFIG_SYS_RELOC_GD_ENV_ADDR=y diff --git a/configs/rpi_3_32b_defconfig b/configs/rpi_3_32b_defconfig -index bbcdd91e909..46816cd1da7 100644 +index a714f9ec49..90ce6ea22e 100644 --- a/configs/rpi_3_32b_defconfig +++ b/configs/rpi_3_32b_defconfig -@@ -15,7 +15,7 @@ CONFIG_CMD_GPIO=y +@@ -18,7 +18,7 @@ CONFIG_CMD_GPIO=y CONFIG_CMD_MMC=y CONFIG_CMD_USB=y CONFIG_CMD_FS_UUID=y -CONFIG_OF_EMBED=y +CONFIG_OF_BOARD=y CONFIG_DEFAULT_DEVICE_TREE="bcm2837-rpi-3-b" - CONFIG_ENV_FAT_INTERFACE="mmc" CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" + CONFIG_SYS_RELOC_GD_ENV_ADDR=y diff --git a/configs/rpi_3_defconfig b/configs/rpi_3_defconfig -index 54b6303c2d8..f05ddf8f61f 100644 +index 244d9b3a78..f72d6d35e2 100644 --- a/configs/rpi_3_defconfig +++ b/configs/rpi_3_defconfig -@@ -15,7 +15,7 @@ CONFIG_CMD_GPIO=y +@@ -18,7 +18,7 @@ CONFIG_CMD_GPIO=y CONFIG_CMD_MMC=y CONFIG_CMD_USB=y CONFIG_CMD_FS_UUID=y -CONFIG_OF_EMBED=y +CONFIG_OF_BOARD=y CONFIG_DEFAULT_DEVICE_TREE="bcm2837-rpi-3-b" - CONFIG_ENV_FAT_INTERFACE="mmc" CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" + CONFIG_SYS_RELOC_GD_ENV_ADDR=y diff --git a/configs/rpi_defconfig b/configs/rpi_defconfig -index e7820cb147b..d248873174d 100644 +index 64bb184c2b..645dbbec33 100644 --- a/configs/rpi_defconfig +++ b/configs/rpi_defconfig -@@ -14,7 +14,7 @@ CONFIG_CMD_GPIO=y +@@ -17,7 +17,7 @@ CONFIG_CMD_GPIO=y CONFIG_CMD_MMC=y CONFIG_CMD_USB=y CONFIG_CMD_FS_UUID=y -CONFIG_OF_EMBED=y +CONFIG_OF_BOARD=y CONFIG_DEFAULT_DEVICE_TREE="bcm2835-rpi-b" - CONFIG_ENV_FAT_INTERFACE="mmc" CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" + CONFIG_SYS_RELOC_GD_ENV_ADDR=y -- -2.19.2 +2.26.2 diff --git a/rpi4-Enable-support-for-the-XHCI-controller-on-RPI.patch b/rpi4-Enable-support-for-the-XHCI-controller-on-RPI.patch new file mode 100644 index 0000000..3b9726c --- /dev/null +++ b/rpi4-Enable-support-for-the-XHCI-controller-on-RPI.patch @@ -0,0 +1,62 @@ +From 50e353960a36f381f855b34b40117c64dc44ad33 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Tue, 12 May 2020 23:23:01 +0100 +Subject: [PATCH] config: Enable support for the XHCI controller on RPI4 board + +From: Marek Szyprowski + +This requires enabling BRCMSTB PCIe and XHCI_PCI drivers as well as PCI +and USB commands. To get it working one has to call the following commands: +"pci enum; usb start;", thus such commands have been added to the default +"preboot" environment variable. One has to update their environment if it +is already configured to get this feature working out of the box. + +Signed-off-by: Marek Szyprowski +Signed-off-by: Sylwester Nawrocki +--- + configs/rpi_4_defconfig | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig +index f1c8f5ef7d..b3e7037bf5 100644 +--- a/configs/rpi_4_defconfig ++++ b/configs/rpi_4_defconfig +@@ -8,6 +8,8 @@ CONFIG_NR_DRAM_BANKS=2 + CONFIG_DISTRO_DEFAULTS=y + CONFIG_OF_BOARD_SETUP=y + CONFIG_ARCH_FIXUP_FDT_MEMORY=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start;" + CONFIG_MISC_INIT_R=y + # CONFIG_DISPLAY_CPUINFO is not set + # CONFIG_DISPLAY_BOARDINFO is not set +@@ -15,6 +17,8 @@ CONFIG_SYS_PROMPT="U-Boot> " + CONFIG_CMD_DFU=y + CONFIG_CMD_GPIO=y + CONFIG_CMD_MMC=y ++CONFIG_CMD_PCI=y ++CONFIG_CMD_USB=y + CONFIG_CMD_FS_UUID=y + CONFIG_OF_BOARD=y + CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" +@@ -27,12 +31,17 @@ CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_BCM2835=y + CONFIG_DM_ETH=y + CONFIG_BCMGENET=y ++CONFIG_PCI=y ++CONFIG_DM_PCI=y ++CONFIG_PCI_BRCMSTB=y + CONFIG_PINCTRL=y + # CONFIG_PINCTRL_GENERIC is not set + # CONFIG_REQUIRE_SERIAL_CONSOLE is not set + CONFIG_USB=y + CONFIG_DM_USB=y + CONFIG_DM_USB_GADGET=y ++CONFIG_USB_XHCI_HCD=y ++CONFIG_USB_XHCI_PCI=y + CONFIG_USB_GADGET=y + CONFIG_USB_GADGET_MANUFACTURER="FSL" + CONFIG_USB_GADGET_VENDOR_NUM=0x0525 +-- +2.26.2 + diff --git a/rpi4-enable-ARCH_FIXUP_FDT_MEMORY.patch b/rpi4-enable-ARCH_FIXUP_FDT_MEMORY.patch new file mode 100644 index 0000000..a9c00c3 --- /dev/null +++ b/rpi4-enable-ARCH_FIXUP_FDT_MEMORY.patch @@ -0,0 +1,40 @@ +From c9a14b02aea84a37407df7d295e0f76eb529f472 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Tue, 12 May 2020 11:29:00 +0100 +Subject: [PATCH] rpi4: enable ARCH_FIXUP_FDT_MEMORY + +Signed-off-by: Peter Robinson +--- + configs/rpi_4_32b_defconfig | 2 +- + configs/rpi_4_defconfig | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig +index dd7da1cf06..9a0437d376 100644 +--- a/configs/rpi_4_32b_defconfig ++++ b/configs/rpi_4_32b_defconfig +@@ -7,7 +7,7 @@ + CONFIG_NR_DRAM_BANKS=2 + CONFIG_DISTRO_DEFAULTS=y + CONFIG_OF_BOARD_SETUP=y +-# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set ++CONFIG_ARCH_FIXUP_FDT_MEMORY=y + CONFIG_MISC_INIT_R=y + # CONFIG_DISPLAY_CPUINFO is not set + # CONFIG_DISPLAY_BOARDINFO is not set +diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig +index 6eeec4592e..b3e7037bf5 100644 +--- a/configs/rpi_4_defconfig ++++ b/configs/rpi_4_defconfig +@@ -7,7 +7,7 @@ + CONFIG_NR_DRAM_BANKS=2 + CONFIG_DISTRO_DEFAULTS=y + CONFIG_OF_BOARD_SETUP=y +-# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set ++CONFIG_ARCH_FIXUP_FDT_MEMORY=y + CONFIG_MISC_INIT_R=y + # CONFIG_DISPLAY_CPUINFO is not set + # CONFIG_DISPLAY_BOARDINFO is not set +-- +2.26.2 + diff --git a/sources b/sources index 875b362..926a830 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2020.07-rc1.tar.bz2) = 345b451652ca8bf539f6629ce618113d66ff6690a1f9ccf5a5a4638e6f30c0302fe4af365b5751fa229b09dd354de1db1480c869f511384855d32f692a95acf7 +SHA512 (u-boot-2020.07-rc2.tar.bz2) = d4ee96a76cde9305a8733602ce8f9505412f9118e5625f3154249d302445e1c9f970bcf38abb63536129885f3443d1c9fdf9c4e8851e2c1655050d1ebcea7bd2 diff --git a/uboot-tools.spec b/uboot-tools.spec index 044a7c4..2c6e05f 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -%global candidate rc1 +%global candidate rc2 Name: uboot-tools Version: 2020.07 -Release: 0.1%{?candidate:.%{candidate}}%{?dist} +Release: 0.2%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -22,21 +22,23 @@ Patch2: uefi-use-Fedora-specific-path-name.patch # Board fixes and enablement Patch4: usb-kbd-fixes.patch -Patch5: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch -Patch6: dragonboard-fixes.patch +Patch5: dragonboard-fixes.patch # Tegra improvements Patch10: arm-tegra-define-fdtfile-option-for-distro-boot.patch Patch11: arm-add-BOOTENV_EFI_SET_FDTFILE_FALLBACK-for-tegra186-be.patch # Rockchips improvements -Patch12: arm-dts-rockchip-rk3399-add-and-enable-rng-node.patch -Patch13: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch -Patch14: initial-support-for-the-Pinebook-Pro-laptop-from.patch -Patch15: rockpro64-limit-speed-on-mSD-slot.patch +Patch12: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch +Patch13: initial-support-for-the-Pinebook-Pro-laptop-from.patch +Patch14: rockpro64-limit-speed-on-mSD-slot.patch # AllWinner improvements -Patch16: AllWinner-Pine64-bits.patch +Patch15: AllWinner-Pine64-bits.patch # RPi4 -Patch17: USB-host-support-for-Raspberry-Pi-4-board.patch +Patch16: USB-host-support-for-Raspberry-Pi-4-board-64-bit.patch +Patch17: usb-xhci-Load-Raspberry-Pi-4-VL805-s-firmware.patch +Patch18: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch +Patch19: rpi4-enable-ARCH_FIXUP_FDT_MEMORY.patch +Patch20: rpi4-Enable-support-for-the-XHCI-controller-on-RPI.patch BuildRequires: bc BuildRequires: dtc @@ -250,6 +252,10 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Tue May 12 2020 Peter Robinson - 2020.07-0.2.rc2 +- 2020.07 RC2 +- Minor device updates + * Wed Apr 29 2020 Peter Robinson - 2020.07-0.1.rc1 - 2020.07 RC1 diff --git a/usb-xhci-Load-Raspberry-Pi-4-VL805-s-firmware.patch b/usb-xhci-Load-Raspberry-Pi-4-VL805-s-firmware.patch new file mode 100644 index 0000000..4b5f19c --- /dev/null +++ b/usb-xhci-Load-Raspberry-Pi-4-VL805-s-firmware.patch @@ -0,0 +1,361 @@ +From patchwork Tue May 5 16:26:06 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Nicolas Saenz Julienne +X-Patchwork-Id: 1283753 +X-Patchwork-Delegate: marek.vasut@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=suse.de +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 49GlV44bJCz9sT0 + for ; Wed, 6 May 2020 02:26:36 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id C14658209E; + Tue, 5 May 2020 18:26:25 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 92EA581C4C; Tue, 5 May 2020 18:26:21 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 0042B81A66 + for ; Tue, 5 May 2020 18:26:17 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=nsaenzjulienne@suse.de +Received: from relay2.suse.de (unknown [195.135.220.254]) + by mx2.suse.de (Postfix) with ESMTP id 01199AED5; + Tue, 5 May 2020 16:26:19 +0000 (UTC) +From: Nicolas Saenz Julienne +To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, marex@denx.de, + linux-kernel@vger.kernel.org +Cc: sjg@chromium.org, m.szyprowski@samsung.com, s.nawrocki@samsung.com, + mark.kettenis@xs4all.nl, Nicolas Saenz Julienne +Subject: [PATCH v3 1/2] arm: rpi: Add function to trigger VL805's firmware load +Date: Tue, 5 May 2020 18:26:06 +0200 +Message-Id: <20200505162607.334-2-nsaenzjulienne@suse.de> +X-Mailer: git-send-email 2.26.2 +In-Reply-To: <20200505162607.334-1-nsaenzjulienne@suse.de> +References: <20200505162607.334-1-nsaenzjulienne@suse.de> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +On the Raspberry Pi 4, after a PCI reset, VL805's (a xHCI chip) firmware +may either be loaded directly from an EEPROM or, if not present, by the +SoC's VideCore (the SoC's co-processor). Introduce the function that +informs VideCore that VL805 may need its firmware loaded. + +Signed-off-by: Nicolas Saenz Julienne +--- +Changes since v2: + - Correct wrong function name in comment + - Add better comment on rpi_firmware_init_vl805() + +Changes since v1: + - Rename function so it's not mistaken with regular firmware loading + + arch/arm/mach-bcm283x/include/mach/mbox.h | 13 +++++++ + arch/arm/mach-bcm283x/include/mach/msg.h | 7 ++++ + arch/arm/mach-bcm283x/msg.c | 45 +++++++++++++++++++++++ + 3 files changed, 65 insertions(+) + +diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h +index 60e226ce1d..2ae2d3d97c 100644 +--- a/arch/arm/mach-bcm283x/include/mach/mbox.h ++++ b/arch/arm/mach-bcm283x/include/mach/mbox.h +@@ -491,6 +491,19 @@ struct bcm2835_mbox_tag_set_palette { + } body; + }; + ++#define BCM2835_MBOX_TAG_NOTIFY_XHCI_RESET 0x00030058 ++ ++struct bcm2835_mbox_tag_pci_dev_addr { ++ struct bcm2835_mbox_tag_hdr tag_hdr; ++ union { ++ struct { ++ u32 dev_addr; ++ } req; ++ struct { ++ } resp; ++ } body; ++}; ++ + /* + * Pass a raw u32 message to the VC, and receive a raw u32 back. + * +diff --git a/arch/arm/mach-bcm283x/include/mach/msg.h b/arch/arm/mach-bcm283x/include/mach/msg.h +index 4afb08631b..f5213dd0e0 100644 +--- a/arch/arm/mach-bcm283x/include/mach/msg.h ++++ b/arch/arm/mach-bcm283x/include/mach/msg.h +@@ -48,4 +48,11 @@ int bcm2835_set_video_params(int *widthp, int *heightp, int depth_bpp, + int pixel_order, int alpha_mode, ulong *fb_basep, + ulong *fb_sizep, int *pitchp); + ++/** ++ * bcm2711_notify_vl805_reset() - get vl805's firmware loaded ++ * ++ * @return 0 if OK, -EIO on error ++ */ ++int bcm2711_notify_vl805_reset(void); ++ + #endif +diff --git a/arch/arm/mach-bcm283x/msg.c b/arch/arm/mach-bcm283x/msg.c +index 94b75283f8..f8ef531652 100644 +--- a/arch/arm/mach-bcm283x/msg.c ++++ b/arch/arm/mach-bcm283x/msg.c +@@ -40,6 +40,12 @@ struct msg_setup { + u32 end_tag; + }; + ++struct msg_notify_vl805_reset { ++ struct bcm2835_mbox_hdr hdr; ++ struct bcm2835_mbox_tag_pci_dev_addr dev_addr; ++ u32 end_tag; ++}; ++ + int bcm2835_power_on_module(u32 module) + { + ALLOC_CACHE_ALIGN_BUFFER(struct msg_set_power_state, msg_pwr, 1); +@@ -151,3 +157,42 @@ int bcm2835_set_video_params(int *widthp, int *heightp, int depth_bpp, + + return 0; + } ++ ++/* ++ * The Raspberry Pi 4 gets its USB functionality from VL805, a PCIe chip that ++ * implements xHCI. After a PCI reset, VL805's firmware may either be loaded ++ * directly from an EEPROM or, if not present, by the SoC's co-processor, ++ * VideoCore. RPi4's VideoCore OS contains both the non public firmware load ++ * logic and the VL805 firmware blob. This function triggers the aforementioned ++ * process. ++ */ ++int bcm2711_notify_vl805_reset(void) ++{ ++ ALLOC_CACHE_ALIGN_BUFFER(struct msg_notify_vl805_reset, ++ msg_notify_vl805_reset, 1); ++ int ret; ++ ++ BCM2835_MBOX_INIT_HDR(msg_notify_vl805_reset); ++ BCM2835_MBOX_INIT_TAG(&msg_notify_vl805_reset->dev_addr, ++ NOTIFY_XHCI_RESET); ++ ++ /* ++ * The pci device address is expected like this: ++ * ++ * PCI_BUS << 20 | PCI_SLOT << 15 | PCI_FUNC << 12 ++ * ++ * But since RPi4's PCIe setup is hardwired, we know the address in ++ * advance. ++ */ ++ msg_notify_vl805_reset->dev_addr.body.req.dev_addr = 0x100000; ++ ++ ret = bcm2835_mbox_call_prop(BCM2835_MBOX_PROP_CHAN, ++ &msg_notify_vl805_reset->hdr); ++ if (ret) { ++ printf("bcm2711: Faild to load vl805's firmware, %d\n", ret); ++ return -EIO; ++ } ++ ++ return 0; ++} ++ + +From patchwork Tue May 5 16:26:07 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Nicolas Saenz Julienne +X-Patchwork-Id: 1283757 +X-Patchwork-Delegate: marek.vasut@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=suse.de +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 49GlVQ0MyZz9sT0 + for ; Wed, 6 May 2020 02:26:52 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 40A20820AB; + Tue, 5 May 2020 18:26:27 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id A816381C4C; Tue, 5 May 2020 18:26:22 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id E5F898196A + for ; Tue, 5 May 2020 18:26:19 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=nsaenzjulienne@suse.de +Received: from relay2.suse.de (unknown [195.135.220.254]) + by mx2.suse.de (Postfix) with ESMTP id EB82AAF5D; + Tue, 5 May 2020 16:26:21 +0000 (UTC) +From: Nicolas Saenz Julienne +To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, marex@denx.de, + linux-kernel@vger.kernel.org +Cc: sjg@chromium.org, m.szyprowski@samsung.com, s.nawrocki@samsung.com, + mark.kettenis@xs4all.nl, Nicolas Saenz Julienne +Subject: [PATCH v3 2/2] usb: xhci: Load Raspberry Pi 4 VL805's firmware +Date: Tue, 5 May 2020 18:26:07 +0200 +Message-Id: <20200505162607.334-3-nsaenzjulienne@suse.de> +X-Mailer: git-send-email 2.26.2 +In-Reply-To: <20200505162607.334-1-nsaenzjulienne@suse.de> +References: <20200505162607.334-1-nsaenzjulienne@suse.de> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +When needed, RPi4's co-processor (called VideoCore) has to be instructed +to load VL805's firmware (the chip providing xHCI support). VideCore's +firmware expects the board's PCIe bus to be already configured in order +for it to load the xHCI chip firmware. So we have to make sure this +happens in between the PCIe configuration and xHCI startup. + +Introduce a callback in xhci_pci_probe() to run this platform specific +routine. + +Signed-off-by: Nicolas Saenz Julienne +--- + +Changes since v2: + - Get rid of #ifdef CONFIG_BCM2711 + - Get rid of redundant error message + +Changes since v1: + - Create callback + + board/raspberrypi/rpi/rpi.c | 6 ++++++ + drivers/usb/host/xhci-pci.c | 6 ++++++ + include/usb/xhci.h | 3 +++ + 3 files changed, 15 insertions(+) + +diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c +index e367ba3092..dcaf45fbf2 100644 +--- a/board/raspberrypi/rpi/rpi.c ++++ b/board/raspberrypi/rpi/rpi.c +@@ -14,6 +14,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -494,3 +495,8 @@ int ft_board_setup(void *blob, bd_t *bd) + + return 0; + } ++ ++void xhci_pci_fixup(struct udevice *dev) ++{ ++ bcm2711_notify_vl805_reset(); ++} +diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c +index c1f60da541..1285dde1ef 100644 +--- a/drivers/usb/host/xhci-pci.c ++++ b/drivers/usb/host/xhci-pci.c +@@ -11,6 +11,10 @@ + #include + #include + ++__weak void xhci_pci_fixup(struct udevice *dev) ++{ ++} ++ + static void xhci_pci_init(struct udevice *dev, struct xhci_hccr **ret_hccr, + struct xhci_hcor **ret_hcor) + { +@@ -40,6 +44,8 @@ static int xhci_pci_probe(struct udevice *dev) + struct xhci_hccr *hccr; + struct xhci_hcor *hcor; + ++ xhci_pci_fixup(dev); ++ + xhci_pci_init(dev, &hccr, &hcor); + + return xhci_register(dev, hccr, hcor); +diff --git a/include/usb/xhci.h b/include/usb/xhci.h +index c16106a2fc..57feed7603 100644 +--- a/include/usb/xhci.h ++++ b/include/usb/xhci.h +@@ -16,6 +16,7 @@ + #ifndef HOST_XHCI_H_ + #define HOST_XHCI_H_ + ++#include + #include + #include + #include +@@ -1281,4 +1282,6 @@ extern struct dm_usb_ops xhci_usb_ops; + + struct xhci_ctrl *xhci_get_ctrl(struct usb_device *udev); + ++extern void xhci_pci_fixup(struct udevice *dev); ++ + #endif /* HOST_XHCI_H_ */ From ddef8ae524874836e53c29e97d3980131de61dd8 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 21 May 2020 11:08:21 +0100 Subject: [PATCH 005/271] Fix for RPi4 booting as ARMv7 --- rpi4-enable-ARCH_FIXUP_FDT_MEMORY.patch | 40 +++++++++++++++++++++++++ uboot-tools.spec | 7 ++++- 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 rpi4-enable-ARCH_FIXUP_FDT_MEMORY.patch diff --git a/rpi4-enable-ARCH_FIXUP_FDT_MEMORY.patch b/rpi4-enable-ARCH_FIXUP_FDT_MEMORY.patch new file mode 100644 index 0000000..a9c00c3 --- /dev/null +++ b/rpi4-enable-ARCH_FIXUP_FDT_MEMORY.patch @@ -0,0 +1,40 @@ +From c9a14b02aea84a37407df7d295e0f76eb529f472 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Tue, 12 May 2020 11:29:00 +0100 +Subject: [PATCH] rpi4: enable ARCH_FIXUP_FDT_MEMORY + +Signed-off-by: Peter Robinson +--- + configs/rpi_4_32b_defconfig | 2 +- + configs/rpi_4_defconfig | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig +index dd7da1cf06..9a0437d376 100644 +--- a/configs/rpi_4_32b_defconfig ++++ b/configs/rpi_4_32b_defconfig +@@ -7,7 +7,7 @@ + CONFIG_NR_DRAM_BANKS=2 + CONFIG_DISTRO_DEFAULTS=y + CONFIG_OF_BOARD_SETUP=y +-# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set ++CONFIG_ARCH_FIXUP_FDT_MEMORY=y + CONFIG_MISC_INIT_R=y + # CONFIG_DISPLAY_CPUINFO is not set + # CONFIG_DISPLAY_BOARDINFO is not set +diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig +index 6eeec4592e..b3e7037bf5 100644 +--- a/configs/rpi_4_defconfig ++++ b/configs/rpi_4_defconfig +@@ -7,7 +7,7 @@ + CONFIG_NR_DRAM_BANKS=2 + CONFIG_DISTRO_DEFAULTS=y + CONFIG_OF_BOARD_SETUP=y +-# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set ++CONFIG_ARCH_FIXUP_FDT_MEMORY=y + CONFIG_MISC_INIT_R=y + # CONFIG_DISPLAY_CPUINFO is not set + # CONFIG_DISPLAY_BOARDINFO is not set +-- +2.26.2 + diff --git a/uboot-tools.spec b/uboot-tools.spec index 71db9e9..61bbe05 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -2,7 +2,7 @@ Name: uboot-tools Version: 2020.04 -Release: 3%{?candidate:.%{candidate}}%{?dist} +Release: 4%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -39,6 +39,8 @@ Patch16: initial-support-for-the-Pinebook-Pro-laptop-from.patch Patch17: rockpro64-limit-speed-on-mSD-slot.patch # AllWinner improvements Patch18: AllWinner-Pine64-bits.patch +# RPi +Patch19: rpi4-enable-ARCH_FIXUP_FDT_MEMORY.patch BuildRequires: bc BuildRequires: dtc @@ -252,6 +254,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Thu May 21 2020 Peter Robinson - 2020.04-4 +- Fix for RPi4 booting as ARMv7 + * Tue Apr 21 2020 Peter Robinson - 2020.04-3 - Ship u-boot-rockchip.bin for SPI flash From 599c805196c41c57911d377f9cff64ad39c86934 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 10 Jun 2020 13:33:14 +0100 Subject: [PATCH 006/271] 2020.07 RC4 --- ...port-for-Raspberry-Pi-4-board-64-bit.patch | 2121 +++-------------- ...nable-rng-on-rock960-and-firefly3399.patch | 94 +- ...ort-for-the-Pinebook-Pro-laptop-from.patch | 1573 ------------ mmc-sdhci-Fix-HISPD-bit-handling.patch | 182 ++ rockchip-Pinebook-Pro-Fixes.patch | 200 ++ rockpro64-limit-speed-on-mSD-slot.patch | 28 - ...pport-for-the-XHCI-controller-on-RPI.patch | 62 - rpi4-enable-ARCH_FIXUP_FDT_MEMORY.patch | 40 - sources | 2 +- uboot-tools.spec | 21 +- 10 files changed, 730 insertions(+), 3593 deletions(-) delete mode 100644 initial-support-for-the-Pinebook-Pro-laptop-from.patch create mode 100644 mmc-sdhci-Fix-HISPD-bit-handling.patch create mode 100644 rockchip-Pinebook-Pro-Fixes.patch delete mode 100644 rockpro64-limit-speed-on-mSD-slot.patch delete mode 100644 rpi4-Enable-support-for-the-XHCI-controller-on-RPI.patch delete mode 100644 rpi4-enable-ARCH_FIXUP_FDT_MEMORY.patch diff --git a/USB-host-support-for-Raspberry-Pi-4-board-64-bit.patch b/USB-host-support-for-Raspberry-Pi-4-board-64-bit.patch index 3e76ea9..720b1ba 100644 --- a/USB-host-support-for-Raspberry-Pi-4-board-64-bit.patch +++ b/USB-host-support-for-Raspberry-Pi-4-board-64-bit.patch @@ -1,990 +1,30 @@ -From patchwork Tue May 12 18:47:08 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Sylwester Nawrocki -X-Patchwork-Id: 1288721 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 - header.s=mail20170921 header.b=d38K5udu; - dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 49M6Hv66Ygz9sRR - for ; Wed, 13 May 2020 04:47:55 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id B84F981CA7; - Tue, 12 May 2020 20:47:46 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.b="d38K5udu"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 58E8981CB4; Tue, 12 May 2020 20:47:46 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com - [210.118.77.11]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 5033481CA7 - for ; Tue, 12 May 2020 20:47:43 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=s.nawrocki@samsung.com -Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) - by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id - 20200512184742euoutp01bc8b3eb5b03aea7061c9771d94376063~OXFqTZrdZ0824908249euoutp01M - for ; Tue, 12 May 2020 18:47:42 +0000 (GMT) -DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com - 20200512184742euoutp01bc8b3eb5b03aea7061c9771d94376063~OXFqTZrdZ0824908249euoutp01M -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; - s=mail20170921; t=1589309262; - bh=y/xHx6cn6ZNuvX3V5jxpugf8Q65fZIBo5wp4jEitdVo=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=d38K5uduUnUgAuBY2HpLVidScZmwLS83XuAEP71VwqJPtHkIEcrtqnNuN+x7Vo5LB - xI47QIftGzVsub55jILxMD5WJglh2JRL6h/sha0zJZGbRvnGclE1yePigHBSvHJq8e - NKVp6Rgvvlb/0F3rQzneLiaVnOQ04AM1cU+Q0O5U= -Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by - eucas1p2.samsung.com (KnoxPortal) with ESMTP id - 20200512184741eucas1p2f963249ca616e99f379cb8519a45c7df~OXFpSf8vj0944309443eucas1p2h; - Tue, 12 May 2020 18:47:41 +0000 (GMT) -Received: from eucas1p1.samsung.com ( [182.198.249.206]) by - eusmges3new.samsung.com (EUCPMTA) with SMTP id 06.03.60698.D4FEABE5; Tue, 12 - May 2020 19:47:41 +0100 (BST) -Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by - eucas1p2.samsung.com (KnoxPortal) with ESMTPA id - 20200512184740eucas1p2912f07b9e34cc769604d641adb0e13c9~OXFopWAVc0733307333eucas1p2p; - Tue, 12 May 2020 18:47:40 +0000 (GMT) -Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by - eusmtrp2.samsung.com (KnoxPortal) with ESMTP id - 20200512184740eusmtrp285c7f01d30cd705bf6708beea010fb5e~OXFootnX41654116541eusmtrp2e; - Tue, 12 May 2020 18:47:40 +0000 (GMT) -X-AuditID: cbfec7f5-a0fff7000001ed1a-48-5ebaef4d163d -Received: from eusmtip1.samsung.com ( [203.254.199.221]) by - eusmgms1.samsung.com (EUCPMTA) with SMTP id 87.DA.08375.C4FEABE5; Tue, 12 - May 2020 19:47:40 +0100 (BST) -Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by - eusmtip1.samsung.com (KnoxPortal) with ESMTPA id - 20200512184740eusmtip1218b8e5fecda20fd55cc193294a6f3b1~OXFoEyWsp2574925749eusmtip16; - Tue, 12 May 2020 18:47:40 +0000 (GMT) -From: Sylwester Nawrocki -To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com -Cc: james.quinlan@broadcom.com, nsaenzjulienne@suse.de, sjg@chromium.org, - jh80.chung@samsung.com, m.szyprowski@samsung.com, b.zolnierkie@samsung.com, - Sylwester Nawrocki -Subject: [PATCH v3 1/9] usb: xhci: Add missing cache flush in the scratchpad - array initialization -Date: Tue, 12 May 2020 20:47:08 +0200 -Message-Id: <20200512184716.2869-2-s.nawrocki@samsung.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200512184716.2869-1-s.nawrocki@samsung.com> -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprHKsWRmVeSWpSXmKPExsWy7djPc7q+73fFGWxeLm2xccZ6VoupPfEW - e9/0s1nc+NXGarH2yF12izdtjYwWCyY/YbXYNms5m8XhN+2sFt+2bGO0eLu3k92B22PW/bNs - HrMbLrJ4zJt1gsVj56y77B5n7+xg9OjbsorRY/2Wqywem09XB3BEcdmkpOZklqUW6dslcGXc - XfWasWAKZ8XHpQeYGhjPsncxcnJICJhIrF/3BMjm4hASWMEo8fr8L1YI5wujxJmdXcwQzmdG - idPv17PAtNxZtJQRIrGcUWLemw8scC33Vj8EG8wmYCjRe7SPEcQWEQiQuPZzGlgHs8BRRok1 - +/+AjRIWSJbY+GYJmM0ioCpxsucAmM0rYCXx7u4iVoh18hKrNxxgBrE5Bawlrm8+BnaThMAq - dokV/6ZAveEiMXnjaqgGYYlXx7dAxWUk/u+czwTR0Mwo0bP7NjuEM4FR4v7xBYwQVdYSd879 - Yuti5AC6T1Ni/S59EFNCwFHi83MtCJNP4sZbQZBiZiBz0rbpzBBhXomONiGIGSoSv1dNZ4Kw - pSS6n/yHhpaHxIFJu8DOFxLoY5SY9NFzAqP8LIRVCxgZVzGKp5YW56anFhvnpZbrFSfmFpfm - pesl5+duYgSmmtP/jn/dwbjvT9IhRgEORiUe3oj6XXFCrIllxZW5hxglOJiVRHhbMnfGCfGm - JFZWpRblxxeV5qQWH2KU5mBREuc1XvQyVkggPbEkNTs1tSC1CCbLxMEp1cAY8FeRl+/HltTN - X4Xs903RVHy5e6dgqpeg0jm+4OVBkrPvpUVJPnj+KVdkzo41t/PuMjReEPlxUCtyWmyHz103 - rgXPZq0ykbWOfJ3YefagS9XPQu/PB+O5tq6w9/7zm4Vf6+bV1z8qDodnyLT/WPJqT6T6+32H - jgl/27XgeAnrlllibgaZdotvKrEUZyQaajEXFScCAAKlHx8xAwAA -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrPLMWRmVeSWpSXmKPExsVy+t/xu7o+73fFGUxZr2+xccZ6VoupPfEW - e9/0s1nc+NXGarH2yF12izdtjYwWCyY/YbXYNms5m8XhN+2sFt+2bGO0eLu3k92B22PW/bNs - HrMbLrJ4zJt1gsVj56y77B5n7+xg9OjbsorRY/2Wqywem09XB3BE6dkU5ZeWpCpk5BeX2CpF - G1oY6RlaWugZmVjqGRqbx1oZmSrp29mkpOZklqUW6dsl6GXcXfWasWAKZ8XHpQeYGhjPsncx - cnJICJhI3Fm0lLGLkYtDSGApo8SCbWtZuhg5gBJSEvNblCBqhCX+XOtig6j5xCixZOleFpAE - m4ChRO/RPkYQW0QgROLF0StMIEXMAmcZJRZ1fmAFSQgLJErMbDgGZrMIqEqc7DkA1swrYCXx - 7u4iVogN8hKrNxxgBrE5Bawlrm8+BmYLAdXs+faObQIj3wJGhlWMIqmlxbnpucWGesWJucWl - eel6yfm5mxiBgb/t2M/NOxgvbQw+xCjAwajEw8tQuytOiDWxrLgy9xCjBAezkghvS+bOOCHe - lMTKqtSi/Pii0pzU4kOMpkBHTWSWEk3OB0ZlXkm8oamhuYWlobmxubGZhZI4b4fAwRghgfTE - ktTs1NSC1CKYPiYOTqkGRvHA5utdDK+71Gc8yncU/Jl1s8GwlfnWtf/fvVcf2j1n1dGNJtMn - +bzXEb/JdkYl/OLZA3Vvo7aKLFyzg7Gsd9N+h4PpR6bHn7zJ79VRWnHmnV1WVtDq6BmPbh3d - 8qTxqqDqXif96Ra5p80yGxK5+NgP7Gd22F52neeB/7I+A4//v1Y946i/MFmJpTgj0VCLuag4 - EQDJGyeQkgIAAA== -X-CMS-MailID: 20200512184740eucas1p2912f07b9e34cc769604d641adb0e13c9 -X-Msg-Generator: CA -X-RootMTR: 20200512184740eucas1p2912f07b9e34cc769604d641adb0e13c9 -X-EPHeader: CA -CMS-TYPE: 201P -X-CMS-RootMailID: 20200512184740eucas1p2912f07b9e34cc769604d641adb0e13c9 -References: <20200512184716.2869-1-s.nawrocki@samsung.com> - -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean +From 47d0df70fbe5997770090aca05b07d774a19a722 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Wed, 10 Jun 2020 13:15:45 +0100 +Subject: [PATCH] USB host support for Raspberry Pi 4 board (64-bit) -In current code there is no cache flush after initializing the scratchpad -buffer array with the scratchpad buffer pointers. This leads to a failure -of the "slot enable" command on the rpi4 board (Broadcom STB PCIe -controller + VL805 USB hub) - the very first TRB transfer on the command -ring fails and there is a timeout while waiting for the command completion -event. After adding the missing cache flush everything seems to be working -as expected. - -Signed-off-by: Sylwester Nawrocki -Reviewed-by: Bin Meng -Reviewed-by: Nicolas Saenz Julienne +Signed-off-by: Peter Robinson --- -Changes since v1: - - none. ---- - drivers/usb/host/xhci-mem.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c -index 93450ee..729bdc3 100644 ---- a/drivers/usb/host/xhci-mem.c -+++ b/drivers/usb/host/xhci-mem.c -@@ -393,6 +393,9 @@ static int xhci_scratchpad_alloc(struct xhci_ctrl *ctrl) - scratchpad->sp_array[i] = cpu_to_le64(ptr); - } - -+ xhci_flush_cache((uintptr_t)scratchpad->sp_array, -+ sizeof(u64) * num_sp); -+ - return 0; - - fail_sp3: - -From patchwork Tue May 12 18:47:09 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Sylwester Nawrocki -X-Patchwork-Id: 1288726 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 - header.s=mail20170921 header.b=grr5hJg0; - dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 49M6J52FSkz9sSc - for ; Wed, 13 May 2020 04:48:05 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 031D381CCA; - Tue, 12 May 2020 20:47:52 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.b="grr5hJg0"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id DBE4481CCA; Tue, 12 May 2020 20:47:49 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com - [210.118.77.11]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 3D53381CC5 - for ; Tue, 12 May 2020 20:47:47 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=s.nawrocki@samsung.com -Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) - by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id - 20200512184746euoutp01fb38409a07247ba29f423e8e26c681a3~OXFtquXqn0815408154euoutp01S - for ; Tue, 12 May 2020 18:47:46 +0000 (GMT) -DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com - 20200512184746euoutp01fb38409a07247ba29f423e8e26c681a3~OXFtquXqn0815408154euoutp01S -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; - s=mail20170921; t=1589309266; - bh=mpc5rYw/U19wNz9z3l9qIGYqOM/GqAOeD9khN0UIZwU=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=grr5hJg01HyaYOSo5sRsqNi8H29+t1SJtvzpcW0TcS7Uq3xNGmFHYWcWw2hlEFBXm - SQcD5H70xlOq1k6aVxDV3EJK128Qww1iZyma0H7nEfCs1WuOaohM/qnzdBhfwcwftI - AmLAlKxzDpQym+Hg21E2PBd9E56u9ZhxeKuVbjNs= -Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by - eucas1p2.samsung.com (KnoxPortal) with ESMTP id - 20200512184745eucas1p29454eee0ca9ecc030620e98c3cb0577f~OXFspLApW2836228362eucas1p2B; - Tue, 12 May 2020 18:47:45 +0000 (GMT) -Received: from eucas1p2.samsung.com ( [182.198.249.207]) by - eusmges3new.samsung.com (EUCPMTA) with SMTP id C6.03.60698.05FEABE5; Tue, 12 - May 2020 19:47:44 +0100 (BST) -Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by - eucas1p2.samsung.com (KnoxPortal) with ESMTPA id - 20200512184743eucas1p28e9d93ba5e46ed900a88bf0bf85fda58~OXFrcGgkD0735407354eucas1p2X; - Tue, 12 May 2020 18:47:43 +0000 (GMT) -Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by - eusmtrp2.samsung.com (KnoxPortal) with ESMTP id - 20200512184743eusmtrp22630032f69ad78af217c4cc4e810fb3e~OXFrbdvJf1654916549eusmtrp2d; - Tue, 12 May 2020 18:47:43 +0000 (GMT) -X-AuditID: cbfec7f5-a0fff7000001ed1a-4c-5ebaef500edc -Received: from eusmtip1.samsung.com ( [203.254.199.221]) by - eusmgms1.samsung.com (EUCPMTA) with SMTP id 48.DA.08375.F4FEABE5; Tue, 12 - May 2020 19:47:43 +0100 (BST) -Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by - eusmtip1.samsung.com (KnoxPortal) with ESMTPA id - 20200512184743eusmtip16a33a390496025d0cd045c1a3826c2c0~OXFqzC1Wy3146231462eusmtip1f; - Tue, 12 May 2020 18:47:43 +0000 (GMT) -From: Sylwester Nawrocki -To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com -Cc: james.quinlan@broadcom.com, nsaenzjulienne@suse.de, sjg@chromium.org, - jh80.chung@samsung.com, m.szyprowski@samsung.com, b.zolnierkie@samsung.com, - Sylwester Nawrocki , Sergey Temerkhanov - -Subject: [PATCH v3 2/9] usb: xhci: Use only 32-bit accesses in - xhci_writeq/xhci_readq -Date: Tue, 12 May 2020 20:47:09 +0200 -Message-Id: <20200512184716.2869-3-s.nawrocki@samsung.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200512184716.2869-1-s.nawrocki@samsung.com> -X-Brightmail-Tracker: H4sIAAAAAAAAA0VSa0hTYRju2845O5qL05R8M8EYRRhecdQhLylJnh8ikpJSNFt5UPHappb1 - Q0NZzjuJGou8NGyhpKlrOW95NxLTJE1KUcMyRQu1RTPRnEfr3/M+l/d9+PhIvqgatyNjEpJZ - eYIsTkxYYvp+07Bz8I8WqVtrhxfd8KAep0vyIuj2pUKCnlhX4vSz3ikBvaS8i+jK4jmc1qu1 - BN2zdA+nq9UdAvqXTo/o5XaVwNeKUU8PEczDjHcYU65+jTEG9ZSAGZpsRkyBrgYx9boxjGka - vBNMXrL0imTjYlJZuavPVctoQ3EVnrRG3VrJ1hAZaFaYgyxIoCSge1mO5yBLUkQ9RfBdtUhw - w08Ekwuju8MaAlONUrAXaVQqESdoETR8LOH9i+hqX/DMLoJyh/y+AmTGNlQwjJtKdxJ8yojg - Te4IZhasqTBQjc4SZoxRx0G7odkJC6kz8HWwA+POOUDt806+GVtQnvChqZ9vXgRUnQDaCvMJ - zuQPBqMK57A1LA7odrvaw5ahgscFMhHktX4ScEMRgumBSsS5PGHy7fr2JnK7nyPUt7hytB9U - /NbzzDRQB2Bi+aCZ5m/D+/oyPkcLIVsp4tzH4E9NGY/DdpA7t7Xbn4G1vjoB90IFCDK7THgR - clD/P1aJUA2yZVMU8VGswiOBvemikMUrUhKiXK4nxjei7c8zuDlgbEYdG9e6EUUisZUwPL1F - KsJlqYq0+G4EJF9sI8yKMUhFwkhZ2m1WnhghT4ljFd3oCImJbYUejxeuiKgoWTIby7JJrHxP - 5ZEWdhno9GbOeQf7Vl+Jk8nnRLVIMhTnGHaoR+Kq6kppqzi7fMF7ZSKwp9d/3njKu0UyrZUG - Tc84TXaFfjOi1dHQi/OJY5rxG6VPqoZfHVWpIoICwvcHhkCAW2Rr+8RI+rBGmV13+Zzmi/Oj - GTj8WYhQFa/Or3a1d19tQ2xI5/ssqU2BGFNEy9xP8uUK2V8p3t8YOAMAAA== -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmphkeLIzCtJLcpLzFFi42I5/e/4XV3/97viDHb26llsnLGe1WJqT7zF - 3jf9bBY3frWxWqw9cpfd4k1bI6PFgslPWC22zVrOZnH4TTurxdJZ+9gtvm3Zxmjxdm8nuwOP - x6z7Z9k8ZjdcZPGYN+sEi8fOWXfZPc7e2cHo0bdlFaPH+i1XWTw2n64O4IjSsynKLy1JVcjI - Ly6xVYo2tDDSM7S00DMysdQzNDaPtTIyVdK3s0lJzcksSy3St0vQy9g5eSFrwWeBio8di9ka - GB/ydjFyckgImEhsamtj7GLk4hASWMoosWrtQiCHAyghJTG/RQmiRljiz7UuNoiaT4wSjVff - soAk2AQMJXqP9jGC2CICIRIvjl5hAiliFvjLKDGp9QkrSEJYIFTi7tP5YDaLgKrE8j+LmUBs - XgEriWen97FAbJCXWL3hADOIzSlgLXF98zEwWwioZs+3d2wTGPkWMDKsYhRJLS3OTc8tNtQr - TswtLs1L10vOz93ECIyBbcd+bt7BeGlj8CFGAQ5GJR5ehtpdcUKsiWXFlbmHGCU4mJVEeFsy - d8YJ8aYkVlalFuXHF5XmpBYfYjQFOmois5Rocj4wPvNK4g1NDc0tLA3Njc2NzSyUxHk7BA7G - CAmkJ5akZqemFqQWwfQxcXBKNTB6nbS75KLLcXaSEefxVQuf7fj8f9bj7/+W83UdTBPtbEo9 - LXT2+/znb9WWx/X7dl++fTu/uqBaPixV8t3/v6YG/SXmdQ/NeHqaT3MnmTe3rbNZkZFrr1IY - y//PRYDVYEtvSsrjr8UK0VdCpk42XPb0vaNeRErYDM4ZZm4ajV3LF4k56rzcN0uJpTgj0VCL - uag4EQCTL19flwIAAA== -X-CMS-MailID: 20200512184743eucas1p28e9d93ba5e46ed900a88bf0bf85fda58 -X-Msg-Generator: CA -X-RootMTR: 20200512184743eucas1p28e9d93ba5e46ed900a88bf0bf85fda58 -X-EPHeader: CA -CMS-TYPE: 201P -X-CMS-RootMailID: 20200512184743eucas1p28e9d93ba5e46ed900a88bf0bf85fda58 -References: <20200512184716.2869-1-s.nawrocki@samsung.com> - -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -There might be hardware configurations where 64-bit data accesses -to XHCI registers are not supported properly. This patch removes -the readq/writeq so always two 32-bit accesses are used to read/write -64-bit XHCI registers, similarly as it is done in Linux kernel. - -This patch fixes operation of the XHCI controller on RPI4 Broadcom -BCM2711 SoC based board, where the VL805 USB XHCI controller is -connected to the PCIe Root Complex, which is attached to the system -through the SCB bridge. - -Even though the architecture is 64-bit the PCIe BAR is 32-bit and likely -the 64-bit wide register accesses initiated by the CPU are not properly -translated to a sequence of 32-bit PCIe accesses. -xhci_readq(), for example, always returns same value in upper and lower -32-bits, e.g. 0xabcd1234abcd1234 instead of 0x00000000abcd1234. - -Cc: Sergey Temerkhanov -Signed-off-by: Sylwester Nawrocki -Reviewed-by: Bin Meng -Reviewed-by: Nicolas Saenz Julienne ---- -Changes since v1: - - none. -Changes since RFC: - - dropped Kconfig option, switched to not using readq/writeq - unconditionally. ---- - include/usb/xhci.h | 8 -------- - 1 file changed, 8 deletions(-) - -diff --git a/include/usb/xhci.h b/include/usb/xhci.h -index 6017504..c16106a 100644 ---- a/include/usb/xhci.h -+++ b/include/usb/xhci.h -@@ -1111,28 +1111,20 @@ static inline void xhci_writel(uint32_t volatile *regs, const unsigned int val) - */ - static inline u64 xhci_readq(__le64 volatile *regs) - { --#if BITS_PER_LONG == 64 -- return readq(regs); --#else - __u32 *ptr = (__u32 *)regs; - u64 val_lo = readl(ptr); - u64 val_hi = readl(ptr + 1); - return val_lo + (val_hi << 32); --#endif - } - - static inline void xhci_writeq(__le64 volatile *regs, const u64 val) - { --#if BITS_PER_LONG == 64 -- writeq(val, regs); --#else - __u32 *ptr = (__u32 *)regs; - u32 val_lo = lower_32_bits(val); - /* FIXME */ - u32 val_hi = upper_32_bits(val); - writel(val_lo, ptr); - writel(val_hi, ptr + 1); --#endif - } - - int xhci_hcd_init(int index, struct xhci_hccr **ret_hccr, - -From patchwork Tue May 12 18:47:10 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Sylwester Nawrocki -X-Patchwork-Id: 1288728 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 - header.s=mail20170921 header.b=MQb96qeW; - dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 49M6JZ0HY9z9sRR - for ; Wed, 13 May 2020 04:48:29 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 97A5E81CE6; - Tue, 12 May 2020 20:47:55 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.b="MQb96qeW"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 91CEA81CD5; Tue, 12 May 2020 20:47:52 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com - [210.118.77.11]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id EC86281C9C - for ; Tue, 12 May 2020 20:47:49 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=s.nawrocki@samsung.com -Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) - by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id - 20200512184749euoutp01f49ee1d587539ddc7a686993e968522f~OXFw3ZAYX0815408154euoutp01T - for ; Tue, 12 May 2020 18:47:49 +0000 (GMT) -DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com - 20200512184749euoutp01f49ee1d587539ddc7a686993e968522f~OXFw3ZAYX0815408154euoutp01T -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; - s=mail20170921; t=1589309269; - bh=o2n59jAOXed94iksPXrzyyjRiAB6FlEj8rUQ47ogyyk=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=MQb96qeW8BGeMLYvoFF8R5AK1VxRLBF9DKrHdA78h1FGD56P/N3T9UWKZFfPK+zeT - 0f2oSHQ2MVqRnuwpxzTWSHmbVuBZJE89UYjb1wU+vXivuiwfqiftxIkx0H74WHDljA - QPw23KgCLp0pZQt4sPsJz2xniqkbi21z32ANnwxM= -Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by - eucas1p1.samsung.com (KnoxPortal) with ESMTP id - 20200512184748eucas1p11ef796b4c399aa64b9557a31eeeb908b~OXFwGTfiE2309523095eucas1p1z; - Tue, 12 May 2020 18:47:48 +0000 (GMT) -Received: from eucas1p1.samsung.com ( [182.198.249.206]) by - eusmges2new.samsung.com (EUCPMTA) with SMTP id 52.AA.60679.45FEABE5; Tue, 12 - May 2020 19:47:48 +0100 (BST) -Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by - eucas1p2.samsung.com (KnoxPortal) with ESMTPA id - 20200512184747eucas1p25ed7fb872416271dd34806ccfb4197e5~OXFvEnnod0735407354eucas1p2Z; - Tue, 12 May 2020 18:47:47 +0000 (GMT) -Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by - eusmtrp2.samsung.com (KnoxPortal) with ESMTP id - 20200512184747eusmtrp220606fb120fb3b6d130b61b70b1a907f~OXFvD_isr1654116541eusmtrp2g; - Tue, 12 May 2020 18:47:47 +0000 (GMT) -X-AuditID: cbfec7f4-0cbff7000001ed07-c4-5ebaef540342 -Received: from eusmtip1.samsung.com ( [203.254.199.221]) by - eusmgms1.samsung.com (EUCPMTA) with SMTP id 89.DA.08375.35FEABE5; Tue, 12 - May 2020 19:47:47 +0100 (BST) -Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by - eusmtip1.samsung.com (KnoxPortal) with ESMTPA id - 20200512184747eusmtip1652b74d3fc922a12e92ef0d0910e99c5~OXFub85B-3146231462eusmtip1g; - Tue, 12 May 2020 18:47:46 +0000 (GMT) -From: Sylwester Nawrocki -To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com -Cc: james.quinlan@broadcom.com, nsaenzjulienne@suse.de, sjg@chromium.org, - jh80.chung@samsung.com, m.szyprowski@samsung.com, b.zolnierkie@samsung.com, - Sylwester Nawrocki -Subject: [PATCH v3 3/9] pci: Move some PCIe register offset definitions to a - common header -Date: Tue, 12 May 2020 20:47:10 +0200 -Message-Id: <20200512184716.2869-4-s.nawrocki@samsung.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200512184716.2869-1-s.nawrocki@samsung.com> -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprDKsWRmVeSWpSXmKPExsWy7djPc7oh73fFGTw6rm2xccZ6VoupPfEW - e9/0s1nc+NXGarH2yF12izdtjYwWCyY/YbXYNms5m8XhN+2sFt+2bGO0eLu3k92B22PW/bNs - HrMbLrJ4zJt1gsVj56y77B5n7+xg9OjbsorRY/2Wqywem09XB3BEcdmkpOZklqUW6dslcGVM - nqNYMF2y4vHC/4wNjM9Euhg5OSQETCSm/ZvDDmILCaxglOjZH9DFyAVkf2GUeLzoMzuE85lR - ou/UDXaYjlM9R1khEssZJQ4+P8UK0Q7Usmy+B4jNJmAo0Xu0jxHEFhEIkLj2cxojSAOzwFFG - iTX7/7CAJIQFYiTO77/MBGKzCKhKTL1xBKyBV8BKYs3S12wQ2+QlVm84wAxicwpYS1zffIwZ - ZJCEwDJ2iVW7F0Kd5CKx79h1RghbWOLV8S1QcRmJ/zvnM0E0NAM9t/s2O4QzgVHi/vEFUB3W - EnfO/QJaxwF0n6bE+l36EGFHiemPdoCFJQT4JG68FQQJMwOZk7ZNZ4YI80p0tAlBVKtI/F41 - nQnClpLofvKfBaLEQ2L5NAdIYPUB/d76iW0Co/wshF0LGBlXMYqnlhbnpqcWG+WllusVJ+YW - l+al6yXn525iBKaZ0/+Of9nBuOtP0iFGAQ5GJR5ehtpdcUKsiWXFlbmHGCU4mJVEeFsyd8YJ - 8aYkVlalFuXHF5XmpBYfYpTmYFES5zVe9DJWSCA9sSQ1OzW1ILUIJsvEwSnVwLh1z5TeG0az - +Xfd3FB0+/pjvrtznq13cFFY6DvDfpdPqclmFr4pB1beCCs7lOQ78cOhHwlnVjI6zEmc2Ozz - UzA48qrRrx/LPvqqt87Nqaz10/n2edvVDtvtE8Xe3rXad+vYkdXTZH6FOV5copT6IaCd1+u9 - COurmnJJL6c5pbV9++z8vrjw1O5UYinOSDTUYi4qTgQAvI6vdC8DAAA= -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrHLMWRmVeSWpSXmKPExsVy+t/xu7rB73fFGTxpUbXYOGM9q8XUnniL - vW/62Sxu/GpjtVh75C67xZu2RkaLBZOfsFpsm7WczeLwm3ZWi29btjFavN3bye7A7THr/lk2 - j9kNF1k85s06weKxc9Zddo+zd3YwevRtWcXosX7LVRaPzaerAzii9GyK8ktLUhUy8otLbJWi - DS2M9AwtLfSMTCz1DI3NY62MTJX07WxSUnMyy1KL9O0S9DImz1EsmC5Z8Xjhf8YGxmciXYyc - HBICJhKneo6ydjFycQgJLGWUOL/kGnsXIwdQQkpifosSRI2wxJ9rXWwQNZ8YJe61LGACSbAJ - GEr0Hu1jBLFFBEIkXhy9wgRSxCxwllFiUecHVpCEsECUxIvfjWBFLAKqElNvHAGzeQWsJNYs - fc0GsUFeYvWGA8wgNqeAtcT1zcfAbCGgmj3f3rFNYORbwMiwilEktbQ4Nz232FCvODG3uDQv - XS85P3cTIzDstx37uXkH46WNwYcYBTgYlXh4GWp3xQmxJpYVV+YeYpTgYFYS4W3J3BknxJuS - WFmVWpQfX1Sak1p8iNEU6KiJzFKiyfnAmMwriTc0NTS3sDQ0NzY3NrNQEuftEDgYIySQnliS - mp2aWpBaBNPHxMEp1cAo8NYxO8Jqj6PRV77edRqM6d/fPNh+ckp9/fKwsoWn/NSufp8boJey - O+/Wy/nTzpj1bt4798PtHSdmhmywaQj0KVYtD5qat1b7GMvEYBcra0Ze5hft2f6SH/t0Lumf - lXf9Pqv43uddiwVjUyRvrP5qZmy664CmlFb7nrstPeLfGxjWC3ooze9TYinOSDTUYi4qTgQA - d2ZzFZECAAA= -X-CMS-MailID: 20200512184747eucas1p25ed7fb872416271dd34806ccfb4197e5 -X-Msg-Generator: CA -X-RootMTR: 20200512184747eucas1p25ed7fb872416271dd34806ccfb4197e5 -X-EPHeader: CA -CMS-TYPE: 201P -X-CMS-RootMailID: 20200512184747eucas1p25ed7fb872416271dd34806ccfb4197e5 -References: <20200512184716.2869-1-s.nawrocki@samsung.com> - -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -Some PCI Express register offsets are currently defined in multiple -drivers, move them to a common header to avoid re-definitions and -as a pre-requisite for adding new PCIe driver. -While at it replace some spaces with tabs. - -Signed-off-by: Sylwester Nawrocki -Reviewed-by: Bin Meng -Reviewed-by: Nicolas Saenz Julienne ---- -Changes since v1: - - none. -Changes since RFC: - - whitespace clean up. ---- - drivers/pci/pci-rcar-gen3.c | 8 -------- - drivers/pci/pcie_intel_fpga.c | 3 --- - include/pci.h | 13 +++++++++++-- - 3 files changed, 11 insertions(+), 13 deletions(-) - -diff --git a/drivers/pci/pci-rcar-gen3.c b/drivers/pci/pci-rcar-gen3.c -index 30eff67..393f1c9 100644 ---- a/drivers/pci/pci-rcar-gen3.c -+++ b/drivers/pci/pci-rcar-gen3.c -@@ -117,14 +117,6 @@ - #define RCAR_PCI_MAX_RESOURCES 4 - #define MAX_NR_INBOUND_MAPS 6 - --#define PCI_EXP_FLAGS 2 /* Capabilities register */ --#define PCI_EXP_FLAGS_TYPE 0x00f0 /* Device/Port type */ --#define PCI_EXP_TYPE_ROOT_PORT 0x4 /* Root Port */ --#define PCI_EXP_LNKCAP 12 /* Link Capabilities */ --#define PCI_EXP_LNKCAP_DLLLARC 0x00100000 /* Data Link Layer Link Active Reporting Capable */ --#define PCI_EXP_SLTCAP 20 /* Slot Capabilities */ --#define PCI_EXP_SLTCAP_PSN 0xfff80000 /* Physical Slot Number */ -- - enum { - RCAR_PCI_ACCESS_READ, - RCAR_PCI_ACCESS_WRITE, -diff --git a/drivers/pci/pcie_intel_fpga.c b/drivers/pci/pcie_intel_fpga.c -index 6a9f29c..69363a0 100644 ---- a/drivers/pci/pcie_intel_fpga.c -+++ b/drivers/pci/pcie_intel_fpga.c -@@ -65,9 +65,6 @@ - #define IS_ROOT_PORT(pcie, bdf) \ - ((PCI_BUS(bdf) == pcie->first_busno) ? true : false) - --#define PCI_EXP_LNKSTA 18 /* Link Status */ --#define PCI_EXP_LNKSTA_DLLLA 0x2000 /* Data Link Layer Link Active */ -- - /** - * struct intel_fpga_pcie - Intel FPGA PCIe controller state - * @bus: Pointer to the PCI bus -diff --git a/include/pci.h b/include/pci.h -index aff56b2..dfdbb32 100644 ---- a/include/pci.h -+++ b/include/pci.h -@@ -471,10 +471,19 @@ - #define PCI_EA_FIELD_MASK 0xfffffffc /* For Base & Max Offset */ - - /* PCI Express capabilities */ -+#define PCI_EXP_FLAGS 2 /* Capabilities register */ -+#define PCI_EXP_FLAGS_TYPE 0x00f0 /* Device/Port type */ -+#define PCI_EXP_TYPE_ROOT_PORT 0x4 /* Root Port */ - #define PCI_EXP_DEVCAP 4 /* Device capabilities */ --#define PCI_EXP_DEVCAP_FLR 0x10000000 /* Function Level Reset */ -+#define PCI_EXP_DEVCAP_FLR 0x10000000 /* Function Level Reset */ - #define PCI_EXP_DEVCTL 8 /* Device Control */ --#define PCI_EXP_DEVCTL_BCR_FLR 0x8000 /* Bridge Configuration Retry / FLR */ -+#define PCI_EXP_DEVCTL_BCR_FLR 0x8000 /* Bridge Configuration Retry / FLR */ -+#define PCI_EXP_LNKCAP 12 /* Link Capabilities */ -+#define PCI_EXP_LNKCAP_DLLLARC 0x00100000 /* Data Link Layer Link Active Reporting Capable */ -+#define PCI_EXP_LNKSTA 18 /* Link Status */ -+#define PCI_EXP_LNKSTA_DLLLA 0x2000 /* Data Link Layer Link Active */ -+#define PCI_EXP_SLTCAP 20 /* Slot Capabilities */ -+#define PCI_EXP_SLTCAP_PSN 0xfff80000 /* Physical Slot Number */ - - /* Include the ID list */ - - -From patchwork Tue May 12 18:47:11 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Sylwester Nawrocki -X-Patchwork-Id: 1288729 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 - header.s=mail20170921 header.b=DMPfLXHn; - dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 49M6Jq5kVFz9sSW - for ; Wed, 13 May 2020 04:48:43 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 6DD0981CA0; - Tue, 12 May 2020 20:48:35 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.b="DMPfLXHn"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 1708981CCA; Tue, 12 May 2020 20:48:34 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com - [210.118.77.11]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 268AA81C8F - for ; Tue, 12 May 2020 20:48:31 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=s.nawrocki@samsung.com -Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) - by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id - 20200512184830euoutp01ccbc955d4e553cfcc652df2a8a26a7bd~OXGXNrozu0823008230euoutp01U - for ; Tue, 12 May 2020 18:48:30 +0000 (GMT) -DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com - 20200512184830euoutp01ccbc955d4e553cfcc652df2a8a26a7bd~OXGXNrozu0823008230euoutp01U -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; - s=mail20170921; t=1589309310; - bh=3E0AOgx9hU8sLyjssq8h9uGtoMBKiYQYmWKYKj8g+7M=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=DMPfLXHnOgmW1Z4KlAl/NdPP5dLcXH56gib60eMcKVBH/cg4pQkIlBSZPlg8WU47T - OSf3QryKG/0HgRi0epoYgVCWYqdtWu+elalkhjiDXrHEaN9KpotUASwVVmKc6vxZUq - sQhwySR6duVQzCazExVuqPC71RShDpAqqkiFjqrg= -Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by - eucas1p2.samsung.com (KnoxPortal) with ESMTP id - 20200512184830eucas1p26b67732246d5cd7a6247fa6e114db6d0~OXGW73iC-0949309493eucas1p2v; - Tue, 12 May 2020 18:48:30 +0000 (GMT) -Received: from eucas1p2.samsung.com ( [182.198.249.207]) by - eusmges3new.samsung.com (EUCPMTA) with SMTP id 7D.03.60698.E7FEABE5; Tue, 12 - May 2020 19:48:30 +0100 (BST) -Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by - eucas1p1.samsung.com (KnoxPortal) with ESMTPA id - 20200512184829eucas1p10c67592f9af7879f51eee9bff8fa76d7~OXGVv7OF12080520805eucas1p1u; - Tue, 12 May 2020 18:48:29 +0000 (GMT) -Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by - eusmtrp2.samsung.com (KnoxPortal) with ESMTP id - 20200512184829eusmtrp262ea470daeba61b3d4efb349c6418007~OXGVvS8Ut1654916549eusmtrp2n; - Tue, 12 May 2020 18:48:29 +0000 (GMT) -X-AuditID: cbfec7f5-a29ff7000001ed1a-89-5ebaef7eefa5 -Received: from eusmtip1.samsung.com ( [203.254.199.221]) by - eusmgms2.samsung.com (EUCPMTA) with SMTP id 22.F8.07950.D7FEABE5; Tue, 12 - May 2020 19:48:29 +0100 (BST) -Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by - eusmtip1.samsung.com (KnoxPortal) with ESMTPA id - 20200512184828eusmtip1a8d7ad1b8a25aeb694a863a0e7798f73~OXGVOX36p1659716597eusmtip1h; - Tue, 12 May 2020 18:48:28 +0000 (GMT) -From: Sylwester Nawrocki -To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com -Cc: james.quinlan@broadcom.com, nsaenzjulienne@suse.de, sjg@chromium.org, - jh80.chung@samsung.com, m.szyprowski@samsung.com, b.zolnierkie@samsung.com, - Sylwester Nawrocki -Subject: [PATCH v3 4/9] rpi4: shorten a mapping for the DRAM -Date: Tue, 12 May 2020 20:47:11 +0200 -Message-Id: <20200512184716.2869-5-s.nawrocki@samsung.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200512184716.2869-1-s.nawrocki@samsung.com> -X-Brightmail-Tracker: H4sIAAAAAAAAA0VSa0hTYRjm81x2XC5O0/JLLWPUj6J0YuQhpQv24/wKIQgzUpee3NBN2bxk - oS4Mzfs0dDIlh3jDvOVs3tPMqWFzpmiS1x9aZLMQU9KstXlm/Xue532f73le+AiEX4G5ERJZ - PCOXiWIEOBfVD22bzqV+7woVDhYfp16UNmNUcW4Y1WsuwKmZnQyMahyc51DmjEeA0j5dxii9 - phan3pgzMWqrTQ+otd4szpUDtGbRiNNlyvco/UwzgtKdmnkObZzrAHR+Wz2gm9umUFo3+jCI - COEGRDIxkkRG7n0pnCve2tWicUv4/W1LHq4ERiwbOBKQPA8/Npai2YBL8Mk6AFd/btjJDwBL - THMISzasRNXH2bcY2iftg1oAK7+asH+WpkIdYtvCSR+YZ8gHNuxCBsHp7RJgW0JIA4ANfbuo - beBMBsCcniLchlHyFPxdZNlrxSMvwkrLCmDjPOHzlv69Rx1Jf/hBN7QXDckaDlypWbGfcQ2O - j1fbDc5wdbjN3tUDWjorHFhDOoC53bMclqgAXBzW2h3+cG5sx1qDsPY7DZu7vFn5Kuxez0Jt - MiQPwpm1QzYZscIivRphZR58ksFnt0/CX/VqBxa7wZxlC8piGr6c+LSH+WQ+gB2tUSrgqfmf - pQWgHrgyCQppFKPwlTFJXgqRVJEgi/KKiJW2Auu3Gf0zvNkBXu3eHQAkAQROvOC0rlA+JkpU - JEsHACQQgQvvsaQzlM+LFCU/YOSxYfKEGEYxANwJVODK8638codPRonimWiGiWPk+1MHwtFN - CYQpQnVaT2nysfDE1aaIqtbArJWlneYF9eWFw7cmMt3zI/JC1lMLouP8/IzY5G2TIbVxqvCd - wXzEYEkp32whdEwVphuZnvFQjZWVI6iY+rYutIyf1SjXTtyQ3HybHmjYckraaA++J25AEi+o - xrizkuu6sv7Pr49W96fWVaVwBahCLPI5g8gVor/Jvg12MgMAAA== -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrPLMWRmVeSWpSXmKPExsVy+t/xu7q173fFGcx6xW2xccZ6VoupPfEW - e9/0s1nc+NXGarH2yF12izdtjYwWCyY/YbXYNms5m8XhN+2sFt+2bGO0eLu3k92B22PW/bNs - HrMbLrJ4zJt1gsVj56y77B5n7+xg9OjbsorRY/2Wqywem09XB3BE6dkU5ZeWpCpk5BeX2CpF - G1oY6RlaWugZmVjqGRqbx1oZmSrp29mkpOZklqUW6dsl6GV8+7OApeABW8XP/71sDYxnWbsY - OTkkBEwkjm6/zNzFyMUhJLCUUaJjUzuQwwGUkJKY36IEUSMs8edaFxtEzSdGif+9b5hAEmwC - hhK9R/sYQWwRgRCJF0evMIEUMQucZZRY1PkBbIOwgI1E955JbCA2i4CqxN9J/8HivAJWEov+ - P2WE2CAvsXrDAWYQm1PAWuL65mNgthBQzZ5v79gmMPItYGRYxSiSWlqcm55bbKRXnJhbXJqX - rpecn7uJERj424793LKDsetd8CFGAQ5GJR7eiPpdcUKsiWXFlbmHGCU4mJVEeFsyd8YJ8aYk - VlalFuXHF5XmpBYfYjQFOmois5Rocj4wKvNK4g1NDc0tLA3Njc2NzSyUxHk7BA7GCAmkJ5ak - ZqemFqQWwfQxcXBKNTCeUDjUsfdYk+GanwELP95YN2/J9NfGstu3nn42YcH/6UqTTE3bU24L - K74vEv6+x/hg276183j4TsoumBXpvTTv7cVjU+IfTC3dfey+2rcNU7fGmcuxiewVihLapvRL - 0n1/s5XyjSCz0n3PbGavd9gQt2xnnWCOWl68jfxdD++dF5ce1wrYx2xorcRSnJFoqMVcVJwI - AKKisECSAgAA -X-CMS-MailID: 20200512184829eucas1p10c67592f9af7879f51eee9bff8fa76d7 -X-Msg-Generator: CA -X-RootMTR: 20200512184829eucas1p10c67592f9af7879f51eee9bff8fa76d7 -X-EPHeader: CA -CMS-TYPE: 201P -X-CMS-RootMailID: 20200512184829eucas1p10c67592f9af7879f51eee9bff8fa76d7 -References: <20200512184716.2869-1-s.nawrocki@samsung.com> - -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -From: Marek Szyprowski - -Remove the overlap between DRAM and device's IO area. - -Signed-off-by: Marek Szyprowski -Signed-off-by: Sylwester Nawrocki -Reviewed-by: Nicolas Saenz Julienne ---- -Changes since v1: - - none. ---- - arch/arm/mach-bcm283x/init.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + arch/arm/mach-bcm283x/init.c | 20 +- + configs/rpi_4_defconfig | 9 + + configs/rpi_arm64_defconfig | 8 +- + drivers/pci/Kconfig | 9 + + drivers/pci/Makefile | 1 + + drivers/pci/pci-rcar-gen3.c | 8 - + drivers/pci/pcie_brcmstb.c | 623 ++++++++++++++++++++++++++++++++++ + drivers/pci/pcie_intel_fpga.c | 3 - + drivers/usb/host/xhci-mem.c | 3 + + include/linux/bitfield.h | 52 +++ + include/pci.h | 22 +- + include/usb/xhci.h | 8 - + 12 files changed, 740 insertions(+), 26 deletions(-) + create mode 100644 drivers/pci/pcie_brcmstb.c diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c -index 9966d6c..4295356 100644 +index f4d00d892d..cf4c5b245d 100644 --- a/arch/arm/mach-bcm283x/init.c +++ b/arch/arm/mach-bcm283x/init.c -@@ -38,7 +38,7 @@ static struct mm_region bcm2711_mem_map[] = { - { - .virt = 0x00000000UL, - .phys = 0x00000000UL, -- .size = 0xfe000000UL, -+ .size = 0xfc000000UL, - .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | - PTE_BLOCK_INNER_SHARE - }, { - -From patchwork Tue May 12 18:47:12 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Sylwester Nawrocki -X-Patchwork-Id: 1288730 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 - header.s=mail20170921 header.b=PpqM0F3J; - dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 49M6K33sdWz9sSW - for ; Wed, 13 May 2020 04:48:55 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 305E681CD4; - Tue, 12 May 2020 20:48:38 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.b="PpqM0F3J"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 2729181CA1; Tue, 12 May 2020 20:48:35 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com - [210.118.77.12]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 520C381CA0 - for ; Tue, 12 May 2020 20:48:32 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=s.nawrocki@samsung.com -Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) - by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id - 20200512184831euoutp0223716d2be7dd8466639bb75ecdcd79b0~OXGXwE2rE0645506455euoutp02c - for ; Tue, 12 May 2020 18:48:31 +0000 (GMT) -DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com - 20200512184831euoutp0223716d2be7dd8466639bb75ecdcd79b0~OXGXwE2rE0645506455euoutp02c -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; - s=mail20170921; t=1589309311; - bh=1pvJmD4788qVg9pTe/vSEzdnItJirsmIW08n7dgVDSA=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=PpqM0F3JtuV/Gbbx4WZDA0/EUnzelZKHiPHcezW/bOT3ROKOpL5P+hTILHd2Fa9az - AgjMlAoSUTV5jgyC183yxJiA00nZs3FMJ0Bs5apO3yGnMQ0VplTKbdtZOYCjfPLsW9 - X1PqGYiWoAETAzfxMLvtiQYLn2baNQR7KG6BB4jc= -Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by - eucas1p2.samsung.com (KnoxPortal) with ESMTP id - 20200512184831eucas1p28c8414af443b820cd0031316c0b5f158~OXGXgiZCQ0944309443eucas1p2q; - Tue, 12 May 2020 18:48:31 +0000 (GMT) -Received: from eucas1p2.samsung.com ( [182.198.249.207]) by - eusmges1new.samsung.com (EUCPMTA) with SMTP id 2E.FF.61286.F7FEABE5; Tue, 12 - May 2020 19:48:31 +0100 (BST) -Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by - eucas1p1.samsung.com (KnoxPortal) with ESMTPA id - 20200512184830eucas1p198b1439122e2da299c563726fe17f9ef~OXGXJNK8p2314823148eucas1p1B; - Tue, 12 May 2020 18:48:30 +0000 (GMT) -Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by - eusmtrp2.samsung.com (KnoxPortal) with ESMTP id - 20200512184830eusmtrp2079ea429a5356a2e5cc978b0d5f43d24~OXGXIonFW1654116541eusmtrp2p; - Tue, 12 May 2020 18:48:30 +0000 (GMT) -X-AuditID: cbfec7f2-f0bff7000001ef66-8a-5ebaef7f3368 -Received: from eusmtip1.samsung.com ( [203.254.199.221]) by - eusmgms2.samsung.com (EUCPMTA) with SMTP id E2.F8.07950.E7FEABE5; Tue, 12 - May 2020 19:48:30 +0100 (BST) -Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by - eusmtip1.samsung.com (KnoxPortal) with ESMTPA id - 20200512184830eusmtip128dac35d637f9caa48c5da04fe7aeb84~OXGWqET-G2778327783eusmtip1U; - Tue, 12 May 2020 18:48:30 +0000 (GMT) -From: Sylwester Nawrocki -To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com -Cc: james.quinlan@broadcom.com, nsaenzjulienne@suse.de, sjg@chromium.org, - jh80.chung@samsung.com, m.szyprowski@samsung.com, b.zolnierkie@samsung.com, - Sylwester Nawrocki -Subject: [PATCH v3 5/9] rpi4: add a mapping for the PCIe XHCI controller - MMIO registers (ARM 64bit) -Date: Tue, 12 May 2020 20:47:12 +0200 -Message-Id: <20200512184716.2869-6-s.nawrocki@samsung.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200512184716.2869-1-s.nawrocki@samsung.com> -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprPKsWRmVeSWpSXmKPExsWy7djP87r173fFGXxfxWKxccZ6VoupPfEW - e9/0s1nc+NXGarH2yF12izdtjYwWCyY/YbXYNms5m8XhN+2sFt+2bGO0eLu3k92B22PW/bNs - HrMbLrJ4zJt1gsVj56y77B5n7+xg9OjbsorRY/2Wqywem09XB3BEcdmkpOZklqUW6dslcGV8 - WriNvWCTYMWOfbvYGxgX8HUxcnJICJhITDy4ka2LkYtDSGAFo0TT213MEM4XRokzu3YwQjif - GSXajuxjg2npnd7MBJFYzihx7fJ5FriWpYe+M4NUsQkYSvQe7WMEsUUEAiSu/ZwGNopZ4Cij - xJr9f1hAEsICqRKNrx6CjWURUJX4Nm82WJxXwEriSu8/qHXyEqs3HAAbyilgLXF98zFmiPgy - domli0UgbBeJ39tnM0HYwhKvjm9hh7BlJP7vnA92qoRAM6NEz+7b7BDOBEaJ+8cXMEJUWUvc - OfcLaBsH0HmaEut36UOEHSWWbO5iBQlLCPBJ3HgrCBJmBjInbZvODBHmlehoE4KoVpH4vWo6 - 1AlSEt1P/rNA2B4St/YcYIUEUB8wgP6dZ5zAKD8LYdkCRsZVjOKppcW56anFhnmp5XrFibnF - pXnpesn5uZsYgcnm9L/jn3Ywfr2UdIhRgINRiYeXoXZXnBBrYllxZe4hRgkOZiUR3pbMnXFC - vCmJlVWpRfnxRaU5qcWHGKU5WJTEeY0XvYwVEkhPLEnNTk0tSC2CyTJxcEo1MM6MW6vHlv9O - LFWw4mzJiaOX1tgbcVh+DyhbVxBTPOG2iGxd2Z4Xll4nbb/t4i7Uli7/c69kR8TPP/0y3085 - Vj6bYJ3UkaklyinuIOjU32D/wGfFROcjPf0LmWOyko9vzpQ+8m5a1vbG6Ci9qXytx2L3WDz5 - PG/nWzffGb6Vz5lVNPRa7Y9PUmIpzkg01GIuKk4EAHeTlcEyAwAA -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrPLMWRmVeSWpSXmKPExsVy+t/xu7p173fFGbxeo2WxccZ6VoupPfEW - e9/0s1nc+NXGarH2yF12izdtjYwWCyY/YbXYNms5m8XhN+2sFt+2bGO0eLu3k92B22PW/bNs - HrMbLrJ4zJt1gsVj56y77B5n7+xg9OjbsorRY/2Wqywem09XB3BE6dkU5ZeWpCpk5BeX2CpF - G1oY6RlaWugZmVjqGRqbx1oZmSrp29mkpOZklqUW6dsl6GV8WriNvWCTYMWOfbvYGxgX8HUx - cnJICJhI9E5vZupi5OIQEljKKHGu/wJjFyMHUEJKYn6LEkSNsMSfa11sEDWfGCXO7z3LDJJg - EzCU6D3axwhiiwiESLw4egVsELPAWUaJRZ0fWEESwgLJEk17voPZLAKqEt/mzWYBsXkFrCSu - 9P5jg9ggL7F6wwGwoZwC1hLXNx8Ds4WAavZ8e8c2gZFvASPDKkaR1NLi3PTcYiO94sTc4tK8 - dL3k/NxNjMDA33bs55YdjF3vgg8xCnAwKvHwRtTvihNiTSwrrsw9xCjBwawkwtuSuTNOiDcl - sbIqtSg/vqg0J7X4EKMp0FETmaVEk/OBUZlXEm9oamhuYWlobmxubGahJM7bIXAwRkggPbEk - NTs1tSC1CKaPiYNTqoGx5PTNH9vfNYXt1fTI2Ri57W1dk3bLB5Oe1B677C7vZQ+UNDK97736 - GtxycMG/FZ1LPORF49uy7zIsCZ7yWaS86edL/cnPJy8yvPHwlfWjq88f3fuxPeLDtLv3DQwX - HQjYNnX2LFsJnrKN/Ie9Fuzg5Z80z6DQUyG07uzDQvtHUSKTnBo2Ki3xUmIpzkg01GIuKk4E - AGD+HDOSAgAA -X-CMS-MailID: 20200512184830eucas1p198b1439122e2da299c563726fe17f9ef -X-Msg-Generator: CA -X-RootMTR: 20200512184830eucas1p198b1439122e2da299c563726fe17f9ef -X-EPHeader: CA -CMS-TYPE: 201P -X-CMS-RootMailID: 20200512184830eucas1p198b1439122e2da299c563726fe17f9ef -References: <20200512184716.2869-1-s.nawrocki@samsung.com> - -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -From: Marek Szyprowski - -Create a non-cacheable mapping for the 0x600000000 physical memory region, -where MMIO registers for the PCIe XHCI controller are instantiated by the -PCIe bridge. - -Signed-off-by: Marek Szyprowski -Signed-off-by: Sylwester Nawrocki -Reviewed-by: Nicolas Saenz Julienne ---- -Changes since v2: - - fixed typo MAX_MAP_MAX_ENTRIES -> MEM_MAP_MAX_ENTRIES -Changes since v1: - - none. ---- - arch/arm/mach-bcm283x/init.c | 18 +++++++++++++++--- - 1 file changed, 15 insertions(+), 3 deletions(-) - -diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c -index 4295356..9f5bca3 100644 ---- a/arch/arm/mach-bcm283x/init.c -+++ b/arch/arm/mach-bcm283x/init.c -@@ -11,10 +11,15 @@ +@@ -12,10 +12,15 @@ #include #include @@ -1001,7 +41,7 @@ index 4295356..9f5bca3 100644 { .virt = 0x00000000UL, .phys = 0x00000000UL, -@@ -34,7 +39,7 @@ static struct mm_region bcm283x_mem_map[] = { +@@ -35,11 +40,11 @@ static struct mm_region bcm283x_mem_map[] = { } }; @@ -1010,21 +50,26 @@ index 4295356..9f5bca3 100644 { .virt = 0x00000000UL, .phys = 0x00000000UL, +- .size = 0xfe000000UL, ++ .size = 0xfc000000UL, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_INNER_SHARE + }, { @@ -49,6 +54,13 @@ static struct mm_region bcm2711_mem_map[] = { + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | PTE_BLOCK_NON_SHARE | PTE_BLOCK_PXN | PTE_BLOCK_UXN - }, { ++ }, { + .virt = BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS, + .phys = BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS, + .size = BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN -+ }, { + }, { /* List terminator */ 0, - } -@@ -71,7 +83,7 @@ static void _rpi_update_mem_map(struct mm_region *pd) +@@ -72,7 +84,7 @@ static void _rpi_update_mem_map(struct mm_region *pd) { int i; @@ -1033,638 +78,90 @@ index 4295356..9f5bca3 100644 mem_map[i].virt = pd[i].virt; mem_map[i].phys = pd[i].phys; mem_map[i].size = pd[i].size; - -From patchwork Tue May 12 18:47:13 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Sylwester Nawrocki -X-Patchwork-Id: 1288732 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 - header.s=mail20170921 header.b=OrqQU0UN; - dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 49M6KH0ykgz9sSW - for ; Wed, 13 May 2020 04:49:07 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 43B8081CF5; - Tue, 12 May 2020 20:48:39 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.b="OrqQU0UN"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id A041C81CD4; Tue, 12 May 2020 20:48:36 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com - [210.118.77.12]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id AF9CA81CB4 - for ; Tue, 12 May 2020 20:48:33 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=s.nawrocki@samsung.com -Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) - by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id - 20200512184833euoutp02024bfc004b3a38e7abe168cdd77f5dbb~OXGZmHDwG0461204612euoutp024 - for ; Tue, 12 May 2020 18:48:33 +0000 (GMT) -DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com - 20200512184833euoutp02024bfc004b3a38e7abe168cdd77f5dbb~OXGZmHDwG0461204612euoutp024 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; - s=mail20170921; t=1589309313; - bh=gVSWmpdQ36VgD8o/W/rduik6grJJCng+jGVfBPUAF8U=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=OrqQU0UN8Z7QKS+4Unt5PDDDw3i2iYhOJT4TdbEKloVbg23X7ARl1QJTAaFBBNzJT - 8AXLlGfGZj4mJo1gPBdQ/TOVDG7RDy4i/+ujixIckKJXDA+AjclrJdeEAcngq0Ulnn - NbOUAtPbCSEM0S/0RPnWwC90UpPAmcqGeCkVrazE= -Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by - eucas1p1.samsung.com (KnoxPortal) with ESMTP id - 20200512184833eucas1p1dc7466ebb73dd2f787e4253f171a3b9d~OXGZbAMzF2083120831eucas1p1w; - Tue, 12 May 2020 18:48:33 +0000 (GMT) -Received: from eucas1p2.samsung.com ( [182.198.249.207]) by - eusmges2new.samsung.com (EUCPMTA) with SMTP id F5.AA.60679.18FEABE5; Tue, 12 - May 2020 19:48:33 +0100 (BST) -Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by - eucas1p1.samsung.com (KnoxPortal) with ESMTPA id - 20200512184832eucas1p1b75fca7f5ed42e3cb38f98410f51f1ad~OXGZA7swA2288022880eucas1p17; - Tue, 12 May 2020 18:48:32 +0000 (GMT) -Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by - eusmtrp2.samsung.com (KnoxPortal) with ESMTP id - 20200512184832eusmtrp2c7ee802f60d431184d93a34cbe4b5279~OXGZAXbrx1654916549eusmtrp2o; - Tue, 12 May 2020 18:48:32 +0000 (GMT) -X-AuditID: cbfec7f4-0e5ff7000001ed07-fd-5ebaef8142ae -Received: from eusmtip1.samsung.com ( [203.254.199.221]) by - eusmgms2.samsung.com (EUCPMTA) with SMTP id A3.F8.07950.08FEABE5; Tue, 12 - May 2020 19:48:32 +0100 (BST) -Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by - eusmtip1.samsung.com (KnoxPortal) with ESMTPA id - 20200512184832eusmtip1ffa9d15a350dcc63557ad23be081cb76~OXGYefx_f2778327783eusmtip1V; - Tue, 12 May 2020 18:48:32 +0000 (GMT) -From: Sylwester Nawrocki -To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com -Cc: james.quinlan@broadcom.com, nsaenzjulienne@suse.de, sjg@chromium.org, - jh80.chung@samsung.com, m.szyprowski@samsung.com, b.zolnierkie@samsung.com, - Sylwester Nawrocki -Subject: [PATCH v3 6/9] linux/bitfield.h: Add primitives for manipulating - bitfields both in host- and fixed-endian -Date: Tue, 12 May 2020 20:47:13 +0200 -Message-Id: <20200512184716.2869-7-s.nawrocki@samsung.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200512184716.2869-1-s.nawrocki@samsung.com> -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrAKsWRmVeSWpSXmKPExsWy7djP87qN73fFGdy/yWqxccZ6VoupPfEW - e9/0s1nc+NXGarH2yF12izdtjYwWCyY/YbXYNms5m8XhN+2sFt+2bGO0eLu3k92B22PW/bNs - HrMbLrJ4zJt1gsVj56y77B5n7+xg9OjbsorRY/2Wqywem09XB3BEcdmkpOZklqUW6dslcGW8 - v/6XuWCuSMXm151sDYzHBboYOTkkBEwkrv3+z9LFyMUhJLCCUeLqqz+MEM4XRom+t9+gnM+M - Em3XbrLAtGy428wOkVjOKPG0YSMbXMvD1X3sIFVsAoYSvUf7GEFsEYEAiWs/p4GNYhY4yiix - Zv8fsFHCAiUSs/9OZgWxWQRUJZbeOQXWwCtgJfH35FwmiHXyEqs3HGAGsTkFrCWubz7GDDJI - QmAVu8S60+uhbnKRmL9tJTuELSzx6vgWKFtG4v/O+UwQDc2MEj27b7NDOBMYJe4fX8AIUWUt - cefcL6AnOIDu05RYv0sfIuwo0Xb0KTtIWEKAT+LGW0GQMDOQOWnbdGaIMK9ER5sQRLWKxO9V - 06FulpLofvIf6jQPiebdl6Ah1McocXD2TqYJjPKzEJYtYGRcxSieWlqcm55abJSXWq5XnJhb - XJqXrpecn7uJEZhuTv87/mUH464/SYcYBTgYlXh4GWp3xQmxJpYVV+YeYpTgYFYS4W3J3Bkn - xJuSWFmVWpQfX1Sak1p8iFGag0VJnNd40ctYIYH0xJLU7NTUgtQimCwTB6dUA6ODfX6J8vRP - kS+KX7b+sr18ZKLND/H+CxvqW3meFD769EE8d07Cr1VxR9y0XX2uzm7Ya7jTOKjbT6fT7NTx - ctavcrxzXr8sF/94MOp3a0neVQeztyzlwSmL/z0VS1j6k2HvYg9180Vfo4KOzvp5jX/63V7/ - KbVNp0sWCu+TUPHIenjq2JX2Xy5KLMUZiYZazEXFiQAsWJztMwMAAA== -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrHLMWRmVeSWpSXmKPExsVy+t/xu7oN73fFGWxZpGGxccZ6VoupPfEW - e9/0s1nc+NXGarH2yF12izdtjYwWCyY/YbXYNms5m8XhN+2sFt+2bGO0eLu3k92B22PW/bNs - HrMbLrJ4zJt1gsVj56y77B5n7+xg9OjbsorRY/2Wqywem09XB3BE6dkU5ZeWpCpk5BeX2CpF - G1oY6RlaWugZmVjqGRqbx1oZmSrp29mkpOZklqUW6dsl6GW8v/6XuWCuSMXm151sDYzHBboY - OTkkBEwkNtxtZu9i5OIQEljKKNG88z5jFyMHUEJKYn6LEkSNsMSfa11sILaQwCdGiQPbpUFs - NgFDid6jfYwgtohAiMSLo1eYQOYwC5xllFjU+YEVJCEsUCRxef86JhCbRUBVYumdU2ANvAJW - En9PzmWCWCAvsXrDAWYQm1PAWuL65mPMEMusJPZ8e8c2gZFvASPDKkaR1NLi3PTcYiO94sTc - 4tK8dL3k/NxNjMCw33bs55YdjF3vgg8xCnAwKvHwRtTvihNiTSwrrsw9xCjBwawkwtuSuTNO - iDclsbIqtSg/vqg0J7X4EKMp0FETmaVEk/OBMZlXEm9oamhuYWlobmxubGahJM7bIXAwRkgg - PbEkNTs1tSC1CKaPiYNTqoGRL+bltk22/7+9+eEy57X8YZkID4Uj5VoKoSuTez9IRTw9cJA9 - f+mEOlbeZyvTnFlM/r3fsWl2FUuAYz97waprdvs3vpx9QyUl8rbyZJloPYMp4k5TRTm2vecX - qjC8NG3F+bgO9kV25i0VwYy7Fnjm/ZmhHZI93Y7bduZik0DpvXJcJvwfj8opsRRnJBpqMRcV - JwIAdir705ECAAA= -X-CMS-MailID: 20200512184832eucas1p1b75fca7f5ed42e3cb38f98410f51f1ad -X-Msg-Generator: CA -X-RootMTR: 20200512184832eucas1p1b75fca7f5ed42e3cb38f98410f51f1ad -X-EPHeader: CA -CMS-TYPE: 201P -X-CMS-RootMailID: 20200512184832eucas1p1b75fca7f5ed42e3cb38f98410f51f1ad -References: <20200512184716.2869-1-s.nawrocki@samsung.com> - -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -From: Nicolas Saenz Julienne - -Imports Al Viro's original Linux commit 00b0c9b82663a, which contains -an in depth explanation and two fixes from Johannes Berg: - e7d4a95da86e0 "bitfield: fix *_encode_bits()", - 37a3862e12382 "bitfield: add u8 helpers". - -Signed-off-by: Nicolas Saenz Julienne -[s.nawrocki: added empty lines between functions and macros] -Signed-off-by: Sylwester Nawrocki ---- -Changes since v1: - - added empty lines between functions and macros. - -Changes since RFC: - - new patch. ---- - include/linux/bitfield.h | 50 ++++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 50 insertions(+) - -diff --git a/include/linux/bitfield.h b/include/linux/bitfield.h -index 8b9d6ff..7acba4c 100644 ---- a/include/linux/bitfield.h -+++ b/include/linux/bitfield.h -@@ -103,4 +103,54 @@ - (typeof(_mask))(((_reg) & (_mask)) >> __bf_shf(_mask)); \ - }) - -+extern void __compiletime_error("value doesn't fit into mask") -+__field_overflow(void); -+extern void __compiletime_error("bad bitfield mask") -+__bad_mask(void); -+static __always_inline u64 field_multiplier(u64 field) -+{ -+ if ((field | (field - 1)) & ((field | (field - 1)) + 1)) -+ __bad_mask(); -+ return field & -field; -+} -+static __always_inline u64 field_mask(u64 field) -+{ -+ return field / field_multiplier(field); -+} -+ -+#define ____MAKE_OP(type,base,to,from) \ -+static __always_inline __##type type##_encode_bits(base v, base field) \ -+{ \ -+ if (__builtin_constant_p(v) && (v & ~field_mask(field))) \ -+ __field_overflow(); \ -+ return to((v & field_mask(field)) * field_multiplier(field)); \ -+} \ -+static __always_inline __##type type##_replace_bits(__##type old, \ -+ base val, base field) \ -+{ \ -+ return (old & ~to(field)) | type##_encode_bits(val, field); \ -+} \ -+static __always_inline void type##p_replace_bits(__##type *p, \ -+ base val, base field) \ -+{ \ -+ *p = (*p & ~to(field)) | type##_encode_bits(val, field); \ -+} \ -+static __always_inline base type##_get_bits(__##type v, base field) \ -+{ \ -+ return (from(v) & field)/field_multiplier(field); \ -+} -+ -+#define __MAKE_OP(size) \ -+ ____MAKE_OP(le##size,u##size,cpu_to_le##size,le##size##_to_cpu) \ -+ ____MAKE_OP(be##size,u##size,cpu_to_be##size,be##size##_to_cpu) \ -+ ____MAKE_OP(u##size,u##size,,) -+ -+____MAKE_OP(u8,u8,,) -+__MAKE_OP(16) -+__MAKE_OP(32) -+__MAKE_OP(64) -+ -+#undef __MAKE_OP -+#undef ____MAKE_OP -+ - #endif - -From patchwork Tue May 12 18:47:14 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Sylwester Nawrocki -X-Patchwork-Id: 1288733 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 - header.s=mail20170921 header.b=Fm50fcBL; - dkim-atps=neutral -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 49M6KV3jXsz9sRR - for ; Wed, 13 May 2020 04:49:18 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 7663481CC1; - Tue, 12 May 2020 20:48:44 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.b="Fm50fcBL"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 497CE81CE3; Tue, 12 May 2020 20:48:41 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com - [210.118.77.11]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 53C8F81CD9 - for ; Tue, 12 May 2020 20:48:38 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=s.nawrocki@samsung.com -Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) - by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id - 20200512184838euoutp019e25bda09342202a0eda043f595e3c22~OXGd7TgBd0706107061euoutp01m - for ; Tue, 12 May 2020 18:48:38 +0000 (GMT) -DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com - 20200512184838euoutp019e25bda09342202a0eda043f595e3c22~OXGd7TgBd0706107061euoutp01m -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; - s=mail20170921; t=1589309318; - bh=HzMTU/TXuht/pqPHaK0Ik2xR+VGQDcf9rtO4VMSyKJM=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=Fm50fcBLGZyjlJzMo4Jk2kL21fNnnNiYQPGuvZ9uYJHcoSJzOfuJZKLNBoAFhG6Q1 - 7NBIjapXv/0ZFqIcyF8vg14dGk5aNjSHNtjyeLaSxxf0+jcM23co7gshLtNg2WB2Jv - 1m1YEKUU/fA0BznXct760bitBngMWoUq+d7qDQHM= -Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by - eucas1p1.samsung.com (KnoxPortal) with ESMTP id - 20200512184836eucas1p1135921d83070d86d6e8b1bb64b8f8be4~OXGczeB0p2080520805eucas1p1w; - Tue, 12 May 2020 18:48:36 +0000 (GMT) -Received: from eucas1p2.samsung.com ( [182.198.249.207]) by - eusmges3new.samsung.com (EUCPMTA) with SMTP id 7F.03.60698.48FEABE5; Tue, 12 - May 2020 19:48:36 +0100 (BST) -Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by - eucas1p2.samsung.com (KnoxPortal) with ESMTPA id - 20200512184836eucas1p2f357a332cd99d6e287a74405d75c0985~OXGcRwgxc0943909439eucas1p25; - Tue, 12 May 2020 18:48:36 +0000 (GMT) -Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by - eusmtrp2.samsung.com (KnoxPortal) with ESMTP id - 20200512184836eusmtrp2d133993e54b8ae3b6e45209e4cf24ca5~OXGcRC2XF1654116541eusmtrp2q; - Tue, 12 May 2020 18:48:36 +0000 (GMT) -X-AuditID: cbfec7f5-a0fff7000001ed1a-92-5ebaef84302e -Received: from eusmtip1.samsung.com ( [203.254.199.221]) by - eusmgms2.samsung.com (EUCPMTA) with SMTP id 64.F8.07950.48FEABE5; Tue, 12 - May 2020 19:48:36 +0100 (BST) -Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by - eusmtip1.samsung.com (KnoxPortal) with ESMTPA id - 20200512184835eusmtip109d2fc69bebbcdfc5800da0da0dc6fc3~OXGbx_UD72778327783eusmtip1W; - Tue, 12 May 2020 18:48:35 +0000 (GMT) -From: Sylwester Nawrocki -To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com -Cc: james.quinlan@broadcom.com, nsaenzjulienne@suse.de, sjg@chromium.org, - jh80.chung@samsung.com, m.szyprowski@samsung.com, b.zolnierkie@samsung.com, - Sylwester Nawrocki -Subject: [PATCH v3 7/9] pci: Add some PCI Express capability register offset - definitions -Date: Tue, 12 May 2020 20:47:14 +0200 -Message-Id: <20200512184716.2869-8-s.nawrocki@samsung.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200512184716.2869-1-s.nawrocki@samsung.com> -X-Brightmail-Tracker: H4sIAAAAAAAAA0WSfUhTURjGObt323U6uV4FDysQhoUFaaLgJUUqpW4QaP1lxrSZFzXnB7vT - siBXyTS/MXQyQ6dBs6lpOYabzGqls0Qtxa9STDHF0kLLcqYt59X67/c+53nO+3A4GELUckVY - SrqClqdLZWKeADX22AeP5H0zxx1VLviTT6pbuWRlcTxpWSrjkeMbKi7Z8mqKTy6pbgFSe2+O - Sxo1Oh75cimfS/40GAG5bLnLP+5Kaab7eVSN8h1K1Wp6UcqkmeJT/ZMdgCo16AHVahhBqfa+ - G9FYrCAskZalZNPygPBLguTBolkks8v9mvK1GlGCdddC4IJBPBh+LankFwIBRuCNAFavlvHY - 4QeAM58+ok4XgX8HULUQtZeoaejisCYdgGrdEPdfQmfJ5zhdPDwQlnSXAid74dFw1F4FnCYE - 7waw+dnmzrWeeCwsGOjdCaD4AWhvuo84WYgfg1vvGzjsOh/Y1PZ8R3fBQ+FYew/C6g/5cP6B - H8uRcO2LhceyJ/xsM/BZ3g8dprqdqhC/A2Bx5wc+O5QDOG3TAtYVCicHNrbT2Ha9Q7DVHMDK - J+DKozXglCHuDseXPZwyso0VRjXCykJYoCJYty/8rVfvVhbBojkHyjIF+yre7j5pKYCWF/1o - OfDR/F+mBUAPvOksJi2JZoLS6av+jDSNyUpP8r+ckfYUbP+avj+2tQ7QtZlgBTgGxG7CmFxz - HMGVZjM5aVYAMUTsJcxLMcURwkRpznVanhEvz5LRjBXsw1CxtzCoYVFC4ElSBZ1K05m0fO+U - g7mIlOCg92jfROiKbSLLrf4cdabRivg9doQREZ0z4cGySNFJ02xeSU3RWcEUNbKuNtd7RNAJ - FaYW/akoEedmSArhMNpDtAXJt+fDJb+ar2z4etddOJ9rLpD0SqrGKmN835we2qoYlcQr/Vwj - U1eNwQp1m+bicEeTTr94UVESmz8cJ0aZZGngYUTOSP8C7G85NjEDAAA= -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrPLMWRmVeSWpSXmKPExsVy+t/xu7ot73fFGTRO47HYOGM9q8XUnniL - vW/62Sxu/GpjtVh75C67xZu2RkaLBZOfsFpsm7WczeLwm3ZWi29btjFavN3bye7A7THr/lk2 - j9kNF1k85s06weKxc9Zddo+zd3YwevRtWcXosX7LVRaPzaerAzii9GyK8ktLUhUy8otLbJWi - DS2M9AwtLfSMTCz1DI3NY62MTJX07WxSUnMyy1KL9O0S9DLOdz9iLtjHV9FwcjpzA+MP7i5G - Tg4JAROJ2Yv2MXUxcnEICSxllHj+p5+ti5EDKCElMb9FCaJGWOLPtS42iJpPjBITXm1gBEmw - CRhK9B7tA7NFBEIkXhy9AjaIWeAso8Sizg+sIAlhgQiJHXOusoDYLAKqEj9Xz2EGsXkFrCT+ - 3lrEBLFBXmL1hgNgcU4Ba4nrm4+B2UJANXu+vWObwMi3gJFhFaNIamlxbnpusZFecWJucWle - ul5yfu4mRmDgbzv2c8sOxq53wYcYBTgYlXh4I+p3xQmxJpYVV+YeYpTgYFYS4W3J3BknxJuS - WFmVWpQfX1Sak1p8iNEU6KiJzFKiyfnAqMwriTc0NTS3sDQ0NzY3NrNQEuftEDgYIySQnliS - mp2aWpBaBNPHxMEp1cCY/4XD7PPi+S+2KkXMPlP5dGW7dVZWdvNlA7N3Sw6+ZOOuq5RnEq38 - /Hri8TyzzOI1Zop5dQadajuPpBekXn9f6P/3t+Mlo5d+fKvCcsUu+u4L59j6PlMo6vszCVXn - A0d2PnB/kCX47mLjVS3XtoS1P7J82hflcfkF+dxsDLSex/XRxFGj5roSS3FGoqEWc1FxIgBl - vUv9kgIAAA== -X-CMS-MailID: 20200512184836eucas1p2f357a332cd99d6e287a74405d75c0985 -X-Msg-Generator: CA -X-RootMTR: 20200512184836eucas1p2f357a332cd99d6e287a74405d75c0985 -X-EPHeader: CA -CMS-TYPE: 201P -X-CMS-RootMailID: 20200512184836eucas1p2f357a332cd99d6e287a74405d75c0985 -References: <20200512184716.2869-1-s.nawrocki@samsung.com> - -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -Add PCI Express capability definitions required by the Broadcom -STB PCIe controller driver. - -Signed-off-by: Sylwester Nawrocki -Reviewed-by: Bin Meng -Reviewed-by: Nicolas Saenz Julienne ---- -Changes since v2: - - added Current Link Speed defines. -Changes since v1: - - none. -Changes since RFC: - - ensure the entries are added in order, sorted by ascending - address values. ---- - include/pci.h | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/include/pci.h b/include/pci.h -index dfdbb32..ff5f620 100644 ---- a/include/pci.h -+++ b/include/pci.h -@@ -479,11 +479,20 @@ - #define PCI_EXP_DEVCTL 8 /* Device Control */ - #define PCI_EXP_DEVCTL_BCR_FLR 0x8000 /* Bridge Configuration Retry / FLR */ - #define PCI_EXP_LNKCAP 12 /* Link Capabilities */ -+#define PCI_EXP_LNKCAP_SLS 0x0000000f /* Supported Link Speeds */ -+#define PCI_EXP_LNKCAP_MLW 0x000003f0 /* Maximum Link Width */ - #define PCI_EXP_LNKCAP_DLLLARC 0x00100000 /* Data Link Layer Link Active Reporting Capable */ - #define PCI_EXP_LNKSTA 18 /* Link Status */ -+#define PCI_EXP_LNKSTA_CLS 0x000f /* Current Link Speed */ -+#define PCI_EXP_LNKSTA_CLS_2_5GB 0x0001 /* Current Link Speed 2.5GT/s */ -+#define PCI_EXP_LNKSTA_CLS_5_0GB 0x0002 /* Current Link Speed 5.0GT/s */ -+#define PCI_EXP_LNKSTA_CLS_8_0GB 0x0003 /* Current Link Speed 8.0GT/s */ -+#define PCI_EXP_LNKSTA_NLW 0x03f0 /* Negotiated Link Width */ -+#define PCI_EXP_LNKSTA_NLW_SHIFT 4 /* start of NLW mask in link status */ - #define PCI_EXP_LNKSTA_DLLLA 0x2000 /* Data Link Layer Link Active */ - #define PCI_EXP_SLTCAP 20 /* Slot Capabilities */ - #define PCI_EXP_SLTCAP_PSN 0xfff80000 /* Physical Slot Number */ -+#define PCI_EXP_LNKCTL2 48 /* Link Control 2 */ - - /* Include the ID list */ - - -From patchwork Tue May 12 18:47:15 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Sylwester Nawrocki -X-Patchwork-Id: 1288734 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 - header.s=mail20170921 header.b=BIPbrQ8g; - dkim-atps=neutral -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 49M6Kj3M0tz9sRR - for ; Wed, 13 May 2020 04:49:29 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 185C181CF7; - Tue, 12 May 2020 20:48:49 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.b="BIPbrQ8g"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 26C8D81D0A; Tue, 12 May 2020 20:48:45 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com - [210.118.77.12]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 1403981CFD - for ; Tue, 12 May 2020 20:48:41 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=s.nawrocki@samsung.com -Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) - by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id - 20200512184840euoutp0291a9b700643a42d241b5e145554cb765~OXGfyehRC0461204612euoutp027 - for ; Tue, 12 May 2020 18:48:40 +0000 (GMT) -DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com - 20200512184840euoutp0291a9b700643a42d241b5e145554cb765~OXGfyehRC0461204612euoutp027 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; - s=mail20170921; t=1589309320; - bh=TE9MyxK4mFntVW0fX+JmwIIwSpgKd4htbD5XCXxsM1I=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=BIPbrQ8gtigJfiy8ORfo+Qpp6HkymthVnUJBjoJlhoRKQAFXeIndDOOroFN8+Givz - 5kQXtvIJNzzZLnA1WeEtInnFBydhbpbY34BCuDFzq0lH7QCPH4ZHj7ScIRySxzJNEt - gdGeQ4yOBI/arQQSbBp77pL23dh1EFNbN/7gAdNw= -Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by - eucas1p2.samsung.com (KnoxPortal) with ESMTP id - 20200512184839eucas1p2fd05e5c1731867685fef1171042b653c~OXGfJVP1W2380523805eucas1p2c; - Tue, 12 May 2020 18:48:39 +0000 (GMT) -Received: from eucas1p1.samsung.com ( [182.198.249.206]) by - eusmges1new.samsung.com (EUCPMTA) with SMTP id 0F.FF.61286.78FEABE5; Tue, 12 - May 2020 19:48:39 +0100 (BST) -Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by - eucas1p2.samsung.com (KnoxPortal) with ESMTPA id - 20200512184838eucas1p249588f9ee76dcb5a10209fcb7de01fae~OXGegIxSM0944309443eucas1p2t; - Tue, 12 May 2020 18:48:38 +0000 (GMT) -Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by - eusmtrp1.samsung.com (KnoxPortal) with ESMTP id - 20200512184838eusmtrp1b8fcb72a4b1949c5b25111f77829cebe~OXGefeG9e0405704057eusmtrp1W; - Tue, 12 May 2020 18:48:38 +0000 (GMT) -X-AuditID: cbfec7f2-f0bff7000001ef66-94-5ebaef873740 -Received: from eusmtip1.samsung.com ( [203.254.199.221]) by - eusmgms1.samsung.com (EUCPMTA) with SMTP id 9E.DA.08375.68FEABE5; Tue, 12 - May 2020 19:48:38 +0100 (BST) -Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by - eusmtip1.samsung.com (KnoxPortal) with ESMTPA id - 20200512184838eusmtip1e590ff27b66706ef16e7b7683ec1cc3d~OXGd_Ln563146531465eusmtip1X; - Tue, 12 May 2020 18:48:38 +0000 (GMT) -From: Sylwester Nawrocki -To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com -Cc: james.quinlan@broadcom.com, nsaenzjulienne@suse.de, sjg@chromium.org, - jh80.chung@samsung.com, m.szyprowski@samsung.com, b.zolnierkie@samsung.com, - Sylwester Nawrocki -Subject: [PATCH v3 8/9] pci: Add driver for Broadcom BCM2711 SoC PCIe - controller -Date: Tue, 12 May 2020 20:47:15 +0200 -Message-Id: <20200512184716.2869-9-s.nawrocki@samsung.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200512184716.2869-1-s.nawrocki@samsung.com> -X-Brightmail-Tracker: H4sIAAAAAAAAA0WSe0hTcRTH/Xkfu65m12n5S4XhKqgsHyh40bSC/rgRyQgMKpyueZmWTtnU - 0iiMytmcTrdKnWBm4TNdzTVfmLbyEaI9wLJSJBhCqQSViU5Wu95J/33O95zvOYfDIRDhfSyI - yFTmMSqlLEuM81HbyOrkQc2PPmnkQjdJPa0xY9RdXSo1sKjHqem1EozqeDXLoxZLrgOqwejA - KJupGadeLmow6o/VBqilgdu8I1to09wETtcVv0PpetMYSveaZnn0xEwPoCusbYA2W6dQumv8 - ioQ4yz+UzmRlFjCqiMQ0fkadqwPJfWgBl/WvzWgxMFUBLfAhIBkDn3VrUJaFZAuAL+xxWsB3 - 828AHxtmcC74BeCKed5702EsH0O5RDOAJY9WPHa3RdNygmWcjILlwxUbIwJICfyweg+wBoQc - drcdXHcbCMKfPAXN1sNsDUrugYsdeoRlARkHay1TCDdMBNufDG2wDxkPP3aNIGwfSDbx4ODQ - W89Gx+Cas8nD/vD7qJXHcQgcN+pQznADQF3/Fx4XVAI4N9rguUA8nJlcw9mNEHIfNPdFcPJR - 6HLewlgZkr5wesmPlRE3GmzVCCcLYGmJkKveDZ1t1Z4VgmCZ4y/KMQ2nmzu9uWNVAFjb/ACp - BCLT/2ENALSBQCZfna1g1FFK5lK4WpatzlcqwuU52Rbgfptx1+jPHrD8/rwdkAQQbxV4Xe2T - CjFZgbow2w4ggYgDBDcze6VCQbqssIhR5aSq8rMYtR0EE6g4UBDd+C1FSCpkecxFhsllVJtZ - b8InqBh0++ZJtMtarcsiSIqxDPkZOlun8OBtjuQDjV7zocvHd+iSQyIXUgoLqhrl1zD+emd0 - GhlW018lb2/MfX4nLKe+CMZLkwYUVlqpD3WezqyN3RlSHphgM+2dKN31OUG+XeI4+fWTwUdU - UI/56USCC3gkk2g8FyttLVO9OWPOE6PqDFnUfkSllv0DEe0vVDIDAAA= -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpkkeLIzCtJLcpLzFFi42I5/e/4Xd2297viDGbcUrbYOGM9q8XUnniL - vW/62Sxu/GpjtVh75C67xZu2RkaLBZOfsFpsm7WczeLwm3ZWi29btjFavN3bye7A7THr/lk2 - j9kNF1k85s06weKxc9Zddo+zd3YwevRtWcXosX7LVRaPzaerAzii9GyK8ktLUhUy8otLbJWi - DS2M9AwtLfSMTCz1DI3NY62MTJX07WxSUnMyy1KL9O0S9DJm/1vLXLB4E2NF/8n1LA2MsyYy - djFyckgImEhM7j3B0sXIxSEksJRR4tmUu+xdjBxACSmJ+S1KEDXCEn+udbFB1HxilOib8JkZ - JMEmYCjRe7QPbJCIQIjEi6NXmECKmAXOMkos6vzACpIQFgiQuLD+PlgDi4CqxJu1/WA2r4CV - xMxNV5khNshLrN5wAMzmFLCWuL75GJgtBFSz59s7tgmMfAsYGVYxiqSWFuem5xYb6hUn5haX - 5qXrJefnbmIEBv+2Yz8372C8tDH4EKMAB6MSDy9D7a44IdbEsuLK3EOMEhzMSiK8LZk744R4 - UxIrq1KL8uOLSnNSiw8xmgIdNZFZSjQ5HxiZeSXxhqaG5haWhubG5sZmFkrivB0CB2OEBNIT - S1KzU1MLUotg+pg4OKUaGJPlvkyzyk+preH72cpxeeuD0O6oZUuNDc6o7P/6ZEOS840NPztO - zFocIGBSrq8toH7DTqlo+xFl5cUxn++VzqmJ1dnc+TTr4cFVZVYcppGhk4w3f/jD9fxs3+WL - Wnb8zSL+Ns2veIuTnb2qf8vebr9gOEl60xZ9E5XA+gz5i8fX7pF+yWCWpsRSnJFoqMVcVJwI - AL42I8OUAgAA -X-CMS-MailID: 20200512184838eucas1p249588f9ee76dcb5a10209fcb7de01fae -X-Msg-Generator: CA -X-RootMTR: 20200512184838eucas1p249588f9ee76dcb5a10209fcb7de01fae -X-EPHeader: CA -CMS-TYPE: 201P -X-CMS-RootMailID: 20200512184838eucas1p249588f9ee76dcb5a10209fcb7de01fae -References: <20200512184716.2869-1-s.nawrocki@samsung.com> - -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -This patch adds basic driver PCI Express controller found on Broadcom -set-top-box SoCs, e.g. BCM2711. -The code is based on Linux upstream driver (pcie-brcmstb.c) with MSI -handling removed. The inbound access memory region is not currently -parsed from dma-ranges DT property and a fixed 3GB region is used. - -The patch has been tested on RPI4 board, i.e. on BCM2711 SoC with VL805 -USB Host Controller. - -Signed-off-by: Nicolas Saenz Julienne -Signed-off-by: Sylwester Nawrocki ---- -Changes since v2: - - removed MDO_RD_DONE, MDIO_WT_DONE macro definitions, - - updated the Kconfig entry help text, - - reordered #include entries to match the coding style, - - s/udev/dev, - - s/ENODEV/EINVAL in brcm_pcie_probe() and brcm_pcie_config_address() - functions, - - Simplified brcm_pcie_mdio_{read, write} functions (readl_poll_timeout), - - shortened register bit fields macro definitions, - - dropped brcm_pcie_perst_set() and brcm_pcie_bridge_sw_init_set() - function in favour of direct clrbits_le32/setbits_le32 calls, - - use setbits_le32/clrbits_le32/clrsetbits_le32 instead of - readl(), u32p_replace_bits(), writel() sequence - - simplified brcm_pcie_config_address(), brcm_pcie_set_gen() functions, - - changed reset pulse delay to 100 us, - - Replaced FIELD_GET() with open coded bitwise operations, - - brcm_cpie_cfg_index() function merged into brcm_pcie_config_address(), - - use standard PCI PCI_EXP_LNKSTA_CLS_* link speed defines - - added kernel-doc function comments. - -Changes since v1: - - fixed argument in brcm_pcie_set_ssc() function call, - - changed rc_bar2_size assignment to value 0xC0000000, as in upstream - devicetree. -Changes since RFC: - - reworked to align with current Linux mainline version and u-boot - driver by Nicolas Saenz Julienne. ---- - drivers/pci/Kconfig | 9 + - drivers/pci/Makefile | 1 + - drivers/pci/pcie_brcmstb.c | 623 +++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 633 insertions(+) - create mode 100644 drivers/pci/pcie_brcmstb.c - +diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig +index f0301dc8bc..b42efe6072 100644 +--- a/configs/rpi_4_defconfig ++++ b/configs/rpi_4_defconfig +@@ -6,6 +6,8 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000 + CONFIG_ENV_SIZE=0x4000 + CONFIG_DISTRO_DEFAULTS=y + CONFIG_OF_BOARD_SETUP=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start;" + CONFIG_MISC_INIT_R=y + # CONFIG_DISPLAY_CPUINFO is not set + # CONFIG_DISPLAY_BOARDINFO is not set +@@ -13,6 +15,8 @@ CONFIG_SYS_PROMPT="U-Boot> " + CONFIG_CMD_DFU=y + CONFIG_CMD_GPIO=y + CONFIG_CMD_MMC=y ++CONFIG_CMD_PCI=y ++CONFIG_CMD_USB=y + CONFIG_CMD_FS_UUID=y + CONFIG_OF_BOARD=y + CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" +@@ -26,12 +30,17 @@ CONFIG_MMC_SDHCI_SDMA=y + CONFIG_MMC_SDHCI_BCM2835=y + CONFIG_DM_ETH=y + CONFIG_BCMGENET=y ++CONFIG_PCI=y ++CONFIG_DM_PCI=y ++CONFIG_PCI_BRCMSTB=y + CONFIG_PINCTRL=y + # CONFIG_PINCTRL_GENERIC is not set + # CONFIG_REQUIRE_SERIAL_CONSOLE is not set + CONFIG_USB=y + CONFIG_DM_USB=y + CONFIG_DM_USB_GADGET=y ++CONFIG_USB_XHCI_HCD=y ++CONFIG_USB_XHCI_PCI=y + CONFIG_USB_GADGET=y + CONFIG_USB_GADGET_MANUFACTURER="FSL" + CONFIG_USB_GADGET_VENDOR_NUM=0x0525 +diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig +index d16c2388af..0feea7f0be 100644 +--- a/configs/rpi_arm64_defconfig ++++ b/configs/rpi_arm64_defconfig +@@ -7,13 +7,14 @@ CONFIG_ENV_SIZE=0x4000 + CONFIG_DISTRO_DEFAULTS=y + CONFIG_OF_BOARD_SETUP=y + CONFIG_USE_PREBOOT=y +-CONFIG_PREBOOT="usb start" ++CONFIG_PREBOOT="pci enum; usb start;" + CONFIG_MISC_INIT_R=y + # CONFIG_DISPLAY_CPUINFO is not set + # CONFIG_DISPLAY_BOARDINFO is not set + CONFIG_SYS_PROMPT="U-Boot> " + CONFIG_CMD_GPIO=y + CONFIG_CMD_MMC=y ++CONFIG_CMD_PCI=y + CONFIG_CMD_USB=y + CONFIG_CMD_FS_UUID=y + CONFIG_OF_BOARD=y +@@ -26,11 +27,16 @@ CONFIG_MMC_SDHCI_SDMA=y + CONFIG_MMC_SDHCI_BCM2835=y + CONFIG_DM_ETH=y + CONFIG_BCMGENET=y ++CONFIG_PCI=y ++CONFIG_DM_PCI=y ++CONFIG_PCI_BRCMSTB=y + CONFIG_PINCTRL=y + # CONFIG_PINCTRL_GENERIC is not set + # CONFIG_REQUIRE_SERIAL_CONSOLE is not set + CONFIG_USB=y + CONFIG_DM_USB=y ++CONFIG_USB_XHCI_HCD=y ++CONFIG_USB_XHCI_PCI=y + CONFIG_USB_DWC2=y + CONFIG_USB_KEYBOARD=y + CONFIG_USB_HOST_ETHER=y diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig -index 437cd9a..543bd46 100644 +index 6d8c22aacf..7e1e51d9ea 100644 --- a/drivers/pci/Kconfig +++ b/drivers/pci/Kconfig -@@ -197,4 +197,13 @@ config PCIE_MEDIATEK - Say Y here if you want to enable Gen2 PCIe controller, - which could be found on MT7623 SoC family. +@@ -205,4 +205,13 @@ config PCIE_ROCKCHIP + Say Y here if you want to enable PCIe controller support on + Rockchip SoCs. +config PCI_BRCMSTB + bool "Broadcom STB PCIe controller" @@ -1677,17 +174,37 @@ index 437cd9a..543bd46 100644 + of the controller. endif diff --git a/drivers/pci/Makefile b/drivers/pci/Makefile -index c051ecc..3e53b1f 100644 +index 955351c5c2..3e1ff417d7 100644 --- a/drivers/pci/Makefile +++ b/drivers/pci/Makefile -@@ -43,3 +43,4 @@ obj-$(CONFIG_PCI_PHYTIUM) += pcie_phytium.o +@@ -43,4 +43,5 @@ obj-$(CONFIG_PCI_PHYTIUM) += pcie_phytium.o obj-$(CONFIG_PCIE_INTEL_FPGA) += pcie_intel_fpga.o obj-$(CONFIG_PCI_KEYSTONE) += pcie_dw_ti.o obj-$(CONFIG_PCIE_MEDIATEK) += pcie_mediatek.o +obj-$(CONFIG_PCI_BRCMSTB) += pcie_brcmstb.o + obj-$(CONFIG_PCIE_ROCKCHIP) += pcie_rockchip.o pcie_rockchip_phy.o +diff --git a/drivers/pci/pci-rcar-gen3.c b/drivers/pci/pci-rcar-gen3.c +index df7b37a592..1f51854ccc 100644 +--- a/drivers/pci/pci-rcar-gen3.c ++++ b/drivers/pci/pci-rcar-gen3.c +@@ -118,14 +118,6 @@ + #define RCAR_PCI_MAX_RESOURCES 4 + #define MAX_NR_INBOUND_MAPS 6 + +-#define PCI_EXP_FLAGS 2 /* Capabilities register */ +-#define PCI_EXP_FLAGS_TYPE 0x00f0 /* Device/Port type */ +-#define PCI_EXP_TYPE_ROOT_PORT 0x4 /* Root Port */ +-#define PCI_EXP_LNKCAP 12 /* Link Capabilities */ +-#define PCI_EXP_LNKCAP_DLLLARC 0x00100000 /* Data Link Layer Link Active Reporting Capable */ +-#define PCI_EXP_SLTCAP 20 /* Slot Capabilities */ +-#define PCI_EXP_SLTCAP_PSN 0xfff80000 /* Physical Slot Number */ +- + enum { + RCAR_PCI_ACCESS_READ, + RCAR_PCI_ACCESS_WRITE, diff --git a/drivers/pci/pcie_brcmstb.c b/drivers/pci/pcie_brcmstb.c new file mode 100644 -index 0000000..dade79e +index 0000000000..dade79e9c8 --- /dev/null +++ b/drivers/pci/pcie_brcmstb.c @@ -0,0 +1,623 @@ @@ -2314,213 +831,163 @@ index 0000000..dade79e + .ofdata_to_platdata = brcm_pcie_ofdata_to_platdata, + .priv_auto_alloc_size = sizeof(struct brcm_pcie), +}; +diff --git a/drivers/pci/pcie_intel_fpga.c b/drivers/pci/pcie_intel_fpga.c +index aa1903e547..9f102c64c6 100644 +--- a/drivers/pci/pcie_intel_fpga.c ++++ b/drivers/pci/pcie_intel_fpga.c +@@ -67,9 +67,6 @@ + #define IS_ROOT_PORT(pcie, bdf) \ + ((PCI_BUS(bdf) == pcie->first_busno) ? true : false) + +-#define PCI_EXP_LNKSTA 18 /* Link Status */ +-#define PCI_EXP_LNKSTA_DLLLA 0x2000 /* Data Link Layer Link Active */ +- + /** + * struct intel_fpga_pcie - Intel FPGA PCIe controller state + * @bus: Pointer to the PCI bus +diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c +index 2d968aafb0..f446520528 100644 +--- a/drivers/usb/host/xhci-mem.c ++++ b/drivers/usb/host/xhci-mem.c +@@ -395,6 +395,9 @@ static int xhci_scratchpad_alloc(struct xhci_ctrl *ctrl) + scratchpad->sp_array[i] = cpu_to_le64(ptr); + } + ++ xhci_flush_cache((uintptr_t)scratchpad->sp_array, ++ sizeof(u64) * num_sp); ++ + return 0; + + fail_sp3: +diff --git a/include/linux/bitfield.h b/include/linux/bitfield.h +index 8b9d6fff00..7ad8b088ed 100644 +--- a/include/linux/bitfield.h ++++ b/include/linux/bitfield.h +@@ -103,4 +103,56 @@ + (typeof(_mask))(((_reg) & (_mask)) >> __bf_shf(_mask)); \ + }) + ++extern void __compiletime_error("value doesn't fit into mask") ++__field_overflow(void); ++extern void __compiletime_error("bad bitfield mask") ++__bad_mask(void); ++ ++static __always_inline u64 field_multiplier(u64 field) ++{ ++ if ((field | (field - 1)) & ((field | (field - 1)) + 1)) ++ __bad_mask(); ++ return field & -field; ++} ++ ++static __always_inline u64 field_mask(u64 field) ++{ ++ return field / field_multiplier(field); ++} ++ ++#define ____MAKE_OP(type, base, to, from) \ ++static __always_inline __##type type##_encode_bits(base v, base field) \ ++{ \ ++ if (__builtin_constant_p(v) && (v & ~field_mask(field))) \ ++ __field_overflow(); \ ++ return to((v & field_mask(field)) * field_multiplier(field)); \ ++} \ ++static __always_inline __##type type##_replace_bits(__##type old, \ ++ base val, base field) \ ++{ \ ++ return (old & ~to(field)) | type##_encode_bits(val, field); \ ++} \ ++static __always_inline void type##p_replace_bits(__##type * p, \ ++ base val, base field) \ ++{ \ ++ *p = (*p & ~to(field)) | type##_encode_bits(val, field); \ ++} \ ++static __always_inline base type##_get_bits(__##type v, base field) \ ++{ \ ++ return (from(v) & field) / field_multiplier(field); \ ++} ++ ++#define __MAKE_OP(size) \ ++ ____MAKE_OP(le##size, u##size, cpu_to_le##size, le##size##_to_cpu) \ ++ ____MAKE_OP(be##size, u##size, cpu_to_be##size, be##size##_to_cpu) \ ++ ____MAKE_OP(u##size, u##size, ,) ++ ++____MAKE_OP(u8, u8, ,) ++__MAKE_OP(16) ++__MAKE_OP(32) ++__MAKE_OP(64) ++ ++#undef __MAKE_OP ++#undef ____MAKE_OP ++ + #endif +diff --git a/include/pci.h b/include/pci.h +index 19c9244b94..281f353916 100644 +--- a/include/pci.h ++++ b/include/pci.h +@@ -471,10 +471,28 @@ + #define PCI_EA_FIELD_MASK 0xfffffffc /* For Base & Max Offset */ + + /* PCI Express capabilities */ ++#define PCI_EXP_FLAGS 2 /* Capabilities register */ ++#define PCI_EXP_FLAGS_TYPE 0x00f0 /* Device/Port type */ ++#define PCI_EXP_TYPE_ROOT_PORT 0x4 /* Root Port */ + #define PCI_EXP_DEVCAP 4 /* Device capabilities */ +-#define PCI_EXP_DEVCAP_FLR 0x10000000 /* Function Level Reset */ ++#define PCI_EXP_DEVCAP_FLR 0x10000000 /* Function Level Reset */ + #define PCI_EXP_DEVCTL 8 /* Device Control */ +-#define PCI_EXP_DEVCTL_BCR_FLR 0x8000 /* Bridge Configuration Retry / FLR */ ++#define PCI_EXP_DEVCTL_BCR_FLR 0x8000 /* Bridge Configuration Retry / FLR */ ++#define PCI_EXP_LNKCAP 12 /* Link Capabilities */ ++#define PCI_EXP_LNKCAP_SLS 0x0000000f /* Supported Link Speeds */ ++#define PCI_EXP_LNKCAP_MLW 0x000003f0 /* Maximum Link Width */ ++#define PCI_EXP_LNKCAP_DLLLARC 0x00100000 /* Data Link Layer Link Active Reporting Capable */ ++#define PCI_EXP_LNKSTA 18 /* Link Status */ ++#define PCI_EXP_LNKSTA_CLS 0x000f /* Current Link Speed */ ++#define PCI_EXP_LNKSTA_CLS_2_5GB 0x0001 /* Current Link Speed 2.5GT/s */ ++#define PCI_EXP_LNKSTA_CLS_5_0GB 0x0002 /* Current Link Speed 5.0GT/s */ ++#define PCI_EXP_LNKSTA_CLS_8_0GB 0x0003 /* Current Link Speed 8.0GT/s */ ++#define PCI_EXP_LNKSTA_NLW 0x03f0 /* Negotiated Link Width */ ++#define PCI_EXP_LNKSTA_NLW_SHIFT 4 /* start of NLW mask in link status */ ++#define PCI_EXP_LNKSTA_DLLLA 0x2000 /* Data Link Layer Link Active */ ++#define PCI_EXP_SLTCAP 20 /* Slot Capabilities */ ++#define PCI_EXP_SLTCAP_PSN 0xfff80000 /* Physical Slot Number */ ++#define PCI_EXP_LNKCTL2 48 /* Link Control 2 */ + + /* Include the ID list */ + +diff --git a/include/usb/xhci.h b/include/usb/xhci.h +index 20e4a21066..1170c0ac69 100644 +--- a/include/usb/xhci.h ++++ b/include/usb/xhci.h +@@ -1114,28 +1114,20 @@ static inline void xhci_writel(uint32_t volatile *regs, const unsigned int val) + */ + static inline u64 xhci_readq(__le64 volatile *regs) + { +-#if BITS_PER_LONG == 64 +- return readq(regs); +-#else + __u32 *ptr = (__u32 *)regs; + u64 val_lo = readl(ptr); + u64 val_hi = readl(ptr + 1); + return val_lo + (val_hi << 32); +-#endif + } + + static inline void xhci_writeq(__le64 volatile *regs, const u64 val) + { +-#if BITS_PER_LONG == 64 +- writeq(val, regs); +-#else + __u32 *ptr = (__u32 *)regs; + u32 val_lo = lower_32_bits(val); + /* FIXME */ + u32 val_hi = upper_32_bits(val); + writel(val_lo, ptr); + writel(val_hi, ptr + 1); +-#endif + } + + int xhci_hcd_init(int index, struct xhci_hccr **ret_hccr, +-- +2.26.2 -From patchwork Tue May 12 18:47:16 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Sylwester Nawrocki -X-Patchwork-Id: 1288735 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 - header.s=mail20170921 header.b=cv2KHkH+; - dkim-atps=neutral -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 49M6Kw6S8rz9sRR - for ; Wed, 13 May 2020 04:49:40 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 6561C81D0C; - Tue, 12 May 2020 20:48:50 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.b="cv2KHkH+"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id C928581D0C; Tue, 12 May 2020 20:48:47 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com - [210.118.77.12]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id A273781CE3 - for ; Tue, 12 May 2020 20:48:44 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=s.nawrocki@samsung.com -Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) - by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id - 20200512184844euoutp02e55ba929fd9f79911a420a566ce0e756~OXGjzHTY40461204612euoutp028 - for ; Tue, 12 May 2020 18:48:44 +0000 (GMT) -DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com - 20200512184844euoutp02e55ba929fd9f79911a420a566ce0e756~OXGjzHTY40461204612euoutp028 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; - s=mail20170921; t=1589309324; - bh=hzK/mVSsiHm3Pc+zxgVzX6oxEFhxHphU75wkCaQSwV4=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=cv2KHkH+WRTNWeHkLSgxvaKrbRdv4aXDBJ9rm82p9sUIKoZ2ZUWHIBjiSVlx4KkeE - fEVI2vFzo+mNlTVnEelEvDqFzVOXb6dvim6uuExIcjBm08RtCT6hIIYdvb01II9zw8 - 4YrLGyDb5u4RQ0w28BrdUJzxip35lr+/ro5y+Xgw= -Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by - eucas1p2.samsung.com (KnoxPortal) with ESMTP id - 20200512184843eucas1p2ba3d75b717bad767d94d483b4c7ce11d~OXGix0EoA0735307353eucas1p2x; - Tue, 12 May 2020 18:48:43 +0000 (GMT) -Received: from eucas1p1.samsung.com ( [182.198.249.206]) by - eusmges1new.samsung.com (EUCPMTA) with SMTP id CF.FF.61286.B8FEABE5; Tue, 12 - May 2020 19:48:43 +0100 (BST) -Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by - eucas1p1.samsung.com (KnoxPortal) with ESMTPA id - 20200512184842eucas1p1b2edc2128ddf134553805db77451648f~OXGhrdRbd2314823148eucas1p1D; - Tue, 12 May 2020 18:48:42 +0000 (GMT) -Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by - eusmtrp2.samsung.com (KnoxPortal) with ESMTP id - 20200512184842eusmtrp2c531b7ae799511a665083c7202f8cf1c~OXGhqxf_u1654916549eusmtrp2q; - Tue, 12 May 2020 18:48:42 +0000 (GMT) -X-AuditID: cbfec7f2-ef1ff7000001ef66-99-5ebaef8bc506 -Received: from eusmtip1.samsung.com ( [203.254.199.221]) by - eusmgms2.samsung.com (EUCPMTA) with SMTP id 35.F8.07950.98FEABE5; Tue, 12 - May 2020 19:48:41 +0100 (BST) -Received: from AMDC3061.digital.local (unknown [106.120.51.75]) by - eusmtip1.samsung.com (KnoxPortal) with ESMTPA id - 20200512184841eusmtip10bf41891c807e8917bd954874636d5ef~OXGhLVMJk2778327783eusmtip1X; - Tue, 12 May 2020 18:48:41 +0000 (GMT) -From: Sylwester Nawrocki -To: u-boot@lists.denx.de, mbrugger@suse.com, marex@denx.de, bmeng.cn@gmail.com -Cc: james.quinlan@broadcom.com, nsaenzjulienne@suse.de, sjg@chromium.org, - jh80.chung@samsung.com, m.szyprowski@samsung.com, b.zolnierkie@samsung.com, - Sylwester Nawrocki -Subject: [PATCH v3 9/9] configs: Enable support for the XHCI controller on - RPI4 board (ARM 64-bit) -Date: Tue, 12 May 2020 20:47:16 +0200 -Message-Id: <20200512184716.2869-10-s.nawrocki@samsung.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200512184716.2869-1-s.nawrocki@samsung.com> -X-Brightmail-Tracker: H4sIAAAAAAAAA0WSe0hTYRjG/XbO2Y7T2WlafqhgDIMUUkdGpxRNKDp/Cl3+CFJnO03Jqeyo - ZREtlXm/oJi2UMeMzKlt5ZrXYaw2K9FUugzULJBMmdjFC2q0th2t/37v8z4Pz8vHhyNCDRaE - Z2Tl0oosSaaIy0dNts3xwxUrA8nRb3t9yCdNeoxsqEwhzY4aLmnfUmFk98tZHulQ3QGkpn4e - I03qdi75wlGCketGEyCXzWW8kz6Uem6MS91XTqJUi/oVSvWrZ3nU2EwfoKqNOkDpje9Rqmf0 - ZhJ+kR8npTMz8mlFVHwqP326YRjLMfldn2i1Y0rQ6lsOvHFIxMB7IypQDvi4kHgE4JRFi7DD - KoCLPYUcdvjl2qzVcHcjXUPOHVc7gENjX7n/IssTHZjbxSXEsMpaDdwcQCTBD5t3PSUIYQWw - a/g36l74E1K4al7wMEochHXlhZ4KARELrYZBjK0LhZ2G54ibvV36xx6bpxoSD3mwaFMLWNMp - +KZxfYf94dKIkcdyCHT2t3LYQBGAlYPTPHaoBXBuRLOTiIUz41uuatx1XzjUD0SxciJcMDs4 - bhkSftC+vNctIy6sMzUirCyApSoh6w6D27pGDstBsGLeibJMwS9l7Sj7QtUATsxUgVoQqv5f - pgFABwLpPEYuoxlxFn0tkpHImbwsWeTlbPlT4Po3o39GfvaBtak0CyBwIPIVeN0aSBZiknym - QG4BEEdEAYLijP5koUAqKbhBK7JTFHmZNGMBwTgqChQc0S5eEhIySS59laZzaMXuloN7BymB - cKWgqiXttOJBRaU+xkboTQm+VRPbD3jhne+WnKU2wQG5jFvS9v3E6meDoAy90pEabN5TH5cQ - 0db7rXnKdMgAa5uRpo3l2LP7DUfrZn9sKJtrzr0+XxQUPVZ83P/ZGXviBeUnzT7d427oEzZw - W+wVptjWTlrVHevxxxhpSHaeCGXSJeIIRMFI/gJkR9I/MwMAAA== -X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrPLMWRmVeSWpSXmKPExsVy+t/xu7qd73fFGVxeZWOxccZ6VoupPfEW - e9/0s1nc+NXGarH2yF12izdtjYwWCyY/YbXYNms5m8XhN+2sFt+2bGO0eLu3k92B22PW/bNs - HrMbLrJ4zJt1gsVj56y77B5n7+xg9OjbsorRY/2Wqywem09XB3BE6dkU5ZeWpCpk5BeX2CpF - G1oY6RlaWugZmVjqGRqbx1oZmSrp29mkpOZklqUW6dsl6GXcnrqftWAbX8WF+TdYGxjn83Qx - cnJICJhIrNnzn7mLkYtDSGApo8TXHX1sXYwcQAkpifktShA1whJ/rnWxQdR8YpSY9PMgK0iC - TcBQovdoHyOILSIQIvHi6BUmkCJmgbOMEos6P4AVCQskSczvPccOYrMIqEpM6mpiA7F5Bawl - jm7YzQqxQV5i9YYDzCA2J1D8+uZjYLaQgJXEnm/v2CYw8i1gZFjFKJJaWpybnltspFecmFtc - mpeul5yfu4kRGPjbjv3csoOx613wIUYBDkYlHt6I+l1xQqyJZcWVuYcYJTiYlUR4WzJ3xgnx - piRWVqUW5ccXleakFh9iNAU6aiKzlGhyPjAq80riDU0NzS0sDc2NzY3NLJTEeTsEDsYICaQn - lqRmp6YWpBbB9DFxcEo1MJZuMOdQWFlcxNH1cnlrV4CI9YveFVpbur+ZL3998nbrx5IJO+5v - NQnONn+wO4m3/3tYYOTuoMvVPAmZDS/anbJea/5TzOpcFnR9x5G3L0zaRfS23RPYadWx1kVi - pvyV8/EB7wQLzOxvdPXy3agLUd4qc0Q9xNdok+uL3ZJbS/2Wpfa8TVjxTomlOCPRUIu5qDgR - ANQtnEOSAgAA -X-CMS-MailID: 20200512184842eucas1p1b2edc2128ddf134553805db77451648f -X-Msg-Generator: CA -X-RootMTR: 20200512184842eucas1p1b2edc2128ddf134553805db77451648f -X-EPHeader: CA -CMS-TYPE: 201P -X-CMS-RootMailID: 20200512184842eucas1p1b2edc2128ddf134553805db77451648f -References: <20200512184716.2869-1-s.nawrocki@samsung.com> - -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -This requires enabling BRCMSTB PCIe and XHCI_PCI drivers as well as PCI -and USB commands. To get it working one has to call the following commands: -"pci enum; usb start;", thus such commands have been added to the default -"preboot" environment variable. One has to update their environment if it -is already configured to get this feature working out of the box. - -Signed-off-by: Marek Szyprowski -Signed-off-by: Sylwester Nawrocki ---- -Changes since v2: - - rpi_4_32b_defconfig, rpi_4_defconfig changes moved to separate - patch -Changes since v1: - - removed unneeded CONFIG_XHCI_64BIT_DWORD_ACCESS_ONLY entry. - -Changes since RFC: - - none. ---- - configs/rpi_arm64_defconfig | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig -index fea86be..f12d1e3 100644 ---- a/configs/rpi_arm64_defconfig -+++ b/configs/rpi_arm64_defconfig -@@ -7,13 +7,14 @@ CONFIG_NR_DRAM_BANKS=2 - CONFIG_DISTRO_DEFAULTS=y - CONFIG_OF_BOARD_SETUP=y - CONFIG_USE_PREBOOT=y --CONFIG_PREBOOT="usb start" -+CONFIG_PREBOOT="pci enum; usb start;" - CONFIG_MISC_INIT_R=y - # CONFIG_DISPLAY_CPUINFO is not set - # CONFIG_DISPLAY_BOARDINFO is not set - CONFIG_SYS_PROMPT="U-Boot> " - CONFIG_CMD_GPIO=y - CONFIG_CMD_MMC=y -+CONFIG_CMD_PCI=y - CONFIG_CMD_USB=y - CONFIG_CMD_FS_UUID=y - CONFIG_OF_BOARD=y -@@ -26,11 +27,16 @@ CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_BCM2835=y - CONFIG_DM_ETH=y - CONFIG_BCMGENET=y -+CONFIG_PCI=y -+CONFIG_DM_PCI=y -+CONFIG_PCI_BRCMSTB=y - CONFIG_PINCTRL=y - # CONFIG_PINCTRL_GENERIC is not set - # CONFIG_REQUIRE_SERIAL_CONSOLE is not set - CONFIG_USB=y - CONFIG_DM_USB=y -+CONFIG_USB_XHCI_HCD=y -+CONFIG_USB_XHCI_PCI=y - CONFIG_USB_DWC2=y - CONFIG_USB_KEYBOARD=y - CONFIG_USB_HOST_ETHER=y diff --git a/arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch b/arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch index 0987100..8f28d1c 100644 --- a/arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch +++ b/arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch @@ -1,15 +1,17 @@ -From 32f17a93e08227c56a655f9b85977569e4e5daa2 Mon Sep 17 00:00:00 2001 +From 88725c4d036bab25c900cc3c962fc42d94e0ab69 Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Wed, 1 Apr 2020 10:44:09 +0100 +Date: Wed, 10 Jun 2020 13:26:43 +0100 Subject: [PATCH] arm: rk3399: enable rng on rock960 and firefly3399 Signed-off-by: Peter Robinson --- - arch/arm/dts/rk3399-firefly-u-boot.dtsi | 4 ++++ - arch/arm/dts/rk3399-rock960-u-boot.dtsi | 4 ++++ - configs/firefly-rk3399_defconfig | 2 ++ - configs/rock960-rk3399_defconfig | 2 ++ - 4 files changed, 12 insertions(+) + arch/arm/dts/rk3399-firefly-u-boot.dtsi | 4 ++++ + arch/arm/dts/rk3399-rock960-u-boot.dtsi | 4 ++++ + arch/arm/dts/rk3399-rockpro64-u-boot.dtsi | 4 ++++ + configs/firefly-rk3399_defconfig | 2 ++ + configs/rock960-rk3399_defconfig | 2 ++ + configs/rockpro64-rk3399_defconfig | 2 ++ + 6 files changed, 18 insertions(+) diff --git a/arch/arm/dts/rk3399-firefly-u-boot.dtsi b/arch/arm/dts/rk3399-firefly-u-boot.dtsi index 38e0897db9..a6c7b913da 100644 @@ -24,7 +26,7 @@ index 38e0897db9..a6c7b913da 100644 + status = "okay"; +}; diff --git a/arch/arm/dts/rk3399-rock960-u-boot.dtsi b/arch/arm/dts/rk3399-rock960-u-boot.dtsi -index 82f2c311af..401ad02c45 100644 +index c190089e26..08292dbd39 100644 --- a/arch/arm/dts/rk3399-rock960-u-boot.dtsi +++ b/arch/arm/dts/rk3399-rock960-u-boot.dtsi @@ -24,3 +24,7 @@ @@ -35,51 +37,11 @@ index 82f2c311af..401ad02c45 100644 +&rng { + status = "okay"; +}; -diff --git a/configs/firefly-rk3399_defconfig b/configs/firefly-rk3399_defconfig -index 4c9f1e189b..27306b434f 100644 ---- a/configs/firefly-rk3399_defconfig -+++ b/configs/firefly-rk3399_defconfig -@@ -34,6 +34,8 @@ CONFIG_MMC_DW=y - CONFIG_MMC_DW_ROCKCHIP=y - CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_ROCKCHIP=y -+CONFIG_DM_RNG=y -+CONFIG_RNG_ROCKCHIP=y - CONFIG_SF_DEFAULT_SPEED=20000000 - CONFIG_DM_ETH=y - CONFIG_ETH_DESIGNWARE=y -diff --git a/configs/rock960-rk3399_defconfig b/configs/rock960-rk3399_defconfig -index ba4226e173..f823d0dabd 100644 ---- a/configs/rock960-rk3399_defconfig -+++ b/configs/rock960-rk3399_defconfig -@@ -35,6 +35,8 @@ CONFIG_MMC_DW_ROCKCHIP=y - CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_SDMA=y - CONFIG_MMC_SDHCI_ROCKCHIP=y -+CONFIG_DM_RNG=y -+CONFIG_RNG_ROCKCHIP=y - CONFIG_DM_ETH=y - CONFIG_PMIC_RK8XX=y - CONFIG_REGULATOR_PWM=y --- -2.26.0 - -From 03a3e695cb24257e42a0a97abf7177ca788bedc4 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Wed, 1 Apr 2020 11:20:43 +0100 -Subject: [PATCH] arm: rk3399: enable rng on rockpro64 - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/rk3399-rockpro64-u-boot.dtsi | 4 ++++ - configs/rockpro64-rk3399_defconfig | 2 ++ - 2 files changed, 6 insertions(+) - diff --git a/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi b/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi -index deaa3efd39..2e99ef71f4 100644 +index bac09df4a3..38fe3bb0ec 100644 --- a/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi +++ b/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi -@@ -15,6 +15,10 @@ +@@ -25,6 +25,10 @@ }; }; @@ -90,11 +52,37 @@ index deaa3efd39..2e99ef71f4 100644 &vdd_center { regulator-min-microvolt = <950000>; regulator-max-microvolt = <950000>; +diff --git a/configs/firefly-rk3399_defconfig b/configs/firefly-rk3399_defconfig +index 5bb54f5835..551687d6d0 100644 +--- a/configs/firefly-rk3399_defconfig ++++ b/configs/firefly-rk3399_defconfig +@@ -35,6 +35,8 @@ CONFIG_MMC_DW=y + CONFIG_MMC_DW_ROCKCHIP=y + CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_ROCKCHIP=y ++CONFIG_DM_RNG=y ++CONFIG_RNG_ROCKCHIP=y + CONFIG_SF_DEFAULT_SPEED=20000000 + CONFIG_DM_ETH=y + CONFIG_ETH_DESIGNWARE=y +diff --git a/configs/rock960-rk3399_defconfig b/configs/rock960-rk3399_defconfig +index 59a85c78a1..f31cb92884 100644 +--- a/configs/rock960-rk3399_defconfig ++++ b/configs/rock960-rk3399_defconfig +@@ -37,6 +37,8 @@ CONFIG_MMC_DW_ROCKCHIP=y + CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_SDMA=y + CONFIG_MMC_SDHCI_ROCKCHIP=y ++CONFIG_DM_RNG=y ++CONFIG_RNG_ROCKCHIP=y + CONFIG_DM_ETH=y + CONFIG_NVME=y + CONFIG_PCI=y diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig -index 8074e4665a..285dccebe5 100644 +index 807747485a..f778f0b640 100644 --- a/configs/rockpro64-rk3399_defconfig +++ b/configs/rockpro64-rk3399_defconfig -@@ -34,6 +34,8 @@ CONFIG_MMC_DW=y +@@ -40,6 +40,8 @@ CONFIG_MMC_DW=y CONFIG_MMC_DW_ROCKCHIP=y CONFIG_MMC_SDHCI=y CONFIG_MMC_SDHCI_ROCKCHIP=y @@ -104,5 +92,5 @@ index 8074e4665a..285dccebe5 100644 CONFIG_DM_ETH=y CONFIG_ETH_DESIGNWARE=y -- -2.26.0 +2.26.2 diff --git a/initial-support-for-the-Pinebook-Pro-laptop-from.patch b/initial-support-for-the-Pinebook-Pro-laptop-from.patch deleted file mode 100644 index b8b6f34..0000000 --- a/initial-support-for-the-Pinebook-Pro-laptop-from.patch +++ /dev/null @@ -1,1573 +0,0 @@ -From a3e23dca57bff1043bd6c746458dae2dd446948e Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Sun, 19 Apr 2020 10:31:53 +0100 -Subject: [PATCH 2/5] dt-bindings: input: adopt Linux gpio-keys binding - constants - -Sync the gpio-keys input bindings from linux 5.7-rc1. - -Signed-off-by: Peter Robinson ---- - include/dt-bindings/input/gpio-keys.h | 13 +++++++++++++ - 1 file changed, 13 insertions(+) - create mode 100644 include/dt-bindings/input/gpio-keys.h - -diff --git a/include/dt-bindings/input/gpio-keys.h b/include/dt-bindings/input/gpio-keys.h -new file mode 100644 -index 0000000000..8962df79e7 ---- /dev/null -+++ b/include/dt-bindings/input/gpio-keys.h -@@ -0,0 +1,13 @@ -+/* SPDX-License-Identifier: GPL-2.0 */ -+/* -+ * This header provides constants for gpio keys bindings. -+ */ -+ -+#ifndef _DT_BINDINGS_GPIO_KEYS_H -+#define _DT_BINDINGS_GPIO_KEYS_H -+ -+#define EV_ACT_ANY 0x00 /* asserted or deasserted */ -+#define EV_ACT_ASSERTED 0x01 /* asserted */ -+#define EV_ACT_DEASSERTED 0x02 /* deasserted */ -+ -+#endif /* _DT_BINDINGS_GPIO_KEYS_H */ --- -2.26.1 - -From 27f56eec1fa5baa4fc82ebb356a50826bb9f5643 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Sun, 19 Apr 2020 13:28:51 +0100 -Subject: [PATCH 4/5] arm: dts: rockchip: Add initial DT for Pinebook Pro - -Sync initial support for Pinebook Pro device tree from Linux 5.7-rc1. - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/Makefile | 1 + - arch/arm/dts/rk3399-pinebook-pro.dts | 1096 ++++++++++++++++++++++++++ - 2 files changed, 1097 insertions(+) - create mode 100644 arch/arm/dts/rk3399-pinebook-pro.dts - -diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile -index 1325134bd4..c4d8ffb13c 100644 ---- a/arch/arm/dts/Makefile -+++ b/arch/arm/dts/Makefile -@@ -129,6 +129,7 @@ - rk3399-nanopi-m4-2gb.dtb \ - rk3399-nanopi-neo4.dtb \ - rk3399-orangepi.dtb \ -+ rk3399-pinebook-pro.dtb \ - rk3399-puma-ddr1333.dtb \ - rk3399-puma-ddr1600.dtb \ - rk3399-puma-ddr1866.dtb \ -diff --git a/arch/arm/dts/rk3399-pinebook-pro.dts b/arch/arm/dts/rk3399-pinebook-pro.dts -new file mode 100644 -index 0000000000..294d21bf45 ---- /dev/null -+++ b/arch/arm/dts/rk3399-pinebook-pro.dts -@@ -0,0 +1,1096 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+/* -+ * Copyright (c) 2017 Fuzhou Rockchip Electronics Co., Ltd. -+ * Copyright (c) 2018 Akash Gajjar -+ * Copyright (c) 2020 Tobias Schramm -+ */ -+ -+/dts-v1/; -+#include -+#include -+#include -+#include -+#include -+#include "rk3399.dtsi" -+#include "rk3399-opp.dtsi" -+ -+/ { -+ model = "Pine64 Pinebook Pro"; -+ compatible = "pine64,pinebook-pro", "rockchip,rk3399"; -+ -+ chosen { -+ stdout-path = "serial2:1500000n8"; -+ }; -+ -+ backlight: edp-backlight { -+ compatible = "pwm-backlight"; -+ power-supply = <&vcc_12v>; -+ pwms = <&pwm0 0 740740 0>; -+ }; -+ -+ edp_panel: edp-panel { -+ compatible = "boe,nv140fhmn49"; -+ backlight = <&backlight>; -+ enable-gpios = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&panel_en_gpio>; -+ power-supply = <&vcc3v3_panel>; -+ -+ ports { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ port@0 { -+ reg = <0>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ panel_in_edp: endpoint@0 { -+ reg = <0>; -+ remote-endpoint = <&edp_out_panel>; -+ }; -+ }; -+ }; -+ }; -+ -+ /* -+ * Use separate nodes for gpio-keys to allow for selective deactivation -+ * of wakeup sources via sysfs without disabling the whole key -+ */ -+ gpio-key-lid { -+ compatible = "gpio-keys"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&lidbtn_gpio>; -+ -+ lid { -+ debounce-interval = <20>; -+ gpios = <&gpio1 RK_PA1 GPIO_ACTIVE_LOW>; -+ label = "Lid"; -+ linux,code = ; -+ linux,input-type = ; -+ wakeup-event-action = ; -+ wakeup-source; -+ }; -+ }; -+ -+ gpio-key-power { -+ compatible = "gpio-keys"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwrbtn_gpio>; -+ -+ power { -+ debounce-interval = <20>; -+ gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>; -+ label = "Power"; -+ linux,code = ; -+ wakeup-source; -+ }; -+ }; -+ -+ leds { -+ compatible = "gpio-leds"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwrled_gpio &slpled_gpio>; -+ -+ green-led { -+ color = ; -+ default-state = "on"; -+ function = LED_FUNCTION_POWER; -+ gpios = <&gpio0 RK_PB3 GPIO_ACTIVE_HIGH>; -+ label = "green:power"; -+ }; -+ -+ red-led { -+ color = ; -+ default-state = "off"; -+ function = LED_FUNCTION_STANDBY; -+ gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>; -+ label = "red:standby"; -+ panic-indicator; -+ retain-state-suspended; -+ }; -+ }; -+ -+ /* Power sequence for SDIO WiFi module */ -+ sdio_pwrseq: sdio-pwrseq { -+ compatible = "mmc-pwrseq-simple"; -+ clocks = <&rk808 1>; -+ clock-names = "ext_clock"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&wifi_enable_h_gpio>; -+ post-power-on-delay-ms = <100>; -+ power-off-delay-us = <500000>; -+ -+ /* WL_REG_ON on module */ -+ reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>; -+ }; -+ -+ /* Audio components */ -+ es8316-sound { -+ compatible = "simple-audio-card"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&hp_det_gpio>; -+ simple-audio-card,name = "rockchip,es8316-codec"; -+ simple-audio-card,format = "i2s"; -+ simple-audio-card,mclk-fs = <256>; -+ -+ simple-audio-card,widgets = -+ "Microphone", "Mic Jack", -+ "Headphone", "Headphones", -+ "Speaker", "Speaker"; -+ simple-audio-card,routing = -+ "MIC1", "Mic Jack", -+ "Headphones", "HPOL", -+ "Headphones", "HPOR", -+ "Speaker Amplifier INL", "HPOL", -+ "Speaker Amplifier INR", "HPOR", -+ "Speaker", "Speaker Amplifier OUTL", -+ "Speaker", "Speaker Amplifier OUTR"; -+ -+ simple-audio-card,hp-det-gpio = <&gpio0 RK_PB0 GPIO_ACTIVE_HIGH>; -+ simple-audio-card,aux-devs = <&speaker_amp>; -+ simple-audio-card,pin-switches = "Speaker"; -+ -+ simple-audio-card,cpu { -+ sound-dai = <&i2s1>; -+ }; -+ -+ simple-audio-card,codec { -+ sound-dai = <&es8316>; -+ }; -+ }; -+ -+ speaker_amp: speaker-amplifier { -+ compatible = "simple-audio-amplifier"; -+ enable-gpios = <&gpio4 RK_PD3 GPIO_ACTIVE_HIGH>; -+ sound-name-prefix = "Speaker Amplifier"; -+ VCC-supply = <&pa_5v>; -+ }; -+ -+ /* Power tree */ -+ /* Root power source */ -+ vcc_sysin: vcc-sysin { -+ compatible = "regulator-fixed"; -+ regulator-name = "vcc_sysin"; -+ regulator-always-on; -+ regulator-boot-on; -+ }; -+ -+ /* Regulators supplied by vcc_sysin */ -+ /* LCD backlight supply */ -+ vcc_12v: vcc-12v { -+ compatible = "regulator-fixed"; -+ regulator-name = "vcc_12v"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <12000000>; -+ regulator-max-microvolt = <12000000>; -+ vin-supply = <&vcc_sysin>; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ /* Main 3.3 V supply */ -+ vcc3v3_sys: wifi_bat: vcc3v3-sys { -+ compatible = "regulator-fixed"; -+ regulator-name = "vcc3v3_sys"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ vin-supply = <&vcc_sysin>; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ }; -+ }; -+ -+ /* 5 V USB power supply */ -+ vcc5v0_usb: pa_5v: vcc5v0-usb-regulator { -+ compatible = "regulator-fixed"; -+ enable-active-high; -+ gpio = <&gpio1 RK_PB5 GPIO_ACTIVE_HIGH>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwr_5v_gpio>; -+ regulator-name = "vcc5v0_usb"; -+ regulator-always-on; -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ vin-supply = <&vcc_sysin>; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ /* RK3399 logic supply */ -+ vdd_log: vdd-log { -+ compatible = "pwm-regulator"; -+ pwms = <&pwm2 0 25000 1>; -+ regulator-name = "vdd_log"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <800000>; -+ regulator-max-microvolt = <1400000>; -+ vin-supply = <&vcc_sysin>; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ }; -+ }; -+ -+ /* Regulators supplied by vcc3v3_sys */ -+ /* 0.9 V supply, always on */ -+ vcc_0v9: vcc-0v9 { -+ compatible = "regulator-fixed"; -+ regulator-name = "vcc_0v9"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <900000>; -+ regulator-max-microvolt = <900000>; -+ vin-supply = <&vcc3v3_sys>; -+ }; -+ -+ /* S3 1.8 V supply, switched by vcc1v8_s3 */ -+ vcca1v8_s3: vcc1v8-s3 { -+ compatible = "regulator-fixed"; -+ regulator-name = "vcca1v8_s3"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ vin-supply = <&vcc3v3_sys>; -+ }; -+ -+ /* micro SD card power */ -+ vcc3v0_sd: vcc3v0-sd { -+ compatible = "regulator-fixed"; -+ enable-active-high; -+ gpio = <&gpio0 RK_PA1 GPIO_ACTIVE_HIGH>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&sdmmc0_pwr_h_gpio>; -+ regulator-name = "vcc3v0_sd"; -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ vin-supply = <&vcc3v3_sys>; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ /* LCD panel power, called VCC3V3_S0 in schematic */ -+ vcc3v3_panel: vcc3v3-panel { -+ compatible = "regulator-fixed"; -+ enable-active-high; -+ gpio = <&gpio1 RK_PC6 GPIO_ACTIVE_HIGH>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&lcdvcc_en_gpio>; -+ regulator-name = "vcc3v3_panel"; -+ regulator-always-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-enable-ramp-delay = <100000>; -+ vin-supply = <&vcc3v3_sys>; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ /* M.2 adapter power, switched by vcc1v8_s3 */ -+ vcc3v3_ssd: vcc3v3-ssd { -+ compatible = "regulator-fixed"; -+ regulator-name = "vcc3v3_ssd"; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ vin-supply = <&vcc3v3_sys>; -+ }; -+ -+ /* Regulators supplied by vcc5v0_usb */ -+ /* USB 3 port power supply regulator */ -+ vcc5v0_otg: vcc5v0-otg { -+ compatible = "regulator-fixed"; -+ enable-active-high; -+ gpio = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&vcc5v0_host_en_gpio>; -+ regulator-name = "vcc5v0_otg"; -+ regulator-always-on; -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ vin-supply = <&vcc5v0_usb>; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ /* Regulators supplied by vcc5v0_usb */ -+ /* Type C port power supply regulator */ -+ vbus_5vout: vbus_typec: vbus-5vout { -+ compatible = "regulator-fixed"; -+ enable-active-high; -+ gpio = <&gpio1 RK_PA3 GPIO_ACTIVE_HIGH>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&vcc5v0_typec0_en_gpio>; -+ regulator-name = "vbus_5vout"; -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ vin-supply = <&vcc5v0_usb>; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ /* Regulators supplied by vcc_1v8 */ -+ /* Primary 0.9 V LDO */ -+ vcca0v9_s3: vcca0v9-s3 { -+ compatible = "regulator-fixed"; -+ regulator-name = "vcc0v9_s3"; -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ vin-supply = <&vcc_1v8>; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ }; -+ }; -+ -+ mains_charger: dc-charger { -+ compatible = "gpio-charger"; -+ charger-type = "mains"; -+ gpios = <&gpio4 RK_PD0 GPIO_ACTIVE_LOW>; -+ -+ /* Also triggered by USB charger */ -+ pinctrl-names = "default"; -+ pinctrl-0 = <&dc_det_gpio>; -+ }; -+}; -+ -+&cdn_dp { -+ status = "okay"; -+}; -+ -+&cpu_b0 { -+ cpu-supply = <&vdd_cpu_b>; -+}; -+ -+&cpu_b1 { -+ cpu-supply = <&vdd_cpu_b>; -+}; -+ -+&cpu_l0 { -+ cpu-supply = <&vdd_cpu_l>; -+}; -+ -+&cpu_l1 { -+ cpu-supply = <&vdd_cpu_l>; -+}; -+ -+&cpu_l2 { -+ cpu-supply = <&vdd_cpu_l>; -+}; -+ -+&cpu_l3 { -+ cpu-supply = <&vdd_cpu_l>; -+}; -+ -+&edp { -+ force-hpd; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&edp_hpd>; -+ status = "okay"; -+ -+ ports { -+ edp_out: port@1 { -+ reg = <1>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ edp_out_panel: endpoint@0 { -+ reg = <0>; -+ remote-endpoint = <&panel_in_edp>; -+ }; -+ }; -+ }; -+}; -+ -+&emmc_phy { -+ status = "okay"; -+}; -+ -+&gpu { -+ mali-supply = <&vdd_gpu>; -+ status = "okay"; -+}; -+ -+&hdmi_sound { -+ status = "okay"; -+}; -+ -+&i2c0 { -+ clock-frequency = <400000>; -+ i2c-scl-falling-time-ns = <4>; -+ i2c-scl-rising-time-ns = <168>; -+ status = "okay"; -+ -+ rk808: pmic@1b { -+ compatible = "rockchip,rk808"; -+ reg = <0x1b>; -+ #clock-cells = <1>; -+ clock-output-names = "xin32k", "rk808-clkout2"; -+ interrupt-parent = <&gpio3>; -+ interrupts = <10 IRQ_TYPE_LEVEL_LOW>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pmic_int_l_gpio>; -+ rockchip,system-power-controller; -+ wakeup-source; -+ -+ vcc1-supply = <&vcc_sysin>; -+ vcc2-supply = <&vcc_sysin>; -+ vcc3-supply = <&vcc_sysin>; -+ vcc4-supply = <&vcc_sysin>; -+ vcc6-supply = <&vcc_sysin>; -+ vcc7-supply = <&vcc_sysin>; -+ vcc8-supply = <&vcc3v3_sys>; -+ vcc9-supply = <&vcc_sysin>; -+ vcc10-supply = <&vcc_sysin>; -+ vcc11-supply = <&vcc_sysin>; -+ vcc12-supply = <&vcc3v3_sys>; -+ vcc13-supply = <&vcc_sysin>; -+ vcc14-supply = <&vcc_sysin>; -+ -+ regulators { -+ /* rk3399 center logic supply */ -+ vdd_center: DCDC_REG1 { -+ regulator-name = "vdd_center"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <750000>; -+ regulator-max-microvolt = <1350000>; -+ regulator-ramp-delay = <6001>; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vdd_cpu_l: DCDC_REG2 { -+ regulator-name = "vdd_cpu_l"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <750000>; -+ regulator-max-microvolt = <1350000>; -+ regulator-ramp-delay = <6001>; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vcc_ddr: DCDC_REG3 { -+ regulator-name = "vcc_ddr"; -+ regulator-always-on; -+ regulator-boot-on; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ }; -+ }; -+ -+ vcc_1v8: vcc_wl: DCDC_REG4 { -+ regulator-name = "vcc_1v8"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <1800000>; -+ }; -+ }; -+ -+ /* not used */ -+ LDO_REG1 { -+ }; -+ -+ /* not used */ -+ LDO_REG2 { -+ }; -+ -+ vcc1v8_pmupll: LDO_REG3 { -+ regulator-name = "vcc1v8_pmupll"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <1800000>; -+ }; -+ }; -+ -+ vcc_sdio: LDO_REG4 { -+ regulator-name = "vcc_sdio"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <3000000>; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <3000000>; -+ }; -+ }; -+ -+ vcca3v0_codec: LDO_REG5 { -+ regulator-name = "vcca3v0_codec"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vcc_1v5: LDO_REG6 { -+ regulator-name = "vcc_1v5"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1500000>; -+ regulator-max-microvolt = <1500000>; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <1500000>; -+ }; -+ }; -+ -+ vcca1v8_codec: LDO_REG7 { -+ regulator-name = "vcca1v8_codec"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vcc_3v0: LDO_REG8 { -+ regulator-name = "vcc_3v0"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <3000000>; -+ }; -+ }; -+ -+ vcc3v3_s3: SWITCH_REG1 { -+ regulator-name = "vcc3v3_s3"; -+ regulator-always-on; -+ regulator-boot-on; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vcc3v3_s0: SWITCH_REG2 { -+ regulator-name = "vcc3v3_s0"; -+ regulator-always-on; -+ regulator-boot-on; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ }; -+ }; -+ -+ vdd_cpu_b: regulator@40 { -+ compatible = "silergy,syr827"; -+ reg = <0x40>; -+ fcs,suspend-voltage-selector = <1>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&vsel1_gpio>; -+ regulator-name = "vdd_cpu_b"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <712500>; -+ regulator-max-microvolt = <1500000>; -+ regulator-ramp-delay = <1000>; -+ vin-supply = <&vcc_1v8>; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vdd_gpu: regulator@41 { -+ compatible = "silergy,syr828"; -+ reg = <0x41>; -+ fcs,suspend-voltage-selector = <1>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&vsel2_gpio>; -+ regulator-name = "vdd_gpu"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <712500>; -+ regulator-max-microvolt = <1500000>; -+ regulator-ramp-delay = <1000>; -+ vin-supply = <&vcc_1v8>; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+}; -+ -+&i2c1 { -+ clock-frequency = <100000>; -+ i2c-scl-falling-time-ns = <4>; -+ i2c-scl-rising-time-ns = <168>; -+ status = "okay"; -+ -+ es8316: es8316@11 { -+ compatible = "everest,es8316"; -+ reg = <0x11>; -+ clocks = <&cru SCLK_I2S_8CH_OUT>; -+ clock-names = "mclk"; -+ #sound-dai-cells = <0>; -+ }; -+}; -+ -+&i2c3 { -+ i2c-scl-falling-time-ns = <15>; -+ i2c-scl-rising-time-ns = <450>; -+ status = "okay"; -+}; -+ -+&i2c4 { -+ i2c-scl-falling-time-ns = <20>; -+ i2c-scl-rising-time-ns = <600>; -+ status = "okay"; -+ -+ fusb0: fusb30x@22 { -+ compatible = "fcs,fusb302"; -+ reg = <0x22>; -+ fcs,int_n = <&gpio1 RK_PA2 GPIO_ACTIVE_HIGH>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&fusb0_int_gpio>; -+ vbus-supply = <&vbus_typec>; -+ -+ connector { -+ compatible = "usb-c-connector"; -+ data-role = "host"; -+ label = "USB-C"; -+ op-sink-microwatt = <1000000>; -+ power-role = "dual"; -+ sink-pdos = -+ ; -+ source-pdos = -+ ; -+ try-power-role = "sink"; -+ -+ ports { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ port@0 { -+ reg = <0>; -+ -+ usbc_hs: endpoint { -+ remote-endpoint = -+ <&u2phy0_typec_hs>; -+ }; -+ }; -+ -+ port@1 { -+ reg = <1>; -+ -+ usbc_ss: endpoint { -+ remote-endpoint = -+ <&tcphy0_typec_ss>; -+ }; -+ }; -+ -+ port@2 { -+ reg = <2>; -+ -+ usbc_dp: endpoint { -+ remote-endpoint = -+ <&tcphy0_typec_dp>; -+ }; -+ }; -+ }; -+ }; -+ }; -+}; -+ -+&i2s1 { -+ #sound-dai-cells = <0>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2s_8ch_mclk_gpio>, <&i2s1_2ch_bus>; -+ rockchip,capture-channels = <8>; -+ rockchip,playback-channels = <8>; -+ status = "okay"; -+}; -+ -+&io_domains { -+ audio-supply = <&vcc_3v0>; -+ gpio1830-supply = <&vcc_3v0>; -+ sdmmc-supply = <&vcc_sdio>; -+ status = "okay"; -+}; -+ -+&pcie_phy { -+ status = "okay"; -+}; -+ -+&pcie0 { -+ bus-scan-delay-ms = <1000>; -+ ep-gpios = <&gpio2 RK_PD4 GPIO_ACTIVE_HIGH>; -+ max-link-speed = <2>; -+ num-lanes = <4>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pcie_clkreqn_cpm>; -+ vpcie0v9-supply = <&vcca0v9_s3>; -+ vpcie1v8-supply = <&vcca1v8_s3>; -+ vpcie3v3-supply = <&vcc3v3_ssd>; -+ status = "okay"; -+}; -+ -+&pinctrl { -+ buttons { -+ pwrbtn_gpio: pwrbtn-gpio { -+ rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ -+ lidbtn_gpio: lidbtn-gpio { -+ rockchip,pins = <1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ }; -+ -+ dc-charger { -+ dc_det_gpio: dc-det-gpio { -+ rockchip,pins = <4 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ }; -+ -+ es8316 { -+ hp_det_gpio: hp-det-gpio { -+ rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ }; -+ -+ fusb302x { -+ fusb0_int_gpio: fusb0-int-gpio { -+ rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ }; -+ -+ i2s1 { -+ i2s_8ch_mclk_gpio: i2s-8ch-mclk-gpio { -+ rockchip,pins = <4 RK_PA0 1 &pcfg_pull_none>; -+ }; -+ }; -+ -+ lcd-panel { -+ lcdvcc_en_gpio: lcdvcc-en-gpio { -+ rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ -+ panel_en_gpio: panel-en-gpio { -+ rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ -+ lcd_panel_reset_gpio: lcd-panel-reset-gpio { -+ rockchip,pins = <4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ }; -+ -+ leds { -+ pwrled_gpio: pwrled_gpio { -+ rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ -+ slpled_gpio: slpled_gpio { -+ rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ pmic { -+ pmic_int_l_gpio: pmic-int-l-gpio { -+ rockchip,pins = <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ -+ vsel1_gpio: vsel1-gpio { -+ rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>; -+ }; -+ -+ vsel2_gpio: vsel2-gpio { -+ rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>; -+ }; -+ }; -+ -+ sdcard { -+ sdmmc0_pwr_h_gpio: sdmmc0-pwr-h-gpio { -+ rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ -+ }; -+ -+ sdio-pwrseq { -+ wifi_enable_h_gpio: wifi-enable-h-gpio { -+ rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ usb-typec { -+ vcc5v0_typec0_en_gpio: vcc5v0-typec0-en-gpio { -+ rockchip,pins = <1 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ }; -+ -+ usb2 { -+ pwr_5v_gpio: pwr-5v-gpio { -+ rockchip,pins = <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ -+ vcc5v0_host_en_gpio: vcc5v0-host-en-gpio { -+ rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ wireless-bluetooth { -+ bt_wake_gpio: bt-wake-gpio { -+ rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ -+ bt_host_wake_gpio: bt-host-wake-gpio { -+ rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ -+ bt_reset_gpio: bt-reset-gpio { -+ rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+}; -+ -+&pmu_io_domains { -+ pmu1830-supply = <&vcc_3v0>; -+ status = "okay"; -+}; -+ -+&pwm0 { -+ status = "okay"; -+}; -+ -+&pwm2 { -+ status = "okay"; -+}; -+ -+&saradc { -+ vref-supply = <&vcca1v8_s3>; -+ status = "okay"; -+}; -+ -+&sdmmc { -+ bus-width = <4>; -+ cap-mmc-highspeed; -+ cap-sd-highspeed; -+ cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>; -+ disable-wp; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>; -+ sd-uhs-sdr104; -+ vmmc-supply = <&vcc3v0_sd>; -+ vqmmc-supply = <&vcc_sdio>; -+ status = "okay"; -+}; -+ -+&sdio0 { -+ bus-width = <4>; -+ cap-sd-highspeed; -+ cap-sdio-irq; -+ keep-power-in-suspend; -+ mmc-pwrseq = <&sdio_pwrseq>; -+ non-removable; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>; -+ sd-uhs-sdr104; -+ status = "okay"; -+}; -+ -+&sdhci { -+ bus-width = <8>; -+ mmc-hs200-1_8v; -+ non-removable; -+ status = "okay"; -+}; -+ -+&spi1 { -+ max-freq = <10000000>; -+ status = "okay"; -+ -+ spiflash: flash@0 { -+ compatible = "jedec,spi-nor"; -+ reg = <0>; -+ m25p,fast-read; -+ spi-max-frequency = <10000000>; -+ }; -+}; -+ -+&tcphy0 { -+ status = "okay"; -+}; -+ -+&tcphy0_dp { -+ port { -+ tcphy0_typec_dp: endpoint { -+ remote-endpoint = <&usbc_dp>; -+ }; -+ }; -+}; -+ -+&tcphy0_usb3 { -+ port { -+ tcphy0_typec_ss: endpoint { -+ remote-endpoint = <&usbc_ss>; -+ }; -+ }; -+}; -+ -+&tcphy1 { -+ status = "okay"; -+}; -+ -+&tsadc { -+ /* tshut mode 0:CRU 1:GPIO */ -+ rockchip,hw-tshut-mode = <1>; -+ /* tshut polarity 0:LOW 1:HIGH */ -+ rockchip,hw-tshut-polarity = <1>; -+ status = "okay"; -+}; -+ -+&u2phy0 { -+ status = "okay"; -+ -+ u2phy0_otg: otg-port { -+ status = "okay"; -+ }; -+ -+ u2phy0_host: host-port { -+ phy-supply = <&vcc5v0_otg>; -+ status = "okay"; -+ }; -+ -+ port { -+ u2phy0_typec_hs: endpoint { -+ remote-endpoint = <&usbc_hs>; -+ }; -+ }; -+}; -+ -+&u2phy1 { -+ status = "okay"; -+ -+ u2phy1_otg: otg-port { -+ status = "okay"; -+ }; -+ -+ u2phy1_host: host-port { -+ phy-supply = <&vcc5v0_otg>; -+ status = "okay"; -+ }; -+}; -+ -+&uart0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>; -+ uart-has-rtscts; -+ status = "okay"; -+ -+ bluetooth { -+ compatible = "brcm,bcm4345c5"; -+ clocks = <&rk808 1>; -+ clock-names = "lpo"; -+ device-wakeup-gpios = <&gpio2 RK_PD3 GPIO_ACTIVE_HIGH>; -+ host-wakeup-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>; -+ max-speed = <1500000>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&bt_host_wake_gpio &bt_wake_gpio &bt_reset_gpio>; -+ shutdown-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>; -+ vbat-supply = <&wifi_bat>; -+ vddio-supply = <&vcc_wl>; -+ }; -+}; -+ -+&uart2 { -+ status = "okay"; -+}; -+ -+&usb_host0_ehci { -+ status = "okay"; -+}; -+ -+&usb_host0_ohci { -+ status = "okay"; -+}; -+ -+&usb_host1_ehci { -+ status = "okay"; -+}; -+ -+&usb_host1_ohci { -+ status = "okay"; -+}; -+ -+&usbdrd3_0 { -+ status = "okay"; -+}; -+ -+&usbdrd_dwc3_0 { -+ dr_mode = "host"; -+ status = "okay"; -+}; -+ -+&usbdrd3_1 { -+ status = "okay"; -+}; -+ -+&usbdrd_dwc3_1 { -+ dr_mode = "host"; -+ status = "okay"; -+}; -+ -+&vopb { -+ status = "okay"; -+}; -+ -+&vopb_mmu { -+ status = "okay"; -+}; -+ -+&vopl { -+ status = "okay"; -+}; -+ -+&vopl_mmu { -+ status = "okay"; -+}; --- -2.26.1 - -From 699fa59c59af63692269e133590d7664335b65ed Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Mon, 20 Apr 2020 20:07:04 +0100 -Subject: [PATCH 5/5] Add initial support for the Pinebook Pro laptop from - Pine64. - -Specification: -- Rockchip RK3399 -- 4GB Dual-Channel LPDDR4 -- eMMC socket -- mSD card slot -- 128Mbit (16Mb) SPI Flash -- AP6256 for 11AC WiFi + BT5 -- 14 inch 1920*1080 eDP MiPi display -- Camera -- USB 3.0, 2.0 ports -- Type-C port with alt-mode display (DP 1.2) and 15W charge -- DC 5V/3A -- optional PCIe slot for NVMe SSD drive - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi | 43 ++++++++++ - arch/arm/mach-rockchip/rk3399/Kconfig | 8 ++ - board/pine64/pinebook-pro-rk3399/Kconfig | 15 ++++ - board/pine64/pinebook-pro-rk3399/MAINTAINERS | 8 ++ - board/pine64/pinebook-pro-rk3399/Makefile | 1 + - .../pinebook-pro-rk3399/pinebook-pro-rk3399.c | 76 +++++++++++++++++ - configs/pinebook-pro-rk3399_defconfig | 84 +++++++++++++++++++ - include/configs/pinebook-pro-rk3399.h | 29 +++++++ - 8 files changed, 264 insertions(+) - create mode 100644 arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi - create mode 100644 board/pine64/pinebook-pro-rk3399/Kconfig - create mode 100644 board/pine64/pinebook-pro-rk3399/MAINTAINERS - create mode 100644 board/pine64/pinebook-pro-rk3399/Makefile - create mode 100644 board/pine64/pinebook-pro-rk3399/pinebook-pro-rk3399.c - create mode 100644 configs/pinebook-pro-rk3399_defconfig - create mode 100644 include/configs/pinebook-pro-rk3399.h - -diff --git a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -new file mode 100644 -index 0000000000..1a2e24d3ef ---- /dev/null -+++ b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -@@ -0,0 +1,43 @@ -+// SPDX-License-Identifier: GPL-2.0+ -+/* -+ * Copyright (C) 2019 Peter Robinson -+ */ -+ -+#include "rk3399-u-boot.dtsi" -+#include "rk3399-sdram-lpddr4-100.dtsi" -+ -+/ { -+ aliases { -+ spi0 = &spi1; -+ }; -+ -+ chosen { -+ u-boot,spl-boot-order = "same-as-spl", &sdhci, &sdmmc; -+ }; -+}; -+ -+&i2c0 { -+ u-boot,dm-pre-reloc; -+}; -+ -+&rk808 { -+ u-boot,dm-pre-reloc; -+}; -+ -+&sdhci { -+ max-frequency = <25000000>; -+ u-boot,dm-pre-reloc; -+}; -+ -+&sdmmc { -+ max-frequency = <20000000>; -+ u-boot,dm-pre-reloc; -+}; -+ -+&spiflash { -+ u-boot,dm-pre-reloc; -+}; -+ -+&vdd_log { -+ regulator-init-microvolt = <950000>; -+}; -diff --git a/arch/arm/mach-rockchip/rk3399/Kconfig b/arch/arm/mach-rockchip/rk3399/Kconfig -index 927bb62a9f..254b9c5b4d 100644 ---- a/arch/arm/mach-rockchip/rk3399/Kconfig -+++ b/arch/arm/mach-rockchip/rk3399/Kconfig -@@ -19,6 +19,13 @@ config TARGET_EVB_RK3399 - with full function and physical connectors support like Type-C ports, - USB.0 host ports, LVDS, JTAG, MAC, SD card, HDMI, USB-to-serial... - -+config TARGET_PINEBOOK_PRO_RK3399 -+ bool "Pinebook Pro" -+ help -+ Pinebook Pro is a laptop based on the Rockchip rk3399 SoC -+ with 4Gb RAM, onboard eMMC, USB-C, a USB3 and USB2 port, -+ 1920*1080 screen and all the usual laptop features. -+ - config TARGET_PUMA_RK3399 - bool "Theobroma Systems RK3399-Q7 (Puma)" - help -@@ -144,6 +151,7 @@ endif # BOOTCOUNT_LIMIT - - source "board/firefly/roc-pc-rk3399/Kconfig" - source "board/google/gru/Kconfig" -+source "board/pine64/pinebook-pro-rk3399/Kconfig" - source "board/pine64/rockpro64_rk3399/Kconfig" - source "board/rockchip/evb_rk3399/Kconfig" - source "board/theobroma-systems/puma_rk3399/Kconfig" -diff --git a/board/pine64/pinebook-pro-rk3399/Kconfig b/board/pine64/pinebook-pro-rk3399/Kconfig -new file mode 100644 -index 0000000000..3bb7ca448e ---- /dev/null -+++ b/board/pine64/pinebook-pro-rk3399/Kconfig -@@ -0,0 +1,15 @@ -+if TARGET_PINEBOOK_PRO_RK3399 -+ -+config SYS_BOARD -+ default "pinebook-pro-rk3399" -+ -+config SYS_VENDOR -+ default "pine64" -+ -+config SYS_CONFIG_NAME -+ default "pinebook-pro-rk3399" -+ -+config BOARD_SPECIFIC_OPTIONS -+ def_bool y -+ -+endif -diff --git a/board/pine64/pinebook-pro-rk3399/MAINTAINERS b/board/pine64/pinebook-pro-rk3399/MAINTAINERS -new file mode 100644 -index 0000000000..7153eaf2e0 ---- /dev/null -+++ b/board/pine64/pinebook-pro-rk3399/MAINTAINERS -@@ -0,0 +1,8 @@ -+PINEBOOK_PRO -+M: Peter Robinson -+S: Maintained -+F: board/pine64/rk3399-pinebook-pro/ -+F: include/configs/rk3399-pinebook-pro.h -+F: arch/arm/dts/rk3399-pinebook-pro.dts -+F: arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -+F: configs/pinebook-pro-rk3399_defconfig -diff --git a/board/pine64/pinebook-pro-rk3399/Makefile b/board/pine64/pinebook-pro-rk3399/Makefile -new file mode 100644 -index 0000000000..2f692a12a6 ---- /dev/null -+++ b/board/pine64/pinebook-pro-rk3399/Makefile -@@ -0,0 +1 @@ -+obj-y += pinebook-pro-rk3399.o -diff --git a/board/pine64/pinebook-pro-rk3399/pinebook-pro-rk3399.c b/board/pine64/pinebook-pro-rk3399/pinebook-pro-rk3399.c -new file mode 100644 -index 0000000000..01421cbac2 ---- /dev/null -+++ b/board/pine64/pinebook-pro-rk3399/pinebook-pro-rk3399.c -@@ -0,0 +1,76 @@ -+/* -+ * (C) Copyright 2016 Rockchip Electronics Co., Ltd -+ * (C) Copyright 2020 Peter Robinson -+ * -+ * SPDX-License-Identifier: GPL-2.0+ -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#define GRF_IO_VSEL_BT565_SHIFT 0 -+#define PMUGRF_CON0_VSEL_SHIFT 8 -+ -+#ifndef CONFIG_SPL_BUILD -+int board_early_init_f(void) -+{ -+ struct udevice *regulator; -+ int ret; -+ -+ ret = regulator_get_by_platname("vcc5v0_usb", ®ulator); -+ if (ret) { -+ debug("%s vcc5v0_usb init fail! ret %d\n", __func__, ret); -+ goto out; -+ } -+ -+ ret = regulator_set_enable(regulator, true); -+ if (ret) -+ debug("%s vcc5v0-host-en-gpio set fail! ret %d\n", __func__, ret); -+ -+out: -+ return 0; -+} -+#endif -+ -+#ifdef CONFIG_MISC_INIT_R -+static void setup_iodomain(void) -+{ -+ struct rk3399_grf_regs *grf = -+ syscon_get_first_range(ROCKCHIP_SYSCON_GRF); -+ struct rk3399_pmugrf_regs *pmugrf = -+ syscon_get_first_range(ROCKCHIP_SYSCON_PMUGRF); -+ -+ /* BT565 is in 1.8v domain */ -+ rk_setreg(&grf->io_vsel, 1 << GRF_IO_VSEL_BT565_SHIFT); -+ -+ /* Set GPIO1 1.8v/3.0v source select to PMU1830_VOL */ -+ rk_setreg(&pmugrf->soc_con0, 1 << PMUGRF_CON0_VSEL_SHIFT); -+} -+ -+int misc_init_r(void) -+{ -+ const u32 cpuid_offset = 0x7; -+ const u32 cpuid_length = 0x10; -+ u8 cpuid[cpuid_length]; -+ int ret; -+ -+ setup_iodomain(); -+ -+ ret = rockchip_cpuid_from_efuse(cpuid_offset, cpuid_length, cpuid); -+ if (ret) -+ return ret; -+ -+ ret = rockchip_cpuid_set(cpuid, cpuid_length); -+ if (ret) -+ return ret; -+ -+ return ret; -+} -+#endif -diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig -new file mode 100644 -index 0000000000..0e9f0ec250 ---- /dev/null -+++ b/configs/pinebook-pro-rk3399_defconfig -@@ -0,0 +1,84 @@ -+CONFIG_ARM=y -+CONFIG_ARCH_ROCKCHIP=y -+CONFIG_SYS_TEXT_BASE=0x00200000 -+CONFIG_ENV_OFFSET=0x3F8000 -+CONFIG_ROCKCHIP_RK3399=y -+CONFIG_RAM_RK3399_LPDDR4=y -+CONFIG_NR_DRAM_BANKS=1 -+CONFIG_TARGET_PINEBOOK_PRO_RK3399=y -+CONFIG_BAUDRATE=1500000 -+CONFIG_DEBUG_UART=y -+CONFIG_DEBUG_UART_SHIFT=2 -+CONFIG_DEBUG_UART_BASE=0xFF1A0000 -+CONFIG_DEBUG_UART_CLOCK=24000000 -+CONFIG_SPL_SPI_SUPPORT=y -+CONFIG_SPL_SPI_FLASH_SUPPORT=y -+CONFIG_SPL_MTD_SUPPORT=y -+CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-pinebook-pro.dtb" -+CONFIG_MISC_INIT_R=y -+CONFIG_DISPLAY_BOARDINFO_LATE=y -+# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set -+CONFIG_SPL_STACK_R=y -+CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000 -+CONFIG_TPL=y -+CONFIG_SPL_OF_CONTROL=y -+CONFIG_DEFAULT_DEVICE_TREE="rk3399-pinebook-pro" -+CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" -+CONFIG_SYS_RELOC_GD_ENV_ADDR=y -+CONFIG_CMD_BOOTZ=y -+CONFIG_CMD_GPIO=y -+CONFIG_CMD_GPT=y -+CONFIG_CMD_I2C=y -+CONFIG_CMD_MMC=y -+CONFIG_CMD_MTDPARTS=y -+CONFIG_CMD_PMIC=y -+CONFIG_CMD_REGULATOR=y -+# CONFIG_CMD_SETEXPR is not set -+CONFIG_CMD_SF=y -+CONFIG_CMD_TIME=y -+CONFIG_CMD_USB=y -+CONFIG_ROCKCHIP_GPIO=y -+CONFIG_SYS_I2C_ROCKCHIP=y -+CONFIG_BOOTDELAY=3 -+CONFIG_LED=y -+CONFIG_LED_GPIO=y -+CONFIG_MISC=y -+CONFIG_ROCKCHIP_EFUSE=y -+CONFIG_MMC_DW=y -+CONFIG_MMC_DW_ROCKCHIP=y -+CONFIG_MMC_SDHCI=y -+CONFIG_MMC_SDHCI_SDMA=y -+CONFIG_MMC_SDHCI_ROCKCHIP=y -+CONFIG_ROCKCHIP_SPI=y -+CONFIG_SF_DEFAULT_SPEED=20000000 -+CONFIG_SPI_FLASH=y -+CONFIG_SPI_FLASH_GIGADEVICE=y -+CONFIG_SPI_FLASH_WINBOND=y -+CONFIG_DM_ETH=y -+CONFIG_PMIC_RK8XX=y -+CONFIG_DM_PMIC_FAN53555=y -+CONFIG_REGULATOR_PWM=y -+CONFIG_REGULATOR_RK8XX=y -+CONFIG_PWM_ROCKCHIP=y -+CONFIG_SYSRESET=y -+CONFIG_USB=y -+CONFIG_USB_XHCI_HCD=y -+CONFIG_USB_XHCI_DWC3=y -+# CONFIG_USB_XHCI_ROCKCHIP is not set -+CONFIG_USB_EHCI_HCD=y -+CONFIG_USB_EHCI_GENERIC=y -+CONFIG_USB_DWC3=y -+CONFIG_ROCKCHIP_USB2_PHY=y -+CONFIG_USB_HOST_ETHER=y -+CONFIG_USB_ETHER_ASIX=y -+CONFIG_USB_ETHER_RTL8152=y -+CONFIG_USB_KEYBOARD=y -+CONFIG_USE_TINY_PRINTF=y -+CONFIG_SPL_TINY_MEMSET=y -+CONFIG_ERRNO_STR=y -+CONFIG_DM_VIDEO=y -+CONFIG_VIDEO_BPP16=y -+CONFIG_VIDEO_BPP32=y -+CONFIG_DISPLAY=y -+CONFIG_VIDEO_ROCKCHIP=y -+CONFIG_DISPLAY_ROCKCHIP_EDP=y -diff --git a/include/configs/pinebook-pro-rk3399.h b/include/configs/pinebook-pro-rk3399.h -new file mode 100644 -index 0000000000..423d742a79 ---- /dev/null -+++ b/include/configs/pinebook-pro-rk3399.h -@@ -0,0 +1,29 @@ -+/* -+ * Copyright (C) 2016 Rockchip Electronics Co., Ltd -+ * Copyright (C) 2020 Peter Robinson -+ * -+ * SPDX-License-Identifier: GPL-2.0+ -+ */ -+ -+#ifndef __PINEBOOK_PRO_RK3399_H -+#define __PINEBOOK_PRO_RK3399_H -+ -+#define ROCKCHIP_DEVICE_SETTINGS \ -+ "stdin=serial,usbkbd\0" \ -+ "stdout=serial,vidconsole\0" \ -+ "stderr=serial,vidconsole\0" -+ -+#include -+ -+#if defined(CONFIG_ENV_IS_IN_MMC) -+#define CONFIG_SYS_MMC_ENV_DEV 0 -+#elif defined(CONFIG_ENV_IS_IN_SPI_FLASH) -+#define CONFIG_ENV_SECT_SIZE (8 * 1024) -+#endif -+ -+#undef CONFIG_SYS_SPI_U_BOOT_OFFS -+#define CONFIG_SYS_SPI_U_BOOT_OFFS 1024 * 512 -+ -+#define SDRAM_BANK_SIZE (2UL << 30) -+ -+#endif --- -2.26.1 -From 8239d91c6a120fb07df1f84c6441545856d968af Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Mon, 20 Apr 2020 22:43:05 +0100 -Subject: [PATCH] pinebook pro: enable rng for KASLR - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi | 4 ++++ - configs/pinebook-pro-rk3399_defconfig | 2 ++ - 2 files changed, 6 insertions(+) - -diff --git a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -index 1a2e24d3ef..296321d697 100644 ---- a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -@@ -24,6 +24,10 @@ - u-boot,dm-pre-reloc; - }; - -+&rng { -+ status = "okay"; -+}; -+ - &sdhci { - max-frequency = <25000000>; - u-boot,dm-pre-reloc; -diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig -index 0e9f0ec250..c15c17a1b0 100644 ---- a/configs/pinebook-pro-rk3399_defconfig -+++ b/configs/pinebook-pro-rk3399_defconfig -@@ -59,6 +59,8 @@ CONFIG_PMIC_RK8XX=y - CONFIG_DM_PMIC_FAN53555=y - CONFIG_REGULATOR_PWM=y - CONFIG_REGULATOR_RK8XX=y -+CONFIG_DM_RNG=y -+CONFIG_RNG_ROCKCHIP=y - CONFIG_PWM_ROCKCHIP=y - CONFIG_SYSRESET=y - CONFIG_USB=y --- -2.26.1 diff --git a/mmc-sdhci-Fix-HISPD-bit-handling.patch b/mmc-sdhci-Fix-HISPD-bit-handling.patch new file mode 100644 index 0000000..03e1123 --- /dev/null +++ b/mmc-sdhci-Fix-HISPD-bit-handling.patch @@ -0,0 +1,182 @@ +From patchwork Wed Jun 10 11:43:47 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Jagan Teki +X-Patchwork-Id: 1306828 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=amarulasolutions.com +Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; + unprotected) header.d=amarulasolutions.com header.i=@amarulasolutions.com + header.a=rsa-sha256 header.s=google header.b=Q+0/eSrJ; + dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 49hlWg1F7rz9sRW + for ; Wed, 10 Jun 2020 21:44:12 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id E30A9813BC; + Wed, 10 Jun 2020 13:44:06 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=amarulasolutions.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; + unprotected) header.d=amarulasolutions.com header.i=@amarulasolutions.com + header.b="Q+0/eSrJ"; dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 5063381578; Wed, 10 Jun 2020 13:44:05 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, + DKIM_VALID,DKIM_VALID_AU,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mail-pj1-x1042.google.com (mail-pj1-x1042.google.com + [IPv6:2607:f8b0:4864:20::1042]) + (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 3B4D28006D + for ; Wed, 10 Jun 2020 13:44:01 +0200 (CEST) +Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) + header.from=amarulasolutions.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=jagan@amarulasolutions.com +Received: by mail-pj1-x1042.google.com with SMTP id jz3so753364pjb.0 + for ; Wed, 10 Jun 2020 04:44:01 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=amarulasolutions.com; s=google; + h=from:to:cc:subject:date:message-id:mime-version + :content-transfer-encoding; + bh=O2V5XL3BREsrFDwBw4n7RZ8T6utX5AdnG2I6ivLZnCA=; + b=Q+0/eSrJuVhFqQmrlsBwCwCZAbCe2xEaqucnx2B5U1ugNqUWmowKDVxmV5llgcsrnJ + zliXEiVt8Az8b9zOxZM/0Tej8xH1pjdM08pw2sA/I0IEIg2fHq6zUioAR/MCZ4rbf9EN + j/l6kIrf0ADHDtPscUlgRaN0nVou3/T0cGpcA= +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20161025; + h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version + :content-transfer-encoding; + bh=O2V5XL3BREsrFDwBw4n7RZ8T6utX5AdnG2I6ivLZnCA=; + b=U9gtAvMEdX23LPpZhHK26RY/0f9o9C22NUE5HjIBTjpytNzjSO+1cHxLPFk9lQyNzK + A0693YATc8RhLMFiRS1libP6Urk18kkSIzdwMfAYBN3jRuTRT88vPg3jKUJhK+p1R/Vz + kwzTq1MlBG8N2xNCzTM9ajfCl36013fN+MiLr9xkej7L+zLSpiBj+8z3MCmHKzj1hn1y + 2gOT5lVWyZydc/Ao516He/rhFhiRfGBf1w/KbCXfSg0x9kQ83UO4FPFPjDs3TiWm47PC + WS4+muMzuJIDAm+rZNt8iGY7igpHHzT51vBqF70ti3mCE1NFPQqzjWc4M8WuVFx84vh9 + LPjA== +X-Gm-Message-State: AOAM533ux1c2iDQS6fhMmnMScouMQxlbt1o1Hb7wwTLlbsql4mLEXoL/ + kq6k/AcVEksPK0a3hzH6EWbhMQ== +X-Google-Smtp-Source: ABdhPJxfGS37PA5Fx79Ub2piTMRhJFMfO0r/k3qlpvGvsVv9giEauDno4rbVNspBFxzzTtqDA1vwmw== +X-Received: by 2002:a17:90a:9484:: with SMTP id + s4mr2691977pjo.30.1591789439428; + Wed, 10 Jun 2020 04:43:59 -0700 (PDT) +Received: from localhost.localdomain ([2405:201:c809:c7d5:9daa:1b72:7bd0:50df]) + by smtp.gmail.com with ESMTPSA id y4sm12934672pfr.182.2020.06.10.04.43.54 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Wed, 10 Jun 2020 04:43:58 -0700 (PDT) +From: Jagan Teki +To: Peng Fan , Jaehoon Chung , + Kever Yang +Cc: Marc Zyngier , sunil@amarulasolutions.com, + u-boot@lists.denx.de, linux-rockchip@lists.infradead.org, + linux-amarula@amarulasolutions.com, + Jagan Teki , + Robin Murphy +Subject: [PATCH v3] mmc: sdhci: Fix HISPD bit handling +Date: Wed, 10 Jun 2020 17:13:47 +0530 +Message-Id: <20200610114347.118501-1-jagan@amarulasolutions.com> +X-Mailer: git-send-email 2.25.1 +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +SDHCI HISPD bits need to be configured based on desired mmc +timings mode and some HISPD quirks. + +So, handle the HISPD bit based on the mmc computed selected +mode(timing parameter) rather than fixed mmc card clock +frequency. + +Linux handle the HISPD similar like this in below commit, + +commit <501639bf2173> ("mmc: sdhci: fix SDHCI_QUIRK_NO_HISPD_BIT handling") + +This eventually fixed the mmc write issue observed in +rk3399 sdhci controller. + +Bug log for refernece, +=> gpt write mmc 0 $partitions +Writing GPT: mmc write failed +** Can't write to device 0 ** +** Can't write to device 0 ** +error! + +Cc: Robin Murphy +Cc: Kever Yang +Cc: Peng Fan +Reviewed-by: Jaehoon Chung +Tested-by: Marc Zyngier # nanopc-t4 +Tested-by: Suniel Mahesh # roc-rk3399-pc +Signed-off-by: Jagan Teki +--- +Changes for v3: +- use && for quirk check. + + drivers/mmc/sdhci.c | 23 +++++++++++++++-------- + 1 file changed, 15 insertions(+), 8 deletions(-) + +diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c +index 92cc8434af..a7db278a0e 100644 +--- a/drivers/mmc/sdhci.c ++++ b/drivers/mmc/sdhci.c +@@ -594,14 +594,21 @@ static int sdhci_set_ios(struct mmc *mmc) + ctrl &= ~SDHCI_CTRL_4BITBUS; + } + +- if (mmc->clock > 26000000) +- ctrl |= SDHCI_CTRL_HISPD; +- else +- ctrl &= ~SDHCI_CTRL_HISPD; +- +- if ((host->quirks & SDHCI_QUIRK_NO_HISPD_BIT) || +- (host->quirks & SDHCI_QUIRK_BROKEN_HISPD_MODE)) +- ctrl &= ~SDHCI_CTRL_HISPD; ++ if (!(host->quirks & SDHCI_QUIRK_NO_HISPD_BIT) && ++ !(host->quirks & SDHCI_QUIRK_BROKEN_HISPD_MODE)) { ++ if (mmc->selected_mode == MMC_HS || ++ mmc->selected_mode == SD_HS || ++ mmc->selected_mode == MMC_DDR_52 || ++ mmc->selected_mode == MMC_HS_200 || ++ mmc->selected_mode == MMC_HS_400 || ++ mmc->selected_mode == UHS_SDR25 || ++ mmc->selected_mode == UHS_SDR50 || ++ mmc->selected_mode == UHS_SDR104 || ++ mmc->selected_mode == UHS_DDR50) ++ ctrl |= SDHCI_CTRL_HISPD; ++ else ++ ctrl &= ~SDHCI_CTRL_HISPD; ++ } + + sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL); + diff --git a/rockchip-Pinebook-Pro-Fixes.patch b/rockchip-Pinebook-Pro-Fixes.patch new file mode 100644 index 0000000..0b0a2d7 --- /dev/null +++ b/rockchip-Pinebook-Pro-Fixes.patch @@ -0,0 +1,200 @@ +From e27621a7c2c0e090977c17f604093c720ca01fe4 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Mon, 8 Jun 2020 20:31:33 +0100 +Subject: [PATCH 1/3] rockchip: Pinebook Pro: enable rng to provide an entropy + source + +Enable the rng so UEFI can provide entropy for KASLR + +Signed-off-by: Peter Robinson +--- + arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi | 4 ++++ + arch/arm/dts/rk3399-rockpro64-u-boot.dtsi | 4 ++++ + configs/pinebook-pro-rk3399_defconfig | 2 ++ + 3 files changed, 10 insertions(+) + +diff --git a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi +index 1a2e24d3ef..296321d697 100644 +--- a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi ++++ b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi +@@ -24,6 +24,10 @@ + u-boot,dm-pre-reloc; + }; + ++&rng { ++ status = "okay"; ++}; ++ + &sdhci { + max-frequency = <25000000>; + u-boot,dm-pre-reloc; +diff --git a/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi b/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi +index bac09df4a3..cb8991aa25 100644 +--- a/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi ++++ b/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi +@@ -19,6 +19,10 @@ + }; + }; + ++&rng { ++ status = "okay"; ++}; ++ + &spi1 { + spi_flash: flash@0 { + u-boot,dm-pre-reloc; +diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig +index 0c129b9aeb..21eecf477c 100644 +--- a/configs/pinebook-pro-rk3399_defconfig ++++ b/configs/pinebook-pro-rk3399_defconfig +@@ -54,6 +54,8 @@ CONFIG_DM_PMIC_FAN53555=y + CONFIG_PMIC_RK8XX=y + CONFIG_REGULATOR_PWM=y + CONFIG_REGULATOR_RK8XX=y ++CONFIG_DM_RNG=y ++CONFIG_RNG_ROCKCHIP=y + CONFIG_PWM_ROCKCHIP=y + CONFIG_RAM_RK3399_LPDDR4=y + CONFIG_DM_RESET=y +-- +2.26.2 + +From 99a3c9ba5a8ab7a94aa700649e031f53d498e857 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Mon, 8 Jun 2020 22:23:05 +0100 +Subject: [PATCH 2/3] rockchip: Pinebook Pro: Fix USB and the USB attached + keyboard + +The built in keyboard on the Pinebook Pro is attached via USB so +fix this up to ensure USB works as expected. + +Signed-off-by: Peter Robinson +--- + configs/pinebook-pro-rk3399_defconfig | 5 +++++ + include/configs/pinebook-pro-rk3399.h | 3 +++ + 2 files changed, 8 insertions(+) + +diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig +index 21eecf477c..733463556a 100644 +--- a/configs/pinebook-pro-rk3399_defconfig ++++ b/configs/pinebook-pro-rk3399_defconfig +@@ -61,6 +61,8 @@ CONFIG_RAM_RK3399_LPDDR4=y + CONFIG_DM_RESET=y + CONFIG_BAUDRATE=1500000 + CONFIG_DEBUG_UART_SHIFT=2 ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="usb start" + CONFIG_ROCKCHIP_SPI=y + CONFIG_SYSRESET=y + CONFIG_USB=y +@@ -68,8 +70,11 @@ CONFIG_USB_XHCI_HCD=y + CONFIG_USB_XHCI_DWC3=y + CONFIG_USB_EHCI_HCD=y + CONFIG_USB_EHCI_GENERIC=y ++CONFIG_USB_OHCI_HCD=y ++CONFIG_USB_OHCI_GENERIC=y + CONFIG_USB_DWC3=y + CONFIG_ROCKCHIP_USB2_PHY=y ++CONFIG_DM_KEYBOARD=y + CONFIG_USB_KEYBOARD=y + CONFIG_USB_HOST_ETHER=y + CONFIG_USB_ETHER_ASIX=y +diff --git a/include/configs/pinebook-pro-rk3399.h b/include/configs/pinebook-pro-rk3399.h +index 4bc8802d11..d910830582 100644 +--- a/include/configs/pinebook-pro-rk3399.h ++++ b/include/configs/pinebook-pro-rk3399.h +@@ -25,4 +25,7 @@ + + #define SDRAM_BANK_SIZE (2UL << 30) + ++#define CONFIG_USB_OHCI_NEW ++#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 2 ++ + #endif +-- +2.26.2 + +From 64d43a4f0a135486a9a524b107c853831e492eb6 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Mon, 8 Jun 2020 23:41:50 +0100 +Subject: [PATCH 3/3] rockchip: Pinebook Pro: Fix SPI flash and store env on it + +Some minor fixes for SPI flash on the Pinebook Pro and also +default to saving environment to the SPI flash as it's +guaranteed to be on board. + +Signed-off-by: Peter Robinson +--- + arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi | 6 +++++- + configs/pinebook-pro-rk3399_defconfig | 3 +++ + include/configs/pinebook-pro-rk3399.h | 9 --------- + 3 files changed, 8 insertions(+), 10 deletions(-) + +diff --git a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi +index 296321d697..ded7db0aef 100644 +--- a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi ++++ b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi +@@ -12,7 +12,11 @@ + }; + + chosen { +- u-boot,spl-boot-order = "same-as-spl", &sdhci, &sdmmc; ++ u-boot,spl-boot-order = "same-as-spl", &sdhci, &spiflash, &sdmmc; ++ }; ++ ++ config { ++ u-boot,spl-payload-offset = <0x60000>; /* @ 384KB */ + }; + }; + +diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig +index 733463556a..18b2d74253 100644 +--- a/configs/pinebook-pro-rk3399_defconfig ++++ b/configs/pinebook-pro-rk3399_defconfig +@@ -1,6 +1,7 @@ + CONFIG_ARM=y + CONFIG_ARCH_ROCKCHIP=y + CONFIG_SYS_TEXT_BASE=0x00200000 ++CONFIG_ENV_SIZE=0x8000 + CONFIG_ROCKCHIP_RK3399=y + CONFIG_TARGET_PINEBOOK_PRO_RK3399=y + CONFIG_NR_DRAM_BANKS=1 +@@ -17,6 +18,7 @@ CONFIG_DISPLAY_BOARDINFO_LATE=y + CONFIG_SPL_STACK_R=y + CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000 + CONFIG_SPL_MTD_SUPPORT=y ++CONFIG_SPL_SPI_LOAD=y + CONFIG_TPL=y + CONFIG_CMD_BOOTZ=y + CONFIG_CMD_GPIO=y +@@ -32,6 +34,7 @@ CONFIG_CMD_REGULATOR=y + CONFIG_SPL_OF_CONTROL=y + CONFIG_DEFAULT_DEVICE_TREE="rk3399-pinebook-pro" + CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" ++CONFIG_ENV_IS_IN_SPI_FLASH=y + CONFIG_SYS_RELOC_GD_ENV_ADDR=y + CONFIG_ROCKCHIP_GPIO=y + CONFIG_SYS_I2C_ROCKCHIP=y +diff --git a/include/configs/pinebook-pro-rk3399.h b/include/configs/pinebook-pro-rk3399.h +index d910830582..d478b19917 100644 +--- a/include/configs/pinebook-pro-rk3399.h ++++ b/include/configs/pinebook-pro-rk3399.h +@@ -14,15 +14,6 @@ + + #include + +-#if defined(CONFIG_ENV_IS_IN_MMC) +-#define CONFIG_SYS_MMC_ENV_DEV 0 +-#elif defined(CONFIG_ENV_IS_IN_SPI_FLASH) +-#define CONFIG_ENV_SECT_SIZE (8 * 1024) +-#endif +- +-#undef CONFIG_SYS_SPI_U_BOOT_OFFS +-#define CONFIG_SYS_SPI_U_BOOT_OFFS 1024 * 512 +- + #define SDRAM_BANK_SIZE (2UL << 30) + + #define CONFIG_USB_OHCI_NEW +-- +2.26.2 + diff --git a/rockpro64-limit-speed-on-mSD-slot.patch b/rockpro64-limit-speed-on-mSD-slot.patch deleted file mode 100644 index 789ea26..0000000 --- a/rockpro64-limit-speed-on-mSD-slot.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 0b1a5b30d6d8ad2af9f5518b65fbbdc9e080d41d Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Mon, 20 Apr 2020 22:03:00 +0100 -Subject: [PATCH] rockpro64: limit speed on mSD slot - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/rk3399-rockpro64-u-boot.dtsi | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi b/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi -index deaa3efd39..e5e05f5a7f 100644 ---- a/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi -@@ -19,6 +19,10 @@ - status = "okay"; - }; - -+&sdmmc { -+ max-frequency = <20000000>; -+}; -+ - &vdd_center { - regulator-min-microvolt = <950000>; - regulator-max-microvolt = <950000>; --- -2.26.1 - diff --git a/rpi4-Enable-support-for-the-XHCI-controller-on-RPI.patch b/rpi4-Enable-support-for-the-XHCI-controller-on-RPI.patch deleted file mode 100644 index 3b9726c..0000000 --- a/rpi4-Enable-support-for-the-XHCI-controller-on-RPI.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 50e353960a36f381f855b34b40117c64dc44ad33 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Tue, 12 May 2020 23:23:01 +0100 -Subject: [PATCH] config: Enable support for the XHCI controller on RPI4 board - -From: Marek Szyprowski - -This requires enabling BRCMSTB PCIe and XHCI_PCI drivers as well as PCI -and USB commands. To get it working one has to call the following commands: -"pci enum; usb start;", thus such commands have been added to the default -"preboot" environment variable. One has to update their environment if it -is already configured to get this feature working out of the box. - -Signed-off-by: Marek Szyprowski -Signed-off-by: Sylwester Nawrocki ---- - configs/rpi_4_defconfig | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig -index f1c8f5ef7d..b3e7037bf5 100644 ---- a/configs/rpi_4_defconfig -+++ b/configs/rpi_4_defconfig -@@ -8,6 +8,8 @@ CONFIG_NR_DRAM_BANKS=2 - CONFIG_DISTRO_DEFAULTS=y - CONFIG_OF_BOARD_SETUP=y - CONFIG_ARCH_FIXUP_FDT_MEMORY=y -+CONFIG_USE_PREBOOT=y -+CONFIG_PREBOOT="pci enum; usb start;" - CONFIG_MISC_INIT_R=y - # CONFIG_DISPLAY_CPUINFO is not set - # CONFIG_DISPLAY_BOARDINFO is not set -@@ -15,6 +17,8 @@ CONFIG_SYS_PROMPT="U-Boot> " - CONFIG_CMD_DFU=y - CONFIG_CMD_GPIO=y - CONFIG_CMD_MMC=y -+CONFIG_CMD_PCI=y -+CONFIG_CMD_USB=y - CONFIG_CMD_FS_UUID=y - CONFIG_OF_BOARD=y - CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" -@@ -27,12 +31,17 @@ CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_BCM2835=y - CONFIG_DM_ETH=y - CONFIG_BCMGENET=y -+CONFIG_PCI=y -+CONFIG_DM_PCI=y -+CONFIG_PCI_BRCMSTB=y - CONFIG_PINCTRL=y - # CONFIG_PINCTRL_GENERIC is not set - # CONFIG_REQUIRE_SERIAL_CONSOLE is not set - CONFIG_USB=y - CONFIG_DM_USB=y - CONFIG_DM_USB_GADGET=y -+CONFIG_USB_XHCI_HCD=y -+CONFIG_USB_XHCI_PCI=y - CONFIG_USB_GADGET=y - CONFIG_USB_GADGET_MANUFACTURER="FSL" - CONFIG_USB_GADGET_VENDOR_NUM=0x0525 --- -2.26.2 - diff --git a/rpi4-enable-ARCH_FIXUP_FDT_MEMORY.patch b/rpi4-enable-ARCH_FIXUP_FDT_MEMORY.patch deleted file mode 100644 index a9c00c3..0000000 --- a/rpi4-enable-ARCH_FIXUP_FDT_MEMORY.patch +++ /dev/null @@ -1,40 +0,0 @@ -From c9a14b02aea84a37407df7d295e0f76eb529f472 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Tue, 12 May 2020 11:29:00 +0100 -Subject: [PATCH] rpi4: enable ARCH_FIXUP_FDT_MEMORY - -Signed-off-by: Peter Robinson ---- - configs/rpi_4_32b_defconfig | 2 +- - configs/rpi_4_defconfig | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig -index dd7da1cf06..9a0437d376 100644 ---- a/configs/rpi_4_32b_defconfig -+++ b/configs/rpi_4_32b_defconfig -@@ -7,7 +7,7 @@ - CONFIG_NR_DRAM_BANKS=2 - CONFIG_DISTRO_DEFAULTS=y - CONFIG_OF_BOARD_SETUP=y --# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set -+CONFIG_ARCH_FIXUP_FDT_MEMORY=y - CONFIG_MISC_INIT_R=y - # CONFIG_DISPLAY_CPUINFO is not set - # CONFIG_DISPLAY_BOARDINFO is not set -diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig -index 6eeec4592e..b3e7037bf5 100644 ---- a/configs/rpi_4_defconfig -+++ b/configs/rpi_4_defconfig -@@ -7,7 +7,7 @@ - CONFIG_NR_DRAM_BANKS=2 - CONFIG_DISTRO_DEFAULTS=y - CONFIG_OF_BOARD_SETUP=y --# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set -+CONFIG_ARCH_FIXUP_FDT_MEMORY=y - CONFIG_MISC_INIT_R=y - # CONFIG_DISPLAY_CPUINFO is not set - # CONFIG_DISPLAY_BOARDINFO is not set --- -2.26.2 - diff --git a/sources b/sources index 926a830..e899314 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2020.07-rc2.tar.bz2) = d4ee96a76cde9305a8733602ce8f9505412f9118e5625f3154249d302445e1c9f970bcf38abb63536129885f3443d1c9fdf9c4e8851e2c1655050d1ebcea7bd2 +SHA512 (u-boot-2020.07-rc4.tar.bz2) = 81fb2cfaabe2e20addc174798fa7f6506d51bd32aafac6698758417575bd85bb95d476b619e8d78480c0ccef6424f8b6de59c76bc48a555b7b4105acf194f3f8 diff --git a/uboot-tools.spec b/uboot-tools.spec index 2c6e05f..012dcdb 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -%global candidate rc2 +%global candidate rc4 Name: uboot-tools Version: 2020.07 -Release: 0.2%{?candidate:.%{candidate}}%{?dist} +Release: 0.3%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -23,22 +23,21 @@ Patch2: uefi-use-Fedora-specific-path-name.patch # Board fixes and enablement Patch4: usb-kbd-fixes.patch Patch5: dragonboard-fixes.patch +# mmc fix +Patch6: mmc-sdhci-Fix-HISPD-bit-handling.patch # Tegra improvements Patch10: arm-tegra-define-fdtfile-option-for-distro-boot.patch Patch11: arm-add-BOOTENV_EFI_SET_FDTFILE_FALLBACK-for-tegra186-be.patch -# Rockchips improvements -Patch12: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch -Patch13: initial-support-for-the-Pinebook-Pro-laptop-from.patch -Patch14: rockpro64-limit-speed-on-mSD-slot.patch # AllWinner improvements -Patch15: AllWinner-Pine64-bits.patch +Patch12: AllWinner-Pine64-bits.patch +# Rockchips improvements +Patch13: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch +Patch14: rockchip-Pinebook-Pro-Fixes.patch # RPi4 Patch16: USB-host-support-for-Raspberry-Pi-4-board-64-bit.patch Patch17: usb-xhci-Load-Raspberry-Pi-4-VL805-s-firmware.patch Patch18: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch -Patch19: rpi4-enable-ARCH_FIXUP_FDT_MEMORY.patch -Patch20: rpi4-Enable-support-for-the-XHCI-controller-on-RPI.patch BuildRequires: bc BuildRequires: dtc @@ -252,6 +251,10 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Wed Jun 10 2020 Peter Robinson - 2020.07-0.3.rc4 +- 2020.07 RC4 +- Minor updates and other fixes + * Tue May 12 2020 Peter Robinson - 2020.07-0.2.rc2 - 2020.07 RC2 - Minor device updates From aea19bdfee297ce6704f16130d83ecdd6cab808a Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 18 Jun 2020 16:01:52 +0100 Subject: [PATCH 007/271] Update various patches to latest upstream --- ...I-Fix-PSCI-support-for-OF-live-trees.patch | 300 +++++++++ mmc-sdhci-Fix-HISPD-bit-handling.patch | 122 ++-- uboot-tools.spec | 8 +- ...Load-Raspberry-Pi-4-VL805-s-firmware.patch | 623 ++++++++++++++---- 4 files changed, 874 insertions(+), 179 deletions(-) create mode 100644 firmware-PSCI-Fix-PSCI-support-for-OF-live-trees.patch diff --git a/firmware-PSCI-Fix-PSCI-support-for-OF-live-trees.patch b/firmware-PSCI-Fix-PSCI-support-for-OF-live-trees.patch new file mode 100644 index 0000000..134d436 --- /dev/null +++ b/firmware-PSCI-Fix-PSCI-support-for-OF-live-trees.patch @@ -0,0 +1,300 @@ +From patchwork Thu Jun 18 11:54:38 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Jon Hunter +X-Patchwork-Id: 1312024 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=pass (p=none dis=none) header.from=nvidia.com +Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; + unprotected) header.d=nvidia.com header.i=@nvidia.com header.a=rsa-sha256 + header.s=n1 header.b=MEPdTgP3; dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest + SHA256) (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 49ngNv025pz9sRh + for ; Thu, 18 Jun 2020 21:55:26 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id E19DD82081; + Thu, 18 Jun 2020 13:55:17 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=nvidia.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=nvidia.com header.i=@nvidia.com header.b="MEPdTgP3"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 19DC182082; Thu, 18 Jun 2020 13:55:16 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,SPF_HELO_NONE,URIBL_BLOCKED + autolearn=ham autolearn_force=no version=3.4.2 +Received: from hqnvemgate25.nvidia.com (hqnvemgate25.nvidia.com + [216.228.121.64]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 644B8814A4 + for ; Thu, 18 Jun 2020 13:54:59 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=nvidia.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=jonathanh@nvidia.com +Received: from hqpgpgate102.nvidia.com (Not Verified[216.228.121.13]) by + hqnvemgate25.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) + id ; Thu, 18 Jun 2020 04:54:05 -0700 +Received: from hqmail.nvidia.com ([172.20.161.6]) + by hqpgpgate102.nvidia.com (PGP Universal service); + Thu, 18 Jun 2020 04:54:55 -0700 +X-PGP-Universal: processed; + by hqpgpgate102.nvidia.com on Thu, 18 Jun 2020 04:54:55 -0700 +Received: from HQMAIL111.nvidia.com (172.20.187.18) by HQMAIL109.nvidia.com + (172.20.187.15) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Thu, 18 Jun + 2020 11:54:55 +0000 +Received: from rnnvemgw01.nvidia.com (10.128.109.123) by HQMAIL111.nvidia.com + (172.20.187.18) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via + Frontend Transport; Thu, 18 Jun 2020 11:54:55 +0000 +Received: from moonraker.nvidia.com (Not Verified[10.26.72.215]) by + rnnvemgw01.nvidia.com with Trustwave SEG (v7, 5, 8, 10121) + id ; Thu, 18 Jun 2020 04:54:54 -0700 +From: Jon Hunter +To: Tom Rini , Tom Warren +CC: Stephen Warren , Thierry Reding , + Peter Robinson , Heinrich Schuchardt + , , Jon Hunter + +Subject: [PATCH 1/2] firmware: PSCI: Fix PSCI support for OF live trees +Date: Thu, 18 Jun 2020 12:54:38 +0100 +Message-ID: <20200618115439.25100-1-jonathanh@nvidia.com> +X-Mailer: git-send-email 2.17.1 +X-NVConfidentiality: public +MIME-Version: 1.0 +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; + t=1592481246; bh=06Kdq266LOYz5R2QyKOopddySBarFsUxH3Li+Ufuk5Y=; + h=X-PGP-Universal:From:To:CC:Subject:Date:Message-ID:X-Mailer: + X-NVConfidentiality:MIME-Version:Content-Type; + b=MEPdTgP3WAds3UTss1m+sIgLur+SEpPr3iBvVPk7Wh5dOizB3FW23fLfVKyqL5OtQ + gbz3WbWd7HmOEpFYdplLfUVxmxJtfrIZwvgPWj2TqEJIedeVl14ELovHD9R9Y30dkJ + FmnUv8e34oxjz2kEeEgg+T9FEo6YAt/4Jix7q76AWZMkTCDfhykFtlVztztYg9fcju + n1QlBQR2AxHQXG1v54hiTbSNoAGS0VsOdK/QQgGI1uY7YHgNOY2j8vb+VyUqF/Ku0Z + eIbJ8SO/BsNbTjMaTOJcPRRc3LO/RgLPa1p4jNoo9Iqa/q06UxdxmgIHIE1DEpr8bQ + Q2QxwRplMIT3A== +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +When CONFIG_OF_LIVE is enabled, dev_of_offset() cannot be used and +if used returns an invalid offset. This causes the call to +fdt_stringlist_get() in the psci_probe() to fail to read the 'method' +property from the PSCI node for the device and hence prevents PSCI +from working. Fix this by using the ofnode_read_string() API instead +of the fdt_stringlist_get() because this will handle reading the +property both when CONFIG_OF_LIVE is enabled or disabled. + +Due to the above problem and since commit 81ea00838c68 ("efi_loader: +PSCI reset and shutdown") was added, the EFI system reset has been +broken for Tegra210 and Tegra196 platforms. This also fixes the EFI +system reset for these Tegra platforms. + +Signed-off-by: Jon Hunter +--- + drivers/firmware/psci.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/drivers/firmware/psci.c b/drivers/firmware/psci.c +index e0d66d74f54d..23cf807591c4 100644 +--- a/drivers/firmware/psci.c ++++ b/drivers/firmware/psci.c +@@ -67,11 +67,9 @@ static int psci_bind(struct udevice *dev) + + static int psci_probe(struct udevice *dev) + { +- DECLARE_GLOBAL_DATA_PTR; + const char *method; + +- method = fdt_stringlist_get(gd->fdt_blob, dev_of_offset(dev), "method", +- 0, NULL); ++ method = ofnode_read_string(dev_ofnode(dev), "method"); + if (!method) { + pr_warn("missing \"method\" property\n"); + return -ENXIO; + +From patchwork Thu Jun 18 11:54:39 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Jon Hunter +X-Patchwork-Id: 1312025 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=pass (p=none dis=none) header.from=nvidia.com +Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; + unprotected) header.d=nvidia.com header.i=@nvidia.com header.a=rsa-sha256 + header.s=n1 header.b=iOzXdHGE; dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 49ngPK6PTdz9sRh + for ; Thu, 18 Jun 2020 21:55:49 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 4ED3B82087; + Thu, 18 Jun 2020 13:55:24 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=nvidia.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=nvidia.com header.i=@nvidia.com header.b="iOzXdHGE"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 608F382087; Thu, 18 Jun 2020 13:55:20 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,SPF_HELO_NONE,URIBL_BLOCKED + autolearn=ham autolearn_force=no version=3.4.2 +Received: from hqnvemgate24.nvidia.com (hqnvemgate24.nvidia.com + [216.228.121.143]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 2339582033 + for ; Thu, 18 Jun 2020 13:55:05 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=nvidia.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=jonathanh@nvidia.com +Received: from hqpgpgate101.nvidia.com (Not Verified[216.228.121.13]) by + hqnvemgate24.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) + id ; Thu, 18 Jun 2020 04:53:21 -0700 +Received: from hqmail.nvidia.com ([172.20.161.6]) + by hqpgpgate101.nvidia.com (PGP Universal service); + Thu, 18 Jun 2020 04:55:01 -0700 +X-PGP-Universal: processed; + by hqpgpgate101.nvidia.com on Thu, 18 Jun 2020 04:55:01 -0700 +Received: from HQMAIL101.nvidia.com (172.20.187.10) by HQMAIL105.nvidia.com + (172.20.187.12) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Thu, 18 Jun + 2020 11:55:01 +0000 +Received: from rnnvemgw01.nvidia.com (10.128.109.123) by HQMAIL101.nvidia.com + (172.20.187.10) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via + Frontend Transport; Thu, 18 Jun 2020 11:55:00 +0000 +Received: from moonraker.nvidia.com (Not Verified[10.26.72.215]) by + rnnvemgw01.nvidia.com with Trustwave SEG (v7, 5, 8, 10121) + id ; Thu, 18 Jun 2020 04:55:00 -0700 +From: Jon Hunter +To: Tom Rini , Tom Warren +CC: Stephen Warren , Thierry Reding , + Peter Robinson , Heinrich Schuchardt + , , Jon Hunter + +Subject: [PATCH 2/2] ARM: tegra: Enable PSCI support for Tegra210 and Tegra186 +Date: Thu, 18 Jun 2020 12:54:39 +0100 +Message-ID: <20200618115439.25100-2-jonathanh@nvidia.com> +X-Mailer: git-send-email 2.17.1 +In-Reply-To: <20200618115439.25100-1-jonathanh@nvidia.com> +References: <20200618115439.25100-1-jonathanh@nvidia.com> +X-NVConfidentiality: public +MIME-Version: 1.0 +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; + t=1592481201; bh=uzSllbcYKOPJL8iHAIEIHwlWoILnHTezp4ATOVF+JV4=; + h=X-PGP-Universal:From:To:CC:Subject:Date:Message-ID:X-Mailer: + In-Reply-To:References:X-NVConfidentiality:MIME-Version: + Content-Type; + b=iOzXdHGEdfeZIQXU+bHDE71+zTfyxL6xY1NHC1MlY5528MLezwOTCe7Tsw+SrrAvT + 80Kw7i+HTbIPGfj62pR8l7l6nVm/8F+MpOQtmUWMHirZcR2TSnrBowB+ncNGHZ/iFK + M8BYf+2e3sDEEhBFl5oNo61viGaXxViz5PwKQuy57dhKNlPJZTBfeSbSfNVyp3Y/81 + W0rcx4KuPtwQeKboaC6MSmpxipJ9hzESYwUXUin9kyqzs6m4qjTTrxymcPPAbckh+E + XKd+VJ/uSFayMJOutamX0tvAqPoFtm4x6zcbmzn3ZZUA1AMCZOmF5Vqqoo32wRk+eX + tFZhwM0IryDkg== +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +The PSCI nodes are currently not populated for the Tegra210 and Tegra186 +devices. This prevents the PSCI driver from being able to identify the +PSCI method used by these devices and causes the probe of the PSCI +driver to fail. + +Since commit 81ea00838c68 ("efi_loader: PSCI reset and shutdown") was +added, which moves the PSCI EFI system reset handler into the PSCI +driver, this has prevented the EFI system reset from working for +Tegra210 and Tegra186. Therefore, populating these nodes is necessary +to fix the EFI system reset for Tegra210 and Tegra186. + +Signed-off-by: Jon Hunter +--- + arch/arm/dts/tegra186.dtsi | 5 +++++ + arch/arm/dts/tegra210.dtsi | 5 +++++ + 2 files changed, 10 insertions(+) + +diff --git a/arch/arm/dts/tegra186.dtsi b/arch/arm/dts/tegra186.dtsi +index 0a9db9825b85..edcb7aacb8ee 100644 +--- a/arch/arm/dts/tegra186.dtsi ++++ b/arch/arm/dts/tegra186.dtsi +@@ -335,4 +335,9 @@ + status = "disabled"; + }; + }; ++ ++ psci { ++ compatible = "arm,psci-1.0"; ++ method = "smc"; ++ }; + }; +diff --git a/arch/arm/dts/tegra210.dtsi b/arch/arm/dts/tegra210.dtsi +index 3ec54b11c43f..a521a43d6cfd 100644 +--- a/arch/arm/dts/tegra210.dtsi ++++ b/arch/arm/dts/tegra210.dtsi +@@ -867,6 +867,11 @@ + }; + }; + ++ psci { ++ compatible = "arm,psci-1.0"; ++ method = "smc"; ++ }; ++ + timer { + compatible = "arm,armv8-timer"; + interrupts = -X-Patchwork-Id: 1306828 +X-Patchwork-Id: 1312150 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org @@ -15,84 +15,80 @@ Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amarulasolutions.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=amarulasolutions.com header.i=@amarulasolutions.com - header.a=rsa-sha256 header.s=google header.b=Q+0/eSrJ; + header.a=rsa-sha256 header.s=google header.b=p2JV38kW; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 49hlWg1F7rz9sRW - for ; Wed, 10 Jun 2020 21:44:12 +1000 (AEST) + by ozlabs.org (Postfix) with ESMTPS id 49nkDv6QMDz9sVB + for ; Fri, 19 Jun 2020 00:03:41 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id E30A9813BC; - Wed, 10 Jun 2020 13:44:06 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTP id F2C6382095; + Thu, 18 Jun 2020 16:03:30 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=amarulasolutions.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=amarulasolutions.com header.i=@amarulasolutions.com - header.b="Q+0/eSrJ"; dkim-atps=neutral + header.b="p2JV38kW"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) - id 5063381578; Wed, 10 Jun 2020 13:44:05 +0200 (CEST) + id 5B7478209C; Thu, 18 Jun 2020 16:03:29 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-pj1-x1042.google.com (mail-pj1-x1042.google.com - [IPv6:2607:f8b0:4864:20::1042]) +Received: from mail-pg1-x544.google.com (mail-pg1-x544.google.com + [IPv6:2607:f8b0:4864:20::544]) (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 3B4D28006D - for ; Wed, 10 Jun 2020 13:44:01 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTPS id 405D682094 + for ; Thu, 18 Jun 2020 16:03:25 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=amarulasolutions.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=jagan@amarulasolutions.com -Received: by mail-pj1-x1042.google.com with SMTP id jz3so753364pjb.0 - for ; Wed, 10 Jun 2020 04:44:01 -0700 (PDT) +Received: by mail-pg1-x544.google.com with SMTP id l63so2934483pge.12 + for ; Thu, 18 Jun 2020 07:03:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; - bh=O2V5XL3BREsrFDwBw4n7RZ8T6utX5AdnG2I6ivLZnCA=; - b=Q+0/eSrJuVhFqQmrlsBwCwCZAbCe2xEaqucnx2B5U1ugNqUWmowKDVxmV5llgcsrnJ - zliXEiVt8Az8b9zOxZM/0Tej8xH1pjdM08pw2sA/I0IEIg2fHq6zUioAR/MCZ4rbf9EN - j/l6kIrf0ADHDtPscUlgRaN0nVou3/T0cGpcA= + bh=CV+hHfK9TAO+pQC8PJPW6c55h0n2inkWKuN1Vxg7SJc=; + b=p2JV38kWm3RwP5F+tk+zn9L45s28eZZdf6WYIyRzWvcNpa+cdS5r2EGgYNf9n5Sy+g + /2qUb1648TqviMk+h5pYZ5FjHuo/ebvq7kB+XCQUI053og85IzaunFoHWp0lK9JdYMAv + BZWNHdEEJxW1ym/a1xbgaG8t5hTQxxZNPW/7E= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; - bh=O2V5XL3BREsrFDwBw4n7RZ8T6utX5AdnG2I6ivLZnCA=; - b=U9gtAvMEdX23LPpZhHK26RY/0f9o9C22NUE5HjIBTjpytNzjSO+1cHxLPFk9lQyNzK - A0693YATc8RhLMFiRS1libP6Urk18kkSIzdwMfAYBN3jRuTRT88vPg3jKUJhK+p1R/Vz - kwzTq1MlBG8N2xNCzTM9ajfCl36013fN+MiLr9xkej7L+zLSpiBj+8z3MCmHKzj1hn1y - 2gOT5lVWyZydc/Ao516He/rhFhiRfGBf1w/KbCXfSg0x9kQ83UO4FPFPjDs3TiWm47PC - WS4+muMzuJIDAm+rZNt8iGY7igpHHzT51vBqF70ti3mCE1NFPQqzjWc4M8WuVFx84vh9 - LPjA== -X-Gm-Message-State: AOAM533ux1c2iDQS6fhMmnMScouMQxlbt1o1Hb7wwTLlbsql4mLEXoL/ - kq6k/AcVEksPK0a3hzH6EWbhMQ== -X-Google-Smtp-Source: ABdhPJxfGS37PA5Fx79Ub2piTMRhJFMfO0r/k3qlpvGvsVv9giEauDno4rbVNspBFxzzTtqDA1vwmw== -X-Received: by 2002:a17:90a:9484:: with SMTP id - s4mr2691977pjo.30.1591789439428; - Wed, 10 Jun 2020 04:43:59 -0700 (PDT) -Received: from localhost.localdomain ([2405:201:c809:c7d5:9daa:1b72:7bd0:50df]) - by smtp.gmail.com with ESMTPSA id y4sm12934672pfr.182.2020.06.10.04.43.54 + bh=CV+hHfK9TAO+pQC8PJPW6c55h0n2inkWKuN1Vxg7SJc=; + b=qO9U8KokdHUFiqhrRgFl4nHyQYO3tSLB0WtE9txbby4Y03rW0qOlUi7FnGYgDEEZgc + l530CIQBkRfWIcv6x0Y96oWXFKYTSrMxX09kM7fwXlk3sIR9TGi9uj2DKkKFN0uxh2Dz + P4ona0/qgXZ6c+Uh9zrtdMEPkqgcKrFGmJ6275Y02X1MfAxHOJH9j0IL0QKcVlsVDN1g + BM16XxOIG61rkpwCSw5bAG7fKnz88fcdRtIw8V+zZcZbFPlA7qMFRatstz6rXudj8I6W + uWOk4Wnia7IdsTKhO2RzcqmAfUrpdSp5igf5Zng67kE8ugEClaOPuPNSMIHXmajvuslz + p3Kw== +X-Gm-Message-State: AOAM5306s2s9jncJZm6mInFtR87gLRuVCnJdkX506YdcY+iCzHesBfDJ + yztzZbfkdUPyBkAU/4qKQ9wodQ== +X-Google-Smtp-Source: ABdhPJyGLX2R5Jk5tUcM8s3JQZ7fjp2LkglvCHfsANHUt7Y0AAko/RtPYz1Azex3Cpn1fP2yhCTDzQ== +X-Received: by 2002:a62:7ccb:: with SMTP id x194mr3911489pfc.318.1592489003175; + Thu, 18 Jun 2020 07:03:23 -0700 (PDT) +Received: from localhost.localdomain ([2405:201:c809:c7d5:b0c7:f192:869b:df87]) + by smtp.gmail.com with ESMTPSA id w18sm2779047pgj.31.2020.06.18.07.03.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Wed, 10 Jun 2020 04:43:58 -0700 (PDT) + Thu, 18 Jun 2020 07:03:22 -0700 (PDT) From: Jagan Teki -To: Peng Fan , Jaehoon Chung , - Kever Yang -Cc: Marc Zyngier , sunil@amarulasolutions.com, - u-boot@lists.denx.de, linux-rockchip@lists.infradead.org, - linux-amarula@amarulasolutions.com, - Jagan Teki , - Robin Murphy -Subject: [PATCH v3] mmc: sdhci: Fix HISPD bit handling -Date: Wed, 10 Jun 2020 17:13:47 +0530 -Message-Id: <20200610114347.118501-1-jagan@amarulasolutions.com> +To: Peng Fan +Cc: u-boot@lists.denx.de, Jagan Teki , + Kever Yang , + Suniel Mahesh +Subject: [PATCH v4] mmc: sdhci: Fix HISPD bit handling +Date: Thu, 18 Jun 2020 19:33:12 +0530 +Message-Id: <20200618140312.155157-1-jagan@amarulasolutions.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de @@ -118,7 +114,8 @@ So, handle the HISPD bit based on the mmc computed selected mode(timing parameter) rather than fixed mmc card clock frequency. -Linux handle the HISPD similar like this in below commit, +Linux handle the HISPD similar like this in below commit but no +SDHCI_QUIRK_BROKEN_HISPD_MODE, commit <501639bf2173> ("mmc: sdhci: fix SDHCI_QUIRK_NO_HISPD_BIT handling") @@ -132,25 +129,31 @@ Writing GPT: mmc write failed ** Can't write to device 0 ** error! -Cc: Robin Murphy Cc: Kever Yang Cc: Peng Fan -Reviewed-by: Jaehoon Chung -Tested-by: Marc Zyngier # nanopc-t4 Tested-by: Suniel Mahesh # roc-rk3399-pc Signed-off-by: Jagan Teki --- -Changes for v3: -- use && for quirk check. +Changes for v4: +- update commit message +- simplify the logic. - drivers/mmc/sdhci.c | 23 +++++++++++++++-------- - 1 file changed, 15 insertions(+), 8 deletions(-) + drivers/mmc/sdhci.c | 23 +++++++++++++++++------ + 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c -index 92cc8434af..a7db278a0e 100644 +index 92cc8434af..6cb702111b 100644 --- a/drivers/mmc/sdhci.c +++ b/drivers/mmc/sdhci.c -@@ -594,14 +594,21 @@ static int sdhci_set_ios(struct mmc *mmc) +@@ -567,6 +567,7 @@ static int sdhci_set_ios(struct mmc *mmc) + #endif + u32 ctrl; + struct sdhci_host *host = mmc->priv; ++ bool no_hispd_bit = false; + + if (host->ops && host->ops->set_control_reg) + host->ops->set_control_reg(host); +@@ -594,14 +595,24 @@ static int sdhci_set_ios(struct mmc *mmc) ctrl &= ~SDHCI_CTRL_4BITBUS; } @@ -159,11 +162,12 @@ index 92cc8434af..a7db278a0e 100644 - else - ctrl &= ~SDHCI_CTRL_HISPD; - -- if ((host->quirks & SDHCI_QUIRK_NO_HISPD_BIT) || -- (host->quirks & SDHCI_QUIRK_BROKEN_HISPD_MODE)) + if ((host->quirks & SDHCI_QUIRK_NO_HISPD_BIT) || + (host->quirks & SDHCI_QUIRK_BROKEN_HISPD_MODE)) - ctrl &= ~SDHCI_CTRL_HISPD; -+ if (!(host->quirks & SDHCI_QUIRK_NO_HISPD_BIT) && -+ !(host->quirks & SDHCI_QUIRK_BROKEN_HISPD_MODE)) { ++ no_hispd_bit = true; ++ ++ if (!no_hispd_bit) { + if (mmc->selected_mode == MMC_HS || + mmc->selected_mode == SD_HS || + mmc->selected_mode == MMC_DDR_52 || diff --git a/uboot-tools.spec b/uboot-tools.spec index 012dcdb..5c854bb 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,9 @@ %global candidate rc4 +%global _default_patch_fuzz 2 Name: uboot-tools Version: 2020.07 -Release: 0.3%{?candidate:.%{candidate}}%{?dist} +Release: 0.4%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -25,6 +26,8 @@ Patch4: usb-kbd-fixes.patch Patch5: dragonboard-fixes.patch # mmc fix Patch6: mmc-sdhci-Fix-HISPD-bit-handling.patch +# Fix PSCI on at least tegra +Patch7: firmware-PSCI-Fix-PSCI-support-for-OF-live-trees.patch # Tegra improvements Patch10: arm-tegra-define-fdtfile-option-for-distro-boot.patch @@ -251,6 +254,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Thu Jun 18 2020 Peter Robinson - 2020.07-0.4.rc4 +- Update various patches to latest upstream + * Wed Jun 10 2020 Peter Robinson - 2020.07-0.3.rc4 - 2020.07 RC4 - Minor updates and other fixes diff --git a/usb-xhci-Load-Raspberry-Pi-4-VL805-s-firmware.patch b/usb-xhci-Load-Raspberry-Pi-4-VL805-s-firmware.patch index 4b5f19c..1d551d0 100644 --- a/usb-xhci-Load-Raspberry-Pi-4-VL805-s-firmware.patch +++ b/usb-xhci-Load-Raspberry-Pi-4-VL805-s-firmware.patch @@ -1,10 +1,9 @@ -From patchwork Tue May 5 16:26:06 2020 +From patchwork Fri Jun 12 16:46:29 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1283753 -X-Patchwork-Delegate: marek.vasut@gmail.com +X-Patchwork-Id: 1308405 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org @@ -16,19 +15,19 @@ Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=suse.de 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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 49GlV44bJCz9sT0 - for ; Wed, 6 May 2020 02:26:36 +1000 (AEST) + key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest + SHA256) (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 49k68q2wrsz9sRN + for ; Sat, 13 Jun 2020 02:47:37 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id C14658209E; - Tue, 5 May 2020 18:26:25 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTP id 51B4181C78; + Fri, 12 Jun 2020 18:47:28 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id 92EA581C4C; Tue, 5 May 2020 18:26:21 +0200 (CEST) + id D3D0681CD0; Fri, 12 Jun 2020 18:47:26 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, @@ -37,26 +36,26 @@ X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 0042B81A66 - for ; Tue, 5 May 2020 18:26:17 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTPS id A5E2A81C78 + for ; Fri, 12 Jun 2020 18:47:23 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=nsaenzjulienne@suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) - by mx2.suse.de (Postfix) with ESMTP id 01199AED5; - Tue, 5 May 2020 16:26:19 +0000 (UTC) + by mx2.suse.de (Postfix) with ESMTP id 93F95AC64; + Fri, 12 Jun 2020 16:47:26 +0000 (UTC) From: Nicolas Saenz Julienne To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, marex@denx.de, linux-kernel@vger.kernel.org Cc: sjg@chromium.org, m.szyprowski@samsung.com, s.nawrocki@samsung.com, mark.kettenis@xs4all.nl, Nicolas Saenz Julienne -Subject: [PATCH v3 1/2] arm: rpi: Add function to trigger VL805's firmware load -Date: Tue, 5 May 2020 18:26:06 +0200 -Message-Id: <20200505162607.334-2-nsaenzjulienne@suse.de> +Subject: [PATCH v4 1/5] arm: rpi: Add function to trigger VL805's firmware load +Date: Fri, 12 Jun 2020 18:46:29 +0200 +Message-Id: <20200612164632.25648-2-nsaenzjulienne@suse.de> X-Mailer: git-send-email 2.26.2 -In-Reply-To: <20200505162607.334-1-nsaenzjulienne@suse.de> -References: <20200505162607.334-1-nsaenzjulienne@suse.de> +In-Reply-To: <20200612164632.25648-1-nsaenzjulienne@suse.de> +References: <20200612164632.25648-1-nsaenzjulienne@suse.de> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.30rc1 @@ -81,17 +80,13 @@ informs VideCore that VL805 may need its firmware loaded. Signed-off-by: Nicolas Saenz Julienne --- -Changes since v2: - - Correct wrong function name in comment - - Add better comment on rpi_firmware_init_vl805() - Changes since v1: - Rename function so it's not mistaken with regular firmware loading - +--- arch/arm/mach-bcm283x/include/mach/mbox.h | 13 +++++++ arch/arm/mach-bcm283x/include/mach/msg.h | 7 ++++ - arch/arm/mach-bcm283x/msg.c | 45 +++++++++++++++++++++++ - 3 files changed, 65 insertions(+) + arch/arm/mach-bcm283x/msg.c | 46 +++++++++++++++++++++++ + 3 files changed, 66 insertions(+) diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h index 60e226ce1d..2ae2d3d97c 100644 @@ -118,7 +113,7 @@ index 60e226ce1d..2ae2d3d97c 100644 * Pass a raw u32 message to the VC, and receive a raw u32 back. * diff --git a/arch/arm/mach-bcm283x/include/mach/msg.h b/arch/arm/mach-bcm283x/include/mach/msg.h -index 4afb08631b..f5213dd0e0 100644 +index 4afb08631b..e45c1bf010 100644 --- a/arch/arm/mach-bcm283x/include/mach/msg.h +++ b/arch/arm/mach-bcm283x/include/mach/msg.h @@ -48,4 +48,11 @@ int bcm2835_set_video_params(int *widthp, int *heightp, int depth_bpp, @@ -126,7 +121,7 @@ index 4afb08631b..f5213dd0e0 100644 ulong *fb_sizep, int *pitchp); +/** -+ * bcm2711_notify_vl805_reset() - get vl805's firmware loaded ++ * bcm2711_load_vl805_firmware() - get vl805's firmware loaded + * + * @return 0 if OK, -EIO on error + */ @@ -134,10 +129,18 @@ index 4afb08631b..f5213dd0e0 100644 + #endif diff --git a/arch/arm/mach-bcm283x/msg.c b/arch/arm/mach-bcm283x/msg.c -index 94b75283f8..f8ef531652 100644 +index 94b75283f8..347aece3cd 100644 --- a/arch/arm/mach-bcm283x/msg.c +++ b/arch/arm/mach-bcm283x/msg.c -@@ -40,6 +40,12 @@ struct msg_setup { +@@ -7,6 +7,7 @@ + #include + #include + #include ++#include + + struct msg_set_power_state { + struct bcm2835_mbox_hdr hdr; +@@ -40,6 +41,12 @@ struct msg_setup { u32 end_tag; }; @@ -150,18 +153,16 @@ index 94b75283f8..f8ef531652 100644 int bcm2835_power_on_module(u32 module) { ALLOC_CACHE_ALIGN_BUFFER(struct msg_set_power_state, msg_pwr, 1); -@@ -151,3 +157,42 @@ int bcm2835_set_video_params(int *widthp, int *heightp, int depth_bpp, +@@ -151,3 +158,42 @@ int bcm2835_set_video_params(int *widthp, int *heightp, int depth_bpp, return 0; } + +/* -+ * The Raspberry Pi 4 gets its USB functionality from VL805, a PCIe chip that -+ * implements xHCI. After a PCI reset, VL805's firmware may either be loaded -+ * directly from an EEPROM or, if not present, by the SoC's co-processor, -+ * VideoCore. RPi4's VideoCore OS contains both the non public firmware load -+ * logic and the VL805 firmware blob. This function triggers the aforementioned -+ * process. ++ * On the Raspberry Pi 4, after a PCI reset, VL805's (the xHCI chip) firmware ++ * may either be loaded directly from an EEPROM or, if not present, by the ++ * SoC's VideoCore. This informs VideoCore that VL805 needs its firmware ++ * loaded. + */ +int bcm2711_notify_vl805_reset(void) +{ @@ -190,42 +191,42 @@ index 94b75283f8..f8ef531652 100644 + return -EIO; + } + ++ udelay(200); ++ + return 0; +} + -From patchwork Tue May 5 16:26:07 2020 +From patchwork Fri Jun 12 16:46:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1283757 -X-Patchwork-Delegate: marek.vasut@gmail.com +X-Patchwork-Id: 1308409 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=suse.de -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) +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 RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 49GlVQ0MyZz9sT0 - for ; Wed, 6 May 2020 02:26:52 +1000 (AEST) + by ozlabs.org (Postfix) with ESMTPS id 49k69h2xb7z9s1x + for ; Sat, 13 Jun 2020 02:48:24 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 40A20820AB; - Tue, 5 May 2020 18:26:27 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTP id 0365A81C78; + Fri, 12 Jun 2020 18:47:41 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id A816381C4C; Tue, 5 May 2020 18:26:22 +0200 (CEST) + id 9031981CAF; Fri, 12 Jun 2020 18:47:32 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, @@ -234,26 +235,26 @@ X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id E5F898196A - for ; Tue, 5 May 2020 18:26:19 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTPS id 4162B81C80 + for ; Fri, 12 Jun 2020 18:47:24 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=nsaenzjulienne@suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) - by mx2.suse.de (Postfix) with ESMTP id EB82AAF5D; - Tue, 5 May 2020 16:26:21 +0000 (UTC) + by mx2.suse.de (Postfix) with ESMTP id 7CEA1AAD0; + Fri, 12 Jun 2020 16:47:27 +0000 (UTC) From: Nicolas Saenz Julienne To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, marex@denx.de, linux-kernel@vger.kernel.org Cc: sjg@chromium.org, m.szyprowski@samsung.com, s.nawrocki@samsung.com, mark.kettenis@xs4all.nl, Nicolas Saenz Julienne -Subject: [PATCH v3 2/2] usb: xhci: Load Raspberry Pi 4 VL805's firmware -Date: Tue, 5 May 2020 18:26:07 +0200 -Message-Id: <20200505162607.334-3-nsaenzjulienne@suse.de> +Subject: [PATCH v4 2/5] reset: Add Raspberry Pi 4 firmware reset controller +Date: Fri, 12 Jun 2020 18:46:30 +0200 +Message-Id: <20200612164632.25648-3-nsaenzjulienne@suse.de> X-Mailer: git-send-email 2.26.2 -In-Reply-To: <20200505162607.334-1-nsaenzjulienne@suse.de> -References: <20200505162607.334-1-nsaenzjulienne@suse.de> +In-Reply-To: <20200612164632.25648-1-nsaenzjulienne@suse.de> +References: <20200612164632.25648-1-nsaenzjulienne@suse.de> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.30rc1 @@ -271,91 +272,475 @@ Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de X-Virus-Status: Clean -When needed, RPi4's co-processor (called VideoCore) has to be instructed -to load VL805's firmware (the chip providing xHCI support). VideCore's -firmware expects the board's PCIe bus to be already configured in order -for it to load the xHCI chip firmware. So we have to make sure this -happens in between the PCIe configuration and xHCI startup. - -Introduce a callback in xhci_pci_probe() to run this platform specific -routine. +Raspberry Pi 4's co-processor controls some of the board's HW +initialization process, but it's up to Linux to trigger it when +relevant. Introduce a reset controller capable of interfacing with +RPi4's co-processor that models these firmware initialization routines as +reset lines. Signed-off-by: Nicolas Saenz Julienne --- + drivers/reset/Kconfig | 10 ++++ + drivers/reset/Makefile | 1 + + drivers/reset/reset-raspberrypi.c | 60 +++++++++++++++++++ + .../reset/raspberrypi,firmware-reset.h | 13 ++++ + 4 files changed, 84 insertions(+) + create mode 100644 drivers/reset/reset-raspberrypi.c + create mode 100644 include/dt-bindings/reset/raspberrypi,firmware-reset.h -Changes since v2: - - Get rid of #ifdef CONFIG_BCM2711 - - Get rid of redundant error message - -Changes since v1: - - Create callback - - board/raspberrypi/rpi/rpi.c | 6 ++++++ - drivers/usb/host/xhci-pci.c | 6 ++++++ - include/usb/xhci.h | 3 +++ - 3 files changed, 15 insertions(+) - -diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c -index e367ba3092..dcaf45fbf2 100644 ---- a/board/raspberrypi/rpi/rpi.c -+++ b/board/raspberrypi/rpi/rpi.c -@@ -14,6 +14,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -494,3 +495,8 @@ int ft_board_setup(void *blob, bd_t *bd) +diff --git a/drivers/reset/Kconfig b/drivers/reset/Kconfig +index 88d3be1593..d02c1522e5 100644 +--- a/drivers/reset/Kconfig ++++ b/drivers/reset/Kconfig +@@ -148,4 +148,14 @@ config RESET_IMX7 + help + Support for reset controller on i.MX7/8 SoCs. - return 0; - } ++config RESET_RASPBERRYPI ++ bool "Raspberry Pi 4 Firmware Reset Controller Driver" ++ depends on DM_RESET && ARCH_BCM283X ++ default USB_XHCI_PCI ++ help ++ Raspberry Pi 4's co-processor controls some of the board's HW ++ initialization process, but it's up to Linux to trigger it when ++ relevant. This driver provides a reset controller capable of ++ interfacing with RPi4's co-processor and model these firmware ++ initialization routines as reset lines. + endmenu +diff --git a/drivers/reset/Makefile b/drivers/reset/Makefile +index 0a044d5d8c..be54dae725 100644 +--- a/drivers/reset/Makefile ++++ b/drivers/reset/Makefile +@@ -23,3 +23,4 @@ obj-$(CONFIG_RESET_MTMIPS) += reset-mtmips.o + obj-$(CONFIG_RESET_SUNXI) += reset-sunxi.o + obj-$(CONFIG_RESET_HISILICON) += reset-hisilicon.o + obj-$(CONFIG_RESET_IMX7) += reset-imx7.o ++obj-$(CONFIG_RESET_RASPBERRYPI) += reset-raspberrypi.o +diff --git a/drivers/reset/reset-raspberrypi.c b/drivers/reset/reset-raspberrypi.c +new file mode 100644 +index 0000000000..e2d284e5ac +--- /dev/null ++++ b/drivers/reset/reset-raspberrypi.c +@@ -0,0 +1,60 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Raspberry Pi 4 firmware reset driver ++ * ++ * Copyright (C) 2020 Nicolas Saenz Julienne ++ */ ++#include ++#include ++#include ++#include ++#include + -+void xhci_pci_fixup(struct udevice *dev) ++static int raspberrypi_reset_request(struct reset_ctl *reset_ctl) +{ -+ bcm2711_notify_vl805_reset(); ++ if (reset_ctl->id >= RASPBERRYPI_FIRMWARE_RESET_NUM_IDS) ++ return -EINVAL; ++ ++ return 0; +} ++ ++static int raspberrypi_reset_free(struct reset_ctl *reset_ctl) ++{ ++ return 0; ++} ++ ++static int raspberrypi_reset_assert(struct reset_ctl *reset_ctl) ++{ ++ switch (reset_ctl->id) { ++ case RASPBERRYPI_FIRMWARE_RESET_ID_USB: ++ bcm2711_notify_vl805_reset(); ++ return 0; ++ default: ++ return -EINVAL; ++ } ++} ++ ++static int raspberrypi_reset_deassert(struct reset_ctl *reset_ctl) ++{ ++ return 0; ++} ++ ++struct reset_ops raspberrypi_reset_ops = { ++ .request = raspberrypi_reset_request, ++ .rfree = raspberrypi_reset_free, ++ .rst_assert = raspberrypi_reset_assert, ++ .rst_deassert = raspberrypi_reset_deassert, ++}; ++ ++static const struct udevice_id raspberrypi_reset_ids[] = { ++ { .compatible = "raspberrypi,firmware-reset" }, ++ { } ++}; ++ ++U_BOOT_DRIVER(raspberrypi_reset) = { ++ .name = "raspberrypi-reset", ++ .id = UCLASS_RESET, ++ .of_match = raspberrypi_reset_ids, ++ .ops = &raspberrypi_reset_ops, ++}; ++ +diff --git a/include/dt-bindings/reset/raspberrypi,firmware-reset.h b/include/dt-bindings/reset/raspberrypi,firmware-reset.h +new file mode 100644 +index 0000000000..1a4f4c7927 +--- /dev/null ++++ b/include/dt-bindings/reset/raspberrypi,firmware-reset.h +@@ -0,0 +1,13 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (c) 2020 Nicolas Saenz Julienne ++ * Author: Nicolas Saenz Julienne ++ */ ++ ++#ifndef _DT_BINDINGS_RASPBERRYPI_FIRMWARE_RESET_H ++#define _DT_BINDINGS_RASPBERRYPI_FIRMWARE_RESET_H ++ ++#define RASPBERRYPI_FIRMWARE_RESET_ID_USB 0 ++#define RASPBERRYPI_FIRMWARE_RESET_NUM_IDS 1 ++ ++#endif + +From patchwork Fri Jun 12 16:46:32 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Nicolas Saenz Julienne +X-Patchwork-Id: 1308408 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=suse.de +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest + SHA256) (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 49k69X1mVGz9s1x + for ; Sat, 13 Jun 2020 02:48:16 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 1349E81D14; + Fri, 12 Jun 2020 18:47:39 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 20B1781CCF; Fri, 12 Jun 2020 18:47:32 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id DE87281CAF + for ; Fri, 12 Jun 2020 18:47:25 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=nsaenzjulienne@suse.de +Received: from relay2.suse.de (unknown [195.135.220.254]) + by mx2.suse.de (Postfix) with ESMTP id 3C117ACCF; + Fri, 12 Jun 2020 16:47:29 +0000 (UTC) +From: Nicolas Saenz Julienne +To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, marex@denx.de, + linux-kernel@vger.kernel.org +Cc: sjg@chromium.org, m.szyprowski@samsung.com, s.nawrocki@samsung.com, + mark.kettenis@xs4all.nl, Nicolas Saenz Julienne +Subject: [PATCH v4 4/5] dm: pci: Assign controller device node to root bridge +Date: Fri, 12 Jun 2020 18:46:32 +0200 +Message-Id: <20200612164632.25648-5-nsaenzjulienne@suse.de> +X-Mailer: git-send-email 2.26.2 +In-Reply-To: <20200612164632.25648-1-nsaenzjulienne@suse.de> +References: <20200612164632.25648-1-nsaenzjulienne@suse.de> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +There is no distinction in DT between the PCI controller device and the +root bridge, whereas such distinction exists from dm's perspective. Make +sure the root bridge ofnode is assigned to the controller's platform +device node. + +This permits setups like this to work correctly: + + pcie { + compatible = "..."; + ... + dev { + reg = <0 0 0 0 0>; + ... + }; + }; + +Without this the dev node is assigned to the root bridge and the +actual device search starts one level lower than expected. + +Signed-off-by: Nicolas Saenz Julienne +--- + drivers/pci/pci-uclass.c | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c +index 9ab3539a49..ea27e78465 100644 +--- a/drivers/pci/pci-uclass.c ++++ b/drivers/pci/pci-uclass.c +@@ -762,7 +762,20 @@ static int pci_find_and_bind_driver(struct udevice *parent, + str = strdup(name); + if (!str) + return -ENOMEM; +- drv = bridge ? "pci_bridge_drv" : "pci_generic_drv"; ++ ++ if (bridge) { ++ drv = "pci_bridge_drv"; ++ ++ /* ++ * If we're dealing with the root bridge pass the parent device ++ * node, as there isn't a distinction in device tree between ++ * that and the actual controller platform device. ++ */ ++ if (!PCI_MASK_BUS(bdf)) ++ node = parent->node; ++ } else { ++ drv = "pci_generic_drv"; ++ } + + ret = device_bind_driver_to_node(parent, drv, str, node, devp); + if (ret) { + +From patchwork Fri Jun 12 16:46:33 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Nicolas Saenz Julienne +X-Patchwork-Id: 1308407 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=suse.de +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 49k69F21wdz9s1x + for ; Sat, 13 Jun 2020 02:48:01 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 3049C81CF2; + Fri, 12 Jun 2020 18:47:37 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 0EDC381CF5; Fri, 12 Jun 2020 18:47:31 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 946DD81CCF + for ; Fri, 12 Jun 2020 18:47:26 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=nsaenzjulienne@suse.de +Received: from relay2.suse.de (unknown [195.135.220.254]) + by mx2.suse.de (Postfix) with ESMTP id E69F8ACDB; + Fri, 12 Jun 2020 16:47:29 +0000 (UTC) +From: Nicolas Saenz Julienne +To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, marex@denx.de, + linux-kernel@vger.kernel.org +Cc: sjg@chromium.org, m.szyprowski@samsung.com, s.nawrocki@samsung.com, + mark.kettenis@xs4all.nl, Nicolas Saenz Julienne +Subject: [PATCH v4 5/5] usb: xhci-pci: Add reset controller support +Date: Fri, 12 Jun 2020 18:46:33 +0200 +Message-Id: <20200612164632.25648-6-nsaenzjulienne@suse.de> +X-Mailer: git-send-email 2.26.2 +In-Reply-To: <20200612164632.25648-1-nsaenzjulienne@suse.de> +References: <20200612164632.25648-1-nsaenzjulienne@suse.de> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +Some atypical users of xhci-pci might need to manually reset their xHCI +controller before starting the HCD setup. Check if a reset controller +device is available to the PCI bus and trigger a reset. + +Signed-off-by: Nicolas Saenz Julienne +--- + drivers/usb/host/xhci-pci.c | 38 +++++++++++++++++++++++++++++++++++-- + 1 file changed, 36 insertions(+), 2 deletions(-) + diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c -index c1f60da541..1285dde1ef 100644 +index 9fb6d2f763..710524fbb1 100644 --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c -@@ -11,6 +11,10 @@ +@@ -10,9 +10,14 @@ + #include + #include + #include ++#include #include #include -+__weak void xhci_pci_fixup(struct udevice *dev) -+{ -+} ++struct xhci_pci_platdata { ++ struct reset_ctl reset; ++}; + static void xhci_pci_init(struct udevice *dev, struct xhci_hccr **ret_hccr, struct xhci_hcor **ret_hcor) { -@@ -40,6 +44,8 @@ static int xhci_pci_probe(struct udevice *dev) +@@ -39,14 +44,43 @@ static void xhci_pci_init(struct udevice *dev, struct xhci_hccr **ret_hccr, + + static int xhci_pci_probe(struct udevice *dev) + { ++ struct xhci_pci_platdata *plat = dev_get_platdata(dev); struct xhci_hccr *hccr; struct xhci_hcor *hcor; - -+ xhci_pci_fixup(dev); ++ int ret; + ++ ret = reset_get_by_index(dev, 0, &plat->reset); ++ if (ret && ret != -ENOENT) { ++ dev_err(dev, "failed to get reset\n"); ++ return ret; ++ } ++ ++ if (reset_valid(&plat->reset)) { ++ ret = reset_assert(&plat->reset); ++ if (ret) ++ return ret; ++ ++ ret = reset_deassert(&plat->reset); ++ if (ret) ++ return ret; ++ } + xhci_pci_init(dev, &hccr, &hcor); return xhci_register(dev, hccr, hcor); -diff --git a/include/usb/xhci.h b/include/usb/xhci.h -index c16106a2fc..57feed7603 100644 ---- a/include/usb/xhci.h -+++ b/include/usb/xhci.h -@@ -16,6 +16,7 @@ - #ifndef HOST_XHCI_H_ - #define HOST_XHCI_H_ + } -+#include - #include - #include - #include -@@ -1281,4 +1282,6 @@ extern struct dm_usb_ops xhci_usb_ops; - - struct xhci_ctrl *xhci_get_ctrl(struct usb_device *udev); - -+extern void xhci_pci_fixup(struct udevice *dev); ++static int xhci_pci_remove(struct udevice *dev) ++{ ++ struct xhci_pci_platdata *plat = dev_get_platdata(dev); + - #endif /* HOST_XHCI_H_ */ ++ xhci_deregister(dev); ++ if (reset_valid(&plat->reset)) ++ reset_free(&plat->reset); ++ ++ return 0; ++} ++ + static const struct udevice_id xhci_pci_ids[] = { + { .compatible = "xhci-pci" }, + { } +@@ -56,10 +90,10 @@ U_BOOT_DRIVER(xhci_pci) = { + .name = "xhci_pci", + .id = UCLASS_USB, + .probe = xhci_pci_probe, +- .remove = xhci_deregister, ++ .remove = xhci_pci_remove, + .of_match = xhci_pci_ids, + .ops = &xhci_usb_ops, +- .platdata_auto_alloc_size = sizeof(struct usb_platdata), ++ .platdata_auto_alloc_size = sizeof(struct xhci_pci_platdata), + .priv_auto_alloc_size = sizeof(struct xhci_ctrl), + .flags = DM_FLAG_ALLOC_PRIV_DMA, + }; +From f9dfaab9a697f7e1c6456bf7e05eaba39394688c Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Thu, 18 Jun 2020 14:24:13 +0100 +Subject: [PATCH] configs: Enable support for reset controllers on RPi4 + +This is required in order to access the reset controller used to +initialize the board's xHCI chip. + +Signed-off-by: Nicolas Saenz Julienne +Signed-off-by: Peter Robinson +--- + configs/rpi_4_32b_defconfig | 1 + + configs/rpi_4_defconfig | 1 + + configs/rpi_arm64_defconfig | 1 + + 3 files changed, 3 insertions(+) + +diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig +index a36a249540..0df5c17d6e 100644 +--- a/configs/rpi_4_32b_defconfig ++++ b/configs/rpi_4_32b_defconfig +@@ -28,6 +28,7 @@ CONFIG_DM_ETH=y + CONFIG_BCMGENET=y + CONFIG_PINCTRL=y + # CONFIG_PINCTRL_GENERIC is not set ++CONFIG_DM_RESET=y + # CONFIG_REQUIRE_SERIAL_CONSOLE is not set + CONFIG_USB=y + CONFIG_DM_USB=y +diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig +index f0301dc8bc..7034eb439b 100644 +--- a/configs/rpi_4_defconfig ++++ b/configs/rpi_4_defconfig +@@ -28,6 +28,7 @@ CONFIG_DM_ETH=y + CONFIG_BCMGENET=y + CONFIG_PINCTRL=y + # CONFIG_PINCTRL_GENERIC is not set ++CONFIG_DM_RESET=y + # CONFIG_REQUIRE_SERIAL_CONSOLE is not set + CONFIG_USB=y + CONFIG_DM_USB=y +diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig +index d16c2388af..3663a17048 100644 +--- a/configs/rpi_arm64_defconfig ++++ b/configs/rpi_arm64_defconfig +@@ -28,6 +28,7 @@ CONFIG_DM_ETH=y + CONFIG_BCMGENET=y + CONFIG_PINCTRL=y + # CONFIG_PINCTRL_GENERIC is not set ++CONFIG_DM_RESET=y + # CONFIG_REQUIRE_SERIAL_CONSOLE is not set + CONFIG_USB=y + CONFIG_DM_USB=y +-- +2.26.2 + From f6357946c01f08148229ed47c190b28f1d062ae4 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 23 Jun 2020 23:07:29 +0100 Subject: [PATCH 008/271] 2020.07 RC5 --- ...I-Fix-PSCI-support-for-OF-live-trees.patch | 300 ---------- sources | 2 +- uboot-tools.spec | 9 +- ...Load-Raspberry-Pi-4-VL805-s-firmware.patch | 555 ++++++++---------- 4 files changed, 264 insertions(+), 602 deletions(-) delete mode 100644 firmware-PSCI-Fix-PSCI-support-for-OF-live-trees.patch diff --git a/firmware-PSCI-Fix-PSCI-support-for-OF-live-trees.patch b/firmware-PSCI-Fix-PSCI-support-for-OF-live-trees.patch deleted file mode 100644 index 134d436..0000000 --- a/firmware-PSCI-Fix-PSCI-support-for-OF-live-trees.patch +++ /dev/null @@ -1,300 +0,0 @@ -From patchwork Thu Jun 18 11:54:38 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Jon Hunter -X-Patchwork-Id: 1312024 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=nvidia.com -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=nvidia.com header.i=@nvidia.com header.a=rsa-sha256 - header.s=n1 header.b=MEPdTgP3; dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 49ngNv025pz9sRh - for ; Thu, 18 Jun 2020 21:55:26 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id E19DD82081; - Thu, 18 Jun 2020 13:55:17 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=nvidia.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=nvidia.com header.i=@nvidia.com header.b="MEPdTgP3"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 19DC182082; Thu, 18 Jun 2020 13:55:16 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,SPF_HELO_NONE,URIBL_BLOCKED - autolearn=ham autolearn_force=no version=3.4.2 -Received: from hqnvemgate25.nvidia.com (hqnvemgate25.nvidia.com - [216.228.121.64]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 644B8814A4 - for ; Thu, 18 Jun 2020 13:54:59 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=nvidia.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=jonathanh@nvidia.com -Received: from hqpgpgate102.nvidia.com (Not Verified[216.228.121.13]) by - hqnvemgate25.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) - id ; Thu, 18 Jun 2020 04:54:05 -0700 -Received: from hqmail.nvidia.com ([172.20.161.6]) - by hqpgpgate102.nvidia.com (PGP Universal service); - Thu, 18 Jun 2020 04:54:55 -0700 -X-PGP-Universal: processed; - by hqpgpgate102.nvidia.com on Thu, 18 Jun 2020 04:54:55 -0700 -Received: from HQMAIL111.nvidia.com (172.20.187.18) by HQMAIL109.nvidia.com - (172.20.187.15) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Thu, 18 Jun - 2020 11:54:55 +0000 -Received: from rnnvemgw01.nvidia.com (10.128.109.123) by HQMAIL111.nvidia.com - (172.20.187.18) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via - Frontend Transport; Thu, 18 Jun 2020 11:54:55 +0000 -Received: from moonraker.nvidia.com (Not Verified[10.26.72.215]) by - rnnvemgw01.nvidia.com with Trustwave SEG (v7, 5, 8, 10121) - id ; Thu, 18 Jun 2020 04:54:54 -0700 -From: Jon Hunter -To: Tom Rini , Tom Warren -CC: Stephen Warren , Thierry Reding , - Peter Robinson , Heinrich Schuchardt - , , Jon Hunter - -Subject: [PATCH 1/2] firmware: PSCI: Fix PSCI support for OF live trees -Date: Thu, 18 Jun 2020 12:54:38 +0100 -Message-ID: <20200618115439.25100-1-jonathanh@nvidia.com> -X-Mailer: git-send-email 2.17.1 -X-NVConfidentiality: public -MIME-Version: 1.0 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; - t=1592481246; bh=06Kdq266LOYz5R2QyKOopddySBarFsUxH3Li+Ufuk5Y=; - h=X-PGP-Universal:From:To:CC:Subject:Date:Message-ID:X-Mailer: - X-NVConfidentiality:MIME-Version:Content-Type; - b=MEPdTgP3WAds3UTss1m+sIgLur+SEpPr3iBvVPk7Wh5dOizB3FW23fLfVKyqL5OtQ - gbz3WbWd7HmOEpFYdplLfUVxmxJtfrIZwvgPWj2TqEJIedeVl14ELovHD9R9Y30dkJ - FmnUv8e34oxjz2kEeEgg+T9FEo6YAt/4Jix7q76AWZMkTCDfhykFtlVztztYg9fcju - n1QlBQR2AxHQXG1v54hiTbSNoAGS0VsOdK/QQgGI1uY7YHgNOY2j8vb+VyUqF/Ku0Z - eIbJ8SO/BsNbTjMaTOJcPRRc3LO/RgLPa1p4jNoo9Iqa/q06UxdxmgIHIE1DEpr8bQ - Q2QxwRplMIT3A== -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -When CONFIG_OF_LIVE is enabled, dev_of_offset() cannot be used and -if used returns an invalid offset. This causes the call to -fdt_stringlist_get() in the psci_probe() to fail to read the 'method' -property from the PSCI node for the device and hence prevents PSCI -from working. Fix this by using the ofnode_read_string() API instead -of the fdt_stringlist_get() because this will handle reading the -property both when CONFIG_OF_LIVE is enabled or disabled. - -Due to the above problem and since commit 81ea00838c68 ("efi_loader: -PSCI reset and shutdown") was added, the EFI system reset has been -broken for Tegra210 and Tegra196 platforms. This also fixes the EFI -system reset for these Tegra platforms. - -Signed-off-by: Jon Hunter ---- - drivers/firmware/psci.c | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -diff --git a/drivers/firmware/psci.c b/drivers/firmware/psci.c -index e0d66d74f54d..23cf807591c4 100644 ---- a/drivers/firmware/psci.c -+++ b/drivers/firmware/psci.c -@@ -67,11 +67,9 @@ static int psci_bind(struct udevice *dev) - - static int psci_probe(struct udevice *dev) - { -- DECLARE_GLOBAL_DATA_PTR; - const char *method; - -- method = fdt_stringlist_get(gd->fdt_blob, dev_of_offset(dev), "method", -- 0, NULL); -+ method = ofnode_read_string(dev_ofnode(dev), "method"); - if (!method) { - pr_warn("missing \"method\" property\n"); - return -ENXIO; - -From patchwork Thu Jun 18 11:54:39 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Jon Hunter -X-Patchwork-Id: 1312025 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=nvidia.com -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=nvidia.com header.i=@nvidia.com header.a=rsa-sha256 - header.s=n1 header.b=iOzXdHGE; dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 49ngPK6PTdz9sRh - for ; Thu, 18 Jun 2020 21:55:49 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 4ED3B82087; - Thu, 18 Jun 2020 13:55:24 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=nvidia.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=nvidia.com header.i=@nvidia.com header.b="iOzXdHGE"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 608F382087; Thu, 18 Jun 2020 13:55:20 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,SPF_HELO_NONE,URIBL_BLOCKED - autolearn=ham autolearn_force=no version=3.4.2 -Received: from hqnvemgate24.nvidia.com (hqnvemgate24.nvidia.com - [216.228.121.143]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 2339582033 - for ; Thu, 18 Jun 2020 13:55:05 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=nvidia.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=jonathanh@nvidia.com -Received: from hqpgpgate101.nvidia.com (Not Verified[216.228.121.13]) by - hqnvemgate24.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) - id ; Thu, 18 Jun 2020 04:53:21 -0700 -Received: from hqmail.nvidia.com ([172.20.161.6]) - by hqpgpgate101.nvidia.com (PGP Universal service); - Thu, 18 Jun 2020 04:55:01 -0700 -X-PGP-Universal: processed; - by hqpgpgate101.nvidia.com on Thu, 18 Jun 2020 04:55:01 -0700 -Received: from HQMAIL101.nvidia.com (172.20.187.10) by HQMAIL105.nvidia.com - (172.20.187.12) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Thu, 18 Jun - 2020 11:55:01 +0000 -Received: from rnnvemgw01.nvidia.com (10.128.109.123) by HQMAIL101.nvidia.com - (172.20.187.10) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via - Frontend Transport; Thu, 18 Jun 2020 11:55:00 +0000 -Received: from moonraker.nvidia.com (Not Verified[10.26.72.215]) by - rnnvemgw01.nvidia.com with Trustwave SEG (v7, 5, 8, 10121) - id ; Thu, 18 Jun 2020 04:55:00 -0700 -From: Jon Hunter -To: Tom Rini , Tom Warren -CC: Stephen Warren , Thierry Reding , - Peter Robinson , Heinrich Schuchardt - , , Jon Hunter - -Subject: [PATCH 2/2] ARM: tegra: Enable PSCI support for Tegra210 and Tegra186 -Date: Thu, 18 Jun 2020 12:54:39 +0100 -Message-ID: <20200618115439.25100-2-jonathanh@nvidia.com> -X-Mailer: git-send-email 2.17.1 -In-Reply-To: <20200618115439.25100-1-jonathanh@nvidia.com> -References: <20200618115439.25100-1-jonathanh@nvidia.com> -X-NVConfidentiality: public -MIME-Version: 1.0 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; - t=1592481201; bh=uzSllbcYKOPJL8iHAIEIHwlWoILnHTezp4ATOVF+JV4=; - h=X-PGP-Universal:From:To:CC:Subject:Date:Message-ID:X-Mailer: - In-Reply-To:References:X-NVConfidentiality:MIME-Version: - Content-Type; - b=iOzXdHGEdfeZIQXU+bHDE71+zTfyxL6xY1NHC1MlY5528MLezwOTCe7Tsw+SrrAvT - 80Kw7i+HTbIPGfj62pR8l7l6nVm/8F+MpOQtmUWMHirZcR2TSnrBowB+ncNGHZ/iFK - M8BYf+2e3sDEEhBFl5oNo61viGaXxViz5PwKQuy57dhKNlPJZTBfeSbSfNVyp3Y/81 - W0rcx4KuPtwQeKboaC6MSmpxipJ9hzESYwUXUin9kyqzs6m4qjTTrxymcPPAbckh+E - XKd+VJ/uSFayMJOutamX0tvAqPoFtm4x6zcbmzn3ZZUA1AMCZOmF5Vqqoo32wRk+eX - tFZhwM0IryDkg== -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -The PSCI nodes are currently not populated for the Tegra210 and Tegra186 -devices. This prevents the PSCI driver from being able to identify the -PSCI method used by these devices and causes the probe of the PSCI -driver to fail. - -Since commit 81ea00838c68 ("efi_loader: PSCI reset and shutdown") was -added, which moves the PSCI EFI system reset handler into the PSCI -driver, this has prevented the EFI system reset from working for -Tegra210 and Tegra186. Therefore, populating these nodes is necessary -to fix the EFI system reset for Tegra210 and Tegra186. - -Signed-off-by: Jon Hunter ---- - arch/arm/dts/tegra186.dtsi | 5 +++++ - arch/arm/dts/tegra210.dtsi | 5 +++++ - 2 files changed, 10 insertions(+) - -diff --git a/arch/arm/dts/tegra186.dtsi b/arch/arm/dts/tegra186.dtsi -index 0a9db9825b85..edcb7aacb8ee 100644 ---- a/arch/arm/dts/tegra186.dtsi -+++ b/arch/arm/dts/tegra186.dtsi -@@ -335,4 +335,9 @@ - status = "disabled"; - }; - }; -+ -+ psci { -+ compatible = "arm,psci-1.0"; -+ method = "smc"; -+ }; - }; -diff --git a/arch/arm/dts/tegra210.dtsi b/arch/arm/dts/tegra210.dtsi -index 3ec54b11c43f..a521a43d6cfd 100644 ---- a/arch/arm/dts/tegra210.dtsi -+++ b/arch/arm/dts/tegra210.dtsi -@@ -867,6 +867,11 @@ - }; - }; - -+ psci { -+ compatible = "arm,psci-1.0"; -+ method = "smc"; -+ }; -+ - timer { - compatible = "arm,armv8-timer"; - interrupts = - 2020.07-0.5.rc5 +- 2020.07 RC5 + * Thu Jun 18 2020 Peter Robinson - 2020.07-0.4.rc4 - Update various patches to latest upstream diff --git a/usb-xhci-Load-Raspberry-Pi-4-VL805-s-firmware.patch b/usb-xhci-Load-Raspberry-Pi-4-VL805-s-firmware.patch index 1d551d0..e167bb6 100644 --- a/usb-xhci-Load-Raspberry-Pi-4-VL805-s-firmware.patch +++ b/usb-xhci-Load-Raspberry-Pi-4-VL805-s-firmware.patch @@ -1,33 +1,35 @@ -From patchwork Fri Jun 12 16:46:29 2020 +From patchwork Mon Jun 22 15:30:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1308405 +X-Patchwork-Id: 1314562 +X-Patchwork-Delegate: matthias.bgg@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=suse.de -Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 49k68q2wrsz9sRN - for ; Sat, 13 Jun 2020 02:47:37 +1000 (AEST) + by ozlabs.org (Postfix) with ESMTPS id 49rD0h00Mbz9s6w + for ; Tue, 23 Jun 2020 01:31:47 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 51B4181C78; - Fri, 12 Jun 2020 18:47:28 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTP id 1284581DC9; + Mon, 22 Jun 2020 17:31:31 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id D3D0681CD0; Fri, 12 Jun 2020 18:47:26 +0200 (CEST) + id 4096C81DE9; Mon, 22 Jun 2020 17:31:26 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, @@ -36,26 +38,26 @@ X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id A5E2A81C78 - for ; Fri, 12 Jun 2020 18:47:23 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTPS id 7C1E981D0B + for ; Mon, 22 Jun 2020 17:31:23 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=nsaenzjulienne@suse.de -Received: from relay2.suse.de (unknown [195.135.220.254]) - by mx2.suse.de (Postfix) with ESMTP id 93F95AC64; - Fri, 12 Jun 2020 16:47:26 +0000 (UTC) +Received: from relay2.suse.de (unknown [195.135.221.27]) + by mx2.suse.de (Postfix) with ESMTP id 76161C1BD; + Mon, 22 Jun 2020 15:31:22 +0000 (UTC) From: Nicolas Saenz Julienne -To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, marex@denx.de, - linux-kernel@vger.kernel.org -Cc: sjg@chromium.org, m.szyprowski@samsung.com, s.nawrocki@samsung.com, - mark.kettenis@xs4all.nl, Nicolas Saenz Julienne -Subject: [PATCH v4 1/5] arm: rpi: Add function to trigger VL805's firmware load -Date: Fri, 12 Jun 2020 18:46:29 +0200 -Message-Id: <20200612164632.25648-2-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.26.2 -In-Reply-To: <20200612164632.25648-1-nsaenzjulienne@suse.de> -References: <20200612164632.25648-1-nsaenzjulienne@suse.de> +To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, + sjg@chromium.org, marex@denx.de +Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, + Nicolas Saenz Julienne +Subject: [PATCH v5 1/4] arm: rpi: Add function to trigger VL805's firmware load +Date: Mon, 22 Jun 2020 17:30:48 +0200 +Message-Id: <20200622153050.23193-2-nsaenzjulienne@suse.de> +X-Mailer: git-send-email 2.27.0 +In-Reply-To: <20200622153050.23193-1-nsaenzjulienne@suse.de> +References: <20200622153050.23193-1-nsaenzjulienne@suse.de> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.30rc1 @@ -82,7 +84,7 @@ Signed-off-by: Nicolas Saenz Julienne --- Changes since v1: - Rename function so it's not mistaken with regular firmware loading ---- + arch/arm/mach-bcm283x/include/mach/mbox.h | 13 +++++++ arch/arm/mach-bcm283x/include/mach/msg.h | 7 ++++ arch/arm/mach-bcm283x/msg.c | 46 +++++++++++++++++++++++ @@ -197,12 +199,13 @@ index 94b75283f8..347aece3cd 100644 +} + -From patchwork Fri Jun 12 16:46:30 2020 +From patchwork Mon Jun 22 15:30:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1308409 +X-Patchwork-Id: 1314565 +X-Patchwork-Delegate: matthias.bgg@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org @@ -216,17 +219,17 @@ 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 RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 49k69h2xb7z9s1x - for ; Sat, 13 Jun 2020 02:48:24 +1000 (AEST) + by ozlabs.org (Postfix) with ESMTPS id 49rD1F72RYz9s6w + for ; Tue, 23 Jun 2020 01:32:17 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 0365A81C78; - Fri, 12 Jun 2020 18:47:41 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTP id 10E5481E20; + Mon, 22 Jun 2020 17:31:41 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id 9031981CAF; Fri, 12 Jun 2020 18:47:32 +0200 (CEST) + id 9851E81DE9; Mon, 22 Jun 2020 17:31:30 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, @@ -235,26 +238,26 @@ X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 4162B81C80 - for ; Fri, 12 Jun 2020 18:47:24 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTPS id A2A2281D52 + for ; Mon, 22 Jun 2020 17:31:23 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=nsaenzjulienne@suse.de -Received: from relay2.suse.de (unknown [195.135.220.254]) - by mx2.suse.de (Postfix) with ESMTP id 7CEA1AAD0; - Fri, 12 Jun 2020 16:47:27 +0000 (UTC) +Received: from relay2.suse.de (unknown [195.135.221.27]) + by mx2.suse.de (Postfix) with ESMTP id CFE01C204; + Mon, 22 Jun 2020 15:31:22 +0000 (UTC) From: Nicolas Saenz Julienne -To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, marex@denx.de, - linux-kernel@vger.kernel.org -Cc: sjg@chromium.org, m.szyprowski@samsung.com, s.nawrocki@samsung.com, - mark.kettenis@xs4all.nl, Nicolas Saenz Julienne -Subject: [PATCH v4 2/5] reset: Add Raspberry Pi 4 firmware reset controller -Date: Fri, 12 Jun 2020 18:46:30 +0200 -Message-Id: <20200612164632.25648-3-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.26.2 -In-Reply-To: <20200612164632.25648-1-nsaenzjulienne@suse.de> -References: <20200612164632.25648-1-nsaenzjulienne@suse.de> +To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, + sjg@chromium.org, marex@denx.de +Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, + Nicolas Saenz Julienne +Subject: [PATCH v5 2/4] reset: Add Raspberry Pi 4 firmware reset controller +Date: Mon, 22 Jun 2020 17:30:49 +0200 +Message-Id: <20200622153050.23193-3-nsaenzjulienne@suse.de> +X-Mailer: git-send-email 2.27.0 +In-Reply-To: <20200622153050.23193-1-nsaenzjulienne@suse.de> +References: <20200622153050.23193-1-nsaenzjulienne@suse.de> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.30rc1 @@ -402,12 +405,13 @@ index 0000000000..1a4f4c7927 + +#endif -From patchwork Fri Jun 12 16:46:32 2020 +From patchwork Mon Jun 22 15:30:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1308408 +X-Patchwork-Id: 1314564 +X-Patchwork-Delegate: matthias.bgg@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org @@ -419,146 +423,20 @@ Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=suse.de Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 49k69X1mVGz9s1x - for ; Sat, 13 Jun 2020 02:48:16 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 1349E81D14; - Fri, 12 Jun 2020 18:47:39 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 20B1781CCF; Fri, 12 Jun 2020 18:47:32 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id DE87281CAF - for ; Fri, 12 Jun 2020 18:47:25 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=nsaenzjulienne@suse.de -Received: from relay2.suse.de (unknown [195.135.220.254]) - by mx2.suse.de (Postfix) with ESMTP id 3C117ACCF; - Fri, 12 Jun 2020 16:47:29 +0000 (UTC) -From: Nicolas Saenz Julienne -To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, marex@denx.de, - linux-kernel@vger.kernel.org -Cc: sjg@chromium.org, m.szyprowski@samsung.com, s.nawrocki@samsung.com, - mark.kettenis@xs4all.nl, Nicolas Saenz Julienne -Subject: [PATCH v4 4/5] dm: pci: Assign controller device node to root bridge -Date: Fri, 12 Jun 2020 18:46:32 +0200 -Message-Id: <20200612164632.25648-5-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.26.2 -In-Reply-To: <20200612164632.25648-1-nsaenzjulienne@suse.de> -References: <20200612164632.25648-1-nsaenzjulienne@suse.de> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -There is no distinction in DT between the PCI controller device and the -root bridge, whereas such distinction exists from dm's perspective. Make -sure the root bridge ofnode is assigned to the controller's platform -device node. - -This permits setups like this to work correctly: - - pcie { - compatible = "..."; - ... - dev { - reg = <0 0 0 0 0>; - ... - }; - }; - -Without this the dev node is assigned to the root bridge and the -actual device search starts one level lower than expected. - -Signed-off-by: Nicolas Saenz Julienne ---- - drivers/pci/pci-uclass.c | 15 ++++++++++++++- - 1 file changed, 14 insertions(+), 1 deletion(-) - -diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c -index 9ab3539a49..ea27e78465 100644 ---- a/drivers/pci/pci-uclass.c -+++ b/drivers/pci/pci-uclass.c -@@ -762,7 +762,20 @@ static int pci_find_and_bind_driver(struct udevice *parent, - str = strdup(name); - if (!str) - return -ENOMEM; -- drv = bridge ? "pci_bridge_drv" : "pci_generic_drv"; -+ -+ if (bridge) { -+ drv = "pci_bridge_drv"; -+ -+ /* -+ * If we're dealing with the root bridge pass the parent device -+ * node, as there isn't a distinction in device tree between -+ * that and the actual controller platform device. -+ */ -+ if (!PCI_MASK_BUS(bdf)) -+ node = parent->node; -+ } else { -+ drv = "pci_generic_drv"; -+ } - - ret = device_bind_driver_to_node(parent, drv, str, node, devp); - if (ret) { - -From patchwork Fri Jun 12 16:46:33 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1308407 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=suse.de -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 RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 49k69F21wdz9s1x - for ; Sat, 13 Jun 2020 02:48:01 +1000 (AEST) + by ozlabs.org (Postfix) with ESMTPS id 49rD115xyZz9sQx + for ; Tue, 23 Jun 2020 01:32:05 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 3049C81CF2; - Fri, 12 Jun 2020 18:47:37 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTP id 4627E81E0C; + Mon, 22 Jun 2020 17:31:39 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id 0EDC381CF5; Fri, 12 Jun 2020 18:47:31 +0200 (CEST) + id 5837781E04; Mon, 22 Jun 2020 17:31:30 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, @@ -567,26 +445,26 @@ X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 946DD81CCF - for ; Fri, 12 Jun 2020 18:47:26 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTPS id 0D9F281DC9 + for ; Mon, 22 Jun 2020 17:31:24 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=nsaenzjulienne@suse.de -Received: from relay2.suse.de (unknown [195.135.220.254]) - by mx2.suse.de (Postfix) with ESMTP id E69F8ACDB; - Fri, 12 Jun 2020 16:47:29 +0000 (UTC) +Received: from relay2.suse.de (unknown [195.135.221.27]) + by mx2.suse.de (Postfix) with ESMTP id 478B9C207; + Mon, 22 Jun 2020 15:31:23 +0000 (UTC) From: Nicolas Saenz Julienne -To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, marex@denx.de, - linux-kernel@vger.kernel.org -Cc: sjg@chromium.org, m.szyprowski@samsung.com, s.nawrocki@samsung.com, - mark.kettenis@xs4all.nl, Nicolas Saenz Julienne -Subject: [PATCH v4 5/5] usb: xhci-pci: Add reset controller support -Date: Fri, 12 Jun 2020 18:46:33 +0200 -Message-Id: <20200612164632.25648-6-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.26.2 -In-Reply-To: <20200612164632.25648-1-nsaenzjulienne@suse.de> -References: <20200612164632.25648-1-nsaenzjulienne@suse.de> +To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, + sjg@chromium.org, marex@denx.de +Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, + Nicolas Saenz Julienne +Subject: [PATCH v5 3/4] configs: Enable support for reset controllers on RPi4 +Date: Mon, 22 Jun 2020 17:30:50 +0200 +Message-Id: <20200622153050.23193-4-nsaenzjulienne@suse.de> +X-Mailer: git-send-email 2.27.0 +In-Reply-To: <20200622153050.23193-1-nsaenzjulienne@suse.de> +References: <20200622153050.23193-1-nsaenzjulienne@suse.de> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.30rc1 @@ -604,101 +482,10 @@ Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de X-Virus-Status: Clean -Some atypical users of xhci-pci might need to manually reset their xHCI -controller before starting the HCD setup. Check if a reset controller -device is available to the PCI bus and trigger a reset. - -Signed-off-by: Nicolas Saenz Julienne ---- - drivers/usb/host/xhci-pci.c | 38 +++++++++++++++++++++++++++++++++++-- - 1 file changed, 36 insertions(+), 2 deletions(-) - -diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c -index 9fb6d2f763..710524fbb1 100644 ---- a/drivers/usb/host/xhci-pci.c -+++ b/drivers/usb/host/xhci-pci.c -@@ -10,9 +10,14 @@ - #include - #include - #include -+#include - #include - #include - -+struct xhci_pci_platdata { -+ struct reset_ctl reset; -+}; -+ - static void xhci_pci_init(struct udevice *dev, struct xhci_hccr **ret_hccr, - struct xhci_hcor **ret_hcor) - { -@@ -39,14 +44,43 @@ static void xhci_pci_init(struct udevice *dev, struct xhci_hccr **ret_hccr, - - static int xhci_pci_probe(struct udevice *dev) - { -+ struct xhci_pci_platdata *plat = dev_get_platdata(dev); - struct xhci_hccr *hccr; - struct xhci_hcor *hcor; -+ int ret; -+ -+ ret = reset_get_by_index(dev, 0, &plat->reset); -+ if (ret && ret != -ENOENT) { -+ dev_err(dev, "failed to get reset\n"); -+ return ret; -+ } -+ -+ if (reset_valid(&plat->reset)) { -+ ret = reset_assert(&plat->reset); -+ if (ret) -+ return ret; -+ -+ ret = reset_deassert(&plat->reset); -+ if (ret) -+ return ret; -+ } - - xhci_pci_init(dev, &hccr, &hcor); - - return xhci_register(dev, hccr, hcor); - } - -+static int xhci_pci_remove(struct udevice *dev) -+{ -+ struct xhci_pci_platdata *plat = dev_get_platdata(dev); -+ -+ xhci_deregister(dev); -+ if (reset_valid(&plat->reset)) -+ reset_free(&plat->reset); -+ -+ return 0; -+} -+ - static const struct udevice_id xhci_pci_ids[] = { - { .compatible = "xhci-pci" }, - { } -@@ -56,10 +90,10 @@ U_BOOT_DRIVER(xhci_pci) = { - .name = "xhci_pci", - .id = UCLASS_USB, - .probe = xhci_pci_probe, -- .remove = xhci_deregister, -+ .remove = xhci_pci_remove, - .of_match = xhci_pci_ids, - .ops = &xhci_usb_ops, -- .platdata_auto_alloc_size = sizeof(struct usb_platdata), -+ .platdata_auto_alloc_size = sizeof(struct xhci_pci_platdata), - .priv_auto_alloc_size = sizeof(struct xhci_ctrl), - .flags = DM_FLAG_ALLOC_PRIV_DMA, - }; -From f9dfaab9a697f7e1c6456bf7e05eaba39394688c Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Thu, 18 Jun 2020 14:24:13 +0100 -Subject: [PATCH] configs: Enable support for reset controllers on RPi4 - This is required in order to access the reset controller used to initialize the board's xHCI chip. Signed-off-by: Nicolas Saenz Julienne -Signed-off-by: Peter Robinson --- configs/rpi_4_32b_defconfig | 1 + configs/rpi_4_defconfig | 1 + @@ -706,11 +493,11 @@ Signed-off-by: Peter Robinson 3 files changed, 3 insertions(+) diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig -index a36a249540..0df5c17d6e 100644 +index b0797373b5..00c8d963ab 100644 --- a/configs/rpi_4_32b_defconfig +++ b/configs/rpi_4_32b_defconfig -@@ -28,6 +28,7 @@ CONFIG_DM_ETH=y - CONFIG_BCMGENET=y +@@ -35,6 +35,7 @@ CONFIG_DM_PCI=y + CONFIG_PCI_BRCMSTB=y CONFIG_PINCTRL=y # CONFIG_PINCTRL_GENERIC is not set +CONFIG_DM_RESET=y @@ -718,11 +505,11 @@ index a36a249540..0df5c17d6e 100644 CONFIG_USB=y CONFIG_DM_USB=y diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig -index f0301dc8bc..7034eb439b 100644 +index 932b768164..c73eccb61c 100644 --- a/configs/rpi_4_defconfig +++ b/configs/rpi_4_defconfig -@@ -28,6 +28,7 @@ CONFIG_DM_ETH=y - CONFIG_BCMGENET=y +@@ -35,6 +35,7 @@ CONFIG_DM_PCI=y + CONFIG_PCI_BRCMSTB=y CONFIG_PINCTRL=y # CONFIG_PINCTRL_GENERIC is not set +CONFIG_DM_RESET=y @@ -730,17 +517,191 @@ index f0301dc8bc..7034eb439b 100644 CONFIG_USB=y CONFIG_DM_USB=y diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig -index d16c2388af..3663a17048 100644 +index 855afcf1cf..800b51e6f5 100644 --- a/configs/rpi_arm64_defconfig +++ b/configs/rpi_arm64_defconfig -@@ -28,6 +28,7 @@ CONFIG_DM_ETH=y - CONFIG_BCMGENET=y +@@ -32,6 +32,7 @@ CONFIG_DM_PCI=y + CONFIG_PCI_BRCMSTB=y CONFIG_PINCTRL=y # CONFIG_PINCTRL_GENERIC is not set +CONFIG_DM_RESET=y # CONFIG_REQUIRE_SERIAL_CONSOLE is not set CONFIG_USB=y CONFIG_DM_USB=y --- -2.26.2 +From patchwork Mon Jun 22 15:30:51 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Nicolas Saenz Julienne +X-Patchwork-Id: 1314563 +X-Patchwork-Delegate: matthias.bgg@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=suse.de +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 49rD0q0fqDz9s6w + for ; Tue, 23 Jun 2020 01:31:55 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id CE84C81DE7; + Mon, 22 Jun 2020 17:31:37 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id EFDD181DD8; Mon, 22 Jun 2020 17:31:29 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 86E4581DD8 + for ; Mon, 22 Jun 2020 17:31:24 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=nsaenzjulienne@suse.de +Received: from relay2.suse.de (unknown [195.135.221.27]) + by mx2.suse.de (Postfix) with ESMTP id C3DADC1D5; + Mon, 22 Jun 2020 15:31:23 +0000 (UTC) +From: Nicolas Saenz Julienne +To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, + sjg@chromium.org, marex@denx.de +Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, + Nicolas Saenz Julienne +Subject: [PATCH v5 4/4] usb: xhci: Add reset controller support +Date: Mon, 22 Jun 2020 17:30:51 +0200 +Message-Id: <20200622153050.23193-5-nsaenzjulienne@suse.de> +X-Mailer: git-send-email 2.27.0 +In-Reply-To: <20200622153050.23193-1-nsaenzjulienne@suse.de> +References: <20200622153050.23193-1-nsaenzjulienne@suse.de> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.30rc1 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de +X-Virus-Status: Clean + +Some atypical users of xhci might need to manually reset their xHCI +controller before starting the HCD setup. Check if a reset controller +device is available to the PCI bus and trigger a reset. + +Signed-off-by: Nicolas Saenz Julienne +--- + +Changes since v3: + - Move reset support to xchi core + + drivers/usb/host/xhci-mem.c | 2 ++ + drivers/usb/host/xhci.c | 33 +++++++++++++++++++++++++++++++++ + include/usb/xhci.h | 2 ++ + 3 files changed, 37 insertions(+) + +diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c +index f446520528..108f4bd8cf 100644 +--- a/drivers/usb/host/xhci-mem.c ++++ b/drivers/usb/host/xhci-mem.c +@@ -180,6 +180,8 @@ void xhci_cleanup(struct xhci_ctrl *ctrl) + xhci_free_virt_devices(ctrl); + free(ctrl->erst.entries); + free(ctrl->dcbaa); ++ if (reset_valid(&ctrl->reset)) ++ reset_free(&ctrl->reset); + memset(ctrl, '\0', sizeof(struct xhci_ctrl)); + } + +diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c +index ebd2954571..03b41cc855 100644 +--- a/drivers/usb/host/xhci.c ++++ b/drivers/usb/host/xhci.c +@@ -190,6 +190,35 @@ static int xhci_start(struct xhci_hcor *hcor) + return ret; + } + ++/** ++ * Resets XHCI Hardware ++ * ++ * @param ctrl pointer to host controller ++ * @return 0 if OK, or a negative error code. ++ */ ++static int xhci_reset_hw(struct xhci_ctrl *ctrl) ++{ ++ int ret; ++ ++ ret = reset_get_by_index(ctrl->dev, 0, &ctrl->reset); ++ if (ret && ret != -ENOENT) { ++ dev_err(ctrl->dev, "failed to get reset\n"); ++ return ret; ++ } ++ ++ if (reset_valid(&ctrl->reset)) { ++ ret = reset_assert(&ctrl->reset); ++ if (ret) ++ return ret; ++ ++ ret = reset_deassert(&ctrl->reset); ++ if (ret) ++ return ret; ++ } ++ ++ return 0; ++} ++ + /** + * Resets the XHCI Controller + * +@@ -1508,6 +1537,10 @@ int xhci_register(struct udevice *dev, struct xhci_hccr *hccr, + + ctrl->dev = dev; + ++ ret = xhci_reset_hw(ctrl); ++ if (ret) ++ goto err; ++ + /* + * XHCI needs to issue a Address device command to setup + * proper device context structures, before it can interact +diff --git a/include/usb/xhci.h b/include/usb/xhci.h +index 1170c0ac69..7d34103fd5 100644 +--- a/include/usb/xhci.h ++++ b/include/usb/xhci.h +@@ -16,6 +16,7 @@ + #ifndef HOST_XHCI_H_ + #define HOST_XHCI_H_ + ++#include + #include + #include + #include +@@ -1209,6 +1210,7 @@ struct xhci_ctrl { + #if CONFIG_IS_ENABLED(DM_USB) + struct udevice *dev; + #endif ++ struct reset_ctl reset; + struct xhci_hccr *hccr; /* R/O registers, not need for volatile */ + struct xhci_hcor *hcor; + struct xhci_doorbell_array *dba; From 5037de6420cfb02d72f7b2cec839a8dea26780ac Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 23 Jun 2020 23:37:35 +0100 Subject: [PATCH 009/271] fix up move of docs --- uboot-tools.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index e579e9f..94b862c 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -215,7 +215,6 @@ install -p -m 0755 %{SOURCE5} $RPM_BUILD_ROOT/lib/kernel/install.d/ # Copy sone useful docs over mkdir -p builds/docs -cp -p board/amlogic/p200/README.odroid-c2 builds/docs/README.odroid-c2 cp -p board/hisilicon/hikey/README builds/docs/README.hikey cp -p board/hisilicon/hikey/README builds/docs/README.hikey cp -p board/Marvell/db-88f6820-gp/README builds/docs/README.mvebu-db-88f6820 @@ -235,6 +234,7 @@ cp -p board/warp7/README builds/docs/README.warp7 %doc README doc/README.kwbimage doc/README.distro doc/README.gpt %doc doc/README.odroid doc/README.rockchip doc/uefi doc/uImage.FIT doc/arch/arm64.rst %doc doc/README.chromium builds/docs/* +%doc doc/board/amlogic/ doc/board/rockchip/ %{_bindir}/* %{_mandir}/man1/mkimage.1* /lib/kernel/install.d/10-devicetree.install From b7b23dc611f89cb20df75196d5ad6446c697e050 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 24 Jun 2020 10:13:08 +0100 Subject: [PATCH 010/271] drop omap3_pandora, no longer upstream --- arm-boards | 1 - 1 file changed, 1 deletion(-) diff --git a/arm-boards b/arm-boards index ec11458..5a82a80 100644 --- a/arm-boards +++ b/arm-boards @@ -87,7 +87,6 @@ novena odroid odroid-xu3 omap3_beagle -omap3_pandora omap4_panda omap5_uevm Orangepi From 65f13a988ec9dd445bdadd4ab388262c2f58eb02 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 6 Jul 2020 21:37:55 +0100 Subject: [PATCH 011/271] v2020.07 --- mmc-sdhci-Fix-HISPD-bit-handling.patch | 186 ------------------------- sources | 2 +- uboot-tools.spec | 9 +- 3 files changed, 6 insertions(+), 191 deletions(-) delete mode 100644 mmc-sdhci-Fix-HISPD-bit-handling.patch diff --git a/mmc-sdhci-Fix-HISPD-bit-handling.patch b/mmc-sdhci-Fix-HISPD-bit-handling.patch deleted file mode 100644 index 1af557a..0000000 --- a/mmc-sdhci-Fix-HISPD-bit-handling.patch +++ /dev/null @@ -1,186 +0,0 @@ -From patchwork Thu Jun 18 14:03:12 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Jagan Teki -X-Patchwork-Id: 1312150 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=amarulasolutions.com -Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; - unprotected) header.d=amarulasolutions.com header.i=@amarulasolutions.com - header.a=rsa-sha256 header.s=google header.b=p2JV38kW; - dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 49nkDv6QMDz9sVB - for ; Fri, 19 Jun 2020 00:03:41 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id F2C6382095; - Thu, 18 Jun 2020 16:03:30 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=amarulasolutions.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; - unprotected) header.d=amarulasolutions.com header.i=@amarulasolutions.com - header.b="p2JV38kW"; dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 5B7478209C; Thu, 18 Jun 2020 16:03:29 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mail-pg1-x544.google.com (mail-pg1-x544.google.com - [IPv6:2607:f8b0:4864:20::544]) - (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 405D682094 - for ; Thu, 18 Jun 2020 16:03:25 +0200 (CEST) -Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) - header.from=amarulasolutions.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=jagan@amarulasolutions.com -Received: by mail-pg1-x544.google.com with SMTP id l63so2934483pge.12 - for ; Thu, 18 Jun 2020 07:03:25 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=amarulasolutions.com; s=google; - h=from:to:cc:subject:date:message-id:mime-version - :content-transfer-encoding; - bh=CV+hHfK9TAO+pQC8PJPW6c55h0n2inkWKuN1Vxg7SJc=; - b=p2JV38kWm3RwP5F+tk+zn9L45s28eZZdf6WYIyRzWvcNpa+cdS5r2EGgYNf9n5Sy+g - /2qUb1648TqviMk+h5pYZ5FjHuo/ebvq7kB+XCQUI053og85IzaunFoHWp0lK9JdYMAv - BZWNHdEEJxW1ym/a1xbgaG8t5hTQxxZNPW/7E= -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20161025; - h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version - :content-transfer-encoding; - bh=CV+hHfK9TAO+pQC8PJPW6c55h0n2inkWKuN1Vxg7SJc=; - b=qO9U8KokdHUFiqhrRgFl4nHyQYO3tSLB0WtE9txbby4Y03rW0qOlUi7FnGYgDEEZgc - l530CIQBkRfWIcv6x0Y96oWXFKYTSrMxX09kM7fwXlk3sIR9TGi9uj2DKkKFN0uxh2Dz - P4ona0/qgXZ6c+Uh9zrtdMEPkqgcKrFGmJ6275Y02X1MfAxHOJH9j0IL0QKcVlsVDN1g - BM16XxOIG61rkpwCSw5bAG7fKnz88fcdRtIw8V+zZcZbFPlA7qMFRatstz6rXudj8I6W - uWOk4Wnia7IdsTKhO2RzcqmAfUrpdSp5igf5Zng67kE8ugEClaOPuPNSMIHXmajvuslz - p3Kw== -X-Gm-Message-State: AOAM5306s2s9jncJZm6mInFtR87gLRuVCnJdkX506YdcY+iCzHesBfDJ - yztzZbfkdUPyBkAU/4qKQ9wodQ== -X-Google-Smtp-Source: ABdhPJyGLX2R5Jk5tUcM8s3JQZ7fjp2LkglvCHfsANHUt7Y0AAko/RtPYz1Azex3Cpn1fP2yhCTDzQ== -X-Received: by 2002:a62:7ccb:: with SMTP id x194mr3911489pfc.318.1592489003175; - Thu, 18 Jun 2020 07:03:23 -0700 (PDT) -Received: from localhost.localdomain ([2405:201:c809:c7d5:b0c7:f192:869b:df87]) - by smtp.gmail.com with ESMTPSA id w18sm2779047pgj.31.2020.06.18.07.03.19 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Thu, 18 Jun 2020 07:03:22 -0700 (PDT) -From: Jagan Teki -To: Peng Fan -Cc: u-boot@lists.denx.de, Jagan Teki , - Kever Yang , - Suniel Mahesh -Subject: [PATCH v4] mmc: sdhci: Fix HISPD bit handling -Date: Thu, 18 Jun 2020 19:33:12 +0530 -Message-Id: <20200618140312.155157-1-jagan@amarulasolutions.com> -X-Mailer: git-send-email 2.25.1 -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -SDHCI HISPD bits need to be configured based on desired mmc -timings mode and some HISPD quirks. - -So, handle the HISPD bit based on the mmc computed selected -mode(timing parameter) rather than fixed mmc card clock -frequency. - -Linux handle the HISPD similar like this in below commit but no -SDHCI_QUIRK_BROKEN_HISPD_MODE, - -commit <501639bf2173> ("mmc: sdhci: fix SDHCI_QUIRK_NO_HISPD_BIT handling") - -This eventually fixed the mmc write issue observed in -rk3399 sdhci controller. - -Bug log for refernece, -=> gpt write mmc 0 $partitions -Writing GPT: mmc write failed -** Can't write to device 0 ** -** Can't write to device 0 ** -error! - -Cc: Kever Yang -Cc: Peng Fan -Tested-by: Suniel Mahesh # roc-rk3399-pc -Signed-off-by: Jagan Teki ---- -Changes for v4: -- update commit message -- simplify the logic. - - drivers/mmc/sdhci.c | 23 +++++++++++++++++------ - 1 file changed, 17 insertions(+), 6 deletions(-) - -diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c -index 92cc8434af..6cb702111b 100644 ---- a/drivers/mmc/sdhci.c -+++ b/drivers/mmc/sdhci.c -@@ -567,6 +567,7 @@ static int sdhci_set_ios(struct mmc *mmc) - #endif - u32 ctrl; - struct sdhci_host *host = mmc->priv; -+ bool no_hispd_bit = false; - - if (host->ops && host->ops->set_control_reg) - host->ops->set_control_reg(host); -@@ -594,14 +595,24 @@ static int sdhci_set_ios(struct mmc *mmc) - ctrl &= ~SDHCI_CTRL_4BITBUS; - } - -- if (mmc->clock > 26000000) -- ctrl |= SDHCI_CTRL_HISPD; -- else -- ctrl &= ~SDHCI_CTRL_HISPD; -- - if ((host->quirks & SDHCI_QUIRK_NO_HISPD_BIT) || - (host->quirks & SDHCI_QUIRK_BROKEN_HISPD_MODE)) -- ctrl &= ~SDHCI_CTRL_HISPD; -+ no_hispd_bit = true; -+ -+ if (!no_hispd_bit) { -+ if (mmc->selected_mode == MMC_HS || -+ mmc->selected_mode == SD_HS || -+ mmc->selected_mode == MMC_DDR_52 || -+ mmc->selected_mode == MMC_HS_200 || -+ mmc->selected_mode == MMC_HS_400 || -+ mmc->selected_mode == UHS_SDR25 || -+ mmc->selected_mode == UHS_SDR50 || -+ mmc->selected_mode == UHS_SDR104 || -+ mmc->selected_mode == UHS_DDR50) -+ ctrl |= SDHCI_CTRL_HISPD; -+ else -+ ctrl &= ~SDHCI_CTRL_HISPD; -+ } - - sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL); - diff --git a/sources b/sources index 488d463..7678d2e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2020.07-rc5.tar.bz2) = a0a1d4749d29d2c86d4ba0d4c04ec6b0515ce2c7e3f335a1e9e2c9833ce6286f572b70be63d3e72cbb0fe3238ea0e0809152a83760f22cf1edf2de54075870b8 +SHA512 (u-boot-2020.07.tar.bz2) = df91264fe8a42e676c3f2aa09d644c6a3035cc8169bf52a8ab95efe7e542cfc758a0ef150949b0d9f03c7dec7d95f8d20a2efe2dbb60c2ef1a61c8063770478d diff --git a/uboot-tools.spec b/uboot-tools.spec index 94b862c..bc2e990 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,9 +1,9 @@ -%global candidate rc5 +#global candidate rc5 %global _default_patch_fuzz 2 Name: uboot-tools Version: 2020.07 -Release: 0.5%{?candidate:.%{candidate}}%{?dist} +Release: 1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -24,8 +24,6 @@ Patch2: uefi-use-Fedora-specific-path-name.patch # Board fixes and enablement Patch4: usb-kbd-fixes.patch Patch5: dragonboard-fixes.patch -# mmc fix -Patch6: mmc-sdhci-Fix-HISPD-bit-handling.patch # Tegra improvements Patch10: arm-tegra-define-fdtfile-option-for-distro-boot.patch @@ -252,6 +250,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Mon Jul 06 2020 Peter Robinson - 2020.07-1 +- 2020.07 GA + * Tue Jun 23 2020 Peter Robinson - 2020.07-0.5.rc5 - 2020.07 RC5 From 5efdbcf3bc9d204df25438a2ac44ee3b000a76a0 Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Tue, 14 Jul 2020 14:36:26 +0000 Subject: [PATCH 012/271] Use make macros https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro --- uboot-tools.spec | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index bc2e990..7f5fdd1 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -3,7 +3,7 @@ Name: uboot-tools Version: 2020.07 -Release: 1%{?candidate:.%{candidate}}%{?dist} +Release: 2%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -138,13 +138,13 @@ do fi # End ATF make $(echo $board)_defconfig O=builds/$(echo $board)/ - make HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" %{?_smp_mflags} V=1 O=builds/$(echo $board)/ + %make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" O=builds/$(echo $board)/ done %endif -make HOSTCC="gcc $RPM_OPT_FLAGS" %{?_smp_mflags} CROSS_COMPILE="" tools-only_defconfig V=1 O=builds/ -make HOSTCC="gcc $RPM_OPT_FLAGS" %{?_smp_mflags} CROSS_COMPILE="" tools-all V=1 O=builds/ +%make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" tools-only_defconfig O=builds/ +%make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" tools-all O=builds/ %install mkdir -p $RPM_BUILD_ROOT%{_bindir} @@ -250,6 +250,10 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Tue Jul 14 2020 Tom Stellard - 2020.07-2 +- Use make macros +- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro + * Mon Jul 06 2020 Peter Robinson - 2020.07-1 - 2020.07 GA From 2410ac8a2a72c8ebaeacce3cd7107ef99344d641 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 28 Jul 2020 09:16:30 +0100 Subject: [PATCH 013/271] 2020.10 RC1 --- AllWinner-Pine64-bits.patch | 953 ++++++++++------- ...port-for-Raspberry-Pi-4-board-64-bit.patch | 993 ------------------ rockchip-Pinebook-Pro-Fixes.patch | 200 ---- sources | 2 +- uboot-tools.spec | 21 +- ...Load-Raspberry-Pi-4-VL805-s-firmware.patch | 707 ------------- 6 files changed, 590 insertions(+), 2286 deletions(-) delete mode 100644 USB-host-support-for-Raspberry-Pi-4-board-64-bit.patch delete mode 100644 rockchip-Pinebook-Pro-Fixes.patch delete mode 100644 usb-xhci-Load-Raspberry-Pi-4-VL805-s-firmware.patch diff --git a/AllWinner-Pine64-bits.patch b/AllWinner-Pine64-bits.patch index 569afc8..8ce13e7 100644 --- a/AllWinner-Pine64-bits.patch +++ b/AllWinner-Pine64-bits.patch @@ -1,15 +1,403 @@ -From 2c213379d9ec786480a655f8c5687b2df376017f Mon Sep 17 00:00:00 2001 +From 6e5d771060dff5350e5940b7e457884b47a560ac Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Tue, 10 Mar 2020 12:27:15 +0000 -Subject: [PATCH 1/9] arm: dts: AllWinner: sync sun50i-a64.dtsi to 5.6-rc1 +Date: Thu, 9 Jul 2020 12:20:53 +0100 +Subject: [PATCH 1/8] dt-bindings: clk: sync sun50i-a64-ccu.h to linux 5.8-rc1 + +Sync the clock bindings for the Allwinner A64 to Linux Signed-off-by: Peter Robinson --- - arch/arm/dts/sun50i-a64.dtsi | 472 ++++++++++++++++++++++++++++------- - 1 file changed, 387 insertions(+), 85 deletions(-) + include/dt-bindings/clock/sun50i-a64-ccu.h | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/include/dt-bindings/clock/sun50i-a64-ccu.h b/include/dt-bindings/clock/sun50i-a64-ccu.h +index d66432c6e6..318eb15c41 100644 +--- a/include/dt-bindings/clock/sun50i-a64-ccu.h ++++ b/include/dt-bindings/clock/sun50i-a64-ccu.h +@@ -43,8 +43,10 @@ + #ifndef _DT_BINDINGS_CLK_SUN50I_A64_H_ + #define _DT_BINDINGS_CLK_SUN50I_A64_H_ + ++#define CLK_PLL_VIDEO0 7 + #define CLK_PLL_PERIPH0 11 + ++#define CLK_CPUX 21 + #define CLK_BUS_MIPI_DSI 28 + #define CLK_BUS_CE 29 + #define CLK_BUS_DMA 30 +@@ -129,7 +131,7 @@ + #define CLK_AVS 109 + #define CLK_HDMI 110 + #define CLK_HDMI_DDC 111 +- ++#define CLK_MBUS 112 + #define CLK_DSI_DPHY 113 + #define CLK_GPU 114 + +-- +2.26.2 + +From 274dff055e80778277860f72a903c01ef33f87c7 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Thu, 9 Jul 2020 12:29:15 +0100 +Subject: [PATCH 2/8] dt-bindings: leds: sync leds common.h to linux from + 5.8-rc1 + +Sync the leds common.h to the latest Linux version. + +Signed-off-by: Peter Robinson +--- + include/dt-bindings/leds/common.h | 36 ++++++++++++++++++++++--------- + 1 file changed, 26 insertions(+), 10 deletions(-) + +diff --git a/include/dt-bindings/leds/common.h b/include/dt-bindings/leds/common.h +index 9e1256a7c1..0ce7dfc00d 100644 +--- a/include/dt-bindings/leds/common.h ++++ b/include/dt-bindings/leds/common.h +@@ -6,6 +6,7 @@ + * Author: Jacek Anaszewski + * + * Copyright (C) 2019 Jacek Anaszewski ++ * Copyright (C) 2020 Pavel Machek + */ + + #ifndef __DT_BINDINGS_LEDS_H +@@ -32,16 +33,38 @@ + #define LED_COLOR_ID_MAX 8 + + /* Standard LED functions */ ++/* Keyboard LEDs, usually it would be input4::capslock etc. */ ++/* Obsolete equivalent: "shift-key-light" */ ++#define LED_FUNCTION_CAPSLOCK "capslock" ++#define LED_FUNCTION_SCROLLLOCK "scrolllock" ++#define LED_FUNCTION_NUMLOCK "numlock" ++/* Obsolete equivalents: "tpacpi::thinklight" (IBM/Lenovo Thinkpads), ++ "lp5523:kb{1,2,3,4,5,6}" (Nokia N900) */ ++#define LED_FUNCTION_KBD_BACKLIGHT "kbd_backlight" ++ ++/* System LEDs, usually found on system body. ++ platform::mute (etc) is sometimes seen, :mute would be better */ ++#define LED_FUNCTION_POWER "power" ++#define LED_FUNCTION_DISK "disk" ++ ++/* Obsolete: "platform:*:charging" (allwinner sun50i) */ ++#define LED_FUNCTION_CHARGING "charging" ++/* Used RGB notification LEDs common on phones. ++ Obsolete equivalents: "status-led:{red,green,blue}" (Motorola Droid 4), ++ "lp5523:{r,g,b}" (Nokia N900) */ ++#define LED_FUNCTION_STATUS "status" ++ ++#define LED_FUNCTION_MICMUTE "micmute" ++#define LED_FUNCTION_MUTE "mute" ++ ++/* Miscelleaus functions. Use functions above if you can. */ + #define LED_FUNCTION_ACTIVITY "activity" + #define LED_FUNCTION_ALARM "alarm" + #define LED_FUNCTION_BACKLIGHT "backlight" + #define LED_FUNCTION_BLUETOOTH "bluetooth" + #define LED_FUNCTION_BOOT "boot" + #define LED_FUNCTION_CPU "cpu" +-#define LED_FUNCTION_CAPSLOCK "capslock" +-#define LED_FUNCTION_CHARGING "charging" + #define LED_FUNCTION_DEBUG "debug" +-#define LED_FUNCTION_DISK "disk" + #define LED_FUNCTION_DISK_ACTIVITY "disk-activity" + #define LED_FUNCTION_DISK_ERR "disk-err" + #define LED_FUNCTION_DISK_READ "disk-read" +@@ -50,21 +73,14 @@ + #define LED_FUNCTION_FLASH "flash" + #define LED_FUNCTION_HEARTBEAT "heartbeat" + #define LED_FUNCTION_INDICATOR "indicator" +-#define LED_FUNCTION_KBD_BACKLIGHT "kbd_backlight" + #define LED_FUNCTION_LAN "lan" + #define LED_FUNCTION_MAIL "mail" + #define LED_FUNCTION_MTD "mtd" +-#define LED_FUNCTION_MICMUTE "micmute" +-#define LED_FUNCTION_MUTE "mute" +-#define LED_FUNCTION_NUMLOCK "numlock" + #define LED_FUNCTION_PANIC "panic" + #define LED_FUNCTION_PROGRAMMING "programming" +-#define LED_FUNCTION_POWER "power" + #define LED_FUNCTION_RX "rx" + #define LED_FUNCTION_SD "sd" +-#define LED_FUNCTION_SCROLLLOCK "scrolllock" + #define LED_FUNCTION_STANDBY "standby" +-#define LED_FUNCTION_STATUS "status" + #define LED_FUNCTION_TORCH "torch" + #define LED_FUNCTION_TX "tx" + #define LED_FUNCTION_USB "usb" +-- +2.26.2 + +From 7010e7d2b19d2ded674e376855d2716b7cd421b7 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Fri, 10 Jul 2020 12:46:11 +0100 +Subject: [PATCH 3/8] dt-bindings: clk/reset: sync updated bindings for + Allwinner DE2 display engine + +Sync the clock and reset bindings for the Allwinner DE2 display engine to Linux 5.8-rc1. + +Signed-off-by: Peter Robinson +--- + include/dt-bindings/clock/sun8i-de2.h | 3 +++ + include/dt-bindings/reset/sun8i-de2.h | 1 + + 2 files changed, 4 insertions(+) + +diff --git a/include/dt-bindings/clock/sun8i-de2.h b/include/dt-bindings/clock/sun8i-de2.h +index 3bed63b524..7768f73b05 100644 +--- a/include/dt-bindings/clock/sun8i-de2.h ++++ b/include/dt-bindings/clock/sun8i-de2.h +@@ -15,4 +15,7 @@ + #define CLK_MIXER1 7 + #define CLK_WB 8 + ++#define CLK_BUS_ROT 9 ++#define CLK_ROT 10 ++ + #endif /* _DT_BINDINGS_CLOCK_SUN8I_DE2_H_ */ +diff --git a/include/dt-bindings/reset/sun8i-de2.h b/include/dt-bindings/reset/sun8i-de2.h +index 9526017432..1c36a6ac86 100644 +--- a/include/dt-bindings/reset/sun8i-de2.h ++++ b/include/dt-bindings/reset/sun8i-de2.h +@@ -10,5 +10,6 @@ + #define RST_MIXER0 0 + #define RST_MIXER1 1 + #define RST_WB 2 ++#define RST_ROT 3 + + #endif /* _DT_BINDINGS_RESET_SUN8I_DE2_H_ */ +-- +2.26.2 + +From bdbf5f21343571af989754c908299854e81f44dd Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Thu, 9 Jul 2020 12:24:41 +0100 +Subject: [PATCH 4/8] arm: dts: sync axp803.dtsi from linux 5.8-rc1 + +Sync the Allwinner axp803 device tree to the latest upstream Linux. + +Signed-off-by: Peter Robinson +--- + arch/arm/dts/axp803.dtsi | 82 ++++++++++++++++++++-------------------- + 1 file changed, 41 insertions(+), 41 deletions(-) + +diff --git a/arch/arm/dts/axp803.dtsi b/arch/arm/dts/axp803.dtsi +index e5eae8bafc..10e9186a76 100644 +--- a/arch/arm/dts/axp803.dtsi ++++ b/arch/arm/dts/axp803.dtsi +@@ -1,44 +1,5 @@ +-/* +- * Copyright 2017 Icenowy Zheng +- * +- * This file is dual-licensed: you can use it either under the terms +- * of the GPL or the X11 license, at your option. Note that this dual +- * licensing only applies to this file, and not this project as a +- * whole. +- * +- * a) This file is free software; you can redistribute it and/or +- * modify it under the terms of the GNU General Public License as +- * published by the Free Software Foundation; either version 2 of the +- * License, or (at your option) any later version. +- * +- * This file is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * Or, alternatively, +- * +- * b) Permission is hereby granted, free of charge, to any person +- * obtaining a copy of this software and associated documentation +- * files (the "Software"), to deal in the Software without +- * restriction, including without limitation the rights to use, +- * copy, modify, merge, publish, distribute, sublicense, and/or +- * sell copies of the Software, and to permit persons to whom the +- * Software is furnished to do so, subject to the following +- * conditions: +- * +- * The above copyright notice and this permission notice shall be +- * included in all copies or substantial portions of the Software. +- * +- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +- * OTHER DEALINGS IN THE SOFTWARE. +- */ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++// Copyright 2017 Icenowy Zheng + + /* + * AXP803 Integrated Power Management Chip +@@ -49,6 +10,39 @@ + interrupt-controller; + #interrupt-cells = <1>; + ++ ac_power_supply: ac-power-supply { ++ compatible = "x-powers,axp803-ac-power-supply", ++ "x-powers,axp813-ac-power-supply"; ++ status = "disabled"; ++ }; ++ ++ axp_adc: adc { ++ compatible = "x-powers,axp803-adc", "x-powers,axp813-adc"; ++ #io-channel-cells = <1>; ++ }; ++ ++ axp_gpio: gpio { ++ compatible = "x-powers,axp803-gpio", "x-powers,axp813-gpio"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ ++ gpio0_ldo: gpio0-ldo { ++ pins = "GPIO0"; ++ function = "ldo"; ++ }; ++ ++ gpio1_ldo: gpio1-ldo { ++ pins = "GPIO1"; ++ function = "ldo"; ++ }; ++ }; ++ ++ battery_power_supply: battery-power-supply { ++ compatible = "x-powers,axp803-battery-power-supply", ++ "x-powers,axp813-battery-power-supply"; ++ status = "disabled"; ++ }; ++ + regulators { + /* Default work frequency for buck regulators */ + x-powers,dcdc-freq = <3000>; +@@ -152,4 +146,10 @@ + status = "disabled"; + }; + }; ++ ++ usb_power_supply: usb-power-supply { ++ compatible = "x-powers,axp803-usb-power-supply", ++ "x-powers,axp813-usb-power-supply"; ++ status = "disabled"; ++ }; + }; +-- +2.26.2 + +From e0f7e9ce1a8a889bf7a1c5842700f0cb368bc81b Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Thu, 9 Jul 2020 12:26:34 +0100 +Subject: [PATCH 5/8] arm: dts: Add new sun50i-a64-cpu-opp.dtsi from Linux + 5.8-rc1 + +Sync the Allwinner A64 CPU operating points dtsi from Linux. + +Signed-off-by: Peter Robinson +--- + arch/arm/dts/sun50i-a64-cpu-opp.dtsi | 75 ++++++++++++++++++++++++++++ + 1 file changed, 75 insertions(+) + create mode 100644 arch/arm/dts/sun50i-a64-cpu-opp.dtsi + +diff --git a/arch/arm/dts/sun50i-a64-cpu-opp.dtsi b/arch/arm/dts/sun50i-a64-cpu-opp.dtsi +new file mode 100644 +index 0000000000..578c37490d +--- /dev/null ++++ b/arch/arm/dts/sun50i-a64-cpu-opp.dtsi +@@ -0,0 +1,75 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2020 Vasily khoruzhick ++ */ ++ ++/ { ++ cpu0_opp_table: opp_table0 { ++ compatible = "operating-points-v2"; ++ opp-shared; ++ ++ opp-648000000 { ++ opp-hz = /bits/ 64 <648000000>; ++ opp-microvolt = <1040000>; ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ }; ++ ++ opp-816000000 { ++ opp-hz = /bits/ 64 <816000000>; ++ opp-microvolt = <1100000>; ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ }; ++ ++ opp-912000000 { ++ opp-hz = /bits/ 64 <912000000>; ++ opp-microvolt = <1120000>; ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ }; ++ ++ opp-960000000 { ++ opp-hz = /bits/ 64 <960000000>; ++ opp-microvolt = <1160000>; ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ }; ++ ++ opp-1008000000 { ++ opp-hz = /bits/ 64 <1008000000>; ++ opp-microvolt = <1200000>; ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ }; ++ ++ opp-1056000000 { ++ opp-hz = /bits/ 64 <1056000000>; ++ opp-microvolt = <1240000>; ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ }; ++ ++ opp-1104000000 { ++ opp-hz = /bits/ 64 <1104000000>; ++ opp-microvolt = <1260000>; ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ }; ++ ++ opp-1152000000 { ++ opp-hz = /bits/ 64 <1152000000>; ++ opp-microvolt = <1300000>; ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ }; ++ }; ++}; ++ ++&cpu0 { ++ operating-points-v2 = <&cpu0_opp_table>; ++}; ++ ++&cpu1 { ++ operating-points-v2 = <&cpu0_opp_table>; ++}; ++ ++&cpu2 { ++ operating-points-v2 = <&cpu0_opp_table>; ++}; ++ ++&cpu3 { ++ operating-points-v2 = <&cpu0_opp_table>; ++}; +-- +2.26.2 + +From b077a5962ba631e198d42c14516426b878c157eb Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Fri, 10 Jul 2020 12:39:21 +0100 +Subject: [PATCH 6/8] arm: dts: Sync the sun50i-a64.dtsi from Linux 5.8-rc1 + +Sync the Allwinner A64 sun50i-a64.dtsi from Linux. + +Signed-off-by: Peter Robinson +--- + arch/arm/dts/sun50i-a64.dtsi | 532 ++++++++++++++++++++++++++++------- + 1 file changed, 434 insertions(+), 98 deletions(-) diff --git a/arch/arm/dts/sun50i-a64.dtsi b/arch/arm/dts/sun50i-a64.dtsi -index ff41abc96a..862b47dc9d 100644 +index ff41abc96a..8dfbcd1440 100644 --- a/arch/arm/dts/sun50i-a64.dtsi +++ b/arch/arm/dts/sun50i-a64.dtsi @@ -1,46 +1,7 @@ @@ -147,12 +535,14 @@ index ff41abc96a..862b47dc9d 100644 }; psci { -@@ -155,6 +130,30 @@ +@@ -155,26 +130,33 @@ method = "smc"; }; +- sound_spdif { + sound: sound { -+ compatible = "simple-audio-card"; + compatible = "simple-audio-card"; +- simple-audio-card,name = "On-board SPDIF"; + simple-audio-card,name = "sun50i-a64-audio"; + simple-audio-card,format = "i2s"; + simple-audio-card,frame-master = <&cpudai>; @@ -165,28 +555,32 @@ index ff41abc96a..862b47dc9d 100644 + "AIF1 Slot 0 Left ADC", "Left ADC", + "AIF1 Slot 0 Right ADC", "Right ADC"; + status = "disabled"; -+ + +- simple-audio-card,cpu { +- sound-dai = <&spdif>; + cpudai: simple-audio-card,cpu { + sound-dai = <&dai>; -+ }; -+ + }; + +- simple-audio-card,codec { +- sound-dai = <&spdif_out>; + link_codec: simple-audio-card,codec { + sound-dai = <&codec>; -+ }; -+ }; -+ - sound_spdif { - compatible = "simple-audio-card"; - simple-audio-card,name = "On-board SPDIF"; -@@ -175,6 +174,7 @@ + }; + }; +- spdif_out: spdif-out { +- #sound-dai-cells = <0>; +- compatible = "linux,spdif-dit"; +- }; +- timer { compatible = "arm,armv8-timer"; + allwinner,erratum-unknown1; interrupts = , ; }; @@ -264,14 +658,16 @@ index ff41abc96a..862b47dc9d 100644 compatible = "allwinner,sun50i-a64-de2"; reg = <0x1000000 0x400000>; allwinner,sram = <&de2_sram 1>; -@@ -202,10 +265,10 @@ +@@ -201,16 +246,28 @@ + display_clocks: clock@0 { compatible = "allwinner,sun50i-a64-de2-clk"; - reg = <0x0 0x100000>; +- reg = <0x0 0x100000>; - clocks = <&ccu CLK_DE>, - <&ccu CLK_BUS_DE>; - clock-names = "mod", - "bus"; ++ reg = <0x0 0x10000>; + clocks = <&ccu CLK_BUS_DE>, + <&ccu CLK_DE>; + clock-names = "bus", @@ -279,7 +675,24 @@ index ff41abc96a..862b47dc9d 100644 resets = <&ccu RST_BUS_DE>; #clock-cells = <1>; #reset-cells = <1>; -@@ -225,11 +288,19 @@ + }; + ++ rotate: rotate@20000 { ++ compatible = "allwinner,sun50i-a64-de2-rotate", ++ "allwinner,sun8i-a83t-de2-rotate"; ++ reg = <0x20000 0x10000>; ++ interrupts = ; ++ clocks = <&display_clocks CLK_BUS_ROT>, ++ <&display_clocks CLK_ROT>; ++ clock-names = "bus", ++ "mod"; ++ resets = <&display_clocks RST_ROT>; ++ }; ++ + mixer0: mixer@100000 { + compatible = "allwinner,sun50i-a64-de2-mixer-0"; + reg = <0x100000 0x100000>; +@@ -225,11 +282,19 @@ #size-cells = <0>; mixer0_out: port@1 { @@ -300,7 +713,7 @@ index ff41abc96a..862b47dc9d 100644 }; }; }; -@@ -248,9 +319,17 @@ +@@ -248,9 +313,17 @@ #size-cells = <0>; mixer1_out: port@1 { @@ -319,7 +732,7 @@ index ff41abc96a..862b47dc9d 100644 remote-endpoint = <&tcon1_in_mixer1>; }; }; -@@ -259,8 +338,7 @@ +@@ -259,8 +332,7 @@ }; syscon: syscon@1c00000 { @@ -329,7 +742,7 @@ index ff41abc96a..862b47dc9d 100644 reg = <0x01c00000 0x1000>; #address-cells = <1>; #size-cells = <1>; -@@ -278,6 +356,20 @@ +@@ -278,6 +350,20 @@ reg = <0x0000 0x28000>; }; }; @@ -350,7 +763,7 @@ index ff41abc96a..862b47dc9d 100644 }; dma: dma-controller@1c02000 { -@@ -299,6 +391,7 @@ +@@ -299,6 +385,7 @@ clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>; clock-names = "ahb", "tcon-ch0"; clock-output-names = "tcon-pixel-clock"; @@ -358,7 +771,7 @@ index ff41abc96a..862b47dc9d 100644 resets = <&ccu RST_BUS_TCON0>, <&ccu RST_BUS_LVDS>; reset-names = "lcd", "lvds"; -@@ -315,12 +408,23 @@ +@@ -315,12 +402,23 @@ reg = <0>; remote-endpoint = <&mixer0_out_tcon0>; }; @@ -382,7 +795,7 @@ index ff41abc96a..862b47dc9d 100644 }; }; }; -@@ -340,9 +444,17 @@ +@@ -340,9 +438,17 @@ #size-cells = <0>; tcon1_in: port@0 { @@ -401,7 +814,7 @@ index ff41abc96a..862b47dc9d 100644 remote-endpoint = <&mixer1_out_tcon1>; }; }; -@@ -360,6 +472,17 @@ +@@ -360,6 +466,17 @@ }; }; @@ -419,7 +832,7 @@ index ff41abc96a..862b47dc9d 100644 mmc0: mmc@1c0f000 { compatible = "allwinner,sun50i-a64-mmc"; reg = <0x01c0f000 0x1000>; -@@ -405,6 +528,21 @@ +@@ -405,6 +522,31 @@ sid: eeprom@1c14000 { compatible = "allwinner,sun50i-a64-sid"; reg = <0x1c14000 0x400>; @@ -438,10 +851,20 @@ index ff41abc96a..862b47dc9d 100644 + clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>; + clock-names = "bus", "mod"; + resets = <&ccu RST_BUS_CE>; ++ }; ++ ++ msgbox: mailbox@1c17000 { ++ compatible = "allwinner,sun50i-a64-msgbox", ++ "allwinner,sun6i-a31-msgbox"; ++ reg = <0x01c17000 0x1000>; ++ clocks = <&ccu CLK_BUS_MSGBOX>; ++ resets = <&ccu RST_BUS_MSGBOX>; ++ interrupts = ; ++ #mbox-cells = <1>; }; usb_otg: usb@1c19000 { -@@ -417,6 +555,7 @@ +@@ -417,6 +559,7 @@ phys = <&usbphy 0>; phy-names = "usb"; extcon = <&usbphy 0>; @@ -449,7 +872,7 @@ index ff41abc96a..862b47dc9d 100644 status = "disabled"; }; -@@ -491,7 +630,7 @@ +@@ -491,7 +634,7 @@ ccu: clock@1c20000 { compatible = "allwinner,sun50i-a64-ccu"; reg = <0x01c20000 0x400>; @@ -458,7 +881,7 @@ index ff41abc96a..862b47dc9d 100644 clock-names = "hosc", "losc"; #clock-cells = <1>; #reset-cells = <1>; -@@ -503,22 +642,45 @@ +@@ -503,22 +646,50 @@ interrupts = , , ; @@ -494,6 +917,11 @@ index ff41abc96a..862b47dc9d 100644 function = "i2c1"; }; ++ i2c2_pins: i2c2-pins { ++ pins = "PE14", "PE15"; ++ function = "i2c2"; ++ }; ++ + /omit-if-no-ref/ + lcd_rgb666_pins: lcd-rgb666-pins { + pins = "PD0", "PD1", "PD2", "PD3", "PD4", @@ -507,7 +935,7 @@ index ff41abc96a..862b47dc9d 100644 mmc0_pins: mmc0-pins { pins = "PF0", "PF1", "PF2", "PF3", "PF4", "PF5"; -@@ -551,19 +713,19 @@ +@@ -551,19 +722,19 @@ bias-pull-up; }; @@ -530,7 +958,7 @@ index ff41abc96a..862b47dc9d 100644 pins = "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD15", "PD16", "PD17", "PD18", "PD19", "PD20", "PD21", "PD22", "PD23"; -@@ -571,17 +733,17 @@ +@@ -571,17 +742,17 @@ drive-strength = <40>; }; @@ -551,7 +979,7 @@ index ff41abc96a..862b47dc9d 100644 pins = "PD0", "PD1", "PD2", "PD3"; function = "spi1"; }; -@@ -591,12 +753,12 @@ +@@ -591,12 +762,12 @@ function = "uart0"; }; @@ -566,7 +994,7 @@ index ff41abc96a..862b47dc9d 100644 pins = "PG8", "PG9"; function = "uart1"; }; -@@ -638,6 +800,14 @@ +@@ -638,6 +809,14 @@ status = "disabled"; }; @@ -581,7 +1009,7 @@ index ff41abc96a..862b47dc9d 100644 i2s0: i2s@1c22000 { #sound-dai-cells = <0>; compatible = "allwinner,sun50i-a64-i2s", -@@ -666,6 +836,41 @@ +@@ -666,6 +845,41 @@ status = "disabled"; }; @@ -623,7 +1051,7 @@ index ff41abc96a..862b47dc9d 100644 uart0: serial@1c28000 { compatible = "snps,dw-apb-uart"; reg = <0x01c28000 0x400>; -@@ -727,6 +932,8 @@ +@@ -727,6 +941,8 @@ interrupts = ; clocks = <&ccu CLK_BUS_I2C0>; resets = <&ccu RST_BUS_I2C0>; @@ -632,7 +1060,7 @@ index ff41abc96a..862b47dc9d 100644 status = "disabled"; #address-cells = <1>; #size-cells = <0>; -@@ -738,6 +945,8 @@ +@@ -738,6 +954,8 @@ interrupts = ; clocks = <&ccu CLK_BUS_I2C1>; resets = <&ccu RST_BUS_I2C1>; @@ -641,7 +1069,22 @@ index ff41abc96a..862b47dc9d 100644 status = "disabled"; #address-cells = <1>; #size-cells = <0>; -@@ -808,6 +1017,28 @@ +@@ -749,12 +967,13 @@ + interrupts = ; + clocks = <&ccu CLK_BUS_I2C2>; + resets = <&ccu RST_BUS_I2C2>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2c2_pins>; + status = "disabled"; + #address-cells = <1>; + #size-cells = <0>; + }; + +- + spi0: spi@1c68000 { + compatible = "allwinner,sun8i-h3-spi"; + reg = <0x01c68000 0x1000>; +@@ -808,6 +1027,28 @@ }; }; @@ -670,10 +1113,20 @@ index ff41abc96a..862b47dc9d 100644 gic: interrupt-controller@1c81000 { compatible = "arm,gic-400"; reg = <0x01c81000 0x1000>, -@@ -830,6 +1061,51 @@ +@@ -830,6 +1071,75 @@ status = "disabled"; }; ++ mbus: dram-controller@1c62000 { ++ compatible = "allwinner,sun50i-a64-mbus"; ++ reg = <0x01c62000 0x1000>; ++ clocks = <&ccu 112>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ dma-ranges = <0x00000000 0x40000000 0xc0000000>; ++ #interconnect-cells = <1>; ++ }; ++ + csi: csi@1cb0000 { + compatible = "allwinner,sun50i-a64-csi"; + reg = <0x01cb0000 0x1000>; @@ -718,11 +1171,25 @@ index ff41abc96a..862b47dc9d 100644 + status = "disabled"; + #phy-cells = <0>; + }; ++ ++ deinterlace: deinterlace@1e00000 { ++ compatible = "allwinner,sun50i-a64-deinterlace", ++ "allwinner,sun8i-h3-deinterlace"; ++ reg = <0x01e00000 0x20000>; ++ clocks = <&ccu CLK_BUS_DEINTERLACE>, ++ <&ccu CLK_DEINTERLACE>, ++ <&ccu CLK_DRAM_DEINTERLACE>; ++ clock-names = "bus", "mod", "ram"; ++ resets = <&ccu RST_BUS_DEINTERLACE>; ++ interrupts = ; ++ interconnects = <&mbus 9>; ++ interconnect-names = "dma-mem"; ++ }; + hdmi: hdmi@1ee0000 { compatible = "allwinner,sun50i-a64-dw-hdmi", "allwinner,sun8i-a83t-dw-hdmi"; -@@ -842,7 +1118,7 @@ +@@ -842,7 +1152,7 @@ resets = <&ccu RST_BUS_HDMI1>; reset-names = "ctrl"; phys = <&hdmi_phy>; @@ -731,7 +1198,7 @@ index ff41abc96a..862b47dc9d 100644 status = "disabled"; ports { -@@ -867,7 +1143,7 @@ +@@ -867,7 +1177,7 @@ compatible = "allwinner,sun50i-a64-hdmi-phy"; reg = <0x01ef0000 0x10000>; clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_DDC>, @@ -740,7 +1207,7 @@ index ff41abc96a..862b47dc9d 100644 clock-names = "bus", "mod", "pll-0"; resets = <&ccu RST_BUS_HDMI0>; reset-names = "phy"; -@@ -875,11 +1151,12 @@ +@@ -875,11 +1185,12 @@ }; rtc: rtc@1f00000 { @@ -756,7 +1223,7 @@ index ff41abc96a..862b47dc9d 100644 clocks = <&osc32k>; #clock-cells = <1>; }; -@@ -896,13 +1173,19 @@ +@@ -896,13 +1207,19 @@ r_ccu: clock@1f01400 { compatible = "allwinner,sun50i-a64-r-ccu"; reg = <0x01f01400 0x100>; @@ -778,7 +1245,7 @@ index ff41abc96a..862b47dc9d 100644 r_i2c: i2c@1f02400 { compatible = "allwinner,sun50i-a64-i2c", "allwinner,sun6i-a31-i2c"; -@@ -915,6 +1198,19 @@ +@@ -915,6 +1232,19 @@ #size-cells = <0>; }; @@ -798,7 +1265,7 @@ index ff41abc96a..862b47dc9d 100644 r_pwm: pwm@1f03800 { compatible = "allwinner,sun50i-a64-pwm", "allwinner,sun5i-a13-pwm"; -@@ -942,12 +1238,17 @@ +@@ -942,12 +1272,17 @@ function = "s_i2c"; }; @@ -818,7 +1285,7 @@ index ff41abc96a..862b47dc9d 100644 pins = "PL0", "PL1"; function = "s_rsb"; }; -@@ -972,6 +1273,7 @@ +@@ -972,6 +1307,7 @@ "allwinner,sun6i-a31-wdt"; reg = <0x01c20ca0 0x20>; interrupts = ; @@ -827,196 +1294,21 @@ index ff41abc96a..862b47dc9d 100644 }; }; -- -2.26.0 +2.26.2 -From fbe1642e24188e96f20ab5a3b003597288104e31 Mon Sep 17 00:00:00 2001 +From 9e91885814f880ce13ee98cab79876338811949f Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Tue, 10 Mar 2020 15:32:51 +0000 -Subject: [PATCH 2/9] arm: dts: AllWinner: sync axp803.dtsi to 5.6-rc1 - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/axp803.dtsi | 82 ++++++++++++++++++++-------------------- - 1 file changed, 41 insertions(+), 41 deletions(-) - -diff --git a/arch/arm/dts/axp803.dtsi b/arch/arm/dts/axp803.dtsi -index e5eae8bafc..10e9186a76 100644 ---- a/arch/arm/dts/axp803.dtsi -+++ b/arch/arm/dts/axp803.dtsi -@@ -1,44 +1,5 @@ --/* -- * Copyright 2017 Icenowy Zheng -- * -- * This file is dual-licensed: you can use it either under the terms -- * of the GPL or the X11 license, at your option. Note that this dual -- * licensing only applies to this file, and not this project as a -- * whole. -- * -- * a) This file is free software; you can redistribute it and/or -- * modify it under the terms of the GNU General Public License as -- * published by the Free Software Foundation; either version 2 of the -- * License, or (at your option) any later version. -- * -- * This file is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU General Public License for more details. -- * -- * Or, alternatively, -- * -- * b) Permission is hereby granted, free of charge, to any person -- * obtaining a copy of this software and associated documentation -- * files (the "Software"), to deal in the Software without -- * restriction, including without limitation the rights to use, -- * copy, modify, merge, publish, distribute, sublicense, and/or -- * sell copies of the Software, and to permit persons to whom the -- * Software is furnished to do so, subject to the following -- * conditions: -- * -- * The above copyright notice and this permission notice shall be -- * included in all copies or substantial portions of the Software. -- * -- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -- * OTHER DEALINGS IN THE SOFTWARE. -- */ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+// Copyright 2017 Icenowy Zheng - - /* - * AXP803 Integrated Power Management Chip -@@ -49,6 +10,39 @@ - interrupt-controller; - #interrupt-cells = <1>; - -+ ac_power_supply: ac-power-supply { -+ compatible = "x-powers,axp803-ac-power-supply", -+ "x-powers,axp813-ac-power-supply"; -+ status = "disabled"; -+ }; -+ -+ axp_adc: adc { -+ compatible = "x-powers,axp803-adc", "x-powers,axp813-adc"; -+ #io-channel-cells = <1>; -+ }; -+ -+ axp_gpio: gpio { -+ compatible = "x-powers,axp803-gpio", "x-powers,axp813-gpio"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ -+ gpio0_ldo: gpio0-ldo { -+ pins = "GPIO0"; -+ function = "ldo"; -+ }; -+ -+ gpio1_ldo: gpio1-ldo { -+ pins = "GPIO1"; -+ function = "ldo"; -+ }; -+ }; -+ -+ battery_power_supply: battery-power-supply { -+ compatible = "x-powers,axp803-battery-power-supply", -+ "x-powers,axp813-battery-power-supply"; -+ status = "disabled"; -+ }; -+ - regulators { - /* Default work frequency for buck regulators */ - x-powers,dcdc-freq = <3000>; -@@ -152,4 +146,10 @@ - status = "disabled"; - }; - }; -+ -+ usb_power_supply: usb-power-supply { -+ compatible = "x-powers,axp803-usb-power-supply", -+ "x-powers,axp813-usb-power-supply"; -+ status = "disabled"; -+ }; - }; --- -2.26.0 - -From f44987a0ccf064f9da4a119e7700605a3eb56447 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Tue, 10 Mar 2020 15:34:58 +0000 -Subject: [PATCH 3/9] arm: dts: AllWinner: sync sun50i-a64.dtsi to 5.7-rc1 - -Adds the following two patches queued for 5.7: -- arm64: dts: sun50i-a64: Add i2c2 pins -- arm64: dts: allwinner: a64: Add MBUS controller node - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/sun50i-a64.dtsi | 16 +++++++++++++++- - 1 file changed, 15 insertions(+), 1 deletion(-) - -diff --git a/arch/arm/dts/sun50i-a64.dtsi b/arch/arm/dts/sun50i-a64.dtsi -index 862b47dc9d..89a60fcf5a 100644 ---- a/arch/arm/dts/sun50i-a64.dtsi -+++ b/arch/arm/dts/sun50i-a64.dtsi -@@ -671,6 +671,11 @@ - function = "i2c1"; - }; - -+ i2c2_pins: i2c2-pins { -+ pins = "PE14", "PE15"; -+ function = "i2c2"; -+ }; -+ - /omit-if-no-ref/ - lcd_rgb666_pins: lcd-rgb666-pins { - pins = "PD0", "PD1", "PD2", "PD3", "PD4", -@@ -958,12 +963,13 @@ - interrupts = ; - clocks = <&ccu CLK_BUS_I2C2>; - resets = <&ccu RST_BUS_I2C2>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c2_pins>; - status = "disabled"; - #address-cells = <1>; - #size-cells = <0>; - }; - -- - spi0: spi@1c68000 { - compatible = "allwinner,sun8i-h3-spi"; - reg = <0x01c68000 0x1000>; -@@ -1061,6 +1067,14 @@ - status = "disabled"; - }; - -+ mbus: dram-controller@1c62000 { -+ compatible = "allwinner,sun50i-a64-mbus"; -+ reg = <0x01c62000 0x1000>; -+ clocks = <&ccu 112>; -+ dma-ranges = <0x00000000 0x40000000 0xc0000000>; -+ #interconnect-cells = <1>; -+ }; -+ - csi: csi@1cb0000 { - compatible = "allwinner,sun50i-a64-csi"; - reg = <0x01cb0000 0x1000>; --- -2.26.0 - -From 465dbf297edb9881e79c1b81fef8d9328fbaf7ad Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Tue, 10 Mar 2020 15:37:39 +0000 -Subject: [PATCH 4/9] arm: dts: allwinner: Add initial support for Pine64 +Date: Thu, 9 Jul 2020 12:44:55 +0100 +Subject: [PATCH 7/8] arm64: dts: allwinner: Add initial support for Pine64 PinePhone -The initial DT for the PinePhone models are queued for 5.7-rc1: +At the moment PinePhone comes in two slightly incompatible variants: + - 1.0: Early Developer Batch - 1.1: Braveheart Batch +This syncs the Pinephone DTs from Linux 5.8-rc1. + Signed-off-by: Peter Robinson --- arch/arm/dts/Makefile | 2 + @@ -1029,10 +1321,10 @@ Signed-off-by: Peter Robinson create mode 100644 arch/arm/dts/sun50i-a64-pinephone.dtsi diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile -index 820ee9733a..fb7516ee83 100644 +index cee10f533f..efaadeecf3 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile -@@ -573,6 +573,8 @@ dtb-$(CONFIG_MACH_SUN50I) += \ +@@ -597,6 +597,8 @@ dtb-$(CONFIG_MACH_SUN50I) += \ sun50i-a64-pine64-plus.dtb \ sun50i-a64-pine64.dtb \ sun50i-a64-pinebook.dtb \ @@ -1461,148 +1753,50 @@ index 0000000000..cefda145c3 + status = "okay"; +}; -- -2.26.0 +2.26.2 -From e8fd62cbf02828da817628d15111e6e974144473 Mon Sep 17 00:00:00 2001 +From ab4bad52587be7da4262d943f19b5db02a24a045 Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Tue, 10 Mar 2020 15:46:43 +0000 -Subject: [PATCH 5/9] sync sun50i-a64 clocks with linux 5.6 +Date: Wed, 15 Jul 2020 13:14:09 +0100 +Subject: [PATCH 8/8] Initial Pine64 Pinephone support + +The Pine64 Pinephone is a smartphone based on the AllWinner A64 SoC. +It has the following features: +* 2GB LPDDR3 SDRAM +* 5.95 inch 1440x720 HD IPS capacitive touchscreen +* 16GB eMMC, mSD slot +* Quectel EG25 LTE Modem +* Realtek RTL8723CS WiFi/BT +* Front and read cameras +* Accelerometer, gyro, proximity, ambient light, compass sensors +* A USB Type-C, USB Host, DisplayPort alt mode output, 15W 5V 3A Quick Charge, follows USB PD specification Signed-off-by: Peter Robinson --- - include/dt-bindings/clock/sun50i-a64-ccu.h | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/include/dt-bindings/clock/sun50i-a64-ccu.h b/include/dt-bindings/clock/sun50i-a64-ccu.h -index d66432c6e6..e512a1c9b0 100644 ---- a/include/dt-bindings/clock/sun50i-a64-ccu.h -+++ b/include/dt-bindings/clock/sun50i-a64-ccu.h -@@ -43,8 +43,10 @@ - #ifndef _DT_BINDINGS_CLK_SUN50I_A64_H_ - #define _DT_BINDINGS_CLK_SUN50I_A64_H_ - -+#define CLK_PLL_VIDEO0 7 - #define CLK_PLL_PERIPH0 11 - -+#define CLK_CPUX 21 - #define CLK_BUS_MIPI_DSI 28 - #define CLK_BUS_CE 29 - #define CLK_BUS_DMA 30 --- -2.26.0 - -From a07a9d6cb77ea0bc21cd64922bb428faf5b7e121 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Tue, 10 Mar 2020 15:49:11 +0000 -Subject: [PATCH 6/9] add upstream sun50i-a64-cpu-opp.dtsi added in 5.6 - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/sun50i-a64-cpu-opp.dtsi | 75 ++++++++++++++++++++++++++++ - 1 file changed, 75 insertions(+) - create mode 100644 arch/arm/dts/sun50i-a64-cpu-opp.dtsi - -diff --git a/arch/arm/dts/sun50i-a64-cpu-opp.dtsi b/arch/arm/dts/sun50i-a64-cpu-opp.dtsi -new file mode 100644 -index 0000000000..578c37490d ---- /dev/null -+++ b/arch/arm/dts/sun50i-a64-cpu-opp.dtsi -@@ -0,0 +1,75 @@ -+// SPDX-License-Identifier: GPL-2.0 -+/* -+ * Copyright (C) 2020 Vasily khoruzhick -+ */ -+ -+/ { -+ cpu0_opp_table: opp_table0 { -+ compatible = "operating-points-v2"; -+ opp-shared; -+ -+ opp-648000000 { -+ opp-hz = /bits/ 64 <648000000>; -+ opp-microvolt = <1040000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-816000000 { -+ opp-hz = /bits/ 64 <816000000>; -+ opp-microvolt = <1100000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-912000000 { -+ opp-hz = /bits/ 64 <912000000>; -+ opp-microvolt = <1120000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-960000000 { -+ opp-hz = /bits/ 64 <960000000>; -+ opp-microvolt = <1160000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1008000000 { -+ opp-hz = /bits/ 64 <1008000000>; -+ opp-microvolt = <1200000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1056000000 { -+ opp-hz = /bits/ 64 <1056000000>; -+ opp-microvolt = <1240000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1104000000 { -+ opp-hz = /bits/ 64 <1104000000>; -+ opp-microvolt = <1260000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1152000000 { -+ opp-hz = /bits/ 64 <1152000000>; -+ opp-microvolt = <1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ }; -+}; -+ -+&cpu0 { -+ operating-points-v2 = <&cpu0_opp_table>; -+}; -+ -+&cpu1 { -+ operating-points-v2 = <&cpu0_opp_table>; -+}; -+ -+&cpu2 { -+ operating-points-v2 = <&cpu0_opp_table>; -+}; -+ -+&cpu3 { -+ operating-points-v2 = <&cpu0_opp_table>; -+}; --- -2.26.0 - -From 493869ec73e6ba999b6f7c49369e966ebfb8ef0b Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Tue, 14 Apr 2020 09:50:11 +0100 -Subject: [PATCH 7/9] Initial Pinephone support - -Signed-off-by: Peter Robinson ---- - configs/pinephone_defconfig | 26 ++++++++++++++++++++++++++ - 1 file changed, 26 insertions(+) + arch/arm/Kconfig | 2 +- + configs/pinephone_defconfig | 38 +++++++++++++++++++++++++++++++++++++ + 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 configs/pinephone_defconfig +diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig +index e16fe03887..636ba26938 100644 +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig +@@ -1004,7 +1004,7 @@ config ARCH_SUNXI + bool "Support sunxi (Allwinner) SoCs" + select BINMAN + select CMD_GPIO +- select CMD_MMC if MMC ++select CMD_MMC if MMC + select CMD_USB if DISTRO_DEFAULTS + select CLK + select DM diff --git a/configs/pinephone_defconfig b/configs/pinephone_defconfig new file mode 100644 -index 0000000000..a7d1e610d4 +index 0000000000..d5750aa954 --- /dev/null +++ b/configs/pinephone_defconfig -@@ -0,0 +1,26 @@ +@@ -0,0 +1,38 @@ +CONFIG_ARM=y +CONFIG_ARCH_SUNXI=y +CONFIG_SPL=y @@ -1610,11 +1804,11 @@ index 0000000000..a7d1e610d4 +CONFIG_SUNXI_DRAM_LPDDR3_STOCK=y +CONFIG_DRAM_CLK=552 +CONFIG_DRAM_ZQ=3881949 ++CONFIG_NR_DRAM_BANKS=1 +CONFIG_MMC_SUNXI_SLOT_EXTRA=2 +CONFIG_R_I2C_ENABLE=y -+CONFIG_SPL_SPI_SUNXI=y +# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set -+CONFIG_USE_PREBOOT=y ++# CONFIG_SPL_SPI_SUNXI is not set +# CONFIG_SPL_DOS_PARTITION is not set +# CONFIG_SPL_EFI_PARTITION is not set +CONFIG_DEFAULT_DEVICE_TREE="sun50i-a64-pinephone-1.1" @@ -1624,14 +1818,25 @@ index 0000000000..a7d1e610d4 +CONFIG_DM_REGULATOR_FIXED=y +CONFIG_DM_PWM=y +CONFIG_PWM_SUNXI=y -+CONFIG_LED=y -+CONFIG_LED_GPIO=y -+CONFIG_USB_EHCI_HCD=y -+CONFIG_USB_OHCI_HCD=y -+CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y ++CONFIG_CMD_GPIO=y ++CONFIG_CMD_GPT=y ++CONFIG_CMD_I2C=y ++CONFIG_CMD_MMC=y ++# CONFIG_CMD_MII is not set ++# CONFIG_CMD_NFS is not set ++# CONFIG_DM_ETH is not set ++# CONFIG_PHY is not set ++# CONFIG_PHY_GIGE is not set ++# CONFIG_SUN8I_EMAC is not set ++# CONFIG_PHY_REALTEK is not set ++# CONFIG_CMD_SF is not set ++# CONFIG_SPI is not set ++# CONFIG_DM_SPI is not set ++# CONFIG_SPI_FLASH is not set ++# CONFIG_SPI_MEM is not set ++# CONFIG_DM_SPI_FLASH is not set -- -2.26.0 - +2.26.2 From 163b30d9cd1c0cf77107e0330567bbda063410da Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 14 Apr 2020 09:51:44 +0100 diff --git a/USB-host-support-for-Raspberry-Pi-4-board-64-bit.patch b/USB-host-support-for-Raspberry-Pi-4-board-64-bit.patch deleted file mode 100644 index 720b1ba..0000000 --- a/USB-host-support-for-Raspberry-Pi-4-board-64-bit.patch +++ /dev/null @@ -1,993 +0,0 @@ -From 47d0df70fbe5997770090aca05b07d774a19a722 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Wed, 10 Jun 2020 13:15:45 +0100 -Subject: [PATCH] USB host support for Raspberry Pi 4 board (64-bit) - -Signed-off-by: Peter Robinson ---- - arch/arm/mach-bcm283x/init.c | 20 +- - configs/rpi_4_defconfig | 9 + - configs/rpi_arm64_defconfig | 8 +- - drivers/pci/Kconfig | 9 + - drivers/pci/Makefile | 1 + - drivers/pci/pci-rcar-gen3.c | 8 - - drivers/pci/pcie_brcmstb.c | 623 ++++++++++++++++++++++++++++++++++ - drivers/pci/pcie_intel_fpga.c | 3 - - drivers/usb/host/xhci-mem.c | 3 + - include/linux/bitfield.h | 52 +++ - include/pci.h | 22 +- - include/usb/xhci.h | 8 - - 12 files changed, 740 insertions(+), 26 deletions(-) - create mode 100644 drivers/pci/pcie_brcmstb.c - -diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c -index f4d00d892d..cf4c5b245d 100644 ---- a/arch/arm/mach-bcm283x/init.c -+++ b/arch/arm/mach-bcm283x/init.c -@@ -12,10 +12,15 @@ - #include - #include - -+#define BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS 0x600000000UL -+#define BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE 0x800000UL -+ - #ifdef CONFIG_ARM64 - #include - --static struct mm_region bcm283x_mem_map[] = { -+#define MEM_MAP_MAX_ENTRIES (4) -+ -+static struct mm_region bcm283x_mem_map[MEM_MAP_MAX_ENTRIES] = { - { - .virt = 0x00000000UL, - .phys = 0x00000000UL, -@@ -35,11 +40,11 @@ static struct mm_region bcm283x_mem_map[] = { - } - }; - --static struct mm_region bcm2711_mem_map[] = { -+static struct mm_region bcm2711_mem_map[MEM_MAP_MAX_ENTRIES] = { - { - .virt = 0x00000000UL, - .phys = 0x00000000UL, -- .size = 0xfe000000UL, -+ .size = 0xfc000000UL, - .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | - PTE_BLOCK_INNER_SHARE - }, { -@@ -49,6 +54,13 @@ static struct mm_region bcm2711_mem_map[] = { - .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | - PTE_BLOCK_NON_SHARE | - PTE_BLOCK_PXN | PTE_BLOCK_UXN -+ }, { -+ .virt = BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS, -+ .phys = BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS, -+ .size = BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE, -+ .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | -+ PTE_BLOCK_NON_SHARE | -+ PTE_BLOCK_PXN | PTE_BLOCK_UXN - }, { - /* List terminator */ - 0, -@@ -72,7 +84,7 @@ static void _rpi_update_mem_map(struct mm_region *pd) - { - int i; - -- for (i = 0; i < 2; i++) { -+ for (i = 0; i < MEM_MAP_MAX_ENTRIES; i++) { - mem_map[i].virt = pd[i].virt; - mem_map[i].phys = pd[i].phys; - mem_map[i].size = pd[i].size; -diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig -index f0301dc8bc..b42efe6072 100644 ---- a/configs/rpi_4_defconfig -+++ b/configs/rpi_4_defconfig -@@ -6,6 +6,8 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000 - CONFIG_ENV_SIZE=0x4000 - CONFIG_DISTRO_DEFAULTS=y - CONFIG_OF_BOARD_SETUP=y -+CONFIG_USE_PREBOOT=y -+CONFIG_PREBOOT="pci enum; usb start;" - CONFIG_MISC_INIT_R=y - # CONFIG_DISPLAY_CPUINFO is not set - # CONFIG_DISPLAY_BOARDINFO is not set -@@ -13,6 +15,8 @@ CONFIG_SYS_PROMPT="U-Boot> " - CONFIG_CMD_DFU=y - CONFIG_CMD_GPIO=y - CONFIG_CMD_MMC=y -+CONFIG_CMD_PCI=y -+CONFIG_CMD_USB=y - CONFIG_CMD_FS_UUID=y - CONFIG_OF_BOARD=y - CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" -@@ -26,12 +30,17 @@ CONFIG_MMC_SDHCI_SDMA=y - CONFIG_MMC_SDHCI_BCM2835=y - CONFIG_DM_ETH=y - CONFIG_BCMGENET=y -+CONFIG_PCI=y -+CONFIG_DM_PCI=y -+CONFIG_PCI_BRCMSTB=y - CONFIG_PINCTRL=y - # CONFIG_PINCTRL_GENERIC is not set - # CONFIG_REQUIRE_SERIAL_CONSOLE is not set - CONFIG_USB=y - CONFIG_DM_USB=y - CONFIG_DM_USB_GADGET=y -+CONFIG_USB_XHCI_HCD=y -+CONFIG_USB_XHCI_PCI=y - CONFIG_USB_GADGET=y - CONFIG_USB_GADGET_MANUFACTURER="FSL" - CONFIG_USB_GADGET_VENDOR_NUM=0x0525 -diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig -index d16c2388af..0feea7f0be 100644 ---- a/configs/rpi_arm64_defconfig -+++ b/configs/rpi_arm64_defconfig -@@ -7,13 +7,14 @@ CONFIG_ENV_SIZE=0x4000 - CONFIG_DISTRO_DEFAULTS=y - CONFIG_OF_BOARD_SETUP=y - CONFIG_USE_PREBOOT=y --CONFIG_PREBOOT="usb start" -+CONFIG_PREBOOT="pci enum; usb start;" - CONFIG_MISC_INIT_R=y - # CONFIG_DISPLAY_CPUINFO is not set - # CONFIG_DISPLAY_BOARDINFO is not set - CONFIG_SYS_PROMPT="U-Boot> " - CONFIG_CMD_GPIO=y - CONFIG_CMD_MMC=y -+CONFIG_CMD_PCI=y - CONFIG_CMD_USB=y - CONFIG_CMD_FS_UUID=y - CONFIG_OF_BOARD=y -@@ -26,11 +27,16 @@ CONFIG_MMC_SDHCI_SDMA=y - CONFIG_MMC_SDHCI_BCM2835=y - CONFIG_DM_ETH=y - CONFIG_BCMGENET=y -+CONFIG_PCI=y -+CONFIG_DM_PCI=y -+CONFIG_PCI_BRCMSTB=y - CONFIG_PINCTRL=y - # CONFIG_PINCTRL_GENERIC is not set - # CONFIG_REQUIRE_SERIAL_CONSOLE is not set - CONFIG_USB=y - CONFIG_DM_USB=y -+CONFIG_USB_XHCI_HCD=y -+CONFIG_USB_XHCI_PCI=y - CONFIG_USB_DWC2=y - CONFIG_USB_KEYBOARD=y - CONFIG_USB_HOST_ETHER=y -diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig -index 6d8c22aacf..7e1e51d9ea 100644 ---- a/drivers/pci/Kconfig -+++ b/drivers/pci/Kconfig -@@ -205,4 +205,13 @@ config PCIE_ROCKCHIP - Say Y here if you want to enable PCIe controller support on - Rockchip SoCs. - -+config PCI_BRCMSTB -+ bool "Broadcom STB PCIe controller" -+ depends on DM_PCI -+ depends on ARCH_BCM283X -+ help -+ Say Y here if you want to enable support for PCIe controller -+ on Broadcom set-top-box (STB) SoCs. -+ This driver currently supports only BCM2711 SoC and RC mode -+ of the controller. - endif -diff --git a/drivers/pci/Makefile b/drivers/pci/Makefile -index 955351c5c2..3e1ff417d7 100644 ---- a/drivers/pci/Makefile -+++ b/drivers/pci/Makefile -@@ -43,4 +43,5 @@ obj-$(CONFIG_PCI_PHYTIUM) += pcie_phytium.o - obj-$(CONFIG_PCIE_INTEL_FPGA) += pcie_intel_fpga.o - obj-$(CONFIG_PCI_KEYSTONE) += pcie_dw_ti.o - obj-$(CONFIG_PCIE_MEDIATEK) += pcie_mediatek.o -+obj-$(CONFIG_PCI_BRCMSTB) += pcie_brcmstb.o - obj-$(CONFIG_PCIE_ROCKCHIP) += pcie_rockchip.o pcie_rockchip_phy.o -diff --git a/drivers/pci/pci-rcar-gen3.c b/drivers/pci/pci-rcar-gen3.c -index df7b37a592..1f51854ccc 100644 ---- a/drivers/pci/pci-rcar-gen3.c -+++ b/drivers/pci/pci-rcar-gen3.c -@@ -118,14 +118,6 @@ - #define RCAR_PCI_MAX_RESOURCES 4 - #define MAX_NR_INBOUND_MAPS 6 - --#define PCI_EXP_FLAGS 2 /* Capabilities register */ --#define PCI_EXP_FLAGS_TYPE 0x00f0 /* Device/Port type */ --#define PCI_EXP_TYPE_ROOT_PORT 0x4 /* Root Port */ --#define PCI_EXP_LNKCAP 12 /* Link Capabilities */ --#define PCI_EXP_LNKCAP_DLLLARC 0x00100000 /* Data Link Layer Link Active Reporting Capable */ --#define PCI_EXP_SLTCAP 20 /* Slot Capabilities */ --#define PCI_EXP_SLTCAP_PSN 0xfff80000 /* Physical Slot Number */ -- - enum { - RCAR_PCI_ACCESS_READ, - RCAR_PCI_ACCESS_WRITE, -diff --git a/drivers/pci/pcie_brcmstb.c b/drivers/pci/pcie_brcmstb.c -new file mode 100644 -index 0000000000..dade79e9c8 ---- /dev/null -+++ b/drivers/pci/pcie_brcmstb.c -@@ -0,0 +1,623 @@ -+// SPDX-License-Identifier: GPL-2.0 -+/* -+ * Broadcom STB PCIe controller driver -+ * -+ * Copyright (C) 2020 Samsung Electronics Co., Ltd. -+ * -+ * Based on upstream Linux kernel driver: -+ * drivers/pci/controller/pcie-brcmstb.c -+ * Copyright (C) 2009 - 2017 Broadcom -+ * -+ * Based driver by Nicolas Saenz Julienne -+ * Copyright (C) 2020 Nicolas Saenz Julienne -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+/* Offset of the mandatory PCIe capability config registers */ -+#define BRCM_PCIE_CAP_REGS 0x00ac -+ -+/* The PCIe controller register offsets */ -+#define PCIE_RC_CFG_VENDOR_SPECIFIC_REG1 0x0188 -+#define VENDOR_SPECIFIC_REG1_ENDIAN_MODE_BAR2_MASK 0xc -+#define VENDOR_SPECIFIC_REG1_LITTLE_ENDIAN 0x0 -+ -+#define PCIE_RC_CFG_PRIV1_ID_VAL3 0x043c -+#define CFG_PRIV1_ID_VAL3_CLASS_CODE_MASK 0xffffff -+ -+#define PCIE_RC_DL_MDIO_ADDR 0x1100 -+#define PCIE_RC_DL_MDIO_WR_DATA 0x1104 -+#define PCIE_RC_DL_MDIO_RD_DATA 0x1108 -+ -+#define PCIE_MISC_MISC_CTRL 0x4008 -+#define MISC_CTRL_SCB_ACCESS_EN_MASK 0x1000 -+#define MISC_CTRL_CFG_READ_UR_MODE_MASK 0x2000 -+#define MISC_CTRL_MAX_BURST_SIZE_MASK 0x300000 -+#define MISC_CTRL_MAX_BURST_SIZE_128 0x0 -+#define MISC_CTRL_SCB0_SIZE_MASK 0xf8000000 -+ -+#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LO 0x400c -+#define PCIE_MEM_WIN0_LO(win) \ -+ PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LO + ((win) * 4) -+ -+#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_HI 0x4010 -+#define PCIE_MEM_WIN0_HI(win) \ -+ PCIE_MISC_CPU_2_PCIE_MEM_WIN0_HI + ((win) * 4) -+ -+#define PCIE_MISC_RC_BAR1_CONFIG_LO 0x402c -+#define RC_BAR1_CONFIG_LO_SIZE_MASK 0x1f -+ -+#define PCIE_MISC_RC_BAR2_CONFIG_LO 0x4034 -+#define RC_BAR2_CONFIG_LO_SIZE_MASK 0x1f -+#define PCIE_MISC_RC_BAR2_CONFIG_HI 0x4038 -+ -+#define PCIE_MISC_RC_BAR3_CONFIG_LO 0x403c -+#define RC_BAR3_CONFIG_LO_SIZE_MASK 0x1f -+ -+#define PCIE_MISC_PCIE_STATUS 0x4068 -+#define STATUS_PCIE_PORT_MASK 0x80 -+#define STATUS_PCIE_PORT_SHIFT 7 -+#define STATUS_PCIE_DL_ACTIVE_MASK 0x20 -+#define STATUS_PCIE_DL_ACTIVE_SHIFT 5 -+#define STATUS_PCIE_PHYLINKUP_MASK 0x10 -+#define STATUS_PCIE_PHYLINKUP_SHIFT 4 -+ -+#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT 0x4070 -+#define MEM_WIN0_BASE_LIMIT_LIMIT_MASK 0xfff00000 -+#define MEM_WIN0_BASE_LIMIT_BASE_MASK 0xfff0 -+#define MEM_WIN0_BASE_LIMIT_BASE_HI_SHIFT 12 -+#define PCIE_MEM_WIN0_BASE_LIMIT(win) \ -+ PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT + ((win) * 4) -+ -+#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_HI 0x4080 -+#define MEM_WIN0_BASE_HI_BASE_MASK 0xff -+#define PCIE_MEM_WIN0_BASE_HI(win) \ -+ PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_HI + ((win) * 8) -+ -+#define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LIMIT_HI 0x4084 -+#define PCIE_MEM_WIN0_LIMIT_HI_LIMIT_MASK 0xff -+#define PCIE_MEM_WIN0_LIMIT_HI(win) \ -+ PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LIMIT_HI + ((win) * 8) -+ -+#define PCIE_MISC_HARD_PCIE_HARD_DEBUG 0x4204 -+#define PCIE_HARD_DEBUG_CLKREQ_DEBUG_ENABLE_MASK 0x2 -+#define PCIE_HARD_DEBUG_SERDES_IDDQ_MASK 0x08000000 -+ -+#define PCIE_MSI_INTR2_CLR 0x4508 -+#define PCIE_MSI_INTR2_MASK_SET 0x4510 -+ -+#define PCIE_EXT_CFG_DATA 0x8000 -+ -+#define PCIE_EXT_CFG_INDEX 0x9000 -+#define PCIE_EXT_BUSNUM_SHIFT 20 -+#define PCIE_EXT_SLOT_SHIFT 15 -+#define PCIE_EXT_FUNC_SHIFT 12 -+ -+#define PCIE_RGR1_SW_INIT_1 0x9210 -+#define RGR1_SW_INIT_1_PERST_MASK 0x1 -+#define RGR1_SW_INIT_1_INIT_MASK 0x2 -+ -+/* PCIe parameters */ -+#define BRCM_NUM_PCIE_OUT_WINS 4 -+ -+/* MDIO registers */ -+#define MDIO_PORT0 0x0 -+#define MDIO_DATA_MASK 0x7fffffff -+#define MDIO_DATA_SHIFT 0 -+#define MDIO_PORT_MASK 0xf0000 -+#define MDIO_PORT_SHIFT 16 -+#define MDIO_REGAD_MASK 0xffff -+#define MDIO_REGAD_SHIFT 0 -+#define MDIO_CMD_MASK 0xfff00000 -+#define MDIO_CMD_SHIFT 20 -+#define MDIO_CMD_READ 0x1 -+#define MDIO_CMD_WRITE 0x0 -+#define MDIO_DATA_DONE_MASK 0x80000000 -+#define SSC_REGS_ADDR 0x1100 -+#define SET_ADDR_OFFSET 0x1f -+#define SSC_CNTL_OFFSET 0x2 -+#define SSC_CNTL_OVRD_EN_MASK 0x8000 -+#define SSC_CNTL_OVRD_VAL_MASK 0x4000 -+#define SSC_STATUS_OFFSET 0x1 -+#define SSC_STATUS_SSC_MASK 0x400 -+#define SSC_STATUS_SSC_SHIFT 10 -+#define SSC_STATUS_PLL_LOCK_MASK 0x800 -+#define SSC_STATUS_PLL_LOCK_SHIFT 11 -+ -+/** -+ * struct brcm_pcie - the PCIe controller state -+ * @base: Base address of memory mapped IO registers of the controller -+ * @gen: Non-zero value indicates limitation of the PCIe controller operation -+ * to a specific generation (1, 2 or 3) -+ * @ssc: true indicates active Spread Spectrum Clocking operation -+ */ -+struct brcm_pcie { -+ void __iomem *base; -+ -+ int gen; -+ bool ssc; -+}; -+ -+/** -+ * brcm_pcie_encode_ibar_size() - Encode the inbound "BAR" region size -+ * @size: The inbound region size -+ * -+ * This function converts size of the inbound "BAR" region to the non-linear -+ * values of the PCIE_MISC_RC_BAR[123]_CONFIG_LO register SIZE field. -+ * -+ * Return: The encoded inbound region size -+ */ -+static int brcm_pcie_encode_ibar_size(u64 size) -+{ -+ int log2_in = ilog2(size); -+ -+ if (log2_in >= 12 && log2_in <= 15) -+ /* Covers 4KB to 32KB (inclusive) */ -+ return (log2_in - 12) + 0x1c; -+ else if (log2_in >= 16 && log2_in <= 37) -+ /* Covers 64KB to 32GB, (inclusive) */ -+ return log2_in - 15; -+ -+ /* Something is awry so disable */ -+ return 0; -+} -+ -+/** -+ * brcm_pcie_rc_mode() - Check if PCIe controller is in RC mode -+ * @pcie: Pointer to the PCIe controller state -+ * -+ * The controller is capable of serving in both RC and EP roles. -+ * -+ * Return: true for RC mode, false for EP mode. -+ */ -+static bool brcm_pcie_rc_mode(struct brcm_pcie *pcie) -+{ -+ u32 val; -+ -+ val = readl(pcie->base + PCIE_MISC_PCIE_STATUS); -+ -+ return (val & STATUS_PCIE_PORT_MASK) >> STATUS_PCIE_PORT_SHIFT; -+} -+ -+/** -+ * brcm_pcie_link_up() - Check whether the PCIe link is up -+ * @pcie: Pointer to the PCIe controller state -+ * -+ * Return: true if the link is up, false otherwise. -+ */ -+static bool brcm_pcie_link_up(struct brcm_pcie *pcie) -+{ -+ u32 val, dla, plu; -+ -+ val = readl(pcie->base + PCIE_MISC_PCIE_STATUS); -+ dla = (val & STATUS_PCIE_DL_ACTIVE_MASK) >> STATUS_PCIE_DL_ACTIVE_SHIFT; -+ plu = (val & STATUS_PCIE_PHYLINKUP_MASK) >> STATUS_PCIE_PHYLINKUP_SHIFT; -+ -+ return dla && plu; -+} -+ -+static int brcm_pcie_config_address(const struct udevice *dev, pci_dev_t bdf, -+ uint offset, void **paddress) -+{ -+ struct brcm_pcie *pcie = dev_get_priv(dev); -+ unsigned int pci_bus = PCI_BUS(bdf); -+ unsigned int pci_dev = PCI_DEV(bdf); -+ unsigned int pci_func = PCI_FUNC(bdf); -+ int idx; -+ -+ /* -+ * Busses 0 (host PCIe bridge) and 1 (its immediate child) -+ * are limited to a single device each -+ */ -+ if (pci_bus < 2 && pci_dev > 0) -+ return -EINVAL; -+ -+ /* Accesses to the RC go right to the RC registers */ -+ if (pci_bus == 0) { -+ *paddress = pcie->base + offset; -+ return 0; -+ } -+ -+ /* For devices, write to the config space index register */ -+ idx = (pci_bus << PCIE_EXT_BUSNUM_SHIFT) -+ | (pci_dev << PCIE_EXT_SLOT_SHIFT) -+ | (pci_func << PCIE_EXT_FUNC_SHIFT); -+ -+ writel(idx, pcie->base + PCIE_EXT_CFG_INDEX); -+ *paddress = pcie->base + PCIE_EXT_CFG_DATA + offset; -+ -+ return 0; -+} -+ -+static int brcm_pcie_read_config(const struct udevice *bus, pci_dev_t bdf, -+ uint offset, ulong *valuep, -+ enum pci_size_t size) -+{ -+ return pci_generic_mmap_read_config(bus, brcm_pcie_config_address, -+ bdf, offset, valuep, size); -+} -+ -+static int brcm_pcie_write_config(struct udevice *bus, pci_dev_t bdf, -+ uint offset, ulong value, -+ enum pci_size_t size) -+{ -+ return pci_generic_mmap_write_config(bus, brcm_pcie_config_address, -+ bdf, offset, value, size); -+} -+ -+static const char *link_speed_to_str(unsigned int cls) -+{ -+ switch (cls) { -+ case PCI_EXP_LNKSTA_CLS_2_5GB: return "2.5"; -+ case PCI_EXP_LNKSTA_CLS_5_0GB: return "5.0"; -+ case PCI_EXP_LNKSTA_CLS_8_0GB: return "8.0"; -+ default: -+ break; -+ } -+ -+ return "??"; -+} -+ -+static u32 brcm_pcie_mdio_form_pkt(unsigned int port, unsigned int regad, -+ unsigned int cmd) -+{ -+ u32 pkt; -+ -+ pkt = (port << MDIO_PORT_SHIFT) & MDIO_PORT_MASK; -+ pkt |= (regad << MDIO_REGAD_SHIFT) & MDIO_REGAD_MASK; -+ pkt |= (cmd << MDIO_CMD_SHIFT) & MDIO_CMD_MASK; -+ -+ return pkt; -+} -+ -+/** -+ * brcm_pcie_mdio_read() - Perform a register read on the internal MDIO bus -+ * @base: Pointer to the PCIe controller IO registers -+ * @port: The MDIO port number -+ * @regad: The register address -+ * @val: A pointer at which to store the read value -+ * -+ * Return: 0 on success and register value in @val, negative error value -+ * on failure. -+ */ -+static int brcm_pcie_mdio_read(void __iomem *base, unsigned int port, -+ unsigned int regad, u32 *val) -+{ -+ u32 data, addr; -+ int ret; -+ -+ addr = brcm_pcie_mdio_form_pkt(port, regad, MDIO_CMD_READ); -+ writel(addr, base + PCIE_RC_DL_MDIO_ADDR); -+ readl(base + PCIE_RC_DL_MDIO_ADDR); -+ -+ ret = readl_poll_timeout(base + PCIE_RC_DL_MDIO_RD_DATA, data, -+ (data & MDIO_DATA_DONE_MASK), 100); -+ -+ *val = data & MDIO_DATA_MASK; -+ -+ return ret; -+} -+ -+/** -+ * brcm_pcie_mdio_write() - Perform a register write on the internal MDIO bus -+ * @base: Pointer to the PCIe controller IO registers -+ * @port: The MDIO port number -+ * @regad: Address of the register -+ * @wrdata: The value to write -+ * -+ * Return: 0 on success, negative error value on failure. -+ */ -+static int brcm_pcie_mdio_write(void __iomem *base, unsigned int port, -+ unsigned int regad, u16 wrdata) -+{ -+ u32 data, addr; -+ -+ addr = brcm_pcie_mdio_form_pkt(port, regad, MDIO_CMD_WRITE); -+ writel(addr, base + PCIE_RC_DL_MDIO_ADDR); -+ readl(base + PCIE_RC_DL_MDIO_ADDR); -+ writel(MDIO_DATA_DONE_MASK | wrdata, base + PCIE_RC_DL_MDIO_WR_DATA); -+ -+ return readl_poll_timeout(base + PCIE_RC_DL_MDIO_WR_DATA, data, -+ !(data & MDIO_DATA_DONE_MASK), 100); -+} -+ -+/** -+ * brcm_pcie_set_ssc() - Configure the controller for Spread Spectrum Clocking -+ * @base: pointer to the PCIe controller IO registers -+ * -+ * Return: 0 on success, negative error value on failure. -+ */ -+static int brcm_pcie_set_ssc(void __iomem *base) -+{ -+ int pll, ssc; -+ int ret; -+ u32 tmp; -+ -+ ret = brcm_pcie_mdio_write(base, MDIO_PORT0, SET_ADDR_OFFSET, -+ SSC_REGS_ADDR); -+ if (ret < 0) -+ return ret; -+ -+ ret = brcm_pcie_mdio_read(base, MDIO_PORT0, SSC_CNTL_OFFSET, &tmp); -+ if (ret < 0) -+ return ret; -+ -+ tmp |= (SSC_CNTL_OVRD_EN_MASK | SSC_CNTL_OVRD_VAL_MASK); -+ -+ ret = brcm_pcie_mdio_write(base, MDIO_PORT0, SSC_CNTL_OFFSET, tmp); -+ if (ret < 0) -+ return ret; -+ -+ udelay(1000); -+ ret = brcm_pcie_mdio_read(base, MDIO_PORT0, SSC_STATUS_OFFSET, &tmp); -+ if (ret < 0) -+ return ret; -+ -+ ssc = (tmp & SSC_STATUS_SSC_MASK) >> SSC_STATUS_SSC_SHIFT; -+ pll = (tmp & SSC_STATUS_PLL_LOCK_MASK) >> SSC_STATUS_PLL_LOCK_SHIFT; -+ -+ return ssc && pll ? 0 : -EIO; -+} -+ -+/** -+ * brcm_pcie_set_gen() - Limits operation to a specific generation (1, 2 or 3) -+ * @pcie: pointer to the PCIe controller state -+ * @gen: PCIe generation to limit the controller's operation to -+ */ -+static void brcm_pcie_set_gen(struct brcm_pcie *pcie, unsigned int gen) -+{ -+ void __iomem *cap_base = pcie->base + BRCM_PCIE_CAP_REGS; -+ -+ u16 lnkctl2 = readw(cap_base + PCI_EXP_LNKCTL2); -+ u32 lnkcap = readl(cap_base + PCI_EXP_LNKCAP); -+ -+ lnkcap = (lnkcap & ~PCI_EXP_LNKCAP_SLS) | gen; -+ writel(lnkcap, cap_base + PCI_EXP_LNKCAP); -+ -+ lnkctl2 = (lnkctl2 & ~0xf) | gen; -+ writew(lnkctl2, cap_base + PCI_EXP_LNKCTL2); -+} -+ -+static void brcm_pcie_set_outbound_win(struct brcm_pcie *pcie, -+ unsigned int win, u64 phys_addr, -+ u64 pcie_addr, u64 size) -+{ -+ void __iomem *base = pcie->base; -+ u32 phys_addr_mb_high, limit_addr_mb_high; -+ phys_addr_t phys_addr_mb, limit_addr_mb; -+ int high_addr_shift; -+ u32 tmp; -+ -+ /* Set the base of the pcie_addr window */ -+ writel(lower_32_bits(pcie_addr), base + PCIE_MEM_WIN0_LO(win)); -+ writel(upper_32_bits(pcie_addr), base + PCIE_MEM_WIN0_HI(win)); -+ -+ /* Write the addr base & limit lower bits (in MBs) */ -+ phys_addr_mb = phys_addr / SZ_1M; -+ limit_addr_mb = (phys_addr + size - 1) / SZ_1M; -+ -+ tmp = readl(base + PCIE_MEM_WIN0_BASE_LIMIT(win)); -+ u32p_replace_bits(&tmp, phys_addr_mb, -+ MEM_WIN0_BASE_LIMIT_BASE_MASK); -+ u32p_replace_bits(&tmp, limit_addr_mb, -+ MEM_WIN0_BASE_LIMIT_LIMIT_MASK); -+ writel(tmp, base + PCIE_MEM_WIN0_BASE_LIMIT(win)); -+ -+ /* Write the cpu & limit addr upper bits */ -+ high_addr_shift = MEM_WIN0_BASE_LIMIT_BASE_HI_SHIFT; -+ phys_addr_mb_high = phys_addr_mb >> high_addr_shift; -+ tmp = readl(base + PCIE_MEM_WIN0_BASE_HI(win)); -+ u32p_replace_bits(&tmp, phys_addr_mb_high, -+ MEM_WIN0_BASE_HI_BASE_MASK); -+ writel(tmp, base + PCIE_MEM_WIN0_BASE_HI(win)); -+ -+ limit_addr_mb_high = limit_addr_mb >> high_addr_shift; -+ tmp = readl(base + PCIE_MEM_WIN0_LIMIT_HI(win)); -+ u32p_replace_bits(&tmp, limit_addr_mb_high, -+ PCIE_MEM_WIN0_LIMIT_HI_LIMIT_MASK); -+ writel(tmp, base + PCIE_MEM_WIN0_LIMIT_HI(win)); -+} -+ -+static int brcm_pcie_probe(struct udevice *dev) -+{ -+ struct udevice *ctlr = pci_get_controller(dev); -+ struct pci_controller *hose = dev_get_uclass_priv(ctlr); -+ struct brcm_pcie *pcie = dev_get_priv(dev); -+ void __iomem *base = pcie->base; -+ bool ssc_good = false; -+ int num_out_wins = 0; -+ u64 rc_bar2_offset, rc_bar2_size; -+ unsigned int scb_size_val; -+ int i, ret; -+ u16 nlw, cls, lnksta; -+ u32 tmp; -+ -+ /* -+ * Reset the bridge, assert the fundamental reset. Note for some SoCs, -+ * e.g. BCM7278, the fundamental reset should not be asserted here. -+ * This will need to be changed when support for other SoCs is added. -+ */ -+ setbits_le32(base + PCIE_RGR1_SW_INIT_1, -+ RGR1_SW_INIT_1_INIT_MASK | RGR1_SW_INIT_1_PERST_MASK); -+ /* -+ * The delay is a safety precaution to preclude the reset signal -+ * from looking like a glitch. -+ */ -+ udelay(100); -+ -+ /* Take the bridge out of reset */ -+ clrbits_le32(base + PCIE_RGR1_SW_INIT_1, RGR1_SW_INIT_1_INIT_MASK); -+ -+ clrbits_le32(base + PCIE_MISC_HARD_PCIE_HARD_DEBUG, -+ PCIE_HARD_DEBUG_SERDES_IDDQ_MASK); -+ -+ /* Wait for SerDes to be stable */ -+ udelay(100); -+ -+ /* Set SCB_MAX_BURST_SIZE, CFG_READ_UR_MODE, SCB_ACCESS_EN */ -+ clrsetbits_le32(base + PCIE_MISC_MISC_CTRL, -+ MISC_CTRL_MAX_BURST_SIZE_MASK, -+ MISC_CTRL_SCB_ACCESS_EN_MASK | -+ MISC_CTRL_CFG_READ_UR_MODE_MASK | -+ MISC_CTRL_MAX_BURST_SIZE_128); -+ /* -+ * TODO: When support for other SoCs than BCM2711 is added we may -+ * need to use the base address and size(s) provided in the dma-ranges -+ * property. -+ */ -+ rc_bar2_offset = 0; -+ rc_bar2_size = 0xc0000000; -+ -+ tmp = lower_32_bits(rc_bar2_offset); -+ u32p_replace_bits(&tmp, brcm_pcie_encode_ibar_size(rc_bar2_size), -+ RC_BAR2_CONFIG_LO_SIZE_MASK); -+ writel(tmp, base + PCIE_MISC_RC_BAR2_CONFIG_LO); -+ writel(upper_32_bits(rc_bar2_offset), -+ base + PCIE_MISC_RC_BAR2_CONFIG_HI); -+ -+ scb_size_val = rc_bar2_size ? -+ ilog2(rc_bar2_size) - 15 : 0xf; /* 0xf is 1GB */ -+ -+ tmp = readl(base + PCIE_MISC_MISC_CTRL); -+ u32p_replace_bits(&tmp, scb_size_val, -+ MISC_CTRL_SCB0_SIZE_MASK); -+ writel(tmp, base + PCIE_MISC_MISC_CTRL); -+ -+ /* Disable the PCIe->GISB memory window (RC_BAR1) */ -+ clrbits_le32(base + PCIE_MISC_RC_BAR1_CONFIG_LO, -+ RC_BAR1_CONFIG_LO_SIZE_MASK); -+ -+ /* Disable the PCIe->SCB memory window (RC_BAR3) */ -+ clrbits_le32(base + PCIE_MISC_RC_BAR3_CONFIG_LO, -+ RC_BAR3_CONFIG_LO_SIZE_MASK); -+ -+ /* Mask all interrupts since we are not handling any yet */ -+ writel(0xffffffff, base + PCIE_MSI_INTR2_MASK_SET); -+ -+ /* Clear any interrupts we find on boot */ -+ writel(0xffffffff, base + PCIE_MSI_INTR2_CLR); -+ -+ if (pcie->gen) -+ brcm_pcie_set_gen(pcie, pcie->gen); -+ -+ /* Unassert the fundamental reset */ -+ clrbits_le32(pcie->base + PCIE_RGR1_SW_INIT_1, -+ RGR1_SW_INIT_1_PERST_MASK); -+ -+ /* Give the RC/EP time to wake up, before trying to configure RC. -+ * Intermittently check status for link-up, up to a total of 100ms. -+ */ -+ for (i = 0; i < 100 && !brcm_pcie_link_up(pcie); i += 5) -+ mdelay(5); -+ -+ if (!brcm_pcie_link_up(pcie)) { -+ printf("PCIe BRCM: link down\n"); -+ return -EINVAL; -+ } -+ -+ if (!brcm_pcie_rc_mode(pcie)) { -+ printf("PCIe misconfigured; is in EP mode\n"); -+ return -EINVAL; -+ } -+ -+ for (i = 0; i < hose->region_count; i++) { -+ struct pci_region *reg = &hose->regions[i]; -+ -+ if (reg->flags != PCI_REGION_MEM) -+ continue; -+ -+ if (num_out_wins >= BRCM_NUM_PCIE_OUT_WINS) -+ return -EINVAL; -+ -+ brcm_pcie_set_outbound_win(pcie, num_out_wins, reg->phys_start, -+ reg->bus_start, reg->size); -+ -+ num_out_wins++; -+ } -+ -+ /* -+ * For config space accesses on the RC, show the right class for -+ * a PCIe-PCIe bridge (the default setting is to be EP mode). -+ */ -+ clrsetbits_le32(base + PCIE_RC_CFG_PRIV1_ID_VAL3, -+ CFG_PRIV1_ID_VAL3_CLASS_CODE_MASK, 0x060400); -+ -+ if (pcie->ssc) { -+ ret = brcm_pcie_set_ssc(pcie->base); -+ if (!ret) -+ ssc_good = true; -+ else -+ printf("PCIe BRCM: failed attempt to enter SSC mode\n"); -+ } -+ -+ lnksta = readw(base + BRCM_PCIE_CAP_REGS + PCI_EXP_LNKSTA); -+ cls = lnksta & PCI_EXP_LNKSTA_CLS; -+ nlw = (lnksta & PCI_EXP_LNKSTA_NLW) >> PCI_EXP_LNKSTA_NLW_SHIFT; -+ -+ printf("PCIe BRCM: link up, %s Gbps x%u %s\n", link_speed_to_str(cls), -+ nlw, ssc_good ? "(SSC)" : "(!SSC)"); -+ -+ /* PCIe->SCB endian mode for BAR */ -+ clrsetbits_le32(base + PCIE_RC_CFG_VENDOR_SPECIFIC_REG1, -+ VENDOR_SPECIFIC_REG1_ENDIAN_MODE_BAR2_MASK, -+ VENDOR_SPECIFIC_REG1_LITTLE_ENDIAN); -+ /* -+ * Refclk from RC should be gated with CLKREQ# input when ASPM L0s,L1 -+ * is enabled => setting the CLKREQ_DEBUG_ENABLE field to 1. -+ */ -+ setbits_le32(base + PCIE_MISC_HARD_PCIE_HARD_DEBUG, -+ PCIE_HARD_DEBUG_CLKREQ_DEBUG_ENABLE_MASK); -+ -+ return 0; -+} -+ -+static int brcm_pcie_ofdata_to_platdata(struct udevice *dev) -+{ -+ struct brcm_pcie *pcie = dev_get_priv(dev); -+ ofnode dn = dev_ofnode(dev); -+ u32 max_link_speed; -+ int ret; -+ -+ /* Get the controller base address */ -+ pcie->base = dev_read_addr_ptr(dev); -+ if (!pcie->base) -+ return -EINVAL; -+ -+ pcie->ssc = ofnode_read_bool(dn, "brcm,enable-ssc"); -+ -+ ret = ofnode_read_u32(dn, "max-link-speed", &max_link_speed); -+ if (ret < 0 || max_link_speed > 4) -+ pcie->gen = 0; -+ else -+ pcie->gen = max_link_speed; -+ -+ return 0; -+} -+ -+static const struct dm_pci_ops brcm_pcie_ops = { -+ .read_config = brcm_pcie_read_config, -+ .write_config = brcm_pcie_write_config, -+}; -+ -+static const struct udevice_id brcm_pcie_ids[] = { -+ { .compatible = "brcm,bcm2711-pcie" }, -+ { } -+}; -+ -+U_BOOT_DRIVER(pcie_brcm_base) = { -+ .name = "pcie_brcm", -+ .id = UCLASS_PCI, -+ .ops = &brcm_pcie_ops, -+ .of_match = brcm_pcie_ids, -+ .probe = brcm_pcie_probe, -+ .ofdata_to_platdata = brcm_pcie_ofdata_to_platdata, -+ .priv_auto_alloc_size = sizeof(struct brcm_pcie), -+}; -diff --git a/drivers/pci/pcie_intel_fpga.c b/drivers/pci/pcie_intel_fpga.c -index aa1903e547..9f102c64c6 100644 ---- a/drivers/pci/pcie_intel_fpga.c -+++ b/drivers/pci/pcie_intel_fpga.c -@@ -67,9 +67,6 @@ - #define IS_ROOT_PORT(pcie, bdf) \ - ((PCI_BUS(bdf) == pcie->first_busno) ? true : false) - --#define PCI_EXP_LNKSTA 18 /* Link Status */ --#define PCI_EXP_LNKSTA_DLLLA 0x2000 /* Data Link Layer Link Active */ -- - /** - * struct intel_fpga_pcie - Intel FPGA PCIe controller state - * @bus: Pointer to the PCI bus -diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c -index 2d968aafb0..f446520528 100644 ---- a/drivers/usb/host/xhci-mem.c -+++ b/drivers/usb/host/xhci-mem.c -@@ -395,6 +395,9 @@ static int xhci_scratchpad_alloc(struct xhci_ctrl *ctrl) - scratchpad->sp_array[i] = cpu_to_le64(ptr); - } - -+ xhci_flush_cache((uintptr_t)scratchpad->sp_array, -+ sizeof(u64) * num_sp); -+ - return 0; - - fail_sp3: -diff --git a/include/linux/bitfield.h b/include/linux/bitfield.h -index 8b9d6fff00..7ad8b088ed 100644 ---- a/include/linux/bitfield.h -+++ b/include/linux/bitfield.h -@@ -103,4 +103,56 @@ - (typeof(_mask))(((_reg) & (_mask)) >> __bf_shf(_mask)); \ - }) - -+extern void __compiletime_error("value doesn't fit into mask") -+__field_overflow(void); -+extern void __compiletime_error("bad bitfield mask") -+__bad_mask(void); -+ -+static __always_inline u64 field_multiplier(u64 field) -+{ -+ if ((field | (field - 1)) & ((field | (field - 1)) + 1)) -+ __bad_mask(); -+ return field & -field; -+} -+ -+static __always_inline u64 field_mask(u64 field) -+{ -+ return field / field_multiplier(field); -+} -+ -+#define ____MAKE_OP(type, base, to, from) \ -+static __always_inline __##type type##_encode_bits(base v, base field) \ -+{ \ -+ if (__builtin_constant_p(v) && (v & ~field_mask(field))) \ -+ __field_overflow(); \ -+ return to((v & field_mask(field)) * field_multiplier(field)); \ -+} \ -+static __always_inline __##type type##_replace_bits(__##type old, \ -+ base val, base field) \ -+{ \ -+ return (old & ~to(field)) | type##_encode_bits(val, field); \ -+} \ -+static __always_inline void type##p_replace_bits(__##type * p, \ -+ base val, base field) \ -+{ \ -+ *p = (*p & ~to(field)) | type##_encode_bits(val, field); \ -+} \ -+static __always_inline base type##_get_bits(__##type v, base field) \ -+{ \ -+ return (from(v) & field) / field_multiplier(field); \ -+} -+ -+#define __MAKE_OP(size) \ -+ ____MAKE_OP(le##size, u##size, cpu_to_le##size, le##size##_to_cpu) \ -+ ____MAKE_OP(be##size, u##size, cpu_to_be##size, be##size##_to_cpu) \ -+ ____MAKE_OP(u##size, u##size, ,) -+ -+____MAKE_OP(u8, u8, ,) -+__MAKE_OP(16) -+__MAKE_OP(32) -+__MAKE_OP(64) -+ -+#undef __MAKE_OP -+#undef ____MAKE_OP -+ - #endif -diff --git a/include/pci.h b/include/pci.h -index 19c9244b94..281f353916 100644 ---- a/include/pci.h -+++ b/include/pci.h -@@ -471,10 +471,28 @@ - #define PCI_EA_FIELD_MASK 0xfffffffc /* For Base & Max Offset */ - - /* PCI Express capabilities */ -+#define PCI_EXP_FLAGS 2 /* Capabilities register */ -+#define PCI_EXP_FLAGS_TYPE 0x00f0 /* Device/Port type */ -+#define PCI_EXP_TYPE_ROOT_PORT 0x4 /* Root Port */ - #define PCI_EXP_DEVCAP 4 /* Device capabilities */ --#define PCI_EXP_DEVCAP_FLR 0x10000000 /* Function Level Reset */ -+#define PCI_EXP_DEVCAP_FLR 0x10000000 /* Function Level Reset */ - #define PCI_EXP_DEVCTL 8 /* Device Control */ --#define PCI_EXP_DEVCTL_BCR_FLR 0x8000 /* Bridge Configuration Retry / FLR */ -+#define PCI_EXP_DEVCTL_BCR_FLR 0x8000 /* Bridge Configuration Retry / FLR */ -+#define PCI_EXP_LNKCAP 12 /* Link Capabilities */ -+#define PCI_EXP_LNKCAP_SLS 0x0000000f /* Supported Link Speeds */ -+#define PCI_EXP_LNKCAP_MLW 0x000003f0 /* Maximum Link Width */ -+#define PCI_EXP_LNKCAP_DLLLARC 0x00100000 /* Data Link Layer Link Active Reporting Capable */ -+#define PCI_EXP_LNKSTA 18 /* Link Status */ -+#define PCI_EXP_LNKSTA_CLS 0x000f /* Current Link Speed */ -+#define PCI_EXP_LNKSTA_CLS_2_5GB 0x0001 /* Current Link Speed 2.5GT/s */ -+#define PCI_EXP_LNKSTA_CLS_5_0GB 0x0002 /* Current Link Speed 5.0GT/s */ -+#define PCI_EXP_LNKSTA_CLS_8_0GB 0x0003 /* Current Link Speed 8.0GT/s */ -+#define PCI_EXP_LNKSTA_NLW 0x03f0 /* Negotiated Link Width */ -+#define PCI_EXP_LNKSTA_NLW_SHIFT 4 /* start of NLW mask in link status */ -+#define PCI_EXP_LNKSTA_DLLLA 0x2000 /* Data Link Layer Link Active */ -+#define PCI_EXP_SLTCAP 20 /* Slot Capabilities */ -+#define PCI_EXP_SLTCAP_PSN 0xfff80000 /* Physical Slot Number */ -+#define PCI_EXP_LNKCTL2 48 /* Link Control 2 */ - - /* Include the ID list */ - -diff --git a/include/usb/xhci.h b/include/usb/xhci.h -index 20e4a21066..1170c0ac69 100644 ---- a/include/usb/xhci.h -+++ b/include/usb/xhci.h -@@ -1114,28 +1114,20 @@ static inline void xhci_writel(uint32_t volatile *regs, const unsigned int val) - */ - static inline u64 xhci_readq(__le64 volatile *regs) - { --#if BITS_PER_LONG == 64 -- return readq(regs); --#else - __u32 *ptr = (__u32 *)regs; - u64 val_lo = readl(ptr); - u64 val_hi = readl(ptr + 1); - return val_lo + (val_hi << 32); --#endif - } - - static inline void xhci_writeq(__le64 volatile *regs, const u64 val) - { --#if BITS_PER_LONG == 64 -- writeq(val, regs); --#else - __u32 *ptr = (__u32 *)regs; - u32 val_lo = lower_32_bits(val); - /* FIXME */ - u32 val_hi = upper_32_bits(val); - writel(val_lo, ptr); - writel(val_hi, ptr + 1); --#endif - } - - int xhci_hcd_init(int index, struct xhci_hccr **ret_hccr, --- -2.26.2 - diff --git a/rockchip-Pinebook-Pro-Fixes.patch b/rockchip-Pinebook-Pro-Fixes.patch deleted file mode 100644 index 0b0a2d7..0000000 --- a/rockchip-Pinebook-Pro-Fixes.patch +++ /dev/null @@ -1,200 +0,0 @@ -From e27621a7c2c0e090977c17f604093c720ca01fe4 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Mon, 8 Jun 2020 20:31:33 +0100 -Subject: [PATCH 1/3] rockchip: Pinebook Pro: enable rng to provide an entropy - source - -Enable the rng so UEFI can provide entropy for KASLR - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi | 4 ++++ - arch/arm/dts/rk3399-rockpro64-u-boot.dtsi | 4 ++++ - configs/pinebook-pro-rk3399_defconfig | 2 ++ - 3 files changed, 10 insertions(+) - -diff --git a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -index 1a2e24d3ef..296321d697 100644 ---- a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -@@ -24,6 +24,10 @@ - u-boot,dm-pre-reloc; - }; - -+&rng { -+ status = "okay"; -+}; -+ - &sdhci { - max-frequency = <25000000>; - u-boot,dm-pre-reloc; -diff --git a/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi b/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi -index bac09df4a3..cb8991aa25 100644 ---- a/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi -@@ -19,6 +19,10 @@ - }; - }; - -+&rng { -+ status = "okay"; -+}; -+ - &spi1 { - spi_flash: flash@0 { - u-boot,dm-pre-reloc; -diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig -index 0c129b9aeb..21eecf477c 100644 ---- a/configs/pinebook-pro-rk3399_defconfig -+++ b/configs/pinebook-pro-rk3399_defconfig -@@ -54,6 +54,8 @@ CONFIG_DM_PMIC_FAN53555=y - CONFIG_PMIC_RK8XX=y - CONFIG_REGULATOR_PWM=y - CONFIG_REGULATOR_RK8XX=y -+CONFIG_DM_RNG=y -+CONFIG_RNG_ROCKCHIP=y - CONFIG_PWM_ROCKCHIP=y - CONFIG_RAM_RK3399_LPDDR4=y - CONFIG_DM_RESET=y --- -2.26.2 - -From 99a3c9ba5a8ab7a94aa700649e031f53d498e857 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Mon, 8 Jun 2020 22:23:05 +0100 -Subject: [PATCH 2/3] rockchip: Pinebook Pro: Fix USB and the USB attached - keyboard - -The built in keyboard on the Pinebook Pro is attached via USB so -fix this up to ensure USB works as expected. - -Signed-off-by: Peter Robinson ---- - configs/pinebook-pro-rk3399_defconfig | 5 +++++ - include/configs/pinebook-pro-rk3399.h | 3 +++ - 2 files changed, 8 insertions(+) - -diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig -index 21eecf477c..733463556a 100644 ---- a/configs/pinebook-pro-rk3399_defconfig -+++ b/configs/pinebook-pro-rk3399_defconfig -@@ -61,6 +61,8 @@ CONFIG_RAM_RK3399_LPDDR4=y - CONFIG_DM_RESET=y - CONFIG_BAUDRATE=1500000 - CONFIG_DEBUG_UART_SHIFT=2 -+CONFIG_USE_PREBOOT=y -+CONFIG_PREBOOT="usb start" - CONFIG_ROCKCHIP_SPI=y - CONFIG_SYSRESET=y - CONFIG_USB=y -@@ -68,8 +70,11 @@ CONFIG_USB_XHCI_HCD=y - CONFIG_USB_XHCI_DWC3=y - CONFIG_USB_EHCI_HCD=y - CONFIG_USB_EHCI_GENERIC=y -+CONFIG_USB_OHCI_HCD=y -+CONFIG_USB_OHCI_GENERIC=y - CONFIG_USB_DWC3=y - CONFIG_ROCKCHIP_USB2_PHY=y -+CONFIG_DM_KEYBOARD=y - CONFIG_USB_KEYBOARD=y - CONFIG_USB_HOST_ETHER=y - CONFIG_USB_ETHER_ASIX=y -diff --git a/include/configs/pinebook-pro-rk3399.h b/include/configs/pinebook-pro-rk3399.h -index 4bc8802d11..d910830582 100644 ---- a/include/configs/pinebook-pro-rk3399.h -+++ b/include/configs/pinebook-pro-rk3399.h -@@ -25,4 +25,7 @@ - - #define SDRAM_BANK_SIZE (2UL << 30) - -+#define CONFIG_USB_OHCI_NEW -+#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 2 -+ - #endif --- -2.26.2 - -From 64d43a4f0a135486a9a524b107c853831e492eb6 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Mon, 8 Jun 2020 23:41:50 +0100 -Subject: [PATCH 3/3] rockchip: Pinebook Pro: Fix SPI flash and store env on it - -Some minor fixes for SPI flash on the Pinebook Pro and also -default to saving environment to the SPI flash as it's -guaranteed to be on board. - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi | 6 +++++- - configs/pinebook-pro-rk3399_defconfig | 3 +++ - include/configs/pinebook-pro-rk3399.h | 9 --------- - 3 files changed, 8 insertions(+), 10 deletions(-) - -diff --git a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -index 296321d697..ded7db0aef 100644 ---- a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -@@ -12,7 +12,11 @@ - }; - - chosen { -- u-boot,spl-boot-order = "same-as-spl", &sdhci, &sdmmc; -+ u-boot,spl-boot-order = "same-as-spl", &sdhci, &spiflash, &sdmmc; -+ }; -+ -+ config { -+ u-boot,spl-payload-offset = <0x60000>; /* @ 384KB */ - }; - }; - -diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig -index 733463556a..18b2d74253 100644 ---- a/configs/pinebook-pro-rk3399_defconfig -+++ b/configs/pinebook-pro-rk3399_defconfig -@@ -1,6 +1,7 @@ - CONFIG_ARM=y - CONFIG_ARCH_ROCKCHIP=y - CONFIG_SYS_TEXT_BASE=0x00200000 -+CONFIG_ENV_SIZE=0x8000 - CONFIG_ROCKCHIP_RK3399=y - CONFIG_TARGET_PINEBOOK_PRO_RK3399=y - CONFIG_NR_DRAM_BANKS=1 -@@ -17,6 +18,7 @@ CONFIG_DISPLAY_BOARDINFO_LATE=y - CONFIG_SPL_STACK_R=y - CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000 - CONFIG_SPL_MTD_SUPPORT=y -+CONFIG_SPL_SPI_LOAD=y - CONFIG_TPL=y - CONFIG_CMD_BOOTZ=y - CONFIG_CMD_GPIO=y -@@ -32,6 +34,7 @@ CONFIG_CMD_REGULATOR=y - CONFIG_SPL_OF_CONTROL=y - CONFIG_DEFAULT_DEVICE_TREE="rk3399-pinebook-pro" - CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" -+CONFIG_ENV_IS_IN_SPI_FLASH=y - CONFIG_SYS_RELOC_GD_ENV_ADDR=y - CONFIG_ROCKCHIP_GPIO=y - CONFIG_SYS_I2C_ROCKCHIP=y -diff --git a/include/configs/pinebook-pro-rk3399.h b/include/configs/pinebook-pro-rk3399.h -index d910830582..d478b19917 100644 ---- a/include/configs/pinebook-pro-rk3399.h -+++ b/include/configs/pinebook-pro-rk3399.h -@@ -14,15 +14,6 @@ - - #include - --#if defined(CONFIG_ENV_IS_IN_MMC) --#define CONFIG_SYS_MMC_ENV_DEV 0 --#elif defined(CONFIG_ENV_IS_IN_SPI_FLASH) --#define CONFIG_ENV_SECT_SIZE (8 * 1024) --#endif -- --#undef CONFIG_SYS_SPI_U_BOOT_OFFS --#define CONFIG_SYS_SPI_U_BOOT_OFFS 1024 * 512 -- - #define SDRAM_BANK_SIZE (2UL << 30) - - #define CONFIG_USB_OHCI_NEW --- -2.26.2 - diff --git a/sources b/sources index 7678d2e..dcf9aad 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2020.07.tar.bz2) = df91264fe8a42e676c3f2aa09d644c6a3035cc8169bf52a8ab95efe7e542cfc758a0ef150949b0d9f03c7dec7d95f8d20a2efe2dbb60c2ef1a61c8063770478d +SHA512 (u-boot-2020.10-rc1.tar.bz2) = 8a8841280249e35de95fb2438733adafcfd7bb8a9bb15daaff8406b616fcfa63b90c40a0b54a529c66ad16ee06b2ab309fda3dd452ce2482846ebed1d08851d0 diff --git a/uboot-tools.spec b/uboot-tools.spec index 7f5fdd1..c9cb437 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,9 +1,8 @@ -#global candidate rc5 -%global _default_patch_fuzz 2 +%global candidate rc1 Name: uboot-tools -Version: 2020.07 -Release: 2%{?candidate:.%{candidate}}%{?dist} +Version: 2020.10 +Release: 0.1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -22,8 +21,8 @@ Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch Patch2: uefi-use-Fedora-specific-path-name.patch # Board fixes and enablement -Patch4: usb-kbd-fixes.patch -Patch5: dragonboard-fixes.patch +Patch3: usb-kbd-fixes.patch +Patch4: dragonboard-fixes.patch # Tegra improvements Patch10: arm-tegra-define-fdtfile-option-for-distro-boot.patch @@ -32,11 +31,8 @@ Patch11: arm-add-BOOTENV_EFI_SET_FDTFILE_FALLBACK-for-tegra186-be.patch Patch12: AllWinner-Pine64-bits.patch # Rockchips improvements Patch13: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch -Patch14: rockchip-Pinebook-Pro-Fixes.patch -# RPi4 -Patch16: USB-host-support-for-Raspberry-Pi-4-board-64-bit.patch -Patch17: usb-xhci-Load-Raspberry-Pi-4-VL805-s-firmware.patch -Patch18: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch +# RPi +Patch14: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch BuildRequires: bc BuildRequires: dtc @@ -250,6 +246,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Tue Jul 28 2020 Peter Robinson - 2020.10-0.1.rc1 +- 2020.10 RC1 + * Tue Jul 14 2020 Tom Stellard - 2020.07-2 - Use make macros - https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro diff --git a/usb-xhci-Load-Raspberry-Pi-4-VL805-s-firmware.patch b/usb-xhci-Load-Raspberry-Pi-4-VL805-s-firmware.patch deleted file mode 100644 index e167bb6..0000000 --- a/usb-xhci-Load-Raspberry-Pi-4-VL805-s-firmware.patch +++ /dev/null @@ -1,707 +0,0 @@ -From patchwork Mon Jun 22 15:30:48 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1314562 -X-Patchwork-Delegate: matthias.bgg@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=suse.de -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 49rD0h00Mbz9s6w - for ; Tue, 23 Jun 2020 01:31:47 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 1284581DC9; - Mon, 22 Jun 2020 17:31:31 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 4096C81DE9; Mon, 22 Jun 2020 17:31:26 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 7C1E981D0B - for ; Mon, 22 Jun 2020 17:31:23 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=nsaenzjulienne@suse.de -Received: from relay2.suse.de (unknown [195.135.221.27]) - by mx2.suse.de (Postfix) with ESMTP id 76161C1BD; - Mon, 22 Jun 2020 15:31:22 +0000 (UTC) -From: Nicolas Saenz Julienne -To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, - sjg@chromium.org, marex@denx.de -Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, - Nicolas Saenz Julienne -Subject: [PATCH v5 1/4] arm: rpi: Add function to trigger VL805's firmware load -Date: Mon, 22 Jun 2020 17:30:48 +0200 -Message-Id: <20200622153050.23193-2-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.27.0 -In-Reply-To: <20200622153050.23193-1-nsaenzjulienne@suse.de> -References: <20200622153050.23193-1-nsaenzjulienne@suse.de> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -On the Raspberry Pi 4, after a PCI reset, VL805's (a xHCI chip) firmware -may either be loaded directly from an EEPROM or, if not present, by the -SoC's VideCore (the SoC's co-processor). Introduce the function that -informs VideCore that VL805 may need its firmware loaded. - -Signed-off-by: Nicolas Saenz Julienne ---- -Changes since v1: - - Rename function so it's not mistaken with regular firmware loading - - arch/arm/mach-bcm283x/include/mach/mbox.h | 13 +++++++ - arch/arm/mach-bcm283x/include/mach/msg.h | 7 ++++ - arch/arm/mach-bcm283x/msg.c | 46 +++++++++++++++++++++++ - 3 files changed, 66 insertions(+) - -diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h -index 60e226ce1d..2ae2d3d97c 100644 ---- a/arch/arm/mach-bcm283x/include/mach/mbox.h -+++ b/arch/arm/mach-bcm283x/include/mach/mbox.h -@@ -491,6 +491,19 @@ struct bcm2835_mbox_tag_set_palette { - } body; - }; - -+#define BCM2835_MBOX_TAG_NOTIFY_XHCI_RESET 0x00030058 -+ -+struct bcm2835_mbox_tag_pci_dev_addr { -+ struct bcm2835_mbox_tag_hdr tag_hdr; -+ union { -+ struct { -+ u32 dev_addr; -+ } req; -+ struct { -+ } resp; -+ } body; -+}; -+ - /* - * Pass a raw u32 message to the VC, and receive a raw u32 back. - * -diff --git a/arch/arm/mach-bcm283x/include/mach/msg.h b/arch/arm/mach-bcm283x/include/mach/msg.h -index 4afb08631b..e45c1bf010 100644 ---- a/arch/arm/mach-bcm283x/include/mach/msg.h -+++ b/arch/arm/mach-bcm283x/include/mach/msg.h -@@ -48,4 +48,11 @@ int bcm2835_set_video_params(int *widthp, int *heightp, int depth_bpp, - int pixel_order, int alpha_mode, ulong *fb_basep, - ulong *fb_sizep, int *pitchp); - -+/** -+ * bcm2711_load_vl805_firmware() - get vl805's firmware loaded -+ * -+ * @return 0 if OK, -EIO on error -+ */ -+int bcm2711_notify_vl805_reset(void); -+ - #endif -diff --git a/arch/arm/mach-bcm283x/msg.c b/arch/arm/mach-bcm283x/msg.c -index 94b75283f8..347aece3cd 100644 ---- a/arch/arm/mach-bcm283x/msg.c -+++ b/arch/arm/mach-bcm283x/msg.c -@@ -7,6 +7,7 @@ - #include - #include - #include -+#include - - struct msg_set_power_state { - struct bcm2835_mbox_hdr hdr; -@@ -40,6 +41,12 @@ struct msg_setup { - u32 end_tag; - }; - -+struct msg_notify_vl805_reset { -+ struct bcm2835_mbox_hdr hdr; -+ struct bcm2835_mbox_tag_pci_dev_addr dev_addr; -+ u32 end_tag; -+}; -+ - int bcm2835_power_on_module(u32 module) - { - ALLOC_CACHE_ALIGN_BUFFER(struct msg_set_power_state, msg_pwr, 1); -@@ -151,3 +158,42 @@ int bcm2835_set_video_params(int *widthp, int *heightp, int depth_bpp, - - return 0; - } -+ -+/* -+ * On the Raspberry Pi 4, after a PCI reset, VL805's (the xHCI chip) firmware -+ * may either be loaded directly from an EEPROM or, if not present, by the -+ * SoC's VideoCore. This informs VideoCore that VL805 needs its firmware -+ * loaded. -+ */ -+int bcm2711_notify_vl805_reset(void) -+{ -+ ALLOC_CACHE_ALIGN_BUFFER(struct msg_notify_vl805_reset, -+ msg_notify_vl805_reset, 1); -+ int ret; -+ -+ BCM2835_MBOX_INIT_HDR(msg_notify_vl805_reset); -+ BCM2835_MBOX_INIT_TAG(&msg_notify_vl805_reset->dev_addr, -+ NOTIFY_XHCI_RESET); -+ -+ /* -+ * The pci device address is expected like this: -+ * -+ * PCI_BUS << 20 | PCI_SLOT << 15 | PCI_FUNC << 12 -+ * -+ * But since RPi4's PCIe setup is hardwired, we know the address in -+ * advance. -+ */ -+ msg_notify_vl805_reset->dev_addr.body.req.dev_addr = 0x100000; -+ -+ ret = bcm2835_mbox_call_prop(BCM2835_MBOX_PROP_CHAN, -+ &msg_notify_vl805_reset->hdr); -+ if (ret) { -+ printf("bcm2711: Faild to load vl805's firmware, %d\n", ret); -+ return -EIO; -+ } -+ -+ udelay(200); -+ -+ return 0; -+} -+ - -From patchwork Mon Jun 22 15:30:49 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1314565 -X-Patchwork-Delegate: matthias.bgg@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=suse.de -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 49rD1F72RYz9s6w - for ; Tue, 23 Jun 2020 01:32:17 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 10E5481E20; - Mon, 22 Jun 2020 17:31:41 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 9851E81DE9; Mon, 22 Jun 2020 17:31:30 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id A2A2281D52 - for ; Mon, 22 Jun 2020 17:31:23 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=nsaenzjulienne@suse.de -Received: from relay2.suse.de (unknown [195.135.221.27]) - by mx2.suse.de (Postfix) with ESMTP id CFE01C204; - Mon, 22 Jun 2020 15:31:22 +0000 (UTC) -From: Nicolas Saenz Julienne -To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, - sjg@chromium.org, marex@denx.de -Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, - Nicolas Saenz Julienne -Subject: [PATCH v5 2/4] reset: Add Raspberry Pi 4 firmware reset controller -Date: Mon, 22 Jun 2020 17:30:49 +0200 -Message-Id: <20200622153050.23193-3-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.27.0 -In-Reply-To: <20200622153050.23193-1-nsaenzjulienne@suse.de> -References: <20200622153050.23193-1-nsaenzjulienne@suse.de> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -Raspberry Pi 4's co-processor controls some of the board's HW -initialization process, but it's up to Linux to trigger it when -relevant. Introduce a reset controller capable of interfacing with -RPi4's co-processor that models these firmware initialization routines as -reset lines. - -Signed-off-by: Nicolas Saenz Julienne ---- - drivers/reset/Kconfig | 10 ++++ - drivers/reset/Makefile | 1 + - drivers/reset/reset-raspberrypi.c | 60 +++++++++++++++++++ - .../reset/raspberrypi,firmware-reset.h | 13 ++++ - 4 files changed, 84 insertions(+) - create mode 100644 drivers/reset/reset-raspberrypi.c - create mode 100644 include/dt-bindings/reset/raspberrypi,firmware-reset.h - -diff --git a/drivers/reset/Kconfig b/drivers/reset/Kconfig -index 88d3be1593..d02c1522e5 100644 ---- a/drivers/reset/Kconfig -+++ b/drivers/reset/Kconfig -@@ -148,4 +148,14 @@ config RESET_IMX7 - help - Support for reset controller on i.MX7/8 SoCs. - -+config RESET_RASPBERRYPI -+ bool "Raspberry Pi 4 Firmware Reset Controller Driver" -+ depends on DM_RESET && ARCH_BCM283X -+ default USB_XHCI_PCI -+ help -+ Raspberry Pi 4's co-processor controls some of the board's HW -+ initialization process, but it's up to Linux to trigger it when -+ relevant. This driver provides a reset controller capable of -+ interfacing with RPi4's co-processor and model these firmware -+ initialization routines as reset lines. - endmenu -diff --git a/drivers/reset/Makefile b/drivers/reset/Makefile -index 0a044d5d8c..be54dae725 100644 ---- a/drivers/reset/Makefile -+++ b/drivers/reset/Makefile -@@ -23,3 +23,4 @@ obj-$(CONFIG_RESET_MTMIPS) += reset-mtmips.o - obj-$(CONFIG_RESET_SUNXI) += reset-sunxi.o - obj-$(CONFIG_RESET_HISILICON) += reset-hisilicon.o - obj-$(CONFIG_RESET_IMX7) += reset-imx7.o -+obj-$(CONFIG_RESET_RASPBERRYPI) += reset-raspberrypi.o -diff --git a/drivers/reset/reset-raspberrypi.c b/drivers/reset/reset-raspberrypi.c -new file mode 100644 -index 0000000000..e2d284e5ac ---- /dev/null -+++ b/drivers/reset/reset-raspberrypi.c -@@ -0,0 +1,60 @@ -+// SPDX-License-Identifier: GPL-2.0 -+/* -+ * Raspberry Pi 4 firmware reset driver -+ * -+ * Copyright (C) 2020 Nicolas Saenz Julienne -+ */ -+#include -+#include -+#include -+#include -+#include -+ -+static int raspberrypi_reset_request(struct reset_ctl *reset_ctl) -+{ -+ if (reset_ctl->id >= RASPBERRYPI_FIRMWARE_RESET_NUM_IDS) -+ return -EINVAL; -+ -+ return 0; -+} -+ -+static int raspberrypi_reset_free(struct reset_ctl *reset_ctl) -+{ -+ return 0; -+} -+ -+static int raspberrypi_reset_assert(struct reset_ctl *reset_ctl) -+{ -+ switch (reset_ctl->id) { -+ case RASPBERRYPI_FIRMWARE_RESET_ID_USB: -+ bcm2711_notify_vl805_reset(); -+ return 0; -+ default: -+ return -EINVAL; -+ } -+} -+ -+static int raspberrypi_reset_deassert(struct reset_ctl *reset_ctl) -+{ -+ return 0; -+} -+ -+struct reset_ops raspberrypi_reset_ops = { -+ .request = raspberrypi_reset_request, -+ .rfree = raspberrypi_reset_free, -+ .rst_assert = raspberrypi_reset_assert, -+ .rst_deassert = raspberrypi_reset_deassert, -+}; -+ -+static const struct udevice_id raspberrypi_reset_ids[] = { -+ { .compatible = "raspberrypi,firmware-reset" }, -+ { } -+}; -+ -+U_BOOT_DRIVER(raspberrypi_reset) = { -+ .name = "raspberrypi-reset", -+ .id = UCLASS_RESET, -+ .of_match = raspberrypi_reset_ids, -+ .ops = &raspberrypi_reset_ops, -+}; -+ -diff --git a/include/dt-bindings/reset/raspberrypi,firmware-reset.h b/include/dt-bindings/reset/raspberrypi,firmware-reset.h -new file mode 100644 -index 0000000000..1a4f4c7927 ---- /dev/null -+++ b/include/dt-bindings/reset/raspberrypi,firmware-reset.h -@@ -0,0 +1,13 @@ -+/* SPDX-License-Identifier: GPL-2.0 */ -+/* -+ * Copyright (c) 2020 Nicolas Saenz Julienne -+ * Author: Nicolas Saenz Julienne -+ */ -+ -+#ifndef _DT_BINDINGS_RASPBERRYPI_FIRMWARE_RESET_H -+#define _DT_BINDINGS_RASPBERRYPI_FIRMWARE_RESET_H -+ -+#define RASPBERRYPI_FIRMWARE_RESET_ID_USB 0 -+#define RASPBERRYPI_FIRMWARE_RESET_NUM_IDS 1 -+ -+#endif - -From patchwork Mon Jun 22 15:30:50 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1314564 -X-Patchwork-Delegate: matthias.bgg@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=suse.de -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 49rD115xyZz9sQx - for ; Tue, 23 Jun 2020 01:32:05 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 4627E81E0C; - Mon, 22 Jun 2020 17:31:39 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 5837781E04; Mon, 22 Jun 2020 17:31:30 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 0D9F281DC9 - for ; Mon, 22 Jun 2020 17:31:24 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=nsaenzjulienne@suse.de -Received: from relay2.suse.de (unknown [195.135.221.27]) - by mx2.suse.de (Postfix) with ESMTP id 478B9C207; - Mon, 22 Jun 2020 15:31:23 +0000 (UTC) -From: Nicolas Saenz Julienne -To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, - sjg@chromium.org, marex@denx.de -Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, - Nicolas Saenz Julienne -Subject: [PATCH v5 3/4] configs: Enable support for reset controllers on RPi4 -Date: Mon, 22 Jun 2020 17:30:50 +0200 -Message-Id: <20200622153050.23193-4-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.27.0 -In-Reply-To: <20200622153050.23193-1-nsaenzjulienne@suse.de> -References: <20200622153050.23193-1-nsaenzjulienne@suse.de> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -This is required in order to access the reset controller used to -initialize the board's xHCI chip. - -Signed-off-by: Nicolas Saenz Julienne ---- - configs/rpi_4_32b_defconfig | 1 + - configs/rpi_4_defconfig | 1 + - configs/rpi_arm64_defconfig | 1 + - 3 files changed, 3 insertions(+) - -diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig -index b0797373b5..00c8d963ab 100644 ---- a/configs/rpi_4_32b_defconfig -+++ b/configs/rpi_4_32b_defconfig -@@ -35,6 +35,7 @@ CONFIG_DM_PCI=y - CONFIG_PCI_BRCMSTB=y - CONFIG_PINCTRL=y - # CONFIG_PINCTRL_GENERIC is not set -+CONFIG_DM_RESET=y - # CONFIG_REQUIRE_SERIAL_CONSOLE is not set - CONFIG_USB=y - CONFIG_DM_USB=y -diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig -index 932b768164..c73eccb61c 100644 ---- a/configs/rpi_4_defconfig -+++ b/configs/rpi_4_defconfig -@@ -35,6 +35,7 @@ CONFIG_DM_PCI=y - CONFIG_PCI_BRCMSTB=y - CONFIG_PINCTRL=y - # CONFIG_PINCTRL_GENERIC is not set -+CONFIG_DM_RESET=y - # CONFIG_REQUIRE_SERIAL_CONSOLE is not set - CONFIG_USB=y - CONFIG_DM_USB=y -diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig -index 855afcf1cf..800b51e6f5 100644 ---- a/configs/rpi_arm64_defconfig -+++ b/configs/rpi_arm64_defconfig -@@ -32,6 +32,7 @@ CONFIG_DM_PCI=y - CONFIG_PCI_BRCMSTB=y - CONFIG_PINCTRL=y - # CONFIG_PINCTRL_GENERIC is not set -+CONFIG_DM_RESET=y - # CONFIG_REQUIRE_SERIAL_CONSOLE is not set - CONFIG_USB=y - CONFIG_DM_USB=y - -From patchwork Mon Jun 22 15:30:51 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1314563 -X-Patchwork-Delegate: matthias.bgg@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=suse.de -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 49rD0q0fqDz9s6w - for ; Tue, 23 Jun 2020 01:31:55 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id CE84C81DE7; - Mon, 22 Jun 2020 17:31:37 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id EFDD181DD8; Mon, 22 Jun 2020 17:31:29 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 86E4581DD8 - for ; Mon, 22 Jun 2020 17:31:24 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=nsaenzjulienne@suse.de -Received: from relay2.suse.de (unknown [195.135.221.27]) - by mx2.suse.de (Postfix) with ESMTP id C3DADC1D5; - Mon, 22 Jun 2020 15:31:23 +0000 (UTC) -From: Nicolas Saenz Julienne -To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, - sjg@chromium.org, marex@denx.de -Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, - Nicolas Saenz Julienne -Subject: [PATCH v5 4/4] usb: xhci: Add reset controller support -Date: Mon, 22 Jun 2020 17:30:51 +0200 -Message-Id: <20200622153050.23193-5-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.27.0 -In-Reply-To: <20200622153050.23193-1-nsaenzjulienne@suse.de> -References: <20200622153050.23193-1-nsaenzjulienne@suse.de> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.30rc1 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de -X-Virus-Status: Clean - -Some atypical users of xhci might need to manually reset their xHCI -controller before starting the HCD setup. Check if a reset controller -device is available to the PCI bus and trigger a reset. - -Signed-off-by: Nicolas Saenz Julienne ---- - -Changes since v3: - - Move reset support to xchi core - - drivers/usb/host/xhci-mem.c | 2 ++ - drivers/usb/host/xhci.c | 33 +++++++++++++++++++++++++++++++++ - include/usb/xhci.h | 2 ++ - 3 files changed, 37 insertions(+) - -diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c -index f446520528..108f4bd8cf 100644 ---- a/drivers/usb/host/xhci-mem.c -+++ b/drivers/usb/host/xhci-mem.c -@@ -180,6 +180,8 @@ void xhci_cleanup(struct xhci_ctrl *ctrl) - xhci_free_virt_devices(ctrl); - free(ctrl->erst.entries); - free(ctrl->dcbaa); -+ if (reset_valid(&ctrl->reset)) -+ reset_free(&ctrl->reset); - memset(ctrl, '\0', sizeof(struct xhci_ctrl)); - } - -diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c -index ebd2954571..03b41cc855 100644 ---- a/drivers/usb/host/xhci.c -+++ b/drivers/usb/host/xhci.c -@@ -190,6 +190,35 @@ static int xhci_start(struct xhci_hcor *hcor) - return ret; - } - -+/** -+ * Resets XHCI Hardware -+ * -+ * @param ctrl pointer to host controller -+ * @return 0 if OK, or a negative error code. -+ */ -+static int xhci_reset_hw(struct xhci_ctrl *ctrl) -+{ -+ int ret; -+ -+ ret = reset_get_by_index(ctrl->dev, 0, &ctrl->reset); -+ if (ret && ret != -ENOENT) { -+ dev_err(ctrl->dev, "failed to get reset\n"); -+ return ret; -+ } -+ -+ if (reset_valid(&ctrl->reset)) { -+ ret = reset_assert(&ctrl->reset); -+ if (ret) -+ return ret; -+ -+ ret = reset_deassert(&ctrl->reset); -+ if (ret) -+ return ret; -+ } -+ -+ return 0; -+} -+ - /** - * Resets the XHCI Controller - * -@@ -1508,6 +1537,10 @@ int xhci_register(struct udevice *dev, struct xhci_hccr *hccr, - - ctrl->dev = dev; - -+ ret = xhci_reset_hw(ctrl); -+ if (ret) -+ goto err; -+ - /* - * XHCI needs to issue a Address device command to setup - * proper device context structures, before it can interact -diff --git a/include/usb/xhci.h b/include/usb/xhci.h -index 1170c0ac69..7d34103fd5 100644 ---- a/include/usb/xhci.h -+++ b/include/usb/xhci.h -@@ -16,6 +16,7 @@ - #ifndef HOST_XHCI_H_ - #define HOST_XHCI_H_ - -+#include - #include - #include - #include -@@ -1209,6 +1210,7 @@ struct xhci_ctrl { - #if CONFIG_IS_ENABLED(DM_USB) - struct udevice *dev; - #endif -+ struct reset_ctl reset; - struct xhci_hccr *hccr; /* R/O registers, not need for volatile */ - struct xhci_hcor *hcor; - struct xhci_doorbell_array *dba; From 4a13ab93a826af7579f1756f7e5eaceb0aeda4f3 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 10 Aug 2020 22:23:45 +0100 Subject: [PATCH 014/271] 2020.10 RC2 --- ...-the-DT-provided-by-the-Raspberry-Pi.patch | 50 ++++++++++++------- sources | 2 +- uboot-tools.spec | 7 ++- 3 files changed, 38 insertions(+), 21 deletions(-) diff --git a/rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch b/rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch index 0e30129..c156e4d 100644 --- a/rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch +++ b/rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch @@ -1,19 +1,20 @@ -From 7389a936fbd5ccaae7c39d38d1440e0359f9d0e5 Mon Sep 17 00:00:00 2001 +From f10f94831450671a77f61fe413b4a57459963860 Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Tue, 12 May 2020 08:14:26 +0100 +Date: Mon, 10 Aug 2020 22:20:29 +0100 Subject: [PATCH] rpi: Use firmware provided device tree Signed-off-by: Peter Robinson --- - configs/rpi_0_w_defconfig | 2 +- - configs/rpi_2_defconfig | 2 +- - configs/rpi_3_32b_defconfig | 2 +- - configs/rpi_3_defconfig | 2 +- - configs/rpi_defconfig | 2 +- - 5 files changed, 5 insertions(+), 5 deletions(-) + configs/rpi_0_w_defconfig | 2 +- + configs/rpi_2_defconfig | 2 +- + configs/rpi_3_32b_defconfig | 2 +- + configs/rpi_3_b_plus_defconfig | 2 +- + configs/rpi_3_defconfig | 2 +- + configs/rpi_defconfig | 2 +- + 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/configs/rpi_0_w_defconfig b/configs/rpi_0_w_defconfig -index 5053a38822..3c6af2b367 100644 +index bba5e12b12..0241f4c6d3 100644 --- a/configs/rpi_0_w_defconfig +++ b/configs/rpi_0_w_defconfig @@ -17,7 +17,7 @@ CONFIG_CMD_GPIO=y @@ -22,11 +23,11 @@ index 5053a38822..3c6af2b367 100644 CONFIG_CMD_FS_UUID=y -CONFIG_OF_EMBED=y +CONFIG_OF_BOARD=y - CONFIG_DEFAULT_DEVICE_TREE="bcm2835-rpi-zero-w" CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" CONFIG_SYS_RELOC_GD_ENV_ADDR=y + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y diff --git a/configs/rpi_2_defconfig b/configs/rpi_2_defconfig -index 0000a759f1..f27c5ab1f6 100644 +index 1c2bbb29ce..9573e475f4 100644 --- a/configs/rpi_2_defconfig +++ b/configs/rpi_2_defconfig @@ -17,7 +17,7 @@ CONFIG_CMD_GPIO=y @@ -35,11 +36,11 @@ index 0000a759f1..f27c5ab1f6 100644 CONFIG_CMD_FS_UUID=y -CONFIG_OF_EMBED=y +CONFIG_OF_BOARD=y - CONFIG_DEFAULT_DEVICE_TREE="bcm2836-rpi-2-b" CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" CONFIG_SYS_RELOC_GD_ENV_ADDR=y + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y diff --git a/configs/rpi_3_32b_defconfig b/configs/rpi_3_32b_defconfig -index a714f9ec49..90ce6ea22e 100644 +index b8a3d17f43..252df994e6 100644 --- a/configs/rpi_3_32b_defconfig +++ b/configs/rpi_3_32b_defconfig @@ -18,7 +18,7 @@ CONFIG_CMD_GPIO=y @@ -48,11 +49,24 @@ index a714f9ec49..90ce6ea22e 100644 CONFIG_CMD_FS_UUID=y -CONFIG_OF_EMBED=y +CONFIG_OF_BOARD=y - CONFIG_DEFAULT_DEVICE_TREE="bcm2837-rpi-3-b" CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" CONFIG_SYS_RELOC_GD_ENV_ADDR=y + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y +diff --git a/configs/rpi_3_b_plus_defconfig b/configs/rpi_3_b_plus_defconfig +index 4c361438fa..3b2996a2f9 100644 +--- a/configs/rpi_3_b_plus_defconfig ++++ b/configs/rpi_3_b_plus_defconfig +@@ -18,7 +18,7 @@ CONFIG_CMD_GPIO=y + CONFIG_CMD_MMC=y + CONFIG_CMD_USB=y + CONFIG_CMD_FS_UUID=y +-CONFIG_OF_EMBED=y ++CONFIG_OF_BOARD=y + CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" + CONFIG_SYS_RELOC_GD_ENV_ADDR=y + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y diff --git a/configs/rpi_3_defconfig b/configs/rpi_3_defconfig -index 244d9b3a78..f72d6d35e2 100644 +index 9b281a4f15..1e9ee6122e 100644 --- a/configs/rpi_3_defconfig +++ b/configs/rpi_3_defconfig @@ -18,7 +18,7 @@ CONFIG_CMD_GPIO=y @@ -61,11 +75,11 @@ index 244d9b3a78..f72d6d35e2 100644 CONFIG_CMD_FS_UUID=y -CONFIG_OF_EMBED=y +CONFIG_OF_BOARD=y - CONFIG_DEFAULT_DEVICE_TREE="bcm2837-rpi-3-b" CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" CONFIG_SYS_RELOC_GD_ENV_ADDR=y + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y diff --git a/configs/rpi_defconfig b/configs/rpi_defconfig -index 64bb184c2b..645dbbec33 100644 +index b5ad53c37b..223fc03275 100644 --- a/configs/rpi_defconfig +++ b/configs/rpi_defconfig @@ -17,7 +17,7 @@ CONFIG_CMD_GPIO=y @@ -74,9 +88,9 @@ index 64bb184c2b..645dbbec33 100644 CONFIG_CMD_FS_UUID=y -CONFIG_OF_EMBED=y +CONFIG_OF_BOARD=y - CONFIG_DEFAULT_DEVICE_TREE="bcm2835-rpi-b" CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" CONFIG_SYS_RELOC_GD_ENV_ADDR=y + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y -- 2.26.2 diff --git a/sources b/sources index dcf9aad..a197564 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2020.10-rc1.tar.bz2) = 8a8841280249e35de95fb2438733adafcfd7bb8a9bb15daaff8406b616fcfa63b90c40a0b54a529c66ad16ee06b2ab309fda3dd452ce2482846ebed1d08851d0 +SHA512 (u-boot-2020.10-rc2.tar.bz2) = 9364a555e34830359c5cfffa87cc3d192ff15b23bf8bda054778e02ab4b37ede09a1a37757eb2121787de924fc563880dd4417bf53cd80d3649acb55d05994e8 diff --git a/uboot-tools.spec b/uboot-tools.spec index c9cb437..435047b 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -%global candidate rc1 +%global candidate rc2 Name: uboot-tools Version: 2020.10 -Release: 0.1%{?candidate:.%{candidate}}%{?dist} +Release: 0.2%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -246,6 +246,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Mon Aug 10 2020 Peter Robinson - 2020.10-0.2.rc2 +- Update to 2020.10 RC2 + * Tue Jul 28 2020 Peter Robinson - 2020.10-0.1.rc1 - 2020.10 RC1 From 609e2fbd0174f3e661d483ca481c8082dda68af1 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 19 Aug 2020 15:55:37 +0100 Subject: [PATCH 015/271] Minor patch updates and cleanups --- ...nable-rng-on-rock960-and-firefly3399.patch | 145 ++++++++++-------- uboot-tools.spec | 3 +- 2 files changed, 82 insertions(+), 66 deletions(-) diff --git a/arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch b/arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch index 8f28d1c..89e38f5 100644 --- a/arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch +++ b/arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch @@ -1,17 +1,87 @@ -From 88725c4d036bab25c900cc3c962fc42d94e0ab69 Mon Sep 17 00:00:00 2001 +From c206a750c80dc4aaa8e7eade50199b3198a3e288 Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Wed, 10 Jun 2020 13:26:43 +0100 -Subject: [PATCH] arm: rk3399: enable rng on rock960 and firefly3399 +Date: Wed, 19 Aug 2020 15:49:25 +0100 +Subject: [PATCH 1/3] rockchip: RockPro64: enable rng to provide an entropy + source + +Enable the rng so UEFI can provide entropy for KASLR Signed-off-by: Peter Robinson --- - arch/arm/dts/rk3399-firefly-u-boot.dtsi | 4 ++++ - arch/arm/dts/rk3399-rock960-u-boot.dtsi | 4 ++++ - arch/arm/dts/rk3399-rockpro64-u-boot.dtsi | 4 ++++ - configs/firefly-rk3399_defconfig | 2 ++ - configs/rock960-rk3399_defconfig | 2 ++ - configs/rockpro64-rk3399_defconfig | 2 ++ - 6 files changed, 18 insertions(+) + configs/rockpro64-rk3399_defconfig | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig +index a6e2c3d71d..9b1ba04b9e 100644 +--- a/configs/rockpro64-rk3399_defconfig ++++ b/configs/rockpro64-rk3399_defconfig +@@ -41,6 +41,8 @@ CONFIG_MMC_DW=y + CONFIG_MMC_DW_ROCKCHIP=y + CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_ROCKCHIP=y ++CONFIG_DM_RNG=y ++CONFIG_RNG_ROCKCHIP=y + CONFIG_SPI_FLASH_GIGADEVICE=y + CONFIG_DM_ETH=y + CONFIG_ETH_DESIGNWARE=y +-- +2.26.2 + +From 91db3a7baa4cfc8f1f8879b4bdafeb05902f2114 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Wed, 19 Aug 2020 15:52:15 +0100 +Subject: [PATCH 2/3] rockchip: Rock960: enable rng to provide an entropy + source + +Enable the rng so UEFI can provide entropy for KASLR + +Signed-off-by: Peter Robinson +--- + arch/arm/dts/rk3399-rock960-u-boot.dtsi | 4 ++++ + configs/rock960-rk3399_defconfig | 2 ++ + 2 files changed, 6 insertions(+) + +diff --git a/arch/arm/dts/rk3399-rock960-u-boot.dtsi b/arch/arm/dts/rk3399-rock960-u-boot.dtsi +index c190089e26..08292dbd39 100644 +--- a/arch/arm/dts/rk3399-rock960-u-boot.dtsi ++++ b/arch/arm/dts/rk3399-rock960-u-boot.dtsi +@@ -24,3 +24,7 @@ + }; + + }; ++ ++&rng { ++ status = "okay"; ++}; +diff --git a/configs/rock960-rk3399_defconfig b/configs/rock960-rk3399_defconfig +index 1d997847c2..9c4d8871b7 100644 +--- a/configs/rock960-rk3399_defconfig ++++ b/configs/rock960-rk3399_defconfig +@@ -38,6 +38,8 @@ CONFIG_MMC_DW_ROCKCHIP=y + CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_SDMA=y + CONFIG_MMC_SDHCI_ROCKCHIP=y ++CONFIG_DM_RNG=y ++CONFIG_RNG_ROCKCHIP=y + CONFIG_DM_ETH=y + CONFIG_NVME=y + CONFIG_PCI=y +-- +2.26.2 + +From ac0793c7c4ee032da11bddbd0bdefee2322bb621 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Wed, 19 Aug 2020 15:53:58 +0100 +Subject: [PATCH 3/3] rockchip: firefly-rk3399: enable rng to provide an + entropy source + +Enable the rng so UEFI can provide entropy for KASLR + +Signed-off-by: Peter Robinson +--- + arch/arm/dts/rk3399-firefly-u-boot.dtsi | 4 ++++ + configs/firefly-rk3399_defconfig | 2 ++ + 2 files changed, 6 insertions(+) diff --git a/arch/arm/dts/rk3399-firefly-u-boot.dtsi b/arch/arm/dts/rk3399-firefly-u-boot.dtsi index 38e0897db9..a6c7b913da 100644 @@ -25,35 +95,8 @@ index 38e0897db9..a6c7b913da 100644 +&rng { + status = "okay"; +}; -diff --git a/arch/arm/dts/rk3399-rock960-u-boot.dtsi b/arch/arm/dts/rk3399-rock960-u-boot.dtsi -index c190089e26..08292dbd39 100644 ---- a/arch/arm/dts/rk3399-rock960-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-rock960-u-boot.dtsi -@@ -24,3 +24,7 @@ - }; - - }; -+ -+&rng { -+ status = "okay"; -+}; -diff --git a/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi b/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi -index bac09df4a3..38fe3bb0ec 100644 ---- a/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi -@@ -25,6 +25,10 @@ - }; - }; - -+&rng { -+ status = "okay"; -+}; -+ - &vdd_center { - regulator-min-microvolt = <950000>; - regulator-max-microvolt = <950000>; diff --git a/configs/firefly-rk3399_defconfig b/configs/firefly-rk3399_defconfig -index 5bb54f5835..551687d6d0 100644 +index ea4a30ebf3..e242ee5009 100644 --- a/configs/firefly-rk3399_defconfig +++ b/configs/firefly-rk3399_defconfig @@ -35,6 +35,8 @@ CONFIG_MMC_DW=y @@ -65,32 +108,6 @@ index 5bb54f5835..551687d6d0 100644 CONFIG_SF_DEFAULT_SPEED=20000000 CONFIG_DM_ETH=y CONFIG_ETH_DESIGNWARE=y -diff --git a/configs/rock960-rk3399_defconfig b/configs/rock960-rk3399_defconfig -index 59a85c78a1..f31cb92884 100644 ---- a/configs/rock960-rk3399_defconfig -+++ b/configs/rock960-rk3399_defconfig -@@ -37,6 +37,8 @@ CONFIG_MMC_DW_ROCKCHIP=y - CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_SDMA=y - CONFIG_MMC_SDHCI_ROCKCHIP=y -+CONFIG_DM_RNG=y -+CONFIG_RNG_ROCKCHIP=y - CONFIG_DM_ETH=y - CONFIG_NVME=y - CONFIG_PCI=y -diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig -index 807747485a..f778f0b640 100644 ---- a/configs/rockpro64-rk3399_defconfig -+++ b/configs/rockpro64-rk3399_defconfig -@@ -40,6 +40,8 @@ CONFIG_MMC_DW=y - CONFIG_MMC_DW_ROCKCHIP=y - CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_ROCKCHIP=y -+CONFIG_DM_RNG=y -+CONFIG_RNG_ROCKCHIP=y - CONFIG_SPI_FLASH_GIGADEVICE=y - CONFIG_DM_ETH=y - CONFIG_ETH_DESIGNWARE=y -- 2.26.2 diff --git a/uboot-tools.spec b/uboot-tools.spec index 435047b..d4fdb0a 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -21,8 +21,7 @@ Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch Patch2: uefi-use-Fedora-specific-path-name.patch # Board fixes and enablement -Patch3: usb-kbd-fixes.patch -Patch4: dragonboard-fixes.patch +# Patch4: dragonboard-fixes.patch # Tegra improvements Patch10: arm-tegra-define-fdtfile-option-for-distro-boot.patch From ac3269a2ff746f239fcdeaf7e989bd1b53038b96 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 25 Aug 2020 14:53:52 +0100 Subject: [PATCH 016/271] Enable a number of new Rockchip devices --- aarch64-boards | 6 ++++++ arm-boards | 1 + uboot-tools.spec | 50 +++++++++++++++++++++++++----------------------- 3 files changed, 33 insertions(+), 24 deletions(-) diff --git a/aarch64-boards b/aarch64-boards index cc0d265..e5d4147 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -29,6 +29,7 @@ nanopc-t4-rk3399 nanopi_a64 nanopi-k2 nanopi-m4-rk3399 +nanopi-m4-2gb-rk3399 nanopi_neo2 nanopi-neo4-rk3399 nanopi_neo_plus2 @@ -57,8 +58,13 @@ puma-rk3399 rock64-rk3328 rock960-rk3399 rock-pi-4-rk3399 +rock-pi-4c-rk3399 +rock-pi-e-rk3328 +rock-pi-n10-rk3399pro rockpro64-rk3399 +roc-cc-rk3328 roc-pc-rk3399 +roc-pc-mezzanine-rk3399 rpi_3 rpi_4 rpi_arm64 diff --git a/arm-boards b/arm-boards index 5a82a80..46524ad 100644 --- a/arm-boards +++ b/arm-boards @@ -112,6 +112,7 @@ qemu_arm r7-tv-dongle riotboard rock +rock-pi-n8-rk3288 rock2 rpi_2 rpi_3_32b diff --git a/uboot-tools.spec b/uboot-tools.spec index d4fdb0a..493acfd 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,37 +1,36 @@ %global candidate rc2 -Name: uboot-tools -Version: 2020.10 -Release: 0.2%{?candidate:.%{candidate}}%{?dist} -Summary: U-Boot utilities -License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ -URL: http://www.denx.de/wiki/U-Boot +Name: uboot-tools +Version: 2020.10 +Release: 0.3%{?candidate:.%{candidate}}%{?dist} +Summary: U-Boot utilities +License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ +URL: http://www.denx.de/wiki/U-Boot -Source0: ftp://ftp.denx.de/pub/u-boot/u-boot-%{version}%{?candidate:-%{candidate}}.tar.bz2 -Source1: arm-boards -Source2: arm-chromebooks -Source3: aarch64-boards -Source4: aarch64-chromebooks -Source5: 10-devicetree.install +Source0: ftp://ftp.denx.de/pub/u-boot/u-boot-%{version}%{?candidate:-%{candidate}}.tar.bz2 +Source1: arm-boards +Source2: arm-chromebooks +Source3: aarch64-boards +Source4: aarch64-chromebooks +Source5: 10-devicetree.install # Fedoraisms patches # Needed to find DT on boot partition that's not the first partition -Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch +Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch # Needed due to issues with shim -Patch2: uefi-use-Fedora-specific-path-name.patch +Patch2: uefi-use-Fedora-specific-path-name.patch # Board fixes and enablement -# Patch4: dragonboard-fixes.patch - +# RPi - uses RPI firmware device tree for HAT support +Patch5: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch # Tegra improvements -Patch10: arm-tegra-define-fdtfile-option-for-distro-boot.patch -Patch11: arm-add-BOOTENV_EFI_SET_FDTFILE_FALLBACK-for-tegra186-be.patch +Patch6: arm-tegra-define-fdtfile-option-for-distro-boot.patch +Patch7: arm-add-BOOTENV_EFI_SET_FDTFILE_FALLBACK-for-tegra186-be.patch # AllWinner improvements -Patch12: AllWinner-Pine64-bits.patch +Patch8: AllWinner-Pine64-bits.patch # Rockchips improvements -Patch13: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch -# RPi -Patch14: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch +Patch9: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch +Patch10: rockchip-Rock960-Fix-up-USB-support.patch BuildRequires: bc BuildRequires: dtc @@ -121,12 +120,12 @@ do echo "Board: $board using sun50i_h6" cp /usr/share/arm-trusted-firmware/sun50i_h6/* builds/$(echo $board)/ fi - rk3328=(evb-rk3328 rock64-rk3328) + rk3328=(evb-rk3328 rock64-rk3328 rock-pi-e-rk3328 roc-cc-rk3328) if [[ " ${rk3328[*]} " == *" $board "* ]]; then echo "Board: $board using rk3328" cp /usr/share/arm-trusted-firmware/rk3328/* builds/$(echo $board)/ fi - rk3399=(evb-rk3399 ficus-rk3399 firefly-rk3399 khadas-edge-captain-rk3399 khadas-edge-v-rk3399 khadas-edge-rk3399 nanopc-t4-rk3399 nanopi-m4-rk3399 nanopi-neo4-rk3399 orangepi-rk3399 pinebook-pro-rk3399 puma-rk3399 rock960-rk3399 rock-pi-4-rk3399 rockpro64-rk3399 roc-pc-rk3399) + rk3399=(evb-rk3399 ficus-rk3399 firefly-rk3399 khadas-edge-captain-rk3399 khadas-edge-rk3399 khadas-edge-v-rk3399 nanopc-t4-rk3399 nanopi-m4-2gb-rk3399 nanopi-m4-rk3399 nanopi-neo4-rk3399 orangepi-rk3399 pinebook-pro-rk3399 puma-rk3399 rock960-rk3399 rock-pi-4c-rk3399 rock-pi-4-rk3399 rock-pi-n10-rk3399pro rockpro64-rk3399 roc-pc-mezzanine-rk3399 roc-pc-rk3399) if [[ " ${rk3399[*]} " == *" $board "* ]]; then echo "Board: $board using rk3399" cp /usr/share/arm-trusted-firmware/rk3399/* builds/$(echo $board)/ @@ -245,6 +244,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Wed Aug 19 2020 Peter Robinson - 2020.10-0.3.rc2 +- Enable a number of new Rockchip devices + * Mon Aug 10 2020 Peter Robinson - 2020.10-0.2.rc2 - Update to 2020.10 RC2 From 6d250131e666d26087540ee065707cd1c8fbd21a Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 25 Aug 2020 14:55:15 +0100 Subject: [PATCH 017/271] add missing patch --- rockchip-Rock960-Fix-up-USB-support.patch | 69 +++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 rockchip-Rock960-Fix-up-USB-support.patch diff --git a/rockchip-Rock960-Fix-up-USB-support.patch b/rockchip-Rock960-Fix-up-USB-support.patch new file mode 100644 index 0000000..bb534a0 --- /dev/null +++ b/rockchip-Rock960-Fix-up-USB-support.patch @@ -0,0 +1,69 @@ +From 74ac6aad46c7d05e925b767fdb9a1306af6d5168 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Wed, 19 Aug 2020 16:55:11 +0100 +Subject: [PATCH] rockchip: Rock960: Fix up USB support + +Fix up USB config options so keyboards and other USB devices work. + +Signed-off-by: Peter Robinson +--- + configs/rock960-rk3399_defconfig | 9 ++++++++- + include/configs/rock960_rk3399.h | 2 ++ + 2 files changed, 10 insertions(+), 1 deletion(-) + +diff --git a/configs/rock960-rk3399_defconfig b/configs/rock960-rk3399_defconfig +index 9c4d8871b7..d6d787aa02 100644 +--- a/configs/rock960-rk3399_defconfig ++++ b/configs/rock960-rk3399_defconfig +@@ -33,6 +33,7 @@ CONFIG_SYS_RELOC_GD_ENV_ADDR=y + CONFIG_SYS_MMC_ENV_DEV=1 + CONFIG_ROCKCHIP_GPIO=y + CONFIG_SYS_I2C_ROCKCHIP=y ++CONFIG_DM_KEYBOARD=y + CONFIG_MMC_DW=y + CONFIG_MMC_DW_ROCKCHIP=y + CONFIG_MMC_SDHCI=y +@@ -43,6 +44,8 @@ CONFIG_RNG_ROCKCHIP=y + CONFIG_DM_ETH=y + CONFIG_NVME=y + CONFIG_PCI=y ++CONFIG_PHY_ROCKCHIP_INNO_USB2=y ++CONFIG_PHY_ROCKCHIP_TYPEC=y + CONFIG_PMIC_RK8XX=y + CONFIG_REGULATOR_PWM=y + CONFIG_REGULATOR_RK8XX=y +@@ -56,8 +59,10 @@ CONFIG_USB_XHCI_HCD=y + CONFIG_USB_XHCI_DWC3=y + CONFIG_USB_EHCI_HCD=y + CONFIG_USB_EHCI_GENERIC=y ++CONFIG_USB_OHCI_HCD=y ++CONFIG_USB_OHCI_GENERIC=y + CONFIG_USB_DWC3=y +-CONFIG_ROCKCHIP_USB2_PHY=y ++CONFIG_USB_DWC3_GENERIC=y + CONFIG_USB_KEYBOARD=y + CONFIG_USB_GADGET=y + CONFIG_USB_HOST_ETHER=y +@@ -68,6 +73,8 @@ CONFIG_USB_ETHER_RTL8152=y + CONFIG_USB_ETHER_SMSC95XX=y + CONFIG_DM_VIDEO=y + CONFIG_DISPLAY=y ++CONFIG_VIDEO_BPP16=y ++CONFIG_VIDEO_BPP32=y + CONFIG_VIDEO_ROCKCHIP=y + CONFIG_DISPLAY_ROCKCHIP_HDMI=y + CONFIG_SPL_TINY_MEMSET=y +diff --git a/include/configs/rock960_rk3399.h b/include/configs/rock960_rk3399.h +index c6f9122154..2edad71028 100644 +--- a/include/configs/rock960_rk3399.h ++++ b/include/configs/rock960_rk3399.h +@@ -15,4 +15,6 @@ + + #define SDRAM_BANK_SIZE (2UL << 30) + ++#define CONFIG_USB_OHCI_NEW ++#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 2 + #endif +-- +2.26.2 + From e87d4e06705a13d02df117f86de17a9064565c42 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 9 Sep 2020 11:02:55 +0100 Subject: [PATCH 018/271] Update to 2020.10 rc4 --- ...64-bits.patch => AllWinner-PinePhone.patch | 605 +-------- AllWinner-PineTab.patch | 538 ++++++++ ...hone-automatic-device-tree-selection.patch | 1114 +++++++++++++++++ sources | 2 +- uboot-tools.spec | 15 +- 5 files changed, 1722 insertions(+), 552 deletions(-) rename AllWinner-Pine64-bits.patch => AllWinner-PinePhone.patch (80%) create mode 100644 AllWinner-PineTab.patch create mode 100644 PinePhone-automatic-device-tree-selection.patch diff --git a/AllWinner-Pine64-bits.patch b/AllWinner-PinePhone.patch similarity index 80% rename from AllWinner-Pine64-bits.patch rename to AllWinner-PinePhone.patch index 8ce13e7..cc13eac 100644 --- a/AllWinner-Pine64-bits.patch +++ b/AllWinner-PinePhone.patch @@ -1302,34 +1302,38 @@ Date: Thu, 9 Jul 2020 12:44:55 +0100 Subject: [PATCH 7/8] arm64: dts: allwinner: Add initial support for Pine64 PinePhone -At the moment PinePhone comes in two slightly incompatible variants: +At the moment PinePhone comes in three slightly incompatible variants: - 1.0: Early Developer Batch - 1.1: Braveheart Batch +- 1.2: Initial Production version This syncs the Pinephone DTs from Linux 5.8-rc1. Signed-off-by: Peter Robinson --- - arch/arm/dts/Makefile | 2 + + arch/arm/dts/Makefile | 3 + arch/arm/dts/sun50i-a64-pinephone-1.0.dts | 11 + arch/arm/dts/sun50i-a64-pinephone-1.1.dts | 11 + + arch/arm/dts/sun50i-a64-pinephone-1.2.dts | 40 +++++++++++++++++++++++ arch/arm/dts/sun50i-a64-pinephone.dtsi | 379 ++++++++++++++++++++++ - 4 files changed, 403 insertions(+) + 5 files changed, 403 insertions(+) create mode 100644 arch/arm/dts/sun50i-a64-pinephone-1.0.dts create mode 100644 arch/arm/dts/sun50i-a64-pinephone-1.1.dts + create mode 100644 arch/arm/dts/sun50i-a64-pinephone-1.2.dts create mode 100644 arch/arm/dts/sun50i-a64-pinephone.dtsi diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile -index cee10f533f..efaadeecf3 100644 +index f8f529435b..193f5c6138 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile -@@ -597,6 +597,8 @@ dtb-$(CONFIG_MACH_SUN50I) += \ +@@ -608,6 +608,9 @@ dtb-$(CONFIG_MACH_SUN50I) += \ sun50i-a64-pine64-plus.dtb \ sun50i-a64-pine64.dtb \ sun50i-a64-pinebook.dtb \ + sun50i-a64-pinephone-1.0.dtb \ + sun50i-a64-pinephone-1.1.dtb \ ++ sun50i-a64-pinephone-1.2.dtb \ sun50i-a64-sopine-baseboard.dtb \ sun50i-a64-teres-i.dtb dtb-$(CONFIG_MACH_SUN9I) += \ @@ -1367,6 +1371,52 @@ index 0000000000..06a775c416 + model = "Pine64 PinePhone Braveheart (1.1)"; + compatible = "pine64,pinephone-1.1", "allwinner,sun50i-a64"; +}; +diff --git a/arch/arm/dts/sun50i-a64-pinephone-1.2.dts b/arch/arm/dts/sun50i-a64-pinephone-1.2.dts +new file mode 100644 +index 0000000000..a9f5b670c9 +--- /dev/null ++++ b/arch/arm/dts/sun50i-a64-pinephone-1.2.dts +@@ -0,0 +1,40 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++// Copyright (C) 2020 Ondrej Jirman ++ ++/dts-v1/; ++ ++#include "sun50i-a64-pinephone.dtsi" ++ ++/ { ++ model = "Pine64 PinePhone (1.2)"; ++ compatible = "pine64,pinephone-1.2", "allwinner,sun50i-a64"; ++}; ++ ++&backlight { ++ power-supply = <®_ldo_io0>; ++ /* ++ * PWM backlight circuit on this PinePhone revision was changed since 1.0, ++ * and the lowest PWM duty cycle that doesn't lead to backlight being off ++ * is around 10%. Duty cycle for the lowest brightness level also varries ++ * quite a bit between individual boards, so the lowest value here was ++ * chosen as a safe default. ++ */ ++ brightness-levels = < ++ 5000 5248 5506 5858 6345 ++ 6987 7805 8823 10062 11543 ++ 13287 15317 17654 20319 23336 ++ 26724 30505 34702 39335 44427 ++ 50000 ++ >; ++ num-interpolated-steps = <50>; ++ default-brightness-level = <500>; ++}; ++ ++&lis3mdl { ++ /* ++ * Board revision 1.2 fixed routing of the interrupt to DRDY pin, ++ * enable interrupts. ++ */ ++ interrupt-parent = <&pio>; ++ interrupts = <1 1 IRQ_TYPE_EDGE_RISING>; /* PB1 */ ++}; diff --git a/arch/arm/dts/sun50i-a64-pinephone.dtsi b/arch/arm/dts/sun50i-a64-pinephone.dtsi new file mode 100644 index 0000000000..cefda145c3 @@ -1796,7 +1846,7 @@ new file mode 100644 index 0000000000..d5750aa954 --- /dev/null +++ b/configs/pinephone_defconfig -@@ -0,0 +1,38 @@ +@@ -0,0 +1,39 @@ +CONFIG_ARM=y +CONFIG_ARCH_SUNXI=y +CONFIG_SPL=y @@ -1811,8 +1861,9 @@ index 0000000000..d5750aa954 +# CONFIG_SPL_SPI_SUNXI is not set +# CONFIG_SPL_DOS_PARTITION is not set +# CONFIG_SPL_EFI_PARTITION is not set -+CONFIG_DEFAULT_DEVICE_TREE="sun50i-a64-pinephone-1.1" -+CONFIG_OF_LIST="sun50i-a64-pinephone-1.1 sun50i-a64-pinephone-1.0" ++CONFIG_PINEPHONE_DT_SELECTION=y ++CONFIG_DEFAULT_DEVICE_TREE="sun50i-a64-pinephone-1.2" ++CONFIG_OF_LIST=" sun50i-a64-pinephone-1.2 sun50i-a64-pinephone-1.1 sun50i-a64-pinephone-1.0" +CONFIG_SYS_RELOC_GD_ENV_ADDR=y +CONFIG_DM_REGULATOR=y +CONFIG_DM_REGULATOR_FIXED=y @@ -1837,541 +1888,3 @@ index 0000000000..d5750aa954 +# CONFIG_DM_SPI_FLASH is not set -- 2.26.2 -From 163b30d9cd1c0cf77107e0330567bbda063410da Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Tue, 14 Apr 2020 09:51:44 +0100 -Subject: [PATCH 8/9] Initial PineTab dts from linux 5.7-rc1 - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/Makefile | 1 + - arch/arm/dts/sun50i-a64-pinetab.dts | 460 ++++++++++++++++++++++++++++ - 2 files changed, 461 insertions(+) - create mode 100644 arch/arm/dts/sun50i-a64-pinetab.dts - -diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile -index fb7516ee83..50c1d48e84 100644 ---- a/arch/arm/dts/Makefile -+++ b/arch/arm/dts/Makefile -@@ -575,6 +575,7 @@ dtb-$(CONFIG_MACH_SUN50I) += \ - sun50i-a64-pinebook.dtb \ - sun50i-a64-pinephone-1.0.dtb \ - sun50i-a64-pinephone-1.1.dtb \ -+ sun50i-a64-pinetab.dtb \ - sun50i-a64-sopine-baseboard.dtb \ - sun50i-a64-teres-i.dtb - dtb-$(CONFIG_MACH_SUN9I) += \ -diff --git a/arch/arm/dts/sun50i-a64-pinetab.dts b/arch/arm/dts/sun50i-a64-pinetab.dts -new file mode 100644 -index 0000000000..316e8a4439 ---- /dev/null -+++ b/arch/arm/dts/sun50i-a64-pinetab.dts -@@ -0,0 +1,460 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+/* -+ * Copyright (C) 2019 Icenowy Zheng -+ * -+ */ -+ -+/dts-v1/; -+ -+#include "sun50i-a64.dtsi" -+#include "sun50i-a64-cpu-opp.dtsi" -+ -+#include -+#include -+#include -+ -+/ { -+ model = "PineTab"; -+ compatible = "pine64,pinetab", "allwinner,sun50i-a64"; -+ -+ aliases { -+ serial0 = &uart0; -+ ethernet0 = &rtl8723cs; -+ }; -+ -+ backlight: backlight { -+ compatible = "pwm-backlight"; -+ pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>; -+ brightness-levels = <0 16 18 20 22 24 26 29 32 35 38 42 46 51 56 62 68 75 83 91 100>; -+ default-brightness-level = <15>; -+ enable-gpios = <&pio 3 23 GPIO_ACTIVE_HIGH>; /* PD23 */ -+ power-supply = <&vdd_bl>; -+ }; -+ -+ chosen { -+ stdout-path = "serial0:115200n8"; -+ }; -+ -+ i2c-csi { -+ compatible = "i2c-gpio"; -+ sda-gpios = <&pio 4 13 GPIO_ACTIVE_HIGH>; /* PE13 */ -+ scl-gpios = <&pio 4 12 GPIO_ACTIVE_HIGH>; /* PE12 */ -+ i2c-gpio,delay-us = <5>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ /* Rear camera */ -+ ov5640: camera@3c { -+ compatible = "ovti,ov5640"; -+ reg = <0x3c>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&csi_mclk_pin>; -+ clocks = <&ccu CLK_CSI_MCLK>; -+ clock-names = "xclk"; -+ -+ AVDD-supply = <®_dldo3>; -+ DOVDD-supply = <®_aldo1>; -+ DVDD-supply = <®_eldo3>; -+ reset-gpios = <&pio 4 14 GPIO_ACTIVE_LOW>; /* PE14 */ -+ powerdown-gpios = <&pio 4 15 GPIO_ACTIVE_HIGH>; /* PE15 */ -+ -+ port { -+ ov5640_ep: endpoint { -+ remote-endpoint = <&csi_ep>; -+ bus-width = <8>; -+ hsync-active = <1>; /* Active high */ -+ vsync-active = <0>; /* Active low */ -+ data-active = <1>; /* Active high */ -+ pclk-sample = <1>; /* Rising */ -+ }; -+ }; -+ }; -+ }; -+ -+ speaker_amp: audio-amplifier { -+ compatible = "simple-audio-amplifier"; -+ enable-gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */ -+ sound-name-prefix = "Speaker Amp"; -+ }; -+ -+ vdd_bl: regulator@0 { -+ compatible = "regulator-fixed"; -+ regulator-name = "bl-3v3"; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ gpio = <&pio 7 6 GPIO_ACTIVE_HIGH>; /* PH6 */ -+ enable-active-high; -+ }; -+ -+ wifi_pwrseq: wifi_pwrseq { -+ compatible = "mmc-pwrseq-simple"; -+ reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */ -+ post-power-on-delay-ms = <200>; -+ }; -+}; -+ -+&codec { -+ status = "okay"; -+}; -+ -+&codec_analog { -+ hpvcc-supply = <®_eldo1>; -+ status = "okay"; -+}; -+ -+&cpu0 { -+ cpu-supply = <®_dcdc2>; -+}; -+ -+&cpu1 { -+ cpu-supply = <®_dcdc2>; -+}; -+ -+&cpu2 { -+ cpu-supply = <®_dcdc2>; -+}; -+ -+&cpu3 { -+ cpu-supply = <®_dcdc2>; -+}; -+ -+&csi { -+ status = "okay"; -+ -+ port { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ csi_ep: endpoint { -+ remote-endpoint = <&ov5640_ep>; -+ bus-width = <8>; -+ hsync-active = <1>; /* Active high */ -+ vsync-active = <0>; /* Active low */ -+ data-active = <1>; /* Active high */ -+ pclk-sample = <1>; /* Rising */ -+ }; -+ }; -+}; -+ -+&dai { -+ status = "okay"; -+}; -+ -+&de { -+ status = "okay"; -+}; -+ -+&dphy { -+ status = "okay"; -+}; -+ -+&dsi { -+ vcc-dsi-supply = <®_dldo1>; -+ status = "okay"; -+ -+ panel@0 { -+ compatible = "feixin,k101-im2ba02"; -+ reg = <0>; -+ avdd-supply = <®_dc1sw>; -+ dvdd-supply = <®_dc1sw>; -+ cvdd-supply = <®_ldo_io1>; -+ reset-gpios = <&pio 3 24 GPIO_ACTIVE_HIGH>; /* PD24 */ -+ backlight = <&backlight>; -+ }; -+}; -+ -+&ehci0 { -+ status = "okay"; -+}; -+ -+&ehci1 { -+ status = "okay"; -+}; -+ -+&i2c0 { -+ status = "okay"; -+ -+ touchscreen@5d { -+ compatible = "goodix,gt9271"; -+ reg = <0x5d>; -+ interrupt-parent = <&pio>; -+ interrupts = <7 4 IRQ_TYPE_LEVEL_HIGH>; /* PH4 */ -+ irq-gpios = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -+ reset-gpios = <&pio 7 8 GPIO_ACTIVE_HIGH>; /* PH8 */ -+ AVDD28-supply = <®_ldo_io1>; -+ }; -+}; -+ -+&i2c0_pins { -+ bias-pull-up; -+}; -+ -+&i2c1 { -+ status = "okay"; -+ -+ /* TODO: add Bochs BMA223 accelerometer here */ -+}; -+ -+&lradc { -+ vref-supply = <®_aldo3>; -+ status = "okay"; -+ -+ button-200 { -+ label = "Volume Up"; -+ linux,code = ; -+ channel = <0>; -+ voltage = <200000>; -+ }; -+ -+ button-400 { -+ label = "Volume Down"; -+ linux,code = ; -+ channel = <0>; -+ voltage = <400000>; -+ }; -+}; -+ -+&mixer1 { -+ status = "okay"; -+}; -+ -+&mmc0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc0_pins>; -+ vmmc-supply = <®_dcdc1>; -+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; -+ disable-wp; -+ bus-width = <4>; -+ status = "okay"; -+}; -+ -+&mmc1 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc1_pins>; -+ vmmc-supply = <®_dldo4>; -+ vqmmc-supply = <®_eldo1>; -+ mmc-pwrseq = <&wifi_pwrseq>; -+ bus-width = <4>; -+ non-removable; -+ status = "okay"; -+ -+ rtl8723cs: wifi@1 { -+ reg = <1>; -+ }; -+}; -+ -+&mmc2 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc2_pins>; -+ vmmc-supply = <®_dcdc1>; -+ vqmmc-supply = <®_dcdc1>; -+ bus-width = <8>; -+ non-removable; -+ cap-mmc-hw-reset; -+ status = "okay"; -+}; -+ -+&ohci0 { -+ status = "okay"; -+}; -+ -+&pwm { -+ status = "okay"; -+}; -+ -+&r_rsb { -+ status = "okay"; -+ -+ axp803: pmic@3a3 { -+ compatible = "x-powers,axp803"; -+ reg = <0x3a3>; -+ interrupt-parent = <&r_intc>; -+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ x-powers,drive-vbus-en; -+ }; -+}; -+ -+#include "axp803.dtsi" -+ -+&ac_power_supply { -+ status = "okay"; -+}; -+ -+&battery_power_supply { -+ status = "okay"; -+}; -+ -+®_aldo1 { -+ regulator-min-microvolt = <2800000>; -+ regulator-max-microvolt = <2800000>; -+ regulator-name = "dovdd-csi"; -+}; -+ -+®_aldo2 { -+ regulator-always-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-pl"; -+}; -+ -+®_aldo3 { -+ regulator-always-on; -+ regulator-min-microvolt = <2700000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-pll-avcc"; -+}; -+ -+®_dc1sw { -+ regulator-name = "vcc-lcd"; -+}; -+ -+®_dcdc1 { -+ regulator-always-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-3v3"; -+}; -+ -+®_dcdc2 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1300000>; -+ regulator-name = "vdd-cpux"; -+}; -+ -+/* DCDC3 is polyphased with DCDC2 */ -+ -+®_dcdc5 { -+ regulator-always-on; -+ regulator-min-microvolt = <1200000>; -+ regulator-max-microvolt = <1200000>; -+ regulator-name = "vcc-dram"; -+}; -+ -+®_dcdc6 { -+ regulator-always-on; -+ regulator-min-microvolt = <1100000>; -+ regulator-max-microvolt = <1100000>; -+ regulator-name = "vdd-sys"; -+}; -+ -+®_dldo1 { -+ regulator-always-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-hdmi-dsi-sensor"; -+}; -+ -+®_dldo3 { -+ regulator-min-microvolt = <2800000>; -+ regulator-max-microvolt = <2800000>; -+ regulator-name = "avdd-csi"; -+}; -+ -+®_dldo4 { -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-wifi"; -+}; -+ -+®_drivevbus { -+ regulator-name = "usb0-vbus"; -+ status = "okay"; -+}; -+ -+®_eldo1 { -+ regulator-always-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "cpvdd"; -+}; -+ -+®_eldo2 { -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "vcca-1v8"; -+}; -+ -+®_eldo3 { -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "dvdd-1v8-csi"; -+}; -+ -+®_fldo1 { -+ regulator-min-microvolt = <1200000>; -+ regulator-max-microvolt = <1200000>; -+ regulator-name = "vcc-1v2-hsic"; -+}; -+ -+®_fldo2 { -+ regulator-always-on; -+ regulator-min-microvolt = <1100000>; -+ regulator-max-microvolt = <1100000>; -+ regulator-name = "vdd-cpus"; -+}; -+ -+®_ldo_io0 { -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-usb"; -+ status = "okay"; -+}; -+ -+®_ldo_io1 { -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-enable-ramp-delay = <3500000>; -+ regulator-name = "vcc-touchscreen"; -+ status = "okay"; -+}; -+ -+®_rtc_ldo { -+ regulator-name = "vcc-rtc"; -+}; -+ -+&sound { -+ status = "okay"; -+ simple-audio-card,aux-devs = <&codec_analog>, <&speaker_amp>; -+ simple-audio-card,widgets = "Microphone", "Internal Microphone Left", -+ "Microphone", "Internal Microphone Right", -+ "Headphone", "Headphone Jack", -+ "Speaker", "Internal Speaker"; -+ simple-audio-card,routing = -+ "Left DAC", "AIF1 Slot 0 Left", -+ "Right DAC", "AIF1 Slot 0 Right", -+ "Speaker Amp INL", "LINEOUT", -+ "Speaker Amp INR", "LINEOUT", -+ "Internal Speaker", "Speaker Amp OUTL", -+ "Internal Speaker", "Speaker Amp OUTR", -+ "Headphone Jack", "HP", -+ "AIF1 Slot 0 Left ADC", "Left ADC", -+ "AIF1 Slot 0 Right ADC", "Right ADC", -+ "Internal Microphone Left", "MBIAS", -+ "MIC1", "Internal Microphone Left", -+ "Internal Microphone Right", "HBIAS", -+ "MIC2", "Internal Microphone Right"; -+}; -+ -+&uart0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart0_pb_pins>; -+ status = "okay"; -+}; -+ -+&usb_otg { -+ dr_mode = "otg"; -+ status = "okay"; -+}; -+ -+&usb_power_supply { -+ status = "okay"; -+}; -+ -+&usbphy { -+ usb0_id_det-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */ -+ usb0_vbus_power-supply = <&usb_power_supply>; -+ usb0_vbus-supply = <®_drivevbus>; -+ usb1_vbus-supply = <®_ldo_io0>; -+ status = "okay"; -+}; --- -2.26.0 - -From 6bf15552c2b6becb48ce7732120e0ddb2078cb1a Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Tue, 14 Apr 2020 09:53:07 +0100 -Subject: [PATCH 9/9] initial pinetab support - -Signed-off-by: Peter Robinson ---- - configs/pinetab_defconfig | 26 ++++++++++++++++++++++++++ - 1 file changed, 26 insertions(+) - create mode 100644 configs/pinetab_defconfig - -diff --git a/configs/pinetab_defconfig b/configs/pinetab_defconfig -new file mode 100644 -index 0000000000..5b9620f3e5 ---- /dev/null -+++ b/configs/pinetab_defconfig -@@ -0,0 +1,26 @@ -+CONFIG_ARM=y -+CONFIG_ARCH_SUNXI=y -+CONFIG_SPL=y -+CONFIG_MACH_SUN50I=y -+CONFIG_SUNXI_DRAM_LPDDR3_STOCK=y -+CONFIG_DRAM_CLK=552 -+CONFIG_DRAM_ZQ=3881949 -+CONFIG_MMC_SUNXI_SLOT_EXTRA=2 -+CONFIG_R_I2C_ENABLE=y -+CONFIG_SPL_SPI_SUNXI=y -+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set -+CONFIG_USE_PREBOOT=y -+# CONFIG_SPL_DOS_PARTITION is not set -+# CONFIG_SPL_EFI_PARTITION is not set -+CONFIG_DEFAULT_DEVICE_TREE="sun50i-a64-pinetab" -+CONFIG_OF_LIST="sun50i-a64-pinetab" -+CONFIG_SYS_RELOC_GD_ENV_ADDR=y -+CONFIG_DM_REGULATOR=y -+CONFIG_DM_REGULATOR_FIXED=y -+CONFIG_DM_PWM=y -+CONFIG_PWM_SUNXI=y -+CONFIG_LED=y -+CONFIG_LED_GPIO=y -+CONFIG_USB_EHCI_HCD=y -+CONFIG_USB_OHCI_HCD=y -+CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y --- -2.26.0 diff --git a/AllWinner-PineTab.patch b/AllWinner-PineTab.patch new file mode 100644 index 0000000..ce569e7 --- /dev/null +++ b/AllWinner-PineTab.patch @@ -0,0 +1,538 @@ +From 9b10863bc8b14ca5463a95dd2c77555cfc68f326 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Wed, 9 Sep 2020 10:59:31 +0100 +Subject: [PATCH] Initial PineTab dts from linux 5.7-rc1 + +Signed-off-by: Peter Robinson +--- + arch/arm/dts/Makefile | 1 + + arch/arm/dts/sun50i-a64-pinetab.dts | 460 ++++++++++++++++++++++++++++ + 2 files changed, 461 insertions(+) + create mode 100644 arch/arm/dts/sun50i-a64-pinetab.dts + +diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile +index 193f5c6138..57ef94450a 100644 +--- a/arch/arm/dts/Makefile ++++ b/arch/arm/dts/Makefile +@@ -611,6 +611,7 @@ dtb-$(CONFIG_MACH_SUN50I) += \ + sun50i-a64-pinephone-1.0.dtb \ + sun50i-a64-pinephone-1.1.dtb \ + sun50i-a64-pinephone-1.2.dtb \ ++ sun50i-a64-pinetab.dtb \ + sun50i-a64-sopine-baseboard.dtb \ + sun50i-a64-teres-i.dtb + dtb-$(CONFIG_MACH_SUN9I) += \ +diff --git a/arch/arm/dts/sun50i-a64-pinetab.dts b/arch/arm/dts/sun50i-a64-pinetab.dts +new file mode 100644 +index 0000000000..316e8a4439 +--- /dev/null ++++ b/arch/arm/dts/sun50i-a64-pinetab.dts +@@ -0,0 +1,460 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++/* ++ * Copyright (C) 2019 Icenowy Zheng ++ * ++ */ ++ ++/dts-v1/; ++ ++#include "sun50i-a64.dtsi" ++#include "sun50i-a64-cpu-opp.dtsi" ++ ++#include ++#include ++#include ++ ++/ { ++ model = "PineTab"; ++ compatible = "pine64,pinetab", "allwinner,sun50i-a64"; ++ ++ aliases { ++ serial0 = &uart0; ++ ethernet0 = &rtl8723cs; ++ }; ++ ++ backlight: backlight { ++ compatible = "pwm-backlight"; ++ pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>; ++ brightness-levels = <0 16 18 20 22 24 26 29 32 35 38 42 46 51 56 62 68 75 83 91 100>; ++ default-brightness-level = <15>; ++ enable-gpios = <&pio 3 23 GPIO_ACTIVE_HIGH>; /* PD23 */ ++ power-supply = <&vdd_bl>; ++ }; ++ ++ chosen { ++ stdout-path = "serial0:115200n8"; ++ }; ++ ++ i2c-csi { ++ compatible = "i2c-gpio"; ++ sda-gpios = <&pio 4 13 GPIO_ACTIVE_HIGH>; /* PE13 */ ++ scl-gpios = <&pio 4 12 GPIO_ACTIVE_HIGH>; /* PE12 */ ++ i2c-gpio,delay-us = <5>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ /* Rear camera */ ++ ov5640: camera@3c { ++ compatible = "ovti,ov5640"; ++ reg = <0x3c>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&csi_mclk_pin>; ++ clocks = <&ccu CLK_CSI_MCLK>; ++ clock-names = "xclk"; ++ ++ AVDD-supply = <®_dldo3>; ++ DOVDD-supply = <®_aldo1>; ++ DVDD-supply = <®_eldo3>; ++ reset-gpios = <&pio 4 14 GPIO_ACTIVE_LOW>; /* PE14 */ ++ powerdown-gpios = <&pio 4 15 GPIO_ACTIVE_HIGH>; /* PE15 */ ++ ++ port { ++ ov5640_ep: endpoint { ++ remote-endpoint = <&csi_ep>; ++ bus-width = <8>; ++ hsync-active = <1>; /* Active high */ ++ vsync-active = <0>; /* Active low */ ++ data-active = <1>; /* Active high */ ++ pclk-sample = <1>; /* Rising */ ++ }; ++ }; ++ }; ++ }; ++ ++ speaker_amp: audio-amplifier { ++ compatible = "simple-audio-amplifier"; ++ enable-gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */ ++ sound-name-prefix = "Speaker Amp"; ++ }; ++ ++ vdd_bl: regulator@0 { ++ compatible = "regulator-fixed"; ++ regulator-name = "bl-3v3"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&pio 7 6 GPIO_ACTIVE_HIGH>; /* PH6 */ ++ enable-active-high; ++ }; ++ ++ wifi_pwrseq: wifi_pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */ ++ post-power-on-delay-ms = <200>; ++ }; ++}; ++ ++&codec { ++ status = "okay"; ++}; ++ ++&codec_analog { ++ hpvcc-supply = <®_eldo1>; ++ status = "okay"; ++}; ++ ++&cpu0 { ++ cpu-supply = <®_dcdc2>; ++}; ++ ++&cpu1 { ++ cpu-supply = <®_dcdc2>; ++}; ++ ++&cpu2 { ++ cpu-supply = <®_dcdc2>; ++}; ++ ++&cpu3 { ++ cpu-supply = <®_dcdc2>; ++}; ++ ++&csi { ++ status = "okay"; ++ ++ port { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ csi_ep: endpoint { ++ remote-endpoint = <&ov5640_ep>; ++ bus-width = <8>; ++ hsync-active = <1>; /* Active high */ ++ vsync-active = <0>; /* Active low */ ++ data-active = <1>; /* Active high */ ++ pclk-sample = <1>; /* Rising */ ++ }; ++ }; ++}; ++ ++&dai { ++ status = "okay"; ++}; ++ ++&de { ++ status = "okay"; ++}; ++ ++&dphy { ++ status = "okay"; ++}; ++ ++&dsi { ++ vcc-dsi-supply = <®_dldo1>; ++ status = "okay"; ++ ++ panel@0 { ++ compatible = "feixin,k101-im2ba02"; ++ reg = <0>; ++ avdd-supply = <®_dc1sw>; ++ dvdd-supply = <®_dc1sw>; ++ cvdd-supply = <®_ldo_io1>; ++ reset-gpios = <&pio 3 24 GPIO_ACTIVE_HIGH>; /* PD24 */ ++ backlight = <&backlight>; ++ }; ++}; ++ ++&ehci0 { ++ status = "okay"; ++}; ++ ++&ehci1 { ++ status = "okay"; ++}; ++ ++&i2c0 { ++ status = "okay"; ++ ++ touchscreen@5d { ++ compatible = "goodix,gt9271"; ++ reg = <0x5d>; ++ interrupt-parent = <&pio>; ++ interrupts = <7 4 IRQ_TYPE_LEVEL_HIGH>; /* PH4 */ ++ irq-gpios = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ ++ reset-gpios = <&pio 7 8 GPIO_ACTIVE_HIGH>; /* PH8 */ ++ AVDD28-supply = <®_ldo_io1>; ++ }; ++}; ++ ++&i2c0_pins { ++ bias-pull-up; ++}; ++ ++&i2c1 { ++ status = "okay"; ++ ++ /* TODO: add Bochs BMA223 accelerometer here */ ++}; ++ ++&lradc { ++ vref-supply = <®_aldo3>; ++ status = "okay"; ++ ++ button-200 { ++ label = "Volume Up"; ++ linux,code = ; ++ channel = <0>; ++ voltage = <200000>; ++ }; ++ ++ button-400 { ++ label = "Volume Down"; ++ linux,code = ; ++ channel = <0>; ++ voltage = <400000>; ++ }; ++}; ++ ++&mixer1 { ++ status = "okay"; ++}; ++ ++&mmc0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&mmc0_pins>; ++ vmmc-supply = <®_dcdc1>; ++ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; ++ disable-wp; ++ bus-width = <4>; ++ status = "okay"; ++}; ++ ++&mmc1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&mmc1_pins>; ++ vmmc-supply = <®_dldo4>; ++ vqmmc-supply = <®_eldo1>; ++ mmc-pwrseq = <&wifi_pwrseq>; ++ bus-width = <4>; ++ non-removable; ++ status = "okay"; ++ ++ rtl8723cs: wifi@1 { ++ reg = <1>; ++ }; ++}; ++ ++&mmc2 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&mmc2_pins>; ++ vmmc-supply = <®_dcdc1>; ++ vqmmc-supply = <®_dcdc1>; ++ bus-width = <8>; ++ non-removable; ++ cap-mmc-hw-reset; ++ status = "okay"; ++}; ++ ++&ohci0 { ++ status = "okay"; ++}; ++ ++&pwm { ++ status = "okay"; ++}; ++ ++&r_rsb { ++ status = "okay"; ++ ++ axp803: pmic@3a3 { ++ compatible = "x-powers,axp803"; ++ reg = <0x3a3>; ++ interrupt-parent = <&r_intc>; ++ interrupts = <0 IRQ_TYPE_LEVEL_LOW>; ++ x-powers,drive-vbus-en; ++ }; ++}; ++ ++#include "axp803.dtsi" ++ ++&ac_power_supply { ++ status = "okay"; ++}; ++ ++&battery_power_supply { ++ status = "okay"; ++}; ++ ++®_aldo1 { ++ regulator-min-microvolt = <2800000>; ++ regulator-max-microvolt = <2800000>; ++ regulator-name = "dovdd-csi"; ++}; ++ ++®_aldo2 { ++ regulator-always-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-pl"; ++}; ++ ++®_aldo3 { ++ regulator-always-on; ++ regulator-min-microvolt = <2700000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-pll-avcc"; ++}; ++ ++®_dc1sw { ++ regulator-name = "vcc-lcd"; ++}; ++ ++®_dcdc1 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-3v3"; ++}; ++ ++®_dcdc2 { ++ regulator-always-on; ++ regulator-min-microvolt = <1000000>; ++ regulator-max-microvolt = <1300000>; ++ regulator-name = "vdd-cpux"; ++}; ++ ++/* DCDC3 is polyphased with DCDC2 */ ++ ++®_dcdc5 { ++ regulator-always-on; ++ regulator-min-microvolt = <1200000>; ++ regulator-max-microvolt = <1200000>; ++ regulator-name = "vcc-dram"; ++}; ++ ++®_dcdc6 { ++ regulator-always-on; ++ regulator-min-microvolt = <1100000>; ++ regulator-max-microvolt = <1100000>; ++ regulator-name = "vdd-sys"; ++}; ++ ++®_dldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-hdmi-dsi-sensor"; ++}; ++ ++®_dldo3 { ++ regulator-min-microvolt = <2800000>; ++ regulator-max-microvolt = <2800000>; ++ regulator-name = "avdd-csi"; ++}; ++ ++®_dldo4 { ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-wifi"; ++}; ++ ++®_drivevbus { ++ regulator-name = "usb0-vbus"; ++ status = "okay"; ++}; ++ ++®_eldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "cpvdd"; ++}; ++ ++®_eldo2 { ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcca-1v8"; ++}; ++ ++®_eldo3 { ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "dvdd-1v8-csi"; ++}; ++ ++®_fldo1 { ++ regulator-min-microvolt = <1200000>; ++ regulator-max-microvolt = <1200000>; ++ regulator-name = "vcc-1v2-hsic"; ++}; ++ ++®_fldo2 { ++ regulator-always-on; ++ regulator-min-microvolt = <1100000>; ++ regulator-max-microvolt = <1100000>; ++ regulator-name = "vdd-cpus"; ++}; ++ ++®_ldo_io0 { ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-usb"; ++ status = "okay"; ++}; ++ ++®_ldo_io1 { ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-enable-ramp-delay = <3500000>; ++ regulator-name = "vcc-touchscreen"; ++ status = "okay"; ++}; ++ ++®_rtc_ldo { ++ regulator-name = "vcc-rtc"; ++}; ++ ++&sound { ++ status = "okay"; ++ simple-audio-card,aux-devs = <&codec_analog>, <&speaker_amp>; ++ simple-audio-card,widgets = "Microphone", "Internal Microphone Left", ++ "Microphone", "Internal Microphone Right", ++ "Headphone", "Headphone Jack", ++ "Speaker", "Internal Speaker"; ++ simple-audio-card,routing = ++ "Left DAC", "AIF1 Slot 0 Left", ++ "Right DAC", "AIF1 Slot 0 Right", ++ "Speaker Amp INL", "LINEOUT", ++ "Speaker Amp INR", "LINEOUT", ++ "Internal Speaker", "Speaker Amp OUTL", ++ "Internal Speaker", "Speaker Amp OUTR", ++ "Headphone Jack", "HP", ++ "AIF1 Slot 0 Left ADC", "Left ADC", ++ "AIF1 Slot 0 Right ADC", "Right ADC", ++ "Internal Microphone Left", "MBIAS", ++ "MIC1", "Internal Microphone Left", ++ "Internal Microphone Right", "HBIAS", ++ "MIC2", "Internal Microphone Right"; ++}; ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_pb_pins>; ++ status = "okay"; ++}; ++ ++&usb_otg { ++ dr_mode = "otg"; ++ status = "okay"; ++}; ++ ++&usb_power_supply { ++ status = "okay"; ++}; ++ ++&usbphy { ++ usb0_id_det-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */ ++ usb0_vbus_power-supply = <&usb_power_supply>; ++ usb0_vbus-supply = <®_drivevbus>; ++ usb1_vbus-supply = <®_ldo_io0>; ++ status = "okay"; ++}; +-- +2.26.2 + +From 6bf15552c2b6becb48ce7732120e0ddb2078cb1a Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Tue, 14 Apr 2020 09:53:07 +0100 +Subject: [PATCH 9/9] initial pinetab support + +Signed-off-by: Peter Robinson +--- + configs/pinetab_defconfig | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + create mode 100644 configs/pinetab_defconfig + +diff --git a/configs/pinetab_defconfig b/configs/pinetab_defconfig +new file mode 100644 +index 0000000000..5b9620f3e5 +--- /dev/null ++++ b/configs/pinetab_defconfig +@@ -0,0 +1,26 @@ ++CONFIG_ARM=y ++CONFIG_ARCH_SUNXI=y ++CONFIG_SPL=y ++CONFIG_MACH_SUN50I=y ++CONFIG_SUNXI_DRAM_LPDDR3_STOCK=y ++CONFIG_DRAM_CLK=552 ++CONFIG_DRAM_ZQ=3881949 ++CONFIG_MMC_SUNXI_SLOT_EXTRA=2 ++CONFIG_R_I2C_ENABLE=y ++CONFIG_SPL_SPI_SUNXI=y ++# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set ++CONFIG_USE_PREBOOT=y ++# CONFIG_SPL_DOS_PARTITION is not set ++# CONFIG_SPL_EFI_PARTITION is not set ++CONFIG_DEFAULT_DEVICE_TREE="sun50i-a64-pinetab" ++CONFIG_OF_LIST="sun50i-a64-pinetab" ++CONFIG_SYS_RELOC_GD_ENV_ADDR=y ++CONFIG_DM_REGULATOR=y ++CONFIG_DM_REGULATOR_FIXED=y ++CONFIG_DM_PWM=y ++CONFIG_PWM_SUNXI=y ++CONFIG_LED=y ++CONFIG_LED_GPIO=y ++CONFIG_USB_EHCI_HCD=y ++CONFIG_USB_OHCI_HCD=y ++CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y +-- +2.26.0 diff --git a/PinePhone-automatic-device-tree-selection.patch b/PinePhone-automatic-device-tree-selection.patch new file mode 100644 index 0000000..ac2bac4 --- /dev/null +++ b/PinePhone-automatic-device-tree-selection.patch @@ -0,0 +1,1114 @@ +From patchwork Thu Sep 3 05:07:09 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Samuel Holland +X-Patchwork-Id: 1356315 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=sholland.org +Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; + unprotected) header.d=sholland.org header.i=@sholland.org header.a=rsa-sha256 + header.s=fm3 header.b=buHTSW+5; + dkim=pass (2048-bit key; + unprotected) header.d=messagingengine.com header.i=@messagingengine.com + header.a=rsa-sha256 header.s=fm3 header.b=soUNU+zi; + dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4Bhpk04dbHz9sTR + for ; Thu, 3 Sep 2020 15:08:40 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id B8046822FB; + Thu, 3 Sep 2020 07:07:34 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=sholland.org +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=sholland.org header.i=@sholland.org + header.b="buHTSW+5"; dkim=pass (2048-bit key; + unprotected) header.d=messagingengine.com header.i=@messagingengine.com + header.b="soUNU+zi"; dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 5B11B822E1; Thu, 3 Sep 2020 07:07:27 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, + DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, + SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no + version=3.4.2 +Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com + [66.111.4.26]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id AF853822D8 + for ; Thu, 3 Sep 2020 07:07:19 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=sholland.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=samuel@sholland.org +Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) + by mailout.nyi.internal (Postfix) with ESMTP id 6D2045C0190; + Thu, 3 Sep 2020 01:07:18 -0400 (EDT) +Received: from mailfrontend2 ([10.202.2.163]) + by compute3.internal (MEProxy); Thu, 03 Sep 2020 01:07:18 -0400 +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= + from:to:cc:subject:date:message-id:in-reply-to:references + :mime-version:content-transfer-encoding; s=fm3; bh=U4jA0nvRK7Czr + dgeNIS5gDY5tElSJ2feLLbT7NYhO6s=; b=buHTSW+5/tt6GjGA2vOU6Ivto0Cdk + fngE70LZVaDreoNlTLgMANhhiJzWyBYb3mjmMUR2EHBJeYNdzuOYpRL/hBztVsqa + B+hq24fQr6OsXlroOC+9DIkrBtgkfEXrmaHqyO9jP0/BBHQUHBAjJr6RkItNOJqs + tL5255/XbQw05IUwTN+fwQs+x1qtv9dPXiYVdELfBIhuTKSyQJaKqBLEO3mPFxRz + PIISy3OQi1lzdrJdmurLcp6DfbzqB9nJfuD0CtslCI1Bu09KsMgr7sn/mxITx0Vy + qyWz9p5t9Vr2A3xct652aED771i3Ra6UK+UYoSayMMMyCG4g+rb0DzJhQ== +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= + messagingengine.com; h=cc:content-transfer-encoding:date:from + :in-reply-to:message-id:mime-version:references:subject:to + :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= + fm3; bh=U4jA0nvRK7CzrdgeNIS5gDY5tElSJ2feLLbT7NYhO6s=; b=soUNU+zi + uXuVOTwtphqr7B11oSRvrTR5EMY1G0DCfVWT5s+K/e9h3V/TodXW0tbddWCX1Qhf + 2EbJfg61h8/UFqtAFCwuDtcIaxiykHsoFtLgyvzZrBQIoWF9LF/YDvRSmyDr1lyV + hY8s0GIVyKaAXjkwwoUEaknhWhGHrbVOeWZTWUnB9W1++iN+4uXoWlMohB72yOlk + 3TZ7XBSJLe2Nd4NxPuirhOfuGpWFLHiTQ/cSUcvZW+8DPmy+hZL/KNYEgY4NjN0I + uAZwnZNHCO2j+82cPGETrg4u4iziby3clWWhVNK04wJCiBfVWlkQgL5VP4ORJUzp + E1csDeRCXdGAgw== +X-ME-Sender: + +X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudegtddgleduucetufdoteggodetrfdotf + fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen + uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne + cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefurghmuhgv + lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf + frrghtthgvrhhnpeduhfejfedvhffgfeehtefghfeiiefgfeehgfdvvdevfeegjeehjedv + gfejheeuieenucfkphepjedtrddufeehrddugeekrdduhedunecuvehluhhsthgvrhfuih + iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgrmhhuvghlsehshhholhhlrghn + ugdrohhrgh +X-ME-Proxy: + + + +Received: from titanium.stl.sholland.net + (70-135-148-151.lightspeed.stlsmo.sbcglobal.net [70.135.148.151]) + by mail.messagingengine.com (Postfix) with ESMTPA id B6856306005E; + Thu, 3 Sep 2020 01:07:17 -0400 (EDT) +From: Samuel Holland +To: Jagan Teki , Maxime Ripard +Cc: Andre Przywara , + Peter Robinson , u-boot@lists.denx.de, + Samuel Holland +Subject: [PATCH 1/8] sunxi: board: Use a more descriptive variable name +Date: Thu, 3 Sep 2020 00:07:09 -0500 +Message-Id: <20200903050716.48488-2-samuel@sholland.org> +X-Mailer: git-send-email 2.26.2 +In-Reply-To: <20200903050716.48488-1-samuel@sholland.org> +References: <20200903050716.48488-1-samuel@sholland.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +The variable "cmp_str" always leaves me wondering if it is the DT name +of the current board (yes) or DT name in the FIT config entry (no). + +In preparation for expanding the functionality here, rename it to +something that obviously means "this is the DT name we are looking for". + +Signed-off-by: Samuel Holland +--- + board/sunxi/board.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/board/sunxi/board.c b/board/sunxi/board.c +index 71e2b758a3e..674e6816d2d 100644 +--- a/board/sunxi/board.c ++++ b/board/sunxi/board.c +@@ -892,14 +892,14 @@ int ft_board_setup(void *blob, struct bd_info *bd) + int board_fit_config_name_match(const char *name) + { + struct boot_file_head *spl = get_spl_header(SPL_DT_HEADER_VERSION); +- const char *cmp_str = (const char *)spl; ++ const char *best_dt_name = (const char *)spl; + + /* Check if there is a DT name stored in the SPL header and use that. */ + if (spl != INVALID_SPL_HEADER && spl->dt_name_offset) { +- cmp_str += spl->dt_name_offset; ++ best_dt_name += spl->dt_name_offset; + } else { + #ifdef CONFIG_DEFAULT_DEVICE_TREE +- cmp_str = CONFIG_DEFAULT_DEVICE_TREE; ++ best_dt_name = CONFIG_DEFAULT_DEVICE_TREE; + #else + return 0; + #endif +@@ -907,15 +907,15 @@ int board_fit_config_name_match(const char *name) + + #ifdef CONFIG_PINE64_DT_SELECTION + /* Differentiate the two Pine64 board DTs by their DRAM size. */ +- if (strstr(name, "-pine64") && strstr(cmp_str, "-pine64")) { ++ if (strstr(name, "-pine64") && strstr(best_dt_name, "-pine64")) { + if ((gd->ram_size > 512 * 1024 * 1024)) + return !strstr(name, "plus"); + else + return !!strstr(name, "plus"); + } else { +- return strcmp(name, cmp_str); ++ return strcmp(name, best_dt_name); + } + #endif +- return strcmp(name, cmp_str); ++ return strcmp(name, best_dt_name); + } + #endif + +From patchwork Thu Sep 3 05:07:10 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Samuel Holland +X-Patchwork-Id: 1356309 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=sholland.org +Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; + unprotected) header.d=sholland.org header.i=@sholland.org header.a=rsa-sha256 + header.s=fm3 header.b=Sj8OLfL4; + dkim=pass (2048-bit key; + unprotected) header.d=messagingengine.com header.i=@messagingengine.com + header.a=rsa-sha256 header.s=fm3 header.b=gP0Xb3h8; + dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4Bhphf6BH6z9sTR + for ; Thu, 3 Sep 2020 15:07:30 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id A8413822E3; + Thu, 3 Sep 2020 07:07:25 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=sholland.org +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=sholland.org header.i=@sholland.org + header.b="Sj8OLfL4"; dkim=pass (2048-bit key; + unprotected) header.d=messagingengine.com header.i=@messagingengine.com + header.b="gP0Xb3h8"; dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 7B2D9822E8; Thu, 3 Sep 2020 07:07:23 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, + DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, + SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no + version=3.4.2 +Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com + [66.111.4.26]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 88299822CA + for ; Thu, 3 Sep 2020 07:07:19 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=sholland.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=samuel@sholland.org +Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) + by mailout.nyi.internal (Postfix) with ESMTP id 76A985C0185; + Thu, 3 Sep 2020 01:07:18 -0400 (EDT) +Received: from mailfrontend2 ([10.202.2.163]) + by compute3.internal (MEProxy); Thu, 03 Sep 2020 01:07:18 -0400 +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= + from:to:cc:subject:date:message-id:in-reply-to:references + :mime-version:content-transfer-encoding; s=fm3; bh=PQN64SHY0DFbJ + Xj9YPEcwJKL0bbybvo9/xMWQLiHCkU=; b=Sj8OLfL4WM4t/eW8xPA7XiaXE7bRC + 9oDd5605MwRja78aJ+GwV1TuxapJm7IlVNnlBETATblOjQenK4B7tAuxyPitzu+K + yJP+d0AYfgltsx888/hHtABBhsY20/7onFV1xxF/nB6fWwM6UTYfzsg2QQ2QYHmb + R5QGX38IUdDGZPR/U3bd2roatbUMK+xMqPZku3+3xxbSlLdWpeXp3YBmNCZFrkef + DjNUZE0kZWZIXIEk25bliOi1Yol1RZQZBq4As373rtZSvdXJbPKxU6C5c2TH6OgZ + ZcjNRU6zogMnOHhe/nklaCLzZQPx8Wz5Nse8PYJuRlDGk5tu5tOcONmog== +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= + messagingengine.com; h=cc:content-transfer-encoding:date:from + :in-reply-to:message-id:mime-version:references:subject:to + :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= + fm3; bh=PQN64SHY0DFbJXj9YPEcwJKL0bbybvo9/xMWQLiHCkU=; b=gP0Xb3h8 + lzo0knlriZlcpqJf2dY4yeWblYiYIsakrHO3GUDeZ7G9RYeSSWZ89RjUPZIHn4tw + mTk7vKxHbWz88EaQ+iPXaHsygzVk6RGrnU+7eGtJzZmUmKAm19hTi1uqkP/nXGyY + yyL1IKzw3pieBI1wHq1JPBo+AqTyAsrhrjgdalM+f9/0WwcdAWLTWYUXdR65xW1W + oFUPZ3bjJWrhFb1KFwEiJKdkK9tpivNCGKLe9fvnTLEelYQVoKMAE5G0xVdJhIqY + mQAq41sXJ3LRSeQWUb4Nd00bQsDTsroKLXDYc1P2K57wRGNIalbkkWZmbadPn2VW + 5jUVvdCWPvDEZQ== +X-ME-Sender: + +X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudegtddgleduucetufdoteggodetrfdotf + fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen + uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne + cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefurghmuhgv + lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf + frrghtthgvrhhnpeduhfejfedvhffgfeehtefghfeiiefgfeehgfdvvdevfeegjeehjedv + gfejheeuieenucfkphepjedtrddufeehrddugeekrdduhedunecuvehluhhsthgvrhfuih + iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgrmhhuvghlsehshhholhhlrghn + ugdrohhrgh +X-ME-Proxy: + + + +Received: from titanium.stl.sholland.net + (70-135-148-151.lightspeed.stlsmo.sbcglobal.net [70.135.148.151]) + by mail.messagingengine.com (Postfix) with ESMTPA id 0C6DA306005B; + Thu, 3 Sep 2020 01:07:18 -0400 (EDT) +From: Samuel Holland +To: Jagan Teki , Maxime Ripard +Cc: Andre Przywara , + Peter Robinson , u-boot@lists.denx.de, + Samuel Holland +Subject: [PATCH 2/8] sunxi: board: Add a helper to get the SPL DT name +Date: Thu, 3 Sep 2020 00:07:10 -0500 +Message-Id: <20200903050716.48488-3-samuel@sholland.org> +X-Mailer: git-send-email 2.26.2 +In-Reply-To: <20200903050716.48488-1-samuel@sholland.org> +References: <20200903050716.48488-1-samuel@sholland.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +This moves the validity checking and typecasts all to one place away +from the string comparison logic, and it detangles the compile-time +and runtime control flow. + +The new helper will also be used by U-Boot proper in a future commit. + +Signed-off-by: Samuel Holland +--- + board/sunxi/board.c | 26 +++++++++++++++++--------- + 1 file changed, 17 insertions(+), 9 deletions(-) + +diff --git a/board/sunxi/board.c b/board/sunxi/board.c +index 674e6816d2d..5c9b811f27a 100644 +--- a/board/sunxi/board.c ++++ b/board/sunxi/board.c +@@ -319,6 +319,17 @@ static struct boot_file_head * get_spl_header(uint8_t req_version) + return spl; + } + ++static const char *get_spl_dt_name(void) ++{ ++ struct boot_file_head *spl = get_spl_header(SPL_DT_HEADER_VERSION); ++ ++ /* Check if there is a DT name stored in the SPL header. */ ++ if (spl != INVALID_SPL_HEADER && spl->dt_name_offset) ++ return (char *)spl + spl->dt_name_offset; ++ ++ return NULL; ++} ++ + int dram_init(void) + { + struct boot_file_head *spl = get_spl_header(SPL_DRAM_HEADER_VERSION); +@@ -891,20 +902,17 @@ int ft_board_setup(void *blob, struct bd_info *bd) + #ifdef CONFIG_SPL_LOAD_FIT + int board_fit_config_name_match(const char *name) + { +- struct boot_file_head *spl = get_spl_header(SPL_DT_HEADER_VERSION); +- const char *best_dt_name = (const char *)spl; ++ const char *best_dt_name = get_spl_dt_name(); + +- /* Check if there is a DT name stored in the SPL header and use that. */ +- if (spl != INVALID_SPL_HEADER && spl->dt_name_offset) { +- best_dt_name += spl->dt_name_offset; +- } else { + #ifdef CONFIG_DEFAULT_DEVICE_TREE ++ if (best_dt_name == NULL) + best_dt_name = CONFIG_DEFAULT_DEVICE_TREE; +-#else +- return 0; + #endif +- }; + ++ if (best_dt_name == NULL) { ++ /* No DT name was provided, so accept the first config. */ ++ return 0; ++ } + #ifdef CONFIG_PINE64_DT_SELECTION + /* Differentiate the two Pine64 board DTs by their DRAM size. */ + if (strstr(name, "-pine64") && strstr(best_dt_name, "-pine64")) { + +From patchwork Thu Sep 3 05:07:11 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Samuel Holland +X-Patchwork-Id: 1356311 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=sholland.org +Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; + unprotected) header.d=sholland.org header.i=@sholland.org header.a=rsa-sha256 + header.s=fm3 header.b=YljKqDaX; + dkim=pass (2048-bit key; + unprotected) header.d=messagingengine.com header.i=@messagingengine.com + header.a=rsa-sha256 header.s=fm3 header.b=KFsvPFSQ; + dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4Bhpj50Q5mz9sTR + for ; Thu, 3 Sep 2020 15:07:52 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 921A1822EA; + Thu, 3 Sep 2020 07:07:28 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=sholland.org +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=sholland.org header.i=@sholland.org + header.b="YljKqDaX"; dkim=pass (2048-bit key; + unprotected) header.d=messagingengine.com header.i=@messagingengine.com + header.b="KFsvPFSQ"; dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 29DBC822EA; Thu, 3 Sep 2020 07:07:26 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, + DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, + SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no + version=3.4.2 +Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com + [66.111.4.26]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id AA176822D5 + for ; Thu, 3 Sep 2020 07:07:19 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=sholland.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=samuel@sholland.org +Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) + by mailout.nyi.internal (Postfix) with ESMTP id C1C965C01A4; + Thu, 3 Sep 2020 01:07:18 -0400 (EDT) +Received: from mailfrontend2 ([10.202.2.163]) + by compute3.internal (MEProxy); Thu, 03 Sep 2020 01:07:18 -0400 +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= + from:to:cc:subject:date:message-id:in-reply-to:references + :mime-version:content-transfer-encoding; s=fm3; bh=Qd9EKlOeDxNxU + GjePDGIEyZE9Rx9hOCoFpYSpjLblzg=; b=YljKqDaXzM+KcF2P5M1Qm4ZqIN47C + vZyob9mNeC9Ih6xzht0zmIiswyR4o06F6F75APKEHOLdF98lM16tFq5lm2c0K2C/ + FLv20iU82lyakGbT5y0fX9BUw2B1l6InAM81fN1aIyj6vKXDINvzr0Njek5zd82e + EBZJnaT7r4LgQ3tDupNPvYm+nq18jIibpUUERREvoNh6ktNeYOJbWPpuyRpW06+o + zKpzwXrrMFjcTuczM3DCSk0LchI0IGfF9STJXcWYrkwILpOIIZIn7Pcxbxg3LuPP + EF8OLTHGhbp2yvtbSVxuSyV5XrLKaiMTJNs8Z8T/AVWTfuAfwA146icVg== +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= + messagingengine.com; h=cc:content-transfer-encoding:date:from + :in-reply-to:message-id:mime-version:references:subject:to + :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= + fm3; bh=Qd9EKlOeDxNxUGjePDGIEyZE9Rx9hOCoFpYSpjLblzg=; b=KFsvPFSQ + oz3tuB0IgFDRGBPs9pm02ZFiQW6XW9io0ha6PFYr7sl2irhSUuA89cAncxDeQ99n + /SKVx+jefi15iu+rEUTEdZwFzb8FbfQ6faNIyvJ1RL4m+eH9ifIF0yuc62Qe9Pt2 + Y0+6e1tDB3SyFRABn0Vib5DrnmbMSYeSJZug7TRAxINnW/qdG6pq1ycNPbhvYy7V + L0yBLcV7gP/gwEF5OtEWV2X22kqKFir6fKCsAVDK2KUTmM3ezGifn8h6u7n8ksWC + +4UbNfjcBKfNLHFEEIb7CdNdtixI4oo/XIsA8eDHULQ0v7cF7bZ1KAR+jBSW4Bf9 + CRQNy2hCu5K+Rg== +X-ME-Sender: + +X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudegtddgleduucetufdoteggodetrfdotf + fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen + uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne + cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefurghmuhgv + lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf + frrghtthgvrhhnpeduhfejfedvhffgfeehtefghfeiiefgfeehgfdvvdevfeegjeehjedv + gfejheeuieenucfkphepjedtrddufeehrddugeekrdduhedunecuvehluhhsthgvrhfuih + iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgrmhhuvghlsehshhholhhlrghn + ugdrohhrgh +X-ME-Proxy: + + + +Received: from titanium.stl.sholland.net + (70-135-148-151.lightspeed.stlsmo.sbcglobal.net [70.135.148.151]) + by mail.messagingengine.com (Postfix) with ESMTPA id 56CF53060062; + Thu, 3 Sep 2020 01:07:18 -0400 (EDT) +From: Samuel Holland +To: Jagan Teki , Maxime Ripard +Cc: Andre Przywara , + Peter Robinson , u-boot@lists.denx.de, + Samuel Holland +Subject: [PATCH 3/8] sunxi: board: Simplify Pine A64 DT selection logic +Date: Thu, 3 Sep 2020 00:07:11 -0500 +Message-Id: <20200903050716.48488-4-samuel@sholland.org> +X-Mailer: git-send-email 2.26.2 +In-Reply-To: <20200903050716.48488-1-samuel@sholland.org> +References: <20200903050716.48488-1-samuel@sholland.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +Instead of using an entirely separate matching algorithm, simply update +the name of the DT we want to match. Enabling this logic does not depend +on the FIT config name, only on the initial guess of the board name. + +Importantly, the initial guess must be "sun50i-a64-pine64-plus", because +otherwise the logic would trigger when "sun50i-a64-pine64-lts" was +written to the SPL header. + +Signed-off-by: Samuel Holland +--- + board/sunxi/board.c | 12 ++++-------- + 1 file changed, 4 insertions(+), 8 deletions(-) + +diff --git a/board/sunxi/board.c b/board/sunxi/board.c +index 5c9b811f27a..fb0d5bf4743 100644 +--- a/board/sunxi/board.c ++++ b/board/sunxi/board.c +@@ -914,14 +914,10 @@ int board_fit_config_name_match(const char *name) + return 0; + } + #ifdef CONFIG_PINE64_DT_SELECTION +-/* Differentiate the two Pine64 board DTs by their DRAM size. */ +- if (strstr(name, "-pine64") && strstr(best_dt_name, "-pine64")) { +- if ((gd->ram_size > 512 * 1024 * 1024)) +- return !strstr(name, "plus"); +- else +- return !!strstr(name, "plus"); +- } else { +- return strcmp(name, best_dt_name); ++ else if (strstr(best_dt_name, "-pine64-plus")) { ++ /* Differentiate the Pine A64 boards by their DRAM size. */ ++ if ((gd->ram_size == 512 * 1024 * 1024)) ++ best_dt_name = "sun50i-a64-pine64"; + } + #endif + return strcmp(name, best_dt_name); + +From patchwork Thu Sep 3 05:07:12 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Samuel Holland +X-Patchwork-Id: 1356310 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=sholland.org +Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; + unprotected) header.d=sholland.org header.i=@sholland.org header.a=rsa-sha256 + header.s=fm3 header.b=WQvh0tb6; + dkim=pass (2048-bit key; + unprotected) header.d=messagingengine.com header.i=@messagingengine.com + header.a=rsa-sha256 header.s=fm3 header.b=Va8mMuMz; + dkim-atps=neutral +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 RSA-PSS (4096 bits) server-digest + SHA256) (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4Bhphw0Nkzz9sTR + for ; Thu, 3 Sep 2020 15:07:43 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 19AFA822DF; + Thu, 3 Sep 2020 07:07:27 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=sholland.org +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=sholland.org header.i=@sholland.org + header.b="WQvh0tb6"; dkim=pass (2048-bit key; + unprotected) header.d=messagingengine.com header.i=@messagingengine.com + header.b="Va8mMuMz"; dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 3129B822E3; Thu, 3 Sep 2020 07:07:24 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, + DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, + SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no + version=3.4.2 +Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com + [66.111.4.26]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id D694E822E1 + for ; Thu, 3 Sep 2020 07:07:19 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=sholland.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=samuel@sholland.org +Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) + by mailout.nyi.internal (Postfix) with ESMTP id 1C9B95C0116; + Thu, 3 Sep 2020 01:07:19 -0400 (EDT) +Received: from mailfrontend2 ([10.202.2.163]) + by compute3.internal (MEProxy); Thu, 03 Sep 2020 01:07:19 -0400 +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= + from:to:cc:subject:date:message-id:in-reply-to:references + :mime-version:content-transfer-encoding; s=fm3; bh=CNkIsGtVD92kV + ynV0NXjTV4vykOq+sdspxFol5f0iNM=; b=WQvh0tb6tyqtZYusFC0NyOcSeWaQm + ikcA+euqToY6scf0d256r+20fb4HnTosS+vXbhpF5vlo1hBhc2RW2/e+dR3a3AKH + qb8j3UwBWhpnwwZMS8HqUob5Cfq1BxHU1+/2tjRXvlMxDxNd/HvUoRlLBhfK57OA + Ln6MfWcRmxHlq5Js5MGAD9hRdzkPrnDX4x/NdRttkUaH/WMSGNEO0TnKW88PYXsE + 8u0eiuJQWWLED8nBAxf89vvVUf7o+It6gx5i+r5Bjl/BE5Ykj4O4kpMX2MeiB+Zh + KjYjivDQw8wmG4CrFKPCq4Bd/RoSQd9zHYBp6QuYpvY80vw+jLX7oVwMw== +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= + messagingengine.com; h=cc:content-transfer-encoding:date:from + :in-reply-to:message-id:mime-version:references:subject:to + :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= + fm3; bh=CNkIsGtVD92kVynV0NXjTV4vykOq+sdspxFol5f0iNM=; b=Va8mMuMz + othxHX11xn91XUTb1pYRnk4BO4zhPNKy7f+RU+S4/3DaYnmV9zl4x03LblsUWZRs + bnICHr20DS5YKUcqT9ag5zm1ocAxwJQGTc/SnTpWkZsJXR8unpsmm89jDyV+w5dM + p3YUeZ3AhxjEFHJXhqUnnOIXSLXGzYsnWA+szWf0dHI7tpZJqaV5O4X8xTk2X5cp + 2siDwjLGLi7PUtB/vcNZmOOZQbROGonW6mu2iNurHnrBUk4gOOmQhmeiEkjJb9lk + +MfMZsLXllNr8/o7323d6iP90v1scxaBASDC+q2zzEmUVAmU/Y/fyH0B6frHJy3O + QTcFTnYy45X3Zw== +X-ME-Sender: + +X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudegtddgleduucetufdoteggodetrfdotf + fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen + uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne + cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefurghmuhgv + lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf + frrghtthgvrhhnpeduhfejfedvhffgfeehtefghfeiiefgfeehgfdvvdevfeegjeehjedv + gfejheeuieenucfkphepjedtrddufeehrddugeekrdduhedunecuvehluhhsthgvrhfuih + iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgrmhhuvghlsehshhholhhlrghn + ugdrohhrgh +X-ME-Proxy: + + + +Received: from titanium.stl.sholland.net + (70-135-148-151.lightspeed.stlsmo.sbcglobal.net [70.135.148.151]) + by mail.messagingengine.com (Postfix) with ESMTPA id A21AB306005B; + Thu, 3 Sep 2020 01:07:18 -0400 (EDT) +From: Samuel Holland +To: Jagan Teki , Maxime Ripard +Cc: Andre Przywara , + Peter Robinson , u-boot@lists.denx.de, + Samuel Holland +Subject: [PATCH 4/8] sunxi: board: Add PinePhone DT selection logic +Date: Thu, 3 Sep 2020 00:07:12 -0500 +Message-Id: <20200903050716.48488-5-samuel@sholland.org> +X-Mailer: git-send-email 2.26.2 +In-Reply-To: <20200903050716.48488-1-samuel@sholland.org> +References: <20200903050716.48488-1-samuel@sholland.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +There are two different publicly-released revisions of the PinePhone +hardware, versions 1.1 and 1.2; and they need different device trees. +Since some GPIO pins were rerouted, we can use that to distinguish +between them. + +Signed-off-by: Samuel Holland +--- + arch/arm/mach-sunxi/Kconfig | 7 +++++++ + board/sunxi/board.c | 21 +++++++++++++++++++++ + 2 files changed, 28 insertions(+) + +diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig +index be0822bfb7d..8421f3b6854 100644 +--- a/arch/arm/mach-sunxi/Kconfig ++++ b/arch/arm/mach-sunxi/Kconfig +@@ -1010,4 +1010,11 @@ config PINE64_DT_SELECTION + option, the device tree selection code specific to Pine64 which + utilizes the DRAM size will be enabled. + ++config PINEPHONE_DT_SELECTION ++ bool "Enable PinePhone device tree selection code" ++ depends on MACH_SUN50I ++ help ++ Enable this option to automatically select the device tree for the ++ correct PinePhone hardware revision during boot. ++ + endif +diff --git a/board/sunxi/board.c b/board/sunxi/board.c +index fb0d5bf4743..3d64ed18664 100644 +--- a/board/sunxi/board.c ++++ b/board/sunxi/board.c +@@ -27,6 +27,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -920,6 +921,26 @@ int board_fit_config_name_match(const char *name) + best_dt_name = "sun50i-a64-pine64"; + } + #endif ++#ifdef CONFIG_PINEPHONE_DT_SELECTION ++ else if (strstr(best_dt_name, "-pinephone")) { ++ /* Differentiate the PinePhone revisions by GPIO inputs. */ ++ prcm_apb0_enable(PRCM_APB0_GATE_PIO); ++ sunxi_gpio_set_pull(SUNXI_GPL(6), SUNXI_GPIO_PULL_UP); ++ sunxi_gpio_set_cfgpin(SUNXI_GPL(6), SUNXI_GPIO_INPUT); ++ udelay(100); ++ ++ /* PL6 is pulled low by the modem on v1.2. */ ++ if (gpio_get_value(SUNXI_GPL(6)) == 0) ++ best_dt_name = "sun50i-a64-pinephone-1.2"; ++ else ++ best_dt_name = "sun50i-a64-pinephone-1.1"; ++ ++ sunxi_gpio_set_cfgpin(SUNXI_GPL(6), SUNXI_GPIO_DISABLE); ++ sunxi_gpio_set_pull(SUNXI_GPL(6), SUNXI_GPIO_PULL_DISABLE); ++ prcm_apb0_disable(PRCM_APB0_GATE_PIO); ++ } ++#endif ++ + return strcmp(name, best_dt_name); + } + #endif + +From patchwork Thu Sep 3 05:07:13 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Samuel Holland +X-Patchwork-Id: 1356314 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=sholland.org +Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; + unprotected) header.d=sholland.org header.i=@sholland.org header.a=rsa-sha256 + header.s=fm3 header.b=fyCJtExp; + dkim=pass (2048-bit key; + unprotected) header.d=messagingengine.com header.i=@messagingengine.com + header.a=rsa-sha256 header.s=fm3 header.b=B5Js1Nb8; + dkim-atps=neutral +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4Bhpjn2MLBz9sTR + for ; Thu, 3 Sep 2020 15:08:29 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 774738230A; + Thu, 3 Sep 2020 07:07:33 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=sholland.org +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=sholland.org header.i=@sholland.org + header.b="fyCJtExp"; dkim=pass (2048-bit key; + unprotected) header.d=messagingengine.com header.i=@messagingengine.com + header.b="B5Js1Nb8"; dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 43189822ED; Thu, 3 Sep 2020 07:07:27 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, + DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, + SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no + version=3.4.2 +Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com + [66.111.4.26]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 2BF26822D9 + for ; Thu, 3 Sep 2020 07:07:21 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=sholland.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=samuel@sholland.org +Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) + by mailout.nyi.internal (Postfix) with ESMTP id 672025C018A; + Thu, 3 Sep 2020 01:07:19 -0400 (EDT) +Received: from mailfrontend2 ([10.202.2.163]) + by compute3.internal (MEProxy); Thu, 03 Sep 2020 01:07:19 -0400 +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= + from:to:cc:subject:date:message-id:in-reply-to:references + :mime-version:content-transfer-encoding; s=fm3; bh=azt3bcG2gyjJM + Z+euNV8r3HcVvCpV+eSxdiwdmzQYjE=; b=fyCJtExpAf8Pds8sXBs5pz5z9Werb + vqBSzut0Ck+pcCvap7NpVy7HIRtLqRZZ5TVdGQrBdCyjMYPaBcpnxw/mfUNJKoX9 + WjOBrSnHpTrRp42ZQmJhQhQwBcX/s0j54ruprCfSqKSDuTOBG1N1JvKxI/PpfY6r + SsSEbwLKYq1RtK4noXm6JikphM9ME5i5XlR5n4XPsXPdM3UhM9DZXrkVwtWp+NyK + 4Xz63Is8oAxwJZAmqv049v/YeMe/Rsf9FY93zxcnQyZVoOHuW1s17AsX7jF8wDRy + xqvpvT8c3cJYXaFLGLrY+nmcGoKIjQSszLh9y5NwbGmjlEElJCcUUJW1A== +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= + messagingengine.com; h=cc:content-transfer-encoding:date:from + :in-reply-to:message-id:mime-version:references:subject:to + :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= + fm3; bh=azt3bcG2gyjJMZ+euNV8r3HcVvCpV+eSxdiwdmzQYjE=; b=B5Js1Nb8 + 5VzNH4aOuAW1FHK3OmKXRhz2sqhORkqO2K1N+kVfuPWZeATNjSIGEHwqkBJeJDNc + i+/y18eeCQg5sWkt3YCGaFv//m+LNamP1DRTkwLglswewvGqj0zfgN4MjMJvBWt3 + 0bbdP8+D9o1geSld8IyI3lyRZgu7QN+3vJs4xxyTQL6xTOg6VizhNwm6nwSSl2u8 + O6WzLWqrShbb6PD7Lqy5FrJ+BiqwRR+QrRp1JI86QDXssPJh1CtMiF2LnrkmwPxB + DSp3hr1nqudSNopltfwdUyNu3GdkGbMCE8Iv+4KIZpD8oRH12hS19aRtIqosAuXm + 1Ljrqzx4Vp/yNA== +X-ME-Sender: + +X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudegtddgleduucetufdoteggodetrfdotf + fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen + uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne + cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefurghmuhgv + lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf + frrghtthgvrhhnpeduhfejfedvhffgfeehtefghfeiiefgfeehgfdvvdevfeegjeehjedv + gfejheeuieenucfkphepjedtrddufeehrddugeekrdduhedunecuvehluhhsthgvrhfuih + iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgrmhhuvghlsehshhholhhlrghn + ugdrohhrgh +X-ME-Proxy: + + + +Received: from titanium.stl.sholland.net + (70-135-148-151.lightspeed.stlsmo.sbcglobal.net [70.135.148.151]) + by mail.messagingengine.com (Postfix) with ESMTPA id EE48F306005E; + Thu, 3 Sep 2020 01:07:18 -0400 (EDT) +From: Samuel Holland +To: Jagan Teki , Maxime Ripard +Cc: Andre Przywara , + Peter Robinson , u-boot@lists.denx.de, + Samuel Holland +Subject: [PATCH 5/8] sunxi: board: Save the chosen DT name in the SPL header +Date: Thu, 3 Sep 2020 00:07:13 -0500 +Message-Id: <20200903050716.48488-6-samuel@sholland.org> +X-Mailer: git-send-email 2.26.2 +In-Reply-To: <20200903050716.48488-1-samuel@sholland.org> +References: <20200903050716.48488-1-samuel@sholland.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +This overwrites the name loaded from the SPL image. It will be different +if there was previously no name provided, or if a more accurate name was +determined by the board variant selection logic. This means that the DT +name in the SPL header now always matches the DT appended to U-Boot. + +Signed-off-by: Samuel Holland +--- + board/sunxi/board.c | 27 ++++++++++++++++++++++++++- + 1 file changed, 26 insertions(+), 1 deletion(-) + +diff --git a/board/sunxi/board.c b/board/sunxi/board.c +index 3d64ed18664..eaa40a1ea96 100644 +--- a/board/sunxi/board.c ++++ b/board/sunxi/board.c +@@ -331,6 +331,21 @@ static const char *get_spl_dt_name(void) + return NULL; + } + ++static void set_spl_dt_name(const char *name) ++{ ++ struct boot_file_head *spl = get_spl_header(SPL_ENV_HEADER_VERSION); ++ ++ if (spl == INVALID_SPL_HEADER) ++ return; ++ ++ /* Promote the header version for U-Boot proper, if needed. */ ++ if (spl->spl_signature[3] < SPL_DT_HEADER_VERSION) ++ spl->spl_signature[3] = SPL_DT_HEADER_VERSION; ++ ++ strcpy((char *)&spl->string_pool, name); ++ spl->dt_name_offset = offsetof(struct boot_file_head, string_pool); ++} ++ + int dram_init(void) + { + struct boot_file_head *spl = get_spl_header(SPL_DRAM_HEADER_VERSION); +@@ -904,6 +919,7 @@ int ft_board_setup(void *blob, struct bd_info *bd) + int board_fit_config_name_match(const char *name) + { + const char *best_dt_name = get_spl_dt_name(); ++ int ret; + + #ifdef CONFIG_DEFAULT_DEVICE_TREE + if (best_dt_name == NULL) +@@ -941,6 +957,15 @@ int board_fit_config_name_match(const char *name) + } + #endif + +- return strcmp(name, best_dt_name); ++ ret = strcmp(name, best_dt_name); ++ ++ /* ++ * If one of the FIT configurations matches the most accurate DT name, ++ * update the SPL header to provide that DT name to U-Boot proper. ++ */ ++ if (ret == 0) ++ set_spl_dt_name(best_dt_name); ++ ++ return ret; + } + #endif + +From patchwork Thu Sep 3 05:07:14 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Samuel Holland +X-Patchwork-Id: 1356313 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=sholland.org +Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; + unprotected) header.d=sholland.org header.i=@sholland.org header.a=rsa-sha256 + header.s=fm3 header.b=Ps0W2fd7; + dkim=pass (2048-bit key; + unprotected) header.d=messagingengine.com header.i=@messagingengine.com + header.a=rsa-sha256 header.s=fm3 header.b=irLh9odg; + dkim-atps=neutral +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4BhpjY18DVz9sTR + for ; Thu, 3 Sep 2020 15:08:17 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 1375E82300; + Thu, 3 Sep 2020 07:07:32 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=sholland.org +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=sholland.org header.i=@sholland.org + header.b="Ps0W2fd7"; dkim=pass (2048-bit key; + unprotected) header.d=messagingengine.com header.i=@messagingengine.com + header.b="irLh9odg"; dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id E9DCE822E1; Thu, 3 Sep 2020 07:07:26 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, + DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, + SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no + version=3.4.2 +Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com + [66.111.4.26]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 2CC5D822DF + for ; Thu, 3 Sep 2020 07:07:21 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=sholland.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=samuel@sholland.org +Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) + by mailout.nyi.internal (Postfix) with ESMTP id AAA455C0197; + Thu, 3 Sep 2020 01:07:19 -0400 (EDT) +Received: from mailfrontend2 ([10.202.2.163]) + by compute3.internal (MEProxy); Thu, 03 Sep 2020 01:07:19 -0400 +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= + from:to:cc:subject:date:message-id:in-reply-to:references + :mime-version:content-transfer-encoding; s=fm3; bh=YJZBYh6lhnaT4 + or+KKTYoX0BgbruFrnszv2AxRFjCUg=; b=Ps0W2fd7vmO9tBRewK6ov5Y2vWsh9 + oAAVK6vPK0hEzUkkeBIkhSenj5xlmR2HCeP5LxQU+Vgty5CzLJnc48U8lCQwGRFR + ZZ6tAiD9/vOtdVCbU2dRH7WK3uoAEi4AB688do5c3H3KhS8ZN6N7vsakr50TbczK + beuX76xciz0QEuRhJUFbnK9EYpV8/CDS1OFv6P+kA6OSIb71gm9FeFgdHHpmdQ/U + 7sE6vbkMYhL7pFMzeBCYWSfUWF6NK3gfJApDaxFqR1KBlszLuGbIXLVYWImA3WV8 + sFDNZWGk2swSOB1ivq+Xvb2WTlPidjY0OrROgggZcyDHPRFEoZaS1ezAA== +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= + messagingengine.com; h=cc:content-transfer-encoding:date:from + :in-reply-to:message-id:mime-version:references:subject:to + :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= + fm3; bh=YJZBYh6lhnaT4or+KKTYoX0BgbruFrnszv2AxRFjCUg=; b=irLh9odg + 4mUJO3vUBGyeYD/WBs8BrulYezzsNoTAJp4uGEv0b9KyxbofUjok4+liYvAT/QZa + ED/iKo1bqgGmEwNPLoM0YORd0pXRd5jyv9W53Z96qzGsNOe0iGkJtSlOMXF3Lrfl + aIpGPRSMoRkqztR6oWBAEHeCm3NCFY4LDzzCoPFQqdcWmiDl+Wi3YfpApRGHdL3v + 4XVOruQFZlZUHZPp42VOzgbJyz+uWB3Z/RN2y0P7Lof1CrYtsWNftV4LuXDQ70VZ + P9TlSWjk75qTa1dqHdj/cvbi5WFBqa4FJKgCCV1OgCCEAc1ZGLhPBVDjt4W7FHJh + hNPlKS0liPCmGQ== +X-ME-Sender: + +X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudegtddgleduucetufdoteggodetrfdotf + fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen + uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne + cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefurghmuhgv + lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf + frrghtthgvrhhnpeduhfejfedvhffgfeehtefghfeiiefgfeehgfdvvdevfeegjeehjedv + gfejheeuieenucfkphepjedtrddufeehrddugeekrdduhedunecuvehluhhsthgvrhfuih + iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgrmhhuvghlsehshhholhhlrghn + ugdrohhrgh +X-ME-Proxy: + + + +Received: from titanium.stl.sholland.net + (70-135-148-151.lightspeed.stlsmo.sbcglobal.net [70.135.148.151]) + by mail.messagingengine.com (Postfix) with ESMTPA id 4678A306005B; + Thu, 3 Sep 2020 01:07:19 -0400 (EDT) +From: Samuel Holland +To: Jagan Teki , Maxime Ripard +Cc: Andre Przywara , + Peter Robinson , u-boot@lists.denx.de, + Samuel Holland +Subject: [PATCH 6/8] sunxi: board: Set fdtfile to match the DT chosen by SPL +Date: Thu, 3 Sep 2020 00:07:14 -0500 +Message-Id: <20200903050716.48488-7-samuel@sholland.org> +X-Mailer: git-send-email 2.26.2 +In-Reply-To: <20200903050716.48488-1-samuel@sholland.org> +References: <20200903050716.48488-1-samuel@sholland.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +Previously, fdtfile was always the value in CONFIG_DEFAULT_DEVICE_TREE. +This meant that, regardless of the DT chosen by SPL (either by changing +the header in the image or by the selection code at runtime), Linux +always used the default DT. + +By using the name from the SPL header (which, because of the previous +commit, always matches the DT used by U-Boot proper), Linux also sees +the same board as U-Boot/SPL, even if the boot script later loads a DT +from disk. + +Signed-off-by: Samuel Holland +--- + board/sunxi/board.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/board/sunxi/board.c b/board/sunxi/board.c +index eaa40a1ea96..5457b28e135 100644 +--- a/board/sunxi/board.c ++++ b/board/sunxi/board.c +@@ -870,6 +870,7 @@ static void setup_environment(const void *fdt) + + int misc_init_r(void) + { ++ const char *spl_dt_name; + uint boot; + + env_set("fel_booted", NULL); +@@ -888,6 +889,16 @@ int misc_init_r(void) + env_set("mmc_bootdev", "1"); + } + ++ /* Set fdtfile to match the FIT configuration chosen in SPL. */ ++ spl_dt_name = get_spl_dt_name(); ++ if (spl_dt_name) { ++ char *prefix = IS_ENABLED(CONFIG_ARM64) ? "allwinner/" : ""; ++ char str[64]; ++ ++ snprintf(str, sizeof(str), "%s%s.dtb", prefix, spl_dt_name); ++ env_set("fdtfile", str); ++ } ++ + setup_environment(gd->fdt_blob); + + #ifdef CONFIG_USB_ETHER + diff --git a/sources b/sources index a197564..9cdc2e2 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2020.10-rc2.tar.bz2) = 9364a555e34830359c5cfffa87cc3d192ff15b23bf8bda054778e02ab4b37ede09a1a37757eb2121787de924fc563880dd4417bf53cd80d3649acb55d05994e8 +SHA512 (u-boot-2020.10-rc4.tar.bz2) = ba944bf9cbd8285de6fd4c2e67c2411eda6c504e87720854b36fbcd290927dabb25deee28302e8b81a982f41d29d4ddf908d4891c4f5b2bda4324a0191eb701d diff --git a/uboot-tools.spec b/uboot-tools.spec index 493acfd..c119c66 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -%global candidate rc2 +%global candidate rc4 Name: uboot-tools Version: 2020.10 -Release: 0.3%{?candidate:.%{candidate}}%{?dist} +Release: 0.4%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -27,10 +27,12 @@ Patch5: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch Patch6: arm-tegra-define-fdtfile-option-for-distro-boot.patch Patch7: arm-add-BOOTENV_EFI_SET_FDTFILE_FALLBACK-for-tegra186-be.patch # AllWinner improvements -Patch8: AllWinner-Pine64-bits.patch +Patch8: PinePhone-automatic-device-tree-selection.patch +Patch9: AllWinner-PinePhone.patch +Patch10: AllWinner-PineTab.patch # Rockchips improvements -Patch9: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch -Patch10: rockchip-Rock960-Fix-up-USB-support.patch +Patch11: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch +Patch12: rockchip-Rock960-Fix-up-USB-support.patch BuildRequires: bc BuildRequires: dtc @@ -244,6 +246,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Wed Sep 09 2020 Peter Robinson - 2020.10-0.4.rc4 +- Update to 2020.10 RC4 + * Wed Aug 19 2020 Peter Robinson - 2020.10-0.3.rc2 - Enable a number of new Rockchip devices From 5bf1926b83bb228cfafb051cd60f6353e89d61bc Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 9 Sep 2020 11:20:31 +0100 Subject: [PATCH 019/271] Fix pinephone dts compile fail --- AllWinner-PinePhone.patch | 2485 ++++++++--------- AllWinner-UpstreamSync.patch | 1297 +++++++++ ...hone-automatic-device-tree-selection.patch | 1114 -------- uboot-tools.spec | 2 +- 4 files changed, 2517 insertions(+), 2381 deletions(-) create mode 100644 AllWinner-UpstreamSync.patch delete mode 100644 PinePhone-automatic-device-tree-selection.patch diff --git a/AllWinner-PinePhone.patch b/AllWinner-PinePhone.patch index cc13eac..baa7119 100644 --- a/AllWinner-PinePhone.patch +++ b/AllWinner-PinePhone.patch @@ -1,1300 +1,1116 @@ -From 6e5d771060dff5350e5940b7e457884b47a560ac Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Thu, 9 Jul 2020 12:20:53 +0100 -Subject: [PATCH 1/8] dt-bindings: clk: sync sun50i-a64-ccu.h to linux 5.8-rc1 +From patchwork Thu Sep 3 05:07:09 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Samuel Holland +X-Patchwork-Id: 1356315 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=sholland.org +Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; + unprotected) header.d=sholland.org header.i=@sholland.org header.a=rsa-sha256 + header.s=fm3 header.b=buHTSW+5; + dkim=pass (2048-bit key; + unprotected) header.d=messagingengine.com header.i=@messagingengine.com + header.a=rsa-sha256 header.s=fm3 header.b=soUNU+zi; + dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4Bhpk04dbHz9sTR + for ; Thu, 3 Sep 2020 15:08:40 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id B8046822FB; + Thu, 3 Sep 2020 07:07:34 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=sholland.org +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=sholland.org header.i=@sholland.org + header.b="buHTSW+5"; dkim=pass (2048-bit key; + unprotected) header.d=messagingengine.com header.i=@messagingengine.com + header.b="soUNU+zi"; dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 5B11B822E1; Thu, 3 Sep 2020 07:07:27 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, + DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, + SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no + version=3.4.2 +Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com + [66.111.4.26]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id AF853822D8 + for ; Thu, 3 Sep 2020 07:07:19 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=sholland.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=samuel@sholland.org +Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) + by mailout.nyi.internal (Postfix) with ESMTP id 6D2045C0190; + Thu, 3 Sep 2020 01:07:18 -0400 (EDT) +Received: from mailfrontend2 ([10.202.2.163]) + by compute3.internal (MEProxy); Thu, 03 Sep 2020 01:07:18 -0400 +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= + from:to:cc:subject:date:message-id:in-reply-to:references + :mime-version:content-transfer-encoding; s=fm3; bh=U4jA0nvRK7Czr + dgeNIS5gDY5tElSJ2feLLbT7NYhO6s=; b=buHTSW+5/tt6GjGA2vOU6Ivto0Cdk + fngE70LZVaDreoNlTLgMANhhiJzWyBYb3mjmMUR2EHBJeYNdzuOYpRL/hBztVsqa + B+hq24fQr6OsXlroOC+9DIkrBtgkfEXrmaHqyO9jP0/BBHQUHBAjJr6RkItNOJqs + tL5255/XbQw05IUwTN+fwQs+x1qtv9dPXiYVdELfBIhuTKSyQJaKqBLEO3mPFxRz + PIISy3OQi1lzdrJdmurLcp6DfbzqB9nJfuD0CtslCI1Bu09KsMgr7sn/mxITx0Vy + qyWz9p5t9Vr2A3xct652aED771i3Ra6UK+UYoSayMMMyCG4g+rb0DzJhQ== +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= + messagingengine.com; h=cc:content-transfer-encoding:date:from + :in-reply-to:message-id:mime-version:references:subject:to + :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= + fm3; bh=U4jA0nvRK7CzrdgeNIS5gDY5tElSJ2feLLbT7NYhO6s=; b=soUNU+zi + uXuVOTwtphqr7B11oSRvrTR5EMY1G0DCfVWT5s+K/e9h3V/TodXW0tbddWCX1Qhf + 2EbJfg61h8/UFqtAFCwuDtcIaxiykHsoFtLgyvzZrBQIoWF9LF/YDvRSmyDr1lyV + hY8s0GIVyKaAXjkwwoUEaknhWhGHrbVOeWZTWUnB9W1++iN+4uXoWlMohB72yOlk + 3TZ7XBSJLe2Nd4NxPuirhOfuGpWFLHiTQ/cSUcvZW+8DPmy+hZL/KNYEgY4NjN0I + uAZwnZNHCO2j+82cPGETrg4u4iziby3clWWhVNK04wJCiBfVWlkQgL5VP4ORJUzp + E1csDeRCXdGAgw== +X-ME-Sender: + +X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudegtddgleduucetufdoteggodetrfdotf + fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen + uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne + cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefurghmuhgv + lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf + frrghtthgvrhhnpeduhfejfedvhffgfeehtefghfeiiefgfeehgfdvvdevfeegjeehjedv + gfejheeuieenucfkphepjedtrddufeehrddugeekrdduhedunecuvehluhhsthgvrhfuih + iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgrmhhuvghlsehshhholhhlrghn + ugdrohhrgh +X-ME-Proxy: + + + +Received: from titanium.stl.sholland.net + (70-135-148-151.lightspeed.stlsmo.sbcglobal.net [70.135.148.151]) + by mail.messagingengine.com (Postfix) with ESMTPA id B6856306005E; + Thu, 3 Sep 2020 01:07:17 -0400 (EDT) +From: Samuel Holland +To: Jagan Teki , Maxime Ripard +Cc: Andre Przywara , + Peter Robinson , u-boot@lists.denx.de, + Samuel Holland +Subject: [PATCH 1/8] sunxi: board: Use a more descriptive variable name +Date: Thu, 3 Sep 2020 00:07:09 -0500 +Message-Id: <20200903050716.48488-2-samuel@sholland.org> +X-Mailer: git-send-email 2.26.2 +In-Reply-To: <20200903050716.48488-1-samuel@sholland.org> +References: <20200903050716.48488-1-samuel@sholland.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean -Sync the clock bindings for the Allwinner A64 to Linux +The variable "cmp_str" always leaves me wondering if it is the DT name +of the current board (yes) or DT name in the FIT config entry (no). -Signed-off-by: Peter Robinson +In preparation for expanding the functionality here, rename it to +something that obviously means "this is the DT name we are looking for". + +Signed-off-by: Samuel Holland --- - include/dt-bindings/clock/sun50i-a64-ccu.h | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) + board/sunxi/board.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) -diff --git a/include/dt-bindings/clock/sun50i-a64-ccu.h b/include/dt-bindings/clock/sun50i-a64-ccu.h -index d66432c6e6..318eb15c41 100644 ---- a/include/dt-bindings/clock/sun50i-a64-ccu.h -+++ b/include/dt-bindings/clock/sun50i-a64-ccu.h -@@ -43,8 +43,10 @@ - #ifndef _DT_BINDINGS_CLK_SUN50I_A64_H_ - #define _DT_BINDINGS_CLK_SUN50I_A64_H_ +diff --git a/board/sunxi/board.c b/board/sunxi/board.c +index 71e2b758a3e..674e6816d2d 100644 +--- a/board/sunxi/board.c ++++ b/board/sunxi/board.c +@@ -892,14 +892,14 @@ int ft_board_setup(void *blob, struct bd_info *bd) + int board_fit_config_name_match(const char *name) + { + struct boot_file_head *spl = get_spl_header(SPL_DT_HEADER_VERSION); +- const char *cmp_str = (const char *)spl; ++ const char *best_dt_name = (const char *)spl; -+#define CLK_PLL_VIDEO0 7 - #define CLK_PLL_PERIPH0 11 + /* Check if there is a DT name stored in the SPL header and use that. */ + if (spl != INVALID_SPL_HEADER && spl->dt_name_offset) { +- cmp_str += spl->dt_name_offset; ++ best_dt_name += spl->dt_name_offset; + } else { + #ifdef CONFIG_DEFAULT_DEVICE_TREE +- cmp_str = CONFIG_DEFAULT_DEVICE_TREE; ++ best_dt_name = CONFIG_DEFAULT_DEVICE_TREE; + #else + return 0; + #endif +@@ -907,15 +907,15 @@ int board_fit_config_name_match(const char *name) -+#define CLK_CPUX 21 - #define CLK_BUS_MIPI_DSI 28 - #define CLK_BUS_CE 29 - #define CLK_BUS_DMA 30 -@@ -129,7 +131,7 @@ - #define CLK_AVS 109 - #define CLK_HDMI 110 - #define CLK_HDMI_DDC 111 -- -+#define CLK_MBUS 112 - #define CLK_DSI_DPHY 113 - #define CLK_GPU 114 - --- -2.26.2 + #ifdef CONFIG_PINE64_DT_SELECTION + /* Differentiate the two Pine64 board DTs by their DRAM size. */ +- if (strstr(name, "-pine64") && strstr(cmp_str, "-pine64")) { ++ if (strstr(name, "-pine64") && strstr(best_dt_name, "-pine64")) { + if ((gd->ram_size > 512 * 1024 * 1024)) + return !strstr(name, "plus"); + else + return !!strstr(name, "plus"); + } else { +- return strcmp(name, cmp_str); ++ return strcmp(name, best_dt_name); + } + #endif +- return strcmp(name, cmp_str); ++ return strcmp(name, best_dt_name); + } + #endif -From 274dff055e80778277860f72a903c01ef33f87c7 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Thu, 9 Jul 2020 12:29:15 +0100 -Subject: [PATCH 2/8] dt-bindings: leds: sync leds common.h to linux from - 5.8-rc1 +From patchwork Thu Sep 3 05:07:10 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Samuel Holland +X-Patchwork-Id: 1356309 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=sholland.org +Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; + unprotected) header.d=sholland.org header.i=@sholland.org header.a=rsa-sha256 + header.s=fm3 header.b=Sj8OLfL4; + dkim=pass (2048-bit key; + unprotected) header.d=messagingengine.com header.i=@messagingengine.com + header.a=rsa-sha256 header.s=fm3 header.b=gP0Xb3h8; + dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4Bhphf6BH6z9sTR + for ; Thu, 3 Sep 2020 15:07:30 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id A8413822E3; + Thu, 3 Sep 2020 07:07:25 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=sholland.org +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=sholland.org header.i=@sholland.org + header.b="Sj8OLfL4"; dkim=pass (2048-bit key; + unprotected) header.d=messagingengine.com header.i=@messagingengine.com + header.b="gP0Xb3h8"; dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 7B2D9822E8; Thu, 3 Sep 2020 07:07:23 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, + DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, + SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no + version=3.4.2 +Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com + [66.111.4.26]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 88299822CA + for ; Thu, 3 Sep 2020 07:07:19 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=sholland.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=samuel@sholland.org +Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) + by mailout.nyi.internal (Postfix) with ESMTP id 76A985C0185; + Thu, 3 Sep 2020 01:07:18 -0400 (EDT) +Received: from mailfrontend2 ([10.202.2.163]) + by compute3.internal (MEProxy); Thu, 03 Sep 2020 01:07:18 -0400 +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= + from:to:cc:subject:date:message-id:in-reply-to:references + :mime-version:content-transfer-encoding; s=fm3; bh=PQN64SHY0DFbJ + Xj9YPEcwJKL0bbybvo9/xMWQLiHCkU=; b=Sj8OLfL4WM4t/eW8xPA7XiaXE7bRC + 9oDd5605MwRja78aJ+GwV1TuxapJm7IlVNnlBETATblOjQenK4B7tAuxyPitzu+K + yJP+d0AYfgltsx888/hHtABBhsY20/7onFV1xxF/nB6fWwM6UTYfzsg2QQ2QYHmb + R5QGX38IUdDGZPR/U3bd2roatbUMK+xMqPZku3+3xxbSlLdWpeXp3YBmNCZFrkef + DjNUZE0kZWZIXIEk25bliOi1Yol1RZQZBq4As373rtZSvdXJbPKxU6C5c2TH6OgZ + ZcjNRU6zogMnOHhe/nklaCLzZQPx8Wz5Nse8PYJuRlDGk5tu5tOcONmog== +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= + messagingengine.com; h=cc:content-transfer-encoding:date:from + :in-reply-to:message-id:mime-version:references:subject:to + :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= + fm3; bh=PQN64SHY0DFbJXj9YPEcwJKL0bbybvo9/xMWQLiHCkU=; b=gP0Xb3h8 + lzo0knlriZlcpqJf2dY4yeWblYiYIsakrHO3GUDeZ7G9RYeSSWZ89RjUPZIHn4tw + mTk7vKxHbWz88EaQ+iPXaHsygzVk6RGrnU+7eGtJzZmUmKAm19hTi1uqkP/nXGyY + yyL1IKzw3pieBI1wHq1JPBo+AqTyAsrhrjgdalM+f9/0WwcdAWLTWYUXdR65xW1W + oFUPZ3bjJWrhFb1KFwEiJKdkK9tpivNCGKLe9fvnTLEelYQVoKMAE5G0xVdJhIqY + mQAq41sXJ3LRSeQWUb4Nd00bQsDTsroKLXDYc1P2K57wRGNIalbkkWZmbadPn2VW + 5jUVvdCWPvDEZQ== +X-ME-Sender: + +X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudegtddgleduucetufdoteggodetrfdotf + fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen + uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne + cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefurghmuhgv + lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf + frrghtthgvrhhnpeduhfejfedvhffgfeehtefghfeiiefgfeehgfdvvdevfeegjeehjedv + gfejheeuieenucfkphepjedtrddufeehrddugeekrdduhedunecuvehluhhsthgvrhfuih + iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgrmhhuvghlsehshhholhhlrghn + ugdrohhrgh +X-ME-Proxy: + + + +Received: from titanium.stl.sholland.net + (70-135-148-151.lightspeed.stlsmo.sbcglobal.net [70.135.148.151]) + by mail.messagingengine.com (Postfix) with ESMTPA id 0C6DA306005B; + Thu, 3 Sep 2020 01:07:18 -0400 (EDT) +From: Samuel Holland +To: Jagan Teki , Maxime Ripard +Cc: Andre Przywara , + Peter Robinson , u-boot@lists.denx.de, + Samuel Holland +Subject: [PATCH 2/8] sunxi: board: Add a helper to get the SPL DT name +Date: Thu, 3 Sep 2020 00:07:10 -0500 +Message-Id: <20200903050716.48488-3-samuel@sholland.org> +X-Mailer: git-send-email 2.26.2 +In-Reply-To: <20200903050716.48488-1-samuel@sholland.org> +References: <20200903050716.48488-1-samuel@sholland.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean -Sync the leds common.h to the latest Linux version. +This moves the validity checking and typecasts all to one place away +from the string comparison logic, and it detangles the compile-time +and runtime control flow. -Signed-off-by: Peter Robinson +The new helper will also be used by U-Boot proper in a future commit. + +Signed-off-by: Samuel Holland --- - include/dt-bindings/leds/common.h | 36 ++++++++++++++++++++++--------- - 1 file changed, 26 insertions(+), 10 deletions(-) + board/sunxi/board.c | 26 +++++++++++++++++--------- + 1 file changed, 17 insertions(+), 9 deletions(-) -diff --git a/include/dt-bindings/leds/common.h b/include/dt-bindings/leds/common.h -index 9e1256a7c1..0ce7dfc00d 100644 ---- a/include/dt-bindings/leds/common.h -+++ b/include/dt-bindings/leds/common.h -@@ -6,6 +6,7 @@ - * Author: Jacek Anaszewski - * - * Copyright (C) 2019 Jacek Anaszewski -+ * Copyright (C) 2020 Pavel Machek - */ +diff --git a/board/sunxi/board.c b/board/sunxi/board.c +index 674e6816d2d..5c9b811f27a 100644 +--- a/board/sunxi/board.c ++++ b/board/sunxi/board.c +@@ -319,6 +319,17 @@ static struct boot_file_head * get_spl_header(uint8_t req_version) + return spl; + } - #ifndef __DT_BINDINGS_LEDS_H -@@ -32,16 +33,38 @@ - #define LED_COLOR_ID_MAX 8 ++static const char *get_spl_dt_name(void) ++{ ++ struct boot_file_head *spl = get_spl_header(SPL_DT_HEADER_VERSION); ++ ++ /* Check if there is a DT name stored in the SPL header. */ ++ if (spl != INVALID_SPL_HEADER && spl->dt_name_offset) ++ return (char *)spl + spl->dt_name_offset; ++ ++ return NULL; ++} ++ + int dram_init(void) + { + struct boot_file_head *spl = get_spl_header(SPL_DRAM_HEADER_VERSION); +@@ -891,20 +902,17 @@ int ft_board_setup(void *blob, struct bd_info *bd) + #ifdef CONFIG_SPL_LOAD_FIT + int board_fit_config_name_match(const char *name) + { +- struct boot_file_head *spl = get_spl_header(SPL_DT_HEADER_VERSION); +- const char *best_dt_name = (const char *)spl; ++ const char *best_dt_name = get_spl_dt_name(); - /* Standard LED functions */ -+/* Keyboard LEDs, usually it would be input4::capslock etc. */ -+/* Obsolete equivalent: "shift-key-light" */ -+#define LED_FUNCTION_CAPSLOCK "capslock" -+#define LED_FUNCTION_SCROLLLOCK "scrolllock" -+#define LED_FUNCTION_NUMLOCK "numlock" -+/* Obsolete equivalents: "tpacpi::thinklight" (IBM/Lenovo Thinkpads), -+ "lp5523:kb{1,2,3,4,5,6}" (Nokia N900) */ -+#define LED_FUNCTION_KBD_BACKLIGHT "kbd_backlight" -+ -+/* System LEDs, usually found on system body. -+ platform::mute (etc) is sometimes seen, :mute would be better */ -+#define LED_FUNCTION_POWER "power" -+#define LED_FUNCTION_DISK "disk" -+ -+/* Obsolete: "platform:*:charging" (allwinner sun50i) */ -+#define LED_FUNCTION_CHARGING "charging" -+/* Used RGB notification LEDs common on phones. -+ Obsolete equivalents: "status-led:{red,green,blue}" (Motorola Droid 4), -+ "lp5523:{r,g,b}" (Nokia N900) */ -+#define LED_FUNCTION_STATUS "status" -+ -+#define LED_FUNCTION_MICMUTE "micmute" -+#define LED_FUNCTION_MUTE "mute" -+ -+/* Miscelleaus functions. Use functions above if you can. */ - #define LED_FUNCTION_ACTIVITY "activity" - #define LED_FUNCTION_ALARM "alarm" - #define LED_FUNCTION_BACKLIGHT "backlight" - #define LED_FUNCTION_BLUETOOTH "bluetooth" - #define LED_FUNCTION_BOOT "boot" - #define LED_FUNCTION_CPU "cpu" --#define LED_FUNCTION_CAPSLOCK "capslock" --#define LED_FUNCTION_CHARGING "charging" - #define LED_FUNCTION_DEBUG "debug" --#define LED_FUNCTION_DISK "disk" - #define LED_FUNCTION_DISK_ACTIVITY "disk-activity" - #define LED_FUNCTION_DISK_ERR "disk-err" - #define LED_FUNCTION_DISK_READ "disk-read" -@@ -50,21 +73,14 @@ - #define LED_FUNCTION_FLASH "flash" - #define LED_FUNCTION_HEARTBEAT "heartbeat" - #define LED_FUNCTION_INDICATOR "indicator" --#define LED_FUNCTION_KBD_BACKLIGHT "kbd_backlight" - #define LED_FUNCTION_LAN "lan" - #define LED_FUNCTION_MAIL "mail" - #define LED_FUNCTION_MTD "mtd" --#define LED_FUNCTION_MICMUTE "micmute" --#define LED_FUNCTION_MUTE "mute" --#define LED_FUNCTION_NUMLOCK "numlock" - #define LED_FUNCTION_PANIC "panic" - #define LED_FUNCTION_PROGRAMMING "programming" --#define LED_FUNCTION_POWER "power" - #define LED_FUNCTION_RX "rx" - #define LED_FUNCTION_SD "sd" --#define LED_FUNCTION_SCROLLLOCK "scrolllock" - #define LED_FUNCTION_STANDBY "standby" --#define LED_FUNCTION_STATUS "status" - #define LED_FUNCTION_TORCH "torch" - #define LED_FUNCTION_TX "tx" - #define LED_FUNCTION_USB "usb" --- -2.26.2 - -From 7010e7d2b19d2ded674e376855d2716b7cd421b7 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Fri, 10 Jul 2020 12:46:11 +0100 -Subject: [PATCH 3/8] dt-bindings: clk/reset: sync updated bindings for - Allwinner DE2 display engine - -Sync the clock and reset bindings for the Allwinner DE2 display engine to Linux 5.8-rc1. - -Signed-off-by: Peter Robinson ---- - include/dt-bindings/clock/sun8i-de2.h | 3 +++ - include/dt-bindings/reset/sun8i-de2.h | 1 + - 2 files changed, 4 insertions(+) - -diff --git a/include/dt-bindings/clock/sun8i-de2.h b/include/dt-bindings/clock/sun8i-de2.h -index 3bed63b524..7768f73b05 100644 ---- a/include/dt-bindings/clock/sun8i-de2.h -+++ b/include/dt-bindings/clock/sun8i-de2.h -@@ -15,4 +15,7 @@ - #define CLK_MIXER1 7 - #define CLK_WB 8 - -+#define CLK_BUS_ROT 9 -+#define CLK_ROT 10 -+ - #endif /* _DT_BINDINGS_CLOCK_SUN8I_DE2_H_ */ -diff --git a/include/dt-bindings/reset/sun8i-de2.h b/include/dt-bindings/reset/sun8i-de2.h -index 9526017432..1c36a6ac86 100644 ---- a/include/dt-bindings/reset/sun8i-de2.h -+++ b/include/dt-bindings/reset/sun8i-de2.h -@@ -10,5 +10,6 @@ - #define RST_MIXER0 0 - #define RST_MIXER1 1 - #define RST_WB 2 -+#define RST_ROT 3 - - #endif /* _DT_BINDINGS_RESET_SUN8I_DE2_H_ */ --- -2.26.2 - -From bdbf5f21343571af989754c908299854e81f44dd Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Thu, 9 Jul 2020 12:24:41 +0100 -Subject: [PATCH 4/8] arm: dts: sync axp803.dtsi from linux 5.8-rc1 - -Sync the Allwinner axp803 device tree to the latest upstream Linux. - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/axp803.dtsi | 82 ++++++++++++++++++++-------------------- - 1 file changed, 41 insertions(+), 41 deletions(-) - -diff --git a/arch/arm/dts/axp803.dtsi b/arch/arm/dts/axp803.dtsi -index e5eae8bafc..10e9186a76 100644 ---- a/arch/arm/dts/axp803.dtsi -+++ b/arch/arm/dts/axp803.dtsi -@@ -1,44 +1,5 @@ --/* -- * Copyright 2017 Icenowy Zheng -- * -- * This file is dual-licensed: you can use it either under the terms -- * of the GPL or the X11 license, at your option. Note that this dual -- * licensing only applies to this file, and not this project as a -- * whole. -- * -- * a) This file is free software; you can redistribute it and/or -- * modify it under the terms of the GNU General Public License as -- * published by the Free Software Foundation; either version 2 of the -- * License, or (at your option) any later version. -- * -- * This file is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU General Public License for more details. -- * -- * Or, alternatively, -- * -- * b) Permission is hereby granted, free of charge, to any person -- * obtaining a copy of this software and associated documentation -- * files (the "Software"), to deal in the Software without -- * restriction, including without limitation the rights to use, -- * copy, modify, merge, publish, distribute, sublicense, and/or -- * sell copies of the Software, and to permit persons to whom the -- * Software is furnished to do so, subject to the following -- * conditions: -- * -- * The above copyright notice and this permission notice shall be -- * included in all copies or substantial portions of the Software. -- * -- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -- * OTHER DEALINGS IN THE SOFTWARE. -- */ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+// Copyright 2017 Icenowy Zheng - - /* - * AXP803 Integrated Power Management Chip -@@ -49,6 +10,39 @@ - interrupt-controller; - #interrupt-cells = <1>; - -+ ac_power_supply: ac-power-supply { -+ compatible = "x-powers,axp803-ac-power-supply", -+ "x-powers,axp813-ac-power-supply"; -+ status = "disabled"; -+ }; -+ -+ axp_adc: adc { -+ compatible = "x-powers,axp803-adc", "x-powers,axp813-adc"; -+ #io-channel-cells = <1>; -+ }; -+ -+ axp_gpio: gpio { -+ compatible = "x-powers,axp803-gpio", "x-powers,axp813-gpio"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ -+ gpio0_ldo: gpio0-ldo { -+ pins = "GPIO0"; -+ function = "ldo"; -+ }; -+ -+ gpio1_ldo: gpio1-ldo { -+ pins = "GPIO1"; -+ function = "ldo"; -+ }; -+ }; -+ -+ battery_power_supply: battery-power-supply { -+ compatible = "x-powers,axp803-battery-power-supply", -+ "x-powers,axp813-battery-power-supply"; -+ status = "disabled"; -+ }; -+ - regulators { - /* Default work frequency for buck regulators */ - x-powers,dcdc-freq = <3000>; -@@ -152,4 +146,10 @@ - status = "disabled"; - }; - }; -+ -+ usb_power_supply: usb-power-supply { -+ compatible = "x-powers,axp803-usb-power-supply", -+ "x-powers,axp813-usb-power-supply"; -+ status = "disabled"; -+ }; - }; --- -2.26.2 - -From e0f7e9ce1a8a889bf7a1c5842700f0cb368bc81b Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Thu, 9 Jul 2020 12:26:34 +0100 -Subject: [PATCH 5/8] arm: dts: Add new sun50i-a64-cpu-opp.dtsi from Linux - 5.8-rc1 - -Sync the Allwinner A64 CPU operating points dtsi from Linux. - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/sun50i-a64-cpu-opp.dtsi | 75 ++++++++++++++++++++++++++++ - 1 file changed, 75 insertions(+) - create mode 100644 arch/arm/dts/sun50i-a64-cpu-opp.dtsi - -diff --git a/arch/arm/dts/sun50i-a64-cpu-opp.dtsi b/arch/arm/dts/sun50i-a64-cpu-opp.dtsi -new file mode 100644 -index 0000000000..578c37490d ---- /dev/null -+++ b/arch/arm/dts/sun50i-a64-cpu-opp.dtsi -@@ -0,0 +1,75 @@ -+// SPDX-License-Identifier: GPL-2.0 -+/* -+ * Copyright (C) 2020 Vasily khoruzhick -+ */ -+ -+/ { -+ cpu0_opp_table: opp_table0 { -+ compatible = "operating-points-v2"; -+ opp-shared; -+ -+ opp-648000000 { -+ opp-hz = /bits/ 64 <648000000>; -+ opp-microvolt = <1040000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-816000000 { -+ opp-hz = /bits/ 64 <816000000>; -+ opp-microvolt = <1100000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-912000000 { -+ opp-hz = /bits/ 64 <912000000>; -+ opp-microvolt = <1120000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-960000000 { -+ opp-hz = /bits/ 64 <960000000>; -+ opp-microvolt = <1160000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1008000000 { -+ opp-hz = /bits/ 64 <1008000000>; -+ opp-microvolt = <1200000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1056000000 { -+ opp-hz = /bits/ 64 <1056000000>; -+ opp-microvolt = <1240000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1104000000 { -+ opp-hz = /bits/ 64 <1104000000>; -+ opp-microvolt = <1260000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1152000000 { -+ opp-hz = /bits/ 64 <1152000000>; -+ opp-microvolt = <1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ }; -+}; -+ -+&cpu0 { -+ operating-points-v2 = <&cpu0_opp_table>; -+}; -+ -+&cpu1 { -+ operating-points-v2 = <&cpu0_opp_table>; -+}; -+ -+&cpu2 { -+ operating-points-v2 = <&cpu0_opp_table>; -+}; -+ -+&cpu3 { -+ operating-points-v2 = <&cpu0_opp_table>; -+}; --- -2.26.2 - -From b077a5962ba631e198d42c14516426b878c157eb Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Fri, 10 Jul 2020 12:39:21 +0100 -Subject: [PATCH 6/8] arm: dts: Sync the sun50i-a64.dtsi from Linux 5.8-rc1 - -Sync the Allwinner A64 sun50i-a64.dtsi from Linux. - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/sun50i-a64.dtsi | 532 ++++++++++++++++++++++++++++------- - 1 file changed, 434 insertions(+), 98 deletions(-) - -diff --git a/arch/arm/dts/sun50i-a64.dtsi b/arch/arm/dts/sun50i-a64.dtsi -index ff41abc96a..8dfbcd1440 100644 ---- a/arch/arm/dts/sun50i-a64.dtsi -+++ b/arch/arm/dts/sun50i-a64.dtsi -@@ -1,46 +1,7 @@ --/* -- * Copyright (C) 2016 ARM Ltd. -- * based on the Allwinner H3 dtsi: -- * Copyright (C) 2015 Jens Kuske -- * -- * This file is dual-licensed: you can use it either under the terms -- * of the GPL or the X11 license, at your option. Note that this dual -- * licensing only applies to this file, and not this project as a -- * whole. -- * -- * a) This file is free software; you can redistribute it and/or -- * modify it under the terms of the GNU General Public License as -- * published by the Free Software Foundation; either version 2 of the -- * License, or (at your option) any later version. -- * -- * This file is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU General Public License for more details. -- * -- * Or, alternatively, -- * -- * b) Permission is hereby granted, free of charge, to any person -- * obtaining a copy of this software and associated documentation -- * files (the "Software"), to deal in the Software without -- * restriction, including without limitation the rights to use, -- * copy, modify, merge, publish, distribute, sublicense, and/or -- * sell copies of the Software, and to permit persons to whom the -- * Software is furnished to do so, subject to the following -- * conditions: -- * -- * The above copyright notice and this permission notice shall be -- * included in all copies or substantial portions of the Software. -- * -- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -- * OTHER DEALINGS IN THE SOFTWARE. -- */ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+// Copyright (C) 2016 ARM Ltd. -+// based on the Allwinner H3 dtsi: -+// Copyright (C) 2015 Jens Kuske - - #include - #include -@@ -49,6 +10,7 @@ - #include - #include - #include -+#include - - / { - interrupt-parent = <&gic>; -@@ -84,35 +46,47 @@ - #size-cells = <0>; - - cpu0: cpu@0 { -- compatible = "arm,cortex-a53", "arm,armv8"; -+ compatible = "arm,cortex-a53"; - device_type = "cpu"; - reg = <0>; - enable-method = "psci"; - next-level-cache = <&L2>; -+ clocks = <&ccu 21>; -+ clock-names = "cpu"; -+ #cooling-cells = <2>; - }; - - cpu1: cpu@1 { -- compatible = "arm,cortex-a53", "arm,armv8"; -+ compatible = "arm,cortex-a53"; - device_type = "cpu"; - reg = <1>; - enable-method = "psci"; - next-level-cache = <&L2>; -+ clocks = <&ccu 21>; -+ clock-names = "cpu"; -+ #cooling-cells = <2>; - }; - - cpu2: cpu@2 { -- compatible = "arm,cortex-a53", "arm,armv8"; -+ compatible = "arm,cortex-a53"; - device_type = "cpu"; - reg = <2>; - enable-method = "psci"; - next-level-cache = <&L2>; -+ clocks = <&ccu 21>; -+ clock-names = "cpu"; -+ #cooling-cells = <2>; - }; - - cpu3: cpu@3 { -- compatible = "arm,cortex-a53", "arm,armv8"; -+ compatible = "arm,cortex-a53"; - device_type = "cpu"; - reg = <3>; - enable-method = "psci"; - next-level-cache = <&L2>; -+ clocks = <&ccu 21>; -+ clock-names = "cpu"; -+ #cooling-cells = <2>; - }; - - L2: l2-cache { -@@ -139,15 +113,16 @@ - #clock-cells = <0>; - compatible = "fixed-clock"; - clock-frequency = <32768>; -- clock-output-names = "osc32k"; -+ clock-output-names = "ext-osc32k"; - }; - -- iosc: internal-osc-clk { -- #clock-cells = <0>; -- compatible = "fixed-clock"; -- clock-frequency = <16000000>; -- clock-accuracy = <300000000>; -- clock-output-names = "iosc"; -+ pmu { -+ compatible = "arm,cortex-a53-pmu"; -+ interrupts = , -+ , -+ , -+ ; -+ interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>; - }; - - psci { -@@ -155,26 +130,33 @@ - method = "smc"; - }; - -- sound_spdif { -+ sound: sound { - compatible = "simple-audio-card"; -- simple-audio-card,name = "On-board SPDIF"; -+ simple-audio-card,name = "sun50i-a64-audio"; -+ simple-audio-card,format = "i2s"; -+ simple-audio-card,frame-master = <&cpudai>; -+ simple-audio-card,bitclock-master = <&cpudai>; -+ simple-audio-card,mclk-fs = <128>; -+ simple-audio-card,aux-devs = <&codec_analog>; -+ simple-audio-card,routing = -+ "Left DAC", "AIF1 Slot 0 Left", -+ "Right DAC", "AIF1 Slot 0 Right", -+ "AIF1 Slot 0 Left ADC", "Left ADC", -+ "AIF1 Slot 0 Right ADC", "Right ADC"; -+ status = "disabled"; - -- simple-audio-card,cpu { -- sound-dai = <&spdif>; -+ cpudai: simple-audio-card,cpu { -+ sound-dai = <&dai>; - }; - -- simple-audio-card,codec { -- sound-dai = <&spdif_out>; -+ link_codec: simple-audio-card,codec { -+ sound-dai = <&codec>; - }; - }; - -- spdif_out: spdif-out { -- #sound-dai-cells = <0>; -- compatible = "linux,spdif-dit"; +- /* Check if there is a DT name stored in the SPL header and use that. */ +- if (spl != INVALID_SPL_HEADER && spl->dt_name_offset) { +- best_dt_name += spl->dt_name_offset; +- } else { + #ifdef CONFIG_DEFAULT_DEVICE_TREE ++ if (best_dt_name == NULL) + best_dt_name = CONFIG_DEFAULT_DEVICE_TREE; +-#else +- return 0; + #endif - }; -- - timer { - compatible = "arm,armv8-timer"; -+ allwinner,erratum-unknown1; - interrupts = , - ; - }; -+ thermal-zones { -+ cpu_thermal: cpu0-thermal { -+ /* milliseconds */ -+ polling-delay-passive = <0>; -+ polling-delay = <0>; -+ thermal-sensors = <&ths 0>; ++ if (best_dt_name == NULL) { ++ /* No DT name was provided, so accept the first config. */ ++ return 0; ++ } + #ifdef CONFIG_PINE64_DT_SELECTION + /* Differentiate the two Pine64 board DTs by their DRAM size. */ + if (strstr(name, "-pine64") && strstr(best_dt_name, "-pine64")) { + +From patchwork Thu Sep 3 05:07:11 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Samuel Holland +X-Patchwork-Id: 1356311 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=sholland.org +Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; + unprotected) header.d=sholland.org header.i=@sholland.org header.a=rsa-sha256 + header.s=fm3 header.b=YljKqDaX; + dkim=pass (2048-bit key; + unprotected) header.d=messagingengine.com header.i=@messagingengine.com + header.a=rsa-sha256 header.s=fm3 header.b=KFsvPFSQ; + dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4Bhpj50Q5mz9sTR + for ; Thu, 3 Sep 2020 15:07:52 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 921A1822EA; + Thu, 3 Sep 2020 07:07:28 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=sholland.org +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=sholland.org header.i=@sholland.org + header.b="YljKqDaX"; dkim=pass (2048-bit key; + unprotected) header.d=messagingengine.com header.i=@messagingengine.com + header.b="KFsvPFSQ"; dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 29DBC822EA; Thu, 3 Sep 2020 07:07:26 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, + DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, + SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no + version=3.4.2 +Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com + [66.111.4.26]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id AA176822D5 + for ; Thu, 3 Sep 2020 07:07:19 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=sholland.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=samuel@sholland.org +Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) + by mailout.nyi.internal (Postfix) with ESMTP id C1C965C01A4; + Thu, 3 Sep 2020 01:07:18 -0400 (EDT) +Received: from mailfrontend2 ([10.202.2.163]) + by compute3.internal (MEProxy); Thu, 03 Sep 2020 01:07:18 -0400 +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= + from:to:cc:subject:date:message-id:in-reply-to:references + :mime-version:content-transfer-encoding; s=fm3; bh=Qd9EKlOeDxNxU + GjePDGIEyZE9Rx9hOCoFpYSpjLblzg=; b=YljKqDaXzM+KcF2P5M1Qm4ZqIN47C + vZyob9mNeC9Ih6xzht0zmIiswyR4o06F6F75APKEHOLdF98lM16tFq5lm2c0K2C/ + FLv20iU82lyakGbT5y0fX9BUw2B1l6InAM81fN1aIyj6vKXDINvzr0Njek5zd82e + EBZJnaT7r4LgQ3tDupNPvYm+nq18jIibpUUERREvoNh6ktNeYOJbWPpuyRpW06+o + zKpzwXrrMFjcTuczM3DCSk0LchI0IGfF9STJXcWYrkwILpOIIZIn7Pcxbxg3LuPP + EF8OLTHGhbp2yvtbSVxuSyV5XrLKaiMTJNs8Z8T/AVWTfuAfwA146icVg== +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= + messagingengine.com; h=cc:content-transfer-encoding:date:from + :in-reply-to:message-id:mime-version:references:subject:to + :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= + fm3; bh=Qd9EKlOeDxNxUGjePDGIEyZE9Rx9hOCoFpYSpjLblzg=; b=KFsvPFSQ + oz3tuB0IgFDRGBPs9pm02ZFiQW6XW9io0ha6PFYr7sl2irhSUuA89cAncxDeQ99n + /SKVx+jefi15iu+rEUTEdZwFzb8FbfQ6faNIyvJ1RL4m+eH9ifIF0yuc62Qe9Pt2 + Y0+6e1tDB3SyFRABn0Vib5DrnmbMSYeSJZug7TRAxINnW/qdG6pq1ycNPbhvYy7V + L0yBLcV7gP/gwEF5OtEWV2X22kqKFir6fKCsAVDK2KUTmM3ezGifn8h6u7n8ksWC + +4UbNfjcBKfNLHFEEIb7CdNdtixI4oo/XIsA8eDHULQ0v7cF7bZ1KAR+jBSW4Bf9 + CRQNy2hCu5K+Rg== +X-ME-Sender: + +X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudegtddgleduucetufdoteggodetrfdotf + fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen + uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne + cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefurghmuhgv + lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf + frrghtthgvrhhnpeduhfejfedvhffgfeehtefghfeiiefgfeehgfdvvdevfeegjeehjedv + gfejheeuieenucfkphepjedtrddufeehrddugeekrdduhedunecuvehluhhsthgvrhfuih + iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgrmhhuvghlsehshhholhhlrghn + ugdrohhrgh +X-ME-Proxy: + + + +Received: from titanium.stl.sholland.net + (70-135-148-151.lightspeed.stlsmo.sbcglobal.net [70.135.148.151]) + by mail.messagingengine.com (Postfix) with ESMTPA id 56CF53060062; + Thu, 3 Sep 2020 01:07:18 -0400 (EDT) +From: Samuel Holland +To: Jagan Teki , Maxime Ripard +Cc: Andre Przywara , + Peter Robinson , u-boot@lists.denx.de, + Samuel Holland +Subject: [PATCH 3/8] sunxi: board: Simplify Pine A64 DT selection logic +Date: Thu, 3 Sep 2020 00:07:11 -0500 +Message-Id: <20200903050716.48488-4-samuel@sholland.org> +X-Mailer: git-send-email 2.26.2 +In-Reply-To: <20200903050716.48488-1-samuel@sholland.org> +References: <20200903050716.48488-1-samuel@sholland.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +Instead of using an entirely separate matching algorithm, simply update +the name of the DT we want to match. Enabling this logic does not depend +on the FIT config name, only on the initial guess of the board name. + +Importantly, the initial guess must be "sun50i-a64-pine64-plus", because +otherwise the logic would trigger when "sun50i-a64-pine64-lts" was +written to the SPL header. + +Signed-off-by: Samuel Holland +--- + board/sunxi/board.c | 12 ++++-------- + 1 file changed, 4 insertions(+), 8 deletions(-) + +diff --git a/board/sunxi/board.c b/board/sunxi/board.c +index 5c9b811f27a..fb0d5bf4743 100644 +--- a/board/sunxi/board.c ++++ b/board/sunxi/board.c +@@ -914,14 +914,10 @@ int board_fit_config_name_match(const char *name) + return 0; + } + #ifdef CONFIG_PINE64_DT_SELECTION +-/* Differentiate the two Pine64 board DTs by their DRAM size. */ +- if (strstr(name, "-pine64") && strstr(best_dt_name, "-pine64")) { +- if ((gd->ram_size > 512 * 1024 * 1024)) +- return !strstr(name, "plus"); +- else +- return !!strstr(name, "plus"); +- } else { +- return strcmp(name, best_dt_name); ++ else if (strstr(best_dt_name, "-pine64-plus")) { ++ /* Differentiate the Pine A64 boards by their DRAM size. */ ++ if ((gd->ram_size == 512 * 1024 * 1024)) ++ best_dt_name = "sun50i-a64-pine64"; + } + #endif + return strcmp(name, best_dt_name); + +From patchwork Thu Sep 3 05:07:12 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Samuel Holland +X-Patchwork-Id: 1356310 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=sholland.org +Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; + unprotected) header.d=sholland.org header.i=@sholland.org header.a=rsa-sha256 + header.s=fm3 header.b=WQvh0tb6; + dkim=pass (2048-bit key; + unprotected) header.d=messagingengine.com header.i=@messagingengine.com + header.a=rsa-sha256 header.s=fm3 header.b=Va8mMuMz; + dkim-atps=neutral +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 RSA-PSS (4096 bits) server-digest + SHA256) (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4Bhphw0Nkzz9sTR + for ; Thu, 3 Sep 2020 15:07:43 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 19AFA822DF; + Thu, 3 Sep 2020 07:07:27 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=sholland.org +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=sholland.org header.i=@sholland.org + header.b="WQvh0tb6"; dkim=pass (2048-bit key; + unprotected) header.d=messagingengine.com header.i=@messagingengine.com + header.b="Va8mMuMz"; dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 3129B822E3; Thu, 3 Sep 2020 07:07:24 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, + DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, + SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no + version=3.4.2 +Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com + [66.111.4.26]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id D694E822E1 + for ; Thu, 3 Sep 2020 07:07:19 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=sholland.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=samuel@sholland.org +Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) + by mailout.nyi.internal (Postfix) with ESMTP id 1C9B95C0116; + Thu, 3 Sep 2020 01:07:19 -0400 (EDT) +Received: from mailfrontend2 ([10.202.2.163]) + by compute3.internal (MEProxy); Thu, 03 Sep 2020 01:07:19 -0400 +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= + from:to:cc:subject:date:message-id:in-reply-to:references + :mime-version:content-transfer-encoding; s=fm3; bh=CNkIsGtVD92kV + ynV0NXjTV4vykOq+sdspxFol5f0iNM=; b=WQvh0tb6tyqtZYusFC0NyOcSeWaQm + ikcA+euqToY6scf0d256r+20fb4HnTosS+vXbhpF5vlo1hBhc2RW2/e+dR3a3AKH + qb8j3UwBWhpnwwZMS8HqUob5Cfq1BxHU1+/2tjRXvlMxDxNd/HvUoRlLBhfK57OA + Ln6MfWcRmxHlq5Js5MGAD9hRdzkPrnDX4x/NdRttkUaH/WMSGNEO0TnKW88PYXsE + 8u0eiuJQWWLED8nBAxf89vvVUf7o+It6gx5i+r5Bjl/BE5Ykj4O4kpMX2MeiB+Zh + KjYjivDQw8wmG4CrFKPCq4Bd/RoSQd9zHYBp6QuYpvY80vw+jLX7oVwMw== +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= + messagingengine.com; h=cc:content-transfer-encoding:date:from + :in-reply-to:message-id:mime-version:references:subject:to + :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= + fm3; bh=CNkIsGtVD92kVynV0NXjTV4vykOq+sdspxFol5f0iNM=; b=Va8mMuMz + othxHX11xn91XUTb1pYRnk4BO4zhPNKy7f+RU+S4/3DaYnmV9zl4x03LblsUWZRs + bnICHr20DS5YKUcqT9ag5zm1ocAxwJQGTc/SnTpWkZsJXR8unpsmm89jDyV+w5dM + p3YUeZ3AhxjEFHJXhqUnnOIXSLXGzYsnWA+szWf0dHI7tpZJqaV5O4X8xTk2X5cp + 2siDwjLGLi7PUtB/vcNZmOOZQbROGonW6mu2iNurHnrBUk4gOOmQhmeiEkjJb9lk + +MfMZsLXllNr8/o7323d6iP90v1scxaBASDC+q2zzEmUVAmU/Y/fyH0B6frHJy3O + QTcFTnYy45X3Zw== +X-ME-Sender: + +X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudegtddgleduucetufdoteggodetrfdotf + fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen + uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne + cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefurghmuhgv + lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf + frrghtthgvrhhnpeduhfejfedvhffgfeehtefghfeiiefgfeehgfdvvdevfeegjeehjedv + gfejheeuieenucfkphepjedtrddufeehrddugeekrdduhedunecuvehluhhsthgvrhfuih + iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgrmhhuvghlsehshhholhhlrghn + ugdrohhrgh +X-ME-Proxy: + + + +Received: from titanium.stl.sholland.net + (70-135-148-151.lightspeed.stlsmo.sbcglobal.net [70.135.148.151]) + by mail.messagingengine.com (Postfix) with ESMTPA id A21AB306005B; + Thu, 3 Sep 2020 01:07:18 -0400 (EDT) +From: Samuel Holland +To: Jagan Teki , Maxime Ripard +Cc: Andre Przywara , + Peter Robinson , u-boot@lists.denx.de, + Samuel Holland +Subject: [PATCH 4/8] sunxi: board: Add PinePhone DT selection logic +Date: Thu, 3 Sep 2020 00:07:12 -0500 +Message-Id: <20200903050716.48488-5-samuel@sholland.org> +X-Mailer: git-send-email 2.26.2 +In-Reply-To: <20200903050716.48488-1-samuel@sholland.org> +References: <20200903050716.48488-1-samuel@sholland.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +There are two different publicly-released revisions of the PinePhone +hardware, versions 1.1 and 1.2; and they need different device trees. +Since some GPIO pins were rerouted, we can use that to distinguish +between them. + +Signed-off-by: Samuel Holland +--- + arch/arm/mach-sunxi/Kconfig | 7 +++++++ + board/sunxi/board.c | 21 +++++++++++++++++++++ + 2 files changed, 28 insertions(+) + +diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig +index be0822bfb7d..8421f3b6854 100644 +--- a/arch/arm/mach-sunxi/Kconfig ++++ b/arch/arm/mach-sunxi/Kconfig +@@ -1010,4 +1010,11 @@ config PINE64_DT_SELECTION + option, the device tree selection code specific to Pine64 which + utilizes the DRAM size will be enabled. + ++config PINEPHONE_DT_SELECTION ++ bool "Enable PinePhone device tree selection code" ++ depends on MACH_SUN50I ++ help ++ Enable this option to automatically select the device tree for the ++ correct PinePhone hardware revision during boot. + -+ cooling-maps { -+ map0 { -+ trip = <&cpu_alert0>; -+ cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, -+ <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, -+ <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, -+ <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; -+ }; -+ map1 { -+ trip = <&cpu_alert1>; -+ cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, -+ <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, -+ <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, -+ <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; -+ }; -+ }; + endif +diff --git a/board/sunxi/board.c b/board/sunxi/board.c +index fb0d5bf4743..3d64ed18664 100644 +--- a/board/sunxi/board.c ++++ b/board/sunxi/board.c +@@ -27,6 +27,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -920,6 +921,26 @@ int board_fit_config_name_match(const char *name) + best_dt_name = "sun50i-a64-pine64"; + } + #endif ++#ifdef CONFIG_PINEPHONE_DT_SELECTION ++ else if (strstr(best_dt_name, "-pinephone")) { ++ /* Differentiate the PinePhone revisions by GPIO inputs. */ ++ prcm_apb0_enable(PRCM_APB0_GATE_PIO); ++ sunxi_gpio_set_pull(SUNXI_GPL(6), SUNXI_GPIO_PULL_UP); ++ sunxi_gpio_set_cfgpin(SUNXI_GPL(6), SUNXI_GPIO_INPUT); ++ udelay(100); + -+ trips { -+ cpu_alert0: cpu_alert0 { -+ /* milliCelsius */ -+ temperature = <75000>; -+ hysteresis = <2000>; -+ type = "passive"; -+ }; ++ /* PL6 is pulled low by the modem on v1.2. */ ++ if (gpio_get_value(SUNXI_GPL(6)) == 0) ++ best_dt_name = "sun50i-a64-pinephone-1.2"; ++ else ++ best_dt_name = "sun50i-a64-pinephone-1.1"; + -+ cpu_alert1: cpu_alert1 { -+ /* milliCelsius */ -+ temperature = <90000>; -+ hysteresis = <2000>; -+ type = "hot"; -+ }; ++ sunxi_gpio_set_cfgpin(SUNXI_GPL(6), SUNXI_GPIO_DISABLE); ++ sunxi_gpio_set_pull(SUNXI_GPL(6), SUNXI_GPIO_PULL_DISABLE); ++ prcm_apb0_disable(PRCM_APB0_GATE_PIO); ++ } ++#endif + -+ cpu_crit: cpu_crit { -+ /* milliCelsius */ -+ temperature = <110000>; -+ hysteresis = <2000>; -+ type = "critical"; -+ }; -+ }; -+ }; + return strcmp(name, best_dt_name); + } + #endif + +From patchwork Thu Sep 3 05:07:13 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Samuel Holland +X-Patchwork-Id: 1356314 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=sholland.org +Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; + unprotected) header.d=sholland.org header.i=@sholland.org header.a=rsa-sha256 + header.s=fm3 header.b=fyCJtExp; + dkim=pass (2048-bit key; + unprotected) header.d=messagingengine.com header.i=@messagingengine.com + header.a=rsa-sha256 header.s=fm3 header.b=B5Js1Nb8; + dkim-atps=neutral +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4Bhpjn2MLBz9sTR + for ; Thu, 3 Sep 2020 15:08:29 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 774738230A; + Thu, 3 Sep 2020 07:07:33 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=sholland.org +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=sholland.org header.i=@sholland.org + header.b="fyCJtExp"; dkim=pass (2048-bit key; + unprotected) header.d=messagingengine.com header.i=@messagingengine.com + header.b="B5Js1Nb8"; dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 43189822ED; Thu, 3 Sep 2020 07:07:27 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, + DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, + SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no + version=3.4.2 +Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com + [66.111.4.26]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 2BF26822D9 + for ; Thu, 3 Sep 2020 07:07:21 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=sholland.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=samuel@sholland.org +Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) + by mailout.nyi.internal (Postfix) with ESMTP id 672025C018A; + Thu, 3 Sep 2020 01:07:19 -0400 (EDT) +Received: from mailfrontend2 ([10.202.2.163]) + by compute3.internal (MEProxy); Thu, 03 Sep 2020 01:07:19 -0400 +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= + from:to:cc:subject:date:message-id:in-reply-to:references + :mime-version:content-transfer-encoding; s=fm3; bh=azt3bcG2gyjJM + Z+euNV8r3HcVvCpV+eSxdiwdmzQYjE=; b=fyCJtExpAf8Pds8sXBs5pz5z9Werb + vqBSzut0Ck+pcCvap7NpVy7HIRtLqRZZ5TVdGQrBdCyjMYPaBcpnxw/mfUNJKoX9 + WjOBrSnHpTrRp42ZQmJhQhQwBcX/s0j54ruprCfSqKSDuTOBG1N1JvKxI/PpfY6r + SsSEbwLKYq1RtK4noXm6JikphM9ME5i5XlR5n4XPsXPdM3UhM9DZXrkVwtWp+NyK + 4Xz63Is8oAxwJZAmqv049v/YeMe/Rsf9FY93zxcnQyZVoOHuW1s17AsX7jF8wDRy + xqvpvT8c3cJYXaFLGLrY+nmcGoKIjQSszLh9y5NwbGmjlEElJCcUUJW1A== +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= + messagingengine.com; h=cc:content-transfer-encoding:date:from + :in-reply-to:message-id:mime-version:references:subject:to + :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= + fm3; bh=azt3bcG2gyjJMZ+euNV8r3HcVvCpV+eSxdiwdmzQYjE=; b=B5Js1Nb8 + 5VzNH4aOuAW1FHK3OmKXRhz2sqhORkqO2K1N+kVfuPWZeATNjSIGEHwqkBJeJDNc + i+/y18eeCQg5sWkt3YCGaFv//m+LNamP1DRTkwLglswewvGqj0zfgN4MjMJvBWt3 + 0bbdP8+D9o1geSld8IyI3lyRZgu7QN+3vJs4xxyTQL6xTOg6VizhNwm6nwSSl2u8 + O6WzLWqrShbb6PD7Lqy5FrJ+BiqwRR+QrRp1JI86QDXssPJh1CtMiF2LnrkmwPxB + DSp3hr1nqudSNopltfwdUyNu3GdkGbMCE8Iv+4KIZpD8oRH12hS19aRtIqosAuXm + 1Ljrqzx4Vp/yNA== +X-ME-Sender: + +X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudegtddgleduucetufdoteggodetrfdotf + fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen + uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne + cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefurghmuhgv + lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf + frrghtthgvrhhnpeduhfejfedvhffgfeehtefghfeiiefgfeehgfdvvdevfeegjeehjedv + gfejheeuieenucfkphepjedtrddufeehrddugeekrdduhedunecuvehluhhsthgvrhfuih + iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgrmhhuvghlsehshhholhhlrghn + ugdrohhrgh +X-ME-Proxy: + + + +Received: from titanium.stl.sholland.net + (70-135-148-151.lightspeed.stlsmo.sbcglobal.net [70.135.148.151]) + by mail.messagingengine.com (Postfix) with ESMTPA id EE48F306005E; + Thu, 3 Sep 2020 01:07:18 -0400 (EDT) +From: Samuel Holland +To: Jagan Teki , Maxime Ripard +Cc: Andre Przywara , + Peter Robinson , u-boot@lists.denx.de, + Samuel Holland +Subject: [PATCH 5/8] sunxi: board: Save the chosen DT name in the SPL header +Date: Thu, 3 Sep 2020 00:07:13 -0500 +Message-Id: <20200903050716.48488-6-samuel@sholland.org> +X-Mailer: git-send-email 2.26.2 +In-Reply-To: <20200903050716.48488-1-samuel@sholland.org> +References: <20200903050716.48488-1-samuel@sholland.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +This overwrites the name loaded from the SPL image. It will be different +if there was previously no name provided, or if a more accurate name was +determined by the board variant selection logic. This means that the DT +name in the SPL header now always matches the DT appended to U-Boot. + +Signed-off-by: Samuel Holland +--- + board/sunxi/board.c | 27 ++++++++++++++++++++++++++- + 1 file changed, 26 insertions(+), 1 deletion(-) + +diff --git a/board/sunxi/board.c b/board/sunxi/board.c +index 3d64ed18664..eaa40a1ea96 100644 +--- a/board/sunxi/board.c ++++ b/board/sunxi/board.c +@@ -331,6 +331,21 @@ static const char *get_spl_dt_name(void) + return NULL; + } + ++static void set_spl_dt_name(const char *name) ++{ ++ struct boot_file_head *spl = get_spl_header(SPL_ENV_HEADER_VERSION); + -+ gpu0_thermal: gpu0-thermal { -+ /* milliseconds */ -+ polling-delay-passive = <0>; -+ polling-delay = <0>; -+ thermal-sensors = <&ths 1>; -+ }; ++ if (spl == INVALID_SPL_HEADER) ++ return; + -+ gpu1_thermal: gpu1-thermal { -+ /* milliseconds */ -+ polling-delay-passive = <0>; -+ polling-delay = <0>; -+ thermal-sensors = <&ths 2>; -+ }; -+ }; ++ /* Promote the header version for U-Boot proper, if needed. */ ++ if (spl->spl_signature[3] < SPL_DT_HEADER_VERSION) ++ spl->spl_signature[3] = SPL_DT_HEADER_VERSION; + - soc { - compatible = "simple-bus"; - #address-cells = <1>; - #size-cells = <1>; - ranges; - -- de2@1000000 { -+ bus@1000000 { - compatible = "allwinner,sun50i-a64-de2"; - reg = <0x1000000 0x400000>; - allwinner,sram = <&de2_sram 1>; -@@ -201,16 +246,28 @@ - - display_clocks: clock@0 { - compatible = "allwinner,sun50i-a64-de2-clk"; -- reg = <0x0 0x100000>; -- clocks = <&ccu CLK_DE>, -- <&ccu CLK_BUS_DE>; -- clock-names = "mod", -- "bus"; -+ reg = <0x0 0x10000>; -+ clocks = <&ccu CLK_BUS_DE>, -+ <&ccu CLK_DE>; -+ clock-names = "bus", -+ "mod"; - resets = <&ccu RST_BUS_DE>; - #clock-cells = <1>; - #reset-cells = <1>; - }; - -+ rotate: rotate@20000 { -+ compatible = "allwinner,sun50i-a64-de2-rotate", -+ "allwinner,sun8i-a83t-de2-rotate"; -+ reg = <0x20000 0x10000>; -+ interrupts = ; -+ clocks = <&display_clocks CLK_BUS_ROT>, -+ <&display_clocks CLK_ROT>; -+ clock-names = "bus", -+ "mod"; -+ resets = <&display_clocks RST_ROT>; -+ }; ++ strcpy((char *)&spl->string_pool, name); ++ spl->dt_name_offset = offsetof(struct boot_file_head, string_pool); ++} + - mixer0: mixer@100000 { - compatible = "allwinner,sun50i-a64-de2-mixer-0"; - reg = <0x100000 0x100000>; -@@ -225,11 +282,19 @@ - #size-cells = <0>; + int dram_init(void) + { + struct boot_file_head *spl = get_spl_header(SPL_DRAM_HEADER_VERSION); +@@ -904,6 +919,7 @@ int ft_board_setup(void *blob, struct bd_info *bd) + int board_fit_config_name_match(const char *name) + { + const char *best_dt_name = get_spl_dt_name(); ++ int ret; - mixer0_out: port@1 { -+ #address-cells = <1>; -+ #size-cells = <0>; - reg = <1>; + #ifdef CONFIG_DEFAULT_DEVICE_TREE + if (best_dt_name == NULL) +@@ -941,6 +957,15 @@ int board_fit_config_name_match(const char *name) + } + #endif -- mixer0_out_tcon0: endpoint { -+ mixer0_out_tcon0: endpoint@0 { -+ reg = <0>; - remote-endpoint = <&tcon0_in_mixer0>; - }; +- return strcmp(name, best_dt_name); ++ ret = strcmp(name, best_dt_name); + -+ mixer0_out_tcon1: endpoint@1 { -+ reg = <1>; -+ remote-endpoint = <&tcon1_in_mixer0>; -+ }; - }; - }; - }; -@@ -248,9 +313,17 @@ - #size-cells = <0>; - - mixer1_out: port@1 { -+ #address-cells = <1>; -+ #size-cells = <0>; - reg = <1>; - -- mixer1_out_tcon1: endpoint { -+ mixer1_out_tcon0: endpoint@0 { -+ reg = <0>; -+ remote-endpoint = <&tcon0_in_mixer1>; -+ }; ++ /* ++ * If one of the FIT configurations matches the most accurate DT name, ++ * update the SPL header to provide that DT name to U-Boot proper. ++ */ ++ if (ret == 0) ++ set_spl_dt_name(best_dt_name); + -+ mixer1_out_tcon1: endpoint@1 { -+ reg = <1>; - remote-endpoint = <&tcon1_in_mixer1>; - }; - }; -@@ -259,8 +332,7 @@ - }; ++ return ret; + } + #endif + +From patchwork Thu Sep 3 05:07:14 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Samuel Holland +X-Patchwork-Id: 1356313 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=sholland.org +Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; + unprotected) header.d=sholland.org header.i=@sholland.org header.a=rsa-sha256 + header.s=fm3 header.b=Ps0W2fd7; + dkim=pass (2048-bit key; + unprotected) header.d=messagingengine.com header.i=@messagingengine.com + header.a=rsa-sha256 header.s=fm3 header.b=irLh9odg; + dkim-atps=neutral +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4BhpjY18DVz9sTR + for ; Thu, 3 Sep 2020 15:08:17 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 1375E82300; + Thu, 3 Sep 2020 07:07:32 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=sholland.org +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=sholland.org header.i=@sholland.org + header.b="Ps0W2fd7"; dkim=pass (2048-bit key; + unprotected) header.d=messagingengine.com header.i=@messagingengine.com + header.b="irLh9odg"; dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id E9DCE822E1; Thu, 3 Sep 2020 07:07:26 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, + DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, + SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no + version=3.4.2 +Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com + [66.111.4.26]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 2CC5D822DF + for ; Thu, 3 Sep 2020 07:07:21 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=sholland.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=samuel@sholland.org +Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) + by mailout.nyi.internal (Postfix) with ESMTP id AAA455C0197; + Thu, 3 Sep 2020 01:07:19 -0400 (EDT) +Received: from mailfrontend2 ([10.202.2.163]) + by compute3.internal (MEProxy); Thu, 03 Sep 2020 01:07:19 -0400 +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= + from:to:cc:subject:date:message-id:in-reply-to:references + :mime-version:content-transfer-encoding; s=fm3; bh=YJZBYh6lhnaT4 + or+KKTYoX0BgbruFrnszv2AxRFjCUg=; b=Ps0W2fd7vmO9tBRewK6ov5Y2vWsh9 + oAAVK6vPK0hEzUkkeBIkhSenj5xlmR2HCeP5LxQU+Vgty5CzLJnc48U8lCQwGRFR + ZZ6tAiD9/vOtdVCbU2dRH7WK3uoAEi4AB688do5c3H3KhS8ZN6N7vsakr50TbczK + beuX76xciz0QEuRhJUFbnK9EYpV8/CDS1OFv6P+kA6OSIb71gm9FeFgdHHpmdQ/U + 7sE6vbkMYhL7pFMzeBCYWSfUWF6NK3gfJApDaxFqR1KBlszLuGbIXLVYWImA3WV8 + sFDNZWGk2swSOB1ivq+Xvb2WTlPidjY0OrROgggZcyDHPRFEoZaS1ezAA== +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= + messagingengine.com; h=cc:content-transfer-encoding:date:from + :in-reply-to:message-id:mime-version:references:subject:to + :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= + fm3; bh=YJZBYh6lhnaT4or+KKTYoX0BgbruFrnszv2AxRFjCUg=; b=irLh9odg + 4mUJO3vUBGyeYD/WBs8BrulYezzsNoTAJp4uGEv0b9KyxbofUjok4+liYvAT/QZa + ED/iKo1bqgGmEwNPLoM0YORd0pXRd5jyv9W53Z96qzGsNOe0iGkJtSlOMXF3Lrfl + aIpGPRSMoRkqztR6oWBAEHeCm3NCFY4LDzzCoPFQqdcWmiDl+Wi3YfpApRGHdL3v + 4XVOruQFZlZUHZPp42VOzgbJyz+uWB3Z/RN2y0P7Lof1CrYtsWNftV4LuXDQ70VZ + P9TlSWjk75qTa1dqHdj/cvbi5WFBqa4FJKgCCV1OgCCEAc1ZGLhPBVDjt4W7FHJh + hNPlKS0liPCmGQ== +X-ME-Sender: + +X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudegtddgleduucetufdoteggodetrfdotf + fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen + uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne + cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefurghmuhgv + lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf + frrghtthgvrhhnpeduhfejfedvhffgfeehtefghfeiiefgfeehgfdvvdevfeegjeehjedv + gfejheeuieenucfkphepjedtrddufeehrddugeekrdduhedunecuvehluhhsthgvrhfuih + iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgrmhhuvghlsehshhholhhlrghn + ugdrohhrgh +X-ME-Proxy: + + + +Received: from titanium.stl.sholland.net + (70-135-148-151.lightspeed.stlsmo.sbcglobal.net [70.135.148.151]) + by mail.messagingengine.com (Postfix) with ESMTPA id 4678A306005B; + Thu, 3 Sep 2020 01:07:19 -0400 (EDT) +From: Samuel Holland +To: Jagan Teki , Maxime Ripard +Cc: Andre Przywara , + Peter Robinson , u-boot@lists.denx.de, + Samuel Holland +Subject: [PATCH 6/8] sunxi: board: Set fdtfile to match the DT chosen by SPL +Date: Thu, 3 Sep 2020 00:07:14 -0500 +Message-Id: <20200903050716.48488-7-samuel@sholland.org> +X-Mailer: git-send-email 2.26.2 +In-Reply-To: <20200903050716.48488-1-samuel@sholland.org> +References: <20200903050716.48488-1-samuel@sholland.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +Previously, fdtfile was always the value in CONFIG_DEFAULT_DEVICE_TREE. +This meant that, regardless of the DT chosen by SPL (either by changing +the header in the image or by the selection code at runtime), Linux +always used the default DT. + +By using the name from the SPL header (which, because of the previous +commit, always matches the DT used by U-Boot proper), Linux also sees +the same board as U-Boot/SPL, even if the boot script later loads a DT +from disk. + +Signed-off-by: Samuel Holland +--- + board/sunxi/board.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/board/sunxi/board.c b/board/sunxi/board.c +index eaa40a1ea96..5457b28e135 100644 +--- a/board/sunxi/board.c ++++ b/board/sunxi/board.c +@@ -870,6 +870,7 @@ static void setup_environment(const void *fdt) - syscon: syscon@1c00000 { -- compatible = "allwinner,sun50i-a64-system-control", -- "syscon"; -+ compatible = "allwinner,sun50i-a64-system-control"; - reg = <0x01c00000 0x1000>; - #address-cells = <1>; - #size-cells = <1>; -@@ -278,6 +350,20 @@ - reg = <0x0000 0x28000>; - }; - }; + int misc_init_r(void) + { ++ const char *spl_dt_name; + uint boot; + + env_set("fel_booted", NULL); +@@ -888,6 +889,16 @@ int misc_init_r(void) + env_set("mmc_bootdev", "1"); + } + ++ /* Set fdtfile to match the FIT configuration chosen in SPL. */ ++ spl_dt_name = get_spl_dt_name(); ++ if (spl_dt_name) { ++ char *prefix = IS_ENABLED(CONFIG_ARM64) ? "allwinner/" : ""; ++ char str[64]; + -+ sram_c1: sram@1d00000 { -+ compatible = "mmio-sram"; -+ reg = <0x01d00000 0x40000>; -+ #address-cells = <1>; -+ #size-cells = <1>; -+ ranges = <0 0x01d00000 0x40000>; ++ snprintf(str, sizeof(str), "%s%s.dtb", prefix, spl_dt_name); ++ env_set("fdtfile", str); ++ } + -+ ve_sram: sram-section@0 { -+ compatible = "allwinner,sun50i-a64-sram-c1", -+ "allwinner,sun4i-a10-sram-c1"; -+ reg = <0x000000 0x40000>; -+ }; -+ }; - }; + setup_environment(gd->fdt_blob); - dma: dma-controller@1c02000 { -@@ -299,6 +385,7 @@ - clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>; - clock-names = "ahb", "tcon-ch0"; - clock-output-names = "tcon-pixel-clock"; -+ #clock-cells = <0>; - resets = <&ccu RST_BUS_TCON0>, <&ccu RST_BUS_LVDS>; - reset-names = "lcd", "lvds"; - -@@ -315,12 +402,23 @@ - reg = <0>; - remote-endpoint = <&mixer0_out_tcon0>; - }; -+ -+ tcon0_in_mixer1: endpoint@1 { -+ reg = <1>; -+ remote-endpoint = <&mixer1_out_tcon0>; -+ }; - }; - - tcon0_out: port@1 { - #address-cells = <1>; - #size-cells = <0>; - reg = <1>; -+ -+ tcon0_out_dsi: endpoint@1 { -+ reg = <1>; -+ remote-endpoint = <&dsi_in_tcon0>; -+ allwinner,tcon-channel = <1>; -+ }; - }; - }; - }; -@@ -340,9 +438,17 @@ - #size-cells = <0>; - - tcon1_in: port@0 { -+ #address-cells = <1>; -+ #size-cells = <0>; - reg = <0>; - -- tcon1_in_mixer1: endpoint { -+ tcon1_in_mixer0: endpoint@0 { -+ reg = <0>; -+ remote-endpoint = <&mixer0_out_tcon1>; -+ }; -+ -+ tcon1_in_mixer1: endpoint@1 { -+ reg = <1>; - remote-endpoint = <&mixer1_out_tcon1>; - }; - }; -@@ -360,6 +466,17 @@ - }; - }; - -+ video-codec@1c0e000 { -+ compatible = "allwinner,sun50i-a64-video-engine"; -+ reg = <0x01c0e000 0x1000>; -+ clocks = <&ccu CLK_BUS_VE>, <&ccu CLK_VE>, -+ <&ccu CLK_DRAM_VE>; -+ clock-names = "ahb", "mod", "ram"; -+ resets = <&ccu RST_BUS_VE>; -+ interrupts = ; -+ allwinner,sram = <&ve_sram 1>; -+ }; -+ - mmc0: mmc@1c0f000 { - compatible = "allwinner,sun50i-a64-mmc"; - reg = <0x01c0f000 0x1000>; -@@ -405,6 +522,31 @@ - sid: eeprom@1c14000 { - compatible = "allwinner,sun50i-a64-sid"; - reg = <0x1c14000 0x400>; -+ #address-cells = <1>; -+ #size-cells = <1>; -+ -+ ths_calibration: thermal-sensor-calibration@34 { -+ reg = <0x34 0x8>; -+ }; -+ }; -+ -+ crypto: crypto@1c15000 { -+ compatible = "allwinner,sun50i-a64-crypto"; -+ reg = <0x01c15000 0x1000>; -+ interrupts = ; -+ clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>; -+ clock-names = "bus", "mod"; -+ resets = <&ccu RST_BUS_CE>; -+ }; -+ -+ msgbox: mailbox@1c17000 { -+ compatible = "allwinner,sun50i-a64-msgbox", -+ "allwinner,sun6i-a31-msgbox"; -+ reg = <0x01c17000 0x1000>; -+ clocks = <&ccu CLK_BUS_MSGBOX>; -+ resets = <&ccu RST_BUS_MSGBOX>; -+ interrupts = ; -+ #mbox-cells = <1>; - }; - - usb_otg: usb@1c19000 { -@@ -417,6 +559,7 @@ - phys = <&usbphy 0>; - phy-names = "usb"; - extcon = <&usbphy 0>; -+ dr_mode = "otg"; - status = "disabled"; - }; - -@@ -491,7 +634,7 @@ - ccu: clock@1c20000 { - compatible = "allwinner,sun50i-a64-ccu"; - reg = <0x01c20000 0x400>; -- clocks = <&osc24M>, <&osc32k>; -+ clocks = <&osc24M>, <&rtc 0>; - clock-names = "hosc", "losc"; - #clock-cells = <1>; - #reset-cells = <1>; -@@ -503,22 +646,50 @@ - interrupts = , - , - ; -- clocks = <&ccu 58>; -+ clocks = <&ccu CLK_BUS_PIO>, <&osc24M>, <&rtc 0>; -+ clock-names = "apb", "hosc", "losc"; - gpio-controller; - #gpio-cells = <3>; - interrupt-controller; - #interrupt-cells = <3>; - -- i2c0_pins: i2c0_pins { -+ csi_pins: csi-pins { -+ pins = "PE0", "PE2", "PE3", "PE4", "PE5", "PE6", -+ "PE7", "PE8", "PE9", "PE10", "PE11"; -+ function = "csi"; -+ }; -+ -+ /omit-if-no-ref/ -+ csi_mclk_pin: csi-mclk-pin { -+ pins = "PE1"; -+ function = "csi"; -+ }; -+ -+ i2c0_pins: i2c0-pins { - pins = "PH0", "PH1"; - function = "i2c0"; - }; - -- i2c1_pins: i2c1_pins { -+ i2c1_pins: i2c1-pins { - pins = "PH2", "PH3"; - function = "i2c1"; - }; - -+ i2c2_pins: i2c2-pins { -+ pins = "PE14", "PE15"; -+ function = "i2c2"; -+ }; -+ -+ /omit-if-no-ref/ -+ lcd_rgb666_pins: lcd-rgb666-pins { -+ pins = "PD0", "PD1", "PD2", "PD3", "PD4", -+ "PD5", "PD6", "PD7", "PD8", "PD9", -+ "PD10", "PD11", "PD12", "PD13", -+ "PD14", "PD15", "PD16", "PD17", -+ "PD18", "PD19", "PD20", "PD21"; -+ function = "lcd0"; -+ }; -+ - mmc0_pins: mmc0-pins { - pins = "PF0", "PF1", "PF2", "PF3", - "PF4", "PF5"; -@@ -551,19 +722,19 @@ - bias-pull-up; - }; - -- pwm_pin: pwm_pin { -+ pwm_pin: pwm-pin { - pins = "PD22"; - function = "pwm"; - }; - -- rmii_pins: rmii_pins { -+ rmii_pins: rmii-pins { - pins = "PD10", "PD11", "PD13", "PD14", "PD17", - "PD18", "PD19", "PD20", "PD22", "PD23"; - function = "emac"; - drive-strength = <40>; - }; - -- rgmii_pins: rgmii_pins { -+ rgmii_pins: rgmii-pins { - pins = "PD8", "PD9", "PD10", "PD11", "PD12", - "PD13", "PD15", "PD16", "PD17", "PD18", - "PD19", "PD20", "PD21", "PD22", "PD23"; -@@ -571,17 +742,17 @@ - drive-strength = <40>; - }; - -- spdif_tx_pin: spdif { -+ spdif_tx_pin: spdif-tx-pin { - pins = "PH8"; - function = "spdif"; - }; - -- spi0_pins: spi0 { -+ spi0_pins: spi0-pins { - pins = "PC0", "PC1", "PC2", "PC3"; - function = "spi0"; - }; - -- spi1_pins: spi1 { -+ spi1_pins: spi1-pins { - pins = "PD0", "PD1", "PD2", "PD3"; - function = "spi1"; - }; -@@ -591,12 +762,12 @@ - function = "uart0"; - }; - -- uart1_pins: uart1_pins { -+ uart1_pins: uart1-pins { - pins = "PG6", "PG7"; - function = "uart1"; - }; - -- uart1_rts_cts_pins: uart1_rts_cts_pins { -+ uart1_rts_cts_pins: uart1-rts-cts-pins { - pins = "PG8", "PG9"; - function = "uart1"; - }; -@@ -638,6 +809,14 @@ - status = "disabled"; - }; - -+ lradc: lradc@1c21800 { -+ compatible = "allwinner,sun50i-a64-lradc", -+ "allwinner,sun8i-a83t-r-lradc"; -+ reg = <0x01c21800 0x400>; -+ interrupts = ; -+ status = "disabled"; -+ }; -+ - i2s0: i2s@1c22000 { - #sound-dai-cells = <0>; - compatible = "allwinner,sun50i-a64-i2s", -@@ -666,6 +845,41 @@ - status = "disabled"; - }; - -+ dai: dai@1c22c00 { -+ #sound-dai-cells = <0>; -+ compatible = "allwinner,sun50i-a64-codec-i2s"; -+ reg = <0x01c22c00 0x200>; -+ interrupts = ; -+ clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>; -+ clock-names = "apb", "mod"; -+ resets = <&ccu RST_BUS_CODEC>; -+ dmas = <&dma 15>, <&dma 15>; -+ dma-names = "rx", "tx"; -+ status = "disabled"; -+ }; -+ -+ codec: codec@1c22e00 { -+ #sound-dai-cells = <0>; -+ compatible = "allwinner,sun8i-a33-codec"; -+ reg = <0x01c22e00 0x600>; -+ interrupts = ; -+ clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>; -+ clock-names = "bus", "mod"; -+ status = "disabled"; -+ }; -+ -+ ths: thermal-sensor@1c25000 { -+ compatible = "allwinner,sun50i-a64-ths"; -+ reg = <0x01c25000 0x100>; -+ clocks = <&ccu CLK_BUS_THS>, <&ccu CLK_THS>; -+ clock-names = "bus", "mod"; -+ interrupts = ; -+ resets = <&ccu RST_BUS_THS>; -+ nvmem-cells = <&ths_calibration>; -+ nvmem-cell-names = "calibration"; -+ #thermal-sensor-cells = <1>; -+ }; -+ - uart0: serial@1c28000 { - compatible = "snps,dw-apb-uart"; - reg = <0x01c28000 0x400>; -@@ -727,6 +941,8 @@ - interrupts = ; - clocks = <&ccu CLK_BUS_I2C0>; - resets = <&ccu RST_BUS_I2C0>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c0_pins>; - status = "disabled"; - #address-cells = <1>; - #size-cells = <0>; -@@ -738,6 +954,8 @@ - interrupts = ; - clocks = <&ccu CLK_BUS_I2C1>; - resets = <&ccu RST_BUS_I2C1>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c1_pins>; - status = "disabled"; - #address-cells = <1>; - #size-cells = <0>; -@@ -749,12 +967,13 @@ - interrupts = ; - clocks = <&ccu CLK_BUS_I2C2>; - resets = <&ccu RST_BUS_I2C2>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c2_pins>; - status = "disabled"; - #address-cells = <1>; - #size-cells = <0>; - }; - -- - spi0: spi@1c68000 { - compatible = "allwinner,sun8i-h3-spi"; - reg = <0x01c68000 0x1000>; -@@ -808,6 +1027,28 @@ - }; - }; - -+ mali: gpu@1c40000 { -+ compatible = "allwinner,sun50i-a64-mali", "arm,mali-400"; -+ reg = <0x01c40000 0x10000>; -+ interrupts = , -+ , -+ , -+ , -+ , -+ , -+ ; -+ interrupt-names = "gp", -+ "gpmmu", -+ "pp0", -+ "ppmmu0", -+ "pp1", -+ "ppmmu1", -+ "pmu"; -+ clocks = <&ccu CLK_BUS_GPU>, <&ccu CLK_GPU>; -+ clock-names = "bus", "core"; -+ resets = <&ccu RST_BUS_GPU>; -+ }; -+ - gic: interrupt-controller@1c81000 { - compatible = "arm,gic-400"; - reg = <0x01c81000 0x1000>, -@@ -830,6 +1071,75 @@ - status = "disabled"; - }; - -+ mbus: dram-controller@1c62000 { -+ compatible = "allwinner,sun50i-a64-mbus"; -+ reg = <0x01c62000 0x1000>; -+ clocks = <&ccu 112>; -+ #address-cells = <1>; -+ #size-cells = <1>; -+ dma-ranges = <0x00000000 0x40000000 0xc0000000>; -+ #interconnect-cells = <1>; -+ }; -+ -+ csi: csi@1cb0000 { -+ compatible = "allwinner,sun50i-a64-csi"; -+ reg = <0x01cb0000 0x1000>; -+ interrupts = ; -+ clocks = <&ccu CLK_BUS_CSI>, -+ <&ccu CLK_CSI_SCLK>, -+ <&ccu CLK_DRAM_CSI>; -+ clock-names = "bus", "mod", "ram"; -+ resets = <&ccu RST_BUS_CSI>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&csi_pins>; -+ status = "disabled"; -+ }; -+ -+ dsi: dsi@1ca0000 { -+ compatible = "allwinner,sun50i-a64-mipi-dsi"; -+ reg = <0x01ca0000 0x1000>; -+ interrupts = ; -+ clocks = <&ccu CLK_BUS_MIPI_DSI>; -+ resets = <&ccu RST_BUS_MIPI_DSI>; -+ phys = <&dphy>; -+ phy-names = "dphy"; -+ status = "disabled"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ port { -+ dsi_in_tcon0: endpoint { -+ remote-endpoint = <&tcon0_out_dsi>; -+ }; -+ }; -+ }; -+ -+ dphy: d-phy@1ca1000 { -+ compatible = "allwinner,sun50i-a64-mipi-dphy", -+ "allwinner,sun6i-a31-mipi-dphy"; -+ reg = <0x01ca1000 0x1000>; -+ clocks = <&ccu CLK_BUS_MIPI_DSI>, -+ <&ccu CLK_DSI_DPHY>; -+ clock-names = "bus", "mod"; -+ resets = <&ccu RST_BUS_MIPI_DSI>; -+ status = "disabled"; -+ #phy-cells = <0>; -+ }; -+ -+ deinterlace: deinterlace@1e00000 { -+ compatible = "allwinner,sun50i-a64-deinterlace", -+ "allwinner,sun8i-h3-deinterlace"; -+ reg = <0x01e00000 0x20000>; -+ clocks = <&ccu CLK_BUS_DEINTERLACE>, -+ <&ccu CLK_DEINTERLACE>, -+ <&ccu CLK_DRAM_DEINTERLACE>; -+ clock-names = "bus", "mod", "ram"; -+ resets = <&ccu RST_BUS_DEINTERLACE>; -+ interrupts = ; -+ interconnects = <&mbus 9>; -+ interconnect-names = "dma-mem"; -+ }; -+ - hdmi: hdmi@1ee0000 { - compatible = "allwinner,sun50i-a64-dw-hdmi", - "allwinner,sun8i-a83t-dw-hdmi"; -@@ -842,7 +1152,7 @@ - resets = <&ccu RST_BUS_HDMI1>; - reset-names = "ctrl"; - phys = <&hdmi_phy>; -- phy-names = "hdmi-phy"; -+ phy-names = "phy"; - status = "disabled"; - - ports { -@@ -867,7 +1177,7 @@ - compatible = "allwinner,sun50i-a64-hdmi-phy"; - reg = <0x01ef0000 0x10000>; - clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_DDC>, -- <&ccu 7>; -+ <&ccu CLK_PLL_VIDEO0>; - clock-names = "bus", "mod", "pll-0"; - resets = <&ccu RST_BUS_HDMI0>; - reset-names = "phy"; -@@ -875,11 +1185,12 @@ - }; - - rtc: rtc@1f00000 { -- compatible = "allwinner,sun6i-a31-rtc"; -- reg = <0x01f00000 0x54>; -+ compatible = "allwinner,sun50i-a64-rtc", -+ "allwinner,sun8i-h3-rtc"; -+ reg = <0x01f00000 0x400>; - interrupts = , - ; -- clock-output-names = "rtc-osc32k", "rtc-osc32k-out"; -+ clock-output-names = "osc32k", "osc32k-out", "iosc"; - clocks = <&osc32k>; - #clock-cells = <1>; - }; -@@ -896,13 +1207,19 @@ - r_ccu: clock@1f01400 { - compatible = "allwinner,sun50i-a64-r-ccu"; - reg = <0x01f01400 0x100>; -- clocks = <&osc24M>, <&osc32k>, <&iosc>, -- <&ccu 11>; -+ clocks = <&osc24M>, <&rtc 0>, <&rtc 2>, -+ <&ccu CLK_PLL_PERIPH0>; - clock-names = "hosc", "losc", "iosc", "pll-periph"; - #clock-cells = <1>; - #reset-cells = <1>; - }; - -+ codec_analog: codec-analog@1f015c0 { -+ compatible = "allwinner,sun50i-a64-codec-analog"; -+ reg = <0x01f015c0 0x4>; -+ status = "disabled"; -+ }; -+ - r_i2c: i2c@1f02400 { - compatible = "allwinner,sun50i-a64-i2c", - "allwinner,sun6i-a31-i2c"; -@@ -915,6 +1232,19 @@ - #size-cells = <0>; - }; - -+ r_ir: ir@1f02000 { -+ compatible = "allwinner,sun50i-a64-ir", -+ "allwinner,sun6i-a31-ir"; -+ reg = <0x01f02000 0x400>; -+ clocks = <&r_ccu CLK_APB0_IR>, <&r_ccu CLK_IR>; -+ clock-names = "apb", "ir"; -+ resets = <&r_ccu RST_APB0_IR>; -+ interrupts = ; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&r_ir_rx_pin>; -+ status = "disabled"; -+ }; -+ - r_pwm: pwm@1f03800 { - compatible = "allwinner,sun50i-a64-pwm", - "allwinner,sun5i-a13-pwm"; -@@ -942,12 +1272,17 @@ - function = "s_i2c"; - }; - -- r_pwm_pin: pwm { -+ r_ir_rx_pin: r-ir-rx-pin { -+ pins = "PL11"; -+ function = "s_cir_rx"; -+ }; -+ -+ r_pwm_pin: r-pwm-pin { - pins = "PL10"; - function = "s_pwm"; - }; - -- r_rsb_pins: rsb { -+ r_rsb_pins: r-rsb-pins { - pins = "PL0", "PL1"; - function = "s_rsb"; - }; -@@ -972,6 +1307,7 @@ - "allwinner,sun6i-a31-wdt"; - reg = <0x01c20ca0 0x20>; - interrupts = ; -+ clocks = <&osc24M>; - }; - }; - }; --- -2.26.2 + #ifdef CONFIG_USB_ETHER From 9e91885814f880ce13ee98cab79876338811949f Mon Sep 17 00:00:00 2001 From: Peter Robinson @@ -1805,6 +1621,143 @@ index 0000000000..cefda145c3 -- 2.26.2 +From bed9375bf6d11bdbf08839135541c44d80189384 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Wed, 9 Sep 2020 11:19:09 +0100 +Subject: [PATCH] pinephone dts sync to 5.9-rc1 + +--- + arch/arm/dts/sun50i-a64-pinephone-1.1.dts | 19 ++++++++ + arch/arm/dts/sun50i-a64-pinephone.dtsi | 54 ++++++++++++++++++++++- + 2 files changed, 71 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/dts/sun50i-a64-pinephone-1.1.dts b/arch/arm/dts/sun50i-a64-pinephone-1.1.dts +index 06a775c416..3e99a87e9c 100644 +--- a/arch/arm/dts/sun50i-a64-pinephone-1.1.dts ++++ b/arch/arm/dts/sun50i-a64-pinephone-1.1.dts +@@ -9,3 +9,22 @@ + model = "Pine64 PinePhone Braveheart (1.1)"; + compatible = "pine64,pinephone-1.1", "allwinner,sun50i-a64"; + }; ++ ++&backlight { ++ power-supply = <®_ldo_io0>; ++ /* ++ * PWM backlight circuit on this PinePhone revision was changed since ++ * 1.0, and the lowest PWM duty cycle that doesn't lead to backlight ++ * being off is around 20%. Duty cycle for the lowest brightness level ++ * also varries quite a bit between individual boards, so the lowest ++ * value here was chosen as a safe default. ++ */ ++ brightness-levels = < ++ 774 793 814 842 ++ 882 935 1003 1088 ++ 1192 1316 1462 1633 ++ 1830 2054 2309 2596 ++ 2916 3271 3664 4096>; ++ num-interpolated-steps = <50>; ++ default-brightness-level = <400>; ++}; +diff --git a/arch/arm/dts/sun50i-a64-pinephone.dtsi b/arch/arm/dts/sun50i-a64-pinephone.dtsi +index cefda145c3..25150aba74 100644 +--- a/arch/arm/dts/sun50i-a64-pinephone.dtsi ++++ b/arch/arm/dts/sun50i-a64-pinephone.dtsi +@@ -16,6 +16,13 @@ + serial0 = &uart0; + }; + ++ backlight: backlight { ++ compatible = "pwm-backlight"; ++ pwms = <&r_pwm 0 50000 PWM_POLARITY_INVERTED>; ++ enable-gpios = <&pio 7 10 GPIO_ACTIVE_HIGH>; /* PH10 */ ++ /* Backlight configuration differs per PinePhone revision. */ ++ }; ++ + chosen { + stdout-path = "serial0:115200n8"; + }; +@@ -84,6 +91,28 @@ + status = "okay"; + }; + ++&de { ++ status = "okay"; ++}; ++ ++&dphy { ++ status = "okay"; ++}; ++ ++&dsi { ++ vcc-dsi-supply = <®_dldo1>; ++ status = "okay"; ++ ++ panel@0 { ++ compatible = "xingbangda,xbd599"; ++ reg = <0>; ++ reset-gpios = <&pio 3 23 GPIO_ACTIVE_LOW>; /* PD23 */ ++ iovcc-supply = <®_dldo2>; ++ vcc-supply = <®_ldo_io0>; ++ backlight = <&backlight>; ++ }; ++}; ++ + &ehci0 { + status = "okay"; + }; +@@ -92,11 +121,28 @@ + status = "okay"; + }; + ++&i2c0 { ++ status = "okay"; ++ ++ touchscreen@5d { ++ compatible = "goodix,gt917s"; ++ reg = <0x5d>; ++ interrupt-parent = <&pio>; ++ interrupts = <7 4 IRQ_TYPE_LEVEL_HIGH>; /* PH4 */ ++ irq-gpios = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ ++ reset-gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>; /* PH11 */ ++ AVDD28-supply = <®_ldo_io0>; ++ VDDIO-supply = <®_ldo_io0>; ++ touchscreen-size-x = <720>; ++ touchscreen-size-y = <1440>; ++ }; ++}; ++ + &i2c1 { + status = "okay"; + + /* Magnetometer */ +- lis3mdl@1e { ++ lis3mdl: lis3mdl@1e { + compatible = "st,lis3mdl-magn"; + reg = <0x1e>; + vdd-supply = <®_dldo1>; +@@ -188,6 +234,10 @@ + */ + }; + ++&r_pwm { ++ status = "okay"; ++}; ++ + &r_rsb { + status = "okay"; + +@@ -279,7 +329,7 @@ + + ®_dldo4 { + regulator-min-microvolt = <1800000>; +- regulator-max-microvolt = <3300000>; ++ regulator-max-microvolt = <1800000>; + regulator-name = "vcc-wifi-io"; + }; + +-- +2.26.2 + From ab4bad52587be7da4262d943f19b5db02a24a045 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 15 Jul 2020 13:14:09 +0100 diff --git a/AllWinner-UpstreamSync.patch b/AllWinner-UpstreamSync.patch new file mode 100644 index 0000000..0b6bac4 --- /dev/null +++ b/AllWinner-UpstreamSync.patch @@ -0,0 +1,1297 @@ +From 6e5d771060dff5350e5940b7e457884b47a560ac Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Thu, 9 Jul 2020 12:20:53 +0100 +Subject: [PATCH 1/8] dt-bindings: clk: sync sun50i-a64-ccu.h to linux 5.8-rc1 + +Sync the clock bindings for the Allwinner A64 to Linux + +Signed-off-by: Peter Robinson +--- + include/dt-bindings/clock/sun50i-a64-ccu.h | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/include/dt-bindings/clock/sun50i-a64-ccu.h b/include/dt-bindings/clock/sun50i-a64-ccu.h +index d66432c6e6..318eb15c41 100644 +--- a/include/dt-bindings/clock/sun50i-a64-ccu.h ++++ b/include/dt-bindings/clock/sun50i-a64-ccu.h +@@ -43,8 +43,10 @@ + #ifndef _DT_BINDINGS_CLK_SUN50I_A64_H_ + #define _DT_BINDINGS_CLK_SUN50I_A64_H_ + ++#define CLK_PLL_VIDEO0 7 + #define CLK_PLL_PERIPH0 11 + ++#define CLK_CPUX 21 + #define CLK_BUS_MIPI_DSI 28 + #define CLK_BUS_CE 29 + #define CLK_BUS_DMA 30 +@@ -129,7 +131,7 @@ + #define CLK_AVS 109 + #define CLK_HDMI 110 + #define CLK_HDMI_DDC 111 +- ++#define CLK_MBUS 112 + #define CLK_DSI_DPHY 113 + #define CLK_GPU 114 + +-- +2.26.2 + +From 274dff055e80778277860f72a903c01ef33f87c7 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Thu, 9 Jul 2020 12:29:15 +0100 +Subject: [PATCH 2/8] dt-bindings: leds: sync leds common.h to linux from + 5.8-rc1 + +Sync the leds common.h to the latest Linux version. + +Signed-off-by: Peter Robinson +--- + include/dt-bindings/leds/common.h | 36 ++++++++++++++++++++++--------- + 1 file changed, 26 insertions(+), 10 deletions(-) + +diff --git a/include/dt-bindings/leds/common.h b/include/dt-bindings/leds/common.h +index 9e1256a7c1..0ce7dfc00d 100644 +--- a/include/dt-bindings/leds/common.h ++++ b/include/dt-bindings/leds/common.h +@@ -6,6 +6,7 @@ + * Author: Jacek Anaszewski + * + * Copyright (C) 2019 Jacek Anaszewski ++ * Copyright (C) 2020 Pavel Machek + */ + + #ifndef __DT_BINDINGS_LEDS_H +@@ -32,16 +33,38 @@ + #define LED_COLOR_ID_MAX 8 + + /* Standard LED functions */ ++/* Keyboard LEDs, usually it would be input4::capslock etc. */ ++/* Obsolete equivalent: "shift-key-light" */ ++#define LED_FUNCTION_CAPSLOCK "capslock" ++#define LED_FUNCTION_SCROLLLOCK "scrolllock" ++#define LED_FUNCTION_NUMLOCK "numlock" ++/* Obsolete equivalents: "tpacpi::thinklight" (IBM/Lenovo Thinkpads), ++ "lp5523:kb{1,2,3,4,5,6}" (Nokia N900) */ ++#define LED_FUNCTION_KBD_BACKLIGHT "kbd_backlight" ++ ++/* System LEDs, usually found on system body. ++ platform::mute (etc) is sometimes seen, :mute would be better */ ++#define LED_FUNCTION_POWER "power" ++#define LED_FUNCTION_DISK "disk" ++ ++/* Obsolete: "platform:*:charging" (allwinner sun50i) */ ++#define LED_FUNCTION_CHARGING "charging" ++/* Used RGB notification LEDs common on phones. ++ Obsolete equivalents: "status-led:{red,green,blue}" (Motorola Droid 4), ++ "lp5523:{r,g,b}" (Nokia N900) */ ++#define LED_FUNCTION_STATUS "status" ++ ++#define LED_FUNCTION_MICMUTE "micmute" ++#define LED_FUNCTION_MUTE "mute" ++ ++/* Miscelleaus functions. Use functions above if you can. */ + #define LED_FUNCTION_ACTIVITY "activity" + #define LED_FUNCTION_ALARM "alarm" + #define LED_FUNCTION_BACKLIGHT "backlight" + #define LED_FUNCTION_BLUETOOTH "bluetooth" + #define LED_FUNCTION_BOOT "boot" + #define LED_FUNCTION_CPU "cpu" +-#define LED_FUNCTION_CAPSLOCK "capslock" +-#define LED_FUNCTION_CHARGING "charging" + #define LED_FUNCTION_DEBUG "debug" +-#define LED_FUNCTION_DISK "disk" + #define LED_FUNCTION_DISK_ACTIVITY "disk-activity" + #define LED_FUNCTION_DISK_ERR "disk-err" + #define LED_FUNCTION_DISK_READ "disk-read" +@@ -50,21 +73,14 @@ + #define LED_FUNCTION_FLASH "flash" + #define LED_FUNCTION_HEARTBEAT "heartbeat" + #define LED_FUNCTION_INDICATOR "indicator" +-#define LED_FUNCTION_KBD_BACKLIGHT "kbd_backlight" + #define LED_FUNCTION_LAN "lan" + #define LED_FUNCTION_MAIL "mail" + #define LED_FUNCTION_MTD "mtd" +-#define LED_FUNCTION_MICMUTE "micmute" +-#define LED_FUNCTION_MUTE "mute" +-#define LED_FUNCTION_NUMLOCK "numlock" + #define LED_FUNCTION_PANIC "panic" + #define LED_FUNCTION_PROGRAMMING "programming" +-#define LED_FUNCTION_POWER "power" + #define LED_FUNCTION_RX "rx" + #define LED_FUNCTION_SD "sd" +-#define LED_FUNCTION_SCROLLLOCK "scrolllock" + #define LED_FUNCTION_STANDBY "standby" +-#define LED_FUNCTION_STATUS "status" + #define LED_FUNCTION_TORCH "torch" + #define LED_FUNCTION_TX "tx" + #define LED_FUNCTION_USB "usb" +-- +2.26.2 + +From 7010e7d2b19d2ded674e376855d2716b7cd421b7 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Fri, 10 Jul 2020 12:46:11 +0100 +Subject: [PATCH 3/8] dt-bindings: clk/reset: sync updated bindings for + Allwinner DE2 display engine + +Sync the clock and reset bindings for the Allwinner DE2 display engine to Linux 5.8-rc1. + +Signed-off-by: Peter Robinson +--- + include/dt-bindings/clock/sun8i-de2.h | 3 +++ + include/dt-bindings/reset/sun8i-de2.h | 1 + + 2 files changed, 4 insertions(+) + +diff --git a/include/dt-bindings/clock/sun8i-de2.h b/include/dt-bindings/clock/sun8i-de2.h +index 3bed63b524..7768f73b05 100644 +--- a/include/dt-bindings/clock/sun8i-de2.h ++++ b/include/dt-bindings/clock/sun8i-de2.h +@@ -15,4 +15,7 @@ + #define CLK_MIXER1 7 + #define CLK_WB 8 + ++#define CLK_BUS_ROT 9 ++#define CLK_ROT 10 ++ + #endif /* _DT_BINDINGS_CLOCK_SUN8I_DE2_H_ */ +diff --git a/include/dt-bindings/reset/sun8i-de2.h b/include/dt-bindings/reset/sun8i-de2.h +index 9526017432..1c36a6ac86 100644 +--- a/include/dt-bindings/reset/sun8i-de2.h ++++ b/include/dt-bindings/reset/sun8i-de2.h +@@ -10,5 +10,6 @@ + #define RST_MIXER0 0 + #define RST_MIXER1 1 + #define RST_WB 2 ++#define RST_ROT 3 + + #endif /* _DT_BINDINGS_RESET_SUN8I_DE2_H_ */ +-- +2.26.2 + +From bdbf5f21343571af989754c908299854e81f44dd Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Thu, 9 Jul 2020 12:24:41 +0100 +Subject: [PATCH 4/8] arm: dts: sync axp803.dtsi from linux 5.8-rc1 + +Sync the Allwinner axp803 device tree to the latest upstream Linux. + +Signed-off-by: Peter Robinson +--- + arch/arm/dts/axp803.dtsi | 82 ++++++++++++++++++++-------------------- + 1 file changed, 41 insertions(+), 41 deletions(-) + +diff --git a/arch/arm/dts/axp803.dtsi b/arch/arm/dts/axp803.dtsi +index e5eae8bafc..10e9186a76 100644 +--- a/arch/arm/dts/axp803.dtsi ++++ b/arch/arm/dts/axp803.dtsi +@@ -1,44 +1,5 @@ +-/* +- * Copyright 2017 Icenowy Zheng +- * +- * This file is dual-licensed: you can use it either under the terms +- * of the GPL or the X11 license, at your option. Note that this dual +- * licensing only applies to this file, and not this project as a +- * whole. +- * +- * a) This file is free software; you can redistribute it and/or +- * modify it under the terms of the GNU General Public License as +- * published by the Free Software Foundation; either version 2 of the +- * License, or (at your option) any later version. +- * +- * This file is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * Or, alternatively, +- * +- * b) Permission is hereby granted, free of charge, to any person +- * obtaining a copy of this software and associated documentation +- * files (the "Software"), to deal in the Software without +- * restriction, including without limitation the rights to use, +- * copy, modify, merge, publish, distribute, sublicense, and/or +- * sell copies of the Software, and to permit persons to whom the +- * Software is furnished to do so, subject to the following +- * conditions: +- * +- * The above copyright notice and this permission notice shall be +- * included in all copies or substantial portions of the Software. +- * +- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +- * OTHER DEALINGS IN THE SOFTWARE. +- */ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++// Copyright 2017 Icenowy Zheng + + /* + * AXP803 Integrated Power Management Chip +@@ -49,6 +10,39 @@ + interrupt-controller; + #interrupt-cells = <1>; + ++ ac_power_supply: ac-power-supply { ++ compatible = "x-powers,axp803-ac-power-supply", ++ "x-powers,axp813-ac-power-supply"; ++ status = "disabled"; ++ }; ++ ++ axp_adc: adc { ++ compatible = "x-powers,axp803-adc", "x-powers,axp813-adc"; ++ #io-channel-cells = <1>; ++ }; ++ ++ axp_gpio: gpio { ++ compatible = "x-powers,axp803-gpio", "x-powers,axp813-gpio"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ ++ gpio0_ldo: gpio0-ldo { ++ pins = "GPIO0"; ++ function = "ldo"; ++ }; ++ ++ gpio1_ldo: gpio1-ldo { ++ pins = "GPIO1"; ++ function = "ldo"; ++ }; ++ }; ++ ++ battery_power_supply: battery-power-supply { ++ compatible = "x-powers,axp803-battery-power-supply", ++ "x-powers,axp813-battery-power-supply"; ++ status = "disabled"; ++ }; ++ + regulators { + /* Default work frequency for buck regulators */ + x-powers,dcdc-freq = <3000>; +@@ -152,4 +146,10 @@ + status = "disabled"; + }; + }; ++ ++ usb_power_supply: usb-power-supply { ++ compatible = "x-powers,axp803-usb-power-supply", ++ "x-powers,axp813-usb-power-supply"; ++ status = "disabled"; ++ }; + }; +-- +2.26.2 + +From e0f7e9ce1a8a889bf7a1c5842700f0cb368bc81b Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Thu, 9 Jul 2020 12:26:34 +0100 +Subject: [PATCH 5/8] arm: dts: Add new sun50i-a64-cpu-opp.dtsi from Linux + 5.8-rc1 + +Sync the Allwinner A64 CPU operating points dtsi from Linux. + +Signed-off-by: Peter Robinson +--- + arch/arm/dts/sun50i-a64-cpu-opp.dtsi | 75 ++++++++++++++++++++++++++++ + 1 file changed, 75 insertions(+) + create mode 100644 arch/arm/dts/sun50i-a64-cpu-opp.dtsi + +diff --git a/arch/arm/dts/sun50i-a64-cpu-opp.dtsi b/arch/arm/dts/sun50i-a64-cpu-opp.dtsi +new file mode 100644 +index 0000000000..578c37490d +--- /dev/null ++++ b/arch/arm/dts/sun50i-a64-cpu-opp.dtsi +@@ -0,0 +1,75 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2020 Vasily khoruzhick ++ */ ++ ++/ { ++ cpu0_opp_table: opp_table0 { ++ compatible = "operating-points-v2"; ++ opp-shared; ++ ++ opp-648000000 { ++ opp-hz = /bits/ 64 <648000000>; ++ opp-microvolt = <1040000>; ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ }; ++ ++ opp-816000000 { ++ opp-hz = /bits/ 64 <816000000>; ++ opp-microvolt = <1100000>; ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ }; ++ ++ opp-912000000 { ++ opp-hz = /bits/ 64 <912000000>; ++ opp-microvolt = <1120000>; ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ }; ++ ++ opp-960000000 { ++ opp-hz = /bits/ 64 <960000000>; ++ opp-microvolt = <1160000>; ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ }; ++ ++ opp-1008000000 { ++ opp-hz = /bits/ 64 <1008000000>; ++ opp-microvolt = <1200000>; ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ }; ++ ++ opp-1056000000 { ++ opp-hz = /bits/ 64 <1056000000>; ++ opp-microvolt = <1240000>; ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ }; ++ ++ opp-1104000000 { ++ opp-hz = /bits/ 64 <1104000000>; ++ opp-microvolt = <1260000>; ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ }; ++ ++ opp-1152000000 { ++ opp-hz = /bits/ 64 <1152000000>; ++ opp-microvolt = <1300000>; ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ }; ++ }; ++}; ++ ++&cpu0 { ++ operating-points-v2 = <&cpu0_opp_table>; ++}; ++ ++&cpu1 { ++ operating-points-v2 = <&cpu0_opp_table>; ++}; ++ ++&cpu2 { ++ operating-points-v2 = <&cpu0_opp_table>; ++}; ++ ++&cpu3 { ++ operating-points-v2 = <&cpu0_opp_table>; ++}; +-- +2.26.2 + +From b077a5962ba631e198d42c14516426b878c157eb Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Fri, 10 Jul 2020 12:39:21 +0100 +Subject: [PATCH 6/8] arm: dts: Sync the sun50i-a64.dtsi from Linux 5.8-rc1 + +Sync the Allwinner A64 sun50i-a64.dtsi from Linux. + +Signed-off-by: Peter Robinson +--- + arch/arm/dts/sun50i-a64.dtsi | 532 ++++++++++++++++++++++++++++------- + 1 file changed, 434 insertions(+), 98 deletions(-) + +diff --git a/arch/arm/dts/sun50i-a64.dtsi b/arch/arm/dts/sun50i-a64.dtsi +index ff41abc96a..8dfbcd1440 100644 +--- a/arch/arm/dts/sun50i-a64.dtsi ++++ b/arch/arm/dts/sun50i-a64.dtsi +@@ -1,46 +1,7 @@ +-/* +- * Copyright (C) 2016 ARM Ltd. +- * based on the Allwinner H3 dtsi: +- * Copyright (C) 2015 Jens Kuske +- * +- * This file is dual-licensed: you can use it either under the terms +- * of the GPL or the X11 license, at your option. Note that this dual +- * licensing only applies to this file, and not this project as a +- * whole. +- * +- * a) This file is free software; you can redistribute it and/or +- * modify it under the terms of the GNU General Public License as +- * published by the Free Software Foundation; either version 2 of the +- * License, or (at your option) any later version. +- * +- * This file is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * Or, alternatively, +- * +- * b) Permission is hereby granted, free of charge, to any person +- * obtaining a copy of this software and associated documentation +- * files (the "Software"), to deal in the Software without +- * restriction, including without limitation the rights to use, +- * copy, modify, merge, publish, distribute, sublicense, and/or +- * sell copies of the Software, and to permit persons to whom the +- * Software is furnished to do so, subject to the following +- * conditions: +- * +- * The above copyright notice and this permission notice shall be +- * included in all copies or substantial portions of the Software. +- * +- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +- * OTHER DEALINGS IN THE SOFTWARE. +- */ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++// Copyright (C) 2016 ARM Ltd. ++// based on the Allwinner H3 dtsi: ++// Copyright (C) 2015 Jens Kuske + + #include + #include +@@ -49,6 +10,7 @@ + #include + #include + #include ++#include + + / { + interrupt-parent = <&gic>; +@@ -84,35 +46,47 @@ + #size-cells = <0>; + + cpu0: cpu@0 { +- compatible = "arm,cortex-a53", "arm,armv8"; ++ compatible = "arm,cortex-a53"; + device_type = "cpu"; + reg = <0>; + enable-method = "psci"; + next-level-cache = <&L2>; ++ clocks = <&ccu 21>; ++ clock-names = "cpu"; ++ #cooling-cells = <2>; + }; + + cpu1: cpu@1 { +- compatible = "arm,cortex-a53", "arm,armv8"; ++ compatible = "arm,cortex-a53"; + device_type = "cpu"; + reg = <1>; + enable-method = "psci"; + next-level-cache = <&L2>; ++ clocks = <&ccu 21>; ++ clock-names = "cpu"; ++ #cooling-cells = <2>; + }; + + cpu2: cpu@2 { +- compatible = "arm,cortex-a53", "arm,armv8"; ++ compatible = "arm,cortex-a53"; + device_type = "cpu"; + reg = <2>; + enable-method = "psci"; + next-level-cache = <&L2>; ++ clocks = <&ccu 21>; ++ clock-names = "cpu"; ++ #cooling-cells = <2>; + }; + + cpu3: cpu@3 { +- compatible = "arm,cortex-a53", "arm,armv8"; ++ compatible = "arm,cortex-a53"; + device_type = "cpu"; + reg = <3>; + enable-method = "psci"; + next-level-cache = <&L2>; ++ clocks = <&ccu 21>; ++ clock-names = "cpu"; ++ #cooling-cells = <2>; + }; + + L2: l2-cache { +@@ -139,15 +113,16 @@ + #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <32768>; +- clock-output-names = "osc32k"; ++ clock-output-names = "ext-osc32k"; + }; + +- iosc: internal-osc-clk { +- #clock-cells = <0>; +- compatible = "fixed-clock"; +- clock-frequency = <16000000>; +- clock-accuracy = <300000000>; +- clock-output-names = "iosc"; ++ pmu { ++ compatible = "arm,cortex-a53-pmu"; ++ interrupts = , ++ , ++ , ++ ; ++ interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>; + }; + + psci { +@@ -155,26 +130,33 @@ + method = "smc"; + }; + +- sound_spdif { ++ sound: sound { + compatible = "simple-audio-card"; +- simple-audio-card,name = "On-board SPDIF"; ++ simple-audio-card,name = "sun50i-a64-audio"; ++ simple-audio-card,format = "i2s"; ++ simple-audio-card,frame-master = <&cpudai>; ++ simple-audio-card,bitclock-master = <&cpudai>; ++ simple-audio-card,mclk-fs = <128>; ++ simple-audio-card,aux-devs = <&codec_analog>; ++ simple-audio-card,routing = ++ "Left DAC", "AIF1 Slot 0 Left", ++ "Right DAC", "AIF1 Slot 0 Right", ++ "AIF1 Slot 0 Left ADC", "Left ADC", ++ "AIF1 Slot 0 Right ADC", "Right ADC"; ++ status = "disabled"; + +- simple-audio-card,cpu { +- sound-dai = <&spdif>; ++ cpudai: simple-audio-card,cpu { ++ sound-dai = <&dai>; + }; + +- simple-audio-card,codec { +- sound-dai = <&spdif_out>; ++ link_codec: simple-audio-card,codec { ++ sound-dai = <&codec>; + }; + }; + +- spdif_out: spdif-out { +- #sound-dai-cells = <0>; +- compatible = "linux,spdif-dit"; +- }; +- + timer { + compatible = "arm,armv8-timer"; ++ allwinner,erratum-unknown1; + interrupts = , + ; + }; + ++ thermal-zones { ++ cpu_thermal: cpu0-thermal { ++ /* milliseconds */ ++ polling-delay-passive = <0>; ++ polling-delay = <0>; ++ thermal-sensors = <&ths 0>; ++ ++ cooling-maps { ++ map0 { ++ trip = <&cpu_alert0>; ++ cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; ++ }; ++ map1 { ++ trip = <&cpu_alert1>; ++ cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; ++ }; ++ }; ++ ++ trips { ++ cpu_alert0: cpu_alert0 { ++ /* milliCelsius */ ++ temperature = <75000>; ++ hysteresis = <2000>; ++ type = "passive"; ++ }; ++ ++ cpu_alert1: cpu_alert1 { ++ /* milliCelsius */ ++ temperature = <90000>; ++ hysteresis = <2000>; ++ type = "hot"; ++ }; ++ ++ cpu_crit: cpu_crit { ++ /* milliCelsius */ ++ temperature = <110000>; ++ hysteresis = <2000>; ++ type = "critical"; ++ }; ++ }; ++ }; ++ ++ gpu0_thermal: gpu0-thermal { ++ /* milliseconds */ ++ polling-delay-passive = <0>; ++ polling-delay = <0>; ++ thermal-sensors = <&ths 1>; ++ }; ++ ++ gpu1_thermal: gpu1-thermal { ++ /* milliseconds */ ++ polling-delay-passive = <0>; ++ polling-delay = <0>; ++ thermal-sensors = <&ths 2>; ++ }; ++ }; ++ + soc { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + +- de2@1000000 { ++ bus@1000000 { + compatible = "allwinner,sun50i-a64-de2"; + reg = <0x1000000 0x400000>; + allwinner,sram = <&de2_sram 1>; +@@ -201,16 +246,28 @@ + + display_clocks: clock@0 { + compatible = "allwinner,sun50i-a64-de2-clk"; +- reg = <0x0 0x100000>; +- clocks = <&ccu CLK_DE>, +- <&ccu CLK_BUS_DE>; +- clock-names = "mod", +- "bus"; ++ reg = <0x0 0x10000>; ++ clocks = <&ccu CLK_BUS_DE>, ++ <&ccu CLK_DE>; ++ clock-names = "bus", ++ "mod"; + resets = <&ccu RST_BUS_DE>; + #clock-cells = <1>; + #reset-cells = <1>; + }; + ++ rotate: rotate@20000 { ++ compatible = "allwinner,sun50i-a64-de2-rotate", ++ "allwinner,sun8i-a83t-de2-rotate"; ++ reg = <0x20000 0x10000>; ++ interrupts = ; ++ clocks = <&display_clocks CLK_BUS_ROT>, ++ <&display_clocks CLK_ROT>; ++ clock-names = "bus", ++ "mod"; ++ resets = <&display_clocks RST_ROT>; ++ }; ++ + mixer0: mixer@100000 { + compatible = "allwinner,sun50i-a64-de2-mixer-0"; + reg = <0x100000 0x100000>; +@@ -225,11 +282,19 @@ + #size-cells = <0>; + + mixer0_out: port@1 { ++ #address-cells = <1>; ++ #size-cells = <0>; + reg = <1>; + +- mixer0_out_tcon0: endpoint { ++ mixer0_out_tcon0: endpoint@0 { ++ reg = <0>; + remote-endpoint = <&tcon0_in_mixer0>; + }; ++ ++ mixer0_out_tcon1: endpoint@1 { ++ reg = <1>; ++ remote-endpoint = <&tcon1_in_mixer0>; ++ }; + }; + }; + }; +@@ -248,9 +313,17 @@ + #size-cells = <0>; + + mixer1_out: port@1 { ++ #address-cells = <1>; ++ #size-cells = <0>; + reg = <1>; + +- mixer1_out_tcon1: endpoint { ++ mixer1_out_tcon0: endpoint@0 { ++ reg = <0>; ++ remote-endpoint = <&tcon0_in_mixer1>; ++ }; ++ ++ mixer1_out_tcon1: endpoint@1 { ++ reg = <1>; + remote-endpoint = <&tcon1_in_mixer1>; + }; + }; +@@ -259,8 +332,7 @@ + }; + + syscon: syscon@1c00000 { +- compatible = "allwinner,sun50i-a64-system-control", +- "syscon"; ++ compatible = "allwinner,sun50i-a64-system-control"; + reg = <0x01c00000 0x1000>; + #address-cells = <1>; + #size-cells = <1>; +@@ -278,6 +350,20 @@ + reg = <0x0000 0x28000>; + }; + }; ++ ++ sram_c1: sram@1d00000 { ++ compatible = "mmio-sram"; ++ reg = <0x01d00000 0x40000>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ranges = <0 0x01d00000 0x40000>; ++ ++ ve_sram: sram-section@0 { ++ compatible = "allwinner,sun50i-a64-sram-c1", ++ "allwinner,sun4i-a10-sram-c1"; ++ reg = <0x000000 0x40000>; ++ }; ++ }; + }; + + dma: dma-controller@1c02000 { +@@ -299,6 +385,7 @@ + clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>; + clock-names = "ahb", "tcon-ch0"; + clock-output-names = "tcon-pixel-clock"; ++ #clock-cells = <0>; + resets = <&ccu RST_BUS_TCON0>, <&ccu RST_BUS_LVDS>; + reset-names = "lcd", "lvds"; + +@@ -315,12 +402,23 @@ + reg = <0>; + remote-endpoint = <&mixer0_out_tcon0>; + }; ++ ++ tcon0_in_mixer1: endpoint@1 { ++ reg = <1>; ++ remote-endpoint = <&mixer1_out_tcon0>; ++ }; + }; + + tcon0_out: port@1 { + #address-cells = <1>; + #size-cells = <0>; + reg = <1>; ++ ++ tcon0_out_dsi: endpoint@1 { ++ reg = <1>; ++ remote-endpoint = <&dsi_in_tcon0>; ++ allwinner,tcon-channel = <1>; ++ }; + }; + }; + }; +@@ -340,9 +438,17 @@ + #size-cells = <0>; + + tcon1_in: port@0 { ++ #address-cells = <1>; ++ #size-cells = <0>; + reg = <0>; + +- tcon1_in_mixer1: endpoint { ++ tcon1_in_mixer0: endpoint@0 { ++ reg = <0>; ++ remote-endpoint = <&mixer0_out_tcon1>; ++ }; ++ ++ tcon1_in_mixer1: endpoint@1 { ++ reg = <1>; + remote-endpoint = <&mixer1_out_tcon1>; + }; + }; +@@ -360,6 +466,17 @@ + }; + }; + ++ video-codec@1c0e000 { ++ compatible = "allwinner,sun50i-a64-video-engine"; ++ reg = <0x01c0e000 0x1000>; ++ clocks = <&ccu CLK_BUS_VE>, <&ccu CLK_VE>, ++ <&ccu CLK_DRAM_VE>; ++ clock-names = "ahb", "mod", "ram"; ++ resets = <&ccu RST_BUS_VE>; ++ interrupts = ; ++ allwinner,sram = <&ve_sram 1>; ++ }; ++ + mmc0: mmc@1c0f000 { + compatible = "allwinner,sun50i-a64-mmc"; + reg = <0x01c0f000 0x1000>; +@@ -405,6 +522,31 @@ + sid: eeprom@1c14000 { + compatible = "allwinner,sun50i-a64-sid"; + reg = <0x1c14000 0x400>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ ths_calibration: thermal-sensor-calibration@34 { ++ reg = <0x34 0x8>; ++ }; ++ }; ++ ++ crypto: crypto@1c15000 { ++ compatible = "allwinner,sun50i-a64-crypto"; ++ reg = <0x01c15000 0x1000>; ++ interrupts = ; ++ clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>; ++ clock-names = "bus", "mod"; ++ resets = <&ccu RST_BUS_CE>; ++ }; ++ ++ msgbox: mailbox@1c17000 { ++ compatible = "allwinner,sun50i-a64-msgbox", ++ "allwinner,sun6i-a31-msgbox"; ++ reg = <0x01c17000 0x1000>; ++ clocks = <&ccu CLK_BUS_MSGBOX>; ++ resets = <&ccu RST_BUS_MSGBOX>; ++ interrupts = ; ++ #mbox-cells = <1>; + }; + + usb_otg: usb@1c19000 { +@@ -417,6 +559,7 @@ + phys = <&usbphy 0>; + phy-names = "usb"; + extcon = <&usbphy 0>; ++ dr_mode = "otg"; + status = "disabled"; + }; + +@@ -491,7 +634,7 @@ + ccu: clock@1c20000 { + compatible = "allwinner,sun50i-a64-ccu"; + reg = <0x01c20000 0x400>; +- clocks = <&osc24M>, <&osc32k>; ++ clocks = <&osc24M>, <&rtc 0>; + clock-names = "hosc", "losc"; + #clock-cells = <1>; + #reset-cells = <1>; +@@ -503,22 +646,50 @@ + interrupts = , + , + ; +- clocks = <&ccu 58>; ++ clocks = <&ccu CLK_BUS_PIO>, <&osc24M>, <&rtc 0>; ++ clock-names = "apb", "hosc", "losc"; + gpio-controller; + #gpio-cells = <3>; + interrupt-controller; + #interrupt-cells = <3>; + +- i2c0_pins: i2c0_pins { ++ csi_pins: csi-pins { ++ pins = "PE0", "PE2", "PE3", "PE4", "PE5", "PE6", ++ "PE7", "PE8", "PE9", "PE10", "PE11"; ++ function = "csi"; ++ }; ++ ++ /omit-if-no-ref/ ++ csi_mclk_pin: csi-mclk-pin { ++ pins = "PE1"; ++ function = "csi"; ++ }; ++ ++ i2c0_pins: i2c0-pins { + pins = "PH0", "PH1"; + function = "i2c0"; + }; + +- i2c1_pins: i2c1_pins { ++ i2c1_pins: i2c1-pins { + pins = "PH2", "PH3"; + function = "i2c1"; + }; + ++ i2c2_pins: i2c2-pins { ++ pins = "PE14", "PE15"; ++ function = "i2c2"; ++ }; ++ ++ /omit-if-no-ref/ ++ lcd_rgb666_pins: lcd-rgb666-pins { ++ pins = "PD0", "PD1", "PD2", "PD3", "PD4", ++ "PD5", "PD6", "PD7", "PD8", "PD9", ++ "PD10", "PD11", "PD12", "PD13", ++ "PD14", "PD15", "PD16", "PD17", ++ "PD18", "PD19", "PD20", "PD21"; ++ function = "lcd0"; ++ }; ++ + mmc0_pins: mmc0-pins { + pins = "PF0", "PF1", "PF2", "PF3", + "PF4", "PF5"; +@@ -551,19 +722,19 @@ + bias-pull-up; + }; + +- pwm_pin: pwm_pin { ++ pwm_pin: pwm-pin { + pins = "PD22"; + function = "pwm"; + }; + +- rmii_pins: rmii_pins { ++ rmii_pins: rmii-pins { + pins = "PD10", "PD11", "PD13", "PD14", "PD17", + "PD18", "PD19", "PD20", "PD22", "PD23"; + function = "emac"; + drive-strength = <40>; + }; + +- rgmii_pins: rgmii_pins { ++ rgmii_pins: rgmii-pins { + pins = "PD8", "PD9", "PD10", "PD11", "PD12", + "PD13", "PD15", "PD16", "PD17", "PD18", + "PD19", "PD20", "PD21", "PD22", "PD23"; +@@ -571,17 +742,17 @@ + drive-strength = <40>; + }; + +- spdif_tx_pin: spdif { ++ spdif_tx_pin: spdif-tx-pin { + pins = "PH8"; + function = "spdif"; + }; + +- spi0_pins: spi0 { ++ spi0_pins: spi0-pins { + pins = "PC0", "PC1", "PC2", "PC3"; + function = "spi0"; + }; + +- spi1_pins: spi1 { ++ spi1_pins: spi1-pins { + pins = "PD0", "PD1", "PD2", "PD3"; + function = "spi1"; + }; +@@ -591,12 +762,12 @@ + function = "uart0"; + }; + +- uart1_pins: uart1_pins { ++ uart1_pins: uart1-pins { + pins = "PG6", "PG7"; + function = "uart1"; + }; + +- uart1_rts_cts_pins: uart1_rts_cts_pins { ++ uart1_rts_cts_pins: uart1-rts-cts-pins { + pins = "PG8", "PG9"; + function = "uart1"; + }; +@@ -638,6 +809,14 @@ + status = "disabled"; + }; + ++ lradc: lradc@1c21800 { ++ compatible = "allwinner,sun50i-a64-lradc", ++ "allwinner,sun8i-a83t-r-lradc"; ++ reg = <0x01c21800 0x400>; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ + i2s0: i2s@1c22000 { + #sound-dai-cells = <0>; + compatible = "allwinner,sun50i-a64-i2s", +@@ -666,6 +845,41 @@ + status = "disabled"; + }; + ++ dai: dai@1c22c00 { ++ #sound-dai-cells = <0>; ++ compatible = "allwinner,sun50i-a64-codec-i2s"; ++ reg = <0x01c22c00 0x200>; ++ interrupts = ; ++ clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>; ++ clock-names = "apb", "mod"; ++ resets = <&ccu RST_BUS_CODEC>; ++ dmas = <&dma 15>, <&dma 15>; ++ dma-names = "rx", "tx"; ++ status = "disabled"; ++ }; ++ ++ codec: codec@1c22e00 { ++ #sound-dai-cells = <0>; ++ compatible = "allwinner,sun8i-a33-codec"; ++ reg = <0x01c22e00 0x600>; ++ interrupts = ; ++ clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>; ++ clock-names = "bus", "mod"; ++ status = "disabled"; ++ }; ++ ++ ths: thermal-sensor@1c25000 { ++ compatible = "allwinner,sun50i-a64-ths"; ++ reg = <0x01c25000 0x100>; ++ clocks = <&ccu CLK_BUS_THS>, <&ccu CLK_THS>; ++ clock-names = "bus", "mod"; ++ interrupts = ; ++ resets = <&ccu RST_BUS_THS>; ++ nvmem-cells = <&ths_calibration>; ++ nvmem-cell-names = "calibration"; ++ #thermal-sensor-cells = <1>; ++ }; ++ + uart0: serial@1c28000 { + compatible = "snps,dw-apb-uart"; + reg = <0x01c28000 0x400>; +@@ -727,6 +941,8 @@ + interrupts = ; + clocks = <&ccu CLK_BUS_I2C0>; + resets = <&ccu RST_BUS_I2C0>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2c0_pins>; + status = "disabled"; + #address-cells = <1>; + #size-cells = <0>; +@@ -738,6 +954,8 @@ + interrupts = ; + clocks = <&ccu CLK_BUS_I2C1>; + resets = <&ccu RST_BUS_I2C1>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2c1_pins>; + status = "disabled"; + #address-cells = <1>; + #size-cells = <0>; +@@ -749,12 +967,13 @@ + interrupts = ; + clocks = <&ccu CLK_BUS_I2C2>; + resets = <&ccu RST_BUS_I2C2>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2c2_pins>; + status = "disabled"; + #address-cells = <1>; + #size-cells = <0>; + }; + +- + spi0: spi@1c68000 { + compatible = "allwinner,sun8i-h3-spi"; + reg = <0x01c68000 0x1000>; +@@ -808,6 +1027,28 @@ + }; + }; + ++ mali: gpu@1c40000 { ++ compatible = "allwinner,sun50i-a64-mali", "arm,mali-400"; ++ reg = <0x01c40000 0x10000>; ++ interrupts = , ++ , ++ , ++ , ++ , ++ , ++ ; ++ interrupt-names = "gp", ++ "gpmmu", ++ "pp0", ++ "ppmmu0", ++ "pp1", ++ "ppmmu1", ++ "pmu"; ++ clocks = <&ccu CLK_BUS_GPU>, <&ccu CLK_GPU>; ++ clock-names = "bus", "core"; ++ resets = <&ccu RST_BUS_GPU>; ++ }; ++ + gic: interrupt-controller@1c81000 { + compatible = "arm,gic-400"; + reg = <0x01c81000 0x1000>, +@@ -830,6 +1071,75 @@ + status = "disabled"; + }; + ++ mbus: dram-controller@1c62000 { ++ compatible = "allwinner,sun50i-a64-mbus"; ++ reg = <0x01c62000 0x1000>; ++ clocks = <&ccu 112>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ dma-ranges = <0x00000000 0x40000000 0xc0000000>; ++ #interconnect-cells = <1>; ++ }; ++ ++ csi: csi@1cb0000 { ++ compatible = "allwinner,sun50i-a64-csi"; ++ reg = <0x01cb0000 0x1000>; ++ interrupts = ; ++ clocks = <&ccu CLK_BUS_CSI>, ++ <&ccu CLK_CSI_SCLK>, ++ <&ccu CLK_DRAM_CSI>; ++ clock-names = "bus", "mod", "ram"; ++ resets = <&ccu RST_BUS_CSI>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&csi_pins>; ++ status = "disabled"; ++ }; ++ ++ dsi: dsi@1ca0000 { ++ compatible = "allwinner,sun50i-a64-mipi-dsi"; ++ reg = <0x01ca0000 0x1000>; ++ interrupts = ; ++ clocks = <&ccu CLK_BUS_MIPI_DSI>; ++ resets = <&ccu RST_BUS_MIPI_DSI>; ++ phys = <&dphy>; ++ phy-names = "dphy"; ++ status = "disabled"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ port { ++ dsi_in_tcon0: endpoint { ++ remote-endpoint = <&tcon0_out_dsi>; ++ }; ++ }; ++ }; ++ ++ dphy: d-phy@1ca1000 { ++ compatible = "allwinner,sun50i-a64-mipi-dphy", ++ "allwinner,sun6i-a31-mipi-dphy"; ++ reg = <0x01ca1000 0x1000>; ++ clocks = <&ccu CLK_BUS_MIPI_DSI>, ++ <&ccu CLK_DSI_DPHY>; ++ clock-names = "bus", "mod"; ++ resets = <&ccu RST_BUS_MIPI_DSI>; ++ status = "disabled"; ++ #phy-cells = <0>; ++ }; ++ ++ deinterlace: deinterlace@1e00000 { ++ compatible = "allwinner,sun50i-a64-deinterlace", ++ "allwinner,sun8i-h3-deinterlace"; ++ reg = <0x01e00000 0x20000>; ++ clocks = <&ccu CLK_BUS_DEINTERLACE>, ++ <&ccu CLK_DEINTERLACE>, ++ <&ccu CLK_DRAM_DEINTERLACE>; ++ clock-names = "bus", "mod", "ram"; ++ resets = <&ccu RST_BUS_DEINTERLACE>; ++ interrupts = ; ++ interconnects = <&mbus 9>; ++ interconnect-names = "dma-mem"; ++ }; ++ + hdmi: hdmi@1ee0000 { + compatible = "allwinner,sun50i-a64-dw-hdmi", + "allwinner,sun8i-a83t-dw-hdmi"; +@@ -842,7 +1152,7 @@ + resets = <&ccu RST_BUS_HDMI1>; + reset-names = "ctrl"; + phys = <&hdmi_phy>; +- phy-names = "hdmi-phy"; ++ phy-names = "phy"; + status = "disabled"; + + ports { +@@ -867,7 +1177,7 @@ + compatible = "allwinner,sun50i-a64-hdmi-phy"; + reg = <0x01ef0000 0x10000>; + clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_DDC>, +- <&ccu 7>; ++ <&ccu CLK_PLL_VIDEO0>; + clock-names = "bus", "mod", "pll-0"; + resets = <&ccu RST_BUS_HDMI0>; + reset-names = "phy"; +@@ -875,11 +1185,12 @@ + }; + + rtc: rtc@1f00000 { +- compatible = "allwinner,sun6i-a31-rtc"; +- reg = <0x01f00000 0x54>; ++ compatible = "allwinner,sun50i-a64-rtc", ++ "allwinner,sun8i-h3-rtc"; ++ reg = <0x01f00000 0x400>; + interrupts = , + ; +- clock-output-names = "rtc-osc32k", "rtc-osc32k-out"; ++ clock-output-names = "osc32k", "osc32k-out", "iosc"; + clocks = <&osc32k>; + #clock-cells = <1>; + }; +@@ -896,13 +1207,19 @@ + r_ccu: clock@1f01400 { + compatible = "allwinner,sun50i-a64-r-ccu"; + reg = <0x01f01400 0x100>; +- clocks = <&osc24M>, <&osc32k>, <&iosc>, +- <&ccu 11>; ++ clocks = <&osc24M>, <&rtc 0>, <&rtc 2>, ++ <&ccu CLK_PLL_PERIPH0>; + clock-names = "hosc", "losc", "iosc", "pll-periph"; + #clock-cells = <1>; + #reset-cells = <1>; + }; + ++ codec_analog: codec-analog@1f015c0 { ++ compatible = "allwinner,sun50i-a64-codec-analog"; ++ reg = <0x01f015c0 0x4>; ++ status = "disabled"; ++ }; ++ + r_i2c: i2c@1f02400 { + compatible = "allwinner,sun50i-a64-i2c", + "allwinner,sun6i-a31-i2c"; +@@ -915,6 +1232,19 @@ + #size-cells = <0>; + }; + ++ r_ir: ir@1f02000 { ++ compatible = "allwinner,sun50i-a64-ir", ++ "allwinner,sun6i-a31-ir"; ++ reg = <0x01f02000 0x400>; ++ clocks = <&r_ccu CLK_APB0_IR>, <&r_ccu CLK_IR>; ++ clock-names = "apb", "ir"; ++ resets = <&r_ccu RST_APB0_IR>; ++ interrupts = ; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&r_ir_rx_pin>; ++ status = "disabled"; ++ }; ++ + r_pwm: pwm@1f03800 { + compatible = "allwinner,sun50i-a64-pwm", + "allwinner,sun5i-a13-pwm"; +@@ -942,12 +1272,17 @@ + function = "s_i2c"; + }; + +- r_pwm_pin: pwm { ++ r_ir_rx_pin: r-ir-rx-pin { ++ pins = "PL11"; ++ function = "s_cir_rx"; ++ }; ++ ++ r_pwm_pin: r-pwm-pin { + pins = "PL10"; + function = "s_pwm"; + }; + +- r_rsb_pins: rsb { ++ r_rsb_pins: r-rsb-pins { + pins = "PL0", "PL1"; + function = "s_rsb"; + }; +@@ -972,6 +1307,7 @@ + "allwinner,sun6i-a31-wdt"; + reg = <0x01c20ca0 0x20>; + interrupts = ; ++ clocks = <&osc24M>; + }; + }; + }; +-- +2.26.2 diff --git a/PinePhone-automatic-device-tree-selection.patch b/PinePhone-automatic-device-tree-selection.patch deleted file mode 100644 index ac2bac4..0000000 --- a/PinePhone-automatic-device-tree-selection.patch +++ /dev/null @@ -1,1114 +0,0 @@ -From patchwork Thu Sep 3 05:07:09 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Samuel Holland -X-Patchwork-Id: 1356315 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=sholland.org -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=sholland.org header.i=@sholland.org header.a=rsa-sha256 - header.s=fm3 header.b=buHTSW+5; - dkim=pass (2048-bit key; - unprotected) header.d=messagingengine.com header.i=@messagingengine.com - header.a=rsa-sha256 header.s=fm3 header.b=soUNU+zi; - dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4Bhpk04dbHz9sTR - for ; Thu, 3 Sep 2020 15:08:40 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id B8046822FB; - Thu, 3 Sep 2020 07:07:34 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=sholland.org -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=sholland.org header.i=@sholland.org - header.b="buHTSW+5"; dkim=pass (2048-bit key; - unprotected) header.d=messagingengine.com header.i=@messagingengine.com - header.b="soUNU+zi"; dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 5B11B822E1; Thu, 3 Sep 2020 07:07:27 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, - SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no - version=3.4.2 -Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com - [66.111.4.26]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id AF853822D8 - for ; Thu, 3 Sep 2020 07:07:19 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=sholland.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=samuel@sholland.org -Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) - by mailout.nyi.internal (Postfix) with ESMTP id 6D2045C0190; - Thu, 3 Sep 2020 01:07:18 -0400 (EDT) -Received: from mailfrontend2 ([10.202.2.163]) - by compute3.internal (MEProxy); Thu, 03 Sep 2020 01:07:18 -0400 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= - from:to:cc:subject:date:message-id:in-reply-to:references - :mime-version:content-transfer-encoding; s=fm3; bh=U4jA0nvRK7Czr - dgeNIS5gDY5tElSJ2feLLbT7NYhO6s=; b=buHTSW+5/tt6GjGA2vOU6Ivto0Cdk - fngE70LZVaDreoNlTLgMANhhiJzWyBYb3mjmMUR2EHBJeYNdzuOYpRL/hBztVsqa - B+hq24fQr6OsXlroOC+9DIkrBtgkfEXrmaHqyO9jP0/BBHQUHBAjJr6RkItNOJqs - tL5255/XbQw05IUwTN+fwQs+x1qtv9dPXiYVdELfBIhuTKSyQJaKqBLEO3mPFxRz - PIISy3OQi1lzdrJdmurLcp6DfbzqB9nJfuD0CtslCI1Bu09KsMgr7sn/mxITx0Vy - qyWz9p5t9Vr2A3xct652aED771i3Ra6UK+UYoSayMMMyCG4g+rb0DzJhQ== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= - messagingengine.com; h=cc:content-transfer-encoding:date:from - :in-reply-to:message-id:mime-version:references:subject:to - :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= - fm3; bh=U4jA0nvRK7CzrdgeNIS5gDY5tElSJ2feLLbT7NYhO6s=; b=soUNU+zi - uXuVOTwtphqr7B11oSRvrTR5EMY1G0DCfVWT5s+K/e9h3V/TodXW0tbddWCX1Qhf - 2EbJfg61h8/UFqtAFCwuDtcIaxiykHsoFtLgyvzZrBQIoWF9LF/YDvRSmyDr1lyV - hY8s0GIVyKaAXjkwwoUEaknhWhGHrbVOeWZTWUnB9W1++iN+4uXoWlMohB72yOlk - 3TZ7XBSJLe2Nd4NxPuirhOfuGpWFLHiTQ/cSUcvZW+8DPmy+hZL/KNYEgY4NjN0I - uAZwnZNHCO2j+82cPGETrg4u4iziby3clWWhVNK04wJCiBfVWlkQgL5VP4ORJUzp - E1csDeRCXdGAgw== -X-ME-Sender: - -X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudegtddgleduucetufdoteggodetrfdotf - fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen - uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne - cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefurghmuhgv - lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf - frrghtthgvrhhnpeduhfejfedvhffgfeehtefghfeiiefgfeehgfdvvdevfeegjeehjedv - gfejheeuieenucfkphepjedtrddufeehrddugeekrdduhedunecuvehluhhsthgvrhfuih - iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgrmhhuvghlsehshhholhhlrghn - ugdrohhrgh -X-ME-Proxy: - - - -Received: from titanium.stl.sholland.net - (70-135-148-151.lightspeed.stlsmo.sbcglobal.net [70.135.148.151]) - by mail.messagingengine.com (Postfix) with ESMTPA id B6856306005E; - Thu, 3 Sep 2020 01:07:17 -0400 (EDT) -From: Samuel Holland -To: Jagan Teki , Maxime Ripard -Cc: Andre Przywara , - Peter Robinson , u-boot@lists.denx.de, - Samuel Holland -Subject: [PATCH 1/8] sunxi: board: Use a more descriptive variable name -Date: Thu, 3 Sep 2020 00:07:09 -0500 -Message-Id: <20200903050716.48488-2-samuel@sholland.org> -X-Mailer: git-send-email 2.26.2 -In-Reply-To: <20200903050716.48488-1-samuel@sholland.org> -References: <20200903050716.48488-1-samuel@sholland.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -The variable "cmp_str" always leaves me wondering if it is the DT name -of the current board (yes) or DT name in the FIT config entry (no). - -In preparation for expanding the functionality here, rename it to -something that obviously means "this is the DT name we are looking for". - -Signed-off-by: Samuel Holland ---- - board/sunxi/board.c | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/board/sunxi/board.c b/board/sunxi/board.c -index 71e2b758a3e..674e6816d2d 100644 ---- a/board/sunxi/board.c -+++ b/board/sunxi/board.c -@@ -892,14 +892,14 @@ int ft_board_setup(void *blob, struct bd_info *bd) - int board_fit_config_name_match(const char *name) - { - struct boot_file_head *spl = get_spl_header(SPL_DT_HEADER_VERSION); -- const char *cmp_str = (const char *)spl; -+ const char *best_dt_name = (const char *)spl; - - /* Check if there is a DT name stored in the SPL header and use that. */ - if (spl != INVALID_SPL_HEADER && spl->dt_name_offset) { -- cmp_str += spl->dt_name_offset; -+ best_dt_name += spl->dt_name_offset; - } else { - #ifdef CONFIG_DEFAULT_DEVICE_TREE -- cmp_str = CONFIG_DEFAULT_DEVICE_TREE; -+ best_dt_name = CONFIG_DEFAULT_DEVICE_TREE; - #else - return 0; - #endif -@@ -907,15 +907,15 @@ int board_fit_config_name_match(const char *name) - - #ifdef CONFIG_PINE64_DT_SELECTION - /* Differentiate the two Pine64 board DTs by their DRAM size. */ -- if (strstr(name, "-pine64") && strstr(cmp_str, "-pine64")) { -+ if (strstr(name, "-pine64") && strstr(best_dt_name, "-pine64")) { - if ((gd->ram_size > 512 * 1024 * 1024)) - return !strstr(name, "plus"); - else - return !!strstr(name, "plus"); - } else { -- return strcmp(name, cmp_str); -+ return strcmp(name, best_dt_name); - } - #endif -- return strcmp(name, cmp_str); -+ return strcmp(name, best_dt_name); - } - #endif - -From patchwork Thu Sep 3 05:07:10 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Samuel Holland -X-Patchwork-Id: 1356309 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=sholland.org -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=sholland.org header.i=@sholland.org header.a=rsa-sha256 - header.s=fm3 header.b=Sj8OLfL4; - dkim=pass (2048-bit key; - unprotected) header.d=messagingengine.com header.i=@messagingengine.com - header.a=rsa-sha256 header.s=fm3 header.b=gP0Xb3h8; - dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4Bhphf6BH6z9sTR - for ; Thu, 3 Sep 2020 15:07:30 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id A8413822E3; - Thu, 3 Sep 2020 07:07:25 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=sholland.org -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=sholland.org header.i=@sholland.org - header.b="Sj8OLfL4"; dkim=pass (2048-bit key; - unprotected) header.d=messagingengine.com header.i=@messagingengine.com - header.b="gP0Xb3h8"; dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 7B2D9822E8; Thu, 3 Sep 2020 07:07:23 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, - SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no - version=3.4.2 -Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com - [66.111.4.26]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 88299822CA - for ; Thu, 3 Sep 2020 07:07:19 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=sholland.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=samuel@sholland.org -Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) - by mailout.nyi.internal (Postfix) with ESMTP id 76A985C0185; - Thu, 3 Sep 2020 01:07:18 -0400 (EDT) -Received: from mailfrontend2 ([10.202.2.163]) - by compute3.internal (MEProxy); Thu, 03 Sep 2020 01:07:18 -0400 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= - from:to:cc:subject:date:message-id:in-reply-to:references - :mime-version:content-transfer-encoding; s=fm3; bh=PQN64SHY0DFbJ - Xj9YPEcwJKL0bbybvo9/xMWQLiHCkU=; b=Sj8OLfL4WM4t/eW8xPA7XiaXE7bRC - 9oDd5605MwRja78aJ+GwV1TuxapJm7IlVNnlBETATblOjQenK4B7tAuxyPitzu+K - yJP+d0AYfgltsx888/hHtABBhsY20/7onFV1xxF/nB6fWwM6UTYfzsg2QQ2QYHmb - R5QGX38IUdDGZPR/U3bd2roatbUMK+xMqPZku3+3xxbSlLdWpeXp3YBmNCZFrkef - DjNUZE0kZWZIXIEk25bliOi1Yol1RZQZBq4As373rtZSvdXJbPKxU6C5c2TH6OgZ - ZcjNRU6zogMnOHhe/nklaCLzZQPx8Wz5Nse8PYJuRlDGk5tu5tOcONmog== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= - messagingengine.com; h=cc:content-transfer-encoding:date:from - :in-reply-to:message-id:mime-version:references:subject:to - :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= - fm3; bh=PQN64SHY0DFbJXj9YPEcwJKL0bbybvo9/xMWQLiHCkU=; b=gP0Xb3h8 - lzo0knlriZlcpqJf2dY4yeWblYiYIsakrHO3GUDeZ7G9RYeSSWZ89RjUPZIHn4tw - mTk7vKxHbWz88EaQ+iPXaHsygzVk6RGrnU+7eGtJzZmUmKAm19hTi1uqkP/nXGyY - yyL1IKzw3pieBI1wHq1JPBo+AqTyAsrhrjgdalM+f9/0WwcdAWLTWYUXdR65xW1W - oFUPZ3bjJWrhFb1KFwEiJKdkK9tpivNCGKLe9fvnTLEelYQVoKMAE5G0xVdJhIqY - mQAq41sXJ3LRSeQWUb4Nd00bQsDTsroKLXDYc1P2K57wRGNIalbkkWZmbadPn2VW - 5jUVvdCWPvDEZQ== -X-ME-Sender: - -X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudegtddgleduucetufdoteggodetrfdotf - fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen - uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne - cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefurghmuhgv - lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf - frrghtthgvrhhnpeduhfejfedvhffgfeehtefghfeiiefgfeehgfdvvdevfeegjeehjedv - gfejheeuieenucfkphepjedtrddufeehrddugeekrdduhedunecuvehluhhsthgvrhfuih - iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgrmhhuvghlsehshhholhhlrghn - ugdrohhrgh -X-ME-Proxy: - - - -Received: from titanium.stl.sholland.net - (70-135-148-151.lightspeed.stlsmo.sbcglobal.net [70.135.148.151]) - by mail.messagingengine.com (Postfix) with ESMTPA id 0C6DA306005B; - Thu, 3 Sep 2020 01:07:18 -0400 (EDT) -From: Samuel Holland -To: Jagan Teki , Maxime Ripard -Cc: Andre Przywara , - Peter Robinson , u-boot@lists.denx.de, - Samuel Holland -Subject: [PATCH 2/8] sunxi: board: Add a helper to get the SPL DT name -Date: Thu, 3 Sep 2020 00:07:10 -0500 -Message-Id: <20200903050716.48488-3-samuel@sholland.org> -X-Mailer: git-send-email 2.26.2 -In-Reply-To: <20200903050716.48488-1-samuel@sholland.org> -References: <20200903050716.48488-1-samuel@sholland.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -This moves the validity checking and typecasts all to one place away -from the string comparison logic, and it detangles the compile-time -and runtime control flow. - -The new helper will also be used by U-Boot proper in a future commit. - -Signed-off-by: Samuel Holland ---- - board/sunxi/board.c | 26 +++++++++++++++++--------- - 1 file changed, 17 insertions(+), 9 deletions(-) - -diff --git a/board/sunxi/board.c b/board/sunxi/board.c -index 674e6816d2d..5c9b811f27a 100644 ---- a/board/sunxi/board.c -+++ b/board/sunxi/board.c -@@ -319,6 +319,17 @@ static struct boot_file_head * get_spl_header(uint8_t req_version) - return spl; - } - -+static const char *get_spl_dt_name(void) -+{ -+ struct boot_file_head *spl = get_spl_header(SPL_DT_HEADER_VERSION); -+ -+ /* Check if there is a DT name stored in the SPL header. */ -+ if (spl != INVALID_SPL_HEADER && spl->dt_name_offset) -+ return (char *)spl + spl->dt_name_offset; -+ -+ return NULL; -+} -+ - int dram_init(void) - { - struct boot_file_head *spl = get_spl_header(SPL_DRAM_HEADER_VERSION); -@@ -891,20 +902,17 @@ int ft_board_setup(void *blob, struct bd_info *bd) - #ifdef CONFIG_SPL_LOAD_FIT - int board_fit_config_name_match(const char *name) - { -- struct boot_file_head *spl = get_spl_header(SPL_DT_HEADER_VERSION); -- const char *best_dt_name = (const char *)spl; -+ const char *best_dt_name = get_spl_dt_name(); - -- /* Check if there is a DT name stored in the SPL header and use that. */ -- if (spl != INVALID_SPL_HEADER && spl->dt_name_offset) { -- best_dt_name += spl->dt_name_offset; -- } else { - #ifdef CONFIG_DEFAULT_DEVICE_TREE -+ if (best_dt_name == NULL) - best_dt_name = CONFIG_DEFAULT_DEVICE_TREE; --#else -- return 0; - #endif -- }; - -+ if (best_dt_name == NULL) { -+ /* No DT name was provided, so accept the first config. */ -+ return 0; -+ } - #ifdef CONFIG_PINE64_DT_SELECTION - /* Differentiate the two Pine64 board DTs by their DRAM size. */ - if (strstr(name, "-pine64") && strstr(best_dt_name, "-pine64")) { - -From patchwork Thu Sep 3 05:07:11 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Samuel Holland -X-Patchwork-Id: 1356311 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=sholland.org -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=sholland.org header.i=@sholland.org header.a=rsa-sha256 - header.s=fm3 header.b=YljKqDaX; - dkim=pass (2048-bit key; - unprotected) header.d=messagingengine.com header.i=@messagingengine.com - header.a=rsa-sha256 header.s=fm3 header.b=KFsvPFSQ; - dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4Bhpj50Q5mz9sTR - for ; Thu, 3 Sep 2020 15:07:52 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 921A1822EA; - Thu, 3 Sep 2020 07:07:28 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=sholland.org -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=sholland.org header.i=@sholland.org - header.b="YljKqDaX"; dkim=pass (2048-bit key; - unprotected) header.d=messagingengine.com header.i=@messagingengine.com - header.b="KFsvPFSQ"; dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 29DBC822EA; Thu, 3 Sep 2020 07:07:26 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, - SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no - version=3.4.2 -Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com - [66.111.4.26]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id AA176822D5 - for ; Thu, 3 Sep 2020 07:07:19 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=sholland.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=samuel@sholland.org -Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) - by mailout.nyi.internal (Postfix) with ESMTP id C1C965C01A4; - Thu, 3 Sep 2020 01:07:18 -0400 (EDT) -Received: from mailfrontend2 ([10.202.2.163]) - by compute3.internal (MEProxy); Thu, 03 Sep 2020 01:07:18 -0400 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= - from:to:cc:subject:date:message-id:in-reply-to:references - :mime-version:content-transfer-encoding; s=fm3; bh=Qd9EKlOeDxNxU - GjePDGIEyZE9Rx9hOCoFpYSpjLblzg=; b=YljKqDaXzM+KcF2P5M1Qm4ZqIN47C - vZyob9mNeC9Ih6xzht0zmIiswyR4o06F6F75APKEHOLdF98lM16tFq5lm2c0K2C/ - FLv20iU82lyakGbT5y0fX9BUw2B1l6InAM81fN1aIyj6vKXDINvzr0Njek5zd82e - EBZJnaT7r4LgQ3tDupNPvYm+nq18jIibpUUERREvoNh6ktNeYOJbWPpuyRpW06+o - zKpzwXrrMFjcTuczM3DCSk0LchI0IGfF9STJXcWYrkwILpOIIZIn7Pcxbxg3LuPP - EF8OLTHGhbp2yvtbSVxuSyV5XrLKaiMTJNs8Z8T/AVWTfuAfwA146icVg== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= - messagingengine.com; h=cc:content-transfer-encoding:date:from - :in-reply-to:message-id:mime-version:references:subject:to - :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= - fm3; bh=Qd9EKlOeDxNxUGjePDGIEyZE9Rx9hOCoFpYSpjLblzg=; b=KFsvPFSQ - oz3tuB0IgFDRGBPs9pm02ZFiQW6XW9io0ha6PFYr7sl2irhSUuA89cAncxDeQ99n - /SKVx+jefi15iu+rEUTEdZwFzb8FbfQ6faNIyvJ1RL4m+eH9ifIF0yuc62Qe9Pt2 - Y0+6e1tDB3SyFRABn0Vib5DrnmbMSYeSJZug7TRAxINnW/qdG6pq1ycNPbhvYy7V - L0yBLcV7gP/gwEF5OtEWV2X22kqKFir6fKCsAVDK2KUTmM3ezGifn8h6u7n8ksWC - +4UbNfjcBKfNLHFEEIb7CdNdtixI4oo/XIsA8eDHULQ0v7cF7bZ1KAR+jBSW4Bf9 - CRQNy2hCu5K+Rg== -X-ME-Sender: - -X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudegtddgleduucetufdoteggodetrfdotf - fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen - uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne - cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefurghmuhgv - lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf - frrghtthgvrhhnpeduhfejfedvhffgfeehtefghfeiiefgfeehgfdvvdevfeegjeehjedv - gfejheeuieenucfkphepjedtrddufeehrddugeekrdduhedunecuvehluhhsthgvrhfuih - iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgrmhhuvghlsehshhholhhlrghn - ugdrohhrgh -X-ME-Proxy: - - - -Received: from titanium.stl.sholland.net - (70-135-148-151.lightspeed.stlsmo.sbcglobal.net [70.135.148.151]) - by mail.messagingengine.com (Postfix) with ESMTPA id 56CF53060062; - Thu, 3 Sep 2020 01:07:18 -0400 (EDT) -From: Samuel Holland -To: Jagan Teki , Maxime Ripard -Cc: Andre Przywara , - Peter Robinson , u-boot@lists.denx.de, - Samuel Holland -Subject: [PATCH 3/8] sunxi: board: Simplify Pine A64 DT selection logic -Date: Thu, 3 Sep 2020 00:07:11 -0500 -Message-Id: <20200903050716.48488-4-samuel@sholland.org> -X-Mailer: git-send-email 2.26.2 -In-Reply-To: <20200903050716.48488-1-samuel@sholland.org> -References: <20200903050716.48488-1-samuel@sholland.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -Instead of using an entirely separate matching algorithm, simply update -the name of the DT we want to match. Enabling this logic does not depend -on the FIT config name, only on the initial guess of the board name. - -Importantly, the initial guess must be "sun50i-a64-pine64-plus", because -otherwise the logic would trigger when "sun50i-a64-pine64-lts" was -written to the SPL header. - -Signed-off-by: Samuel Holland ---- - board/sunxi/board.c | 12 ++++-------- - 1 file changed, 4 insertions(+), 8 deletions(-) - -diff --git a/board/sunxi/board.c b/board/sunxi/board.c -index 5c9b811f27a..fb0d5bf4743 100644 ---- a/board/sunxi/board.c -+++ b/board/sunxi/board.c -@@ -914,14 +914,10 @@ int board_fit_config_name_match(const char *name) - return 0; - } - #ifdef CONFIG_PINE64_DT_SELECTION --/* Differentiate the two Pine64 board DTs by their DRAM size. */ -- if (strstr(name, "-pine64") && strstr(best_dt_name, "-pine64")) { -- if ((gd->ram_size > 512 * 1024 * 1024)) -- return !strstr(name, "plus"); -- else -- return !!strstr(name, "plus"); -- } else { -- return strcmp(name, best_dt_name); -+ else if (strstr(best_dt_name, "-pine64-plus")) { -+ /* Differentiate the Pine A64 boards by their DRAM size. */ -+ if ((gd->ram_size == 512 * 1024 * 1024)) -+ best_dt_name = "sun50i-a64-pine64"; - } - #endif - return strcmp(name, best_dt_name); - -From patchwork Thu Sep 3 05:07:12 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Samuel Holland -X-Patchwork-Id: 1356310 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=sholland.org -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=sholland.org header.i=@sholland.org header.a=rsa-sha256 - header.s=fm3 header.b=WQvh0tb6; - dkim=pass (2048-bit key; - unprotected) header.d=messagingengine.com header.i=@messagingengine.com - header.a=rsa-sha256 header.s=fm3 header.b=Va8mMuMz; - dkim-atps=neutral -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 RSA-PSS (4096 bits) server-digest - SHA256) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4Bhphw0Nkzz9sTR - for ; Thu, 3 Sep 2020 15:07:43 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 19AFA822DF; - Thu, 3 Sep 2020 07:07:27 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=sholland.org -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=sholland.org header.i=@sholland.org - header.b="WQvh0tb6"; dkim=pass (2048-bit key; - unprotected) header.d=messagingengine.com header.i=@messagingengine.com - header.b="Va8mMuMz"; dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 3129B822E3; Thu, 3 Sep 2020 07:07:24 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, - SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no - version=3.4.2 -Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com - [66.111.4.26]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id D694E822E1 - for ; Thu, 3 Sep 2020 07:07:19 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=sholland.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=samuel@sholland.org -Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) - by mailout.nyi.internal (Postfix) with ESMTP id 1C9B95C0116; - Thu, 3 Sep 2020 01:07:19 -0400 (EDT) -Received: from mailfrontend2 ([10.202.2.163]) - by compute3.internal (MEProxy); Thu, 03 Sep 2020 01:07:19 -0400 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= - from:to:cc:subject:date:message-id:in-reply-to:references - :mime-version:content-transfer-encoding; s=fm3; bh=CNkIsGtVD92kV - ynV0NXjTV4vykOq+sdspxFol5f0iNM=; b=WQvh0tb6tyqtZYusFC0NyOcSeWaQm - ikcA+euqToY6scf0d256r+20fb4HnTosS+vXbhpF5vlo1hBhc2RW2/e+dR3a3AKH - qb8j3UwBWhpnwwZMS8HqUob5Cfq1BxHU1+/2tjRXvlMxDxNd/HvUoRlLBhfK57OA - Ln6MfWcRmxHlq5Js5MGAD9hRdzkPrnDX4x/NdRttkUaH/WMSGNEO0TnKW88PYXsE - 8u0eiuJQWWLED8nBAxf89vvVUf7o+It6gx5i+r5Bjl/BE5Ykj4O4kpMX2MeiB+Zh - KjYjivDQw8wmG4CrFKPCq4Bd/RoSQd9zHYBp6QuYpvY80vw+jLX7oVwMw== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= - messagingengine.com; h=cc:content-transfer-encoding:date:from - :in-reply-to:message-id:mime-version:references:subject:to - :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= - fm3; bh=CNkIsGtVD92kVynV0NXjTV4vykOq+sdspxFol5f0iNM=; b=Va8mMuMz - othxHX11xn91XUTb1pYRnk4BO4zhPNKy7f+RU+S4/3DaYnmV9zl4x03LblsUWZRs - bnICHr20DS5YKUcqT9ag5zm1ocAxwJQGTc/SnTpWkZsJXR8unpsmm89jDyV+w5dM - p3YUeZ3AhxjEFHJXhqUnnOIXSLXGzYsnWA+szWf0dHI7tpZJqaV5O4X8xTk2X5cp - 2siDwjLGLi7PUtB/vcNZmOOZQbROGonW6mu2iNurHnrBUk4gOOmQhmeiEkjJb9lk - +MfMZsLXllNr8/o7323d6iP90v1scxaBASDC+q2zzEmUVAmU/Y/fyH0B6frHJy3O - QTcFTnYy45X3Zw== -X-ME-Sender: - -X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudegtddgleduucetufdoteggodetrfdotf - fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen - uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne - cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefurghmuhgv - lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf - frrghtthgvrhhnpeduhfejfedvhffgfeehtefghfeiiefgfeehgfdvvdevfeegjeehjedv - gfejheeuieenucfkphepjedtrddufeehrddugeekrdduhedunecuvehluhhsthgvrhfuih - iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgrmhhuvghlsehshhholhhlrghn - ugdrohhrgh -X-ME-Proxy: - - - -Received: from titanium.stl.sholland.net - (70-135-148-151.lightspeed.stlsmo.sbcglobal.net [70.135.148.151]) - by mail.messagingengine.com (Postfix) with ESMTPA id A21AB306005B; - Thu, 3 Sep 2020 01:07:18 -0400 (EDT) -From: Samuel Holland -To: Jagan Teki , Maxime Ripard -Cc: Andre Przywara , - Peter Robinson , u-boot@lists.denx.de, - Samuel Holland -Subject: [PATCH 4/8] sunxi: board: Add PinePhone DT selection logic -Date: Thu, 3 Sep 2020 00:07:12 -0500 -Message-Id: <20200903050716.48488-5-samuel@sholland.org> -X-Mailer: git-send-email 2.26.2 -In-Reply-To: <20200903050716.48488-1-samuel@sholland.org> -References: <20200903050716.48488-1-samuel@sholland.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -There are two different publicly-released revisions of the PinePhone -hardware, versions 1.1 and 1.2; and they need different device trees. -Since some GPIO pins were rerouted, we can use that to distinguish -between them. - -Signed-off-by: Samuel Holland ---- - arch/arm/mach-sunxi/Kconfig | 7 +++++++ - board/sunxi/board.c | 21 +++++++++++++++++++++ - 2 files changed, 28 insertions(+) - -diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig -index be0822bfb7d..8421f3b6854 100644 ---- a/arch/arm/mach-sunxi/Kconfig -+++ b/arch/arm/mach-sunxi/Kconfig -@@ -1010,4 +1010,11 @@ config PINE64_DT_SELECTION - option, the device tree selection code specific to Pine64 which - utilizes the DRAM size will be enabled. - -+config PINEPHONE_DT_SELECTION -+ bool "Enable PinePhone device tree selection code" -+ depends on MACH_SUN50I -+ help -+ Enable this option to automatically select the device tree for the -+ correct PinePhone hardware revision during boot. -+ - endif -diff --git a/board/sunxi/board.c b/board/sunxi/board.c -index fb0d5bf4743..3d64ed18664 100644 ---- a/board/sunxi/board.c -+++ b/board/sunxi/board.c -@@ -27,6 +27,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -920,6 +921,26 @@ int board_fit_config_name_match(const char *name) - best_dt_name = "sun50i-a64-pine64"; - } - #endif -+#ifdef CONFIG_PINEPHONE_DT_SELECTION -+ else if (strstr(best_dt_name, "-pinephone")) { -+ /* Differentiate the PinePhone revisions by GPIO inputs. */ -+ prcm_apb0_enable(PRCM_APB0_GATE_PIO); -+ sunxi_gpio_set_pull(SUNXI_GPL(6), SUNXI_GPIO_PULL_UP); -+ sunxi_gpio_set_cfgpin(SUNXI_GPL(6), SUNXI_GPIO_INPUT); -+ udelay(100); -+ -+ /* PL6 is pulled low by the modem on v1.2. */ -+ if (gpio_get_value(SUNXI_GPL(6)) == 0) -+ best_dt_name = "sun50i-a64-pinephone-1.2"; -+ else -+ best_dt_name = "sun50i-a64-pinephone-1.1"; -+ -+ sunxi_gpio_set_cfgpin(SUNXI_GPL(6), SUNXI_GPIO_DISABLE); -+ sunxi_gpio_set_pull(SUNXI_GPL(6), SUNXI_GPIO_PULL_DISABLE); -+ prcm_apb0_disable(PRCM_APB0_GATE_PIO); -+ } -+#endif -+ - return strcmp(name, best_dt_name); - } - #endif - -From patchwork Thu Sep 3 05:07:13 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Samuel Holland -X-Patchwork-Id: 1356314 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=sholland.org -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=sholland.org header.i=@sholland.org header.a=rsa-sha256 - header.s=fm3 header.b=fyCJtExp; - dkim=pass (2048-bit key; - unprotected) header.d=messagingengine.com header.i=@messagingengine.com - header.a=rsa-sha256 header.s=fm3 header.b=B5Js1Nb8; - dkim-atps=neutral -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4Bhpjn2MLBz9sTR - for ; Thu, 3 Sep 2020 15:08:29 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 774738230A; - Thu, 3 Sep 2020 07:07:33 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=sholland.org -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=sholland.org header.i=@sholland.org - header.b="fyCJtExp"; dkim=pass (2048-bit key; - unprotected) header.d=messagingengine.com header.i=@messagingengine.com - header.b="B5Js1Nb8"; dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 43189822ED; Thu, 3 Sep 2020 07:07:27 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, - SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no - version=3.4.2 -Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com - [66.111.4.26]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 2BF26822D9 - for ; Thu, 3 Sep 2020 07:07:21 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=sholland.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=samuel@sholland.org -Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) - by mailout.nyi.internal (Postfix) with ESMTP id 672025C018A; - Thu, 3 Sep 2020 01:07:19 -0400 (EDT) -Received: from mailfrontend2 ([10.202.2.163]) - by compute3.internal (MEProxy); Thu, 03 Sep 2020 01:07:19 -0400 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= - from:to:cc:subject:date:message-id:in-reply-to:references - :mime-version:content-transfer-encoding; s=fm3; bh=azt3bcG2gyjJM - Z+euNV8r3HcVvCpV+eSxdiwdmzQYjE=; b=fyCJtExpAf8Pds8sXBs5pz5z9Werb - vqBSzut0Ck+pcCvap7NpVy7HIRtLqRZZ5TVdGQrBdCyjMYPaBcpnxw/mfUNJKoX9 - WjOBrSnHpTrRp42ZQmJhQhQwBcX/s0j54ruprCfSqKSDuTOBG1N1JvKxI/PpfY6r - SsSEbwLKYq1RtK4noXm6JikphM9ME5i5XlR5n4XPsXPdM3UhM9DZXrkVwtWp+NyK - 4Xz63Is8oAxwJZAmqv049v/YeMe/Rsf9FY93zxcnQyZVoOHuW1s17AsX7jF8wDRy - xqvpvT8c3cJYXaFLGLrY+nmcGoKIjQSszLh9y5NwbGmjlEElJCcUUJW1A== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= - messagingengine.com; h=cc:content-transfer-encoding:date:from - :in-reply-to:message-id:mime-version:references:subject:to - :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= - fm3; bh=azt3bcG2gyjJMZ+euNV8r3HcVvCpV+eSxdiwdmzQYjE=; b=B5Js1Nb8 - 5VzNH4aOuAW1FHK3OmKXRhz2sqhORkqO2K1N+kVfuPWZeATNjSIGEHwqkBJeJDNc - i+/y18eeCQg5sWkt3YCGaFv//m+LNamP1DRTkwLglswewvGqj0zfgN4MjMJvBWt3 - 0bbdP8+D9o1geSld8IyI3lyRZgu7QN+3vJs4xxyTQL6xTOg6VizhNwm6nwSSl2u8 - O6WzLWqrShbb6PD7Lqy5FrJ+BiqwRR+QrRp1JI86QDXssPJh1CtMiF2LnrkmwPxB - DSp3hr1nqudSNopltfwdUyNu3GdkGbMCE8Iv+4KIZpD8oRH12hS19aRtIqosAuXm - 1Ljrqzx4Vp/yNA== -X-ME-Sender: - -X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudegtddgleduucetufdoteggodetrfdotf - fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen - uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne - cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefurghmuhgv - lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf - frrghtthgvrhhnpeduhfejfedvhffgfeehtefghfeiiefgfeehgfdvvdevfeegjeehjedv - gfejheeuieenucfkphepjedtrddufeehrddugeekrdduhedunecuvehluhhsthgvrhfuih - iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgrmhhuvghlsehshhholhhlrghn - ugdrohhrgh -X-ME-Proxy: - - - -Received: from titanium.stl.sholland.net - (70-135-148-151.lightspeed.stlsmo.sbcglobal.net [70.135.148.151]) - by mail.messagingengine.com (Postfix) with ESMTPA id EE48F306005E; - Thu, 3 Sep 2020 01:07:18 -0400 (EDT) -From: Samuel Holland -To: Jagan Teki , Maxime Ripard -Cc: Andre Przywara , - Peter Robinson , u-boot@lists.denx.de, - Samuel Holland -Subject: [PATCH 5/8] sunxi: board: Save the chosen DT name in the SPL header -Date: Thu, 3 Sep 2020 00:07:13 -0500 -Message-Id: <20200903050716.48488-6-samuel@sholland.org> -X-Mailer: git-send-email 2.26.2 -In-Reply-To: <20200903050716.48488-1-samuel@sholland.org> -References: <20200903050716.48488-1-samuel@sholland.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -This overwrites the name loaded from the SPL image. It will be different -if there was previously no name provided, or if a more accurate name was -determined by the board variant selection logic. This means that the DT -name in the SPL header now always matches the DT appended to U-Boot. - -Signed-off-by: Samuel Holland ---- - board/sunxi/board.c | 27 ++++++++++++++++++++++++++- - 1 file changed, 26 insertions(+), 1 deletion(-) - -diff --git a/board/sunxi/board.c b/board/sunxi/board.c -index 3d64ed18664..eaa40a1ea96 100644 ---- a/board/sunxi/board.c -+++ b/board/sunxi/board.c -@@ -331,6 +331,21 @@ static const char *get_spl_dt_name(void) - return NULL; - } - -+static void set_spl_dt_name(const char *name) -+{ -+ struct boot_file_head *spl = get_spl_header(SPL_ENV_HEADER_VERSION); -+ -+ if (spl == INVALID_SPL_HEADER) -+ return; -+ -+ /* Promote the header version for U-Boot proper, if needed. */ -+ if (spl->spl_signature[3] < SPL_DT_HEADER_VERSION) -+ spl->spl_signature[3] = SPL_DT_HEADER_VERSION; -+ -+ strcpy((char *)&spl->string_pool, name); -+ spl->dt_name_offset = offsetof(struct boot_file_head, string_pool); -+} -+ - int dram_init(void) - { - struct boot_file_head *spl = get_spl_header(SPL_DRAM_HEADER_VERSION); -@@ -904,6 +919,7 @@ int ft_board_setup(void *blob, struct bd_info *bd) - int board_fit_config_name_match(const char *name) - { - const char *best_dt_name = get_spl_dt_name(); -+ int ret; - - #ifdef CONFIG_DEFAULT_DEVICE_TREE - if (best_dt_name == NULL) -@@ -941,6 +957,15 @@ int board_fit_config_name_match(const char *name) - } - #endif - -- return strcmp(name, best_dt_name); -+ ret = strcmp(name, best_dt_name); -+ -+ /* -+ * If one of the FIT configurations matches the most accurate DT name, -+ * update the SPL header to provide that DT name to U-Boot proper. -+ */ -+ if (ret == 0) -+ set_spl_dt_name(best_dt_name); -+ -+ return ret; - } - #endif - -From patchwork Thu Sep 3 05:07:14 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Samuel Holland -X-Patchwork-Id: 1356313 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=sholland.org -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=sholland.org header.i=@sholland.org header.a=rsa-sha256 - header.s=fm3 header.b=Ps0W2fd7; - dkim=pass (2048-bit key; - unprotected) header.d=messagingengine.com header.i=@messagingengine.com - header.a=rsa-sha256 header.s=fm3 header.b=irLh9odg; - dkim-atps=neutral -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4BhpjY18DVz9sTR - for ; Thu, 3 Sep 2020 15:08:17 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 1375E82300; - Thu, 3 Sep 2020 07:07:32 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=sholland.org -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=sholland.org header.i=@sholland.org - header.b="Ps0W2fd7"; dkim=pass (2048-bit key; - unprotected) header.d=messagingengine.com header.i=@messagingengine.com - header.b="irLh9odg"; dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id E9DCE822E1; Thu, 3 Sep 2020 07:07:26 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, - SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no - version=3.4.2 -Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com - [66.111.4.26]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 2CC5D822DF - for ; Thu, 3 Sep 2020 07:07:21 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=sholland.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=samuel@sholland.org -Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) - by mailout.nyi.internal (Postfix) with ESMTP id AAA455C0197; - Thu, 3 Sep 2020 01:07:19 -0400 (EDT) -Received: from mailfrontend2 ([10.202.2.163]) - by compute3.internal (MEProxy); Thu, 03 Sep 2020 01:07:19 -0400 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= - from:to:cc:subject:date:message-id:in-reply-to:references - :mime-version:content-transfer-encoding; s=fm3; bh=YJZBYh6lhnaT4 - or+KKTYoX0BgbruFrnszv2AxRFjCUg=; b=Ps0W2fd7vmO9tBRewK6ov5Y2vWsh9 - oAAVK6vPK0hEzUkkeBIkhSenj5xlmR2HCeP5LxQU+Vgty5CzLJnc48U8lCQwGRFR - ZZ6tAiD9/vOtdVCbU2dRH7WK3uoAEi4AB688do5c3H3KhS8ZN6N7vsakr50TbczK - beuX76xciz0QEuRhJUFbnK9EYpV8/CDS1OFv6P+kA6OSIb71gm9FeFgdHHpmdQ/U - 7sE6vbkMYhL7pFMzeBCYWSfUWF6NK3gfJApDaxFqR1KBlszLuGbIXLVYWImA3WV8 - sFDNZWGk2swSOB1ivq+Xvb2WTlPidjY0OrROgggZcyDHPRFEoZaS1ezAA== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= - messagingengine.com; h=cc:content-transfer-encoding:date:from - :in-reply-to:message-id:mime-version:references:subject:to - :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= - fm3; bh=YJZBYh6lhnaT4or+KKTYoX0BgbruFrnszv2AxRFjCUg=; b=irLh9odg - 4mUJO3vUBGyeYD/WBs8BrulYezzsNoTAJp4uGEv0b9KyxbofUjok4+liYvAT/QZa - ED/iKo1bqgGmEwNPLoM0YORd0pXRd5jyv9W53Z96qzGsNOe0iGkJtSlOMXF3Lrfl - aIpGPRSMoRkqztR6oWBAEHeCm3NCFY4LDzzCoPFQqdcWmiDl+Wi3YfpApRGHdL3v - 4XVOruQFZlZUHZPp42VOzgbJyz+uWB3Z/RN2y0P7Lof1CrYtsWNftV4LuXDQ70VZ - P9TlSWjk75qTa1dqHdj/cvbi5WFBqa4FJKgCCV1OgCCEAc1ZGLhPBVDjt4W7FHJh - hNPlKS0liPCmGQ== -X-ME-Sender: - -X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudegtddgleduucetufdoteggodetrfdotf - fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen - uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne - cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefurghmuhgv - lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf - frrghtthgvrhhnpeduhfejfedvhffgfeehtefghfeiiefgfeehgfdvvdevfeegjeehjedv - gfejheeuieenucfkphepjedtrddufeehrddugeekrdduhedunecuvehluhhsthgvrhfuih - iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgrmhhuvghlsehshhholhhlrghn - ugdrohhrgh -X-ME-Proxy: - - - -Received: from titanium.stl.sholland.net - (70-135-148-151.lightspeed.stlsmo.sbcglobal.net [70.135.148.151]) - by mail.messagingengine.com (Postfix) with ESMTPA id 4678A306005B; - Thu, 3 Sep 2020 01:07:19 -0400 (EDT) -From: Samuel Holland -To: Jagan Teki , Maxime Ripard -Cc: Andre Przywara , - Peter Robinson , u-boot@lists.denx.de, - Samuel Holland -Subject: [PATCH 6/8] sunxi: board: Set fdtfile to match the DT chosen by SPL -Date: Thu, 3 Sep 2020 00:07:14 -0500 -Message-Id: <20200903050716.48488-7-samuel@sholland.org> -X-Mailer: git-send-email 2.26.2 -In-Reply-To: <20200903050716.48488-1-samuel@sholland.org> -References: <20200903050716.48488-1-samuel@sholland.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -Previously, fdtfile was always the value in CONFIG_DEFAULT_DEVICE_TREE. -This meant that, regardless of the DT chosen by SPL (either by changing -the header in the image or by the selection code at runtime), Linux -always used the default DT. - -By using the name from the SPL header (which, because of the previous -commit, always matches the DT used by U-Boot proper), Linux also sees -the same board as U-Boot/SPL, even if the boot script later loads a DT -from disk. - -Signed-off-by: Samuel Holland ---- - board/sunxi/board.c | 11 +++++++++++ - 1 file changed, 11 insertions(+) - -diff --git a/board/sunxi/board.c b/board/sunxi/board.c -index eaa40a1ea96..5457b28e135 100644 ---- a/board/sunxi/board.c -+++ b/board/sunxi/board.c -@@ -870,6 +870,7 @@ static void setup_environment(const void *fdt) - - int misc_init_r(void) - { -+ const char *spl_dt_name; - uint boot; - - env_set("fel_booted", NULL); -@@ -888,6 +889,16 @@ int misc_init_r(void) - env_set("mmc_bootdev", "1"); - } - -+ /* Set fdtfile to match the FIT configuration chosen in SPL. */ -+ spl_dt_name = get_spl_dt_name(); -+ if (spl_dt_name) { -+ char *prefix = IS_ENABLED(CONFIG_ARM64) ? "allwinner/" : ""; -+ char str[64]; -+ -+ snprintf(str, sizeof(str), "%s%s.dtb", prefix, spl_dt_name); -+ env_set("fdtfile", str); -+ } -+ - setup_environment(gd->fdt_blob); - - #ifdef CONFIG_USB_ETHER - diff --git a/uboot-tools.spec b/uboot-tools.spec index c119c66..2c78421 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -27,7 +27,7 @@ Patch5: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch Patch6: arm-tegra-define-fdtfile-option-for-distro-boot.patch Patch7: arm-add-BOOTENV_EFI_SET_FDTFILE_FALLBACK-for-tegra186-be.patch # AllWinner improvements -Patch8: PinePhone-automatic-device-tree-selection.patch +Patch8: AllWinner-UpstreamSync.patch Patch9: AllWinner-PinePhone.patch Patch10: AllWinner-PineTab.patch # Rockchips improvements From 651347517010c0240afbb769f847fbdbba728f4c Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 22 Sep 2020 12:52:02 +0100 Subject: [PATCH 020/271] 2020.10 RC5 --- 0001-Fix-BeagleAI-detection.patch | 29 +++++++++++++++++++++++++++++ arm-boards | 1 + sources | 2 +- uboot-tools.spec | 9 +++++++-- 4 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 0001-Fix-BeagleAI-detection.patch diff --git a/0001-Fix-BeagleAI-detection.patch b/0001-Fix-BeagleAI-detection.patch new file mode 100644 index 0000000..dfd96cc --- /dev/null +++ b/0001-Fix-BeagleAI-detection.patch @@ -0,0 +1,29 @@ +From 1849ef423238aeb1732eb3b8e67eb46bc21401c7 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Thu, 10 Sep 2020 14:24:12 +0100 +Subject: [PATCH] Fix BeagleAI detection + +Signed-off-by: Peter Robinson +--- + board/ti/am57xx/board.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/board/ti/am57xx/board.c b/board/ti/am57xx/board.c +index 7809875510..3232812a97 100644 +--- a/board/ti/am57xx/board.c ++++ b/board/ti/am57xx/board.c +@@ -527,8 +527,10 @@ void do_board_detect(void) + + rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS, + CONFIG_EEPROM_CHIP_ADDRESS); +- if (rc) ++ if (rc) { + printf("ti_i2c_eeprom_init failed %d\n", rc); ++ ti_i2c_eeprom_am_set("BBONE-AI", "A"); ++ } + + #ifdef CONFIG_SUPPORT_EMMC_BOOT + rc = board_bootmode_has_emmc(); +-- +2.26.2 + diff --git a/arm-boards b/arm-boards index 46524ad..b73f726 100644 --- a/arm-boards +++ b/arm-boards @@ -121,6 +121,7 @@ Sinlinx_SinA31s Sinovoip_BPI_M2 Sinovoip_BPI_M3 stih410-b2260 +stm32mp15_basic sunxi_Gemei_G9 tbs_a711 tinker-rk3288 diff --git a/sources b/sources index 9cdc2e2..6548dda 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2020.10-rc4.tar.bz2) = ba944bf9cbd8285de6fd4c2e67c2411eda6c504e87720854b36fbcd290927dabb25deee28302e8b81a982f41d29d4ddf908d4891c4f5b2bda4324a0191eb701d +SHA512 (u-boot-2020.10-rc5.tar.bz2) = 8c0f6cceca4aeb67a51743886d65e420d95a70cc427acd17ac81281cad996339a9b376994ff76e46cb862d54797269da52dd05dfc7e12c8c271ed7aca828e2b4 diff --git a/uboot-tools.spec b/uboot-tools.spec index 2c78421..a51a705 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -%global candidate rc4 +%global candidate rc5 Name: uboot-tools Version: 2020.10 -Release: 0.4%{?candidate:.%{candidate}}%{?dist} +Release: 0.5%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -33,6 +33,8 @@ Patch10: AllWinner-PineTab.patch # Rockchips improvements Patch11: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch Patch12: rockchip-Rock960-Fix-up-USB-support.patch +# TI fixes +Patch13: 0001-Fix-BeagleAI-detection.patch BuildRequires: bc BuildRequires: dtc @@ -246,6 +248,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Tue Sep 22 2020 Peter Robinson - 2020.10-0.5.rc5 +- Update to 2020.10 RC5 + * Wed Sep 09 2020 Peter Robinson - 2020.10-0.4.rc4 - Update to 2020.10 RC4 From 003e91fbfc1fac6928e2f1fb52fc5881178c6f74 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sun, 27 Sep 2020 17:20:39 +0100 Subject: [PATCH 021/271] Initial support for display output on Pinebook Pro --- rk3399-Pinebook-pro-EDP-support.patch | 1027 +++++++++++++++++++++++++ rk3399-reset-display-hack.patch | 46 ++ uboot-tools.spec | 9 +- 3 files changed, 1080 insertions(+), 2 deletions(-) create mode 100644 rk3399-Pinebook-pro-EDP-support.patch create mode 100644 rk3399-reset-display-hack.patch diff --git a/rk3399-Pinebook-pro-EDP-support.patch b/rk3399-Pinebook-pro-EDP-support.patch new file mode 100644 index 0000000..e04b62d --- /dev/null +++ b/rk3399-Pinebook-pro-EDP-support.patch @@ -0,0 +1,1027 @@ +From patchwork Fri Sep 25 18:36:55 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Arnaud Patard (Rtp)" +X-Patchwork-Id: 1371525 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=fail (p=none dis=none) header.from=rtp-net.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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4BygrL4fh7z9sS8 + for ; Sat, 26 Sep 2020 04:47:14 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 1DE9D823F2; + Fri, 25 Sep 2020 20:46:51 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 7FF818240A; Fri, 25 Sep 2020 20:46:47 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, + URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 +Received: from lechat.rtp-net.org (lechat.rtp-net.org + [IPv6:2001:bc8:3430:1000::c0f:fee]) + (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 60178823ED + for ; Fri, 25 Sep 2020 20:46:44 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org +Received: by lechat.rtp-net.org (Postfix, from userid 1000) + id 21266180A8C; Fri, 25 Sep 2020 20:46:42 +0200 (CEST) +Message-ID: <20200925183856.346332079@rtp-net.org> +User-Agent: quilt/0.66 +Date: Fri, 25 Sep 2020 20:36:55 +0200 +From: Arnaud Patard (Rtp) +To: u-boot@lists.denx.de +Cc: Kever Yang , + Anatolij Gustschin , + Philipp Tomsich , + Peter Robinson , + Samuel Dionne-Riel , + Arnaud Patard +Subject: [patch 1/8] RFC: drivers/video/rockchip/rk_vop.c: Use endpoint + compatible string to find VOP mode +References: <20200925183654.723338620@rtp-net.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +The current code is using an hard coded enum and the of node reg value of +endpoint to find out if the endpoint is mipi/hdmi/lvds/edp/dp. The order +is different between rk3288, rk3399 vop little, rk3399 vop big. + +A possible solution would be to make sure that the rk3288.dtsi and +rk3399.dtsi files have "expected" reg value or an other solution is +to find the kind of endpoint by comparing the endpoint compatible value. + +This patch is implementing the more flexible second solution. + +Signed-off-by: Arnaud Patard + +Index: u-boot/arch/arm/include/asm/arch-rockchip/vop_rk3288.h +=================================================================== +--- u-boot.orig/arch/arm/include/asm/arch-rockchip/vop_rk3288.h ++++ u-boot/arch/arm/include/asm/arch-rockchip/vop_rk3288.h +@@ -85,26 +85,13 @@ enum { + LB_RGB_1280X8 = 0x5 + }; + +-#if defined(CONFIG_ROCKCHIP_RK3399) + enum vop_modes { + VOP_MODE_EDP = 0, + VOP_MODE_MIPI, + VOP_MODE_HDMI, +- VOP_MODE_MIPI1, +- VOP_MODE_DP, +- VOP_MODE_NONE, +-}; +-#else +-enum vop_modes { +- VOP_MODE_EDP = 0, +- VOP_MODE_HDMI, + VOP_MODE_LVDS, +- VOP_MODE_MIPI, +- VOP_MODE_NONE, +- VOP_MODE_AUTO_DETECT, +- VOP_MODE_UNKNOWN, ++ VOP_MODE_DP, + }; +-#endif + + /* VOP_VERSION_INFO */ + #define M_FPGA_VERSION (0xffff << 16) +Index: u-boot/drivers/video/rockchip/rk_vop.c +=================================================================== +--- u-boot.orig/drivers/video/rockchip/rk_vop.c ++++ u-boot/drivers/video/rockchip/rk_vop.c +@@ -235,12 +235,11 @@ static int rk_display_init(struct udevic + struct clk clk; + enum video_log2_bpp l2bpp; + ofnode remote; ++ const char *compat; + + debug("%s(%s, %lu, %s)\n", __func__, + dev_read_name(dev), fbbase, ofnode_get_name(ep_node)); + +- vop_id = ofnode_read_s32_default(ep_node, "reg", -1); +- debug("vop_id=%d\n", vop_id); + ret = ofnode_read_u32(ep_node, "remote-endpoint", &remote_phandle); + if (ret) + return ret; +@@ -282,6 +281,28 @@ static int rk_display_init(struct udevic + if (disp) + break; + }; ++ compat = ofnode_get_property(remote, "compatible", NULL); ++ if (!compat) { ++ debug("%s(%s): Failed to find compatible property\n", ++ __func__, dev_read_name(dev)); ++ return -EINVAL; ++ } ++ if (strstr(compat, "edp")) { ++ vop_id = VOP_MODE_EDP; ++ } else if (strstr(compat, "mipi")) { ++ vop_id = VOP_MODE_MIPI; ++ } else if (strstr(compat, "hdmi")) { ++ vop_id = VOP_MODE_HDMI; ++ } else if (strstr(compat, "cdn-dp")) { ++ vop_id = VOP_MODE_DP; ++ } else if (strstr(compat, "lvds")) { ++ vop_id = VOP_MODE_LVDS; ++ } else { ++ debug("%s(%s): Failed to find vop mode for %s\n", ++ __func__, dev_read_name(dev), compat); ++ return -EINVAL; ++ } ++ debug("vop_id=%d\n", vop_id); + + disp_uc_plat = dev_get_uclass_platdata(disp); + debug("Found device '%s', disp_uc_priv=%p\n", disp->name, disp_uc_plat); + +From patchwork Fri Sep 25 18:36:56 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Arnaud Patard (Rtp)" +X-Patchwork-Id: 1371530 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=fail (p=none dis=none) header.from=rtp-net.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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4BygsJ4hGqz9sS8 + for ; Sat, 26 Sep 2020 04:48:04 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 50C6E82503; + Fri, 25 Sep 2020 20:47:09 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 0F41F8246F; Fri, 25 Sep 2020 20:46:51 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, + URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 +Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) + (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id BD6E0823F5 + for ; Fri, 25 Sep 2020 20:46:44 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org +Received: by lechat.rtp-net.org (Postfix, from userid 1000) + id 0B30218054F; Fri, 25 Sep 2020 20:46:43 +0200 (CEST) +Message-ID: <20200925183856.398231733@rtp-net.org> +User-Agent: quilt/0.66 +Date: Fri, 25 Sep 2020 20:36:56 +0200 +From: Arnaud Patard (Rtp) +To: u-boot@lists.denx.de +Cc: Kever Yang , + Anatolij Gustschin , + Philipp Tomsich , + Peter Robinson , + Samuel Dionne-Riel , + Arnaud Patard +Subject: [patch 2/8] RFC: drivers/video/rockchip/rk_edp.c: Add rk3399 support +References: <20200925183654.723338620@rtp-net.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +According to linux commit "drm/rockchip: analogix_dp: add rk3399 eDP +support" (82872e42bb1501dd9e60ca430f4bae45a469aa64), rk3288 and rk3399 +eDP IPs are nearly the same, the difference is in the grf register +(SOC_CON6 versus SOC_CON20). So, change the code to use the right +register on each IP. + +The clocks don't seem to be the same, the eDP clock is not at index 1 +on rk3399, so don't try changing the clock at index 1 to rate 0 on +rk3399. + +Signed-off-by: Arnaud Patard + +Index: u-boot/drivers/video/rockchip/rk_edp.c +=================================================================== +--- u-boot.orig/drivers/video/rockchip/rk_edp.c ++++ u-boot/drivers/video/rockchip/rk_edp.c +@@ -17,11 +17,10 @@ + #include + #include + #include ++#include + #include + #include +-#include +-#include +-#include ++#include + + #define MAX_CR_LOOP 5 + #define MAX_EQ_LOOP 5 +@@ -37,18 +36,42 @@ static const char * const pre_emph_names + #define DP_VOLTAGE_MAX DP_TRAIN_VOLTAGE_SWING_1200 + #define DP_PRE_EMPHASIS_MAX DP_TRAIN_PRE_EMPHASIS_9_5 + ++#define RK3288_GRF_SOC_CON6 0x025c ++#define RK3288_GRF_SOC_CON12 0x0274 ++#define RK3399_GRF_SOC_CON20 0x6250 ++#define RK3399_GRF_SOC_CON25 0x6264 ++ ++enum rockchip_dp_types { ++ RK3288_DP = 0, ++ RK3399_EDP ++}; ++ ++struct rockchip_dp_data { ++ unsigned long reg_vop_big_little; ++ unsigned long reg_vop_big_little_sel; ++ unsigned long reg_ref_clk_sel; ++ unsigned long ref_clk_sel_bit; ++ enum rockchip_dp_types chip_type; ++}; ++ + struct rk_edp_priv { + struct rk3288_edp *regs; +- struct rk3288_grf *grf; ++ void *grf; + struct udevice *panel; + struct link_train link_train; + u8 train_set[4]; + }; + +-static void rk_edp_init_refclk(struct rk3288_edp *regs) ++static void rk_edp_init_refclk(struct rk3288_edp *regs, enum rockchip_dp_types chip_type) + { + writel(SEL_24M, ®s->analog_ctl_2); +- writel(REF_CLK_24M, ®s->pll_reg_1); ++ u32 reg; ++ ++ reg = REF_CLK_24M; ++ if (chip_type == RK3288_DP) ++ reg ^= REF_CLK_MASK; ++ writel(reg, ®s->pll_reg_1); ++ + + writel(LDO_OUTPUT_V_SEL_145 | KVCO_DEFALUT | CHG_PUMP_CUR_SEL_5US | + V2L_CUR_SEL_1MA, ®s->pll_reg_2); +@@ -1023,6 +1046,8 @@ static int rk_edp_probe(struct udevice * + struct display_plat *uc_plat = dev_get_uclass_platdata(dev); + struct rk_edp_priv *priv = dev_get_priv(dev); + struct rk3288_edp *regs = priv->regs; ++ struct rockchip_dp_data *edp_data = (struct rockchip_dp_data *)dev_get_driver_data(dev); ++ + struct clk clk; + int ret; + +@@ -1037,16 +1062,17 @@ static int rk_edp_probe(struct udevice * + int vop_id = uc_plat->source_id; + debug("%s, uc_plat=%p, vop_id=%u\n", __func__, uc_plat, vop_id); + +- ret = clk_get_by_index(dev, 1, &clk); +- if (ret >= 0) { +- ret = clk_set_rate(&clk, 0); +- clk_free(&clk); +- } +- if (ret) { +- debug("%s: Failed to set EDP clock: ret=%d\n", __func__, ret); +- return ret; ++ if (edp_data->chip_type == RK3288_DP) { ++ ret = clk_get_by_index(dev, 1, &clk); ++ if (ret >= 0) { ++ ret = clk_set_rate(&clk, 0); ++ clk_free(&clk); ++ } ++ if (ret) { ++ debug("%s: Failed to set EDP clock: ret=%d\n", __func__, ret); ++ return ret; ++ } + } +- + ret = clk_get_by_index(uc_plat->src_dev, 0, &clk); + if (ret >= 0) { + ret = clk_set_rate(&clk, 192000000); +@@ -1059,15 +1085,17 @@ static int rk_edp_probe(struct udevice * + } + + /* grf_edp_ref_clk_sel: from internal 24MHz or 27MHz clock */ +- rk_setreg(&priv->grf->soc_con12, 1 << 4); ++ rk_setreg(priv->grf + edp_data->reg_ref_clk_sel, ++ edp_data->ref_clk_sel_bit); + + /* select epd signal from vop0 or vop1 */ +- rk_clrsetreg(&priv->grf->soc_con6, (1 << 5), +- (vop_id == 1) ? (1 << 5) : (0 << 5)); ++ rk_clrsetreg(priv->grf + edp_data->reg_vop_big_little, ++ edp_data->reg_vop_big_little_sel, ++ (vop_id == 1) ? edp_data->reg_vop_big_little_sel : 0); + + rockchip_edp_wait_hpd(priv); + +- rk_edp_init_refclk(regs); ++ rk_edp_init_refclk(regs, edp_data->chip_type); + rk_edp_init_interrupt(regs); + rk_edp_enable_sw_function(regs); + ret = rk_edp_init_analog_func(regs); +@@ -1083,8 +1111,25 @@ static const struct dm_display_ops dp_ro + .enable = rk_edp_enable, + }; + ++static const struct rockchip_dp_data rk3399_edp = { ++ .reg_vop_big_little = RK3399_GRF_SOC_CON20, ++ .reg_vop_big_little_sel = BIT(5), ++ .reg_ref_clk_sel = RK3399_GRF_SOC_CON25, ++ .ref_clk_sel_bit = BIT(11), ++ .chip_type = RK3399_EDP, ++}; ++ ++static const struct rockchip_dp_data rk3288_dp = { ++ .reg_vop_big_little = RK3288_GRF_SOC_CON6, ++ .reg_vop_big_little_sel = BIT(5), ++ .reg_ref_clk_sel = RK3288_GRF_SOC_CON12, ++ .ref_clk_sel_bit = BIT(4), ++ .chip_type = RK3288_DP, ++}; ++ + static const struct udevice_id rockchip_dp_ids[] = { +- { .compatible = "rockchip,rk3288-edp" }, ++ { .compatible = "rockchip,rk3288-edp", .data = (ulong)&rk3288_dp }, ++ { .compatible = "rockchip,rk3399-edp", .data = (ulong)&rk3399_edp }, + { } + }; + +Index: u-boot/arch/arm/include/asm/arch-rockchip/edp_rk3288.h +=================================================================== +--- u-boot.orig/arch/arm/include/asm/arch-rockchip/edp_rk3288.h ++++ u-boot/arch/arm/include/asm/arch-rockchip/edp_rk3288.h +@@ -232,8 +232,9 @@ check_member(rk3288_edp, pll_reg_5, 0xa0 + #define PD_CH0 (0x1 << 0) + + /* pll_reg_1 */ +-#define REF_CLK_24M (0x1 << 1) +-#define REF_CLK_27M (0x0 << 1) ++#define REF_CLK_24M (0x1 << 0) ++#define REF_CLK_27M (0x0 << 0) ++#define REF_CLK_MASK (0x1 << 0) + + /* line_map */ + #define LANE3_MAP_LOGIC_LANE_0 (0x0 << 6) + +From patchwork Fri Sep 25 18:36:57 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Arnaud Patard (Rtp)" +X-Patchwork-Id: 1371528 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=fail (p=none dis=none) header.from=rtp-net.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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4Bygrs3CVDz9sSJ + for ; Sat, 26 Sep 2020 04:47:41 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id A6BF7824BB; + Fri, 25 Sep 2020 20:47:04 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id A050F82499; Fri, 25 Sep 2020 20:46:50 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, + URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 +Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) + (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 8F65D823F0 + for ; Fri, 25 Sep 2020 20:46:44 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org +Received: by lechat.rtp-net.org (Postfix, from userid 1000) + id 3BBA4180A6C; Fri, 25 Sep 2020 20:46:43 +0200 (CEST) +Message-ID: <20200925183856.447902421@rtp-net.org> +User-Agent: quilt/0.66 +Date: Fri, 25 Sep 2020 20:36:57 +0200 +From: Arnaud Patard (Rtp) +To: u-boot@lists.denx.de +Cc: Kever Yang , + Anatolij Gustschin , + Philipp Tomsich , + Peter Robinson , + Samuel Dionne-Riel , + Arnaud Patard +Subject: [patch 3/8] RFC: drivers/video/rockchip/rk_edp.c: Change interrupt + polarity configuration +References: <20200925183654.723338620@rtp-net.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +The linux code is setting polarity configuration to 3 but +uboot code is setting it to 1. Change the configuration to match the +linux configuration + +Signed-off-by: Arnaud Patard + +Index: u-boot/drivers/video/rockchip/rk_edp.c +=================================================================== +--- u-boot.orig/drivers/video/rockchip/rk_edp.c ++++ u-boot/drivers/video/rockchip/rk_edp.c +@@ -100,10 +100,13 @@ static void rk_edp_init_refclk(struct rk + ®s->dp_reserv2); + } + ++#define INT_POL1 (0x1 << 1) ++#define INT_POL0 (0x1 << 0) ++ + static void rk_edp_init_interrupt(struct rk3288_edp *regs) + { + /* Set interrupt pin assertion polarity as high */ +- writel(INT_POL, ®s->int_ctl); ++ writel(INT_POL0 | INT_POL1, ®s->int_ctl); + + /* Clear pending registers */ + writel(0xff, ®s->common_int_sta_1); + +From patchwork Fri Sep 25 18:36:58 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Arnaud Patard (Rtp)" +X-Patchwork-Id: 1371526 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=fail (p=none dis=none) header.from=rtp-net.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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4BygrP4k49z9sS8 + for ; Sat, 26 Sep 2020 04:47:17 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 59CA8824A5; + Fri, 25 Sep 2020 20:46:58 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 35BF482489; Fri, 25 Sep 2020 20:46:50 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, + URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 +Received: from lechat.rtp-net.org (lechat.rtp-net.org + [IPv6:2001:bc8:3430:1000::c0f:fee]) + (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 8FB9B823F2 + for ; Fri, 25 Sep 2020 20:46:44 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org +Received: by lechat.rtp-net.org (Postfix, from userid 1000) + id 4C3F8180AAC; Fri, 25 Sep 2020 20:46:43 +0200 (CEST) +Message-ID: <20200925183856.497901419@rtp-net.org> +User-Agent: quilt/0.66 +Date: Fri, 25 Sep 2020 20:36:58 +0200 +From: Arnaud Patard (Rtp) +To: u-boot@lists.denx.de +Cc: Kever Yang , + Anatolij Gustschin , + Philipp Tomsich , + Peter Robinson , + Samuel Dionne-Riel , + Arnaud Patard +Subject: [patch 4/8] RFC: drivers/video/rockchip/rk_edp.c: Change clock rate +References: <20200925183654.723338620@rtp-net.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +The current code is setting the clock rate to 192000000, but +due to the current device-tree configuration and linux code, +it should rather be 100000000. + +Signed-off-by: Arnaud Patard + +Index: u-boot/drivers/video/rockchip/rk_edp.c +=================================================================== +--- u-boot.orig/drivers/video/rockchip/rk_edp.c ++++ u-boot/drivers/video/rockchip/rk_edp.c +@@ -1075,7 +1078,7 @@ static int rk_edp_probe(struct udevice * + } + ret = clk_get_by_index(uc_plat->src_dev, 0, &clk); + if (ret >= 0) { +- ret = clk_set_rate(&clk, 192000000); ++ ret = clk_set_rate(&clk, 100000000); + clk_free(&clk); + } + if (ret < 0) { + +From patchwork Fri Sep 25 18:36:59 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Arnaud Patard (Rtp)" +X-Patchwork-Id: 1371529 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=fail (p=none dis=none) header.from=rtp-net.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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4Bygs45XdNz9sS8 + for ; Sat, 26 Sep 2020 04:47:52 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 61E26824EE; + Fri, 25 Sep 2020 20:47:07 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id B47DD8248B; Fri, 25 Sep 2020 20:46:50 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, + URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 +Received: from lechat.rtp-net.org (lechat.rtp-net.org + [IPv6:2001:bc8:3430:1000::c0f:fee]) + (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id DD7248246F + for ; Fri, 25 Sep 2020 20:46:44 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org +Received: by lechat.rtp-net.org (Postfix, from userid 1000) + id 6D075180ABF; Fri, 25 Sep 2020 20:46:43 +0200 (CEST) +Message-ID: <20200925183856.548086571@rtp-net.org> +User-Agent: quilt/0.66 +Date: Fri, 25 Sep 2020 20:36:59 +0200 +From: Arnaud Patard (Rtp) +To: u-boot@lists.denx.de +Cc: Kever Yang , + Anatolij Gustschin , + Philipp Tomsich , + Peter Robinson , + Samuel Dionne-Riel , + Arnaud Patard +Subject: [patch 5/8] RFC: drivers/video/rockchip/rk_vop.c: Reserve efi fb + memory +References: <20200925183654.723338620@rtp-net.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +When booting with EFI and graphics, the memory used for framebuffer +has to be reserved, otherwise it may leads to kernel memory +overwrite. + +Signed-off-by: Arnaud Patard + +Index: u-boot/drivers/video/rockchip/rk_vop.c +=================================================================== +--- u-boot.orig/drivers/video/rockchip/rk_vop.c ++++ u-boot/drivers/video/rockchip/rk_vop.c +@@ -20,6 +20,8 @@ + #include + #include + #include ++#include ++#include + #include + #include + #include +@@ -394,6 +396,13 @@ int rk_vop_probe(struct udevice *dev) + if (!(gd->flags & GD_FLG_RELOC)) + return 0; + ++ plat->base = gd->bd->bi_dram[0].start + gd->bd->bi_dram[0].size - plat->size; ++ ++#if defined(CONFIG_EFI_LOADER) ++ debug("Adding to EFI map %d @ %lx\n", plat->size, plat->base); ++ efi_add_memory_map(plat->base, plat->size, EFI_RESERVED_MEMORY_TYPE); ++#endif ++ + priv->regs = (struct rk3288_vop *)dev_read_addr(dev); + + /* + +From patchwork Fri Sep 25 18:37:00 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Arnaud Patard (Rtp)" +X-Patchwork-Id: 1371527 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=fail (p=none dis=none) header.from=rtp-net.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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4Bygrg0YBjz9sS8 + for ; Sat, 26 Sep 2020 04:47:31 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 63B7B82489; + Fri, 25 Sep 2020 20:47:01 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 3E20082412; Fri, 25 Sep 2020 20:46:50 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, + URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 +Received: from lechat.rtp-net.org (lechat.rtp-net.org + [IPv6:2001:bc8:3430:1000::c0f:fee]) + (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id D99C482423 + for ; Fri, 25 Sep 2020 20:46:44 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org +Received: by lechat.rtp-net.org (Postfix, from userid 1000) + id 81B21180AC6; Fri, 25 Sep 2020 20:46:43 +0200 (CEST) +Message-ID: <20200925183856.598156739@rtp-net.org> +User-Agent: quilt/0.66 +Date: Fri, 25 Sep 2020 20:37:00 +0200 +From: Arnaud Patard (Rtp) +To: u-boot@lists.denx.de +Cc: Kever Yang , + Anatolij Gustschin , + Philipp Tomsich , + Peter Robinson , + Samuel Dionne-Riel , + Arnaud Patard +Subject: [patch 6/8] RFC: rk3399-pinebook-pro-u-boot.dtsi: Enable edp +References: <20200925183654.723338620@rtp-net.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +- uboot rockchip edp code is looking for a rockchip,panel property + for the edp dts node, so add it. + +Signed-off-by: Arnaud Patard + +Index: u-boot/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi +=================================================================== +--- u-boot.orig/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi ++++ u-boot/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi +@@ -49,3 +49,7 @@ + &vdd_log { + regulator-init-microvolt = <950000>; + }; ++ ++&edp { ++ rockchip,panel = <&edp_panel>; ++}; + +From patchwork Fri Sep 25 18:37:01 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Arnaud Patard (Rtp)" +X-Patchwork-Id: 1371532 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=fail (p=none dis=none) header.from=rtp-net.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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4Bygsg53Gnz9sSJ + for ; Sat, 26 Sep 2020 04:48:23 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id C15BF82513; + Fri, 25 Sep 2020 20:47:13 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 4F0DE8247A; Fri, 25 Sep 2020 20:46:53 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, + URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 +Received: from lechat.rtp-net.org (lechat.rtp-net.org + [IPv6:2001:bc8:3430:1000::c0f:fee]) + (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id EFE03823FF + for ; Fri, 25 Sep 2020 20:46:44 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org +Received: by lechat.rtp-net.org (Postfix, from userid 1000) + id 9A94A180ACB; Fri, 25 Sep 2020 20:46:43 +0200 (CEST) +Message-ID: <20200925183856.648221737@rtp-net.org> +User-Agent: quilt/0.66 +Date: Fri, 25 Sep 2020 20:37:01 +0200 +From: Arnaud Patard (Rtp) +To: u-boot@lists.denx.de +Cc: Kever Yang , + Anatolij Gustschin , + Philipp Tomsich , + Peter Robinson , + Samuel Dionne-Riel , + Arnaud Patard +Subject: [patch 7/8] RFC: configs/pinebook-pro-rk3399_defconfig: enable + SYS_USB_EVENT_POLL_VIA_INT_QUEUE +References: <20200925183654.723338620@rtp-net.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +The default configuration will use SYS_USB_EVENT_POLL for handling the +usb keyboard and it makes the system really slow (eg slow keypress, +loading kernel/initrd from grub-efi is taking ages). + +Using CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE seems to be improving +things a lot, so use it. + +Tested-by: Samuel Dionne-Riel +Signed-off-by: Arnaud Patard + +Index: u-boot/configs/pinebook-pro-rk3399_defconfig +=================================================================== +--- u-boot.orig/configs/pinebook-pro-rk3399_defconfig ++++ u-boot/configs/pinebook-pro-rk3399_defconfig +@@ -78,6 +78,7 @@ CONFIG_USB_OHCI_GENERIC=y + CONFIG_USB_DWC3=y + CONFIG_ROCKCHIP_USB2_PHY=y + CONFIG_USB_KEYBOARD=y ++CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y + CONFIG_USB_HOST_ETHER=y + CONFIG_USB_ETHER_ASIX=y + CONFIG_USB_ETHER_RTL8152=y + +From patchwork Fri Sep 25 18:37:02 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Arnaud Patard (Rtp)" +X-Patchwork-Id: 1371531 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=fail (p=none dis=none) header.from=rtp-net.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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4BygsV69FWz9sS8 + for ; Sat, 26 Sep 2020 04:48:14 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 94D3B824F4; + Fri, 25 Sep 2020 20:47:11 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id EA6CB8248B; Fri, 25 Sep 2020 20:46:52 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, + URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 +Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) + (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 0460082475 + for ; Fri, 25 Sep 2020 20:46:45 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org +Received: by lechat.rtp-net.org (Postfix, from userid 1000) + id B7788180ACE; Fri, 25 Sep 2020 20:46:43 +0200 (CEST) +Message-ID: <20200925183856.699546249@rtp-net.org> +User-Agent: quilt/0.66 +Date: Fri, 25 Sep 2020 20:37:02 +0200 +From: Arnaud Patard (Rtp) +To: u-boot@lists.denx.de +Cc: Kever Yang , + Anatolij Gustschin , + Philipp Tomsich , + Peter Robinson , + Samuel Dionne-Riel , + Arnaud Patard +Subject: [patch 8/8] RFC: drivers/pwm/rk_pwm.c: Fix default polarity +References: <20200925183654.723338620@rtp-net.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +In the code, the default polarity is set to positive/positive, +which is neither normal polarity or inverted polarity. It's +only the hardware default. This leads to booting linux with +wrong polarity setting. + +Update the code to use PWM_DUTY_POSTIVE | PWM_INACTIVE_NEGATIVE +by default instead. + +Signed-off-by: Arnaud Patard + +Index: u-boot/drivers/pwm/rk_pwm.c +=================================================================== +--- u-boot.orig/drivers/pwm/rk_pwm.c ++++ u-boot/drivers/pwm/rk_pwm.c +@@ -146,7 +146,7 @@ static int rk_pwm_probe(struct udevice * + priv->data = (struct rockchip_pwm_data *)dev_get_driver_data(dev); + + if (priv->data->supports_polarity) +- priv->conf_polarity = PWM_DUTY_POSTIVE | PWM_INACTIVE_POSTIVE; ++ priv->conf_polarity = PWM_DUTY_POSTIVE | PWM_INACTIVE_NEGATIVE; + + return 0; + } diff --git a/rk3399-reset-display-hack.patch b/rk3399-reset-display-hack.patch new file mode 100644 index 0000000..67adeb3 --- /dev/null +++ b/rk3399-reset-display-hack.patch @@ -0,0 +1,46 @@ +[HACK NOTFORMERGE] PBP: Fix panel reset + +On warm reset, the pinebook pro panel is not working correctly. +The issue is not yet debugged so, for now, this hack seems to be +enough. It toggles the GPIO1_C6 gpio [ LCDVCC_EN signal in the +schematics ] used by the vcc3v3_panel regulator. + +There's no gpio_request, since the gpio is already in use at this +stage, so it can only fail. +Index: u-boot/board/pine64/pinebook-pro-rk3399/pinebook-pro-rk3399.c +=================================================================== +--- u-boot.orig/board/pine64/pinebook-pro-rk3399/pinebook-pro-rk3399.c ++++ u-boot/board/pine64/pinebook-pro-rk3399/pinebook-pro-rk3399.c +@@ -7,9 +7,12 @@ + #include + #include + #include ++#include ++#include + #include + #include + #include ++#include + #include + #include + #include +@@ -59,6 +62,7 @@ int misc_init_r(void) + const u32 cpuid_length = 0x10; + u8 cpuid[cpuid_length]; + int ret; ++ unsigned int gpio; + + setup_iodomain(); + +@@ -70,6 +74,11 @@ int misc_init_r(void) + if (ret) + return ret; + ++ gpio_lookup_name("B22", NULL, NULL, &gpio); ++ gpio_direction_output(gpio, 0); ++ mdelay(500); ++ gpio_direction_output(gpio, 1); ++ + return ret; + } + #endif diff --git a/uboot-tools.spec b/uboot-tools.spec index a51a705..191d1dc 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -2,7 +2,7 @@ Name: uboot-tools Version: 2020.10 -Release: 0.5%{?candidate:.%{candidate}}%{?dist} +Release: 0.6%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -33,8 +33,10 @@ Patch10: AllWinner-PineTab.patch # Rockchips improvements Patch11: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch Patch12: rockchip-Rock960-Fix-up-USB-support.patch +Patch13: rk3399-Pinebook-pro-EDP-support.patch +Patch14: rk3399-reset-display-hack.patch # TI fixes -Patch13: 0001-Fix-BeagleAI-detection.patch +Patch15: 0001-Fix-BeagleAI-detection.patch BuildRequires: bc BuildRequires: dtc @@ -248,6 +250,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Sun Sep 27 2020 Peter Robinson - 2020.10-0.6.rc5 +- Initial support for display output on Pinebook Pro + * Tue Sep 22 2020 Peter Robinson - 2020.10-0.5.rc5 - Update to 2020.10 RC5 From 569f76e54ab47267d476afad857987a84f5b6233 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 29 Sep 2020 10:51:39 +0100 Subject: [PATCH 022/271] fix USB starting for keyboard/storage --- ...ONFIG_PREBOOT-with-right-config-opti.patch | 42 +++++++++++++++++++ uboot-tools.spec | 1 + 2 files changed, 43 insertions(+) create mode 100644 0001-Define-default-CONFIG_PREBOOT-with-right-config-opti.patch diff --git a/0001-Define-default-CONFIG_PREBOOT-with-right-config-opti.patch b/0001-Define-default-CONFIG_PREBOOT-with-right-config-opti.patch new file mode 100644 index 0000000..c468adf --- /dev/null +++ b/0001-Define-default-CONFIG_PREBOOT-with-right-config-opti.patch @@ -0,0 +1,42 @@ +From 5cd7e94ea67d13d16628af865ae68b8fbc6ef62a Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Tue, 29 Sep 2020 10:44:07 +0100 +Subject: [PATCH] Define default CONFIG_PREBOOT with right config option + +The 44758771ee commit removes CONFIG_PREBOOT but actually sets the USE_PREBOOT +Kconfig option which isn't CONFIG_PREBOOT and is also a bool option which means +we regress because 'usb start' isn't run when expected, it should also be run +for devices that have USB storage because keyboards aren't the only thing we +might need the USB bus for. + +Fixes: 44758771ee ("arm: move CONFIG_PREBOOT="usb start" to KConfig") +Signed-off-by: Peter Robinson +Cc: Jonas Smedegaard +Cc: Neil Armstrong +--- + common/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/common/Kconfig b/common/Kconfig +index b1934b3a9c..9c20a9738e 100644 +--- a/common/Kconfig ++++ b/common/Kconfig +@@ -403,7 +403,6 @@ config BOOTCOMMAND + + config USE_PREBOOT + bool "Enable preboot" +- default "usb start" if USB_KEYBOARD + help + When this option is enabled, the existence of the environment + variable "preboot" will be checked immediately before starting the +@@ -417,6 +416,7 @@ config USE_PREBOOT + config PREBOOT + string "preboot default value" + depends on USE_PREBOOT && !USE_DEFAULT_ENV_FILE ++ default "usb start" if USB_KEYBOARD || USB_STORAGE + default "" + help + This is the default of "preboot" environment variable. +-- +2.26.2 + diff --git a/uboot-tools.spec b/uboot-tools.spec index 191d1dc..0f89190 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -37,6 +37,7 @@ Patch13: rk3399-Pinebook-pro-EDP-support.patch Patch14: rk3399-reset-display-hack.patch # TI fixes Patch15: 0001-Fix-BeagleAI-detection.patch +Patch16: 0001-Define-default-CONFIG_PREBOOT-with-right-config-opti.patch BuildRequires: bc BuildRequires: dtc From cfe13af2a500e2cbc9f43a519d9a4e7610fb896c Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 29 Sep 2020 14:40:43 +0100 Subject: [PATCH 023/271] Update Rock960 patch --- rockchip-Rock960-Fix-up-USB-support.patch | 55 +++++++++++------------ uboot-tools.spec | 14 +++--- 2 files changed, 33 insertions(+), 36 deletions(-) diff --git a/rockchip-Rock960-Fix-up-USB-support.patch b/rockchip-Rock960-Fix-up-USB-support.patch index bb534a0..5102787 100644 --- a/rockchip-Rock960-Fix-up-USB-support.patch +++ b/rockchip-Rock960-Fix-up-USB-support.patch @@ -1,29 +1,33 @@ -From 74ac6aad46c7d05e925b767fdb9a1306af6d5168 Mon Sep 17 00:00:00 2001 +From aec6cfccd62e21bdb8686839a22eaff5f8cece1d Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Wed, 19 Aug 2020 16:55:11 +0100 -Subject: [PATCH] rockchip: Rock960: Fix up USB support +Date: Tue, 29 Sep 2020 13:12:15 +0100 +Subject: [PATCH] rockchip: Rock960: fix up USB support Fix up USB config options so keyboards and other USB devices work. - -Signed-off-by: Peter Robinson --- - configs/rock960-rk3399_defconfig | 9 ++++++++- + configs/rock960-rk3399_defconfig | 9 ++++++--- include/configs/rock960_rk3399.h | 2 ++ - 2 files changed, 10 insertions(+), 1 deletion(-) + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/configs/rock960-rk3399_defconfig b/configs/rock960-rk3399_defconfig -index 9c4d8871b7..d6d787aa02 100644 +index 1d997847c2..a5a50785c5 100644 --- a/configs/rock960-rk3399_defconfig +++ b/configs/rock960-rk3399_defconfig -@@ -33,6 +33,7 @@ CONFIG_SYS_RELOC_GD_ENV_ADDR=y - CONFIG_SYS_MMC_ENV_DEV=1 - CONFIG_ROCKCHIP_GPIO=y - CONFIG_SYS_I2C_ROCKCHIP=y -+CONFIG_DM_KEYBOARD=y - CONFIG_MMC_DW=y - CONFIG_MMC_DW_ROCKCHIP=y - CONFIG_MMC_SDHCI=y -@@ -43,6 +44,8 @@ CONFIG_RNG_ROCKCHIP=y +@@ -3,12 +3,12 @@ CONFIG_ARCH_ROCKCHIP=y + CONFIG_SYS_TEXT_BASE=0x00200000 + CONFIG_ENV_OFFSET=0x3F8000 + CONFIG_ROCKCHIP_RK3399=y +-CONFIG_ROCKCHIP_SPL_RESERVE_IRAM=0x4000 + CONFIG_TARGET_ROCK960_RK3399=y + CONFIG_DEBUG_UART_BASE=0xFF1A0000 + CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_DEFAULT_DEVICE_TREE="rk3399-rock960" + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rock960.dtb" + CONFIG_MISC_INIT_R=y + CONFIG_DISPLAY_BOARDINFO_LATE=y +@@ -41,6 +41,8 @@ CONFIG_MMC_SDHCI_ROCKCHIP=y CONFIG_DM_ETH=y CONFIG_NVME=y CONFIG_PCI=y @@ -32,7 +36,7 @@ index 9c4d8871b7..d6d787aa02 100644 CONFIG_PMIC_RK8XX=y CONFIG_REGULATOR_PWM=y CONFIG_REGULATOR_RK8XX=y -@@ -56,8 +59,10 @@ CONFIG_USB_XHCI_HCD=y +@@ -54,10 +56,11 @@ CONFIG_USB_XHCI_HCD=y CONFIG_USB_XHCI_DWC3=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_GENERIC=y @@ -40,19 +44,12 @@ index 9c4d8871b7..d6d787aa02 100644 +CONFIG_USB_OHCI_GENERIC=y CONFIG_USB_DWC3=y -CONFIG_ROCKCHIP_USB2_PHY=y -+CONFIG_USB_DWC3_GENERIC=y ++CONFIG_DM_KEYBOARD=y CONFIG_USB_KEYBOARD=y - CONFIG_USB_GADGET=y +-CONFIG_USB_GADGET=y CONFIG_USB_HOST_ETHER=y -@@ -68,6 +73,8 @@ CONFIG_USB_ETHER_RTL8152=y - CONFIG_USB_ETHER_SMSC95XX=y - CONFIG_DM_VIDEO=y - CONFIG_DISPLAY=y -+CONFIG_VIDEO_BPP16=y -+CONFIG_VIDEO_BPP32=y - CONFIG_VIDEO_ROCKCHIP=y - CONFIG_DISPLAY_ROCKCHIP_HDMI=y - CONFIG_SPL_TINY_MEMSET=y + CONFIG_USB_ETHER_ASIX=y + CONFIG_USB_ETHER_ASIX88179=y diff --git a/include/configs/rock960_rk3399.h b/include/configs/rock960_rk3399.h index c6f9122154..2edad71028 100644 --- a/include/configs/rock960_rk3399.h diff --git a/uboot-tools.spec b/uboot-tools.spec index 0f89190..6bd4c64 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -30,14 +30,14 @@ Patch7: arm-add-BOOTENV_EFI_SET_FDTFILE_FALLBACK-for-tegra186-be.patch Patch8: AllWinner-UpstreamSync.patch Patch9: AllWinner-PinePhone.patch Patch10: AllWinner-PineTab.patch -# Rockchips improvements -Patch11: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch -Patch12: rockchip-Rock960-Fix-up-USB-support.patch -Patch13: rk3399-Pinebook-pro-EDP-support.patch -Patch14: rk3399-reset-display-hack.patch # TI fixes -Patch15: 0001-Fix-BeagleAI-detection.patch -Patch16: 0001-Define-default-CONFIG_PREBOOT-with-right-config-opti.patch +Patch12: 0001-Fix-BeagleAI-detection.patch +# Rockchips improvements +Patch13: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch +Patch14: rk3399-Pinebook-pro-EDP-support.patch +Patch15: rk3399-reset-display-hack.patch +Patch16: 0001-Define-default-CONFIG_PREBOOT-with-right-config-opti.patch +Patch17: rockchip-Rock960-Fix-up-USB-support.patch BuildRequires: bc BuildRequires: dtc From 68cd2ba55a572ca548c14f55eebd2bb62fbf15de Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 7 Oct 2020 11:14:09 +0100 Subject: [PATCH 024/271] 2020.10 --- ...ONFIG_PREBOOT-with-right-config-opti.patch | 42 ------------------- sources | 2 +- uboot-tools.spec | 22 +++++----- 3 files changed, 12 insertions(+), 54 deletions(-) delete mode 100644 0001-Define-default-CONFIG_PREBOOT-with-right-config-opti.patch diff --git a/0001-Define-default-CONFIG_PREBOOT-with-right-config-opti.patch b/0001-Define-default-CONFIG_PREBOOT-with-right-config-opti.patch deleted file mode 100644 index c468adf..0000000 --- a/0001-Define-default-CONFIG_PREBOOT-with-right-config-opti.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 5cd7e94ea67d13d16628af865ae68b8fbc6ef62a Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Tue, 29 Sep 2020 10:44:07 +0100 -Subject: [PATCH] Define default CONFIG_PREBOOT with right config option - -The 44758771ee commit removes CONFIG_PREBOOT but actually sets the USE_PREBOOT -Kconfig option which isn't CONFIG_PREBOOT and is also a bool option which means -we regress because 'usb start' isn't run when expected, it should also be run -for devices that have USB storage because keyboards aren't the only thing we -might need the USB bus for. - -Fixes: 44758771ee ("arm: move CONFIG_PREBOOT="usb start" to KConfig") -Signed-off-by: Peter Robinson -Cc: Jonas Smedegaard -Cc: Neil Armstrong ---- - common/Kconfig | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/common/Kconfig b/common/Kconfig -index b1934b3a9c..9c20a9738e 100644 ---- a/common/Kconfig -+++ b/common/Kconfig -@@ -403,7 +403,6 @@ config BOOTCOMMAND - - config USE_PREBOOT - bool "Enable preboot" -- default "usb start" if USB_KEYBOARD - help - When this option is enabled, the existence of the environment - variable "preboot" will be checked immediately before starting the -@@ -417,6 +416,7 @@ config USE_PREBOOT - config PREBOOT - string "preboot default value" - depends on USE_PREBOOT && !USE_DEFAULT_ENV_FILE -+ default "usb start" if USB_KEYBOARD || USB_STORAGE - default "" - help - This is the default of "preboot" environment variable. --- -2.26.2 - diff --git a/sources b/sources index 6548dda..532714c 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2020.10-rc5.tar.bz2) = 8c0f6cceca4aeb67a51743886d65e420d95a70cc427acd17ac81281cad996339a9b376994ff76e46cb862d54797269da52dd05dfc7e12c8c271ed7aca828e2b4 +SHA512 (u-boot-2020.10.tar.bz2) = fd26534f2d72ffc3167919c32067c550636f6a4ee5fead6937e2583ba4ff6165e88b8b50fbbddde7354a8c42701433d0cb2ce982e43c014db60b08415288baf9 diff --git a/uboot-tools.spec b/uboot-tools.spec index 6bd4c64..289a303 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -%global candidate rc5 +#global candidate rc5 Name: uboot-tools Version: 2020.10 -Release: 0.6%{?candidate:.%{candidate}}%{?dist} +Release: 1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -36,8 +36,7 @@ Patch12: 0001-Fix-BeagleAI-detection.patch Patch13: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch Patch14: rk3399-Pinebook-pro-EDP-support.patch Patch15: rk3399-reset-display-hack.patch -Patch16: 0001-Define-default-CONFIG_PREBOOT-with-right-config-opti.patch -Patch17: rockchip-Rock960-Fix-up-USB-support.patch +Patch16: rockchip-Rock960-Fix-up-USB-support.patch BuildRequires: bc BuildRequires: dtc @@ -48,7 +47,7 @@ BuildRequires: devtoolset-7-build BuildRequires: devtoolset-7-binutils BuildRequires: devtoolset-7-gcc BuildRequires: python2-devel -BuildRequires: python3-setuptools +BuildRequires: python2-setuptools BuildRequires: python2-libfdt %else BuildRequires: gcc @@ -80,22 +79,20 @@ and fw_printenv/fw_setenv for manipulating the boot environment variables. %ifarch aarch64 %package -n uboot-images-armv8 -Summary: u-boot bootloader images for aarch64 boards -Requires: uboot-tools +Summary: U-Boot firmware images for aarch64 boards BuildArch: noarch %description -n uboot-images-armv8 -u-boot bootloader binaries for aarch64 boards +U-Boot firmware binaries for aarch64 boards %endif %ifarch %{arm} %package -n uboot-images-armv7 -Summary: u-boot bootloader images for armv7 boards -Requires: uboot-tools +Summary: U-Boot firmware images for armv7 boards BuildArch: noarch %description -n uboot-images-armv7 -u-boot bootloader binaries for armv7 boards +U-Boot firmware binaries for armv7 boards %endif %prep @@ -251,6 +248,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Tue Oct 06 2020 Peter Robinson - 2020.10-1 +- Update to 2020.10 + * Sun Sep 27 2020 Peter Robinson - 2020.10-0.6.rc5 - Initial support for display output on Pinebook Pro From 2aca29e4a7854b370d980ffecf39a16b67e5b94d Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 7 Oct 2020 16:12:13 +0100 Subject: [PATCH 025/271] Rockchips fixes --- arm-boards | 1 + rockchip-spl-u-boot-itb-offset.patch | 11 +++++++++++ uboot-tools.spec | 1 + 3 files changed, 13 insertions(+) create mode 100644 rockchip-spl-u-boot-itb-offset.patch diff --git a/arm-boards b/arm-boards index b73f726..bc80bb8 100644 --- a/arm-boards +++ b/arm-boards @@ -125,6 +125,7 @@ stm32mp15_basic sunxi_Gemei_G9 tbs_a711 tinker-rk3288 +tinker-s-rk3288 trimslice udoo udoo_neo diff --git a/rockchip-spl-u-boot-itb-offset.patch b/rockchip-spl-u-boot-itb-offset.patch new file mode 100644 index 0000000..d78c2f2 --- /dev/null +++ b/rockchip-spl-u-boot-itb-offset.patch @@ -0,0 +1,11 @@ +--- u-boot-2020.10/common/spl/Kconfig.orig 2020-10-07 12:08:54.972632715 +0100 ++++ u-boot-2020.10/common/spl/Kconfig 2020-10-07 12:08:59.100672506 +0100 +@@ -324,7 +324,7 @@ + default 0x200 if ARCH_SOCFPGA || ARCH_AT91 + default 0x300 if ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || OMAP44XX || \ + OMAP54XX || AM33XX || AM43XX || ARCH_K3 +- default 0x4000 if ARCH_ROCKCHIP ++ default 0x200 if ARCH_ROCKCHIP + default 0x822 if TARGET_SIFIVE_FU540 + help + Address on the MMC to load U-Boot from, when the MMC is being used diff --git a/uboot-tools.spec b/uboot-tools.spec index 289a303..5326ea9 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -19,6 +19,7 @@ Source5: 10-devicetree.install Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch # Needed due to issues with shim Patch2: uefi-use-Fedora-specific-path-name.patch +Patch3: rockchip-spl-u-boot-itb-offset.patch # Board fixes and enablement # RPi - uses RPI firmware device tree for HAT support From ecfe5a01c58036af0f264e8522c870f915ef094b Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 28 Oct 2020 08:22:07 +0000 Subject: [PATCH 026/271] Fix kernel installs for non EBBR systems --- uboot-tools.spec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 5326ea9..955160d 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -2,7 +2,7 @@ Name: uboot-tools Version: 2020.10 -Release: 1%{?candidate:.%{candidate}}%{?dist} +Release: 2%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -81,6 +81,7 @@ and fw_printenv/fw_setenv for manipulating the boot environment variables. %ifarch aarch64 %package -n uboot-images-armv8 Summary: U-Boot firmware images for aarch64 boards +Requires: uboot-tools BuildArch: noarch %description -n uboot-images-armv8 @@ -90,6 +91,7 @@ U-Boot firmware binaries for aarch64 boards %ifarch %{arm} %package -n uboot-images-armv7 Summary: U-Boot firmware images for armv7 boards +Requires: uboot-tools BuildArch: noarch %description -n uboot-images-armv7 @@ -249,6 +251,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Wed Oct 28 08:21:56 GMT 2020 Peter Robinson - 2020.10-2 +- Fix kernel installs for non EBBR systems + * Tue Oct 06 2020 Peter Robinson - 2020.10-1 - Update to 2020.10 From 244095cafc95bca9476b24a518a0f49282612e1c Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 28 Oct 2020 10:12:12 +0000 Subject: [PATCH 027/271] fix for upstream Allwinner network issues --- ...llWinner-ethernet-network-interfaces.patch | 518 ++++++++++++++++++ uboot-tools.spec | 2 + 2 files changed, 520 insertions(+) create mode 100644 0001-Fixes-for-AllWinner-ethernet-network-interfaces.patch diff --git a/0001-Fixes-for-AllWinner-ethernet-network-interfaces.patch b/0001-Fixes-for-AllWinner-ethernet-network-interfaces.patch new file mode 100644 index 0000000..68626db --- /dev/null +++ b/0001-Fixes-for-AllWinner-ethernet-network-interfaces.patch @@ -0,0 +1,518 @@ +From 25ce28126444900b7b3efef36c6b9d15a6ab9af1 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Wed, 28 Oct 2020 10:08:44 +0000 +Subject: [PATCH] Fixes for AllWinner ethernet network interfaces + +The upstream kernel in fixing stuff has broken stuff. + +Signed-off-by: Peter Robinson +--- + arch/arm/dts/sun50i-a64-bananapi-m64.dts | 2 +- + arch/arm/dts/sun50i-a64-nanopi-a64.dts | 2 +- + arch/arm/dts/sun50i-a64-oceanic-5205-5inmfd.dts | 2 +- + arch/arm/dts/sun50i-a64-olinuxino.dts | 2 +- + arch/arm/dts/sun50i-a64-orangepi-win.dts | 2 +- + arch/arm/dts/sun50i-a64-pine64-plus.dts | 2 +- + arch/arm/dts/sun50i-a64-sopine-baseboard.dts | 2 +- + arch/arm/dts/sun50i-h5-libretech-all-h5-cc.dts | 2 +- + arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts | 2 +- + arch/arm/dts/sun50i-h5-nanopi-neo2.dts | 2 +- + arch/arm/dts/sun50i-h5-orangepi-pc2.dts | 2 +- + arch/arm/dts/sun50i-h5-orangepi-prime.dts | 2 +- + arch/arm/dts/sun50i-h5-orangepi-zero-plus.dts | 2 +- + arch/arm/dts/sun50i-h6-beelink-gs1.dts | 2 +- + arch/arm/dts/sun50i-h6-pine-h64.dts | 2 +- + arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts | 2 +- + arch/arm/dts/sun7i-a20-bananapi.dts | 2 +- + arch/arm/dts/sun7i-a20-bananapro.dts | 2 +- + arch/arm/dts/sun7i-a20-cubietruck.dts | 2 +- + arch/arm/dts/sun7i-a20-hummingbird.dts | 2 +- + arch/arm/dts/sun7i-a20-lamobo-r1.dts | 2 +- + arch/arm/dts/sun7i-a20-olimex-som-evb.dts | 2 +- + arch/arm/dts/sun7i-a20-olimex-som204-evb.dts | 2 +- + arch/arm/dts/sun7i-a20-olinuxino-lime2.dts | 2 +- + arch/arm/dts/sun7i-a20-orangepi-mini.dts | 2 +- + arch/arm/dts/sun7i-a20-orangepi.dts | 2 +- + arch/arm/dts/sun7i-a20-pcduino3-nano.dts | 2 +- + arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts | 2 +- + arch/arm/dts/sun8i-a83t-bananapi-m3.dts | 2 +- + arch/arm/dts/sun8i-a83t-cubietruck-plus.dts | 2 +- + arch/arm/dts/sun8i-h3-nanopi-m1-plus.dts | 2 +- + arch/arm/dts/sun8i-h3-orangepi-plus.dts | 2 +- + arch/arm/dts/sun8i-h3-orangepi-plus2e.dts | 2 +- + arch/arm/dts/sun8i-r40-bananapi-m2-ultra.dts | 2 +- + arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts | 2 +- + arch/arm/dts/sunxi-bananapi-m2-plus.dtsi | 2 +- + 36 files changed, 36 insertions(+), 36 deletions(-) + +diff --git a/arch/arm/dts/sun50i-a64-bananapi-m64.dts b/arch/arm/dts/sun50i-a64-bananapi-m64.dts +index ef1c90401b..e1c22aeb29 100644 +--- a/arch/arm/dts/sun50i-a64-bananapi-m64.dts ++++ b/arch/arm/dts/sun50i-a64-bananapi-m64.dts +@@ -112,7 +112,7 @@ + &emac { + pinctrl-names = "default"; + pinctrl-0 = <&rgmii_pins>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + phy-handle = <&ext_rgmii_phy>; + phy-supply = <®_dc1sw>; + status = "okay"; +diff --git a/arch/arm/dts/sun50i-a64-nanopi-a64.dts b/arch/arm/dts/sun50i-a64-nanopi-a64.dts +index 31884dbc88..03ebe3e44b 100644 +--- a/arch/arm/dts/sun50i-a64-nanopi-a64.dts ++++ b/arch/arm/dts/sun50i-a64-nanopi-a64.dts +@@ -102,7 +102,7 @@ + &emac { + pinctrl-names = "default"; + pinctrl-0 = <&rgmii_pins>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + phy-handle = <&ext_rgmii_phy>; + phy-supply = <®_dcdc1>; + status = "okay"; +diff --git a/arch/arm/dts/sun50i-a64-oceanic-5205-5inmfd.dts b/arch/arm/dts/sun50i-a64-oceanic-5205-5inmfd.dts +index 6a2154525d..94caf110ab 100644 +--- a/arch/arm/dts/sun50i-a64-oceanic-5205-5inmfd.dts ++++ b/arch/arm/dts/sun50i-a64-oceanic-5205-5inmfd.dts +@@ -30,7 +30,7 @@ + &emac { + pinctrl-names = "default"; + pinctrl-0 = <&rgmii_pins>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + phy-handle = <&ext_rgmii_phy>; + phy-supply = <®_dc1sw>; + allwinner,tx-delay-ps = <600>; +diff --git a/arch/arm/dts/sun50i-a64-olinuxino.dts b/arch/arm/dts/sun50i-a64-olinuxino.dts +index f7a4bccaa5..2396d9b797 100644 +--- a/arch/arm/dts/sun50i-a64-olinuxino.dts ++++ b/arch/arm/dts/sun50i-a64-olinuxino.dts +@@ -102,7 +102,7 @@ + &emac { + pinctrl-names = "default"; + pinctrl-0 = <&rgmii_pins>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + phy-handle = <&ext_rgmii_phy>; + phy-supply = <®_dcdc1>; + allwinner,tx-delay-ps = <600>; +diff --git a/arch/arm/dts/sun50i-a64-orangepi-win.dts b/arch/arm/dts/sun50i-a64-orangepi-win.dts +index b0c64f7579..5b5d4f31b6 100644 +--- a/arch/arm/dts/sun50i-a64-orangepi-win.dts ++++ b/arch/arm/dts/sun50i-a64-orangepi-win.dts +@@ -127,7 +127,7 @@ + &emac { + pinctrl-names = "default"; + pinctrl-0 = <&rgmii_pins>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + phy-handle = <&ext_rgmii_phy>; + phy-supply = <®_gmac_3v3>; + status = "okay"; +diff --git a/arch/arm/dts/sun50i-a64-pine64-plus.dts b/arch/arm/dts/sun50i-a64-pine64-plus.dts +index 24f1aac366..b09b4276f1 100644 +--- a/arch/arm/dts/sun50i-a64-pine64-plus.dts ++++ b/arch/arm/dts/sun50i-a64-pine64-plus.dts +@@ -52,7 +52,7 @@ + &emac { + pinctrl-names = "default"; + pinctrl-0 = <&rgmii_pins>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + phy-handle = <&ext_rgmii_phy>; + status = "okay"; + }; +diff --git a/arch/arm/dts/sun50i-a64-sopine-baseboard.dts b/arch/arm/dts/sun50i-a64-sopine-baseboard.dts +index 53fcc9098d..4a50a18128 100644 +--- a/arch/arm/dts/sun50i-a64-sopine-baseboard.dts ++++ b/arch/arm/dts/sun50i-a64-sopine-baseboard.dts +@@ -95,7 +95,7 @@ + &emac { + pinctrl-names = "default"; + pinctrl-0 = <&rgmii_pins>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + phy-handle = <&ext_rgmii_phy>; + phy-supply = <®_dc1sw>; + status = "okay"; +diff --git a/arch/arm/dts/sun50i-h5-libretech-all-h5-cc.dts b/arch/arm/dts/sun50i-h5-libretech-all-h5-cc.dts +index df1b9263ad..6e30a564c8 100644 +--- a/arch/arm/dts/sun50i-h5-libretech-all-h5-cc.dts ++++ b/arch/arm/dts/sun50i-h5-libretech-all-h5-cc.dts +@@ -36,7 +36,7 @@ + pinctrl-0 = <&emac_rgmii_pins>; + phy-supply = <®_gmac_3v3>; + phy-handle = <&ext_rgmii_phy>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + /delete-property/ allwinner,leds-active-low; + status = "okay"; + }; +diff --git a/arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts b/arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts +index 4f9ba53ffa..9d93fe1536 100644 +--- a/arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts ++++ b/arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts +@@ -96,7 +96,7 @@ + pinctrl-0 = <&emac_rgmii_pins>; + phy-supply = <®_gmac_3v3>; + phy-handle = <&ext_rgmii_phy>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + status = "okay"; + }; + +diff --git a/arch/arm/dts/sun50i-h5-nanopi-neo2.dts b/arch/arm/dts/sun50i-h5-nanopi-neo2.dts +index b059e20813..e8ab8c2df5 100644 +--- a/arch/arm/dts/sun50i-h5-nanopi-neo2.dts ++++ b/arch/arm/dts/sun50i-h5-nanopi-neo2.dts +@@ -75,7 +75,7 @@ + pinctrl-0 = <&emac_rgmii_pins>; + phy-supply = <®_gmac_3v3>; + phy-handle = <&ext_rgmii_phy>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + status = "okay"; + }; + +diff --git a/arch/arm/dts/sun50i-h5-orangepi-pc2.dts b/arch/arm/dts/sun50i-h5-orangepi-pc2.dts +index 70b5f09984..6cc567ea99 100644 +--- a/arch/arm/dts/sun50i-h5-orangepi-pc2.dts ++++ b/arch/arm/dts/sun50i-h5-orangepi-pc2.dts +@@ -118,7 +118,7 @@ + pinctrl-0 = <&emac_rgmii_pins>; + phy-supply = <®_gmac_3v3>; + phy-handle = <&ext_rgmii_phy>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + status = "okay"; + }; + +diff --git a/arch/arm/dts/sun50i-h5-orangepi-prime.dts b/arch/arm/dts/sun50i-h5-orangepi-prime.dts +index cb44bfa598..33ab44072e 100644 +--- a/arch/arm/dts/sun50i-h5-orangepi-prime.dts ++++ b/arch/arm/dts/sun50i-h5-orangepi-prime.dts +@@ -124,7 +124,7 @@ + pinctrl-0 = <&emac_rgmii_pins>; + phy-supply = <®_gmac_3v3>; + phy-handle = <&ext_rgmii_phy>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + status = "okay"; + }; + +diff --git a/arch/arm/dts/sun50i-h5-orangepi-zero-plus.dts b/arch/arm/dts/sun50i-h5-orangepi-zero-plus.dts +index ef5ca64442..de448ca51e 100644 +--- a/arch/arm/dts/sun50i-h5-orangepi-zero-plus.dts ++++ b/arch/arm/dts/sun50i-h5-orangepi-zero-plus.dts +@@ -69,7 +69,7 @@ + pinctrl-0 = <&emac_rgmii_pins>; + phy-supply = <®_gmac_3v3>; + phy-handle = <&ext_rgmii_phy>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + status = "okay"; + }; + +diff --git a/arch/arm/dts/sun50i-h6-beelink-gs1.dts b/arch/arm/dts/sun50i-h6-beelink-gs1.dts +index 0dc33c90dd..024035d36e 100644 +--- a/arch/arm/dts/sun50i-h6-beelink-gs1.dts ++++ b/arch/arm/dts/sun50i-h6-beelink-gs1.dts +@@ -64,7 +64,7 @@ + &emac { + pinctrl-names = "default"; + pinctrl-0 = <&ext_rgmii_pins>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + phy-handle = <&ext_rgmii_phy>; + phy-supply = <®_aldo2>; + status = "okay"; +diff --git a/arch/arm/dts/sun50i-h6-pine-h64.dts b/arch/arm/dts/sun50i-h6-pine-h64.dts +index 1898345183..13fbf26817 100644 +--- a/arch/arm/dts/sun50i-h6-pine-h64.dts ++++ b/arch/arm/dts/sun50i-h6-pine-h64.dts +@@ -66,7 +66,7 @@ + &emac { + pinctrl-names = "default"; + pinctrl-0 = <&ext_rgmii_pins>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + phy-handle = <&ext_rgmii_phy>; + phy-supply = <®_aldo2>; + allwinner,rx-delay-ps = <200>; +diff --git a/arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts b/arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts +index e2bfe00588..4dbcad1343 100644 +--- a/arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts ++++ b/arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts +@@ -130,7 +130,7 @@ + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; + phy = <&phy1>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + phy-supply = <®_gmac_3v3>; + status = "okay"; + +diff --git a/arch/arm/dts/sun7i-a20-bananapi.dts b/arch/arm/dts/sun7i-a20-bananapi.dts +index 81bc85d398..33040c43bc 100644 +--- a/arch/arm/dts/sun7i-a20-bananapi.dts ++++ b/arch/arm/dts/sun7i-a20-bananapi.dts +@@ -132,7 +132,7 @@ + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; + phy = <&phy1>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + phy-supply = <®_gmac_3v3>; + status = "okay"; + +diff --git a/arch/arm/dts/sun7i-a20-bananapro.dts b/arch/arm/dts/sun7i-a20-bananapro.dts +index 0176e9de01..8a75545e22 100644 +--- a/arch/arm/dts/sun7i-a20-bananapro.dts ++++ b/arch/arm/dts/sun7i-a20-bananapro.dts +@@ -110,7 +110,7 @@ + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; + phy = <&phy1>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + phy-supply = <®_gmac_3v3>; + status = "okay"; + +diff --git a/arch/arm/dts/sun7i-a20-cubietruck.dts b/arch/arm/dts/sun7i-a20-cubietruck.dts +index 99f531b8d2..46a9f4669e 100644 +--- a/arch/arm/dts/sun7i-a20-cubietruck.dts ++++ b/arch/arm/dts/sun7i-a20-cubietruck.dts +@@ -151,7 +151,7 @@ + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; + phy = <&phy1>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + status = "okay"; + + phy1: ethernet-phy@1 { +diff --git a/arch/arm/dts/sun7i-a20-hummingbird.dts b/arch/arm/dts/sun7i-a20-hummingbird.dts +index fd0153f656..5c3d107094 100644 +--- a/arch/arm/dts/sun7i-a20-hummingbird.dts ++++ b/arch/arm/dts/sun7i-a20-hummingbird.dts +@@ -101,7 +101,7 @@ + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; + phy = <&phy1>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + phy-supply = <®_gmac_vdd>; + /* phy reset config */ + snps,reset-gpio = <&pio 0 17 GPIO_ACTIVE_HIGH>; /* PA17 */ +diff --git a/arch/arm/dts/sun7i-a20-lamobo-r1.dts b/arch/arm/dts/sun7i-a20-lamobo-r1.dts +index f91e1bee44..8173d77c12 100644 +--- a/arch/arm/dts/sun7i-a20-lamobo-r1.dts ++++ b/arch/arm/dts/sun7i-a20-lamobo-r1.dts +@@ -120,7 +120,7 @@ + &gmac { + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + phy-supply = <®_gmac_3v3>; + status = "okay"; + /delete-property/#address-cells; +diff --git a/arch/arm/dts/sun7i-a20-olimex-som-evb.dts b/arch/arm/dts/sun7i-a20-olimex-som-evb.dts +index f0e6a96e57..f0c5160ff8 100644 +--- a/arch/arm/dts/sun7i-a20-olimex-som-evb.dts ++++ b/arch/arm/dts/sun7i-a20-olimex-som-evb.dts +@@ -112,7 +112,7 @@ + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; + phy = <&phy1>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + status = "okay"; + + phy1: ethernet-phy@1 { +diff --git a/arch/arm/dts/sun7i-a20-olimex-som204-evb.dts b/arch/arm/dts/sun7i-a20-olimex-som204-evb.dts +index 823aabce04..ff42708137 100644 +--- a/arch/arm/dts/sun7i-a20-olimex-som204-evb.dts ++++ b/arch/arm/dts/sun7i-a20-olimex-som204-evb.dts +@@ -106,7 +106,7 @@ + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; + phy = <&phy3>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + phy-supply = <®_vcc3v3>; + + snps,reset-gpio = <&pio 0 17 GPIO_ACTIVE_HIGH>; +diff --git a/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts b/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts +index 4e1c590eb0..996201665b 100644 +--- a/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts ++++ b/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts +@@ -112,7 +112,7 @@ + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; + phy = <&phy1>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + status = "okay"; + + phy1: ethernet-phy@1 { +diff --git a/arch/arm/dts/sun7i-a20-orangepi-mini.dts b/arch/arm/dts/sun7i-a20-orangepi-mini.dts +index 15881081ca..b80215c61c 100644 +--- a/arch/arm/dts/sun7i-a20-orangepi-mini.dts ++++ b/arch/arm/dts/sun7i-a20-orangepi-mini.dts +@@ -121,7 +121,7 @@ + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; + phy = <&phy1>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + phy-supply = <®_gmac_3v3>; + status = "okay"; + +diff --git a/arch/arm/dts/sun7i-a20-orangepi.dts b/arch/arm/dts/sun7i-a20-orangepi.dts +index d64de2e73a..66efb7d1ab 100644 +--- a/arch/arm/dts/sun7i-a20-orangepi.dts ++++ b/arch/arm/dts/sun7i-a20-orangepi.dts +@@ -97,7 +97,7 @@ + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; + phy = <&phy1>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + phy-supply = <®_gmac_3v3>; + status = "okay"; + +diff --git a/arch/arm/dts/sun7i-a20-pcduino3-nano.dts b/arch/arm/dts/sun7i-a20-pcduino3-nano.dts +index 538ea15fa3..205eaae44a 100644 +--- a/arch/arm/dts/sun7i-a20-pcduino3-nano.dts ++++ b/arch/arm/dts/sun7i-a20-pcduino3-nano.dts +@@ -115,7 +115,7 @@ + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; + phy = <&phy1>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + status = "okay"; + + phy1: ethernet-phy@1 { +diff --git a/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts b/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts +index c27e56091f..56cc5791c4 100644 +--- a/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts ++++ b/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts +@@ -82,7 +82,7 @@ + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; + phy = <&phy1>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + status = "okay"; + + phy1: ethernet-phy@1 { +diff --git a/arch/arm/dts/sun8i-a83t-bananapi-m3.dts b/arch/arm/dts/sun8i-a83t-bananapi-m3.dts +index eaff6fa401..2beafe3a31 100644 +--- a/arch/arm/dts/sun8i-a83t-bananapi-m3.dts ++++ b/arch/arm/dts/sun8i-a83t-bananapi-m3.dts +@@ -123,7 +123,7 @@ + pinctrl-0 = <&emac_rgmii_pins>; + phy-supply = <®_sw>; + phy-handle = <&rgmii_phy>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + allwinner,rx-delay-ps = <700>; + allwinner,tx-delay-ps = <700>; + status = "okay"; +diff --git a/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts b/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts +index 5dba4fc310..ecd9ff38a8 100644 +--- a/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts ++++ b/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts +@@ -160,7 +160,7 @@ + pinctrl-0 = <&emac_rgmii_pins>; + phy-supply = <®_dldo4>; + phy-handle = <&rgmii_phy>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + status = "okay"; + }; + +diff --git a/arch/arm/dts/sun8i-h3-nanopi-m1-plus.dts b/arch/arm/dts/sun8i-h3-nanopi-m1-plus.dts +index 4ba533b034..bc370d4ea1 100644 +--- a/arch/arm/dts/sun8i-h3-nanopi-m1-plus.dts ++++ b/arch/arm/dts/sun8i-h3-nanopi-m1-plus.dts +@@ -96,7 +96,7 @@ + pinctrl-0 = <&emac_rgmii_pins>; + phy-supply = <®_gmac_3v3>; + phy-handle = <&ext_rgmii_phy>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + + status = "okay"; + }; +diff --git a/arch/arm/dts/sun8i-h3-orangepi-plus.dts b/arch/arm/dts/sun8i-h3-orangepi-plus.dts +index 97f497854e..d05fa679dc 100644 +--- a/arch/arm/dts/sun8i-h3-orangepi-plus.dts ++++ b/arch/arm/dts/sun8i-h3-orangepi-plus.dts +@@ -85,7 +85,7 @@ + pinctrl-0 = <&emac_rgmii_pins>; + phy-supply = <®_gmac_3v3>; + phy-handle = <&ext_rgmii_phy>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + + status = "okay"; + }; +diff --git a/arch/arm/dts/sun8i-h3-orangepi-plus2e.dts b/arch/arm/dts/sun8i-h3-orangepi-plus2e.dts +index 6dbf7b2e0c..b6ca45d18e 100644 +--- a/arch/arm/dts/sun8i-h3-orangepi-plus2e.dts ++++ b/arch/arm/dts/sun8i-h3-orangepi-plus2e.dts +@@ -67,7 +67,7 @@ + pinctrl-0 = <&emac_rgmii_pins>; + phy-supply = <®_gmac_3v3>; + phy-handle = <&ext_rgmii_phy>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + status = "okay"; + }; + +diff --git a/arch/arm/dts/sun8i-r40-bananapi-m2-ultra.dts b/arch/arm/dts/sun8i-r40-bananapi-m2-ultra.dts +index c488aaacbd..9c20245eef 100644 +--- a/arch/arm/dts/sun8i-r40-bananapi-m2-ultra.dts ++++ b/arch/arm/dts/sun8i-r40-bananapi-m2-ultra.dts +@@ -129,7 +129,7 @@ + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; + phy-handle = <&phy1>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + phy-supply = <®_dc1sw>; + status = "okay"; + }; +diff --git a/arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts b/arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts +index 15c22b06fc..3ab6f47cea 100644 +--- a/arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts ++++ b/arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts +@@ -120,7 +120,7 @@ + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; + phy-handle = <&phy1>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + phy-supply = <®_dc1sw>; + status = "okay"; + }; +diff --git a/arch/arm/dts/sunxi-bananapi-m2-plus.dtsi b/arch/arm/dts/sunxi-bananapi-m2-plus.dtsi +index 39263e74fb..8e5cb3b3fd 100644 +--- a/arch/arm/dts/sunxi-bananapi-m2-plus.dtsi ++++ b/arch/arm/dts/sunxi-bananapi-m2-plus.dtsi +@@ -126,7 +126,7 @@ + pinctrl-0 = <&emac_rgmii_pins>; + phy-supply = <®_gmac_3v3>; + phy-handle = <&ext_rgmii_phy>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + + status = "okay"; + }; +-- +2.28.0 + diff --git a/uboot-tools.spec b/uboot-tools.spec index 955160d..d76901d 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -31,6 +31,7 @@ Patch7: arm-add-BOOTENV_EFI_SET_FDTFILE_FALLBACK-for-tegra186-be.patch Patch8: AllWinner-UpstreamSync.patch Patch9: AllWinner-PinePhone.patch Patch10: AllWinner-PineTab.patch +Patch11: 0001-Fixes-for-AllWinner-ethernet-network-interfaces.patch # TI fixes Patch12: 0001-Fix-BeagleAI-detection.patch # Rockchips improvements @@ -253,6 +254,7 @@ cp -p board/warp7/README builds/docs/README.warp7 %changelog * Wed Oct 28 08:21:56 GMT 2020 Peter Robinson - 2020.10-2 - Fix kernel installs for non EBBR systems +- Fix for wired networks on some Allwinner devices * Tue Oct 06 2020 Peter Robinson - 2020.10-1 - Update to 2020.10 From 955b9471d4ac9ecd50bc69d99bd1198660fceb8d Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 28 Oct 2020 19:59:52 +0000 Subject: [PATCH 028/271] tweak pine64 fix --- 0001-Fixes-for-AllWinner-ethernet-network-interfaces.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/0001-Fixes-for-AllWinner-ethernet-network-interfaces.patch b/0001-Fixes-for-AllWinner-ethernet-network-interfaces.patch index 68626db..3dc423b 100644 --- a/0001-Fixes-for-AllWinner-ethernet-network-interfaces.patch +++ b/0001-Fixes-for-AllWinner-ethernet-network-interfaces.patch @@ -119,7 +119,7 @@ index 24f1aac366..b09b4276f1 100644 pinctrl-names = "default"; pinctrl-0 = <&rgmii_pins>; - phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; ++ phy-mode = "rgmii-txid"; phy-handle = <&ext_rgmii_phy>; status = "okay"; }; From 2cf8c77ba4b65797d5b84d3514cafb551202edd2 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sun, 8 Nov 2020 23:08:27 +0000 Subject: [PATCH 029/271] Fix SPI on Rockchip devices --- ...b-specific-bits-to-it-s-specific-u-b.patch | 104 +++++++ uboot-tools.spec | 260 +----------------- 2 files changed, 110 insertions(+), 254 deletions(-) create mode 100644 rockchip-Move-Bob-specific-bits-to-it-s-specific-u-b.patch diff --git a/rockchip-Move-Bob-specific-bits-to-it-s-specific-u-b.patch b/rockchip-Move-Bob-specific-bits-to-it-s-specific-u-b.patch new file mode 100644 index 0000000..2718f7b --- /dev/null +++ b/rockchip-Move-Bob-specific-bits-to-it-s-specific-u-b.patch @@ -0,0 +1,104 @@ +From 71f86c48580642a8d6a7d1049427bb72cb93b480 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Sun, 8 Nov 2020 19:57:50 +0000 +Subject: [PATCH] rockchip: Move Bob specific bits to it's specific u-boot.dtsi + +Move the bits that are device specific to the -u-boot.dtsi as the +bits may be different on other devices and hence breaks SPI on +those devices such as the Pinebook Pro. + +Signed-off-by: Peter Robinson +Fixes: c4cea2bbf995 ("rockchip: Enable building a SPI ROM image on bob") +Cc: Simon Glass +--- + arch/arm/dts/rk3399-gru-u-boot.dtsi | 30 +++++++++++++++++++++++++++++ + arch/arm/dts/rk3399-u-boot.dtsi | 25 ------------------------ + 2 files changed, 30 insertions(+), 25 deletions(-) + +diff --git a/arch/arm/dts/rk3399-gru-u-boot.dtsi b/arch/arm/dts/rk3399-gru-u-boot.dtsi +index 390ac2bb5a..5e95cacfea 100644 +--- a/arch/arm/dts/rk3399-gru-u-boot.dtsi ++++ b/arch/arm/dts/rk3399-gru-u-boot.dtsi +@@ -5,6 +5,36 @@ + + #include "rk3399-u-boot.dtsi" + ++/ { ++ aliases { ++ spi1 = &spi1; ++ }; ++}; ++ ++#ifdef CONFIG_ROCKCHIP_SPI_IMAGE ++&binman { ++ rom { ++ filename = "u-boot.rom"; ++ size = <0x400000>; ++ pad-byte = <0xff>; ++ ++ mkimage { ++ args = "-n rk3399 -T rkspi"; ++ u-boot-spl { ++ }; ++ }; ++ u-boot-img { ++ offset = <0x40000>; ++ }; ++ u-boot { ++ offset = <0x300000>; ++ }; ++ fdtmap { ++ }; ++ }; ++}; ++#endif ++ + &spi_flash { + u-boot,dm-pre-reloc; + }; +diff --git a/arch/arm/dts/rk3399-u-boot.dtsi b/arch/arm/dts/rk3399-u-boot.dtsi +index ecd230c720..26b0a34e64 100644 +--- a/arch/arm/dts/rk3399-u-boot.dtsi ++++ b/arch/arm/dts/rk3399-u-boot.dtsi +@@ -11,7 +11,6 @@ + mmc0 = &sdhci; + mmc1 = &sdmmc; + pci0 = &pcie0; +- spi1 = &spi1; + }; + + cic: syscon@ff620000 { +@@ -60,30 +59,6 @@ + + }; + +-#ifdef CONFIG_ROCKCHIP_SPI_IMAGE +-&binman { +- rom { +- filename = "u-boot.rom"; +- size = <0x400000>; +- pad-byte = <0xff>; +- +- mkimage { +- args = "-n rk3399 -T rkspi"; +- u-boot-spl { +- }; +- }; +- u-boot-img { +- offset = <0x40000>; +- }; +- u-boot { +- offset = <0x300000>; +- }; +- fdtmap { +- }; +- }; +-}; +-#endif +- + &cru { + u-boot,dm-pre-reloc; + }; +-- +2.28.0 + diff --git a/uboot-tools.spec b/uboot-tools.spec index d76901d..f9f20b4 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -2,7 +2,7 @@ Name: uboot-tools Version: 2020.10 -Release: 2%{?candidate:.%{candidate}}%{?dist} +Release: 3%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -39,6 +39,7 @@ Patch13: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch Patch14: rk3399-Pinebook-pro-EDP-support.patch Patch15: rk3399-reset-display-hack.patch Patch16: rockchip-Rock960-Fix-up-USB-support.patch +Patch17: rockchip-Move-Bob-specific-bits-to-it-s-specific-u-b.patch BuildRequires: bc BuildRequires: dtc @@ -252,7 +253,10 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog -* Wed Oct 28 08:21:56 GMT 2020 Peter Robinson - 2020.10-2 +* Sun Nov 8 2020 Peter Robinson - 2020.10-3 +- Fix SPI on Rockchip devices + +* Wed Oct 28 2020 Peter Robinson - 2020.10-2 - Fix kernel installs for non EBBR systems - Fix for wired networks on some Allwinner devices @@ -341,255 +345,3 @@ cp -p board/warp7/README builds/docs/README.warp7 * Tue Jan 7 2020 Peter Robinson 2020.01-1 - 2020.01 - -* Tue Dec 17 2019 Peter Robinson 2020.01-0.9-rc5 -- 2020.01 RC5 - -* Thu Dec 12 2019 Peter Robinson 2020.01-0.8-rc4 -- Fixes for Raspberry Pi - -* Thu Dec 5 2019 Peter Robinson 2020.01-0.7-rc4 -- Enable the Khadas Edge and VIM series of devices -- Minor other fixes - -* Tue Dec 3 2019 Peter Robinson 2020.01-0.6-rc4 -- Fixes for AllWinner, Raspberry Pi, Rockchip, Xilinx ZynqMP - -* Tue Dec 3 2019 Peter Robinson 2020.01-0.5-rc4 -- 2020.01 RC4 - -* Tue Nov 19 2019 Peter Robinson 2020.01-0.4-rc3 -- 2020.01 RC3 - -* Tue Nov 12 2019 Peter Robinson 2020.01-0.3-rc2 -- 2020.01 RC2 - -* Tue Nov 5 2019 Peter Robinson 2020.01-0.2-rc1 -- Include new ATF 2.2 - -* Wed Oct 30 2019 Peter Robinson 2020.01-0.1-rc1 -- 2020.01 RC1 -- Initial migration to python3 - -* Wed Oct 9 2019 Peter Robinson 2019.10-2 -- Fixes for Rockchips rk3328 and rk3399 platforms - -* Mon Oct 7 2019 Peter Robinson 2019.10-1 -- 2019.10 - -* Mon Sep 23 2019 Peter Robinson 2019.10-0.5-rc4 -- 2019.10 RC4 - -* Wed Sep 11 2019 Peter Robinson 2019.10-0.4-rc3 -- Minor fixes - -* Tue Aug 27 2019 Peter Robinson 2019.10-0.3-rc3 -- 2019.10 RC3 - -* Mon Aug 26 2019 Peter Robinson 2019.10-0.2-rc2 -- Temporarily disable Chrome devices due to unexpected retirement of vboot-utils - -* Wed Aug 14 2019 Peter Robinson 2019.10-0.1-rc2 -- 2019.10 RC2 - -* Sun Aug 4 2019 Peter Robinson 2019.07-3 -- Fixes for Rock960 -- Iniital Raspberry Pi 4 support - -* Sat Jul 27 2019 Fedora Release Engineering - 2019.07-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Mon Jul 8 2019 Peter Robinson 2019.07-1 -- 2019.07 -- Enable Rock64 -- Rock960 enhancements - -* Fri Jun 28 2019 Peter Robinson 2019.07-0.2-rc4 -- Fix build with explicit python2 -- Drop a couple of unused boards - -* Tue Jun 18 2019 Peter Robinson 2019.07-0.1-rc4 -- 2019.07 RC4 -- Obsolete unused elf packages -- A number of new rk3399 devices - -* Sat May 4 2019 Peter Robinson 2019.04-2 -- Build and ship pre built SD/SPI SPL bits for all rk3399 boards - -* Sun Apr 14 2019 Peter Robinson 2019.04-1 -- 2019.04 -- Fixes for AllWinner and NVIDIA Jetson devices - -* Thu Apr 4 2019 Peter Robinson 2019.04-0.9-rc4 -- Latest Tegra patch revision - -* Sun Mar 31 2019 Peter Robinson 2019.04-0.8-rc4 -- Add ability to make creation of boot/dtb symlink configurable - -* Sun Mar 24 2019 Peter Robinson 2019.04-0.7-rc4 -- Minor UEFI fixes, Tegra Jetson TX series rebase - -* Wed Mar 20 2019 Peter Robinson 2019.04-0.6-rc4 -- Tegra Jetson TX-series improvements - -* Tue Mar 19 2019 Peter Robinson 2019.04-0.5-rc4 -- 2019.04 RC4 - -* Tue Mar 5 2019 Peter Robinson 2019.04-0.4-rc3 -- 2019.04 RC3 - -* Tue Feb 19 2019 Peter Robinson 2019.04-0.3-rc2 -- 2019.04 RC2 - -* Sat Feb 9 2019 Peter Robinson 2019.04-0.2-rc1 -- Build against new ATF snapshot - -* Fri Feb 8 2019 Peter Robinson 2019.04-0.1-rc1 -- 2019.04 RC1 - -* Sun Feb 03 2019 Fedora Release Engineering - 2019.01-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Tue Jan 15 2019 Peter Robinson 2019.01-1 -- 2019.01 - -* Tue Jan 8 2019 Peter Robinson 2019.01-0.4-rc3 -- 2019.01 RC3 - -* Tue Dec 18 2018 Peter Robinson 2019.01-0.3-rc2 -- 2019.01 RC2 - -* Wed Dec 12 2018 Peter Robinson 2019.01-0.2-rc1 -- ATF tweaks and fixes -- Enable amarula_a64_relic, nanopi_a64, puma-rk3399 - -* Tue Dec 4 2018 Peter Robinson 2019.01-0.1-rc1 -- 2019.01 RC1 -- Enable new devices - -* Tue Dec 4 2018 Peter Robinson 2018.11-1 -- 2018.11 -- Build with ATF 2.0 -- Fix Hummingboard and CuBox-i devices - -* Tue Oct 30 2018 Peter Robinson 2018.11-0.1.rc3 -- 2018.11 RC3 - -* Sun Sep 30 2018 Pablo Greco -- Added conditional to enable devtoolset-7-gcc for .el7 build (Arrfab) -- Added conditional BR, python2-pyelftools is python-pyelftools in .el7 (Arrfab) - -* Sun Sep 23 2018 Peter Robinson -- Update Rock960 patches, enable Rock960 Enterprise Edition (ficus) - -* Mon Sep 10 2018 Peter Robinson 2018.09-1 -- 2018.09 - -* Tue Sep 4 2018 Peter Robinson 2018.09-0.4.rc3 -- 2018.09 RC3 -- Enable nanopi_neo_plus2, pine_h64, rock960-rk3399, a64-olinuxino -- Build against new upstream AllWinner ATF support -- Use firmware provided DT on Raspberry Pi -- Support for Pine64-LTS - -* Tue Aug 14 2018 Peter Robinson 2018.09-0.2.rc2 -- 2018.09 RC2 -- Improve Jetson TX1 support -- Enable OrangePi 1+ and Avnet Ultra96 - -* Tue Jul 31 2018 Peter Robinson 2018.09-0.1.rc1 -- 2018.09 RC1 - -* Sat Jul 14 2018 Fedora Release Engineering - 2018.07-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Mon Jul 9 2018 Peter Robinson 2018.07-1 -- 2018.07 - -* Tue Jul 3 2018 Peter Robinson 2018.07-0.4.rc3 -- 2018.07 RC3 - -* Wed Jun 20 2018 Peter Robinson 2018.07-0.3.rc2 -- 2018.07 RC2 -- Enable Helios4 - -* Fri Jun 8 2018 Peter Robinson 2018.07-0.2.rc1 -- Update sunxi MMC patch series, Tegra Nyan patch, SolidRun i.MX6 SoM rev 1.5 patch - -* Tue Jun 5 2018 Peter Robinson 2018.07-0.1.rc1 -- 2018.07 RC1 -- Enable Turris Mox, BananaPi m2 Berry, some Libretech boards - -* Mon May 7 2018 Peter Robinson 2018.05-1 -- 2018.05 GA - -* Wed May 2 2018 Peter Robinson 2018.05-0.5.rc3 -- Build Xilnix ZynqMP zcu100 (96boards Ultra96) - -* Tue May 1 2018 Peter Robinson 2018.05-0.4.rc3 -- 2018.05 RC3 - -* Thu Apr 26 2018 Peter Robinson 2018.05-0.3.rc2 -- uEFI improvements -- Fixes for Rockchips rk33xx 64 bit devices -- Build AllWinner 64 bit devices against new ATF - -* Tue Apr 17 2018 Peter Robinson 2018.05-0.2.rc2 -- 2018.05 RC2 -- Enable Raspberry Pi option to use firmware DT - -* Sun Apr 8 2018 Peter Robinson 2018.05-0.1.rc1 -- 2018.05 RC1 - -* Fri Apr 6 2018 Peter Robinson 2018.03-4 -- Improvements for Raspberry Pi, AllWinner MMC perf, mvebu devices - -* Tue Mar 20 2018 Peter Robinson 2018.03-3 -- Fix issue with certain MMC cards on Raspberry Pi - -* Fri Mar 16 2018 Peter Robinson 2018.03-2 -- Add support for Raspberry Pi 3+ - -* Tue Mar 13 2018 Peter Robinson 2018.03-1 -- 2018.03 GA - -* Fri Mar 9 2018 Peter Robinson 2018.03-0.11.rc4 -- Enable support for Jetson TX2 - -* Thu Mar 8 2018 Peter Robinson 2018.03-0.10.rc4 -- Fix for Raspberry Pi 2 boot - -* Wed Mar 7 2018 Peter Robinson 2018.03-0.9.rc4 -- 2018.03 RC4 -- Fixes for Raspberry Pi 3 boot -- Minor kernel install fixes -- Enable am335x_evm_usbspl for Beagle Pocket -- DragonBoard patch rebase - -* Sun Mar 4 2018 Peter Robinson 2018.03-0.8.rc3 -- Add support for SoM rev 1.5 to mx6cuboxi -- Rebuild for new ATF 1.5 rc0 release - -* Sun Feb 25 2018 Peter Robinson 2018.03-0.7.rc3 -- Build 64 bit Rockchips FIT images with ARM Trusted Firmware - -* Tue Feb 20 2018 Peter Robinson 2018.03-0.6.rc3 -- 2018.03 RC3 - -* Fri Feb 16 2018 Peter Robinson 2018.03-0.5.rc2 -- A few upstream fixes - -* Thu Feb 15 2018 Peter Robinson 2018.03-0.4.rc2 -- Fix for GBps network on some AllWinner devices - -* Tue Feb 13 2018 Peter Robinson 2018.03-0.3.rc2 -- 2018.03 RC2 - -* Wed Feb 7 2018 Peter Robinson 2018.03-0.2.rc1 -- Update uEFI patches - -* Tue Jan 30 2018 Peter Robinson 2018.03-0.1.rc1 -- 2018.03 RC1 - -* Tue Jan 9 2018 Peter Robinson 2018.01-1 -- 2018.01 From 642bba9fd3b12efe27cc5e347ca4b36b789aee80 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sun, 8 Nov 2020 23:30:08 +0000 Subject: [PATCH 030/271] Latest Pinebook Pro display patches --- rk3399-Pinebook-pro-EDP-support.patch | 816 ++++++++++++++++++-------- rk3399-reset-display-hack.patch | 46 -- uboot-tools.spec | 8 +- 3 files changed, 588 insertions(+), 282 deletions(-) delete mode 100644 rk3399-reset-display-hack.patch diff --git a/rk3399-Pinebook-pro-EDP-support.patch b/rk3399-Pinebook-pro-EDP-support.patch index e04b62d..ae07e11 100644 --- a/rk3399-Pinebook-pro-EDP-support.patch +++ b/rk3399-Pinebook-pro-EDP-support.patch @@ -1,53 +1,52 @@ -From patchwork Fri Sep 25 18:36:55 2020 +From patchwork Tue Oct 27 13:21:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1371525 +X-Patchwork-Id: 1388576 +X-Patchwork-Delegate: ykai007@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=rtp-net.org -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) +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 RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4BygrL4fh7z9sS8 - for ; Sat, 26 Sep 2020 04:47:14 +1000 (AEST) + by ozlabs.org (Postfix) with ESMTPS id 4CLC8m2r2mz9sV1 + for ; Wed, 28 Oct 2020 00:24:08 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 1DE9D823F2; - Fri, 25 Sep 2020 20:46:51 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTP id AD95E823FC; + Tue, 27 Oct 2020 14:23:49 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id 7FF818240A; Fri, 25 Sep 2020 20:46:47 +0200 (CEST) + id 37F7C8249E; Tue, 27 Oct 2020 14:23:47 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org - [IPv6:2001:bc8:3430:1000::c0f:fee]) +Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 60178823ED - for ; Fri, 25 Sep 2020 20:46:44 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTPS id 65DDC81260 + for ; Tue, 27 Oct 2020 14:23:44 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 21266180A8C; Fri, 25 Sep 2020 20:46:42 +0200 (CEST) -Message-ID: <20200925183856.346332079@rtp-net.org> + id 166971802C6; Tue, 27 Oct 2020 14:23:43 +0100 (CET) +Message-ID: <20201027132235.729230758@rtp-net.org> User-Agent: quilt/0.66 -Date: Fri, 25 Sep 2020 20:36:55 +0200 +Date: Tue, 27 Oct 2020 14:21:32 +0100 From: Arnaud Patard (Rtp) To: u-boot@lists.denx.de Cc: Kever Yang , @@ -55,10 +54,11 @@ Cc: Kever Yang , Philipp Tomsich , Peter Robinson , Samuel Dionne-Riel , + Alper Nebi Yasak , Arnaud Patard -Subject: [patch 1/8] RFC: drivers/video/rockchip/rk_vop.c: Use endpoint +Subject: [patch v2 01/10] drivers/video/rockchip/rk_vop.c: Use endpoint compatible string to find VOP mode -References: <20200925183654.723338620@rtp-net.org> +References: <20201027132131.016984025@rtp-net.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 @@ -87,6 +87,7 @@ to find the kind of endpoint by comparing the endpoint compatible value. This patch is implementing the more flexible second solution. Signed-off-by: Arnaud Patard +Tested-by: Alper Nebi Yasak Index: u-boot/arch/arm/include/asm/arch-rockchip/vop_rk3288.h =================================================================== @@ -168,12 +169,13 @@ Index: u-boot/drivers/video/rockchip/rk_vop.c disp_uc_plat = dev_get_uclass_platdata(disp); debug("Found device '%s', disp_uc_priv=%p\n", disp->name, disp_uc_plat); -From patchwork Fri Sep 25 18:36:56 2020 +From patchwork Tue Oct 27 13:21:33 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1371530 +X-Patchwork-Id: 1388588 +X-Patchwork-Delegate: ykai007@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org @@ -188,35 +190,36 @@ Received: from phobos.denx.de (phobos.denx.de (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4BygsJ4hGqz9sS8 - for ; Sat, 26 Sep 2020 04:48:04 +1000 (AEST) + by ozlabs.org (Postfix) with ESMTPS id 4CLCC535Xyz9sV1 + for ; Wed, 28 Oct 2020 00:26:07 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 50C6E82503; - Fri, 25 Sep 2020 20:47:09 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTP id F3D8182517; + Tue, 27 Oct 2020 14:24:08 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id 0F41F8246F; Fri, 25 Sep 2020 20:46:51 +0200 (CEST) + id 99F18824A7; Tue, 27 Oct 2020 14:23: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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) +Received: from lechat.rtp-net.org (lechat.rtp-net.org + [IPv6:2001:bc8:3430:1000::c0f:fee]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id BD6E0823F5 - for ; Fri, 25 Sep 2020 20:46:44 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTPS id 6CEE382496 + for ; Tue, 27 Oct 2020 14:23:45 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 0B30218054F; Fri, 25 Sep 2020 20:46:43 +0200 (CEST) -Message-ID: <20200925183856.398231733@rtp-net.org> + id 354541806F5; Tue, 27 Oct 2020 14:23:43 +0100 (CET) +Message-ID: <20201027132235.781283753@rtp-net.org> User-Agent: quilt/0.66 -Date: Fri, 25 Sep 2020 20:36:56 +0200 +Date: Tue, 27 Oct 2020 14:21:33 +0100 From: Arnaud Patard (Rtp) To: u-boot@lists.denx.de Cc: Kever Yang , @@ -224,9 +227,10 @@ Cc: Kever Yang , Philipp Tomsich , Peter Robinson , Samuel Dionne-Riel , + Alper Nebi Yasak , Arnaud Patard -Subject: [patch 2/8] RFC: drivers/video/rockchip/rk_edp.c: Add rk3399 support -References: <20200925183654.723338620@rtp-net.org> +Subject: [patch v2 02/10] drivers/video/rockchip/rk_edp.c: Add rk3399 support +References: <20201027132131.016984025@rtp-net.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 @@ -255,6 +259,7 @@ on rk3399, so don't try changing the clock at index 1 to rate 0 on rk3399. Signed-off-by: Arnaud Patard +Tested-by: Alper Nebi Yasak Index: u-boot/drivers/video/rockchip/rk_edp.c =================================================================== @@ -422,12 +427,13 @@ Index: u-boot/arch/arm/include/asm/arch-rockchip/edp_rk3288.h /* line_map */ #define LANE3_MAP_LOGIC_LANE_0 (0x0 << 6) -From patchwork Fri Sep 25 18:36:57 2020 +From patchwork Tue Oct 27 13:21:34 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1371528 +X-Patchwork-Id: 1388575 +X-Patchwork-Delegate: ykai007@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org @@ -439,19 +445,20 @@ Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=rtp-net.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 RSA-PSS (4096 bits)) + key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest + SHA256) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4Bygrs3CVDz9sSJ - for ; Sat, 26 Sep 2020 04:47:41 +1000 (AEST) + by ozlabs.org (Postfix) with ESMTPS id 4CLC8l3jS0z9sSG + for ; Wed, 28 Oct 2020 00:23:56 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id A6BF7824BB; - Fri, 25 Sep 2020 20:47:04 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTP id 4A07082361; + Tue, 27 Oct 2020 14:23:48 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id A050F82499; Fri, 25 Sep 2020 20:46:50 +0200 (CEST) + id 1BE93824A7; Tue, 27 Oct 2020 14:23:47 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, @@ -459,17 +466,17 @@ X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 8F65D823F0 - for ; Fri, 25 Sep 2020 20:46:44 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTPS id BEBE082361 + for ; Tue, 27 Oct 2020 14:23:44 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 3BBA4180A6C; Fri, 25 Sep 2020 20:46:43 +0200 (CEST) -Message-ID: <20200925183856.447902421@rtp-net.org> + id 5A45C1808B6; Tue, 27 Oct 2020 14:23:43 +0100 (CET) +Message-ID: <20201027132235.832232313@rtp-net.org> User-Agent: quilt/0.66 -Date: Fri, 25 Sep 2020 20:36:57 +0200 +Date: Tue, 27 Oct 2020 14:21:34 +0100 From: Arnaud Patard (Rtp) To: u-boot@lists.denx.de Cc: Kever Yang , @@ -477,10 +484,11 @@ Cc: Kever Yang , Philipp Tomsich , Peter Robinson , Samuel Dionne-Riel , + Alper Nebi Yasak , Arnaud Patard -Subject: [patch 3/8] RFC: drivers/video/rockchip/rk_edp.c: Change interrupt +Subject: [patch v2 03/10] drivers/video/rockchip/rk_edp.c: Change interrupt polarity configuration -References: <20200925183654.723338620@rtp-net.org> +References: <20201027132131.016984025@rtp-net.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 @@ -503,77 +511,73 @@ uboot code is setting it to 1. Change the configuration to match the linux configuration Signed-off-by: Arnaud Patard +Tested-by: Alper Nebi Yasak -Index: u-boot/drivers/video/rockchip/rk_edp.c +Index: u-boot/arch/arm/include/asm/arch-rockchip/edp_rk3288.h =================================================================== ---- u-boot.orig/drivers/video/rockchip/rk_edp.c -+++ u-boot/drivers/video/rockchip/rk_edp.c -@@ -100,10 +100,13 @@ static void rk_edp_init_refclk(struct rk - ®s->dp_reserv2); - } +--- u-boot.orig/arch/arm/include/asm/arch-rockchip/edp_rk3288.h ++++ u-boot/arch/arm/include/asm/arch-rockchip/edp_rk3288.h +@@ -297,7 +297,9 @@ check_member(rk3288_edp, pll_reg_5, 0xa0 -+#define INT_POL1 (0x1 << 1) -+#define INT_POL0 (0x1 << 0) -+ - static void rk_edp_init_interrupt(struct rk3288_edp *regs) - { - /* Set interrupt pin assertion polarity as high */ -- writel(INT_POL, ®s->int_ctl); -+ writel(INT_POL0 | INT_POL1, ®s->int_ctl); + /* int_ctl */ + #define SOFT_INT_CTRL (0x1 << 2) +-#define INT_POL (0x1 << 0) ++#define INT_POL1 (0x1 << 1) ++#define INT_POL0 (0x1 << 0) ++#define INT_POL (INT_POL0 | INT_POL1) - /* Clear pending registers */ - writel(0xff, ®s->common_int_sta_1); + /* sys_ctl_1 */ + #define DET_STA (0x1 << 2) -From patchwork Fri Sep 25 18:36:58 2020 +From patchwork Tue Oct 27 13:21:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1371526 +X-Patchwork-Id: 1388577 +X-Patchwork-Delegate: ykai007@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=rtp-net.org -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) +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 RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4BygrP4k49z9sS8 - for ; Sat, 26 Sep 2020 04:47:17 +1000 (AEST) + by ozlabs.org (Postfix) with ESMTPS id 4CLC932V0Bz9sSG + for ; Wed, 28 Oct 2020 00:24:22 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 59CA8824A5; - Fri, 25 Sep 2020 20:46:58 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTP id 129E182496; + Tue, 27 Oct 2020 14:23:55 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id 35BF482489; Fri, 25 Sep 2020 20:46:50 +0200 (CEST) + id 7EA32824BC; Tue, 27 Oct 2020 14:23:49 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org - [IPv6:2001:bc8:3430:1000::c0f:fee]) +Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 8FB9B823F2 - for ; Fri, 25 Sep 2020 20:46:44 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTPS id ED572823FC + for ; Tue, 27 Oct 2020 14:23:44 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 4C3F8180AAC; Fri, 25 Sep 2020 20:46:43 +0200 (CEST) -Message-ID: <20200925183856.497901419@rtp-net.org> + id 6676F1808BC; Tue, 27 Oct 2020 14:23:43 +0100 (CET) +Message-ID: <20201027132235.883717675@rtp-net.org> User-Agent: quilt/0.66 -Date: Fri, 25 Sep 2020 20:36:58 +0200 +Date: Tue, 27 Oct 2020 14:21:35 +0100 From: Arnaud Patard (Rtp) To: u-boot@lists.denx.de Cc: Kever Yang , @@ -581,107 +585,11 @@ Cc: Kever Yang , Philipp Tomsich , Peter Robinson , Samuel Dionne-Riel , + Alper Nebi Yasak , Arnaud Patard -Subject: [patch 4/8] RFC: drivers/video/rockchip/rk_edp.c: Change clock rate -References: <20200925183654.723338620@rtp-net.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -The current code is setting the clock rate to 192000000, but -due to the current device-tree configuration and linux code, -it should rather be 100000000. - -Signed-off-by: Arnaud Patard - -Index: u-boot/drivers/video/rockchip/rk_edp.c -=================================================================== ---- u-boot.orig/drivers/video/rockchip/rk_edp.c -+++ u-boot/drivers/video/rockchip/rk_edp.c -@@ -1075,7 +1078,7 @@ static int rk_edp_probe(struct udevice * - } - ret = clk_get_by_index(uc_plat->src_dev, 0, &clk); - if (ret >= 0) { -- ret = clk_set_rate(&clk, 192000000); -+ ret = clk_set_rate(&clk, 100000000); - clk_free(&clk); - } - if (ret < 0) { - -From patchwork Fri Sep 25 18:36:59 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1371529 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=fail (p=none dis=none) header.from=rtp-net.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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4Bygs45XdNz9sS8 - for ; Sat, 26 Sep 2020 04:47:52 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 61E26824EE; - Fri, 25 Sep 2020 20:47:07 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=fail (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id B47DD8248B; Fri, 25 Sep 2020 20:46:50 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, - URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org - [IPv6:2001:bc8:3430:1000::c0f:fee]) - (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id DD7248246F - for ; Fri, 25 Sep 2020 20:46:44 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org -Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 6D075180ABF; Fri, 25 Sep 2020 20:46:43 +0200 (CEST) -Message-ID: <20200925183856.548086571@rtp-net.org> -User-Agent: quilt/0.66 -Date: Fri, 25 Sep 2020 20:36:59 +0200 -From: Arnaud Patard (Rtp) -To: u-boot@lists.denx.de -Cc: Kever Yang , - Anatolij Gustschin , - Philipp Tomsich , - Peter Robinson , - Samuel Dionne-Riel , - Arnaud Patard -Subject: [patch 5/8] RFC: drivers/video/rockchip/rk_vop.c: Reserve efi fb +Subject: [patch v2 04/10] drivers/video/rockchip/rk_vop.c: Reserve efi fb memory -References: <20200925183654.723338620@rtp-net.org> +References: <20201027132131.016984025@rtp-net.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 @@ -704,6 +612,7 @@ has to be reserved, otherwise it may leads to kernel memory overwrite. Signed-off-by: Arnaud Patard +Tested-by: Alper Nebi Yasak Index: u-boot/drivers/video/rockchip/rk_vop.c =================================================================== @@ -733,55 +642,56 @@ Index: u-boot/drivers/video/rockchip/rk_vop.c /* -From patchwork Fri Sep 25 18:37:00 2020 +From patchwork Tue Oct 27 13:21:36 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1371527 +X-Patchwork-Id: 1388583 +X-Patchwork-Delegate: ykai007@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=rtp-net.org -Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4Bygrg0YBjz9sS8 - for ; Sat, 26 Sep 2020 04:47:31 +1000 (AEST) + by ozlabs.org (Postfix) with ESMTPS id 4CLCB85bVhz9sSf + for ; Wed, 28 Oct 2020 00:25:20 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 63B7B82489; - Fri, 25 Sep 2020 20:47:01 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTP id 1CD88824E5; + Tue, 27 Oct 2020 14:24:01 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id 3E20082412; Fri, 25 Sep 2020 20:46:50 +0200 (CEST) + id 15038824A9; Tue, 27 Oct 2020 14:23:50 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org - [IPv6:2001:bc8:3430:1000::c0f:fee]) +Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id D99C482423 - for ; Fri, 25 Sep 2020 20:46:44 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTPS id 16A2C8246A + for ; Tue, 27 Oct 2020 14:23:45 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 81B21180AC6; Fri, 25 Sep 2020 20:46:43 +0200 (CEST) -Message-ID: <20200925183856.598156739@rtp-net.org> + id 8FBF11808D1; Tue, 27 Oct 2020 14:23:43 +0100 (CET) +Message-ID: <20201027132235.934181387@rtp-net.org> User-Agent: quilt/0.66 -Date: Fri, 25 Sep 2020 20:37:00 +0200 +Date: Tue, 27 Oct 2020 14:21:36 +0100 From: Arnaud Patard (Rtp) To: u-boot@lists.denx.de Cc: Kever Yang , @@ -789,9 +699,10 @@ Cc: Kever Yang , Philipp Tomsich , Peter Robinson , Samuel Dionne-Riel , + Alper Nebi Yasak , Arnaud Patard -Subject: [patch 6/8] RFC: rk3399-pinebook-pro-u-boot.dtsi: Enable edp -References: <20200925183654.723338620@rtp-net.org> +Subject: [patch v2 05/10] rk3399-pinebook-pro-u-boot.dtsi: Enable edp +References: <20201027132131.016984025@rtp-net.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 @@ -827,12 +738,13 @@ Index: u-boot/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi + rockchip,panel = <&edp_panel>; +}; -From patchwork Fri Sep 25 18:37:01 2020 +From patchwork Tue Oct 27 13:21:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1371532 +X-Patchwork-Id: 1388578 +X-Patchwork-Delegate: ykai007@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org @@ -846,36 +758,35 @@ 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 RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4Bygsg53Gnz9sSJ - for ; Sat, 26 Sep 2020 04:48:23 +1000 (AEST) + by ozlabs.org (Postfix) with ESMTPS id 4CLC9J4D9wz9sSf + for ; Wed, 28 Oct 2020 00:24:35 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id C15BF82513; - Fri, 25 Sep 2020 20:47:13 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTP id 164CE82494; + Tue, 27 Oct 2020 14:23:56 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id 4F0DE8247A; Fri, 25 Sep 2020 20:46:53 +0200 (CEST) + id 980AA824B8; Tue, 27 Oct 2020 14:23:49 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org - [IPv6:2001:bc8:3430:1000::c0f:fee]) +Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id EFE03823FF - for ; Fri, 25 Sep 2020 20:46:44 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTPS id 1369A82430 + for ; Tue, 27 Oct 2020 14:23:45 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 9A94A180ACB; Fri, 25 Sep 2020 20:46:43 +0200 (CEST) -Message-ID: <20200925183856.648221737@rtp-net.org> + id B8905180904; Tue, 27 Oct 2020 14:23:43 +0100 (CET) +Message-ID: <20201027132235.984153676@rtp-net.org> User-Agent: quilt/0.66 -Date: Fri, 25 Sep 2020 20:37:01 +0200 +Date: Tue, 27 Oct 2020 14:21:37 +0100 From: Arnaud Patard (Rtp) To: u-boot@lists.denx.de Cc: Kever Yang , @@ -883,10 +794,11 @@ Cc: Kever Yang , Philipp Tomsich , Peter Robinson , Samuel Dionne-Riel , + Alper Nebi Yasak , Arnaud Patard -Subject: [patch 7/8] RFC: configs/pinebook-pro-rk3399_defconfig: enable +Subject: [patch v2 06/10] configs/pinebook-pro-rk3399_defconfig: enable SYS_USB_EVENT_POLL_VIA_INT_QUEUE -References: <20200925183654.723338620@rtp-net.org> +References: <20201027132131.016984025@rtp-net.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 @@ -927,54 +839,57 @@ Index: u-boot/configs/pinebook-pro-rk3399_defconfig CONFIG_USB_ETHER_ASIX=y CONFIG_USB_ETHER_RTL8152=y -From patchwork Fri Sep 25 18:37:02 2020 +From patchwork Tue Oct 27 13:21:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1371531 +X-Patchwork-Id: 1388584 +X-Patchwork-Delegate: ykai007@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=rtp-net.org -Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4BygsV69FWz9sS8 - for ; Sat, 26 Sep 2020 04:48:14 +1000 (AEST) + by ozlabs.org (Postfix) with ESMTPS id 4CLCBN6wXXz9sSG + for ; Wed, 28 Oct 2020 00:25:32 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 94D3B824F4; - Fri, 25 Sep 2020 20:47:11 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTP id E86AC824F1; + Tue, 27 Oct 2020 14:24:03 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id EA6CB8248B; Fri, 25 Sep 2020 20:46:52 +0200 (CEST) + id DED28824A9; Tue, 27 Oct 2020 14:23: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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) +Received: from lechat.rtp-net.org (lechat.rtp-net.org + [IPv6:2001:bc8:3430:1000::c0f:fee]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 0460082475 - for ; Fri, 25 Sep 2020 20:46:45 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTPS id 51B9D82483 + for ; Tue, 27 Oct 2020 14:23:45 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id B7788180ACE; Fri, 25 Sep 2020 20:46:43 +0200 (CEST) -Message-ID: <20200925183856.699546249@rtp-net.org> + id CD3AC180A2B; Tue, 27 Oct 2020 14:23:43 +0100 (CET) +Message-ID: <20201027132236.036333749@rtp-net.org> User-Agent: quilt/0.66 -Date: Fri, 25 Sep 2020 20:37:02 +0200 +Date: Tue, 27 Oct 2020 14:21:38 +0100 From: Arnaud Patard (Rtp) To: u-boot@lists.denx.de Cc: Kever Yang , @@ -982,9 +897,10 @@ Cc: Kever Yang , Philipp Tomsich , Peter Robinson , Samuel Dionne-Riel , + Alper Nebi Yasak , Arnaud Patard -Subject: [patch 8/8] RFC: drivers/pwm/rk_pwm.c: Fix default polarity -References: <20200925183654.723338620@rtp-net.org> +Subject: [patch v2 07/10] drivers/pwm/rk_pwm.c: Fix default polarity +References: <20201027132131.016984025@rtp-net.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 @@ -1011,6 +927,7 @@ Update the code to use PWM_DUTY_POSTIVE | PWM_INACTIVE_NEGATIVE by default instead. Signed-off-by: Arnaud Patard +Tested-by: Alper Nebi Yasak Index: u-boot/drivers/pwm/rk_pwm.c =================================================================== @@ -1025,3 +942,438 @@ Index: u-boot/drivers/pwm/rk_pwm.c return 0; } + +From patchwork Tue Oct 27 13:21:39 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Arnaud Patard (Rtp)" +X-Patchwork-Id: 1388585 +X-Patchwork-Delegate: ykai007@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=fail (p=none dis=none) header.from=rtp-net.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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4CLCBc1H6Xz9sSG + for ; Wed, 28 Oct 2020 00:25:44 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id A78FF824FC; + Tue, 27 Oct 2020 14:24:05 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 038C68248F; Tue, 27 Oct 2020 14:23:52 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, + URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 +Received: from lechat.rtp-net.org (lechat.rtp-net.org + [IPv6:2001:bc8:3430:1000::c0f:fee]) + (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 5684482494 + for ; Tue, 27 Oct 2020 14:23:45 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org +Received: by lechat.rtp-net.org (Postfix, from userid 1000) + id ECF51180ACB; Tue, 27 Oct 2020 14:23:43 +0100 (CET) +Message-ID: <20201027132236.086716818@rtp-net.org> +User-Agent: quilt/0.66 +Date: Tue, 27 Oct 2020 14:21:39 +0100 +From: Arnaud Patard (Rtp) +To: u-boot@lists.denx.de +Cc: Kever Yang , + Anatolij Gustschin , + Philipp Tomsich , + Peter Robinson , + Samuel Dionne-Riel , + Alper Nebi Yasak , + Arnaud Patard +Subject: [patch v2 08/10] drivers/video/rockchip/rk_vop.c: Fix format of + fbbase in debug string +References: <20201027132131.016984025@rtp-net.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +The debug string printing the device name, framebuffer address and of node +is using %lu as format for the framebuffer address, which is not so nice. +Change it to %lx. + +Signed-off-by: Arnaud Patard +Tested-by: Alper Nebi Yasak + +Index: u-boot/drivers/video/rockchip/rk_vop.c +=================================================================== +--- u-boot.orig/drivers/video/rockchip/rk_vop.c ++++ u-boot/drivers/video/rockchip/rk_vop.c +@@ -239,7 +239,7 @@ static int rk_display_init(struct udevic + ofnode remote; + const char *compat; + +- debug("%s(%s, %lu, %s)\n", __func__, ++ debug("%s(%s, %lx, %s)\n", __func__, + dev_read_name(dev), fbbase, ofnode_get_name(ep_node)); + + ret = ofnode_read_u32(ep_node, "remote-endpoint", &remote_phandle); + +From patchwork Tue Oct 27 13:21:40 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Arnaud Patard (Rtp)" +X-Patchwork-Id: 1388579 +X-Patchwork-Delegate: ykai007@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=fail (p=none dis=none) header.from=rtp-net.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 RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4CLC9j13jpz9sSG + for ; Wed, 28 Oct 2020 00:24:56 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 83485824BC; + Tue, 27 Oct 2020 14:23:57 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id A548C824AD; Tue, 27 Oct 2020 14:23:49 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, + URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 +Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) + (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 547EC8248F + for ; Tue, 27 Oct 2020 14:23:45 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org +Received: by lechat.rtp-net.org (Postfix, from userid 1000) + id 24EC8180ACE; Tue, 27 Oct 2020 14:23:44 +0100 (CET) +Message-ID: <20201027132236.137690139@rtp-net.org> +User-Agent: quilt/0.66 +Date: Tue, 27 Oct 2020 14:21:40 +0100 +From: Arnaud Patard (Rtp) +To: u-boot@lists.denx.de +Cc: Kever Yang , + Anatolij Gustschin , + Philipp Tomsich , + Peter Robinson , + Samuel Dionne-Riel , + Alper Nebi Yasak , + Arnaud Patard +Subject: [patch v2 09/10] drivers/video/rockchip/rk_edp.c: Add missing reset + support +References: <20201027132131.016984025@rtp-net.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +In order to ensure that the eDP registers are in correct state, +add missing support for the eDP reset lines found in the device-tree. + + +Signed-off-by: Arnaud Patard +Tested-by: Alper Nebi Yasak + +Index: u-boot/drivers/video/rockchip/rk_edp.c +=================================================================== +--- u-boot.orig/drivers/video/rockchip/rk_edp.c ++++ u-boot/drivers/video/rockchip/rk_edp.c +@@ -8,11 +8,13 @@ + #include + #include + #include ++#include + #include + #include + #include + #include + #include ++#include + #include + #include + #include +@@ -1047,6 +1049,7 @@ static int rk_edp_probe(struct udevice * + struct rk_edp_priv *priv = dev_get_priv(dev); + struct rk3288_edp *regs = priv->regs; + struct rockchip_dp_data *edp_data = (struct rockchip_dp_data *)dev_get_driver_data(dev); ++ struct reset_ctl dp_rst; + + struct clk clk; + int ret; +@@ -1059,6 +1062,25 @@ static int rk_edp_probe(struct udevice * + return ret; + } + ++ ret = reset_get_by_name(dev, "dp", &dp_rst); ++ if (ret) { ++ dev_err(dev, "failed to get dp reset (ret=%d)\n", ret); ++ return ret; ++ } ++ ++ ret = reset_assert(&dp_rst); ++ if (ret) { ++ dev_err(dev, "failed to assert dp reset (ret=%d)\n", ret); ++ return ret; ++ } ++ udelay(20); ++ ++ ret = reset_deassert(&dp_rst); ++ if (ret) { ++ dev_err(dev, "failed to deassert dp reset (ret=%d)\n", ret); ++ return ret; ++ } ++ + int vop_id = uc_plat->source_id; + debug("%s, uc_plat=%p, vop_id=%u\n", __func__, uc_plat, vop_id); + + +From patchwork Tue Oct 27 13:21:41 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Arnaud Patard (Rtp)" +X-Patchwork-Id: 1388586 +X-Patchwork-Delegate: ykai007@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=fail (p=none dis=none) header.from=rtp-net.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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4CLCBq60Vjz9sSf + for ; Wed, 28 Oct 2020 00:25:55 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id EE5EB82508; + Tue, 27 Oct 2020 14:24:06 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 7F9D582494; Tue, 27 Oct 2020 14:23:52 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, + URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 +Received: from lechat.rtp-net.org (lechat.rtp-net.org + [IPv6:2001:bc8:3430:1000::c0f:fee]) + (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 7009E8249C + for ; Tue, 27 Oct 2020 14:23:45 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org +Received: by lechat.rtp-net.org (Postfix, from userid 1000) + id 2F20C180AF9; Tue, 27 Oct 2020 14:23:44 +0100 (CET) +Message-ID: <20201027132236.187863854@rtp-net.org> +User-Agent: quilt/0.66 +Date: Tue, 27 Oct 2020 14:21:41 +0100 +From: Arnaud Patard (Rtp) +To: u-boot@lists.denx.de +Cc: Kever Yang , + Anatolij Gustschin , + Philipp Tomsich , + Peter Robinson , + Samuel Dionne-Riel , + Alper Nebi Yasak , + Arnaud Patard +Subject: [patch v2 10/10] drivers/video/rockchip/rk_vop.c: Add reset support +References: <20201027132131.016984025@rtp-net.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +In order to ensure that the VOP registers are in correct state, +add missing support for the VOP reset lines found in the device-tree + +Signed-off-by: Arnaud Patard +Tested-by: Alper Nebi Yasak + +Index: u-boot/drivers/video/rockchip/rk_vop.c +=================================================================== +--- u-boot.orig/drivers/video/rockchip/rk_vop.c ++++ u-boot/drivers/video/rockchip/rk_vop.c +@@ -8,9 +8,11 @@ + #include + #include + #include ++#include + #include + #include + #include ++#include + #include + #include + #include +@@ -36,14 +38,16 @@ enum vop_pol { + DCLK_INVERT = 3 + }; + +-static void rkvop_enable(struct rk3288_vop *regs, ulong fbbase, ++static void rkvop_enable(struct udevice *dev, struct rk3288_vop *regs, ulong fbbase, + int fb_bits_per_pixel, +- const struct display_timing *edid) ++ const struct display_timing *edid, ++ struct reset_ctl *dclk_rst) + { + u32 lb_mode; + u32 rgb_mode; + u32 hactive = edid->hactive.typ; + u32 vactive = edid->vactive.typ; ++ int ret; + + writel(V_ACT_WIDTH(hactive - 1) | V_ACT_HEIGHT(vactive - 1), + ®s->win0_act_info); +@@ -91,6 +95,18 @@ static void rkvop_enable(struct rk3288_v + + writel(fbbase, ®s->win0_yrgb_mst); + writel(0x01, ®s->reg_cfg_done); /* enable reg config */ ++ ++ ret = reset_assert(dclk_rst); ++ if (ret) { ++ dev_warn(dev, "failed to assert dclk reset (ret=%d)\n", ret); ++ return; ++ } ++ udelay(20); ++ ++ ret = reset_deassert(dclk_rst); ++ if (ret) ++ dev_warn(dev, "failed to deassert dclk reset (ret=%d)\n", ret); ++ + } + + static void rkvop_set_pin_polarity(struct udevice *dev, +@@ -238,6 +254,7 @@ static int rk_display_init(struct udevic + enum video_log2_bpp l2bpp; + ofnode remote; + const char *compat; ++ struct reset_ctl dclk_rst; + + debug("%s(%s, %lx, %s)\n", __func__, + dev_read_name(dev), fbbase, ofnode_get_name(ep_node)); +@@ -354,7 +371,14 @@ static int rk_display_init(struct udevic + } + + rkvop_mode_set(dev, &timing, vop_id); +- rkvop_enable(regs, fbbase, 1 << l2bpp, &timing); ++ ++ ret = reset_get_by_name(dev, "dclk", &dclk_rst); ++ if (ret) { ++ dev_err(dev, "failed to get dclk reset (ret=%d)\n", ret); ++ return ret; ++ } ++ ++ rkvop_enable(dev, regs, fbbase, 1 << l2bpp, &timing, &dclk_rst); + + ret = display_enable(disp, 1 << l2bpp, &timing); + if (ret) +@@ -391,11 +415,31 @@ int rk_vop_probe(struct udevice *dev) + struct rk_vop_priv *priv = dev_get_priv(dev); + int ret = 0; + ofnode port, node; ++ struct reset_ctl ahb_rst; + + /* Before relocation we don't need to do anything */ + if (!(gd->flags & GD_FLG_RELOC)) + return 0; + ++ ret = reset_get_by_name(dev, "ahb", &ahb_rst); ++ if (ret) { ++ dev_err(dev, "failed to get ahb reset (ret=%d)\n", ret); ++ return ret; ++ } ++ ++ ret = reset_assert(&ahb_rst); ++ if (ret) { ++ dev_err(dev, "failed to assert ahb reset (ret=%d)\n", ret); ++ return ret; ++ } ++ udelay(20); ++ ++ ret = reset_deassert(&ahb_rst); ++ if (ret) { ++ dev_err(dev, "failed to deassert ahb reset (ret=%d)\n", ret); ++ return ret; ++ } ++ + plat->base = gd->bd->bi_dram[0].start + gd->bd->bi_dram[0].size - plat->size; + + #if defined(CONFIG_EFI_LOADER) diff --git a/rk3399-reset-display-hack.patch b/rk3399-reset-display-hack.patch deleted file mode 100644 index 67adeb3..0000000 --- a/rk3399-reset-display-hack.patch +++ /dev/null @@ -1,46 +0,0 @@ -[HACK NOTFORMERGE] PBP: Fix panel reset - -On warm reset, the pinebook pro panel is not working correctly. -The issue is not yet debugged so, for now, this hack seems to be -enough. It toggles the GPIO1_C6 gpio [ LCDVCC_EN signal in the -schematics ] used by the vcc3v3_panel regulator. - -There's no gpio_request, since the gpio is already in use at this -stage, so it can only fail. -Index: u-boot/board/pine64/pinebook-pro-rk3399/pinebook-pro-rk3399.c -=================================================================== ---- u-boot.orig/board/pine64/pinebook-pro-rk3399/pinebook-pro-rk3399.c -+++ u-boot/board/pine64/pinebook-pro-rk3399/pinebook-pro-rk3399.c -@@ -7,9 +7,12 @@ - #include - #include - #include -+#include -+#include - #include - #include - #include -+#include - #include - #include - #include -@@ -59,6 +62,7 @@ int misc_init_r(void) - const u32 cpuid_length = 0x10; - u8 cpuid[cpuid_length]; - int ret; -+ unsigned int gpio; - - setup_iodomain(); - -@@ -70,6 +74,11 @@ int misc_init_r(void) - if (ret) - return ret; - -+ gpio_lookup_name("B22", NULL, NULL, &gpio); -+ gpio_direction_output(gpio, 0); -+ mdelay(500); -+ gpio_direction_output(gpio, 1); -+ - return ret; - } - #endif diff --git a/uboot-tools.spec b/uboot-tools.spec index f9f20b4..9cbd2ad 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -36,10 +36,9 @@ Patch11: 0001-Fixes-for-AllWinner-ethernet-network-interfaces.patch Patch12: 0001-Fix-BeagleAI-detection.patch # Rockchips improvements Patch13: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch -Patch14: rk3399-Pinebook-pro-EDP-support.patch -Patch15: rk3399-reset-display-hack.patch -Patch16: rockchip-Rock960-Fix-up-USB-support.patch -Patch17: rockchip-Move-Bob-specific-bits-to-it-s-specific-u-b.patch +Patch14: rockchip-Rock960-Fix-up-USB-support.patch +Patch15: rockchip-Move-Bob-specific-bits-to-it-s-specific-u-b.patch +Patch16: rk3399-Pinebook-pro-EDP-support.patch BuildRequires: bc BuildRequires: dtc @@ -255,6 +254,7 @@ cp -p board/warp7/README builds/docs/README.warp7 %changelog * Sun Nov 8 2020 Peter Robinson - 2020.10-3 - Fix SPI on Rockchip devices +- Latest Pinebook Pro display patches * Wed Oct 28 2020 Peter Robinson - 2020.10-2 - Fix kernel installs for non EBBR systems From 39205cc2da444a73f116c8ac794fe2d47370c059 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 10 Nov 2020 10:25:30 +0000 Subject: [PATCH 031/271] Fix Keyboard and USB-A ports on Pinebook Pro Signed-off-by: Peter Robinson --- rk3399-Pinebook-pro-EDP-support.patch | 101 -------------------------- rockchip-Pinebook-Pro-Fix-USB.patch | 39 ++++++++++ uboot-tools.spec | 2 + 3 files changed, 41 insertions(+), 101 deletions(-) create mode 100644 rockchip-Pinebook-Pro-Fix-USB.patch diff --git a/rk3399-Pinebook-pro-EDP-support.patch b/rk3399-Pinebook-pro-EDP-support.patch index ae07e11..3fd30cb 100644 --- a/rk3399-Pinebook-pro-EDP-support.patch +++ b/rk3399-Pinebook-pro-EDP-support.patch @@ -738,107 +738,6 @@ Index: u-boot/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi + rockchip,panel = <&edp_panel>; +}; -From patchwork Tue Oct 27 13:21:37 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1388578 -X-Patchwork-Delegate: ykai007@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=fail (p=none dis=none) header.from=rtp-net.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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CLC9J4D9wz9sSf - for ; Wed, 28 Oct 2020 00:24:35 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 164CE82494; - Tue, 27 Oct 2020 14:23:56 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=fail (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 980AA824B8; Tue, 27 Oct 2020 14:23:49 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, - URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) - (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 1369A82430 - for ; Tue, 27 Oct 2020 14:23:45 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org -Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id B8905180904; Tue, 27 Oct 2020 14:23:43 +0100 (CET) -Message-ID: <20201027132235.984153676@rtp-net.org> -User-Agent: quilt/0.66 -Date: Tue, 27 Oct 2020 14:21:37 +0100 -From: Arnaud Patard (Rtp) -To: u-boot@lists.denx.de -Cc: Kever Yang , - Anatolij Gustschin , - Philipp Tomsich , - Peter Robinson , - Samuel Dionne-Riel , - Alper Nebi Yasak , - Arnaud Patard -Subject: [patch v2 06/10] configs/pinebook-pro-rk3399_defconfig: enable - SYS_USB_EVENT_POLL_VIA_INT_QUEUE -References: <20201027132131.016984025@rtp-net.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -The default configuration will use SYS_USB_EVENT_POLL for handling the -usb keyboard and it makes the system really slow (eg slow keypress, -loading kernel/initrd from grub-efi is taking ages). - -Using CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE seems to be improving -things a lot, so use it. - -Tested-by: Samuel Dionne-Riel -Signed-off-by: Arnaud Patard - -Index: u-boot/configs/pinebook-pro-rk3399_defconfig -=================================================================== ---- u-boot.orig/configs/pinebook-pro-rk3399_defconfig -+++ u-boot/configs/pinebook-pro-rk3399_defconfig -@@ -78,6 +78,7 @@ CONFIG_USB_OHCI_GENERIC=y - CONFIG_USB_DWC3=y - CONFIG_ROCKCHIP_USB2_PHY=y - CONFIG_USB_KEYBOARD=y -+CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y - CONFIG_USB_HOST_ETHER=y - CONFIG_USB_ETHER_ASIX=y - CONFIG_USB_ETHER_RTL8152=y - From patchwork Tue Oct 27 13:21:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 diff --git a/rockchip-Pinebook-Pro-Fix-USB.patch b/rockchip-Pinebook-Pro-Fix-USB.patch new file mode 100644 index 0000000..8f81454 --- /dev/null +++ b/rockchip-Pinebook-Pro-Fix-USB.patch @@ -0,0 +1,39 @@ +From 12bc3e2c7c805f989629d1a546276491a7d28922 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Mon, 9 Nov 2020 23:01:19 +0000 +Subject: [PATCH] rockchip: Pinebook Pro: Fix USB + +Improve USB config so keyboard and USB-A ports work. + +Signed-off-by: Peter Robinson +--- + configs/pinebook-pro-rk3399_defconfig | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig +index 1ed54ad0ed..8fbd7280ac 100644 +--- a/configs/pinebook-pro-rk3399_defconfig ++++ b/configs/pinebook-pro-rk3399_defconfig +@@ -55,6 +55,8 @@ CONFIG_SPI_FLASH_WINBOND=y + CONFIG_DM_ETH=y + CONFIG_NVME=y + CONFIG_PCI=y ++CONFIG_PHY_ROCKCHIP_INNO_USB2=y ++CONFIG_PHY_ROCKCHIP_TYPEC=y + CONFIG_DM_PMIC_FAN53555=y + CONFIG_PMIC_RK8XX=y + CONFIG_REGULATOR_PWM=y +@@ -76,8 +78,9 @@ CONFIG_USB_EHCI_GENERIC=y + CONFIG_USB_OHCI_HCD=y + CONFIG_USB_OHCI_GENERIC=y + CONFIG_USB_DWC3=y +-CONFIG_ROCKCHIP_USB2_PHY=y ++CONFIG_USB_DWC3_GENERIC=y + CONFIG_USB_KEYBOARD=y ++CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y + CONFIG_USB_HOST_ETHER=y + CONFIG_USB_ETHER_ASIX=y + CONFIG_USB_ETHER_RTL8152=y +-- +2.28.0 + diff --git a/uboot-tools.spec b/uboot-tools.spec index 9cbd2ad..8b15690 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -39,6 +39,7 @@ Patch13: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch Patch14: rockchip-Rock960-Fix-up-USB-support.patch Patch15: rockchip-Move-Bob-specific-bits-to-it-s-specific-u-b.patch Patch16: rk3399-Pinebook-pro-EDP-support.patch +Patch17: rockchip-Pinebook-Pro-Fix-USB.patch BuildRequires: bc BuildRequires: dtc @@ -255,6 +256,7 @@ cp -p board/warp7/README builds/docs/README.warp7 * Sun Nov 8 2020 Peter Robinson - 2020.10-3 - Fix SPI on Rockchip devices - Latest Pinebook Pro display patches +- Fix Keyboard and USB-A ports on Pinebook Pro * Wed Oct 28 2020 Peter Robinson - 2020.10-2 - Fix kernel installs for non EBBR systems From 63553e6b2a576110e3e088d556dc9fb04e0cf9c0 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 10 Nov 2020 13:22:57 +0000 Subject: [PATCH 032/271] Disable rockchip offset patch for the moment --- uboot-tools.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 8b15690..e2d64d3 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -19,7 +19,7 @@ Source5: 10-devicetree.install Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch # Needed due to issues with shim Patch2: uefi-use-Fedora-specific-path-name.patch -Patch3: rockchip-spl-u-boot-itb-offset.patch +#Patch3: rockchip-spl-u-boot-itb-offset.patch # Board fixes and enablement # RPi - uses RPI firmware device tree for HAT support From 0d5a9f5f0bbb3d4259118b0d9d66161347380a08 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 24 Nov 2020 10:43:24 +0000 Subject: [PATCH 033/271] 2021.01 RC2 Latest Pinebook Pro display patches Initial RPi-400 support patch Update Fedora specific patches --- 10-devicetree.install | 73 ---- rk3399-Pinebook-pro-EDP-support.patch | 343 +++++++++--------- rockchip-Rock960-Fix-up-USB-support.patch | 66 ---- sources | 2 +- uboot-tools.spec | 36 +- ...DT-from-any-partition-on-boot-device.patch | 22 +- uefi-use-Fedora-specific-path-name.patch | 22 +- 7 files changed, 199 insertions(+), 365 deletions(-) delete mode 100755 10-devicetree.install delete mode 100644 rockchip-Rock960-Fix-up-USB-support.patch diff --git a/10-devicetree.install b/10-devicetree.install deleted file mode 100755 index 3345391..0000000 --- a/10-devicetree.install +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/bash - -# set -x - -if [[ "$(uname -m)" == arm* || "$(uname -m)" == aarch64 ]] -then -COMMAND="$1" -KERNEL_VERSION="$2" -#BOOT_DIR_ABS="$3" -#KERNEL_IMAGE="$4" - -[ -f /etc/u-boot.conf ] && source /etc/u-boot.conf || true -[ -z "$FIRMWAREDT" ] || FirmwareDT=$FIRMWAREDT - -if [[ $FirmwareDT == "True" ]] -then - # if we want to use firmware DT we remove symlink to current kernel DT - if [ -h /boot/dtb ]; then - rm -f /boot/dtb - fi - exit 0 -fi - -# Setup a /boot/dtb -> /boot/dtb-$newest_kernel_version symlink so that -# u-boot can find the correct dtb to load. -# -# If invoked to 'add' a new kernel, find the newest based on `sort`ing -# the kernel versions dtb. If 'remove', then follow basically the same -# procedure but exclude the version currently being removed. -# -# The theory of operation here is that, while newer kernels may add new -# dtb nodes and fields, as upstreaming hw support for some particular -# device progresses, it should never make backward incompatible changes. -# So it should always be safe to use a newer dtb with an older kernel. - - list_dtb_versions() { - excluded_version="$1" - for dtbdir in /boot/dtb-*; do - dtbver=${dtbdir#*-} - if [ "$dtbver" != "$excluded_version" ]; then - echo $dtbver - fi - done - } - - setup_dtb_link() { - ver=`list_dtb_versions $1 | sort -r --sort=version | head -1` - if [ -h /boot/dtb ]; then - rm -f /boot/dtb - fi - ln -s dtb-$ver /boot/dtb - } - - ret=0 - case "$COMMAND" in - add) - # If we're adding a kernel we want that version - if [ -h /boot/dtb ]; then - rm -f /boot/dtb - fi - ln -s dtb-$KERNEL_VERSION /boot/dtb - ret=$? - ;; - remove) - setup_dtb_link $KERNEL_VERSION - ret=$? - ;; - esac - exit $ret -else - # Just exit on non ARM - exit 0 -fi diff --git a/rk3399-Pinebook-pro-EDP-support.patch b/rk3399-Pinebook-pro-EDP-support.patch index 3fd30cb..1851fcd 100644 --- a/rk3399-Pinebook-pro-EDP-support.patch +++ b/rk3399-Pinebook-pro-EDP-support.patch @@ -1,34 +1,34 @@ -From patchwork Tue Oct 27 13:21:32 2020 +From patchwork Fri Nov 20 13:24:22 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1388576 -X-Patchwork-Delegate: ykai007@gmail.com +X-Patchwork-Id: 1403693 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=rtp-net.org -Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CLC8m2r2mz9sV1 - for ; Wed, 28 Oct 2020 00:24:08 +1100 (AEDT) + by ozlabs.org (Postfix) with ESMTPS id 4Ccy8k6NTZz9sT6 + for ; Sat, 21 Nov 2020 00:30:14 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id AD95E823FC; - Tue, 27 Oct 2020 14:23:49 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTP id CA2FF82552; + Fri, 20 Nov 2020 14:29:53 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id 37F7C8249E; Tue, 27 Oct 2020 14:23:47 +0100 (CET) + id F16538232D; Fri, 20 Nov 2020 14:29:46 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, @@ -36,17 +36,17 @@ X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 65DDC81260 - for ; Tue, 27 Oct 2020 14:23:44 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTPS id 379648232D + for ; Fri, 20 Nov 2020 14:29:44 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 166971802C6; Tue, 27 Oct 2020 14:23:43 +0100 (CET) -Message-ID: <20201027132235.729230758@rtp-net.org> + id 29B3C18054C; Fri, 20 Nov 2020 14:29:43 +0100 (CET) +Message-ID: <20201120132823.638207109@rtp-net.org> User-Agent: quilt/0.66 -Date: Tue, 27 Oct 2020 14:21:32 +0100 +Date: Fri, 20 Nov 2020 14:24:22 +0100 From: Arnaud Patard (Rtp) To: u-boot@lists.denx.de Cc: Kever Yang , @@ -56,9 +56,9 @@ Cc: Kever Yang , Samuel Dionne-Riel , Alper Nebi Yasak , Arnaud Patard -Subject: [patch v2 01/10] drivers/video/rockchip/rk_vop.c: Use endpoint - compatible string to find VOP mode -References: <20201027132131.016984025@rtp-net.org> +Subject: [patch v3 1/9] rockchip: video: vop: Use endpoint compatible string + to find VOP mode +References: <20201120132421.500365403@rtp-net.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 @@ -87,7 +87,6 @@ to find the kind of endpoint by comparing the endpoint compatible value. This patch is implementing the more flexible second solution. Signed-off-by: Arnaud Patard -Tested-by: Alper Nebi Yasak Index: u-boot/arch/arm/include/asm/arch-rockchip/vop_rk3288.h =================================================================== @@ -169,38 +168,36 @@ Index: u-boot/drivers/video/rockchip/rk_vop.c disp_uc_plat = dev_get_uclass_platdata(disp); debug("Found device '%s', disp_uc_priv=%p\n", disp->name, disp_uc_plat); -From patchwork Tue Oct 27 13:21:33 2020 +From patchwork Fri Nov 20 13:24:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1388588 -X-Patchwork-Delegate: ykai007@gmail.com +X-Patchwork-Id: 1403700 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=rtp-net.org -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) +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 RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CLCC535Xyz9sV1 - for ; Wed, 28 Oct 2020 00:26:07 +1100 (AEDT) + by ozlabs.org (Postfix) with ESMTPS id 4CcyC43w72z9sTv + for ; Sat, 21 Nov 2020 00:32:16 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id F3D8182517; - Tue, 27 Oct 2020 14:24:08 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTP id F3481825F6; + Fri, 20 Nov 2020 14:30:42 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id 99F18824A7; Tue, 27 Oct 2020 14:23:53 +0100 (CET) + id 32EBC825A4; Fri, 20 Nov 2020 14:29: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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, @@ -209,17 +206,17 @@ Received: from lechat.rtp-net.org (lechat.rtp-net.org [IPv6:2001:bc8:3430:1000::c0f:fee]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 6CEE382496 - for ; Tue, 27 Oct 2020 14:23:45 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTPS id B9D9782384 + for ; Fri, 20 Nov 2020 14:29:44 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 354541806F5; Tue, 27 Oct 2020 14:23:43 +0100 (CET) -Message-ID: <20201027132235.781283753@rtp-net.org> + id 39BC31807FD; Fri, 20 Nov 2020 14:29:43 +0100 (CET) +Message-ID: <20201120132823.697547510@rtp-net.org> User-Agent: quilt/0.66 -Date: Tue, 27 Oct 2020 14:21:33 +0100 +Date: Fri, 20 Nov 2020 14:24:23 +0100 From: Arnaud Patard (Rtp) To: u-boot@lists.denx.de Cc: Kever Yang , @@ -229,8 +226,8 @@ Cc: Kever Yang , Samuel Dionne-Riel , Alper Nebi Yasak , Arnaud Patard -Subject: [patch v2 02/10] drivers/video/rockchip/rk_edp.c: Add rk3399 support -References: <20201027132131.016984025@rtp-net.org> +Subject: [patch v3 2/9] rockchip: video: edp: Add rk3399 support +References: <20201120132421.500365403@rtp-net.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 @@ -259,7 +256,6 @@ on rk3399, so don't try changing the clock at index 1 to rate 0 on rk3399. Signed-off-by: Arnaud Patard -Tested-by: Alper Nebi Yasak Index: u-boot/drivers/video/rockchip/rk_edp.c =================================================================== @@ -325,7 +321,7 @@ Index: u-boot/drivers/video/rockchip/rk_edp.c writel(LDO_OUTPUT_V_SEL_145 | KVCO_DEFALUT | CHG_PUMP_CUR_SEL_5US | V2L_CUR_SEL_1MA, ®s->pll_reg_2); -@@ -1023,6 +1046,8 @@ static int rk_edp_probe(struct udevice * +@@ -1029,6 +1052,8 @@ static int rk_edp_probe(struct udevice * struct display_plat *uc_plat = dev_get_uclass_platdata(dev); struct rk_edp_priv *priv = dev_get_priv(dev); struct rk3288_edp *regs = priv->regs; @@ -334,7 +330,7 @@ Index: u-boot/drivers/video/rockchip/rk_edp.c struct clk clk; int ret; -@@ -1037,16 +1062,17 @@ static int rk_edp_probe(struct udevice * +@@ -1043,16 +1068,17 @@ static int rk_edp_probe(struct udevice * int vop_id = uc_plat->source_id; debug("%s, uc_plat=%p, vop_id=%u\n", __func__, uc_plat, vop_id); @@ -361,7 +357,7 @@ Index: u-boot/drivers/video/rockchip/rk_edp.c ret = clk_get_by_index(uc_plat->src_dev, 0, &clk); if (ret >= 0) { ret = clk_set_rate(&clk, 192000000); -@@ -1059,15 +1085,17 @@ static int rk_edp_probe(struct udevice * +@@ -1065,15 +1091,17 @@ static int rk_edp_probe(struct udevice * } /* grf_edp_ref_clk_sel: from internal 24MHz or 27MHz clock */ @@ -383,7 +379,7 @@ Index: u-boot/drivers/video/rockchip/rk_edp.c rk_edp_init_interrupt(regs); rk_edp_enable_sw_function(regs); ret = rk_edp_init_analog_func(regs); -@@ -1083,8 +1111,25 @@ static const struct dm_display_ops dp_ro +@@ -1089,8 +1117,25 @@ static const struct dm_display_ops dp_ro .enable = rk_edp_enable, }; @@ -427,13 +423,12 @@ Index: u-boot/arch/arm/include/asm/arch-rockchip/edp_rk3288.h /* line_map */ #define LANE3_MAP_LOGIC_LANE_0 (0x0 << 6) -From patchwork Tue Oct 27 13:21:34 2020 +From patchwork Fri Nov 20 13:24:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1388575 -X-Patchwork-Delegate: ykai007@gmail.com +X-Patchwork-Id: 1403694 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org @@ -445,20 +440,19 @@ Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=rtp-net.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 RSA-PSS (4096 bits) server-digest - SHA256) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CLC8l3jS0z9sSG - for ; Wed, 28 Oct 2020 00:23:56 +1100 (AEDT) + by ozlabs.org (Postfix) with ESMTPS id 4Ccy8z1vdvz9sT6 + for ; Sat, 21 Nov 2020 00:30:26 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 4A07082361; - Tue, 27 Oct 2020 14:23:48 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTP id 54C2A825A4; + Fri, 20 Nov 2020 14:30:12 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id 1BE93824A7; Tue, 27 Oct 2020 14:23:47 +0100 (CET) + id 1EC30825AB; Fri, 20 Nov 2020 14:29:47 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, @@ -466,17 +460,17 @@ X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id BEBE082361 - for ; Tue, 27 Oct 2020 14:23:44 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTPS id 6507782366 + for ; Fri, 20 Nov 2020 14:29:44 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 5A45C1808B6; Tue, 27 Oct 2020 14:23:43 +0100 (CET) -Message-ID: <20201027132235.832232313@rtp-net.org> + id 44C66180A3F; Fri, 20 Nov 2020 14:29:43 +0100 (CET) +Message-ID: <20201120132823.748319735@rtp-net.org> User-Agent: quilt/0.66 -Date: Tue, 27 Oct 2020 14:21:34 +0100 +Date: Fri, 20 Nov 2020 14:24:24 +0100 From: Arnaud Patard (Rtp) To: u-boot@lists.denx.de Cc: Kever Yang , @@ -486,9 +480,9 @@ Cc: Kever Yang , Samuel Dionne-Riel , Alper Nebi Yasak , Arnaud Patard -Subject: [patch v2 03/10] drivers/video/rockchip/rk_edp.c: Change interrupt - polarity configuration -References: <20201027132131.016984025@rtp-net.org> +Subject: [patch v3 3/9] ockchip: video: edp: Change interrupt polarity + configuration +References: <20201120132421.500365403@rtp-net.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 @@ -511,7 +505,6 @@ uboot code is setting it to 1. Change the configuration to match the linux configuration Signed-off-by: Arnaud Patard -Tested-by: Alper Nebi Yasak Index: u-boot/arch/arm/include/asm/arch-rockchip/edp_rk3288.h =================================================================== @@ -529,13 +522,12 @@ Index: u-boot/arch/arm/include/asm/arch-rockchip/edp_rk3288.h /* sys_ctl_1 */ #define DET_STA (0x1 << 2) -From patchwork Tue Oct 27 13:21:35 2020 +From patchwork Fri Nov 20 13:24:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1388577 -X-Patchwork-Delegate: ykai007@gmail.com +X-Patchwork-Id: 1403697 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org @@ -549,35 +541,36 @@ 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 RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CLC932V0Bz9sSG - for ; Wed, 28 Oct 2020 00:24:22 +1100 (AEDT) + by ozlabs.org (Postfix) with ESMTPS id 4CcyBG0XK7z9sVC + for ; Sat, 21 Nov 2020 00:31:33 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 129E182496; - Tue, 27 Oct 2020 14:23:55 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTP id 82245825AA; + Fri, 20 Nov 2020 14:30:29 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id 7EA32824BC; Tue, 27 Oct 2020 14:23:49 +0100 (CET) + id A2EE5825BB; Fri, 20 Nov 2020 14:29:54 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) +Received: from lechat.rtp-net.org (lechat.rtp-net.org + [IPv6:2001:bc8:3430:1000::c0f:fee]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id ED572823FC - for ; Tue, 27 Oct 2020 14:23:44 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTPS id BBD6B82591 + for ; Fri, 20 Nov 2020 14:29:44 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 6676F1808BC; Tue, 27 Oct 2020 14:23:43 +0100 (CET) -Message-ID: <20201027132235.883717675@rtp-net.org> + id 6ED14180A47; Fri, 20 Nov 2020 14:29:43 +0100 (CET) +Message-ID: <20201120132823.799855386@rtp-net.org> User-Agent: quilt/0.66 -Date: Tue, 27 Oct 2020 14:21:35 +0100 +Date: Fri, 20 Nov 2020 14:24:25 +0100 From: Arnaud Patard (Rtp) To: u-boot@lists.denx.de Cc: Kever Yang , @@ -587,9 +580,8 @@ Cc: Kever Yang , Samuel Dionne-Riel , Alper Nebi Yasak , Arnaud Patard -Subject: [patch v2 04/10] drivers/video/rockchip/rk_vop.c: Reserve efi fb - memory -References: <20201027132131.016984025@rtp-net.org> +Subject: [patch v3 4/9] ockchip: video: vop: Reserve efi fb memory +References: <20201120132421.500365403@rtp-net.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 @@ -612,7 +604,6 @@ has to be reserved, otherwise it may leads to kernel memory overwrite. Signed-off-by: Arnaud Patard -Tested-by: Alper Nebi Yasak Index: u-boot/drivers/video/rockchip/rk_vop.c =================================================================== @@ -642,56 +633,56 @@ Index: u-boot/drivers/video/rockchip/rk_vop.c /* -From patchwork Tue Oct 27 13:21:36 2020 +From patchwork Fri Nov 20 13:24:26 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1388583 -X-Patchwork-Delegate: ykai007@gmail.com +X-Patchwork-Id: 1403695 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=rtp-net.org -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) +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 RSA-PSS (4096 bits)) + key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest + SHA256) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CLCB85bVhz9sSf - for ; Wed, 28 Oct 2020 00:25:20 +1100 (AEDT) + by ozlabs.org (Postfix) with ESMTPS id 4Ccy9V13SHz9sTL + for ; Sat, 21 Nov 2020 00:30:53 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 1CD88824E5; - Tue, 27 Oct 2020 14:24:01 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTP id 54822825C3; + Fri, 20 Nov 2020 14:30:20 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id 15038824A9; Tue, 27 Oct 2020 14:23:50 +0100 (CET) + id 2796E825A0; Fri, 20 Nov 2020 14:29: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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) +Received: from lechat.rtp-net.org (lechat.rtp-net.org + [IPv6:2001:bc8:3430:1000::c0f:fee]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 16A2C8246A - for ; Tue, 27 Oct 2020 14:23:45 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTPS id E8AB4825A2 + for ; Fri, 20 Nov 2020 14:29:44 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 8FBF11808D1; Tue, 27 Oct 2020 14:23:43 +0100 (CET) -Message-ID: <20201027132235.934181387@rtp-net.org> + id 7FA88180A70; Fri, 20 Nov 2020 14:29:43 +0100 (CET) +Message-ID: <20201120132823.849890740@rtp-net.org> User-Agent: quilt/0.66 -Date: Tue, 27 Oct 2020 14:21:36 +0100 +Date: Fri, 20 Nov 2020 14:24:26 +0100 From: Arnaud Patard (Rtp) To: u-boot@lists.denx.de Cc: Kever Yang , @@ -701,8 +692,8 @@ Cc: Kever Yang , Samuel Dionne-Riel , Alper Nebi Yasak , Arnaud Patard -Subject: [patch v2 05/10] rk3399-pinebook-pro-u-boot.dtsi: Enable edp -References: <20201027132131.016984025@rtp-net.org> +Subject: [patch v3 5/9] rockchip: Pinebook Pro: Enable edp +References: <20201120132421.500365403@rtp-net.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 @@ -729,22 +720,24 @@ Index: u-boot/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi =================================================================== --- u-boot.orig/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi +++ u-boot/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -@@ -49,3 +49,7 @@ - &vdd_log { - regulator-init-microvolt = <950000>; +@@ -20,6 +20,10 @@ + }; }; -+ + +&edp { + rockchip,panel = <&edp_panel>; +}; ++ + &i2c0 { + u-boot,dm-pre-reloc; + }; -From patchwork Tue Oct 27 13:21:38 2020 +From patchwork Fri Nov 20 13:24:27 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1388584 -X-Patchwork-Delegate: ykai007@gmail.com +X-Patchwork-Id: 1403696 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org @@ -759,17 +752,17 @@ Received: from phobos.denx.de (phobos.denx.de (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CLCBN6wXXz9sSG - for ; Wed, 28 Oct 2020 00:25:32 +1100 (AEDT) + by ozlabs.org (Postfix) with ESMTPS id 4Ccy9w51kSz9sT6 + for ; Sat, 21 Nov 2020 00:31:16 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id E86AC824F1; - Tue, 27 Oct 2020 14:24:03 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTP id 39197825D4; + Fri, 20 Nov 2020 14:30:22 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id DED28824A9; Tue, 27 Oct 2020 14:23:51 +0100 (CET) + id 1BDA2825C3; Fri, 20 Nov 2020 14:29: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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, @@ -778,17 +771,17 @@ Received: from lechat.rtp-net.org (lechat.rtp-net.org [IPv6:2001:bc8:3430:1000::c0f:fee]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 51B9D82483 - for ; Tue, 27 Oct 2020 14:23:45 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTPS id E6C7F825A0 + for ; Fri, 20 Nov 2020 14:29:44 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id CD3AC180A2B; Tue, 27 Oct 2020 14:23:43 +0100 (CET) -Message-ID: <20201027132236.036333749@rtp-net.org> + id 98B36180A7D; Fri, 20 Nov 2020 14:29:43 +0100 (CET) +Message-ID: <20201120132823.910975188@rtp-net.org> User-Agent: quilt/0.66 -Date: Tue, 27 Oct 2020 14:21:38 +0100 +Date: Fri, 20 Nov 2020 14:24:27 +0100 From: Arnaud Patard (Rtp) To: u-boot@lists.denx.de Cc: Kever Yang , @@ -798,8 +791,8 @@ Cc: Kever Yang , Samuel Dionne-Riel , Alper Nebi Yasak , Arnaud Patard -Subject: [patch v2 07/10] drivers/pwm/rk_pwm.c: Fix default polarity -References: <20201027132131.016984025@rtp-net.org> +Subject: [patch v3 6/9] rockchip: pwm: Fix default polarity +References: <20201120132421.500365403@rtp-net.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 @@ -826,7 +819,6 @@ Update the code to use PWM_DUTY_POSTIVE | PWM_INACTIVE_NEGATIVE by default instead. Signed-off-by: Arnaud Patard -Tested-by: Alper Nebi Yasak Index: u-boot/drivers/pwm/rk_pwm.c =================================================================== @@ -842,56 +834,55 @@ Index: u-boot/drivers/pwm/rk_pwm.c return 0; } -From patchwork Tue Oct 27 13:21:39 2020 +From patchwork Fri Nov 20 13:24:28 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1388585 -X-Patchwork-Delegate: ykai007@gmail.com +X-Patchwork-Id: 1403702 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=rtp-net.org -Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CLCBc1H6Xz9sSG - for ; Wed, 28 Oct 2020 00:25:44 +1100 (AEDT) + by ozlabs.org (Postfix) with ESMTPS id 4CcyCX6HJRz9sTv + for ; Sat, 21 Nov 2020 00:32:40 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id A78FF824FC; - Tue, 27 Oct 2020 14:24:05 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTP id EE6E482605; + Fri, 20 Nov 2020 14:30:51 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id 038C68248F; Tue, 27 Oct 2020 14:23:52 +0100 (CET) + id 3C66C82591; Fri, 20 Nov 2020 14:30: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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org - [IPv6:2001:bc8:3430:1000::c0f:fee]) +Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 5684482494 - for ; Tue, 27 Oct 2020 14:23:45 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTPS id F3045825AA + for ; Fri, 20 Nov 2020 14:29:44 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id ECF51180ACB; Tue, 27 Oct 2020 14:23:43 +0100 (CET) -Message-ID: <20201027132236.086716818@rtp-net.org> + id B6F29180ACB; Fri, 20 Nov 2020 14:29:43 +0100 (CET) +Message-ID: <20201120132823.962072859@rtp-net.org> User-Agent: quilt/0.66 -Date: Tue, 27 Oct 2020 14:21:39 +0100 +Date: Fri, 20 Nov 2020 14:24:28 +0100 From: Arnaud Patard (Rtp) To: u-boot@lists.denx.de Cc: Kever Yang , @@ -901,9 +892,9 @@ Cc: Kever Yang , Samuel Dionne-Riel , Alper Nebi Yasak , Arnaud Patard -Subject: [patch v2 08/10] drivers/video/rockchip/rk_vop.c: Fix format of - fbbase in debug string -References: <20201027132131.016984025@rtp-net.org> +Subject: [patch v3 7/9] rockchip: video: vop: Fix format of fbbase in debug + string +References: <20201120132421.500365403@rtp-net.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 @@ -926,7 +917,6 @@ is using %lu as format for the framebuffer address, which is not so nice. Change it to %lx. Signed-off-by: Arnaud Patard -Tested-by: Alper Nebi Yasak Index: u-boot/drivers/video/rockchip/rk_vop.c =================================================================== @@ -942,39 +932,36 @@ Index: u-boot/drivers/video/rockchip/rk_vop.c ret = ofnode_read_u32(ep_node, "remote-endpoint", &remote_phandle); -From patchwork Tue Oct 27 13:21:40 2020 +From patchwork Fri Nov 20 13:24:29 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1388579 -X-Patchwork-Delegate: ykai007@gmail.com +X-Patchwork-Id: 1403698 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=rtp-net.org -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) +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 RSA-PSS (4096 bits) server-digest - SHA256) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CLC9j13jpz9sSG - for ; Wed, 28 Oct 2020 00:24:56 +1100 (AEDT) + by ozlabs.org (Postfix) with ESMTPS id 4CcyBb1882z9sT6 + for ; Sat, 21 Nov 2020 00:31:51 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 83485824BC; - Tue, 27 Oct 2020 14:23:57 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTP id C6B40825DF; + Fri, 20 Nov 2020 14:30:31 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id A548C824AD; Tue, 27 Oct 2020 14:23:49 +0100 (CET) + id A7375825B9; Fri, 20 Nov 2020 14:29:58 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, @@ -982,17 +969,17 @@ X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 547EC8248F - for ; Tue, 27 Oct 2020 14:23:45 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTPS id 04A88825A6 + for ; Fri, 20 Nov 2020 14:29:44 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 24EC8180ACE; Tue, 27 Oct 2020 14:23:44 +0100 (CET) -Message-ID: <20201027132236.137690139@rtp-net.org> + id E02FE180ACE; Fri, 20 Nov 2020 14:29:43 +0100 (CET) +Message-ID: <20201120132824.012845278@rtp-net.org> User-Agent: quilt/0.66 -Date: Tue, 27 Oct 2020 14:21:40 +0100 +Date: Fri, 20 Nov 2020 14:24:29 +0100 From: Arnaud Patard (Rtp) To: u-boot@lists.denx.de Cc: Kever Yang , @@ -1002,9 +989,8 @@ Cc: Kever Yang , Samuel Dionne-Riel , Alper Nebi Yasak , Arnaud Patard -Subject: [patch v2 09/10] drivers/video/rockchip/rk_edp.c: Add missing reset - support -References: <20201027132131.016984025@rtp-net.org> +Subject: [patch v3 8/9] rockchip: video: edp: Add missing reset support +References: <20201120132421.500365403@rtp-net.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 @@ -1027,7 +1013,6 @@ add missing support for the eDP reset lines found in the device-tree. Signed-off-by: Arnaud Patard -Tested-by: Alper Nebi Yasak Index: u-boot/drivers/video/rockchip/rk_edp.c =================================================================== @@ -1047,7 +1032,7 @@ Index: u-boot/drivers/video/rockchip/rk_edp.c #include #include #include -@@ -1047,6 +1049,7 @@ static int rk_edp_probe(struct udevice * +@@ -1053,6 +1055,7 @@ static int rk_edp_probe(struct udevice * struct rk_edp_priv *priv = dev_get_priv(dev); struct rk3288_edp *regs = priv->regs; struct rockchip_dp_data *edp_data = (struct rockchip_dp_data *)dev_get_driver_data(dev); @@ -1055,7 +1040,7 @@ Index: u-boot/drivers/video/rockchip/rk_edp.c struct clk clk; int ret; -@@ -1059,6 +1062,25 @@ static int rk_edp_probe(struct udevice * +@@ -1065,6 +1068,25 @@ static int rk_edp_probe(struct udevice * return ret; } @@ -1082,13 +1067,12 @@ Index: u-boot/drivers/video/rockchip/rk_edp.c debug("%s, uc_plat=%p, vop_id=%u\n", __func__, uc_plat, vop_id); -From patchwork Tue Oct 27 13:21:41 2020 +From patchwork Fri Nov 20 13:24:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1388586 -X-Patchwork-Delegate: ykai007@gmail.com +X-Patchwork-Id: 1403699 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org @@ -1102,17 +1086,17 @@ 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 RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CLCBq60Vjz9sSf - for ; Wed, 28 Oct 2020 00:25:55 +1100 (AEDT) + by ozlabs.org (Postfix) with ESMTPS id 4CcyBq0jYrz9sTL + for ; Sat, 21 Nov 2020 00:32:02 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id EE5EB82508; - Tue, 27 Oct 2020 14:24:06 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTP id E40ED825E8; + Fri, 20 Nov 2020 14:30:40 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id 7F9D582494; Tue, 27 Oct 2020 14:23:52 +0100 (CET) + id EB086825AB; Fri, 20 Nov 2020 14:29:58 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, @@ -1121,17 +1105,17 @@ Received: from lechat.rtp-net.org (lechat.rtp-net.org [IPv6:2001:bc8:3430:1000::c0f:fee]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 7009E8249C - for ; Tue, 27 Oct 2020 14:23:45 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTPS id 29B89825A4 + for ; Fri, 20 Nov 2020 14:29:45 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=rtp-net.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 2F20C180AF9; Tue, 27 Oct 2020 14:23:44 +0100 (CET) -Message-ID: <20201027132236.187863854@rtp-net.org> + id 0EC35180AF9; Fri, 20 Nov 2020 14:29:43 +0100 (CET) +Message-ID: <20201120132824.063180167@rtp-net.org> User-Agent: quilt/0.66 -Date: Tue, 27 Oct 2020 14:21:41 +0100 +Date: Fri, 20 Nov 2020 14:24:30 +0100 From: Arnaud Patard (Rtp) To: u-boot@lists.denx.de Cc: Kever Yang , @@ -1141,8 +1125,8 @@ Cc: Kever Yang , Samuel Dionne-Riel , Alper Nebi Yasak , Arnaud Patard -Subject: [patch v2 10/10] drivers/video/rockchip/rk_vop.c: Add reset support -References: <20201027132131.016984025@rtp-net.org> +Subject: [patch v3 9/9] rockchip: videp: vop: Add reset support +References: <20201120132421.500365403@rtp-net.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 @@ -1164,7 +1148,6 @@ In order to ensure that the VOP registers are in correct state, add missing support for the VOP reset lines found in the device-tree Signed-off-by: Arnaud Patard -Tested-by: Alper Nebi Yasak Index: u-boot/drivers/video/rockchip/rk_vop.c =================================================================== diff --git a/rockchip-Rock960-Fix-up-USB-support.patch b/rockchip-Rock960-Fix-up-USB-support.patch deleted file mode 100644 index 5102787..0000000 --- a/rockchip-Rock960-Fix-up-USB-support.patch +++ /dev/null @@ -1,66 +0,0 @@ -From aec6cfccd62e21bdb8686839a22eaff5f8cece1d Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Tue, 29 Sep 2020 13:12:15 +0100 -Subject: [PATCH] rockchip: Rock960: fix up USB support - -Fix up USB config options so keyboards and other USB devices work. ---- - configs/rock960-rk3399_defconfig | 9 ++++++--- - include/configs/rock960_rk3399.h | 2 ++ - 2 files changed, 8 insertions(+), 3 deletions(-) - -diff --git a/configs/rock960-rk3399_defconfig b/configs/rock960-rk3399_defconfig -index 1d997847c2..a5a50785c5 100644 ---- a/configs/rock960-rk3399_defconfig -+++ b/configs/rock960-rk3399_defconfig -@@ -3,12 +3,12 @@ CONFIG_ARCH_ROCKCHIP=y - CONFIG_SYS_TEXT_BASE=0x00200000 - CONFIG_ENV_OFFSET=0x3F8000 - CONFIG_ROCKCHIP_RK3399=y --CONFIG_ROCKCHIP_SPL_RESERVE_IRAM=0x4000 - CONFIG_TARGET_ROCK960_RK3399=y - CONFIG_DEBUG_UART_BASE=0xFF1A0000 - CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_DEFAULT_DEVICE_TREE="rk3399-rock960" - CONFIG_DEBUG_UART=y -+CONFIG_USE_PREBOOT=y - CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rock960.dtb" - CONFIG_MISC_INIT_R=y - CONFIG_DISPLAY_BOARDINFO_LATE=y -@@ -41,6 +41,8 @@ CONFIG_MMC_SDHCI_ROCKCHIP=y - CONFIG_DM_ETH=y - CONFIG_NVME=y - CONFIG_PCI=y -+CONFIG_PHY_ROCKCHIP_INNO_USB2=y -+CONFIG_PHY_ROCKCHIP_TYPEC=y - CONFIG_PMIC_RK8XX=y - CONFIG_REGULATOR_PWM=y - CONFIG_REGULATOR_RK8XX=y -@@ -54,10 +56,11 @@ CONFIG_USB_XHCI_HCD=y - CONFIG_USB_XHCI_DWC3=y - CONFIG_USB_EHCI_HCD=y - CONFIG_USB_EHCI_GENERIC=y -+CONFIG_USB_OHCI_HCD=y -+CONFIG_USB_OHCI_GENERIC=y - CONFIG_USB_DWC3=y --CONFIG_ROCKCHIP_USB2_PHY=y -+CONFIG_DM_KEYBOARD=y - CONFIG_USB_KEYBOARD=y --CONFIG_USB_GADGET=y - CONFIG_USB_HOST_ETHER=y - CONFIG_USB_ETHER_ASIX=y - CONFIG_USB_ETHER_ASIX88179=y -diff --git a/include/configs/rock960_rk3399.h b/include/configs/rock960_rk3399.h -index c6f9122154..2edad71028 100644 ---- a/include/configs/rock960_rk3399.h -+++ b/include/configs/rock960_rk3399.h -@@ -15,4 +15,6 @@ - - #define SDRAM_BANK_SIZE (2UL << 30) - -+#define CONFIG_USB_OHCI_NEW -+#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 2 - #endif --- -2.26.2 - diff --git a/sources b/sources index 532714c..2551a01 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2020.10.tar.bz2) = fd26534f2d72ffc3167919c32067c550636f6a4ee5fead6937e2583ba4ff6165e88b8b50fbbddde7354a8c42701433d0cb2ce982e43c014db60b08415288baf9 +SHA512 (u-boot-2021.01-rc2.tar.bz2) = ac21ed6ce160de377a8ea5750cd617f1c6d6e2b9508c8999fafb641e210e3bd030dcd26cea38259639c45ae0d0b9fda6d1007c547fdee002d8d946d6fb1952bb diff --git a/uboot-tools.spec b/uboot-tools.spec index e2d64d3..39a089a 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -#global candidate rc5 +%global candidate rc2 Name: uboot-tools -Version: 2020.10 -Release: 3%{?candidate:.%{candidate}}%{?dist} +Version: 2021.01 +Release: 0.1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -12,7 +12,6 @@ Source1: arm-boards Source2: arm-chromebooks Source3: aarch64-boards Source4: aarch64-chromebooks -Source5: 10-devicetree.install # Fedoraisms patches # Needed to find DT on boot partition that's not the first partition @@ -23,7 +22,8 @@ Patch2: uefi-use-Fedora-specific-path-name.patch # Board fixes and enablement # RPi - uses RPI firmware device tree for HAT support -Patch5: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch +Patch4: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch +Patch5: rpi-Add-identifier-for-the-new-RPi400.patch # Tegra improvements Patch6: arm-tegra-define-fdtfile-option-for-distro-boot.patch Patch7: arm-add-BOOTENV_EFI_SET_FDTFILE_FALLBACK-for-tegra186-be.patch @@ -36,10 +36,9 @@ Patch11: 0001-Fixes-for-AllWinner-ethernet-network-interfaces.patch Patch12: 0001-Fix-BeagleAI-detection.patch # Rockchips improvements Patch13: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch -Patch14: rockchip-Rock960-Fix-up-USB-support.patch -Patch15: rockchip-Move-Bob-specific-bits-to-it-s-specific-u-b.patch -Patch16: rk3399-Pinebook-pro-EDP-support.patch -Patch17: rockchip-Pinebook-Pro-Fix-USB.patch +Patch14: rockchip-Move-Bob-specific-bits-to-it-s-specific-u-b.patch +Patch15: rk3399-Pinebook-pro-EDP-support.patch +Patch16: rockchip-Pinebook-Pro-Fix-USB.patch BuildRequires: bc BuildRequires: dtc @@ -68,13 +67,7 @@ BuildRequires: vboot-utils %ifarch aarch64 BuildRequires: arm-trusted-firmware-armv8 %endif - Requires: dtc -Requires: systemd -%ifarch aarch64 %{arm} -Obsoletes: uboot-images-elf < 2019.07 -Provides: uboot-images-elf < 2019.07 -%endif %description This package contains a few U-Boot utilities - mkimage for creating boot images @@ -83,7 +76,6 @@ and fw_printenv/fw_setenv for manipulating the boot environment variables. %ifarch aarch64 %package -n uboot-images-armv8 Summary: U-Boot firmware images for aarch64 boards -Requires: uboot-tools BuildArch: noarch %description -n uboot-images-armv8 @@ -93,7 +85,6 @@ U-Boot firmware binaries for aarch64 boards %ifarch %{arm} %package -n uboot-images-armv7 Summary: U-Boot firmware images for armv7 boards -Requires: uboot-tools BuildArch: noarch %description -n uboot-images-armv7 @@ -210,10 +201,6 @@ install -p -m 0755 builds/tools/env/fw_printenv $RPM_BUILD_ROOT%{_bindir} install -p -m 0644 tools/env/fw_env.config $RPM_BUILD_ROOT%{_sysconfdir} -# systemd kernel-install script for device tree -mkdir -p $RPM_BUILD_ROOT/lib/kernel/install.d/ -install -p -m 0755 %{SOURCE5} $RPM_BUILD_ROOT/lib/kernel/install.d/ - # Copy sone useful docs over mkdir -p builds/docs cp -p board/hisilicon/hikey/README builds/docs/README.hikey @@ -238,7 +225,6 @@ cp -p board/warp7/README builds/docs/README.warp7 %doc doc/board/amlogic/ doc/board/rockchip/ %{_bindir}/* %{_mandir}/man1/mkimage.1* -/lib/kernel/install.d/10-devicetree.install %dir %{_datadir}/uboot/ %config(noreplace) %{_sysconfdir}/fw_env.config @@ -253,6 +239,12 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Sun Nov 22 2020 Peter Robinson - 2021.01-0.1.rc2 +- Update to 2021.01 RC2 +- Latest Pinebook Pro display patches +- Initial RPi-400 support patch +- Update Fedora specific patches + * Sun Nov 8 2020 Peter Robinson - 2020.10-3 - Fix SPI on Rockchip devices - Latest Pinebook Pro display patches diff --git a/uefi-distro-load-FDT-from-any-partition-on-boot-device.patch b/uefi-distro-load-FDT-from-any-partition-on-boot-device.patch index c5ecb61..9d70978 100644 --- a/uefi-distro-load-FDT-from-any-partition-on-boot-device.patch +++ b/uefi-distro-load-FDT-from-any-partition-on-boot-device.patch @@ -1,6 +1,6 @@ -From 67c05a07288ef24b3ac9d013f35a0868d26a34c7 Mon Sep 17 00:00:00 2001 +From 7f91e98f42f620684fc5a1e918e24cfb838a12c5 Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Tue, 18 Jun 2019 11:51:21 +0100 +Date: Tue, 24 Nov 2020 10:35:48 +0000 Subject: [PATCH 1/2] distro: load FDT from any partition on boot device In the EFI_LOADER boot path, we were only checking the FAT partition @@ -22,19 +22,17 @@ knows) and SoC/board specific ${fdtfile} (which grub does not know). Signed-off-by: Rob Clark Signed-off-by: Peter Robinson --- - include/config_distro_bootcmd.h | 34 ++++++++++++++++++++++----------- - 1 file changed, 23 insertions(+), 11 deletions(-) + include/config_distro_bootcmd.h | 31 ++++++++++++++++++++++--------- + 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h -index 4993303f4d..f4b3b62fca 100644 +index ff29ef5a90..e6a5267159 100644 --- a/include/config_distro_bootcmd.h +++ b/include/config_distro_bootcmd.h -@@ -138,25 +138,37 @@ - "fi\0" \ - \ +@@ -142,24 +142,37 @@ "load_efi_dtb=" \ -- "load ${devtype} ${devnum}:${distro_bootpart} " \ -- "${fdt_addr_r} ${prefix}${efi_fdtfile}\0" \ + "load ${devtype} ${devnum}:${distro_bootpart} " \ + "${fdt_addr_r} ${prefix}${efi_fdtfile}\0" \ + "load ${devtype} ${devnum}:${dtb_devp} " \ + "${fdt_addr_r} ${prefix}${efi_fdtfile} && " \ + "run boot_efi_binary\0" \ @@ -67,7 +65,7 @@ index 4993303f4d..f4b3b62fca 100644 + "fi;" \ + "done; " \ + "done; " \ -+ "run boot_efi_binary\0" \ + "run boot_efi_bootmgr;" \ + "scan_dev_for_efi=" \ "if test -e ${devtype} ${devnum}:${distro_bootpart} " \ "efi/boot/"BOOTEFI_NAME"; then " \ @@ -79,5 +77,5 @@ index 4993303f4d..f4b3b62fca 100644 "fi; " \ "setenv efi_fdtfile\0" -- -2.21.0 +2.28.0 diff --git a/uefi-use-Fedora-specific-path-name.patch b/uefi-use-Fedora-specific-path-name.patch index f51f79c..6eb691e 100644 --- a/uefi-use-Fedora-specific-path-name.patch +++ b/uefi-use-Fedora-specific-path-name.patch @@ -1,6 +1,6 @@ -From 3cc3f7de06dcf9614554d63b159f0cd6710b96b0 Mon Sep 17 00:00:00 2001 +From 26b8c1e30342515e252ebf779c79b7bbe1d91747 Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Tue, 18 Jun 2019 12:08:57 +0100 +Date: Tue, 24 Nov 2020 10:37:28 +0000 Subject: [PATCH 2/2] use Fedora specific EFI path/name Signed-off-by: Peter Robinson @@ -9,7 +9,7 @@ Signed-off-by: Peter Robinson 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h -index f4b3b62fca..2dc8be9815 100644 +index e6a5267159..f8c4f58907 100644 --- a/include/config_distro_bootcmd.h +++ b/include/config_distro_bootcmd.h @@ -92,9 +92,9 @@ @@ -24,27 +24,27 @@ index f4b3b62fca..2dc8be9815 100644 #elif defined(CONFIG_X86_RUN_32BIT) #define BOOTEFI_NAME "bootia32.efi" #elif defined(CONFIG_X86_RUN_64BIT) -@@ -130,7 +130,7 @@ - "bootefi bootmgr ${fdtcontroladdr};" \ - "fi;" \ +@@ -132,7 +132,7 @@ + \ + "boot_efi_binary=" \ "load ${devtype} ${devnum}:${distro_bootpart} " \ - "${kernel_addr_r} efi/boot/"BOOTEFI_NAME"; " \ + "${kernel_addr_r} efi/fedora/"BOOTEFI_NAME"; " \ "if fdt addr ${fdt_addr_r}; then " \ "bootefi ${kernel_addr_r} ${fdt_addr_r};" \ "else " \ -@@ -165,9 +165,9 @@ - "run boot_efi_binary\0" \ +@@ -169,9 +169,9 @@ + "run boot_efi_bootmgr;" \ "scan_dev_for_efi=" \ "if test -e ${devtype} ${devnum}:${distro_bootpart} " \ - "efi/boot/"BOOTEFI_NAME"; then " \ -+ "efi/fedora/"BOOTEFI_NAME"; then " \ ++ "efi/fedora/"BOOTEFI_NAME"; then " \ "echo Found EFI removable media binary " \ - "efi/boot/"BOOTEFI_NAME"; " \ -+ "efi/fedora/"BOOTEFI_NAME"; " \ ++ "efi/fedora/"BOOTEFI_NAME"; " \ "run scan_dev_for_dtb; " \ "echo EFI LOAD FAILED: continuing...; " \ "fi; " \ -- -2.21.0 +2.28.0 From 1c8ae2917fc3e155f6dd770af54f1a4202450133 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 24 Nov 2020 10:48:10 +0000 Subject: [PATCH 034/271] add rpi400 patch --- rpi-Add-identifier-for-the-new-RPi400.patch | 1508 +++++++++++++++++++ 1 file changed, 1508 insertions(+) create mode 100644 rpi-Add-identifier-for-the-new-RPi400.patch diff --git a/rpi-Add-identifier-for-the-new-RPi400.patch b/rpi-Add-identifier-for-the-new-RPi400.patch new file mode 100644 index 0000000..eb8ec31 --- /dev/null +++ b/rpi-Add-identifier-for-the-new-RPi400.patch @@ -0,0 +1,1508 @@ +From patchwork Thu Nov 19 17:48:15 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Nicolas Saenz Julienne +X-Patchwork-Id: 1403195 +X-Patchwork-Delegate: matthias.bgg@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=suse.de +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4CcRyK4z4fz9sTR + for ; Fri, 20 Nov 2020 04:49:25 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 350D882578; + Thu, 19 Nov 2020 18:49:06 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 0C6CC8258E; Thu, 19 Nov 2020 18:49:05 +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=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id F2DC482384 + for ; Thu, 19 Nov 2020 18:49:01 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=nsaenzjulienne@suse.de +Received: from relay2.suse.de (unknown [195.135.221.27]) + by mx2.suse.de (Postfix) with ESMTP id 80AEDACC6; + Thu, 19 Nov 2020 17:49:01 +0000 (UTC) +From: Nicolas Saenz Julienne +To: u-boot@lists.denx.de, bmeng.cn@gmail.com, sjg@chromium.org, marex@denx.de +Cc: mbrugger@suse.com, m.szyprowski@samsung.com, s.nawrocki@samsung.com, + swarren@wwwdotorg.org, peng.fan@nxp.com, + Nicolas Saenz Julienne +Subject: [PATCH 1/8] rpi: Add identifier for the new RPi400 +Date: Thu, 19 Nov 2020 18:48:15 +0100 +Message-Id: <20201119174820.7820-2-nsaenzjulienne@suse.de> +X-Mailer: git-send-email 2.29.2 +In-Reply-To: <20201119174820.7820-1-nsaenzjulienne@suse.de> +References: <20201119174820.7820-1-nsaenzjulienne@suse.de> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +The Raspberry Pi Foundation released the new RPi400 which we want to +detect, so we can enable Ethernet on it and know the correct device tree +file name. + +So far the Raspberry Pi foundation is using the RPi4b device-tree file +to boot RPi400. I see no reason not to do the same as they are +completely compatible. + +Signed-off-by: Nicolas Saenz Julienne +--- + board/raspberrypi/rpi/rpi.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c +index 6b1fa5fc14..ce60a24352 100644 +--- a/board/raspberrypi/rpi/rpi.c ++++ b/board/raspberrypi/rpi/rpi.c +@@ -157,6 +157,11 @@ static const struct rpi_model rpi_models_new_scheme[] = { + DTB_DIR "bcm2711-rpi-4-b.dtb", + true, + }, ++ [0x13] = { ++ "400", ++ DTB_DIR "bcm2711-rpi-4-b.dtb", ++ true, ++ }, + }; + + static const struct rpi_model rpi_models_old_scheme[] = { + +From patchwork Thu Nov 19 17:48:16 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Nicolas Saenz Julienne +X-Patchwork-Id: 1403200 +X-Patchwork-Delegate: matthias.bgg@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=suse.de +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4CcRzB2rFTz9s1l + for ; Fri, 20 Nov 2020 04:50:14 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 647BF825AA; + Thu, 19 Nov 2020 18:49:19 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 8A3B282571; Thu, 19 Nov 2020 18:49:09 +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=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 3FBD7823E1 + for ; Thu, 19 Nov 2020 18:49:02 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=nsaenzjulienne@suse.de +Received: from relay2.suse.de (unknown [195.135.221.27]) + by mx2.suse.de (Postfix) with ESMTP id 0360EACEB; + Thu, 19 Nov 2020 17:49:02 +0000 (UTC) +From: Nicolas Saenz Julienne +To: u-boot@lists.denx.de, bmeng.cn@gmail.com, sjg@chromium.org, marex@denx.de +Cc: mbrugger@suse.com, m.szyprowski@samsung.com, s.nawrocki@samsung.com, + swarren@wwwdotorg.org, peng.fan@nxp.com, + Nicolas Saenz Julienne +Subject: [PATCH 2/8] rpi: Add identifier for the new CM4 +Date: Thu, 19 Nov 2020 18:48:16 +0100 +Message-Id: <20201119174820.7820-3-nsaenzjulienne@suse.de> +X-Mailer: git-send-email 2.29.2 +In-Reply-To: <20201119174820.7820-1-nsaenzjulienne@suse.de> +References: <20201119174820.7820-1-nsaenzjulienne@suse.de> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +The Raspberry Pi Foundation released the new Compute Module 4which we +want to detect, so we can enable Ethernet on it and know the correct +device tree file name. + +Note that this sets the Ethernet option to true since the official CM4 +IO board has an Ethernet port. But that might not be the case when using +custom ones. + +Signed-off-by: Nicolas Saenz Julienne +--- +--- + board/raspberrypi/rpi/rpi.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c +index ce60a24352..4ffd23c6ac 100644 +--- a/board/raspberrypi/rpi/rpi.c ++++ b/board/raspberrypi/rpi/rpi.c +@@ -162,6 +162,11 @@ static const struct rpi_model rpi_models_new_scheme[] = { + DTB_DIR "bcm2711-rpi-4-b.dtb", + true, + }, ++ [0x14] = { ++ "Compute Modue 4", ++ DTB_DIR "bcm2711-rpi-cm4.dtb", ++ true, ++ }, + }; + + static const struct rpi_model rpi_models_old_scheme[] = { + +From patchwork Thu Nov 19 17:48:17 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Nicolas Saenz Julienne +X-Patchwork-Id: 1403196 +X-Patchwork-Delegate: matthias.bgg@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=suse.de +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 RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4CcRyb0r6Jz9s1l + for ; Fri, 20 Nov 2020 04:49:43 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id CC8548258E; + Thu, 19 Nov 2020 18:49:11 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id D7281825A1; Thu, 19 Nov 2020 18:49:07 +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=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id B218F8254E + for ; Thu, 19 Nov 2020 18:49:02 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=nsaenzjulienne@suse.de +Received: from relay2.suse.de (unknown [195.135.221.27]) + by mx2.suse.de (Postfix) with ESMTP id 7CC19ACF1; + Thu, 19 Nov 2020 17:49:02 +0000 (UTC) +From: Nicolas Saenz Julienne +To: u-boot@lists.denx.de, bmeng.cn@gmail.com, sjg@chromium.org, marex@denx.de +Cc: mbrugger@suse.com, m.szyprowski@samsung.com, s.nawrocki@samsung.com, + swarren@wwwdotorg.org, peng.fan@nxp.com, + Nicolas Saenz Julienne +Subject: [PATCH 3/8] pci: pcie-brcmstb: Fix inbound window configurations +Date: Thu, 19 Nov 2020 18:48:17 +0100 +Message-Id: <20201119174820.7820-4-nsaenzjulienne@suse.de> +X-Mailer: git-send-email 2.29.2 +In-Reply-To: <20201119174820.7820-1-nsaenzjulienne@suse.de> +References: <20201119174820.7820-1-nsaenzjulienne@suse.de> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +So far we've assumed a fixed configuration for inbound windows as we had +a single user for this controller. But the controller's DMA constraints +were improved starting with BCM2711's B1 revision of the SoC, notably +available in CM4 and Pi400. They allow for wider inbound windows. We can +now cover the whole address space, whereas before we where limited to +the lower 3GB. + +This information is passed to us through DT's 'dma-ranges' property and +it's specially important for us to honor it them since some interactions +with the board's co-processor assume we're doing so (specifically the +XHCI firmware load operation, which is handled by the co-processor after +u-boot has correctly configured the PCIe controller). + +Signed-off-by: Nicolas Saenz Julienne +--- + drivers/pci/pcie_brcmstb.c | 12 +++++------- + 1 file changed, 5 insertions(+), 7 deletions(-) + +diff --git a/drivers/pci/pcie_brcmstb.c b/drivers/pci/pcie_brcmstb.c +index dade79e9c8..f6e8ad0d0a 100644 +--- a/drivers/pci/pcie_brcmstb.c ++++ b/drivers/pci/pcie_brcmstb.c +@@ -432,6 +432,7 @@ static int brcm_pcie_probe(struct udevice *dev) + struct pci_controller *hose = dev_get_uclass_priv(ctlr); + struct brcm_pcie *pcie = dev_get_priv(dev); + void __iomem *base = pcie->base; ++ struct pci_region region; + bool ssc_good = false; + int num_out_wins = 0; + u64 rc_bar2_offset, rc_bar2_size; +@@ -468,13 +469,10 @@ static int brcm_pcie_probe(struct udevice *dev) + MISC_CTRL_SCB_ACCESS_EN_MASK | + MISC_CTRL_CFG_READ_UR_MODE_MASK | + MISC_CTRL_MAX_BURST_SIZE_128); +- /* +- * TODO: When support for other SoCs than BCM2711 is added we may +- * need to use the base address and size(s) provided in the dma-ranges +- * property. +- */ +- rc_bar2_offset = 0; +- rc_bar2_size = 0xc0000000; ++ ++ pci_get_dma_regions(dev, ®ion, 0); ++ rc_bar2_offset = region.bus_start - region.phys_start; ++ rc_bar2_size = 1ULL << fls64(region.size - 1); + + tmp = lower_32_bits(rc_bar2_offset); + u32p_replace_bits(&tmp, brcm_pcie_encode_ibar_size(rc_bar2_size), + +From patchwork Thu Nov 19 17:48:18 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Nicolas Saenz Julienne +X-Patchwork-Id: 1403201 +X-Patchwork-Delegate: matthias.bgg@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=suse.de +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4CcRzP329Pz9s1l + for ; Fri, 20 Nov 2020 04:50:25 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 4AFAA825C6; + Thu, 19 Nov 2020 18:49:21 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id EFDD38258E; Thu, 19 Nov 2020 18:49:09 +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=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 3C8D282552 + for ; Thu, 19 Nov 2020 18:49:03 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=nsaenzjulienne@suse.de +Received: from relay2.suse.de (unknown [195.135.221.27]) + by mx2.suse.de (Postfix) with ESMTP id 01C33ACF5; + Thu, 19 Nov 2020 17:49:03 +0000 (UTC) +From: Nicolas Saenz Julienne +To: u-boot@lists.denx.de, bmeng.cn@gmail.com, sjg@chromium.org, marex@denx.de +Cc: mbrugger@suse.com, m.szyprowski@samsung.com, s.nawrocki@samsung.com, + swarren@wwwdotorg.org, peng.fan@nxp.com, + Nicolas Saenz Julienne +Subject: [PATCH 4/8] dm: Introduce xxx_get_dma_range() +Date: Thu, 19 Nov 2020 18:48:18 +0100 +Message-Id: <20201119174820.7820-5-nsaenzjulienne@suse.de> +X-Mailer: git-send-email 2.29.2 +In-Reply-To: <20201119174820.7820-1-nsaenzjulienne@suse.de> +References: <20201119174820.7820-1-nsaenzjulienne@suse.de> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +Add the follwing functions to get a specific device's DMA ranges: + - dev_get_dma_range() + - ofnode_get_dma_range() + - of_get_dma_range() + - fdt_get_dma_range() +They are specially useful in oder to be able validate a physical address +space range into a bus's and to convert addresses from and to address +spaces. + +Signed-off-by: Nicolas Saenz Julienne +--- + common/fdt_support.c | 72 ++++++++++++++++++++++++++++++++++++++++++ + drivers/core/of_addr.c | 68 +++++++++++++++++++++++++++++++++++++++ + drivers/core/ofnode.c | 9 ++++++ + drivers/core/read.c | 5 +++ + include/dm/of_addr.h | 17 ++++++++++ + include/dm/ofnode.h | 16 ++++++++++ + include/dm/read.h | 6 ++++ + include/fdt_support.h | 14 ++++++++ + 8 files changed, 207 insertions(+) + +diff --git a/common/fdt_support.c b/common/fdt_support.c +index 5ae75df3c6..78dc7906bd 100644 +--- a/common/fdt_support.c ++++ b/common/fdt_support.c +@@ -1342,6 +1342,78 @@ u64 fdt_translate_dma_address(const void *blob, int node_offset, + return __of_translate_address(blob, node_offset, in_addr, "dma-ranges"); + } + ++int fdt_get_dma_range(const void *blob, int node, phys_addr_t *cpu, ++ dma_addr_t *bus, u64 *size) ++{ ++ bool found_dma_ranges = false; ++ const fdt32_t *ranges; ++ int na, ns, pna, pns; ++ int parent = node; ++ u64 cpu_addr; ++ int ret = 0; ++ int len; ++ ++ /* Find the closest dma-ranges property */ ++ while (parent >= 0) { ++ ranges = fdt_getprop(blob, parent, "dma-ranges", &len); ++ ++ /* Ignore empty ranges, they imply no translation required */ ++ if (ranges && len > 0) ++ break; ++ ++ /* Once we find 'dma-ranges', then a missing one is an error */ ++ if (found_dma_ranges && !ranges) { ++ ret = -ENODEV; ++ goto out; ++ } ++ ++ if (ranges) ++ found_dma_ranges = true; ++ ++ parent = fdt_parent_offset(blob, parent); ++ } ++ ++ if (!ranges || parent < 0) { ++ debug("no dma-ranges found for node %s\n", ++ fdt_get_name(blob, node, NULL)); ++ ret = -ENODEV; ++ goto out; ++ } ++ ++ /* switch to that node */ ++ node = parent; ++ parent = fdt_parent_offset(blob, node); ++ if (parent < 0) { ++ printf("Found dma-ranges in root node, shoudln't happen\n"); ++ ret = -EINVAL; ++ goto out; ++ } ++ ++ /* Get the address sizes both for the bus and its parent */ ++ of_match_bus(blob, node)->count_cells(blob, node, &na, &ns); ++ if (!OF_CHECK_COUNTS(na, ns)) { ++ printf("%s: Bad cell count for %s\n", __FUNCTION__, ++ fdt_get_name(blob, node, NULL)); ++ return -EINVAL; ++ goto out; ++ } ++ ++ of_match_bus(blob, parent)->count_cells(blob, parent, &pna, &pns); ++ if (!OF_CHECK_COUNTS(pna, pns)) { ++ printf("%s: Bad cell count for %s\n", __FUNCTION__, ++ fdt_get_name(blob, parent, NULL)); ++ return -EINVAL; ++ goto out; ++ } ++ ++ *bus = fdt_read_number(ranges, na); ++ cpu_addr = fdt_read_number(ranges + na, pna); ++ *cpu = fdt_translate_dma_address(blob, node, (const fdt32_t*)&cpu_addr); ++ *size = fdt_read_number(ranges + na + pna, ns); ++out: ++ return ret; ++} ++ + /** + * fdt_node_offset_by_compat_reg: Find a node that matches compatiable and + * who's reg property matches a physical cpu address +diff --git a/drivers/core/of_addr.c b/drivers/core/of_addr.c +index ca34d84922..8457e04a25 100644 +--- a/drivers/core/of_addr.c ++++ b/drivers/core/of_addr.c +@@ -325,6 +325,74 @@ u64 of_translate_dma_address(const struct device_node *dev, const __be32 *in_add + return __of_translate_address(dev, in_addr, "dma-ranges"); + } + ++int of_get_dma_range(const struct device_node *dev, phys_addr_t *cpu, ++ dma_addr_t *bus, u64 *size) ++{ ++ bool found_dma_ranges = false; ++ struct device_node parent; ++ int na, ns, pna, pns; ++ const __be32 *ranges; ++ int ret = 0; ++ int len; ++ ++ /* Find the closest dma-ranges property */ ++ while (dev) { ++ ranges = of_get_property(dev, "dma-ranges", &len); ++ ++ /* Ignore empty ranges, they imply no translation required */ ++ if (ranges && len > 0) ++ break; ++ ++ /* Once we find 'dma-ranges', then a missing one is an error */ ++ if (found_dma_ranges && !ranges) { ++ ret = -ENODEV; ++ goto out; ++ } ++ ++ if (ranges) ++ found_dma_ranges = true; ++ ++ dev = of_get_parent(dev); ++ } ++ ++ if (!dev || !ranges) { ++ debug("no dma-ranges found for node %s\n", ++ of_node_full_name(dev)); ++ ret = -ENODEV ++ goto out; ++ } ++ ++ /* switch to that node */ ++ parent = of_get_parent(dev); ++ if (!parent) { ++ printf("Found dma-ranges in root node, shoudln't happen\n"); ++ ret = -EINVAL; ++ goto out; ++ } ++ ++ /* Get the address sizes both for the bus and its parent */ ++ of_match_bus(dev)->count_cells(dev, &na, &ns); ++ if (!OF_CHECK_COUNTS(na, ns)) { ++ printf("Bad cell count for %s\n", of_node_full_name(dev)); ++ return -EINVAL; ++ goto out; ++ } ++ ++ of_match_bus(parent)->count_cells(parent, &pna, &pns); ++ if (!OF_CHECK_COUNTS(pna, pns)) { ++ printf("Bad cell count for %s\n", of_node_full_name(parent)); ++ return -EINVAL; ++ goto out; ++ } ++ ++ *bus = of_read_number(ranges, na); ++ *cpu = of_translate_dma_address(dev, of_read_number(ranges + na, pna)); ++ *size = of_read_number(ranges + na + pna, ns); ++out: ++ return ret; ++} ++ ++ + static int __of_address_to_resource(const struct device_node *dev, + const __be32 *addrp, u64 size, unsigned int flags, + const char *name, struct resource *r) +diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c +index a68076bf35..15470d4875 100644 +--- a/drivers/core/ofnode.c ++++ b/drivers/core/ofnode.c +@@ -911,6 +911,15 @@ u64 ofnode_translate_dma_address(ofnode node, const fdt32_t *in_addr) + return fdt_translate_dma_address(gd->fdt_blob, ofnode_to_offset(node), in_addr); + } + ++int ofnode_get_dma_range(ofnode node, phys_addr_t *cpu, dma_addr_t *bus, u64 *size) ++{ ++ if (ofnode_is_np(node)) ++ return of_get_dma_range(ofnode_to_np(node), cpu, bus, size); ++ else ++ return fdt_get_dma_range(gd->fdt_blob, ofnode_to_offset(node), ++ cpu, bus, size); ++} ++ + int ofnode_device_is_compatible(ofnode node, const char *compat) + { + if (ofnode_is_np(node)) +diff --git a/drivers/core/read.c b/drivers/core/read.c +index 076125824c..b835e82be9 100644 +--- a/drivers/core/read.c ++++ b/drivers/core/read.c +@@ -338,6 +338,11 @@ u64 dev_translate_dma_address(const struct udevice *dev, const fdt32_t *in_addr) + return ofnode_translate_dma_address(dev_ofnode(dev), in_addr); + } + ++u64 dev_translate_cpu_address(const struct udevice *dev, const fdt32_t *in_addr) ++{ ++ return ofnode_translate_cpu_address(dev_ofnode(dev), in_addr); ++} ++ + int dev_read_alias_highest_id(const char *stem) + { + if (of_live_active()) +diff --git a/include/dm/of_addr.h b/include/dm/of_addr.h +index 3fa1ffce81..ee21d5cf4f 100644 +--- a/include/dm/of_addr.h ++++ b/include/dm/of_addr.h +@@ -44,6 +44,23 @@ u64 of_translate_address(const struct device_node *no, const __be32 *in_addr); + */ + u64 of_translate_dma_address(const struct device_node *no, const __be32 *in_addr); + ++ ++/** ++ * of_get_dma_range() - get dma-ranges for a specific DT node ++ * ++ * Get DMA ranges for a specifc node, this is useful to perform bus->cpu and ++ * cpu->bus address translations ++ * ++ * @param blob Pointer to device tree blob ++ * @param node_offset Node DT offset ++ * @param cpu Pointer to variable storing the range's cpu address ++ * @param bus Pointer to variable storing the range's bus address ++ * @param size Pointer to variable storing the range's size ++ * @return translated DMA address or OF_BAD_ADDR on error ++ */ ++int of_get_dma_range(const struct device_node *dev, phys_addr_t *cpu, ++ dma_addr_t *bus, u64 *size); ++ + /** + * of_get_address() - obtain an address from a node + * +diff --git a/include/dm/ofnode.h b/include/dm/ofnode.h +index ced7f6ffb2..dc3dd84d9f 100644 +--- a/include/dm/ofnode.h ++++ b/include/dm/ofnode.h +@@ -939,6 +939,22 @@ u64 ofnode_translate_address(ofnode node, const fdt32_t *in_addr); + */ + u64 ofnode_translate_dma_address(ofnode node, const fdt32_t *in_addr); + ++/** ++ * ofnode_get_dma_range() - get dma-ranges for a specific DT node ++ * ++ * Get DMA ranges for a specifc node, this is useful to perform bus->cpu and ++ * cpu->bus address translations ++ * ++ * @param blob Pointer to device tree blob ++ * @param node_offset Node DT offset ++ * @param cpu Pointer to variable storing the range's cpu address ++ * @param bus Pointer to variable storing the range's bus address ++ * @param size Pointer to variable storing the range's size ++ * @return translated DMA address or OF_BAD_ADDR on error ++ */ ++int ofnode_get_dma_range(ofnode node, phys_addr_t *cpu, dma_addr_t *bus, ++ u64 *size); ++ + /** + * ofnode_device_is_compatible() - check if the node is compatible with compat + * +diff --git a/include/dm/read.h b/include/dm/read.h +index 0585eb1228..9e1f3f5f12 100644 +--- a/include/dm/read.h ++++ b/include/dm/read.h +@@ -1004,6 +1004,12 @@ static inline u64 dev_translate_dma_address(const struct udevice *dev, + return ofnode_translate_dma_address(dev_ofnode(dev), in_addr); + } + ++static inline u64 dev_get_dma_range(const struct udevice *dev, phys_addr_t *cpu, ++ dma_addr_t *bus, u64 *size) ++{ ++ return ofnode_get_dma_range(dev_ofnode(dev), cpu, bus, size); ++} ++ + static inline int dev_read_alias_highest_id(const char *stem) + { + if (!CONFIG_IS_ENABLED(OF_LIBFDT)) +diff --git a/include/fdt_support.h b/include/fdt_support.h +index dbbac0fb6a..46eb1dbbb2 100644 +--- a/include/fdt_support.h ++++ b/include/fdt_support.h +@@ -260,6 +260,20 @@ u64 fdt_translate_address(const void *blob, int node_offset, + u64 fdt_translate_dma_address(const void *blob, int node_offset, + const __be32 *in_addr); + ++/** ++ * Get DMA ranges for a specifc node, this is useful to perform bus->cpu and ++ * cpu->bus address translations ++ * ++ * @param blob Pointer to device tree blob ++ * @param node_offset Node DT offset ++ * @param cpu Pointer to variable storing the range's cpu address ++ * @param bus Pointer to variable storing the range's bus address ++ * @param size Pointer to variable storing the range's size ++ * @return translated DMA address or OF_BAD_ADDR on error ++ */ ++int fdt_get_dma_range(const void *blob, int node_offset, phys_addr_t *cpu, ++ dma_addr_t *bus, u64 *size); ++ + int fdt_node_offset_by_compat_reg(void *blob, const char *compat, + phys_addr_t compat_off); + int fdt_alloc_phandle(void *blob); + +From patchwork Thu Nov 19 17:48:19 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Nicolas Saenz Julienne +X-Patchwork-Id: 1403197 +X-Patchwork-Delegate: matthias.bgg@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=suse.de +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4CcRyk3Wgvz9s1l + for ; Fri, 20 Nov 2020 04:49:50 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 7EFFE825A3; + Thu, 19 Nov 2020 18:49:13 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 31A79825A4; Thu, 19 Nov 2020 18:49: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=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id B2CC482563 + for ; Thu, 19 Nov 2020 18:49:03 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=nsaenzjulienne@suse.de +Received: from relay2.suse.de (unknown [195.135.221.27]) + by mx2.suse.de (Postfix) with ESMTP id 7CCA0AD09; + Thu, 19 Nov 2020 17:49:03 +0000 (UTC) +From: Nicolas Saenz Julienne +To: u-boot@lists.denx.de, bmeng.cn@gmail.com, sjg@chromium.org, marex@denx.de +Cc: mbrugger@suse.com, m.szyprowski@samsung.com, s.nawrocki@samsung.com, + swarren@wwwdotorg.org, peng.fan@nxp.com, + Nicolas Saenz Julienne +Subject: [PATCH 5/8] dm: Introduce DMA constraints into the core device model +Date: Thu, 19 Nov 2020 18:48:19 +0100 +Message-Id: <20201119174820.7820-6-nsaenzjulienne@suse.de> +X-Mailer: git-send-email 2.29.2 +In-Reply-To: <20201119174820.7820-1-nsaenzjulienne@suse.de> +References: <20201119174820.7820-1-nsaenzjulienne@suse.de> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +Calculating the DMA offset between a bus address space and CPU's every +time we call phys_to_bus() and bus_to_phys() isn't ideal performance +wise. This information is static and available before initializing the +devices so parse it before the probe call an provide the DMA offset it +in 'struct udevice' for the DMA code to use it. + +Signed-off-by: Nicolas Saenz Julienne +--- + drivers/core/device.c | 24 ++++++++++++++++++++++++ + include/dm/device.h | 1 + + 2 files changed, 25 insertions(+) + +diff --git a/drivers/core/device.c b/drivers/core/device.c +index 4b3dcb3b37..4255bea24d 100644 +--- a/drivers/core/device.c ++++ b/drivers/core/device.c +@@ -421,6 +421,28 @@ fail: + return ret; + } + ++void device_get_dma_constraints(struct udevice *dev) ++{ ++ phys_addr_t cpu; ++ dma_addr_t bus; ++ u64 size; ++ int ret; ++ ++ if (!dev_of_valid(dev)) ++ return; ++ ++ ret = dev_get_dma_range(dev, &cpu, &bus, &size); ++ if (ret) { ++ /* Don't complain if no 'dma-ranges' were found */ ++ if (ret != -ENODEV) ++ dm_warn("%s: failed to get DMA range, %d\n", ++ dev->name, ret); ++ return; ++ } ++ ++ dev->dma_offset = cpu - bus; ++} ++ + int device_probe(struct udevice *dev) + { + const struct driver *drv; +@@ -482,6 +504,8 @@ int device_probe(struct udevice *dev) + goto fail; + } + ++ device_get_dma_constraints(dev); ++ + ret = uclass_pre_probe_device(dev); + if (ret) + goto fail; +diff --git a/include/dm/device.h b/include/dm/device.h +index 5bef484247..59f711e3dd 100644 +--- a/include/dm/device.h ++++ b/include/dm/device.h +@@ -161,6 +161,7 @@ struct udevice { + #ifdef CONFIG_DEVRES + struct list_head devres_head; + #endif ++ u64 dma_offset; + }; + + /* Maximum sequence number supported */ + +From patchwork Thu Nov 19 17:48:20 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Nicolas Saenz Julienne +X-Patchwork-Id: 1403199 +X-Patchwork-Delegate: matthias.bgg@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=suse.de +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4CcRyy5XbHz9sVd + for ; Fri, 20 Nov 2020 04:50:02 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 32DE7825B9; + Thu, 19 Nov 2020 18:49:15 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 0DC4482563; Thu, 19 Nov 2020 18:49:09 +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=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 375DF82571 + for ; Thu, 19 Nov 2020 18:49:04 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=nsaenzjulienne@suse.de +Received: from relay2.suse.de (unknown [195.135.221.27]) + by mx2.suse.de (Postfix) with ESMTP id 0202DAD0B; + Thu, 19 Nov 2020 17:49:04 +0000 (UTC) +From: Nicolas Saenz Julienne +To: u-boot@lists.denx.de, bmeng.cn@gmail.com, sjg@chromium.org, marex@denx.de +Cc: mbrugger@suse.com, m.szyprowski@samsung.com, s.nawrocki@samsung.com, + swarren@wwwdotorg.org, peng.fan@nxp.com, + Nicolas Saenz Julienne +Subject: [PATCH 6/8] dm: Introduce dev_phys_to_bus()/dev_bus_to_phys() +Date: Thu, 19 Nov 2020 18:48:20 +0100 +Message-Id: <20201119174820.7820-7-nsaenzjulienne@suse.de> +X-Mailer: git-send-email 2.29.2 +In-Reply-To: <20201119174820.7820-1-nsaenzjulienne@suse.de> +References: <20201119174820.7820-1-nsaenzjulienne@suse.de> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +These functions, instead of relying on hard-coded platform-specific +address translations, make use of the DMA constraints provided by the DM +core. This allows for per-device translations. + +Signed-off-by: Nicolas Saenz Julienne +--- + include/phys2bus.h | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +diff --git a/include/phys2bus.h b/include/phys2bus.h +index dc9b8e5a25..a380063af4 100644 +--- a/include/phys2bus.h ++++ b/include/phys2bus.h +@@ -21,4 +21,20 @@ static inline unsigned long bus_to_phys(unsigned long bus) + } + #endif + ++#if CONFIG_IS_ENABLED(DM) ++#include ++ ++static inline dma_addr_t dev_phys_to_bus(struct udevice *dev, ++ phys_addr_t phys) ++{ ++ return phys - dev->dma_offset; ++} ++ ++static inline phys_addr_t dev_bus_to_phys(struct udevice *dev, ++ dma_addr_t bus) ++{ ++ return bus + dev->dma_offset; ++} ++#endif ++ + #endif + +From patchwork Thu Nov 19 17:48:21 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Nicolas Saenz Julienne +X-Patchwork-Id: 1403203 +X-Patchwork-Delegate: matthias.bgg@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=suse.de +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4CcRzp2ZpRz9sTR + for ; Fri, 20 Nov 2020 04:50:46 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 2D4E0825D9; + Thu, 19 Nov 2020 18:49:25 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id BFF1B825A3; Thu, 19 Nov 2020 18:49:12 +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=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id B7CCF82586 + for ; Thu, 19 Nov 2020 18:49:04 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=nsaenzjulienne@suse.de +Received: from relay2.suse.de (unknown [195.135.221.27]) + by mx2.suse.de (Postfix) with ESMTP id 7AA0FAD0F; + Thu, 19 Nov 2020 17:49:04 +0000 (UTC) +From: Nicolas Saenz Julienne +To: u-boot@lists.denx.de, bmeng.cn@gmail.com, sjg@chromium.org, marex@denx.de +Cc: mbrugger@suse.com, m.szyprowski@samsung.com, s.nawrocki@samsung.com, + swarren@wwwdotorg.org, peng.fan@nxp.com, + Nicolas Saenz Julienne +Subject: [PATCH 7/8] xhci: translate virtual addresses into the bus's address + space +Date: Thu, 19 Nov 2020 18:48:21 +0100 +Message-Id: <20201119174820.7820-8-nsaenzjulienne@suse.de> +X-Mailer: git-send-email 2.29.2 +In-Reply-To: <20201119174820.7820-1-nsaenzjulienne@suse.de> +References: <20201119174820.7820-1-nsaenzjulienne@suse.de> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +So far we've been content with passing physical addresses when +configuring memory addresses into XHCI controllers, but not all +platforms have buses with transparent mappings. Specifically the +Raspberry Pi 4 might introduce an offset to memory accesses incoming +from its PCIe port. + +Introduce xhci_virt_to_bus() and xhci_bus_to_virt() to cater with these +limitations and make sure we don't break non DM users. + +Signed-off-by: Nicolas Saenz Julienne +--- + drivers/usb/host/xhci-mem.c | 45 +++++++++++++++++++----------------- + drivers/usb/host/xhci-ring.c | 11 +++++---- + drivers/usb/host/xhci.c | 4 ++-- + include/usb/xhci.h | 22 +++++++++++++++++- + 4 files changed, 54 insertions(+), 28 deletions(-) + +diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c +index b002d6f166..e8d435d644 100644 +--- a/drivers/usb/host/xhci-mem.c ++++ b/drivers/usb/host/xhci-mem.c +@@ -110,7 +110,7 @@ static void xhci_scratchpad_free(struct xhci_ctrl *ctrl) + + ctrl->dcbaa->dev_context_ptrs[0] = 0; + +- free((void *)(uintptr_t)le64_to_cpu(ctrl->scratchpad->sp_array[0])); ++ free(xhci_bus_to_virt(ctrl, le64_to_cpu(ctrl->scratchpad->sp_array[0]))); + free(ctrl->scratchpad->sp_array); + free(ctrl->scratchpad); + ctrl->scratchpad = NULL; +@@ -216,8 +216,8 @@ static void *xhci_malloc(unsigned int size) + * @param link_trbs flag to indicate whether to link the trbs or NOT + * @return none + */ +-static void xhci_link_segments(struct xhci_segment *prev, +- struct xhci_segment *next, bool link_trbs) ++static void xhci_link_segments(struct xhci_ctrl *ctrl, struct xhci_segment *prev, ++ struct xhci_segment *next, bool link_trbs) + { + u32 val; + u64 val_64 = 0; +@@ -226,7 +226,7 @@ static void xhci_link_segments(struct xhci_segment *prev, + return; + prev->next = next; + if (link_trbs) { +- val_64 = virt_to_phys(next->trbs); ++ val_64 = xhci_virt_to_bus(ctrl, next->trbs); + prev->trbs[TRBS_PER_SEGMENT-1].link.segment_ptr = + cpu_to_le64(val_64); + +@@ -304,7 +304,8 @@ static struct xhci_segment *xhci_segment_alloc(void) + * @param link_trbs flag to indicate whether to link the trbs or NOT + * @return pointer to the newly created RING + */ +-struct xhci_ring *xhci_ring_alloc(unsigned int num_segs, bool link_trbs) ++struct xhci_ring *xhci_ring_alloc(struct xhci_ctrl *ctrl, unsigned int num_segs, ++ bool link_trbs) + { + struct xhci_ring *ring; + struct xhci_segment *prev; +@@ -327,12 +328,12 @@ struct xhci_ring *xhci_ring_alloc(unsigned int num_segs, bool link_trbs) + next = xhci_segment_alloc(); + BUG_ON(!next); + +- xhci_link_segments(prev, next, link_trbs); ++ xhci_link_segments(ctrl, prev, next, link_trbs); + + prev = next; + num_segs--; + } +- xhci_link_segments(prev, ring->first_seg, link_trbs); ++ xhci_link_segments(ctrl, prev, ring->first_seg, link_trbs); + if (link_trbs) { + /* See section 4.9.2.1 and 6.4.4.1 */ + prev->trbs[TRBS_PER_SEGMENT-1].link.control |= +@@ -354,6 +355,7 @@ static int xhci_scratchpad_alloc(struct xhci_ctrl *ctrl) + struct xhci_hccr *hccr = ctrl->hccr; + struct xhci_hcor *hcor = ctrl->hcor; + struct xhci_scratchpad *scratchpad; ++ uint64_t val_64; + int num_sp; + uint32_t page_size; + void *buf; +@@ -371,8 +373,9 @@ static int xhci_scratchpad_alloc(struct xhci_ctrl *ctrl) + scratchpad->sp_array = xhci_malloc(num_sp * sizeof(u64)); + if (!scratchpad->sp_array) + goto fail_sp2; +- ctrl->dcbaa->dev_context_ptrs[0] = +- cpu_to_le64((uintptr_t)scratchpad->sp_array); ++ ++ val_64 = xhci_virt_to_bus(ctrl, scratchpad->sp_array); ++ ctrl->dcbaa->dev_context_ptrs[0] = cpu_to_le64((uintptr_t)val_64); + + xhci_flush_cache((uintptr_t)&ctrl->dcbaa->dev_context_ptrs[0], + sizeof(ctrl->dcbaa->dev_context_ptrs[0])); +@@ -393,8 +396,8 @@ static int xhci_scratchpad_alloc(struct xhci_ctrl *ctrl) + xhci_flush_cache((uintptr_t)buf, num_sp * page_size); + + for (i = 0; i < num_sp; i++) { +- uintptr_t ptr = (uintptr_t)buf + i * page_size; +- scratchpad->sp_array[i] = cpu_to_le64(ptr); ++ val_64 = xhci_virt_to_bus(ctrl, buf + i * page_size); ++ scratchpad->sp_array[i] = cpu_to_le64(val_64); + } + + xhci_flush_cache((uintptr_t)scratchpad->sp_array, +@@ -484,9 +487,9 @@ int xhci_alloc_virt_device(struct xhci_ctrl *ctrl, unsigned int slot_id) + } + + /* Allocate endpoint 0 ring */ +- virt_dev->eps[0].ring = xhci_ring_alloc(1, true); ++ virt_dev->eps[0].ring = xhci_ring_alloc(ctrl, 1, true); + +- byte_64 = virt_to_phys(virt_dev->out_ctx->bytes); ++ byte_64 = xhci_virt_to_bus(ctrl, virt_dev->out_ctx->bytes); + + /* Point to output device context in dcbaa. */ + ctrl->dcbaa->dev_context_ptrs[slot_id] = cpu_to_le64(byte_64); +@@ -522,15 +525,15 @@ int xhci_mem_init(struct xhci_ctrl *ctrl, struct xhci_hccr *hccr, + return -ENOMEM; + } + +- val_64 = virt_to_phys(ctrl->dcbaa); ++ val_64 = xhci_virt_to_bus(ctrl, ctrl->dcbaa); + /* Set the pointer in DCBAA register */ + xhci_writeq(&hcor->or_dcbaap, val_64); + + /* Command ring control pointer register initialization */ +- ctrl->cmd_ring = xhci_ring_alloc(1, true); ++ ctrl->cmd_ring = xhci_ring_alloc(ctrl, 1, true); + + /* Set the address in the Command Ring Control register */ +- trb_64 = virt_to_phys(ctrl->cmd_ring->first_seg->trbs); ++ trb_64 = xhci_virt_to_bus(ctrl, ctrl->cmd_ring->first_seg->trbs); + val_64 = xhci_readq(&hcor->or_crcr); + val_64 = (val_64 & (u64) CMD_RING_RSVD_BITS) | + (trb_64 & (u64) ~CMD_RING_RSVD_BITS) | +@@ -551,7 +554,7 @@ int xhci_mem_init(struct xhci_ctrl *ctrl, struct xhci_hccr *hccr, + ctrl->ir_set = &ctrl->run_regs->ir_set[0]; + + /* Event ring does not maintain link TRB */ +- ctrl->event_ring = xhci_ring_alloc(ERST_NUM_SEGS, false); ++ ctrl->event_ring = xhci_ring_alloc(ctrl, ERST_NUM_SEGS, false); + ctrl->erst.entries = xhci_malloc(sizeof(struct xhci_erst_entry) * + ERST_NUM_SEGS); + +@@ -560,8 +563,8 @@ int xhci_mem_init(struct xhci_ctrl *ctrl, struct xhci_hccr *hccr, + for (val = 0, seg = ctrl->event_ring->first_seg; + val < ERST_NUM_SEGS; + val++) { +- trb_64 = virt_to_phys(seg->trbs); + struct xhci_erst_entry *entry = &ctrl->erst.entries[val]; ++ trb_64 = xhci_virt_to_bus(ctrl, seg->trbs); + entry->seg_addr = cpu_to_le64(trb_64); + entry->seg_size = cpu_to_le32(TRBS_PER_SEGMENT); + entry->rsvd = 0; +@@ -570,7 +573,7 @@ int xhci_mem_init(struct xhci_ctrl *ctrl, struct xhci_hccr *hccr, + xhci_flush_cache((uintptr_t)ctrl->erst.entries, + ERST_NUM_SEGS * sizeof(struct xhci_erst_entry)); + +- deq = virt_to_phys(ctrl->event_ring->dequeue); ++ deq = xhci_virt_to_bus(ctrl, ctrl->event_ring->dequeue); + + /* Update HC event ring dequeue pointer */ + xhci_writeq(&ctrl->ir_set->erst_dequeue, +@@ -585,7 +588,7 @@ int xhci_mem_init(struct xhci_ctrl *ctrl, struct xhci_hccr *hccr, + /* this is the event ring segment table pointer */ + val_64 = xhci_readq(&ctrl->ir_set->erst_base); + val_64 &= ERST_PTR_MASK; +- val_64 |= virt_to_phys(ctrl->erst.entries) & ~ERST_PTR_MASK; ++ val_64 |= xhci_virt_to_bus(ctrl, ctrl->erst.entries) & ~ERST_PTR_MASK; + + xhci_writeq(&ctrl->ir_set->erst_base, val_64); + +@@ -848,7 +851,7 @@ void xhci_setup_addressable_virt_dev(struct xhci_ctrl *ctrl, + /* EP 0 can handle "burst" sizes of 1, so Max Burst Size field is 0 */ + ep0_ctx->ep_info2 |= cpu_to_le32(MAX_BURST(0) | ERROR_COUNT(3)); + +- trb_64 = virt_to_phys(virt_dev->eps[0].ring->first_seg->trbs); ++ trb_64 = xhci_virt_to_bus(ctrl, virt_dev->eps[0].ring->first_seg->trbs); + ep0_ctx->deq = cpu_to_le64(trb_64 | virt_dev->eps[0].ring->cycle_state); + + /* +diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c +index 13065d7ca9..5a6ad383cd 100644 +--- a/drivers/usb/host/xhci-ring.c ++++ b/drivers/usb/host/xhci-ring.c +@@ -275,10 +275,13 @@ void xhci_queue_command(struct xhci_ctrl *ctrl, u8 *ptr, u32 slot_id, + u32 ep_index, trb_type cmd) + { + u32 fields[4]; +- u64 val_64 = virt_to_phys(ptr); ++ u64 val_64 = 0; + + BUG_ON(prepare_ring(ctrl, ctrl->cmd_ring, EP_STATE_RUNNING)); + ++ if (ptr) ++ val_64 = xhci_virt_to_bus(ctrl, ptr); ++ + fields[0] = lower_32_bits(val_64); + fields[1] = upper_32_bits(val_64); + fields[2] = 0; +@@ -401,7 +404,7 @@ void xhci_acknowledge_event(struct xhci_ctrl *ctrl) + + /* Inform the hardware */ + xhci_writeq(&ctrl->ir_set->erst_dequeue, +- virt_to_phys(ctrl->event_ring->dequeue) | ERST_EHB); ++ xhci_virt_to_bus(ctrl, ctrl->event_ring->dequeue) | ERST_EHB); + } + + /** +@@ -579,7 +582,7 @@ int xhci_bulk_tx(struct usb_device *udev, unsigned long pipe, + u64 addr; + int ret; + u32 trb_fields[4]; +- u64 val_64 = virt_to_phys(buffer); ++ u64 val_64 = xhci_virt_to_bus(ctrl, buffer); + + debug("dev=%p, pipe=%lx, buffer=%p, length=%d\n", + udev, pipe, buffer, length); +@@ -872,7 +875,7 @@ int xhci_ctrl_tx(struct usb_device *udev, unsigned long pipe, + if (length > 0) { + if (req->requesttype & USB_DIR_IN) + field |= TRB_DIR_IN; +- buf_64 = virt_to_phys(buffer); ++ buf_64 = xhci_virt_to_bus(ctrl, buffer); + + trb_fields[0] = lower_32_bits(buf_64); + trb_fields[1] = upper_32_bits(buf_64); +diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c +index 7080f8fabe..d27ac01c83 100644 +--- a/drivers/usb/host/xhci.c ++++ b/drivers/usb/host/xhci.c +@@ -604,7 +604,7 @@ static int xhci_set_configuration(struct usb_device *udev) + ep_ctx[ep_index] = xhci_get_ep_ctx(ctrl, in_ctx, ep_index); + + /* Allocate the ep rings */ +- virt_dev->eps[ep_index].ring = xhci_ring_alloc(1, true); ++ virt_dev->eps[ep_index].ring = xhci_ring_alloc(ctrl, 1, true); + if (!virt_dev->eps[ep_index].ring) + return -ENOMEM; + +@@ -628,7 +628,7 @@ static int xhci_set_configuration(struct usb_device *udev) + cpu_to_le32(MAX_BURST(max_burst) | + ERROR_COUNT(err_count)); + +- trb_64 = virt_to_phys(virt_dev->eps[ep_index].ring->enqueue); ++ trb_64 = xhci_virt_to_bus(ctrl, virt_dev->eps[ep_index].ring->enqueue); + ep_ctx[ep_index]->deq = cpu_to_le64(trb_64 | + virt_dev->eps[ep_index].ring->cycle_state); + +diff --git a/include/usb/xhci.h b/include/usb/xhci.h +index e1d382369a..57e06087a1 100644 +--- a/include/usb/xhci.h ++++ b/include/usb/xhci.h +@@ -16,6 +16,7 @@ + #ifndef HOST_XHCI_H_ + #define HOST_XHCI_H_ + ++#include + #include + #include + #include +@@ -1250,7 +1251,8 @@ int xhci_check_maxpacket(struct usb_device *udev); + void xhci_flush_cache(uintptr_t addr, u32 type_len); + void xhci_inval_cache(uintptr_t addr, u32 type_len); + void xhci_cleanup(struct xhci_ctrl *ctrl); +-struct xhci_ring *xhci_ring_alloc(unsigned int num_segs, bool link_trbs); ++struct xhci_ring *xhci_ring_alloc(struct xhci_ctrl *ctrl, unsigned int num_segs, ++ bool link_trbs); + int xhci_alloc_virt_device(struct xhci_ctrl *ctrl, unsigned int slot_id); + int xhci_mem_init(struct xhci_ctrl *ctrl, struct xhci_hccr *hccr, + struct xhci_hcor *hcor); +@@ -1278,4 +1280,22 @@ extern struct dm_usb_ops xhci_usb_ops; + + struct xhci_ctrl *xhci_get_ctrl(struct usb_device *udev); + ++static inline dma_addr_t xhci_virt_to_bus(struct xhci_ctrl *ctrl, void *addr) ++{ ++#if CONFIG_IS_ENABLED(DM_USB) ++ return dev_phys_to_bus(ctrl->dev, virt_to_phys(addr)); ++#else ++ return phys_to_bus(virt_to_phys(addr)); ++#endif ++} ++ ++static inline void *xhci_bus_to_virt(struct xhci_ctrl *ctrl, dma_addr_t addr) ++{ ++#if CONFIG_IS_ENABLED(DM_USB) ++ return phys_to_virt(dev_bus_to_phys(ctrl->dev, addr)); ++#else ++ return phys_to_virt(bus_to_phys(addr)); ++#endif ++} ++ + #endif /* HOST_XHCI_H_ */ + +From patchwork Thu Nov 19 17:48:22 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Nicolas Saenz Julienne +X-Patchwork-Id: 1403202 +X-Patchwork-Delegate: matthias.bgg@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=suse.de +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4CcRzc5cjwz9s1l + for ; Fri, 20 Nov 2020 04:50:36 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 4A055825D4; + Thu, 19 Nov 2020 18:49:23 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 0FD2E8258E; Thu, 19 Nov 2020 18:49:11 +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=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 3691182573 + for ; Thu, 19 Nov 2020 18:49:05 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=nsaenzjulienne@suse.de +Received: from relay2.suse.de (unknown [195.135.221.27]) + by mx2.suse.de (Postfix) with ESMTP id F38DCAD11; + Thu, 19 Nov 2020 17:49:04 +0000 (UTC) +From: Nicolas Saenz Julienne +To: u-boot@lists.denx.de, bmeng.cn@gmail.com, sjg@chromium.org, marex@denx.de +Cc: mbrugger@suse.com, m.szyprowski@samsung.com, s.nawrocki@samsung.com, + swarren@wwwdotorg.org, peng.fan@nxp.com, + Nicolas Saenz Julienne +Subject: [PATCH 8/8] mmc: Introduce mmc_phys_to_bus()/mmc_bus_to_phys() +Date: Thu, 19 Nov 2020 18:48:22 +0100 +Message-Id: <20201119174820.7820-9-nsaenzjulienne@suse.de> +X-Mailer: git-send-email 2.29.2 +In-Reply-To: <20201119174820.7820-1-nsaenzjulienne@suse.de> +References: <20201119174820.7820-1-nsaenzjulienne@suse.de> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +This will allow us to use DM variants of phys_to_bus()/bus_to_phys() +when relevant. + +Signed-off-by: Nicolas Saenz Julienne +--- + drivers/mmc/sdhci.c | 7 ++++--- + include/mmc.h | 10 ++++++++++ + 2 files changed, 14 insertions(+), 3 deletions(-) + +diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c +index 0628934312..2086d7cdb1 100644 +--- a/drivers/mmc/sdhci.c ++++ b/drivers/mmc/sdhci.c +@@ -19,7 +19,6 @@ + #include + #include + #include +-#include + + static void sdhci_reset(struct sdhci_host *host, u8 mask) + { +@@ -103,7 +102,8 @@ static void sdhci_prepare_dma(struct sdhci_host *host, struct mmc_data *data, + mmc_get_dma_dir(data)); + + if (host->flags & USE_SDMA) { +- sdhci_writel(host, phys_to_bus((ulong)host->start_addr), ++ sdhci_writel(host, ++ mmc_phys_to_bus(host->mmc, (ulong)host->start_addr), + SDHCI_DMA_ADDRESS); + } + #if CONFIG_IS_ENABLED(MMC_SDHCI_ADMA) +@@ -162,7 +162,8 @@ static int sdhci_transfer_data(struct sdhci_host *host, struct mmc_data *data) + start_addr &= + ~(SDHCI_DEFAULT_BOUNDARY_SIZE - 1); + start_addr += SDHCI_DEFAULT_BOUNDARY_SIZE; +- sdhci_writel(host, phys_to_bus((ulong)start_addr), ++ sdhci_writel(host, ++ mmc_phys_to_bus(host->mmc, (ulong)start_addr), + SDHCI_DMA_ADDRESS); + } + } +diff --git a/include/mmc.h b/include/mmc.h +index 1d377e0281..805a3b2215 100644 +--- a/include/mmc.h ++++ b/include/mmc.h +@@ -15,6 +15,7 @@ + #include + #include + #include ++#include + + struct bd_info; + +@@ -977,4 +978,13 @@ static inline enum dma_data_direction mmc_get_dma_dir(struct mmc_data *data) + return data->flags & MMC_DATA_WRITE ? DMA_TO_DEVICE : DMA_FROM_DEVICE; + } + ++static inline dma_addr_t mmc_phys_to_bus(struct mmc *mmc, phys_addr_t addr) ++{ ++#if CONFIG_IS_ENABLED(DM_MMC) ++ return dev_phys_to_bus(mmc->dev, addr); ++#else ++ return phys_to_bus(addr); ++#endif ++} ++ + #endif /* _MMC_H_ */ From f8bd28f34b9c13a293ca86cb4cb11b4986a52834 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 24 Nov 2020 23:40:26 +0000 Subject: [PATCH 035/271] drop tegra devices for the momenet --- aarch64-boards | 3 --- arm-boards | 3 --- 2 files changed, 6 deletions(-) diff --git a/aarch64-boards b/aarch64-boards index e5d4147..ac7a3f8 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -43,9 +43,6 @@ orangepi_win orangepi_zero_plus orangepi_zero_plus2 p212 -p2371-2180 -p2771-0000-500 -p3450-0000 pine64-lts pine64_plus pinebook diff --git a/arm-boards b/arm-boards index bc80bb8..75bba7c 100644 --- a/arm-boards +++ b/arm-boards @@ -56,7 +56,6 @@ inet9f_rev03 inet_q972 Itead_Ibox_A20 jesurun_q5 -jetson-tk1 kc1 Lamobo_R1 libretech_all_h3_cc_h2_plus @@ -101,7 +100,6 @@ orangepi_plus2e orangepi_r1 orangepi_zero origen -paz00 polaroid_mid2809pxe04 pov_protab2_ips9 q8_a13_tablet @@ -126,7 +124,6 @@ sunxi_Gemei_G9 tbs_a711 tinker-rk3288 tinker-s-rk3288 -trimslice udoo udoo_neo usbarmory From 87d65f314f6b3f5289f77d1b2a86e95213126e9b Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 25 Nov 2020 21:30:20 +0000 Subject: [PATCH 036/271] temp drop a few more broken boards --- aarch64-boards | 1 - arm-boards | 4 ---- 2 files changed, 5 deletions(-) diff --git a/aarch64-boards b/aarch64-boards index ac7a3f8..d849833 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -51,7 +51,6 @@ pinephone pinetab pine_h64 poplar -puma-rk3399 rock64-rk3328 rock960-rk3399 rock-pi-4-rk3399 diff --git a/arm-boards b/arm-boards index 75bba7c..335871f 100644 --- a/arm-boards +++ b/arm-boards @@ -63,7 +63,6 @@ Linksprite_pcDuino Linksprite_pcDuino3 Linksprite_pcDuino3_Nano liteboard -marsboard Marsboard_A10 Mele_A1000 Mele_A1000G_quad @@ -108,10 +107,8 @@ q8_a33_tablet_1024x600 q8_a33_tablet_800x480 qemu_arm r7-tv-dongle -riotboard rock rock-pi-n8-rk3288 -rock2 rpi_2 rpi_3_32b rpi_4_32b @@ -125,7 +122,6 @@ tbs_a711 tinker-rk3288 tinker-s-rk3288 udoo -udoo_neo usbarmory UTOO_P66 vexpress_ca15_tc2 From 6623ecd52613674450ad85ee7277003649de4bc9 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 26 Nov 2020 09:13:41 +0000 Subject: [PATCH 037/271] more failures --- arm-boards | 1 - 1 file changed, 1 deletion(-) diff --git a/arm-boards b/arm-boards index 335871f..f4a04d4 100644 --- a/arm-boards +++ b/arm-boards @@ -121,7 +121,6 @@ sunxi_Gemei_G9 tbs_a711 tinker-rk3288 tinker-s-rk3288 -udoo usbarmory UTOO_P66 vexpress_ca15_tc2 From 5fa2e9250cf9cdb39168a205a106ace7f6e59edd Mon Sep 17 00:00:00 2001 From: Javier Martinez Canillas Date: Mon, 14 Dec 2020 09:41:34 +0100 Subject: [PATCH 038/271] Fix a "scan_dev_for_efi" not defined error A previous commit dropped a NUL character at the end of scan_dev_for_dtb definition and this caused scan_dev_for_efi to not be defined. Following error is shown by U-Boot when trying to boot an EFI binary: Scanning mmc 0:2... ## Error: "scan_dev_for_efi" not defined --- uboot-tools.spec | 5 ++++- ...load-FDT-from-any-partition-on-boot-device.patch | 13 +++++++------ uefi-use-Fedora-specific-path-name.patch | 8 ++++---- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 39a089a..31a75ec 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -2,7 +2,7 @@ Name: uboot-tools Version: 2021.01 -Release: 0.1%{?candidate:.%{candidate}}%{?dist} +Release: 0.2%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -239,6 +239,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Mon Dec 14 2020 Javier Martinez Canillas - 2021.01-0.2.rc2 +- Fix a "scan_dev_for_efi" not defined error + * Sun Nov 22 2020 Peter Robinson - 2021.01-0.1.rc2 - Update to 2021.01 RC2 - Latest Pinebook Pro display patches diff --git a/uefi-distro-load-FDT-from-any-partition-on-boot-device.patch b/uefi-distro-load-FDT-from-any-partition-on-boot-device.patch index 9d70978..cc2c4f8 100644 --- a/uefi-distro-load-FDT-from-any-partition-on-boot-device.patch +++ b/uefi-distro-load-FDT-from-any-partition-on-boot-device.patch @@ -1,4 +1,4 @@ -From 7f91e98f42f620684fc5a1e918e24cfb838a12c5 Mon Sep 17 00:00:00 2001 +From cc3700b5c65494547308df395fe63166ff48a1e3 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 24 Nov 2020 10:35:48 +0000 Subject: [PATCH 1/2] distro: load FDT from any partition on boot device @@ -22,11 +22,11 @@ knows) and SoC/board specific ${fdtfile} (which grub does not know). Signed-off-by: Rob Clark Signed-off-by: Peter Robinson --- - include/config_distro_bootcmd.h | 31 ++++++++++++++++++++++--------- - 1 file changed, 22 insertions(+), 9 deletions(-) + include/config_distro_bootcmd.h | 33 +++++++++++++++++++++++---------- + 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h -index ff29ef5a90..e6a5267159 100644 +index ff29ef5a905..769477cd80e 100644 --- a/include/config_distro_bootcmd.h +++ b/include/config_distro_bootcmd.h @@ -142,24 +142,37 @@ @@ -49,6 +49,7 @@ index ff29ef5a90..e6a5267159 100644 - "run load_efi_dtb; " \ - "fi;" \ - "done;" \ +- "run boot_efi_bootmgr;" \ + "part list ${devtype} ${devnum} dtb_devplist; " \ + "env exists dtb_devplist || setenv dtb_devplist " \ + "${distro_bootpart}; " \ @@ -65,7 +66,7 @@ index ff29ef5a90..e6a5267159 100644 + "fi;" \ + "done; " \ + "done; " \ - "run boot_efi_bootmgr;" \ ++ "run boot_efi_bootmgr\0" \ + "scan_dev_for_efi=" \ "if test -e ${devtype} ${devnum}:${distro_bootpart} " \ "efi/boot/"BOOTEFI_NAME"; then " \ @@ -77,5 +78,5 @@ index ff29ef5a90..e6a5267159 100644 "fi; " \ "setenv efi_fdtfile\0" -- -2.28.0 +2.29.2 diff --git a/uefi-use-Fedora-specific-path-name.patch b/uefi-use-Fedora-specific-path-name.patch index 6eb691e..a7f6a16 100644 --- a/uefi-use-Fedora-specific-path-name.patch +++ b/uefi-use-Fedora-specific-path-name.patch @@ -1,4 +1,4 @@ -From 26b8c1e30342515e252ebf779c79b7bbe1d91747 Mon Sep 17 00:00:00 2001 +From d8fcb72d566b0ebca1613555ac13c0798817487e Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 24 Nov 2020 10:37:28 +0000 Subject: [PATCH 2/2] use Fedora specific EFI path/name @@ -9,7 +9,7 @@ Signed-off-by: Peter Robinson 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h -index e6a5267159..f8c4f58907 100644 +index 769477cd80e..22ce3685758 100644 --- a/include/config_distro_bootcmd.h +++ b/include/config_distro_bootcmd.h @@ -92,9 +92,9 @@ @@ -34,7 +34,7 @@ index e6a5267159..f8c4f58907 100644 "bootefi ${kernel_addr_r} ${fdt_addr_r};" \ "else " \ @@ -169,9 +169,9 @@ - "run boot_efi_bootmgr;" \ + "run boot_efi_bootmgr\0" \ "scan_dev_for_efi=" \ "if test -e ${devtype} ${devnum}:${distro_bootpart} " \ - "efi/boot/"BOOTEFI_NAME"; then " \ @@ -46,5 +46,5 @@ index e6a5267159..f8c4f58907 100644 "echo EFI LOAD FAILED: continuing...; " \ "fi; " \ -- -2.28.0 +2.29.2 From ce18c50c5de8b82d69e393353d9ff438f1e59e5a Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 15 Dec 2020 18:07:49 +0000 Subject: [PATCH 039/271] 2021.01 RC3, latest proposed RPi-400 patch, UEFI boot fixes --- AllWinner-PinePhone.patch | 1843 ----------------- AllWinner-PineTab.patch | 493 ----- AllWinner-UpstreamSync.patch | 1297 ------------ ...erry-Pi-400-Compute-Module-4-support.patch | 1277 +++++++++--- aarch64-boards | 4 + arm-boards | 9 + ...b-specific-bits-to-it-s-specific-u-b.patch | 104 - rockchip-Pinebook-Pro-Fix-USB.patch | 39 - sources | 2 +- uboot-tools.spec | 20 +- 10 files changed, 1032 insertions(+), 4056 deletions(-) delete mode 100644 AllWinner-PinePhone.patch delete mode 100644 AllWinner-UpstreamSync.patch rename rpi-Add-identifier-for-the-new-RPi400.patch => Raspberry-Pi-400-Compute-Module-4-support.patch (52%) delete mode 100644 rockchip-Move-Bob-specific-bits-to-it-s-specific-u-b.patch delete mode 100644 rockchip-Pinebook-Pro-Fix-USB.patch diff --git a/AllWinner-PinePhone.patch b/AllWinner-PinePhone.patch deleted file mode 100644 index baa7119..0000000 --- a/AllWinner-PinePhone.patch +++ /dev/null @@ -1,1843 +0,0 @@ -From patchwork Thu Sep 3 05:07:09 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Samuel Holland -X-Patchwork-Id: 1356315 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=sholland.org -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=sholland.org header.i=@sholland.org header.a=rsa-sha256 - header.s=fm3 header.b=buHTSW+5; - dkim=pass (2048-bit key; - unprotected) header.d=messagingengine.com header.i=@messagingengine.com - header.a=rsa-sha256 header.s=fm3 header.b=soUNU+zi; - dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4Bhpk04dbHz9sTR - for ; Thu, 3 Sep 2020 15:08:40 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id B8046822FB; - Thu, 3 Sep 2020 07:07:34 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=sholland.org -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=sholland.org header.i=@sholland.org - header.b="buHTSW+5"; dkim=pass (2048-bit key; - unprotected) header.d=messagingengine.com header.i=@messagingengine.com - header.b="soUNU+zi"; dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 5B11B822E1; Thu, 3 Sep 2020 07:07:27 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, - SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no - version=3.4.2 -Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com - [66.111.4.26]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id AF853822D8 - for ; Thu, 3 Sep 2020 07:07:19 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=sholland.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=samuel@sholland.org -Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) - by mailout.nyi.internal (Postfix) with ESMTP id 6D2045C0190; - Thu, 3 Sep 2020 01:07:18 -0400 (EDT) -Received: from mailfrontend2 ([10.202.2.163]) - by compute3.internal (MEProxy); Thu, 03 Sep 2020 01:07:18 -0400 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= - from:to:cc:subject:date:message-id:in-reply-to:references - :mime-version:content-transfer-encoding; s=fm3; bh=U4jA0nvRK7Czr - dgeNIS5gDY5tElSJ2feLLbT7NYhO6s=; b=buHTSW+5/tt6GjGA2vOU6Ivto0Cdk - fngE70LZVaDreoNlTLgMANhhiJzWyBYb3mjmMUR2EHBJeYNdzuOYpRL/hBztVsqa - B+hq24fQr6OsXlroOC+9DIkrBtgkfEXrmaHqyO9jP0/BBHQUHBAjJr6RkItNOJqs - tL5255/XbQw05IUwTN+fwQs+x1qtv9dPXiYVdELfBIhuTKSyQJaKqBLEO3mPFxRz - PIISy3OQi1lzdrJdmurLcp6DfbzqB9nJfuD0CtslCI1Bu09KsMgr7sn/mxITx0Vy - qyWz9p5t9Vr2A3xct652aED771i3Ra6UK+UYoSayMMMyCG4g+rb0DzJhQ== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= - messagingengine.com; h=cc:content-transfer-encoding:date:from - :in-reply-to:message-id:mime-version:references:subject:to - :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= - fm3; bh=U4jA0nvRK7CzrdgeNIS5gDY5tElSJ2feLLbT7NYhO6s=; b=soUNU+zi - uXuVOTwtphqr7B11oSRvrTR5EMY1G0DCfVWT5s+K/e9h3V/TodXW0tbddWCX1Qhf - 2EbJfg61h8/UFqtAFCwuDtcIaxiykHsoFtLgyvzZrBQIoWF9LF/YDvRSmyDr1lyV - hY8s0GIVyKaAXjkwwoUEaknhWhGHrbVOeWZTWUnB9W1++iN+4uXoWlMohB72yOlk - 3TZ7XBSJLe2Nd4NxPuirhOfuGpWFLHiTQ/cSUcvZW+8DPmy+hZL/KNYEgY4NjN0I - uAZwnZNHCO2j+82cPGETrg4u4iziby3clWWhVNK04wJCiBfVWlkQgL5VP4ORJUzp - E1csDeRCXdGAgw== -X-ME-Sender: - -X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudegtddgleduucetufdoteggodetrfdotf - fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen - uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne - cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefurghmuhgv - lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf - frrghtthgvrhhnpeduhfejfedvhffgfeehtefghfeiiefgfeehgfdvvdevfeegjeehjedv - gfejheeuieenucfkphepjedtrddufeehrddugeekrdduhedunecuvehluhhsthgvrhfuih - iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgrmhhuvghlsehshhholhhlrghn - ugdrohhrgh -X-ME-Proxy: - - - -Received: from titanium.stl.sholland.net - (70-135-148-151.lightspeed.stlsmo.sbcglobal.net [70.135.148.151]) - by mail.messagingengine.com (Postfix) with ESMTPA id B6856306005E; - Thu, 3 Sep 2020 01:07:17 -0400 (EDT) -From: Samuel Holland -To: Jagan Teki , Maxime Ripard -Cc: Andre Przywara , - Peter Robinson , u-boot@lists.denx.de, - Samuel Holland -Subject: [PATCH 1/8] sunxi: board: Use a more descriptive variable name -Date: Thu, 3 Sep 2020 00:07:09 -0500 -Message-Id: <20200903050716.48488-2-samuel@sholland.org> -X-Mailer: git-send-email 2.26.2 -In-Reply-To: <20200903050716.48488-1-samuel@sholland.org> -References: <20200903050716.48488-1-samuel@sholland.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -The variable "cmp_str" always leaves me wondering if it is the DT name -of the current board (yes) or DT name in the FIT config entry (no). - -In preparation for expanding the functionality here, rename it to -something that obviously means "this is the DT name we are looking for". - -Signed-off-by: Samuel Holland ---- - board/sunxi/board.c | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/board/sunxi/board.c b/board/sunxi/board.c -index 71e2b758a3e..674e6816d2d 100644 ---- a/board/sunxi/board.c -+++ b/board/sunxi/board.c -@@ -892,14 +892,14 @@ int ft_board_setup(void *blob, struct bd_info *bd) - int board_fit_config_name_match(const char *name) - { - struct boot_file_head *spl = get_spl_header(SPL_DT_HEADER_VERSION); -- const char *cmp_str = (const char *)spl; -+ const char *best_dt_name = (const char *)spl; - - /* Check if there is a DT name stored in the SPL header and use that. */ - if (spl != INVALID_SPL_HEADER && spl->dt_name_offset) { -- cmp_str += spl->dt_name_offset; -+ best_dt_name += spl->dt_name_offset; - } else { - #ifdef CONFIG_DEFAULT_DEVICE_TREE -- cmp_str = CONFIG_DEFAULT_DEVICE_TREE; -+ best_dt_name = CONFIG_DEFAULT_DEVICE_TREE; - #else - return 0; - #endif -@@ -907,15 +907,15 @@ int board_fit_config_name_match(const char *name) - - #ifdef CONFIG_PINE64_DT_SELECTION - /* Differentiate the two Pine64 board DTs by their DRAM size. */ -- if (strstr(name, "-pine64") && strstr(cmp_str, "-pine64")) { -+ if (strstr(name, "-pine64") && strstr(best_dt_name, "-pine64")) { - if ((gd->ram_size > 512 * 1024 * 1024)) - return !strstr(name, "plus"); - else - return !!strstr(name, "plus"); - } else { -- return strcmp(name, cmp_str); -+ return strcmp(name, best_dt_name); - } - #endif -- return strcmp(name, cmp_str); -+ return strcmp(name, best_dt_name); - } - #endif - -From patchwork Thu Sep 3 05:07:10 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Samuel Holland -X-Patchwork-Id: 1356309 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=sholland.org -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=sholland.org header.i=@sholland.org header.a=rsa-sha256 - header.s=fm3 header.b=Sj8OLfL4; - dkim=pass (2048-bit key; - unprotected) header.d=messagingengine.com header.i=@messagingengine.com - header.a=rsa-sha256 header.s=fm3 header.b=gP0Xb3h8; - dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4Bhphf6BH6z9sTR - for ; Thu, 3 Sep 2020 15:07:30 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id A8413822E3; - Thu, 3 Sep 2020 07:07:25 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=sholland.org -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=sholland.org header.i=@sholland.org - header.b="Sj8OLfL4"; dkim=pass (2048-bit key; - unprotected) header.d=messagingengine.com header.i=@messagingengine.com - header.b="gP0Xb3h8"; dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 7B2D9822E8; Thu, 3 Sep 2020 07:07:23 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, - SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no - version=3.4.2 -Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com - [66.111.4.26]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 88299822CA - for ; Thu, 3 Sep 2020 07:07:19 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=sholland.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=samuel@sholland.org -Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) - by mailout.nyi.internal (Postfix) with ESMTP id 76A985C0185; - Thu, 3 Sep 2020 01:07:18 -0400 (EDT) -Received: from mailfrontend2 ([10.202.2.163]) - by compute3.internal (MEProxy); Thu, 03 Sep 2020 01:07:18 -0400 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= - from:to:cc:subject:date:message-id:in-reply-to:references - :mime-version:content-transfer-encoding; s=fm3; bh=PQN64SHY0DFbJ - Xj9YPEcwJKL0bbybvo9/xMWQLiHCkU=; b=Sj8OLfL4WM4t/eW8xPA7XiaXE7bRC - 9oDd5605MwRja78aJ+GwV1TuxapJm7IlVNnlBETATblOjQenK4B7tAuxyPitzu+K - yJP+d0AYfgltsx888/hHtABBhsY20/7onFV1xxF/nB6fWwM6UTYfzsg2QQ2QYHmb - R5QGX38IUdDGZPR/U3bd2roatbUMK+xMqPZku3+3xxbSlLdWpeXp3YBmNCZFrkef - DjNUZE0kZWZIXIEk25bliOi1Yol1RZQZBq4As373rtZSvdXJbPKxU6C5c2TH6OgZ - ZcjNRU6zogMnOHhe/nklaCLzZQPx8Wz5Nse8PYJuRlDGk5tu5tOcONmog== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= - messagingengine.com; h=cc:content-transfer-encoding:date:from - :in-reply-to:message-id:mime-version:references:subject:to - :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= - fm3; bh=PQN64SHY0DFbJXj9YPEcwJKL0bbybvo9/xMWQLiHCkU=; b=gP0Xb3h8 - lzo0knlriZlcpqJf2dY4yeWblYiYIsakrHO3GUDeZ7G9RYeSSWZ89RjUPZIHn4tw - mTk7vKxHbWz88EaQ+iPXaHsygzVk6RGrnU+7eGtJzZmUmKAm19hTi1uqkP/nXGyY - yyL1IKzw3pieBI1wHq1JPBo+AqTyAsrhrjgdalM+f9/0WwcdAWLTWYUXdR65xW1W - oFUPZ3bjJWrhFb1KFwEiJKdkK9tpivNCGKLe9fvnTLEelYQVoKMAE5G0xVdJhIqY - mQAq41sXJ3LRSeQWUb4Nd00bQsDTsroKLXDYc1P2K57wRGNIalbkkWZmbadPn2VW - 5jUVvdCWPvDEZQ== -X-ME-Sender: - -X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudegtddgleduucetufdoteggodetrfdotf - fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen - uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne - cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefurghmuhgv - lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf - frrghtthgvrhhnpeduhfejfedvhffgfeehtefghfeiiefgfeehgfdvvdevfeegjeehjedv - gfejheeuieenucfkphepjedtrddufeehrddugeekrdduhedunecuvehluhhsthgvrhfuih - iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgrmhhuvghlsehshhholhhlrghn - ugdrohhrgh -X-ME-Proxy: - - - -Received: from titanium.stl.sholland.net - (70-135-148-151.lightspeed.stlsmo.sbcglobal.net [70.135.148.151]) - by mail.messagingengine.com (Postfix) with ESMTPA id 0C6DA306005B; - Thu, 3 Sep 2020 01:07:18 -0400 (EDT) -From: Samuel Holland -To: Jagan Teki , Maxime Ripard -Cc: Andre Przywara , - Peter Robinson , u-boot@lists.denx.de, - Samuel Holland -Subject: [PATCH 2/8] sunxi: board: Add a helper to get the SPL DT name -Date: Thu, 3 Sep 2020 00:07:10 -0500 -Message-Id: <20200903050716.48488-3-samuel@sholland.org> -X-Mailer: git-send-email 2.26.2 -In-Reply-To: <20200903050716.48488-1-samuel@sholland.org> -References: <20200903050716.48488-1-samuel@sholland.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -This moves the validity checking and typecasts all to one place away -from the string comparison logic, and it detangles the compile-time -and runtime control flow. - -The new helper will also be used by U-Boot proper in a future commit. - -Signed-off-by: Samuel Holland ---- - board/sunxi/board.c | 26 +++++++++++++++++--------- - 1 file changed, 17 insertions(+), 9 deletions(-) - -diff --git a/board/sunxi/board.c b/board/sunxi/board.c -index 674e6816d2d..5c9b811f27a 100644 ---- a/board/sunxi/board.c -+++ b/board/sunxi/board.c -@@ -319,6 +319,17 @@ static struct boot_file_head * get_spl_header(uint8_t req_version) - return spl; - } - -+static const char *get_spl_dt_name(void) -+{ -+ struct boot_file_head *spl = get_spl_header(SPL_DT_HEADER_VERSION); -+ -+ /* Check if there is a DT name stored in the SPL header. */ -+ if (spl != INVALID_SPL_HEADER && spl->dt_name_offset) -+ return (char *)spl + spl->dt_name_offset; -+ -+ return NULL; -+} -+ - int dram_init(void) - { - struct boot_file_head *spl = get_spl_header(SPL_DRAM_HEADER_VERSION); -@@ -891,20 +902,17 @@ int ft_board_setup(void *blob, struct bd_info *bd) - #ifdef CONFIG_SPL_LOAD_FIT - int board_fit_config_name_match(const char *name) - { -- struct boot_file_head *spl = get_spl_header(SPL_DT_HEADER_VERSION); -- const char *best_dt_name = (const char *)spl; -+ const char *best_dt_name = get_spl_dt_name(); - -- /* Check if there is a DT name stored in the SPL header and use that. */ -- if (spl != INVALID_SPL_HEADER && spl->dt_name_offset) { -- best_dt_name += spl->dt_name_offset; -- } else { - #ifdef CONFIG_DEFAULT_DEVICE_TREE -+ if (best_dt_name == NULL) - best_dt_name = CONFIG_DEFAULT_DEVICE_TREE; --#else -- return 0; - #endif -- }; - -+ if (best_dt_name == NULL) { -+ /* No DT name was provided, so accept the first config. */ -+ return 0; -+ } - #ifdef CONFIG_PINE64_DT_SELECTION - /* Differentiate the two Pine64 board DTs by their DRAM size. */ - if (strstr(name, "-pine64") && strstr(best_dt_name, "-pine64")) { - -From patchwork Thu Sep 3 05:07:11 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Samuel Holland -X-Patchwork-Id: 1356311 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=sholland.org -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=sholland.org header.i=@sholland.org header.a=rsa-sha256 - header.s=fm3 header.b=YljKqDaX; - dkim=pass (2048-bit key; - unprotected) header.d=messagingengine.com header.i=@messagingengine.com - header.a=rsa-sha256 header.s=fm3 header.b=KFsvPFSQ; - dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4Bhpj50Q5mz9sTR - for ; Thu, 3 Sep 2020 15:07:52 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 921A1822EA; - Thu, 3 Sep 2020 07:07:28 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=sholland.org -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=sholland.org header.i=@sholland.org - header.b="YljKqDaX"; dkim=pass (2048-bit key; - unprotected) header.d=messagingengine.com header.i=@messagingengine.com - header.b="KFsvPFSQ"; dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 29DBC822EA; Thu, 3 Sep 2020 07:07:26 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, - SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no - version=3.4.2 -Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com - [66.111.4.26]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id AA176822D5 - for ; Thu, 3 Sep 2020 07:07:19 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=sholland.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=samuel@sholland.org -Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) - by mailout.nyi.internal (Postfix) with ESMTP id C1C965C01A4; - Thu, 3 Sep 2020 01:07:18 -0400 (EDT) -Received: from mailfrontend2 ([10.202.2.163]) - by compute3.internal (MEProxy); Thu, 03 Sep 2020 01:07:18 -0400 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= - from:to:cc:subject:date:message-id:in-reply-to:references - :mime-version:content-transfer-encoding; s=fm3; bh=Qd9EKlOeDxNxU - GjePDGIEyZE9Rx9hOCoFpYSpjLblzg=; b=YljKqDaXzM+KcF2P5M1Qm4ZqIN47C - vZyob9mNeC9Ih6xzht0zmIiswyR4o06F6F75APKEHOLdF98lM16tFq5lm2c0K2C/ - FLv20iU82lyakGbT5y0fX9BUw2B1l6InAM81fN1aIyj6vKXDINvzr0Njek5zd82e - EBZJnaT7r4LgQ3tDupNPvYm+nq18jIibpUUERREvoNh6ktNeYOJbWPpuyRpW06+o - zKpzwXrrMFjcTuczM3DCSk0LchI0IGfF9STJXcWYrkwILpOIIZIn7Pcxbxg3LuPP - EF8OLTHGhbp2yvtbSVxuSyV5XrLKaiMTJNs8Z8T/AVWTfuAfwA146icVg== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= - messagingengine.com; h=cc:content-transfer-encoding:date:from - :in-reply-to:message-id:mime-version:references:subject:to - :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= - fm3; bh=Qd9EKlOeDxNxUGjePDGIEyZE9Rx9hOCoFpYSpjLblzg=; b=KFsvPFSQ - oz3tuB0IgFDRGBPs9pm02ZFiQW6XW9io0ha6PFYr7sl2irhSUuA89cAncxDeQ99n - /SKVx+jefi15iu+rEUTEdZwFzb8FbfQ6faNIyvJ1RL4m+eH9ifIF0yuc62Qe9Pt2 - Y0+6e1tDB3SyFRABn0Vib5DrnmbMSYeSJZug7TRAxINnW/qdG6pq1ycNPbhvYy7V - L0yBLcV7gP/gwEF5OtEWV2X22kqKFir6fKCsAVDK2KUTmM3ezGifn8h6u7n8ksWC - +4UbNfjcBKfNLHFEEIb7CdNdtixI4oo/XIsA8eDHULQ0v7cF7bZ1KAR+jBSW4Bf9 - CRQNy2hCu5K+Rg== -X-ME-Sender: - -X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudegtddgleduucetufdoteggodetrfdotf - fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen - uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne - cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefurghmuhgv - lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf - frrghtthgvrhhnpeduhfejfedvhffgfeehtefghfeiiefgfeehgfdvvdevfeegjeehjedv - gfejheeuieenucfkphepjedtrddufeehrddugeekrdduhedunecuvehluhhsthgvrhfuih - iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgrmhhuvghlsehshhholhhlrghn - ugdrohhrgh -X-ME-Proxy: - - - -Received: from titanium.stl.sholland.net - (70-135-148-151.lightspeed.stlsmo.sbcglobal.net [70.135.148.151]) - by mail.messagingengine.com (Postfix) with ESMTPA id 56CF53060062; - Thu, 3 Sep 2020 01:07:18 -0400 (EDT) -From: Samuel Holland -To: Jagan Teki , Maxime Ripard -Cc: Andre Przywara , - Peter Robinson , u-boot@lists.denx.de, - Samuel Holland -Subject: [PATCH 3/8] sunxi: board: Simplify Pine A64 DT selection logic -Date: Thu, 3 Sep 2020 00:07:11 -0500 -Message-Id: <20200903050716.48488-4-samuel@sholland.org> -X-Mailer: git-send-email 2.26.2 -In-Reply-To: <20200903050716.48488-1-samuel@sholland.org> -References: <20200903050716.48488-1-samuel@sholland.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -Instead of using an entirely separate matching algorithm, simply update -the name of the DT we want to match. Enabling this logic does not depend -on the FIT config name, only on the initial guess of the board name. - -Importantly, the initial guess must be "sun50i-a64-pine64-plus", because -otherwise the logic would trigger when "sun50i-a64-pine64-lts" was -written to the SPL header. - -Signed-off-by: Samuel Holland ---- - board/sunxi/board.c | 12 ++++-------- - 1 file changed, 4 insertions(+), 8 deletions(-) - -diff --git a/board/sunxi/board.c b/board/sunxi/board.c -index 5c9b811f27a..fb0d5bf4743 100644 ---- a/board/sunxi/board.c -+++ b/board/sunxi/board.c -@@ -914,14 +914,10 @@ int board_fit_config_name_match(const char *name) - return 0; - } - #ifdef CONFIG_PINE64_DT_SELECTION --/* Differentiate the two Pine64 board DTs by their DRAM size. */ -- if (strstr(name, "-pine64") && strstr(best_dt_name, "-pine64")) { -- if ((gd->ram_size > 512 * 1024 * 1024)) -- return !strstr(name, "plus"); -- else -- return !!strstr(name, "plus"); -- } else { -- return strcmp(name, best_dt_name); -+ else if (strstr(best_dt_name, "-pine64-plus")) { -+ /* Differentiate the Pine A64 boards by their DRAM size. */ -+ if ((gd->ram_size == 512 * 1024 * 1024)) -+ best_dt_name = "sun50i-a64-pine64"; - } - #endif - return strcmp(name, best_dt_name); - -From patchwork Thu Sep 3 05:07:12 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Samuel Holland -X-Patchwork-Id: 1356310 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=sholland.org -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=sholland.org header.i=@sholland.org header.a=rsa-sha256 - header.s=fm3 header.b=WQvh0tb6; - dkim=pass (2048-bit key; - unprotected) header.d=messagingengine.com header.i=@messagingengine.com - header.a=rsa-sha256 header.s=fm3 header.b=Va8mMuMz; - dkim-atps=neutral -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 RSA-PSS (4096 bits) server-digest - SHA256) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4Bhphw0Nkzz9sTR - for ; Thu, 3 Sep 2020 15:07:43 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 19AFA822DF; - Thu, 3 Sep 2020 07:07:27 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=sholland.org -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=sholland.org header.i=@sholland.org - header.b="WQvh0tb6"; dkim=pass (2048-bit key; - unprotected) header.d=messagingengine.com header.i=@messagingengine.com - header.b="Va8mMuMz"; dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 3129B822E3; Thu, 3 Sep 2020 07:07:24 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, - SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no - version=3.4.2 -Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com - [66.111.4.26]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id D694E822E1 - for ; Thu, 3 Sep 2020 07:07:19 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=sholland.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=samuel@sholland.org -Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) - by mailout.nyi.internal (Postfix) with ESMTP id 1C9B95C0116; - Thu, 3 Sep 2020 01:07:19 -0400 (EDT) -Received: from mailfrontend2 ([10.202.2.163]) - by compute3.internal (MEProxy); Thu, 03 Sep 2020 01:07:19 -0400 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= - from:to:cc:subject:date:message-id:in-reply-to:references - :mime-version:content-transfer-encoding; s=fm3; bh=CNkIsGtVD92kV - ynV0NXjTV4vykOq+sdspxFol5f0iNM=; b=WQvh0tb6tyqtZYusFC0NyOcSeWaQm - ikcA+euqToY6scf0d256r+20fb4HnTosS+vXbhpF5vlo1hBhc2RW2/e+dR3a3AKH - qb8j3UwBWhpnwwZMS8HqUob5Cfq1BxHU1+/2tjRXvlMxDxNd/HvUoRlLBhfK57OA - Ln6MfWcRmxHlq5Js5MGAD9hRdzkPrnDX4x/NdRttkUaH/WMSGNEO0TnKW88PYXsE - 8u0eiuJQWWLED8nBAxf89vvVUf7o+It6gx5i+r5Bjl/BE5Ykj4O4kpMX2MeiB+Zh - KjYjivDQw8wmG4CrFKPCq4Bd/RoSQd9zHYBp6QuYpvY80vw+jLX7oVwMw== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= - messagingengine.com; h=cc:content-transfer-encoding:date:from - :in-reply-to:message-id:mime-version:references:subject:to - :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= - fm3; bh=CNkIsGtVD92kVynV0NXjTV4vykOq+sdspxFol5f0iNM=; b=Va8mMuMz - othxHX11xn91XUTb1pYRnk4BO4zhPNKy7f+RU+S4/3DaYnmV9zl4x03LblsUWZRs - bnICHr20DS5YKUcqT9ag5zm1ocAxwJQGTc/SnTpWkZsJXR8unpsmm89jDyV+w5dM - p3YUeZ3AhxjEFHJXhqUnnOIXSLXGzYsnWA+szWf0dHI7tpZJqaV5O4X8xTk2X5cp - 2siDwjLGLi7PUtB/vcNZmOOZQbROGonW6mu2iNurHnrBUk4gOOmQhmeiEkjJb9lk - +MfMZsLXllNr8/o7323d6iP90v1scxaBASDC+q2zzEmUVAmU/Y/fyH0B6frHJy3O - QTcFTnYy45X3Zw== -X-ME-Sender: - -X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudegtddgleduucetufdoteggodetrfdotf - fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen - uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne - cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefurghmuhgv - lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf - frrghtthgvrhhnpeduhfejfedvhffgfeehtefghfeiiefgfeehgfdvvdevfeegjeehjedv - gfejheeuieenucfkphepjedtrddufeehrddugeekrdduhedunecuvehluhhsthgvrhfuih - iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgrmhhuvghlsehshhholhhlrghn - ugdrohhrgh -X-ME-Proxy: - - - -Received: from titanium.stl.sholland.net - (70-135-148-151.lightspeed.stlsmo.sbcglobal.net [70.135.148.151]) - by mail.messagingengine.com (Postfix) with ESMTPA id A21AB306005B; - Thu, 3 Sep 2020 01:07:18 -0400 (EDT) -From: Samuel Holland -To: Jagan Teki , Maxime Ripard -Cc: Andre Przywara , - Peter Robinson , u-boot@lists.denx.de, - Samuel Holland -Subject: [PATCH 4/8] sunxi: board: Add PinePhone DT selection logic -Date: Thu, 3 Sep 2020 00:07:12 -0500 -Message-Id: <20200903050716.48488-5-samuel@sholland.org> -X-Mailer: git-send-email 2.26.2 -In-Reply-To: <20200903050716.48488-1-samuel@sholland.org> -References: <20200903050716.48488-1-samuel@sholland.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -There are two different publicly-released revisions of the PinePhone -hardware, versions 1.1 and 1.2; and they need different device trees. -Since some GPIO pins were rerouted, we can use that to distinguish -between them. - -Signed-off-by: Samuel Holland ---- - arch/arm/mach-sunxi/Kconfig | 7 +++++++ - board/sunxi/board.c | 21 +++++++++++++++++++++ - 2 files changed, 28 insertions(+) - -diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig -index be0822bfb7d..8421f3b6854 100644 ---- a/arch/arm/mach-sunxi/Kconfig -+++ b/arch/arm/mach-sunxi/Kconfig -@@ -1010,4 +1010,11 @@ config PINE64_DT_SELECTION - option, the device tree selection code specific to Pine64 which - utilizes the DRAM size will be enabled. - -+config PINEPHONE_DT_SELECTION -+ bool "Enable PinePhone device tree selection code" -+ depends on MACH_SUN50I -+ help -+ Enable this option to automatically select the device tree for the -+ correct PinePhone hardware revision during boot. -+ - endif -diff --git a/board/sunxi/board.c b/board/sunxi/board.c -index fb0d5bf4743..3d64ed18664 100644 ---- a/board/sunxi/board.c -+++ b/board/sunxi/board.c -@@ -27,6 +27,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -920,6 +921,26 @@ int board_fit_config_name_match(const char *name) - best_dt_name = "sun50i-a64-pine64"; - } - #endif -+#ifdef CONFIG_PINEPHONE_DT_SELECTION -+ else if (strstr(best_dt_name, "-pinephone")) { -+ /* Differentiate the PinePhone revisions by GPIO inputs. */ -+ prcm_apb0_enable(PRCM_APB0_GATE_PIO); -+ sunxi_gpio_set_pull(SUNXI_GPL(6), SUNXI_GPIO_PULL_UP); -+ sunxi_gpio_set_cfgpin(SUNXI_GPL(6), SUNXI_GPIO_INPUT); -+ udelay(100); -+ -+ /* PL6 is pulled low by the modem on v1.2. */ -+ if (gpio_get_value(SUNXI_GPL(6)) == 0) -+ best_dt_name = "sun50i-a64-pinephone-1.2"; -+ else -+ best_dt_name = "sun50i-a64-pinephone-1.1"; -+ -+ sunxi_gpio_set_cfgpin(SUNXI_GPL(6), SUNXI_GPIO_DISABLE); -+ sunxi_gpio_set_pull(SUNXI_GPL(6), SUNXI_GPIO_PULL_DISABLE); -+ prcm_apb0_disable(PRCM_APB0_GATE_PIO); -+ } -+#endif -+ - return strcmp(name, best_dt_name); - } - #endif - -From patchwork Thu Sep 3 05:07:13 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Samuel Holland -X-Patchwork-Id: 1356314 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=sholland.org -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=sholland.org header.i=@sholland.org header.a=rsa-sha256 - header.s=fm3 header.b=fyCJtExp; - dkim=pass (2048-bit key; - unprotected) header.d=messagingengine.com header.i=@messagingengine.com - header.a=rsa-sha256 header.s=fm3 header.b=B5Js1Nb8; - dkim-atps=neutral -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4Bhpjn2MLBz9sTR - for ; Thu, 3 Sep 2020 15:08:29 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 774738230A; - Thu, 3 Sep 2020 07:07:33 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=sholland.org -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=sholland.org header.i=@sholland.org - header.b="fyCJtExp"; dkim=pass (2048-bit key; - unprotected) header.d=messagingengine.com header.i=@messagingengine.com - header.b="B5Js1Nb8"; dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 43189822ED; Thu, 3 Sep 2020 07:07:27 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, - SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no - version=3.4.2 -Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com - [66.111.4.26]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 2BF26822D9 - for ; Thu, 3 Sep 2020 07:07:21 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=sholland.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=samuel@sholland.org -Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) - by mailout.nyi.internal (Postfix) with ESMTP id 672025C018A; - Thu, 3 Sep 2020 01:07:19 -0400 (EDT) -Received: from mailfrontend2 ([10.202.2.163]) - by compute3.internal (MEProxy); Thu, 03 Sep 2020 01:07:19 -0400 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= - from:to:cc:subject:date:message-id:in-reply-to:references - :mime-version:content-transfer-encoding; s=fm3; bh=azt3bcG2gyjJM - Z+euNV8r3HcVvCpV+eSxdiwdmzQYjE=; b=fyCJtExpAf8Pds8sXBs5pz5z9Werb - vqBSzut0Ck+pcCvap7NpVy7HIRtLqRZZ5TVdGQrBdCyjMYPaBcpnxw/mfUNJKoX9 - WjOBrSnHpTrRp42ZQmJhQhQwBcX/s0j54ruprCfSqKSDuTOBG1N1JvKxI/PpfY6r - SsSEbwLKYq1RtK4noXm6JikphM9ME5i5XlR5n4XPsXPdM3UhM9DZXrkVwtWp+NyK - 4Xz63Is8oAxwJZAmqv049v/YeMe/Rsf9FY93zxcnQyZVoOHuW1s17AsX7jF8wDRy - xqvpvT8c3cJYXaFLGLrY+nmcGoKIjQSszLh9y5NwbGmjlEElJCcUUJW1A== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= - messagingengine.com; h=cc:content-transfer-encoding:date:from - :in-reply-to:message-id:mime-version:references:subject:to - :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= - fm3; bh=azt3bcG2gyjJMZ+euNV8r3HcVvCpV+eSxdiwdmzQYjE=; b=B5Js1Nb8 - 5VzNH4aOuAW1FHK3OmKXRhz2sqhORkqO2K1N+kVfuPWZeATNjSIGEHwqkBJeJDNc - i+/y18eeCQg5sWkt3YCGaFv//m+LNamP1DRTkwLglswewvGqj0zfgN4MjMJvBWt3 - 0bbdP8+D9o1geSld8IyI3lyRZgu7QN+3vJs4xxyTQL6xTOg6VizhNwm6nwSSl2u8 - O6WzLWqrShbb6PD7Lqy5FrJ+BiqwRR+QrRp1JI86QDXssPJh1CtMiF2LnrkmwPxB - DSp3hr1nqudSNopltfwdUyNu3GdkGbMCE8Iv+4KIZpD8oRH12hS19aRtIqosAuXm - 1Ljrqzx4Vp/yNA== -X-ME-Sender: - -X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudegtddgleduucetufdoteggodetrfdotf - fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen - uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne - cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefurghmuhgv - lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf - frrghtthgvrhhnpeduhfejfedvhffgfeehtefghfeiiefgfeehgfdvvdevfeegjeehjedv - gfejheeuieenucfkphepjedtrddufeehrddugeekrdduhedunecuvehluhhsthgvrhfuih - iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgrmhhuvghlsehshhholhhlrghn - ugdrohhrgh -X-ME-Proxy: - - - -Received: from titanium.stl.sholland.net - (70-135-148-151.lightspeed.stlsmo.sbcglobal.net [70.135.148.151]) - by mail.messagingengine.com (Postfix) with ESMTPA id EE48F306005E; - Thu, 3 Sep 2020 01:07:18 -0400 (EDT) -From: Samuel Holland -To: Jagan Teki , Maxime Ripard -Cc: Andre Przywara , - Peter Robinson , u-boot@lists.denx.de, - Samuel Holland -Subject: [PATCH 5/8] sunxi: board: Save the chosen DT name in the SPL header -Date: Thu, 3 Sep 2020 00:07:13 -0500 -Message-Id: <20200903050716.48488-6-samuel@sholland.org> -X-Mailer: git-send-email 2.26.2 -In-Reply-To: <20200903050716.48488-1-samuel@sholland.org> -References: <20200903050716.48488-1-samuel@sholland.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -This overwrites the name loaded from the SPL image. It will be different -if there was previously no name provided, or if a more accurate name was -determined by the board variant selection logic. This means that the DT -name in the SPL header now always matches the DT appended to U-Boot. - -Signed-off-by: Samuel Holland ---- - board/sunxi/board.c | 27 ++++++++++++++++++++++++++- - 1 file changed, 26 insertions(+), 1 deletion(-) - -diff --git a/board/sunxi/board.c b/board/sunxi/board.c -index 3d64ed18664..eaa40a1ea96 100644 ---- a/board/sunxi/board.c -+++ b/board/sunxi/board.c -@@ -331,6 +331,21 @@ static const char *get_spl_dt_name(void) - return NULL; - } - -+static void set_spl_dt_name(const char *name) -+{ -+ struct boot_file_head *spl = get_spl_header(SPL_ENV_HEADER_VERSION); -+ -+ if (spl == INVALID_SPL_HEADER) -+ return; -+ -+ /* Promote the header version for U-Boot proper, if needed. */ -+ if (spl->spl_signature[3] < SPL_DT_HEADER_VERSION) -+ spl->spl_signature[3] = SPL_DT_HEADER_VERSION; -+ -+ strcpy((char *)&spl->string_pool, name); -+ spl->dt_name_offset = offsetof(struct boot_file_head, string_pool); -+} -+ - int dram_init(void) - { - struct boot_file_head *spl = get_spl_header(SPL_DRAM_HEADER_VERSION); -@@ -904,6 +919,7 @@ int ft_board_setup(void *blob, struct bd_info *bd) - int board_fit_config_name_match(const char *name) - { - const char *best_dt_name = get_spl_dt_name(); -+ int ret; - - #ifdef CONFIG_DEFAULT_DEVICE_TREE - if (best_dt_name == NULL) -@@ -941,6 +957,15 @@ int board_fit_config_name_match(const char *name) - } - #endif - -- return strcmp(name, best_dt_name); -+ ret = strcmp(name, best_dt_name); -+ -+ /* -+ * If one of the FIT configurations matches the most accurate DT name, -+ * update the SPL header to provide that DT name to U-Boot proper. -+ */ -+ if (ret == 0) -+ set_spl_dt_name(best_dt_name); -+ -+ return ret; - } - #endif - -From patchwork Thu Sep 3 05:07:14 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Samuel Holland -X-Patchwork-Id: 1356313 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=sholland.org -Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; - unprotected) header.d=sholland.org header.i=@sholland.org header.a=rsa-sha256 - header.s=fm3 header.b=Ps0W2fd7; - dkim=pass (2048-bit key; - unprotected) header.d=messagingengine.com header.i=@messagingengine.com - header.a=rsa-sha256 header.s=fm3 header.b=irLh9odg; - dkim-atps=neutral -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4BhpjY18DVz9sTR - for ; Thu, 3 Sep 2020 15:08:17 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 1375E82300; - Thu, 3 Sep 2020 07:07:32 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=sholland.org -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=sholland.org header.i=@sholland.org - header.b="Ps0W2fd7"; dkim=pass (2048-bit key; - unprotected) header.d=messagingengine.com header.i=@messagingengine.com - header.b="irLh9odg"; dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id E9DCE822E1; Thu, 3 Sep 2020 07:07:26 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, - SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no - version=3.4.2 -Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com - [66.111.4.26]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 2CC5D822DF - for ; Thu, 3 Sep 2020 07:07:21 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=sholland.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=samuel@sholland.org -Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) - by mailout.nyi.internal (Postfix) with ESMTP id AAA455C0197; - Thu, 3 Sep 2020 01:07:19 -0400 (EDT) -Received: from mailfrontend2 ([10.202.2.163]) - by compute3.internal (MEProxy); Thu, 03 Sep 2020 01:07:19 -0400 -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= - from:to:cc:subject:date:message-id:in-reply-to:references - :mime-version:content-transfer-encoding; s=fm3; bh=YJZBYh6lhnaT4 - or+KKTYoX0BgbruFrnszv2AxRFjCUg=; b=Ps0W2fd7vmO9tBRewK6ov5Y2vWsh9 - oAAVK6vPK0hEzUkkeBIkhSenj5xlmR2HCeP5LxQU+Vgty5CzLJnc48U8lCQwGRFR - ZZ6tAiD9/vOtdVCbU2dRH7WK3uoAEi4AB688do5c3H3KhS8ZN6N7vsakr50TbczK - beuX76xciz0QEuRhJUFbnK9EYpV8/CDS1OFv6P+kA6OSIb71gm9FeFgdHHpmdQ/U - 7sE6vbkMYhL7pFMzeBCYWSfUWF6NK3gfJApDaxFqR1KBlszLuGbIXLVYWImA3WV8 - sFDNZWGk2swSOB1ivq+Xvb2WTlPidjY0OrROgggZcyDHPRFEoZaS1ezAA== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= - messagingengine.com; h=cc:content-transfer-encoding:date:from - :in-reply-to:message-id:mime-version:references:subject:to - :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= - fm3; bh=YJZBYh6lhnaT4or+KKTYoX0BgbruFrnszv2AxRFjCUg=; b=irLh9odg - 4mUJO3vUBGyeYD/WBs8BrulYezzsNoTAJp4uGEv0b9KyxbofUjok4+liYvAT/QZa - ED/iKo1bqgGmEwNPLoM0YORd0pXRd5jyv9W53Z96qzGsNOe0iGkJtSlOMXF3Lrfl - aIpGPRSMoRkqztR6oWBAEHeCm3NCFY4LDzzCoPFQqdcWmiDl+Wi3YfpApRGHdL3v - 4XVOruQFZlZUHZPp42VOzgbJyz+uWB3Z/RN2y0P7Lof1CrYtsWNftV4LuXDQ70VZ - P9TlSWjk75qTa1dqHdj/cvbi5WFBqa4FJKgCCV1OgCCEAc1ZGLhPBVDjt4W7FHJh - hNPlKS0liPCmGQ== -X-ME-Sender: - -X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudegtddgleduucetufdoteggodetrfdotf - fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen - uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne - cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefurghmuhgv - lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf - frrghtthgvrhhnpeduhfejfedvhffgfeehtefghfeiiefgfeehgfdvvdevfeegjeehjedv - gfejheeuieenucfkphepjedtrddufeehrddugeekrdduhedunecuvehluhhsthgvrhfuih - iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgrmhhuvghlsehshhholhhlrghn - ugdrohhrgh -X-ME-Proxy: - - - -Received: from titanium.stl.sholland.net - (70-135-148-151.lightspeed.stlsmo.sbcglobal.net [70.135.148.151]) - by mail.messagingengine.com (Postfix) with ESMTPA id 4678A306005B; - Thu, 3 Sep 2020 01:07:19 -0400 (EDT) -From: Samuel Holland -To: Jagan Teki , Maxime Ripard -Cc: Andre Przywara , - Peter Robinson , u-boot@lists.denx.de, - Samuel Holland -Subject: [PATCH 6/8] sunxi: board: Set fdtfile to match the DT chosen by SPL -Date: Thu, 3 Sep 2020 00:07:14 -0500 -Message-Id: <20200903050716.48488-7-samuel@sholland.org> -X-Mailer: git-send-email 2.26.2 -In-Reply-To: <20200903050716.48488-1-samuel@sholland.org> -References: <20200903050716.48488-1-samuel@sholland.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -Previously, fdtfile was always the value in CONFIG_DEFAULT_DEVICE_TREE. -This meant that, regardless of the DT chosen by SPL (either by changing -the header in the image or by the selection code at runtime), Linux -always used the default DT. - -By using the name from the SPL header (which, because of the previous -commit, always matches the DT used by U-Boot proper), Linux also sees -the same board as U-Boot/SPL, even if the boot script later loads a DT -from disk. - -Signed-off-by: Samuel Holland ---- - board/sunxi/board.c | 11 +++++++++++ - 1 file changed, 11 insertions(+) - -diff --git a/board/sunxi/board.c b/board/sunxi/board.c -index eaa40a1ea96..5457b28e135 100644 ---- a/board/sunxi/board.c -+++ b/board/sunxi/board.c -@@ -870,6 +870,7 @@ static void setup_environment(const void *fdt) - - int misc_init_r(void) - { -+ const char *spl_dt_name; - uint boot; - - env_set("fel_booted", NULL); -@@ -888,6 +889,16 @@ int misc_init_r(void) - env_set("mmc_bootdev", "1"); - } - -+ /* Set fdtfile to match the FIT configuration chosen in SPL. */ -+ spl_dt_name = get_spl_dt_name(); -+ if (spl_dt_name) { -+ char *prefix = IS_ENABLED(CONFIG_ARM64) ? "allwinner/" : ""; -+ char str[64]; -+ -+ snprintf(str, sizeof(str), "%s%s.dtb", prefix, spl_dt_name); -+ env_set("fdtfile", str); -+ } -+ - setup_environment(gd->fdt_blob); - - #ifdef CONFIG_USB_ETHER - -From 9e91885814f880ce13ee98cab79876338811949f Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Thu, 9 Jul 2020 12:44:55 +0100 -Subject: [PATCH 7/8] arm64: dts: allwinner: Add initial support for Pine64 - PinePhone - -At the moment PinePhone comes in three slightly incompatible variants: - -- 1.0: Early Developer Batch -- 1.1: Braveheart Batch -- 1.2: Initial Production version - -This syncs the Pinephone DTs from Linux 5.8-rc1. - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/Makefile | 3 + - arch/arm/dts/sun50i-a64-pinephone-1.0.dts | 11 + - arch/arm/dts/sun50i-a64-pinephone-1.1.dts | 11 + - arch/arm/dts/sun50i-a64-pinephone-1.2.dts | 40 +++++++++++++++++++++++ - arch/arm/dts/sun50i-a64-pinephone.dtsi | 379 ++++++++++++++++++++++ - 5 files changed, 403 insertions(+) - create mode 100644 arch/arm/dts/sun50i-a64-pinephone-1.0.dts - create mode 100644 arch/arm/dts/sun50i-a64-pinephone-1.1.dts - create mode 100644 arch/arm/dts/sun50i-a64-pinephone-1.2.dts - create mode 100644 arch/arm/dts/sun50i-a64-pinephone.dtsi - -diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile -index f8f529435b..193f5c6138 100644 ---- a/arch/arm/dts/Makefile -+++ b/arch/arm/dts/Makefile -@@ -608,6 +608,9 @@ dtb-$(CONFIG_MACH_SUN50I) += \ - sun50i-a64-pine64-plus.dtb \ - sun50i-a64-pine64.dtb \ - sun50i-a64-pinebook.dtb \ -+ sun50i-a64-pinephone-1.0.dtb \ -+ sun50i-a64-pinephone-1.1.dtb \ -+ sun50i-a64-pinephone-1.2.dtb \ - sun50i-a64-sopine-baseboard.dtb \ - sun50i-a64-teres-i.dtb - dtb-$(CONFIG_MACH_SUN9I) += \ -diff --git a/arch/arm/dts/sun50i-a64-pinephone-1.0.dts b/arch/arm/dts/sun50i-a64-pinephone-1.0.dts -new file mode 100644 -index 0000000000..0c42272106 ---- /dev/null -+++ b/arch/arm/dts/sun50i-a64-pinephone-1.0.dts -@@ -0,0 +1,11 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+// Copyright (C) 2020 Ondrej Jirman -+ -+/dts-v1/; -+ -+#include "sun50i-a64-pinephone.dtsi" -+ -+/ { -+ model = "Pine64 PinePhone Developer Batch (1.0)"; -+ compatible = "pine64,pinephone-1.0", "allwinner,sun50i-a64"; -+}; -diff --git a/arch/arm/dts/sun50i-a64-pinephone-1.1.dts b/arch/arm/dts/sun50i-a64-pinephone-1.1.dts -new file mode 100644 -index 0000000000..06a775c416 ---- /dev/null -+++ b/arch/arm/dts/sun50i-a64-pinephone-1.1.dts -@@ -0,0 +1,11 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+// Copyright (C) 2020 Ondrej Jirman -+ -+/dts-v1/; -+ -+#include "sun50i-a64-pinephone.dtsi" -+ -+/ { -+ model = "Pine64 PinePhone Braveheart (1.1)"; -+ compatible = "pine64,pinephone-1.1", "allwinner,sun50i-a64"; -+}; -diff --git a/arch/arm/dts/sun50i-a64-pinephone-1.2.dts b/arch/arm/dts/sun50i-a64-pinephone-1.2.dts -new file mode 100644 -index 0000000000..a9f5b670c9 ---- /dev/null -+++ b/arch/arm/dts/sun50i-a64-pinephone-1.2.dts -@@ -0,0 +1,40 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+// Copyright (C) 2020 Ondrej Jirman -+ -+/dts-v1/; -+ -+#include "sun50i-a64-pinephone.dtsi" -+ -+/ { -+ model = "Pine64 PinePhone (1.2)"; -+ compatible = "pine64,pinephone-1.2", "allwinner,sun50i-a64"; -+}; -+ -+&backlight { -+ power-supply = <®_ldo_io0>; -+ /* -+ * PWM backlight circuit on this PinePhone revision was changed since 1.0, -+ * and the lowest PWM duty cycle that doesn't lead to backlight being off -+ * is around 10%. Duty cycle for the lowest brightness level also varries -+ * quite a bit between individual boards, so the lowest value here was -+ * chosen as a safe default. -+ */ -+ brightness-levels = < -+ 5000 5248 5506 5858 6345 -+ 6987 7805 8823 10062 11543 -+ 13287 15317 17654 20319 23336 -+ 26724 30505 34702 39335 44427 -+ 50000 -+ >; -+ num-interpolated-steps = <50>; -+ default-brightness-level = <500>; -+}; -+ -+&lis3mdl { -+ /* -+ * Board revision 1.2 fixed routing of the interrupt to DRDY pin, -+ * enable interrupts. -+ */ -+ interrupt-parent = <&pio>; -+ interrupts = <1 1 IRQ_TYPE_EDGE_RISING>; /* PB1 */ -+}; -diff --git a/arch/arm/dts/sun50i-a64-pinephone.dtsi b/arch/arm/dts/sun50i-a64-pinephone.dtsi -new file mode 100644 -index 0000000000..cefda145c3 ---- /dev/null -+++ b/arch/arm/dts/sun50i-a64-pinephone.dtsi -@@ -0,0 +1,379 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+// Copyright (C) 2019 Icenowy Zheng -+// Copyright (C) 2020 Martijn Braam -+// Copyright (C) 2020 Ondrej Jirman -+ -+#include "sun50i-a64.dtsi" -+#include "sun50i-a64-cpu-opp.dtsi" -+ -+#include -+#include -+#include -+#include -+ -+/ { -+ aliases { -+ serial0 = &uart0; -+ }; -+ -+ chosen { -+ stdout-path = "serial0:115200n8"; -+ }; -+ -+ leds { -+ compatible = "gpio-leds"; -+ -+ blue { -+ function = LED_FUNCTION_INDICATOR; -+ color = ; -+ gpios = <&pio 3 20 GPIO_ACTIVE_HIGH>; /* PD20 */ -+ }; -+ -+ green { -+ function = LED_FUNCTION_INDICATOR; -+ color = ; -+ gpios = <&pio 3 18 GPIO_ACTIVE_HIGH>; /* PD18 */ -+ }; -+ -+ red { -+ function = LED_FUNCTION_INDICATOR; -+ color = ; -+ gpios = <&pio 3 19 GPIO_ACTIVE_HIGH>; /* PD19 */ -+ }; -+ }; -+ -+ speaker_amp: audio-amplifier { -+ compatible = "simple-audio-amplifier"; -+ enable-gpios = <&pio 2 7 GPIO_ACTIVE_HIGH>; /* PC7 */ -+ sound-name-prefix = "Speaker Amp"; -+ }; -+ -+ vibrator { -+ compatible = "gpio-vibrator"; -+ enable-gpios = <&pio 3 2 GPIO_ACTIVE_HIGH>; /* PD2 */ -+ vcc-supply = <®_dcdc1>; -+ }; -+}; -+ -+&codec { -+ status = "okay"; -+}; -+ -+&codec_analog { -+ cpvdd-supply = <®_eldo1>; -+ status = "okay"; -+}; -+ -+&cpu0 { -+ cpu-supply = <®_dcdc2>; -+}; -+ -+&cpu1 { -+ cpu-supply = <®_dcdc2>; -+}; -+ -+&cpu2 { -+ cpu-supply = <®_dcdc2>; -+}; -+ -+&cpu3 { -+ cpu-supply = <®_dcdc2>; -+}; -+ -+&dai { -+ status = "okay"; -+}; -+ -+&ehci0 { -+ status = "okay"; -+}; -+ -+&ehci1 { -+ status = "okay"; -+}; -+ -+&i2c1 { -+ status = "okay"; -+ -+ /* Magnetometer */ -+ lis3mdl@1e { -+ compatible = "st,lis3mdl-magn"; -+ reg = <0x1e>; -+ vdd-supply = <®_dldo1>; -+ vddio-supply = <®_dldo1>; -+ }; -+ -+ /* Accelerometer/gyroscope */ -+ mpu6050@68 { -+ compatible = "invensense,mpu6050"; -+ reg = <0x68>; -+ interrupt-parent = <&pio>; -+ interrupts = <7 5 IRQ_TYPE_EDGE_RISING>; /* PH5 */ -+ vdd-supply = <®_dldo1>; -+ vddio-supply = <®_dldo1>; -+ }; -+}; -+ -+/* Connected to pogo pins (external spring based pinheader for user addons) */ -+&i2c2 { -+ status = "okay"; -+}; -+ -+&lradc { -+ vref-supply = <®_aldo3>; -+ status = "okay"; -+ -+ button-200 { -+ label = "Volume Up"; -+ linux,code = ; -+ channel = <0>; -+ voltage = <200000>; -+ }; -+ -+ button-400 { -+ label = "Volume Down"; -+ linux,code = ; -+ channel = <0>; -+ voltage = <400000>; -+ }; -+}; -+ -+&mmc0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc0_pins>; -+ vmmc-supply = <®_dcdc1>; -+ vqmmc-supply = <®_dcdc1>; -+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ -+ disable-wp; -+ bus-width = <4>; -+ status = "okay"; -+}; -+ -+&mmc2 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc2_pins>; -+ vmmc-supply = <®_dcdc1>; -+ vqmmc-supply = <®_dcdc1>; -+ bus-width = <8>; -+ non-removable; -+ cap-mmc-hw-reset; -+ status = "okay"; -+}; -+ -+&ohci0 { -+ status = "okay"; -+}; -+ -+&ohci1 { -+ status = "okay"; -+}; -+ -+&pio { -+ vcc-pb-supply = <®_dcdc1>; -+ vcc-pc-supply = <®_dcdc1>; -+ vcc-pd-supply = <®_dcdc1>; -+ vcc-pe-supply = <®_aldo1>; -+ vcc-pf-supply = <®_dcdc1>; -+ vcc-pg-supply = <®_dldo4>; -+ vcc-ph-supply = <®_dcdc1>; -+}; -+ -+&r_pio { -+ /* -+ * FIXME: We can't add that supply for now since it would -+ * create a circular dependency between pinctrl, the regulator -+ * and the RSB Bus. -+ * -+ * vcc-pl-supply = <®_aldo2>; -+ */ -+}; -+ -+&r_rsb { -+ status = "okay"; -+ -+ axp803: pmic@3a3 { -+ compatible = "x-powers,axp803"; -+ reg = <0x3a3>; -+ interrupt-parent = <&r_intc>; -+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ }; -+}; -+ -+#include "axp803.dtsi" -+ -+&ac_power_supply { -+ status = "okay"; -+}; -+ -+&battery_power_supply { -+ status = "okay"; -+}; -+ -+®_aldo1 { -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "dovdd-csi"; -+}; -+ -+®_aldo2 { -+ regulator-always-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "vcc-pl"; -+}; -+ -+®_aldo3 { -+ regulator-always-on; -+ regulator-min-microvolt = <2700000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-pll-avcc"; -+}; -+ -+®_dcdc1 { -+ regulator-always-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-3v3"; -+}; -+ -+®_dcdc2 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1300000>; -+ regulator-name = "vdd-cpux"; -+}; -+ -+/* DCDC3 is polyphased with DCDC2 */ -+ -+®_dcdc5 { -+ regulator-always-on; -+ regulator-min-microvolt = <1200000>; -+ regulator-max-microvolt = <1200000>; -+ regulator-name = "vcc-dram"; -+}; -+ -+®_dcdc6 { -+ regulator-always-on; -+ regulator-min-microvolt = <1100000>; -+ regulator-max-microvolt = <1100000>; -+ regulator-name = "vdd-sys"; -+}; -+ -+®_dldo1 { -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-dsi-sensor"; -+}; -+ -+®_dldo2 { -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "vcc-mipi-io"; -+}; -+ -+®_dldo3 { -+ regulator-min-microvolt = <2800000>; -+ regulator-max-microvolt = <2800000>; -+ regulator-name = "avdd-csi"; -+}; -+ -+®_dldo4 { -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-wifi-io"; -+}; -+ -+®_eldo1 { -+ regulator-always-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "vcc-lpddr"; -+}; -+ -+®_eldo3 { -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "dvdd-1v8-csi"; -+}; -+ -+®_fldo1 { -+ regulator-min-microvolt = <1200000>; -+ regulator-max-microvolt = <1200000>; -+ regulator-name = "vcc-1v2-hsic"; -+}; -+ -+®_fldo2 { -+ regulator-always-on; -+ regulator-min-microvolt = <1100000>; -+ regulator-max-microvolt = <1100000>; -+ regulator-name = "vdd-cpus"; -+}; -+ -+®_ldo_io0 { -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-lcd-ctp-stk"; -+ status = "okay"; -+}; -+ -+®_ldo_io1 { -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "vcc-1v8-typec"; -+ status = "okay"; -+}; -+ -+®_rtc_ldo { -+ regulator-name = "vcc-rtc"; -+}; -+ -+&sound { -+ status = "okay"; -+ simple-audio-card,aux-devs = <&codec_analog>, <&speaker_amp>; -+ simple-audio-card,widgets = "Microphone", "Headset Microphone", -+ "Microphone", "Internal Microphone", -+ "Headphone", "Headphone Jack", -+ "Speaker", "Internal Earpiece", -+ "Speaker", "Internal Speaker"; -+ simple-audio-card,routing = -+ "Headphone Jack", "HP", -+ "Internal Earpiece", "EARPIECE", -+ "Internal Speaker", "Speaker Amp OUTL", -+ "Internal Speaker", "Speaker Amp OUTR", -+ "Speaker Amp INL", "LINEOUT", -+ "Speaker Amp INR", "LINEOUT", -+ "Left DAC", "AIF1 Slot 0 Left", -+ "Right DAC", "AIF1 Slot 0 Right", -+ "AIF1 Slot 0 Left ADC", "Left ADC", -+ "AIF1 Slot 0 Right ADC", "Right ADC", -+ "Internal Microphone", "MBIAS", -+ "MIC1", "Internal Microphone", -+ "Headset Microphone", "HBIAS", -+ "MIC2", "Headset Microphone"; -+}; -+ -+&uart0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart0_pb_pins>; -+ status = "okay"; -+}; -+ -+/* Connected to the modem (hardware flow control can't be used) */ -+&uart3 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart3_pins>; -+ status = "okay"; -+}; -+ -+&usb_otg { -+ dr_mode = "peripheral"; -+ status = "okay"; -+}; -+ -+&usb_power_supply { -+ status = "okay"; -+}; -+ -+&usbphy { -+ status = "okay"; -+}; --- -2.26.2 - -From bed9375bf6d11bdbf08839135541c44d80189384 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Wed, 9 Sep 2020 11:19:09 +0100 -Subject: [PATCH] pinephone dts sync to 5.9-rc1 - ---- - arch/arm/dts/sun50i-a64-pinephone-1.1.dts | 19 ++++++++ - arch/arm/dts/sun50i-a64-pinephone.dtsi | 54 ++++++++++++++++++++++- - 2 files changed, 71 insertions(+), 2 deletions(-) - -diff --git a/arch/arm/dts/sun50i-a64-pinephone-1.1.dts b/arch/arm/dts/sun50i-a64-pinephone-1.1.dts -index 06a775c416..3e99a87e9c 100644 ---- a/arch/arm/dts/sun50i-a64-pinephone-1.1.dts -+++ b/arch/arm/dts/sun50i-a64-pinephone-1.1.dts -@@ -9,3 +9,22 @@ - model = "Pine64 PinePhone Braveheart (1.1)"; - compatible = "pine64,pinephone-1.1", "allwinner,sun50i-a64"; - }; -+ -+&backlight { -+ power-supply = <®_ldo_io0>; -+ /* -+ * PWM backlight circuit on this PinePhone revision was changed since -+ * 1.0, and the lowest PWM duty cycle that doesn't lead to backlight -+ * being off is around 20%. Duty cycle for the lowest brightness level -+ * also varries quite a bit between individual boards, so the lowest -+ * value here was chosen as a safe default. -+ */ -+ brightness-levels = < -+ 774 793 814 842 -+ 882 935 1003 1088 -+ 1192 1316 1462 1633 -+ 1830 2054 2309 2596 -+ 2916 3271 3664 4096>; -+ num-interpolated-steps = <50>; -+ default-brightness-level = <400>; -+}; -diff --git a/arch/arm/dts/sun50i-a64-pinephone.dtsi b/arch/arm/dts/sun50i-a64-pinephone.dtsi -index cefda145c3..25150aba74 100644 ---- a/arch/arm/dts/sun50i-a64-pinephone.dtsi -+++ b/arch/arm/dts/sun50i-a64-pinephone.dtsi -@@ -16,6 +16,13 @@ - serial0 = &uart0; - }; - -+ backlight: backlight { -+ compatible = "pwm-backlight"; -+ pwms = <&r_pwm 0 50000 PWM_POLARITY_INVERTED>; -+ enable-gpios = <&pio 7 10 GPIO_ACTIVE_HIGH>; /* PH10 */ -+ /* Backlight configuration differs per PinePhone revision. */ -+ }; -+ - chosen { - stdout-path = "serial0:115200n8"; - }; -@@ -84,6 +91,28 @@ - status = "okay"; - }; - -+&de { -+ status = "okay"; -+}; -+ -+&dphy { -+ status = "okay"; -+}; -+ -+&dsi { -+ vcc-dsi-supply = <®_dldo1>; -+ status = "okay"; -+ -+ panel@0 { -+ compatible = "xingbangda,xbd599"; -+ reg = <0>; -+ reset-gpios = <&pio 3 23 GPIO_ACTIVE_LOW>; /* PD23 */ -+ iovcc-supply = <®_dldo2>; -+ vcc-supply = <®_ldo_io0>; -+ backlight = <&backlight>; -+ }; -+}; -+ - &ehci0 { - status = "okay"; - }; -@@ -92,11 +121,28 @@ - status = "okay"; - }; - -+&i2c0 { -+ status = "okay"; -+ -+ touchscreen@5d { -+ compatible = "goodix,gt917s"; -+ reg = <0x5d>; -+ interrupt-parent = <&pio>; -+ interrupts = <7 4 IRQ_TYPE_LEVEL_HIGH>; /* PH4 */ -+ irq-gpios = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -+ reset-gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>; /* PH11 */ -+ AVDD28-supply = <®_ldo_io0>; -+ VDDIO-supply = <®_ldo_io0>; -+ touchscreen-size-x = <720>; -+ touchscreen-size-y = <1440>; -+ }; -+}; -+ - &i2c1 { - status = "okay"; - - /* Magnetometer */ -- lis3mdl@1e { -+ lis3mdl: lis3mdl@1e { - compatible = "st,lis3mdl-magn"; - reg = <0x1e>; - vdd-supply = <®_dldo1>; -@@ -188,6 +234,10 @@ - */ - }; - -+&r_pwm { -+ status = "okay"; -+}; -+ - &r_rsb { - status = "okay"; - -@@ -279,7 +329,7 @@ - - ®_dldo4 { - regulator-min-microvolt = <1800000>; -- regulator-max-microvolt = <3300000>; -+ regulator-max-microvolt = <1800000>; - regulator-name = "vcc-wifi-io"; - }; - --- -2.26.2 - -From ab4bad52587be7da4262d943f19b5db02a24a045 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Wed, 15 Jul 2020 13:14:09 +0100 -Subject: [PATCH 8/8] Initial Pine64 Pinephone support - -The Pine64 Pinephone is a smartphone based on the AllWinner A64 SoC. -It has the following features: -* 2GB LPDDR3 SDRAM -* 5.95 inch 1440x720 HD IPS capacitive touchscreen -* 16GB eMMC, mSD slot -* Quectel EG25 LTE Modem -* Realtek RTL8723CS WiFi/BT -* Front and read cameras -* Accelerometer, gyro, proximity, ambient light, compass sensors -* A USB Type-C, USB Host, DisplayPort alt mode output, 15W 5V 3A Quick Charge, follows USB PD specification - -Signed-off-by: Peter Robinson ---- - arch/arm/Kconfig | 2 +- - configs/pinephone_defconfig | 38 +++++++++++++++++++++++++++++++++++++ - 2 files changed, 39 insertions(+), 1 deletion(-) - create mode 100644 configs/pinephone_defconfig - -diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig -index e16fe03887..636ba26938 100644 ---- a/arch/arm/Kconfig -+++ b/arch/arm/Kconfig -@@ -1004,7 +1004,7 @@ config ARCH_SUNXI - bool "Support sunxi (Allwinner) SoCs" - select BINMAN - select CMD_GPIO -- select CMD_MMC if MMC -+select CMD_MMC if MMC - select CMD_USB if DISTRO_DEFAULTS - select CLK - select DM -diff --git a/configs/pinephone_defconfig b/configs/pinephone_defconfig -new file mode 100644 -index 0000000000..d5750aa954 ---- /dev/null -+++ b/configs/pinephone_defconfig -@@ -0,0 +1,39 @@ -+CONFIG_ARM=y -+CONFIG_ARCH_SUNXI=y -+CONFIG_SPL=y -+CONFIG_MACH_SUN50I=y -+CONFIG_SUNXI_DRAM_LPDDR3_STOCK=y -+CONFIG_DRAM_CLK=552 -+CONFIG_DRAM_ZQ=3881949 -+CONFIG_NR_DRAM_BANKS=1 -+CONFIG_MMC_SUNXI_SLOT_EXTRA=2 -+CONFIG_R_I2C_ENABLE=y -+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set -+# CONFIG_SPL_SPI_SUNXI is not set -+# CONFIG_SPL_DOS_PARTITION is not set -+# CONFIG_SPL_EFI_PARTITION is not set -+CONFIG_PINEPHONE_DT_SELECTION=y -+CONFIG_DEFAULT_DEVICE_TREE="sun50i-a64-pinephone-1.2" -+CONFIG_OF_LIST=" sun50i-a64-pinephone-1.2 sun50i-a64-pinephone-1.1 sun50i-a64-pinephone-1.0" -+CONFIG_SYS_RELOC_GD_ENV_ADDR=y -+CONFIG_DM_REGULATOR=y -+CONFIG_DM_REGULATOR_FIXED=y -+CONFIG_DM_PWM=y -+CONFIG_PWM_SUNXI=y -+CONFIG_CMD_GPIO=y -+CONFIG_CMD_GPT=y -+CONFIG_CMD_I2C=y -+CONFIG_CMD_MMC=y -+# CONFIG_CMD_MII is not set -+# CONFIG_CMD_NFS is not set -+# CONFIG_DM_ETH is not set -+# CONFIG_PHY is not set -+# CONFIG_PHY_GIGE is not set -+# CONFIG_SUN8I_EMAC is not set -+# CONFIG_PHY_REALTEK is not set -+# CONFIG_CMD_SF is not set -+# CONFIG_SPI is not set -+# CONFIG_DM_SPI is not set -+# CONFIG_SPI_FLASH is not set -+# CONFIG_SPI_MEM is not set -+# CONFIG_DM_SPI_FLASH is not set --- -2.26.2 diff --git a/AllWinner-PineTab.patch b/AllWinner-PineTab.patch index ce569e7..04b6896 100644 --- a/AllWinner-PineTab.patch +++ b/AllWinner-PineTab.patch @@ -1,496 +1,3 @@ -From 9b10863bc8b14ca5463a95dd2c77555cfc68f326 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Wed, 9 Sep 2020 10:59:31 +0100 -Subject: [PATCH] Initial PineTab dts from linux 5.7-rc1 - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/Makefile | 1 + - arch/arm/dts/sun50i-a64-pinetab.dts | 460 ++++++++++++++++++++++++++++ - 2 files changed, 461 insertions(+) - create mode 100644 arch/arm/dts/sun50i-a64-pinetab.dts - -diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile -index 193f5c6138..57ef94450a 100644 ---- a/arch/arm/dts/Makefile -+++ b/arch/arm/dts/Makefile -@@ -611,6 +611,7 @@ dtb-$(CONFIG_MACH_SUN50I) += \ - sun50i-a64-pinephone-1.0.dtb \ - sun50i-a64-pinephone-1.1.dtb \ - sun50i-a64-pinephone-1.2.dtb \ -+ sun50i-a64-pinetab.dtb \ - sun50i-a64-sopine-baseboard.dtb \ - sun50i-a64-teres-i.dtb - dtb-$(CONFIG_MACH_SUN9I) += \ -diff --git a/arch/arm/dts/sun50i-a64-pinetab.dts b/arch/arm/dts/sun50i-a64-pinetab.dts -new file mode 100644 -index 0000000000..316e8a4439 ---- /dev/null -+++ b/arch/arm/dts/sun50i-a64-pinetab.dts -@@ -0,0 +1,460 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+/* -+ * Copyright (C) 2019 Icenowy Zheng -+ * -+ */ -+ -+/dts-v1/; -+ -+#include "sun50i-a64.dtsi" -+#include "sun50i-a64-cpu-opp.dtsi" -+ -+#include -+#include -+#include -+ -+/ { -+ model = "PineTab"; -+ compatible = "pine64,pinetab", "allwinner,sun50i-a64"; -+ -+ aliases { -+ serial0 = &uart0; -+ ethernet0 = &rtl8723cs; -+ }; -+ -+ backlight: backlight { -+ compatible = "pwm-backlight"; -+ pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>; -+ brightness-levels = <0 16 18 20 22 24 26 29 32 35 38 42 46 51 56 62 68 75 83 91 100>; -+ default-brightness-level = <15>; -+ enable-gpios = <&pio 3 23 GPIO_ACTIVE_HIGH>; /* PD23 */ -+ power-supply = <&vdd_bl>; -+ }; -+ -+ chosen { -+ stdout-path = "serial0:115200n8"; -+ }; -+ -+ i2c-csi { -+ compatible = "i2c-gpio"; -+ sda-gpios = <&pio 4 13 GPIO_ACTIVE_HIGH>; /* PE13 */ -+ scl-gpios = <&pio 4 12 GPIO_ACTIVE_HIGH>; /* PE12 */ -+ i2c-gpio,delay-us = <5>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ /* Rear camera */ -+ ov5640: camera@3c { -+ compatible = "ovti,ov5640"; -+ reg = <0x3c>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&csi_mclk_pin>; -+ clocks = <&ccu CLK_CSI_MCLK>; -+ clock-names = "xclk"; -+ -+ AVDD-supply = <®_dldo3>; -+ DOVDD-supply = <®_aldo1>; -+ DVDD-supply = <®_eldo3>; -+ reset-gpios = <&pio 4 14 GPIO_ACTIVE_LOW>; /* PE14 */ -+ powerdown-gpios = <&pio 4 15 GPIO_ACTIVE_HIGH>; /* PE15 */ -+ -+ port { -+ ov5640_ep: endpoint { -+ remote-endpoint = <&csi_ep>; -+ bus-width = <8>; -+ hsync-active = <1>; /* Active high */ -+ vsync-active = <0>; /* Active low */ -+ data-active = <1>; /* Active high */ -+ pclk-sample = <1>; /* Rising */ -+ }; -+ }; -+ }; -+ }; -+ -+ speaker_amp: audio-amplifier { -+ compatible = "simple-audio-amplifier"; -+ enable-gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */ -+ sound-name-prefix = "Speaker Amp"; -+ }; -+ -+ vdd_bl: regulator@0 { -+ compatible = "regulator-fixed"; -+ regulator-name = "bl-3v3"; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ gpio = <&pio 7 6 GPIO_ACTIVE_HIGH>; /* PH6 */ -+ enable-active-high; -+ }; -+ -+ wifi_pwrseq: wifi_pwrseq { -+ compatible = "mmc-pwrseq-simple"; -+ reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */ -+ post-power-on-delay-ms = <200>; -+ }; -+}; -+ -+&codec { -+ status = "okay"; -+}; -+ -+&codec_analog { -+ hpvcc-supply = <®_eldo1>; -+ status = "okay"; -+}; -+ -+&cpu0 { -+ cpu-supply = <®_dcdc2>; -+}; -+ -+&cpu1 { -+ cpu-supply = <®_dcdc2>; -+}; -+ -+&cpu2 { -+ cpu-supply = <®_dcdc2>; -+}; -+ -+&cpu3 { -+ cpu-supply = <®_dcdc2>; -+}; -+ -+&csi { -+ status = "okay"; -+ -+ port { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ csi_ep: endpoint { -+ remote-endpoint = <&ov5640_ep>; -+ bus-width = <8>; -+ hsync-active = <1>; /* Active high */ -+ vsync-active = <0>; /* Active low */ -+ data-active = <1>; /* Active high */ -+ pclk-sample = <1>; /* Rising */ -+ }; -+ }; -+}; -+ -+&dai { -+ status = "okay"; -+}; -+ -+&de { -+ status = "okay"; -+}; -+ -+&dphy { -+ status = "okay"; -+}; -+ -+&dsi { -+ vcc-dsi-supply = <®_dldo1>; -+ status = "okay"; -+ -+ panel@0 { -+ compatible = "feixin,k101-im2ba02"; -+ reg = <0>; -+ avdd-supply = <®_dc1sw>; -+ dvdd-supply = <®_dc1sw>; -+ cvdd-supply = <®_ldo_io1>; -+ reset-gpios = <&pio 3 24 GPIO_ACTIVE_HIGH>; /* PD24 */ -+ backlight = <&backlight>; -+ }; -+}; -+ -+&ehci0 { -+ status = "okay"; -+}; -+ -+&ehci1 { -+ status = "okay"; -+}; -+ -+&i2c0 { -+ status = "okay"; -+ -+ touchscreen@5d { -+ compatible = "goodix,gt9271"; -+ reg = <0x5d>; -+ interrupt-parent = <&pio>; -+ interrupts = <7 4 IRQ_TYPE_LEVEL_HIGH>; /* PH4 */ -+ irq-gpios = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -+ reset-gpios = <&pio 7 8 GPIO_ACTIVE_HIGH>; /* PH8 */ -+ AVDD28-supply = <®_ldo_io1>; -+ }; -+}; -+ -+&i2c0_pins { -+ bias-pull-up; -+}; -+ -+&i2c1 { -+ status = "okay"; -+ -+ /* TODO: add Bochs BMA223 accelerometer here */ -+}; -+ -+&lradc { -+ vref-supply = <®_aldo3>; -+ status = "okay"; -+ -+ button-200 { -+ label = "Volume Up"; -+ linux,code = ; -+ channel = <0>; -+ voltage = <200000>; -+ }; -+ -+ button-400 { -+ label = "Volume Down"; -+ linux,code = ; -+ channel = <0>; -+ voltage = <400000>; -+ }; -+}; -+ -+&mixer1 { -+ status = "okay"; -+}; -+ -+&mmc0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc0_pins>; -+ vmmc-supply = <®_dcdc1>; -+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; -+ disable-wp; -+ bus-width = <4>; -+ status = "okay"; -+}; -+ -+&mmc1 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc1_pins>; -+ vmmc-supply = <®_dldo4>; -+ vqmmc-supply = <®_eldo1>; -+ mmc-pwrseq = <&wifi_pwrseq>; -+ bus-width = <4>; -+ non-removable; -+ status = "okay"; -+ -+ rtl8723cs: wifi@1 { -+ reg = <1>; -+ }; -+}; -+ -+&mmc2 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc2_pins>; -+ vmmc-supply = <®_dcdc1>; -+ vqmmc-supply = <®_dcdc1>; -+ bus-width = <8>; -+ non-removable; -+ cap-mmc-hw-reset; -+ status = "okay"; -+}; -+ -+&ohci0 { -+ status = "okay"; -+}; -+ -+&pwm { -+ status = "okay"; -+}; -+ -+&r_rsb { -+ status = "okay"; -+ -+ axp803: pmic@3a3 { -+ compatible = "x-powers,axp803"; -+ reg = <0x3a3>; -+ interrupt-parent = <&r_intc>; -+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ x-powers,drive-vbus-en; -+ }; -+}; -+ -+#include "axp803.dtsi" -+ -+&ac_power_supply { -+ status = "okay"; -+}; -+ -+&battery_power_supply { -+ status = "okay"; -+}; -+ -+®_aldo1 { -+ regulator-min-microvolt = <2800000>; -+ regulator-max-microvolt = <2800000>; -+ regulator-name = "dovdd-csi"; -+}; -+ -+®_aldo2 { -+ regulator-always-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-pl"; -+}; -+ -+®_aldo3 { -+ regulator-always-on; -+ regulator-min-microvolt = <2700000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-pll-avcc"; -+}; -+ -+®_dc1sw { -+ regulator-name = "vcc-lcd"; -+}; -+ -+®_dcdc1 { -+ regulator-always-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-3v3"; -+}; -+ -+®_dcdc2 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1300000>; -+ regulator-name = "vdd-cpux"; -+}; -+ -+/* DCDC3 is polyphased with DCDC2 */ -+ -+®_dcdc5 { -+ regulator-always-on; -+ regulator-min-microvolt = <1200000>; -+ regulator-max-microvolt = <1200000>; -+ regulator-name = "vcc-dram"; -+}; -+ -+®_dcdc6 { -+ regulator-always-on; -+ regulator-min-microvolt = <1100000>; -+ regulator-max-microvolt = <1100000>; -+ regulator-name = "vdd-sys"; -+}; -+ -+®_dldo1 { -+ regulator-always-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-hdmi-dsi-sensor"; -+}; -+ -+®_dldo3 { -+ regulator-min-microvolt = <2800000>; -+ regulator-max-microvolt = <2800000>; -+ regulator-name = "avdd-csi"; -+}; -+ -+®_dldo4 { -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-wifi"; -+}; -+ -+®_drivevbus { -+ regulator-name = "usb0-vbus"; -+ status = "okay"; -+}; -+ -+®_eldo1 { -+ regulator-always-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "cpvdd"; -+}; -+ -+®_eldo2 { -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "vcca-1v8"; -+}; -+ -+®_eldo3 { -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-name = "dvdd-1v8-csi"; -+}; -+ -+®_fldo1 { -+ regulator-min-microvolt = <1200000>; -+ regulator-max-microvolt = <1200000>; -+ regulator-name = "vcc-1v2-hsic"; -+}; -+ -+®_fldo2 { -+ regulator-always-on; -+ regulator-min-microvolt = <1100000>; -+ regulator-max-microvolt = <1100000>; -+ regulator-name = "vdd-cpus"; -+}; -+ -+®_ldo_io0 { -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-usb"; -+ status = "okay"; -+}; -+ -+®_ldo_io1 { -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-enable-ramp-delay = <3500000>; -+ regulator-name = "vcc-touchscreen"; -+ status = "okay"; -+}; -+ -+®_rtc_ldo { -+ regulator-name = "vcc-rtc"; -+}; -+ -+&sound { -+ status = "okay"; -+ simple-audio-card,aux-devs = <&codec_analog>, <&speaker_amp>; -+ simple-audio-card,widgets = "Microphone", "Internal Microphone Left", -+ "Microphone", "Internal Microphone Right", -+ "Headphone", "Headphone Jack", -+ "Speaker", "Internal Speaker"; -+ simple-audio-card,routing = -+ "Left DAC", "AIF1 Slot 0 Left", -+ "Right DAC", "AIF1 Slot 0 Right", -+ "Speaker Amp INL", "LINEOUT", -+ "Speaker Amp INR", "LINEOUT", -+ "Internal Speaker", "Speaker Amp OUTL", -+ "Internal Speaker", "Speaker Amp OUTR", -+ "Headphone Jack", "HP", -+ "AIF1 Slot 0 Left ADC", "Left ADC", -+ "AIF1 Slot 0 Right ADC", "Right ADC", -+ "Internal Microphone Left", "MBIAS", -+ "MIC1", "Internal Microphone Left", -+ "Internal Microphone Right", "HBIAS", -+ "MIC2", "Internal Microphone Right"; -+}; -+ -+&uart0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart0_pb_pins>; -+ status = "okay"; -+}; -+ -+&usb_otg { -+ dr_mode = "otg"; -+ status = "okay"; -+}; -+ -+&usb_power_supply { -+ status = "okay"; -+}; -+ -+&usbphy { -+ usb0_id_det-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */ -+ usb0_vbus_power-supply = <&usb_power_supply>; -+ usb0_vbus-supply = <®_drivevbus>; -+ usb1_vbus-supply = <®_ldo_io0>; -+ status = "okay"; -+}; --- -2.26.2 - From 6bf15552c2b6becb48ce7732120e0ddb2078cb1a Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 14 Apr 2020 09:53:07 +0100 diff --git a/AllWinner-UpstreamSync.patch b/AllWinner-UpstreamSync.patch deleted file mode 100644 index 0b6bac4..0000000 --- a/AllWinner-UpstreamSync.patch +++ /dev/null @@ -1,1297 +0,0 @@ -From 6e5d771060dff5350e5940b7e457884b47a560ac Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Thu, 9 Jul 2020 12:20:53 +0100 -Subject: [PATCH 1/8] dt-bindings: clk: sync sun50i-a64-ccu.h to linux 5.8-rc1 - -Sync the clock bindings for the Allwinner A64 to Linux - -Signed-off-by: Peter Robinson ---- - include/dt-bindings/clock/sun50i-a64-ccu.h | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/include/dt-bindings/clock/sun50i-a64-ccu.h b/include/dt-bindings/clock/sun50i-a64-ccu.h -index d66432c6e6..318eb15c41 100644 ---- a/include/dt-bindings/clock/sun50i-a64-ccu.h -+++ b/include/dt-bindings/clock/sun50i-a64-ccu.h -@@ -43,8 +43,10 @@ - #ifndef _DT_BINDINGS_CLK_SUN50I_A64_H_ - #define _DT_BINDINGS_CLK_SUN50I_A64_H_ - -+#define CLK_PLL_VIDEO0 7 - #define CLK_PLL_PERIPH0 11 - -+#define CLK_CPUX 21 - #define CLK_BUS_MIPI_DSI 28 - #define CLK_BUS_CE 29 - #define CLK_BUS_DMA 30 -@@ -129,7 +131,7 @@ - #define CLK_AVS 109 - #define CLK_HDMI 110 - #define CLK_HDMI_DDC 111 -- -+#define CLK_MBUS 112 - #define CLK_DSI_DPHY 113 - #define CLK_GPU 114 - --- -2.26.2 - -From 274dff055e80778277860f72a903c01ef33f87c7 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Thu, 9 Jul 2020 12:29:15 +0100 -Subject: [PATCH 2/8] dt-bindings: leds: sync leds common.h to linux from - 5.8-rc1 - -Sync the leds common.h to the latest Linux version. - -Signed-off-by: Peter Robinson ---- - include/dt-bindings/leds/common.h | 36 ++++++++++++++++++++++--------- - 1 file changed, 26 insertions(+), 10 deletions(-) - -diff --git a/include/dt-bindings/leds/common.h b/include/dt-bindings/leds/common.h -index 9e1256a7c1..0ce7dfc00d 100644 ---- a/include/dt-bindings/leds/common.h -+++ b/include/dt-bindings/leds/common.h -@@ -6,6 +6,7 @@ - * Author: Jacek Anaszewski - * - * Copyright (C) 2019 Jacek Anaszewski -+ * Copyright (C) 2020 Pavel Machek - */ - - #ifndef __DT_BINDINGS_LEDS_H -@@ -32,16 +33,38 @@ - #define LED_COLOR_ID_MAX 8 - - /* Standard LED functions */ -+/* Keyboard LEDs, usually it would be input4::capslock etc. */ -+/* Obsolete equivalent: "shift-key-light" */ -+#define LED_FUNCTION_CAPSLOCK "capslock" -+#define LED_FUNCTION_SCROLLLOCK "scrolllock" -+#define LED_FUNCTION_NUMLOCK "numlock" -+/* Obsolete equivalents: "tpacpi::thinklight" (IBM/Lenovo Thinkpads), -+ "lp5523:kb{1,2,3,4,5,6}" (Nokia N900) */ -+#define LED_FUNCTION_KBD_BACKLIGHT "kbd_backlight" -+ -+/* System LEDs, usually found on system body. -+ platform::mute (etc) is sometimes seen, :mute would be better */ -+#define LED_FUNCTION_POWER "power" -+#define LED_FUNCTION_DISK "disk" -+ -+/* Obsolete: "platform:*:charging" (allwinner sun50i) */ -+#define LED_FUNCTION_CHARGING "charging" -+/* Used RGB notification LEDs common on phones. -+ Obsolete equivalents: "status-led:{red,green,blue}" (Motorola Droid 4), -+ "lp5523:{r,g,b}" (Nokia N900) */ -+#define LED_FUNCTION_STATUS "status" -+ -+#define LED_FUNCTION_MICMUTE "micmute" -+#define LED_FUNCTION_MUTE "mute" -+ -+/* Miscelleaus functions. Use functions above if you can. */ - #define LED_FUNCTION_ACTIVITY "activity" - #define LED_FUNCTION_ALARM "alarm" - #define LED_FUNCTION_BACKLIGHT "backlight" - #define LED_FUNCTION_BLUETOOTH "bluetooth" - #define LED_FUNCTION_BOOT "boot" - #define LED_FUNCTION_CPU "cpu" --#define LED_FUNCTION_CAPSLOCK "capslock" --#define LED_FUNCTION_CHARGING "charging" - #define LED_FUNCTION_DEBUG "debug" --#define LED_FUNCTION_DISK "disk" - #define LED_FUNCTION_DISK_ACTIVITY "disk-activity" - #define LED_FUNCTION_DISK_ERR "disk-err" - #define LED_FUNCTION_DISK_READ "disk-read" -@@ -50,21 +73,14 @@ - #define LED_FUNCTION_FLASH "flash" - #define LED_FUNCTION_HEARTBEAT "heartbeat" - #define LED_FUNCTION_INDICATOR "indicator" --#define LED_FUNCTION_KBD_BACKLIGHT "kbd_backlight" - #define LED_FUNCTION_LAN "lan" - #define LED_FUNCTION_MAIL "mail" - #define LED_FUNCTION_MTD "mtd" --#define LED_FUNCTION_MICMUTE "micmute" --#define LED_FUNCTION_MUTE "mute" --#define LED_FUNCTION_NUMLOCK "numlock" - #define LED_FUNCTION_PANIC "panic" - #define LED_FUNCTION_PROGRAMMING "programming" --#define LED_FUNCTION_POWER "power" - #define LED_FUNCTION_RX "rx" - #define LED_FUNCTION_SD "sd" --#define LED_FUNCTION_SCROLLLOCK "scrolllock" - #define LED_FUNCTION_STANDBY "standby" --#define LED_FUNCTION_STATUS "status" - #define LED_FUNCTION_TORCH "torch" - #define LED_FUNCTION_TX "tx" - #define LED_FUNCTION_USB "usb" --- -2.26.2 - -From 7010e7d2b19d2ded674e376855d2716b7cd421b7 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Fri, 10 Jul 2020 12:46:11 +0100 -Subject: [PATCH 3/8] dt-bindings: clk/reset: sync updated bindings for - Allwinner DE2 display engine - -Sync the clock and reset bindings for the Allwinner DE2 display engine to Linux 5.8-rc1. - -Signed-off-by: Peter Robinson ---- - include/dt-bindings/clock/sun8i-de2.h | 3 +++ - include/dt-bindings/reset/sun8i-de2.h | 1 + - 2 files changed, 4 insertions(+) - -diff --git a/include/dt-bindings/clock/sun8i-de2.h b/include/dt-bindings/clock/sun8i-de2.h -index 3bed63b524..7768f73b05 100644 ---- a/include/dt-bindings/clock/sun8i-de2.h -+++ b/include/dt-bindings/clock/sun8i-de2.h -@@ -15,4 +15,7 @@ - #define CLK_MIXER1 7 - #define CLK_WB 8 - -+#define CLK_BUS_ROT 9 -+#define CLK_ROT 10 -+ - #endif /* _DT_BINDINGS_CLOCK_SUN8I_DE2_H_ */ -diff --git a/include/dt-bindings/reset/sun8i-de2.h b/include/dt-bindings/reset/sun8i-de2.h -index 9526017432..1c36a6ac86 100644 ---- a/include/dt-bindings/reset/sun8i-de2.h -+++ b/include/dt-bindings/reset/sun8i-de2.h -@@ -10,5 +10,6 @@ - #define RST_MIXER0 0 - #define RST_MIXER1 1 - #define RST_WB 2 -+#define RST_ROT 3 - - #endif /* _DT_BINDINGS_RESET_SUN8I_DE2_H_ */ --- -2.26.2 - -From bdbf5f21343571af989754c908299854e81f44dd Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Thu, 9 Jul 2020 12:24:41 +0100 -Subject: [PATCH 4/8] arm: dts: sync axp803.dtsi from linux 5.8-rc1 - -Sync the Allwinner axp803 device tree to the latest upstream Linux. - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/axp803.dtsi | 82 ++++++++++++++++++++-------------------- - 1 file changed, 41 insertions(+), 41 deletions(-) - -diff --git a/arch/arm/dts/axp803.dtsi b/arch/arm/dts/axp803.dtsi -index e5eae8bafc..10e9186a76 100644 ---- a/arch/arm/dts/axp803.dtsi -+++ b/arch/arm/dts/axp803.dtsi -@@ -1,44 +1,5 @@ --/* -- * Copyright 2017 Icenowy Zheng -- * -- * This file is dual-licensed: you can use it either under the terms -- * of the GPL or the X11 license, at your option. Note that this dual -- * licensing only applies to this file, and not this project as a -- * whole. -- * -- * a) This file is free software; you can redistribute it and/or -- * modify it under the terms of the GNU General Public License as -- * published by the Free Software Foundation; either version 2 of the -- * License, or (at your option) any later version. -- * -- * This file is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU General Public License for more details. -- * -- * Or, alternatively, -- * -- * b) Permission is hereby granted, free of charge, to any person -- * obtaining a copy of this software and associated documentation -- * files (the "Software"), to deal in the Software without -- * restriction, including without limitation the rights to use, -- * copy, modify, merge, publish, distribute, sublicense, and/or -- * sell copies of the Software, and to permit persons to whom the -- * Software is furnished to do so, subject to the following -- * conditions: -- * -- * The above copyright notice and this permission notice shall be -- * included in all copies or substantial portions of the Software. -- * -- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -- * OTHER DEALINGS IN THE SOFTWARE. -- */ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+// Copyright 2017 Icenowy Zheng - - /* - * AXP803 Integrated Power Management Chip -@@ -49,6 +10,39 @@ - interrupt-controller; - #interrupt-cells = <1>; - -+ ac_power_supply: ac-power-supply { -+ compatible = "x-powers,axp803-ac-power-supply", -+ "x-powers,axp813-ac-power-supply"; -+ status = "disabled"; -+ }; -+ -+ axp_adc: adc { -+ compatible = "x-powers,axp803-adc", "x-powers,axp813-adc"; -+ #io-channel-cells = <1>; -+ }; -+ -+ axp_gpio: gpio { -+ compatible = "x-powers,axp803-gpio", "x-powers,axp813-gpio"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ -+ gpio0_ldo: gpio0-ldo { -+ pins = "GPIO0"; -+ function = "ldo"; -+ }; -+ -+ gpio1_ldo: gpio1-ldo { -+ pins = "GPIO1"; -+ function = "ldo"; -+ }; -+ }; -+ -+ battery_power_supply: battery-power-supply { -+ compatible = "x-powers,axp803-battery-power-supply", -+ "x-powers,axp813-battery-power-supply"; -+ status = "disabled"; -+ }; -+ - regulators { - /* Default work frequency for buck regulators */ - x-powers,dcdc-freq = <3000>; -@@ -152,4 +146,10 @@ - status = "disabled"; - }; - }; -+ -+ usb_power_supply: usb-power-supply { -+ compatible = "x-powers,axp803-usb-power-supply", -+ "x-powers,axp813-usb-power-supply"; -+ status = "disabled"; -+ }; - }; --- -2.26.2 - -From e0f7e9ce1a8a889bf7a1c5842700f0cb368bc81b Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Thu, 9 Jul 2020 12:26:34 +0100 -Subject: [PATCH 5/8] arm: dts: Add new sun50i-a64-cpu-opp.dtsi from Linux - 5.8-rc1 - -Sync the Allwinner A64 CPU operating points dtsi from Linux. - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/sun50i-a64-cpu-opp.dtsi | 75 ++++++++++++++++++++++++++++ - 1 file changed, 75 insertions(+) - create mode 100644 arch/arm/dts/sun50i-a64-cpu-opp.dtsi - -diff --git a/arch/arm/dts/sun50i-a64-cpu-opp.dtsi b/arch/arm/dts/sun50i-a64-cpu-opp.dtsi -new file mode 100644 -index 0000000000..578c37490d ---- /dev/null -+++ b/arch/arm/dts/sun50i-a64-cpu-opp.dtsi -@@ -0,0 +1,75 @@ -+// SPDX-License-Identifier: GPL-2.0 -+/* -+ * Copyright (C) 2020 Vasily khoruzhick -+ */ -+ -+/ { -+ cpu0_opp_table: opp_table0 { -+ compatible = "operating-points-v2"; -+ opp-shared; -+ -+ opp-648000000 { -+ opp-hz = /bits/ 64 <648000000>; -+ opp-microvolt = <1040000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-816000000 { -+ opp-hz = /bits/ 64 <816000000>; -+ opp-microvolt = <1100000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-912000000 { -+ opp-hz = /bits/ 64 <912000000>; -+ opp-microvolt = <1120000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-960000000 { -+ opp-hz = /bits/ 64 <960000000>; -+ opp-microvolt = <1160000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1008000000 { -+ opp-hz = /bits/ 64 <1008000000>; -+ opp-microvolt = <1200000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1056000000 { -+ opp-hz = /bits/ 64 <1056000000>; -+ opp-microvolt = <1240000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1104000000 { -+ opp-hz = /bits/ 64 <1104000000>; -+ opp-microvolt = <1260000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ -+ opp-1152000000 { -+ opp-hz = /bits/ 64 <1152000000>; -+ opp-microvolt = <1300000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; -+ }; -+}; -+ -+&cpu0 { -+ operating-points-v2 = <&cpu0_opp_table>; -+}; -+ -+&cpu1 { -+ operating-points-v2 = <&cpu0_opp_table>; -+}; -+ -+&cpu2 { -+ operating-points-v2 = <&cpu0_opp_table>; -+}; -+ -+&cpu3 { -+ operating-points-v2 = <&cpu0_opp_table>; -+}; --- -2.26.2 - -From b077a5962ba631e198d42c14516426b878c157eb Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Fri, 10 Jul 2020 12:39:21 +0100 -Subject: [PATCH 6/8] arm: dts: Sync the sun50i-a64.dtsi from Linux 5.8-rc1 - -Sync the Allwinner A64 sun50i-a64.dtsi from Linux. - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/sun50i-a64.dtsi | 532 ++++++++++++++++++++++++++++------- - 1 file changed, 434 insertions(+), 98 deletions(-) - -diff --git a/arch/arm/dts/sun50i-a64.dtsi b/arch/arm/dts/sun50i-a64.dtsi -index ff41abc96a..8dfbcd1440 100644 ---- a/arch/arm/dts/sun50i-a64.dtsi -+++ b/arch/arm/dts/sun50i-a64.dtsi -@@ -1,46 +1,7 @@ --/* -- * Copyright (C) 2016 ARM Ltd. -- * based on the Allwinner H3 dtsi: -- * Copyright (C) 2015 Jens Kuske -- * -- * This file is dual-licensed: you can use it either under the terms -- * of the GPL or the X11 license, at your option. Note that this dual -- * licensing only applies to this file, and not this project as a -- * whole. -- * -- * a) This file is free software; you can redistribute it and/or -- * modify it under the terms of the GNU General Public License as -- * published by the Free Software Foundation; either version 2 of the -- * License, or (at your option) any later version. -- * -- * This file is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU General Public License for more details. -- * -- * Or, alternatively, -- * -- * b) Permission is hereby granted, free of charge, to any person -- * obtaining a copy of this software and associated documentation -- * files (the "Software"), to deal in the Software without -- * restriction, including without limitation the rights to use, -- * copy, modify, merge, publish, distribute, sublicense, and/or -- * sell copies of the Software, and to permit persons to whom the -- * Software is furnished to do so, subject to the following -- * conditions: -- * -- * The above copyright notice and this permission notice shall be -- * included in all copies or substantial portions of the Software. -- * -- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -- * OTHER DEALINGS IN THE SOFTWARE. -- */ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+// Copyright (C) 2016 ARM Ltd. -+// based on the Allwinner H3 dtsi: -+// Copyright (C) 2015 Jens Kuske - - #include - #include -@@ -49,6 +10,7 @@ - #include - #include - #include -+#include - - / { - interrupt-parent = <&gic>; -@@ -84,35 +46,47 @@ - #size-cells = <0>; - - cpu0: cpu@0 { -- compatible = "arm,cortex-a53", "arm,armv8"; -+ compatible = "arm,cortex-a53"; - device_type = "cpu"; - reg = <0>; - enable-method = "psci"; - next-level-cache = <&L2>; -+ clocks = <&ccu 21>; -+ clock-names = "cpu"; -+ #cooling-cells = <2>; - }; - - cpu1: cpu@1 { -- compatible = "arm,cortex-a53", "arm,armv8"; -+ compatible = "arm,cortex-a53"; - device_type = "cpu"; - reg = <1>; - enable-method = "psci"; - next-level-cache = <&L2>; -+ clocks = <&ccu 21>; -+ clock-names = "cpu"; -+ #cooling-cells = <2>; - }; - - cpu2: cpu@2 { -- compatible = "arm,cortex-a53", "arm,armv8"; -+ compatible = "arm,cortex-a53"; - device_type = "cpu"; - reg = <2>; - enable-method = "psci"; - next-level-cache = <&L2>; -+ clocks = <&ccu 21>; -+ clock-names = "cpu"; -+ #cooling-cells = <2>; - }; - - cpu3: cpu@3 { -- compatible = "arm,cortex-a53", "arm,armv8"; -+ compatible = "arm,cortex-a53"; - device_type = "cpu"; - reg = <3>; - enable-method = "psci"; - next-level-cache = <&L2>; -+ clocks = <&ccu 21>; -+ clock-names = "cpu"; -+ #cooling-cells = <2>; - }; - - L2: l2-cache { -@@ -139,15 +113,16 @@ - #clock-cells = <0>; - compatible = "fixed-clock"; - clock-frequency = <32768>; -- clock-output-names = "osc32k"; -+ clock-output-names = "ext-osc32k"; - }; - -- iosc: internal-osc-clk { -- #clock-cells = <0>; -- compatible = "fixed-clock"; -- clock-frequency = <16000000>; -- clock-accuracy = <300000000>; -- clock-output-names = "iosc"; -+ pmu { -+ compatible = "arm,cortex-a53-pmu"; -+ interrupts = , -+ , -+ , -+ ; -+ interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>; - }; - - psci { -@@ -155,26 +130,33 @@ - method = "smc"; - }; - -- sound_spdif { -+ sound: sound { - compatible = "simple-audio-card"; -- simple-audio-card,name = "On-board SPDIF"; -+ simple-audio-card,name = "sun50i-a64-audio"; -+ simple-audio-card,format = "i2s"; -+ simple-audio-card,frame-master = <&cpudai>; -+ simple-audio-card,bitclock-master = <&cpudai>; -+ simple-audio-card,mclk-fs = <128>; -+ simple-audio-card,aux-devs = <&codec_analog>; -+ simple-audio-card,routing = -+ "Left DAC", "AIF1 Slot 0 Left", -+ "Right DAC", "AIF1 Slot 0 Right", -+ "AIF1 Slot 0 Left ADC", "Left ADC", -+ "AIF1 Slot 0 Right ADC", "Right ADC"; -+ status = "disabled"; - -- simple-audio-card,cpu { -- sound-dai = <&spdif>; -+ cpudai: simple-audio-card,cpu { -+ sound-dai = <&dai>; - }; - -- simple-audio-card,codec { -- sound-dai = <&spdif_out>; -+ link_codec: simple-audio-card,codec { -+ sound-dai = <&codec>; - }; - }; - -- spdif_out: spdif-out { -- #sound-dai-cells = <0>; -- compatible = "linux,spdif-dit"; -- }; -- - timer { - compatible = "arm,armv8-timer"; -+ allwinner,erratum-unknown1; - interrupts = , - ; - }; - -+ thermal-zones { -+ cpu_thermal: cpu0-thermal { -+ /* milliseconds */ -+ polling-delay-passive = <0>; -+ polling-delay = <0>; -+ thermal-sensors = <&ths 0>; -+ -+ cooling-maps { -+ map0 { -+ trip = <&cpu_alert0>; -+ cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, -+ <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, -+ <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, -+ <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; -+ }; -+ map1 { -+ trip = <&cpu_alert1>; -+ cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, -+ <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, -+ <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, -+ <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; -+ }; -+ }; -+ -+ trips { -+ cpu_alert0: cpu_alert0 { -+ /* milliCelsius */ -+ temperature = <75000>; -+ hysteresis = <2000>; -+ type = "passive"; -+ }; -+ -+ cpu_alert1: cpu_alert1 { -+ /* milliCelsius */ -+ temperature = <90000>; -+ hysteresis = <2000>; -+ type = "hot"; -+ }; -+ -+ cpu_crit: cpu_crit { -+ /* milliCelsius */ -+ temperature = <110000>; -+ hysteresis = <2000>; -+ type = "critical"; -+ }; -+ }; -+ }; -+ -+ gpu0_thermal: gpu0-thermal { -+ /* milliseconds */ -+ polling-delay-passive = <0>; -+ polling-delay = <0>; -+ thermal-sensors = <&ths 1>; -+ }; -+ -+ gpu1_thermal: gpu1-thermal { -+ /* milliseconds */ -+ polling-delay-passive = <0>; -+ polling-delay = <0>; -+ thermal-sensors = <&ths 2>; -+ }; -+ }; -+ - soc { - compatible = "simple-bus"; - #address-cells = <1>; - #size-cells = <1>; - ranges; - -- de2@1000000 { -+ bus@1000000 { - compatible = "allwinner,sun50i-a64-de2"; - reg = <0x1000000 0x400000>; - allwinner,sram = <&de2_sram 1>; -@@ -201,16 +246,28 @@ - - display_clocks: clock@0 { - compatible = "allwinner,sun50i-a64-de2-clk"; -- reg = <0x0 0x100000>; -- clocks = <&ccu CLK_DE>, -- <&ccu CLK_BUS_DE>; -- clock-names = "mod", -- "bus"; -+ reg = <0x0 0x10000>; -+ clocks = <&ccu CLK_BUS_DE>, -+ <&ccu CLK_DE>; -+ clock-names = "bus", -+ "mod"; - resets = <&ccu RST_BUS_DE>; - #clock-cells = <1>; - #reset-cells = <1>; - }; - -+ rotate: rotate@20000 { -+ compatible = "allwinner,sun50i-a64-de2-rotate", -+ "allwinner,sun8i-a83t-de2-rotate"; -+ reg = <0x20000 0x10000>; -+ interrupts = ; -+ clocks = <&display_clocks CLK_BUS_ROT>, -+ <&display_clocks CLK_ROT>; -+ clock-names = "bus", -+ "mod"; -+ resets = <&display_clocks RST_ROT>; -+ }; -+ - mixer0: mixer@100000 { - compatible = "allwinner,sun50i-a64-de2-mixer-0"; - reg = <0x100000 0x100000>; -@@ -225,11 +282,19 @@ - #size-cells = <0>; - - mixer0_out: port@1 { -+ #address-cells = <1>; -+ #size-cells = <0>; - reg = <1>; - -- mixer0_out_tcon0: endpoint { -+ mixer0_out_tcon0: endpoint@0 { -+ reg = <0>; - remote-endpoint = <&tcon0_in_mixer0>; - }; -+ -+ mixer0_out_tcon1: endpoint@1 { -+ reg = <1>; -+ remote-endpoint = <&tcon1_in_mixer0>; -+ }; - }; - }; - }; -@@ -248,9 +313,17 @@ - #size-cells = <0>; - - mixer1_out: port@1 { -+ #address-cells = <1>; -+ #size-cells = <0>; - reg = <1>; - -- mixer1_out_tcon1: endpoint { -+ mixer1_out_tcon0: endpoint@0 { -+ reg = <0>; -+ remote-endpoint = <&tcon0_in_mixer1>; -+ }; -+ -+ mixer1_out_tcon1: endpoint@1 { -+ reg = <1>; - remote-endpoint = <&tcon1_in_mixer1>; - }; - }; -@@ -259,8 +332,7 @@ - }; - - syscon: syscon@1c00000 { -- compatible = "allwinner,sun50i-a64-system-control", -- "syscon"; -+ compatible = "allwinner,sun50i-a64-system-control"; - reg = <0x01c00000 0x1000>; - #address-cells = <1>; - #size-cells = <1>; -@@ -278,6 +350,20 @@ - reg = <0x0000 0x28000>; - }; - }; -+ -+ sram_c1: sram@1d00000 { -+ compatible = "mmio-sram"; -+ reg = <0x01d00000 0x40000>; -+ #address-cells = <1>; -+ #size-cells = <1>; -+ ranges = <0 0x01d00000 0x40000>; -+ -+ ve_sram: sram-section@0 { -+ compatible = "allwinner,sun50i-a64-sram-c1", -+ "allwinner,sun4i-a10-sram-c1"; -+ reg = <0x000000 0x40000>; -+ }; -+ }; - }; - - dma: dma-controller@1c02000 { -@@ -299,6 +385,7 @@ - clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>; - clock-names = "ahb", "tcon-ch0"; - clock-output-names = "tcon-pixel-clock"; -+ #clock-cells = <0>; - resets = <&ccu RST_BUS_TCON0>, <&ccu RST_BUS_LVDS>; - reset-names = "lcd", "lvds"; - -@@ -315,12 +402,23 @@ - reg = <0>; - remote-endpoint = <&mixer0_out_tcon0>; - }; -+ -+ tcon0_in_mixer1: endpoint@1 { -+ reg = <1>; -+ remote-endpoint = <&mixer1_out_tcon0>; -+ }; - }; - - tcon0_out: port@1 { - #address-cells = <1>; - #size-cells = <0>; - reg = <1>; -+ -+ tcon0_out_dsi: endpoint@1 { -+ reg = <1>; -+ remote-endpoint = <&dsi_in_tcon0>; -+ allwinner,tcon-channel = <1>; -+ }; - }; - }; - }; -@@ -340,9 +438,17 @@ - #size-cells = <0>; - - tcon1_in: port@0 { -+ #address-cells = <1>; -+ #size-cells = <0>; - reg = <0>; - -- tcon1_in_mixer1: endpoint { -+ tcon1_in_mixer0: endpoint@0 { -+ reg = <0>; -+ remote-endpoint = <&mixer0_out_tcon1>; -+ }; -+ -+ tcon1_in_mixer1: endpoint@1 { -+ reg = <1>; - remote-endpoint = <&mixer1_out_tcon1>; - }; - }; -@@ -360,6 +466,17 @@ - }; - }; - -+ video-codec@1c0e000 { -+ compatible = "allwinner,sun50i-a64-video-engine"; -+ reg = <0x01c0e000 0x1000>; -+ clocks = <&ccu CLK_BUS_VE>, <&ccu CLK_VE>, -+ <&ccu CLK_DRAM_VE>; -+ clock-names = "ahb", "mod", "ram"; -+ resets = <&ccu RST_BUS_VE>; -+ interrupts = ; -+ allwinner,sram = <&ve_sram 1>; -+ }; -+ - mmc0: mmc@1c0f000 { - compatible = "allwinner,sun50i-a64-mmc"; - reg = <0x01c0f000 0x1000>; -@@ -405,6 +522,31 @@ - sid: eeprom@1c14000 { - compatible = "allwinner,sun50i-a64-sid"; - reg = <0x1c14000 0x400>; -+ #address-cells = <1>; -+ #size-cells = <1>; -+ -+ ths_calibration: thermal-sensor-calibration@34 { -+ reg = <0x34 0x8>; -+ }; -+ }; -+ -+ crypto: crypto@1c15000 { -+ compatible = "allwinner,sun50i-a64-crypto"; -+ reg = <0x01c15000 0x1000>; -+ interrupts = ; -+ clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>; -+ clock-names = "bus", "mod"; -+ resets = <&ccu RST_BUS_CE>; -+ }; -+ -+ msgbox: mailbox@1c17000 { -+ compatible = "allwinner,sun50i-a64-msgbox", -+ "allwinner,sun6i-a31-msgbox"; -+ reg = <0x01c17000 0x1000>; -+ clocks = <&ccu CLK_BUS_MSGBOX>; -+ resets = <&ccu RST_BUS_MSGBOX>; -+ interrupts = ; -+ #mbox-cells = <1>; - }; - - usb_otg: usb@1c19000 { -@@ -417,6 +559,7 @@ - phys = <&usbphy 0>; - phy-names = "usb"; - extcon = <&usbphy 0>; -+ dr_mode = "otg"; - status = "disabled"; - }; - -@@ -491,7 +634,7 @@ - ccu: clock@1c20000 { - compatible = "allwinner,sun50i-a64-ccu"; - reg = <0x01c20000 0x400>; -- clocks = <&osc24M>, <&osc32k>; -+ clocks = <&osc24M>, <&rtc 0>; - clock-names = "hosc", "losc"; - #clock-cells = <1>; - #reset-cells = <1>; -@@ -503,22 +646,50 @@ - interrupts = , - , - ; -- clocks = <&ccu 58>; -+ clocks = <&ccu CLK_BUS_PIO>, <&osc24M>, <&rtc 0>; -+ clock-names = "apb", "hosc", "losc"; - gpio-controller; - #gpio-cells = <3>; - interrupt-controller; - #interrupt-cells = <3>; - -- i2c0_pins: i2c0_pins { -+ csi_pins: csi-pins { -+ pins = "PE0", "PE2", "PE3", "PE4", "PE5", "PE6", -+ "PE7", "PE8", "PE9", "PE10", "PE11"; -+ function = "csi"; -+ }; -+ -+ /omit-if-no-ref/ -+ csi_mclk_pin: csi-mclk-pin { -+ pins = "PE1"; -+ function = "csi"; -+ }; -+ -+ i2c0_pins: i2c0-pins { - pins = "PH0", "PH1"; - function = "i2c0"; - }; - -- i2c1_pins: i2c1_pins { -+ i2c1_pins: i2c1-pins { - pins = "PH2", "PH3"; - function = "i2c1"; - }; - -+ i2c2_pins: i2c2-pins { -+ pins = "PE14", "PE15"; -+ function = "i2c2"; -+ }; -+ -+ /omit-if-no-ref/ -+ lcd_rgb666_pins: lcd-rgb666-pins { -+ pins = "PD0", "PD1", "PD2", "PD3", "PD4", -+ "PD5", "PD6", "PD7", "PD8", "PD9", -+ "PD10", "PD11", "PD12", "PD13", -+ "PD14", "PD15", "PD16", "PD17", -+ "PD18", "PD19", "PD20", "PD21"; -+ function = "lcd0"; -+ }; -+ - mmc0_pins: mmc0-pins { - pins = "PF0", "PF1", "PF2", "PF3", - "PF4", "PF5"; -@@ -551,19 +722,19 @@ - bias-pull-up; - }; - -- pwm_pin: pwm_pin { -+ pwm_pin: pwm-pin { - pins = "PD22"; - function = "pwm"; - }; - -- rmii_pins: rmii_pins { -+ rmii_pins: rmii-pins { - pins = "PD10", "PD11", "PD13", "PD14", "PD17", - "PD18", "PD19", "PD20", "PD22", "PD23"; - function = "emac"; - drive-strength = <40>; - }; - -- rgmii_pins: rgmii_pins { -+ rgmii_pins: rgmii-pins { - pins = "PD8", "PD9", "PD10", "PD11", "PD12", - "PD13", "PD15", "PD16", "PD17", "PD18", - "PD19", "PD20", "PD21", "PD22", "PD23"; -@@ -571,17 +742,17 @@ - drive-strength = <40>; - }; - -- spdif_tx_pin: spdif { -+ spdif_tx_pin: spdif-tx-pin { - pins = "PH8"; - function = "spdif"; - }; - -- spi0_pins: spi0 { -+ spi0_pins: spi0-pins { - pins = "PC0", "PC1", "PC2", "PC3"; - function = "spi0"; - }; - -- spi1_pins: spi1 { -+ spi1_pins: spi1-pins { - pins = "PD0", "PD1", "PD2", "PD3"; - function = "spi1"; - }; -@@ -591,12 +762,12 @@ - function = "uart0"; - }; - -- uart1_pins: uart1_pins { -+ uart1_pins: uart1-pins { - pins = "PG6", "PG7"; - function = "uart1"; - }; - -- uart1_rts_cts_pins: uart1_rts_cts_pins { -+ uart1_rts_cts_pins: uart1-rts-cts-pins { - pins = "PG8", "PG9"; - function = "uart1"; - }; -@@ -638,6 +809,14 @@ - status = "disabled"; - }; - -+ lradc: lradc@1c21800 { -+ compatible = "allwinner,sun50i-a64-lradc", -+ "allwinner,sun8i-a83t-r-lradc"; -+ reg = <0x01c21800 0x400>; -+ interrupts = ; -+ status = "disabled"; -+ }; -+ - i2s0: i2s@1c22000 { - #sound-dai-cells = <0>; - compatible = "allwinner,sun50i-a64-i2s", -@@ -666,6 +845,41 @@ - status = "disabled"; - }; - -+ dai: dai@1c22c00 { -+ #sound-dai-cells = <0>; -+ compatible = "allwinner,sun50i-a64-codec-i2s"; -+ reg = <0x01c22c00 0x200>; -+ interrupts = ; -+ clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>; -+ clock-names = "apb", "mod"; -+ resets = <&ccu RST_BUS_CODEC>; -+ dmas = <&dma 15>, <&dma 15>; -+ dma-names = "rx", "tx"; -+ status = "disabled"; -+ }; -+ -+ codec: codec@1c22e00 { -+ #sound-dai-cells = <0>; -+ compatible = "allwinner,sun8i-a33-codec"; -+ reg = <0x01c22e00 0x600>; -+ interrupts = ; -+ clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>; -+ clock-names = "bus", "mod"; -+ status = "disabled"; -+ }; -+ -+ ths: thermal-sensor@1c25000 { -+ compatible = "allwinner,sun50i-a64-ths"; -+ reg = <0x01c25000 0x100>; -+ clocks = <&ccu CLK_BUS_THS>, <&ccu CLK_THS>; -+ clock-names = "bus", "mod"; -+ interrupts = ; -+ resets = <&ccu RST_BUS_THS>; -+ nvmem-cells = <&ths_calibration>; -+ nvmem-cell-names = "calibration"; -+ #thermal-sensor-cells = <1>; -+ }; -+ - uart0: serial@1c28000 { - compatible = "snps,dw-apb-uart"; - reg = <0x01c28000 0x400>; -@@ -727,6 +941,8 @@ - interrupts = ; - clocks = <&ccu CLK_BUS_I2C0>; - resets = <&ccu RST_BUS_I2C0>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c0_pins>; - status = "disabled"; - #address-cells = <1>; - #size-cells = <0>; -@@ -738,6 +954,8 @@ - interrupts = ; - clocks = <&ccu CLK_BUS_I2C1>; - resets = <&ccu RST_BUS_I2C1>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c1_pins>; - status = "disabled"; - #address-cells = <1>; - #size-cells = <0>; -@@ -749,12 +967,13 @@ - interrupts = ; - clocks = <&ccu CLK_BUS_I2C2>; - resets = <&ccu RST_BUS_I2C2>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c2_pins>; - status = "disabled"; - #address-cells = <1>; - #size-cells = <0>; - }; - -- - spi0: spi@1c68000 { - compatible = "allwinner,sun8i-h3-spi"; - reg = <0x01c68000 0x1000>; -@@ -808,6 +1027,28 @@ - }; - }; - -+ mali: gpu@1c40000 { -+ compatible = "allwinner,sun50i-a64-mali", "arm,mali-400"; -+ reg = <0x01c40000 0x10000>; -+ interrupts = , -+ , -+ , -+ , -+ , -+ , -+ ; -+ interrupt-names = "gp", -+ "gpmmu", -+ "pp0", -+ "ppmmu0", -+ "pp1", -+ "ppmmu1", -+ "pmu"; -+ clocks = <&ccu CLK_BUS_GPU>, <&ccu CLK_GPU>; -+ clock-names = "bus", "core"; -+ resets = <&ccu RST_BUS_GPU>; -+ }; -+ - gic: interrupt-controller@1c81000 { - compatible = "arm,gic-400"; - reg = <0x01c81000 0x1000>, -@@ -830,6 +1071,75 @@ - status = "disabled"; - }; - -+ mbus: dram-controller@1c62000 { -+ compatible = "allwinner,sun50i-a64-mbus"; -+ reg = <0x01c62000 0x1000>; -+ clocks = <&ccu 112>; -+ #address-cells = <1>; -+ #size-cells = <1>; -+ dma-ranges = <0x00000000 0x40000000 0xc0000000>; -+ #interconnect-cells = <1>; -+ }; -+ -+ csi: csi@1cb0000 { -+ compatible = "allwinner,sun50i-a64-csi"; -+ reg = <0x01cb0000 0x1000>; -+ interrupts = ; -+ clocks = <&ccu CLK_BUS_CSI>, -+ <&ccu CLK_CSI_SCLK>, -+ <&ccu CLK_DRAM_CSI>; -+ clock-names = "bus", "mod", "ram"; -+ resets = <&ccu RST_BUS_CSI>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&csi_pins>; -+ status = "disabled"; -+ }; -+ -+ dsi: dsi@1ca0000 { -+ compatible = "allwinner,sun50i-a64-mipi-dsi"; -+ reg = <0x01ca0000 0x1000>; -+ interrupts = ; -+ clocks = <&ccu CLK_BUS_MIPI_DSI>; -+ resets = <&ccu RST_BUS_MIPI_DSI>; -+ phys = <&dphy>; -+ phy-names = "dphy"; -+ status = "disabled"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ port { -+ dsi_in_tcon0: endpoint { -+ remote-endpoint = <&tcon0_out_dsi>; -+ }; -+ }; -+ }; -+ -+ dphy: d-phy@1ca1000 { -+ compatible = "allwinner,sun50i-a64-mipi-dphy", -+ "allwinner,sun6i-a31-mipi-dphy"; -+ reg = <0x01ca1000 0x1000>; -+ clocks = <&ccu CLK_BUS_MIPI_DSI>, -+ <&ccu CLK_DSI_DPHY>; -+ clock-names = "bus", "mod"; -+ resets = <&ccu RST_BUS_MIPI_DSI>; -+ status = "disabled"; -+ #phy-cells = <0>; -+ }; -+ -+ deinterlace: deinterlace@1e00000 { -+ compatible = "allwinner,sun50i-a64-deinterlace", -+ "allwinner,sun8i-h3-deinterlace"; -+ reg = <0x01e00000 0x20000>; -+ clocks = <&ccu CLK_BUS_DEINTERLACE>, -+ <&ccu CLK_DEINTERLACE>, -+ <&ccu CLK_DRAM_DEINTERLACE>; -+ clock-names = "bus", "mod", "ram"; -+ resets = <&ccu RST_BUS_DEINTERLACE>; -+ interrupts = ; -+ interconnects = <&mbus 9>; -+ interconnect-names = "dma-mem"; -+ }; -+ - hdmi: hdmi@1ee0000 { - compatible = "allwinner,sun50i-a64-dw-hdmi", - "allwinner,sun8i-a83t-dw-hdmi"; -@@ -842,7 +1152,7 @@ - resets = <&ccu RST_BUS_HDMI1>; - reset-names = "ctrl"; - phys = <&hdmi_phy>; -- phy-names = "hdmi-phy"; -+ phy-names = "phy"; - status = "disabled"; - - ports { -@@ -867,7 +1177,7 @@ - compatible = "allwinner,sun50i-a64-hdmi-phy"; - reg = <0x01ef0000 0x10000>; - clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_DDC>, -- <&ccu 7>; -+ <&ccu CLK_PLL_VIDEO0>; - clock-names = "bus", "mod", "pll-0"; - resets = <&ccu RST_BUS_HDMI0>; - reset-names = "phy"; -@@ -875,11 +1185,12 @@ - }; - - rtc: rtc@1f00000 { -- compatible = "allwinner,sun6i-a31-rtc"; -- reg = <0x01f00000 0x54>; -+ compatible = "allwinner,sun50i-a64-rtc", -+ "allwinner,sun8i-h3-rtc"; -+ reg = <0x01f00000 0x400>; - interrupts = , - ; -- clock-output-names = "rtc-osc32k", "rtc-osc32k-out"; -+ clock-output-names = "osc32k", "osc32k-out", "iosc"; - clocks = <&osc32k>; - #clock-cells = <1>; - }; -@@ -896,13 +1207,19 @@ - r_ccu: clock@1f01400 { - compatible = "allwinner,sun50i-a64-r-ccu"; - reg = <0x01f01400 0x100>; -- clocks = <&osc24M>, <&osc32k>, <&iosc>, -- <&ccu 11>; -+ clocks = <&osc24M>, <&rtc 0>, <&rtc 2>, -+ <&ccu CLK_PLL_PERIPH0>; - clock-names = "hosc", "losc", "iosc", "pll-periph"; - #clock-cells = <1>; - #reset-cells = <1>; - }; - -+ codec_analog: codec-analog@1f015c0 { -+ compatible = "allwinner,sun50i-a64-codec-analog"; -+ reg = <0x01f015c0 0x4>; -+ status = "disabled"; -+ }; -+ - r_i2c: i2c@1f02400 { - compatible = "allwinner,sun50i-a64-i2c", - "allwinner,sun6i-a31-i2c"; -@@ -915,6 +1232,19 @@ - #size-cells = <0>; - }; - -+ r_ir: ir@1f02000 { -+ compatible = "allwinner,sun50i-a64-ir", -+ "allwinner,sun6i-a31-ir"; -+ reg = <0x01f02000 0x400>; -+ clocks = <&r_ccu CLK_APB0_IR>, <&r_ccu CLK_IR>; -+ clock-names = "apb", "ir"; -+ resets = <&r_ccu RST_APB0_IR>; -+ interrupts = ; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&r_ir_rx_pin>; -+ status = "disabled"; -+ }; -+ - r_pwm: pwm@1f03800 { - compatible = "allwinner,sun50i-a64-pwm", - "allwinner,sun5i-a13-pwm"; -@@ -942,12 +1272,17 @@ - function = "s_i2c"; - }; - -- r_pwm_pin: pwm { -+ r_ir_rx_pin: r-ir-rx-pin { -+ pins = "PL11"; -+ function = "s_cir_rx"; -+ }; -+ -+ r_pwm_pin: r-pwm-pin { - pins = "PL10"; - function = "s_pwm"; - }; - -- r_rsb_pins: rsb { -+ r_rsb_pins: r-rsb-pins { - pins = "PL0", "PL1"; - function = "s_rsb"; - }; -@@ -972,6 +1307,7 @@ - "allwinner,sun6i-a31-wdt"; - reg = <0x01c20ca0 0x20>; - interrupts = ; -+ clocks = <&osc24M>; - }; - }; - }; --- -2.26.2 diff --git a/rpi-Add-identifier-for-the-new-RPi400.patch b/Raspberry-Pi-400-Compute-Module-4-support.patch similarity index 52% rename from rpi-Add-identifier-for-the-new-RPi400.patch rename to Raspberry-Pi-400-Compute-Module-4-support.patch index eb8ec31..6d0a27c 100644 --- a/rpi-Add-identifier-for-the-new-RPi400.patch +++ b/Raspberry-Pi-400-Compute-Module-4-support.patch @@ -1,64 +1,62 @@ -From patchwork Thu Nov 19 17:48:15 2020 +From patchwork Tue Dec 15 17:23:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1403195 -X-Patchwork-Delegate: matthias.bgg@gmail.com +X-Patchwork-Id: 1416597 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=suse.de -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) +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 RSA-PSS (4096 bits) server-digest - SHA256) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CcRyK4z4fz9sTR - for ; Fri, 20 Nov 2020 04:49:25 +1100 (AEDT) + by ozlabs.org (Postfix) with ESMTPS id 4CwQ8l3Yy3z9sPB + for ; Wed, 16 Dec 2020 04:23:41 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 350D882578; - Thu, 19 Nov 2020 18:49:06 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTP id 9EE4A829F3; + Tue, 15 Dec 2020 18:23:32 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id 0C6CC8258E; Thu, 19 Nov 2020 18:49:05 +0100 (CET) + id 9EDCF829F5; Tue, 15 Dec 2020 18:23:30 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: -X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham +X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, + RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id F2DC482384 - for ; Thu, 19 Nov 2020 18:49:01 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTPS id 1E15E829EE + for ; Tue, 15 Dec 2020 18:23:28 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=nsaenzjulienne@suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) - by mx2.suse.de (Postfix) with ESMTP id 80AEDACC6; - Thu, 19 Nov 2020 17:49:01 +0000 (UTC) + by mx2.suse.de (Postfix) with ESMTP id D500BACC6; + Tue, 15 Dec 2020 17:23:27 +0000 (UTC) From: Nicolas Saenz Julienne -To: u-boot@lists.denx.de, bmeng.cn@gmail.com, sjg@chromium.org, marex@denx.de -Cc: mbrugger@suse.com, m.szyprowski@samsung.com, s.nawrocki@samsung.com, - swarren@wwwdotorg.org, peng.fan@nxp.com, +To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, + sjg@chromium.org, marex@denx.de +Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, swarren@wwwdotorg.org, + peng.fan@nxp.com, sr@denx.de, pbrobinson@gmail.com, Nicolas Saenz Julienne -Subject: [PATCH 1/8] rpi: Add identifier for the new RPi400 -Date: Thu, 19 Nov 2020 18:48:15 +0100 -Message-Id: <20201119174820.7820-2-nsaenzjulienne@suse.de> +Subject: [PATCH v3 01/12] rpi: Add identifier for the new RPi400 +Date: Tue, 15 Dec 2020 18:23:12 +0100 +Message-Id: <20201215172323.13309-2-nsaenzjulienne@suse.de> X-Mailer: git-send-email 2.29.2 -In-Reply-To: <20201119174820.7820-1-nsaenzjulienne@suse.de> -References: <20201119174820.7820-1-nsaenzjulienne@suse.de> +In-Reply-To: <20201215172323.13309-1-nsaenzjulienne@suse.de> +References: <20201215172323.13309-1-nsaenzjulienne@suse.de> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 @@ -80,17 +78,18 @@ The Raspberry Pi Foundation released the new RPi400 which we want to detect, so we can enable Ethernet on it and know the correct device tree file name. -So far the Raspberry Pi foundation is using the RPi4b device-tree file -to boot RPi400. I see no reason not to do the same as they are -completely compatible. - Signed-off-by: Nicolas Saenz Julienne --- + +Changes since v1: + - The RPi Foundation introduced a RPi400 specific device tree, so use + that file name instead of the fallback (RPi4b). + board/raspberrypi/rpi/rpi.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c -index 6b1fa5fc14..ce60a24352 100644 +index 6b1fa5fc14..b66698e4a9 100644 --- a/board/raspberrypi/rpi/rpi.c +++ b/board/raspberrypi/rpi/rpi.c @@ -157,6 +157,11 @@ static const struct rpi_model rpi_models_new_scheme[] = { @@ -99,20 +98,19 @@ index 6b1fa5fc14..ce60a24352 100644 }, + [0x13] = { + "400", -+ DTB_DIR "bcm2711-rpi-4-b.dtb", ++ DTB_DIR "bcm2711-rpi-400.dtb", + true, + }, }; static const struct rpi_model rpi_models_old_scheme[] = { -From patchwork Thu Nov 19 17:48:16 2020 +From patchwork Tue Dec 15 17:23:13 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1403200 -X-Patchwork-Delegate: matthias.bgg@gmail.com +X-Patchwork-Id: 1416599 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org @@ -127,45 +125,46 @@ Received: from phobos.denx.de (phobos.denx.de (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CcRzB2rFTz9s1l - for ; Fri, 20 Nov 2020 04:50:14 +1100 (AEDT) + by ozlabs.org (Postfix) with ESMTPS id 4CwQ8w3WB6z9sS8 + for ; Wed, 16 Dec 2020 04:24:00 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 647BF825AA; - Thu, 19 Nov 2020 18:49:19 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTP id DD01382A02; + Tue, 15 Dec 2020 18:23:39 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id 8A3B282571; Thu, 19 Nov 2020 18:49:09 +0100 (CET) + id 9BF99829FB; Tue, 15 Dec 2020 18:23:33 +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=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham +X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, + RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 3FBD7823E1 - for ; Thu, 19 Nov 2020 18:49:02 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTPS id A9EDA829EF + for ; Tue, 15 Dec 2020 18:23:28 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=nsaenzjulienne@suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) - by mx2.suse.de (Postfix) with ESMTP id 0360EACEB; - Thu, 19 Nov 2020 17:49:02 +0000 (UTC) + by mx2.suse.de (Postfix) with ESMTP id 6F5BBAF1A; + Tue, 15 Dec 2020 17:23:28 +0000 (UTC) From: Nicolas Saenz Julienne -To: u-boot@lists.denx.de, bmeng.cn@gmail.com, sjg@chromium.org, marex@denx.de -Cc: mbrugger@suse.com, m.szyprowski@samsung.com, s.nawrocki@samsung.com, - swarren@wwwdotorg.org, peng.fan@nxp.com, +To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, + sjg@chromium.org, marex@denx.de +Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, swarren@wwwdotorg.org, + peng.fan@nxp.com, sr@denx.de, pbrobinson@gmail.com, Nicolas Saenz Julienne -Subject: [PATCH 2/8] rpi: Add identifier for the new CM4 -Date: Thu, 19 Nov 2020 18:48:16 +0100 -Message-Id: <20201119174820.7820-3-nsaenzjulienne@suse.de> +Subject: [PATCH v3 02/12] rpi: Add identifier for the new CM4 +Date: Tue, 15 Dec 2020 18:23:13 +0100 +Message-Id: <20201215172323.13309-3-nsaenzjulienne@suse.de> X-Mailer: git-send-email 2.29.2 -In-Reply-To: <20201119174820.7820-1-nsaenzjulienne@suse.de> -References: <20201119174820.7820-1-nsaenzjulienne@suse.de> +In-Reply-To: <20201215172323.13309-1-nsaenzjulienne@suse.de> +References: <20201215172323.13309-1-nsaenzjulienne@suse.de> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 @@ -183,7 +182,7 @@ Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de X-Virus-Status: Clean -The Raspberry Pi Foundation released the new Compute Module 4which we +The Raspberry Pi Foundation released the new Compute Module 4 which we want to detect, so we can enable Ethernet on it and know the correct device tree file name. @@ -192,21 +191,20 @@ IO board has an Ethernet port. But that might not be the case when using custom ones. Signed-off-by: Nicolas Saenz Julienne ---- --- board/raspberrypi/rpi/rpi.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c -index ce60a24352..4ffd23c6ac 100644 +index b66698e4a9..abcf41a5a8 100644 --- a/board/raspberrypi/rpi/rpi.c +++ b/board/raspberrypi/rpi/rpi.c @@ -162,6 +162,11 @@ static const struct rpi_model rpi_models_new_scheme[] = { - DTB_DIR "bcm2711-rpi-4-b.dtb", + DTB_DIR "bcm2711-rpi-400.dtb", true, }, + [0x14] = { -+ "Compute Modue 4", ++ "Compute Module 4", + DTB_DIR "bcm2711-rpi-cm4.dtb", + true, + }, @@ -214,13 +212,12 @@ index ce60a24352..4ffd23c6ac 100644 static const struct rpi_model rpi_models_old_scheme[] = { -From patchwork Thu Nov 19 17:48:17 2020 +From patchwork Tue Dec 15 17:23:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1403196 -X-Patchwork-Delegate: matthias.bgg@gmail.com +X-Patchwork-Id: 1416601 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org @@ -232,48 +229,48 @@ Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=suse.de 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 RSA-PSS (4096 bits) server-digest - SHA256) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CcRyb0r6Jz9s1l - for ; Fri, 20 Nov 2020 04:49:43 +1100 (AEDT) + by ozlabs.org (Postfix) with ESMTPS id 4CwQ9K2mz5z9sPB + for ; Wed, 16 Dec 2020 04:24:21 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id CC8548258E; - Thu, 19 Nov 2020 18:49:11 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTP id D4983829F1; + Tue, 15 Dec 2020 18:23:44 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id D7281825A1; Thu, 19 Nov 2020 18:49:07 +0100 (CET) + id DF1AE829FB; Tue, 15 Dec 2020 18:23:35 +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=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham +X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, + RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id B218F8254E - for ; Thu, 19 Nov 2020 18:49:02 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTPS id 3D7D2829F0 + for ; Tue, 15 Dec 2020 18:23:29 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=nsaenzjulienne@suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) - by mx2.suse.de (Postfix) with ESMTP id 7CC19ACF1; - Thu, 19 Nov 2020 17:49:02 +0000 (UTC) + by mx2.suse.de (Postfix) with ESMTP id 07A04AF22; + Tue, 15 Dec 2020 17:23:29 +0000 (UTC) From: Nicolas Saenz Julienne -To: u-boot@lists.denx.de, bmeng.cn@gmail.com, sjg@chromium.org, marex@denx.de -Cc: mbrugger@suse.com, m.szyprowski@samsung.com, s.nawrocki@samsung.com, - swarren@wwwdotorg.org, peng.fan@nxp.com, +To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, + sjg@chromium.org, marex@denx.de +Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, swarren@wwwdotorg.org, + peng.fan@nxp.com, sr@denx.de, pbrobinson@gmail.com, Nicolas Saenz Julienne -Subject: [PATCH 3/8] pci: pcie-brcmstb: Fix inbound window configurations -Date: Thu, 19 Nov 2020 18:48:17 +0100 -Message-Id: <20201119174820.7820-4-nsaenzjulienne@suse.de> +Subject: [PATCH v3 03/12] pci: pcie-brcmstb: Fix inbound window configurations +Date: Tue, 15 Dec 2020 18:23:14 +0100 +Message-Id: <20201215172323.13309-4-nsaenzjulienne@suse.de> X-Mailer: git-send-email 2.29.2 -In-Reply-To: <20201119174820.7820-1-nsaenzjulienne@suse.de> -References: <20201119174820.7820-1-nsaenzjulienne@suse.de> +In-Reply-To: <20201215172323.13309-1-nsaenzjulienne@suse.de> +References: <20201215172323.13309-1-nsaenzjulienne@suse.de> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 @@ -299,9 +296,9 @@ now cover the whole address space, whereas before we where limited to the lower 3GB. This information is passed to us through DT's 'dma-ranges' property and -it's specially important for us to honor it them since some interactions -with the board's co-processor assume we're doing so (specifically the -XHCI firmware load operation, which is handled by the co-processor after +it's specially important for us to honor it since some interactions with +the board's co-processor assume we're doing so (specifically the XHCI +firmware load operation, which is handled by the co-processor after u-boot has correctly configured the PCIe controller). Signed-off-by: Nicolas Saenz Julienne @@ -340,13 +337,12 @@ index dade79e9c8..f6e8ad0d0a 100644 tmp = lower_32_bits(rc_bar2_offset); u32p_replace_bits(&tmp, brcm_pcie_encode_ibar_size(rc_bar2_size), -From patchwork Thu Nov 19 17:48:18 2020 +From patchwork Tue Dec 15 17:23:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1403201 -X-Patchwork-Delegate: matthias.bgg@gmail.com +X-Patchwork-Id: 1416603 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org @@ -361,45 +357,46 @@ Received: from phobos.denx.de (phobos.denx.de (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CcRzP329Pz9s1l - for ; Fri, 20 Nov 2020 04:50:25 +1100 (AEDT) + by ozlabs.org (Postfix) with ESMTPS id 4CwQ9n295dz9sPB + for ; Wed, 16 Dec 2020 04:24:45 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 4AFAA825C6; - Thu, 19 Nov 2020 18:49:21 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTP id 67F0A82A0D; + Tue, 15 Dec 2020 18:23:49 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id EFDD38258E; Thu, 19 Nov 2020 18:49:09 +0100 (CET) + id 01A3B829EF; Tue, 15 Dec 2020 18:23:37 +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=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham +X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, + RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 3C8D282552 - for ; Thu, 19 Nov 2020 18:49:03 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTPS id CF965829F1 + for ; Tue, 15 Dec 2020 18:23:29 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=nsaenzjulienne@suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) - by mx2.suse.de (Postfix) with ESMTP id 01C33ACF5; - Thu, 19 Nov 2020 17:49:03 +0000 (UTC) + by mx2.suse.de (Postfix) with ESMTP id 933CFAF8D; + Tue, 15 Dec 2020 17:23:29 +0000 (UTC) From: Nicolas Saenz Julienne -To: u-boot@lists.denx.de, bmeng.cn@gmail.com, sjg@chromium.org, marex@denx.de -Cc: mbrugger@suse.com, m.szyprowski@samsung.com, s.nawrocki@samsung.com, - swarren@wwwdotorg.org, peng.fan@nxp.com, +To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, + sjg@chromium.org, marex@denx.de +Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, swarren@wwwdotorg.org, + peng.fan@nxp.com, sr@denx.de, pbrobinson@gmail.com, Nicolas Saenz Julienne -Subject: [PATCH 4/8] dm: Introduce xxx_get_dma_range() -Date: Thu, 19 Nov 2020 18:48:18 +0100 -Message-Id: <20201119174820.7820-5-nsaenzjulienne@suse.de> +Subject: [PATCH v3 04/12] dm: Introduce xxx_get_dma_range() +Date: Tue, 15 Dec 2020 18:23:15 +0100 +Message-Id: <20201215172323.13309-5-nsaenzjulienne@suse.de> X-Mailer: git-send-email 2.29.2 -In-Reply-To: <20201119174820.7820-1-nsaenzjulienne@suse.de> -References: <20201119174820.7820-1-nsaenzjulienne@suse.de> +In-Reply-To: <20201215172323.13309-1-nsaenzjulienne@suse.de> +References: <20201215172323.13309-1-nsaenzjulienne@suse.de> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 @@ -417,7 +414,7 @@ Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de X-Virus-Status: Clean -Add the follwing functions to get a specific device's DMA ranges: +Add the following functions to get a specific device's DMA ranges: - dev_get_dma_range() - ofnode_get_dma_range() - of_get_dma_range() @@ -428,21 +425,31 @@ spaces. Signed-off-by: Nicolas Saenz Julienne --- - common/fdt_support.c | 72 ++++++++++++++++++++++++++++++++++++++++++ - drivers/core/of_addr.c | 68 +++++++++++++++++++++++++++++++++++++++ - drivers/core/ofnode.c | 9 ++++++ - drivers/core/read.c | 5 +++ - include/dm/of_addr.h | 17 ++++++++++ - include/dm/ofnode.h | 16 ++++++++++ - include/dm/read.h | 6 ++++ +Changes since v2: + - Return ENOENT instead of ENODEV + - Refcount OF nodes + +Changes since v1: + - Fix wrong arguments in of_get_dma_range()'s call to of_translate_dma_address() + - Fix build in SPL/TPL and no LIBFDT supprt + - Add missing declaration in 'core/read.c' + - Address Matthias' comments + + common/fdt_support.c | 73 +++++++++++++++++++++++++++++++++++++++ + drivers/core/of_addr.c | 78 ++++++++++++++++++++++++++++++++++++++++++ + drivers/core/ofnode.c | 9 +++++ + drivers/core/read.c | 6 ++++ + include/dm/of_addr.h | 17 +++++++++ + include/dm/ofnode.h | 16 +++++++++ + include/dm/read.h | 21 ++++++++++++ include/fdt_support.h | 14 ++++++++ - 8 files changed, 207 insertions(+) + 8 files changed, 234 insertions(+) diff --git a/common/fdt_support.c b/common/fdt_support.c -index 5ae75df3c6..78dc7906bd 100644 +index 5ae75df3c6..bf855d26c8 100644 --- a/common/fdt_support.c +++ b/common/fdt_support.c -@@ -1342,6 +1342,78 @@ u64 fdt_translate_dma_address(const void *blob, int node_offset, +@@ -1342,6 +1342,79 @@ u64 fdt_translate_dma_address(const void *blob, int node_offset, return __of_translate_address(blob, node_offset, in_addr, "dma-ranges"); } @@ -450,10 +457,10 @@ index 5ae75df3c6..78dc7906bd 100644 + dma_addr_t *bus, u64 *size) +{ + bool found_dma_ranges = false; ++ struct of_bus *bus_node; + const fdt32_t *ranges; + int na, ns, pna, pns; + int parent = node; -+ u64 cpu_addr; + int ret = 0; + int len; + @@ -467,7 +474,7 @@ index 5ae75df3c6..78dc7906bd 100644 + + /* Once we find 'dma-ranges', then a missing one is an error */ + if (found_dma_ranges && !ranges) { -+ ret = -ENODEV; ++ ret = -EINVAL; + goto out; + } + @@ -480,7 +487,7 @@ index 5ae75df3c6..78dc7906bd 100644 + if (!ranges || parent < 0) { + debug("no dma-ranges found for node %s\n", + fdt_get_name(blob, node, NULL)); -+ ret = -ENODEV; ++ ret = -ENOENT; + goto out; + } + @@ -494,7 +501,8 @@ index 5ae75df3c6..78dc7906bd 100644 + } + + /* Get the address sizes both for the bus and its parent */ -+ of_match_bus(blob, node)->count_cells(blob, node, &na, &ns); ++ bus_node = of_match_bus(blob, node); ++ bus_node->count_cells(blob, node, &na, &ns); + if (!OF_CHECK_COUNTS(na, ns)) { + printf("%s: Bad cell count for %s\n", __FUNCTION__, + fdt_get_name(blob, node, NULL)); @@ -502,7 +510,8 @@ index 5ae75df3c6..78dc7906bd 100644 + goto out; + } + -+ of_match_bus(blob, parent)->count_cells(blob, parent, &pna, &pns); ++ bus_node = of_match_bus(blob, parent); ++ bus_node->count_cells(blob, parent, &pna, &pns); + if (!OF_CHECK_COUNTS(pna, pns)) { + printf("%s: Bad cell count for %s\n", __FUNCTION__, + fdt_get_name(blob, parent, NULL)); @@ -511,8 +520,7 @@ index 5ae75df3c6..78dc7906bd 100644 + } + + *bus = fdt_read_number(ranges, na); -+ cpu_addr = fdt_read_number(ranges + na, pna); -+ *cpu = fdt_translate_dma_address(blob, node, (const fdt32_t*)&cpu_addr); ++ *cpu = fdt_translate_dma_address(blob, node, ranges + na); + *size = fdt_read_number(ranges + na + pna, ns); +out: + return ret; @@ -522,10 +530,10 @@ index 5ae75df3c6..78dc7906bd 100644 * fdt_node_offset_by_compat_reg: Find a node that matches compatiable and * who's reg property matches a physical cpu address diff --git a/drivers/core/of_addr.c b/drivers/core/of_addr.c -index ca34d84922..8457e04a25 100644 +index ca34d84922..703bc3e3f5 100644 --- a/drivers/core/of_addr.c +++ b/drivers/core/of_addr.c -@@ -325,6 +325,74 @@ u64 of_translate_dma_address(const struct device_node *dev, const __be32 *in_add +@@ -325,6 +325,84 @@ u64 of_translate_dma_address(const struct device_node *dev, const __be32 *in_add return __of_translate_address(dev, in_addr, "dma-ranges"); } @@ -533,13 +541,15 @@ index ca34d84922..8457e04a25 100644 + dma_addr_t *bus, u64 *size) +{ + bool found_dma_ranges = false; -+ struct device_node parent; ++ struct device_node *parent; ++ struct of_bus *bus_node; + int na, ns, pna, pns; + const __be32 *ranges; + int ret = 0; + int len; + + /* Find the closest dma-ranges property */ ++ dev = of_node_get(dev); + while (dev) { + ranges = of_get_property(dev, "dma-ranges", &len); + @@ -549,20 +559,22 @@ index ca34d84922..8457e04a25 100644 + + /* Once we find 'dma-ranges', then a missing one is an error */ + if (found_dma_ranges && !ranges) { -+ ret = -ENODEV; ++ ret = -EINVAL; + goto out; + } + + if (ranges) + found_dma_ranges = true; + -+ dev = of_get_parent(dev); ++ parent = of_get_parent(dev); ++ of_node_put(dev); ++ dev = parent; + } + + if (!dev || !ranges) { + debug("no dma-ranges found for node %s\n", + of_node_full_name(dev)); -+ ret = -ENODEV ++ ret = -ENOENT; + goto out; + } + @@ -575,24 +587,30 @@ index ca34d84922..8457e04a25 100644 + } + + /* Get the address sizes both for the bus and its parent */ -+ of_match_bus(dev)->count_cells(dev, &na, &ns); ++ bus_node = of_match_bus((struct device_node*)dev); ++ bus_node->count_cells(dev, &na, &ns); + if (!OF_CHECK_COUNTS(na, ns)) { + printf("Bad cell count for %s\n", of_node_full_name(dev)); + return -EINVAL; -+ goto out; ++ goto out_parent; + } + -+ of_match_bus(parent)->count_cells(parent, &pna, &pns); ++ bus_node = of_match_bus(parent); ++ bus_node->count_cells(parent, &pna, &pns); + if (!OF_CHECK_COUNTS(pna, pns)) { + printf("Bad cell count for %s\n", of_node_full_name(parent)); + return -EINVAL; -+ goto out; ++ goto out_parent; + } + + *bus = of_read_number(ranges, na); -+ *cpu = of_translate_dma_address(dev, of_read_number(ranges + na, pna)); ++ *cpu = of_translate_dma_address(dev, ranges + na); + *size = of_read_number(ranges + na + pna, ns); ++ ++out_parent: ++ of_node_put(parent); +out: ++ of_node_put(dev); + return ret; +} + @@ -621,16 +639,17 @@ index a68076bf35..15470d4875 100644 { if (ofnode_is_np(node)) diff --git a/drivers/core/read.c b/drivers/core/read.c -index 076125824c..b835e82be9 100644 +index 076125824c..0994fbd979 100644 --- a/drivers/core/read.c +++ b/drivers/core/read.c -@@ -338,6 +338,11 @@ u64 dev_translate_dma_address(const struct udevice *dev, const fdt32_t *in_addr) +@@ -338,6 +338,12 @@ u64 dev_translate_dma_address(const struct udevice *dev, const fdt32_t *in_addr) return ofnode_translate_dma_address(dev_ofnode(dev), in_addr); } -+u64 dev_translate_cpu_address(const struct udevice *dev, const fdt32_t *in_addr) ++int dev_get_dma_range(const struct udevice *dev, phys_addr_t *cpu, ++ dma_addr_t *bus, u64 *size) +{ -+ return ofnode_translate_cpu_address(dev_ofnode(dev), in_addr); ++ return ofnode_get_dma_range(dev_ofnode(dev), cpu, bus, size); +} + int dev_read_alias_highest_id(const char *stem) @@ -692,14 +711,36 @@ index ced7f6ffb2..dc3dd84d9f 100644 * ofnode_device_is_compatible() - check if the node is compatible with compat * diff --git a/include/dm/read.h b/include/dm/read.h -index 0585eb1228..9e1f3f5f12 100644 +index 0585eb1228..46e902c57d 100644 --- a/include/dm/read.h +++ b/include/dm/read.h -@@ -1004,6 +1004,12 @@ static inline u64 dev_translate_dma_address(const struct udevice *dev, +@@ -664,6 +664,21 @@ u64 dev_translate_address(const struct udevice *dev, const fdt32_t *in_addr); + u64 dev_translate_dma_address(const struct udevice *dev, + const fdt32_t *in_addr); + ++/** ++ * dev_get_dma_range() - Get a device's DMA constraints ++ * ++ * Provide the address bases and size of the linear mapping between the CPU and ++ * a device's BUS address space. ++ * ++ * @dev: device giving the context in which to translate the DMA address ++ * @cpu: base address for CPU's view of memory ++ * @bus: base address for BUS's view of memory ++ * @size: size of the address space ++ * @return 0 if ok, negative on error ++ */ ++int dev_get_dma_range(const struct udevice *dev, phys_addr_t *cpu, ++ dma_addr_t *bus, u64 *size); ++ + /** + * dev_read_alias_highest_id - Get highest alias id for the given stem + * @stem: Alias stem to be examined +@@ -1004,6 +1019,12 @@ static inline u64 dev_translate_dma_address(const struct udevice *dev, return ofnode_translate_dma_address(dev_ofnode(dev), in_addr); } -+static inline u64 dev_get_dma_range(const struct udevice *dev, phys_addr_t *cpu, ++static inline int dev_get_dma_range(const struct udevice *dev, phys_addr_t *cpu, + dma_addr_t *bus, u64 *size) +{ + return ofnode_get_dma_range(dev_ofnode(dev), cpu, bus, size); @@ -734,13 +775,12 @@ index dbbac0fb6a..46eb1dbbb2 100644 phys_addr_t compat_off); int fdt_alloc_phandle(void *blob); -From patchwork Thu Nov 19 17:48:19 2020 +From patchwork Tue Dec 15 17:23:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1403197 -X-Patchwork-Delegate: matthias.bgg@gmail.com +X-Patchwork-Id: 1416600 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org @@ -755,45 +795,230 @@ Received: from phobos.denx.de (phobos.denx.de (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CcRyk3Wgvz9s1l - for ; Fri, 20 Nov 2020 04:49:50 +1100 (AEDT) + by ozlabs.org (Postfix) with ESMTPS id 4CwQ965n7dz9sPB + for ; Wed, 16 Dec 2020 04:24:10 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 7EFFE825A3; - Thu, 19 Nov 2020 18:49:13 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTP id 3E93F82A06; + Tue, 15 Dec 2020 18:23:42 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id 31A79825A4; Thu, 19 Nov 2020 18:49:08 +0100 (CET) + id C092C829FB; Tue, 15 Dec 2020 18:23:34 +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=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham +X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, + RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id B2CC482563 - for ; Thu, 19 Nov 2020 18:49:03 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTPS id 78A6C829F4 + for ; Tue, 15 Dec 2020 18:23:30 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=nsaenzjulienne@suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) - by mx2.suse.de (Postfix) with ESMTP id 7CCA0AD09; - Thu, 19 Nov 2020 17:49:03 +0000 (UTC) + by mx2.suse.de (Postfix) with ESMTP id 299DBB27A; + Tue, 15 Dec 2020 17:23:30 +0000 (UTC) From: Nicolas Saenz Julienne -To: u-boot@lists.denx.de, bmeng.cn@gmail.com, sjg@chromium.org, marex@denx.de -Cc: mbrugger@suse.com, m.szyprowski@samsung.com, s.nawrocki@samsung.com, - swarren@wwwdotorg.org, peng.fan@nxp.com, +To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, + sjg@chromium.org, marex@denx.de +Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, swarren@wwwdotorg.org, + peng.fan@nxp.com, sr@denx.de, pbrobinson@gmail.com, Nicolas Saenz Julienne -Subject: [PATCH 5/8] dm: Introduce DMA constraints into the core device model -Date: Thu, 19 Nov 2020 18:48:19 +0100 -Message-Id: <20201119174820.7820-6-nsaenzjulienne@suse.de> +Subject: [PATCH v3 05/12] dm: test: Add test case for dev_get_dma_ranges() +Date: Tue, 15 Dec 2020 18:23:16 +0100 +Message-Id: <20201215172323.13309-6-nsaenzjulienne@suse.de> X-Mailer: git-send-email 2.29.2 -In-Reply-To: <20201119174820.7820-1-nsaenzjulienne@suse.de> -References: <20201119174820.7820-1-nsaenzjulienne@suse.de> +In-Reply-To: <20201215172323.13309-1-nsaenzjulienne@suse.de> +References: <20201215172323.13309-1-nsaenzjulienne@suse.de> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +Introduce some new nodes in sandbox's test device-tree and dm tests in +order to validate dev_get_dma_range(). + +Signed-off-by: Nicolas Saenz Julienne +--- + arch/sandbox/dts/test.dts | 17 ++++++++++++++ + test/dm/Makefile | 1 + + test/dm/read.c | 49 +++++++++++++++++++++++++++++++++++++++ + 3 files changed, 67 insertions(+) + create mode 100644 test/dm/read.c + +diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts +index f3b766271d..3a3b51f83b 100644 +--- a/arch/sandbox/dts/test.dts ++++ b/arch/sandbox/dts/test.dts +@@ -292,6 +292,23 @@ + test5-gpios = <&gpio_a 19>; + }; + ++ mmio-bus@0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "denx,u-boot-test-bus"; ++ dma-ranges = <0x10000000 0x00000000 0x00040000>; ++ ++ subnode@0 { ++ compatible = "denx,u-boot-fdt-test"; ++ }; ++ }; ++ ++ mmio-bus@1 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "denx,u-boot-test-bus"; ++ }; ++ + acpi_test1: acpi-test { + compatible = "denx,u-boot-acpi-test"; + acpi-ssdt-test-data = "ab"; +diff --git a/test/dm/Makefile b/test/dm/Makefile +index 46e076ed09..5c52d8b6ea 100644 +--- a/test/dm/Makefile ++++ b/test/dm/Makefile +@@ -15,6 +15,7 @@ obj-$(CONFIG_UT_DM) += test-fdt.o + obj-$(CONFIG_UT_DM) += test-uclass.o + + obj-$(CONFIG_UT_DM) += core.o ++obj-$(CONFIG_UT_DM) += read.o + ifneq ($(CONFIG_SANDBOX),) + obj-$(CONFIG_ACPIGEN) += acpi.o + obj-$(CONFIG_ACPIGEN) += acpigen.o +diff --git a/test/dm/read.c b/test/dm/read.c +new file mode 100644 +index 0000000000..090eee0544 +--- /dev/null ++++ b/test/dm/read.c +@@ -0,0 +1,49 @@ ++// SPDX-License-Identifier: GPL-2.0+ ++/* ++ * Copyright (c) 2020 Nicolas Saenz Julienne ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++static int dm_test_dma_ranges(struct unit_test_state *uts) ++{ ++ struct udevice *dev; ++ phys_addr_t cpu; ++ dma_addr_t bus; ++ ofnode node; ++ u64 size; ++ ++ /* dma-ranges are on the device's node */ ++ node = ofnode_path("/mmio-bus@0"); ++ ut_assert(ofnode_valid(node)); ++ ut_assert(!uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); ++ ut_assert(!dev_get_dma_range(dev, &cpu, &bus, &size)); ++ ut_asserteq_64(0x40000, size); ++ ut_asserteq_64(0x0, cpu); ++ ut_asserteq_64(0x10000000, bus); ++ ++ /* dma-ranges are on the bus' node */ ++ node = ofnode_path("/mmio-bus@0/subnode@0"); ++ ut_assert(ofnode_valid(node)); ++ ut_assert(!uclass_get_device_by_ofnode(UCLASS_TEST_FDT, node, &dev)); ++ ut_assert(!dev_get_dma_range(dev, &cpu, &bus, &size)); ++ ut_asserteq_64(0x40000, size); ++ ut_asserteq_64(0x0, cpu); ++ ut_asserteq_64(0x10000000, bus); ++ ++ /* No dma-ranges available */ ++ node = ofnode_path("/mmio-bus@1"); ++ ut_assert(ofnode_valid(node)); ++ ut_assert(!uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); ++ ut_asserteq(-ENOENT, dev_get_dma_range(dev, &cpu, &bus, &size)); ++ ++ return 0; ++} ++DM_TEST(dm_test_dma_ranges, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); + +From patchwork Tue Dec 15 17:23:17 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Nicolas Saenz Julienne +X-Patchwork-Id: 1416602 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=suse.de +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4CwQ9Y1YbZz9sPB + for ; Wed, 16 Dec 2020 04:24:33 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 5A5D482A08; + Tue, 15 Dec 2020 18:23:47 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 5D82E829F0; Tue, 15 Dec 2020 18:23:36 +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=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, + RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id AF637829EE + for ; Tue, 15 Dec 2020 18:23:31 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=nsaenzjulienne@suse.de +Received: from relay2.suse.de (unknown [195.135.221.27]) + by mx2.suse.de (Postfix) with ESMTP id CE05EAFBE; + Tue, 15 Dec 2020 17:23:30 +0000 (UTC) +From: Nicolas Saenz Julienne +To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, + sjg@chromium.org, marex@denx.de +Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, swarren@wwwdotorg.org, + peng.fan@nxp.com, sr@denx.de, pbrobinson@gmail.com, + Nicolas Saenz Julienne +Subject: [PATCH v3 06/12] dm: Introduce DMA constraints into the core device + model +Date: Tue, 15 Dec 2020 18:23:17 +0100 +Message-Id: <20201215172323.13309-7-nsaenzjulienne@suse.de> +X-Mailer: git-send-email 2.29.2 +In-Reply-To: <20201215172323.13309-1-nsaenzjulienne@suse.de> +References: <20201215172323.13309-1-nsaenzjulienne@suse.de> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 @@ -813,78 +1038,123 @@ X-Virus-Status: Clean Calculating the DMA offset between a bus address space and CPU's every time we call phys_to_bus() and bus_to_phys() isn't ideal performance -wise. This information is static and available before initializing the -devices so parse it before the probe call an provide the DMA offset it -in 'struct udevice' for the DMA code to use it. +wise, as it implies traversing the device tree from the device's node up +to the root. Since this information is static and available before the +device's initialization, parse it before the probe call an provide the +DMA offset in 'struct udevice' for the address translation code to use +it. Signed-off-by: Nicolas Saenz Julienne --- - drivers/core/device.c | 24 ++++++++++++++++++++++++ - include/dm/device.h | 1 + - 2 files changed, 25 insertions(+) +Changes since v2: + - Return/Fail on error + - Add config option + - use ulong instead for u64 for dev->dma_offset +Changes since v1: + - Update commit message so as to explain better the reasoning behind + this + + drivers/core/Kconfig | 10 ++++++++++ + drivers/core/device.c | 35 +++++++++++++++++++++++++++++++++++ + include/dm/device.h | 3 +++ + 3 files changed, 48 insertions(+) + +diff --git a/drivers/core/Kconfig b/drivers/core/Kconfig +index ffae6f9795..153be25351 100644 +--- a/drivers/core/Kconfig ++++ b/drivers/core/Kconfig +@@ -113,6 +113,16 @@ config SPL_DM_SEQ_ALIAS + numbered devices (e.g. serial0 = &serial0). This feature can be + disabled if it is not required, to save code space in SPL. + ++config DM_DMA ++ bool "Support per device DMA constraints" ++ depends on DM ++ default n ++ help ++ Enable this to extract per-device DMA constraints, only supported on ++ device-tree systems for now. This is needed in order translate ++ addresses on systems where different buses have different views of ++ the physical address space. ++ + config REGMAP + bool "Support register maps" + depends on DM diff --git a/drivers/core/device.c b/drivers/core/device.c -index 4b3dcb3b37..4255bea24d 100644 +index 4b3dcb3b37..21285432d8 100644 --- a/drivers/core/device.c +++ b/drivers/core/device.c -@@ -421,6 +421,28 @@ fail: +@@ -421,6 +421,37 @@ fail: return ret; } -+void device_get_dma_constraints(struct udevice *dev) ++#if CONFIG_IS_ENABLED(DM_DMA) ++static int device_get_dma_constraints(struct udevice *dev) +{ -+ phys_addr_t cpu; -+ dma_addr_t bus; -+ u64 size; ++ struct udevice *parent = dev->parent; ++ phys_addr_t cpu = 0; ++ dma_addr_t bus = 0; ++ u64 size = 0; + int ret; + -+ if (!dev_of_valid(dev)) -+ return; ++ if (!parent || !dev_of_valid(parent)) ++ return 0; + -+ ret = dev_get_dma_range(dev, &cpu, &bus, &size); -+ if (ret) { -+ /* Don't complain if no 'dma-ranges' were found */ -+ if (ret != -ENODEV) -+ dm_warn("%s: failed to get DMA range, %d\n", -+ dev->name, ret); -+ return; ++ /* ++ * We start parsing for dma-ranges from the device's bus node. This is ++ * specially important on nested buses. ++ */ ++ ret = dev_get_dma_range(parent, &cpu, &bus, &size); ++ /* Don't return an error if no 'dma-ranges' were found */ ++ if (ret && ret != -ENOENT) { ++ dm_warn("%s: failed to get DMA range, %d\n", dev->name, ret); ++ return ret; + } + + dev->dma_offset = cpu - bus; ++ ++ return 0; +} ++#else ++static int device_get_dma_constraints(struct udevice *dev) { return 0; } ++#endif + int device_probe(struct udevice *dev) { const struct driver *drv; -@@ -482,6 +504,8 @@ int device_probe(struct udevice *dev) +@@ -482,6 +513,10 @@ int device_probe(struct udevice *dev) goto fail; } -+ device_get_dma_constraints(dev); ++ ret = device_get_dma_constraints(dev); ++ if (ret) ++ goto fail; + ret = uclass_pre_probe_device(dev); if (ret) goto fail; diff --git a/include/dm/device.h b/include/dm/device.h -index 5bef484247..59f711e3dd 100644 +index 5bef484247..9126dc00fe 100644 --- a/include/dm/device.h +++ b/include/dm/device.h -@@ -161,6 +161,7 @@ struct udevice { +@@ -161,6 +161,9 @@ struct udevice { #ifdef CONFIG_DEVRES struct list_head devres_head; #endif -+ u64 dma_offset; ++#ifdef CONFIG_DM_DMA ++ ulong dma_offset; ++#endif }; /* Maximum sequence number supported */ -From patchwork Thu Nov 19 17:48:20 2020 +From patchwork Tue Dec 15 17:23:18 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1403199 -X-Patchwork-Delegate: matthias.bgg@gmail.com +X-Patchwork-Id: 1416604 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org @@ -898,45 +1168,237 @@ 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 RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CcRyy5XbHz9sVd - for ; Fri, 20 Nov 2020 04:50:02 +1100 (AEDT) + by ozlabs.org (Postfix) with ESMTPS id 4CwQB14gCvz9sPB + for ; Wed, 16 Dec 2020 04:24:57 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 32DE7825B9; - Thu, 19 Nov 2020 18:49:15 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTP id DF70A82A16; + Tue, 15 Dec 2020 18:23:51 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id 0DC4482563; Thu, 19 Nov 2020 18:49:09 +0100 (CET) + id 8DEB6829FF; Tue, 15 Dec 2020 18:23:38 +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=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham +X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, + RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 375DF82571 - for ; Thu, 19 Nov 2020 18:49:04 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTPS id 65B40829ED + for ; Tue, 15 Dec 2020 18:23:32 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=nsaenzjulienne@suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) - by mx2.suse.de (Postfix) with ESMTP id 0202DAD0B; - Thu, 19 Nov 2020 17:49:04 +0000 (UTC) + by mx2.suse.de (Postfix) with ESMTP id 54CF4B1C2; + Tue, 15 Dec 2020 17:23:31 +0000 (UTC) From: Nicolas Saenz Julienne -To: u-boot@lists.denx.de, bmeng.cn@gmail.com, sjg@chromium.org, marex@denx.de -Cc: mbrugger@suse.com, m.szyprowski@samsung.com, s.nawrocki@samsung.com, - swarren@wwwdotorg.org, peng.fan@nxp.com, +To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, + sjg@chromium.org, marex@denx.de +Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, swarren@wwwdotorg.org, + peng.fan@nxp.com, sr@denx.de, pbrobinson@gmail.com, Nicolas Saenz Julienne -Subject: [PATCH 6/8] dm: Introduce dev_phys_to_bus()/dev_bus_to_phys() -Date: Thu, 19 Nov 2020 18:48:20 +0100 -Message-Id: <20201119174820.7820-7-nsaenzjulienne@suse.de> +Subject: [PATCH v3 07/12] dm: test: Add test case for dev->dma_offset +Date: Tue, 15 Dec 2020 18:23:18 +0100 +Message-Id: <20201215172323.13309-8-nsaenzjulienne@suse.de> X-Mailer: git-send-email 2.29.2 -In-Reply-To: <20201119174820.7820-1-nsaenzjulienne@suse.de> -References: <20201119174820.7820-1-nsaenzjulienne@suse.de> +In-Reply-To: <20201215172323.13309-1-nsaenzjulienne@suse.de> +References: <20201215172323.13309-1-nsaenzjulienne@suse.de> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +Add test to validate dev->dma_offset is properly set on devices. + +Signed-off-by: Nicolas Saenz Julienne +--- + arch/sandbox/dts/test.dts | 4 ++++ + configs/sandbox64_defconfig | 1 + + configs/sandbox_defconfig | 1 + + configs/sandbox_flattree_defconfig | 1 + + configs/sandbox_spl_defconfig | 1 + + test/dm/core.c | 30 ++++++++++++++++++++++++++++++ + 6 files changed, 38 insertions(+) + +diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts +index 3a3b51f83b..78f0100282 100644 +--- a/arch/sandbox/dts/test.dts ++++ b/arch/sandbox/dts/test.dts +@@ -307,6 +307,10 @@ + #address-cells = <1>; + #size-cells = <1>; + compatible = "denx,u-boot-test-bus"; ++ ++ subnode@0 { ++ compatible = "denx,u-boot-fdt-test"; ++ }; + }; + + acpi_test1: acpi-test { +diff --git a/configs/sandbox64_defconfig b/configs/sandbox64_defconfig +index 5fbbfd7236..2c189a8a00 100644 +--- a/configs/sandbox64_defconfig ++++ b/configs/sandbox64_defconfig +@@ -94,6 +94,7 @@ CONFIG_ENV_EXT4_DEVICE_AND_PART="0:0" + CONFIG_BOOTP_SEND_HOSTNAME=y + CONFIG_NETCONSOLE=y + CONFIG_IP_DEFRAG=y ++CONFIG_DM_DMA=y + CONFIG_REGMAP=y + CONFIG_SYSCON=y + CONFIG_DEVRES=y +diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig +index f1ec701a9f..ac97c16cef 100644 +--- a/configs/sandbox_defconfig ++++ b/configs/sandbox_defconfig +@@ -108,6 +108,7 @@ CONFIG_ENV_EXT4_DEVICE_AND_PART="0:0" + CONFIG_BOOTP_SEND_HOSTNAME=y + CONFIG_NETCONSOLE=y + CONFIG_IP_DEFRAG=y ++CONFIG_DM_DMA=y + CONFIG_REGMAP=y + CONFIG_SYSCON=y + CONFIG_DEVRES=y +diff --git a/configs/sandbox_flattree_defconfig b/configs/sandbox_flattree_defconfig +index edca7f1808..f5923bf713 100644 +--- a/configs/sandbox_flattree_defconfig ++++ b/configs/sandbox_flattree_defconfig +@@ -75,6 +75,7 @@ CONFIG_ENV_EXT4_DEVICE_AND_PART="0:0" + CONFIG_BOOTP_SEND_HOSTNAME=y + CONFIG_NETCONSOLE=y + CONFIG_IP_DEFRAG=y ++CONFIG_DM_DMA=y + CONFIG_REGMAP=y + CONFIG_SYSCON=y + CONFIG_DEVRES=y +diff --git a/configs/sandbox_spl_defconfig b/configs/sandbox_spl_defconfig +index 479f0226e3..0a4815770c 100644 +--- a/configs/sandbox_spl_defconfig ++++ b/configs/sandbox_spl_defconfig +@@ -94,6 +94,7 @@ CONFIG_BOOTP_SEND_HOSTNAME=y + CONFIG_NETCONSOLE=y + CONFIG_IP_DEFRAG=y + CONFIG_SPL_DM=y ++CONFIG_DM_DMA=y + CONFIG_REGMAP=y + CONFIG_SPL_REGMAP=y + CONFIG_SYSCON=y +diff --git a/test/dm/core.c b/test/dm/core.c +index 6f380a574c..998874ffee 100644 +--- a/test/dm/core.c ++++ b/test/dm/core.c +@@ -1066,3 +1066,33 @@ static int dm_test_inactive_child(struct unit_test_state *uts) + return 0; + } + DM_TEST(dm_test_inactive_child, UT_TESTF_SCAN_PDATA); ++ ++static int dm_test_dma_offset(struct unit_test_state *uts) ++{ ++ struct udevice *dev; ++ ofnode node; ++ ++ /* Make sure the bus's dma-ranges aren't taken into account here */ ++ node = ofnode_path("/mmio-bus@0"); ++ ut_assert(ofnode_valid(node)); ++ ut_assert(!uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); ++ ut_asserteq_64(0, dev->dma_offset); ++ ++ /* Device behind a bus with dma-ranges */ ++ node = ofnode_path("/mmio-bus@0/subnode@0"); ++ ut_assert(ofnode_valid(node)); ++ ut_assert(!uclass_get_device_by_ofnode(UCLASS_TEST_FDT, node, &dev)); ++ ut_asserteq_64(-0x10000000ULL, dev->dma_offset); ++ ++ /* This one has no dma-ranges */ ++ node = ofnode_path("/mmio-bus@1"); ++ ut_assert(ofnode_valid(node)); ++ ut_assert(!uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); ++ node = ofnode_path("/mmio-bus@1/subnode@0"); ++ ut_assert(ofnode_valid(node)); ++ ut_assert(!uclass_get_device_by_ofnode(UCLASS_TEST_FDT, node, &dev)); ++ ut_asserteq_64(0, dev->dma_offset); ++ ++ return 0; ++} ++DM_TEST(dm_test_dma_offset, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); + +From patchwork Tue Dec 15 17:23:19 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Nicolas Saenz Julienne +X-Patchwork-Id: 1416605 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=suse.de +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4CwQBD2DRkz9sRK + for ; Wed, 16 Dec 2020 04:25:07 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 9CFDD82A1B; + Tue, 15 Dec 2020 18:23:53 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id B5B47829EE; Tue, 15 Dec 2020 18:23:38 +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=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, + RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id B363E829F5 + for ; Tue, 15 Dec 2020 18:23:32 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=nsaenzjulienne@suse.de +Received: from relay2.suse.de (unknown [195.135.221.27]) + by mx2.suse.de (Postfix) with ESMTP id DC8BFB71A; + Tue, 15 Dec 2020 17:23:31 +0000 (UTC) +From: Nicolas Saenz Julienne +To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, + sjg@chromium.org, marex@denx.de +Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, swarren@wwwdotorg.org, + peng.fan@nxp.com, sr@denx.de, pbrobinson@gmail.com, + Nicolas Saenz Julienne +Subject: [PATCH v3 08/12] dm: Introduce dev_phys_to_bus()/dev_bus_to_phys() +Date: Tue, 15 Dec 2020 18:23:19 +0100 +Message-Id: <20201215172323.13309-9-nsaenzjulienne@suse.de> +X-Mailer: git-send-email 2.29.2 +In-Reply-To: <20201215172323.13309-1-nsaenzjulienne@suse.de> +References: <20201215172323.13309-1-nsaenzjulienne@suse.de> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 @@ -958,20 +1420,28 @@ These functions, instead of relying on hard-coded platform-specific address translations, make use of the DMA constraints provided by the DM core. This allows for per-device translations. +We can't yet get rid of the legacy phys_to_bus()/bus_to_phys() +implementations as some of its users are not integrated into the +device model. + Signed-off-by: Nicolas Saenz Julienne +Reviewed-by: Simon Glass --- +Changes since v2: + - Use CONFIG_DM_DMA + include/phys2bus.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/include/phys2bus.h b/include/phys2bus.h -index dc9b8e5a25..a380063af4 100644 +index dc9b8e5a25..516d630aea 100644 --- a/include/phys2bus.h +++ b/include/phys2bus.h @@ -21,4 +21,20 @@ static inline unsigned long bus_to_phys(unsigned long bus) } #endif -+#if CONFIG_IS_ENABLED(DM) ++#if CONFIG_IS_ENABLED(DM_DMA) +#include + +static inline dma_addr_t dev_phys_to_bus(struct udevice *dev, @@ -989,13 +1459,12 @@ index dc9b8e5a25..a380063af4 100644 + #endif -From patchwork Thu Nov 19 17:48:21 2020 +From patchwork Tue Dec 15 17:23:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1403203 -X-Patchwork-Delegate: matthias.bgg@gmail.com +X-Patchwork-Id: 1416606 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org @@ -1009,46 +1478,190 @@ 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 RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CcRzp2ZpRz9sTR - for ; Fri, 20 Nov 2020 04:50:46 +1100 (AEDT) + by ozlabs.org (Postfix) with ESMTPS id 4CwQBN59dSz9sPB + for ; Wed, 16 Dec 2020 04:25:16 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 2D4E0825D9; - Thu, 19 Nov 2020 18:49:25 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTP id 29A0082A13; + Tue, 15 Dec 2020 18:23:56 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id BFF1B825A3; Thu, 19 Nov 2020 18:49:12 +0100 (CET) + id 672DA82A04; Tue, 15 Dec 2020 18:23:40 +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=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham +X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, + RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id B7CCF82586 - for ; Thu, 19 Nov 2020 18:49:04 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTPS id 02380829F8 + for ; Tue, 15 Dec 2020 18:23:33 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=nsaenzjulienne@suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) - by mx2.suse.de (Postfix) with ESMTP id 7AA0FAD0F; - Thu, 19 Nov 2020 17:49:04 +0000 (UTC) + by mx2.suse.de (Postfix) with ESMTP id 8760FAFD7; + Tue, 15 Dec 2020 17:23:32 +0000 (UTC) From: Nicolas Saenz Julienne -To: u-boot@lists.denx.de, bmeng.cn@gmail.com, sjg@chromium.org, marex@denx.de -Cc: mbrugger@suse.com, m.szyprowski@samsung.com, s.nawrocki@samsung.com, - swarren@wwwdotorg.org, peng.fan@nxp.com, +To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, + sjg@chromium.org, marex@denx.de +Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, swarren@wwwdotorg.org, + peng.fan@nxp.com, sr@denx.de, pbrobinson@gmail.com, Nicolas Saenz Julienne -Subject: [PATCH 7/8] xhci: translate virtual addresses into the bus's address - space -Date: Thu, 19 Nov 2020 18:48:21 +0100 -Message-Id: <20201119174820.7820-8-nsaenzjulienne@suse.de> +Subject: [PATCH v3 09/12] dm: test: Add test case for + dev_phys_to_bus()/dev_bus_to_phys() +Date: Tue, 15 Dec 2020 18:23:20 +0100 +Message-Id: <20201215172323.13309-10-nsaenzjulienne@suse.de> X-Mailer: git-send-email 2.29.2 -In-Reply-To: <20201119174820.7820-1-nsaenzjulienne@suse.de> -References: <20201119174820.7820-1-nsaenzjulienne@suse.de> +In-Reply-To: <20201215172323.13309-1-nsaenzjulienne@suse.de> +References: <20201215172323.13309-1-nsaenzjulienne@suse.de> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +By reusing DT nodes already available in sandbox's test DT introduce a +test to validate dev_phys_to_bus()/dev_bus_to_phys(). + +Signed-off-by: Nicolas Saenz Julienne +--- + test/dm/Makefile | 1 + + test/dm/phys2bus.c | 36 ++++++++++++++++++++++++++++++++++++ + 2 files changed, 37 insertions(+) + create mode 100644 test/dm/phys2bus.c + +diff --git a/test/dm/Makefile b/test/dm/Makefile +index 5c52d8b6ea..ac86abaa88 100644 +--- a/test/dm/Makefile ++++ b/test/dm/Makefile +@@ -16,6 +16,7 @@ obj-$(CONFIG_UT_DM) += test-uclass.o + + obj-$(CONFIG_UT_DM) += core.o + obj-$(CONFIG_UT_DM) += read.o ++obj-$(CONFIG_UT_DM) += phys2bus.o + ifneq ($(CONFIG_SANDBOX),) + obj-$(CONFIG_ACPIGEN) += acpi.o + obj-$(CONFIG_ACPIGEN) += acpigen.o +diff --git a/test/dm/phys2bus.c b/test/dm/phys2bus.c +new file mode 100644 +index 0000000000..06a045c168 +--- /dev/null ++++ b/test/dm/phys2bus.c +@@ -0,0 +1,36 @@ ++// SPDX-License-Identifier: GPL-2.0+ ++/* ++ * Copyright (c) 2020 Nicolas Saenz Julienne ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++static int dm_test_phys_to_bus(struct unit_test_state *uts) ++{ ++ struct udevice *dev; ++ ofnode node; ++ ++ node = ofnode_path("/mmio-bus@0"); ++ ut_assert(ofnode_valid(node)); ++ ut_assert(!uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); ++ /* In this case it should be transparent, no dma-ranges in parent bus */ ++ ut_asserteq_ptr((void*)0xfffffULL, (void*)dev_phys_to_bus(dev, 0xfffff)); ++ ut_asserteq_ptr((void*)0xfffffULL, (void*)(ulong)dev_bus_to_phys(dev, 0xfffff)); ++ ++ node = ofnode_path("/mmio-bus@0/subnode@0"); ++ ut_assert(ofnode_valid(node)); ++ ut_assert(!uclass_get_device_by_ofnode(UCLASS_TEST_FDT, node, &dev)); ++ ut_asserteq_ptr((void*)0x100fffffULL, (void*)dev_phys_to_bus(dev, 0xfffff)); ++ ut_asserteq_ptr((void*)0xfffffULL, (void*)(ulong)dev_bus_to_phys(dev, 0x100fffff)); ++ ++ return 0; ++} ++DM_TEST(dm_test_phys_to_bus, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); + +From patchwork Tue Dec 15 17:23:21 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Nicolas Saenz Julienne +X-Patchwork-Id: 1416608 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=suse.de +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4CwQBm5kcqz9sPB + for ; Wed, 16 Dec 2020 04:25:36 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id E9EE282A25; + Tue, 15 Dec 2020 18:23:59 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 2666182A05; Tue, 15 Dec 2020 18:23:43 +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=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, + RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 4BFAE829F9 + for ; Tue, 15 Dec 2020 18:23:33 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=nsaenzjulienne@suse.de +Received: from relay2.suse.de (unknown [195.135.221.27]) + by mx2.suse.de (Postfix) with ESMTP id 0AEEDB1C9; + Tue, 15 Dec 2020 17:23:33 +0000 (UTC) +From: Nicolas Saenz Julienne +To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, + sjg@chromium.org, marex@denx.de +Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, swarren@wwwdotorg.org, + peng.fan@nxp.com, sr@denx.de, pbrobinson@gmail.com, + Nicolas Saenz Julienne +Subject: [PATCH v3 10/12] xhci: translate virtual addresses into the bus's + address space +Date: Tue, 15 Dec 2020 18:23:21 +0100 +Message-Id: <20201215172323.13309-11-nsaenzjulienne@suse.de> +X-Mailer: git-send-email 2.29.2 +In-Reply-To: <20201215172323.13309-1-nsaenzjulienne@suse.de> +References: <20201215172323.13309-1-nsaenzjulienne@suse.de> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 @@ -1073,7 +1686,7 @@ Raspberry Pi 4 might introduce an offset to memory accesses incoming from its PCIe port. Introduce xhci_virt_to_bus() and xhci_bus_to_virt() to cater with these -limitations and make sure we don't break non DM users. +limitations, and make sure we don't break non DM users. Signed-off-by: Nicolas Saenz Julienne --- @@ -1084,7 +1697,7 @@ Signed-off-by: Nicolas Saenz Julienne 4 files changed, 54 insertions(+), 28 deletions(-) diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c -index b002d6f166..e8d435d644 100644 +index b002d6f166..83147d51b5 100644 --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c @@ -110,7 +110,7 @@ static void xhci_scratchpad_free(struct xhci_ctrl *ctrl) @@ -1157,7 +1770,7 @@ index b002d6f166..e8d435d644 100644 - cpu_to_le64((uintptr_t)scratchpad->sp_array); + + val_64 = xhci_virt_to_bus(ctrl, scratchpad->sp_array); -+ ctrl->dcbaa->dev_context_ptrs[0] = cpu_to_le64((uintptr_t)val_64); ++ ctrl->dcbaa->dev_context_ptrs[0] = cpu_to_le64(val_64); xhci_flush_cache((uintptr_t)&ctrl->dcbaa->dev_context_ptrs[0], sizeof(ctrl->dcbaa->dev_context_ptrs[0])); @@ -1318,7 +1931,7 @@ index 7080f8fabe..d27ac01c83 100644 virt_dev->eps[ep_index].ring->cycle_state); diff --git a/include/usb/xhci.h b/include/usb/xhci.h -index e1d382369a..57e06087a1 100644 +index e1d382369a..b87210b9ba 100644 --- a/include/usb/xhci.h +++ b/include/usb/xhci.h @@ -16,6 +16,7 @@ @@ -1345,7 +1958,7 @@ index e1d382369a..57e06087a1 100644 +static inline dma_addr_t xhci_virt_to_bus(struct xhci_ctrl *ctrl, void *addr) +{ -+#if CONFIG_IS_ENABLED(DM_USB) ++#if CONFIG_IS_ENABLED(DM_DMA) + return dev_phys_to_bus(ctrl->dev, virt_to_phys(addr)); +#else + return phys_to_bus(virt_to_phys(addr)); @@ -1354,7 +1967,7 @@ index e1d382369a..57e06087a1 100644 + +static inline void *xhci_bus_to_virt(struct xhci_ctrl *ctrl, dma_addr_t addr) +{ -+#if CONFIG_IS_ENABLED(DM_USB) ++#if CONFIG_IS_ENABLED(DM_DMA) + return phys_to_virt(dev_bus_to_phys(ctrl->dev, addr)); +#else + return phys_to_virt(bus_to_phys(addr)); @@ -1363,13 +1976,12 @@ index e1d382369a..57e06087a1 100644 + #endif /* HOST_XHCI_H_ */ -From patchwork Thu Nov 19 17:48:22 2020 +From patchwork Tue Dec 15 17:23:22 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1403202 -X-Patchwork-Delegate: matthias.bgg@gmail.com +X-Patchwork-Id: 1416607 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org @@ -1383,45 +1995,46 @@ 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 RSA-PSS (4096 bits)) (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CcRzc5cjwz9s1l - for ; Fri, 20 Nov 2020 04:50:36 +1100 (AEDT) + by ozlabs.org (Postfix) with ESMTPS id 4CwQBb0GLmz9sPB + for ; Wed, 16 Dec 2020 04:25:27 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 4A055825D4; - Thu, 19 Nov 2020 18:49:23 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTP id E7F9482A20; + Tue, 15 Dec 2020 18:23:57 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) - id 0FD2E8258E; Thu, 19 Nov 2020 18:49:11 +0100 (CET) + id 05F0082A03; Tue, 15 Dec 2020 18:23:41 +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=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham +X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, + RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 3691182573 - for ; Thu, 19 Nov 2020 18:49:05 +0100 (CET) + by phobos.denx.de (Postfix) with ESMTPS id CA59E829FA + for ; Tue, 15 Dec 2020 18:23:33 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=nsaenzjulienne@suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) - by mx2.suse.de (Postfix) with ESMTP id F38DCAD11; - Thu, 19 Nov 2020 17:49:04 +0000 (UTC) + by mx2.suse.de (Postfix) with ESMTP id 92E15AF1A; + Tue, 15 Dec 2020 17:23:33 +0000 (UTC) From: Nicolas Saenz Julienne -To: u-boot@lists.denx.de, bmeng.cn@gmail.com, sjg@chromium.org, marex@denx.de -Cc: mbrugger@suse.com, m.szyprowski@samsung.com, s.nawrocki@samsung.com, - swarren@wwwdotorg.org, peng.fan@nxp.com, +To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, + sjg@chromium.org, marex@denx.de +Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, swarren@wwwdotorg.org, + peng.fan@nxp.com, sr@denx.de, pbrobinson@gmail.com, Nicolas Saenz Julienne -Subject: [PATCH 8/8] mmc: Introduce mmc_phys_to_bus()/mmc_bus_to_phys() -Date: Thu, 19 Nov 2020 18:48:22 +0100 -Message-Id: <20201119174820.7820-9-nsaenzjulienne@suse.de> +Subject: [PATCH v3 11/12] mmc: Introduce mmc_phys_to_bus()/mmc_bus_to_phys() +Date: Tue, 15 Dec 2020 18:23:22 +0100 +Message-Id: <20201215172323.13309-12-nsaenzjulienne@suse.de> X-Mailer: git-send-email 2.29.2 -In-Reply-To: <20201119174820.7820-1-nsaenzjulienne@suse.de> -References: <20201119174820.7820-1-nsaenzjulienne@suse.de> +In-Reply-To: <20201215172323.13309-1-nsaenzjulienne@suse.de> +References: <20201215172323.13309-1-nsaenzjulienne@suse.de> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 @@ -1481,7 +2094,7 @@ index 0628934312..2086d7cdb1 100644 } } diff --git a/include/mmc.h b/include/mmc.h -index 1d377e0281..805a3b2215 100644 +index 1d377e0281..5fe1ef1dfc 100644 --- a/include/mmc.h +++ b/include/mmc.h @@ -15,6 +15,7 @@ @@ -1498,7 +2111,7 @@ index 1d377e0281..805a3b2215 100644 +static inline dma_addr_t mmc_phys_to_bus(struct mmc *mmc, phys_addr_t addr) +{ -+#if CONFIG_IS_ENABLED(DM_MMC) ++#if CONFIG_IS_ENABLED(DM_DMA) + return dev_phys_to_bus(mmc->dev, addr); +#else + return phys_to_bus(addr); @@ -1506,3 +2119,127 @@ index 1d377e0281..805a3b2215 100644 +} + #endif /* _MMC_H_ */ + +From patchwork Tue Dec 15 17:23:23 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Nicolas Saenz Julienne +X-Patchwork-Id: 1416609 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=suse.de +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4CwQBy4zZlz9sPB + for ; Wed, 16 Dec 2020 04:25:46 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 6DF6282A2E; + Tue, 15 Dec 2020 18:24:04 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 9CF0B82A09; Tue, 15 Dec 2020 18:23:42 +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=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, + RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=ham + autolearn_force=no version=3.4.2 +Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 6979E829FE + for ; Tue, 15 Dec 2020 18:23:34 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=nsaenzjulienne@suse.de +Received: from relay2.suse.de (unknown [195.135.221.27]) + by mx2.suse.de (Postfix) with ESMTP id 2DF96AC7F; + Tue, 15 Dec 2020 17:23:34 +0000 (UTC) +From: Nicolas Saenz Julienne +To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, + sjg@chromium.org, marex@denx.de +Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, swarren@wwwdotorg.org, + peng.fan@nxp.com, sr@denx.de, pbrobinson@gmail.com, + Nicolas Saenz Julienne +Subject: [PATCH v3 12/12] configs: rpi4: Enable DM_DMA across all RPi4 + configurations +Date: Tue, 15 Dec 2020 18:23:23 +0100 +Message-Id: <20201215172323.13309-13-nsaenzjulienne@suse.de> +X-Mailer: git-send-email 2.29.2 +In-Reply-To: <20201215172323.13309-1-nsaenzjulienne@suse.de> +References: <20201215172323.13309-1-nsaenzjulienne@suse.de> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +The DM_DMA option is needed in order to translate physical address into +bus addresses on a per-device basis. + +Signed-off-by: Nicolas Saenz Julienne +--- + configs/rpi_4_32b_defconfig | 1 + + configs/rpi_4_defconfig | 1 + + configs/rpi_arm64_defconfig | 1 + + 3 files changed, 3 insertions(+) + +diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig +index 5ddd838fd5..0a5d3ff8cd 100644 +--- a/configs/rpi_4_32b_defconfig ++++ b/configs/rpi_4_32b_defconfig +@@ -22,6 +22,7 @@ CONFIG_OF_BOARD=y + CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" + CONFIG_SYS_RELOC_GD_ENV_ADDR=y + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y ++CONFIG_DM_DMA=y + CONFIG_DFU_MMC=y + CONFIG_DM_KEYBOARD=y + CONFIG_DM_MMC=y +diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig +index 2590d0a696..b61cdc05f1 100644 +--- a/configs/rpi_4_defconfig ++++ b/configs/rpi_4_defconfig +@@ -22,6 +22,7 @@ CONFIG_OF_BOARD=y + CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" + CONFIG_SYS_RELOC_GD_ENV_ADDR=y + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y ++CONFIG_DM_DMA=y + CONFIG_DFU_MMC=y + CONFIG_DM_KEYBOARD=y + CONFIG_DM_MMC=y +diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig +index 2639219a1a..4125a1feba 100644 +--- a/configs/rpi_arm64_defconfig ++++ b/configs/rpi_arm64_defconfig +@@ -20,6 +20,7 @@ CONFIG_CMD_FS_UUID=y + CONFIG_OF_BOARD=y + CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y ++CONFIG_DM_DMA=y + CONFIG_DM_KEYBOARD=y + CONFIG_DM_MMC=y + CONFIG_MMC_SDHCI=y diff --git a/aarch64-boards b/aarch64-boards index d849833..e5d4147 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -43,6 +43,9 @@ orangepi_win orangepi_zero_plus orangepi_zero_plus2 p212 +p2371-2180 +p2771-0000-500 +p3450-0000 pine64-lts pine64_plus pinebook @@ -51,6 +54,7 @@ pinephone pinetab pine_h64 poplar +puma-rk3399 rock64-rk3328 rock960-rk3399 rock-pi-4-rk3399 diff --git a/arm-boards b/arm-boards index f4a04d4..8a7798d 100644 --- a/arm-boards +++ b/arm-boards @@ -56,6 +56,7 @@ inet9f_rev03 inet_q972 Itead_Ibox_A20 jesurun_q5 +jetson-tk1 kc1 Lamobo_R1 libretech_all_h3_cc_h2_plus @@ -63,6 +64,7 @@ Linksprite_pcDuino Linksprite_pcDuino3 Linksprite_pcDuino3_Nano liteboard +marsboard Marsboard_A10 Mele_A1000 Mele_A1000G_quad @@ -99,6 +101,8 @@ orangepi_plus2e orangepi_r1 orangepi_zero origen +paz00 +pinecube polaroid_mid2809pxe04 pov_protab2_ips9 q8_a13_tablet @@ -107,8 +111,10 @@ q8_a33_tablet_1024x600 q8_a33_tablet_800x480 qemu_arm r7-tv-dongle +riotboard rock rock-pi-n8-rk3288 +rock2 rpi_2 rpi_3_32b rpi_4_32b @@ -121,6 +127,9 @@ sunxi_Gemei_G9 tbs_a711 tinker-rk3288 tinker-s-rk3288 +trimslice +udoo +udoo_neo usbarmory UTOO_P66 vexpress_ca15_tc2 diff --git a/rockchip-Move-Bob-specific-bits-to-it-s-specific-u-b.patch b/rockchip-Move-Bob-specific-bits-to-it-s-specific-u-b.patch deleted file mode 100644 index 2718f7b..0000000 --- a/rockchip-Move-Bob-specific-bits-to-it-s-specific-u-b.patch +++ /dev/null @@ -1,104 +0,0 @@ -From 71f86c48580642a8d6a7d1049427bb72cb93b480 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Sun, 8 Nov 2020 19:57:50 +0000 -Subject: [PATCH] rockchip: Move Bob specific bits to it's specific u-boot.dtsi - -Move the bits that are device specific to the -u-boot.dtsi as the -bits may be different on other devices and hence breaks SPI on -those devices such as the Pinebook Pro. - -Signed-off-by: Peter Robinson -Fixes: c4cea2bbf995 ("rockchip: Enable building a SPI ROM image on bob") -Cc: Simon Glass ---- - arch/arm/dts/rk3399-gru-u-boot.dtsi | 30 +++++++++++++++++++++++++++++ - arch/arm/dts/rk3399-u-boot.dtsi | 25 ------------------------ - 2 files changed, 30 insertions(+), 25 deletions(-) - -diff --git a/arch/arm/dts/rk3399-gru-u-boot.dtsi b/arch/arm/dts/rk3399-gru-u-boot.dtsi -index 390ac2bb5a..5e95cacfea 100644 ---- a/arch/arm/dts/rk3399-gru-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-gru-u-boot.dtsi -@@ -5,6 +5,36 @@ - - #include "rk3399-u-boot.dtsi" - -+/ { -+ aliases { -+ spi1 = &spi1; -+ }; -+}; -+ -+#ifdef CONFIG_ROCKCHIP_SPI_IMAGE -+&binman { -+ rom { -+ filename = "u-boot.rom"; -+ size = <0x400000>; -+ pad-byte = <0xff>; -+ -+ mkimage { -+ args = "-n rk3399 -T rkspi"; -+ u-boot-spl { -+ }; -+ }; -+ u-boot-img { -+ offset = <0x40000>; -+ }; -+ u-boot { -+ offset = <0x300000>; -+ }; -+ fdtmap { -+ }; -+ }; -+}; -+#endif -+ - &spi_flash { - u-boot,dm-pre-reloc; - }; -diff --git a/arch/arm/dts/rk3399-u-boot.dtsi b/arch/arm/dts/rk3399-u-boot.dtsi -index ecd230c720..26b0a34e64 100644 ---- a/arch/arm/dts/rk3399-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-u-boot.dtsi -@@ -11,7 +11,6 @@ - mmc0 = &sdhci; - mmc1 = &sdmmc; - pci0 = &pcie0; -- spi1 = &spi1; - }; - - cic: syscon@ff620000 { -@@ -60,30 +59,6 @@ - - }; - --#ifdef CONFIG_ROCKCHIP_SPI_IMAGE --&binman { -- rom { -- filename = "u-boot.rom"; -- size = <0x400000>; -- pad-byte = <0xff>; -- -- mkimage { -- args = "-n rk3399 -T rkspi"; -- u-boot-spl { -- }; -- }; -- u-boot-img { -- offset = <0x40000>; -- }; -- u-boot { -- offset = <0x300000>; -- }; -- fdtmap { -- }; -- }; --}; --#endif -- - &cru { - u-boot,dm-pre-reloc; - }; --- -2.28.0 - diff --git a/rockchip-Pinebook-Pro-Fix-USB.patch b/rockchip-Pinebook-Pro-Fix-USB.patch deleted file mode 100644 index 8f81454..0000000 --- a/rockchip-Pinebook-Pro-Fix-USB.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 12bc3e2c7c805f989629d1a546276491a7d28922 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Mon, 9 Nov 2020 23:01:19 +0000 -Subject: [PATCH] rockchip: Pinebook Pro: Fix USB - -Improve USB config so keyboard and USB-A ports work. - -Signed-off-by: Peter Robinson ---- - configs/pinebook-pro-rk3399_defconfig | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig -index 1ed54ad0ed..8fbd7280ac 100644 ---- a/configs/pinebook-pro-rk3399_defconfig -+++ b/configs/pinebook-pro-rk3399_defconfig -@@ -55,6 +55,8 @@ CONFIG_SPI_FLASH_WINBOND=y - CONFIG_DM_ETH=y - CONFIG_NVME=y - CONFIG_PCI=y -+CONFIG_PHY_ROCKCHIP_INNO_USB2=y -+CONFIG_PHY_ROCKCHIP_TYPEC=y - CONFIG_DM_PMIC_FAN53555=y - CONFIG_PMIC_RK8XX=y - CONFIG_REGULATOR_PWM=y -@@ -76,8 +78,9 @@ CONFIG_USB_EHCI_GENERIC=y - CONFIG_USB_OHCI_HCD=y - CONFIG_USB_OHCI_GENERIC=y - CONFIG_USB_DWC3=y --CONFIG_ROCKCHIP_USB2_PHY=y -+CONFIG_USB_DWC3_GENERIC=y - CONFIG_USB_KEYBOARD=y -+CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y - CONFIG_USB_HOST_ETHER=y - CONFIG_USB_ETHER_ASIX=y - CONFIG_USB_ETHER_RTL8152=y --- -2.28.0 - diff --git a/sources b/sources index 2551a01..69acae9 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2021.01-rc2.tar.bz2) = ac21ed6ce160de377a8ea5750cd617f1c6d6e2b9508c8999fafb641e210e3bd030dcd26cea38259639c45ae0d0b9fda6d1007c547fdee002d8d946d6fb1952bb +SHA512 (u-boot-2021.01-rc3.tar.bz2) = 4c88bbdeb1e39e52bb069c4bf65c9829290a51da9a21de8e60d50b62c74ae98a35d22a235fdc0a86467aedc34f85dff5d63b874af247323d0d5bdcb2e82cd4a3 diff --git a/uboot-tools.spec b/uboot-tools.spec index 31a75ec..98b93ed 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -%global candidate rc2 +%global candidate rc3 Name: uboot-tools Version: 2021.01 -Release: 0.2%{?candidate:.%{candidate}}%{?dist} +Release: 0.3%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -23,22 +23,19 @@ Patch2: uefi-use-Fedora-specific-path-name.patch # Board fixes and enablement # RPi - uses RPI firmware device tree for HAT support Patch4: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch -Patch5: rpi-Add-identifier-for-the-new-RPi400.patch +Patch5: Raspberry-Pi-400-Compute-Module-4-support.patch # Tegra improvements Patch6: arm-tegra-define-fdtfile-option-for-distro-boot.patch Patch7: arm-add-BOOTENV_EFI_SET_FDTFILE_FALLBACK-for-tegra186-be.patch # AllWinner improvements -Patch8: AllWinner-UpstreamSync.patch -Patch9: AllWinner-PinePhone.patch Patch10: AllWinner-PineTab.patch Patch11: 0001-Fixes-for-AllWinner-ethernet-network-interfaces.patch +Patch12: sunxi-add-PineCube-board.patch # TI fixes -Patch12: 0001-Fix-BeagleAI-detection.patch +Patch13: 0001-Fix-BeagleAI-detection.patch # Rockchips improvements -Patch13: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch -Patch14: rockchip-Move-Bob-specific-bits-to-it-s-specific-u-b.patch +#Patch14: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch Patch15: rk3399-Pinebook-pro-EDP-support.patch -Patch16: rockchip-Pinebook-Pro-Fix-USB.patch BuildRequires: bc BuildRequires: dtc @@ -239,6 +236,11 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Tue Dec 15 2020 Peter Robinson - 2021.01-0.3.rc3 +- Update to 2021.01 RC3 +- Latest RPi-400/CM4 support patch +- Re-enable previously disabled device support + * Mon Dec 14 2020 Javier Martinez Canillas - 2021.01-0.2.rc2 - Fix a "scan_dev_for_efi" not defined error From 43dd5ec40fad39915fb6574db4101cc7a849fd87 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 15 Dec 2020 18:31:27 +0000 Subject: [PATCH 040/271] add PineCube patch --- sunxi-add-PineCube-board.patch | 222 +++++++++++++++++++++++++++++++++ 1 file changed, 222 insertions(+) create mode 100644 sunxi-add-PineCube-board.patch diff --git a/sunxi-add-PineCube-board.patch b/sunxi-add-PineCube-board.patch new file mode 100644 index 0000000..dd8ec26 --- /dev/null +++ b/sunxi-add-PineCube-board.patch @@ -0,0 +1,222 @@ +From patchwork Wed Nov 18 10:27:17 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Icenowy Zheng +X-Patchwork-Id: 1402159 +X-Patchwork-Delegate: andre.przywara@arm.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=none (p=none dis=none) header.from=aosc.io +Authentication-Results: ozlabs.org; + dkim=fail reason="signature verification failed" (1024-bit key; + unprotected) header.d=mymailcheap.com header.i=@mymailcheap.com + header.a=rsa-sha256 header.s=default header.b=YYrkSpBD; + dkim=fail reason="signature verification failed" (1024-bit key; + unprotected) header.d=aosc.io header.i=@aosc.io header.a=rsa-sha256 + header.s=default header.b=o7lHQ4SZ; + dkim-atps=neutral +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4CbfCp3G62z9s1l + for ; Wed, 18 Nov 2020 21:28:22 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 00D6D82304; + Wed, 18 Nov 2020 11:28:16 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=aosc.io +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; + dkim=fail reason="signature verification failed" (1024-bit key; + unprotected) header.d=mymailcheap.com header.i=@mymailcheap.com + header.b="YYrkSpBD"; + dkim=fail reason="signature verification failed" (1024-bit key; + unprotected) header.d=aosc.io header.i=@aosc.io header.b="o7lHQ4SZ"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 2E5B282309; Wed, 18 Nov 2020 11:28:11 +0100 (CET) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, + DKIM_VALID,DKIM_VALID_AU,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham + autolearn_force=no version=3.4.2 +Received: from relay1.mymailcheap.com (relay1.mymailcheap.com + [144.217.248.100]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id EC082808F1 + for ; Wed, 18 Nov 2020 11:28:05 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=aosc.io +Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=icenowy@aosc.io +Received: from filter2.mymailcheap.com (filter2.mymailcheap.com + [91.134.140.82]) + by relay1.mymailcheap.com (Postfix) with ESMTPS id 18A423F201; + Wed, 18 Nov 2020 10:27:59 +0000 (UTC) +Received: from localhost (localhost [127.0.0.1]) + by filter2.mymailcheap.com (Postfix) with ESMTP id 6377C2A7E9; + Wed, 18 Nov 2020 11:27:58 +0100 (CET) +DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mymailcheap.com; + s=default; t=1605695278; + bh=vA5tPn4fjpXJj/OQnRg+m708mrodc5u5TJSDVOSBnHo=; + h=From:To:Cc:Subject:Date:From; + b=YYrkSpBDGdpkLi16yGwNw7yMTXXW566rTdXX2RSRxCe6FylY99qiYDmZR+PZFqCX0 + t3yDL0nO6zMKUvJVqZaTwsroyblAKNCaLz1AfCURNqCwohtJcIkDsegRYz9slzT9Qu + BQkTT6dosAIQFtAVrc48QBX38eHXMYreqkbHXz5g= +Received: from filter2.mymailcheap.com ([127.0.0.1]) + by localhost (filter2.mymailcheap.com [127.0.0.1]) (amavisd-new, port 10024) + with ESMTP id eCMZCx2FVDgE; Wed, 18 Nov 2020 11:27:57 +0100 (CET) +Received: from mail20.mymailcheap.com (mail20.mymailcheap.com [51.83.111.147]) + (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by filter2.mymailcheap.com (Postfix) with ESMTPS; + Wed, 18 Nov 2020 11:27:57 +0100 (CET) +Received: from [213.133.102.83] (ml.mymailcheap.com [213.133.102.83]) + by mail20.mymailcheap.com (Postfix) with ESMTP id A597A400BE; + Wed, 18 Nov 2020 10:27:56 +0000 (UTC) +Authentication-Results: mail20.mymailcheap.com; dkim=pass (1024-bit key; + unprotected) header.d=aosc.io header.i=@aosc.io header.b="o7lHQ4SZ"; + dkim-atps=neutral +AI-Spam-Status: Not processed +Received: from ice-e5v2.lan (unknown [59.41.160.51]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest + SHA256) (No client certificate requested) + by mail20.mymailcheap.com (Postfix) with ESMTPSA id 3B979400BE; + Wed, 18 Nov 2020 10:27:45 +0000 (UTC) +DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=aosc.io; s=default; + t=1605695270; bh=vA5tPn4fjpXJj/OQnRg+m708mrodc5u5TJSDVOSBnHo=; + h=From:To:Cc:Subject:Date:From; + b=o7lHQ4SZ+kcNlSGrF+USzZxRQhtIEcZFQPjvsiu+MiK+TTjArUzo5bRKHH0I4ZcDM + a4Ywg6IcctT99QEZGbRIHqhvjH6/Kvj4lWM77Bb0DrlHXfEdOj3LC7KiAF1vVGFfPI + 0oTEacf71O2OWPmQBqEH/uaV/IiGI4rZvgWiMPkk= +From: Icenowy Zheng +To: Jagan Teki , + Andre Przywara , + Hans de Goede +Cc: u-boot@lists.denx.de, linux-sunxi@googlegroups.com, + Icenowy Zheng +Subject: [PATCH v3] sunxi: add PineCube board +Date: Wed, 18 Nov 2020 18:27:17 +0800 +Message-Id: <20201118102717.635129-1-icenowy@aosc.io> +X-Mailer: git-send-email 2.28.0 +MIME-Version: 1.0 +X-Rspamd-Queue-Id: A597A400BE +X-Spamd-Result: default: False [4.90 / 20.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; + ARC_NA(0.00)[]; R_DKIM_ALLOW(0.00)[aosc.io:s=default]; + RECEIVED_SPAMHAUS_PBL(0.00)[59.41.160.51:received]; + FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; + R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; + MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[aosc.io]; + BROKEN_CONTENT_TYPE(1.50)[]; R_SPF_SOFTFAIL(0.00)[~all]; + RCPT_COUNT_FIVE(0.00)[6]; ML_SERVERS(-3.10)[213.133.102.83]; + DKIM_TRACE(0.00)[aosc.io:+]; MID_CONTAINS_FROM(1.00)[]; + RCVD_NO_TLS_LAST(0.10)[]; FROM_EQ_ENVFROM(0.00)[]; + MIME_TRACE(0.00)[0:+]; + ASN(0.00)[asn:24940, ipnet:213.133.96.0/19, country:DE]; + RCVD_COUNT_TWO(0.00)[2]; + HFILTER_HELO_BAREIP(3.00)[213.133.102.83,1] +X-Rspamd-Server: mail20.mymailcheap.com +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +PineCube is an IP camera development kit released by Pine64. + +It comes with the following compoents: + +- A mainboard with Sochip S3 SoC, a 16MByte SPI Flash, AXP209 PMIC, +a power-only microUSB connector, a USB Type-A connector, a 10/100Mbps +Ethernet port and FPC connectors for camera and daughter board. +- An OV5640-based camera module which is connected to the parallel CSI +bus of the mainboard. +- A daughterboard with several buttons, a SD slot, some IR LEDs, a +microphone and a speaker connector. + +As the device tree is synchronized in a previous commit, just add it to +Makefile, create a new MAINTAINER item and provide a defconfig. + +Signed-off-by: Icenowy Zheng +Reviewed-by: Andre Przywara +--- +Changes since v2: +- Add Makefile reference to DT. +Changes since v1: +- Dropped LDO3 quirk. + + arch/arm/dts/Makefile | 1 + + board/sunxi/MAINTAINERS | 5 +++++ + configs/pinecube_defconfig | 15 +++++++++++++++ + 3 files changed, 21 insertions(+) + create mode 100644 configs/pinecube_defconfig + +diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile +index 7d1a369845..e6993733b0 100644 +--- a/arch/arm/dts/Makefile ++++ b/arch/arm/dts/Makefile +@@ -587,6 +587,7 @@ dtb-$(CONFIG_MACH_SUN8I_R40) += \ + sun8i-r40-bananapi-m2-ultra.dtb \ + sun8i-v40-bananapi-m2-berry.dtb + dtb-$(CONFIG_MACH_SUN8I_V3S) += \ ++ sun8i-s3-pinecube.dtb \ + sun8i-v3s-licheepi-zero.dtb + dtb-$(CONFIG_MACH_SUN50I_H5) += \ + sun50i-h5-bananapi-m2-plus.dtb \ +diff --git a/board/sunxi/MAINTAINERS b/board/sunxi/MAINTAINERS +index d3755ae41a..735801ae1d 100644 +--- a/board/sunxi/MAINTAINERS ++++ b/board/sunxi/MAINTAINERS +@@ -440,6 +440,11 @@ M: Vasily Khoruzhick + S: Maintained + F: configs/pinebook_defconfig + ++PINECUBE BOARD: ++M: Icenowy Zheng ++S: Maintained ++F: configs/pinecube_defconfig ++ + PINE64 BOARDS + M: Andre Przywara + S: Maintained +diff --git a/configs/pinecube_defconfig b/configs/pinecube_defconfig +new file mode 100644 +index 0000000000..a8c404f6b1 +--- /dev/null ++++ b/configs/pinecube_defconfig +@@ -0,0 +1,15 @@ ++CONFIG_ARM=y ++CONFIG_ARCH_SUNXI=y ++CONFIG_SPL=y ++CONFIG_MACH_SUN8I_V3S=y ++CONFIG_SUNXI_DRAM_DDR3_1333=y ++CONFIG_DRAM_CLK=504 ++CONFIG_DRAM_ODT_EN=y ++CONFIG_I2C0_ENABLE=y ++CONFIG_DEFAULT_DEVICE_TREE="sun8i-s3-pinecube" ++CONFIG_SPL_I2C_SUPPORT=y ++# CONFIG_NETDEVICES is not set ++CONFIG_AXP209_POWER=y ++CONFIG_AXP_DCDC2_VOLT=1250 ++CONFIG_AXP_DCDC3_VOLT=3300 ++CONFIG_CONS_INDEX=3 From 459ca6d6b4053714db0286fd283785d07ffcc266 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 16 Dec 2020 15:57:14 +0000 Subject: [PATCH 041/271] update rk3399 rng patch --- ...nable-rng-on-rock960-and-firefly3399.patch | 188 ++++++++++-------- uboot-tools.spec | 2 +- 2 files changed, 106 insertions(+), 84 deletions(-) diff --git a/arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch b/arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch index 89e38f5..3aef1a9 100644 --- a/arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch +++ b/arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch @@ -1,102 +1,98 @@ -From c206a750c80dc4aaa8e7eade50199b3198a3e288 Mon Sep 17 00:00:00 2001 +From 5cb3ca7ebd46c1983d0929b5ba027a03c1f5e51e Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Wed, 19 Aug 2020 15:49:25 +0100 -Subject: [PATCH 1/3] rockchip: RockPro64: enable rng to provide an entropy - source +Date: Wed, 16 Dec 2020 15:22:34 +0000 +Subject: [PATCH 1/2] arm: dts: rockchip: rk3399: enable rng at the SoC level -Enable the rng so UEFI can provide entropy for KASLR +The rng is embedded in the SoC so enable it in the device tree +universally, the use of it can be controlled by enabling/disabling +at the device config level. Signed-off-by: Peter Robinson --- - configs/rockpro64-rk3399_defconfig | 2 ++ - 1 file changed, 2 insertions(+) + arch/arm/dts/rk3399-evb-u-boot.dtsi | 4 ---- + arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi | 4 ---- + arch/arm/dts/rk3399-rockpro64-u-boot.dtsi | 4 ---- + arch/arm/dts/rk3399-u-boot.dtsi | 2 +- + 4 files changed, 1 insertion(+), 13 deletions(-) -diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig -index a6e2c3d71d..9b1ba04b9e 100644 ---- a/configs/rockpro64-rk3399_defconfig -+++ b/configs/rockpro64-rk3399_defconfig -@@ -41,6 +41,8 @@ CONFIG_MMC_DW=y - CONFIG_MMC_DW_ROCKCHIP=y - CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_ROCKCHIP=y -+CONFIG_DM_RNG=y -+CONFIG_RNG_ROCKCHIP=y - CONFIG_SPI_FLASH_GIGADEVICE=y - CONFIG_DM_ETH=y - CONFIG_ETH_DESIGNWARE=y --- -2.26.2 - -From 91db3a7baa4cfc8f1f8879b4bdafeb05902f2114 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Wed, 19 Aug 2020 15:52:15 +0100 -Subject: [PATCH 2/3] rockchip: Rock960: enable rng to provide an entropy - source - -Enable the rng so UEFI can provide entropy for KASLR - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/rk3399-rock960-u-boot.dtsi | 4 ++++ - configs/rock960-rk3399_defconfig | 2 ++ - 2 files changed, 6 insertions(+) - -diff --git a/arch/arm/dts/rk3399-rock960-u-boot.dtsi b/arch/arm/dts/rk3399-rock960-u-boot.dtsi -index c190089e26..08292dbd39 100644 ---- a/arch/arm/dts/rk3399-rock960-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-rock960-u-boot.dtsi -@@ -24,3 +24,7 @@ +diff --git a/arch/arm/dts/rk3399-evb-u-boot.dtsi b/arch/arm/dts/rk3399-evb-u-boot.dtsi +index 8056dc843e..398b205ec2 100644 +--- a/arch/arm/dts/rk3399-evb-u-boot.dtsi ++++ b/arch/arm/dts/rk3399-evb-u-boot.dtsi +@@ -13,10 +13,6 @@ + }; + }; + +-&rng { +- status = "okay"; +-}; +- + &i2c0 { + u-boot,dm-pre-reloc; + }; +diff --git a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi +index ded7db0aef..c3e866a779 100644 +--- a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi ++++ b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi +@@ -28,10 +28,6 @@ + u-boot,dm-pre-reloc; + }; + +-&rng { +- status = "okay"; +-}; +- + &sdhci { + max-frequency = <25000000>; + u-boot,dm-pre-reloc; +diff --git a/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi b/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi +index 6317b47e41..37dff04adf 100644 +--- a/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi ++++ b/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi +@@ -15,10 +15,6 @@ + }; + }; + +-&rng { +- status = "okay"; +-}; +- + &spi1 { + spi_flash: flash@0 { + u-boot,dm-pre-reloc; +diff --git a/arch/arm/dts/rk3399-u-boot.dtsi b/arch/arm/dts/rk3399-u-boot.dtsi +index ecd230c720..73922c328a 100644 +--- a/arch/arm/dts/rk3399-u-boot.dtsi ++++ b/arch/arm/dts/rk3399-u-boot.dtsi +@@ -32,7 +32,7 @@ + rng: rng@ff8b8000 { + compatible = "rockchip,cryptov1-rng"; + reg = <0x0 0xff8b8000 0x0 0x1000>; +- status = "disabled"; ++ status = "okay"; }; - }; -+ -+&rng { -+ status = "okay"; -+}; -diff --git a/configs/rock960-rk3399_defconfig b/configs/rock960-rk3399_defconfig -index 1d997847c2..9c4d8871b7 100644 ---- a/configs/rock960-rk3399_defconfig -+++ b/configs/rock960-rk3399_defconfig -@@ -38,6 +38,8 @@ CONFIG_MMC_DW_ROCKCHIP=y - CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_SDMA=y - CONFIG_MMC_SDHCI_ROCKCHIP=y -+CONFIG_DM_RNG=y -+CONFIG_RNG_ROCKCHIP=y - CONFIG_DM_ETH=y - CONFIG_NVME=y - CONFIG_PCI=y + dmc: dmc { -- -2.26.2 +2.29.2 -From ac0793c7c4ee032da11bddbd0bdefee2322bb621 Mon Sep 17 00:00:00 2001 +From 62093137fcbe760d009cf2757feda7ccf328fbb7 Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Wed, 19 Aug 2020 15:53:58 +0100 -Subject: [PATCH 3/3] rockchip: firefly-rk3399: enable rng to provide an - entropy source +Date: Wed, 16 Dec 2020 15:37:21 +0000 +Subject: [PATCH 2/2] configs: rk3399: enable rng on firefly/rock960/rockpro64 -Enable the rng so UEFI can provide entropy for KASLR +Enable the RNG on the Firefly, rock960 and RockPro64 devices +to enable KASLR on devices that support it. Signed-off-by: Peter Robinson --- - arch/arm/dts/rk3399-firefly-u-boot.dtsi | 4 ++++ - configs/firefly-rk3399_defconfig | 2 ++ - 2 files changed, 6 insertions(+) + configs/firefly-rk3399_defconfig | 2 ++ + configs/rock960-rk3399_defconfig | 2 ++ + configs/rockpro64-rk3399_defconfig | 2 ++ + 3 files changed, 6 insertions(+) -diff --git a/arch/arm/dts/rk3399-firefly-u-boot.dtsi b/arch/arm/dts/rk3399-firefly-u-boot.dtsi -index 38e0897db9..a6c7b913da 100644 ---- a/arch/arm/dts/rk3399-firefly-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-firefly-u-boot.dtsi -@@ -11,3 +11,7 @@ - u-boot,spl-boot-order = "same-as-spl", &sdhci, &sdmmc; - }; - }; -+ -+&rng { -+ status = "okay"; -+}; diff --git a/configs/firefly-rk3399_defconfig b/configs/firefly-rk3399_defconfig -index ea4a30ebf3..e242ee5009 100644 +index c453b82dc5..cfbaae40aa 100644 --- a/configs/firefly-rk3399_defconfig +++ b/configs/firefly-rk3399_defconfig @@ -35,6 +35,8 @@ CONFIG_MMC_DW=y @@ -108,6 +104,32 @@ index ea4a30ebf3..e242ee5009 100644 CONFIG_SF_DEFAULT_SPEED=20000000 CONFIG_DM_ETH=y CONFIG_ETH_DESIGNWARE=y +diff --git a/configs/rock960-rk3399_defconfig b/configs/rock960-rk3399_defconfig +index 65dce3cd73..aadbc55f57 100644 +--- a/configs/rock960-rk3399_defconfig ++++ b/configs/rock960-rk3399_defconfig +@@ -39,6 +39,8 @@ CONFIG_MMC_DW_ROCKCHIP=y + CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_SDMA=y + CONFIG_MMC_SDHCI_ROCKCHIP=y ++CONFIG_DM_RNG=y ++CONFIG_RNG_ROCKCHIP=y + CONFIG_DM_ETH=y + CONFIG_NVME=y + CONFIG_PCI=y +diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig +index 575b7a20d5..f78dfcc8f7 100644 +--- a/configs/rockpro64-rk3399_defconfig ++++ b/configs/rockpro64-rk3399_defconfig +@@ -42,6 +42,8 @@ CONFIG_MMC_DW=y + CONFIG_MMC_DW_ROCKCHIP=y + CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_ROCKCHIP=y ++CONFIG_DM_RNG=y ++CONFIG_RNG_ROCKCHIP=y + CONFIG_SF_DEFAULT_BUS=1 + CONFIG_SPI_FLASH_GIGADEVICE=y + CONFIG_DM_ETH=y -- -2.26.2 +2.29.2 diff --git a/uboot-tools.spec b/uboot-tools.spec index 98b93ed..76a39d2 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -34,7 +34,7 @@ Patch12: sunxi-add-PineCube-board.patch # TI fixes Patch13: 0001-Fix-BeagleAI-detection.patch # Rockchips improvements -#Patch14: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch +Patch14: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch Patch15: rk3399-Pinebook-pro-EDP-support.patch BuildRequires: bc From 9019d1f21bcedaf2d5db81d8169e01438f6ab069 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 28 Dec 2020 21:48:37 +0000 Subject: [PATCH 042/271] 2021.01 RC4, new rpi-400 patch Signed-off-by: Peter Robinson --- ...erry-Pi-400-Compute-Module-4-support.patch | 1282 ++++------------- ...SET_FDTFILE_FALLBACK-for-tegra186-be.patch | 55 - ...efine-fdtfile-option-for-distro-boot.patch | 113 -- sources | 2 +- uboot-tools.spec | 22 +- 5 files changed, 273 insertions(+), 1201 deletions(-) delete mode 100644 arm-add-BOOTENV_EFI_SET_FDTFILE_FALLBACK-for-tegra186-be.patch delete mode 100644 arm-tegra-define-fdtfile-option-for-distro-boot.patch diff --git a/Raspberry-Pi-400-Compute-Module-4-support.patch b/Raspberry-Pi-400-Compute-Module-4-support.patch index 6d0a27c..14ffb29 100644 --- a/Raspberry-Pi-400-Compute-Module-4-support.patch +++ b/Raspberry-Pi-400-Compute-Module-4-support.patch @@ -1,90 +1,16 @@ -From patchwork Tue Dec 15 17:23:12 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1416597 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=suse.de -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CwQ8l3Yy3z9sPB - for ; Wed, 16 Dec 2020 04:23:41 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 9EE4A829F3; - Tue, 15 Dec 2020 18:23:32 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 9EDCF829F5; Tue, 15 Dec 2020 18:23:30 +0100 (CET) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, - RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 1E15E829EE - for ; Tue, 15 Dec 2020 18:23:28 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=nsaenzjulienne@suse.de -Received: from relay2.suse.de (unknown [195.135.221.27]) - by mx2.suse.de (Postfix) with ESMTP id D500BACC6; - Tue, 15 Dec 2020 17:23:27 +0000 (UTC) +From 110229bb9a802385c73d8861de833feb1a7dadb8 Mon Sep 17 00:00:00 2001 From: Nicolas Saenz Julienne -To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, - sjg@chromium.org, marex@denx.de -Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, swarren@wwwdotorg.org, - peng.fan@nxp.com, sr@denx.de, pbrobinson@gmail.com, - Nicolas Saenz Julienne -Subject: [PATCH v3 01/12] rpi: Add identifier for the new RPi400 -Date: Tue, 15 Dec 2020 18:23:12 +0100 -Message-Id: <20201215172323.13309-2-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.29.2 -In-Reply-To: <20201215172323.13309-1-nsaenzjulienne@suse.de> -References: <20201215172323.13309-1-nsaenzjulienne@suse.de> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean +Date: Wed, 23 Dec 2020 19:55:27 +0100 +Subject: [PATCH 01/13] rpi: Add identifier for the new RPi400 The Raspberry Pi Foundation released the new RPi400 which we want to detect, so we can enable Ethernet on it and know the correct device tree file name. Signed-off-by: Nicolas Saenz Julienne +Reviewed-by: Peter Robinson +Tested-by: Peter Robinson --- - -Changes since v1: - - The RPi Foundation introduced a RPi400 specific device tree, so use - that file name instead of the fallback (RPi4b). - board/raspberrypi/rpi/rpi.c | 5 +++++ 1 file changed, 5 insertions(+) @@ -104,83 +30,13 @@ index 6b1fa5fc14..b66698e4a9 100644 }; static const struct rpi_model rpi_models_old_scheme[] = { +-- +2.29.2 -From patchwork Tue Dec 15 17:23:13 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1416599 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=suse.de -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CwQ8w3WB6z9sS8 - for ; Wed, 16 Dec 2020 04:24:00 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id DD01382A02; - Tue, 15 Dec 2020 18:23:39 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 9BF99829FB; Tue, 15 Dec 2020 18:23:33 +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=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, - RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id A9EDA829EF - for ; Tue, 15 Dec 2020 18:23:28 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=nsaenzjulienne@suse.de -Received: from relay2.suse.de (unknown [195.135.221.27]) - by mx2.suse.de (Postfix) with ESMTP id 6F5BBAF1A; - Tue, 15 Dec 2020 17:23:28 +0000 (UTC) +From 0b92c14019915aa7d81fa0b6746b800b037c7977 Mon Sep 17 00:00:00 2001 From: Nicolas Saenz Julienne -To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, - sjg@chromium.org, marex@denx.de -Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, swarren@wwwdotorg.org, - peng.fan@nxp.com, sr@denx.de, pbrobinson@gmail.com, - Nicolas Saenz Julienne -Subject: [PATCH v3 02/12] rpi: Add identifier for the new CM4 -Date: Tue, 15 Dec 2020 18:23:13 +0100 -Message-Id: <20201215172323.13309-3-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.29.2 -In-Reply-To: <20201215172323.13309-1-nsaenzjulienne@suse.de> -References: <20201215172323.13309-1-nsaenzjulienne@suse.de> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean +Date: Wed, 23 Dec 2020 19:55:28 +0100 +Subject: [PATCH 02/13] rpi: Add identifier for the new CM4 The Raspberry Pi Foundation released the new Compute Module 4 which we want to detect, so we can enable Ethernet on it and know the correct @@ -211,82 +67,13 @@ index b66698e4a9..abcf41a5a8 100644 }; static const struct rpi_model rpi_models_old_scheme[] = { +-- +2.29.2 -From patchwork Tue Dec 15 17:23:14 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1416601 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=suse.de -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CwQ9K2mz5z9sPB - for ; Wed, 16 Dec 2020 04:24:21 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id D4983829F1; - Tue, 15 Dec 2020 18:23:44 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id DF1AE829FB; Tue, 15 Dec 2020 18:23:35 +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=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, - RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 3D7D2829F0 - for ; Tue, 15 Dec 2020 18:23:29 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=nsaenzjulienne@suse.de -Received: from relay2.suse.de (unknown [195.135.221.27]) - by mx2.suse.de (Postfix) with ESMTP id 07A04AF22; - Tue, 15 Dec 2020 17:23:29 +0000 (UTC) +From 4fa949f51bad277d64a52c99dde0c90d3114d3b4 Mon Sep 17 00:00:00 2001 From: Nicolas Saenz Julienne -To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, - sjg@chromium.org, marex@denx.de -Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, swarren@wwwdotorg.org, - peng.fan@nxp.com, sr@denx.de, pbrobinson@gmail.com, - Nicolas Saenz Julienne -Subject: [PATCH v3 03/12] pci: pcie-brcmstb: Fix inbound window configurations -Date: Tue, 15 Dec 2020 18:23:14 +0100 -Message-Id: <20201215172323.13309-4-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.29.2 -In-Reply-To: <20201215172323.13309-1-nsaenzjulienne@suse.de> -References: <20201215172323.13309-1-nsaenzjulienne@suse.de> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean +Date: Wed, 23 Dec 2020 19:55:29 +0100 +Subject: [PATCH 03/13] pci: pcie-brcmstb: Fix inbound window configurations So far we've assumed a fixed configuration for inbound windows as we had a single user for this controller. But the controller's DMA constraints @@ -336,83 +123,13 @@ index dade79e9c8..f6e8ad0d0a 100644 tmp = lower_32_bits(rc_bar2_offset); u32p_replace_bits(&tmp, brcm_pcie_encode_ibar_size(rc_bar2_size), +-- +2.29.2 -From patchwork Tue Dec 15 17:23:15 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1416603 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=suse.de -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CwQ9n295dz9sPB - for ; Wed, 16 Dec 2020 04:24:45 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 67F0A82A0D; - Tue, 15 Dec 2020 18:23:49 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 01A3B829EF; Tue, 15 Dec 2020 18:23:37 +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=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, - RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id CF965829F1 - for ; Tue, 15 Dec 2020 18:23:29 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=nsaenzjulienne@suse.de -Received: from relay2.suse.de (unknown [195.135.221.27]) - by mx2.suse.de (Postfix) with ESMTP id 933CFAF8D; - Tue, 15 Dec 2020 17:23:29 +0000 (UTC) +From 68a67ccb7fc417ad321bd916c81e91ca6b0cc276 Mon Sep 17 00:00:00 2001 From: Nicolas Saenz Julienne -To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, - sjg@chromium.org, marex@denx.de -Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, swarren@wwwdotorg.org, - peng.fan@nxp.com, sr@denx.de, pbrobinson@gmail.com, - Nicolas Saenz Julienne -Subject: [PATCH v3 04/12] dm: Introduce xxx_get_dma_range() -Date: Tue, 15 Dec 2020 18:23:15 +0100 -Message-Id: <20201215172323.13309-5-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.29.2 -In-Reply-To: <20201215172323.13309-1-nsaenzjulienne@suse.de> -References: <20201215172323.13309-1-nsaenzjulienne@suse.de> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean +Date: Wed, 23 Dec 2020 19:55:30 +0100 +Subject: [PATCH 04/13] dm: Introduce xxx_get_dma_range() Add the following functions to get a specific device's DMA ranges: - dev_get_dma_range() @@ -424,17 +141,8 @@ space range into a bus's and to convert addresses from and to address spaces. Signed-off-by: Nicolas Saenz Julienne +Reviewed-by: Simon Glass --- -Changes since v2: - - Return ENOENT instead of ENODEV - - Refcount OF nodes - -Changes since v1: - - Fix wrong arguments in of_get_dma_range()'s call to of_translate_dma_address() - - Fix build in SPL/TPL and no LIBFDT supprt - - Add missing declaration in 'core/read.c' - - Address Matthias' comments - common/fdt_support.c | 73 +++++++++++++++++++++++++++++++++++++++ drivers/core/of_addr.c | 78 ++++++++++++++++++++++++++++++++++++++++++ drivers/core/ofnode.c | 9 +++++ @@ -774,88 +482,19 @@ index dbbac0fb6a..46eb1dbbb2 100644 int fdt_node_offset_by_compat_reg(void *blob, const char *compat, phys_addr_t compat_off); int fdt_alloc_phandle(void *blob); +-- +2.29.2 -From patchwork Tue Dec 15 17:23:16 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1416600 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=suse.de -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CwQ965n7dz9sPB - for ; Wed, 16 Dec 2020 04:24:10 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 3E93F82A06; - Tue, 15 Dec 2020 18:23:42 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id C092C829FB; Tue, 15 Dec 2020 18:23:34 +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=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, - RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 78A6C829F4 - for ; Tue, 15 Dec 2020 18:23:30 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=nsaenzjulienne@suse.de -Received: from relay2.suse.de (unknown [195.135.221.27]) - by mx2.suse.de (Postfix) with ESMTP id 299DBB27A; - Tue, 15 Dec 2020 17:23:30 +0000 (UTC) +From ab6897014ee799d5858911aa85d97ded1620f746 Mon Sep 17 00:00:00 2001 From: Nicolas Saenz Julienne -To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, - sjg@chromium.org, marex@denx.de -Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, swarren@wwwdotorg.org, - peng.fan@nxp.com, sr@denx.de, pbrobinson@gmail.com, - Nicolas Saenz Julienne -Subject: [PATCH v3 05/12] dm: test: Add test case for dev_get_dma_ranges() -Date: Tue, 15 Dec 2020 18:23:16 +0100 -Message-Id: <20201215172323.13309-6-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.29.2 -In-Reply-To: <20201215172323.13309-1-nsaenzjulienne@suse.de> -References: <20201215172323.13309-1-nsaenzjulienne@suse.de> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean +Date: Wed, 23 Dec 2020 19:55:31 +0100 +Subject: [PATCH 05/13] dm: test: Add test case for dev_get_dma_ranges() Introduce some new nodes in sandbox's test device-tree and dm tests in order to validate dev_get_dma_range(). Signed-off-by: Nicolas Saenz Julienne +Reviewed-by: Simon Glass --- arch/sandbox/dts/test.dts | 17 ++++++++++++++ test/dm/Makefile | 1 + @@ -905,7 +544,7 @@ index 46e076ed09..5c52d8b6ea 100644 obj-$(CONFIG_ACPIGEN) += acpigen.o diff --git a/test/dm/read.c b/test/dm/read.c new file mode 100644 -index 0000000000..090eee0544 +index 0000000000..7768aa2968 --- /dev/null +++ b/test/dm/read.c @@ -0,0 +1,49 @@ @@ -934,8 +573,8 @@ index 0000000000..090eee0544 + /* dma-ranges are on the device's node */ + node = ofnode_path("/mmio-bus@0"); + ut_assert(ofnode_valid(node)); -+ ut_assert(!uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); -+ ut_assert(!dev_get_dma_range(dev, &cpu, &bus, &size)); ++ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); ++ ut_assertok(dev_get_dma_range(dev, &cpu, &bus, &size)); + ut_asserteq_64(0x40000, size); + ut_asserteq_64(0x0, cpu); + ut_asserteq_64(0x10000000, bus); @@ -943,8 +582,8 @@ index 0000000000..090eee0544 + /* dma-ranges are on the bus' node */ + node = ofnode_path("/mmio-bus@0/subnode@0"); + ut_assert(ofnode_valid(node)); -+ ut_assert(!uclass_get_device_by_ofnode(UCLASS_TEST_FDT, node, &dev)); -+ ut_assert(!dev_get_dma_range(dev, &cpu, &bus, &size)); ++ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_FDT, node, &dev)); ++ ut_assertok(dev_get_dma_range(dev, &cpu, &bus, &size)); + ut_asserteq_64(0x40000, size); + ut_asserteq_64(0x0, cpu); + ut_asserteq_64(0x10000000, bus); @@ -952,89 +591,20 @@ index 0000000000..090eee0544 + /* No dma-ranges available */ + node = ofnode_path("/mmio-bus@1"); + ut_assert(ofnode_valid(node)); -+ ut_assert(!uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); ++ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); + ut_asserteq(-ENOENT, dev_get_dma_range(dev, &cpu, &bus, &size)); + + return 0; +} +DM_TEST(dm_test_dma_ranges, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); +-- +2.29.2 -From patchwork Tue Dec 15 17:23:17 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1416602 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=suse.de -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CwQ9Y1YbZz9sPB - for ; Wed, 16 Dec 2020 04:24:33 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 5A5D482A08; - Tue, 15 Dec 2020 18:23:47 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 5D82E829F0; Tue, 15 Dec 2020 18:23:36 +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=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, - RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id AF637829EE - for ; Tue, 15 Dec 2020 18:23:31 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=nsaenzjulienne@suse.de -Received: from relay2.suse.de (unknown [195.135.221.27]) - by mx2.suse.de (Postfix) with ESMTP id CE05EAFBE; - Tue, 15 Dec 2020 17:23:30 +0000 (UTC) +From 1ec61488a9757fbe6a92af3a7595a3f3b63fa298 Mon Sep 17 00:00:00 2001 From: Nicolas Saenz Julienne -To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, - sjg@chromium.org, marex@denx.de -Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, swarren@wwwdotorg.org, - peng.fan@nxp.com, sr@denx.de, pbrobinson@gmail.com, - Nicolas Saenz Julienne -Subject: [PATCH v3 06/12] dm: Introduce DMA constraints into the core device +Date: Wed, 23 Dec 2020 19:55:32 +0100 +Subject: [PATCH 06/13] dm: Introduce DMA constraints into the core device model -Date: Tue, 15 Dec 2020 18:23:17 +0100 -Message-Id: <20201215172323.13309-7-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.29.2 -In-Reply-To: <20201215172323.13309-1-nsaenzjulienne@suse.de> -References: <20201215172323.13309-1-nsaenzjulienne@suse.de> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean Calculating the DMA offset between a bus address space and CPU's every time we call phys_to_bus() and bus_to_phys() isn't ideal performance @@ -1045,23 +615,15 @@ DMA offset in 'struct udevice' for the address translation code to use it. Signed-off-by: Nicolas Saenz Julienne +Reviewed-by: Simon Glass --- -Changes since v2: - - Return/Fail on error - - Add config option - - use ulong instead for u64 for dev->dma_offset - -Changes since v1: - - Update commit message so as to explain better the reasoning behind - this - drivers/core/Kconfig | 10 ++++++++++ - drivers/core/device.c | 35 +++++++++++++++++++++++++++++++++++ - include/dm/device.h | 3 +++ - 3 files changed, 48 insertions(+) + drivers/core/device.c | 41 +++++++++++++++++++++++++++++++++++++++++ + include/dm/device.h | 13 +++++++++++++ + 3 files changed, 64 insertions(+) diff --git a/drivers/core/Kconfig b/drivers/core/Kconfig -index ffae6f9795..153be25351 100644 +index ffae6f9795..295cf2dd00 100644 --- a/drivers/core/Kconfig +++ b/drivers/core/Kconfig @@ -113,6 +113,16 @@ config SPL_DM_SEQ_ALIAS @@ -1069,7 +631,7 @@ index ffae6f9795..153be25351 100644 disabled if it is not required, to save code space in SPL. +config DM_DMA -+ bool "Support per device DMA constraints" ++ bool "Support per-device DMA constraints" + depends on DM + default n + help @@ -1082,14 +644,23 @@ index ffae6f9795..153be25351 100644 bool "Support register maps" depends on DM diff --git a/drivers/core/device.c b/drivers/core/device.c -index 4b3dcb3b37..21285432d8 100644 +index 4b3dcb3b37..047032a1dd 100644 --- a/drivers/core/device.c +++ b/drivers/core/device.c -@@ -421,6 +421,37 @@ fail: +@@ -421,6 +421,43 @@ fail: return ret; } -+#if CONFIG_IS_ENABLED(DM_DMA) ++/** ++ * device_get_dma_constraints() - Populate device's DMA constraints ++ * ++ * Gets a device's DMA constraints from firmware. This information is later ++ * used by drivers to translate physcal addresses to the device's bus address ++ * space. For now only device-tree is supported. ++ * ++ * @dev: Pointer to target device ++ * Return: 0 if OK or if no DMA constraints were found, error otherwise ++ */ +static int device_get_dma_constraints(struct udevice *dev) +{ + struct udevice *parent = dev->parent; @@ -1098,7 +669,7 @@ index 4b3dcb3b37..21285432d8 100644 + u64 size = 0; + int ret; + -+ if (!parent || !dev_of_valid(parent)) ++ if (!CONFIG_IS_ENABLED(DM_DMA) || !parent || !dev_of_valid(parent)) + return 0; + + /* @@ -1112,18 +683,15 @@ index 4b3dcb3b37..21285432d8 100644 + return ret; + } + -+ dev->dma_offset = cpu - bus; ++ dev_set_dma_offset(dev, cpu - bus); + + return 0; +} -+#else -+static int device_get_dma_constraints(struct udevice *dev) { return 0; } -+#endif + int device_probe(struct udevice *dev) { const struct driver *drv; -@@ -482,6 +513,10 @@ int device_probe(struct udevice *dev) +@@ -482,6 +519,10 @@ int device_probe(struct udevice *dev) goto fail; } @@ -1135,99 +703,55 @@ index 4b3dcb3b37..21285432d8 100644 if (ret) goto fail; diff --git a/include/dm/device.h b/include/dm/device.h -index 5bef484247..9126dc00fe 100644 +index 5bef484247..b27889af01 100644 --- a/include/dm/device.h +++ b/include/dm/device.h -@@ -161,6 +161,9 @@ struct udevice { +@@ -138,6 +138,8 @@ enum { + * When CONFIG_DEVRES is enabled, devm_kmalloc() and friends will + * add to this list. Memory so-allocated will be freed + * automatically when the device is removed / unbound ++ * @dma_offset: Offset between the physical address space (CPU's) and the ++ * device's bus address space + */ + struct udevice { + const struct driver *driver; +@@ -161,6 +163,9 @@ struct udevice { #ifdef CONFIG_DEVRES struct list_head devres_head; #endif -+#ifdef CONFIG_DM_DMA ++#if CONFIG_IS_ENABLED(DM_DMA) + ulong dma_offset; +#endif }; /* Maximum sequence number supported */ +@@ -172,6 +177,14 @@ struct udevice { + /* Returns non-zero if the device is active (probed and not removed) */ + #define device_active(dev) ((dev)->flags & DM_FLAG_ACTIVATED) + ++#if CONFIG_IS_ENABLED(DM_DMA) ++#define dev_set_dma_offset(_dev, _offset) _dev->dma_offset = _offset ++#define dev_get_dma_offset(_dev) _dev->dma_offset ++#else ++#define dev_set_dma_offset(_dev, _offset) ++#define dev_get_dma_offset(_dev) 0 ++#endif ++ + static inline int dev_of_offset(const struct udevice *dev) + { + return ofnode_to_offset(dev->node); +-- +2.29.2 -From patchwork Tue Dec 15 17:23:18 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1416604 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=suse.de -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CwQB14gCvz9sPB - for ; Wed, 16 Dec 2020 04:24:57 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id DF70A82A16; - Tue, 15 Dec 2020 18:23:51 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 8DEB6829FF; Tue, 15 Dec 2020 18:23:38 +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=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, - RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 65B40829ED - for ; Tue, 15 Dec 2020 18:23:32 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=nsaenzjulienne@suse.de -Received: from relay2.suse.de (unknown [195.135.221.27]) - by mx2.suse.de (Postfix) with ESMTP id 54CF4B1C2; - Tue, 15 Dec 2020 17:23:31 +0000 (UTC) +From 78faf21e47d29666ff36d853bbf3bb20508fafce Mon Sep 17 00:00:00 2001 From: Nicolas Saenz Julienne -To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, - sjg@chromium.org, marex@denx.de -Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, swarren@wwwdotorg.org, - peng.fan@nxp.com, sr@denx.de, pbrobinson@gmail.com, - Nicolas Saenz Julienne -Subject: [PATCH v3 07/12] dm: test: Add test case for dev->dma_offset -Date: Tue, 15 Dec 2020 18:23:18 +0100 -Message-Id: <20201215172323.13309-8-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.29.2 -In-Reply-To: <20201215172323.13309-1-nsaenzjulienne@suse.de> -References: <20201215172323.13309-1-nsaenzjulienne@suse.de> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean +Date: Wed, 23 Dec 2020 19:55:33 +0100 +Subject: [PATCH 07/13] dm: test: Add test case for dev->dma_offset Add test to validate dev->dma_offset is properly set on devices. Signed-off-by: Nicolas Saenz Julienne +Reviewed-by: Simon Glass --- arch/sandbox/dts/test.dts | 4 ++++ configs/sandbox64_defconfig | 1 + @@ -1301,7 +825,7 @@ index 479f0226e3..0a4815770c 100644 CONFIG_SPL_REGMAP=y CONFIG_SYSCON=y diff --git a/test/dm/core.c b/test/dm/core.c -index 6f380a574c..998874ffee 100644 +index 6f380a574c..8ca49d09ee 100644 --- a/test/dm/core.c +++ b/test/dm/core.c @@ -1066,3 +1066,33 @@ static int dm_test_inactive_child(struct unit_test_state *uts) @@ -1317,104 +841,34 @@ index 6f380a574c..998874ffee 100644 + /* Make sure the bus's dma-ranges aren't taken into account here */ + node = ofnode_path("/mmio-bus@0"); + ut_assert(ofnode_valid(node)); -+ ut_assert(!uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); ++ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); + ut_asserteq_64(0, dev->dma_offset); + + /* Device behind a bus with dma-ranges */ + node = ofnode_path("/mmio-bus@0/subnode@0"); + ut_assert(ofnode_valid(node)); -+ ut_assert(!uclass_get_device_by_ofnode(UCLASS_TEST_FDT, node, &dev)); ++ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_FDT, node, &dev)); + ut_asserteq_64(-0x10000000ULL, dev->dma_offset); + + /* This one has no dma-ranges */ + node = ofnode_path("/mmio-bus@1"); + ut_assert(ofnode_valid(node)); -+ ut_assert(!uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); ++ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); + node = ofnode_path("/mmio-bus@1/subnode@0"); + ut_assert(ofnode_valid(node)); -+ ut_assert(!uclass_get_device_by_ofnode(UCLASS_TEST_FDT, node, &dev)); ++ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_FDT, node, &dev)); + ut_asserteq_64(0, dev->dma_offset); + + return 0; +} +DM_TEST(dm_test_dma_offset, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); +-- +2.29.2 -From patchwork Tue Dec 15 17:23:19 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1416605 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=suse.de -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CwQBD2DRkz9sRK - for ; Wed, 16 Dec 2020 04:25:07 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 9CFDD82A1B; - Tue, 15 Dec 2020 18:23:53 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id B5B47829EE; Tue, 15 Dec 2020 18:23:38 +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=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, - RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id B363E829F5 - for ; Tue, 15 Dec 2020 18:23:32 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=nsaenzjulienne@suse.de -Received: from relay2.suse.de (unknown [195.135.221.27]) - by mx2.suse.de (Postfix) with ESMTP id DC8BFB71A; - Tue, 15 Dec 2020 17:23:31 +0000 (UTC) +From f77b6417252d77112b63202f3b63b778bc8de117 Mon Sep 17 00:00:00 2001 From: Nicolas Saenz Julienne -To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, - sjg@chromium.org, marex@denx.de -Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, swarren@wwwdotorg.org, - peng.fan@nxp.com, sr@denx.de, pbrobinson@gmail.com, - Nicolas Saenz Julienne -Subject: [PATCH v3 08/12] dm: Introduce dev_phys_to_bus()/dev_bus_to_phys() -Date: Tue, 15 Dec 2020 18:23:19 +0100 -Message-Id: <20201215172323.13309-9-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.29.2 -In-Reply-To: <20201215172323.13309-1-nsaenzjulienne@suse.de> -References: <20201215172323.13309-1-nsaenzjulienne@suse.de> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean +Date: Wed, 23 Dec 2020 19:55:34 +0100 +Subject: [PATCH 08/13] dm: Introduce dev_phys_to_bus()/dev_bus_to_phys() These functions, instead of relying on hard-coded platform-specific address translations, make use of the DMA constraints provided by the DM @@ -1426,124 +880,55 @@ device model. Signed-off-by: Nicolas Saenz Julienne Reviewed-by: Simon Glass +Reviewed-by: Stefan Roese --- -Changes since v2: - - Use CONFIG_DM_DMA - - include/phys2bus.h | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) + include/phys2bus.h | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) diff --git a/include/phys2bus.h b/include/phys2bus.h -index dc9b8e5a25..516d630aea 100644 +index dc9b8e5a25..866b8b51a8 100644 --- a/include/phys2bus.h +++ b/include/phys2bus.h -@@ -21,4 +21,20 @@ static inline unsigned long bus_to_phys(unsigned long bus) +@@ -21,4 +21,21 @@ static inline unsigned long bus_to_phys(unsigned long bus) } #endif -+#if CONFIG_IS_ENABLED(DM_DMA) ++#if CONFIG_IS_ENABLED(DM) +#include + -+static inline dma_addr_t dev_phys_to_bus(struct udevice *dev, -+ phys_addr_t phys) ++static inline dma_addr_t dev_phys_to_bus(struct udevice *dev, phys_addr_t phys) +{ -+ return phys - dev->dma_offset; ++ return phys - dev_get_dma_offset(dev); +} + -+static inline phys_addr_t dev_bus_to_phys(struct udevice *dev, -+ dma_addr_t bus) ++static inline phys_addr_t dev_bus_to_phys(struct udevice *dev, dma_addr_t bus) +{ -+ return bus + dev->dma_offset; ++ return bus + dev_get_dma_offset(dev); +} ++#else ++#define dev_phys_to_bus(_, _addr) _addr ++#define dev_bus_to_phys(_, _addr) _addr +#endif + #endif +-- +2.29.2 -From patchwork Tue Dec 15 17:23:20 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1416606 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=suse.de -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CwQBN59dSz9sPB - for ; Wed, 16 Dec 2020 04:25:16 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 29A0082A13; - Tue, 15 Dec 2020 18:23:56 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 672DA82A04; Tue, 15 Dec 2020 18:23:40 +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=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, - RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 02380829F8 - for ; Tue, 15 Dec 2020 18:23:33 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=nsaenzjulienne@suse.de -Received: from relay2.suse.de (unknown [195.135.221.27]) - by mx2.suse.de (Postfix) with ESMTP id 8760FAFD7; - Tue, 15 Dec 2020 17:23:32 +0000 (UTC) +From bf9d354942113252ef74c0a6394d71fb52d4325b Mon Sep 17 00:00:00 2001 From: Nicolas Saenz Julienne -To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, - sjg@chromium.org, marex@denx.de -Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, swarren@wwwdotorg.org, - peng.fan@nxp.com, sr@denx.de, pbrobinson@gmail.com, - Nicolas Saenz Julienne -Subject: [PATCH v3 09/12] dm: test: Add test case for +Date: Wed, 23 Dec 2020 19:55:35 +0100 +Subject: [PATCH 09/13] dm: test: Add test case for dev_phys_to_bus()/dev_bus_to_phys() -Date: Tue, 15 Dec 2020 18:23:20 +0100 -Message-Id: <20201215172323.13309-10-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.29.2 -In-Reply-To: <20201215172323.13309-1-nsaenzjulienne@suse.de> -References: <20201215172323.13309-1-nsaenzjulienne@suse.de> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean By reusing DT nodes already available in sandbox's test DT introduce a test to validate dev_phys_to_bus()/dev_bus_to_phys(). Signed-off-by: Nicolas Saenz Julienne +Reviewed-by: Simon Glass --- test/dm/Makefile | 1 + - test/dm/phys2bus.c | 36 ++++++++++++++++++++++++++++++++++++ - 2 files changed, 37 insertions(+) + test/dm/phys2bus.c | 37 +++++++++++++++++++++++++++++++++++++ + 2 files changed, 38 insertions(+) create mode 100644 test/dm/phys2bus.c diff --git a/test/dm/Makefile b/test/dm/Makefile @@ -1560,10 +945,10 @@ index 5c52d8b6ea..ac86abaa88 100644 obj-$(CONFIG_ACPIGEN) += acpigen.o diff --git a/test/dm/phys2bus.c b/test/dm/phys2bus.c new file mode 100644 -index 0000000000..06a045c168 +index 0000000000..342f2fa8eb --- /dev/null +++ b/test/dm/phys2bus.c -@@ -0,0 +1,36 @@ +@@ -0,0 +1,37 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2020 Nicolas Saenz Julienne @@ -1571,6 +956,7 @@ index 0000000000..06a045c168 + +#include +#include ++#include +#include +#include +#include @@ -1586,98 +972,28 @@ index 0000000000..06a045c168 + + node = ofnode_path("/mmio-bus@0"); + ut_assert(ofnode_valid(node)); -+ ut_assert(!uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); ++ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); + /* In this case it should be transparent, no dma-ranges in parent bus */ -+ ut_asserteq_ptr((void*)0xfffffULL, (void*)dev_phys_to_bus(dev, 0xfffff)); -+ ut_asserteq_ptr((void*)0xfffffULL, (void*)(ulong)dev_bus_to_phys(dev, 0xfffff)); ++ ut_asserteq_addr((void*)0xfffffULL, (void*)dev_phys_to_bus(dev, 0xfffff)); ++ ut_asserteq_addr((void*)0xfffffULL, (void*)(ulong)dev_bus_to_phys(dev, 0xfffff)); + + node = ofnode_path("/mmio-bus@0/subnode@0"); + ut_assert(ofnode_valid(node)); -+ ut_assert(!uclass_get_device_by_ofnode(UCLASS_TEST_FDT, node, &dev)); -+ ut_asserteq_ptr((void*)0x100fffffULL, (void*)dev_phys_to_bus(dev, 0xfffff)); -+ ut_asserteq_ptr((void*)0xfffffULL, (void*)(ulong)dev_bus_to_phys(dev, 0x100fffff)); ++ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_FDT, node, &dev)); ++ ut_asserteq_addr((void*)0x100fffffULL, (void*)dev_phys_to_bus(dev, 0xfffff)); ++ ut_asserteq_addr((void*)0xfffffULL, (void*)(ulong)dev_bus_to_phys(dev, 0x100fffff)); + + return 0; +} +DM_TEST(dm_test_phys_to_bus, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); +-- +2.29.2 -From patchwork Tue Dec 15 17:23:21 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1416608 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=suse.de -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CwQBm5kcqz9sPB - for ; Wed, 16 Dec 2020 04:25:36 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id E9EE282A25; - Tue, 15 Dec 2020 18:23:59 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 2666182A05; Tue, 15 Dec 2020 18:23:43 +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=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, - RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 4BFAE829F9 - for ; Tue, 15 Dec 2020 18:23:33 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=nsaenzjulienne@suse.de -Received: from relay2.suse.de (unknown [195.135.221.27]) - by mx2.suse.de (Postfix) with ESMTP id 0AEEDB1C9; - Tue, 15 Dec 2020 17:23:33 +0000 (UTC) -From: Nicolas Saenz Julienne -To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, - sjg@chromium.org, marex@denx.de -Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, swarren@wwwdotorg.org, - peng.fan@nxp.com, sr@denx.de, pbrobinson@gmail.com, - Nicolas Saenz Julienne -Subject: [PATCH v3 10/12] xhci: translate virtual addresses into the bus's +From 8abe749ff354a369f748c06aa70711bcdea9e61c Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Mon, 28 Dec 2020 21:38:37 +0000 +Subject: [PATCH 10/13] xhci: translate virtual addresses into the bus's address space -Date: Tue, 15 Dec 2020 18:23:21 +0100 -Message-Id: <20201215172323.13309-11-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.29.2 -In-Reply-To: <20201215172323.13309-1-nsaenzjulienne@suse.de> -References: <20201215172323.13309-1-nsaenzjulienne@suse.de> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean So far we've been content with passing physical addresses when configuring memory addresses into XHCI controllers, but not all @@ -1689,12 +1005,15 @@ Introduce xhci_virt_to_bus() and xhci_bus_to_virt() to cater with these limitations, and make sure we don't break non DM users. Signed-off-by: Nicolas Saenz Julienne +Reviewed-by: Simon Glass +Reviewed-by: Stefan Roese +Signed-off-by: Peter Robinson --- drivers/usb/host/xhci-mem.c | 45 +++++++++++++++++++----------------- - drivers/usb/host/xhci-ring.c | 11 +++++---- + drivers/usb/host/xhci-ring.c | 13 +++++++---- drivers/usb/host/xhci.c | 4 ++-- - include/usb/xhci.h | 22 +++++++++++++++++- - 4 files changed, 54 insertions(+), 28 deletions(-) + include/usb/xhci.h | 20 +++++++++++++++- + 4 files changed, 53 insertions(+), 29 deletions(-) diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c index b002d6f166..83147d51b5 100644 @@ -1863,7 +1182,7 @@ index b002d6f166..83147d51b5 100644 /* diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c -index 13065d7ca9..5a6ad383cd 100644 +index d708fc928b..6b31ad4398 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -275,10 +275,13 @@ void xhci_queue_command(struct xhci_ctrl *ctrl, u8 *ptr, u32 slot_id, @@ -1896,10 +1215,19 @@ index 13065d7ca9..5a6ad383cd 100644 u32 trb_fields[4]; - u64 val_64 = virt_to_phys(buffer); + u64 val_64 = xhci_virt_to_bus(ctrl, buffer); + void *last_transfer_trb_addr; + int available_length; - debug("dev=%p, pipe=%lx, buffer=%p, length=%d\n", - udev, pipe, buffer, length); -@@ -872,7 +875,7 @@ int xhci_ctrl_tx(struct usb_device *udev, unsigned long pipe, +@@ -723,7 +726,7 @@ again: + return -ETIMEDOUT; + } + +- if ((uintptr_t)(le64_to_cpu(event->trans_event.buffer)) ++ if ((uintptr_t)(le64_to_cpu(xhci_bus_to_virt(ctrl, event->trans_event.buffer))) + != (uintptr_t)last_transfer_trb_addr) { + available_length -= + (int)EVENT_TRB_LEN(le32_to_cpu(event->trans_event.transfer_len)); +@@ -884,7 +887,7 @@ int xhci_ctrl_tx(struct usb_device *udev, unsigned long pipe, if (length > 0) { if (req->requesttype & USB_DIR_IN) field |= TRB_DIR_IN; @@ -1931,7 +1259,7 @@ index 7080f8fabe..d27ac01c83 100644 virt_dev->eps[ep_index].ring->cycle_state); diff --git a/include/usb/xhci.h b/include/usb/xhci.h -index e1d382369a..b87210b9ba 100644 +index e1d382369a..8d95e213b0 100644 --- a/include/usb/xhci.h +++ b/include/usb/xhci.h @@ -16,6 +16,7 @@ @@ -1942,7 +1270,20 @@ index e1d382369a..b87210b9ba 100644 #include #include #include -@@ -1250,7 +1251,8 @@ int xhci_check_maxpacket(struct usb_device *udev); +@@ -1221,6 +1222,12 @@ struct xhci_ctrl { + #define XHCI_MTK_HOST BIT(0) + }; + ++#if CONFIG_IS_ENABLED(DM_USB) ++#define xhci_to_dev(_ctrl) _ctrl->dev ++#else ++#define xhci_to_dev(_ctrl) NULL ++#endif ++ + unsigned long trb_addr(struct xhci_segment *seg, union xhci_trb *trb); + struct xhci_input_control_ctx + *xhci_get_input_control_ctx(struct xhci_container_ctx *ctx); +@@ -1250,7 +1257,8 @@ int xhci_check_maxpacket(struct usb_device *udev); void xhci_flush_cache(uintptr_t addr, u32 type_len); void xhci_inval_cache(uintptr_t addr, u32 type_len); void xhci_cleanup(struct xhci_ctrl *ctrl); @@ -1952,120 +1293,50 @@ index e1d382369a..b87210b9ba 100644 int xhci_alloc_virt_device(struct xhci_ctrl *ctrl, unsigned int slot_id); int xhci_mem_init(struct xhci_ctrl *ctrl, struct xhci_hccr *hccr, struct xhci_hcor *hcor); -@@ -1278,4 +1280,22 @@ extern struct dm_usb_ops xhci_usb_ops; +@@ -1278,4 +1286,14 @@ extern struct dm_usb_ops xhci_usb_ops; struct xhci_ctrl *xhci_get_ctrl(struct usb_device *udev); +static inline dma_addr_t xhci_virt_to_bus(struct xhci_ctrl *ctrl, void *addr) +{ -+#if CONFIG_IS_ENABLED(DM_DMA) -+ return dev_phys_to_bus(ctrl->dev, virt_to_phys(addr)); -+#else -+ return phys_to_bus(virt_to_phys(addr)); -+#endif ++ return dev_phys_to_bus(xhci_to_dev(ctrl), virt_to_phys(addr)); +} + +static inline void *xhci_bus_to_virt(struct xhci_ctrl *ctrl, dma_addr_t addr) +{ -+#if CONFIG_IS_ENABLED(DM_DMA) -+ return phys_to_virt(dev_bus_to_phys(ctrl->dev, addr)); -+#else -+ return phys_to_virt(bus_to_phys(addr)); -+#endif ++ return phys_to_virt(dev_bus_to_phys(xhci_to_dev(ctrl), addr)); +} + #endif /* HOST_XHCI_H_ */ +-- +2.29.2 -From patchwork Tue Dec 15 17:23:22 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1416607 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=suse.de -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CwQBb0GLmz9sPB - for ; Wed, 16 Dec 2020 04:25:27 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id E7F9482A20; - Tue, 15 Dec 2020 18:23:57 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 05F0082A03; Tue, 15 Dec 2020 18:23:41 +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=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, - RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id CA59E829FA - for ; Tue, 15 Dec 2020 18:23:33 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=nsaenzjulienne@suse.de -Received: from relay2.suse.de (unknown [195.135.221.27]) - by mx2.suse.de (Postfix) with ESMTP id 92E15AF1A; - Tue, 15 Dec 2020 17:23:33 +0000 (UTC) +From aa7e82f97e2c74430a3a6979b307cda87fbb4624 Mon Sep 17 00:00:00 2001 From: Nicolas Saenz Julienne -To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, - sjg@chromium.org, marex@denx.de -Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, swarren@wwwdotorg.org, - peng.fan@nxp.com, sr@denx.de, pbrobinson@gmail.com, - Nicolas Saenz Julienne -Subject: [PATCH v3 11/12] mmc: Introduce mmc_phys_to_bus()/mmc_bus_to_phys() -Date: Tue, 15 Dec 2020 18:23:22 +0100 -Message-Id: <20201215172323.13309-12-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.29.2 -In-Reply-To: <20201215172323.13309-1-nsaenzjulienne@suse.de> -References: <20201215172323.13309-1-nsaenzjulienne@suse.de> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean +Date: Wed, 23 Dec 2020 19:55:37 +0100 +Subject: [PATCH 11/13] mmc: Introduce mmc_phys_to_bus()/mmc_bus_to_phys() This will allow us to use DM variants of phys_to_bus()/bus_to_phys() when relevant. Signed-off-by: Nicolas Saenz Julienne +Reviewed-by: Simon Glass --- - drivers/mmc/sdhci.c | 7 ++++--- - include/mmc.h | 10 ++++++++++ - 2 files changed, 14 insertions(+), 3 deletions(-) + drivers/mmc/sdhci.c | 12 +++++++----- + include/mmc.h | 6 ++++++ + 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c -index 0628934312..2086d7cdb1 100644 +index 0628934312..62e4f53b8b 100644 --- a/drivers/mmc/sdhci.c +++ b/drivers/mmc/sdhci.c -@@ -19,7 +19,6 @@ +@@ -14,12 +14,12 @@ + #include + #include + #include ++#include + #include + #include #include #include #include @@ -2073,134 +1344,68 @@ index 0628934312..2086d7cdb1 100644 static void sdhci_reset(struct sdhci_host *host, u8 mask) { -@@ -103,7 +102,8 @@ static void sdhci_prepare_dma(struct sdhci_host *host, struct mmc_data *data, +@@ -73,6 +73,7 @@ static void sdhci_transfer_pio(struct sdhci_host *host, struct mmc_data *data) + static void sdhci_prepare_dma(struct sdhci_host *host, struct mmc_data *data, + int *is_aligned, int trans_bytes) + { ++ dma_addr_t dma_addr; + unsigned char ctrl; + void *buf; + +@@ -103,8 +104,8 @@ static void sdhci_prepare_dma(struct sdhci_host *host, struct mmc_data *data, mmc_get_dma_dir(data)); if (host->flags & USE_SDMA) { - sdhci_writel(host, phys_to_bus((ulong)host->start_addr), -+ sdhci_writel(host, -+ mmc_phys_to_bus(host->mmc, (ulong)host->start_addr), - SDHCI_DMA_ADDRESS); +- SDHCI_DMA_ADDRESS); ++ dma_addr = dev_phys_to_bus(mmc_to_dev(host->mmc), host->start_addr); ++ sdhci_writel(host, dma_addr, SDHCI_DMA_ADDRESS); } #if CONFIG_IS_ENABLED(MMC_SDHCI_ADMA) -@@ -162,7 +162,8 @@ static int sdhci_transfer_data(struct sdhci_host *host, struct mmc_data *data) + else if (host->flags & (USE_ADMA | USE_ADMA64)) { +@@ -162,8 +163,9 @@ static int sdhci_transfer_data(struct sdhci_host *host, struct mmc_data *data) start_addr &= ~(SDHCI_DEFAULT_BOUNDARY_SIZE - 1); start_addr += SDHCI_DEFAULT_BOUNDARY_SIZE; - sdhci_writel(host, phys_to_bus((ulong)start_addr), -+ sdhci_writel(host, -+ mmc_phys_to_bus(host->mmc, (ulong)start_addr), - SDHCI_DMA_ADDRESS); +- SDHCI_DMA_ADDRESS); ++ start_addr = dev_phys_to_bus(mmc_to_dev(host->mmc), ++ start_addr); ++ sdhci_writel(host, start_addr, SDHCI_DMA_ADDRESS); } } + if (timeout-- > 0) diff --git a/include/mmc.h b/include/mmc.h -index 1d377e0281..5fe1ef1dfc 100644 +index 1d377e0281..c12c7a0b5c 100644 --- a/include/mmc.h +++ b/include/mmc.h -@@ -15,6 +15,7 @@ - #include - #include - #include -+#include +@@ -736,6 +736,12 @@ struct mmc { + u8 hs400_tuning; + }; - struct bd_info; - -@@ -977,4 +978,13 @@ static inline enum dma_data_direction mmc_get_dma_dir(struct mmc_data *data) - return data->flags & MMC_DATA_WRITE ? DMA_TO_DEVICE : DMA_FROM_DEVICE; - } - -+static inline dma_addr_t mmc_phys_to_bus(struct mmc *mmc, phys_addr_t addr) -+{ -+#if CONFIG_IS_ENABLED(DM_DMA) -+ return dev_phys_to_bus(mmc->dev, addr); ++#if CONFIG_IS_ENABLED(DM_MMC) ++#define mmc_to_dev(_mmc) _mmc->dev +#else -+ return phys_to_bus(addr); ++#define mmc_to_dev(_mmc) NULL +#endif -+} + - #endif /* _MMC_H_ */ + struct mmc_hwpart_conf { + struct { + uint enh_start; /* in 512-byte sectors */ +-- +2.29.2 -From patchwork Tue Dec 15 17:23:23 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Nicolas Saenz Julienne -X-Patchwork-Id: 1416609 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=suse.de -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CwQBy4zZlz9sPB - for ; Wed, 16 Dec 2020 04:25:46 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 6DF6282A2E; - Tue, 15 Dec 2020 18:24:04 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 9CF0B82A09; Tue, 15 Dec 2020 18:23:42 +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=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, - RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=ham - autolearn_force=no version=3.4.2 -Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 6979E829FE - for ; Tue, 15 Dec 2020 18:23:34 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=nsaenzjulienne@suse.de -Received: from relay2.suse.de (unknown [195.135.221.27]) - by mx2.suse.de (Postfix) with ESMTP id 2DF96AC7F; - Tue, 15 Dec 2020 17:23:34 +0000 (UTC) +From 8b39240ca809ce7ebf34b2eb707ab5d2cc5f4a20 Mon Sep 17 00:00:00 2001 From: Nicolas Saenz Julienne -To: mbrugger@suse.com, u-boot@lists.denx.de, bmeng.cn@gmail.com, - sjg@chromium.org, marex@denx.de -Cc: m.szyprowski@samsung.com, s.nawrocki@samsung.com, swarren@wwwdotorg.org, - peng.fan@nxp.com, sr@denx.de, pbrobinson@gmail.com, - Nicolas Saenz Julienne -Subject: [PATCH v3 12/12] configs: rpi4: Enable DM_DMA across all RPi4 +Date: Wed, 23 Dec 2020 19:55:38 +0100 +Subject: [PATCH 12/13] configs: rpi4: Enable DM_DMA across all RPi4 configurations -Date: Tue, 15 Dec 2020 18:23:23 +0100 -Message-Id: <20201215172323.13309-13-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.29.2 -In-Reply-To: <20201215172323.13309-1-nsaenzjulienne@suse.de> -References: <20201215172323.13309-1-nsaenzjulienne@suse.de> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean The DM_DMA option is needed in order to translate physical address into bus addresses on a per-device basis. Signed-off-by: Nicolas Saenz Julienne +Reviewed-by: Simon Glass --- configs/rpi_4_32b_defconfig | 1 + configs/rpi_4_defconfig | 1 + @@ -2243,3 +1448,36 @@ index 2639219a1a..4125a1feba 100644 CONFIG_DM_KEYBOARD=y CONFIG_DM_MMC=y CONFIG_MMC_SDHCI=y +-- +2.29.2 + +From d3cde4c05b8da7ef50019b63ac9cc0ecc0630059 Mon Sep 17 00:00:00 2001 +From: Nicolas Saenz Julienne +Date: Wed, 23 Dec 2020 19:55:39 +0100 +Subject: [PATCH 13/13] video: arm: rpi: Add brcm,bcm2711-hdmi0 compatible + +The 'brcm,bcm2711-hdmi0' compatible string is used on RPi4 instead of +'brcm,bcm2835-hdmi' since the IP core was upgraded (now called VC6 +instead of VC4). This has no functional change as far as u-boot driver +is concerned. So simply add the compatible string. + +Signed-off-by: Nicolas Saenz Julienne +--- + drivers/video/bcm2835.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/video/bcm2835.c b/drivers/video/bcm2835.c +index 0888cb0019..51941c4f53 100644 +--- a/drivers/video/bcm2835.c ++++ b/drivers/video/bcm2835.c +@@ -52,6 +52,7 @@ static int bcm2835_video_probe(struct udevice *dev) + + static const struct udevice_id bcm2835_video_ids[] = { + { .compatible = "brcm,bcm2835-hdmi" }, ++ { .compatible = "brcm,bcm2711-hdmi0" }, + { .compatible = "brcm,bcm2708-fb" }, + { } + }; +-- +2.29.2 + diff --git a/arm-add-BOOTENV_EFI_SET_FDTFILE_FALLBACK-for-tegra186-be.patch b/arm-add-BOOTENV_EFI_SET_FDTFILE_FALLBACK-for-tegra186-be.patch deleted file mode 100644 index df63c4e..0000000 --- a/arm-add-BOOTENV_EFI_SET_FDTFILE_FALLBACK-for-tegra186-be.patch +++ /dev/null @@ -1,55 +0,0 @@ -From a63eb1bdcd25246b2c637c7846917dc6dc607725 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Thu, 18 Apr 2019 15:44:59 +0100 -Subject: [PATCH] add BOOTENV_EFI_SET_FDTFILE_FALLBACK for tegra186 because tx2 - variants - -Signed-off-by: Peter Robinson ---- - include/config_distro_bootcmd.h | 2 ++ - include/configs/tegra186-common.h | 7 ++++++- - 2 files changed, 8 insertions(+), 1 deletion(-) - -diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h -index fc0935fa21..fd1c5f5afa 100644 ---- a/include/config_distro_bootcmd.h -+++ b/include/config_distro_bootcmd.h -@@ -118,8 +118,10 @@ - "setenv efi_fdtfile ${soc}-${board}${boardver}.dtb; " \ - "fi; " - #else -+#ifndef BOOTENV_EFI_SET_FDTFILE_FALLBACK - #define BOOTENV_EFI_SET_FDTFILE_FALLBACK - #endif -+#endif - - - #define BOOTENV_SHARED_EFI \ -diff --git a/include/configs/tegra186-common.h b/include/configs/tegra186-common.h -index 5c3ad35c76..d5f21e0907 100644 ---- a/include/configs/tegra186-common.h -+++ b/include/configs/tegra186-common.h -@@ -20,6 +20,12 @@ - /* Generic Interrupt Controller */ - #define CONFIG_GICV2 - -+#undef FDTFILE -+#define BOOTENV_EFI_SET_FDTFILE_FALLBACK \ -+ "if test -z \"${fdtfile}\" -a -n \"${soc}\"; then " \ -+ "setenv efi_fdtfile ${vendor}/${soc}-${board}${boardver}.dtb; " \ -+ "fi; " -+ - /* - * Memory layout for where various images get loaded by boot scripts: - * -@@ -49,7 +55,6 @@ - "scriptaddr=0x90000000\0" \ - "pxefile_addr_r=0x90100000\0" \ - "kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \ -- "fdtfile=" FDTFILE "\0" \ - "fdt_addr_r=0x82000000\0" \ - "ramdisk_addr_r=0x82100000\0" - --- -2.26.0 - diff --git a/arm-tegra-define-fdtfile-option-for-distro-boot.patch b/arm-tegra-define-fdtfile-option-for-distro-boot.patch deleted file mode 100644 index 923ccb1..0000000 --- a/arm-tegra-define-fdtfile-option-for-distro-boot.patch +++ /dev/null @@ -1,113 +0,0 @@ -From c3332b102d2ddae01710ae8f4393a2a18a3a1bb3 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Tue, 12 May 2020 08:19:48 +0100 -Subject: [PATCH] arm: tegra: define fdtfile option for distro boot - -For booting via UEFI we need to define the fdtfile option so -bootefi has the option to load a fdtfile from disk. For arm64 -the kernel dtb is located in a vendor directory so we define -that as nvidia for that architecture. - -Signed-off-by: Peter Robinson ---- - include/configs/tegra-common.h | 6 ++++++ - include/configs/tegra114-common.h | 1 + - include/configs/tegra124-common.h | 1 + - include/configs/tegra186-common.h | 1 + - include/configs/tegra20-common.h | 1 + - include/configs/tegra210-common.h | 1 + - include/configs/tegra30-common.h | 1 + - 7 files changed, 12 insertions(+) - -diff --git a/include/configs/tegra-common.h b/include/configs/tegra-common.h -index 175c55c613..8026f4b32e 100644 ---- a/include/configs/tegra-common.h -+++ b/include/configs/tegra-common.h -@@ -52,6 +52,12 @@ - /* Boot Argument Buffer Size */ - #define CONFIG_SYS_BARGSIZE (CONFIG_SYS_CBSIZE) - -+#ifdef CONFIG_ARM64 -+#define FDTFILE "nvidia/" CONFIG_DEFAULT_DEVICE_TREE ".dtb" -+#else -+#define FDTFILE CONFIG_DEFAULT_DEVICE_TREE ".dtb" -+#endif -+ - /*----------------------------------------------------------------------- - * Physical Memory Map - */ -diff --git a/include/configs/tegra114-common.h b/include/configs/tegra114-common.h -index d3a7045697..9d751b6740 100644 ---- a/include/configs/tegra114-common.h -+++ b/include/configs/tegra114-common.h -@@ -50,6 +50,7 @@ - "scriptaddr=0x90000000\0" \ - "pxefile_addr_r=0x90100000\0" \ - "kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \ -+ "fdtfile=" FDTFILE "\0" \ - "fdt_addr_r=0x83000000\0" \ - "ramdisk_addr_r=0x83100000\0" - -diff --git a/include/configs/tegra124-common.h b/include/configs/tegra124-common.h -index 522993b958..0eb8f92809 100644 ---- a/include/configs/tegra124-common.h -+++ b/include/configs/tegra124-common.h -@@ -52,6 +52,7 @@ - "scriptaddr=0x90000000\0" \ - "pxefile_addr_r=0x90100000\0" \ - "kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \ -+ "fdtfile=" FDTFILE "\0" \ - "fdt_addr_r=0x83000000\0" \ - "ramdisk_addr_r=0x83100000\0" - -diff --git a/include/configs/tegra186-common.h b/include/configs/tegra186-common.h -index b4936cc731..5c3ad35c76 100644 ---- a/include/configs/tegra186-common.h -+++ b/include/configs/tegra186-common.h -@@ -49,6 +49,7 @@ - "scriptaddr=0x90000000\0" \ - "pxefile_addr_r=0x90100000\0" \ - "kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \ -+ "fdtfile=" FDTFILE "\0" \ - "fdt_addr_r=0x82000000\0" \ - "ramdisk_addr_r=0x82100000\0" - -diff --git a/include/configs/tegra20-common.h b/include/configs/tegra20-common.h -index 1e31d82574..fdd8996955 100644 ---- a/include/configs/tegra20-common.h -+++ b/include/configs/tegra20-common.h -@@ -51,6 +51,7 @@ - "scriptaddr=0x10000000\0" \ - "pxefile_addr_r=0x10100000\0" \ - "kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \ -+ "fdtfile=" FDTFILE "\0" \ - "fdt_addr_r=0x03000000\0" \ - "ramdisk_addr_r=0x03100000\0" - -diff --git a/include/configs/tegra210-common.h b/include/configs/tegra210-common.h -index 1b8e94b60c..2226effe16 100644 ---- a/include/configs/tegra210-common.h -+++ b/include/configs/tegra210-common.h -@@ -46,6 +46,7 @@ - "scriptaddr=0x90000000\0" \ - "pxefile_addr_r=0x90100000\0" \ - "kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \ -+ "fdtfile=" FDTFILE "\0" \ - "fdt_addr_r=0x83000000\0" \ - "ramdisk_addr_r=0x83200000\0" - -diff --git a/include/configs/tegra30-common.h b/include/configs/tegra30-common.h -index 54bc6756ab..6c5dc24b26 100644 ---- a/include/configs/tegra30-common.h -+++ b/include/configs/tegra30-common.h -@@ -47,6 +47,7 @@ - "scriptaddr=0x90000000\0" \ - "pxefile_addr_r=0x90100000\0" \ - "kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \ -+ "fdtfile=" FDTFILE "\0" \ - "fdt_addr_r=0x83000000\0" \ - "ramdisk_addr_r=0x83100000\0" - --- -2.26.2 - diff --git a/sources b/sources index 69acae9..bd7ffdd 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2021.01-rc3.tar.bz2) = 4c88bbdeb1e39e52bb069c4bf65c9829290a51da9a21de8e60d50b62c74ae98a35d22a235fdc0a86467aedc34f85dff5d63b874af247323d0d5bdcb2e82cd4a3 +SHA512 (u-boot-2021.01-rc4.tar.bz2) = 6de2c60d02276f4eed31b5baf2d8239ad0af30c9d341339a4cd7fa0786068cb5faa1ab8bd0b4155e536962e1a4869906f60f1d2a1e50b0ed15e98c2e84d6a97b diff --git a/uboot-tools.spec b/uboot-tools.spec index 76a39d2..ddc1d43 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -%global candidate rc3 +%global candidate rc4 Name: uboot-tools Version: 2021.01 -Release: 0.3%{?candidate:.%{candidate}}%{?dist} +Release: 0.4%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -18,19 +18,17 @@ Source4: aarch64-chromebooks Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch # Needed due to issues with shim Patch2: uefi-use-Fedora-specific-path-name.patch -#Patch3: rockchip-spl-u-boot-itb-offset.patch +# RPi - uses RPI firmware device tree for HAT support +Patch3: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch +# Ajust the U-Boot offsets in SPL to take less space +#Patch4: rockchip-spl-u-boot-itb-offset.patch # Board fixes and enablement -# RPi - uses RPI firmware device tree for HAT support -Patch4: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch Patch5: Raspberry-Pi-400-Compute-Module-4-support.patch -# Tegra improvements -Patch6: arm-tegra-define-fdtfile-option-for-distro-boot.patch -Patch7: arm-add-BOOTENV_EFI_SET_FDTFILE_FALLBACK-for-tegra186-be.patch # AllWinner improvements Patch10: AllWinner-PineTab.patch -Patch11: 0001-Fixes-for-AllWinner-ethernet-network-interfaces.patch -Patch12: sunxi-add-PineCube-board.patch +Patch11: sunxi-add-PineCube-board.patch +Patch12: 0001-Fixes-for-AllWinner-ethernet-network-interfaces.patch # TI fixes Patch13: 0001-Fix-BeagleAI-detection.patch # Rockchips improvements @@ -236,6 +234,10 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Sun Dec 27 2020 Peter Robinson - 2021.01-0.4.rc4 +- Update to 2021.01 RC4 +- Latest RPi-400/CM4 support patch + * Tue Dec 15 2020 Peter Robinson - 2021.01-0.3.rc3 - Update to 2021.01 RC3 - Latest RPi-400/CM4 support patch From 8e2560d8512eda32789c36ae34d509f3c751e6a6 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 28 Dec 2020 22:14:17 +0000 Subject: [PATCH 043/271] add RNG driver for rpi4 --- rng-Add-iProc-RNG200-driver.patch | 450 ++++++++++++++++++++++++++++++ uboot-tools.spec | 1 + 2 files changed, 451 insertions(+) create mode 100644 rng-Add-iProc-RNG200-driver.patch diff --git a/rng-Add-iProc-RNG200-driver.patch b/rng-Add-iProc-RNG200-driver.patch new file mode 100644 index 0000000..d8dcfa1 --- /dev/null +++ b/rng-Add-iProc-RNG200-driver.patch @@ -0,0 +1,450 @@ +From patchwork Tue Dec 15 09:49:23 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: mbrugger +X-Patchwork-Id: 1416366 +X-Patchwork-Delegate: matthias.bgg@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=fail (p=none dis=none) header.from=kernel.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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4CwD58649Dz9s0b + for ; Tue, 15 Dec 2020 20:49:53 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 4EC6082956; + Tue, 15 Dec 2020 10:49:42 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=kernel.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id B1A738295E; Tue, 15 Dec 2020 10:49:40 +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=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI, + SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 38FB382955 + for ; Tue, 15 Dec 2020 10:49:37 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=kernel.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=matthias.bgg@kernel.org +From: matthias.bgg@kernel.org +Authentication-Results: mail.kernel.org; + dkim=permerror (bad message/signature format) +To: sughosh.ganu@linaro.org, + xypron.glpk@gmx.de +Cc: u-boot@lists.denx.de, + Matthias Brugger +Subject: [PATCH v2 1/2] rng: Add iProc RNG200 driver +Date: Tue, 15 Dec 2020 10:49:23 +0100 +Message-Id: <20201215094924.30072-1-matthias.bgg@kernel.org> +X-Mailer: git-send-email 2.29.2 +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +From: Matthias Brugger + +Add support for random number generator RNG200. +This is for example found on RPi4. + +Signed-off-by: Matthias Brugger +Tested-by: Heinrich Schuchardt +--- + +Changes in v2: None + + drivers/rng/Kconfig | 6 ++ + drivers/rng/Makefile | 1 + + drivers/rng/iproc_rng200.c | 186 +++++++++++++++++++++++++++++++++++++ + 3 files changed, 193 insertions(+) + create mode 100644 drivers/rng/iproc_rng200.c + +diff --git a/drivers/rng/Kconfig b/drivers/rng/Kconfig +index 11001c8ae7..94915d45b3 100644 +--- a/drivers/rng/Kconfig ++++ b/drivers/rng/Kconfig +@@ -46,4 +46,10 @@ config RNG_ROCKCHIP + Enable random number generator for rockchip.This driver is + support rng module of crypto v1 and crypto v2. + ++config RNG_IPROC200 ++ bool "Broadcom iProc RNG200 random number generator" ++ depends on DM_RNG ++ default n ++ help ++ Enable random number generator for RPI4. + endif +diff --git a/drivers/rng/Makefile b/drivers/rng/Makefile +index 8953406882..39f7ee3f03 100644 +--- a/drivers/rng/Makefile ++++ b/drivers/rng/Makefile +@@ -9,3 +9,4 @@ obj-$(CONFIG_RNG_SANDBOX) += sandbox_rng.o + obj-$(CONFIG_RNG_MSM) += msm_rng.o + obj-$(CONFIG_RNG_STM32MP1) += stm32mp1_rng.o + obj-$(CONFIG_RNG_ROCKCHIP) += rockchip_rng.o ++obj-$(CONFIG_RNG_IPROC200) += iproc_rng200.o +diff --git a/drivers/rng/iproc_rng200.c b/drivers/rng/iproc_rng200.c +new file mode 100644 +index 0000000000..1063f43953 +--- /dev/null ++++ b/drivers/rng/iproc_rng200.c +@@ -0,0 +1,186 @@ ++// SPDX-License-Identifier: GPL-2.0-or-later ++/* ++ * Copyright 2020, Matthias Brugger ++ * ++ * Driver for Raspberry Pi hardware random number generator ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#define usleep_range(a, b) udelay((b)) ++ ++#define RNG_CTRL_OFFSET 0x00 ++#define RNG_CTRL_RNG_RBGEN_MASK 0x00001FFF ++#define RNG_CTRL_RNG_RBGEN_ENABLE 0x00000001 ++#define RNG_CTRL_RNG_RBGEN_DISABLE 0x00000000 ++ ++#define RNG_SOFT_RESET_OFFSET 0x04 ++#define RNG_SOFT_RESET 0x00000001 ++ ++#define RBG_SOFT_RESET_OFFSET 0x08 ++#define RBG_SOFT_RESET 0x00000001 ++ ++#define RNG_INT_STATUS_OFFSET 0x18 ++#define RNG_INT_STATUS_MASTER_FAIL_LOCKOUT_IRQ_MASK 0x80000000 ++#define RNG_INT_STATUS_NIST_FAIL_IRQ_MASK 0x00000020 ++ ++#define RNG_FIFO_DATA_OFFSET 0x20 ++ ++#define RNG_FIFO_COUNT_OFFSET 0x24 ++#define RNG_FIFO_COUNT_RNG_FIFO_COUNT_MASK 0x000000FF ++ ++struct iproc_rng200_platdata { ++ fdt_addr_t base; ++}; ++ ++static void iproc_rng200_enable(struct iproc_rng200_platdata *pdata, bool enable) ++{ ++ fdt_addr_t rng_base = pdata->base; ++ u32 val; ++ ++ val = readl(rng_base + RNG_CTRL_OFFSET); ++ val &= ~RNG_CTRL_RNG_RBGEN_MASK; ++ if (enable) ++ val |= RNG_CTRL_RNG_RBGEN_ENABLE; ++ else ++ val &= ~RNG_CTRL_RNG_RBGEN_ENABLE; ++ ++ writel(val, rng_base + RNG_CTRL_OFFSET); ++ ++} ++ ++static void iproc_rng200_restart(struct iproc_rng200_platdata *pdata) ++{ ++ fdt_addr_t rng_base = pdata->base; ++ u32 val; ++ ++ iproc_rng200_enable(pdata, false); ++ ++ /* Clear all interrupt status */ ++ writel(0xFFFFFFFFUL, rng_base + RNG_INT_STATUS_OFFSET); ++ ++ /* Reset RNG and RBG */ ++ val = readl(rng_base + RBG_SOFT_RESET_OFFSET); ++ val |= RBG_SOFT_RESET; ++ writel(val, rng_base + RBG_SOFT_RESET_OFFSET); ++ ++ val = readl(rng_base + RNG_SOFT_RESET_OFFSET); ++ val |= RNG_SOFT_RESET; ++ writel(val, rng_base + RNG_SOFT_RESET_OFFSET); ++ ++ val = readl(rng_base + RNG_SOFT_RESET_OFFSET); ++ val &= ~RNG_SOFT_RESET; ++ writel(val, rng_base + RNG_SOFT_RESET_OFFSET); ++ ++ val = readl(rng_base + RBG_SOFT_RESET_OFFSET); ++ val &= ~RBG_SOFT_RESET; ++ writel(val, rng_base + RBG_SOFT_RESET_OFFSET); ++ ++ iproc_rng200_enable(pdata, true); ++} ++ ++static int iproc_rng200_read(struct udevice *dev, void *data, size_t len) ++{ ++ struct iproc_rng200_platdata *priv = dev_get_platdata(dev); ++ char *buf = (char *)data; ++ u32 num_remaining = len; ++ u32 status; ++ ++ #define MAX_RESETS_PER_READ 1 ++ u32 num_resets = 0; ++ ++ while (num_remaining > 0) { ++ ++ /* Is RNG sane? If not, reset it. */ ++ status = readl(priv->base + RNG_INT_STATUS_OFFSET); ++ if ((status & (RNG_INT_STATUS_MASTER_FAIL_LOCKOUT_IRQ_MASK | ++ RNG_INT_STATUS_NIST_FAIL_IRQ_MASK)) != 0) { ++ ++ if (num_resets >= MAX_RESETS_PER_READ) ++ return len - num_remaining; ++ ++ iproc_rng200_restart(priv); ++ num_resets++; ++ } ++ ++ /* Are there any random numbers available? */ ++ if ((readl(priv->base + RNG_FIFO_COUNT_OFFSET) & ++ RNG_FIFO_COUNT_RNG_FIFO_COUNT_MASK) > 0) { ++ ++ if (num_remaining >= sizeof(u32)) { ++ /* Buffer has room to store entire word */ ++ *(u32 *)buf = readl(priv->base + ++ RNG_FIFO_DATA_OFFSET); ++ buf += sizeof(u32); ++ num_remaining -= sizeof(u32); ++ } else { ++ /* Buffer can only store partial word */ ++ u32 rnd_number = readl(priv->base + ++ RNG_FIFO_DATA_OFFSET); ++ memcpy(buf, &rnd_number, num_remaining); ++ buf += num_remaining; ++ num_remaining = 0; ++ } ++ ++ } else { ++ /* Can wait, give others chance to run */ ++ usleep_range(min(num_remaining * 10, 500U), 500); ++ } ++ } ++ ++ return 0; ++} ++ ++static int iproc_rng200_probe(struct udevice *dev) ++{ ++ struct iproc_rng200_platdata *priv = dev_get_platdata(dev); ++ ++ iproc_rng200_enable(priv, true); ++ ++ return 0; ++} ++ ++static int iproc_rng200_remove(struct udevice *dev) ++{ ++ struct iproc_rng200_platdata *priv = dev_get_platdata(dev); ++ ++ iproc_rng200_enable(priv, false); ++ ++ return 0; ++} ++ ++static int iproc_rng200_ofdata_to_platdata(struct udevice *dev) ++{ ++ struct iproc_rng200_platdata *pdata = dev_get_platdata(dev); ++ ++ pdata->base = dev_read_addr(dev); ++ if (!pdata->base) ++ return -ENODEV; ++ ++ return 0; ++} ++ ++static const struct dm_rng_ops iproc_rng200_ops = { ++ .read = iproc_rng200_read, ++}; ++ ++static const struct udevice_id iproc_rng200_rng_match[] = { ++ { .compatible = "brcm,bcm2711-rng200", }, ++ { .compatible = "brcm,iproc-rng200", }, ++ {}, ++}; ++ ++U_BOOT_DRIVER(iproc_rng200_rng) = { ++ .name = "iproc_rng200-rng", ++ .id = UCLASS_RNG, ++ .of_match = iproc_rng200_rng_match, ++ .ops = &iproc_rng200_ops, ++ .probe = iproc_rng200_probe, ++ .remove = iproc_rng200_remove, ++ .platdata_auto_alloc_size = sizeof(struct iproc_rng200_platdata), ++ .ofdata_to_platdata = iproc_rng200_ofdata_to_platdata, ++}; + +From patchwork Tue Dec 15 09:49:24 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: mbrugger +X-Patchwork-Id: 1416367 +X-Patchwork-Delegate: matthias.bgg@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=fail (p=none dis=none) header.from=kernel.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 RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4CwD5D4Gf2z9s0b + for ; Tue, 15 Dec 2020 20:50:08 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id A25E782961; + Tue, 15 Dec 2020 10:49:46 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=kernel.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 9EC418295C; Tue, 15 Dec 2020 10:49:41 +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=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI, + SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id BCF5682956 + for ; Tue, 15 Dec 2020 10:49:38 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=kernel.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=matthias.bgg@kernel.org +From: matthias.bgg@kernel.org +Authentication-Results: mail.kernel.org; + dkim=permerror (bad message/signature format) +To: sughosh.ganu@linaro.org, + xypron.glpk@gmx.de +Cc: u-boot@lists.denx.de, + Matthias Brugger +Subject: [PATCH v2 2/2] config: Enable iProc RNG200 driver in RPi4 configs +Date: Tue, 15 Dec 2020 10:49:24 +0100 +Message-Id: <20201215094924.30072-2-matthias.bgg@kernel.org> +X-Mailer: git-send-email 2.29.2 +In-Reply-To: <20201215094924.30072-1-matthias.bgg@kernel.org> +References: <20201215094924.30072-1-matthias.bgg@kernel.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +From: Matthias Brugger + +We find the iProc RNG200 in the Raspberry Pi 4. Add it to all it's +config so that it can be used. + +Signed-off-by: Matthias Brugger +--- + +Changes in v2: +- fix defconfigs using savedefconfig (Heinrich) + + configs/rpi_4_32b_defconfig | 2 ++ + configs/rpi_4_defconfig | 2 ++ + configs/rpi_arm64_defconfig | 2 ++ + drivers/rng/iproc_rng200.c | 1 - + 4 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig +index 5ddd838fd5..4039e46c81 100644 +--- a/configs/rpi_4_32b_defconfig ++++ b/configs/rpi_4_32b_defconfig +@@ -36,6 +36,8 @@ CONFIG_PCI_BRCMSTB=y + CONFIG_PINCTRL=y + # CONFIG_PINCTRL_GENERIC is not set + CONFIG_DM_RESET=y ++CONFIG_DM_RNG=y ++CONFIG_RNG_IPROC200=y + # CONFIG_REQUIRE_SERIAL_CONSOLE is not set + CONFIG_USB=y + CONFIG_DM_USB=y +diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig +index 2590d0a696..46b6cc3046 100644 +--- a/configs/rpi_4_defconfig ++++ b/configs/rpi_4_defconfig +@@ -36,6 +36,8 @@ CONFIG_PCI_BRCMSTB=y + CONFIG_PINCTRL=y + # CONFIG_PINCTRL_GENERIC is not set + CONFIG_DM_RESET=y ++CONFIG_DM_RNG=y ++CONFIG_RNG_IPROC200=y + # CONFIG_REQUIRE_SERIAL_CONSOLE is not set + CONFIG_USB=y + CONFIG_DM_USB=y +diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig +index 2639219a1a..b75144036d 100644 +--- a/configs/rpi_arm64_defconfig ++++ b/configs/rpi_arm64_defconfig +@@ -33,6 +33,8 @@ CONFIG_PCI_BRCMSTB=y + CONFIG_PINCTRL=y + # CONFIG_PINCTRL_GENERIC is not set + CONFIG_DM_RESET=y ++CONFIG_DM_RNG=y ++CONFIG_RNG_IPROC200=y + # CONFIG_REQUIRE_SERIAL_CONSOLE is not set + CONFIG_USB=y + CONFIG_DM_USB=y +diff --git a/drivers/rng/iproc_rng200.c b/drivers/rng/iproc_rng200.c +index 1063f43953..378f6cf48d 100644 +--- a/drivers/rng/iproc_rng200.c ++++ b/drivers/rng/iproc_rng200.c +@@ -50,7 +50,6 @@ static void iproc_rng200_enable(struct iproc_rng200_platdata *pdata, bool enable + val &= ~RNG_CTRL_RNG_RBGEN_ENABLE; + + writel(val, rng_base + RNG_CTRL_OFFSET); +- + } + + static void iproc_rng200_restart(struct iproc_rng200_platdata *pdata) diff --git a/uboot-tools.spec b/uboot-tools.spec index ddc1d43..768452c 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -25,6 +25,7 @@ Patch3: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch # Board fixes and enablement Patch5: Raspberry-Pi-400-Compute-Module-4-support.patch +Patch6: rng-Add-iProc-RNG200-driver.patch # AllWinner improvements Patch10: AllWinner-PineTab.patch Patch11: sunxi-add-PineCube-board.patch From f5f44b644659af24dcb06d1ab091ce2a3011a143 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sun, 10 Jan 2021 17:49:00 +0000 Subject: [PATCH 044/271] 2021.01 RC5 --- ...-Pinebook-Pro-Puma-and-RK3399-ROC-PC.patch | 517 ++++++++++++++++++ sources | 2 +- uboot-tools.spec | 13 +- 3 files changed, 527 insertions(+), 5 deletions(-) create mode 100644 rockchip-Fix-SPI-boot-on-Pinebook-Pro-Puma-and-RK3399-ROC-PC.patch diff --git a/rockchip-Fix-SPI-boot-on-Pinebook-Pro-Puma-and-RK3399-ROC-PC.patch b/rockchip-Fix-SPI-boot-on-Pinebook-Pro-Puma-and-RK3399-ROC-PC.patch new file mode 100644 index 0000000..39f9bb5 --- /dev/null +++ b/rockchip-Fix-SPI-boot-on-Pinebook-Pro-Puma-and-RK3399-ROC-PC.patch @@ -0,0 +1,517 @@ +From patchwork Sun Nov 22 13:03:44 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Hugh Cole-Baker +X-Patchwork-Id: 1404474 +X-Patchwork-Delegate: ykai007@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=pass (p=none dis=none) header.from=gmail.com +Authentication-Results: ozlabs.org; + dkim=pass (2048-bit key; + unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 + header.s=20161025 header.b=P6CnMO7U; + dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4Cf9VN30jjz9sT6 + for ; Mon, 23 Nov 2020 00:04:41 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id CE775825A1; + Sun, 22 Nov 2020 14:04:18 +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="P6CnMO7U"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 74E088257F; Sun, 22 Nov 2020 14:04:13 +0100 (CET) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, + DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,SPF_HELO_NONE,URIBL_BLOCKED + autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com + [IPv6:2a00:1450:4864:20::441]) + (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 898AE82564 + for ; Sun, 22 Nov 2020 14:04:09 +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=sigmaris@gmail.com +Received: by mail-wr1-x441.google.com with SMTP id l1so15714256wrb.9 + for ; Sun, 22 Nov 2020 05:04:09 -0800 (PST) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; + h=from:to:cc:subject:date:message-id:in-reply-to:references + :mime-version:content-transfer-encoding; + bh=6SYQmHVr0D0O3wWmxMfhj7ZKtMAcYMPC+fsr+GotKTs=; + b=P6CnMO7Up+Z5K5CbVzKd4H/2QN8yjMOXmyDou0LODbNDm9Bk5yNIT7IPUTNgCi7OHU + MCkWj1sA/Y0Vy7be+3ft1nvEIh1fY6E44ffw6tGcvGUf7rDXyQvyAZ6zSd8IHyqI44Xq + dzs/KERwAULCzSHt9OQNGYDnv3bKJAfGhh5t+nfR8z8/9ssONR3q18wKQEJ1X5eFO/IK + butM9Dq2sfJ0e15aYShs2Ku0k641pHX6ur5zSujD46MVhPApRhbHN9pbTAdmBmFb5cpk + taUyiQmhmHxj8oclIibEwDHS/0ygI7OmaEfDZRoYa5K8U6dp7hqDb9iZHasNsyBYRHs+ + Iuyg== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20161025; + h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to + :references:mime-version:content-transfer-encoding; + bh=6SYQmHVr0D0O3wWmxMfhj7ZKtMAcYMPC+fsr+GotKTs=; + b=mQwI4z7mnmNifc4yfgZj/vpgd1vQW9IOxjw2r3+sk+pRuJ6SjrjPsFmnfU8d1CfA5X + /IgzqDbWRhYtjMPiXe0VbrS8HfI5Fqps/BFq2BjN+zrER/ZUKC0MSkv7XsYQmM3UoFgo + ysyImd1T8hkM2fcsg0idMJ1AAY2Mtol2oKwHm+F5kW054bkSUo2mWpGRJE/RUTGMJYzP + oGu6T7V/CLjZCuWNJkpzwzCY7BoyLnirZ+EH4mMGkxJgZ4NdZIl+DVP0kcbSgNLTDMhy + JTF57D+dog/31smuIZ38Xtiee9OlTyoaTQzEN8+1zfHSevwQyUD48xyKcLFA2DVAYtYP + X4wQ== +X-Gm-Message-State: AOAM533BH77QNc2JvGEEMb3O1vShAryk75TxbZD57eNvHYZ5XNi0l3Nd + Hi9Vz0PAFdp4uFVQjchxkUeQHvOpOpzcpA== +X-Google-Smtp-Source: + ABdhPJzsTBCcXrYUm/5t74Gtg0n/vpUspyjdh6Ua796/vUxpSvKtaPDvdYxfFz+jaI/Ujmpb8WJFOw== +X-Received: by 2002:a5d:5183:: with SMTP id k3mr5107660wrv.62.1606050248908; + Sun, 22 Nov 2020 05:04:08 -0800 (PST) +Received: from apple.sigmaris.info (ebrouter.sigmaris.info. [82.69.107.165]) + by smtp.gmail.com with ESMTPSA id i6sm10968566wma.42.2020.11.22.05.04.08 + (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); + Sun, 22 Nov 2020 05:04:08 -0800 (PST) +From: Hugh Cole-Baker +To: U-Boot Mailing List +Cc: Hugh Cole-Baker , Simon Glass , + Kever Yang , + Peter Robinson , + Philipp Tomsich +Subject: [PATCH v2 1/3] rockchip: pinebook-pro: default to SPI bus 1 for + SPI-flash +Date: Sun, 22 Nov 2020 13:03:44 +0000 +Message-Id: <20201122130346.11621-2-sigmaris@gmail.com> +X-Mailer: git-send-email 2.24.3 (Apple Git-128) +In-Reply-To: <20201122130346.11621-1-sigmaris@gmail.com> +References: <20201122130346.11621-1-sigmaris@gmail.com> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +SPI flash on this machine is located on bus 1, default to using bus 1 +for SPI flash and stop aliasing it to bus 0. + +Signed-off-by: Hugh Cole-Baker +Suggested-by: Simon Glass +Fixes: c4cea2bb ("rockchip: Enable building a SPI ROM image on bob") +--- + +(no changes since v1) + + arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi | 4 ---- + configs/pinebook-pro-rk3399_defconfig | 2 ++ + 2 files changed, 2 insertions(+), 4 deletions(-) + +diff --git a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi +index ded7db0aeff..ee3b98698e6 100644 +--- a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi ++++ b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi +@@ -7,10 +7,6 @@ + #include "rk3399-sdram-lpddr4-100.dtsi" + + / { +- aliases { +- spi0 = &spi1; +- }; +- + chosen { + u-boot,spl-boot-order = "same-as-spl", &sdhci, &spiflash, &sdmmc; + }; +diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig +index 1ed54ad0eda..ef00ad92c45 100644 +--- a/configs/pinebook-pro-rk3399_defconfig ++++ b/configs/pinebook-pro-rk3399_defconfig +@@ -37,6 +37,7 @@ CONFIG_SPL_OF_CONTROL=y + CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" + CONFIG_ENV_IS_IN_SPI_FLASH=y + CONFIG_SYS_RELOC_GD_ENV_ADDR=y ++CONFIG_SPL_DM_SEQ_ALIAS=y + CONFIG_ROCKCHIP_GPIO=y + CONFIG_SYS_I2C_ROCKCHIP=y + CONFIG_DM_KEYBOARD=y +@@ -49,6 +50,7 @@ CONFIG_MMC_DW_ROCKCHIP=y + CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_SDMA=y + CONFIG_MMC_SDHCI_ROCKCHIP=y ++CONFIG_SF_DEFAULT_BUS=1 + CONFIG_SF_DEFAULT_SPEED=20000000 + CONFIG_SPI_FLASH_GIGADEVICE=y + CONFIG_SPI_FLASH_WINBOND=y + +From patchwork Sun Nov 22 13:03:45 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Hugh Cole-Baker +X-Patchwork-Id: 1404476 +X-Patchwork-Delegate: ykai007@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=pass (p=none dis=none) header.from=gmail.com +Authentication-Results: ozlabs.org; + dkim=pass (2048-bit key; + unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 + header.s=20161025 header.b=REQwZbU4; + dkim-atps=neutral +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 RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4Cf9Vp2Yl9z9sSf + for ; Mon, 23 Nov 2020 00:05:05 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 99CC4825B4; + Sun, 22 Nov 2020 14:04:20 +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="REQwZbU4"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 0345B825A6; Sun, 22 Nov 2020 14:04:16 +0100 (CET) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, + DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,SPF_HELO_NONE,URIBL_BLOCKED + autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-wr1-x443.google.com (mail-wr1-x443.google.com + [IPv6:2a00:1450:4864:20::443]) + (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 02CAF821A4 + for ; Sun, 22 Nov 2020 14:04:12 +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=sigmaris@gmail.com +Received: by mail-wr1-x443.google.com with SMTP id j7so15775922wrp.3 + for ; Sun, 22 Nov 2020 05:04:12 -0800 (PST) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; + h=from:to:cc:subject:date:message-id:in-reply-to:references + :mime-version:content-transfer-encoding; + bh=/Cjx25mfLwaytYlHbceqeQvGw33xUtrml0CUl/sig90=; + b=REQwZbU43XaBkdSFJC5QRtUHq4gYwGxcC45P5486nZCm8jPwqzynI8LFxIAXAgdwJw + 0Bi8vA+7NuNZPwWqmpr96OlvJ8jOnCw07UBhhyKIr3BnUjXY2VCCnqQIGUt0+Zc5FVRl + LGknOPa01vr6byuTe6OmEfcXbfW/w2RFpVLM7ICR31z8wIyiIW/W8lJu1etHg7hc+pEG + z0c7dcYuwSaHyiyMr95cUVTsBd1CYAwBGDmKr88XOgPfvU7WGJSeVSkGp2ktPFEDcXxA + E9GjcB+6aefFsz3ih5qO7sIGcb6z2UenEhkTvVnbqn6Or4x9SmK/kfTmku5NYuDfQoYZ + eH6g== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20161025; + h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to + :references:mime-version:content-transfer-encoding; + bh=/Cjx25mfLwaytYlHbceqeQvGw33xUtrml0CUl/sig90=; + b=c21R1EknGJQ1BqTWS2Ua1SE2Tl/wfNHXA1okA7kIO/ktuWylvwLUocFaS3+TMubFzA + dux0pHU9EemHTMuZchZZxyAP5Mw57UJjqQt3YNaAn5YyqhSLQ9kW32EccruhA97k0Vr1 + lUimK0Y4Sovm2CeedFfLKJL9VkxNM+ztzZqPQCLsejd8R4/e86PccNI/s2fEYte1PF33 + yMbcxDafcTGjBTl5q34iKluq/Hh7hC61sZ7UJIM/Bs73G0JdRDT4jH2HluNEKTkoDj8g + 1sL9TYanE4B3M5zvdDCTmp/pEFVa5xRvK9ZnsGC0hZ6ZkoiNW0PWA8Lo823Gd3bUPn2M + EkKw== +X-Gm-Message-State: AOAM532pWtRzHv8t9BYLRQ1FOrka0x3QbsTIGLOM4it1BgaFt2AjMMyK + WJshrm930J60FAT3/aTk+rwBX8wFJWnXrA== +X-Google-Smtp-Source: + ABdhPJxlXmDDU2QAEnJ1Ygx4v3gpz3fjzlmm3EMlmio1HHK/iH5XnwEw8detp4XdCi10r0mdAPKH0g== +X-Received: by 2002:adf:e788:: with SMTP id n8mr25250437wrm.84.1606050252459; + Sun, 22 Nov 2020 05:04:12 -0800 (PST) +Received: from apple.sigmaris.info (ebrouter.sigmaris.info. [82.69.107.165]) + by smtp.gmail.com with ESMTPSA id i6sm10968566wma.42.2020.11.22.05.04.11 + (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); + Sun, 22 Nov 2020 05:04:11 -0800 (PST) +From: Hugh Cole-Baker +To: U-Boot Mailing List +Cc: Hugh Cole-Baker , Simon Glass , + Jagan Teki , + Kever Yang , Levin Du , + Philipp Tomsich , + Suniel Mahesh +Subject: [PATCH v2 2/3] rockchip: rk3399-roc-pc: default to SPI bus 1 for + SPI-flash +Date: Sun, 22 Nov 2020 13:03:45 +0000 +Message-Id: <20201122130346.11621-3-sigmaris@gmail.com> +X-Mailer: git-send-email 2.24.3 (Apple Git-128) +In-Reply-To: <20201122130346.11621-1-sigmaris@gmail.com> +References: <20201122130346.11621-1-sigmaris@gmail.com> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +SPI flash on this board is located on bus 1, default to using bus 1 for +SPI flash on both rk3399-roc-pc and -mezzanine, and stop aliasing it to +bus 0. + +Signed-off-by: Hugh Cole-Baker +Suggested-by: Simon Glass +Fixes: c4cea2bb ("rockchip: Enable building a SPI ROM image on bob") +--- + +(no changes since v1) + + arch/arm/dts/rk3399-roc-pc-u-boot.dtsi | 4 ---- + configs/roc-pc-mezzanine-rk3399_defconfig | 1 + + configs/roc-pc-rk3399_defconfig | 1 + + 3 files changed, 2 insertions(+), 4 deletions(-) + +diff --git a/arch/arm/dts/rk3399-roc-pc-u-boot.dtsi b/arch/arm/dts/rk3399-roc-pc-u-boot.dtsi +index fc155e69036..e3c9364e359 100644 +--- a/arch/arm/dts/rk3399-roc-pc-u-boot.dtsi ++++ b/arch/arm/dts/rk3399-roc-pc-u-boot.dtsi +@@ -7,10 +7,6 @@ + #include "rk3399-sdram-lpddr4-100.dtsi" + + / { +- aliases { +- spi0 = &spi1; +- }; +- + chosen { + u-boot,spl-boot-order = "same-as-spl", &spi_flash, &sdhci, &sdmmc; + }; +diff --git a/configs/roc-pc-mezzanine-rk3399_defconfig b/configs/roc-pc-mezzanine-rk3399_defconfig +index ae16f3558a3..8aa5a155180 100644 +--- a/configs/roc-pc-mezzanine-rk3399_defconfig ++++ b/configs/roc-pc-mezzanine-rk3399_defconfig +@@ -42,6 +42,7 @@ CONFIG_MMC_DW=y + CONFIG_MMC_DW_ROCKCHIP=y + CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_ROCKCHIP=y ++CONFIG_SF_DEFAULT_BUS=1 + CONFIG_SPI_FLASH_WINBOND=y + CONFIG_DM_ETH=y + CONFIG_ETH_DESIGNWARE=y +diff --git a/configs/roc-pc-rk3399_defconfig b/configs/roc-pc-rk3399_defconfig +index 774707b115b..927b57685d9 100644 +--- a/configs/roc-pc-rk3399_defconfig ++++ b/configs/roc-pc-rk3399_defconfig +@@ -41,6 +41,7 @@ CONFIG_MMC_DW=y + CONFIG_MMC_DW_ROCKCHIP=y + CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_ROCKCHIP=y ++CONFIG_SF_DEFAULT_BUS=1 + CONFIG_SPI_FLASH_WINBOND=y + CONFIG_DM_ETH=y + CONFIG_ETH_DESIGNWARE=y + +From patchwork Sun Nov 22 13:03:46 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Hugh Cole-Baker +X-Patchwork-Id: 1404477 +X-Patchwork-Delegate: ykai007@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dmarc=pass (p=none dis=none) header.from=gmail.com +Authentication-Results: ozlabs.org; + dkim=pass (2048-bit key; + unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 + header.s=20161025 header.b=V6cH+Ab0; + dkim-atps=neutral +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4Cf9W26DWNz9sSf + for ; Mon, 23 Nov 2020 00:05:18 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id ED850825C8; + Sun, 22 Nov 2020 14:04:29 +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="V6cH+Ab0"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id E1A45825AB; Sun, 22 Nov 2020 14:04:22 +0100 (CET) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, + DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,SPF_HELO_NONE,URIBL_BLOCKED + autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-wm1-x343.google.com (mail-wm1-x343.google.com + [IPv6:2a00:1450:4864:20::343]) + (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 5844D825AB + for ; Sun, 22 Nov 2020 14:04:19 +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=sigmaris@gmail.com +Received: by mail-wm1-x343.google.com with SMTP id 10so15317137wml.2 + for ; Sun, 22 Nov 2020 05:04:19 -0800 (PST) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; + h=from:to:cc:subject:date:message-id:in-reply-to:references + :mime-version:content-transfer-encoding; + bh=iIABfTCsAnamS6ADtBcJnJDUKIZeDRjQlCiKPeXJeqY=; + b=V6cH+Ab04tdAtCynJa7Qo7eZ0vOL+fDJlPGfOsICfFxkuWCsAqo4YC1Lg+J1OoQvrF + MVW8XT73Fltm2U5f+3rveS4CbcF+xbyf316XXSlZYzlV2MECQHM1hMMNHVYPBwW8Ny3W + jMILQm5wpgigFT7L5V8Xiwfsoipi1OWBinnGWENTCgz/bpdQT4pPh61GYeGCtk3UPay+ + 7I8RrljPl3ya1aEEoX3J1M3VrSoQrwmkL7uwcSTis52BODNDXLIthfIex7obwoKrfZ7F + yrwOL+MGYuiiF5PEdGdruQmcxMWUwtMhS2RbElFRRjBlB0A16ofrAXpOOsSS+C18qXo+ + XIPg== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20161025; + h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to + :references:mime-version:content-transfer-encoding; + bh=iIABfTCsAnamS6ADtBcJnJDUKIZeDRjQlCiKPeXJeqY=; + b=jzfmFxc0145sVD+QeBzKFADhk4C/yzyilURKZZaVznYqUzq4jpnOEUXOKrTDSml/kK + dyHdpxX7AOj58BDsEbLUTmdhqIuQSJlh8wXPVCPMNvJ66hAwO9jZ/8Y7zYYyVzQ+RkzO + 653do0IvgG0Wb/cLLakIbtLIjL8rg+T70rI//qWGT4OrrVp/nI8U6IXnSAR1SxxCjGZQ + W/3FudFguFZA76WoGX7ZiTveS4J3LkWY4hMRRVSXa10xZKIkgjIr6si5yl0WAhsJIzep + NxN3WJiU0lTXarelq336e1kUvh+aU76hw43R0qcleFYXdunl/Z7ChfVelgpltmQqyLx7 + wgJg== +X-Gm-Message-State: AOAM531Du1DX9BT1NWQgESsUfd//f4j2LyAj2AOjJY5L/2VB5fARZ2cA + x4CIUqCbM6DgJ9FYGJ629YAJ8eH9U7CC3g== +X-Google-Smtp-Source: + ABdhPJz9FBgRtp7SHTW2BICUUPHvdN1vEdLJP8V3sn7sYgqugP0WuiDc/DRtvRECan9YqreK37PSHA== +X-Received: by 2002:a1c:1dc1:: with SMTP id + d184mr19004343wmd.169.1606050255890; + Sun, 22 Nov 2020 05:04:15 -0800 (PST) +Received: from apple.sigmaris.info (ebrouter.sigmaris.info. [82.69.107.165]) + by smtp.gmail.com with ESMTPSA id i6sm10968566wma.42.2020.11.22.05.04.15 + (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); + Sun, 22 Nov 2020 05:04:15 -0800 (PST) +From: Hugh Cole-Baker +To: U-Boot Mailing List +Cc: Hugh Cole-Baker , + Kever Yang , + Heiko Stuebner , + Jagan Teki , + Klaus Goger , + Peter Robinson , + Philipp Tomsich , + Simon Glass +Subject: [PATCH v2 3/3] rockchip: puma-haikou: default to SPI bus 1 for + SPI-flash +Date: Sun, 22 Nov 2020 13:03:46 +0000 +Message-Id: <20201122130346.11621-4-sigmaris@gmail.com> +X-Mailer: git-send-email 2.24.3 (Apple Git-128) +In-Reply-To: <20201122130346.11621-1-sigmaris@gmail.com> +References: <20201122130346.11621-1-sigmaris@gmail.com> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de +X-Virus-Status: Clean + +SPI flash on this machine is located on bus 1, default to using bus 1 +for SPI flash and stop aliasing it to bus 0. Formerly the alias spi1 +pointed to &spi5, use an alias spi5 for this instead. + +Signed-off-by: Hugh Cole-Baker +Suggested-by: Kever Yang +--- + +Changes in v2: +New patch. + + arch/arm/dts/rk3399-puma-haikou-u-boot.dtsi | 3 +-- + configs/puma-rk3399_defconfig | 2 ++ + 2 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/dts/rk3399-puma-haikou-u-boot.dtsi b/arch/arm/dts/rk3399-puma-haikou-u-boot.dtsi +index 29846c4b001..e7a1aea3a56 100644 +--- a/arch/arm/dts/rk3399-puma-haikou-u-boot.dtsi ++++ b/arch/arm/dts/rk3399-puma-haikou-u-boot.dtsi +@@ -28,8 +28,7 @@ + }; + + aliases { +- spi0 = &spi1; +- spi1 = &spi5; ++ spi5 = &spi5; + }; + + /* +diff --git a/configs/puma-rk3399_defconfig b/configs/puma-rk3399_defconfig +index 60178e3754c..0f15936c2d6 100644 +--- a/configs/puma-rk3399_defconfig ++++ b/configs/puma-rk3399_defconfig +@@ -44,6 +44,7 @@ CONFIG_ENV_OVERWRITE=y + CONFIG_ENV_IS_IN_MMC=y + CONFIG_SYS_RELOC_GD_ENV_ADDR=y + CONFIG_SYS_MMC_ENV_DEV=1 ++CONFIG_SPL_DM_SEQ_ALIAS=y + CONFIG_ROCKCHIP_GPIO=y + CONFIG_SYS_I2C_ROCKCHIP=y + CONFIG_MISC=y +@@ -53,6 +54,7 @@ CONFIG_MMC_DW_ROCKCHIP=y + CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_SDMA=y + CONFIG_MMC_SDHCI_ROCKCHIP=y ++CONFIG_SF_DEFAULT_BUS=1 + CONFIG_SF_DEFAULT_SPEED=20000000 + CONFIG_SPI_FLASH_GIGADEVICE=y + CONFIG_SPI_FLASH_WINBOND=y diff --git a/sources b/sources index bd7ffdd..7215d7b 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2021.01-rc4.tar.bz2) = 6de2c60d02276f4eed31b5baf2d8239ad0af30c9d341339a4cd7fa0786068cb5faa1ab8bd0b4155e536962e1a4869906f60f1d2a1e50b0ed15e98c2e84d6a97b +SHA512 (u-boot-2021.01-rc5.tar.bz2) = bfc9524860c9557777048350c4081d6068a4bddb354b1896240f415a17559df4dd403609b244adfe23316e8c68ae1ed1fce3412649413a2cccd9033f23b5390a diff --git a/uboot-tools.spec b/uboot-tools.spec index 768452c..6c5bdbd 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -%global candidate rc4 +%global candidate rc5 Name: uboot-tools Version: 2021.01 -Release: 0.4%{?candidate:.%{candidate}}%{?dist} +Release: 0.5%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -24,8 +24,6 @@ Patch3: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch #Patch4: rockchip-spl-u-boot-itb-offset.patch # Board fixes and enablement -Patch5: Raspberry-Pi-400-Compute-Module-4-support.patch -Patch6: rng-Add-iProc-RNG200-driver.patch # AllWinner improvements Patch10: AllWinner-PineTab.patch Patch11: sunxi-add-PineCube-board.patch @@ -35,6 +33,10 @@ Patch13: 0001-Fix-BeagleAI-detection.patch # Rockchips improvements Patch14: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch Patch15: rk3399-Pinebook-pro-EDP-support.patch +Patch16: rockchip-Fix-SPI-boot-on-Pinebook-Pro-Puma-and-RK3399-ROC-PC.patch +# Raspberry Pi improvements +Patch17: Raspberry-Pi-400-Compute-Module-4-support.patch +Patch18: rng-Add-iProc-RNG200-driver.patch BuildRequires: bc BuildRequires: dtc @@ -235,6 +237,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Tue Jan 5 2021 Peter Robinson - 2021.01-0.5.rc5 +- Update to 2021.01 RC5 + * Sun Dec 27 2020 Peter Robinson - 2021.01-0.4.rc4 - Update to 2021.01 RC4 - Latest RPi-400/CM4 support patch From 74de6cf1a5a80591aa0c7d21df2bba28e18098a6 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 18 Jan 2021 13:22:47 +0000 Subject: [PATCH 045/271] 2021.01, RPi4 series updates, minor sunxi fixes --- ...ne-MACPWR-and-SATAPWR-to-empty-strin.patch | 40 +++++ ...-Pinebook-Pro-Puma-and-RK3399-ROC-PC.patch | 169 ------------------ sources | 2 +- uboot-tools.spec | 22 ++- ...DT-from-any-partition-on-boot-device.patch | 2 +- uefi-use-Fedora-specific-path-name.patch | 2 +- 6 files changed, 57 insertions(+), 180 deletions(-) create mode 100644 0001-sunxi-don-t-define-MACPWR-and-SATAPWR-to-empty-strin.patch diff --git a/0001-sunxi-don-t-define-MACPWR-and-SATAPWR-to-empty-strin.patch b/0001-sunxi-don-t-define-MACPWR-and-SATAPWR-to-empty-strin.patch new file mode 100644 index 0000000..5c45308 --- /dev/null +++ b/0001-sunxi-don-t-define-MACPWR-and-SATAPWR-to-empty-strin.patch @@ -0,0 +1,40 @@ +From 03f91f2db03bf1382608798cd58251ff920d58ef Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Mon, 18 Jan 2021 00:02:53 +0000 +Subject: [PATCH] sunxi: don't define MACPWR and SATAPWR to empty strings + +There's checks in board/sunxi/board.c if either MACPWR or SATAPWR are +defined and they are defined by default to a empty string which means +on vast majority of AllWinner boards when they're not required the +code is still run and with SATAPWR we even get an unnecessary 500ms +delay booting. So let's not define a default for these options so the +code is only run for boards that need it. + +Signed-off-by: Peter Robinson +--- + arch/arm/mach-sunxi/Kconfig | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig +index 49ef217f08..a566e10315 100644 +--- a/arch/arm/mach-sunxi/Kconfig ++++ b/arch/arm/mach-sunxi/Kconfig +@@ -578,7 +578,6 @@ config OLD_SUNXI_KERNEL_COMPAT + + config MACPWR + string "MAC power pin" +- default "" + help + Set the pin used to power the MAC. This takes a string in the format + understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H. +@@ -969,7 +968,6 @@ endchoice + + config SATAPWR + string "SATA power pin" +- default "" + help + Set the pins used to power the SATA. This takes a string in the + format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of +-- +2.29.2 + diff --git a/rockchip-Fix-SPI-boot-on-Pinebook-Pro-Puma-and-RK3399-ROC-PC.patch b/rockchip-Fix-SPI-boot-on-Pinebook-Pro-Puma-and-RK3399-ROC-PC.patch index 39f9bb5..94e43b7 100644 --- a/rockchip-Fix-SPI-boot-on-Pinebook-Pro-Puma-and-RK3399-ROC-PC.patch +++ b/rockchip-Fix-SPI-boot-on-Pinebook-Pro-Puma-and-RK3399-ROC-PC.patch @@ -1,172 +1,3 @@ -From patchwork Sun Nov 22 13:03:44 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Hugh Cole-Baker -X-Patchwork-Id: 1404474 -X-Patchwork-Delegate: ykai007@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: ozlabs.org; - dkim=pass (2048-bit key; - unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 - header.s=20161025 header.b=P6CnMO7U; - dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4Cf9VN30jjz9sT6 - for ; Mon, 23 Nov 2020 00:04:41 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id CE775825A1; - Sun, 22 Nov 2020 14:04:18 +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="P6CnMO7U"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 74E088257F; Sun, 22 Nov 2020 14:04:13 +0100 (CET) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,SPF_HELO_NONE,URIBL_BLOCKED - autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com - [IPv6:2a00:1450:4864:20::441]) - (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 898AE82564 - for ; Sun, 22 Nov 2020 14:04:09 +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=sigmaris@gmail.com -Received: by mail-wr1-x441.google.com with SMTP id l1so15714256wrb.9 - for ; Sun, 22 Nov 2020 05:04:09 -0800 (PST) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; - h=from:to:cc:subject:date:message-id:in-reply-to:references - :mime-version:content-transfer-encoding; - bh=6SYQmHVr0D0O3wWmxMfhj7ZKtMAcYMPC+fsr+GotKTs=; - b=P6CnMO7Up+Z5K5CbVzKd4H/2QN8yjMOXmyDou0LODbNDm9Bk5yNIT7IPUTNgCi7OHU - MCkWj1sA/Y0Vy7be+3ft1nvEIh1fY6E44ffw6tGcvGUf7rDXyQvyAZ6zSd8IHyqI44Xq - dzs/KERwAULCzSHt9OQNGYDnv3bKJAfGhh5t+nfR8z8/9ssONR3q18wKQEJ1X5eFO/IK - butM9Dq2sfJ0e15aYShs2Ku0k641pHX6ur5zSujD46MVhPApRhbHN9pbTAdmBmFb5cpk - taUyiQmhmHxj8oclIibEwDHS/0ygI7OmaEfDZRoYa5K8U6dp7hqDb9iZHasNsyBYRHs+ - Iuyg== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20161025; - h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to - :references:mime-version:content-transfer-encoding; - bh=6SYQmHVr0D0O3wWmxMfhj7ZKtMAcYMPC+fsr+GotKTs=; - b=mQwI4z7mnmNifc4yfgZj/vpgd1vQW9IOxjw2r3+sk+pRuJ6SjrjPsFmnfU8d1CfA5X - /IgzqDbWRhYtjMPiXe0VbrS8HfI5Fqps/BFq2BjN+zrER/ZUKC0MSkv7XsYQmM3UoFgo - ysyImd1T8hkM2fcsg0idMJ1AAY2Mtol2oKwHm+F5kW054bkSUo2mWpGRJE/RUTGMJYzP - oGu6T7V/CLjZCuWNJkpzwzCY7BoyLnirZ+EH4mMGkxJgZ4NdZIl+DVP0kcbSgNLTDMhy - JTF57D+dog/31smuIZ38Xtiee9OlTyoaTQzEN8+1zfHSevwQyUD48xyKcLFA2DVAYtYP - X4wQ== -X-Gm-Message-State: AOAM533BH77QNc2JvGEEMb3O1vShAryk75TxbZD57eNvHYZ5XNi0l3Nd - Hi9Vz0PAFdp4uFVQjchxkUeQHvOpOpzcpA== -X-Google-Smtp-Source: - ABdhPJzsTBCcXrYUm/5t74Gtg0n/vpUspyjdh6Ua796/vUxpSvKtaPDvdYxfFz+jaI/Ujmpb8WJFOw== -X-Received: by 2002:a5d:5183:: with SMTP id k3mr5107660wrv.62.1606050248908; - Sun, 22 Nov 2020 05:04:08 -0800 (PST) -Received: from apple.sigmaris.info (ebrouter.sigmaris.info. [82.69.107.165]) - by smtp.gmail.com with ESMTPSA id i6sm10968566wma.42.2020.11.22.05.04.08 - (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); - Sun, 22 Nov 2020 05:04:08 -0800 (PST) -From: Hugh Cole-Baker -To: U-Boot Mailing List -Cc: Hugh Cole-Baker , Simon Glass , - Kever Yang , - Peter Robinson , - Philipp Tomsich -Subject: [PATCH v2 1/3] rockchip: pinebook-pro: default to SPI bus 1 for - SPI-flash -Date: Sun, 22 Nov 2020 13:03:44 +0000 -Message-Id: <20201122130346.11621-2-sigmaris@gmail.com> -X-Mailer: git-send-email 2.24.3 (Apple Git-128) -In-Reply-To: <20201122130346.11621-1-sigmaris@gmail.com> -References: <20201122130346.11621-1-sigmaris@gmail.com> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -SPI flash on this machine is located on bus 1, default to using bus 1 -for SPI flash and stop aliasing it to bus 0. - -Signed-off-by: Hugh Cole-Baker -Suggested-by: Simon Glass -Fixes: c4cea2bb ("rockchip: Enable building a SPI ROM image on bob") ---- - -(no changes since v1) - - arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi | 4 ---- - configs/pinebook-pro-rk3399_defconfig | 2 ++ - 2 files changed, 2 insertions(+), 4 deletions(-) - -diff --git a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -index ded7db0aeff..ee3b98698e6 100644 ---- a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -@@ -7,10 +7,6 @@ - #include "rk3399-sdram-lpddr4-100.dtsi" - - / { -- aliases { -- spi0 = &spi1; -- }; -- - chosen { - u-boot,spl-boot-order = "same-as-spl", &sdhci, &spiflash, &sdmmc; - }; -diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig -index 1ed54ad0eda..ef00ad92c45 100644 ---- a/configs/pinebook-pro-rk3399_defconfig -+++ b/configs/pinebook-pro-rk3399_defconfig -@@ -37,6 +37,7 @@ CONFIG_SPL_OF_CONTROL=y - CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" - CONFIG_ENV_IS_IN_SPI_FLASH=y - CONFIG_SYS_RELOC_GD_ENV_ADDR=y -+CONFIG_SPL_DM_SEQ_ALIAS=y - CONFIG_ROCKCHIP_GPIO=y - CONFIG_SYS_I2C_ROCKCHIP=y - CONFIG_DM_KEYBOARD=y -@@ -49,6 +50,7 @@ CONFIG_MMC_DW_ROCKCHIP=y - CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_SDMA=y - CONFIG_MMC_SDHCI_ROCKCHIP=y -+CONFIG_SF_DEFAULT_BUS=1 - CONFIG_SF_DEFAULT_SPEED=20000000 - CONFIG_SPI_FLASH_GIGADEVICE=y - CONFIG_SPI_FLASH_WINBOND=y - From patchwork Sun Nov 22 13:03:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 diff --git a/sources b/sources index 7215d7b..1e6a02f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2021.01-rc5.tar.bz2) = bfc9524860c9557777048350c4081d6068a4bddb354b1896240f415a17559df4dd403609b244adfe23316e8c68ae1ed1fce3412649413a2cccd9033f23b5390a +SHA512 (u-boot-2021.01.tar.bz2) = 40dd4d9ef87a1829158658c433d46a047a39c0d8c314ad8d133f7240343ee3a75b060f009dd2efe598cfb8a766773f6cd773ea7f7745ee88e52a771c77eb1c6e diff --git a/uboot-tools.spec b/uboot-tools.spec index 6c5bdbd..40bf234 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -%global candidate rc5 +#global candidate rc1 Name: uboot-tools Version: 2021.01 -Release: 0.5%{?candidate:.%{candidate}}%{?dist} +Release: 1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -28,15 +28,17 @@ Patch3: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch Patch10: AllWinner-PineTab.patch Patch11: sunxi-add-PineCube-board.patch Patch12: 0001-Fixes-for-AllWinner-ethernet-network-interfaces.patch +Patch13: 0001-sunxi-don-t-define-MACPWR-and-SATAPWR-to-empty-strin.patch # TI fixes -Patch13: 0001-Fix-BeagleAI-detection.patch +Patch14: 0001-Fix-BeagleAI-detection.patch # Rockchips improvements -Patch14: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch -Patch15: rk3399-Pinebook-pro-EDP-support.patch -Patch16: rockchip-Fix-SPI-boot-on-Pinebook-Pro-Puma-and-RK3399-ROC-PC.patch +Patch15: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch +Patch16: rk3399-Pinebook-pro-EDP-support.patch +Patch17: rockchip-Fix-SPI-boot-on-Pinebook-Pro-Puma-and-RK3399-ROC-PC.patch # Raspberry Pi improvements -Patch17: Raspberry-Pi-400-Compute-Module-4-support.patch -Patch18: rng-Add-iProc-RNG200-driver.patch +Patch18: Raspberry-Pi-400-Compute-Module-4-support.patch +Patch19: rng-Add-iProc-RNG200-driver.patch +Patch20: Raspberry-Pi-4-PCIe-handover.patch BuildRequires: bc BuildRequires: dtc @@ -237,6 +239,10 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Mon Jan 11 2021 Peter Robinson - 2021.01-1 +- Update to 2021.01 GA +- Updates for Raspberry Pi 4 Series of devices + * Tue Jan 5 2021 Peter Robinson - 2021.01-0.5.rc5 - Update to 2021.01 RC5 diff --git a/uefi-distro-load-FDT-from-any-partition-on-boot-device.patch b/uefi-distro-load-FDT-from-any-partition-on-boot-device.patch index cc2c4f8..39d6c20 100644 --- a/uefi-distro-load-FDT-from-any-partition-on-boot-device.patch +++ b/uefi-distro-load-FDT-from-any-partition-on-boot-device.patch @@ -66,7 +66,7 @@ index ff29ef5a905..769477cd80e 100644 + "fi;" \ + "done; " \ + "done; " \ -+ "run boot_efi_bootmgr\0" \ ++ "run boot_efi_binary\0" \ + "scan_dev_for_efi=" \ "if test -e ${devtype} ${devnum}:${distro_bootpart} " \ "efi/boot/"BOOTEFI_NAME"; then " \ diff --git a/uefi-use-Fedora-specific-path-name.patch b/uefi-use-Fedora-specific-path-name.patch index a7f6a16..68db8b9 100644 --- a/uefi-use-Fedora-specific-path-name.patch +++ b/uefi-use-Fedora-specific-path-name.patch @@ -34,7 +34,7 @@ index 769477cd80e..22ce3685758 100644 "bootefi ${kernel_addr_r} ${fdt_addr_r};" \ "else " \ @@ -169,9 +169,9 @@ - "run boot_efi_bootmgr\0" \ + "run boot_efi_binary\0" \ "scan_dev_for_efi=" \ "if test -e ${devtype} ${devnum}:${distro_bootpart} " \ - "efi/boot/"BOOTEFI_NAME"; then " \ From 12eb6a489ac58d1770536c0b62e8f2e4785b3223 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 18 Jan 2021 13:27:20 +0000 Subject: [PATCH 046/271] Add RPi-4 pcie patch --- Raspberry-Pi-4-PCIe-handover.patch | 89 ++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 Raspberry-Pi-4-PCIe-handover.patch diff --git a/Raspberry-Pi-4-PCIe-handover.patch b/Raspberry-Pi-4-PCIe-handover.patch new file mode 100644 index 0000000..1a52850 --- /dev/null +++ b/Raspberry-Pi-4-PCIe-handover.patch @@ -0,0 +1,89 @@ +From 5e2954fae6081daf8d65ba28dd0edef3527f5d31 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Thu, 14 Jan 2021 17:07:18 +0000 +Subject: [PATCH 1/2] usb: xhci-pci: Add DM_FLAG_OS_PREPARE flag + +The PCIe bus the controller is connected to might need to be removed +prior the handover. Make sure xhci-pci is also removed so as to avoid +unexpected timeouts or hangs. + +Signed-off-by: Nicolas Saenz Julienne +Signed-off-by: Peter Robinson +--- + drivers/usb/host/xhci-pci.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c +index 9fb6d2f763..19f8fb4458 100644 +--- a/drivers/usb/host/xhci-pci.c ++++ b/drivers/usb/host/xhci-pci.c +@@ -61,7 +61,7 @@ U_BOOT_DRIVER(xhci_pci) = { + .ops = &xhci_usb_ops, + .platdata_auto_alloc_size = sizeof(struct usb_platdata), + .priv_auto_alloc_size = sizeof(struct xhci_ctrl), +- .flags = DM_FLAG_ALLOC_PRIV_DMA, ++ .flags = DM_FLAG_OS_PREPARE | DM_FLAG_ALLOC_PRIV_DMA, + }; + + static struct pci_device_id xhci_pci_supported[] = { +-- +2.29.2 + +From 162e817b0196c418bcf5d02cedf2d823f3497321 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Thu, 14 Jan 2021 17:09:47 +0000 +Subject: [PATCH 2/2] pci: brcmstb: Cleanup controller state before handover + +Make sure we handover the PCIe controller in a clean state. Some of the +devices hanging from the PCIe bus might need to be properly reset +through #PERST in order for Linux to be able to initialize them. + +This is specially important in order to properly initialize Raspberry Pi +4 B and 400's USB chip. + +Signed-off-by: Nicolas Saenz Julienne +Signed-off-by: Peter Robinson +--- + drivers/pci/pcie_brcmstb.c | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +diff --git a/drivers/pci/pcie_brcmstb.c b/drivers/pci/pcie_brcmstb.c +index f6e8ad0d0a..de824a4d9b 100644 +--- a/drivers/pci/pcie_brcmstb.c ++++ b/drivers/pci/pcie_brcmstb.c +@@ -577,6 +577,24 @@ static int brcm_pcie_probe(struct udevice *dev) + return 0; + } + ++static int brcm_pcie_remove(struct udevice *dev) ++{ ++ struct brcm_pcie *pcie = dev_get_priv(dev); ++ void __iomem *base = pcie->base; ++ ++ /* Assert fundamental reset */ ++ setbits_le32(base + PCIE_RGR1_SW_INIT_1, RGR1_SW_INIT_1_PERST_MASK); ++ ++ /* Turn off SerDes */ ++ setbits_le32(base + PCIE_MISC_HARD_PCIE_HARD_DEBUG, ++ PCIE_HARD_DEBUG_SERDES_IDDQ_MASK); ++ ++ /* Shutdown bridge */ ++ setbits_le32(base + PCIE_RGR1_SW_INIT_1, RGR1_SW_INIT_1_INIT_MASK); ++ ++ return 0; ++} ++ + static int brcm_pcie_ofdata_to_platdata(struct udevice *dev) + { + struct brcm_pcie *pcie = dev_get_priv(dev); +@@ -616,6 +634,7 @@ U_BOOT_DRIVER(pcie_brcm_base) = { + .ops = &brcm_pcie_ops, + .of_match = brcm_pcie_ids, + .probe = brcm_pcie_probe, ++ .remove = brcm_pcie_remove, + .ofdata_to_platdata = brcm_pcie_ofdata_to_platdata, + .priv_auto_alloc_size = sizeof(struct brcm_pcie), + }; +-- +2.29.2 + From 90614b00cef0c5149c70a15952b9faae0b0e12c6 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 18 Jan 2021 14:54:46 +0000 Subject: [PATCH 047/271] Sort target list files --- aarch64-boards | 12 ++++++------ arm-boards | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/aarch64-boards b/aarch64-boards index e5d4147..c568d46 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -12,8 +12,8 @@ firefly-rk3399 geekbox hikey khadas-edge-captain-rk3399 -khadas-edge-v-rk3399 khadas-edge-rk3399 +khadas-edge-v-rk3399 khadas-vim khadas-vim2 khadas-vim3 @@ -28,8 +28,8 @@ mvebu_mcbin-88f8040 nanopc-t4-rk3399 nanopi_a64 nanopi-k2 -nanopi-m4-rk3399 nanopi-m4-2gb-rk3399 +nanopi-m4-rk3399 nanopi_neo2 nanopi-neo4-rk3399 nanopi_neo_plus2 @@ -50,21 +50,21 @@ pine64-lts pine64_plus pinebook pinebook-pro-rk3399 +pine_h64 pinephone pinetab -pine_h64 poplar puma-rk3399 +roc-cc-rk3328 rock64-rk3328 rock960-rk3399 -rock-pi-4-rk3399 rock-pi-4c-rk3399 +rock-pi-4-rk3399 rock-pi-e-rk3328 rock-pi-n10-rk3399pro rockpro64-rk3399 -roc-cc-rk3328 -roc-pc-rk3399 roc-pc-mezzanine-rk3399 +roc-pc-rk3399 rpi_3 rpi_4 rpi_arm64 diff --git a/arm-boards b/arm-boards index 8a7798d..0cf367e 100644 --- a/arm-boards +++ b/arm-boards @@ -113,8 +113,8 @@ qemu_arm r7-tv-dongle riotboard rock -rock-pi-n8-rk3288 rock2 +rock-pi-n8-rk3288 rpi_2 rpi_3_32b rpi_4_32b @@ -139,5 +139,5 @@ warp warp7 Wexler_TAB7200 Wits_Pro_A20_DKT -Yones_Toptech_BS1078_V2 xilinx_zynq_virt +Yones_Toptech_BS1078_V2 From 6be7eb2066345d1fd52d8d9ddb847031f4bee9c7 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 27 Jan 2021 22:31:46 +0000 Subject: [PATCH 048/271] - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- uboot-tools.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 40bf234..4bdd596 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -2,7 +2,7 @@ Name: uboot-tools Version: 2021.01 -Release: 1%{?candidate:.%{candidate}}%{?dist} +Release: 2%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -239,6 +239,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Wed Jan 27 2021 Fedora Release Engineering - 2021.01-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + * Mon Jan 11 2021 Peter Robinson - 2021.01-1 - Update to 2021.01 GA - Updates for Raspberry Pi 4 Series of devices From 65ed4db407f641a44f7ade163634678aec7ce04f Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 1 Feb 2021 22:31:25 +0000 Subject: [PATCH 049/271] 2021.04 RC1, new devices --- ...llWinner-ethernet-network-interfaces.patch | 518 ------ ...ne-MACPWR-and-SATAPWR-to-empty-strin.patch | 40 - Raspberry-Pi-4-PCIe-handover.patch | 71 +- ...erry-Pi-400-Compute-Module-4-support.patch | 1642 +++++++---------- aarch64-boards | 5 + ...nable-rng-on-rock960-and-firefly3399.patch | 135 -- rk3399-Pinebook-pro-EDP-support.patch | 1190 ++---------- ...-Pinebook-Pro-Puma-and-RK3399-ROC-PC.patch | 348 ---- sources | 2 +- sunxi-add-PineCube-board.patch | 222 --- uboot-tools.spec | 29 +- 11 files changed, 915 insertions(+), 3287 deletions(-) delete mode 100644 0001-Fixes-for-AllWinner-ethernet-network-interfaces.patch delete mode 100644 0001-sunxi-don-t-define-MACPWR-and-SATAPWR-to-empty-strin.patch delete mode 100644 arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch delete mode 100644 rockchip-Fix-SPI-boot-on-Pinebook-Pro-Puma-and-RK3399-ROC-PC.patch delete mode 100644 sunxi-add-PineCube-board.patch diff --git a/0001-Fixes-for-AllWinner-ethernet-network-interfaces.patch b/0001-Fixes-for-AllWinner-ethernet-network-interfaces.patch deleted file mode 100644 index 3dc423b..0000000 --- a/0001-Fixes-for-AllWinner-ethernet-network-interfaces.patch +++ /dev/null @@ -1,518 +0,0 @@ -From 25ce28126444900b7b3efef36c6b9d15a6ab9af1 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Wed, 28 Oct 2020 10:08:44 +0000 -Subject: [PATCH] Fixes for AllWinner ethernet network interfaces - -The upstream kernel in fixing stuff has broken stuff. - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/sun50i-a64-bananapi-m64.dts | 2 +- - arch/arm/dts/sun50i-a64-nanopi-a64.dts | 2 +- - arch/arm/dts/sun50i-a64-oceanic-5205-5inmfd.dts | 2 +- - arch/arm/dts/sun50i-a64-olinuxino.dts | 2 +- - arch/arm/dts/sun50i-a64-orangepi-win.dts | 2 +- - arch/arm/dts/sun50i-a64-pine64-plus.dts | 2 +- - arch/arm/dts/sun50i-a64-sopine-baseboard.dts | 2 +- - arch/arm/dts/sun50i-h5-libretech-all-h5-cc.dts | 2 +- - arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts | 2 +- - arch/arm/dts/sun50i-h5-nanopi-neo2.dts | 2 +- - arch/arm/dts/sun50i-h5-orangepi-pc2.dts | 2 +- - arch/arm/dts/sun50i-h5-orangepi-prime.dts | 2 +- - arch/arm/dts/sun50i-h5-orangepi-zero-plus.dts | 2 +- - arch/arm/dts/sun50i-h6-beelink-gs1.dts | 2 +- - arch/arm/dts/sun50i-h6-pine-h64.dts | 2 +- - arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts | 2 +- - arch/arm/dts/sun7i-a20-bananapi.dts | 2 +- - arch/arm/dts/sun7i-a20-bananapro.dts | 2 +- - arch/arm/dts/sun7i-a20-cubietruck.dts | 2 +- - arch/arm/dts/sun7i-a20-hummingbird.dts | 2 +- - arch/arm/dts/sun7i-a20-lamobo-r1.dts | 2 +- - arch/arm/dts/sun7i-a20-olimex-som-evb.dts | 2 +- - arch/arm/dts/sun7i-a20-olimex-som204-evb.dts | 2 +- - arch/arm/dts/sun7i-a20-olinuxino-lime2.dts | 2 +- - arch/arm/dts/sun7i-a20-orangepi-mini.dts | 2 +- - arch/arm/dts/sun7i-a20-orangepi.dts | 2 +- - arch/arm/dts/sun7i-a20-pcduino3-nano.dts | 2 +- - arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts | 2 +- - arch/arm/dts/sun8i-a83t-bananapi-m3.dts | 2 +- - arch/arm/dts/sun8i-a83t-cubietruck-plus.dts | 2 +- - arch/arm/dts/sun8i-h3-nanopi-m1-plus.dts | 2 +- - arch/arm/dts/sun8i-h3-orangepi-plus.dts | 2 +- - arch/arm/dts/sun8i-h3-orangepi-plus2e.dts | 2 +- - arch/arm/dts/sun8i-r40-bananapi-m2-ultra.dts | 2 +- - arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts | 2 +- - arch/arm/dts/sunxi-bananapi-m2-plus.dtsi | 2 +- - 36 files changed, 36 insertions(+), 36 deletions(-) - -diff --git a/arch/arm/dts/sun50i-a64-bananapi-m64.dts b/arch/arm/dts/sun50i-a64-bananapi-m64.dts -index ef1c90401b..e1c22aeb29 100644 ---- a/arch/arm/dts/sun50i-a64-bananapi-m64.dts -+++ b/arch/arm/dts/sun50i-a64-bananapi-m64.dts -@@ -112,7 +112,7 @@ - &emac { - pinctrl-names = "default"; - pinctrl-0 = <&rgmii_pins>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - phy-handle = <&ext_rgmii_phy>; - phy-supply = <®_dc1sw>; - status = "okay"; -diff --git a/arch/arm/dts/sun50i-a64-nanopi-a64.dts b/arch/arm/dts/sun50i-a64-nanopi-a64.dts -index 31884dbc88..03ebe3e44b 100644 ---- a/arch/arm/dts/sun50i-a64-nanopi-a64.dts -+++ b/arch/arm/dts/sun50i-a64-nanopi-a64.dts -@@ -102,7 +102,7 @@ - &emac { - pinctrl-names = "default"; - pinctrl-0 = <&rgmii_pins>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - phy-handle = <&ext_rgmii_phy>; - phy-supply = <®_dcdc1>; - status = "okay"; -diff --git a/arch/arm/dts/sun50i-a64-oceanic-5205-5inmfd.dts b/arch/arm/dts/sun50i-a64-oceanic-5205-5inmfd.dts -index 6a2154525d..94caf110ab 100644 ---- a/arch/arm/dts/sun50i-a64-oceanic-5205-5inmfd.dts -+++ b/arch/arm/dts/sun50i-a64-oceanic-5205-5inmfd.dts -@@ -30,7 +30,7 @@ - &emac { - pinctrl-names = "default"; - pinctrl-0 = <&rgmii_pins>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - phy-handle = <&ext_rgmii_phy>; - phy-supply = <®_dc1sw>; - allwinner,tx-delay-ps = <600>; -diff --git a/arch/arm/dts/sun50i-a64-olinuxino.dts b/arch/arm/dts/sun50i-a64-olinuxino.dts -index f7a4bccaa5..2396d9b797 100644 ---- a/arch/arm/dts/sun50i-a64-olinuxino.dts -+++ b/arch/arm/dts/sun50i-a64-olinuxino.dts -@@ -102,7 +102,7 @@ - &emac { - pinctrl-names = "default"; - pinctrl-0 = <&rgmii_pins>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - phy-handle = <&ext_rgmii_phy>; - phy-supply = <®_dcdc1>; - allwinner,tx-delay-ps = <600>; -diff --git a/arch/arm/dts/sun50i-a64-orangepi-win.dts b/arch/arm/dts/sun50i-a64-orangepi-win.dts -index b0c64f7579..5b5d4f31b6 100644 ---- a/arch/arm/dts/sun50i-a64-orangepi-win.dts -+++ b/arch/arm/dts/sun50i-a64-orangepi-win.dts -@@ -127,7 +127,7 @@ - &emac { - pinctrl-names = "default"; - pinctrl-0 = <&rgmii_pins>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - phy-handle = <&ext_rgmii_phy>; - phy-supply = <®_gmac_3v3>; - status = "okay"; -diff --git a/arch/arm/dts/sun50i-a64-pine64-plus.dts b/arch/arm/dts/sun50i-a64-pine64-plus.dts -index 24f1aac366..b09b4276f1 100644 ---- a/arch/arm/dts/sun50i-a64-pine64-plus.dts -+++ b/arch/arm/dts/sun50i-a64-pine64-plus.dts -@@ -52,7 +52,7 @@ - &emac { - pinctrl-names = "default"; - pinctrl-0 = <&rgmii_pins>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-txid"; - phy-handle = <&ext_rgmii_phy>; - status = "okay"; - }; -diff --git a/arch/arm/dts/sun50i-a64-sopine-baseboard.dts b/arch/arm/dts/sun50i-a64-sopine-baseboard.dts -index 53fcc9098d..4a50a18128 100644 ---- a/arch/arm/dts/sun50i-a64-sopine-baseboard.dts -+++ b/arch/arm/dts/sun50i-a64-sopine-baseboard.dts -@@ -95,7 +95,7 @@ - &emac { - pinctrl-names = "default"; - pinctrl-0 = <&rgmii_pins>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - phy-handle = <&ext_rgmii_phy>; - phy-supply = <®_dc1sw>; - status = "okay"; -diff --git a/arch/arm/dts/sun50i-h5-libretech-all-h5-cc.dts b/arch/arm/dts/sun50i-h5-libretech-all-h5-cc.dts -index df1b9263ad..6e30a564c8 100644 ---- a/arch/arm/dts/sun50i-h5-libretech-all-h5-cc.dts -+++ b/arch/arm/dts/sun50i-h5-libretech-all-h5-cc.dts -@@ -36,7 +36,7 @@ - pinctrl-0 = <&emac_rgmii_pins>; - phy-supply = <®_gmac_3v3>; - phy-handle = <&ext_rgmii_phy>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - /delete-property/ allwinner,leds-active-low; - status = "okay"; - }; -diff --git a/arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts b/arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts -index 4f9ba53ffa..9d93fe1536 100644 ---- a/arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts -+++ b/arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts -@@ -96,7 +96,7 @@ - pinctrl-0 = <&emac_rgmii_pins>; - phy-supply = <®_gmac_3v3>; - phy-handle = <&ext_rgmii_phy>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - status = "okay"; - }; - -diff --git a/arch/arm/dts/sun50i-h5-nanopi-neo2.dts b/arch/arm/dts/sun50i-h5-nanopi-neo2.dts -index b059e20813..e8ab8c2df5 100644 ---- a/arch/arm/dts/sun50i-h5-nanopi-neo2.dts -+++ b/arch/arm/dts/sun50i-h5-nanopi-neo2.dts -@@ -75,7 +75,7 @@ - pinctrl-0 = <&emac_rgmii_pins>; - phy-supply = <®_gmac_3v3>; - phy-handle = <&ext_rgmii_phy>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - status = "okay"; - }; - -diff --git a/arch/arm/dts/sun50i-h5-orangepi-pc2.dts b/arch/arm/dts/sun50i-h5-orangepi-pc2.dts -index 70b5f09984..6cc567ea99 100644 ---- a/arch/arm/dts/sun50i-h5-orangepi-pc2.dts -+++ b/arch/arm/dts/sun50i-h5-orangepi-pc2.dts -@@ -118,7 +118,7 @@ - pinctrl-0 = <&emac_rgmii_pins>; - phy-supply = <®_gmac_3v3>; - phy-handle = <&ext_rgmii_phy>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - status = "okay"; - }; - -diff --git a/arch/arm/dts/sun50i-h5-orangepi-prime.dts b/arch/arm/dts/sun50i-h5-orangepi-prime.dts -index cb44bfa598..33ab44072e 100644 ---- a/arch/arm/dts/sun50i-h5-orangepi-prime.dts -+++ b/arch/arm/dts/sun50i-h5-orangepi-prime.dts -@@ -124,7 +124,7 @@ - pinctrl-0 = <&emac_rgmii_pins>; - phy-supply = <®_gmac_3v3>; - phy-handle = <&ext_rgmii_phy>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - status = "okay"; - }; - -diff --git a/arch/arm/dts/sun50i-h5-orangepi-zero-plus.dts b/arch/arm/dts/sun50i-h5-orangepi-zero-plus.dts -index ef5ca64442..de448ca51e 100644 ---- a/arch/arm/dts/sun50i-h5-orangepi-zero-plus.dts -+++ b/arch/arm/dts/sun50i-h5-orangepi-zero-plus.dts -@@ -69,7 +69,7 @@ - pinctrl-0 = <&emac_rgmii_pins>; - phy-supply = <®_gmac_3v3>; - phy-handle = <&ext_rgmii_phy>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - status = "okay"; - }; - -diff --git a/arch/arm/dts/sun50i-h6-beelink-gs1.dts b/arch/arm/dts/sun50i-h6-beelink-gs1.dts -index 0dc33c90dd..024035d36e 100644 ---- a/arch/arm/dts/sun50i-h6-beelink-gs1.dts -+++ b/arch/arm/dts/sun50i-h6-beelink-gs1.dts -@@ -64,7 +64,7 @@ - &emac { - pinctrl-names = "default"; - pinctrl-0 = <&ext_rgmii_pins>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - phy-handle = <&ext_rgmii_phy>; - phy-supply = <®_aldo2>; - status = "okay"; -diff --git a/arch/arm/dts/sun50i-h6-pine-h64.dts b/arch/arm/dts/sun50i-h6-pine-h64.dts -index 1898345183..13fbf26817 100644 ---- a/arch/arm/dts/sun50i-h6-pine-h64.dts -+++ b/arch/arm/dts/sun50i-h6-pine-h64.dts -@@ -66,7 +66,7 @@ - &emac { - pinctrl-names = "default"; - pinctrl-0 = <&ext_rgmii_pins>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - phy-handle = <&ext_rgmii_phy>; - phy-supply = <®_aldo2>; - allwinner,rx-delay-ps = <200>; -diff --git a/arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts b/arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts -index e2bfe00588..4dbcad1343 100644 ---- a/arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts -+++ b/arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts -@@ -130,7 +130,7 @@ - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; - phy = <&phy1>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - phy-supply = <®_gmac_3v3>; - status = "okay"; - -diff --git a/arch/arm/dts/sun7i-a20-bananapi.dts b/arch/arm/dts/sun7i-a20-bananapi.dts -index 81bc85d398..33040c43bc 100644 ---- a/arch/arm/dts/sun7i-a20-bananapi.dts -+++ b/arch/arm/dts/sun7i-a20-bananapi.dts -@@ -132,7 +132,7 @@ - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; - phy = <&phy1>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - phy-supply = <®_gmac_3v3>; - status = "okay"; - -diff --git a/arch/arm/dts/sun7i-a20-bananapro.dts b/arch/arm/dts/sun7i-a20-bananapro.dts -index 0176e9de01..8a75545e22 100644 ---- a/arch/arm/dts/sun7i-a20-bananapro.dts -+++ b/arch/arm/dts/sun7i-a20-bananapro.dts -@@ -110,7 +110,7 @@ - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; - phy = <&phy1>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - phy-supply = <®_gmac_3v3>; - status = "okay"; - -diff --git a/arch/arm/dts/sun7i-a20-cubietruck.dts b/arch/arm/dts/sun7i-a20-cubietruck.dts -index 99f531b8d2..46a9f4669e 100644 ---- a/arch/arm/dts/sun7i-a20-cubietruck.dts -+++ b/arch/arm/dts/sun7i-a20-cubietruck.dts -@@ -151,7 +151,7 @@ - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; - phy = <&phy1>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - status = "okay"; - - phy1: ethernet-phy@1 { -diff --git a/arch/arm/dts/sun7i-a20-hummingbird.dts b/arch/arm/dts/sun7i-a20-hummingbird.dts -index fd0153f656..5c3d107094 100644 ---- a/arch/arm/dts/sun7i-a20-hummingbird.dts -+++ b/arch/arm/dts/sun7i-a20-hummingbird.dts -@@ -101,7 +101,7 @@ - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; - phy = <&phy1>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - phy-supply = <®_gmac_vdd>; - /* phy reset config */ - snps,reset-gpio = <&pio 0 17 GPIO_ACTIVE_HIGH>; /* PA17 */ -diff --git a/arch/arm/dts/sun7i-a20-lamobo-r1.dts b/arch/arm/dts/sun7i-a20-lamobo-r1.dts -index f91e1bee44..8173d77c12 100644 ---- a/arch/arm/dts/sun7i-a20-lamobo-r1.dts -+++ b/arch/arm/dts/sun7i-a20-lamobo-r1.dts -@@ -120,7 +120,7 @@ - &gmac { - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - phy-supply = <®_gmac_3v3>; - status = "okay"; - /delete-property/#address-cells; -diff --git a/arch/arm/dts/sun7i-a20-olimex-som-evb.dts b/arch/arm/dts/sun7i-a20-olimex-som-evb.dts -index f0e6a96e57..f0c5160ff8 100644 ---- a/arch/arm/dts/sun7i-a20-olimex-som-evb.dts -+++ b/arch/arm/dts/sun7i-a20-olimex-som-evb.dts -@@ -112,7 +112,7 @@ - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; - phy = <&phy1>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - status = "okay"; - - phy1: ethernet-phy@1 { -diff --git a/arch/arm/dts/sun7i-a20-olimex-som204-evb.dts b/arch/arm/dts/sun7i-a20-olimex-som204-evb.dts -index 823aabce04..ff42708137 100644 ---- a/arch/arm/dts/sun7i-a20-olimex-som204-evb.dts -+++ b/arch/arm/dts/sun7i-a20-olimex-som204-evb.dts -@@ -106,7 +106,7 @@ - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; - phy = <&phy3>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - phy-supply = <®_vcc3v3>; - - snps,reset-gpio = <&pio 0 17 GPIO_ACTIVE_HIGH>; -diff --git a/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts b/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts -index 4e1c590eb0..996201665b 100644 ---- a/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts -+++ b/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts -@@ -112,7 +112,7 @@ - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; - phy = <&phy1>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - status = "okay"; - - phy1: ethernet-phy@1 { -diff --git a/arch/arm/dts/sun7i-a20-orangepi-mini.dts b/arch/arm/dts/sun7i-a20-orangepi-mini.dts -index 15881081ca..b80215c61c 100644 ---- a/arch/arm/dts/sun7i-a20-orangepi-mini.dts -+++ b/arch/arm/dts/sun7i-a20-orangepi-mini.dts -@@ -121,7 +121,7 @@ - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; - phy = <&phy1>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - phy-supply = <®_gmac_3v3>; - status = "okay"; - -diff --git a/arch/arm/dts/sun7i-a20-orangepi.dts b/arch/arm/dts/sun7i-a20-orangepi.dts -index d64de2e73a..66efb7d1ab 100644 ---- a/arch/arm/dts/sun7i-a20-orangepi.dts -+++ b/arch/arm/dts/sun7i-a20-orangepi.dts -@@ -97,7 +97,7 @@ - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; - phy = <&phy1>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - phy-supply = <®_gmac_3v3>; - status = "okay"; - -diff --git a/arch/arm/dts/sun7i-a20-pcduino3-nano.dts b/arch/arm/dts/sun7i-a20-pcduino3-nano.dts -index 538ea15fa3..205eaae44a 100644 ---- a/arch/arm/dts/sun7i-a20-pcduino3-nano.dts -+++ b/arch/arm/dts/sun7i-a20-pcduino3-nano.dts -@@ -115,7 +115,7 @@ - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; - phy = <&phy1>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - status = "okay"; - - phy1: ethernet-phy@1 { -diff --git a/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts b/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts -index c27e56091f..56cc5791c4 100644 ---- a/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts -+++ b/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts -@@ -82,7 +82,7 @@ - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; - phy = <&phy1>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - status = "okay"; - - phy1: ethernet-phy@1 { -diff --git a/arch/arm/dts/sun8i-a83t-bananapi-m3.dts b/arch/arm/dts/sun8i-a83t-bananapi-m3.dts -index eaff6fa401..2beafe3a31 100644 ---- a/arch/arm/dts/sun8i-a83t-bananapi-m3.dts -+++ b/arch/arm/dts/sun8i-a83t-bananapi-m3.dts -@@ -123,7 +123,7 @@ - pinctrl-0 = <&emac_rgmii_pins>; - phy-supply = <®_sw>; - phy-handle = <&rgmii_phy>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - allwinner,rx-delay-ps = <700>; - allwinner,tx-delay-ps = <700>; - status = "okay"; -diff --git a/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts b/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts -index 5dba4fc310..ecd9ff38a8 100644 ---- a/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts -+++ b/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts -@@ -160,7 +160,7 @@ - pinctrl-0 = <&emac_rgmii_pins>; - phy-supply = <®_dldo4>; - phy-handle = <&rgmii_phy>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - status = "okay"; - }; - -diff --git a/arch/arm/dts/sun8i-h3-nanopi-m1-plus.dts b/arch/arm/dts/sun8i-h3-nanopi-m1-plus.dts -index 4ba533b034..bc370d4ea1 100644 ---- a/arch/arm/dts/sun8i-h3-nanopi-m1-plus.dts -+++ b/arch/arm/dts/sun8i-h3-nanopi-m1-plus.dts -@@ -96,7 +96,7 @@ - pinctrl-0 = <&emac_rgmii_pins>; - phy-supply = <®_gmac_3v3>; - phy-handle = <&ext_rgmii_phy>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - - status = "okay"; - }; -diff --git a/arch/arm/dts/sun8i-h3-orangepi-plus.dts b/arch/arm/dts/sun8i-h3-orangepi-plus.dts -index 97f497854e..d05fa679dc 100644 ---- a/arch/arm/dts/sun8i-h3-orangepi-plus.dts -+++ b/arch/arm/dts/sun8i-h3-orangepi-plus.dts -@@ -85,7 +85,7 @@ - pinctrl-0 = <&emac_rgmii_pins>; - phy-supply = <®_gmac_3v3>; - phy-handle = <&ext_rgmii_phy>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - - status = "okay"; - }; -diff --git a/arch/arm/dts/sun8i-h3-orangepi-plus2e.dts b/arch/arm/dts/sun8i-h3-orangepi-plus2e.dts -index 6dbf7b2e0c..b6ca45d18e 100644 ---- a/arch/arm/dts/sun8i-h3-orangepi-plus2e.dts -+++ b/arch/arm/dts/sun8i-h3-orangepi-plus2e.dts -@@ -67,7 +67,7 @@ - pinctrl-0 = <&emac_rgmii_pins>; - phy-supply = <®_gmac_3v3>; - phy-handle = <&ext_rgmii_phy>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - status = "okay"; - }; - -diff --git a/arch/arm/dts/sun8i-r40-bananapi-m2-ultra.dts b/arch/arm/dts/sun8i-r40-bananapi-m2-ultra.dts -index c488aaacbd..9c20245eef 100644 ---- a/arch/arm/dts/sun8i-r40-bananapi-m2-ultra.dts -+++ b/arch/arm/dts/sun8i-r40-bananapi-m2-ultra.dts -@@ -129,7 +129,7 @@ - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; - phy-handle = <&phy1>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - phy-supply = <®_dc1sw>; - status = "okay"; - }; -diff --git a/arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts b/arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts -index 15c22b06fc..3ab6f47cea 100644 ---- a/arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts -+++ b/arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts -@@ -120,7 +120,7 @@ - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; - phy-handle = <&phy1>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - phy-supply = <®_dc1sw>; - status = "okay"; - }; -diff --git a/arch/arm/dts/sunxi-bananapi-m2-plus.dtsi b/arch/arm/dts/sunxi-bananapi-m2-plus.dtsi -index 39263e74fb..8e5cb3b3fd 100644 ---- a/arch/arm/dts/sunxi-bananapi-m2-plus.dtsi -+++ b/arch/arm/dts/sunxi-bananapi-m2-plus.dtsi -@@ -126,7 +126,7 @@ - pinctrl-0 = <&emac_rgmii_pins>; - phy-supply = <®_gmac_3v3>; - phy-handle = <&ext_rgmii_phy>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - - status = "okay"; - }; --- -2.28.0 - diff --git a/0001-sunxi-don-t-define-MACPWR-and-SATAPWR-to-empty-strin.patch b/0001-sunxi-don-t-define-MACPWR-and-SATAPWR-to-empty-strin.patch deleted file mode 100644 index 5c45308..0000000 --- a/0001-sunxi-don-t-define-MACPWR-and-SATAPWR-to-empty-strin.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 03f91f2db03bf1382608798cd58251ff920d58ef Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Mon, 18 Jan 2021 00:02:53 +0000 -Subject: [PATCH] sunxi: don't define MACPWR and SATAPWR to empty strings - -There's checks in board/sunxi/board.c if either MACPWR or SATAPWR are -defined and they are defined by default to a empty string which means -on vast majority of AllWinner boards when they're not required the -code is still run and with SATAPWR we even get an unnecessary 500ms -delay booting. So let's not define a default for these options so the -code is only run for boards that need it. - -Signed-off-by: Peter Robinson ---- - arch/arm/mach-sunxi/Kconfig | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig -index 49ef217f08..a566e10315 100644 ---- a/arch/arm/mach-sunxi/Kconfig -+++ b/arch/arm/mach-sunxi/Kconfig -@@ -578,7 +578,6 @@ config OLD_SUNXI_KERNEL_COMPAT - - config MACPWR - string "MAC power pin" -- default "" - help - Set the pin used to power the MAC. This takes a string in the format - understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H. -@@ -969,7 +968,6 @@ endchoice - - config SATAPWR - string "SATA power pin" -- default "" - help - Set the pins used to power the SATA. This takes a string in the - format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of --- -2.29.2 - diff --git a/Raspberry-Pi-4-PCIe-handover.patch b/Raspberry-Pi-4-PCIe-handover.patch index 1a52850..308db67 100644 --- a/Raspberry-Pi-4-PCIe-handover.patch +++ b/Raspberry-Pi-4-PCIe-handover.patch @@ -1,54 +1,16 @@ -From 5e2954fae6081daf8d65ba28dd0edef3527f5d31 Mon Sep 17 00:00:00 2001 +From ced27461c009f208f880fa6bbc34c216e103eca6 Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Thu, 14 Jan 2021 17:07:18 +0000 -Subject: [PATCH 1/2] usb: xhci-pci: Add DM_FLAG_OS_PREPARE flag +Date: Mon, 1 Feb 2021 21:39:36 +0000 +Subject: [PATCH] Raspberry Pi 4 PCIe handover -The PCIe bus the controller is connected to might need to be removed -prior the handover. Make sure xhci-pci is also removed so as to avoid -unexpected timeouts or hangs. - -Signed-off-by: Nicolas Saenz Julienne Signed-off-by: Peter Robinson --- - drivers/usb/host/xhci-pci.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c -index 9fb6d2f763..19f8fb4458 100644 ---- a/drivers/usb/host/xhci-pci.c -+++ b/drivers/usb/host/xhci-pci.c -@@ -61,7 +61,7 @@ U_BOOT_DRIVER(xhci_pci) = { - .ops = &xhci_usb_ops, - .platdata_auto_alloc_size = sizeof(struct usb_platdata), - .priv_auto_alloc_size = sizeof(struct xhci_ctrl), -- .flags = DM_FLAG_ALLOC_PRIV_DMA, -+ .flags = DM_FLAG_OS_PREPARE | DM_FLAG_ALLOC_PRIV_DMA, - }; - - static struct pci_device_id xhci_pci_supported[] = { --- -2.29.2 - -From 162e817b0196c418bcf5d02cedf2d823f3497321 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Thu, 14 Jan 2021 17:09:47 +0000 -Subject: [PATCH 2/2] pci: brcmstb: Cleanup controller state before handover - -Make sure we handover the PCIe controller in a clean state. Some of the -devices hanging from the PCIe bus might need to be properly reset -through #PERST in order for Linux to be able to initialize them. - -This is specially important in order to properly initialize Raspberry Pi -4 B and 400's USB chip. - -Signed-off-by: Nicolas Saenz Julienne -Signed-off-by: Peter Robinson ---- - drivers/pci/pcie_brcmstb.c | 19 +++++++++++++++++++ - 1 file changed, 19 insertions(+) + drivers/pci/pcie_brcmstb.c | 19 +++++++++++++++++++ + drivers/usb/host/xhci-pci.c | 2 +- + 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/drivers/pci/pcie_brcmstb.c b/drivers/pci/pcie_brcmstb.c -index f6e8ad0d0a..de824a4d9b 100644 +index bd645d7896..398d7e1849 100644 --- a/drivers/pci/pcie_brcmstb.c +++ b/drivers/pci/pcie_brcmstb.c @@ -577,6 +577,24 @@ static int brcm_pcie_probe(struct udevice *dev) @@ -73,7 +35,7 @@ index f6e8ad0d0a..de824a4d9b 100644 + return 0; +} + - static int brcm_pcie_ofdata_to_platdata(struct udevice *dev) + static int brcm_pcie_of_to_plat(struct udevice *dev) { struct brcm_pcie *pcie = dev_get_priv(dev); @@ -616,6 +634,7 @@ U_BOOT_DRIVER(pcie_brcm_base) = { @@ -81,9 +43,22 @@ index f6e8ad0d0a..de824a4d9b 100644 .of_match = brcm_pcie_ids, .probe = brcm_pcie_probe, + .remove = brcm_pcie_remove, - .ofdata_to_platdata = brcm_pcie_ofdata_to_platdata, - .priv_auto_alloc_size = sizeof(struct brcm_pcie), + .of_to_plat = brcm_pcie_of_to_plat, + .priv_auto = sizeof(struct brcm_pcie), }; +diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c +index 2b445f21b5..d626929953 100644 +--- a/drivers/usb/host/xhci-pci.c ++++ b/drivers/usb/host/xhci-pci.c +@@ -61,7 +61,7 @@ U_BOOT_DRIVER(xhci_pci) = { + .ops = &xhci_usb_ops, + .plat_auto = sizeof(struct usb_plat), + .priv_auto = sizeof(struct xhci_ctrl), +- .flags = DM_FLAG_ALLOC_PRIV_DMA, ++ .flags = DM_FLAG_OS_PREPARE | DM_FLAG_ALLOC_PRIV_DMA, + }; + + static struct pci_device_id xhci_pci_supported[] = { -- 2.29.2 diff --git a/Raspberry-Pi-400-Compute-Module-4-support.patch b/Raspberry-Pi-400-Compute-Module-4-support.patch index 14ffb29..f68d498 100644 --- a/Raspberry-Pi-400-Compute-Module-4-support.patch +++ b/Raspberry-Pi-400-Compute-Module-4-support.patch @@ -1,24 +1,84 @@ -From 110229bb9a802385c73d8861de833feb1a7dadb8 Mon Sep 17 00:00:00 2001 -From: Nicolas Saenz Julienne -Date: Wed, 23 Dec 2020 19:55:27 +0100 -Subject: [PATCH 01/13] rpi: Add identifier for the new RPi400 +From 7e0e7e5a6f9cfe9ab36635f6867bbf25a27e70cd Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Mon, 1 Feb 2021 21:34:02 +0000 +Subject: [PATCH] Raspberry Pi 400 Compute Module 4 support -The Raspberry Pi Foundation released the new RPi400 which we want to -detect, so we can enable Ethernet on it and know the correct device tree -file name. - -Signed-off-by: Nicolas Saenz Julienne -Reviewed-by: Peter Robinson -Tested-by: Peter Robinson +Signed-off-by: Peter Robinson --- - board/raspberrypi/rpi/rpi.c | 5 +++++ - 1 file changed, 5 insertions(+) + arch/sandbox/dts/test.dts | 21 ++++++++ + board/raspberrypi/rpi/rpi.c | 10 ++++ + common/fdt_support.c | 73 ++++++++++++++++++++++++++++ + configs/rpi_4_32b_defconfig | 1 + + configs/rpi_4_defconfig | 1 + + configs/rpi_arm64_defconfig | 1 + + configs/sandbox64_defconfig | 1 + + configs/sandbox_defconfig | 1 + + configs/sandbox_flattree_defconfig | 1 + + configs/sandbox_spl_defconfig | 1 + + drivers/core/Kconfig | 10 ++++ + drivers/core/device.c | 41 ++++++++++++++++ + drivers/core/of_addr.c | 78 ++++++++++++++++++++++++++++++ + drivers/core/ofnode.c | 9 ++++ + drivers/core/read.c | 6 +++ + drivers/mmc/sdhci.c | 12 +++-- + drivers/pci/pcie_brcmstb.c | 12 ++--- + drivers/usb/host/xhci-mem.c | 45 +++++++++-------- + drivers/usb/host/xhci-ring.c | 13 +++-- + drivers/usb/host/xhci.c | 4 +- + drivers/video/bcm2835.c | 1 + + include/dm/device.h | 13 +++++ + include/dm/of_addr.h | 17 +++++++ + include/dm/ofnode.h | 16 ++++++ + include/dm/read.h | 21 ++++++++ + include/fdt_support.h | 14 ++++++ + include/mmc.h | 6 +++ + include/phys2bus.h | 17 +++++++ + include/usb/xhci.h | 20 +++++++- + test/dm/Makefile | 2 + + test/dm/core.c | 30 ++++++++++++ + test/dm/phys2bus.c | 37 ++++++++++++++ + test/dm/read.c | 49 +++++++++++++++++++ + 33 files changed, 543 insertions(+), 41 deletions(-) + create mode 100644 test/dm/phys2bus.c + create mode 100644 test/dm/read.c +diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts +index e95f4631bf..d4195b45bb 100644 +--- a/arch/sandbox/dts/test.dts ++++ b/arch/sandbox/dts/test.dts +@@ -350,6 +350,27 @@ + test5-gpios = <&gpio_a 19>; + }; + ++ mmio-bus@0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "denx,u-boot-test-bus"; ++ dma-ranges = <0x10000000 0x00000000 0x00040000>; ++ ++ subnode@0 { ++ compatible = "denx,u-boot-fdt-test"; ++ }; ++ }; ++ ++ mmio-bus@1 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "denx,u-boot-test-bus"; ++ ++ subnode@0 { ++ compatible = "denx,u-boot-fdt-test"; ++ }; ++ }; ++ + acpi_test1: acpi-test { + compatible = "denx,u-boot-acpi-test"; + acpi-ssdt-test-data = "ab"; diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c -index 6b1fa5fc14..b66698e4a9 100644 +index 6b1fa5fc14..abcf41a5a8 100644 --- a/board/raspberrypi/rpi/rpi.c +++ b/board/raspberrypi/rpi/rpi.c -@@ -157,6 +157,11 @@ static const struct rpi_model rpi_models_new_scheme[] = { +@@ -157,6 +157,16 @@ static const struct rpi_model rpi_models_new_scheme[] = { DTB_DIR "bcm2711-rpi-4-b.dtb", true, }, @@ -27,38 +87,6 @@ index 6b1fa5fc14..b66698e4a9 100644 + DTB_DIR "bcm2711-rpi-400.dtb", + true, + }, - }; - - static const struct rpi_model rpi_models_old_scheme[] = { --- -2.29.2 - -From 0b92c14019915aa7d81fa0b6746b800b037c7977 Mon Sep 17 00:00:00 2001 -From: Nicolas Saenz Julienne -Date: Wed, 23 Dec 2020 19:55:28 +0100 -Subject: [PATCH 02/13] rpi: Add identifier for the new CM4 - -The Raspberry Pi Foundation released the new Compute Module 4 which we -want to detect, so we can enable Ethernet on it and know the correct -device tree file name. - -Note that this sets the Ethernet option to true since the official CM4 -IO board has an Ethernet port. But that might not be the case when using -custom ones. - -Signed-off-by: Nicolas Saenz Julienne ---- - board/raspberrypi/rpi/rpi.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c -index b66698e4a9..abcf41a5a8 100644 ---- a/board/raspberrypi/rpi/rpi.c -+++ b/board/raspberrypi/rpi/rpi.c -@@ -162,6 +162,11 @@ static const struct rpi_model rpi_models_new_scheme[] = { - DTB_DIR "bcm2711-rpi-400.dtb", - true, - }, + [0x14] = { + "Compute Module 4", + DTB_DIR "bcm2711-rpi-cm4.dtb", @@ -67,97 +95,11 @@ index b66698e4a9..abcf41a5a8 100644 }; static const struct rpi_model rpi_models_old_scheme[] = { --- -2.29.2 - -From 4fa949f51bad277d64a52c99dde0c90d3114d3b4 Mon Sep 17 00:00:00 2001 -From: Nicolas Saenz Julienne -Date: Wed, 23 Dec 2020 19:55:29 +0100 -Subject: [PATCH 03/13] pci: pcie-brcmstb: Fix inbound window configurations - -So far we've assumed a fixed configuration for inbound windows as we had -a single user for this controller. But the controller's DMA constraints -were improved starting with BCM2711's B1 revision of the SoC, notably -available in CM4 and Pi400. They allow for wider inbound windows. We can -now cover the whole address space, whereas before we where limited to -the lower 3GB. - -This information is passed to us through DT's 'dma-ranges' property and -it's specially important for us to honor it since some interactions with -the board's co-processor assume we're doing so (specifically the XHCI -firmware load operation, which is handled by the co-processor after -u-boot has correctly configured the PCIe controller). - -Signed-off-by: Nicolas Saenz Julienne ---- - drivers/pci/pcie_brcmstb.c | 12 +++++------- - 1 file changed, 5 insertions(+), 7 deletions(-) - -diff --git a/drivers/pci/pcie_brcmstb.c b/drivers/pci/pcie_brcmstb.c -index dade79e9c8..f6e8ad0d0a 100644 ---- a/drivers/pci/pcie_brcmstb.c -+++ b/drivers/pci/pcie_brcmstb.c -@@ -432,6 +432,7 @@ static int brcm_pcie_probe(struct udevice *dev) - struct pci_controller *hose = dev_get_uclass_priv(ctlr); - struct brcm_pcie *pcie = dev_get_priv(dev); - void __iomem *base = pcie->base; -+ struct pci_region region; - bool ssc_good = false; - int num_out_wins = 0; - u64 rc_bar2_offset, rc_bar2_size; -@@ -468,13 +469,10 @@ static int brcm_pcie_probe(struct udevice *dev) - MISC_CTRL_SCB_ACCESS_EN_MASK | - MISC_CTRL_CFG_READ_UR_MODE_MASK | - MISC_CTRL_MAX_BURST_SIZE_128); -- /* -- * TODO: When support for other SoCs than BCM2711 is added we may -- * need to use the base address and size(s) provided in the dma-ranges -- * property. -- */ -- rc_bar2_offset = 0; -- rc_bar2_size = 0xc0000000; -+ -+ pci_get_dma_regions(dev, ®ion, 0); -+ rc_bar2_offset = region.bus_start - region.phys_start; -+ rc_bar2_size = 1ULL << fls64(region.size - 1); - - tmp = lower_32_bits(rc_bar2_offset); - u32p_replace_bits(&tmp, brcm_pcie_encode_ibar_size(rc_bar2_size), --- -2.29.2 - -From 68a67ccb7fc417ad321bd916c81e91ca6b0cc276 Mon Sep 17 00:00:00 2001 -From: Nicolas Saenz Julienne -Date: Wed, 23 Dec 2020 19:55:30 +0100 -Subject: [PATCH 04/13] dm: Introduce xxx_get_dma_range() - -Add the following functions to get a specific device's DMA ranges: - - dev_get_dma_range() - - ofnode_get_dma_range() - - of_get_dma_range() - - fdt_get_dma_range() -They are specially useful in oder to be able validate a physical address -space range into a bus's and to convert addresses from and to address -spaces. - -Signed-off-by: Nicolas Saenz Julienne -Reviewed-by: Simon Glass ---- - common/fdt_support.c | 73 +++++++++++++++++++++++++++++++++++++++ - drivers/core/of_addr.c | 78 ++++++++++++++++++++++++++++++++++++++++++ - drivers/core/ofnode.c | 9 +++++ - drivers/core/read.c | 6 ++++ - include/dm/of_addr.h | 17 +++++++++ - include/dm/ofnode.h | 16 +++++++++ - include/dm/read.h | 21 ++++++++++++ - include/fdt_support.h | 14 ++++++++ - 8 files changed, 234 insertions(+) - diff --git a/common/fdt_support.c b/common/fdt_support.c -index 5ae75df3c6..bf855d26c8 100644 +index 638eca983e..1a1b408607 100644 --- a/common/fdt_support.c +++ b/common/fdt_support.c -@@ -1342,6 +1342,79 @@ u64 fdt_translate_dma_address(const void *blob, int node_offset, +@@ -1344,6 +1344,79 @@ u64 fdt_translate_dma_address(const void *blob, int node_offset, return __of_translate_address(blob, node_offset, in_addr, "dma-ranges"); } @@ -237,11 +179,175 @@ index 5ae75df3c6..bf855d26c8 100644 /** * fdt_node_offset_by_compat_reg: Find a node that matches compatiable and * who's reg property matches a physical cpu address +diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig +index 5ddd838fd5..0a5d3ff8cd 100644 +--- a/configs/rpi_4_32b_defconfig ++++ b/configs/rpi_4_32b_defconfig +@@ -22,6 +22,7 @@ CONFIG_OF_BOARD=y + CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" + CONFIG_SYS_RELOC_GD_ENV_ADDR=y + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y ++CONFIG_DM_DMA=y + CONFIG_DFU_MMC=y + CONFIG_DM_KEYBOARD=y + CONFIG_DM_MMC=y +diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig +index 2590d0a696..b61cdc05f1 100644 +--- a/configs/rpi_4_defconfig ++++ b/configs/rpi_4_defconfig +@@ -22,6 +22,7 @@ CONFIG_OF_BOARD=y + CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" + CONFIG_SYS_RELOC_GD_ENV_ADDR=y + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y ++CONFIG_DM_DMA=y + CONFIG_DFU_MMC=y + CONFIG_DM_KEYBOARD=y + CONFIG_DM_MMC=y +diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig +index 2639219a1a..4125a1feba 100644 +--- a/configs/rpi_arm64_defconfig ++++ b/configs/rpi_arm64_defconfig +@@ -20,6 +20,7 @@ CONFIG_CMD_FS_UUID=y + CONFIG_OF_BOARD=y + CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y ++CONFIG_DM_DMA=y + CONFIG_DM_KEYBOARD=y + CONFIG_DM_MMC=y + CONFIG_MMC_SDHCI=y +diff --git a/configs/sandbox64_defconfig b/configs/sandbox64_defconfig +index 4e67819559..634c19502c 100644 +--- a/configs/sandbox64_defconfig ++++ b/configs/sandbox64_defconfig +@@ -94,6 +94,7 @@ CONFIG_ENV_EXT4_DEVICE_AND_PART="0:0" + CONFIG_BOOTP_SEND_HOSTNAME=y + CONFIG_NETCONSOLE=y + CONFIG_IP_DEFRAG=y ++CONFIG_DM_DMA=y + CONFIG_REGMAP=y + CONFIG_SYSCON=y + CONFIG_DEVRES=y +diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig +index 0c7674efc9..fc1df3114c 100644 +--- a/configs/sandbox_defconfig ++++ b/configs/sandbox_defconfig +@@ -108,6 +108,7 @@ CONFIG_ENV_EXT4_DEVICE_AND_PART="0:0" + CONFIG_BOOTP_SEND_HOSTNAME=y + CONFIG_NETCONSOLE=y + CONFIG_IP_DEFRAG=y ++CONFIG_DM_DMA=y + CONFIG_REGMAP=y + CONFIG_SYSCON=y + CONFIG_DEVRES=y +diff --git a/configs/sandbox_flattree_defconfig b/configs/sandbox_flattree_defconfig +index 96465c56cf..4401f33f0b 100644 +--- a/configs/sandbox_flattree_defconfig ++++ b/configs/sandbox_flattree_defconfig +@@ -75,6 +75,7 @@ CONFIG_ENV_EXT4_DEVICE_AND_PART="0:0" + CONFIG_BOOTP_SEND_HOSTNAME=y + CONFIG_NETCONSOLE=y + CONFIG_IP_DEFRAG=y ++CONFIG_DM_DMA=y + CONFIG_REGMAP=y + CONFIG_SYSCON=y + CONFIG_DEVRES=y +diff --git a/configs/sandbox_spl_defconfig b/configs/sandbox_spl_defconfig +index 61dae34a6a..c0118702a8 100644 +--- a/configs/sandbox_spl_defconfig ++++ b/configs/sandbox_spl_defconfig +@@ -95,6 +95,7 @@ CONFIG_BOOTP_SEND_HOSTNAME=y + CONFIG_NETCONSOLE=y + CONFIG_IP_DEFRAG=y + CONFIG_SPL_DM=y ++CONFIG_DM_DMA=y + CONFIG_REGMAP=y + CONFIG_SPL_REGMAP=y + CONFIG_SYSCON=y +diff --git a/drivers/core/Kconfig b/drivers/core/Kconfig +index dbfe51c6e8..00554af499 100644 +--- a/drivers/core/Kconfig ++++ b/drivers/core/Kconfig +@@ -129,6 +129,16 @@ config TPL_DM_INLINE_OFNODE + This applies to several ofnode functions (see ofnode.h) which are + seldom used. Inlining them can help reduce code size. + ++config DM_DMA ++ bool "Support per-device DMA constraints" ++ depends on DM ++ default n ++ help ++ Enable this to extract per-device DMA constraints, only supported on ++ device-tree systems for now. This is needed in order translate ++ addresses on systems where different buses have different views of ++ the physical address space. ++ + config REGMAP + bool "Support register maps" + depends on DM +diff --git a/drivers/core/device.c b/drivers/core/device.c +index 8629df8def..2ce9cbbe11 100644 +--- a/drivers/core/device.c ++++ b/drivers/core/device.c +@@ -421,6 +421,43 @@ fail: + return ret; + } + ++/** ++ * device_get_dma_constraints() - Populate device's DMA constraints ++ * ++ * Gets a device's DMA constraints from firmware. This information is later ++ * used by drivers to translate physcal addresses to the device's bus address ++ * space. For now only device-tree is supported. ++ * ++ * @dev: Pointer to target device ++ * Return: 0 if OK or if no DMA constraints were found, error otherwise ++ */ ++static int device_get_dma_constraints(struct udevice *dev) ++{ ++ struct udevice *parent = dev->parent; ++ phys_addr_t cpu = 0; ++ dma_addr_t bus = 0; ++ u64 size = 0; ++ int ret; ++ ++ if (!CONFIG_IS_ENABLED(DM_DMA) || !parent || !dev_has_ofnode(parent)) ++ return 0; ++ ++ /* ++ * We start parsing for dma-ranges from the device's bus node. This is ++ * specially important on nested buses. ++ */ ++ ret = dev_get_dma_range(parent, &cpu, &bus, &size); ++ /* Don't return an error if no 'dma-ranges' were found */ ++ if (ret && ret != -ENOENT) { ++ dm_warn("%s: failed to get DMA range, %d\n", dev->name, ret); ++ return ret; ++ } ++ ++ dev_set_dma_offset(dev, cpu - bus); ++ ++ return 0; ++} ++ + int device_probe(struct udevice *dev) + { + const struct driver *drv; +@@ -483,6 +520,10 @@ int device_probe(struct udevice *dev) + goto fail; + } + ++ ret = device_get_dma_constraints(dev); ++ if (ret) ++ goto fail; ++ + ret = uclass_pre_probe_device(dev); + if (ret) + goto fail; diff --git a/drivers/core/of_addr.c b/drivers/core/of_addr.c -index ca34d84922..703bc3e3f5 100644 +index bbe80136ba..5bc6ca1de0 100644 --- a/drivers/core/of_addr.c +++ b/drivers/core/of_addr.c -@@ -325,6 +325,84 @@ u64 of_translate_dma_address(const struct device_node *dev, const __be32 *in_add +@@ -318,6 +318,84 @@ u64 of_translate_dma_address(const struct device_node *dev, const __be32 *in_add return __of_translate_address(dev, in_addr, "dma-ranges"); } @@ -327,10 +433,10 @@ index ca34d84922..703bc3e3f5 100644 const __be32 *addrp, u64 size, unsigned int flags, const char *name, struct resource *r) diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c -index a68076bf35..15470d4875 100644 +index 7a5f4c0a73..1463c41c6e 100644 --- a/drivers/core/ofnode.c +++ b/drivers/core/ofnode.c -@@ -911,6 +911,15 @@ u64 ofnode_translate_dma_address(ofnode node, const fdt32_t *in_addr) +@@ -926,6 +926,15 @@ u64 ofnode_translate_dma_address(ofnode node, const fdt32_t *in_addr) return fdt_translate_dma_address(gd->fdt_blob, ofnode_to_offset(node), in_addr); } @@ -347,10 +453,10 @@ index a68076bf35..15470d4875 100644 { if (ofnode_is_np(node)) diff --git a/drivers/core/read.c b/drivers/core/read.c -index 076125824c..0994fbd979 100644 +index 4d9b5dd038..665424b2ff 100644 --- a/drivers/core/read.c +++ b/drivers/core/read.c -@@ -338,6 +338,12 @@ u64 dev_translate_dma_address(const struct udevice *dev, const fdt32_t *in_addr) +@@ -340,6 +340,12 @@ u64 dev_translate_dma_address(const struct udevice *dev, const fdt32_t *in_addr) return ofnode_translate_dma_address(dev_ofnode(dev), in_addr); } @@ -363,658 +469,85 @@ index 076125824c..0994fbd979 100644 int dev_read_alias_highest_id(const char *stem) { if (of_live_active()) -diff --git a/include/dm/of_addr.h b/include/dm/of_addr.h -index 3fa1ffce81..ee21d5cf4f 100644 ---- a/include/dm/of_addr.h -+++ b/include/dm/of_addr.h -@@ -44,6 +44,23 @@ u64 of_translate_address(const struct device_node *no, const __be32 *in_addr); - */ - u64 of_translate_dma_address(const struct device_node *no, const __be32 *in_addr); - -+ -+/** -+ * of_get_dma_range() - get dma-ranges for a specific DT node -+ * -+ * Get DMA ranges for a specifc node, this is useful to perform bus->cpu and -+ * cpu->bus address translations -+ * -+ * @param blob Pointer to device tree blob -+ * @param node_offset Node DT offset -+ * @param cpu Pointer to variable storing the range's cpu address -+ * @param bus Pointer to variable storing the range's bus address -+ * @param size Pointer to variable storing the range's size -+ * @return translated DMA address or OF_BAD_ADDR on error -+ */ -+int of_get_dma_range(const struct device_node *dev, phys_addr_t *cpu, -+ dma_addr_t *bus, u64 *size); -+ - /** - * of_get_address() - obtain an address from a node - * -diff --git a/include/dm/ofnode.h b/include/dm/ofnode.h -index ced7f6ffb2..dc3dd84d9f 100644 ---- a/include/dm/ofnode.h -+++ b/include/dm/ofnode.h -@@ -939,6 +939,22 @@ u64 ofnode_translate_address(ofnode node, const fdt32_t *in_addr); - */ - u64 ofnode_translate_dma_address(ofnode node, const fdt32_t *in_addr); - -+/** -+ * ofnode_get_dma_range() - get dma-ranges for a specific DT node -+ * -+ * Get DMA ranges for a specifc node, this is useful to perform bus->cpu and -+ * cpu->bus address translations -+ * -+ * @param blob Pointer to device tree blob -+ * @param node_offset Node DT offset -+ * @param cpu Pointer to variable storing the range's cpu address -+ * @param bus Pointer to variable storing the range's bus address -+ * @param size Pointer to variable storing the range's size -+ * @return translated DMA address or OF_BAD_ADDR on error -+ */ -+int ofnode_get_dma_range(ofnode node, phys_addr_t *cpu, dma_addr_t *bus, -+ u64 *size); -+ - /** - * ofnode_device_is_compatible() - check if the node is compatible with compat - * -diff --git a/include/dm/read.h b/include/dm/read.h -index 0585eb1228..46e902c57d 100644 ---- a/include/dm/read.h -+++ b/include/dm/read.h -@@ -664,6 +664,21 @@ u64 dev_translate_address(const struct udevice *dev, const fdt32_t *in_addr); - u64 dev_translate_dma_address(const struct udevice *dev, - const fdt32_t *in_addr); - -+/** -+ * dev_get_dma_range() - Get a device's DMA constraints -+ * -+ * Provide the address bases and size of the linear mapping between the CPU and -+ * a device's BUS address space. -+ * -+ * @dev: device giving the context in which to translate the DMA address -+ * @cpu: base address for CPU's view of memory -+ * @bus: base address for BUS's view of memory -+ * @size: size of the address space -+ * @return 0 if ok, negative on error -+ */ -+int dev_get_dma_range(const struct udevice *dev, phys_addr_t *cpu, -+ dma_addr_t *bus, u64 *size); -+ - /** - * dev_read_alias_highest_id - Get highest alias id for the given stem - * @stem: Alias stem to be examined -@@ -1004,6 +1019,12 @@ static inline u64 dev_translate_dma_address(const struct udevice *dev, - return ofnode_translate_dma_address(dev_ofnode(dev), in_addr); - } - -+static inline int dev_get_dma_range(const struct udevice *dev, phys_addr_t *cpu, -+ dma_addr_t *bus, u64 *size) -+{ -+ return ofnode_get_dma_range(dev_ofnode(dev), cpu, bus, size); -+} -+ - static inline int dev_read_alias_highest_id(const char *stem) - { - if (!CONFIG_IS_ENABLED(OF_LIBFDT)) -diff --git a/include/fdt_support.h b/include/fdt_support.h -index dbbac0fb6a..46eb1dbbb2 100644 ---- a/include/fdt_support.h -+++ b/include/fdt_support.h -@@ -260,6 +260,20 @@ u64 fdt_translate_address(const void *blob, int node_offset, - u64 fdt_translate_dma_address(const void *blob, int node_offset, - const __be32 *in_addr); - -+/** -+ * Get DMA ranges for a specifc node, this is useful to perform bus->cpu and -+ * cpu->bus address translations -+ * -+ * @param blob Pointer to device tree blob -+ * @param node_offset Node DT offset -+ * @param cpu Pointer to variable storing the range's cpu address -+ * @param bus Pointer to variable storing the range's bus address -+ * @param size Pointer to variable storing the range's size -+ * @return translated DMA address or OF_BAD_ADDR on error -+ */ -+int fdt_get_dma_range(const void *blob, int node_offset, phys_addr_t *cpu, -+ dma_addr_t *bus, u64 *size); -+ - int fdt_node_offset_by_compat_reg(void *blob, const char *compat, - phys_addr_t compat_off); - int fdt_alloc_phandle(void *blob); --- -2.29.2 - -From ab6897014ee799d5858911aa85d97ded1620f746 Mon Sep 17 00:00:00 2001 -From: Nicolas Saenz Julienne -Date: Wed, 23 Dec 2020 19:55:31 +0100 -Subject: [PATCH 05/13] dm: test: Add test case for dev_get_dma_ranges() - -Introduce some new nodes in sandbox's test device-tree and dm tests in -order to validate dev_get_dma_range(). - -Signed-off-by: Nicolas Saenz Julienne -Reviewed-by: Simon Glass ---- - arch/sandbox/dts/test.dts | 17 ++++++++++++++ - test/dm/Makefile | 1 + - test/dm/read.c | 49 +++++++++++++++++++++++++++++++++++++++ - 3 files changed, 67 insertions(+) - create mode 100644 test/dm/read.c - -diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts -index f3b766271d..3a3b51f83b 100644 ---- a/arch/sandbox/dts/test.dts -+++ b/arch/sandbox/dts/test.dts -@@ -292,6 +292,23 @@ - test5-gpios = <&gpio_a 19>; - }; - -+ mmio-bus@0 { -+ #address-cells = <1>; -+ #size-cells = <1>; -+ compatible = "denx,u-boot-test-bus"; -+ dma-ranges = <0x10000000 0x00000000 0x00040000>; -+ -+ subnode@0 { -+ compatible = "denx,u-boot-fdt-test"; -+ }; -+ }; -+ -+ mmio-bus@1 { -+ #address-cells = <1>; -+ #size-cells = <1>; -+ compatible = "denx,u-boot-test-bus"; -+ }; -+ - acpi_test1: acpi-test { - compatible = "denx,u-boot-acpi-test"; - acpi-ssdt-test-data = "ab"; -diff --git a/test/dm/Makefile b/test/dm/Makefile -index 46e076ed09..5c52d8b6ea 100644 ---- a/test/dm/Makefile -+++ b/test/dm/Makefile -@@ -15,6 +15,7 @@ obj-$(CONFIG_UT_DM) += test-fdt.o - obj-$(CONFIG_UT_DM) += test-uclass.o - - obj-$(CONFIG_UT_DM) += core.o -+obj-$(CONFIG_UT_DM) += read.o - ifneq ($(CONFIG_SANDBOX),) - obj-$(CONFIG_ACPIGEN) += acpi.o - obj-$(CONFIG_ACPIGEN) += acpigen.o -diff --git a/test/dm/read.c b/test/dm/read.c -new file mode 100644 -index 0000000000..7768aa2968 ---- /dev/null -+++ b/test/dm/read.c -@@ -0,0 +1,49 @@ -+// SPDX-License-Identifier: GPL-2.0+ -+/* -+ * Copyright (c) 2020 Nicolas Saenz Julienne -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+static int dm_test_dma_ranges(struct unit_test_state *uts) -+{ -+ struct udevice *dev; -+ phys_addr_t cpu; -+ dma_addr_t bus; -+ ofnode node; -+ u64 size; -+ -+ /* dma-ranges are on the device's node */ -+ node = ofnode_path("/mmio-bus@0"); -+ ut_assert(ofnode_valid(node)); -+ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); -+ ut_assertok(dev_get_dma_range(dev, &cpu, &bus, &size)); -+ ut_asserteq_64(0x40000, size); -+ ut_asserteq_64(0x0, cpu); -+ ut_asserteq_64(0x10000000, bus); -+ -+ /* dma-ranges are on the bus' node */ -+ node = ofnode_path("/mmio-bus@0/subnode@0"); -+ ut_assert(ofnode_valid(node)); -+ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_FDT, node, &dev)); -+ ut_assertok(dev_get_dma_range(dev, &cpu, &bus, &size)); -+ ut_asserteq_64(0x40000, size); -+ ut_asserteq_64(0x0, cpu); -+ ut_asserteq_64(0x10000000, bus); -+ -+ /* No dma-ranges available */ -+ node = ofnode_path("/mmio-bus@1"); -+ ut_assert(ofnode_valid(node)); -+ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); -+ ut_asserteq(-ENOENT, dev_get_dma_range(dev, &cpu, &bus, &size)); -+ -+ return 0; -+} -+DM_TEST(dm_test_dma_ranges, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); --- -2.29.2 - -From 1ec61488a9757fbe6a92af3a7595a3f3b63fa298 Mon Sep 17 00:00:00 2001 -From: Nicolas Saenz Julienne -Date: Wed, 23 Dec 2020 19:55:32 +0100 -Subject: [PATCH 06/13] dm: Introduce DMA constraints into the core device - model - -Calculating the DMA offset between a bus address space and CPU's every -time we call phys_to_bus() and bus_to_phys() isn't ideal performance -wise, as it implies traversing the device tree from the device's node up -to the root. Since this information is static and available before the -device's initialization, parse it before the probe call an provide the -DMA offset in 'struct udevice' for the address translation code to use -it. - -Signed-off-by: Nicolas Saenz Julienne -Reviewed-by: Simon Glass ---- - drivers/core/Kconfig | 10 ++++++++++ - drivers/core/device.c | 41 +++++++++++++++++++++++++++++++++++++++++ - include/dm/device.h | 13 +++++++++++++ - 3 files changed, 64 insertions(+) - -diff --git a/drivers/core/Kconfig b/drivers/core/Kconfig -index ffae6f9795..295cf2dd00 100644 ---- a/drivers/core/Kconfig -+++ b/drivers/core/Kconfig -@@ -113,6 +113,16 @@ config SPL_DM_SEQ_ALIAS - numbered devices (e.g. serial0 = &serial0). This feature can be - disabled if it is not required, to save code space in SPL. - -+config DM_DMA -+ bool "Support per-device DMA constraints" -+ depends on DM -+ default n -+ help -+ Enable this to extract per-device DMA constraints, only supported on -+ device-tree systems for now. This is needed in order translate -+ addresses on systems where different buses have different views of -+ the physical address space. -+ - config REGMAP - bool "Support register maps" - depends on DM -diff --git a/drivers/core/device.c b/drivers/core/device.c -index 4b3dcb3b37..047032a1dd 100644 ---- a/drivers/core/device.c -+++ b/drivers/core/device.c -@@ -421,6 +421,43 @@ fail: - return ret; - } - -+/** -+ * device_get_dma_constraints() - Populate device's DMA constraints -+ * -+ * Gets a device's DMA constraints from firmware. This information is later -+ * used by drivers to translate physcal addresses to the device's bus address -+ * space. For now only device-tree is supported. -+ * -+ * @dev: Pointer to target device -+ * Return: 0 if OK or if no DMA constraints were found, error otherwise -+ */ -+static int device_get_dma_constraints(struct udevice *dev) -+{ -+ struct udevice *parent = dev->parent; -+ phys_addr_t cpu = 0; -+ dma_addr_t bus = 0; -+ u64 size = 0; -+ int ret; -+ -+ if (!CONFIG_IS_ENABLED(DM_DMA) || !parent || !dev_of_valid(parent)) -+ return 0; -+ -+ /* -+ * We start parsing for dma-ranges from the device's bus node. This is -+ * specially important on nested buses. -+ */ -+ ret = dev_get_dma_range(parent, &cpu, &bus, &size); -+ /* Don't return an error if no 'dma-ranges' were found */ -+ if (ret && ret != -ENOENT) { -+ dm_warn("%s: failed to get DMA range, %d\n", dev->name, ret); -+ return ret; -+ } -+ -+ dev_set_dma_offset(dev, cpu - bus); -+ -+ return 0; -+} -+ - int device_probe(struct udevice *dev) - { - const struct driver *drv; -@@ -482,6 +519,10 @@ int device_probe(struct udevice *dev) - goto fail; - } - -+ ret = device_get_dma_constraints(dev); -+ if (ret) -+ goto fail; -+ - ret = uclass_pre_probe_device(dev); - if (ret) - goto fail; -diff --git a/include/dm/device.h b/include/dm/device.h -index 5bef484247..b27889af01 100644 ---- a/include/dm/device.h -+++ b/include/dm/device.h -@@ -138,6 +138,8 @@ enum { - * When CONFIG_DEVRES is enabled, devm_kmalloc() and friends will - * add to this list. Memory so-allocated will be freed - * automatically when the device is removed / unbound -+ * @dma_offset: Offset between the physical address space (CPU's) and the -+ * device's bus address space - */ - struct udevice { - const struct driver *driver; -@@ -161,6 +163,9 @@ struct udevice { - #ifdef CONFIG_DEVRES - struct list_head devres_head; - #endif -+#if CONFIG_IS_ENABLED(DM_DMA) -+ ulong dma_offset; -+#endif - }; - - /* Maximum sequence number supported */ -@@ -172,6 +177,14 @@ struct udevice { - /* Returns non-zero if the device is active (probed and not removed) */ - #define device_active(dev) ((dev)->flags & DM_FLAG_ACTIVATED) - -+#if CONFIG_IS_ENABLED(DM_DMA) -+#define dev_set_dma_offset(_dev, _offset) _dev->dma_offset = _offset -+#define dev_get_dma_offset(_dev) _dev->dma_offset -+#else -+#define dev_set_dma_offset(_dev, _offset) -+#define dev_get_dma_offset(_dev) 0 -+#endif -+ - static inline int dev_of_offset(const struct udevice *dev) - { - return ofnode_to_offset(dev->node); --- -2.29.2 - -From 78faf21e47d29666ff36d853bbf3bb20508fafce Mon Sep 17 00:00:00 2001 -From: Nicolas Saenz Julienne -Date: Wed, 23 Dec 2020 19:55:33 +0100 -Subject: [PATCH 07/13] dm: test: Add test case for dev->dma_offset - -Add test to validate dev->dma_offset is properly set on devices. - -Signed-off-by: Nicolas Saenz Julienne -Reviewed-by: Simon Glass ---- - arch/sandbox/dts/test.dts | 4 ++++ - configs/sandbox64_defconfig | 1 + - configs/sandbox_defconfig | 1 + - configs/sandbox_flattree_defconfig | 1 + - configs/sandbox_spl_defconfig | 1 + - test/dm/core.c | 30 ++++++++++++++++++++++++++++++ - 6 files changed, 38 insertions(+) - -diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts -index 3a3b51f83b..78f0100282 100644 ---- a/arch/sandbox/dts/test.dts -+++ b/arch/sandbox/dts/test.dts -@@ -307,6 +307,10 @@ - #address-cells = <1>; - #size-cells = <1>; - compatible = "denx,u-boot-test-bus"; -+ -+ subnode@0 { -+ compatible = "denx,u-boot-fdt-test"; -+ }; - }; - - acpi_test1: acpi-test { -diff --git a/configs/sandbox64_defconfig b/configs/sandbox64_defconfig -index 5fbbfd7236..2c189a8a00 100644 ---- a/configs/sandbox64_defconfig -+++ b/configs/sandbox64_defconfig -@@ -94,6 +94,7 @@ CONFIG_ENV_EXT4_DEVICE_AND_PART="0:0" - CONFIG_BOOTP_SEND_HOSTNAME=y - CONFIG_NETCONSOLE=y - CONFIG_IP_DEFRAG=y -+CONFIG_DM_DMA=y - CONFIG_REGMAP=y - CONFIG_SYSCON=y - CONFIG_DEVRES=y -diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig -index f1ec701a9f..ac97c16cef 100644 ---- a/configs/sandbox_defconfig -+++ b/configs/sandbox_defconfig -@@ -108,6 +108,7 @@ CONFIG_ENV_EXT4_DEVICE_AND_PART="0:0" - CONFIG_BOOTP_SEND_HOSTNAME=y - CONFIG_NETCONSOLE=y - CONFIG_IP_DEFRAG=y -+CONFIG_DM_DMA=y - CONFIG_REGMAP=y - CONFIG_SYSCON=y - CONFIG_DEVRES=y -diff --git a/configs/sandbox_flattree_defconfig b/configs/sandbox_flattree_defconfig -index edca7f1808..f5923bf713 100644 ---- a/configs/sandbox_flattree_defconfig -+++ b/configs/sandbox_flattree_defconfig -@@ -75,6 +75,7 @@ CONFIG_ENV_EXT4_DEVICE_AND_PART="0:0" - CONFIG_BOOTP_SEND_HOSTNAME=y - CONFIG_NETCONSOLE=y - CONFIG_IP_DEFRAG=y -+CONFIG_DM_DMA=y - CONFIG_REGMAP=y - CONFIG_SYSCON=y - CONFIG_DEVRES=y -diff --git a/configs/sandbox_spl_defconfig b/configs/sandbox_spl_defconfig -index 479f0226e3..0a4815770c 100644 ---- a/configs/sandbox_spl_defconfig -+++ b/configs/sandbox_spl_defconfig -@@ -94,6 +94,7 @@ CONFIG_BOOTP_SEND_HOSTNAME=y - CONFIG_NETCONSOLE=y - CONFIG_IP_DEFRAG=y - CONFIG_SPL_DM=y -+CONFIG_DM_DMA=y - CONFIG_REGMAP=y - CONFIG_SPL_REGMAP=y - CONFIG_SYSCON=y -diff --git a/test/dm/core.c b/test/dm/core.c -index 6f380a574c..8ca49d09ee 100644 ---- a/test/dm/core.c -+++ b/test/dm/core.c -@@ -1066,3 +1066,33 @@ static int dm_test_inactive_child(struct unit_test_state *uts) - return 0; - } - DM_TEST(dm_test_inactive_child, UT_TESTF_SCAN_PDATA); -+ -+static int dm_test_dma_offset(struct unit_test_state *uts) -+{ -+ struct udevice *dev; -+ ofnode node; -+ -+ /* Make sure the bus's dma-ranges aren't taken into account here */ -+ node = ofnode_path("/mmio-bus@0"); -+ ut_assert(ofnode_valid(node)); -+ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); -+ ut_asserteq_64(0, dev->dma_offset); -+ -+ /* Device behind a bus with dma-ranges */ -+ node = ofnode_path("/mmio-bus@0/subnode@0"); -+ ut_assert(ofnode_valid(node)); -+ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_FDT, node, &dev)); -+ ut_asserteq_64(-0x10000000ULL, dev->dma_offset); -+ -+ /* This one has no dma-ranges */ -+ node = ofnode_path("/mmio-bus@1"); -+ ut_assert(ofnode_valid(node)); -+ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); -+ node = ofnode_path("/mmio-bus@1/subnode@0"); -+ ut_assert(ofnode_valid(node)); -+ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_FDT, node, &dev)); -+ ut_asserteq_64(0, dev->dma_offset); -+ -+ return 0; -+} -+DM_TEST(dm_test_dma_offset, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); --- -2.29.2 - -From f77b6417252d77112b63202f3b63b778bc8de117 Mon Sep 17 00:00:00 2001 -From: Nicolas Saenz Julienne -Date: Wed, 23 Dec 2020 19:55:34 +0100 -Subject: [PATCH 08/13] dm: Introduce dev_phys_to_bus()/dev_bus_to_phys() - -These functions, instead of relying on hard-coded platform-specific -address translations, make use of the DMA constraints provided by the DM -core. This allows for per-device translations. - -We can't yet get rid of the legacy phys_to_bus()/bus_to_phys() -implementations as some of its users are not integrated into the -device model. - -Signed-off-by: Nicolas Saenz Julienne -Reviewed-by: Simon Glass -Reviewed-by: Stefan Roese ---- - include/phys2bus.h | 17 +++++++++++++++++ - 1 file changed, 17 insertions(+) - -diff --git a/include/phys2bus.h b/include/phys2bus.h -index dc9b8e5a25..866b8b51a8 100644 ---- a/include/phys2bus.h -+++ b/include/phys2bus.h -@@ -21,4 +21,21 @@ static inline unsigned long bus_to_phys(unsigned long bus) - } - #endif - -+#if CONFIG_IS_ENABLED(DM) -+#include -+ -+static inline dma_addr_t dev_phys_to_bus(struct udevice *dev, phys_addr_t phys) -+{ -+ return phys - dev_get_dma_offset(dev); -+} -+ -+static inline phys_addr_t dev_bus_to_phys(struct udevice *dev, dma_addr_t bus) -+{ -+ return bus + dev_get_dma_offset(dev); -+} -+#else -+#define dev_phys_to_bus(_, _addr) _addr -+#define dev_bus_to_phys(_, _addr) _addr -+#endif -+ - #endif --- -2.29.2 - -From bf9d354942113252ef74c0a6394d71fb52d4325b Mon Sep 17 00:00:00 2001 -From: Nicolas Saenz Julienne -Date: Wed, 23 Dec 2020 19:55:35 +0100 -Subject: [PATCH 09/13] dm: test: Add test case for - dev_phys_to_bus()/dev_bus_to_phys() - -By reusing DT nodes already available in sandbox's test DT introduce a -test to validate dev_phys_to_bus()/dev_bus_to_phys(). - -Signed-off-by: Nicolas Saenz Julienne -Reviewed-by: Simon Glass ---- - test/dm/Makefile | 1 + - test/dm/phys2bus.c | 37 +++++++++++++++++++++++++++++++++++++ - 2 files changed, 38 insertions(+) - create mode 100644 test/dm/phys2bus.c - -diff --git a/test/dm/Makefile b/test/dm/Makefile -index 5c52d8b6ea..ac86abaa88 100644 ---- a/test/dm/Makefile -+++ b/test/dm/Makefile -@@ -16,6 +16,7 @@ obj-$(CONFIG_UT_DM) += test-uclass.o - - obj-$(CONFIG_UT_DM) += core.o - obj-$(CONFIG_UT_DM) += read.o -+obj-$(CONFIG_UT_DM) += phys2bus.o - ifneq ($(CONFIG_SANDBOX),) - obj-$(CONFIG_ACPIGEN) += acpi.o - obj-$(CONFIG_ACPIGEN) += acpigen.o -diff --git a/test/dm/phys2bus.c b/test/dm/phys2bus.c -new file mode 100644 -index 0000000000..342f2fa8eb ---- /dev/null -+++ b/test/dm/phys2bus.c -@@ -0,0 +1,37 @@ -+// SPDX-License-Identifier: GPL-2.0+ -+/* -+ * Copyright (c) 2020 Nicolas Saenz Julienne -+ */ -+ -+#include -+#include -+#include +diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c +index 0628934312..62e4f53b8b 100644 +--- a/drivers/mmc/sdhci.c ++++ b/drivers/mmc/sdhci.c +@@ -14,12 +14,12 @@ + #include + #include + #include +#include -+#include -+#include -+#include -+#include -+#include -+#include + #include + #include + #include + #include + #include +-#include + + static void sdhci_reset(struct sdhci_host *host, u8 mask) + { +@@ -73,6 +73,7 @@ static void sdhci_transfer_pio(struct sdhci_host *host, struct mmc_data *data) + static void sdhci_prepare_dma(struct sdhci_host *host, struct mmc_data *data, + int *is_aligned, int trans_bytes) + { ++ dma_addr_t dma_addr; + unsigned char ctrl; + void *buf; + +@@ -103,8 +104,8 @@ static void sdhci_prepare_dma(struct sdhci_host *host, struct mmc_data *data, + mmc_get_dma_dir(data)); + + if (host->flags & USE_SDMA) { +- sdhci_writel(host, phys_to_bus((ulong)host->start_addr), +- SDHCI_DMA_ADDRESS); ++ dma_addr = dev_phys_to_bus(mmc_to_dev(host->mmc), host->start_addr); ++ sdhci_writel(host, dma_addr, SDHCI_DMA_ADDRESS); + } + #if CONFIG_IS_ENABLED(MMC_SDHCI_ADMA) + else if (host->flags & (USE_ADMA | USE_ADMA64)) { +@@ -162,8 +163,9 @@ static int sdhci_transfer_data(struct sdhci_host *host, struct mmc_data *data) + start_addr &= + ~(SDHCI_DEFAULT_BOUNDARY_SIZE - 1); + start_addr += SDHCI_DEFAULT_BOUNDARY_SIZE; +- sdhci_writel(host, phys_to_bus((ulong)start_addr), +- SDHCI_DMA_ADDRESS); ++ start_addr = dev_phys_to_bus(mmc_to_dev(host->mmc), ++ start_addr); ++ sdhci_writel(host, start_addr, SDHCI_DMA_ADDRESS); + } + } + if (timeout-- > 0) +diff --git a/drivers/pci/pcie_brcmstb.c b/drivers/pci/pcie_brcmstb.c +index dd2a4ef629..bd645d7896 100644 +--- a/drivers/pci/pcie_brcmstb.c ++++ b/drivers/pci/pcie_brcmstb.c +@@ -432,6 +432,7 @@ static int brcm_pcie_probe(struct udevice *dev) + struct pci_controller *hose = dev_get_uclass_priv(ctlr); + struct brcm_pcie *pcie = dev_get_priv(dev); + void __iomem *base = pcie->base; ++ struct pci_region region; + bool ssc_good = false; + int num_out_wins = 0; + u64 rc_bar2_offset, rc_bar2_size; +@@ -468,13 +469,10 @@ static int brcm_pcie_probe(struct udevice *dev) + MISC_CTRL_SCB_ACCESS_EN_MASK | + MISC_CTRL_CFG_READ_UR_MODE_MASK | + MISC_CTRL_MAX_BURST_SIZE_128); +- /* +- * TODO: When support for other SoCs than BCM2711 is added we may +- * need to use the base address and size(s) provided in the dma-ranges +- * property. +- */ +- rc_bar2_offset = 0; +- rc_bar2_size = 0xc0000000; + -+static int dm_test_phys_to_bus(struct unit_test_state *uts) -+{ -+ struct udevice *dev; -+ ofnode node; -+ -+ node = ofnode_path("/mmio-bus@0"); -+ ut_assert(ofnode_valid(node)); -+ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); -+ /* In this case it should be transparent, no dma-ranges in parent bus */ -+ ut_asserteq_addr((void*)0xfffffULL, (void*)dev_phys_to_bus(dev, 0xfffff)); -+ ut_asserteq_addr((void*)0xfffffULL, (void*)(ulong)dev_bus_to_phys(dev, 0xfffff)); -+ -+ node = ofnode_path("/mmio-bus@0/subnode@0"); -+ ut_assert(ofnode_valid(node)); -+ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_FDT, node, &dev)); -+ ut_asserteq_addr((void*)0x100fffffULL, (void*)dev_phys_to_bus(dev, 0xfffff)); -+ ut_asserteq_addr((void*)0xfffffULL, (void*)(ulong)dev_bus_to_phys(dev, 0x100fffff)); -+ -+ return 0; -+} -+DM_TEST(dm_test_phys_to_bus, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); --- -2.29.2 - -From 8abe749ff354a369f748c06aa70711bcdea9e61c Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Mon, 28 Dec 2020 21:38:37 +0000 -Subject: [PATCH 10/13] xhci: translate virtual addresses into the bus's - address space - -So far we've been content with passing physical addresses when -configuring memory addresses into XHCI controllers, but not all -platforms have buses with transparent mappings. Specifically the -Raspberry Pi 4 might introduce an offset to memory accesses incoming -from its PCIe port. - -Introduce xhci_virt_to_bus() and xhci_bus_to_virt() to cater with these -limitations, and make sure we don't break non DM users. - -Signed-off-by: Nicolas Saenz Julienne -Reviewed-by: Simon Glass -Reviewed-by: Stefan Roese -Signed-off-by: Peter Robinson ---- - drivers/usb/host/xhci-mem.c | 45 +++++++++++++++++++----------------- - drivers/usb/host/xhci-ring.c | 13 +++++++---- - drivers/usb/host/xhci.c | 4 ++-- - include/usb/xhci.h | 20 +++++++++++++++- - 4 files changed, 53 insertions(+), 29 deletions(-) - ++ pci_get_dma_regions(dev, ®ion, 0); ++ rc_bar2_offset = region.bus_start - region.phys_start; ++ rc_bar2_size = 1ULL << fls64(region.size - 1); + + tmp = lower_32_bits(rc_bar2_offset); + u32p_replace_bits(&tmp, brcm_pcie_encode_ibar_size(rc_bar2_size), diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c index b002d6f166..83147d51b5 100644 --- a/drivers/usb/host/xhci-mem.c @@ -1258,6 +791,218 @@ index 7080f8fabe..d27ac01c83 100644 ep_ctx[ep_index]->deq = cpu_to_le64(trb_64 | virt_dev->eps[ep_index].ring->cycle_state); +diff --git a/drivers/video/bcm2835.c b/drivers/video/bcm2835.c +index 9326999cd3..c2962932c9 100644 +--- a/drivers/video/bcm2835.c ++++ b/drivers/video/bcm2835.c +@@ -52,6 +52,7 @@ static int bcm2835_video_probe(struct udevice *dev) + + static const struct udevice_id bcm2835_video_ids[] = { + { .compatible = "brcm,bcm2835-hdmi" }, ++ { .compatible = "brcm,bcm2711-hdmi0" }, + { .compatible = "brcm,bcm2708-fb" }, + { } + }; +diff --git a/include/dm/device.h b/include/dm/device.h +index e665558444..b614ff1a69 100644 +--- a/include/dm/device.h ++++ b/include/dm/device.h +@@ -148,6 +148,8 @@ enum { + * When CONFIG_DEVRES is enabled, devm_kmalloc() and friends will + * add to this list. Memory so-allocated will be freed + * automatically when the device is removed / unbound ++ * @dma_offset: Offset between the physical address space (CPU's) and the ++ * device's bus address space + */ + struct udevice { + const struct driver *driver; +@@ -172,6 +174,9 @@ struct udevice { + #ifdef CONFIG_DEVRES + struct list_head devres_head; + #endif ++#if CONFIG_IS_ENABLED(DM_DMA) ++ ulong dma_offset; ++#endif + }; + + /* Maximum sequence number supported */ +@@ -213,6 +218,14 @@ static inline ofnode dev_ofnode(const struct udevice *dev) + /* Returns non-zero if the device is active (probed and not removed) */ + #define device_active(dev) (dev_get_flags(dev) & DM_FLAG_ACTIVATED) + ++#if CONFIG_IS_ENABLED(DM_DMA) ++#define dev_set_dma_offset(_dev, _offset) _dev->dma_offset = _offset ++#define dev_get_dma_offset(_dev) _dev->dma_offset ++#else ++#define dev_set_dma_offset(_dev, _offset) ++#define dev_get_dma_offset(_dev) 0 ++#endif ++ + static inline int dev_of_offset(const struct udevice *dev) + { + #if !CONFIG_IS_ENABLED(OF_PLATDATA) +diff --git a/include/dm/of_addr.h b/include/dm/of_addr.h +index 3fa1ffce81..ee21d5cf4f 100644 +--- a/include/dm/of_addr.h ++++ b/include/dm/of_addr.h +@@ -44,6 +44,23 @@ u64 of_translate_address(const struct device_node *no, const __be32 *in_addr); + */ + u64 of_translate_dma_address(const struct device_node *no, const __be32 *in_addr); + ++ ++/** ++ * of_get_dma_range() - get dma-ranges for a specific DT node ++ * ++ * Get DMA ranges for a specifc node, this is useful to perform bus->cpu and ++ * cpu->bus address translations ++ * ++ * @param blob Pointer to device tree blob ++ * @param node_offset Node DT offset ++ * @param cpu Pointer to variable storing the range's cpu address ++ * @param bus Pointer to variable storing the range's bus address ++ * @param size Pointer to variable storing the range's size ++ * @return translated DMA address or OF_BAD_ADDR on error ++ */ ++int of_get_dma_range(const struct device_node *dev, phys_addr_t *cpu, ++ dma_addr_t *bus, u64 *size); ++ + /** + * of_get_address() - obtain an address from a node + * +diff --git a/include/dm/ofnode.h b/include/dm/ofnode.h +index 5b088650d3..c4680fbbaa 100644 +--- a/include/dm/ofnode.h ++++ b/include/dm/ofnode.h +@@ -996,6 +996,22 @@ u64 ofnode_translate_address(ofnode node, const fdt32_t *in_addr); + */ + u64 ofnode_translate_dma_address(ofnode node, const fdt32_t *in_addr); + ++/** ++ * ofnode_get_dma_range() - get dma-ranges for a specific DT node ++ * ++ * Get DMA ranges for a specifc node, this is useful to perform bus->cpu and ++ * cpu->bus address translations ++ * ++ * @param blob Pointer to device tree blob ++ * @param node_offset Node DT offset ++ * @param cpu Pointer to variable storing the range's cpu address ++ * @param bus Pointer to variable storing the range's bus address ++ * @param size Pointer to variable storing the range's size ++ * @return translated DMA address or OF_BAD_ADDR on error ++ */ ++int ofnode_get_dma_range(ofnode node, phys_addr_t *cpu, dma_addr_t *bus, ++ u64 *size); ++ + /** + * ofnode_device_is_compatible() - check if the node is compatible with compat + * +diff --git a/include/dm/read.h b/include/dm/read.h +index 03ba98232a..da3763d245 100644 +--- a/include/dm/read.h ++++ b/include/dm/read.h +@@ -647,6 +647,21 @@ u64 dev_translate_address(const struct udevice *dev, const fdt32_t *in_addr); + u64 dev_translate_dma_address(const struct udevice *dev, + const fdt32_t *in_addr); + ++/** ++ * dev_get_dma_range() - Get a device's DMA constraints ++ * ++ * Provide the address bases and size of the linear mapping between the CPU and ++ * a device's BUS address space. ++ * ++ * @dev: device giving the context in which to translate the DMA address ++ * @cpu: base address for CPU's view of memory ++ * @bus: base address for BUS's view of memory ++ * @size: size of the address space ++ * @return 0 if ok, negative on error ++ */ ++int dev_get_dma_range(const struct udevice *dev, phys_addr_t *cpu, ++ dma_addr_t *bus, u64 *size); ++ + /** + * dev_read_alias_highest_id - Get highest alias id for the given stem + * @stem: Alias stem to be examined +@@ -1004,6 +1019,12 @@ static inline u64 dev_translate_dma_address(const struct udevice *dev, + return ofnode_translate_dma_address(dev_ofnode(dev), in_addr); + } + ++static inline int dev_get_dma_range(const struct udevice *dev, phys_addr_t *cpu, ++ dma_addr_t *bus, u64 *size) ++{ ++ return ofnode_get_dma_range(dev_ofnode(dev), cpu, bus, size); ++} ++ + static inline int dev_read_alias_highest_id(const char *stem) + { + if (!CONFIG_IS_ENABLED(OF_LIBFDT) || !gd->fdt_blob) +diff --git a/include/fdt_support.h b/include/fdt_support.h +index dbbac0fb6a..46eb1dbbb2 100644 +--- a/include/fdt_support.h ++++ b/include/fdt_support.h +@@ -260,6 +260,20 @@ u64 fdt_translate_address(const void *blob, int node_offset, + u64 fdt_translate_dma_address(const void *blob, int node_offset, + const __be32 *in_addr); + ++/** ++ * Get DMA ranges for a specifc node, this is useful to perform bus->cpu and ++ * cpu->bus address translations ++ * ++ * @param blob Pointer to device tree blob ++ * @param node_offset Node DT offset ++ * @param cpu Pointer to variable storing the range's cpu address ++ * @param bus Pointer to variable storing the range's bus address ++ * @param size Pointer to variable storing the range's size ++ * @return translated DMA address or OF_BAD_ADDR on error ++ */ ++int fdt_get_dma_range(const void *blob, int node_offset, phys_addr_t *cpu, ++ dma_addr_t *bus, u64 *size); ++ + int fdt_node_offset_by_compat_reg(void *blob, const char *compat, + phys_addr_t compat_off); + int fdt_alloc_phandle(void *blob); +diff --git a/include/mmc.h b/include/mmc.h +index 1d377e0281..c12c7a0b5c 100644 +--- a/include/mmc.h ++++ b/include/mmc.h +@@ -736,6 +736,12 @@ struct mmc { + u8 hs400_tuning; + }; + ++#if CONFIG_IS_ENABLED(DM_MMC) ++#define mmc_to_dev(_mmc) _mmc->dev ++#else ++#define mmc_to_dev(_mmc) NULL ++#endif ++ + struct mmc_hwpart_conf { + struct { + uint enh_start; /* in 512-byte sectors */ +diff --git a/include/phys2bus.h b/include/phys2bus.h +index dc9b8e5a25..866b8b51a8 100644 +--- a/include/phys2bus.h ++++ b/include/phys2bus.h +@@ -21,4 +21,21 @@ static inline unsigned long bus_to_phys(unsigned long bus) + } + #endif + ++#if CONFIG_IS_ENABLED(DM) ++#include ++ ++static inline dma_addr_t dev_phys_to_bus(struct udevice *dev, phys_addr_t phys) ++{ ++ return phys - dev_get_dma_offset(dev); ++} ++ ++static inline phys_addr_t dev_bus_to_phys(struct udevice *dev, dma_addr_t bus) ++{ ++ return bus + dev_get_dma_offset(dev); ++} ++#else ++#define dev_phys_to_bus(_, _addr) _addr ++#define dev_bus_to_phys(_, _addr) _addr ++#endif ++ + #endif diff --git a/include/usb/xhci.h b/include/usb/xhci.h index e1d382369a..8d95e213b0 100644 --- a/include/usb/xhci.h @@ -1308,176 +1053,155 @@ index e1d382369a..8d95e213b0 100644 +} + #endif /* HOST_XHCI_H_ */ --- -2.29.2 - -From aa7e82f97e2c74430a3a6979b307cda87fbb4624 Mon Sep 17 00:00:00 2001 -From: Nicolas Saenz Julienne -Date: Wed, 23 Dec 2020 19:55:37 +0100 -Subject: [PATCH 11/13] mmc: Introduce mmc_phys_to_bus()/mmc_bus_to_phys() - -This will allow us to use DM variants of phys_to_bus()/bus_to_phys() -when relevant. - -Signed-off-by: Nicolas Saenz Julienne -Reviewed-by: Simon Glass ---- - drivers/mmc/sdhci.c | 12 +++++++----- - include/mmc.h | 6 ++++++ - 2 files changed, 13 insertions(+), 5 deletions(-) - -diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c -index 0628934312..62e4f53b8b 100644 ---- a/drivers/mmc/sdhci.c -+++ b/drivers/mmc/sdhci.c -@@ -14,12 +14,12 @@ - #include - #include - #include -+#include - #include - #include - #include - #include - #include --#include +diff --git a/test/dm/Makefile b/test/dm/Makefile +index e70e50f402..6275ec56ea 100644 +--- a/test/dm/Makefile ++++ b/test/dm/Makefile +@@ -15,6 +15,8 @@ obj-$(CONFIG_UT_DM) += test-fdt.o + obj-$(CONFIG_UT_DM) += test-uclass.o - static void sdhci_reset(struct sdhci_host *host, u8 mask) - { -@@ -73,6 +73,7 @@ static void sdhci_transfer_pio(struct sdhci_host *host, struct mmc_data *data) - static void sdhci_prepare_dma(struct sdhci_host *host, struct mmc_data *data, - int *is_aligned, int trans_bytes) - { -+ dma_addr_t dma_addr; - unsigned char ctrl; - void *buf; - -@@ -103,8 +104,8 @@ static void sdhci_prepare_dma(struct sdhci_host *host, struct mmc_data *data, - mmc_get_dma_dir(data)); - - if (host->flags & USE_SDMA) { -- sdhci_writel(host, phys_to_bus((ulong)host->start_addr), -- SDHCI_DMA_ADDRESS); -+ dma_addr = dev_phys_to_bus(mmc_to_dev(host->mmc), host->start_addr); -+ sdhci_writel(host, dma_addr, SDHCI_DMA_ADDRESS); - } - #if CONFIG_IS_ENABLED(MMC_SDHCI_ADMA) - else if (host->flags & (USE_ADMA | USE_ADMA64)) { -@@ -162,8 +163,9 @@ static int sdhci_transfer_data(struct sdhci_host *host, struct mmc_data *data) - start_addr &= - ~(SDHCI_DEFAULT_BOUNDARY_SIZE - 1); - start_addr += SDHCI_DEFAULT_BOUNDARY_SIZE; -- sdhci_writel(host, phys_to_bus((ulong)start_addr), -- SDHCI_DMA_ADDRESS); -+ start_addr = dev_phys_to_bus(mmc_to_dev(host->mmc), -+ start_addr); -+ sdhci_writel(host, start_addr, SDHCI_DMA_ADDRESS); - } - } - if (timeout-- > 0) -diff --git a/include/mmc.h b/include/mmc.h -index 1d377e0281..c12c7a0b5c 100644 ---- a/include/mmc.h -+++ b/include/mmc.h -@@ -736,6 +736,12 @@ struct mmc { - u8 hs400_tuning; - }; - -+#if CONFIG_IS_ENABLED(DM_MMC) -+#define mmc_to_dev(_mmc) _mmc->dev -+#else -+#define mmc_to_dev(_mmc) NULL -+#endif + obj-$(CONFIG_UT_DM) += core.o ++obj-$(CONFIG_UT_DM) += read.o ++obj-$(CONFIG_UT_DM) += phys2bus.o + ifneq ($(CONFIG_SANDBOX),) + obj-$(CONFIG_ACPIGEN) += acpi.o + obj-$(CONFIG_ACPIGEN) += acpigen.o +diff --git a/test/dm/core.c b/test/dm/core.c +index 1f5ca570dc..855449aac2 100644 +--- a/test/dm/core.c ++++ b/test/dm/core.c +@@ -1085,3 +1085,33 @@ static int dm_test_all_have_seq(struct unit_test_state *uts) + return 0; + } + DM_TEST(dm_test_all_have_seq, UT_TESTF_SCAN_PDATA); + - struct mmc_hwpart_conf { - struct { - uint enh_start; /* in 512-byte sectors */ --- -2.29.2 - -From 8b39240ca809ce7ebf34b2eb707ab5d2cc5f4a20 Mon Sep 17 00:00:00 2001 -From: Nicolas Saenz Julienne -Date: Wed, 23 Dec 2020 19:55:38 +0100 -Subject: [PATCH 12/13] configs: rpi4: Enable DM_DMA across all RPi4 - configurations - -The DM_DMA option is needed in order to translate physical address into -bus addresses on a per-device basis. - -Signed-off-by: Nicolas Saenz Julienne -Reviewed-by: Simon Glass ---- - configs/rpi_4_32b_defconfig | 1 + - configs/rpi_4_defconfig | 1 + - configs/rpi_arm64_defconfig | 1 + - 3 files changed, 3 insertions(+) - -diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig -index 5ddd838fd5..0a5d3ff8cd 100644 ---- a/configs/rpi_4_32b_defconfig -+++ b/configs/rpi_4_32b_defconfig -@@ -22,6 +22,7 @@ CONFIG_OF_BOARD=y - CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" - CONFIG_SYS_RELOC_GD_ENV_ADDR=y - CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y -+CONFIG_DM_DMA=y - CONFIG_DFU_MMC=y - CONFIG_DM_KEYBOARD=y - CONFIG_DM_MMC=y -diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig -index 2590d0a696..b61cdc05f1 100644 ---- a/configs/rpi_4_defconfig -+++ b/configs/rpi_4_defconfig -@@ -22,6 +22,7 @@ CONFIG_OF_BOARD=y - CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" - CONFIG_SYS_RELOC_GD_ENV_ADDR=y - CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y -+CONFIG_DM_DMA=y - CONFIG_DFU_MMC=y - CONFIG_DM_KEYBOARD=y - CONFIG_DM_MMC=y -diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig -index 2639219a1a..4125a1feba 100644 ---- a/configs/rpi_arm64_defconfig -+++ b/configs/rpi_arm64_defconfig -@@ -20,6 +20,7 @@ CONFIG_CMD_FS_UUID=y - CONFIG_OF_BOARD=y - CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" - CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y -+CONFIG_DM_DMA=y - CONFIG_DM_KEYBOARD=y - CONFIG_DM_MMC=y - CONFIG_MMC_SDHCI=y --- -2.29.2 - -From d3cde4c05b8da7ef50019b63ac9cc0ecc0630059 Mon Sep 17 00:00:00 2001 -From: Nicolas Saenz Julienne -Date: Wed, 23 Dec 2020 19:55:39 +0100 -Subject: [PATCH 13/13] video: arm: rpi: Add brcm,bcm2711-hdmi0 compatible - -The 'brcm,bcm2711-hdmi0' compatible string is used on RPi4 instead of -'brcm,bcm2835-hdmi' since the IP core was upgraded (now called VC6 -instead of VC4). This has no functional change as far as u-boot driver -is concerned. So simply add the compatible string. - -Signed-off-by: Nicolas Saenz Julienne ---- - drivers/video/bcm2835.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/drivers/video/bcm2835.c b/drivers/video/bcm2835.c -index 0888cb0019..51941c4f53 100644 ---- a/drivers/video/bcm2835.c -+++ b/drivers/video/bcm2835.c -@@ -52,6 +52,7 @@ static int bcm2835_video_probe(struct udevice *dev) - - static const struct udevice_id bcm2835_video_ids[] = { - { .compatible = "brcm,bcm2835-hdmi" }, -+ { .compatible = "brcm,bcm2711-hdmi0" }, - { .compatible = "brcm,bcm2708-fb" }, - { } - }; ++static int dm_test_dma_offset(struct unit_test_state *uts) ++{ ++ struct udevice *dev; ++ ofnode node; ++ ++ /* Make sure the bus's dma-ranges aren't taken into account here */ ++ node = ofnode_path("/mmio-bus@0"); ++ ut_assert(ofnode_valid(node)); ++ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); ++ ut_asserteq_64(0, dev->dma_offset); ++ ++ /* Device behind a bus with dma-ranges */ ++ node = ofnode_path("/mmio-bus@0/subnode@0"); ++ ut_assert(ofnode_valid(node)); ++ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_FDT, node, &dev)); ++ ut_asserteq_64(-0x10000000ULL, dev->dma_offset); ++ ++ /* This one has no dma-ranges */ ++ node = ofnode_path("/mmio-bus@1"); ++ ut_assert(ofnode_valid(node)); ++ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); ++ node = ofnode_path("/mmio-bus@1/subnode@0"); ++ ut_assert(ofnode_valid(node)); ++ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_FDT, node, &dev)); ++ ut_asserteq_64(0, dev->dma_offset); ++ ++ return 0; ++} ++DM_TEST(dm_test_dma_offset, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); +diff --git a/test/dm/phys2bus.c b/test/dm/phys2bus.c +new file mode 100644 +index 0000000000..342f2fa8eb +--- /dev/null ++++ b/test/dm/phys2bus.c +@@ -0,0 +1,37 @@ ++// SPDX-License-Identifier: GPL-2.0+ ++/* ++ * Copyright (c) 2020 Nicolas Saenz Julienne ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++static int dm_test_phys_to_bus(struct unit_test_state *uts) ++{ ++ struct udevice *dev; ++ ofnode node; ++ ++ node = ofnode_path("/mmio-bus@0"); ++ ut_assert(ofnode_valid(node)); ++ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); ++ /* In this case it should be transparent, no dma-ranges in parent bus */ ++ ut_asserteq_addr((void*)0xfffffULL, (void*)dev_phys_to_bus(dev, 0xfffff)); ++ ut_asserteq_addr((void*)0xfffffULL, (void*)(ulong)dev_bus_to_phys(dev, 0xfffff)); ++ ++ node = ofnode_path("/mmio-bus@0/subnode@0"); ++ ut_assert(ofnode_valid(node)); ++ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_FDT, node, &dev)); ++ ut_asserteq_addr((void*)0x100fffffULL, (void*)dev_phys_to_bus(dev, 0xfffff)); ++ ut_asserteq_addr((void*)0xfffffULL, (void*)(ulong)dev_bus_to_phys(dev, 0x100fffff)); ++ ++ return 0; ++} ++DM_TEST(dm_test_phys_to_bus, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); +diff --git a/test/dm/read.c b/test/dm/read.c +new file mode 100644 +index 0000000000..7768aa2968 +--- /dev/null ++++ b/test/dm/read.c +@@ -0,0 +1,49 @@ ++// SPDX-License-Identifier: GPL-2.0+ ++/* ++ * Copyright (c) 2020 Nicolas Saenz Julienne ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++static int dm_test_dma_ranges(struct unit_test_state *uts) ++{ ++ struct udevice *dev; ++ phys_addr_t cpu; ++ dma_addr_t bus; ++ ofnode node; ++ u64 size; ++ ++ /* dma-ranges are on the device's node */ ++ node = ofnode_path("/mmio-bus@0"); ++ ut_assert(ofnode_valid(node)); ++ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); ++ ut_assertok(dev_get_dma_range(dev, &cpu, &bus, &size)); ++ ut_asserteq_64(0x40000, size); ++ ut_asserteq_64(0x0, cpu); ++ ut_asserteq_64(0x10000000, bus); ++ ++ /* dma-ranges are on the bus' node */ ++ node = ofnode_path("/mmio-bus@0/subnode@0"); ++ ut_assert(ofnode_valid(node)); ++ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_FDT, node, &dev)); ++ ut_assertok(dev_get_dma_range(dev, &cpu, &bus, &size)); ++ ut_asserteq_64(0x40000, size); ++ ut_asserteq_64(0x0, cpu); ++ ut_asserteq_64(0x10000000, bus); ++ ++ /* No dma-ranges available */ ++ node = ofnode_path("/mmio-bus@1"); ++ ut_assert(ofnode_valid(node)); ++ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); ++ ut_asserteq(-ENOENT, dev_get_dma_range(dev, &cpu, &bus, &size)); ++ ++ return 0; ++} ++DM_TEST(dm_test_dma_ranges, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); -- 2.29.2 diff --git a/aarch64-boards b/aarch64-boards index c568d46..1d81436 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -2,6 +2,7 @@ a64-olinuxino amarula_a64_relic bananapi_m2_plus_h5 bananapi_m64 +beelink_gs1 dragonboard410c dragonboard820c espresso7420 @@ -33,13 +34,16 @@ nanopi-m4-rk3399 nanopi_neo2 nanopi-neo4-rk3399 nanopi_neo_plus2 +nanopi-r2s-rk3328 odroid-c2 +orangepi_3 orangepi_lite2 orangepi_one_plus orangepi_pc2 orangepi_prime orangepi-rk3399 orangepi_win +orangepi_zero2 orangepi_zero_plus orangepi_zero_plus2 p212 @@ -69,6 +73,7 @@ rpi_3 rpi_4 rpi_arm64 sopine_baseboard +tanix_tx6 teres_i turris_mox vexpress_aemv8a_juno diff --git a/arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch b/arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch deleted file mode 100644 index 3aef1a9..0000000 --- a/arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch +++ /dev/null @@ -1,135 +0,0 @@ -From 5cb3ca7ebd46c1983d0929b5ba027a03c1f5e51e Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Wed, 16 Dec 2020 15:22:34 +0000 -Subject: [PATCH 1/2] arm: dts: rockchip: rk3399: enable rng at the SoC level - -The rng is embedded in the SoC so enable it in the device tree -universally, the use of it can be controlled by enabling/disabling -at the device config level. - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/rk3399-evb-u-boot.dtsi | 4 ---- - arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi | 4 ---- - arch/arm/dts/rk3399-rockpro64-u-boot.dtsi | 4 ---- - arch/arm/dts/rk3399-u-boot.dtsi | 2 +- - 4 files changed, 1 insertion(+), 13 deletions(-) - -diff --git a/arch/arm/dts/rk3399-evb-u-boot.dtsi b/arch/arm/dts/rk3399-evb-u-boot.dtsi -index 8056dc843e..398b205ec2 100644 ---- a/arch/arm/dts/rk3399-evb-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-evb-u-boot.dtsi -@@ -13,10 +13,6 @@ - }; - }; - --&rng { -- status = "okay"; --}; -- - &i2c0 { - u-boot,dm-pre-reloc; - }; -diff --git a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -index ded7db0aef..c3e866a779 100644 ---- a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -@@ -28,10 +28,6 @@ - u-boot,dm-pre-reloc; - }; - --&rng { -- status = "okay"; --}; -- - &sdhci { - max-frequency = <25000000>; - u-boot,dm-pre-reloc; -diff --git a/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi b/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi -index 6317b47e41..37dff04adf 100644 ---- a/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi -@@ -15,10 +15,6 @@ - }; - }; - --&rng { -- status = "okay"; --}; -- - &spi1 { - spi_flash: flash@0 { - u-boot,dm-pre-reloc; -diff --git a/arch/arm/dts/rk3399-u-boot.dtsi b/arch/arm/dts/rk3399-u-boot.dtsi -index ecd230c720..73922c328a 100644 ---- a/arch/arm/dts/rk3399-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-u-boot.dtsi -@@ -32,7 +32,7 @@ - rng: rng@ff8b8000 { - compatible = "rockchip,cryptov1-rng"; - reg = <0x0 0xff8b8000 0x0 0x1000>; -- status = "disabled"; -+ status = "okay"; - }; - - dmc: dmc { --- -2.29.2 - -From 62093137fcbe760d009cf2757feda7ccf328fbb7 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Wed, 16 Dec 2020 15:37:21 +0000 -Subject: [PATCH 2/2] configs: rk3399: enable rng on firefly/rock960/rockpro64 - -Enable the RNG on the Firefly, rock960 and RockPro64 devices -to enable KASLR on devices that support it. - -Signed-off-by: Peter Robinson ---- - configs/firefly-rk3399_defconfig | 2 ++ - configs/rock960-rk3399_defconfig | 2 ++ - configs/rockpro64-rk3399_defconfig | 2 ++ - 3 files changed, 6 insertions(+) - -diff --git a/configs/firefly-rk3399_defconfig b/configs/firefly-rk3399_defconfig -index c453b82dc5..cfbaae40aa 100644 ---- a/configs/firefly-rk3399_defconfig -+++ b/configs/firefly-rk3399_defconfig -@@ -35,6 +35,8 @@ CONFIG_MMC_DW=y - CONFIG_MMC_DW_ROCKCHIP=y - CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_ROCKCHIP=y -+CONFIG_DM_RNG=y -+CONFIG_RNG_ROCKCHIP=y - CONFIG_SF_DEFAULT_SPEED=20000000 - CONFIG_DM_ETH=y - CONFIG_ETH_DESIGNWARE=y -diff --git a/configs/rock960-rk3399_defconfig b/configs/rock960-rk3399_defconfig -index 65dce3cd73..aadbc55f57 100644 ---- a/configs/rock960-rk3399_defconfig -+++ b/configs/rock960-rk3399_defconfig -@@ -39,6 +39,8 @@ CONFIG_MMC_DW_ROCKCHIP=y - CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_SDMA=y - CONFIG_MMC_SDHCI_ROCKCHIP=y -+CONFIG_DM_RNG=y -+CONFIG_RNG_ROCKCHIP=y - CONFIG_DM_ETH=y - CONFIG_NVME=y - CONFIG_PCI=y -diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig -index 575b7a20d5..f78dfcc8f7 100644 ---- a/configs/rockpro64-rk3399_defconfig -+++ b/configs/rockpro64-rk3399_defconfig -@@ -42,6 +42,8 @@ CONFIG_MMC_DW=y - CONFIG_MMC_DW_ROCKCHIP=y - CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_ROCKCHIP=y -+CONFIG_DM_RNG=y -+CONFIG_RNG_ROCKCHIP=y - CONFIG_SF_DEFAULT_BUS=1 - CONFIG_SPI_FLASH_GIGADEVICE=y - CONFIG_DM_ETH=y --- -2.29.2 - diff --git a/rk3399-Pinebook-pro-EDP-support.patch b/rk3399-Pinebook-pro-EDP-support.patch index 1851fcd..8a5835e 100644 --- a/rk3399-Pinebook-pro-EDP-support.patch +++ b/rk3399-Pinebook-pro-EDP-support.patch @@ -1,97 +1,64 @@ -From patchwork Fri Nov 20 13:24:22 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1403693 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=fail (p=none dis=none) header.from=rtp-net.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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4Ccy8k6NTZz9sT6 - for ; Sat, 21 Nov 2020 00:30:14 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id CA2FF82552; - Fri, 20 Nov 2020 14:29:53 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=fail (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id F16538232D; Fri, 20 Nov 2020 14:29:46 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, - URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) - (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 379648232D - for ; Fri, 20 Nov 2020 14:29:44 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org -Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 29B3C18054C; Fri, 20 Nov 2020 14:29:43 +0100 (CET) -Message-ID: <20201120132823.638207109@rtp-net.org> -User-Agent: quilt/0.66 -Date: Fri, 20 Nov 2020 14:24:22 +0100 -From: Arnaud Patard (Rtp) -To: u-boot@lists.denx.de -Cc: Kever Yang , - Anatolij Gustschin , - Philipp Tomsich , - Peter Robinson , - Samuel Dionne-Riel , - Alper Nebi Yasak , - Arnaud Patard -Subject: [patch v3 1/9] rockchip: video: vop: Use endpoint compatible string - to find VOP mode -References: <20201120132421.500365403@rtp-net.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean +From b90e9d3eeded9b10be1076ccbf2a3fac55cf3e74 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Mon, 1 Feb 2021 21:14:44 +0000 +Subject: [PATCH] rk3399 Pinebook pro EDP support -The current code is using an hard coded enum and the of node reg value of -endpoint to find out if the endpoint is mipi/hdmi/lvds/edp/dp. The order -is different between rk3288, rk3399 vop little, rk3399 vop big. +Signed-off-by: Peter Robinson +--- + arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi | 4 + + .../include/asm/arch-rockchip/edp_rk3288.h | 9 +- + .../include/asm/arch-rockchip/vop_rk3288.h | 15 +-- + drivers/pwm/rk_pwm.c | 2 +- + drivers/video/rockchip/rk_edp.c | 103 +++++++++++++++--- + drivers/video/rockchip/rk_vop.c | 86 ++++++++++++++- + 6 files changed, 177 insertions(+), 42 deletions(-) -A possible solution would be to make sure that the rk3288.dtsi and -rk3399.dtsi files have "expected" reg value or an other solution is -to find the kind of endpoint by comparing the endpoint compatible value. - -This patch is implementing the more flexible second solution. - -Signed-off-by: Arnaud Patard - -Index: u-boot/arch/arm/include/asm/arch-rockchip/vop_rk3288.h -=================================================================== ---- u-boot.orig/arch/arm/include/asm/arch-rockchip/vop_rk3288.h -+++ u-boot/arch/arm/include/asm/arch-rockchip/vop_rk3288.h +diff --git a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi +index 1eafb40ce3..2d87bea933 100644 +--- a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi ++++ b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi +@@ -16,6 +16,10 @@ + }; + }; + ++&edp { ++ rockchip,panel = <&edp_panel>; ++}; ++ + &i2c0 { + u-boot,dm-pre-reloc; + }; +diff --git a/arch/arm/include/asm/arch-rockchip/edp_rk3288.h b/arch/arm/include/asm/arch-rockchip/edp_rk3288.h +index 94e5bb674f..9559813e52 100644 +--- a/arch/arm/include/asm/arch-rockchip/edp_rk3288.h ++++ b/arch/arm/include/asm/arch-rockchip/edp_rk3288.h +@@ -232,8 +232,9 @@ check_member(rk3288_edp, pll_reg_5, 0xa00); + #define PD_CH0 (0x1 << 0) + + /* pll_reg_1 */ +-#define REF_CLK_24M (0x1 << 1) +-#define REF_CLK_27M (0x0 << 1) ++#define REF_CLK_24M (0x1 << 0) ++#define REF_CLK_27M (0x0 << 0) ++#define REF_CLK_MASK (0x1 << 0) + + /* line_map */ + #define LANE3_MAP_LOGIC_LANE_0 (0x0 << 6) +@@ -296,7 +297,9 @@ check_member(rk3288_edp, pll_reg_5, 0xa00); + + /* int_ctl */ + #define SOFT_INT_CTRL (0x1 << 2) +-#define INT_POL (0x1 << 0) ++#define INT_POL1 (0x1 << 1) ++#define INT_POL0 (0x1 << 0) ++#define INT_POL (INT_POL0 | INT_POL1) + + /* sys_ctl_1 */ + #define DET_STA (0x1 << 2) +diff --git a/arch/arm/include/asm/arch-rockchip/vop_rk3288.h b/arch/arm/include/asm/arch-rockchip/vop_rk3288.h +index 52446e97c6..49a7141437 100644 +--- a/arch/arm/include/asm/arch-rockchip/vop_rk3288.h ++++ b/arch/arm/include/asm/arch-rockchip/vop_rk3288.h @@ -85,26 +85,13 @@ enum { LB_RGB_1280X8 = 0x5 }; @@ -120,148 +87,35 @@ Index: u-boot/arch/arm/include/asm/arch-rockchip/vop_rk3288.h /* VOP_VERSION_INFO */ #define M_FPGA_VERSION (0xffff << 16) -Index: u-boot/drivers/video/rockchip/rk_vop.c -=================================================================== ---- u-boot.orig/drivers/video/rockchip/rk_vop.c -+++ u-boot/drivers/video/rockchip/rk_vop.c -@@ -235,12 +235,11 @@ static int rk_display_init(struct udevic - struct clk clk; - enum video_log2_bpp l2bpp; - ofnode remote; -+ const char *compat; +diff --git a/drivers/pwm/rk_pwm.c b/drivers/pwm/rk_pwm.c +index a64fc4a052..d4b9ebe528 100644 +--- a/drivers/pwm/rk_pwm.c ++++ b/drivers/pwm/rk_pwm.c +@@ -146,7 +146,7 @@ static int rk_pwm_probe(struct udevice *dev) + priv->data = (struct rockchip_pwm_data *)dev_get_driver_data(dev); - debug("%s(%s, %lu, %s)\n", __func__, - dev_read_name(dev), fbbase, ofnode_get_name(ep_node)); + if (priv->data->supports_polarity) +- priv->conf_polarity = PWM_DUTY_POSTIVE | PWM_INACTIVE_POSTIVE; ++ priv->conf_polarity = PWM_DUTY_POSTIVE | PWM_INACTIVE_NEGATIVE; -- vop_id = ofnode_read_s32_default(ep_node, "reg", -1); -- debug("vop_id=%d\n", vop_id); - ret = ofnode_read_u32(ep_node, "remote-endpoint", &remote_phandle); - if (ret) - return ret; -@@ -282,6 +281,28 @@ static int rk_display_init(struct udevic - if (disp) - break; - }; -+ compat = ofnode_get_property(remote, "compatible", NULL); -+ if (!compat) { -+ debug("%s(%s): Failed to find compatible property\n", -+ __func__, dev_read_name(dev)); -+ return -EINVAL; -+ } -+ if (strstr(compat, "edp")) { -+ vop_id = VOP_MODE_EDP; -+ } else if (strstr(compat, "mipi")) { -+ vop_id = VOP_MODE_MIPI; -+ } else if (strstr(compat, "hdmi")) { -+ vop_id = VOP_MODE_HDMI; -+ } else if (strstr(compat, "cdn-dp")) { -+ vop_id = VOP_MODE_DP; -+ } else if (strstr(compat, "lvds")) { -+ vop_id = VOP_MODE_LVDS; -+ } else { -+ debug("%s(%s): Failed to find vop mode for %s\n", -+ __func__, dev_read_name(dev), compat); -+ return -EINVAL; -+ } -+ debug("vop_id=%d\n", vop_id); - - disp_uc_plat = dev_get_uclass_platdata(disp); - debug("Found device '%s', disp_uc_priv=%p\n", disp->name, disp_uc_plat); - -From patchwork Fri Nov 20 13:24:23 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1403700 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=fail (p=none dis=none) header.from=rtp-net.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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CcyC43w72z9sTv - for ; Sat, 21 Nov 2020 00:32:16 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id F3481825F6; - Fri, 20 Nov 2020 14:30:42 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=fail (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 32EBC825A4; Fri, 20 Nov 2020 14:29: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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, - URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org - [IPv6:2001:bc8:3430:1000::c0f:fee]) - (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id B9D9782384 - for ; Fri, 20 Nov 2020 14:29:44 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org -Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 39BC31807FD; Fri, 20 Nov 2020 14:29:43 +0100 (CET) -Message-ID: <20201120132823.697547510@rtp-net.org> -User-Agent: quilt/0.66 -Date: Fri, 20 Nov 2020 14:24:23 +0100 -From: Arnaud Patard (Rtp) -To: u-boot@lists.denx.de -Cc: Kever Yang , - Anatolij Gustschin , - Philipp Tomsich , - Peter Robinson , - Samuel Dionne-Riel , - Alper Nebi Yasak , - Arnaud Patard -Subject: [patch v3 2/9] rockchip: video: edp: Add rk3399 support -References: <20201120132421.500365403@rtp-net.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -According to linux commit "drm/rockchip: analogix_dp: add rk3399 eDP -support" (82872e42bb1501dd9e60ca430f4bae45a469aa64), rk3288 and rk3399 -eDP IPs are nearly the same, the difference is in the grf register -(SOC_CON6 versus SOC_CON20). So, change the code to use the right -register on each IP. - -The clocks don't seem to be the same, the eDP clock is not at index 1 -on rk3399, so don't try changing the clock at index 1 to rate 0 on -rk3399. - -Signed-off-by: Arnaud Patard - -Index: u-boot/drivers/video/rockchip/rk_edp.c -=================================================================== ---- u-boot.orig/drivers/video/rockchip/rk_edp.c -+++ u-boot/drivers/video/rockchip/rk_edp.c -@@ -17,11 +17,10 @@ + return 0; + } +diff --git a/drivers/video/rockchip/rk_edp.c b/drivers/video/rockchip/rk_edp.c +index 0be60e169e..0ddf5e02d6 100644 +--- a/drivers/video/rockchip/rk_edp.c ++++ b/drivers/video/rockchip/rk_edp.c +@@ -8,20 +8,21 @@ + #include + #include + #include ++#include + #include + #include + #include + #include + #include ++#include + #include #include #include #include @@ -275,7 +129,7 @@ Index: u-boot/drivers/video/rockchip/rk_edp.c #define MAX_CR_LOOP 5 #define MAX_EQ_LOOP 5 -@@ -37,18 +36,42 @@ static const char * const pre_emph_names +@@ -37,18 +38,42 @@ static const char * const pre_emph_names[] = { #define DP_VOLTAGE_MAX DP_TRAIN_VOLTAGE_SWING_1200 #define DP_PRE_EMPHASIS_MAX DP_TRAIN_PRE_EMPHASIS_9_5 @@ -321,27 +175,49 @@ Index: u-boot/drivers/video/rockchip/rk_edp.c writel(LDO_OUTPUT_V_SEL_145 | KVCO_DEFALUT | CHG_PUMP_CUR_SEL_5US | V2L_CUR_SEL_1MA, ®s->pll_reg_2); -@@ -1029,6 +1052,8 @@ static int rk_edp_probe(struct udevice * - struct display_plat *uc_plat = dev_get_uclass_platdata(dev); +@@ -1029,6 +1054,9 @@ static int rk_edp_probe(struct udevice *dev) + struct display_plat *uc_plat = dev_get_uclass_plat(dev); struct rk_edp_priv *priv = dev_get_priv(dev); struct rk3288_edp *regs = priv->regs; + struct rockchip_dp_data *edp_data = (struct rockchip_dp_data *)dev_get_driver_data(dev); ++ struct reset_ctl dp_rst; + struct clk clk; int ret; -@@ -1043,16 +1068,17 @@ static int rk_edp_probe(struct udevice * - int vop_id = uc_plat->source_id; - debug("%s, uc_plat=%p, vop_id=%u\n", __func__, uc_plat, vop_id); +@@ -1040,19 +1068,39 @@ static int rk_edp_probe(struct udevice *dev) + return ret; + } + +- int vop_id = uc_plat->source_id; +- debug("%s, uc_plat=%p, vop_id=%u\n", __func__, uc_plat, vop_id); ++ ret = reset_get_by_name(dev, "dp", &dp_rst); ++ if (ret) { ++ dev_err(dev, "failed to get dp reset (ret=%d)\n", ret); ++ return ret; ++ } - ret = clk_get_by_index(dev, 1, &clk); - if (ret >= 0) { - ret = clk_set_rate(&clk, 0); - clk_free(&clk); -- } -- if (ret) { ++ ret = reset_assert(&dp_rst); ++ if (ret) { ++ dev_err(dev, "failed to assert dp reset (ret=%d)\n", ret); ++ return ret; + } ++ udelay(20); ++ ++ ret = reset_deassert(&dp_rst); + if (ret) { - debug("%s: Failed to set EDP clock: ret=%d\n", __func__, ret); -- return ret; ++ dev_err(dev, "failed to deassert dp reset (ret=%d)\n", ret); + return ret; + } + ++ int vop_id = uc_plat->source_id; ++ debug("%s, uc_plat=%p, vop_id=%u\n", __func__, uc_plat, vop_id); ++ + if (edp_data->chip_type == RK3288_DP) { + ret = clk_get_by_index(dev, 1, &clk); + if (ret >= 0) { @@ -352,12 +228,11 @@ Index: u-boot/drivers/video/rockchip/rk_edp.c + debug("%s: Failed to set EDP clock: ret=%d\n", __func__, ret); + return ret; + } - } -- ++ } ret = clk_get_by_index(uc_plat->src_dev, 0, &clk); if (ret >= 0) { ret = clk_set_rate(&clk, 192000000); -@@ -1065,15 +1091,17 @@ static int rk_edp_probe(struct udevice * +@@ -1065,15 +1113,17 @@ static int rk_edp_probe(struct udevice *dev) } /* grf_edp_ref_clk_sel: from internal 24MHz or 27MHz clock */ @@ -379,7 +254,7 @@ Index: u-boot/drivers/video/rockchip/rk_edp.c rk_edp_init_interrupt(regs); rk_edp_enable_sw_function(regs); ret = rk_edp_init_analog_func(regs); -@@ -1089,8 +1117,25 @@ static const struct dm_display_ops dp_ro +@@ -1089,8 +1139,25 @@ static const struct dm_display_ops dp_rockchip_ops = { .enable = rk_edp_enable, }; @@ -406,753 +281,10 @@ Index: u-boot/drivers/video/rockchip/rk_edp.c { } }; -Index: u-boot/arch/arm/include/asm/arch-rockchip/edp_rk3288.h -=================================================================== ---- u-boot.orig/arch/arm/include/asm/arch-rockchip/edp_rk3288.h -+++ u-boot/arch/arm/include/asm/arch-rockchip/edp_rk3288.h -@@ -232,8 +232,9 @@ check_member(rk3288_edp, pll_reg_5, 0xa0 - #define PD_CH0 (0x1 << 0) - - /* pll_reg_1 */ --#define REF_CLK_24M (0x1 << 1) --#define REF_CLK_27M (0x0 << 1) -+#define REF_CLK_24M (0x1 << 0) -+#define REF_CLK_27M (0x0 << 0) -+#define REF_CLK_MASK (0x1 << 0) - - /* line_map */ - #define LANE3_MAP_LOGIC_LANE_0 (0x0 << 6) - -From patchwork Fri Nov 20 13:24:24 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1403694 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=fail (p=none dis=none) header.from=rtp-net.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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4Ccy8z1vdvz9sT6 - for ; Sat, 21 Nov 2020 00:30:26 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 54C2A825A4; - Fri, 20 Nov 2020 14:30:12 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=fail (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 1EC30825AB; Fri, 20 Nov 2020 14:29:47 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, - URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) - (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 6507782366 - for ; Fri, 20 Nov 2020 14:29:44 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org -Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 44C66180A3F; Fri, 20 Nov 2020 14:29:43 +0100 (CET) -Message-ID: <20201120132823.748319735@rtp-net.org> -User-Agent: quilt/0.66 -Date: Fri, 20 Nov 2020 14:24:24 +0100 -From: Arnaud Patard (Rtp) -To: u-boot@lists.denx.de -Cc: Kever Yang , - Anatolij Gustschin , - Philipp Tomsich , - Peter Robinson , - Samuel Dionne-Riel , - Alper Nebi Yasak , - Arnaud Patard -Subject: [patch v3 3/9] ockchip: video: edp: Change interrupt polarity - configuration -References: <20201120132421.500365403@rtp-net.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -The linux code is setting polarity configuration to 3 but -uboot code is setting it to 1. Change the configuration to match the -linux configuration - -Signed-off-by: Arnaud Patard - -Index: u-boot/arch/arm/include/asm/arch-rockchip/edp_rk3288.h -=================================================================== ---- u-boot.orig/arch/arm/include/asm/arch-rockchip/edp_rk3288.h -+++ u-boot/arch/arm/include/asm/arch-rockchip/edp_rk3288.h -@@ -297,7 +297,9 @@ check_member(rk3288_edp, pll_reg_5, 0xa0 - - /* int_ctl */ - #define SOFT_INT_CTRL (0x1 << 2) --#define INT_POL (0x1 << 0) -+#define INT_POL1 (0x1 << 1) -+#define INT_POL0 (0x1 << 0) -+#define INT_POL (INT_POL0 | INT_POL1) - - /* sys_ctl_1 */ - #define DET_STA (0x1 << 2) - -From patchwork Fri Nov 20 13:24:25 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1403697 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=fail (p=none dis=none) header.from=rtp-net.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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CcyBG0XK7z9sVC - for ; Sat, 21 Nov 2020 00:31:33 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 82245825AA; - Fri, 20 Nov 2020 14:30:29 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=fail (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id A2EE5825BB; Fri, 20 Nov 2020 14:29:54 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, - URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org - [IPv6:2001:bc8:3430:1000::c0f:fee]) - (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id BBD6B82591 - for ; Fri, 20 Nov 2020 14:29:44 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org -Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 6ED14180A47; Fri, 20 Nov 2020 14:29:43 +0100 (CET) -Message-ID: <20201120132823.799855386@rtp-net.org> -User-Agent: quilt/0.66 -Date: Fri, 20 Nov 2020 14:24:25 +0100 -From: Arnaud Patard (Rtp) -To: u-boot@lists.denx.de -Cc: Kever Yang , - Anatolij Gustschin , - Philipp Tomsich , - Peter Robinson , - Samuel Dionne-Riel , - Alper Nebi Yasak , - Arnaud Patard -Subject: [patch v3 4/9] ockchip: video: vop: Reserve efi fb memory -References: <20201120132421.500365403@rtp-net.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -When booting with EFI and graphics, the memory used for framebuffer -has to be reserved, otherwise it may leads to kernel memory -overwrite. - -Signed-off-by: Arnaud Patard - -Index: u-boot/drivers/video/rockchip/rk_vop.c -=================================================================== ---- u-boot.orig/drivers/video/rockchip/rk_vop.c -+++ u-boot/drivers/video/rockchip/rk_vop.c -@@ -20,6 +20,8 @@ - #include - #include - #include -+#include -+#include - #include - #include - #include -@@ -394,6 +396,13 @@ int rk_vop_probe(struct udevice *dev) - if (!(gd->flags & GD_FLG_RELOC)) - return 0; - -+ plat->base = gd->bd->bi_dram[0].start + gd->bd->bi_dram[0].size - plat->size; -+ -+#if defined(CONFIG_EFI_LOADER) -+ debug("Adding to EFI map %d @ %lx\n", plat->size, plat->base); -+ efi_add_memory_map(plat->base, plat->size, EFI_RESERVED_MEMORY_TYPE); -+#endif -+ - priv->regs = (struct rk3288_vop *)dev_read_addr(dev); - - /* - -From patchwork Fri Nov 20 13:24:26 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1403695 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=fail (p=none dis=none) header.from=rtp-net.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 RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4Ccy9V13SHz9sTL - for ; Sat, 21 Nov 2020 00:30:53 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 54822825C3; - Fri, 20 Nov 2020 14:30:20 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=fail (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 2796E825A0; Fri, 20 Nov 2020 14:29: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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, - URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org - [IPv6:2001:bc8:3430:1000::c0f:fee]) - (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id E8AB4825A2 - for ; Fri, 20 Nov 2020 14:29:44 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org -Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 7FA88180A70; Fri, 20 Nov 2020 14:29:43 +0100 (CET) -Message-ID: <20201120132823.849890740@rtp-net.org> -User-Agent: quilt/0.66 -Date: Fri, 20 Nov 2020 14:24:26 +0100 -From: Arnaud Patard (Rtp) -To: u-boot@lists.denx.de -Cc: Kever Yang , - Anatolij Gustschin , - Philipp Tomsich , - Peter Robinson , - Samuel Dionne-Riel , - Alper Nebi Yasak , - Arnaud Patard -Subject: [patch v3 5/9] rockchip: Pinebook Pro: Enable edp -References: <20201120132421.500365403@rtp-net.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -- uboot rockchip edp code is looking for a rockchip,panel property - for the edp dts node, so add it. - -Signed-off-by: Arnaud Patard - -Index: u-boot/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -=================================================================== ---- u-boot.orig/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -+++ u-boot/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -@@ -20,6 +20,10 @@ - }; - }; - -+&edp { -+ rockchip,panel = <&edp_panel>; -+}; -+ - &i2c0 { - u-boot,dm-pre-reloc; - }; - -From patchwork Fri Nov 20 13:24:27 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1403696 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=fail (p=none dis=none) header.from=rtp-net.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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4Ccy9w51kSz9sT6 - for ; Sat, 21 Nov 2020 00:31:16 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 39197825D4; - Fri, 20 Nov 2020 14:30:22 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=fail (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 1BDA2825C3; Fri, 20 Nov 2020 14:29: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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, - URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org - [IPv6:2001:bc8:3430:1000::c0f:fee]) - (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id E6C7F825A0 - for ; Fri, 20 Nov 2020 14:29:44 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org -Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 98B36180A7D; Fri, 20 Nov 2020 14:29:43 +0100 (CET) -Message-ID: <20201120132823.910975188@rtp-net.org> -User-Agent: quilt/0.66 -Date: Fri, 20 Nov 2020 14:24:27 +0100 -From: Arnaud Patard (Rtp) -To: u-boot@lists.denx.de -Cc: Kever Yang , - Anatolij Gustschin , - Philipp Tomsich , - Peter Robinson , - Samuel Dionne-Riel , - Alper Nebi Yasak , - Arnaud Patard -Subject: [patch v3 6/9] rockchip: pwm: Fix default polarity -References: <20201120132421.500365403@rtp-net.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -In the code, the default polarity is set to positive/positive, -which is neither normal polarity or inverted polarity. It's -only the hardware default. This leads to booting linux with -wrong polarity setting. - -Update the code to use PWM_DUTY_POSTIVE | PWM_INACTIVE_NEGATIVE -by default instead. - -Signed-off-by: Arnaud Patard - -Index: u-boot/drivers/pwm/rk_pwm.c -=================================================================== ---- u-boot.orig/drivers/pwm/rk_pwm.c -+++ u-boot/drivers/pwm/rk_pwm.c -@@ -146,7 +146,7 @@ static int rk_pwm_probe(struct udevice * - priv->data = (struct rockchip_pwm_data *)dev_get_driver_data(dev); - - if (priv->data->supports_polarity) -- priv->conf_polarity = PWM_DUTY_POSTIVE | PWM_INACTIVE_POSTIVE; -+ priv->conf_polarity = PWM_DUTY_POSTIVE | PWM_INACTIVE_NEGATIVE; - - return 0; - } - -From patchwork Fri Nov 20 13:24:28 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1403702 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=fail (p=none dis=none) header.from=rtp-net.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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CcyCX6HJRz9sTv - for ; Sat, 21 Nov 2020 00:32:40 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id EE6E482605; - Fri, 20 Nov 2020 14:30:51 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=fail (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 3C66C82591; Fri, 20 Nov 2020 14:30: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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, - URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) - (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id F3045825AA - for ; Fri, 20 Nov 2020 14:29:44 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org -Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id B6F29180ACB; Fri, 20 Nov 2020 14:29:43 +0100 (CET) -Message-ID: <20201120132823.962072859@rtp-net.org> -User-Agent: quilt/0.66 -Date: Fri, 20 Nov 2020 14:24:28 +0100 -From: Arnaud Patard (Rtp) -To: u-boot@lists.denx.de -Cc: Kever Yang , - Anatolij Gustschin , - Philipp Tomsich , - Peter Robinson , - Samuel Dionne-Riel , - Alper Nebi Yasak , - Arnaud Patard -Subject: [patch v3 7/9] rockchip: video: vop: Fix format of fbbase in debug - string -References: <20201120132421.500365403@rtp-net.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -The debug string printing the device name, framebuffer address and of node -is using %lu as format for the framebuffer address, which is not so nice. -Change it to %lx. - -Signed-off-by: Arnaud Patard - -Index: u-boot/drivers/video/rockchip/rk_vop.c -=================================================================== ---- u-boot.orig/drivers/video/rockchip/rk_vop.c -+++ u-boot/drivers/video/rockchip/rk_vop.c -@@ -239,7 +239,7 @@ static int rk_display_init(struct udevic - ofnode remote; - const char *compat; - -- debug("%s(%s, %lu, %s)\n", __func__, -+ debug("%s(%s, %lx, %s)\n", __func__, - dev_read_name(dev), fbbase, ofnode_get_name(ep_node)); - - ret = ofnode_read_u32(ep_node, "remote-endpoint", &remote_phandle); - -From patchwork Fri Nov 20 13:24:29 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1403698 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=fail (p=none dis=none) header.from=rtp-net.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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CcyBb1882z9sT6 - for ; Sat, 21 Nov 2020 00:31:51 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id C6B40825DF; - Fri, 20 Nov 2020 14:30:31 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=fail (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id A7375825B9; Fri, 20 Nov 2020 14:29:58 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, - URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) - (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 04A88825A6 - for ; Fri, 20 Nov 2020 14:29:44 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org -Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id E02FE180ACE; Fri, 20 Nov 2020 14:29:43 +0100 (CET) -Message-ID: <20201120132824.012845278@rtp-net.org> -User-Agent: quilt/0.66 -Date: Fri, 20 Nov 2020 14:24:29 +0100 -From: Arnaud Patard (Rtp) -To: u-boot@lists.denx.de -Cc: Kever Yang , - Anatolij Gustschin , - Philipp Tomsich , - Peter Robinson , - Samuel Dionne-Riel , - Alper Nebi Yasak , - Arnaud Patard -Subject: [patch v3 8/9] rockchip: video: edp: Add missing reset support -References: <20201120132421.500365403@rtp-net.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -In order to ensure that the eDP registers are in correct state, -add missing support for the eDP reset lines found in the device-tree. - - -Signed-off-by: Arnaud Patard - -Index: u-boot/drivers/video/rockchip/rk_edp.c -=================================================================== ---- u-boot.orig/drivers/video/rockchip/rk_edp.c -+++ u-boot/drivers/video/rockchip/rk_edp.c -@@ -8,11 +8,13 @@ - #include - #include - #include -+#include - #include - #include - #include - #include - #include -+#include - #include - #include - #include -@@ -1053,6 +1055,7 @@ static int rk_edp_probe(struct udevice * - struct rk_edp_priv *priv = dev_get_priv(dev); - struct rk3288_edp *regs = priv->regs; - struct rockchip_dp_data *edp_data = (struct rockchip_dp_data *)dev_get_driver_data(dev); -+ struct reset_ctl dp_rst; - - struct clk clk; - int ret; -@@ -1065,6 +1068,25 @@ static int rk_edp_probe(struct udevice * - return ret; - } - -+ ret = reset_get_by_name(dev, "dp", &dp_rst); -+ if (ret) { -+ dev_err(dev, "failed to get dp reset (ret=%d)\n", ret); -+ return ret; -+ } -+ -+ ret = reset_assert(&dp_rst); -+ if (ret) { -+ dev_err(dev, "failed to assert dp reset (ret=%d)\n", ret); -+ return ret; -+ } -+ udelay(20); -+ -+ ret = reset_deassert(&dp_rst); -+ if (ret) { -+ dev_err(dev, "failed to deassert dp reset (ret=%d)\n", ret); -+ return ret; -+ } -+ - int vop_id = uc_plat->source_id; - debug("%s, uc_plat=%p, vop_id=%u\n", __func__, uc_plat, vop_id); - - -From patchwork Fri Nov 20 13:24:30 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1403699 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=fail (p=none dis=none) header.from=rtp-net.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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CcyBq0jYrz9sTL - for ; Sat, 21 Nov 2020 00:32:02 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id E40ED825E8; - Fri, 20 Nov 2020 14:30:40 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=fail (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id EB086825AB; Fri, 20 Nov 2020 14:29:58 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, - URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org - [IPv6:2001:bc8:3430:1000::c0f:fee]) - (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 29B89825A4 - for ; Fri, 20 Nov 2020 14:29:45 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org -Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 0EC35180AF9; Fri, 20 Nov 2020 14:29:43 +0100 (CET) -Message-ID: <20201120132824.063180167@rtp-net.org> -User-Agent: quilt/0.66 -Date: Fri, 20 Nov 2020 14:24:30 +0100 -From: Arnaud Patard (Rtp) -To: u-boot@lists.denx.de -Cc: Kever Yang , - Anatolij Gustschin , - Philipp Tomsich , - Peter Robinson , - Samuel Dionne-Riel , - Alper Nebi Yasak , - Arnaud Patard -Subject: [patch v3 9/9] rockchip: videp: vop: Add reset support -References: <20201120132421.500365403@rtp-net.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -In order to ensure that the VOP registers are in correct state, -add missing support for the VOP reset lines found in the device-tree - -Signed-off-by: Arnaud Patard - -Index: u-boot/drivers/video/rockchip/rk_vop.c -=================================================================== ---- u-boot.orig/drivers/video/rockchip/rk_vop.c -+++ u-boot/drivers/video/rockchip/rk_vop.c +diff --git a/drivers/video/rockchip/rk_vop.c b/drivers/video/rockchip/rk_vop.c +index fcb393b906..0fabbf7e30 100644 +--- a/drivers/video/rockchip/rk_vop.c ++++ b/drivers/video/rockchip/rk_vop.c @@ -8,9 +8,11 @@ #include #include @@ -1165,7 +297,16 @@ Index: u-boot/drivers/video/rockchip/rk_vop.c #include #include #include -@@ -36,14 +38,16 @@ enum vop_pol { +@@ -20,6 +22,8 @@ + #include + #include + #include ++#include ++#include + #include + #include + #include +@@ -34,14 +38,16 @@ enum vop_pol { DCLK_INVERT = 3 }; @@ -1184,7 +325,7 @@ Index: u-boot/drivers/video/rockchip/rk_vop.c writel(V_ACT_WIDTH(hactive - 1) | V_ACT_HEIGHT(vactive - 1), ®s->win0_act_info); -@@ -91,6 +95,18 @@ static void rkvop_enable(struct rk3288_v +@@ -89,6 +95,18 @@ static void rkvop_enable(struct rk3288_vop *regs, ulong fbbase, writel(fbbase, ®s->win0_yrgb_mst); writel(0x01, ®s->reg_cfg_done); /* enable reg config */ @@ -1203,15 +344,52 @@ Index: u-boot/drivers/video/rockchip/rk_vop.c } static void rkvop_set_pin_polarity(struct udevice *dev, -@@ -238,6 +254,7 @@ static int rk_display_init(struct udevic +@@ -235,12 +253,12 @@ static int rk_display_init(struct udevice *dev, ulong fbbase, ofnode ep_node) + struct clk clk; enum video_log2_bpp l2bpp; ofnode remote; - const char *compat; ++ const char *compat; + struct reset_ctl dclk_rst; - debug("%s(%s, %lx, %s)\n", __func__, +- debug("%s(%s, %lu, %s)\n", __func__, ++ debug("%s(%s, %lx, %s)\n", __func__, dev_read_name(dev), fbbase, ofnode_get_name(ep_node)); -@@ -354,7 +371,14 @@ static int rk_display_init(struct udevic + +- vop_id = ofnode_read_s32_default(ep_node, "reg", -1); +- debug("vop_id=%d\n", vop_id); + ret = ofnode_read_u32(ep_node, "remote-endpoint", &remote_phandle); + if (ret) + return ret; +@@ -282,6 +300,28 @@ static int rk_display_init(struct udevice *dev, ulong fbbase, ofnode ep_node) + if (disp) + break; + }; ++ compat = ofnode_get_property(remote, "compatible", NULL); ++ if (!compat) { ++ debug("%s(%s): Failed to find compatible property\n", ++ __func__, dev_read_name(dev)); ++ return -EINVAL; ++ } ++ if (strstr(compat, "edp")) { ++ vop_id = VOP_MODE_EDP; ++ } else if (strstr(compat, "mipi")) { ++ vop_id = VOP_MODE_MIPI; ++ } else if (strstr(compat, "hdmi")) { ++ vop_id = VOP_MODE_HDMI; ++ } else if (strstr(compat, "cdn-dp")) { ++ vop_id = VOP_MODE_DP; ++ } else if (strstr(compat, "lvds")) { ++ vop_id = VOP_MODE_LVDS; ++ } else { ++ debug("%s(%s): Failed to find vop mode for %s\n", ++ __func__, dev_read_name(dev), compat); ++ return -EINVAL; ++ } ++ debug("vop_id=%d\n", vop_id); + + disp_uc_plat = dev_get_uclass_plat(disp); + debug("Found device '%s', disp_uc_priv=%p\n", disp->name, disp_uc_plat); +@@ -331,7 +371,14 @@ static int rk_display_init(struct udevice *dev, ulong fbbase, ofnode ep_node) } rkvop_mode_set(dev, &timing, vop_id); @@ -1227,7 +405,7 @@ Index: u-boot/drivers/video/rockchip/rk_vop.c ret = display_enable(disp, 1 << l2bpp, &timing); if (ret) -@@ -391,11 +415,31 @@ int rk_vop_probe(struct udevice *dev) +@@ -368,11 +415,38 @@ int rk_vop_probe(struct udevice *dev) struct rk_vop_priv *priv = dev_get_priv(dev); int ret = 0; ofnode port, node; @@ -1256,6 +434,16 @@ Index: u-boot/drivers/video/rockchip/rk_vop.c + return ret; + } + - plat->base = gd->bd->bi_dram[0].start + gd->bd->bi_dram[0].size - plat->size; ++ plat->base = gd->bd->bi_dram[0].start + gd->bd->bi_dram[0].size - plat->size; ++ ++#if defined(CONFIG_EFI_LOADER) ++ debug("Adding to EFI map %d @ %lx\n", plat->size, plat->base); ++ efi_add_memory_map(plat->base, plat->size, EFI_RESERVED_MEMORY_TYPE); ++#endif ++ + priv->regs = (struct rk3288_vop *)dev_read_addr(dev); - #if defined(CONFIG_EFI_LOADER) + /* +-- +2.29.2 + diff --git a/rockchip-Fix-SPI-boot-on-Pinebook-Pro-Puma-and-RK3399-ROC-PC.patch b/rockchip-Fix-SPI-boot-on-Pinebook-Pro-Puma-and-RK3399-ROC-PC.patch deleted file mode 100644 index 94e43b7..0000000 --- a/rockchip-Fix-SPI-boot-on-Pinebook-Pro-Puma-and-RK3399-ROC-PC.patch +++ /dev/null @@ -1,348 +0,0 @@ -From patchwork Sun Nov 22 13:03:45 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Hugh Cole-Baker -X-Patchwork-Id: 1404476 -X-Patchwork-Delegate: ykai007@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: ozlabs.org; - dkim=pass (2048-bit key; - unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 - header.s=20161025 header.b=REQwZbU4; - dkim-atps=neutral -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 RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4Cf9Vp2Yl9z9sSf - for ; Mon, 23 Nov 2020 00:05:05 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 99CC4825B4; - Sun, 22 Nov 2020 14:04:20 +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="REQwZbU4"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 0345B825A6; Sun, 22 Nov 2020 14:04:16 +0100 (CET) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,SPF_HELO_NONE,URIBL_BLOCKED - autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-wr1-x443.google.com (mail-wr1-x443.google.com - [IPv6:2a00:1450:4864:20::443]) - (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 02CAF821A4 - for ; Sun, 22 Nov 2020 14:04:12 +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=sigmaris@gmail.com -Received: by mail-wr1-x443.google.com with SMTP id j7so15775922wrp.3 - for ; Sun, 22 Nov 2020 05:04:12 -0800 (PST) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; - h=from:to:cc:subject:date:message-id:in-reply-to:references - :mime-version:content-transfer-encoding; - bh=/Cjx25mfLwaytYlHbceqeQvGw33xUtrml0CUl/sig90=; - b=REQwZbU43XaBkdSFJC5QRtUHq4gYwGxcC45P5486nZCm8jPwqzynI8LFxIAXAgdwJw - 0Bi8vA+7NuNZPwWqmpr96OlvJ8jOnCw07UBhhyKIr3BnUjXY2VCCnqQIGUt0+Zc5FVRl - LGknOPa01vr6byuTe6OmEfcXbfW/w2RFpVLM7ICR31z8wIyiIW/W8lJu1etHg7hc+pEG - z0c7dcYuwSaHyiyMr95cUVTsBd1CYAwBGDmKr88XOgPfvU7WGJSeVSkGp2ktPFEDcXxA - E9GjcB+6aefFsz3ih5qO7sIGcb6z2UenEhkTvVnbqn6Or4x9SmK/kfTmku5NYuDfQoYZ - eH6g== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20161025; - h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to - :references:mime-version:content-transfer-encoding; - bh=/Cjx25mfLwaytYlHbceqeQvGw33xUtrml0CUl/sig90=; - b=c21R1EknGJQ1BqTWS2Ua1SE2Tl/wfNHXA1okA7kIO/ktuWylvwLUocFaS3+TMubFzA - dux0pHU9EemHTMuZchZZxyAP5Mw57UJjqQt3YNaAn5YyqhSLQ9kW32EccruhA97k0Vr1 - lUimK0Y4Sovm2CeedFfLKJL9VkxNM+ztzZqPQCLsejd8R4/e86PccNI/s2fEYte1PF33 - yMbcxDafcTGjBTl5q34iKluq/Hh7hC61sZ7UJIM/Bs73G0JdRDT4jH2HluNEKTkoDj8g - 1sL9TYanE4B3M5zvdDCTmp/pEFVa5xRvK9ZnsGC0hZ6ZkoiNW0PWA8Lo823Gd3bUPn2M - EkKw== -X-Gm-Message-State: AOAM532pWtRzHv8t9BYLRQ1FOrka0x3QbsTIGLOM4it1BgaFt2AjMMyK - WJshrm930J60FAT3/aTk+rwBX8wFJWnXrA== -X-Google-Smtp-Source: - ABdhPJxlXmDDU2QAEnJ1Ygx4v3gpz3fjzlmm3EMlmio1HHK/iH5XnwEw8detp4XdCi10r0mdAPKH0g== -X-Received: by 2002:adf:e788:: with SMTP id n8mr25250437wrm.84.1606050252459; - Sun, 22 Nov 2020 05:04:12 -0800 (PST) -Received: from apple.sigmaris.info (ebrouter.sigmaris.info. [82.69.107.165]) - by smtp.gmail.com with ESMTPSA id i6sm10968566wma.42.2020.11.22.05.04.11 - (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); - Sun, 22 Nov 2020 05:04:11 -0800 (PST) -From: Hugh Cole-Baker -To: U-Boot Mailing List -Cc: Hugh Cole-Baker , Simon Glass , - Jagan Teki , - Kever Yang , Levin Du , - Philipp Tomsich , - Suniel Mahesh -Subject: [PATCH v2 2/3] rockchip: rk3399-roc-pc: default to SPI bus 1 for - SPI-flash -Date: Sun, 22 Nov 2020 13:03:45 +0000 -Message-Id: <20201122130346.11621-3-sigmaris@gmail.com> -X-Mailer: git-send-email 2.24.3 (Apple Git-128) -In-Reply-To: <20201122130346.11621-1-sigmaris@gmail.com> -References: <20201122130346.11621-1-sigmaris@gmail.com> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -SPI flash on this board is located on bus 1, default to using bus 1 for -SPI flash on both rk3399-roc-pc and -mezzanine, and stop aliasing it to -bus 0. - -Signed-off-by: Hugh Cole-Baker -Suggested-by: Simon Glass -Fixes: c4cea2bb ("rockchip: Enable building a SPI ROM image on bob") ---- - -(no changes since v1) - - arch/arm/dts/rk3399-roc-pc-u-boot.dtsi | 4 ---- - configs/roc-pc-mezzanine-rk3399_defconfig | 1 + - configs/roc-pc-rk3399_defconfig | 1 + - 3 files changed, 2 insertions(+), 4 deletions(-) - -diff --git a/arch/arm/dts/rk3399-roc-pc-u-boot.dtsi b/arch/arm/dts/rk3399-roc-pc-u-boot.dtsi -index fc155e69036..e3c9364e359 100644 ---- a/arch/arm/dts/rk3399-roc-pc-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-roc-pc-u-boot.dtsi -@@ -7,10 +7,6 @@ - #include "rk3399-sdram-lpddr4-100.dtsi" - - / { -- aliases { -- spi0 = &spi1; -- }; -- - chosen { - u-boot,spl-boot-order = "same-as-spl", &spi_flash, &sdhci, &sdmmc; - }; -diff --git a/configs/roc-pc-mezzanine-rk3399_defconfig b/configs/roc-pc-mezzanine-rk3399_defconfig -index ae16f3558a3..8aa5a155180 100644 ---- a/configs/roc-pc-mezzanine-rk3399_defconfig -+++ b/configs/roc-pc-mezzanine-rk3399_defconfig -@@ -42,6 +42,7 @@ CONFIG_MMC_DW=y - CONFIG_MMC_DW_ROCKCHIP=y - CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_ROCKCHIP=y -+CONFIG_SF_DEFAULT_BUS=1 - CONFIG_SPI_FLASH_WINBOND=y - CONFIG_DM_ETH=y - CONFIG_ETH_DESIGNWARE=y -diff --git a/configs/roc-pc-rk3399_defconfig b/configs/roc-pc-rk3399_defconfig -index 774707b115b..927b57685d9 100644 ---- a/configs/roc-pc-rk3399_defconfig -+++ b/configs/roc-pc-rk3399_defconfig -@@ -41,6 +41,7 @@ CONFIG_MMC_DW=y - CONFIG_MMC_DW_ROCKCHIP=y - CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_ROCKCHIP=y -+CONFIG_SF_DEFAULT_BUS=1 - CONFIG_SPI_FLASH_WINBOND=y - CONFIG_DM_ETH=y - CONFIG_ETH_DESIGNWARE=y - -From patchwork Sun Nov 22 13:03:46 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Hugh Cole-Baker -X-Patchwork-Id: 1404477 -X-Patchwork-Delegate: ykai007@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: ozlabs.org; - dkim=pass (2048-bit key; - unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 - header.s=20161025 header.b=V6cH+Ab0; - dkim-atps=neutral -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4Cf9W26DWNz9sSf - for ; Mon, 23 Nov 2020 00:05:18 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id ED850825C8; - Sun, 22 Nov 2020 14:04:29 +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="V6cH+Ab0"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id E1A45825AB; Sun, 22 Nov 2020 14:04:22 +0100 (CET) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,SPF_HELO_NONE,URIBL_BLOCKED - autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-wm1-x343.google.com (mail-wm1-x343.google.com - [IPv6:2a00:1450:4864:20::343]) - (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 5844D825AB - for ; Sun, 22 Nov 2020 14:04:19 +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=sigmaris@gmail.com -Received: by mail-wm1-x343.google.com with SMTP id 10so15317137wml.2 - for ; Sun, 22 Nov 2020 05:04:19 -0800 (PST) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; - h=from:to:cc:subject:date:message-id:in-reply-to:references - :mime-version:content-transfer-encoding; - bh=iIABfTCsAnamS6ADtBcJnJDUKIZeDRjQlCiKPeXJeqY=; - b=V6cH+Ab04tdAtCynJa7Qo7eZ0vOL+fDJlPGfOsICfFxkuWCsAqo4YC1Lg+J1OoQvrF - MVW8XT73Fltm2U5f+3rveS4CbcF+xbyf316XXSlZYzlV2MECQHM1hMMNHVYPBwW8Ny3W - jMILQm5wpgigFT7L5V8Xiwfsoipi1OWBinnGWENTCgz/bpdQT4pPh61GYeGCtk3UPay+ - 7I8RrljPl3ya1aEEoX3J1M3VrSoQrwmkL7uwcSTis52BODNDXLIthfIex7obwoKrfZ7F - yrwOL+MGYuiiF5PEdGdruQmcxMWUwtMhS2RbElFRRjBlB0A16ofrAXpOOsSS+C18qXo+ - XIPg== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20161025; - h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to - :references:mime-version:content-transfer-encoding; - bh=iIABfTCsAnamS6ADtBcJnJDUKIZeDRjQlCiKPeXJeqY=; - b=jzfmFxc0145sVD+QeBzKFADhk4C/yzyilURKZZaVznYqUzq4jpnOEUXOKrTDSml/kK - dyHdpxX7AOj58BDsEbLUTmdhqIuQSJlh8wXPVCPMNvJ66hAwO9jZ/8Y7zYYyVzQ+RkzO - 653do0IvgG0Wb/cLLakIbtLIjL8rg+T70rI//qWGT4OrrVp/nI8U6IXnSAR1SxxCjGZQ - W/3FudFguFZA76WoGX7ZiTveS4J3LkWY4hMRRVSXa10xZKIkgjIr6si5yl0WAhsJIzep - NxN3WJiU0lTXarelq336e1kUvh+aU76hw43R0qcleFYXdunl/Z7ChfVelgpltmQqyLx7 - wgJg== -X-Gm-Message-State: AOAM531Du1DX9BT1NWQgESsUfd//f4j2LyAj2AOjJY5L/2VB5fARZ2cA - x4CIUqCbM6DgJ9FYGJ629YAJ8eH9U7CC3g== -X-Google-Smtp-Source: - ABdhPJz9FBgRtp7SHTW2BICUUPHvdN1vEdLJP8V3sn7sYgqugP0WuiDc/DRtvRECan9YqreK37PSHA== -X-Received: by 2002:a1c:1dc1:: with SMTP id - d184mr19004343wmd.169.1606050255890; - Sun, 22 Nov 2020 05:04:15 -0800 (PST) -Received: from apple.sigmaris.info (ebrouter.sigmaris.info. [82.69.107.165]) - by smtp.gmail.com with ESMTPSA id i6sm10968566wma.42.2020.11.22.05.04.15 - (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); - Sun, 22 Nov 2020 05:04:15 -0800 (PST) -From: Hugh Cole-Baker -To: U-Boot Mailing List -Cc: Hugh Cole-Baker , - Kever Yang , - Heiko Stuebner , - Jagan Teki , - Klaus Goger , - Peter Robinson , - Philipp Tomsich , - Simon Glass -Subject: [PATCH v2 3/3] rockchip: puma-haikou: default to SPI bus 1 for - SPI-flash -Date: Sun, 22 Nov 2020 13:03:46 +0000 -Message-Id: <20201122130346.11621-4-sigmaris@gmail.com> -X-Mailer: git-send-email 2.24.3 (Apple Git-128) -In-Reply-To: <20201122130346.11621-1-sigmaris@gmail.com> -References: <20201122130346.11621-1-sigmaris@gmail.com> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -SPI flash on this machine is located on bus 1, default to using bus 1 -for SPI flash and stop aliasing it to bus 0. Formerly the alias spi1 -pointed to &spi5, use an alias spi5 for this instead. - -Signed-off-by: Hugh Cole-Baker -Suggested-by: Kever Yang ---- - -Changes in v2: -New patch. - - arch/arm/dts/rk3399-puma-haikou-u-boot.dtsi | 3 +-- - configs/puma-rk3399_defconfig | 2 ++ - 2 files changed, 3 insertions(+), 2 deletions(-) - -diff --git a/arch/arm/dts/rk3399-puma-haikou-u-boot.dtsi b/arch/arm/dts/rk3399-puma-haikou-u-boot.dtsi -index 29846c4b001..e7a1aea3a56 100644 ---- a/arch/arm/dts/rk3399-puma-haikou-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-puma-haikou-u-boot.dtsi -@@ -28,8 +28,7 @@ - }; - - aliases { -- spi0 = &spi1; -- spi1 = &spi5; -+ spi5 = &spi5; - }; - - /* -diff --git a/configs/puma-rk3399_defconfig b/configs/puma-rk3399_defconfig -index 60178e3754c..0f15936c2d6 100644 ---- a/configs/puma-rk3399_defconfig -+++ b/configs/puma-rk3399_defconfig -@@ -44,6 +44,7 @@ CONFIG_ENV_OVERWRITE=y - CONFIG_ENV_IS_IN_MMC=y - CONFIG_SYS_RELOC_GD_ENV_ADDR=y - CONFIG_SYS_MMC_ENV_DEV=1 -+CONFIG_SPL_DM_SEQ_ALIAS=y - CONFIG_ROCKCHIP_GPIO=y - CONFIG_SYS_I2C_ROCKCHIP=y - CONFIG_MISC=y -@@ -53,6 +54,7 @@ CONFIG_MMC_DW_ROCKCHIP=y - CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_SDMA=y - CONFIG_MMC_SDHCI_ROCKCHIP=y -+CONFIG_SF_DEFAULT_BUS=1 - CONFIG_SF_DEFAULT_SPEED=20000000 - CONFIG_SPI_FLASH_GIGADEVICE=y - CONFIG_SPI_FLASH_WINBOND=y diff --git a/sources b/sources index 1e6a02f..77f0525 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2021.01.tar.bz2) = 40dd4d9ef87a1829158658c433d46a047a39c0d8c314ad8d133f7240343ee3a75b060f009dd2efe598cfb8a766773f6cd773ea7f7745ee88e52a771c77eb1c6e +SHA512 (u-boot-2021.04-rc1.tar.bz2) = ea3adadd7f41d6801487a5c5189b664fd3351c24a57fbf0885f2548f8aebb2fc89f95214e0f76d6623d5ef8ea518eaaef50f117ca040f8b723e5d620e8014e9f diff --git a/sunxi-add-PineCube-board.patch b/sunxi-add-PineCube-board.patch deleted file mode 100644 index dd8ec26..0000000 --- a/sunxi-add-PineCube-board.patch +++ /dev/null @@ -1,222 +0,0 @@ -From patchwork Wed Nov 18 10:27:17 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Icenowy Zheng -X-Patchwork-Id: 1402159 -X-Patchwork-Delegate: andre.przywara@arm.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=none (p=none dis=none) header.from=aosc.io -Authentication-Results: ozlabs.org; - dkim=fail reason="signature verification failed" (1024-bit key; - unprotected) header.d=mymailcheap.com header.i=@mymailcheap.com - header.a=rsa-sha256 header.s=default header.b=YYrkSpBD; - dkim=fail reason="signature verification failed" (1024-bit key; - unprotected) header.d=aosc.io header.i=@aosc.io header.a=rsa-sha256 - header.s=default header.b=o7lHQ4SZ; - dkim-atps=neutral -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CbfCp3G62z9s1l - for ; Wed, 18 Nov 2020 21:28:22 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 00D6D82304; - Wed, 18 Nov 2020 11:28:16 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=aosc.io -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=fail reason="signature verification failed" (1024-bit key; - unprotected) header.d=mymailcheap.com header.i=@mymailcheap.com - header.b="YYrkSpBD"; - dkim=fail reason="signature verification failed" (1024-bit key; - unprotected) header.d=aosc.io header.i=@aosc.io header.b="o7lHQ4SZ"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 2E5B282309; Wed, 18 Nov 2020 11:28:11 +0100 (CET) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham - autolearn_force=no version=3.4.2 -Received: from relay1.mymailcheap.com (relay1.mymailcheap.com - [144.217.248.100]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id EC082808F1 - for ; Wed, 18 Nov 2020 11:28:05 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=aosc.io -Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=icenowy@aosc.io -Received: from filter2.mymailcheap.com (filter2.mymailcheap.com - [91.134.140.82]) - by relay1.mymailcheap.com (Postfix) with ESMTPS id 18A423F201; - Wed, 18 Nov 2020 10:27:59 +0000 (UTC) -Received: from localhost (localhost [127.0.0.1]) - by filter2.mymailcheap.com (Postfix) with ESMTP id 6377C2A7E9; - Wed, 18 Nov 2020 11:27:58 +0100 (CET) -DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mymailcheap.com; - s=default; t=1605695278; - bh=vA5tPn4fjpXJj/OQnRg+m708mrodc5u5TJSDVOSBnHo=; - h=From:To:Cc:Subject:Date:From; - b=YYrkSpBDGdpkLi16yGwNw7yMTXXW566rTdXX2RSRxCe6FylY99qiYDmZR+PZFqCX0 - t3yDL0nO6zMKUvJVqZaTwsroyblAKNCaLz1AfCURNqCwohtJcIkDsegRYz9slzT9Qu - BQkTT6dosAIQFtAVrc48QBX38eHXMYreqkbHXz5g= -Received: from filter2.mymailcheap.com ([127.0.0.1]) - by localhost (filter2.mymailcheap.com [127.0.0.1]) (amavisd-new, port 10024) - with ESMTP id eCMZCx2FVDgE; Wed, 18 Nov 2020 11:27:57 +0100 (CET) -Received: from mail20.mymailcheap.com (mail20.mymailcheap.com [51.83.111.147]) - (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by filter2.mymailcheap.com (Postfix) with ESMTPS; - Wed, 18 Nov 2020 11:27:57 +0100 (CET) -Received: from [213.133.102.83] (ml.mymailcheap.com [213.133.102.83]) - by mail20.mymailcheap.com (Postfix) with ESMTP id A597A400BE; - Wed, 18 Nov 2020 10:27:56 +0000 (UTC) -Authentication-Results: mail20.mymailcheap.com; dkim=pass (1024-bit key; - unprotected) header.d=aosc.io header.i=@aosc.io header.b="o7lHQ4SZ"; - dkim-atps=neutral -AI-Spam-Status: Not processed -Received: from ice-e5v2.lan (unknown [59.41.160.51]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest - SHA256) (No client certificate requested) - by mail20.mymailcheap.com (Postfix) with ESMTPSA id 3B979400BE; - Wed, 18 Nov 2020 10:27:45 +0000 (UTC) -DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=aosc.io; s=default; - t=1605695270; bh=vA5tPn4fjpXJj/OQnRg+m708mrodc5u5TJSDVOSBnHo=; - h=From:To:Cc:Subject:Date:From; - b=o7lHQ4SZ+kcNlSGrF+USzZxRQhtIEcZFQPjvsiu+MiK+TTjArUzo5bRKHH0I4ZcDM - a4Ywg6IcctT99QEZGbRIHqhvjH6/Kvj4lWM77Bb0DrlHXfEdOj3LC7KiAF1vVGFfPI - 0oTEacf71O2OWPmQBqEH/uaV/IiGI4rZvgWiMPkk= -From: Icenowy Zheng -To: Jagan Teki , - Andre Przywara , - Hans de Goede -Cc: u-boot@lists.denx.de, linux-sunxi@googlegroups.com, - Icenowy Zheng -Subject: [PATCH v3] sunxi: add PineCube board -Date: Wed, 18 Nov 2020 18:27:17 +0800 -Message-Id: <20201118102717.635129-1-icenowy@aosc.io> -X-Mailer: git-send-email 2.28.0 -MIME-Version: 1.0 -X-Rspamd-Queue-Id: A597A400BE -X-Spamd-Result: default: False [4.90 / 20.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; - ARC_NA(0.00)[]; R_DKIM_ALLOW(0.00)[aosc.io:s=default]; - RECEIVED_SPAMHAUS_PBL(0.00)[59.41.160.51:received]; - FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; - R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; - MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[aosc.io]; - BROKEN_CONTENT_TYPE(1.50)[]; R_SPF_SOFTFAIL(0.00)[~all]; - RCPT_COUNT_FIVE(0.00)[6]; ML_SERVERS(-3.10)[213.133.102.83]; - DKIM_TRACE(0.00)[aosc.io:+]; MID_CONTAINS_FROM(1.00)[]; - RCVD_NO_TLS_LAST(0.10)[]; FROM_EQ_ENVFROM(0.00)[]; - MIME_TRACE(0.00)[0:+]; - ASN(0.00)[asn:24940, ipnet:213.133.96.0/19, country:DE]; - RCVD_COUNT_TWO(0.00)[2]; - HFILTER_HELO_BAREIP(3.00)[213.133.102.83,1] -X-Rspamd-Server: mail20.mymailcheap.com -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -PineCube is an IP camera development kit released by Pine64. - -It comes with the following compoents: - -- A mainboard with Sochip S3 SoC, a 16MByte SPI Flash, AXP209 PMIC, -a power-only microUSB connector, a USB Type-A connector, a 10/100Mbps -Ethernet port and FPC connectors for camera and daughter board. -- An OV5640-based camera module which is connected to the parallel CSI -bus of the mainboard. -- A daughterboard with several buttons, a SD slot, some IR LEDs, a -microphone and a speaker connector. - -As the device tree is synchronized in a previous commit, just add it to -Makefile, create a new MAINTAINER item and provide a defconfig. - -Signed-off-by: Icenowy Zheng -Reviewed-by: Andre Przywara ---- -Changes since v2: -- Add Makefile reference to DT. -Changes since v1: -- Dropped LDO3 quirk. - - arch/arm/dts/Makefile | 1 + - board/sunxi/MAINTAINERS | 5 +++++ - configs/pinecube_defconfig | 15 +++++++++++++++ - 3 files changed, 21 insertions(+) - create mode 100644 configs/pinecube_defconfig - -diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile -index 7d1a369845..e6993733b0 100644 ---- a/arch/arm/dts/Makefile -+++ b/arch/arm/dts/Makefile -@@ -587,6 +587,7 @@ dtb-$(CONFIG_MACH_SUN8I_R40) += \ - sun8i-r40-bananapi-m2-ultra.dtb \ - sun8i-v40-bananapi-m2-berry.dtb - dtb-$(CONFIG_MACH_SUN8I_V3S) += \ -+ sun8i-s3-pinecube.dtb \ - sun8i-v3s-licheepi-zero.dtb - dtb-$(CONFIG_MACH_SUN50I_H5) += \ - sun50i-h5-bananapi-m2-plus.dtb \ -diff --git a/board/sunxi/MAINTAINERS b/board/sunxi/MAINTAINERS -index d3755ae41a..735801ae1d 100644 ---- a/board/sunxi/MAINTAINERS -+++ b/board/sunxi/MAINTAINERS -@@ -440,6 +440,11 @@ M: Vasily Khoruzhick - S: Maintained - F: configs/pinebook_defconfig - -+PINECUBE BOARD: -+M: Icenowy Zheng -+S: Maintained -+F: configs/pinecube_defconfig -+ - PINE64 BOARDS - M: Andre Przywara - S: Maintained -diff --git a/configs/pinecube_defconfig b/configs/pinecube_defconfig -new file mode 100644 -index 0000000000..a8c404f6b1 ---- /dev/null -+++ b/configs/pinecube_defconfig -@@ -0,0 +1,15 @@ -+CONFIG_ARM=y -+CONFIG_ARCH_SUNXI=y -+CONFIG_SPL=y -+CONFIG_MACH_SUN8I_V3S=y -+CONFIG_SUNXI_DRAM_DDR3_1333=y -+CONFIG_DRAM_CLK=504 -+CONFIG_DRAM_ODT_EN=y -+CONFIG_I2C0_ENABLE=y -+CONFIG_DEFAULT_DEVICE_TREE="sun8i-s3-pinecube" -+CONFIG_SPL_I2C_SUPPORT=y -+# CONFIG_NETDEVICES is not set -+CONFIG_AXP209_POWER=y -+CONFIG_AXP_DCDC2_VOLT=1250 -+CONFIG_AXP_DCDC3_VOLT=3300 -+CONFIG_CONS_INDEX=3 diff --git a/uboot-tools.spec b/uboot-tools.spec index 4bdd596..d5d0f11 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -#global candidate rc1 +%global candidate rc1 Name: uboot-tools -Version: 2021.01 -Release: 2%{?candidate:.%{candidate}}%{?dist} +Version: 2021.04 +Release: 0.1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -26,19 +26,14 @@ Patch3: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch # Board fixes and enablement # AllWinner improvements Patch10: AllWinner-PineTab.patch -Patch11: sunxi-add-PineCube-board.patch -Patch12: 0001-Fixes-for-AllWinner-ethernet-network-interfaces.patch -Patch13: 0001-sunxi-don-t-define-MACPWR-and-SATAPWR-to-empty-strin.patch # TI fixes -Patch14: 0001-Fix-BeagleAI-detection.patch +Patch11: 0001-Fix-BeagleAI-detection.patch # Rockchips improvements -Patch15: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch -Patch16: rk3399-Pinebook-pro-EDP-support.patch -Patch17: rockchip-Fix-SPI-boot-on-Pinebook-Pro-Puma-and-RK3399-ROC-PC.patch +Patch12: rk3399-Pinebook-pro-EDP-support.patch # Raspberry Pi improvements -Patch18: Raspberry-Pi-400-Compute-Module-4-support.patch -Patch19: rng-Add-iProc-RNG200-driver.patch -Patch20: Raspberry-Pi-4-PCIe-handover.patch +Patch13: Raspberry-Pi-400-Compute-Module-4-support.patch +Patch14: Raspberry-Pi-4-PCIe-handover.patch +Patch15: rng-Add-iProc-RNG200-driver.patch BuildRequires: bc BuildRequires: dtc @@ -115,12 +110,12 @@ do echo "Board: $board using sun50i_a64" cp /usr/share/arm-trusted-firmware/sun50i_a64/* builds/$(echo $board)/ fi - sun50h6=(orangepi_lite2 orangepi_one_plus pine_h64) + sun50h6=(beelink_gs1 orangepi_3 orangepi_lite2 orangepi_one_plus orangepi_zero2 pine_h64 tanix_tx6) if [[ " ${sun50h6[*]} " == *" $board "* ]]; then echo "Board: $board using sun50i_h6" cp /usr/share/arm-trusted-firmware/sun50i_h6/* builds/$(echo $board)/ fi - rk3328=(evb-rk3328 rock64-rk3328 rock-pi-e-rk3328 roc-cc-rk3328) + rk3328=(evb-rk3328 nanopi-r2s-rk3328 rock64-rk3328 rock-pi-e-rk3328 roc-cc-rk3328) if [[ " ${rk3328[*]} " == *" $board "* ]]; then echo "Board: $board using rk3328" cp /usr/share/arm-trusted-firmware/rk3328/* builds/$(echo $board)/ @@ -239,6 +234,10 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Mon Feb 01 2021 Peter Robinson - 2021.04-0.1.rc1 +- Update to 2021.04 RC1 +- Add new upstream devices + * Wed Jan 27 2021 Fedora Release Engineering - 2021.01-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild From a05d9090bf32b71b04eed97b201686db818b24c2 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 2 Feb 2021 09:42:30 +0000 Subject: [PATCH 050/271] fix iproc_rng200 driver for upstream changes --- rng-Add-iProc-RNG200-driver.patch | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/rng-Add-iProc-RNG200-driver.patch b/rng-Add-iProc-RNG200-driver.patch index d8dcfa1..b5e54c5 100644 --- a/rng-Add-iProc-RNG200-driver.patch +++ b/rng-Add-iProc-RNG200-driver.patch @@ -152,11 +152,11 @@ index 0000000000..1063f43953 +#define RNG_FIFO_COUNT_OFFSET 0x24 +#define RNG_FIFO_COUNT_RNG_FIFO_COUNT_MASK 0x000000FF + -+struct iproc_rng200_platdata { ++struct iproc_rng200_plat { + fdt_addr_t base; +}; + -+static void iproc_rng200_enable(struct iproc_rng200_platdata *pdata, bool enable) ++static void iproc_rng200_enable(struct iproc_rng200_plat *pdata, bool enable) +{ + fdt_addr_t rng_base = pdata->base; + u32 val; @@ -172,7 +172,7 @@ index 0000000000..1063f43953 + +} + -+static void iproc_rng200_restart(struct iproc_rng200_platdata *pdata) ++static void iproc_rng200_restart(struct iproc_rng200_plat *pdata) +{ + fdt_addr_t rng_base = pdata->base; + u32 val; @@ -204,7 +204,7 @@ index 0000000000..1063f43953 + +static int iproc_rng200_read(struct udevice *dev, void *data, size_t len) +{ -+ struct iproc_rng200_platdata *priv = dev_get_platdata(dev); ++ struct iproc_rng200_plat *priv = dev_get_plat(dev); + char *buf = (char *)data; + u32 num_remaining = len; + u32 status; @@ -256,7 +256,7 @@ index 0000000000..1063f43953 + +static int iproc_rng200_probe(struct udevice *dev) +{ -+ struct iproc_rng200_platdata *priv = dev_get_platdata(dev); ++ struct iproc_rng200_plat *priv = dev_get_plat(dev); + + iproc_rng200_enable(priv, true); + @@ -265,16 +265,16 @@ index 0000000000..1063f43953 + +static int iproc_rng200_remove(struct udevice *dev) +{ -+ struct iproc_rng200_platdata *priv = dev_get_platdata(dev); ++ struct iproc_rng200_plat *priv = dev_get_plat(dev); + + iproc_rng200_enable(priv, false); + + return 0; +} + -+static int iproc_rng200_ofdata_to_platdata(struct udevice *dev) ++static int iproc_rng200_of_to_plat(struct udevice *dev) +{ -+ struct iproc_rng200_platdata *pdata = dev_get_platdata(dev); ++ struct iproc_rng200_plat *pdata = dev_get_plat(dev); + + pdata->base = dev_read_addr(dev); + if (!pdata->base) @@ -300,8 +300,8 @@ index 0000000000..1063f43953 + .ops = &iproc_rng200_ops, + .probe = iproc_rng200_probe, + .remove = iproc_rng200_remove, -+ .platdata_auto_alloc_size = sizeof(struct iproc_rng200_platdata), -+ .ofdata_to_platdata = iproc_rng200_ofdata_to_platdata, ++ .priv_auto = sizeof(struct iproc_rng200_plat), ++ .of_to_plat = iproc_rng200_of_to_plat, +}; From patchwork Tue Dec 15 09:49:24 2020 @@ -440,11 +440,11 @@ diff --git a/drivers/rng/iproc_rng200.c b/drivers/rng/iproc_rng200.c index 1063f43953..378f6cf48d 100644 --- a/drivers/rng/iproc_rng200.c +++ b/drivers/rng/iproc_rng200.c -@@ -50,7 +50,6 @@ static void iproc_rng200_enable(struct iproc_rng200_platdata *pdata, bool enable +@@ -50,7 +50,6 @@ static void iproc_rng200_enable(struct iproc_rng200_plat *pdata, bool enable val &= ~RNG_CTRL_RNG_RBGEN_ENABLE; writel(val, rng_base + RNG_CTRL_OFFSET); - } - static void iproc_rng200_restart(struct iproc_rng200_platdata *pdata) + static void iproc_rng200_restart(struct iproc_rng200_plat *pdata) From 82aabc8bb2c5b8c5f0fdfed1726d34ac755e4040 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 10 Feb 2021 11:05:10 +0000 Subject: [PATCH 051/271] Allwinner network fixes --- ...r-sync-from-linux-for-RGMII-RX-TX-de.patch | 2668 +++++++++++++++++ uboot-tools.spec | 7 +- uefi-use-Fedora-specific-path-name.patch | 14 +- 3 files changed, 2681 insertions(+), 8 deletions(-) create mode 100644 0001-arm-dts-allwinner-sync-from-linux-for-RGMII-RX-TX-de.patch diff --git a/0001-arm-dts-allwinner-sync-from-linux-for-RGMII-RX-TX-de.patch b/0001-arm-dts-allwinner-sync-from-linux-for-RGMII-RX-TX-de.patch new file mode 100644 index 0000000..fe75a7a --- /dev/null +++ b/0001-arm-dts-allwinner-sync-from-linux-for-RGMII-RX-TX-de.patch @@ -0,0 +1,2668 @@ +From d6aa8909c2099371333c83546d26d46a3b71ba48 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Wed, 10 Feb 2021 11:01:01 +0000 +Subject: [PATCH] arm: dts: allwinner: sync from linux for RGMII RX/TX delay + fixes + +Sync over a subset of the AllWinner dts changes from Linux 5.11 +for the RGMII RX/TX delay network fixes. + +Signed-off-by: Peter Robinson +--- + arch/arm/dts/sun50i-a64-bananapi-m64.dts | 10 +- + arch/arm/dts/sun50i-a64-orangepi-win.dts | 10 +- + arch/arm/dts/sun50i-a64-pine64-plus.dts | 2 +- + arch/arm/dts/sun50i-a64-sopine-baseboard.dts | 10 +- + arch/arm/dts/sun50i-a64.dtsi | 34 ++- + .../dts/sun50i-h5-bananapi-m2-plus-v1.2.dts | 1 + + .../arm/dts/sun50i-h5-libretech-all-h5-cc.dts | 2 +- + arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts | 2 +- + arch/arm/dts/sun50i-h5-orangepi-pc2.dts | 23 +- + arch/arm/dts/sun50i-h5-orangepi-prime.dts | 2 +- + .../arm/dts/sun50i-h5-orangepi-zero-plus2.dts | 38 +++ + arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts | 14 +- + arch/arm/dts/sun7i-a20-bananapi.dts | 24 +- + arch/arm/dts/sun7i-a20-bananapro.dts | 14 +- + arch/arm/dts/sun7i-a20-cubieboard2.dts | 24 +- + arch/arm/dts/sun7i-a20-cubietruck.dts | 14 +- + arch/arm/dts/sun7i-a20-hummingbird.dts | 21 +- + arch/arm/dts/sun7i-a20-i12-tvbox.dts | 12 +- + arch/arm/dts/sun7i-a20-icnova-swac.dts | 15 +- + arch/arm/dts/sun7i-a20-itead-ibox.dts | 4 +- + arch/arm/dts/sun7i-a20-lamobo-r1.dts | 14 +- + arch/arm/dts/sun7i-a20-m3.dts | 12 +- + arch/arm/dts/sun7i-a20-olimex-som-evb.dts | 12 +- + arch/arm/dts/sun7i-a20-olimex-som204-evb.dts | 24 +- + arch/arm/dts/sun7i-a20-olinuxino-lime.dts | 30 +-- + arch/arm/dts/sun7i-a20-olinuxino-lime2.dts | 44 ++-- + arch/arm/dts/sun7i-a20-olinuxino-micro.dts | 30 +-- + arch/arm/dts/sun7i-a20-orangepi-mini.dts | 24 +- + arch/arm/dts/sun7i-a20-orangepi.dts | 24 +- + arch/arm/dts/sun7i-a20-pcduino3-nano.dts | 28 +-- + arch/arm/dts/sun7i-a20-pcduino3.dts | 24 +- + arch/arm/dts/sun7i-a20-wexler-tab7200.dts | 12 +- + arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts | 24 +- + arch/arm/dts/sun7i-a20.dtsi | 218 +++++++++++++++++- + arch/arm/dts/sun8i-a83t-bananapi-m3.dts | 53 ++++- + arch/arm/dts/sun8i-a83t-cubietruck-plus.dts | 71 +++++- + arch/arm/dts/sun8i-h3-orangepi-pc-plus.dts | 5 - + arch/arm/dts/sun8i-h3-orangepi-plus2e.dts | 2 +- + arch/arm/dts/sun8i-h3-orangepi-zero-plus2.dts | 38 +++ + arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts | 12 +- + arch/arm/dts/sun9i-a80-cubieboard4.dts | 61 +++-- + arch/arm/dts/sun9i-a80-optimus.dts | 50 +++- + arch/arm/dts/sunxi-bananapi-m2-plus.dtsi | 2 +- + 43 files changed, 752 insertions(+), 338 deletions(-) + +diff --git a/arch/arm/dts/sun50i-a64-bananapi-m64.dts b/arch/arm/dts/sun50i-a64-bananapi-m64.dts +index 883f217efb..e5e840b9fb 100644 +--- a/arch/arm/dts/sun50i-a64-bananapi-m64.dts ++++ b/arch/arm/dts/sun50i-a64-bananapi-m64.dts +@@ -105,7 +105,7 @@ + &emac { + pinctrl-names = "default"; + pinctrl-0 = <&rgmii_pins>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + phy-handle = <&ext_rgmii_phy>; + phy-supply = <®_dc1sw>; + status = "okay"; +@@ -331,10 +331,10 @@ + "Microphone", "Microphone Jack", + "Microphone", "Onboard Microphone"; + simple-audio-card,routing = +- "Left DAC", "AIF1 Slot 0 Left", +- "Right DAC", "AIF1 Slot 0 Right", +- "AIF1 Slot 0 Left ADC", "Left ADC", +- "AIF1 Slot 0 Right ADC", "Right ADC", ++ "Left DAC", "DACL", ++ "Right DAC", "DACR", ++ "ADCL", "Left ADC", ++ "ADCR", "Right ADC", + "Headphone Jack", "HP", + "MIC2", "Microphone Jack", + "Onboard Microphone", "MBIAS", +diff --git a/arch/arm/dts/sun50i-a64-orangepi-win.dts b/arch/arm/dts/sun50i-a64-orangepi-win.dts +index fde9c7a99b..70e31743f0 100644 +--- a/arch/arm/dts/sun50i-a64-orangepi-win.dts ++++ b/arch/arm/dts/sun50i-a64-orangepi-win.dts +@@ -120,7 +120,7 @@ + &emac { + pinctrl-names = "default"; + pinctrl-0 = <&rgmii_pins>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + phy-handle = <&ext_rgmii_phy>; + phy-supply = <®_gmac_3v3>; + status = "okay"; +@@ -330,10 +330,10 @@ + "Microphone", "Microphone Jack", + "Microphone", "Onboard Microphone"; + simple-audio-card,routing = +- "Left DAC", "AIF1 Slot 0 Left", +- "Right DAC", "AIF1 Slot 0 Right", +- "AIF1 Slot 0 Left ADC", "Left ADC", +- "AIF1 Slot 0 Right ADC", "Right ADC", ++ "Left DAC", "DACL", ++ "Right DAC", "DACR", ++ "ADCL", "Left ADC", ++ "ADCR", "Right ADC", + "Headphone Jack", "HP", + "MIC2", "Microphone Jack", + "Onboard Microphone", "MBIAS", +diff --git a/arch/arm/dts/sun50i-a64-pine64-plus.dts b/arch/arm/dts/sun50i-a64-pine64-plus.dts +index b26181cf90..b54099b654 100644 +--- a/arch/arm/dts/sun50i-a64-pine64-plus.dts ++++ b/arch/arm/dts/sun50i-a64-pine64-plus.dts +@@ -13,7 +13,7 @@ + &emac { + pinctrl-names = "default"; + pinctrl-0 = <&rgmii_pins>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-txid"; + phy-handle = <&ext_rgmii_phy>; + status = "okay"; + }; +diff --git a/arch/arm/dts/sun50i-a64-sopine-baseboard.dts b/arch/arm/dts/sun50i-a64-sopine-baseboard.dts +index 2f6ea9f3f6..d4069749d7 100644 +--- a/arch/arm/dts/sun50i-a64-sopine-baseboard.dts ++++ b/arch/arm/dts/sun50i-a64-sopine-baseboard.dts +@@ -79,7 +79,7 @@ + &emac { + pinctrl-names = "default"; + pinctrl-0 = <&rgmii_pins>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + phy-handle = <&ext_rgmii_phy>; + phy-supply = <®_dc1sw>; + status = "okay"; +@@ -159,11 +159,11 @@ + simple-audio-card,widgets = "Microphone", "Microphone Jack", + "Headphone", "Headphone Jack"; + simple-audio-card,routing = +- "Left DAC", "AIF1 Slot 0 Left", +- "Right DAC", "AIF1 Slot 0 Right", ++ "Left DAC", "DACL", ++ "Right DAC", "DACR", + "Headphone Jack", "HP", +- "AIF1 Slot 0 Left ADC", "Left ADC", +- "AIF1 Slot 0 Right ADC", "Right ADC", ++ "ADCL", "Left ADC", ++ "ADCR", "Right ADC", + "MIC2", "Microphone Jack"; + status = "okay"; + }; +diff --git a/arch/arm/dts/sun50i-a64.dtsi b/arch/arm/dts/sun50i-a64.dtsi +index 8dfbcd1440..51cc30e84e 100644 +--- a/arch/arm/dts/sun50i-a64.dtsi ++++ b/arch/arm/dts/sun50i-a64.dtsi +@@ -51,7 +51,7 @@ + reg = <0>; + enable-method = "psci"; + next-level-cache = <&L2>; +- clocks = <&ccu 21>; ++ clocks = <&ccu CLK_CPUX>; + clock-names = "cpu"; + #cooling-cells = <2>; + }; +@@ -62,7 +62,7 @@ + reg = <1>; + enable-method = "psci"; + next-level-cache = <&L2>; +- clocks = <&ccu 21>; ++ clocks = <&ccu CLK_CPUX>; + clock-names = "cpu"; + #cooling-cells = <2>; + }; +@@ -73,7 +73,7 @@ + reg = <2>; + enable-method = "psci"; + next-level-cache = <&L2>; +- clocks = <&ccu 21>; ++ clocks = <&ccu CLK_CPUX>; + clock-names = "cpu"; + #cooling-cells = <2>; + }; +@@ -84,7 +84,7 @@ + reg = <3>; + enable-method = "psci"; + next-level-cache = <&L2>; +- clocks = <&ccu 21>; ++ clocks = <&ccu CLK_CPUX>; + clock-names = "cpu"; + #cooling-cells = <2>; + }; +@@ -139,10 +139,10 @@ + simple-audio-card,mclk-fs = <128>; + simple-audio-card,aux-devs = <&codec_analog>; + simple-audio-card,routing = +- "Left DAC", "AIF1 Slot 0 Left", +- "Right DAC", "AIF1 Slot 0 Right", +- "AIF1 Slot 0 Left ADC", "Left ADC", +- "AIF1 Slot 0 Right ADC", "Right ADC"; ++ "Left DAC", "DACL", ++ "Right DAC", "DACR", ++ "ADCL", "Left ADC", ++ "ADCR", "Right ADC"; + status = "disabled"; + + cpudai: simple-audio-card,cpu { +@@ -157,6 +157,7 @@ + timer { + compatible = "arm,armv8-timer"; + allwinner,erratum-unknown1; ++ arm,no-tick-in-suspend; + interrupts = , + ; ++ compatible = "allwinner,sun50i-a64-i2s", ++ "allwinner,sun8i-h3-i2s"; ++ reg = <0x01c22800 0x400>; ++ interrupts = ; ++ clocks = <&ccu CLK_BUS_I2S2>, <&ccu CLK_I2S2>; ++ clock-names = "apb", "mod"; ++ resets = <&ccu RST_BUS_I2S2>; ++ dma-names = "rx", "tx"; ++ dmas = <&dma 27>, <&dma 27>; ++ status = "disabled"; ++ }; ++ + dai: dai@1c22c00 { + #sound-dai-cells = <0>; + compatible = "allwinner,sun50i-a64-codec-i2s"; +@@ -860,7 +875,8 @@ + + codec: codec@1c22e00 { + #sound-dai-cells = <0>; +- compatible = "allwinner,sun8i-a33-codec"; ++ compatible = "allwinner,sun50i-a64-codec", ++ "allwinner,sun8i-a33-codec"; + reg = <0x01c22e00 0x600>; + interrupts = ; + clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>; +diff --git a/arch/arm/dts/sun50i-h5-bananapi-m2-plus-v1.2.dts b/arch/arm/dts/sun50i-h5-bananapi-m2-plus-v1.2.dts +index 2e2b14c0ae..8857a37915 100644 +--- a/arch/arm/dts/sun50i-h5-bananapi-m2-plus-v1.2.dts ++++ b/arch/arm/dts/sun50i-h5-bananapi-m2-plus-v1.2.dts +@@ -3,6 +3,7 @@ + + /dts-v1/; + #include "sun50i-h5.dtsi" ++#include "sun50i-h5-cpu-opp.dtsi" + #include + + / { +diff --git a/arch/arm/dts/sun50i-h5-libretech-all-h5-cc.dts b/arch/arm/dts/sun50i-h5-libretech-all-h5-cc.dts +index df1b9263ad..6e30a564c8 100644 +--- a/arch/arm/dts/sun50i-h5-libretech-all-h5-cc.dts ++++ b/arch/arm/dts/sun50i-h5-libretech-all-h5-cc.dts +@@ -36,7 +36,7 @@ + pinctrl-0 = <&emac_rgmii_pins>; + phy-supply = <®_gmac_3v3>; + phy-handle = <&ext_rgmii_phy>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + /delete-property/ allwinner,leds-active-low; + status = "okay"; + }; +diff --git a/arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts b/arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts +index 4f9ba53ffa..9d93fe1536 100644 +--- a/arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts ++++ b/arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts +@@ -96,7 +96,7 @@ + pinctrl-0 = <&emac_rgmii_pins>; + phy-supply = <®_gmac_3v3>; + phy-handle = <&ext_rgmii_phy>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + status = "okay"; + }; + +diff --git a/arch/arm/dts/sun50i-h5-orangepi-pc2.dts b/arch/arm/dts/sun50i-h5-orangepi-pc2.dts +index 70b5f09984..8bf2db9dcb 100644 +--- a/arch/arm/dts/sun50i-h5-orangepi-pc2.dts ++++ b/arch/arm/dts/sun50i-h5-orangepi-pc2.dts +@@ -61,6 +61,7 @@ + label = "sw4"; + linux,code = ; + gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>; ++ wakeup-source; + }; + }; + +@@ -93,6 +94,10 @@ + status = "okay"; + }; + ++&cpu0 { ++ cpu-supply = <®_vdd_cpux>; ++}; ++ + &de { + status = "okay"; + }; +@@ -118,7 +123,7 @@ + pinctrl-0 = <&emac_rgmii_pins>; + phy-supply = <®_gmac_3v3>; + phy-handle = <&ext_rgmii_phy>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + status = "okay"; + }; + +@@ -168,6 +173,22 @@ + status = "okay"; + }; + ++&r_i2c { ++ status = "okay"; ++ ++ reg_vdd_cpux: regulator@65 { ++ compatible = "silergy,sy8106a"; ++ reg = <0x65>; ++ regulator-name = "vdd-cpux"; ++ silergy,fixed-microvolt = <1100000>; ++ regulator-min-microvolt = <1000000>; ++ regulator-max-microvolt = <1400000>; ++ regulator-ramp-delay = <200>; ++ regulator-boot-on; ++ regulator-always-on; ++ }; ++}; ++ + &spi0 { + status = "okay"; + +diff --git a/arch/arm/dts/sun50i-h5-orangepi-prime.dts b/arch/arm/dts/sun50i-h5-orangepi-prime.dts +index cb44bfa598..33ab44072e 100644 +--- a/arch/arm/dts/sun50i-h5-orangepi-prime.dts ++++ b/arch/arm/dts/sun50i-h5-orangepi-prime.dts +@@ -124,7 +124,7 @@ + pinctrl-0 = <&emac_rgmii_pins>; + phy-supply = <®_gmac_3v3>; + phy-handle = <&ext_rgmii_phy>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + status = "okay"; + }; + +diff --git a/arch/arm/dts/sun50i-h5-orangepi-zero-plus2.dts b/arch/arm/dts/sun50i-h5-orangepi-zero-plus2.dts +index c95a685413..de19e68eb8 100644 +--- a/arch/arm/dts/sun50i-h5-orangepi-zero-plus2.dts ++++ b/arch/arm/dts/sun50i-h5-orangepi-zero-plus2.dts +@@ -30,6 +30,21 @@ + }; + }; + ++ leds { ++ compatible = "gpio-leds"; ++ ++ pwr { ++ label = "orangepi:green:pwr"; ++ gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; ++ default-state = "on"; ++ }; ++ ++ status { ++ label = "orangepi:red:status"; ++ gpios = <&pio 0 17 GPIO_ACTIVE_HIGH>; ++ }; ++ }; ++ + reg_vcc3v3: vcc3v3 { + compatible = "regulator-fixed"; + regulator-name = "vcc3v3"; +@@ -48,6 +63,10 @@ + status = "okay"; + }; + ++&ehci0 { ++ status = "okay"; ++}; ++ + &hdmi { + status = "okay"; + }; +@@ -92,6 +111,10 @@ + status = "okay"; + }; + ++&ohci0 { ++ status = "okay"; ++}; ++ + &uart0 { + pinctrl-names = "default"; + pinctrl-0 = <&uart0_pa_pins>; +@@ -103,3 +126,18 @@ + pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>; + status = "okay"; + }; ++ ++&usb_otg { ++ /* ++ * According to schematics CN1 MicroUSB port can be used to take ++ * external 5V to power up the board VBUS. On the contrary CN1 MicroUSB ++ * port cannot provide power externally even if the board is powered ++ * via GPIO pins. It thus makes sense to force peripheral mode. ++ */ ++ dr_mode = "peripheral"; ++ status = "okay"; ++}; ++ ++&usbphy { ++ status = "okay"; ++}; +diff --git a/arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts b/arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts +index e2bfe00588..8945dbb114 100644 +--- a/arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts ++++ b/arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts +@@ -129,14 +129,10 @@ + &gmac { + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; +- phy = <&phy1>; +- phy-mode = "rgmii"; ++ phy-handle = <&phy1>; ++ phy-mode = "rgmii-id"; + phy-supply = <®_gmac_3v3>; + status = "okay"; +- +- phy1: ethernet-phy@1 { +- reg = <1>; +- }; + }; + + &hdmi { +@@ -171,6 +167,12 @@ + status = "okay"; + }; + ++&gmac_mdio { ++ phy1: ethernet-phy@1 { ++ reg = <1>; ++ }; ++}; ++ + &mmc0 { + vmmc-supply = <®_vcc3v3>; + bus-width = <4>; +diff --git a/arch/arm/dts/sun7i-a20-bananapi.dts b/arch/arm/dts/sun7i-a20-bananapi.dts +index 81bc85d398..0b3d9ae756 100644 +--- a/arch/arm/dts/sun7i-a20-bananapi.dts ++++ b/arch/arm/dts/sun7i-a20-bananapi.dts +@@ -131,14 +131,10 @@ + &gmac { + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; +- phy = <&phy1>; +- phy-mode = "rgmii"; ++ phy-handle = <&phy1>; ++ phy-mode = "rgmii-id"; + phy-supply = <®_gmac_3v3>; + status = "okay"; +- +- phy1: ethernet-phy@1 { +- reg = <1>; +- }; + }; + + &hdmi { +@@ -171,6 +167,12 @@ + status = "okay"; + }; + ++&gmac_mdio { ++ phy1: ethernet-phy@1 { ++ reg = <1>; ++ }; ++}; ++ + &mmc0 { + vmmc-supply = <®_vcc3v3>; + bus-width = <4>; +@@ -246,12 +248,6 @@ + "SPI-MISO", "SPI-CE1", "", + "IO-6", "IO-3", "IO-2", "IO-0", "", "", "", "", + "", "", "", "", "", "", "", ""; +- +- usb0_id_detect_pin: usb0-id-detect-pin { +- pins = "PH4"; +- function = "gpio_in"; +- bias-pull-up; +- }; + }; + + #include "axp209.dtsi" +@@ -329,9 +325,7 @@ + }; + + &usbphy { +- pinctrl-names = "default"; +- pinctrl-0 = <&usb0_id_detect_pin>; +- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ ++ usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */ + usb0_vbus_power-supply = <&usb_power_supply>; + usb0_vbus-supply = <®_usb0_vbus>; + usb1_vbus-supply = <®_usb1_vbus>; +diff --git a/arch/arm/dts/sun7i-a20-bananapro.dts b/arch/arm/dts/sun7i-a20-bananapro.dts +index 0176e9de01..5740f94427 100644 +--- a/arch/arm/dts/sun7i-a20-bananapro.dts ++++ b/arch/arm/dts/sun7i-a20-bananapro.dts +@@ -109,14 +109,10 @@ + &gmac { + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; +- phy = <&phy1>; +- phy-mode = "rgmii"; ++ phy-handle = <&phy1>; ++ phy-mode = "rgmii-id"; + phy-supply = <®_gmac_3v3>; + status = "okay"; +- +- phy1: ethernet-phy@1 { +- reg = <1>; +- }; + }; + + &i2c0 { +@@ -143,6 +139,12 @@ + status = "okay"; + }; + ++&gmac_mdio { ++ phy1: ethernet-phy@1 { ++ reg = <1>; ++ }; ++}; ++ + &mmc0 { + vmmc-supply = <®_vcc3v3>; + bus-width = <4>; +diff --git a/arch/arm/dts/sun7i-a20-cubieboard2.dts b/arch/arm/dts/sun7i-a20-cubieboard2.dts +index 200685b0b1..b8203e4ef2 100644 +--- a/arch/arm/dts/sun7i-a20-cubieboard2.dts ++++ b/arch/arm/dts/sun7i-a20-cubieboard2.dts +@@ -115,13 +115,9 @@ + &gmac { + pinctrl-names = "default"; + pinctrl-0 = <&gmac_mii_pins>; +- phy = <&phy1>; ++ phy-handle = <&phy1>; + phy-mode = "mii"; + status = "okay"; +- +- phy1: ethernet-phy@1 { +- reg = <1>; +- }; + }; + + &hdmi { +@@ -161,6 +157,12 @@ + status = "okay"; + }; + ++&gmac_mdio { ++ phy1: ethernet-phy@1 { ++ reg = <1>; ++ }; ++}; ++ + &ohci0 { + status = "okay"; + }; +@@ -173,14 +175,6 @@ + status = "okay"; + }; + +-&pio { +- usb0_id_detect_pin: usb0-id-detect-pin { +- pins = "PH4"; +- function = "gpio_in"; +- bias-pull-up; +- }; +-}; +- + ®_ahci_5v { + status = "okay"; + }; +@@ -236,9 +230,7 @@ + }; + + &usbphy { +- pinctrl-names = "default"; +- pinctrl-0 = <&usb0_id_detect_pin>; +- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ ++ usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */ + usb1_vbus-supply = <®_usb1_vbus>; + usb2_vbus-supply = <®_usb2_vbus>; + status = "okay"; +diff --git a/arch/arm/dts/sun7i-a20-cubietruck.dts b/arch/arm/dts/sun7i-a20-cubietruck.dts +index 99f531b8d2..9109ca0919 100644 +--- a/arch/arm/dts/sun7i-a20-cubietruck.dts ++++ b/arch/arm/dts/sun7i-a20-cubietruck.dts +@@ -150,13 +150,9 @@ + &gmac { + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; +- phy = <&phy1>; +- phy-mode = "rgmii"; ++ phy-handle = <&phy1>; ++ phy-mode = "rgmii-id"; + status = "okay"; +- +- phy1: ethernet-phy@1 { +- reg = <1>; +- }; + }; + + &hdmi { +@@ -194,6 +190,12 @@ + status = "okay"; + }; + ++&gmac_mdio { ++ phy1: ethernet-phy@1 { ++ reg = <1>; ++ }; ++}; ++ + &mmc0 { + vmmc-supply = <®_vcc3v3>; + bus-width = <4>; +diff --git a/arch/arm/dts/sun7i-a20-hummingbird.dts b/arch/arm/dts/sun7i-a20-hummingbird.dts +index fd0153f656..3def2a3305 100644 +--- a/arch/arm/dts/sun7i-a20-hummingbird.dts ++++ b/arch/arm/dts/sun7i-a20-hummingbird.dts +@@ -100,19 +100,10 @@ + &gmac { + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; +- phy = <&phy1>; ++ phy-handle = <&phy1>; + phy-mode = "rgmii"; + phy-supply = <®_gmac_vdd>; +- /* phy reset config */ +- snps,reset-gpio = <&pio 0 17 GPIO_ACTIVE_HIGH>; /* PA17 */ +- snps,reset-active-low; +- /* wait 1s after reset, otherwise fail to read phy id */ +- snps,reset-delays-us = <0 10000 1000000>; + status = "okay"; +- +- phy1: ethernet-phy@1 { +- reg = <1>; +- }; + }; + + &i2c0 { +@@ -146,6 +137,16 @@ + status = "okay"; + }; + ++&gmac_mdio { ++ phy1: ethernet-phy@1 { ++ reg = <1>; ++ reset-gpios = <&pio 0 17 GPIO_ACTIVE_LOW>; /* PA17 */ ++ reset-assert-us = <10000>; ++ /* wait 1s after reset, otherwise fail to read phy id */ ++ reset-deassert-us = <1000000>; ++ }; ++}; ++ + &mmc0 { + vmmc-supply = <®_vcc3v0>; + bus-width = <4>; +diff --git a/arch/arm/dts/sun7i-a20-i12-tvbox.dts b/arch/arm/dts/sun7i-a20-i12-tvbox.dts +index 5f1c4f573d..358ed5f1b1 100644 +--- a/arch/arm/dts/sun7i-a20-i12-tvbox.dts ++++ b/arch/arm/dts/sun7i-a20-i12-tvbox.dts +@@ -115,14 +115,10 @@ + &gmac { + pinctrl-names = "default"; + pinctrl-0 = <&gmac_mii_pins>; +- phy = <&phy1>; ++ phy-handle = <&phy1>; + phy-mode = "mii"; + phy-supply = <®_gmac_3v3>; + status = "okay"; +- +- phy1: ethernet-phy@1 { +- reg = <1>; +- }; + }; + + &i2c0 { +@@ -145,6 +141,12 @@ + status = "okay"; + }; + ++&gmac_mdio { ++ phy1: ethernet-phy@1 { ++ reg = <1>; ++ }; ++}; ++ + &mmc0 { + vmmc-supply = <®_vcc3v3>; + bus-width = <4>; +diff --git a/arch/arm/dts/sun7i-a20-icnova-swac.dts b/arch/arm/dts/sun7i-a20-icnova-swac.dts +index 949494730a..413505f45a 100644 +--- a/arch/arm/dts/sun7i-a20-icnova-swac.dts ++++ b/arch/arm/dts/sun7i-a20-icnova-swac.dts +@@ -49,7 +49,8 @@ + + / { + model = "ICnova-A20 SWAC"; +- compatible = "swac,icnova-a20-swac", "incircuit,icnova-a20", "allwinner,sun7i-a20"; ++ compatible = "incircuit,icnova-a20-swac", "incircuit,icnova-a20", ++ "allwinner,sun7i-a20"; + + aliases { + serial0 = &uart0; +@@ -75,13 +76,9 @@ + &gmac { + pinctrl-names = "default"; + pinctrl-0 = <&gmac_mii_pins>; +- phy = <&phy1>; ++ phy-handle = <&phy1>; + phy-mode = "mii"; + status = "okay"; +- +- phy1: ethernet-phy@1 { +- reg = <1>; +- }; + }; + + &i2c0 { +@@ -98,6 +95,12 @@ + status = "okay"; + }; + ++&gmac_mdio { ++ phy1: ethernet-phy@1 { ++ reg = <1>; ++ }; ++}; ++ + &mmc0 { + vmmc-supply = <®_vcc3v3>; + bus-width = <4>; +diff --git a/arch/arm/dts/sun7i-a20-itead-ibox.dts b/arch/arm/dts/sun7i-a20-itead-ibox.dts +index b90a7607d0..946c272783 100644 +--- a/arch/arm/dts/sun7i-a20-itead-ibox.dts ++++ b/arch/arm/dts/sun7i-a20-itead-ibox.dts +@@ -97,10 +97,12 @@ + &gmac { + pinctrl-names = "default"; + pinctrl-0 = <&gmac_mii_pins>; +- phy = <&phy1>; ++ phy-handle = <&phy1>; + phy-mode = "mii"; + status = "okay"; ++}; + ++&gmac_mdio { + phy1: ethernet-phy@1 { + reg = <1>; + }; +diff --git a/arch/arm/dts/sun7i-a20-lamobo-r1.dts b/arch/arm/dts/sun7i-a20-lamobo-r1.dts +index f91e1bee44..17fa8901fc 100644 +--- a/arch/arm/dts/sun7i-a20-lamobo-r1.dts ++++ b/arch/arm/dts/sun7i-a20-lamobo-r1.dts +@@ -123,8 +123,6 @@ + phy-mode = "rgmii"; + phy-supply = <®_gmac_3v3>; + status = "okay"; +- /delete-property/#address-cells; +- /delete-property/#size-cells; + + fixed-link { + speed = <1000>; +@@ -229,14 +227,6 @@ + status = "okay"; + }; + +-&pio { +- usb0_id_detect_pin: usb0-id-detect-pin { +- pins = "PH4"; +- function = "gpio_in"; +- bias-pull-up; +- }; +-}; +- + #include "axp209.dtsi" + + &ac_power_supply { +@@ -322,9 +312,7 @@ + }; + + &usbphy { +- pinctrl-names = "default"; +- pinctrl-0 = <&usb0_id_detect_pin>; +- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ ++ usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */ + usb0_vbus_power-supply = <&usb_power_supply>; + usb0_vbus-supply = <®_usb0_vbus>; + usb2_vbus-supply = <®_usb2_vbus>; +diff --git a/arch/arm/dts/sun7i-a20-m3.dts b/arch/arm/dts/sun7i-a20-m3.dts +index b8a1aaaf39..6bff9e731f 100644 +--- a/arch/arm/dts/sun7i-a20-m3.dts ++++ b/arch/arm/dts/sun7i-a20-m3.dts +@@ -82,13 +82,9 @@ + &gmac { + pinctrl-names = "default"; + pinctrl-0 = <&gmac_mii_pins>; +- phy = <&phy1>; ++ phy-handle = <&phy1>; + phy-mode = "mii"; + status = "okay"; +- +- phy1: ethernet-phy@1 { +- reg = <1>; +- }; + }; + + &i2c0 { +@@ -111,6 +107,12 @@ + status = "okay"; + }; + ++&gmac_mdio { ++ phy1: ethernet-phy@1 { ++ reg = <1>; ++ }; ++}; ++ + &mmc0 { + vmmc-supply = <®_vcc3v3>; + bus-width = <4>; +diff --git a/arch/arm/dts/sun7i-a20-olimex-som-evb.dts b/arch/arm/dts/sun7i-a20-olimex-som-evb.dts +index f0e6a96e57..6f9c54b8e4 100644 +--- a/arch/arm/dts/sun7i-a20-olimex-som-evb.dts ++++ b/arch/arm/dts/sun7i-a20-olimex-som-evb.dts +@@ -111,13 +111,9 @@ + &gmac { + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; +- phy = <&phy1>; ++ phy-handle = <&phy1>; + phy-mode = "rgmii"; + status = "okay"; +- +- phy1: ethernet-phy@1 { +- reg = <1>; +- }; + }; + + &hdmi { +@@ -202,6 +198,12 @@ + }; + }; + ++&gmac_mdio { ++ phy1: ethernet-phy@1 { ++ reg = <1>; ++ }; ++}; ++ + &mmc0 { + vmmc-supply = <®_vcc3v3>; + bus-width = <4>; +diff --git a/arch/arm/dts/sun7i-a20-olimex-som204-evb.dts b/arch/arm/dts/sun7i-a20-olimex-som204-evb.dts +index 823aabce04..230d62a6b8 100644 +--- a/arch/arm/dts/sun7i-a20-olimex-som204-evb.dts ++++ b/arch/arm/dts/sun7i-a20-olimex-som204-evb.dts +@@ -105,18 +105,10 @@ + &gmac { + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; +- phy = <&phy3>; ++ phy-handle = <&phy3>; + phy-mode = "rgmii"; + phy-supply = <®_vcc3v3>; +- +- snps,reset-gpio = <&pio 0 17 GPIO_ACTIVE_HIGH>; +- snps,reset-active-low; +- snps,reset-delays-us = <0 10000 1000000>; + status = "okay"; +- +- phy3: ethernet-phy@3 { +- reg = <3>; +- }; + }; + + &hdmi { +@@ -161,6 +153,16 @@ + status = "okay"; + }; + ++&gmac_mdio { ++ phy3: ethernet-phy@3 { ++ reg = <3>; ++ reset-gpios = <&pio 0 17 GPIO_ACTIVE_LOW>; /* PA17 */ ++ reset-assert-us = <10000>; ++ /* wait 1s after reset, otherwise fail to read phy id */ ++ reset-deassert-us = <1000000>; ++ }; ++}; ++ + &mmc0 { + vmmc-supply = <®_vcc3v3>; + bus-width = <4>; +@@ -314,8 +316,8 @@ + }; + + &usbphy { +- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ +- usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */ ++ usb0_id_det-gpios = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ ++ usb0_vbus_det-gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */ + usb0_vbus_power-supply = <&usb_power_supply>; + usb0_vbus-supply = <®_usb0_vbus>; + usb1_vbus-supply = <®_usb1_vbus>; +diff --git a/arch/arm/dts/sun7i-a20-olinuxino-lime.dts b/arch/arm/dts/sun7i-a20-olinuxino-lime.dts +index 5e411194bf..2adbac8601 100644 +--- a/arch/arm/dts/sun7i-a20-olinuxino-lime.dts ++++ b/arch/arm/dts/sun7i-a20-olinuxino-lime.dts +@@ -106,13 +106,9 @@ + &gmac { + pinctrl-names = "default"; + pinctrl-0 = <&gmac_mii_pins>; +- phy = <&phy1>; ++ phy-handle = <&phy1>; + phy-mode = "mii"; + status = "okay"; +- +- phy1: ethernet-phy@1 { +- reg = <1>; +- }; + }; + + &hdmi { +@@ -149,6 +145,12 @@ + }; + }; + ++&gmac_mdio { ++ phy1: ethernet-phy@1 { ++ reg = <1>; ++ }; ++}; ++ + &mmc0 { + vmmc-supply = <®_vcc3v3>; + bus-width = <4>; +@@ -174,18 +176,6 @@ + function = "gpio_out"; + drive-strength = <20>; + }; +- +- usb0_id_detect_pin: usb0-id-detect-pin { +- pins = "PH4"; +- function = "gpio_in"; +- bias-pull-up; +- }; +- +- usb0_vbus_detect_pin: usb0-vbus-detect-pin { +- pins = "PH5"; +- function = "gpio_in"; +- bias-pull-down; +- }; + }; + + ®_ahci_5v { +@@ -217,10 +207,8 @@ + }; + + &usbphy { +- pinctrl-names = "default"; +- pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>; +- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ +- usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */ ++ usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */ ++ usb0_vbus_det-gpios = <&pio 7 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>; /* PH5 */ + usb0_vbus-supply = <®_usb0_vbus>; + usb1_vbus-supply = <®_usb1_vbus>; + usb2_vbus-supply = <®_usb2_vbus>; +diff --git a/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts b/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts +index 4e1c590eb0..9ba62774e8 100644 +--- a/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts ++++ b/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts +@@ -111,13 +111,9 @@ + &gmac { + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; +- phy = <&phy1>; ++ phy-handle = <&phy1>; + phy-mode = "rgmii"; + status = "okay"; +- +- phy1: ethernet-phy@1 { +- reg = <1>; +- }; + }; + + &hdmi { +@@ -154,6 +150,12 @@ + vref-supply = <®_vcc3v0>; + }; + ++&gmac_mdio { ++ phy1: ethernet-phy@1 { ++ reg = <1>; ++ }; ++}; ++ + &mmc0 { + vmmc-supply = <®_vcc3v3>; + bus-width = <4>; +@@ -174,23 +176,17 @@ + }; + + &pio { ++ vcc-pa-supply = <®_vcc3v3>; ++ vcc-pc-supply = <®_vcc3v3>; ++ vcc-pe-supply = <®_ldo3>; ++ vcc-pf-supply = <®_vcc3v3>; ++ vcc-pg-supply = <®_ldo4>; ++ + led_pins_olinuxinolime: led-pins { + pins = "PH2"; + function = "gpio_out"; + drive-strength = <20>; + }; +- +- usb0_id_detect_pin: usb0-id-detect-pin { +- pins = "PH4"; +- function = "gpio_in"; +- bias-pull-up; +- }; +- +- usb0_vbus_detect_pin: usb0-vbus-detect-pin { +- pins = "PH5"; +- function = "gpio_in"; +- bias-pull-down; +- }; + }; + + ®_ahci_5v { +@@ -200,6 +196,14 @@ + + #include "axp209.dtsi" + ++&ac_power_supply { ++ status = "okay"; ++}; ++ ++&battery_power_supply { ++ status = "okay"; ++}; ++ + ®_dcdc2 { + regulator-always-on; + regulator-min-microvolt = <1000000>; +@@ -267,10 +271,8 @@ + }; + + &usbphy { +- pinctrl-names = "default"; +- pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>; +- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ +- usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */ ++ usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */ ++ usb0_vbus_det-gpios = <&pio 7 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>; /* PH5 */ + usb0_vbus-supply = <®_usb0_vbus>; + usb1_vbus-supply = <®_usb1_vbus>; + usb2_vbus-supply = <®_usb2_vbus>; +diff --git a/arch/arm/dts/sun7i-a20-olinuxino-micro.dts b/arch/arm/dts/sun7i-a20-olinuxino-micro.dts +index 840ae1194a..359bd0d5b3 100644 +--- a/arch/arm/dts/sun7i-a20-olinuxino-micro.dts ++++ b/arch/arm/dts/sun7i-a20-olinuxino-micro.dts +@@ -118,13 +118,9 @@ + &gmac { + pinctrl-names = "default"; + pinctrl-0 = <&gmac_mii_pins>, <&gmac_txerr>; +- phy = <&phy1>; ++ phy-handle = <&phy1>; + phy-mode = "mii"; + status = "okay"; +- +- phy1: ethernet-phy@1 { +- reg = <1>; +- }; + }; + + &hdmi { +@@ -215,6 +211,12 @@ + }; + }; + ++&gmac_mdio { ++ phy1: ethernet-phy@1 { ++ reg = <1>; ++ }; ++}; ++ + &mmc0 { + vmmc-supply = <®_vcc3v3>; + bus-width = <4>; +@@ -252,18 +254,6 @@ + function = "gpio_out"; + drive-strength = <20>; + }; +- +- usb0_id_detect_pin: usb0-id-detect-pin { +- pins = "PH4"; +- function = "gpio_in"; +- bias-pull-up; +- }; +- +- usb0_vbus_detect_pin: usb0-vbus-detect-pin { +- pins = "PH5"; +- function = "gpio_in"; +- bias-pull-down; +- }; + }; + + #include "axp209.dtsi" +@@ -355,10 +345,8 @@ + }; + + &usbphy { +- pinctrl-names = "default"; +- pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>; +- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ +- usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */ ++ usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */ ++ usb0_vbus_det-gpios = <&pio 7 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>; /* PH5 */ + usb0_vbus-supply = <®_usb0_vbus>; + usb1_vbus-supply = <®_usb1_vbus>; + usb2_vbus-supply = <®_usb2_vbus>; +diff --git a/arch/arm/dts/sun7i-a20-orangepi-mini.dts b/arch/arm/dts/sun7i-a20-orangepi-mini.dts +index 15881081ca..2e328d2cef 100644 +--- a/arch/arm/dts/sun7i-a20-orangepi-mini.dts ++++ b/arch/arm/dts/sun7i-a20-orangepi-mini.dts +@@ -120,14 +120,10 @@ + &gmac { + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; +- phy = <&phy1>; ++ phy-handle = <&phy1>; + phy-mode = "rgmii"; + phy-supply = <®_gmac_3v3>; + status = "okay"; +- +- phy1: ethernet-phy@1 { +- reg = <1>; +- }; + }; + + &hdmi { +@@ -158,6 +154,12 @@ + status = "okay"; + }; + ++&gmac_mdio { ++ phy1: ethernet-phy@1 { ++ reg = <1>; ++ }; ++}; ++ + &mmc0 { + vmmc-supply = <®_vcc3v3>; + bus-width = <4>; +@@ -176,14 +178,6 @@ + status = "okay"; + }; + +-&pio { +- usb0_id_detect_pin: usb0-id-detect-pin { +- pins = "PH4"; +- function = "gpio_in"; +- bias-pull-up; +- }; +-}; +- + ®_dcdc2 { + regulator-always-on; + regulator-min-microvolt = <1000000>; +@@ -239,9 +233,7 @@ + }; + + &usbphy { +- pinctrl-names = "default"; +- pinctrl-0 = <&usb0_id_detect_pin>; +- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ ++ usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */ + usb0_vbus_power-supply = <&usb_power_supply>; + usb0_vbus-supply = <®_usb0_vbus>; + usb1_vbus-supply = <®_usb1_vbus>; +diff --git a/arch/arm/dts/sun7i-a20-orangepi.dts b/arch/arm/dts/sun7i-a20-orangepi.dts +index d64de2e73a..d75b2e2bab 100644 +--- a/arch/arm/dts/sun7i-a20-orangepi.dts ++++ b/arch/arm/dts/sun7i-a20-orangepi.dts +@@ -96,14 +96,10 @@ + &gmac { + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; +- phy = <&phy1>; ++ phy-handle = <&phy1>; + phy-mode = "rgmii"; + phy-supply = <®_gmac_3v3>; + status = "okay"; +- +- phy1: ethernet-phy@1 { +- reg = <1>; +- }; + }; + + &i2c0 { +@@ -124,6 +120,12 @@ + status = "okay"; + }; + ++&gmac_mdio { ++ phy1: ethernet-phy@1 { ++ reg = <1>; ++ }; ++}; ++ + &mmc0 { + vmmc-supply = <®_vcc3v3>; + bus-width = <4>; +@@ -135,14 +137,6 @@ + status = "okay"; + }; + +-&pio { +- usb0_id_detect_pin: usb0-id-detect-pin { +- pins = "PH4"; +- function = "gpio_in"; +- bias-pull-up; +- }; +-}; +- + ®_dcdc2 { + regulator-always-on; + regulator-min-microvolt = <1000000>; +@@ -198,9 +192,7 @@ + }; + + &usbphy { +- pinctrl-names = "default"; +- pinctrl-0 = <&usb0_id_detect_pin>; +- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ ++ usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */ + usb0_vbus_power-supply = <&usb_power_supply>; + usb0_vbus-supply = <®_usb0_vbus>; + usb1_vbus-supply = <®_usb1_vbus>; +diff --git a/arch/arm/dts/sun7i-a20-pcduino3-nano.dts b/arch/arm/dts/sun7i-a20-pcduino3-nano.dts +index 538ea15fa3..bf38c66c18 100644 +--- a/arch/arm/dts/sun7i-a20-pcduino3-nano.dts ++++ b/arch/arm/dts/sun7i-a20-pcduino3-nano.dts +@@ -1,5 +1,5 @@ + /* +- * Copyright 2015 Adam Sampson ++ * Copyright 2015-2020 Adam Sampson + * + * This file is dual-licensed: you can use it either under the terms + * of the GPL or the X11 license, at your option. Note that this dual +@@ -114,13 +114,9 @@ + &gmac { + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; +- phy = <&phy1>; +- phy-mode = "rgmii"; ++ phy-handle = <&phy1>; ++ phy-mode = "rgmii-id"; + status = "okay"; +- +- phy1: ethernet-phy@1 { +- reg = <1>; +- }; + }; + + &hdmi { +@@ -149,6 +145,12 @@ + status = "okay"; + }; + ++&gmac_mdio { ++ phy1: ethernet-phy@1 { ++ reg = <1>; ++ }; ++}; ++ + &mmc0 { + vmmc-supply = <®_vcc3v3>; + bus-width = <4>; +@@ -168,14 +170,6 @@ + status = "okay"; + }; + +-&pio { +- usb0_id_detect_pin: usb0-id-detect-pin { +- pins = "PH4"; +- function = "gpio_in"; +- bias-pull-up; +- }; +-}; +- + ®_ahci_5v { + gpio = <&pio 7 2 GPIO_ACTIVE_HIGH>; /* PH2 */ + status = "okay"; +@@ -226,9 +220,7 @@ + }; + + &usbphy { +- pinctrl-names = "default"; +- pinctrl-0 = <&usb0_id_detect_pin>; +- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ ++ usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */ + usb1_vbus-supply = <®_usb1_vbus>; + usb2_vbus-supply = <®_usb1_vbus>; + status = "okay"; +diff --git a/arch/arm/dts/sun7i-a20-pcduino3.dts b/arch/arm/dts/sun7i-a20-pcduino3.dts +index a72ed4318d..cc8271d777 100644 +--- a/arch/arm/dts/sun7i-a20-pcduino3.dts ++++ b/arch/arm/dts/sun7i-a20-pcduino3.dts +@@ -122,13 +122,9 @@ + &gmac { + pinctrl-names = "default"; + pinctrl-0 = <&gmac_mii_pins>; +- phy = <&phy1>; ++ phy-handle = <&phy1>; + phy-mode = "mii"; + status = "okay"; +- +- phy1: ethernet-phy@1 { +- reg = <1>; +- }; + }; + + &i2c0 { +@@ -149,6 +145,12 @@ + status = "okay"; + }; + ++&gmac_mdio { ++ phy1: ethernet-phy@1 { ++ reg = <1>; ++ }; ++}; ++ + &mmc0 { + vmmc-supply = <®_vcc3v3>; + bus-width = <4>; +@@ -168,14 +170,6 @@ + status = "okay"; + }; + +-&pio { +- usb0_id_detect_pin: usb0-id-detect-pin { +- pins = "PH4"; +- function = "gpio_in"; +- bias-pull-up; +- }; +-}; +- + ®_ahci_5v { + gpio = <&pio 7 2 GPIO_ACTIVE_HIGH>; + status = "okay"; +@@ -226,9 +220,7 @@ + }; + + &usbphy { +- pinctrl-names = "default"; +- pinctrl-0 = <&usb0_id_detect_pin>; +- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ ++ usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */ + usb1_vbus-supply = <®_usb1_vbus>; + usb2_vbus-supply = <®_usb2_vbus>; + status = "okay"; +diff --git a/arch/arm/dts/sun7i-a20-wexler-tab7200.dts b/arch/arm/dts/sun7i-a20-wexler-tab7200.dts +index ffade253d1..6a66b0432d 100644 +--- a/arch/arm/dts/sun7i-a20-wexler-tab7200.dts ++++ b/arch/arm/dts/sun7i-a20-wexler-tab7200.dts +@@ -156,14 +156,6 @@ + status = "okay"; + }; + +-&pio { +- usb0_id_detect_pin: usb0-id-detect-pin { +- pins = "PH4"; +- function = "gpio_in"; +- bias-pull-up; +- }; +-}; +- + &pwm { + pinctrl-names = "default"; + pinctrl-0 = <&pwm0_pin>; +@@ -223,9 +215,7 @@ + }; + + &usbphy { +- pinctrl-names = "default"; +- pinctrl-0 = <&usb0_id_detect_pin>; +- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ ++ usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */ + usb0_vbus_power-supply = <&usb_power_supply>; + usb0_vbus-supply = <®_usb0_vbus>; + usb1_vbus-supply = <®_usb1_vbus>; +diff --git a/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts b/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts +index c27e56091f..3bfae98f3c 100644 +--- a/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts ++++ b/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts +@@ -81,13 +81,9 @@ + &gmac { + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; +- phy = <&phy1>; ++ phy-handle = <&phy1>; + phy-mode = "rgmii"; + status = "okay"; +- +- phy1: ethernet-phy@1 { +- reg = <1>; +- }; + }; + + &i2c0 { +@@ -110,6 +106,12 @@ + + #include "axp209.dtsi" + ++&gmac_mdio { ++ phy1: ethernet-phy@1 { ++ reg = <1>; ++ }; ++}; ++ + &mmc0 { + vmmc-supply = <®_vcc3v3>; + bus-width = <4>; +@@ -145,14 +147,6 @@ + status = "okay"; + }; + +-&pio { +- usb0_id_detect_pin: usb0-id-detect-pin { +- pins = "PH4"; +- function = "gpio_in"; +- bias-pull-up; +- }; +-}; +- + ®_dcdc2 { + regulator-always-on; + regulator-min-microvolt = <1000000>; +@@ -206,9 +200,7 @@ + }; + + &usbphy { +- pinctrl-names = "default"; +- pinctrl-0 = <&usb0_id_detect_pin>; +- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ ++ usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */ + usb0_vbus_power-supply = <&usb_power_supply>; + usb0_vbus-supply = <®_usb0_vbus>; + usb1_vbus-supply = <®_usb1_vbus>; +diff --git a/arch/arm/dts/sun7i-a20.dtsi b/arch/arm/dts/sun7i-a20.dtsi +index 641a8fa6d4..6d6a37940d 100644 +--- a/arch/arm/dts/sun7i-a20.dtsi ++++ b/arch/arm/dts/sun7i-a20.dtsi +@@ -47,6 +47,7 @@ + #include + #include + #include ++#include + + / { + interrupt-parent = <&gic>; +@@ -180,7 +181,7 @@ + default-pool { + compatible = "shared-dma-pool"; + size = <0x6000000>; +- alloc-ranges = <0x4a000000 0x6000000>; ++ alloc-ranges = <0x40000000 0x10000000>; + reusable; + linux,cma-default; + }; +@@ -333,7 +334,7 @@ + #dma-cells = <2>; + }; + +- nfc: nand@1c03000 { ++ nfc: nand-controller@1c03000 { + compatible = "allwinner,sun4i-a10-nand"; + reg = <0x01c03000 0x1000>; + interrupts = ; +@@ -376,6 +377,16 @@ + num-cs = <1>; + }; + ++ csi0: csi@1c09000 { ++ compatible = "allwinner,sun7i-a20-csi0"; ++ reg = <0x01c09000 0x1000>; ++ interrupts = ; ++ clocks = <&ccu CLK_AHB_CSI0>, <&ccu CLK_CSI_SCLK>, <&ccu CLK_DRAM_CSI0>; ++ clock-names = "bus", "isp", "ram"; ++ resets = <&ccu RST_CSI0>; ++ status = "disabled"; ++ }; ++ + emac: ethernet@1c0b000 { + compatible = "allwinner,sun4i-a10-emac"; + reg = <0x01c0b000 0x1000>; +@@ -394,11 +405,12 @@ + }; + + tcon0: lcd-controller@1c0c000 { +- compatible = "allwinner,sun7i-a20-tcon"; ++ compatible = "allwinner,sun7i-a20-tcon0", ++ "allwinner,sun7i-a20-tcon"; + reg = <0x01c0c000 0x1000>; + interrupts = ; +- resets = <&ccu RST_TCON0>; +- reset-names = "lcd"; ++ resets = <&ccu RST_TCON0>, <&ccu RST_LVDS>; ++ reset-names = "lcd", "lvds"; + clocks = <&ccu CLK_AHB_LCD0>, + <&ccu CLK_TCON0_CH0>, + <&ccu CLK_TCON0_CH1>; +@@ -406,6 +418,7 @@ + "tcon-ch0", + "tcon-ch1"; + clock-output-names = "tcon0-pixel-clock"; ++ #clock-cells = <0>; + dmas = <&dma SUN4I_DMA_DEDICATED 14>; + + ports { +@@ -443,7 +456,8 @@ + }; + + tcon1: lcd-controller@1c0d000 { +- compatible = "allwinner,sun7i-a20-tcon"; ++ compatible = "allwinner,sun7i-a20-tcon1", ++ "allwinner,sun7i-a20-tcon"; + reg = <0x01c0d000 0x1000>; + interrupts = ; + resets = <&ccu RST_TCON1>; +@@ -455,6 +469,7 @@ + "tcon-ch0", + "tcon-ch1"; + clock-output-names = "tcon1-pixel-clock"; ++ #clock-cells = <0>; + dmas = <&dma SUN4I_DMA_DEDICATED 15>; + + ports { +@@ -586,13 +601,14 @@ + phy-names = "usb"; + extcon = <&usbphy 0>; + allwinner,sram = <&otg_sram 1>; ++ dr_mode = "otg"; + status = "disabled"; + }; + + usbphy: phy@1c13400 { + #phy-cells = <1>; + compatible = "allwinner,sun7i-a20-usb-phy"; +- reg = <0x01c13400 0x10 0x01c14800 0x4 0x01c1c800 0x4>; ++ reg = <0x01c13400 0x10>, <0x01c14800 0x4>, <0x01c1c800 0x4>; + reg-names = "phy_ctrl", "pmu1", "pmu2"; + clocks = <&ccu CLK_USB_PHY>; + clock-names = "usb_phy"; +@@ -716,6 +732,17 @@ + status = "disabled"; + }; + ++ csi1: csi@1c1d000 { ++ compatible = "allwinner,sun7i-a20-csi1", ++ "allwinner,sun4i-a10-csi1"; ++ reg = <0x01c1d000 0x1000>; ++ interrupts = ; ++ clocks = <&ccu CLK_AHB_CSI1>, <&ccu CLK_DRAM_CSI1>; ++ clock-names = "bus", "ram"; ++ resets = <&ccu RST_CSI1>; ++ status = "disabled"; ++ }; ++ + spi3: spi@1c1f000 { + compatible = "allwinner,sun4i-a10-spi"; + reg = <0x01c1f000 0x1000>; +@@ -751,21 +778,70 @@ + #interrupt-cells = <3>; + #gpio-cells = <3>; + ++ /omit-if-no-ref/ ++ can_pa_pins: can-pa-pins { ++ pins = "PA16", "PA17"; ++ function = "can"; ++ }; ++ ++ /omit-if-no-ref/ + can_ph_pins: can-ph-pins { + pins = "PH20", "PH21"; + function = "can"; + }; + ++ /omit-if-no-ref/ + clk_out_a_pin: clk-out-a-pin { + pins = "PI12"; + function = "clk_out_a"; + }; + ++ /omit-if-no-ref/ + clk_out_b_pin: clk-out-b-pin { + pins = "PI13"; + function = "clk_out_b"; + }; + ++ /omit-if-no-ref/ ++ csi0_8bits_pins: csi-8bits-pins { ++ pins = "PE0", "PE2", "PE3", "PE4", "PE5", ++ "PE6", "PE7", "PE8", "PE9", "PE10", ++ "PE11"; ++ function = "csi0"; ++ }; ++ ++ /omit-if-no-ref/ ++ csi0_clk_pin: csi-clk-pin { ++ pins = "PE1"; ++ function = "csi0"; ++ }; ++ ++ /omit-if-no-ref/ ++ csi1_8bits_pg_pins: csi1-8bits-pg-pins { ++ pins = "PG0", "PG2", "PG3", "PG4", "PG5", ++ "PG6", "PG7", "PG8", "PG9", "PG10", ++ "PG11"; ++ function = "csi1"; ++ }; ++ ++ /omit-if-no-ref/ ++ csi1_24bits_ph_pins: csi1-24bits-ph-pins { ++ pins = "PH0", "PH1", "PH2", "PH3", "PH4", ++ "PH5", "PH6", "PH7", "PH8", "PH9", ++ "PH10", "PH11", "PH12", "PH13", "PH14", ++ "PH15", "PH16", "PH17", "PH18", "PH19", ++ "PH20", "PH21", "PH22", "PH23", "PH24", ++ "PH25", "PH26", "PH27"; ++ function = "csi1"; ++ }; ++ ++ /omit-if-no-ref/ ++ csi1_clk_pg_pin: csi1-clk-pg-pin { ++ pins = "PG1"; ++ function = "csi1"; ++ }; ++ ++ /omit-if-no-ref/ + emac_pa_pins: emac-pa-pins { + pins = "PA0", "PA1", "PA2", + "PA3", "PA4", "PA5", "PA6", +@@ -775,6 +851,17 @@ + function = "emac"; + }; + ++ /omit-if-no-ref/ ++ emac_ph_pins: emac-ph-pins { ++ pins = "PH8", "PH9", "PH10", "PH11", ++ "PH14", "PH15", "PH16", "PH17", ++ "PH18", "PH19", "PH20", "PH21", ++ "PH22", "PH23", "PH24", "PH25", ++ "PH26"; ++ function = "emac"; ++ }; ++ ++ /omit-if-no-ref/ + gmac_mii_pins: gmac-mii-pins { + pins = "PA0", "PA1", "PA2", + "PA3", "PA4", "PA5", "PA6", +@@ -784,6 +871,7 @@ + function = "gmac"; + }; + ++ /omit-if-no-ref/ + gmac_rgmii_pins: gmac-rgmii-pins { + pins = "PA0", "PA1", "PA2", + "PA3", "PA4", "PA5", "PA6", +@@ -798,46 +886,69 @@ + drive-strength = <40>; + }; + ++ /omit-if-no-ref/ + i2c0_pins: i2c0-pins { + pins = "PB0", "PB1"; + function = "i2c0"; + }; + ++ /omit-if-no-ref/ + i2c1_pins: i2c1-pins { + pins = "PB18", "PB19"; + function = "i2c1"; + }; + ++ /omit-if-no-ref/ + i2c2_pins: i2c2-pins { + pins = "PB20", "PB21"; + function = "i2c2"; + }; + ++ /omit-if-no-ref/ + i2c3_pins: i2c3-pins { + pins = "PI0", "PI1"; + function = "i2c3"; + }; + ++ /omit-if-no-ref/ + ir0_rx_pin: ir0-rx-pin { + pins = "PB4"; + function = "ir0"; + }; + ++ /omit-if-no-ref/ + ir0_tx_pin: ir0-tx-pin { + pins = "PB3"; + function = "ir0"; + }; + ++ /omit-if-no-ref/ + ir1_rx_pin: ir1-rx-pin { + pins = "PB23"; + function = "ir1"; + }; + ++ /omit-if-no-ref/ + ir1_tx_pin: ir1-tx-pin { + pins = "PB22"; + function = "ir1"; + }; + ++ /omit-if-no-ref/ ++ lcd_lvds0_pins: lcd-lvds0-pins { ++ pins = "PD0", "PD1", "PD2", "PD3", "PD4", ++ "PD5", "PD6", "PD7", "PD8", "PD9"; ++ function = "lvds0"; ++ }; ++ ++ /omit-if-no-ref/ ++ lcd_lvds1_pins: lcd-lvds1-pins { ++ pins = "PD10", "PD11", "PD12", "PD13", "PD14", ++ "PD15", "PD16", "PD17", "PD18", "PD19"; ++ function = "lvds1"; ++ }; ++ ++ /omit-if-no-ref/ + mmc0_pins: mmc0-pins { + pins = "PF0", "PF1", "PF2", + "PF3", "PF4", "PF5"; +@@ -846,6 +957,7 @@ + bias-pull-up; + }; + ++ /omit-if-no-ref/ + mmc2_pins: mmc2-pins { + pins = "PC6", "PC7", "PC8", + "PC9", "PC10", "PC11"; +@@ -854,6 +966,7 @@ + bias-pull-up; + }; + ++ /omit-if-no-ref/ + mmc3_pins: mmc3-pins { + pins = "PI4", "PI5", "PI6", + "PI7", "PI8", "PI9"; +@@ -862,127 +975,206 @@ + bias-pull-up; + }; + ++ /omit-if-no-ref/ + ps2_0_pins: ps2-0-pins { + pins = "PI20", "PI21"; + function = "ps2"; + }; + ++ /omit-if-no-ref/ + ps2_1_ph_pins: ps2-1-ph-pins { + pins = "PH12", "PH13"; + function = "ps2"; + }; + ++ /omit-if-no-ref/ + pwm0_pin: pwm0-pin { + pins = "PB2"; + function = "pwm"; + }; + ++ /omit-if-no-ref/ + pwm1_pin: pwm1-pin { + pins = "PI3"; + function = "pwm"; + }; + ++ /omit-if-no-ref/ + spdif_tx_pin: spdif-tx-pin { + pins = "PB13"; + function = "spdif"; + bias-pull-up; + }; + ++ /omit-if-no-ref/ + spi0_pi_pins: spi0-pi-pins { + pins = "PI11", "PI12", "PI13"; + function = "spi0"; + }; + ++ /omit-if-no-ref/ + spi0_cs0_pi_pin: spi0-cs0-pi-pin { + pins = "PI10"; + function = "spi0"; + }; + ++ /omit-if-no-ref/ + spi0_cs1_pi_pin: spi0-cs1-pi-pin { + pins = "PI14"; + function = "spi0"; + }; + ++ /omit-if-no-ref/ + spi1_pi_pins: spi1-pi-pins { + pins = "PI17", "PI18", "PI19"; + function = "spi1"; + }; + ++ /omit-if-no-ref/ + spi1_cs0_pi_pin: spi1-cs0-pi-pin { + pins = "PI16"; + function = "spi1"; + }; + ++ /omit-if-no-ref/ + spi2_pb_pins: spi2-pb-pins { + pins = "PB15", "PB16", "PB17"; + function = "spi2"; + }; + ++ /omit-if-no-ref/ + spi2_cs0_pb_pin: spi2-cs0-pb-pin { + pins = "PB14"; + function = "spi2"; + }; + ++ /omit-if-no-ref/ + spi2_pc_pins: spi2-pc-pins { + pins = "PC20", "PC21", "PC22"; + function = "spi2"; + }; + ++ /omit-if-no-ref/ + spi2_cs0_pc_pin: spi2-cs0-pc-pin { + pins = "PC19"; + function = "spi2"; + }; + ++ /omit-if-no-ref/ + uart0_pb_pins: uart0-pb-pins { + pins = "PB22", "PB23"; + function = "uart0"; + }; + ++ /omit-if-no-ref/ ++ uart0_pf_pins: uart0-pf-pins { ++ pins = "PF2", "PF4"; ++ function = "uart0"; ++ }; ++ ++ /omit-if-no-ref/ ++ uart1_pa_pins: uart1-pa-pins { ++ pins = "PA10", "PA11"; ++ function = "uart1"; ++ }; ++ ++ /omit-if-no-ref/ ++ uart1_cts_rts_pa_pins: uart1-cts-rts-pa-pins { ++ pins = "PA12", "PA13"; ++ function = "uart1"; ++ }; ++ ++ /omit-if-no-ref/ ++ uart2_pa_pins: uart2-pa-pins { ++ pins = "PA2", "PA3"; ++ function = "uart2"; ++ }; ++ ++ /omit-if-no-ref/ ++ uart2_cts_rts_pa_pins: uart2-cts-rts-pa-pins { ++ pins = "PA0", "PA1"; ++ function = "uart2"; ++ }; ++ ++ /omit-if-no-ref/ + uart2_pi_pins: uart2-pi-pins { + pins = "PI18", "PI19"; + function = "uart2"; + }; + ++ /omit-if-no-ref/ + uart2_cts_rts_pi_pins: uart2-cts-rts-pi-pins { + pins = "PI16", "PI17"; + function = "uart2"; + }; + ++ /omit-if-no-ref/ + uart3_pg_pins: uart3-pg-pins { + pins = "PG6", "PG7"; + function = "uart3"; + }; + ++ /omit-if-no-ref/ + uart3_cts_rts_pg_pins: uart3-cts-rts-pg-pins { + pins = "PG8", "PG9"; + function = "uart3"; + }; + ++ /omit-if-no-ref/ + uart3_ph_pins: uart3-ph-pins { + pins = "PH0", "PH1"; + function = "uart3"; + }; + ++ /omit-if-no-ref/ ++ uart3_cts_rts_ph_pins: uart3-cts-rts-ph-pins { ++ pins = "PH2", "PH3"; ++ function = "uart3"; ++ }; ++ ++ /omit-if-no-ref/ + uart4_pg_pins: uart4-pg-pins { + pins = "PG10", "PG11"; + function = "uart4"; + }; + ++ /omit-if-no-ref/ + uart4_ph_pins: uart4-ph-pins { + pins = "PH4", "PH5"; + function = "uart4"; + }; + ++ /omit-if-no-ref/ ++ uart5_ph_pins: uart5-ph-pins { ++ pins = "PH6", "PH7"; ++ function = "uart5"; ++ }; ++ ++ /omit-if-no-ref/ + uart5_pi_pins: uart5-pi-pins { + pins = "PI10", "PI11"; + function = "uart5"; + }; + ++ /omit-if-no-ref/ ++ uart6_pa_pins: uart6-pa-pins { ++ pins = "PA12", "PA13"; ++ function = "uart6"; ++ }; ++ ++ /omit-if-no-ref/ + uart6_pi_pins: uart6-pi-pins { + pins = "PI12", "PI13"; + function = "uart6"; + }; + ++ /omit-if-no-ref/ ++ uart7_pa_pins: uart7-pa-pins { ++ pins = "PA14", "PA15"; ++ function = "uart7"; ++ }; ++ ++ /omit-if-no-ref/ + uart7_pi_pins: uart7-pi-pins { + pins = "PI20", "PI21"; + function = "uart7"; +@@ -1004,6 +1196,8 @@ + wdt: watchdog@1c20c90 { + compatible = "allwinner,sun4i-a10-wdt"; + reg = <0x01c20c90 0x10>; ++ interrupts = ; ++ clocks = <&osc24M>; + }; + + rtc: rtc@1c20d00 { +@@ -1326,8 +1520,12 @@ + snps,fixed-burst; + snps,force_sf_dma_mode; + status = "disabled"; +- #address-cells = <1>; +- #size-cells = <0>; ++ ++ gmac_mdio: mdio { ++ compatible = "snps,dwmac-mdio"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ }; + }; + + hstimer@1c60000 { +@@ -1341,7 +1539,7 @@ + }; + + gic: interrupt-controller@1c81000 { +- compatible = "arm,gic-400", "arm,cortex-a7-gic", "arm,cortex-a15-gic"; ++ compatible = "arm,gic-400"; + reg = <0x01c81000 0x1000>, + <0x01c82000 0x2000>, + <0x01c84000 0x2000>, +diff --git a/arch/arm/dts/sun8i-a83t-bananapi-m3.dts b/arch/arm/dts/sun8i-a83t-bananapi-m3.dts +index eaff6fa401..431f70234d 100644 +--- a/arch/arm/dts/sun8i-a83t-bananapi-m3.dts ++++ b/arch/arm/dts/sun8i-a83t-bananapi-m3.dts +@@ -107,6 +107,14 @@ + }; + }; + ++&cpu0 { ++ cpu-supply = <®_dcdc2>; ++}; ++ ++&cpu100 { ++ cpu-supply = <®_dcdc3>; ++}; ++ + &de { + status = "okay"; + }; +@@ -123,7 +131,7 @@ + pinctrl-0 = <&emac_rgmii_pins>; + phy-supply = <®_sw>; + phy-handle = <&rgmii_phy>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + allwinner,rx-delay-ps = <700>; + allwinner,tx-delay-ps = <700>; + status = "okay"; +@@ -183,6 +191,11 @@ + status = "okay"; + }; + ++&r_cir { ++ clock-frequency = <3000000>; ++ status = "okay"; ++}; ++ + &r_rsb { + status = "okay"; + +@@ -224,6 +237,14 @@ + + #include "axp81x.dtsi" + ++&ac_power_supply { ++ status = "okay"; ++}; ++ ++&battery_power_supply { ++ status = "okay"; ++}; ++ + ®_aldo1 { + regulator-always-on; + regulator-min-microvolt = <1800000>; +@@ -301,8 +322,8 @@ + + ®_dldo3 { + regulator-always-on; +- regulator-min-microvolt = <2500000>; +- regulator-max-microvolt = <2500000>; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; + regulator-name = "vcc-pd"; + }; + +@@ -350,11 +371,37 @@ + status = "okay"; + }; + ++&uart1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>; ++ uart-has-rtscts; ++ status = "okay"; ++ ++ bluetooth { ++ compatible = "brcm,bcm43438-bt"; ++ clocks = <&ac100_rtc 1>; ++ clock-names = "lpo"; ++ vbat-supply = <®_dldo1>; ++ vddio-supply = <®_dldo1>; ++ device-wakeup-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */ ++ host-wakeup-gpios = <&r_pio 0 5 GPIO_ACTIVE_HIGH>; /* PL5 */ ++ shutdown-gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */ ++ }; ++}; ++ + &usb_otg { ++ dr_mode = "otg"; ++ status = "okay"; ++}; ++ ++&usb_power_supply { + status = "okay"; + }; + + &usbphy { ++ usb0_id_det-gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>; /* PH11 */ ++ usb0_vbus_power-supply = <&usb_power_supply>; ++ usb0_vbus-supply = <®_drivevbus>; + usb1_vbus-supply = <®_usb1_vbus>; + status = "okay"; + }; +diff --git a/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts b/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts +index 5dba4fc310..d8326a5c68 100644 +--- a/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts ++++ b/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts +@@ -60,6 +60,17 @@ + stdout-path = "serial0:115200n8"; + }; + ++ hdmi-connector { ++ compatible = "hdmi-connector"; ++ type = "a"; ++ ++ port { ++ hdmi_con_in: endpoint { ++ remote-endpoint = <&hdmi_out_con>; ++ }; ++ }; ++ }; ++ + leds { + compatible = "gpio-leds"; + +@@ -90,7 +101,7 @@ + initial-mode = <1>; /* initialize in HUB mode */ + disabled-ports = <1>; + intn-gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */ +- reset-gpios = <&pio 4 16 GPIO_ACTIVE_HIGH>; /* PE16 */ ++ reset-gpios = <&pio 4 16 GPIO_ACTIVE_LOW>; /* PE16 */ + connect-gpios = <&pio 4 17 GPIO_ACTIVE_HIGH>; /* PE17 */ + refclk-frequency = <19200000>; + }; +@@ -145,6 +156,18 @@ + }; + }; + ++&cpu0 { ++ cpu-supply = <®_dcdc2>; ++}; ++ ++&cpu100 { ++ cpu-supply = <®_dcdc3>; ++}; ++ ++&de { ++ status = "okay"; ++}; ++ + &ehci0 { + /* GL830 USB-to-SATA bridge here */ + status = "okay"; +@@ -160,10 +183,20 @@ + pinctrl-0 = <&emac_rgmii_pins>; + phy-supply = <®_dldo4>; + phy-handle = <&rgmii_phy>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; ++ status = "okay"; ++}; ++ ++&hdmi { + status = "okay"; + }; + ++&hdmi_out { ++ hdmi_out_con: endpoint { ++ remote-endpoint = <&hdmi_con_in>; ++ }; ++}; ++ + &mdio { + rgmii_phy: ethernet-phy@1 { + compatible = "ethernet-phy-ieee802.3-c22"; +@@ -239,6 +272,14 @@ + + #include "axp81x.dtsi" + ++&ac_power_supply { ++ status = "okay"; ++}; ++ ++&battery_power_supply { ++ status = "okay"; ++}; ++ + ®_aldo1 { + regulator-always-on; + regulator-min-microvolt = <1800000>; +@@ -386,11 +427,37 @@ + status = "okay"; + }; + ++&uart1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>; ++ uart-has-rtscts; ++ status = "okay"; ++ ++ bluetooth { ++ compatible = "brcm,bcm4330-bt"; ++ clocks = <&ac100_rtc 1>; ++ clock-names = "lpo"; ++ vbat-supply = <®_dcdc1>; ++ vddio-supply = <®_sw>; ++ device-wakeup-gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; /* PL10 */ ++ host-wakeup-gpios = <&r_pio 0 8 GPIO_ACTIVE_HIGH>; /* PL8 */ ++ shutdown-gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */ ++ }; ++}; ++ + &usb_otg { ++ dr_mode = "otg"; ++ status = "okay"; ++}; ++ ++&usb_power_supply { + status = "okay"; + }; + + &usbphy { ++ usb0_id_det-gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>; /* PH11 */ ++ usb0_vbus_power-supply = <&usb_power_supply>; ++ usb0_vbus-supply = <®_drivevbus>; + usb1_vbus-supply = <®_usb1_vbus>; + usb2_vbus-supply = <®_usb2_vbus>; + status = "okay"; +diff --git a/arch/arm/dts/sun8i-h3-orangepi-pc-plus.dts b/arch/arm/dts/sun8i-h3-orangepi-pc-plus.dts +index 71fb732089..babf4cf1b2 100644 +--- a/arch/arm/dts/sun8i-h3-orangepi-pc-plus.dts ++++ b/arch/arm/dts/sun8i-h3-orangepi-pc-plus.dts +@@ -53,11 +53,6 @@ + }; + }; + +-&emac { +- /* LEDs changed to active high on the plus */ +- /delete-property/ allwinner,leds-active-low; +-}; +- + &mmc1 { + vmmc-supply = <®_vcc3v3>; + bus-width = <4>; +diff --git a/arch/arm/dts/sun8i-h3-orangepi-plus2e.dts b/arch/arm/dts/sun8i-h3-orangepi-plus2e.dts +index 6dbf7b2e0c..b6ca45d18e 100644 +--- a/arch/arm/dts/sun8i-h3-orangepi-plus2e.dts ++++ b/arch/arm/dts/sun8i-h3-orangepi-plus2e.dts +@@ -67,7 +67,7 @@ + pinctrl-0 = <&emac_rgmii_pins>; + phy-supply = <®_gmac_3v3>; + phy-handle = <&ext_rgmii_phy>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + status = "okay"; + }; + +diff --git a/arch/arm/dts/sun8i-h3-orangepi-zero-plus2.dts b/arch/arm/dts/sun8i-h3-orangepi-zero-plus2.dts +index b8f46e2802..251bbab7d7 100644 +--- a/arch/arm/dts/sun8i-h3-orangepi-zero-plus2.dts ++++ b/arch/arm/dts/sun8i-h3-orangepi-zero-plus2.dts +@@ -70,6 +70,21 @@ + }; + }; + ++ leds { ++ compatible = "gpio-leds"; ++ ++ pwr { ++ label = "orangepi:green:pwr"; ++ gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; ++ default-state = "on"; ++ }; ++ ++ status { ++ label = "orangepi:red:status"; ++ gpios = <&pio 0 17 GPIO_ACTIVE_HIGH>; ++ }; ++ }; ++ + reg_vcc3v3: vcc3v3 { + compatible = "regulator-fixed"; + regulator-name = "vcc3v3"; +@@ -88,6 +103,10 @@ + status = "okay"; + }; + ++&ehci0 { ++ status = "okay"; ++}; ++ + &hdmi { + status = "okay"; + }; +@@ -132,8 +151,27 @@ + status = "okay"; + }; + ++&ohci0 { ++ status = "okay"; ++}; ++ + &uart0 { + pinctrl-names = "default"; + pinctrl-0 = <&uart0_pa_pins>; + status = "okay"; + }; ++ ++&usb_otg { ++ /* ++ * According to schematics CN1 MicroUSB port can be used to take ++ * external 5V to power up the board VBUS. On the contrary CN1 MicroUSB ++ * port cannot provide power externally even if the board is powered ++ * via GPIO pins. It thus makes sense to force peripheral mode. ++ */ ++ dr_mode = "peripheral"; ++ status = "okay"; ++}; ++ ++&usbphy { ++ status = "okay"; ++}; +diff --git a/arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts b/arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts +index 15c22b06fc..47954551f5 100644 +--- a/arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts ++++ b/arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts +@@ -120,7 +120,7 @@ + pinctrl-names = "default"; + pinctrl-0 = <&gmac_rgmii_pins>; + phy-handle = <&phy1>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + phy-supply = <®_dc1sw>; + status = "okay"; + }; +@@ -198,16 +198,16 @@ + }; + + ®_dc1sw { +- regulator-min-microvolt = <3000000>; +- regulator-max-microvolt = <3000000>; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; + regulator-name = "vcc-gmac-phy"; + }; + + ®_dcdc1 { + regulator-always-on; +- regulator-min-microvolt = <3000000>; +- regulator-max-microvolt = <3000000>; +- regulator-name = "vcc-3v0"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-3v3"; + }; + + ®_dcdc2 { +diff --git a/arch/arm/dts/sun9i-a80-cubieboard4.dts b/arch/arm/dts/sun9i-a80-cubieboard4.dts +index 85da85faf8..484b93df20 100644 +--- a/arch/arm/dts/sun9i-a80-cubieboard4.dts ++++ b/arch/arm/dts/sun9i-a80-cubieboard4.dts +@@ -89,31 +89,23 @@ + vga-dac { + compatible = "corpro,gm7123", "adi,adv7123", "dumb-vga-dac"; + vdd-supply = <®_dcdc1>; +- #address-cells = <1>; +- #size-cells = <0>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { +- #address-cells = <1>; +- #size-cells = <0>; + reg = <0>; + +- vga_dac_in: endpoint@0 { +- reg = <0>; ++ vga_dac_in: endpoint { + remote-endpoint = <&tcon0_out_vga>; + }; + }; + + port@1 { +- #address-cells = <1>; +- #size-cells = <0>; + reg = <1>; + +- vga_dac_out: endpoint@0 { +- reg = <0>; ++ vga_dac_out: endpoint { + remote-endpoint = <&vga_con_in>; + }; + }; +@@ -133,12 +125,27 @@ + status = "okay"; + }; + ++&gmac { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&gmac_rgmii_pins>; ++ phy-handle = <&phy1>; ++ phy-mode = "rgmii-id"; ++ phy-supply = <®_cldo1>; ++ status = "okay"; ++}; ++ + &i2c3 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c3_pins>; + status = "okay"; + }; + ++&mdio { ++ phy1: ethernet-phy@1 { ++ reg = <1>; ++ }; ++}; ++ + &mmc0 { + pinctrl-names = "default"; + pinctrl-0 = <&mmc0_pins>; +@@ -183,10 +190,26 @@ + clocks = <&ac100_rtc 0>; + }; + ++&pio { ++ vcc-pa-supply = <®_ldo_io1>; ++ vcc-pb-supply = <®_aldo2>; ++ vcc-pc-supply = <®_dcdc1>; ++ vcc-pd-supply = <®_dc1sw>; ++ vcc-pe-supply = <®_eldo2>; ++ vcc-pf-supply = <®_dcdc1>; ++ vcc-pg-supply = <®_ldo_io0>; ++ vcc-ph-supply = <®_dcdc1>; ++}; ++ + &r_ir { + status = "okay"; + }; + ++&r_pio { ++ vcc-pl-supply = <®_dldo2>; ++ vcc-pm-supply = <®_eldo3>; ++}; ++ + &r_rsb { + status = "okay"; + +@@ -217,6 +240,10 @@ + /* unused */ + }; + ++ reg_dc1sw: dc1sw { ++ regulator-name = "vcc-pd"; ++ }; ++ + reg_dc5ldo: dc5ldo { + regulator-always-on; + regulator-min-microvolt = <800000>; +@@ -271,7 +298,6 @@ + }; + + reg_dldo2: dldo2 { +- regulator-always-on; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + regulator-name = "vcc-pl"; +@@ -290,14 +316,12 @@ + }; + + reg_eldo3: eldo3 { +- regulator-always-on; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + regulator-name = "vcc-pm-codec-io1"; + }; + + reg_ldo_io0: ldo_io0 { +- regulator-always-on; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + regulator-name = "vcc-pg"; +@@ -385,6 +409,14 @@ + */ + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; ++ /* ++ * The PHY requires 20ms after all voltages ++ * are applied until core logic is ready and ++ * 30ms after the reset pin is de-asserted. ++ * Set a 100ms delay to account for PMIC ++ * ramp time and board traces. ++ */ ++ regulator-enable-ramp-delay = <100000>; + regulator-name = "vcc-gmac-phy"; + }; + +@@ -464,8 +496,7 @@ + }; + + &tcon0_out { +- tcon0_out_vga: endpoint@0 { +- reg = <0>; ++ tcon0_out_vga: endpoint { + remote-endpoint = <&vga_dac_in>; + }; + }; +diff --git a/arch/arm/dts/sun9i-a80-optimus.dts b/arch/arm/dts/sun9i-a80-optimus.dts +index 58a199b0e4..5c3580d712 100644 +--- a/arch/arm/dts/sun9i-a80-optimus.dts ++++ b/arch/arm/dts/sun9i-a80-optimus.dts +@@ -82,7 +82,7 @@ + + reg_usb1_vbus: usb1-vbus { + compatible = "regulator-fixed"; +- pinctrl-names = "default"; ++ regulator-name = "usb1-vbus"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + enable-active-high; +@@ -91,7 +91,7 @@ + + reg_usb3_vbus: usb3-vbus { + compatible = "regulator-fixed"; +- pinctrl-names = "default"; ++ regulator-name = "usb3-vbus"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + enable-active-high; +@@ -120,6 +120,21 @@ + status = "okay"; + }; + ++&gmac { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&gmac_rgmii_pins>; ++ phy-handle = <&phy1>; ++ phy-mode = "rgmii-id"; ++ phy-supply = <®_cldo1>; ++ status = "okay"; ++}; ++ ++&mdio { ++ phy1: ethernet-phy@1 { ++ reg = <1>; ++ }; ++}; ++ + &mmc0 { + pinctrl-names = "default"; + pinctrl-0 = <&mmc0_pins>; +@@ -172,10 +187,26 @@ + clocks = <&ac100_rtc 0>; + }; + ++&pio { ++ vcc-pa-supply = <®_ldo_io1>; ++ vcc-pb-supply = <®_aldo2>; ++ vcc-pc-supply = <®_dcdc1>; ++ vcc-pd-supply = <®_dcdc1>; ++ vcc-pe-supply = <®_eldo2>; ++ vcc-pf-supply = <®_dcdc1>; ++ vcc-pg-supply = <®_ldo_io0>; ++ vcc-ph-supply = <®_dcdc1>; ++}; ++ + &r_ir { + status = "okay"; + }; + ++&r_pio { ++ vcc-pl-supply = <®_dldo2>; ++ vcc-pm-supply = <®_eldo3>; ++}; ++ + &r_rsb { + status = "okay"; + +@@ -213,6 +244,10 @@ + regulator-name = "vdd-cpus-09-usbh"; + }; + ++ dc1sw { ++ /* unused */ ++ }; ++ + reg_dcdc1: dcdc1 { + regulator-always-on; + regulator-min-microvolt = <3000000>; +@@ -260,7 +295,6 @@ + }; + + reg_dldo2: dldo2 { +- regulator-always-on; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + regulator-name = "vcc-pl"; +@@ -279,14 +313,12 @@ + }; + + reg_eldo3: eldo3 { +- regulator-always-on; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + regulator-name = "vcc-pm-codec-io1"; + }; + + reg_ldo_io0: ldo_io0 { +- regulator-always-on; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + regulator-name = "vcc-pg"; +@@ -374,6 +406,14 @@ + */ + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; ++ /* ++ * The PHY requires 20ms after all voltages ++ * are applied until core logic is ready and ++ * 30ms after the reset pin is de-asserted. ++ * Set a 100ms delay to account for PMIC ++ * ramp time and board traces. ++ */ ++ regulator-enable-ramp-delay = <100000>; + regulator-name = "vcc-gmac-phy"; + }; + +diff --git a/arch/arm/dts/sunxi-bananapi-m2-plus.dtsi b/arch/arm/dts/sunxi-bananapi-m2-plus.dtsi +index 39263e74fb..8e5cb3b3fd 100644 +--- a/arch/arm/dts/sunxi-bananapi-m2-plus.dtsi ++++ b/arch/arm/dts/sunxi-bananapi-m2-plus.dtsi +@@ -126,7 +126,7 @@ + pinctrl-0 = <&emac_rgmii_pins>; + phy-supply = <®_gmac_3v3>; + phy-handle = <&ext_rgmii_phy>; +- phy-mode = "rgmii"; ++ phy-mode = "rgmii-id"; + + status = "okay"; + }; +-- +2.29.2 + diff --git a/uboot-tools.spec b/uboot-tools.spec index d5d0f11..9cbcc22 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -2,7 +2,7 @@ Name: uboot-tools Version: 2021.04 -Release: 0.1%{?candidate:.%{candidate}}%{?dist} +Release: 0.2%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -34,6 +34,8 @@ Patch12: rk3399-Pinebook-pro-EDP-support.patch Patch13: Raspberry-Pi-400-Compute-Module-4-support.patch Patch14: Raspberry-Pi-4-PCIe-handover.patch Patch15: rng-Add-iProc-RNG200-driver.patch +# Fixes for Allwinner network issues +Patch16: 0001-arm-dts-allwinner-sync-from-linux-for-RGMII-RX-TX-de.patch BuildRequires: bc BuildRequires: dtc @@ -234,6 +236,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Wed Feb 10 2021 Peter Robinson - 2021.04-0.2.rc1 +- Fixes for network issues on some Allwinner devices + * Mon Feb 01 2021 Peter Robinson - 2021.04-0.1.rc1 - Update to 2021.04 RC1 - Add new upstream devices diff --git a/uefi-use-Fedora-specific-path-name.patch b/uefi-use-Fedora-specific-path-name.patch index 68db8b9..5417866 100644 --- a/uefi-use-Fedora-specific-path-name.patch +++ b/uefi-use-Fedora-specific-path-name.patch @@ -1,7 +1,7 @@ -From d8fcb72d566b0ebca1613555ac13c0798817487e Mon Sep 17 00:00:00 2001 +From 308c4ac71c439b483bd69ed9e387cc1a56566af9 Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Tue, 24 Nov 2020 10:37:28 +0000 -Subject: [PATCH 2/2] use Fedora specific EFI path/name +Date: Mon, 8 Feb 2021 10:11:39 +0000 +Subject: [PATCH] use Fedora specific EFI path/name Signed-off-by: Peter Robinson --- @@ -9,7 +9,7 @@ Signed-off-by: Peter Robinson 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h -index 769477cd80e..22ce3685758 100644 +index 3d186b6d20..eda57e1707 100644 --- a/include/config_distro_bootcmd.h +++ b/include/config_distro_bootcmd.h @@ -92,9 +92,9 @@ @@ -24,7 +24,7 @@ index 769477cd80e..22ce3685758 100644 #elif defined(CONFIG_X86_RUN_32BIT) #define BOOTEFI_NAME "bootia32.efi" #elif defined(CONFIG_X86_RUN_64BIT) -@@ -132,7 +132,7 @@ +@@ -140,7 +140,7 @@ \ "boot_efi_binary=" \ "load ${devtype} ${devnum}:${distro_bootpart} " \ @@ -33,8 +33,8 @@ index 769477cd80e..22ce3685758 100644 "if fdt addr ${fdt_addr_r}; then " \ "bootefi ${kernel_addr_r} ${fdt_addr_r};" \ "else " \ -@@ -169,9 +169,9 @@ - "run boot_efi_binary\0" \ +@@ -177,9 +177,9 @@ + "run boot_efi_binary\0" \ "scan_dev_for_efi=" \ "if test -e ${devtype} ${devnum}:${distro_bootpart} " \ - "efi/boot/"BOOTEFI_NAME"; then " \ From 53c3d27d796ea30d63926d3de9b339f32fe05051 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 10 Feb 2021 12:02:50 +0000 Subject: [PATCH 052/271] drop sun9i boards which never had eth support anyway --- ...r-sync-from-linux-for-RGMII-RX-TX-de.patch | 278 +----------------- arm-boards | 3 - 2 files changed, 2 insertions(+), 279 deletions(-) diff --git a/0001-arm-dts-allwinner-sync-from-linux-for-RGMII-RX-TX-de.patch b/0001-arm-dts-allwinner-sync-from-linux-for-RGMII-RX-TX-de.patch index fe75a7a..48f87c1 100644 --- a/0001-arm-dts-allwinner-sync-from-linux-for-RGMII-RX-TX-de.patch +++ b/0001-arm-dts-allwinner-sync-from-linux-for-RGMII-RX-TX-de.patch @@ -1,4 +1,4 @@ -From d6aa8909c2099371333c83546d26d46a3b71ba48 Mon Sep 17 00:00:00 2001 +From 5322208dbdf97b2d618364fced3420d209a8dba0 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 10 Feb 2021 11:01:01 +0000 Subject: [PATCH] arm: dts: allwinner: sync from linux for RGMII RX/TX delay @@ -49,10 +49,8 @@ Signed-off-by: Peter Robinson arch/arm/dts/sun8i-h3-orangepi-plus2e.dts | 2 +- arch/arm/dts/sun8i-h3-orangepi-zero-plus2.dts | 38 +++ arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts | 12 +- - arch/arm/dts/sun9i-a80-cubieboard4.dts | 61 +++-- - arch/arm/dts/sun9i-a80-optimus.dts | 50 +++- arch/arm/dts/sunxi-bananapi-m2-plus.dtsi | 2 +- - 43 files changed, 752 insertions(+), 338 deletions(-) + 41 files changed, 661 insertions(+), 318 deletions(-) diff --git a/arch/arm/dts/sun50i-a64-bananapi-m64.dts b/arch/arm/dts/sun50i-a64-bananapi-m64.dts index 883f217efb..e5e840b9fb 100644 @@ -2378,278 +2376,6 @@ index 15c22b06fc..47954551f5 100644 }; ®_dcdc2 { -diff --git a/arch/arm/dts/sun9i-a80-cubieboard4.dts b/arch/arm/dts/sun9i-a80-cubieboard4.dts -index 85da85faf8..484b93df20 100644 ---- a/arch/arm/dts/sun9i-a80-cubieboard4.dts -+++ b/arch/arm/dts/sun9i-a80-cubieboard4.dts -@@ -89,31 +89,23 @@ - vga-dac { - compatible = "corpro,gm7123", "adi,adv7123", "dumb-vga-dac"; - vdd-supply = <®_dcdc1>; -- #address-cells = <1>; -- #size-cells = <0>; - - ports { - #address-cells = <1>; - #size-cells = <0>; - - port@0 { -- #address-cells = <1>; -- #size-cells = <0>; - reg = <0>; - -- vga_dac_in: endpoint@0 { -- reg = <0>; -+ vga_dac_in: endpoint { - remote-endpoint = <&tcon0_out_vga>; - }; - }; - - port@1 { -- #address-cells = <1>; -- #size-cells = <0>; - reg = <1>; - -- vga_dac_out: endpoint@0 { -- reg = <0>; -+ vga_dac_out: endpoint { - remote-endpoint = <&vga_con_in>; - }; - }; -@@ -133,12 +125,27 @@ - status = "okay"; - }; - -+&gmac { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&gmac_rgmii_pins>; -+ phy-handle = <&phy1>; -+ phy-mode = "rgmii-id"; -+ phy-supply = <®_cldo1>; -+ status = "okay"; -+}; -+ - &i2c3 { - pinctrl-names = "default"; - pinctrl-0 = <&i2c3_pins>; - status = "okay"; - }; - -+&mdio { -+ phy1: ethernet-phy@1 { -+ reg = <1>; -+ }; -+}; -+ - &mmc0 { - pinctrl-names = "default"; - pinctrl-0 = <&mmc0_pins>; -@@ -183,10 +190,26 @@ - clocks = <&ac100_rtc 0>; - }; - -+&pio { -+ vcc-pa-supply = <®_ldo_io1>; -+ vcc-pb-supply = <®_aldo2>; -+ vcc-pc-supply = <®_dcdc1>; -+ vcc-pd-supply = <®_dc1sw>; -+ vcc-pe-supply = <®_eldo2>; -+ vcc-pf-supply = <®_dcdc1>; -+ vcc-pg-supply = <®_ldo_io0>; -+ vcc-ph-supply = <®_dcdc1>; -+}; -+ - &r_ir { - status = "okay"; - }; - -+&r_pio { -+ vcc-pl-supply = <®_dldo2>; -+ vcc-pm-supply = <®_eldo3>; -+}; -+ - &r_rsb { - status = "okay"; - -@@ -217,6 +240,10 @@ - /* unused */ - }; - -+ reg_dc1sw: dc1sw { -+ regulator-name = "vcc-pd"; -+ }; -+ - reg_dc5ldo: dc5ldo { - regulator-always-on; - regulator-min-microvolt = <800000>; -@@ -271,7 +298,6 @@ - }; - - reg_dldo2: dldo2 { -- regulator-always-on; - regulator-min-microvolt = <3000000>; - regulator-max-microvolt = <3000000>; - regulator-name = "vcc-pl"; -@@ -290,14 +316,12 @@ - }; - - reg_eldo3: eldo3 { -- regulator-always-on; - regulator-min-microvolt = <3000000>; - regulator-max-microvolt = <3000000>; - regulator-name = "vcc-pm-codec-io1"; - }; - - reg_ldo_io0: ldo_io0 { -- regulator-always-on; - regulator-min-microvolt = <3000000>; - regulator-max-microvolt = <3000000>; - regulator-name = "vcc-pg"; -@@ -385,6 +409,14 @@ - */ - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <3300000>; -+ /* -+ * The PHY requires 20ms after all voltages -+ * are applied until core logic is ready and -+ * 30ms after the reset pin is de-asserted. -+ * Set a 100ms delay to account for PMIC -+ * ramp time and board traces. -+ */ -+ regulator-enable-ramp-delay = <100000>; - regulator-name = "vcc-gmac-phy"; - }; - -@@ -464,8 +496,7 @@ - }; - - &tcon0_out { -- tcon0_out_vga: endpoint@0 { -- reg = <0>; -+ tcon0_out_vga: endpoint { - remote-endpoint = <&vga_dac_in>; - }; - }; -diff --git a/arch/arm/dts/sun9i-a80-optimus.dts b/arch/arm/dts/sun9i-a80-optimus.dts -index 58a199b0e4..5c3580d712 100644 ---- a/arch/arm/dts/sun9i-a80-optimus.dts -+++ b/arch/arm/dts/sun9i-a80-optimus.dts -@@ -82,7 +82,7 @@ - - reg_usb1_vbus: usb1-vbus { - compatible = "regulator-fixed"; -- pinctrl-names = "default"; -+ regulator-name = "usb1-vbus"; - regulator-min-microvolt = <5000000>; - regulator-max-microvolt = <5000000>; - enable-active-high; -@@ -91,7 +91,7 @@ - - reg_usb3_vbus: usb3-vbus { - compatible = "regulator-fixed"; -- pinctrl-names = "default"; -+ regulator-name = "usb3-vbus"; - regulator-min-microvolt = <5000000>; - regulator-max-microvolt = <5000000>; - enable-active-high; -@@ -120,6 +120,21 @@ - status = "okay"; - }; - -+&gmac { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&gmac_rgmii_pins>; -+ phy-handle = <&phy1>; -+ phy-mode = "rgmii-id"; -+ phy-supply = <®_cldo1>; -+ status = "okay"; -+}; -+ -+&mdio { -+ phy1: ethernet-phy@1 { -+ reg = <1>; -+ }; -+}; -+ - &mmc0 { - pinctrl-names = "default"; - pinctrl-0 = <&mmc0_pins>; -@@ -172,10 +187,26 @@ - clocks = <&ac100_rtc 0>; - }; - -+&pio { -+ vcc-pa-supply = <®_ldo_io1>; -+ vcc-pb-supply = <®_aldo2>; -+ vcc-pc-supply = <®_dcdc1>; -+ vcc-pd-supply = <®_dcdc1>; -+ vcc-pe-supply = <®_eldo2>; -+ vcc-pf-supply = <®_dcdc1>; -+ vcc-pg-supply = <®_ldo_io0>; -+ vcc-ph-supply = <®_dcdc1>; -+}; -+ - &r_ir { - status = "okay"; - }; - -+&r_pio { -+ vcc-pl-supply = <®_dldo2>; -+ vcc-pm-supply = <®_eldo3>; -+}; -+ - &r_rsb { - status = "okay"; - -@@ -213,6 +244,10 @@ - regulator-name = "vdd-cpus-09-usbh"; - }; - -+ dc1sw { -+ /* unused */ -+ }; -+ - reg_dcdc1: dcdc1 { - regulator-always-on; - regulator-min-microvolt = <3000000>; -@@ -260,7 +295,6 @@ - }; - - reg_dldo2: dldo2 { -- regulator-always-on; - regulator-min-microvolt = <3000000>; - regulator-max-microvolt = <3000000>; - regulator-name = "vcc-pl"; -@@ -279,14 +313,12 @@ - }; - - reg_eldo3: eldo3 { -- regulator-always-on; - regulator-min-microvolt = <3000000>; - regulator-max-microvolt = <3000000>; - regulator-name = "vcc-pm-codec-io1"; - }; - - reg_ldo_io0: ldo_io0 { -- regulator-always-on; - regulator-min-microvolt = <3000000>; - regulator-max-microvolt = <3000000>; - regulator-name = "vcc-pg"; -@@ -374,6 +406,14 @@ - */ - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <3300000>; -+ /* -+ * The PHY requires 20ms after all voltages -+ * are applied until core logic is ready and -+ * 30ms after the reset pin is de-asserted. -+ * Set a 100ms delay to account for PMIC -+ * ramp time and board traces. -+ */ -+ regulator-enable-ramp-delay = <100000>; - regulator-name = "vcc-gmac-phy"; - }; - diff --git a/arch/arm/dts/sunxi-bananapi-m2-plus.dtsi b/arch/arm/dts/sunxi-bananapi-m2-plus.dtsi index 39263e74fb..8e5cb3b3fd 100644 --- a/arch/arm/dts/sunxi-bananapi-m2-plus.dtsi diff --git a/arm-boards b/arm-boards index 0cf367e..a2c8d89 100644 --- a/arm-boards +++ b/arm-boards @@ -132,10 +132,7 @@ udoo udoo_neo usbarmory UTOO_P66 -vexpress_ca15_tc2 -vexpress_ca9x4 wandboard -warp warp7 Wexler_TAB7200 Wits_Pro_A20_DKT From f9b692a09ec0d19067afba8cc3b51a144b6626cd Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 10 Feb 2021 14:01:29 +0000 Subject: [PATCH 053/271] few more fixes, this time for a83t SoC devices --- ...r-sync-from-linux-for-RGMII-RX-TX-de.patch | 605 +++++++++++++++++- 1 file changed, 594 insertions(+), 11 deletions(-) diff --git a/0001-arm-dts-allwinner-sync-from-linux-for-RGMII-RX-TX-de.patch b/0001-arm-dts-allwinner-sync-from-linux-for-RGMII-RX-TX-de.patch index 48f87c1..f0d3575 100644 --- a/0001-arm-dts-allwinner-sync-from-linux-for-RGMII-RX-TX-de.patch +++ b/0001-arm-dts-allwinner-sync-from-linux-for-RGMII-RX-TX-de.patch @@ -1,19 +1,23 @@ -From 5322208dbdf97b2d618364fced3420d209a8dba0 Mon Sep 17 00:00:00 2001 +From 4f26cacd28d71fd7d051b560f550863679a5f04b Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Wed, 10 Feb 2021 11:01:01 +0000 +Date: Wed, 10 Feb 2021 13:58:20 +0000 Subject: [PATCH] arm: dts: allwinner: sync from linux for RGMII RX/TX delay fixes Sync over a subset of the AllWinner dts changes from Linux 5.11 for the RGMII RX/TX delay network fixes. +This pulls other bits in needed to sync the whole files, the bits +are other minor fixes, or pieces of DT that don't affect U-Boot. + Signed-off-by: Peter Robinson --- + arch/arm/dts/axp81x.dtsi | 9 + arch/arm/dts/sun50i-a64-bananapi-m64.dts | 10 +- arch/arm/dts/sun50i-a64-orangepi-win.dts | 10 +- arch/arm/dts/sun50i-a64-pine64-plus.dts | 2 +- arch/arm/dts/sun50i-a64-sopine-baseboard.dts | 10 +- - arch/arm/dts/sun50i-a64.dtsi | 34 ++- + arch/arm/dts/sun50i-a64.dtsi | 34 +- .../dts/sun50i-h5-bananapi-m2-plus-v1.2.dts | 1 + .../arm/dts/sun50i-h5-libretech-all-h5-cc.dts | 2 +- arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts | 2 +- @@ -33,25 +37,51 @@ Signed-off-by: Peter Robinson arch/arm/dts/sun7i-a20-m3.dts | 12 +- arch/arm/dts/sun7i-a20-olimex-som-evb.dts | 12 +- arch/arm/dts/sun7i-a20-olimex-som204-evb.dts | 24 +- - arch/arm/dts/sun7i-a20-olinuxino-lime.dts | 30 +-- - arch/arm/dts/sun7i-a20-olinuxino-lime2.dts | 44 ++-- - arch/arm/dts/sun7i-a20-olinuxino-micro.dts | 30 +-- + arch/arm/dts/sun7i-a20-olinuxino-lime.dts | 30 +- + arch/arm/dts/sun7i-a20-olinuxino-lime2.dts | 44 +-- + arch/arm/dts/sun7i-a20-olinuxino-micro.dts | 30 +- arch/arm/dts/sun7i-a20-orangepi-mini.dts | 24 +- arch/arm/dts/sun7i-a20-orangepi.dts | 24 +- - arch/arm/dts/sun7i-a20-pcduino3-nano.dts | 28 +-- + arch/arm/dts/sun7i-a20-pcduino3-nano.dts | 28 +- arch/arm/dts/sun7i-a20-pcduino3.dts | 24 +- arch/arm/dts/sun7i-a20-wexler-tab7200.dts | 12 +- arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts | 24 +- - arch/arm/dts/sun7i-a20.dtsi | 218 +++++++++++++++++- - arch/arm/dts/sun8i-a83t-bananapi-m3.dts | 53 ++++- - arch/arm/dts/sun8i-a83t-cubietruck-plus.dts | 71 +++++- + arch/arm/dts/sun7i-a20.dtsi | 218 +++++++++++- + arch/arm/dts/sun8i-a83t-bananapi-m3.dts | 53 ++- + arch/arm/dts/sun8i-a83t-cubietruck-plus.dts | 71 +++- + arch/arm/dts/sun8i-a83t.dtsi | 310 ++++++++++++++++-- arch/arm/dts/sun8i-h3-orangepi-pc-plus.dts | 5 - arch/arm/dts/sun8i-h3-orangepi-plus2e.dts | 2 +- arch/arm/dts/sun8i-h3-orangepi-zero-plus2.dts | 38 +++ arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts | 12 +- arch/arm/dts/sunxi-bananapi-m2-plus.dtsi | 2 +- - 41 files changed, 661 insertions(+), 318 deletions(-) + 43 files changed, 947 insertions(+), 351 deletions(-) +diff --git a/arch/arm/dts/axp81x.dtsi b/arch/arm/dts/axp81x.dtsi +index 043c717dce..1dfeeceabf 100644 +--- a/arch/arm/dts/axp81x.dtsi ++++ b/arch/arm/dts/axp81x.dtsi +@@ -48,6 +48,11 @@ + interrupt-controller; + #interrupt-cells = <1>; + ++ ac_power_supply: ac-power-supply { ++ compatible = "x-powers,axp813-ac-power-supply"; ++ status = "disabled"; ++ }; ++ + axp_adc: adc { + compatible = "x-powers,axp813-adc"; + #io-channel-cells = <1>; +@@ -166,4 +171,8 @@ + status = "disabled"; + }; + }; ++ ++ usb_power_supply: usb-power-supply { ++ compatible = "x-powers,axp813-usb-power-supply"; ++ }; + }; diff --git a/arch/arm/dts/sun50i-a64-bananapi-m64.dts b/arch/arm/dts/sun50i-a64-bananapi-m64.dts index 883f217efb..e5e840b9fb 100644 --- a/arch/arm/dts/sun50i-a64-bananapi-m64.dts @@ -2247,6 +2277,559 @@ index 5dba4fc310..d8326a5c68 100644 usb1_vbus-supply = <®_usb1_vbus>; usb2_vbus-supply = <®_usb2_vbus>; status = "okay"; +diff --git a/arch/arm/dts/sun8i-a83t.dtsi b/arch/arm/dts/sun8i-a83t.dtsi +index 2be23d6009..c010b27fdb 100644 +--- a/arch/arm/dts/sun8i-a83t.dtsi ++++ b/arch/arm/dts/sun8i-a83t.dtsi +@@ -50,6 +50,7 @@ + #include + #include + #include ++#include + + / { + interrupt-parent = <&gic>; +@@ -61,79 +62,91 @@ + #size-cells = <0>; + + cpu0: cpu@0 { +- clocks = <&ccu CLK_C0CPUX>; +- clock-names = "cpu"; + compatible = "arm,cortex-a7"; + device_type = "cpu"; ++ clocks = <&ccu CLK_C0CPUX>; + operating-points-v2 = <&cpu0_opp_table>; + cci-control-port = <&cci_control0>; + enable-method = "allwinner,sun8i-a83t-smp"; + reg = <0>; ++ #cooling-cells = <2>; + }; + +- cpu@1 { ++ cpu1: cpu@1 { + compatible = "arm,cortex-a7"; + device_type = "cpu"; ++ clocks = <&ccu CLK_C0CPUX>; + operating-points-v2 = <&cpu0_opp_table>; + cci-control-port = <&cci_control0>; + enable-method = "allwinner,sun8i-a83t-smp"; + reg = <1>; ++ #cooling-cells = <2>; + }; + +- cpu@2 { ++ cpu2: cpu@2 { + compatible = "arm,cortex-a7"; + device_type = "cpu"; ++ clocks = <&ccu CLK_C0CPUX>; + operating-points-v2 = <&cpu0_opp_table>; + cci-control-port = <&cci_control0>; + enable-method = "allwinner,sun8i-a83t-smp"; + reg = <2>; ++ #cooling-cells = <2>; + }; + +- cpu@3 { ++ cpu3: cpu@3 { + compatible = "arm,cortex-a7"; + device_type = "cpu"; ++ clocks = <&ccu CLK_C0CPUX>; + operating-points-v2 = <&cpu0_opp_table>; + cci-control-port = <&cci_control0>; + enable-method = "allwinner,sun8i-a83t-smp"; + reg = <3>; ++ #cooling-cells = <2>; + }; + + cpu100: cpu@100 { +- clocks = <&ccu CLK_C1CPUX>; +- clock-names = "cpu"; + compatible = "arm,cortex-a7"; + device_type = "cpu"; ++ clocks = <&ccu CLK_C1CPUX>; + operating-points-v2 = <&cpu1_opp_table>; + cci-control-port = <&cci_control1>; + enable-method = "allwinner,sun8i-a83t-smp"; + reg = <0x100>; ++ #cooling-cells = <2>; + }; + +- cpu@101 { ++ cpu101: cpu@101 { + compatible = "arm,cortex-a7"; + device_type = "cpu"; ++ clocks = <&ccu CLK_C1CPUX>; + operating-points-v2 = <&cpu1_opp_table>; + cci-control-port = <&cci_control1>; + enable-method = "allwinner,sun8i-a83t-smp"; + reg = <0x101>; ++ #cooling-cells = <2>; + }; + +- cpu@102 { ++ cpu102: cpu@102 { + compatible = "arm,cortex-a7"; + device_type = "cpu"; ++ clocks = <&ccu CLK_C1CPUX>; + operating-points-v2 = <&cpu1_opp_table>; + cci-control-port = <&cci_control1>; + enable-method = "allwinner,sun8i-a83t-smp"; + reg = <0x102>; ++ #cooling-cells = <2>; + }; + +- cpu@103 { ++ cpu103: cpu@103 { + compatible = "arm,cortex-a7"; + device_type = "cpu"; ++ clocks = <&ccu CLK_C1CPUX>; + operating-points-v2 = <&cpu1_opp_table>; + cci-control-port = <&cci_control1>; + enable-method = "allwinner,sun8i-a83t-smp"; + reg = <0x103>; ++ #cooling-cells = <2>; + }; + }; + +@@ -187,11 +200,6 @@ + status = "disabled"; + }; + +- memory { +- reg = <0x40000000 0x80000000>; +- device_type = "memory"; +- }; +- + cpu0_opp_table: opp_table0 { + compatible = "operating-points-v2"; + opp-shared; +@@ -306,16 +314,27 @@ + + display_clocks: clock@1000000 { + compatible = "allwinner,sun8i-a83t-de2-clk"; +- reg = <0x01000000 0x100000>; +- clocks = <&ccu CLK_PLL_DE>, +- <&ccu CLK_BUS_DE>; +- clock-names = "mod", +- "bus"; ++ reg = <0x01000000 0x10000>; ++ clocks = <&ccu CLK_BUS_DE>, ++ <&ccu CLK_PLL_DE>; ++ clock-names = "bus", ++ "mod"; + resets = <&ccu RST_BUS_DE>; + #clock-cells = <1>; + #reset-cells = <1>; + }; + ++ rotate: rotate@1020000 { ++ compatible = "allwinner,sun8i-a83t-de2-rotate"; ++ reg = <0x1020000 0x10000>; ++ interrupts = ; ++ clocks = <&display_clocks CLK_BUS_ROT>, ++ <&display_clocks CLK_ROT>; ++ clock-names = "bus", ++ "mod"; ++ resets = <&display_clocks RST_ROT>; ++ }; ++ + mixer0: mixer@1100000 { + compatible = "allwinner,sun8i-a83t-de2-mixer-0"; + reg = <0x01100000 0x100000>; +@@ -338,6 +357,11 @@ + reg = <0>; + remote-endpoint = <&tcon0_in_mixer0>; + }; ++ ++ mixer0_out_tcon1: endpoint@1 { ++ reg = <1>; ++ remote-endpoint = <&tcon1_in_mixer0>; ++ }; + }; + }; + }; +@@ -356,9 +380,17 @@ + #size-cells = <0>; + + mixer1_out: port@1 { ++ #address-cells = <1>; ++ #size-cells = <0>; + reg = <1>; + +- mixer1_out_tcon1: endpoint { ++ mixer1_out_tcon0: endpoint@0 { ++ reg = <0>; ++ remote-endpoint = <&tcon0_in_mixer1>; ++ }; ++ ++ mixer1_out_tcon1: endpoint@1 { ++ reg = <1>; + remote-endpoint = <&tcon1_in_mixer1>; + }; + }; +@@ -425,6 +457,7 @@ + clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>; + clock-names = "ahb", "tcon-ch0"; + clock-output-names = "tcon-pixel-clock"; ++ #clock-cells = <0>; + resets = <&ccu RST_BUS_TCON0>, <&ccu RST_BUS_LVDS>; + reset-names = "lcd", "lvds"; + +@@ -441,11 +474,14 @@ + reg = <0>; + remote-endpoint = <&mixer0_out_tcon0>; + }; ++ ++ tcon0_in_mixer1: endpoint@1 { ++ reg = <1>; ++ remote-endpoint = <&mixer1_out_tcon0>; ++ }; + }; + + tcon0_out: port@1 { +- #address-cells = <1>; +- #size-cells = <0>; + reg = <1>; + }; + }; +@@ -465,9 +501,17 @@ + #size-cells = <0>; + + tcon1_in: port@0 { ++ #address-cells = <1>; ++ #size-cells = <0>; + reg = <0>; + +- tcon1_in_mixer1: endpoint { ++ tcon1_in_mixer0: endpoint@0 { ++ reg = <0>; ++ remote-endpoint = <&mixer0_out_tcon1>; ++ }; ++ ++ tcon1_in_mixer1: endpoint@1 { ++ reg = <1>; + remote-endpoint = <&mixer1_out_tcon1>; + }; + }; +@@ -549,6 +593,31 @@ + sid: eeprom@1c14000 { + compatible = "allwinner,sun8i-a83t-sid"; + reg = <0x1c14000 0x400>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ ths_calibration: thermal-sensor-calibration@34 { ++ reg = <0x34 8>; ++ }; ++ }; ++ ++ crypto: crypto@1c15000 { ++ compatible = "allwinner,sun8i-a83t-crypto"; ++ reg = <0x01c15000 0x1000>; ++ interrupts = ; ++ resets = <&ccu RST_BUS_SS>; ++ clocks = <&ccu CLK_BUS_SS>, <&ccu CLK_SS>; ++ clock-names = "bus", "mod"; ++ }; ++ ++ msgbox: mailbox@1c17000 { ++ compatible = "allwinner,sun8i-a83t-msgbox", ++ "allwinner,sun6i-a31-msgbox"; ++ reg = <0x01c17000 0x1000>; ++ clocks = <&ccu CLK_BUS_MSGBOX>; ++ resets = <&ccu RST_BUS_MSGBOX>; ++ interrupts = ; ++ #mbox-cells = <1>; + }; + + usb_otg: usb@1c19000 { +@@ -562,6 +631,7 @@ + phys = <&usbphy 0>; + phy-names = "usb"; + extcon = <&usbphy 0>; ++ dr_mode = "otg"; + status = "disabled"; + }; + +@@ -649,6 +719,20 @@ + #interrupt-cells = <3>; + #gpio-cells = <3>; + ++ /omit-if-no-ref/ ++ csi_8bit_parallel_pins: csi-8bit-parallel-pins { ++ pins = "PE0", "PE2", "PE3", "PE6", "PE7", ++ "PE8", "PE9", "PE10", "PE11", ++ "PE12", "PE13"; ++ function = "csi"; ++ }; ++ ++ /omit-if-no-ref/ ++ csi_mclk_pin: csi-mclk-pin { ++ pins = "PE1"; ++ function = "csi"; ++ }; ++ + emac_rgmii_pins: emac-rgmii-pins { + pins = "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", + "PD11", "PD12", "PD13", "PD14", "PD18", +@@ -676,6 +760,12 @@ + function = "i2c1"; + }; + ++ /omit-if-no-ref/ ++ i2c2_pe_pins: i2c2-pe-pins { ++ pins = "PE14", "PE15"; ++ function = "i2c2"; ++ }; ++ + i2c2_ph_pins: i2c2-ph-pins { + pins = "PH4", "PH5"; + function = "i2c2"; +@@ -747,10 +837,16 @@ + pins = "PG8", "PG9"; + function = "uart1"; + }; ++ ++ /omit-if-no-ref/ ++ uart2_pb_pins: uart2-pb-pins { ++ pins = "PB0", "PB1"; ++ function = "uart2"; ++ }; + }; + + timer@1c20c00 { +- compatible = "allwinner,sun4i-a10-timer"; ++ compatible = "allwinner,sun8i-a23-timer"; + reg = <0x01c20c00 0xa0>; + interrupts = , + ; +@@ -852,6 +948,39 @@ + status = "disabled"; + }; + ++ uart2: serial@1c28800 { ++ compatible = "snps,dw-apb-uart"; ++ reg = <0x01c28800 0x400>; ++ interrupts = ; ++ reg-shift = <2>; ++ reg-io-width = <4>; ++ clocks = <&ccu CLK_BUS_UART2>; ++ resets = <&ccu RST_BUS_UART2>; ++ status = "disabled"; ++ }; ++ ++ uart3: serial@1c28c00 { ++ compatible = "snps,dw-apb-uart"; ++ reg = <0x01c28c00 0x400>; ++ interrupts = ; ++ reg-shift = <2>; ++ reg-io-width = <4>; ++ clocks = <&ccu CLK_BUS_UART3>; ++ resets = <&ccu RST_BUS_UART3>; ++ status = "disabled"; ++ }; ++ ++ uart4: serial@1c29000 { ++ compatible = "snps,dw-apb-uart"; ++ reg = <0x01c29000 0x400>; ++ interrupts = ; ++ reg-shift = <2>; ++ reg-io-width = <4>; ++ clocks = <&ccu CLK_BUS_UART4>; ++ resets = <&ccu RST_BUS_UART4>; ++ status = "disabled"; ++ }; ++ + i2c0: i2c@1c2ac00 { + compatible = "allwinner,sun8i-a83t-i2c", + "allwinner,sun6i-a31-i2c"; +@@ -898,12 +1027,10 @@ + reg = <0x01c30000 0x104>; + interrupts = ; + interrupt-names = "macirq"; +- resets = <&ccu 13>; +- reset-names = "stmmaceth"; +- clocks = <&ccu 27>; ++ clocks = <&ccu CLK_BUS_EMAC>; + clock-names = "stmmaceth"; +- #address-cells = <1>; +- #size-cells = <0>; ++ resets = <&ccu RST_BUS_EMAC>; ++ reset-names = "stmmaceth"; + status = "disabled"; + + mdio: mdio { +@@ -914,7 +1041,7 @@ + }; + + gic: interrupt-controller@1c81000 { +- compatible = "arm,cortex-a7-gic", "arm,cortex-a15-gic"; ++ compatible = "arm,gic-400"; + reg = <0x01c81000 0x1000>, + <0x01c82000 0x2000>, + <0x01c84000 0x2000>, +@@ -924,6 +1051,21 @@ + interrupts = ; + }; + ++ csi: camera@1cb0000 { ++ compatible = "allwinner,sun8i-a83t-csi"; ++ reg = <0x01cb0000 0x1000>; ++ interrupts = ; ++ clocks = <&ccu CLK_BUS_CSI>, ++ <&ccu CLK_CSI_SCLK>, ++ <&ccu CLK_DRAM_CSI>; ++ clock-names = "bus", "mod", "ram"; ++ resets = <&ccu RST_BUS_CSI>; ++ status = "disabled"; ++ ++ csi_in: port { ++ }; ++ }; ++ + hdmi: hdmi@1ee0000 { + compatible = "allwinner,sun8i-a83t-dw-hdmi"; + reg = <0x01ee0000 0x10000>; +@@ -935,7 +1077,7 @@ + resets = <&ccu RST_BUS_HDMI1>; + reset-names = "ctrl"; + phys = <&hdmi_phy>; +- phy-names = "hdmi-phy"; ++ phy-names = "phy"; + pinctrl-names = "default"; + pinctrl-0 = <&hdmi_pins>; + status = "disabled"; +@@ -981,7 +1123,7 @@ + compatible = "allwinner,sun8i-a83t-r-ccu"; + reg = <0x01f01400 0x400>; + clocks = <&osc24M>, <&osc16Md512>, <&osc16M>, +- <&ccu 6>; ++ <&ccu CLK_PLL_PERIPH>; + clock-names = "hosc", "losc", "iosc", "pll-periph"; + #clock-cells = <1>; + #reset-cells = <1>; +@@ -992,6 +1134,26 @@ + reg = <0x1f01c00 0x400>; + }; + ++ r_cir: ir@1f02000 { ++ compatible = "allwinner,sun8i-a83t-ir", ++ "allwinner,sun6i-a31-ir"; ++ clocks = <&r_ccu CLK_APB0_IR>, <&r_ccu CLK_IR>; ++ clock-names = "apb", "ir"; ++ resets = <&r_ccu RST_APB0_IR>; ++ interrupts = ; ++ reg = <0x01f02000 0x400>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&r_cir_pin>; ++ status = "disabled"; ++ }; ++ ++ r_lradc: lradc@1f03c00 { ++ compatible = "allwinner,sun8i-a83t-r-lradc"; ++ reg = <0x01f03c00 0x100>; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ + r_pio: pinctrl@1f02c00 { + compatible = "allwinner,sun8i-a83t-r-pinctrl"; + reg = <0x01f02c00 0x400>; +@@ -1004,6 +1166,11 @@ + interrupt-controller; + #interrupt-cells = <3>; + ++ r_cir_pin: r-cir-pin { ++ pins = "PL12"; ++ function = "s_cir_rx"; ++ }; ++ + r_rsb_pins: r-rsb-pins { + pins = "PL0", "PL1"; + function = "s_rsb"; +@@ -1026,5 +1193,82 @@ + #address-cells = <1>; + #size-cells = <0>; + }; ++ ++ ths: thermal-sensor@1f04000 { ++ compatible = "allwinner,sun8i-a83t-ths"; ++ reg = <0x01f04000 0x100>; ++ interrupts = ; ++ nvmem-cells = <&ths_calibration>; ++ nvmem-cell-names = "calibration"; ++ #thermal-sensor-cells = <1>; ++ }; ++ }; ++ ++ thermal-zones { ++ cpu0_thermal: cpu0-thermal { ++ polling-delay-passive = <0>; ++ polling-delay = <0>; ++ thermal-sensors = <&ths 0>; ++ ++ trips { ++ cpu0_hot: cpu-hot { ++ temperature = <80000>; ++ hysteresis = <2000>; ++ type = "passive"; ++ }; ++ ++ cpu0_very_hot: cpu-very-hot { ++ temperature = <100000>; ++ hysteresis = <0>; ++ type = "critical"; ++ }; ++ }; ++ ++ cooling-maps { ++ cpu-hot-limit { ++ trip = <&cpu0_hot>; ++ cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; ++ }; ++ }; ++ }; ++ ++ cpu1_thermal: cpu1-thermal { ++ polling-delay-passive = <0>; ++ polling-delay = <0>; ++ thermal-sensors = <&ths 1>; ++ ++ trips { ++ cpu1_hot: cpu-hot { ++ temperature = <80000>; ++ hysteresis = <2000>; ++ type = "passive"; ++ }; ++ ++ cpu1_very_hot: cpu-very-hot { ++ temperature = <100000>; ++ hysteresis = <0>; ++ type = "critical"; ++ }; ++ }; ++ ++ cooling-maps { ++ cpu-hot-limit { ++ trip = <&cpu1_hot>; ++ cooling-device = <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, ++ <&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; ++ }; ++ }; ++ }; ++ ++ gpu_thermal: gpu-thermal { ++ polling-delay-passive = <0>; ++ polling-delay = <0>; ++ thermal-sensors = <&ths 2>; ++ }; + }; + }; diff --git a/arch/arm/dts/sun8i-h3-orangepi-pc-plus.dts b/arch/arm/dts/sun8i-h3-orangepi-pc-plus.dts index 71fb732089..babf4cf1b2 100644 --- a/arch/arm/dts/sun8i-h3-orangepi-pc-plus.dts From eb1de640aafa88d95de1fc0f1d7fbf76ceb59991 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Mon, 15 Feb 2021 18:53:17 -0600 Subject: [PATCH 054/271] build SPI and UART images for helios4 and clearfog Signed-off-by: Dennis Gilmore --- uboot-tools.spec | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 9cbcc22..20510b4 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -2,7 +2,7 @@ Name: uboot-tools Version: 2021.04 -Release: 0.2%{?candidate:.%{candidate}}%{?dist} +Release: 0.3%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -130,6 +130,18 @@ do # End ATF make $(echo $board)_defconfig O=builds/$(echo $board)/ %make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" O=builds/$(echo $board)/ + # build spi, and uart images for mvebu boards + mvebu=(clearfog helios4) + if [[ " ${mvebu[*]} " == *" $board "* ]]; then + for target in spi uart + do + echo "Board: $board Target: $target" + sed -i -e '/CONFIG_MVEBU_SPL_BOOT_DEVICE_/d' configs/$(echo $board)_defconfig + echo CONFIG_MVEBU_SPL_BOOT_DEVICE_${target^^}=y >> configs/$(echo $board)_defconfig + make $(echo $board)_defconfig O=builds/$(echo $board-$target)/ + %make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" O=builds/$(echo $board-$target)/ + done + fi done %endif @@ -144,7 +156,7 @@ mkdir -p $RPM_BUILD_ROOT%{_mandir}/man1 mkdir -p $RPM_BUILD_ROOT%{_datadir}/uboot/ %ifarch aarch64 -for board in $(cat %{_arch}-boards) +for board in $(ls builds) do mkdir -p $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/ for file in u-boot.bin u-boot.dtb u-boot.img u-boot-dtb.img u-boot.itb u-boot-sunxi-with-spl.bin u-boot-rockchip.bin idbloader.img spl/boot.bin spl/sunxi-spl.bin @@ -157,7 +169,7 @@ done %endif %ifarch %{arm} -for board in $(cat %{_arch}-boards) +for board in $(ls builds) do mkdir -p $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/ for file in MLO SPL spl/arndale-spl.bin spl/origen-spl.bin spl/*spl.bin u-boot.bin u-boot.dtb u-boot-dtb-tegra.bin u-boot.img u-boot.imx u-boot-spl.kwb u-boot-rockchip.bin u-boot-sunxi-with-spl.bin spl/boot.bin @@ -170,7 +182,7 @@ mkdir -p $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/ done # Bit of a hack to remove binaries we don't use as they're large -for board in $(cat %{_arch}-boards) +for board in $(ls builds) do if [ -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/u-boot-sunxi-with-spl.bin ]; then rm -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/u-boot.* @@ -184,10 +196,14 @@ do if [ -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/u-boot.imx ]; then rm -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/u-boot.bin fi + if [ -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/u-boot-spl.kwb ]; then + rm -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/u-boot.* + rm -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/u-boot-spl.bin + fi done %endif -for tool in bmp_logo dumpimage env/fw_printenv fit_check_sign fit_info gdb/gdbcont gdb/gdbsend gen_eth_addr gen_ethaddr_crc img2srec mkenvimage mkimage mksunxiboot ncb proftool sunxi-spl-image-builder ubsha1 xway-swap-bytes +for tool in bmp_logo dumpimage env/fw_printenv fit_check_sign fit_info gdb/gdbcont gdb/gdbsend gen_eth_addr gen_ethaddr_crc img2srec mkenvimage mkimage mksunxiboot ncb proftool sunxi-spl-image-builder ubsha1 xway-swap-bytes kwboot do install -p -m 0755 builds/tools/$tool $RPM_BUILD_ROOT%{_bindir} done @@ -198,10 +214,9 @@ install -p -m 0755 builds/tools/env/fw_printenv $RPM_BUILD_ROOT%{_bindir} install -p -m 0644 tools/env/fw_env.config $RPM_BUILD_ROOT%{_sysconfdir} -# Copy sone useful docs over +# Copy some useful docs over mkdir -p builds/docs cp -p board/hisilicon/hikey/README builds/docs/README.hikey -cp -p board/hisilicon/hikey/README builds/docs/README.hikey cp -p board/Marvell/db-88f6820-gp/README builds/docs/README.mvebu-db-88f6820 cp -p board/rockchip/evb_rk3399/README builds/docs/README.evb_rk3399 cp -p board/solidrun/clearfog/README builds/docs/README.clearfog @@ -236,6 +251,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Sun Dec 06 2020 Dennis Gilmore - 2021.04-0.3.rc1 +- build spi and uart images in addition to mmc for helios4 and clearfog + * Wed Feb 10 2021 Peter Robinson - 2021.04-0.2.rc1 - Fixes for network issues on some Allwinner devices From 422d33a8783ff05f712baee5ed42530316ae184a Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 16 Feb 2021 09:40:03 +0000 Subject: [PATCH 055/271] spec file cleanups --- uboot-tools.spec | 50 ++++++++++++++++++++++-------------------------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 20510b4..493894b 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -150,19 +150,18 @@ done %make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" tools-all O=builds/ %install -mkdir -p $RPM_BUILD_ROOT%{_bindir} -mkdir -p $RPM_BUILD_ROOT%{_sysconfdir} -mkdir -p $RPM_BUILD_ROOT%{_mandir}/man1 -mkdir -p $RPM_BUILD_ROOT%{_datadir}/uboot/ +mkdir -p %{buildroot}%{_bindir} +mkdir -p %{buildroot}%{_mandir}/man1 +mkdir -p %{buildroot}%{_datadir}/uboot/ %ifarch aarch64 for board in $(ls builds) do -mkdir -p $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/ + mkdir -p %{buildroot}%{_datadir}/uboot/$(echo $board)/ for file in u-boot.bin u-boot.dtb u-boot.img u-boot-dtb.img u-boot.itb u-boot-sunxi-with-spl.bin u-boot-rockchip.bin idbloader.img spl/boot.bin spl/sunxi-spl.bin do if [ -f builds/$(echo $board)/$(echo $file) ]; then - install -p -m 0644 builds/$(echo $board)/$(echo $file) $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/ + install -p -m 0644 builds/$(echo $board)/$(echo $file) %{buildroot}%{_datadir}/uboot/$(echo $board)/ fi done done @@ -171,11 +170,11 @@ done %ifarch %{arm} for board in $(ls builds) do -mkdir -p $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/ + mkdir -p %{buildroot}%{_datadir}/uboot/$(echo $board)/ for file in MLO SPL spl/arndale-spl.bin spl/origen-spl.bin spl/*spl.bin u-boot.bin u-boot.dtb u-boot-dtb-tegra.bin u-boot.img u-boot.imx u-boot-spl.kwb u-boot-rockchip.bin u-boot-sunxi-with-spl.bin spl/boot.bin do if [ -f builds/$(echo $board)/$(echo $file) ]; then - install -p -m 0644 builds/$(echo $board)/$(echo $file) $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/ + install -p -m 0644 builds/$(echo $board)/$(echo $file) %{buildroot}%{_datadir}/uboot/$(echo $board)/ fi done @@ -184,35 +183,33 @@ done # Bit of a hack to remove binaries we don't use as they're large for board in $(ls builds) do - if [ -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/u-boot-sunxi-with-spl.bin ]; then - rm -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/u-boot.* + if [ -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot-sunxi-with-spl.bin ]; then + rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.* fi - if [ -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/MLO ]; then - rm -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/u-boot.bin + if [ -f %{buildroot}%{_datadir}/uboot/$(echo $board)/MLO ]; then + rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.bin fi - if [ -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/SPL ]; then - rm -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/u-boot.bin + if [ -f %{buildroot}%{_datadir}/uboot/$(echo $board)/SPL ]; then + rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.bin fi - if [ -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/u-boot.imx ]; then - rm -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/u-boot.bin + if [ -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.imx ]; then + rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.bin fi - if [ -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/u-boot-spl.kwb ]; then - rm -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/u-boot.* - rm -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/u-boot-spl.bin + if [ -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot-spl.kwb ]; then + rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.* + rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot-spl.bin fi done %endif for tool in bmp_logo dumpimage env/fw_printenv fit_check_sign fit_info gdb/gdbcont gdb/gdbsend gen_eth_addr gen_ethaddr_crc img2srec mkenvimage mkimage mksunxiboot ncb proftool sunxi-spl-image-builder ubsha1 xway-swap-bytes kwboot do -install -p -m 0755 builds/tools/$tool $RPM_BUILD_ROOT%{_bindir} +install -p -m 0755 builds/tools/$tool %{buildroot}%{_bindir} done -install -p -m 0644 doc/mkimage.1 $RPM_BUILD_ROOT%{_mandir}/man1 +install -p -m 0644 doc/mkimage.1 %{buildroot}%{_mandir}/man1 -install -p -m 0755 builds/tools/env/fw_printenv $RPM_BUILD_ROOT%{_bindir} -( cd $RPM_BUILD_ROOT%{_bindir}; ln -sf fw_printenv fw_setenv ) - -install -p -m 0644 tools/env/fw_env.config $RPM_BUILD_ROOT%{_sysconfdir} +install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} +( cd %{buildroot}%{_bindir}; ln -sf fw_printenv fw_setenv ) # Copy some useful docs over mkdir -p builds/docs @@ -238,7 +235,6 @@ cp -p board/warp7/README builds/docs/README.warp7 %{_bindir}/* %{_mandir}/man1/mkimage.1* %dir %{_datadir}/uboot/ -%config(noreplace) %{_sysconfdir}/fw_env.config %ifarch aarch64 %files -n uboot-images-armv8 @@ -251,7 +247,7 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog -* Sun Dec 06 2020 Dennis Gilmore - 2021.04-0.3.rc1 +* Sun Dec 06 2020 Dennis Gilmore - build spi and uart images in addition to mmc for helios4 and clearfog * Wed Feb 10 2021 Peter Robinson - 2021.04-0.2.rc1 From 3fb46c33cddc58e84f2c902eb747957b91fe0ae8 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 16 Feb 2021 09:53:49 +0000 Subject: [PATCH 056/271] 2021.04 RC2 --- ...erry-Pi-400-Compute-Module-4-support.patch | 74 ++++++++----------- sources | 2 +- uboot-tools.spec | 11 +-- 3 files changed, 38 insertions(+), 49 deletions(-) diff --git a/Raspberry-Pi-400-Compute-Module-4-support.patch b/Raspberry-Pi-400-Compute-Module-4-support.patch index f68d498..7f72d73 100644 --- a/Raspberry-Pi-400-Compute-Module-4-support.patch +++ b/Raspberry-Pi-400-Compute-Module-4-support.patch @@ -1,6 +1,6 @@ -From 7e0e7e5a6f9cfe9ab36635f6867bbf25a27e70cd Mon Sep 17 00:00:00 2001 +From 253ed902965d9618030f902eb7a66b73e4b99d55 Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Mon, 1 Feb 2021 21:34:02 +0000 +Date: Tue, 16 Feb 2021 09:52:03 +0000 Subject: [PATCH] Raspberry Pi 400 Compute Module 4 support Signed-off-by: Peter Robinson @@ -20,10 +20,10 @@ Signed-off-by: Peter Robinson drivers/core/of_addr.c | 78 ++++++++++++++++++++++++++++++ drivers/core/ofnode.c | 9 ++++ drivers/core/read.c | 6 +++ - drivers/mmc/sdhci.c | 12 +++-- + drivers/mmc/sdhci.c | 10 ++-- drivers/pci/pcie_brcmstb.c | 12 ++--- drivers/usb/host/xhci-mem.c | 45 +++++++++-------- - drivers/usb/host/xhci-ring.c | 13 +++-- + drivers/usb/host/xhci-ring.c | 15 +++--- drivers/usb/host/xhci.c | 4 +- drivers/video/bcm2835.c | 1 + include/dm/device.h | 13 +++++ @@ -285,10 +285,10 @@ index dbfe51c6e8..00554af499 100644 bool "Support register maps" depends on DM diff --git a/drivers/core/device.c b/drivers/core/device.c -index 8629df8def..2ce9cbbe11 100644 +index 82a0098960..625134921d 100644 --- a/drivers/core/device.c +++ b/drivers/core/device.c -@@ -421,6 +421,43 @@ fail: +@@ -422,6 +422,43 @@ fail: return ret; } @@ -332,7 +332,7 @@ index 8629df8def..2ce9cbbe11 100644 int device_probe(struct udevice *dev) { const struct driver *drv; -@@ -483,6 +520,10 @@ int device_probe(struct udevice *dev) +@@ -484,6 +521,10 @@ int device_probe(struct udevice *dev) goto fail; } @@ -433,10 +433,10 @@ index bbe80136ba..5bc6ca1de0 100644 const __be32 *addrp, u64 size, unsigned int flags, const char *name, struct resource *r) diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c -index 7a5f4c0a73..1463c41c6e 100644 +index 26c9d04056..fa0bd2a9c4 100644 --- a/drivers/core/ofnode.c +++ b/drivers/core/ofnode.c -@@ -926,6 +926,15 @@ u64 ofnode_translate_dma_address(ofnode node, const fdt32_t *in_addr) +@@ -927,6 +927,15 @@ u64 ofnode_translate_dma_address(ofnode node, const fdt32_t *in_addr) return fdt_translate_dma_address(gd->fdt_blob, ofnode_to_offset(node), in_addr); } @@ -453,10 +453,10 @@ index 7a5f4c0a73..1463c41c6e 100644 { if (ofnode_is_np(node)) diff --git a/drivers/core/read.c b/drivers/core/read.c -index 4d9b5dd038..665424b2ff 100644 +index 14fd1214d6..4307ca4579 100644 --- a/drivers/core/read.c +++ b/drivers/core/read.c -@@ -340,6 +340,12 @@ u64 dev_translate_dma_address(const struct udevice *dev, const fdt32_t *in_addr) +@@ -341,6 +341,12 @@ u64 dev_translate_dma_address(const struct udevice *dev, const fdt32_t *in_addr) return ofnode_translate_dma_address(dev_ofnode(dev), in_addr); } @@ -470,24 +470,10 @@ index 4d9b5dd038..665424b2ff 100644 { if (of_live_active()) diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c -index 0628934312..62e4f53b8b 100644 +index ed0dc17325..5f18d472bd 100644 --- a/drivers/mmc/sdhci.c +++ b/drivers/mmc/sdhci.c -@@ -14,12 +14,12 @@ - #include - #include - #include -+#include - #include - #include - #include - #include - #include --#include - - static void sdhci_reset(struct sdhci_host *host, u8 mask) - { -@@ -73,6 +73,7 @@ static void sdhci_transfer_pio(struct sdhci_host *host, struct mmc_data *data) +@@ -74,6 +74,7 @@ static void sdhci_transfer_pio(struct sdhci_host *host, struct mmc_data *data) static void sdhci_prepare_dma(struct sdhci_host *host, struct mmc_data *data, int *is_aligned, int trans_bytes) { @@ -495,7 +481,7 @@ index 0628934312..62e4f53b8b 100644 unsigned char ctrl; void *buf; -@@ -103,8 +104,8 @@ static void sdhci_prepare_dma(struct sdhci_host *host, struct mmc_data *data, +@@ -104,8 +105,8 @@ static void sdhci_prepare_dma(struct sdhci_host *host, struct mmc_data *data, mmc_get_dma_dir(data)); if (host->flags & USE_SDMA) { @@ -506,7 +492,7 @@ index 0628934312..62e4f53b8b 100644 } #if CONFIG_IS_ENABLED(MMC_SDHCI_ADMA) else if (host->flags & (USE_ADMA | USE_ADMA64)) { -@@ -162,8 +163,9 @@ static int sdhci_transfer_data(struct sdhci_host *host, struct mmc_data *data) +@@ -163,8 +164,9 @@ static int sdhci_transfer_data(struct sdhci_host *host, struct mmc_data *data) start_addr &= ~(SDHCI_DEFAULT_BOUNDARY_SIZE - 1); start_addr += SDHCI_DEFAULT_BOUNDARY_SIZE; @@ -715,7 +701,7 @@ index b002d6f166..83147d51b5 100644 /* diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c -index d708fc928b..6b31ad4398 100644 +index d6c47d579b..bd69a19995 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -275,10 +275,13 @@ void xhci_queue_command(struct xhci_ctrl *ctrl, u8 *ptr, u32 slot_id, @@ -751,15 +737,17 @@ index d708fc928b..6b31ad4398 100644 void *last_transfer_trb_addr; int available_length; -@@ -723,7 +726,7 @@ again: +@@ -723,8 +726,8 @@ again: return -ETIMEDOUT; } -- if ((uintptr_t)(le64_to_cpu(event->trans_event.buffer)) +- if ((uintptr_t)(le64_to_cpu(event->trans_event.buffer)) != +- (uintptr_t)virt_to_phys(last_transfer_trb_addr)) { + if ((uintptr_t)(le64_to_cpu(xhci_bus_to_virt(ctrl, event->trans_event.buffer))) - != (uintptr_t)last_transfer_trb_addr) { ++ != (uintptr_t)virt_to_phys(last_transfer_trb_addr)) { available_length -= (int)EVENT_TRB_LEN(le32_to_cpu(event->trans_event.transfer_len)); + xhci_acknowledge_event(ctrl); @@ -884,7 +887,7 @@ int xhci_ctrl_tx(struct usb_device *udev, unsigned long pipe, if (length > 0) { if (req->requesttype & USB_DIR_IN) @@ -804,10 +792,10 @@ index 9326999cd3..c2962932c9 100644 { } }; diff --git a/include/dm/device.h b/include/dm/device.h -index e665558444..b614ff1a69 100644 +index 28533ce0b6..bb9faa0ed9 100644 --- a/include/dm/device.h +++ b/include/dm/device.h -@@ -148,6 +148,8 @@ enum { +@@ -159,6 +159,8 @@ enum { * When CONFIG_DEVRES is enabled, devm_kmalloc() and friends will * add to this list. Memory so-allocated will be freed * automatically when the device is removed / unbound @@ -816,7 +804,7 @@ index e665558444..b614ff1a69 100644 */ struct udevice { const struct driver *driver; -@@ -172,6 +174,9 @@ struct udevice { +@@ -183,6 +185,9 @@ struct udevice { #ifdef CONFIG_DEVRES struct list_head devres_head; #endif @@ -826,7 +814,7 @@ index e665558444..b614ff1a69 100644 }; /* Maximum sequence number supported */ -@@ -213,6 +218,14 @@ static inline ofnode dev_ofnode(const struct udevice *dev) +@@ -224,6 +229,14 @@ static inline ofnode dev_ofnode(const struct udevice *dev) /* Returns non-zero if the device is active (probed and not removed) */ #define device_active(dev) (dev_get_flags(dev) & DM_FLAG_ACTIVATED) @@ -870,10 +858,10 @@ index 3fa1ffce81..ee21d5cf4f 100644 * of_get_address() - obtain an address from a node * diff --git a/include/dm/ofnode.h b/include/dm/ofnode.h -index 5b088650d3..c4680fbbaa 100644 +index 5318d65035..2c0597c407 100644 --- a/include/dm/ofnode.h +++ b/include/dm/ofnode.h -@@ -996,6 +996,22 @@ u64 ofnode_translate_address(ofnode node, const fdt32_t *in_addr); +@@ -998,6 +998,22 @@ u64 ofnode_translate_address(ofnode node, const fdt32_t *in_addr); */ u64 ofnode_translate_dma_address(ofnode node, const fdt32_t *in_addr); @@ -897,7 +885,7 @@ index 5b088650d3..c4680fbbaa 100644 * ofnode_device_is_compatible() - check if the node is compatible with compat * diff --git a/include/dm/read.h b/include/dm/read.h -index 03ba98232a..da3763d245 100644 +index 97575bcad0..5bf3405614 100644 --- a/include/dm/read.h +++ b/include/dm/read.h @@ -647,6 +647,21 @@ u64 dev_translate_address(const struct udevice *dev, const fdt32_t *in_addr); @@ -922,7 +910,7 @@ index 03ba98232a..da3763d245 100644 /** * dev_read_alias_highest_id - Get highest alias id for the given stem * @stem: Alias stem to be examined -@@ -1004,6 +1019,12 @@ static inline u64 dev_translate_dma_address(const struct udevice *dev, +@@ -1005,6 +1020,12 @@ static inline u64 dev_translate_dma_address(const struct udevice *dev, return ofnode_translate_dma_address(dev_ofnode(dev), in_addr); } @@ -1067,10 +1055,10 @@ index e70e50f402..6275ec56ea 100644 obj-$(CONFIG_ACPIGEN) += acpi.o obj-$(CONFIG_ACPIGEN) += acpigen.o diff --git a/test/dm/core.c b/test/dm/core.c -index 1f5ca570dc..855449aac2 100644 +index ce31d86c7d..35ca689d64 100644 --- a/test/dm/core.c +++ b/test/dm/core.c -@@ -1085,3 +1085,33 @@ static int dm_test_all_have_seq(struct unit_test_state *uts) +@@ -1180,3 +1180,33 @@ static int dm_test_all_have_seq(struct unit_test_state *uts) return 0; } DM_TEST(dm_test_all_have_seq, UT_TESTF_SCAN_PDATA); diff --git a/sources b/sources index 77f0525..6d65d26 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2021.04-rc1.tar.bz2) = ea3adadd7f41d6801487a5c5189b664fd3351c24a57fbf0885f2548f8aebb2fc89f95214e0f76d6623d5ef8ea518eaaef50f117ca040f8b723e5d620e8014e9f +SHA512 (u-boot-2021.04-rc2.tar.bz2) = 7bf07f15e0c5f5e63ef8cb9568278ea7c209e484bbb599c47b22a8d2e5c007cc204eec365e5328dea3e7b016cd6ba0cb4c917330cc76163b1016f7c7762ad1bf diff --git a/uboot-tools.spec b/uboot-tools.spec index 493894b..55f2632 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc1 +%global candidate rc2 Name: uboot-tools Version: 2021.04 @@ -20,8 +20,6 @@ Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch Patch2: uefi-use-Fedora-specific-path-name.patch # RPi - uses RPI firmware device tree for HAT support Patch3: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch -# Ajust the U-Boot offsets in SPL to take less space -#Patch4: rockchip-spl-u-boot-itb-offset.patch # Board fixes and enablement # AllWinner improvements @@ -29,7 +27,7 @@ Patch10: AllWinner-PineTab.patch # TI fixes Patch11: 0001-Fix-BeagleAI-detection.patch # Rockchips improvements -Patch12: rk3399-Pinebook-pro-EDP-support.patch +#Patch12: rk3399-Pinebook-pro-EDP-support.patch # Raspberry Pi improvements Patch13: Raspberry-Pi-400-Compute-Module-4-support.patch Patch14: Raspberry-Pi-4-PCIe-handover.patch @@ -247,7 +245,10 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog -* Sun Dec 06 2020 Dennis Gilmore +* Tue Feb 16 2021 Peter Robinson - 2021.04-0.3.rc2 +- Update to 2021.04 RC2 + +* Mon Feb 15 2021 Dennis Gilmore - build spi and uart images in addition to mmc for helios4 and clearfog * Wed Feb 10 2021 Peter Robinson - 2021.04-0.2.rc1 From f458c5418f543b8eeaafa59760d1119260f68b00 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 8 Mar 2021 14:59:13 +0000 Subject: [PATCH 057/271] 2021.04 RC3 --- Raspberry-Pi-4-PCIe-handover.patch | 64 - ...erry-Pi-400-Compute-Module-4-support.patch | 1195 ----------------- rk3399-Pinebook-pro-EDP-support.patch | 1188 +++++++++++++--- rng-Add-iProc-RNG200-driver.patch | 450 ------- sources | 2 +- uboot-tools.spec | 15 +- 6 files changed, 1006 insertions(+), 1908 deletions(-) delete mode 100644 Raspberry-Pi-4-PCIe-handover.patch delete mode 100644 Raspberry-Pi-400-Compute-Module-4-support.patch delete mode 100644 rng-Add-iProc-RNG200-driver.patch diff --git a/Raspberry-Pi-4-PCIe-handover.patch b/Raspberry-Pi-4-PCIe-handover.patch deleted file mode 100644 index 308db67..0000000 --- a/Raspberry-Pi-4-PCIe-handover.patch +++ /dev/null @@ -1,64 +0,0 @@ -From ced27461c009f208f880fa6bbc34c216e103eca6 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Mon, 1 Feb 2021 21:39:36 +0000 -Subject: [PATCH] Raspberry Pi 4 PCIe handover - -Signed-off-by: Peter Robinson ---- - drivers/pci/pcie_brcmstb.c | 19 +++++++++++++++++++ - drivers/usb/host/xhci-pci.c | 2 +- - 2 files changed, 20 insertions(+), 1 deletion(-) - -diff --git a/drivers/pci/pcie_brcmstb.c b/drivers/pci/pcie_brcmstb.c -index bd645d7896..398d7e1849 100644 ---- a/drivers/pci/pcie_brcmstb.c -+++ b/drivers/pci/pcie_brcmstb.c -@@ -577,6 +577,24 @@ static int brcm_pcie_probe(struct udevice *dev) - return 0; - } - -+static int brcm_pcie_remove(struct udevice *dev) -+{ -+ struct brcm_pcie *pcie = dev_get_priv(dev); -+ void __iomem *base = pcie->base; -+ -+ /* Assert fundamental reset */ -+ setbits_le32(base + PCIE_RGR1_SW_INIT_1, RGR1_SW_INIT_1_PERST_MASK); -+ -+ /* Turn off SerDes */ -+ setbits_le32(base + PCIE_MISC_HARD_PCIE_HARD_DEBUG, -+ PCIE_HARD_DEBUG_SERDES_IDDQ_MASK); -+ -+ /* Shutdown bridge */ -+ setbits_le32(base + PCIE_RGR1_SW_INIT_1, RGR1_SW_INIT_1_INIT_MASK); -+ -+ return 0; -+} -+ - static int brcm_pcie_of_to_plat(struct udevice *dev) - { - struct brcm_pcie *pcie = dev_get_priv(dev); -@@ -616,6 +634,7 @@ U_BOOT_DRIVER(pcie_brcm_base) = { - .ops = &brcm_pcie_ops, - .of_match = brcm_pcie_ids, - .probe = brcm_pcie_probe, -+ .remove = brcm_pcie_remove, - .of_to_plat = brcm_pcie_of_to_plat, - .priv_auto = sizeof(struct brcm_pcie), - }; -diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c -index 2b445f21b5..d626929953 100644 ---- a/drivers/usb/host/xhci-pci.c -+++ b/drivers/usb/host/xhci-pci.c -@@ -61,7 +61,7 @@ U_BOOT_DRIVER(xhci_pci) = { - .ops = &xhci_usb_ops, - .plat_auto = sizeof(struct usb_plat), - .priv_auto = sizeof(struct xhci_ctrl), -- .flags = DM_FLAG_ALLOC_PRIV_DMA, -+ .flags = DM_FLAG_OS_PREPARE | DM_FLAG_ALLOC_PRIV_DMA, - }; - - static struct pci_device_id xhci_pci_supported[] = { --- -2.29.2 - diff --git a/Raspberry-Pi-400-Compute-Module-4-support.patch b/Raspberry-Pi-400-Compute-Module-4-support.patch deleted file mode 100644 index 7f72d73..0000000 --- a/Raspberry-Pi-400-Compute-Module-4-support.patch +++ /dev/null @@ -1,1195 +0,0 @@ -From 253ed902965d9618030f902eb7a66b73e4b99d55 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Tue, 16 Feb 2021 09:52:03 +0000 -Subject: [PATCH] Raspberry Pi 400 Compute Module 4 support - -Signed-off-by: Peter Robinson ---- - arch/sandbox/dts/test.dts | 21 ++++++++ - board/raspberrypi/rpi/rpi.c | 10 ++++ - common/fdt_support.c | 73 ++++++++++++++++++++++++++++ - configs/rpi_4_32b_defconfig | 1 + - configs/rpi_4_defconfig | 1 + - configs/rpi_arm64_defconfig | 1 + - configs/sandbox64_defconfig | 1 + - configs/sandbox_defconfig | 1 + - configs/sandbox_flattree_defconfig | 1 + - configs/sandbox_spl_defconfig | 1 + - drivers/core/Kconfig | 10 ++++ - drivers/core/device.c | 41 ++++++++++++++++ - drivers/core/of_addr.c | 78 ++++++++++++++++++++++++++++++ - drivers/core/ofnode.c | 9 ++++ - drivers/core/read.c | 6 +++ - drivers/mmc/sdhci.c | 10 ++-- - drivers/pci/pcie_brcmstb.c | 12 ++--- - drivers/usb/host/xhci-mem.c | 45 +++++++++-------- - drivers/usb/host/xhci-ring.c | 15 +++--- - drivers/usb/host/xhci.c | 4 +- - drivers/video/bcm2835.c | 1 + - include/dm/device.h | 13 +++++ - include/dm/of_addr.h | 17 +++++++ - include/dm/ofnode.h | 16 ++++++ - include/dm/read.h | 21 ++++++++ - include/fdt_support.h | 14 ++++++ - include/mmc.h | 6 +++ - include/phys2bus.h | 17 +++++++ - include/usb/xhci.h | 20 +++++++- - test/dm/Makefile | 2 + - test/dm/core.c | 30 ++++++++++++ - test/dm/phys2bus.c | 37 ++++++++++++++ - test/dm/read.c | 49 +++++++++++++++++++ - 33 files changed, 543 insertions(+), 41 deletions(-) - create mode 100644 test/dm/phys2bus.c - create mode 100644 test/dm/read.c - -diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts -index e95f4631bf..d4195b45bb 100644 ---- a/arch/sandbox/dts/test.dts -+++ b/arch/sandbox/dts/test.dts -@@ -350,6 +350,27 @@ - test5-gpios = <&gpio_a 19>; - }; - -+ mmio-bus@0 { -+ #address-cells = <1>; -+ #size-cells = <1>; -+ compatible = "denx,u-boot-test-bus"; -+ dma-ranges = <0x10000000 0x00000000 0x00040000>; -+ -+ subnode@0 { -+ compatible = "denx,u-boot-fdt-test"; -+ }; -+ }; -+ -+ mmio-bus@1 { -+ #address-cells = <1>; -+ #size-cells = <1>; -+ compatible = "denx,u-boot-test-bus"; -+ -+ subnode@0 { -+ compatible = "denx,u-boot-fdt-test"; -+ }; -+ }; -+ - acpi_test1: acpi-test { - compatible = "denx,u-boot-acpi-test"; - acpi-ssdt-test-data = "ab"; -diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c -index 6b1fa5fc14..abcf41a5a8 100644 ---- a/board/raspberrypi/rpi/rpi.c -+++ b/board/raspberrypi/rpi/rpi.c -@@ -157,6 +157,16 @@ static const struct rpi_model rpi_models_new_scheme[] = { - DTB_DIR "bcm2711-rpi-4-b.dtb", - true, - }, -+ [0x13] = { -+ "400", -+ DTB_DIR "bcm2711-rpi-400.dtb", -+ true, -+ }, -+ [0x14] = { -+ "Compute Module 4", -+ DTB_DIR "bcm2711-rpi-cm4.dtb", -+ true, -+ }, - }; - - static const struct rpi_model rpi_models_old_scheme[] = { -diff --git a/common/fdt_support.c b/common/fdt_support.c -index 638eca983e..1a1b408607 100644 ---- a/common/fdt_support.c -+++ b/common/fdt_support.c -@@ -1344,6 +1344,79 @@ u64 fdt_translate_dma_address(const void *blob, int node_offset, - return __of_translate_address(blob, node_offset, in_addr, "dma-ranges"); - } - -+int fdt_get_dma_range(const void *blob, int node, phys_addr_t *cpu, -+ dma_addr_t *bus, u64 *size) -+{ -+ bool found_dma_ranges = false; -+ struct of_bus *bus_node; -+ const fdt32_t *ranges; -+ int na, ns, pna, pns; -+ int parent = node; -+ int ret = 0; -+ int len; -+ -+ /* Find the closest dma-ranges property */ -+ while (parent >= 0) { -+ ranges = fdt_getprop(blob, parent, "dma-ranges", &len); -+ -+ /* Ignore empty ranges, they imply no translation required */ -+ if (ranges && len > 0) -+ break; -+ -+ /* Once we find 'dma-ranges', then a missing one is an error */ -+ if (found_dma_ranges && !ranges) { -+ ret = -EINVAL; -+ goto out; -+ } -+ -+ if (ranges) -+ found_dma_ranges = true; -+ -+ parent = fdt_parent_offset(blob, parent); -+ } -+ -+ if (!ranges || parent < 0) { -+ debug("no dma-ranges found for node %s\n", -+ fdt_get_name(blob, node, NULL)); -+ ret = -ENOENT; -+ goto out; -+ } -+ -+ /* switch to that node */ -+ node = parent; -+ parent = fdt_parent_offset(blob, node); -+ if (parent < 0) { -+ printf("Found dma-ranges in root node, shoudln't happen\n"); -+ ret = -EINVAL; -+ goto out; -+ } -+ -+ /* Get the address sizes both for the bus and its parent */ -+ bus_node = of_match_bus(blob, node); -+ bus_node->count_cells(blob, node, &na, &ns); -+ if (!OF_CHECK_COUNTS(na, ns)) { -+ printf("%s: Bad cell count for %s\n", __FUNCTION__, -+ fdt_get_name(blob, node, NULL)); -+ return -EINVAL; -+ goto out; -+ } -+ -+ bus_node = of_match_bus(blob, parent); -+ bus_node->count_cells(blob, parent, &pna, &pns); -+ if (!OF_CHECK_COUNTS(pna, pns)) { -+ printf("%s: Bad cell count for %s\n", __FUNCTION__, -+ fdt_get_name(blob, parent, NULL)); -+ return -EINVAL; -+ goto out; -+ } -+ -+ *bus = fdt_read_number(ranges, na); -+ *cpu = fdt_translate_dma_address(blob, node, ranges + na); -+ *size = fdt_read_number(ranges + na + pna, ns); -+out: -+ return ret; -+} -+ - /** - * fdt_node_offset_by_compat_reg: Find a node that matches compatiable and - * who's reg property matches a physical cpu address -diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig -index 5ddd838fd5..0a5d3ff8cd 100644 ---- a/configs/rpi_4_32b_defconfig -+++ b/configs/rpi_4_32b_defconfig -@@ -22,6 +22,7 @@ CONFIG_OF_BOARD=y - CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" - CONFIG_SYS_RELOC_GD_ENV_ADDR=y - CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y -+CONFIG_DM_DMA=y - CONFIG_DFU_MMC=y - CONFIG_DM_KEYBOARD=y - CONFIG_DM_MMC=y -diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig -index 2590d0a696..b61cdc05f1 100644 ---- a/configs/rpi_4_defconfig -+++ b/configs/rpi_4_defconfig -@@ -22,6 +22,7 @@ CONFIG_OF_BOARD=y - CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" - CONFIG_SYS_RELOC_GD_ENV_ADDR=y - CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y -+CONFIG_DM_DMA=y - CONFIG_DFU_MMC=y - CONFIG_DM_KEYBOARD=y - CONFIG_DM_MMC=y -diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig -index 2639219a1a..4125a1feba 100644 ---- a/configs/rpi_arm64_defconfig -+++ b/configs/rpi_arm64_defconfig -@@ -20,6 +20,7 @@ CONFIG_CMD_FS_UUID=y - CONFIG_OF_BOARD=y - CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" - CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y -+CONFIG_DM_DMA=y - CONFIG_DM_KEYBOARD=y - CONFIG_DM_MMC=y - CONFIG_MMC_SDHCI=y -diff --git a/configs/sandbox64_defconfig b/configs/sandbox64_defconfig -index 4e67819559..634c19502c 100644 ---- a/configs/sandbox64_defconfig -+++ b/configs/sandbox64_defconfig -@@ -94,6 +94,7 @@ CONFIG_ENV_EXT4_DEVICE_AND_PART="0:0" - CONFIG_BOOTP_SEND_HOSTNAME=y - CONFIG_NETCONSOLE=y - CONFIG_IP_DEFRAG=y -+CONFIG_DM_DMA=y - CONFIG_REGMAP=y - CONFIG_SYSCON=y - CONFIG_DEVRES=y -diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig -index 0c7674efc9..fc1df3114c 100644 ---- a/configs/sandbox_defconfig -+++ b/configs/sandbox_defconfig -@@ -108,6 +108,7 @@ CONFIG_ENV_EXT4_DEVICE_AND_PART="0:0" - CONFIG_BOOTP_SEND_HOSTNAME=y - CONFIG_NETCONSOLE=y - CONFIG_IP_DEFRAG=y -+CONFIG_DM_DMA=y - CONFIG_REGMAP=y - CONFIG_SYSCON=y - CONFIG_DEVRES=y -diff --git a/configs/sandbox_flattree_defconfig b/configs/sandbox_flattree_defconfig -index 96465c56cf..4401f33f0b 100644 ---- a/configs/sandbox_flattree_defconfig -+++ b/configs/sandbox_flattree_defconfig -@@ -75,6 +75,7 @@ CONFIG_ENV_EXT4_DEVICE_AND_PART="0:0" - CONFIG_BOOTP_SEND_HOSTNAME=y - CONFIG_NETCONSOLE=y - CONFIG_IP_DEFRAG=y -+CONFIG_DM_DMA=y - CONFIG_REGMAP=y - CONFIG_SYSCON=y - CONFIG_DEVRES=y -diff --git a/configs/sandbox_spl_defconfig b/configs/sandbox_spl_defconfig -index 61dae34a6a..c0118702a8 100644 ---- a/configs/sandbox_spl_defconfig -+++ b/configs/sandbox_spl_defconfig -@@ -95,6 +95,7 @@ CONFIG_BOOTP_SEND_HOSTNAME=y - CONFIG_NETCONSOLE=y - CONFIG_IP_DEFRAG=y - CONFIG_SPL_DM=y -+CONFIG_DM_DMA=y - CONFIG_REGMAP=y - CONFIG_SPL_REGMAP=y - CONFIG_SYSCON=y -diff --git a/drivers/core/Kconfig b/drivers/core/Kconfig -index dbfe51c6e8..00554af499 100644 ---- a/drivers/core/Kconfig -+++ b/drivers/core/Kconfig -@@ -129,6 +129,16 @@ config TPL_DM_INLINE_OFNODE - This applies to several ofnode functions (see ofnode.h) which are - seldom used. Inlining them can help reduce code size. - -+config DM_DMA -+ bool "Support per-device DMA constraints" -+ depends on DM -+ default n -+ help -+ Enable this to extract per-device DMA constraints, only supported on -+ device-tree systems for now. This is needed in order translate -+ addresses on systems where different buses have different views of -+ the physical address space. -+ - config REGMAP - bool "Support register maps" - depends on DM -diff --git a/drivers/core/device.c b/drivers/core/device.c -index 82a0098960..625134921d 100644 ---- a/drivers/core/device.c -+++ b/drivers/core/device.c -@@ -422,6 +422,43 @@ fail: - return ret; - } - -+/** -+ * device_get_dma_constraints() - Populate device's DMA constraints -+ * -+ * Gets a device's DMA constraints from firmware. This information is later -+ * used by drivers to translate physcal addresses to the device's bus address -+ * space. For now only device-tree is supported. -+ * -+ * @dev: Pointer to target device -+ * Return: 0 if OK or if no DMA constraints were found, error otherwise -+ */ -+static int device_get_dma_constraints(struct udevice *dev) -+{ -+ struct udevice *parent = dev->parent; -+ phys_addr_t cpu = 0; -+ dma_addr_t bus = 0; -+ u64 size = 0; -+ int ret; -+ -+ if (!CONFIG_IS_ENABLED(DM_DMA) || !parent || !dev_has_ofnode(parent)) -+ return 0; -+ -+ /* -+ * We start parsing for dma-ranges from the device's bus node. This is -+ * specially important on nested buses. -+ */ -+ ret = dev_get_dma_range(parent, &cpu, &bus, &size); -+ /* Don't return an error if no 'dma-ranges' were found */ -+ if (ret && ret != -ENOENT) { -+ dm_warn("%s: failed to get DMA range, %d\n", dev->name, ret); -+ return ret; -+ } -+ -+ dev_set_dma_offset(dev, cpu - bus); -+ -+ return 0; -+} -+ - int device_probe(struct udevice *dev) - { - const struct driver *drv; -@@ -484,6 +521,10 @@ int device_probe(struct udevice *dev) - goto fail; - } - -+ ret = device_get_dma_constraints(dev); -+ if (ret) -+ goto fail; -+ - ret = uclass_pre_probe_device(dev); - if (ret) - goto fail; -diff --git a/drivers/core/of_addr.c b/drivers/core/of_addr.c -index bbe80136ba..5bc6ca1de0 100644 ---- a/drivers/core/of_addr.c -+++ b/drivers/core/of_addr.c -@@ -318,6 +318,84 @@ u64 of_translate_dma_address(const struct device_node *dev, const __be32 *in_add - return __of_translate_address(dev, in_addr, "dma-ranges"); - } - -+int of_get_dma_range(const struct device_node *dev, phys_addr_t *cpu, -+ dma_addr_t *bus, u64 *size) -+{ -+ bool found_dma_ranges = false; -+ struct device_node *parent; -+ struct of_bus *bus_node; -+ int na, ns, pna, pns; -+ const __be32 *ranges; -+ int ret = 0; -+ int len; -+ -+ /* Find the closest dma-ranges property */ -+ dev = of_node_get(dev); -+ while (dev) { -+ ranges = of_get_property(dev, "dma-ranges", &len); -+ -+ /* Ignore empty ranges, they imply no translation required */ -+ if (ranges && len > 0) -+ break; -+ -+ /* Once we find 'dma-ranges', then a missing one is an error */ -+ if (found_dma_ranges && !ranges) { -+ ret = -EINVAL; -+ goto out; -+ } -+ -+ if (ranges) -+ found_dma_ranges = true; -+ -+ parent = of_get_parent(dev); -+ of_node_put(dev); -+ dev = parent; -+ } -+ -+ if (!dev || !ranges) { -+ debug("no dma-ranges found for node %s\n", -+ of_node_full_name(dev)); -+ ret = -ENOENT; -+ goto out; -+ } -+ -+ /* switch to that node */ -+ parent = of_get_parent(dev); -+ if (!parent) { -+ printf("Found dma-ranges in root node, shoudln't happen\n"); -+ ret = -EINVAL; -+ goto out; -+ } -+ -+ /* Get the address sizes both for the bus and its parent */ -+ bus_node = of_match_bus((struct device_node*)dev); -+ bus_node->count_cells(dev, &na, &ns); -+ if (!OF_CHECK_COUNTS(na, ns)) { -+ printf("Bad cell count for %s\n", of_node_full_name(dev)); -+ return -EINVAL; -+ goto out_parent; -+ } -+ -+ bus_node = of_match_bus(parent); -+ bus_node->count_cells(parent, &pna, &pns); -+ if (!OF_CHECK_COUNTS(pna, pns)) { -+ printf("Bad cell count for %s\n", of_node_full_name(parent)); -+ return -EINVAL; -+ goto out_parent; -+ } -+ -+ *bus = of_read_number(ranges, na); -+ *cpu = of_translate_dma_address(dev, ranges + na); -+ *size = of_read_number(ranges + na + pna, ns); -+ -+out_parent: -+ of_node_put(parent); -+out: -+ of_node_put(dev); -+ return ret; -+} -+ -+ - static int __of_address_to_resource(const struct device_node *dev, - const __be32 *addrp, u64 size, unsigned int flags, - const char *name, struct resource *r) -diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c -index 26c9d04056..fa0bd2a9c4 100644 ---- a/drivers/core/ofnode.c -+++ b/drivers/core/ofnode.c -@@ -927,6 +927,15 @@ u64 ofnode_translate_dma_address(ofnode node, const fdt32_t *in_addr) - return fdt_translate_dma_address(gd->fdt_blob, ofnode_to_offset(node), in_addr); - } - -+int ofnode_get_dma_range(ofnode node, phys_addr_t *cpu, dma_addr_t *bus, u64 *size) -+{ -+ if (ofnode_is_np(node)) -+ return of_get_dma_range(ofnode_to_np(node), cpu, bus, size); -+ else -+ return fdt_get_dma_range(gd->fdt_blob, ofnode_to_offset(node), -+ cpu, bus, size); -+} -+ - int ofnode_device_is_compatible(ofnode node, const char *compat) - { - if (ofnode_is_np(node)) -diff --git a/drivers/core/read.c b/drivers/core/read.c -index 14fd1214d6..4307ca4579 100644 ---- a/drivers/core/read.c -+++ b/drivers/core/read.c -@@ -341,6 +341,12 @@ u64 dev_translate_dma_address(const struct udevice *dev, const fdt32_t *in_addr) - return ofnode_translate_dma_address(dev_ofnode(dev), in_addr); - } - -+int dev_get_dma_range(const struct udevice *dev, phys_addr_t *cpu, -+ dma_addr_t *bus, u64 *size) -+{ -+ return ofnode_get_dma_range(dev_ofnode(dev), cpu, bus, size); -+} -+ - int dev_read_alias_highest_id(const char *stem) - { - if (of_live_active()) -diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c -index ed0dc17325..5f18d472bd 100644 ---- a/drivers/mmc/sdhci.c -+++ b/drivers/mmc/sdhci.c -@@ -74,6 +74,7 @@ static void sdhci_transfer_pio(struct sdhci_host *host, struct mmc_data *data) - static void sdhci_prepare_dma(struct sdhci_host *host, struct mmc_data *data, - int *is_aligned, int trans_bytes) - { -+ dma_addr_t dma_addr; - unsigned char ctrl; - void *buf; - -@@ -104,8 +105,8 @@ static void sdhci_prepare_dma(struct sdhci_host *host, struct mmc_data *data, - mmc_get_dma_dir(data)); - - if (host->flags & USE_SDMA) { -- sdhci_writel(host, phys_to_bus((ulong)host->start_addr), -- SDHCI_DMA_ADDRESS); -+ dma_addr = dev_phys_to_bus(mmc_to_dev(host->mmc), host->start_addr); -+ sdhci_writel(host, dma_addr, SDHCI_DMA_ADDRESS); - } - #if CONFIG_IS_ENABLED(MMC_SDHCI_ADMA) - else if (host->flags & (USE_ADMA | USE_ADMA64)) { -@@ -163,8 +164,9 @@ static int sdhci_transfer_data(struct sdhci_host *host, struct mmc_data *data) - start_addr &= - ~(SDHCI_DEFAULT_BOUNDARY_SIZE - 1); - start_addr += SDHCI_DEFAULT_BOUNDARY_SIZE; -- sdhci_writel(host, phys_to_bus((ulong)start_addr), -- SDHCI_DMA_ADDRESS); -+ start_addr = dev_phys_to_bus(mmc_to_dev(host->mmc), -+ start_addr); -+ sdhci_writel(host, start_addr, SDHCI_DMA_ADDRESS); - } - } - if (timeout-- > 0) -diff --git a/drivers/pci/pcie_brcmstb.c b/drivers/pci/pcie_brcmstb.c -index dd2a4ef629..bd645d7896 100644 ---- a/drivers/pci/pcie_brcmstb.c -+++ b/drivers/pci/pcie_brcmstb.c -@@ -432,6 +432,7 @@ static int brcm_pcie_probe(struct udevice *dev) - struct pci_controller *hose = dev_get_uclass_priv(ctlr); - struct brcm_pcie *pcie = dev_get_priv(dev); - void __iomem *base = pcie->base; -+ struct pci_region region; - bool ssc_good = false; - int num_out_wins = 0; - u64 rc_bar2_offset, rc_bar2_size; -@@ -468,13 +469,10 @@ static int brcm_pcie_probe(struct udevice *dev) - MISC_CTRL_SCB_ACCESS_EN_MASK | - MISC_CTRL_CFG_READ_UR_MODE_MASK | - MISC_CTRL_MAX_BURST_SIZE_128); -- /* -- * TODO: When support for other SoCs than BCM2711 is added we may -- * need to use the base address and size(s) provided in the dma-ranges -- * property. -- */ -- rc_bar2_offset = 0; -- rc_bar2_size = 0xc0000000; -+ -+ pci_get_dma_regions(dev, ®ion, 0); -+ rc_bar2_offset = region.bus_start - region.phys_start; -+ rc_bar2_size = 1ULL << fls64(region.size - 1); - - tmp = lower_32_bits(rc_bar2_offset); - u32p_replace_bits(&tmp, brcm_pcie_encode_ibar_size(rc_bar2_size), -diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c -index b002d6f166..83147d51b5 100644 ---- a/drivers/usb/host/xhci-mem.c -+++ b/drivers/usb/host/xhci-mem.c -@@ -110,7 +110,7 @@ static void xhci_scratchpad_free(struct xhci_ctrl *ctrl) - - ctrl->dcbaa->dev_context_ptrs[0] = 0; - -- free((void *)(uintptr_t)le64_to_cpu(ctrl->scratchpad->sp_array[0])); -+ free(xhci_bus_to_virt(ctrl, le64_to_cpu(ctrl->scratchpad->sp_array[0]))); - free(ctrl->scratchpad->sp_array); - free(ctrl->scratchpad); - ctrl->scratchpad = NULL; -@@ -216,8 +216,8 @@ static void *xhci_malloc(unsigned int size) - * @param link_trbs flag to indicate whether to link the trbs or NOT - * @return none - */ --static void xhci_link_segments(struct xhci_segment *prev, -- struct xhci_segment *next, bool link_trbs) -+static void xhci_link_segments(struct xhci_ctrl *ctrl, struct xhci_segment *prev, -+ struct xhci_segment *next, bool link_trbs) - { - u32 val; - u64 val_64 = 0; -@@ -226,7 +226,7 @@ static void xhci_link_segments(struct xhci_segment *prev, - return; - prev->next = next; - if (link_trbs) { -- val_64 = virt_to_phys(next->trbs); -+ val_64 = xhci_virt_to_bus(ctrl, next->trbs); - prev->trbs[TRBS_PER_SEGMENT-1].link.segment_ptr = - cpu_to_le64(val_64); - -@@ -304,7 +304,8 @@ static struct xhci_segment *xhci_segment_alloc(void) - * @param link_trbs flag to indicate whether to link the trbs or NOT - * @return pointer to the newly created RING - */ --struct xhci_ring *xhci_ring_alloc(unsigned int num_segs, bool link_trbs) -+struct xhci_ring *xhci_ring_alloc(struct xhci_ctrl *ctrl, unsigned int num_segs, -+ bool link_trbs) - { - struct xhci_ring *ring; - struct xhci_segment *prev; -@@ -327,12 +328,12 @@ struct xhci_ring *xhci_ring_alloc(unsigned int num_segs, bool link_trbs) - next = xhci_segment_alloc(); - BUG_ON(!next); - -- xhci_link_segments(prev, next, link_trbs); -+ xhci_link_segments(ctrl, prev, next, link_trbs); - - prev = next; - num_segs--; - } -- xhci_link_segments(prev, ring->first_seg, link_trbs); -+ xhci_link_segments(ctrl, prev, ring->first_seg, link_trbs); - if (link_trbs) { - /* See section 4.9.2.1 and 6.4.4.1 */ - prev->trbs[TRBS_PER_SEGMENT-1].link.control |= -@@ -354,6 +355,7 @@ static int xhci_scratchpad_alloc(struct xhci_ctrl *ctrl) - struct xhci_hccr *hccr = ctrl->hccr; - struct xhci_hcor *hcor = ctrl->hcor; - struct xhci_scratchpad *scratchpad; -+ uint64_t val_64; - int num_sp; - uint32_t page_size; - void *buf; -@@ -371,8 +373,9 @@ static int xhci_scratchpad_alloc(struct xhci_ctrl *ctrl) - scratchpad->sp_array = xhci_malloc(num_sp * sizeof(u64)); - if (!scratchpad->sp_array) - goto fail_sp2; -- ctrl->dcbaa->dev_context_ptrs[0] = -- cpu_to_le64((uintptr_t)scratchpad->sp_array); -+ -+ val_64 = xhci_virt_to_bus(ctrl, scratchpad->sp_array); -+ ctrl->dcbaa->dev_context_ptrs[0] = cpu_to_le64(val_64); - - xhci_flush_cache((uintptr_t)&ctrl->dcbaa->dev_context_ptrs[0], - sizeof(ctrl->dcbaa->dev_context_ptrs[0])); -@@ -393,8 +396,8 @@ static int xhci_scratchpad_alloc(struct xhci_ctrl *ctrl) - xhci_flush_cache((uintptr_t)buf, num_sp * page_size); - - for (i = 0; i < num_sp; i++) { -- uintptr_t ptr = (uintptr_t)buf + i * page_size; -- scratchpad->sp_array[i] = cpu_to_le64(ptr); -+ val_64 = xhci_virt_to_bus(ctrl, buf + i * page_size); -+ scratchpad->sp_array[i] = cpu_to_le64(val_64); - } - - xhci_flush_cache((uintptr_t)scratchpad->sp_array, -@@ -484,9 +487,9 @@ int xhci_alloc_virt_device(struct xhci_ctrl *ctrl, unsigned int slot_id) - } - - /* Allocate endpoint 0 ring */ -- virt_dev->eps[0].ring = xhci_ring_alloc(1, true); -+ virt_dev->eps[0].ring = xhci_ring_alloc(ctrl, 1, true); - -- byte_64 = virt_to_phys(virt_dev->out_ctx->bytes); -+ byte_64 = xhci_virt_to_bus(ctrl, virt_dev->out_ctx->bytes); - - /* Point to output device context in dcbaa. */ - ctrl->dcbaa->dev_context_ptrs[slot_id] = cpu_to_le64(byte_64); -@@ -522,15 +525,15 @@ int xhci_mem_init(struct xhci_ctrl *ctrl, struct xhci_hccr *hccr, - return -ENOMEM; - } - -- val_64 = virt_to_phys(ctrl->dcbaa); -+ val_64 = xhci_virt_to_bus(ctrl, ctrl->dcbaa); - /* Set the pointer in DCBAA register */ - xhci_writeq(&hcor->or_dcbaap, val_64); - - /* Command ring control pointer register initialization */ -- ctrl->cmd_ring = xhci_ring_alloc(1, true); -+ ctrl->cmd_ring = xhci_ring_alloc(ctrl, 1, true); - - /* Set the address in the Command Ring Control register */ -- trb_64 = virt_to_phys(ctrl->cmd_ring->first_seg->trbs); -+ trb_64 = xhci_virt_to_bus(ctrl, ctrl->cmd_ring->first_seg->trbs); - val_64 = xhci_readq(&hcor->or_crcr); - val_64 = (val_64 & (u64) CMD_RING_RSVD_BITS) | - (trb_64 & (u64) ~CMD_RING_RSVD_BITS) | -@@ -551,7 +554,7 @@ int xhci_mem_init(struct xhci_ctrl *ctrl, struct xhci_hccr *hccr, - ctrl->ir_set = &ctrl->run_regs->ir_set[0]; - - /* Event ring does not maintain link TRB */ -- ctrl->event_ring = xhci_ring_alloc(ERST_NUM_SEGS, false); -+ ctrl->event_ring = xhci_ring_alloc(ctrl, ERST_NUM_SEGS, false); - ctrl->erst.entries = xhci_malloc(sizeof(struct xhci_erst_entry) * - ERST_NUM_SEGS); - -@@ -560,8 +563,8 @@ int xhci_mem_init(struct xhci_ctrl *ctrl, struct xhci_hccr *hccr, - for (val = 0, seg = ctrl->event_ring->first_seg; - val < ERST_NUM_SEGS; - val++) { -- trb_64 = virt_to_phys(seg->trbs); - struct xhci_erst_entry *entry = &ctrl->erst.entries[val]; -+ trb_64 = xhci_virt_to_bus(ctrl, seg->trbs); - entry->seg_addr = cpu_to_le64(trb_64); - entry->seg_size = cpu_to_le32(TRBS_PER_SEGMENT); - entry->rsvd = 0; -@@ -570,7 +573,7 @@ int xhci_mem_init(struct xhci_ctrl *ctrl, struct xhci_hccr *hccr, - xhci_flush_cache((uintptr_t)ctrl->erst.entries, - ERST_NUM_SEGS * sizeof(struct xhci_erst_entry)); - -- deq = virt_to_phys(ctrl->event_ring->dequeue); -+ deq = xhci_virt_to_bus(ctrl, ctrl->event_ring->dequeue); - - /* Update HC event ring dequeue pointer */ - xhci_writeq(&ctrl->ir_set->erst_dequeue, -@@ -585,7 +588,7 @@ int xhci_mem_init(struct xhci_ctrl *ctrl, struct xhci_hccr *hccr, - /* this is the event ring segment table pointer */ - val_64 = xhci_readq(&ctrl->ir_set->erst_base); - val_64 &= ERST_PTR_MASK; -- val_64 |= virt_to_phys(ctrl->erst.entries) & ~ERST_PTR_MASK; -+ val_64 |= xhci_virt_to_bus(ctrl, ctrl->erst.entries) & ~ERST_PTR_MASK; - - xhci_writeq(&ctrl->ir_set->erst_base, val_64); - -@@ -848,7 +851,7 @@ void xhci_setup_addressable_virt_dev(struct xhci_ctrl *ctrl, - /* EP 0 can handle "burst" sizes of 1, so Max Burst Size field is 0 */ - ep0_ctx->ep_info2 |= cpu_to_le32(MAX_BURST(0) | ERROR_COUNT(3)); - -- trb_64 = virt_to_phys(virt_dev->eps[0].ring->first_seg->trbs); -+ trb_64 = xhci_virt_to_bus(ctrl, virt_dev->eps[0].ring->first_seg->trbs); - ep0_ctx->deq = cpu_to_le64(trb_64 | virt_dev->eps[0].ring->cycle_state); - - /* -diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c -index d6c47d579b..bd69a19995 100644 ---- a/drivers/usb/host/xhci-ring.c -+++ b/drivers/usb/host/xhci-ring.c -@@ -275,10 +275,13 @@ void xhci_queue_command(struct xhci_ctrl *ctrl, u8 *ptr, u32 slot_id, - u32 ep_index, trb_type cmd) - { - u32 fields[4]; -- u64 val_64 = virt_to_phys(ptr); -+ u64 val_64 = 0; - - BUG_ON(prepare_ring(ctrl, ctrl->cmd_ring, EP_STATE_RUNNING)); - -+ if (ptr) -+ val_64 = xhci_virt_to_bus(ctrl, ptr); -+ - fields[0] = lower_32_bits(val_64); - fields[1] = upper_32_bits(val_64); - fields[2] = 0; -@@ -401,7 +404,7 @@ void xhci_acknowledge_event(struct xhci_ctrl *ctrl) - - /* Inform the hardware */ - xhci_writeq(&ctrl->ir_set->erst_dequeue, -- virt_to_phys(ctrl->event_ring->dequeue) | ERST_EHB); -+ xhci_virt_to_bus(ctrl, ctrl->event_ring->dequeue) | ERST_EHB); - } - - /** -@@ -579,7 +582,7 @@ int xhci_bulk_tx(struct usb_device *udev, unsigned long pipe, - u64 addr; - int ret; - u32 trb_fields[4]; -- u64 val_64 = virt_to_phys(buffer); -+ u64 val_64 = xhci_virt_to_bus(ctrl, buffer); - void *last_transfer_trb_addr; - int available_length; - -@@ -723,8 +726,8 @@ again: - return -ETIMEDOUT; - } - -- if ((uintptr_t)(le64_to_cpu(event->trans_event.buffer)) != -- (uintptr_t)virt_to_phys(last_transfer_trb_addr)) { -+ if ((uintptr_t)(le64_to_cpu(xhci_bus_to_virt(ctrl, event->trans_event.buffer))) -+ != (uintptr_t)virt_to_phys(last_transfer_trb_addr)) { - available_length -= - (int)EVENT_TRB_LEN(le32_to_cpu(event->trans_event.transfer_len)); - xhci_acknowledge_event(ctrl); -@@ -884,7 +887,7 @@ int xhci_ctrl_tx(struct usb_device *udev, unsigned long pipe, - if (length > 0) { - if (req->requesttype & USB_DIR_IN) - field |= TRB_DIR_IN; -- buf_64 = virt_to_phys(buffer); -+ buf_64 = xhci_virt_to_bus(ctrl, buffer); - - trb_fields[0] = lower_32_bits(buf_64); - trb_fields[1] = upper_32_bits(buf_64); -diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c -index 7080f8fabe..d27ac01c83 100644 ---- a/drivers/usb/host/xhci.c -+++ b/drivers/usb/host/xhci.c -@@ -604,7 +604,7 @@ static int xhci_set_configuration(struct usb_device *udev) - ep_ctx[ep_index] = xhci_get_ep_ctx(ctrl, in_ctx, ep_index); - - /* Allocate the ep rings */ -- virt_dev->eps[ep_index].ring = xhci_ring_alloc(1, true); -+ virt_dev->eps[ep_index].ring = xhci_ring_alloc(ctrl, 1, true); - if (!virt_dev->eps[ep_index].ring) - return -ENOMEM; - -@@ -628,7 +628,7 @@ static int xhci_set_configuration(struct usb_device *udev) - cpu_to_le32(MAX_BURST(max_burst) | - ERROR_COUNT(err_count)); - -- trb_64 = virt_to_phys(virt_dev->eps[ep_index].ring->enqueue); -+ trb_64 = xhci_virt_to_bus(ctrl, virt_dev->eps[ep_index].ring->enqueue); - ep_ctx[ep_index]->deq = cpu_to_le64(trb_64 | - virt_dev->eps[ep_index].ring->cycle_state); - -diff --git a/drivers/video/bcm2835.c b/drivers/video/bcm2835.c -index 9326999cd3..c2962932c9 100644 ---- a/drivers/video/bcm2835.c -+++ b/drivers/video/bcm2835.c -@@ -52,6 +52,7 @@ static int bcm2835_video_probe(struct udevice *dev) - - static const struct udevice_id bcm2835_video_ids[] = { - { .compatible = "brcm,bcm2835-hdmi" }, -+ { .compatible = "brcm,bcm2711-hdmi0" }, - { .compatible = "brcm,bcm2708-fb" }, - { } - }; -diff --git a/include/dm/device.h b/include/dm/device.h -index 28533ce0b6..bb9faa0ed9 100644 ---- a/include/dm/device.h -+++ b/include/dm/device.h -@@ -159,6 +159,8 @@ enum { - * When CONFIG_DEVRES is enabled, devm_kmalloc() and friends will - * add to this list. Memory so-allocated will be freed - * automatically when the device is removed / unbound -+ * @dma_offset: Offset between the physical address space (CPU's) and the -+ * device's bus address space - */ - struct udevice { - const struct driver *driver; -@@ -183,6 +185,9 @@ struct udevice { - #ifdef CONFIG_DEVRES - struct list_head devres_head; - #endif -+#if CONFIG_IS_ENABLED(DM_DMA) -+ ulong dma_offset; -+#endif - }; - - /* Maximum sequence number supported */ -@@ -224,6 +229,14 @@ static inline ofnode dev_ofnode(const struct udevice *dev) - /* Returns non-zero if the device is active (probed and not removed) */ - #define device_active(dev) (dev_get_flags(dev) & DM_FLAG_ACTIVATED) - -+#if CONFIG_IS_ENABLED(DM_DMA) -+#define dev_set_dma_offset(_dev, _offset) _dev->dma_offset = _offset -+#define dev_get_dma_offset(_dev) _dev->dma_offset -+#else -+#define dev_set_dma_offset(_dev, _offset) -+#define dev_get_dma_offset(_dev) 0 -+#endif -+ - static inline int dev_of_offset(const struct udevice *dev) - { - #if !CONFIG_IS_ENABLED(OF_PLATDATA) -diff --git a/include/dm/of_addr.h b/include/dm/of_addr.h -index 3fa1ffce81..ee21d5cf4f 100644 ---- a/include/dm/of_addr.h -+++ b/include/dm/of_addr.h -@@ -44,6 +44,23 @@ u64 of_translate_address(const struct device_node *no, const __be32 *in_addr); - */ - u64 of_translate_dma_address(const struct device_node *no, const __be32 *in_addr); - -+ -+/** -+ * of_get_dma_range() - get dma-ranges for a specific DT node -+ * -+ * Get DMA ranges for a specifc node, this is useful to perform bus->cpu and -+ * cpu->bus address translations -+ * -+ * @param blob Pointer to device tree blob -+ * @param node_offset Node DT offset -+ * @param cpu Pointer to variable storing the range's cpu address -+ * @param bus Pointer to variable storing the range's bus address -+ * @param size Pointer to variable storing the range's size -+ * @return translated DMA address or OF_BAD_ADDR on error -+ */ -+int of_get_dma_range(const struct device_node *dev, phys_addr_t *cpu, -+ dma_addr_t *bus, u64 *size); -+ - /** - * of_get_address() - obtain an address from a node - * -diff --git a/include/dm/ofnode.h b/include/dm/ofnode.h -index 5318d65035..2c0597c407 100644 ---- a/include/dm/ofnode.h -+++ b/include/dm/ofnode.h -@@ -998,6 +998,22 @@ u64 ofnode_translate_address(ofnode node, const fdt32_t *in_addr); - */ - u64 ofnode_translate_dma_address(ofnode node, const fdt32_t *in_addr); - -+/** -+ * ofnode_get_dma_range() - get dma-ranges for a specific DT node -+ * -+ * Get DMA ranges for a specifc node, this is useful to perform bus->cpu and -+ * cpu->bus address translations -+ * -+ * @param blob Pointer to device tree blob -+ * @param node_offset Node DT offset -+ * @param cpu Pointer to variable storing the range's cpu address -+ * @param bus Pointer to variable storing the range's bus address -+ * @param size Pointer to variable storing the range's size -+ * @return translated DMA address or OF_BAD_ADDR on error -+ */ -+int ofnode_get_dma_range(ofnode node, phys_addr_t *cpu, dma_addr_t *bus, -+ u64 *size); -+ - /** - * ofnode_device_is_compatible() - check if the node is compatible with compat - * -diff --git a/include/dm/read.h b/include/dm/read.h -index 97575bcad0..5bf3405614 100644 ---- a/include/dm/read.h -+++ b/include/dm/read.h -@@ -647,6 +647,21 @@ u64 dev_translate_address(const struct udevice *dev, const fdt32_t *in_addr); - u64 dev_translate_dma_address(const struct udevice *dev, - const fdt32_t *in_addr); - -+/** -+ * dev_get_dma_range() - Get a device's DMA constraints -+ * -+ * Provide the address bases and size of the linear mapping between the CPU and -+ * a device's BUS address space. -+ * -+ * @dev: device giving the context in which to translate the DMA address -+ * @cpu: base address for CPU's view of memory -+ * @bus: base address for BUS's view of memory -+ * @size: size of the address space -+ * @return 0 if ok, negative on error -+ */ -+int dev_get_dma_range(const struct udevice *dev, phys_addr_t *cpu, -+ dma_addr_t *bus, u64 *size); -+ - /** - * dev_read_alias_highest_id - Get highest alias id for the given stem - * @stem: Alias stem to be examined -@@ -1005,6 +1020,12 @@ static inline u64 dev_translate_dma_address(const struct udevice *dev, - return ofnode_translate_dma_address(dev_ofnode(dev), in_addr); - } - -+static inline int dev_get_dma_range(const struct udevice *dev, phys_addr_t *cpu, -+ dma_addr_t *bus, u64 *size) -+{ -+ return ofnode_get_dma_range(dev_ofnode(dev), cpu, bus, size); -+} -+ - static inline int dev_read_alias_highest_id(const char *stem) - { - if (!CONFIG_IS_ENABLED(OF_LIBFDT) || !gd->fdt_blob) -diff --git a/include/fdt_support.h b/include/fdt_support.h -index dbbac0fb6a..46eb1dbbb2 100644 ---- a/include/fdt_support.h -+++ b/include/fdt_support.h -@@ -260,6 +260,20 @@ u64 fdt_translate_address(const void *blob, int node_offset, - u64 fdt_translate_dma_address(const void *blob, int node_offset, - const __be32 *in_addr); - -+/** -+ * Get DMA ranges for a specifc node, this is useful to perform bus->cpu and -+ * cpu->bus address translations -+ * -+ * @param blob Pointer to device tree blob -+ * @param node_offset Node DT offset -+ * @param cpu Pointer to variable storing the range's cpu address -+ * @param bus Pointer to variable storing the range's bus address -+ * @param size Pointer to variable storing the range's size -+ * @return translated DMA address or OF_BAD_ADDR on error -+ */ -+int fdt_get_dma_range(const void *blob, int node_offset, phys_addr_t *cpu, -+ dma_addr_t *bus, u64 *size); -+ - int fdt_node_offset_by_compat_reg(void *blob, const char *compat, - phys_addr_t compat_off); - int fdt_alloc_phandle(void *blob); -diff --git a/include/mmc.h b/include/mmc.h -index 1d377e0281..c12c7a0b5c 100644 ---- a/include/mmc.h -+++ b/include/mmc.h -@@ -736,6 +736,12 @@ struct mmc { - u8 hs400_tuning; - }; - -+#if CONFIG_IS_ENABLED(DM_MMC) -+#define mmc_to_dev(_mmc) _mmc->dev -+#else -+#define mmc_to_dev(_mmc) NULL -+#endif -+ - struct mmc_hwpart_conf { - struct { - uint enh_start; /* in 512-byte sectors */ -diff --git a/include/phys2bus.h b/include/phys2bus.h -index dc9b8e5a25..866b8b51a8 100644 ---- a/include/phys2bus.h -+++ b/include/phys2bus.h -@@ -21,4 +21,21 @@ static inline unsigned long bus_to_phys(unsigned long bus) - } - #endif - -+#if CONFIG_IS_ENABLED(DM) -+#include -+ -+static inline dma_addr_t dev_phys_to_bus(struct udevice *dev, phys_addr_t phys) -+{ -+ return phys - dev_get_dma_offset(dev); -+} -+ -+static inline phys_addr_t dev_bus_to_phys(struct udevice *dev, dma_addr_t bus) -+{ -+ return bus + dev_get_dma_offset(dev); -+} -+#else -+#define dev_phys_to_bus(_, _addr) _addr -+#define dev_bus_to_phys(_, _addr) _addr -+#endif -+ - #endif -diff --git a/include/usb/xhci.h b/include/usb/xhci.h -index e1d382369a..8d95e213b0 100644 ---- a/include/usb/xhci.h -+++ b/include/usb/xhci.h -@@ -16,6 +16,7 @@ - #ifndef HOST_XHCI_H_ - #define HOST_XHCI_H_ - -+#include - #include - #include - #include -@@ -1221,6 +1222,12 @@ struct xhci_ctrl { - #define XHCI_MTK_HOST BIT(0) - }; - -+#if CONFIG_IS_ENABLED(DM_USB) -+#define xhci_to_dev(_ctrl) _ctrl->dev -+#else -+#define xhci_to_dev(_ctrl) NULL -+#endif -+ - unsigned long trb_addr(struct xhci_segment *seg, union xhci_trb *trb); - struct xhci_input_control_ctx - *xhci_get_input_control_ctx(struct xhci_container_ctx *ctx); -@@ -1250,7 +1257,8 @@ int xhci_check_maxpacket(struct usb_device *udev); - void xhci_flush_cache(uintptr_t addr, u32 type_len); - void xhci_inval_cache(uintptr_t addr, u32 type_len); - void xhci_cleanup(struct xhci_ctrl *ctrl); --struct xhci_ring *xhci_ring_alloc(unsigned int num_segs, bool link_trbs); -+struct xhci_ring *xhci_ring_alloc(struct xhci_ctrl *ctrl, unsigned int num_segs, -+ bool link_trbs); - int xhci_alloc_virt_device(struct xhci_ctrl *ctrl, unsigned int slot_id); - int xhci_mem_init(struct xhci_ctrl *ctrl, struct xhci_hccr *hccr, - struct xhci_hcor *hcor); -@@ -1278,4 +1286,14 @@ extern struct dm_usb_ops xhci_usb_ops; - - struct xhci_ctrl *xhci_get_ctrl(struct usb_device *udev); - -+static inline dma_addr_t xhci_virt_to_bus(struct xhci_ctrl *ctrl, void *addr) -+{ -+ return dev_phys_to_bus(xhci_to_dev(ctrl), virt_to_phys(addr)); -+} -+ -+static inline void *xhci_bus_to_virt(struct xhci_ctrl *ctrl, dma_addr_t addr) -+{ -+ return phys_to_virt(dev_bus_to_phys(xhci_to_dev(ctrl), addr)); -+} -+ - #endif /* HOST_XHCI_H_ */ -diff --git a/test/dm/Makefile b/test/dm/Makefile -index e70e50f402..6275ec56ea 100644 ---- a/test/dm/Makefile -+++ b/test/dm/Makefile -@@ -15,6 +15,8 @@ obj-$(CONFIG_UT_DM) += test-fdt.o - obj-$(CONFIG_UT_DM) += test-uclass.o - - obj-$(CONFIG_UT_DM) += core.o -+obj-$(CONFIG_UT_DM) += read.o -+obj-$(CONFIG_UT_DM) += phys2bus.o - ifneq ($(CONFIG_SANDBOX),) - obj-$(CONFIG_ACPIGEN) += acpi.o - obj-$(CONFIG_ACPIGEN) += acpigen.o -diff --git a/test/dm/core.c b/test/dm/core.c -index ce31d86c7d..35ca689d64 100644 ---- a/test/dm/core.c -+++ b/test/dm/core.c -@@ -1180,3 +1180,33 @@ static int dm_test_all_have_seq(struct unit_test_state *uts) - return 0; - } - DM_TEST(dm_test_all_have_seq, UT_TESTF_SCAN_PDATA); -+ -+static int dm_test_dma_offset(struct unit_test_state *uts) -+{ -+ struct udevice *dev; -+ ofnode node; -+ -+ /* Make sure the bus's dma-ranges aren't taken into account here */ -+ node = ofnode_path("/mmio-bus@0"); -+ ut_assert(ofnode_valid(node)); -+ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); -+ ut_asserteq_64(0, dev->dma_offset); -+ -+ /* Device behind a bus with dma-ranges */ -+ node = ofnode_path("/mmio-bus@0/subnode@0"); -+ ut_assert(ofnode_valid(node)); -+ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_FDT, node, &dev)); -+ ut_asserteq_64(-0x10000000ULL, dev->dma_offset); -+ -+ /* This one has no dma-ranges */ -+ node = ofnode_path("/mmio-bus@1"); -+ ut_assert(ofnode_valid(node)); -+ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); -+ node = ofnode_path("/mmio-bus@1/subnode@0"); -+ ut_assert(ofnode_valid(node)); -+ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_FDT, node, &dev)); -+ ut_asserteq_64(0, dev->dma_offset); -+ -+ return 0; -+} -+DM_TEST(dm_test_dma_offset, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); -diff --git a/test/dm/phys2bus.c b/test/dm/phys2bus.c -new file mode 100644 -index 0000000000..342f2fa8eb ---- /dev/null -+++ b/test/dm/phys2bus.c -@@ -0,0 +1,37 @@ -+// SPDX-License-Identifier: GPL-2.0+ -+/* -+ * Copyright (c) 2020 Nicolas Saenz Julienne -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+static int dm_test_phys_to_bus(struct unit_test_state *uts) -+{ -+ struct udevice *dev; -+ ofnode node; -+ -+ node = ofnode_path("/mmio-bus@0"); -+ ut_assert(ofnode_valid(node)); -+ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); -+ /* In this case it should be transparent, no dma-ranges in parent bus */ -+ ut_asserteq_addr((void*)0xfffffULL, (void*)dev_phys_to_bus(dev, 0xfffff)); -+ ut_asserteq_addr((void*)0xfffffULL, (void*)(ulong)dev_bus_to_phys(dev, 0xfffff)); -+ -+ node = ofnode_path("/mmio-bus@0/subnode@0"); -+ ut_assert(ofnode_valid(node)); -+ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_FDT, node, &dev)); -+ ut_asserteq_addr((void*)0x100fffffULL, (void*)dev_phys_to_bus(dev, 0xfffff)); -+ ut_asserteq_addr((void*)0xfffffULL, (void*)(ulong)dev_bus_to_phys(dev, 0x100fffff)); -+ -+ return 0; -+} -+DM_TEST(dm_test_phys_to_bus, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); -diff --git a/test/dm/read.c b/test/dm/read.c -new file mode 100644 -index 0000000000..7768aa2968 ---- /dev/null -+++ b/test/dm/read.c -@@ -0,0 +1,49 @@ -+// SPDX-License-Identifier: GPL-2.0+ -+/* -+ * Copyright (c) 2020 Nicolas Saenz Julienne -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+static int dm_test_dma_ranges(struct unit_test_state *uts) -+{ -+ struct udevice *dev; -+ phys_addr_t cpu; -+ dma_addr_t bus; -+ ofnode node; -+ u64 size; -+ -+ /* dma-ranges are on the device's node */ -+ node = ofnode_path("/mmio-bus@0"); -+ ut_assert(ofnode_valid(node)); -+ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); -+ ut_assertok(dev_get_dma_range(dev, &cpu, &bus, &size)); -+ ut_asserteq_64(0x40000, size); -+ ut_asserteq_64(0x0, cpu); -+ ut_asserteq_64(0x10000000, bus); -+ -+ /* dma-ranges are on the bus' node */ -+ node = ofnode_path("/mmio-bus@0/subnode@0"); -+ ut_assert(ofnode_valid(node)); -+ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_FDT, node, &dev)); -+ ut_assertok(dev_get_dma_range(dev, &cpu, &bus, &size)); -+ ut_asserteq_64(0x40000, size); -+ ut_asserteq_64(0x0, cpu); -+ ut_asserteq_64(0x10000000, bus); -+ -+ /* No dma-ranges available */ -+ node = ofnode_path("/mmio-bus@1"); -+ ut_assert(ofnode_valid(node)); -+ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &dev)); -+ ut_asserteq(-ENOENT, dev_get_dma_range(dev, &cpu, &bus, &size)); -+ -+ return 0; -+} -+DM_TEST(dm_test_dma_ranges, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); --- -2.29.2 - diff --git a/rk3399-Pinebook-pro-EDP-support.patch b/rk3399-Pinebook-pro-EDP-support.patch index 8a5835e..43a52ad 100644 --- a/rk3399-Pinebook-pro-EDP-support.patch +++ b/rk3399-Pinebook-pro-EDP-support.patch @@ -1,64 +1,97 @@ -From b90e9d3eeded9b10be1076ccbf2a3fac55cf3e74 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Mon, 1 Feb 2021 21:14:44 +0000 -Subject: [PATCH] rk3399 Pinebook pro EDP support +From patchwork Fri Mar 5 10:27:46 2021 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Arnaud Patard (Rtp)" +X-Patchwork-Id: 1447757 +X-Patchwork-Delegate: agust@denx.de +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4DsPKq3YGqz9sRR + for ; Fri, 5 Mar 2021 21:36:31 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 18DC78269D; + Fri, 5 Mar 2021 11:35:59 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 4DDC182036; Fri, 5 Mar 2021 11:35:50 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE + autolearn=ham autolearn_force=no version=3.4.2 +Received: from lechat.rtp-net.org (lechat.rtp-net.org + [IPv6:2001:bc8:3430:1000::c0f:fee]) + (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id D4F2882036 + for ; Fri, 5 Mar 2021 11:35:43 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org +Received: by lechat.rtp-net.org (Postfix, from userid 1000) + id 123CD18069A; Fri, 5 Mar 2021 11:35:41 +0100 (CET) +Message-ID: <20210305103307.004041703@rtp-net.org> +User-Agent: quilt/0.66 +Date: Fri, 05 Mar 2021 11:27:46 +0100 +From: Arnaud Patard (Rtp) +To: u-boot@lists.denx.de +Cc: Kever Yang , + Anatolij Gustschin , + Philipp Tomsich , + Peter Robinson , + Samuel Dionne-Riel , + Alper Nebi Yasak , + Arnaud Patard +Subject: [patch v4 1/9] rockchip: video: vop: Use endpoint compatible string + to find VOP mode +References: <20210305102745.078091129@rtp-net.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de +X-Virus-Status: Clean -Signed-off-by: Peter Robinson ---- - arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi | 4 + - .../include/asm/arch-rockchip/edp_rk3288.h | 9 +- - .../include/asm/arch-rockchip/vop_rk3288.h | 15 +-- - drivers/pwm/rk_pwm.c | 2 +- - drivers/video/rockchip/rk_edp.c | 103 +++++++++++++++--- - drivers/video/rockchip/rk_vop.c | 86 ++++++++++++++- - 6 files changed, 177 insertions(+), 42 deletions(-) +The current code is using an hard coded enum and the of node reg value of +endpoint to find out if the endpoint is mipi/hdmi/lvds/edp/dp. The order +is different between rk3288, rk3399 vop little, rk3399 vop big. -diff --git a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -index 1eafb40ce3..2d87bea933 100644 ---- a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -@@ -16,6 +16,10 @@ - }; - }; - -+&edp { -+ rockchip,panel = <&edp_panel>; -+}; -+ - &i2c0 { - u-boot,dm-pre-reloc; - }; -diff --git a/arch/arm/include/asm/arch-rockchip/edp_rk3288.h b/arch/arm/include/asm/arch-rockchip/edp_rk3288.h -index 94e5bb674f..9559813e52 100644 ---- a/arch/arm/include/asm/arch-rockchip/edp_rk3288.h -+++ b/arch/arm/include/asm/arch-rockchip/edp_rk3288.h -@@ -232,8 +232,9 @@ check_member(rk3288_edp, pll_reg_5, 0xa00); - #define PD_CH0 (0x1 << 0) - - /* pll_reg_1 */ --#define REF_CLK_24M (0x1 << 1) --#define REF_CLK_27M (0x0 << 1) -+#define REF_CLK_24M (0x1 << 0) -+#define REF_CLK_27M (0x0 << 0) -+#define REF_CLK_MASK (0x1 << 0) - - /* line_map */ - #define LANE3_MAP_LOGIC_LANE_0 (0x0 << 6) -@@ -296,7 +297,9 @@ check_member(rk3288_edp, pll_reg_5, 0xa00); - - /* int_ctl */ - #define SOFT_INT_CTRL (0x1 << 2) --#define INT_POL (0x1 << 0) -+#define INT_POL1 (0x1 << 1) -+#define INT_POL0 (0x1 << 0) -+#define INT_POL (INT_POL0 | INT_POL1) - - /* sys_ctl_1 */ - #define DET_STA (0x1 << 2) -diff --git a/arch/arm/include/asm/arch-rockchip/vop_rk3288.h b/arch/arm/include/asm/arch-rockchip/vop_rk3288.h -index 52446e97c6..49a7141437 100644 ---- a/arch/arm/include/asm/arch-rockchip/vop_rk3288.h -+++ b/arch/arm/include/asm/arch-rockchip/vop_rk3288.h +A possible solution would be to make sure that the rk3288.dtsi and +rk3399.dtsi files have "expected" reg value or an other solution is +to find the kind of endpoint by comparing the endpoint compatible value. + +This patch is implementing the more flexible second solution. + +Signed-off-by: Arnaud Patard +Tested-by: Peter Robinson + +Index: u-boot/arch/arm/include/asm/arch-rockchip/vop_rk3288.h +=================================================================== +--- u-boot.orig/arch/arm/include/asm/arch-rockchip/vop_rk3288.h ++++ u-boot/arch/arm/include/asm/arch-rockchip/vop_rk3288.h @@ -85,26 +85,13 @@ enum { LB_RGB_1280X8 = 0x5 }; @@ -87,35 +120,148 @@ index 52446e97c6..49a7141437 100644 /* VOP_VERSION_INFO */ #define M_FPGA_VERSION (0xffff << 16) -diff --git a/drivers/pwm/rk_pwm.c b/drivers/pwm/rk_pwm.c -index a64fc4a052..d4b9ebe528 100644 ---- a/drivers/pwm/rk_pwm.c -+++ b/drivers/pwm/rk_pwm.c -@@ -146,7 +146,7 @@ static int rk_pwm_probe(struct udevice *dev) - priv->data = (struct rockchip_pwm_data *)dev_get_driver_data(dev); +Index: u-boot/drivers/video/rockchip/rk_vop.c +=================================================================== +--- u-boot.orig/drivers/video/rockchip/rk_vop.c ++++ u-boot/drivers/video/rockchip/rk_vop.c +@@ -236,12 +236,11 @@ static int rk_display_init(struct udevic + struct clk clk; + enum video_log2_bpp l2bpp; + ofnode remote; ++ const char *compat; - if (priv->data->supports_polarity) -- priv->conf_polarity = PWM_DUTY_POSTIVE | PWM_INACTIVE_POSTIVE; -+ priv->conf_polarity = PWM_DUTY_POSTIVE | PWM_INACTIVE_NEGATIVE; + debug("%s(%s, %lu, %s)\n", __func__, + dev_read_name(dev), fbbase, ofnode_get_name(ep_node)); - return 0; - } -diff --git a/drivers/video/rockchip/rk_edp.c b/drivers/video/rockchip/rk_edp.c -index 0be60e169e..0ddf5e02d6 100644 ---- a/drivers/video/rockchip/rk_edp.c -+++ b/drivers/video/rockchip/rk_edp.c -@@ -8,20 +8,21 @@ - #include - #include - #include -+#include - #include - #include - #include - #include - #include -+#include - #include +- vop_id = ofnode_read_s32_default(ep_node, "reg", -1); +- debug("vop_id=%d\n", vop_id); + ret = ofnode_read_u32(ep_node, "remote-endpoint", &remote_phandle); + if (ret) + return ret; +@@ -283,6 +282,28 @@ static int rk_display_init(struct udevic + if (disp) + break; + }; ++ compat = ofnode_get_property(remote, "compatible", NULL); ++ if (!compat) { ++ debug("%s(%s): Failed to find compatible property\n", ++ __func__, dev_read_name(dev)); ++ return -EINVAL; ++ } ++ if (strstr(compat, "edp")) { ++ vop_id = VOP_MODE_EDP; ++ } else if (strstr(compat, "mipi")) { ++ vop_id = VOP_MODE_MIPI; ++ } else if (strstr(compat, "hdmi")) { ++ vop_id = VOP_MODE_HDMI; ++ } else if (strstr(compat, "cdn-dp")) { ++ vop_id = VOP_MODE_DP; ++ } else if (strstr(compat, "lvds")) { ++ vop_id = VOP_MODE_LVDS; ++ } else { ++ debug("%s(%s): Failed to find vop mode for %s\n", ++ __func__, dev_read_name(dev), compat); ++ return -EINVAL; ++ } ++ debug("vop_id=%d\n", vop_id); + + disp_uc_plat = dev_get_uclass_plat(disp); + debug("Found device '%s', disp_uc_priv=%p\n", disp->name, disp_uc_plat); + +From patchwork Fri Mar 5 10:27:47 2021 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Arnaud Patard (Rtp)" +X-Patchwork-Id: 1447760 +X-Patchwork-Delegate: agust@denx.de +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4DsPLV0lZ1z9sRR + for ; Fri, 5 Mar 2021 21:37:06 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id D622682774; + Fri, 5 Mar 2021 11:36:10 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id CF09E8206F; Fri, 5 Mar 2021 11:35: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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE + autolearn=ham autolearn_force=no version=3.4.2 +Received: from lechat.rtp-net.org (lechat.rtp-net.org + [IPv6:2001:bc8:3430:1000::c0f:fee]) + (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 02E608204B + for ; Fri, 5 Mar 2021 11:35:43 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org +Received: by lechat.rtp-net.org (Postfix, from userid 1000) + id 2D11018084F; Fri, 5 Mar 2021 11:35:41 +0100 (CET) +Message-ID: <20210305103307.057540339@rtp-net.org> +User-Agent: quilt/0.66 +Date: Fri, 05 Mar 2021 11:27:47 +0100 +From: Arnaud Patard (Rtp) +To: u-boot@lists.denx.de +Cc: Kever Yang , + Anatolij Gustschin , + Philipp Tomsich , + Peter Robinson , + Samuel Dionne-Riel , + Alper Nebi Yasak , + Arnaud Patard +Subject: [patch v4 2/9] rockchip: video: edp: Add rk3399 support +References: <20210305102745.078091129@rtp-net.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de +X-Virus-Status: Clean + +According to linux commit "drm/rockchip: analogix_dp: add rk3399 eDP +support" (82872e42bb1501dd9e60ca430f4bae45a469aa64), rk3288 and rk3399 +eDP IPs are nearly the same, the difference is in the grf register +(SOC_CON6 versus SOC_CON20). So, change the code to use the right +register on each IP. + +The clocks don't seem to be the same, the eDP clock is not at index 1 +on rk3399, so don't try changing the clock at index 1 to rate 0 on +rk3399. + +Signed-off-by: Arnaud Patard +Tested-by: Peter Robinson + +Index: u-boot/drivers/video/rockchip/rk_edp.c +=================================================================== +--- u-boot.orig/drivers/video/rockchip/rk_edp.c ++++ u-boot/drivers/video/rockchip/rk_edp.c +@@ -17,11 +17,10 @@ #include #include #include @@ -129,7 +275,7 @@ index 0be60e169e..0ddf5e02d6 100644 #define MAX_CR_LOOP 5 #define MAX_EQ_LOOP 5 -@@ -37,18 +38,42 @@ static const char * const pre_emph_names[] = { +@@ -37,18 +36,42 @@ static const char * const pre_emph_names #define DP_VOLTAGE_MAX DP_TRAIN_VOLTAGE_SWING_1200 #define DP_PRE_EMPHASIS_MAX DP_TRAIN_PRE_EMPHASIS_9_5 @@ -175,49 +321,27 @@ index 0be60e169e..0ddf5e02d6 100644 writel(LDO_OUTPUT_V_SEL_145 | KVCO_DEFALUT | CHG_PUMP_CUR_SEL_5US | V2L_CUR_SEL_1MA, ®s->pll_reg_2); -@@ -1029,6 +1054,9 @@ static int rk_edp_probe(struct udevice *dev) +@@ -1029,6 +1052,8 @@ static int rk_edp_probe(struct udevice * struct display_plat *uc_plat = dev_get_uclass_plat(dev); struct rk_edp_priv *priv = dev_get_priv(dev); struct rk3288_edp *regs = priv->regs; + struct rockchip_dp_data *edp_data = (struct rockchip_dp_data *)dev_get_driver_data(dev); -+ struct reset_ctl dp_rst; + struct clk clk; int ret; -@@ -1040,19 +1068,39 @@ static int rk_edp_probe(struct udevice *dev) - return ret; - } - -- int vop_id = uc_plat->source_id; -- debug("%s, uc_plat=%p, vop_id=%u\n", __func__, uc_plat, vop_id); -+ ret = reset_get_by_name(dev, "dp", &dp_rst); -+ if (ret) { -+ dev_err(dev, "failed to get dp reset (ret=%d)\n", ret); -+ return ret; -+ } +@@ -1043,16 +1068,17 @@ static int rk_edp_probe(struct udevice * + int vop_id = uc_plat->source_id; + debug("%s, uc_plat=%p, vop_id=%u\n", __func__, uc_plat, vop_id); - ret = clk_get_by_index(dev, 1, &clk); - if (ret >= 0) { - ret = clk_set_rate(&clk, 0); - clk_free(&clk); -+ ret = reset_assert(&dp_rst); -+ if (ret) { -+ dev_err(dev, "failed to assert dp reset (ret=%d)\n", ret); -+ return ret; - } -+ udelay(20); -+ -+ ret = reset_deassert(&dp_rst); - if (ret) { +- } +- if (ret) { - debug("%s: Failed to set EDP clock: ret=%d\n", __func__, ret); -+ dev_err(dev, "failed to deassert dp reset (ret=%d)\n", ret); - return ret; - } - -+ int vop_id = uc_plat->source_id; -+ debug("%s, uc_plat=%p, vop_id=%u\n", __func__, uc_plat, vop_id); -+ +- return ret; + if (edp_data->chip_type == RK3288_DP) { + ret = clk_get_by_index(dev, 1, &clk); + if (ret >= 0) { @@ -228,11 +352,12 @@ index 0be60e169e..0ddf5e02d6 100644 + debug("%s: Failed to set EDP clock: ret=%d\n", __func__, ret); + return ret; + } -+ } + } +- ret = clk_get_by_index(uc_plat->src_dev, 0, &clk); if (ret >= 0) { ret = clk_set_rate(&clk, 192000000); -@@ -1065,15 +1113,17 @@ static int rk_edp_probe(struct udevice *dev) +@@ -1065,15 +1091,17 @@ static int rk_edp_probe(struct udevice * } /* grf_edp_ref_clk_sel: from internal 24MHz or 27MHz clock */ @@ -254,7 +379,7 @@ index 0be60e169e..0ddf5e02d6 100644 rk_edp_init_interrupt(regs); rk_edp_enable_sw_function(regs); ret = rk_edp_init_analog_func(regs); -@@ -1089,8 +1139,25 @@ static const struct dm_display_ops dp_rockchip_ops = { +@@ -1089,8 +1117,25 @@ static const struct dm_display_ops dp_ro .enable = rk_edp_enable, }; @@ -281,10 +406,749 @@ index 0be60e169e..0ddf5e02d6 100644 { } }; -diff --git a/drivers/video/rockchip/rk_vop.c b/drivers/video/rockchip/rk_vop.c -index fcb393b906..0fabbf7e30 100644 ---- a/drivers/video/rockchip/rk_vop.c -+++ b/drivers/video/rockchip/rk_vop.c +Index: u-boot/arch/arm/include/asm/arch-rockchip/edp_rk3288.h +=================================================================== +--- u-boot.orig/arch/arm/include/asm/arch-rockchip/edp_rk3288.h ++++ u-boot/arch/arm/include/asm/arch-rockchip/edp_rk3288.h +@@ -232,8 +232,9 @@ check_member(rk3288_edp, pll_reg_5, 0xa0 + #define PD_CH0 (0x1 << 0) + + /* pll_reg_1 */ +-#define REF_CLK_24M (0x1 << 1) +-#define REF_CLK_27M (0x0 << 1) ++#define REF_CLK_24M (0x1 << 0) ++#define REF_CLK_27M (0x0 << 0) ++#define REF_CLK_MASK (0x1 << 0) + + /* line_map */ + #define LANE3_MAP_LOGIC_LANE_0 (0x0 << 6) + +From patchwork Fri Mar 5 10:27:48 2021 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Arnaud Patard (Rtp)" +X-Patchwork-Id: 1447758 +X-Patchwork-Delegate: agust@denx.de +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4DsPL32w8Bz9sRR + for ; Fri, 5 Mar 2021 21:36:43 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 44C1D82082; + Fri, 5 Mar 2021 11:36:04 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 5F86A8204C; Fri, 5 Mar 2021 11:35: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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE + autolearn=ham autolearn_force=no version=3.4.2 +Received: from lechat.rtp-net.org (lechat.rtp-net.org + [IPv6:2001:bc8:3430:1000::c0f:fee]) + (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 1AEBD825C6 + for ; Fri, 5 Mar 2021 11:35:44 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org +Received: by lechat.rtp-net.org (Postfix, from userid 1000) + id 3E0CC180475; Fri, 5 Mar 2021 11:35:41 +0100 (CET) +Message-ID: <20210305103307.112947687@rtp-net.org> +User-Agent: quilt/0.66 +Date: Fri, 05 Mar 2021 11:27:48 +0100 +From: Arnaud Patard (Rtp) +To: u-boot@lists.denx.de +Cc: Kever Yang , + Anatolij Gustschin , + Philipp Tomsich , + Peter Robinson , + Samuel Dionne-Riel , + Alper Nebi Yasak , + Arnaud Patard +Subject: [patch v4 3/9] Rockchip: video: edp: Change interrupt polarity + configuration +References: <20210305102745.078091129@rtp-net.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de +X-Virus-Status: Clean + +The linux code is setting polarity configuration to 3 but +uboot code is setting it to 1. Change the configuration to match the +linux configuration + +Signed-off-by: Arnaud Patard +Tested-by: Peter Robinson + +Index: u-boot/arch/arm/include/asm/arch-rockchip/edp_rk3288.h +=================================================================== +--- u-boot.orig/arch/arm/include/asm/arch-rockchip/edp_rk3288.h ++++ u-boot/arch/arm/include/asm/arch-rockchip/edp_rk3288.h +@@ -297,7 +297,9 @@ check_member(rk3288_edp, pll_reg_5, 0xa0 + + /* int_ctl */ + #define SOFT_INT_CTRL (0x1 << 2) +-#define INT_POL (0x1 << 0) ++#define INT_POL1 (0x1 << 1) ++#define INT_POL0 (0x1 << 0) ++#define INT_POL (INT_POL0 | INT_POL1) + + /* sys_ctl_1 */ + #define DET_STA (0x1 << 2) + +From patchwork Fri Mar 5 10:27:49 2021 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Arnaud Patard (Rtp)" +X-Patchwork-Id: 1447759 +X-Patchwork-Delegate: agust@denx.de +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4DsPLH1GRYz9sRR + for ; Fri, 5 Mar 2021 21:36:55 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 96D31826F3; + Fri, 5 Mar 2021 11:36:07 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 1A41B82036; Fri, 5 Mar 2021 11:35: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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE + autolearn=ham autolearn_force=no version=3.4.2 +Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) + (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 09C178204C + for ; Fri, 5 Mar 2021 11:35:44 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org +Received: by lechat.rtp-net.org (Postfix, from userid 1000) + id 61DE01808B6; Fri, 5 Mar 2021 11:35:41 +0100 (CET) +Message-ID: <20210305103307.175518624@rtp-net.org> +User-Agent: quilt/0.66 +Date: Fri, 05 Mar 2021 11:27:49 +0100 +From: Arnaud Patard (Rtp) +To: u-boot@lists.denx.de +Cc: Kever Yang , + Anatolij Gustschin , + Philipp Tomsich , + Peter Robinson , + Samuel Dionne-Riel , + Alper Nebi Yasak , + Arnaud Patard +Subject: [patch v4 4/9] Rockchip: video: vop: Reserve efi fb memory +References: <20210305102745.078091129@rtp-net.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de +X-Virus-Status: Clean + +When booting with EFI and graphics, the memory used for framebuffer +has to be reserved, otherwise it may leads to kernel memory +overwrite. + +Signed-off-by: Arnaud Patard +Tested-by: Peter Robinson + +Index: u-boot/drivers/video/rockchip/rk_vop.c +=================================================================== +--- u-boot.orig/drivers/video/rockchip/rk_vop.c ++++ u-boot/drivers/video/rockchip/rk_vop.c +@@ -21,6 +21,8 @@ + #include + #include + #include ++#include ++#include + #include + #include + #include +@@ -395,6 +397,11 @@ int rk_vop_probe(struct udevice *dev) + if (!(gd->flags & GD_FLG_RELOC)) + return 0; + ++#if defined(CONFIG_EFI_LOADER) ++ debug("Adding to EFI map %d @ %lx\n", plat->size, plat->base); ++ efi_add_memory_map(plat->base, plat->size, EFI_RESERVED_MEMORY_TYPE); ++#endif ++ + priv->regs = (struct rk3288_vop *)dev_read_addr(dev); + + /* + +From patchwork Fri Mar 5 10:27:50 2021 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Arnaud Patard (Rtp)" +X-Patchwork-Id: 1447756 +X-Patchwork-Delegate: agust@denx.de +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4DsPKd3f7rz9sRR + for ; Fri, 5 Mar 2021 21:36:21 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 470D882070; + Fri, 5 Mar 2021 11:35:56 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 5AAD48204A; Fri, 5 Mar 2021 11:35:49 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE + autolearn=ham autolearn_force=no version=3.4.2 +Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) + (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id DCB148204A + for ; Fri, 5 Mar 2021 11:35:43 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org +Received: by lechat.rtp-net.org (Postfix, from userid 1000) + id 71166180A1E; Fri, 5 Mar 2021 11:35:41 +0100 (CET) +Message-ID: <20210305103307.228214963@rtp-net.org> +User-Agent: quilt/0.66 +Date: Fri, 05 Mar 2021 11:27:50 +0100 +From: Arnaud Patard (Rtp) +To: u-boot@lists.denx.de +Cc: Kever Yang , + Anatolij Gustschin , + Philipp Tomsich , + Peter Robinson , + Samuel Dionne-Riel , + Alper Nebi Yasak , + Arnaud Patard +Subject: [patch v4 5/9] rockchip: Pinebook Pro: Enable edp +References: <20210305102745.078091129@rtp-net.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de +X-Virus-Status: Clean + +- uboot rockchip edp code is looking for a rockchip,panel property + for the edp dts node, so add it. + +Signed-off-by: Arnaud Patard +Tested-by: Peter Robinson + +Index: u-boot/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi +=================================================================== +--- u-boot.orig/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi ++++ u-boot/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi +@@ -16,6 +16,10 @@ + }; + }; + ++&edp { ++ rockchip,panel = <&edp_panel>; ++}; ++ + &i2c0 { + u-boot,dm-pre-reloc; + }; + +From patchwork Fri Mar 5 10:27:51 2021 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Arnaud Patard (Rtp)" +X-Patchwork-Id: 1447754 +X-Patchwork-Delegate: agust@denx.de +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +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 RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4DsPKR1d2Fz9sRR + for ; Fri, 5 Mar 2021 21:36:11 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 12B478204C; + Fri, 5 Mar 2021 11:35:53 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 447228206F; Fri, 5 Mar 2021 11:35:47 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE + autolearn=ham autolearn_force=no version=3.4.2 +Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) + (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id B778881C7C + for ; Fri, 5 Mar 2021 11:35:43 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org +Received: by lechat.rtp-net.org (Postfix, from userid 1000) + id C0DB4180A22; Fri, 5 Mar 2021 11:35:41 +0100 (CET) +Message-ID: <20210305103307.290295328@rtp-net.org> +User-Agent: quilt/0.66 +Date: Fri, 05 Mar 2021 11:27:51 +0100 +From: Arnaud Patard (Rtp) +To: u-boot@lists.denx.de +Cc: Kever Yang , + Anatolij Gustschin , + Philipp Tomsich , + Peter Robinson , + Samuel Dionne-Riel , + Alper Nebi Yasak , + Arnaud Patard +Subject: [patch v4 6/9] rockchip: pwm: Fix default polarity +References: <20210305102745.078091129@rtp-net.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de +X-Virus-Status: Clean + +In the code, the default polarity is set to positive/positive, +which is neither normal polarity or inverted polarity. It's +only the hardware default. This leads to booting linux with +wrong polarity setting. + +Update the code to use PWM_DUTY_POSTIVE | PWM_INACTIVE_NEGATIVE +by default instead. + +Signed-off-by: Arnaud Patard +Tested-by: Peter Robinson + +Index: u-boot/drivers/pwm/rk_pwm.c +=================================================================== +--- u-boot.orig/drivers/pwm/rk_pwm.c ++++ u-boot/drivers/pwm/rk_pwm.c +@@ -147,7 +147,7 @@ static int rk_pwm_probe(struct udevice * + priv->data = (struct rockchip_pwm_data *)dev_get_driver_data(dev); + + if (priv->data->supports_polarity) +- priv->conf_polarity = PWM_DUTY_POSTIVE | PWM_INACTIVE_POSTIVE; ++ priv->conf_polarity = PWM_DUTY_POSTIVE | PWM_INACTIVE_NEGATIVE; + + return 0; + } + +From patchwork Fri Mar 5 10:27:52 2021 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Arnaud Patard (Rtp)" +X-Patchwork-Id: 1447761 +X-Patchwork-Delegate: agust@denx.de +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4DsPLk2Jx9z9sRR + for ; Fri, 5 Mar 2021 21:37:18 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 95200827A5; + Fri, 5 Mar 2021 11:36:13 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 948DB8204A; Fri, 5 Mar 2021 11:35: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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE + autolearn=ham autolearn_force=no version=3.4.2 +Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) + (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 353198204D + for ; Fri, 5 Mar 2021 11:35:44 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org +Received: by lechat.rtp-net.org (Postfix, from userid 1000) + id E7A2D180ACE; Fri, 5 Mar 2021 11:35:41 +0100 (CET) +Message-ID: <20210305103307.342131644@rtp-net.org> +User-Agent: quilt/0.66 +Date: Fri, 05 Mar 2021 11:27:52 +0100 +From: Arnaud Patard (Rtp) +To: u-boot@lists.denx.de +Cc: Kever Yang , + Anatolij Gustschin , + Philipp Tomsich , + Peter Robinson , + Samuel Dionne-Riel , + Alper Nebi Yasak , + Arnaud Patard +Subject: [patch v4 7/9] rockchip: video: vop: Fix format of fbbase in debug + string +References: <20210305102745.078091129@rtp-net.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de +X-Virus-Status: Clean + +The debug string printing the device name, framebuffer address and of node +is using %lu as format for the framebuffer address, which is not so nice. +Change it to %lx. + +Signed-off-by: Arnaud Patard +Tested-by: Peter Robinson + +Index: u-boot/drivers/video/rockchip/rk_vop.c +=================================================================== +--- u-boot.orig/drivers/video/rockchip/rk_vop.c ++++ u-boot/drivers/video/rockchip/rk_vop.c +@@ -240,7 +240,7 @@ static int rk_display_init(struct udevic + ofnode remote; + const char *compat; + +- debug("%s(%s, %lu, %s)\n", __func__, ++ debug("%s(%s, 0x%lx, %s)\n", __func__, + dev_read_name(dev), fbbase, ofnode_get_name(ep_node)); + + ret = ofnode_read_u32(ep_node, "remote-endpoint", &remote_phandle); + +From patchwork Fri Mar 5 10:27:53 2021 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Arnaud Patard (Rtp)" +X-Patchwork-Id: 1447762 +X-Patchwork-Delegate: agust@denx.de +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4DsPLx35qQz9sRR + for ; Fri, 5 Mar 2021 21:37:29 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id CA1E082785; + Fri, 5 Mar 2021 11:36:16 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 67A538204A; Fri, 5 Mar 2021 11:35:54 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE + autolearn=ham autolearn_force=no version=3.4.2 +Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) + (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 4B7598236C + for ; Fri, 5 Mar 2021 11:35:44 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org +Received: by lechat.rtp-net.org (Postfix, from userid 1000) + id F37E5180A23; Fri, 5 Mar 2021 11:35:41 +0100 (CET) +Message-ID: <20210305103307.395781510@rtp-net.org> +User-Agent: quilt/0.66 +Date: Fri, 05 Mar 2021 11:27:53 +0100 +From: Arnaud Patard (Rtp) +To: u-boot@lists.denx.de +Cc: Kever Yang , + Anatolij Gustschin , + Philipp Tomsich , + Peter Robinson , + Samuel Dionne-Riel , + Alper Nebi Yasak , + Arnaud Patard +Subject: [patch v4 8/9] rockchip: video: edp: Add missing reset support +References: <20210305102745.078091129@rtp-net.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de +X-Virus-Status: Clean + +In order to ensure that the eDP registers are in correct state, +add missing support for the eDP reset lines found in the device-tree. + + +Signed-off-by: Arnaud Patard +Tested-by: Peter Robinson + +Index: u-boot/drivers/video/rockchip/rk_edp.c +=================================================================== +--- u-boot.orig/drivers/video/rockchip/rk_edp.c ++++ u-boot/drivers/video/rockchip/rk_edp.c +@@ -8,11 +8,13 @@ + #include + #include + #include ++#include + #include + #include + #include + #include + #include ++#include + #include + #include + #include +@@ -1053,6 +1055,7 @@ static int rk_edp_probe(struct udevice * + struct rk_edp_priv *priv = dev_get_priv(dev); + struct rk3288_edp *regs = priv->regs; + struct rockchip_dp_data *edp_data = (struct rockchip_dp_data *)dev_get_driver_data(dev); ++ struct reset_ctl dp_rst; + + struct clk clk; + int ret; +@@ -1065,6 +1068,25 @@ static int rk_edp_probe(struct udevice * + return ret; + } + ++ ret = reset_get_by_name(dev, "dp", &dp_rst); ++ if (ret) { ++ dev_err(dev, "failed to get dp reset (ret=%d)\n", ret); ++ return ret; ++ } ++ ++ ret = reset_assert(&dp_rst); ++ if (ret) { ++ dev_err(dev, "failed to assert dp reset (ret=%d)\n", ret); ++ return ret; ++ } ++ udelay(20); ++ ++ ret = reset_deassert(&dp_rst); ++ if (ret) { ++ dev_err(dev, "failed to deassert dp reset (ret=%d)\n", ret); ++ return ret; ++ } ++ + int vop_id = uc_plat->source_id; + debug("%s, uc_plat=%p, vop_id=%u\n", __func__, uc_plat, vop_id); + + +From patchwork Fri Mar 5 10:27:54 2021 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Arnaud Patard (Rtp)" +X-Patchwork-Id: 1447763 +X-Patchwork-Delegate: agust@denx.de +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4DsPM76BCrz9sRR + for ; Fri, 5 Mar 2021 21:37:39 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 67BC2827B1; + Fri, 5 Mar 2021 11:36:20 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id DF2998206F; Fri, 5 Mar 2021 11:35: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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE + autolearn=ham autolearn_force=no version=3.4.2 +Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) + (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 4C91882070 + for ; Fri, 5 Mar 2021 11:35:44 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=rtp-net.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org +Received: by lechat.rtp-net.org (Postfix, from userid 1000) + id 329B7180B08; Fri, 5 Mar 2021 11:35:42 +0100 (CET) +Message-ID: <20210305103307.447309277@rtp-net.org> +User-Agent: quilt/0.66 +Date: Fri, 05 Mar 2021 11:27:54 +0100 +From: Arnaud Patard (Rtp) +To: u-boot@lists.denx.de +Cc: Kever Yang , + Anatolij Gustschin , + Philipp Tomsich , + Peter Robinson , + Samuel Dionne-Riel , + Alper Nebi Yasak , + Arnaud Patard +Subject: [patch v4 9/9] rockchip: video: vop: Add reset support +References: <20210305102745.078091129@rtp-net.org> +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de +X-Virus-Status: Clean + +In order to ensure that the VOP registers are in correct state, +add missing support for the VOP reset lines found in the device-tree + +Signed-off-by: Arnaud Patard +Tested-by: Peter Robinson + +Index: u-boot/drivers/video/rockchip/rk_vop.c +=================================================================== +--- u-boot.orig/drivers/video/rockchip/rk_vop.c ++++ u-boot/drivers/video/rockchip/rk_vop.c @@ -8,9 +8,11 @@ #include #include @@ -296,17 +1160,8 @@ index fcb393b906..0fabbf7e30 100644 +#include #include #include - #include -@@ -20,6 +22,8 @@ - #include - #include - #include -+#include -+#include - #include - #include - #include -@@ -34,14 +38,16 @@ enum vop_pol { + #include +@@ -37,14 +39,16 @@ enum vop_pol { DCLK_INVERT = 3 }; @@ -325,7 +1180,7 @@ index fcb393b906..0fabbf7e30 100644 writel(V_ACT_WIDTH(hactive - 1) | V_ACT_HEIGHT(vactive - 1), ®s->win0_act_info); -@@ -89,6 +95,18 @@ static void rkvop_enable(struct rk3288_vop *regs, ulong fbbase, +@@ -92,6 +96,18 @@ static void rkvop_enable(struct rk3288_v writel(fbbase, ®s->win0_yrgb_mst); writel(0x01, ®s->reg_cfg_done); /* enable reg config */ @@ -344,52 +1199,15 @@ index fcb393b906..0fabbf7e30 100644 } static void rkvop_set_pin_polarity(struct udevice *dev, -@@ -235,12 +253,12 @@ static int rk_display_init(struct udevice *dev, ulong fbbase, ofnode ep_node) - struct clk clk; +@@ -239,6 +255,7 @@ static int rk_display_init(struct udevic enum video_log2_bpp l2bpp; ofnode remote; -+ const char *compat; + const char *compat; + struct reset_ctl dclk_rst; -- debug("%s(%s, %lu, %s)\n", __func__, -+ debug("%s(%s, %lx, %s)\n", __func__, + debug("%s(%s, 0x%lx, %s)\n", __func__, dev_read_name(dev), fbbase, ofnode_get_name(ep_node)); - -- vop_id = ofnode_read_s32_default(ep_node, "reg", -1); -- debug("vop_id=%d\n", vop_id); - ret = ofnode_read_u32(ep_node, "remote-endpoint", &remote_phandle); - if (ret) - return ret; -@@ -282,6 +300,28 @@ static int rk_display_init(struct udevice *dev, ulong fbbase, ofnode ep_node) - if (disp) - break; - }; -+ compat = ofnode_get_property(remote, "compatible", NULL); -+ if (!compat) { -+ debug("%s(%s): Failed to find compatible property\n", -+ __func__, dev_read_name(dev)); -+ return -EINVAL; -+ } -+ if (strstr(compat, "edp")) { -+ vop_id = VOP_MODE_EDP; -+ } else if (strstr(compat, "mipi")) { -+ vop_id = VOP_MODE_MIPI; -+ } else if (strstr(compat, "hdmi")) { -+ vop_id = VOP_MODE_HDMI; -+ } else if (strstr(compat, "cdn-dp")) { -+ vop_id = VOP_MODE_DP; -+ } else if (strstr(compat, "lvds")) { -+ vop_id = VOP_MODE_LVDS; -+ } else { -+ debug("%s(%s): Failed to find vop mode for %s\n", -+ __func__, dev_read_name(dev), compat); -+ return -EINVAL; -+ } -+ debug("vop_id=%d\n", vop_id); - - disp_uc_plat = dev_get_uclass_plat(disp); - debug("Found device '%s', disp_uc_priv=%p\n", disp->name, disp_uc_plat); -@@ -331,7 +371,14 @@ static int rk_display_init(struct udevice *dev, ulong fbbase, ofnode ep_node) +@@ -355,7 +372,14 @@ static int rk_display_init(struct udevic } rkvop_mode_set(dev, &timing, vop_id); @@ -405,7 +1223,7 @@ index fcb393b906..0fabbf7e30 100644 ret = display_enable(disp, 1 << l2bpp, &timing); if (ret) -@@ -368,11 +415,38 @@ int rk_vop_probe(struct udevice *dev) +@@ -392,11 +416,31 @@ int rk_vop_probe(struct udevice *dev) struct rk_vop_priv *priv = dev_get_priv(dev); int ret = 0; ofnode port, node; @@ -434,16 +1252,6 @@ index fcb393b906..0fabbf7e30 100644 + return ret; + } + -+ plat->base = gd->bd->bi_dram[0].start + gd->bd->bi_dram[0].size - plat->size; -+ -+#if defined(CONFIG_EFI_LOADER) -+ debug("Adding to EFI map %d @ %lx\n", plat->size, plat->base); -+ efi_add_memory_map(plat->base, plat->size, EFI_RESERVED_MEMORY_TYPE); -+#endif -+ - priv->regs = (struct rk3288_vop *)dev_read_addr(dev); - - /* --- -2.29.2 - + #if defined(CONFIG_EFI_LOADER) + debug("Adding to EFI map %d @ %lx\n", plat->size, plat->base); + efi_add_memory_map(plat->base, plat->size, EFI_RESERVED_MEMORY_TYPE); diff --git a/rng-Add-iProc-RNG200-driver.patch b/rng-Add-iProc-RNG200-driver.patch deleted file mode 100644 index b5e54c5..0000000 --- a/rng-Add-iProc-RNG200-driver.patch +++ /dev/null @@ -1,450 +0,0 @@ -From patchwork Tue Dec 15 09:49:23 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: mbrugger -X-Patchwork-Id: 1416366 -X-Patchwork-Delegate: matthias.bgg@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=fail (p=none dis=none) header.from=kernel.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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CwD58649Dz9s0b - for ; Tue, 15 Dec 2020 20:49:53 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 4EC6082956; - Tue, 15 Dec 2020 10:49:42 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=fail (p=none dis=none) header.from=kernel.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id B1A738295E; Tue, 15 Dec 2020 10:49:40 +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=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI, - SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 38FB382955 - for ; Tue, 15 Dec 2020 10:49:37 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=kernel.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=matthias.bgg@kernel.org -From: matthias.bgg@kernel.org -Authentication-Results: mail.kernel.org; - dkim=permerror (bad message/signature format) -To: sughosh.ganu@linaro.org, - xypron.glpk@gmx.de -Cc: u-boot@lists.denx.de, - Matthias Brugger -Subject: [PATCH v2 1/2] rng: Add iProc RNG200 driver -Date: Tue, 15 Dec 2020 10:49:23 +0100 -Message-Id: <20201215094924.30072-1-matthias.bgg@kernel.org> -X-Mailer: git-send-email 2.29.2 -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -From: Matthias Brugger - -Add support for random number generator RNG200. -This is for example found on RPi4. - -Signed-off-by: Matthias Brugger -Tested-by: Heinrich Schuchardt ---- - -Changes in v2: None - - drivers/rng/Kconfig | 6 ++ - drivers/rng/Makefile | 1 + - drivers/rng/iproc_rng200.c | 186 +++++++++++++++++++++++++++++++++++++ - 3 files changed, 193 insertions(+) - create mode 100644 drivers/rng/iproc_rng200.c - -diff --git a/drivers/rng/Kconfig b/drivers/rng/Kconfig -index 11001c8ae7..94915d45b3 100644 ---- a/drivers/rng/Kconfig -+++ b/drivers/rng/Kconfig -@@ -46,4 +46,10 @@ config RNG_ROCKCHIP - Enable random number generator for rockchip.This driver is - support rng module of crypto v1 and crypto v2. - -+config RNG_IPROC200 -+ bool "Broadcom iProc RNG200 random number generator" -+ depends on DM_RNG -+ default n -+ help -+ Enable random number generator for RPI4. - endif -diff --git a/drivers/rng/Makefile b/drivers/rng/Makefile -index 8953406882..39f7ee3f03 100644 ---- a/drivers/rng/Makefile -+++ b/drivers/rng/Makefile -@@ -9,3 +9,4 @@ obj-$(CONFIG_RNG_SANDBOX) += sandbox_rng.o - obj-$(CONFIG_RNG_MSM) += msm_rng.o - obj-$(CONFIG_RNG_STM32MP1) += stm32mp1_rng.o - obj-$(CONFIG_RNG_ROCKCHIP) += rockchip_rng.o -+obj-$(CONFIG_RNG_IPROC200) += iproc_rng200.o -diff --git a/drivers/rng/iproc_rng200.c b/drivers/rng/iproc_rng200.c -new file mode 100644 -index 0000000000..1063f43953 ---- /dev/null -+++ b/drivers/rng/iproc_rng200.c -@@ -0,0 +1,186 @@ -+// SPDX-License-Identifier: GPL-2.0-or-later -+/* -+ * Copyright 2020, Matthias Brugger -+ * -+ * Driver for Raspberry Pi hardware random number generator -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+ -+#define usleep_range(a, b) udelay((b)) -+ -+#define RNG_CTRL_OFFSET 0x00 -+#define RNG_CTRL_RNG_RBGEN_MASK 0x00001FFF -+#define RNG_CTRL_RNG_RBGEN_ENABLE 0x00000001 -+#define RNG_CTRL_RNG_RBGEN_DISABLE 0x00000000 -+ -+#define RNG_SOFT_RESET_OFFSET 0x04 -+#define RNG_SOFT_RESET 0x00000001 -+ -+#define RBG_SOFT_RESET_OFFSET 0x08 -+#define RBG_SOFT_RESET 0x00000001 -+ -+#define RNG_INT_STATUS_OFFSET 0x18 -+#define RNG_INT_STATUS_MASTER_FAIL_LOCKOUT_IRQ_MASK 0x80000000 -+#define RNG_INT_STATUS_NIST_FAIL_IRQ_MASK 0x00000020 -+ -+#define RNG_FIFO_DATA_OFFSET 0x20 -+ -+#define RNG_FIFO_COUNT_OFFSET 0x24 -+#define RNG_FIFO_COUNT_RNG_FIFO_COUNT_MASK 0x000000FF -+ -+struct iproc_rng200_plat { -+ fdt_addr_t base; -+}; -+ -+static void iproc_rng200_enable(struct iproc_rng200_plat *pdata, bool enable) -+{ -+ fdt_addr_t rng_base = pdata->base; -+ u32 val; -+ -+ val = readl(rng_base + RNG_CTRL_OFFSET); -+ val &= ~RNG_CTRL_RNG_RBGEN_MASK; -+ if (enable) -+ val |= RNG_CTRL_RNG_RBGEN_ENABLE; -+ else -+ val &= ~RNG_CTRL_RNG_RBGEN_ENABLE; -+ -+ writel(val, rng_base + RNG_CTRL_OFFSET); -+ -+} -+ -+static void iproc_rng200_restart(struct iproc_rng200_plat *pdata) -+{ -+ fdt_addr_t rng_base = pdata->base; -+ u32 val; -+ -+ iproc_rng200_enable(pdata, false); -+ -+ /* Clear all interrupt status */ -+ writel(0xFFFFFFFFUL, rng_base + RNG_INT_STATUS_OFFSET); -+ -+ /* Reset RNG and RBG */ -+ val = readl(rng_base + RBG_SOFT_RESET_OFFSET); -+ val |= RBG_SOFT_RESET; -+ writel(val, rng_base + RBG_SOFT_RESET_OFFSET); -+ -+ val = readl(rng_base + RNG_SOFT_RESET_OFFSET); -+ val |= RNG_SOFT_RESET; -+ writel(val, rng_base + RNG_SOFT_RESET_OFFSET); -+ -+ val = readl(rng_base + RNG_SOFT_RESET_OFFSET); -+ val &= ~RNG_SOFT_RESET; -+ writel(val, rng_base + RNG_SOFT_RESET_OFFSET); -+ -+ val = readl(rng_base + RBG_SOFT_RESET_OFFSET); -+ val &= ~RBG_SOFT_RESET; -+ writel(val, rng_base + RBG_SOFT_RESET_OFFSET); -+ -+ iproc_rng200_enable(pdata, true); -+} -+ -+static int iproc_rng200_read(struct udevice *dev, void *data, size_t len) -+{ -+ struct iproc_rng200_plat *priv = dev_get_plat(dev); -+ char *buf = (char *)data; -+ u32 num_remaining = len; -+ u32 status; -+ -+ #define MAX_RESETS_PER_READ 1 -+ u32 num_resets = 0; -+ -+ while (num_remaining > 0) { -+ -+ /* Is RNG sane? If not, reset it. */ -+ status = readl(priv->base + RNG_INT_STATUS_OFFSET); -+ if ((status & (RNG_INT_STATUS_MASTER_FAIL_LOCKOUT_IRQ_MASK | -+ RNG_INT_STATUS_NIST_FAIL_IRQ_MASK)) != 0) { -+ -+ if (num_resets >= MAX_RESETS_PER_READ) -+ return len - num_remaining; -+ -+ iproc_rng200_restart(priv); -+ num_resets++; -+ } -+ -+ /* Are there any random numbers available? */ -+ if ((readl(priv->base + RNG_FIFO_COUNT_OFFSET) & -+ RNG_FIFO_COUNT_RNG_FIFO_COUNT_MASK) > 0) { -+ -+ if (num_remaining >= sizeof(u32)) { -+ /* Buffer has room to store entire word */ -+ *(u32 *)buf = readl(priv->base + -+ RNG_FIFO_DATA_OFFSET); -+ buf += sizeof(u32); -+ num_remaining -= sizeof(u32); -+ } else { -+ /* Buffer can only store partial word */ -+ u32 rnd_number = readl(priv->base + -+ RNG_FIFO_DATA_OFFSET); -+ memcpy(buf, &rnd_number, num_remaining); -+ buf += num_remaining; -+ num_remaining = 0; -+ } -+ -+ } else { -+ /* Can wait, give others chance to run */ -+ usleep_range(min(num_remaining * 10, 500U), 500); -+ } -+ } -+ -+ return 0; -+} -+ -+static int iproc_rng200_probe(struct udevice *dev) -+{ -+ struct iproc_rng200_plat *priv = dev_get_plat(dev); -+ -+ iproc_rng200_enable(priv, true); -+ -+ return 0; -+} -+ -+static int iproc_rng200_remove(struct udevice *dev) -+{ -+ struct iproc_rng200_plat *priv = dev_get_plat(dev); -+ -+ iproc_rng200_enable(priv, false); -+ -+ return 0; -+} -+ -+static int iproc_rng200_of_to_plat(struct udevice *dev) -+{ -+ struct iproc_rng200_plat *pdata = dev_get_plat(dev); -+ -+ pdata->base = dev_read_addr(dev); -+ if (!pdata->base) -+ return -ENODEV; -+ -+ return 0; -+} -+ -+static const struct dm_rng_ops iproc_rng200_ops = { -+ .read = iproc_rng200_read, -+}; -+ -+static const struct udevice_id iproc_rng200_rng_match[] = { -+ { .compatible = "brcm,bcm2711-rng200", }, -+ { .compatible = "brcm,iproc-rng200", }, -+ {}, -+}; -+ -+U_BOOT_DRIVER(iproc_rng200_rng) = { -+ .name = "iproc_rng200-rng", -+ .id = UCLASS_RNG, -+ .of_match = iproc_rng200_rng_match, -+ .ops = &iproc_rng200_ops, -+ .probe = iproc_rng200_probe, -+ .remove = iproc_rng200_remove, -+ .priv_auto = sizeof(struct iproc_rng200_plat), -+ .of_to_plat = iproc_rng200_of_to_plat, -+}; - -From patchwork Tue Dec 15 09:49:24 2020 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: mbrugger -X-Patchwork-Id: 1416367 -X-Patchwork-Delegate: matthias.bgg@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dmarc=fail (p=none dis=none) header.from=kernel.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 RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4CwD5D4Gf2z9s0b - for ; Tue, 15 Dec 2020 20:50:08 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id A25E782961; - Tue, 15 Dec 2020 10:49:46 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=fail (p=none dis=none) header.from=kernel.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 9EC418295C; Tue, 15 Dec 2020 10:49:41 +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=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI, - SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id BCF5682956 - for ; Tue, 15 Dec 2020 10:49:38 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=kernel.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=matthias.bgg@kernel.org -From: matthias.bgg@kernel.org -Authentication-Results: mail.kernel.org; - dkim=permerror (bad message/signature format) -To: sughosh.ganu@linaro.org, - xypron.glpk@gmx.de -Cc: u-boot@lists.denx.de, - Matthias Brugger -Subject: [PATCH v2 2/2] config: Enable iProc RNG200 driver in RPi4 configs -Date: Tue, 15 Dec 2020 10:49:24 +0100 -Message-Id: <20201215094924.30072-2-matthias.bgg@kernel.org> -X-Mailer: git-send-email 2.29.2 -In-Reply-To: <20201215094924.30072-1-matthias.bgg@kernel.org> -References: <20201215094924.30072-1-matthias.bgg@kernel.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de -X-Virus-Status: Clean - -From: Matthias Brugger - -We find the iProc RNG200 in the Raspberry Pi 4. Add it to all it's -config so that it can be used. - -Signed-off-by: Matthias Brugger ---- - -Changes in v2: -- fix defconfigs using savedefconfig (Heinrich) - - configs/rpi_4_32b_defconfig | 2 ++ - configs/rpi_4_defconfig | 2 ++ - configs/rpi_arm64_defconfig | 2 ++ - drivers/rng/iproc_rng200.c | 1 - - 4 files changed, 6 insertions(+), 1 deletion(-) - -diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig -index 5ddd838fd5..4039e46c81 100644 ---- a/configs/rpi_4_32b_defconfig -+++ b/configs/rpi_4_32b_defconfig -@@ -36,6 +36,8 @@ CONFIG_PCI_BRCMSTB=y - CONFIG_PINCTRL=y - # CONFIG_PINCTRL_GENERIC is not set - CONFIG_DM_RESET=y -+CONFIG_DM_RNG=y -+CONFIG_RNG_IPROC200=y - # CONFIG_REQUIRE_SERIAL_CONSOLE is not set - CONFIG_USB=y - CONFIG_DM_USB=y -diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig -index 2590d0a696..46b6cc3046 100644 ---- a/configs/rpi_4_defconfig -+++ b/configs/rpi_4_defconfig -@@ -36,6 +36,8 @@ CONFIG_PCI_BRCMSTB=y - CONFIG_PINCTRL=y - # CONFIG_PINCTRL_GENERIC is not set - CONFIG_DM_RESET=y -+CONFIG_DM_RNG=y -+CONFIG_RNG_IPROC200=y - # CONFIG_REQUIRE_SERIAL_CONSOLE is not set - CONFIG_USB=y - CONFIG_DM_USB=y -diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig -index 2639219a1a..b75144036d 100644 ---- a/configs/rpi_arm64_defconfig -+++ b/configs/rpi_arm64_defconfig -@@ -33,6 +33,8 @@ CONFIG_PCI_BRCMSTB=y - CONFIG_PINCTRL=y - # CONFIG_PINCTRL_GENERIC is not set - CONFIG_DM_RESET=y -+CONFIG_DM_RNG=y -+CONFIG_RNG_IPROC200=y - # CONFIG_REQUIRE_SERIAL_CONSOLE is not set - CONFIG_USB=y - CONFIG_DM_USB=y -diff --git a/drivers/rng/iproc_rng200.c b/drivers/rng/iproc_rng200.c -index 1063f43953..378f6cf48d 100644 ---- a/drivers/rng/iproc_rng200.c -+++ b/drivers/rng/iproc_rng200.c -@@ -50,7 +50,6 @@ static void iproc_rng200_enable(struct iproc_rng200_plat *pdata, bool enable - val &= ~RNG_CTRL_RNG_RBGEN_ENABLE; - - writel(val, rng_base + RNG_CTRL_OFFSET); -- - } - - static void iproc_rng200_restart(struct iproc_rng200_plat *pdata) diff --git a/sources b/sources index 6d65d26..6a0feed 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2021.04-rc2.tar.bz2) = 7bf07f15e0c5f5e63ef8cb9568278ea7c209e484bbb599c47b22a8d2e5c007cc204eec365e5328dea3e7b016cd6ba0cb4c917330cc76163b1016f7c7762ad1bf +SHA512 (u-boot-2021.04-rc3.tar.bz2) = 0d6b46b791475ce21320fbc2b361235d09588a5b912d40b32a11d937adc7c0e7b75b893ba4e8dc55156cfd99f684fc56839c17d0b9c021f5cfaaf5e5997f93ba diff --git a/uboot-tools.spec b/uboot-tools.spec index 55f2632..17539a5 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -%global candidate rc2 +%global candidate rc3 Name: uboot-tools Version: 2021.04 -Release: 0.3%{?candidate:.%{candidate}}%{?dist} +Release: 0.4%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -27,13 +27,9 @@ Patch10: AllWinner-PineTab.patch # TI fixes Patch11: 0001-Fix-BeagleAI-detection.patch # Rockchips improvements -#Patch12: rk3399-Pinebook-pro-EDP-support.patch -# Raspberry Pi improvements -Patch13: Raspberry-Pi-400-Compute-Module-4-support.patch -Patch14: Raspberry-Pi-4-PCIe-handover.patch -Patch15: rng-Add-iProc-RNG200-driver.patch +Patch12: rk3399-Pinebook-pro-EDP-support.patch # Fixes for Allwinner network issues -Patch16: 0001-arm-dts-allwinner-sync-from-linux-for-RGMII-RX-TX-de.patch +Patch13: 0001-arm-dts-allwinner-sync-from-linux-for-RGMII-RX-TX-de.patch BuildRequires: bc BuildRequires: dtc @@ -245,6 +241,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Mon Mar 08 2021 Peter Robinson - 2021.04-0.4.rc3 +- Update to 2021.04 RC3 + * Tue Feb 16 2021 Peter Robinson - 2021.04-0.3.rc2 - Update to 2021.04 RC2 From 2abadc51692f863049baca9568ddff2529fb5fed Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sat, 13 Mar 2021 21:21:20 +0000 Subject: [PATCH 058/271] Fixes for SMP on RPi3, initial patch for pinepohone 3g --- ...r-consider-no-map-property-of-reserv.patch | 82 +++++ ...ort-asymmetric-dual-rank-DRAM-on-A64.patch | 337 ++++++++++++++++++ uboot-tools.spec | 8 +- 3 files changed, 426 insertions(+), 1 deletion(-) create mode 100644 0001-Revert-efi_loader-consider-no-map-property-of-reserv.patch create mode 100644 sunxi-support-asymmetric-dual-rank-DRAM-on-A64.patch diff --git a/0001-Revert-efi_loader-consider-no-map-property-of-reserv.patch b/0001-Revert-efi_loader-consider-no-map-property-of-reserv.patch new file mode 100644 index 0000000..485f966 --- /dev/null +++ b/0001-Revert-efi_loader-consider-no-map-property-of-reserv.patch @@ -0,0 +1,82 @@ +From 62f3f85e50692b2685d1056a041d1dbb9e16f2a4 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Sat, 13 Mar 2021 14:42:29 +0000 +Subject: [PATCH] Revert: efi_loader: consider no-map property of reserved + memory + +This basically reverts 4cbb2930bd8c, but not directly as it's moved +about since. The patch breaks SMP on the Raspberry Pi 3 (original 3B +and 3B+) so on Linux only one CPU core comes online. I'm not exactly +sure why but a bisect idendified the patch and sure enough a revert +fixes the issue. + +Signed-off-by: Peter Robinson +--- + lib/efi_loader/efi_dt_fixup.c | 33 ++++++--------------------------- + 1 file changed, 6 insertions(+), 27 deletions(-) + +diff --git a/lib/efi_loader/efi_dt_fixup.c b/lib/efi_loader/efi_dt_fixup.c +index a4529ee3ef..87630f7857 100644 +--- a/lib/efi_loader/efi_dt_fixup.c ++++ b/lib/efi_loader/efi_dt_fixup.c +@@ -13,29 +13,13 @@ + + const efi_guid_t efi_guid_dt_fixup_protocol = EFI_DT_FIXUP_PROTOCOL_GUID; + +-/** +- * efi_reserve_memory() - add reserved memory to memory map +- * +- * @addr: start address of the reserved memory range +- * @size: size of the reserved memory range +- * @nomap: indicates that the memory range shall not be accessed by the +- * UEFI payload +- */ +-static void efi_reserve_memory(u64 addr, u64 size, bool nomap) ++static void efi_reserve_memory(u64 addr, u64 size) + { +- int type; +- efi_uintn_t ret; +- + /* Convert from sandbox address space. */ + addr = (uintptr_t)map_sysmem(addr, 0); ++ if (efi_add_memory_map(addr, size, ++ EFI_RESERVED_MEMORY_TYPE) != EFI_SUCCESS) + +- if (nomap) +- type = EFI_RESERVED_MEMORY_TYPE; +- else +- type = EFI_BOOT_SERVICES_DATA; +- +- ret = efi_add_memory_map(addr, size, type); +- if (ret != EFI_SUCCESS) + log_err("Reserved memory mapping failed addr %llx size %llx\n", + addr, size); + } +@@ -61,7 +45,7 @@ void efi_carve_out_dt_rsv(void *fdt) + for (i = 0; i < nr_rsv; i++) { + if (fdt_get_mem_rsv(fdt, i, &addr, &size) != 0) + continue; +- efi_reserve_memory(addr, size, false); ++ efi_reserve_memory(addr, size); + } + + /* process reserved-memory */ +@@ -81,13 +65,8 @@ void efi_carve_out_dt_rsv(void *fdt) + * a size instead of a reg property. + */ + if (fdt_addr != FDT_ADDR_T_NONE && +- fdtdec_get_is_enabled(fdt, subnode)) { +- bool nomap; +- +- nomap = !!fdt_getprop(fdt, subnode, "no-map", +- NULL); +- efi_reserve_memory(fdt_addr, fdt_size, nomap); +- } ++ fdtdec_get_is_enabled(fdt, subnode)) ++ efi_reserve_memory(fdt_addr, fdt_size); + subnode = fdt_next_subnode(fdt, subnode); + } + } +-- +2.30.2 + diff --git a/sunxi-support-asymmetric-dual-rank-DRAM-on-A64.patch b/sunxi-support-asymmetric-dual-rank-DRAM-on-A64.patch new file mode 100644 index 0000000..c2b6946 --- /dev/null +++ b/sunxi-support-asymmetric-dual-rank-DRAM-on-A64.patch @@ -0,0 +1,337 @@ +From patchwork Thu Feb 25 16:13:24 2021 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Icenowy Zheng +X-Patchwork-Id: 1444507 +X-Patchwork-Delegate: andre.przywara@arm.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dkim=fail reason="signature verification failed" (1024-bit key; + unprotected) header.d=mymailcheap.com header.i=@mymailcheap.com + header.a=rsa-sha256 header.s=default header.b=cioDKJo2; + dkim=fail reason="signature verification failed" (1024-bit key; + unprotected) header.d=aosc.io header.i=@aosc.io header.a=rsa-sha256 + header.s=default header.b=HIUK4Nk2; + dkim-atps=neutral +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 RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4DmdCS3h1Hz9rx6 + for ; Fri, 26 Feb 2021 03:14:28 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 110BD81B51; + Thu, 25 Feb 2021 17:14:23 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=aosc.io +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; + dkim=fail reason="signature verification failed" (1024-bit key; + unprotected) header.d=mymailcheap.com header.i=@mymailcheap.com + header.b="cioDKJo2"; + dkim=fail reason="signature verification failed" (1024-bit key; + unprotected) header.d=aosc.io header.i=@aosc.io header.b="HIUK4Nk2"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id B889280598; Thu, 25 Feb 2021 17:14:13 +0100 (CET) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, + DKIM_VALID,DKIM_VALID_AU,SPF_HELO_NONE autolearn=ham + autolearn_force=no version=3.4.2 +Received: from relay4.mymailcheap.com (relay4.mymailcheap.com + [137.74.199.117]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id C7F5580598 + for ; Thu, 25 Feb 2021 17:14:09 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=aosc.io +Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=icenowy@aosc.io +Received: from filter1.mymailcheap.com (filter1.mymailcheap.com + [149.56.130.247]) + by relay4.mymailcheap.com (Postfix) with ESMTPS id 6FC363F1CF; + Thu, 25 Feb 2021 17:14:09 +0100 (CET) +Received: from localhost (localhost [127.0.0.1]) + by filter1.mymailcheap.com (Postfix) with ESMTP id A57402A383; + Thu, 25 Feb 2021 11:14:08 -0500 (EST) +DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mymailcheap.com; + s=default; t=1614269648; + bh=p5Qg+eI0X+uHI/vb/v+Q5hqIyhUcxanqxa0s3F6kzsk=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=cioDKJo2JP5QKxiGm4JTh3EgF9+TQ/ar45VDuTK90pKSZQrjTbxwSxU6+g/Qf11YS + Tl8xBob9LtGr3IqRPR6NvT1E5ZMyjJY5TA/5NTeRVDtgbfihgr9y79uX6wx8j0PwGI + HmhrdMUcAi1i6Nf8P8i7864A0P2g+73GGSbFTnxw= +Received: from filter1.mymailcheap.com ([127.0.0.1]) + by localhost (filter1.mymailcheap.com [127.0.0.1]) (amavisd-new, port 10024) + with ESMTP id ZupYgX5wP4Vd; Thu, 25 Feb 2021 11:14:07 -0500 (EST) +Received: from mail20.mymailcheap.com (mail20.mymailcheap.com [51.83.111.147]) + (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by filter1.mymailcheap.com (Postfix) with ESMTPS; + Thu, 25 Feb 2021 11:14:07 -0500 (EST) +Received: from [148.251.23.173] (ml.mymailcheap.com [148.251.23.173]) + by mail20.mymailcheap.com (Postfix) with ESMTP id 623DD41AAC; + Thu, 25 Feb 2021 16:14:06 +0000 (UTC) +Authentication-Results: mail20.mymailcheap.com; dkim=pass (1024-bit key; + unprotected) header.d=aosc.io header.i=@aosc.io header.b="HIUK4Nk2"; + dkim-atps=neutral +AI-Spam-Status: Not processed +Received: from ice-e5v2.lan (unknown [59.41.161.221]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest + SHA256) (No client certificate requested) + by mail20.mymailcheap.com (Postfix) with ESMTPSA id 373A94085F; + Thu, 25 Feb 2021 16:13:48 +0000 (UTC) +DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=aosc.io; s=default; + t=1614269631; bh=p5Qg+eI0X+uHI/vb/v+Q5hqIyhUcxanqxa0s3F6kzsk=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=HIUK4Nk2y/BejXaMIQECyQ7r0JiiRWWbURK29vtVJOxbvSa5uDI5eMKRpJPD1FM0C + FcHWJD/H2cXjFNbCk9Ogmfwhcw2wgyXx0AranW4WXH8qg4g8uzYrAqN9nKGhbmDZ3n + ds22TcdBpaiuxNCOmVjRPJvWBZhWtTxLREQv27fw= +From: Icenowy Zheng +To: Jagan Teki , + Andre Przywara +Cc: u-boot@lists.denx.de, linux-sunxi@googlegroups.com, + Icenowy Zheng +Subject: [PATCH 1/2] sunxi: support asymmetric dual rank DRAM on A64/R40 +Date: Fri, 26 Feb 2021 00:13:24 +0800 +Message-Id: <20210225161325.94019-2-icenowy@aosc.io> +X-Mailer: git-send-email 2.30.0 +In-Reply-To: <20210225161325.94019-1-icenowy@aosc.io> +References: <20210225161325.94019-1-icenowy@aosc.io> +MIME-Version: 1.0 +X-Rspamd-Server: mail20.mymailcheap.com +X-Spamd-Result: default: False [4.90 / 20.00]; ARC_NA(0.00)[]; + RCVD_VIA_SMTP_AUTH(0.00)[]; + R_DKIM_ALLOW(0.00)[aosc.io:s=default]; + RECEIVED_SPAMHAUS_PBL(0.00)[59.41.161.221:received]; + FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; + R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; + MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[aosc.io]; + BROKEN_CONTENT_TYPE(1.50)[]; R_SPF_SOFTFAIL(0.00)[~all:c]; + RCPT_COUNT_FIVE(0.00)[5]; ML_SERVERS(-3.10)[148.251.23.173]; + DKIM_TRACE(0.00)[aosc.io:+]; MID_CONTAINS_FROM(1.00)[]; + RCVD_NO_TLS_LAST(0.10)[]; FROM_EQ_ENVFROM(0.00)[]; + MIME_TRACE(0.00)[0:+]; + ASN(0.00)[asn:24940, ipnet:148.251.0.0/16, country:DE]; + RCVD_COUNT_TWO(0.00)[2]; + HFILTER_HELO_BAREIP(3.00)[148.251.23.173,1] +X-Rspamd-Queue-Id: 623DD41AAC +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de +X-Virus-Status: Clean + +Previously we have known that R40 has a configuration register for its +rank 1, which allows different configuration than rank 0. Reverse +engineering of newest libdram of A64 from Allwinner shows that A64 has +this register too. It's bit 0 (which enables dual rank in rank 0 +configuration register) means a dedicated rank size setup is used for +rank 1. + +Now, Pine64 scheduled to use a 3GiB LPDDR3 DRAM chip (which has 2GiB +rank 0 and 1GiB rank 1) on PinePhone, that makes asymmetric dual rank +DRAM support necessary. + +Add this support. The code could support both A64 and R40, but because +dual rank detection is broken on R40 now, we cannot really use it on R40 +currently. + +Signed-off-by: Icenowy Zheng +--- + .../include/asm/arch-sunxi/dram_sunxi_dw.h | 11 ++- + arch/arm/mach-sunxi/dram_sunxi_dw.c | 94 +++++++++++++++---- + 2 files changed, 82 insertions(+), 23 deletions(-) + +diff --git a/arch/arm/include/asm/arch-sunxi/dram_sunxi_dw.h b/arch/arm/include/asm/arch-sunxi/dram_sunxi_dw.h +index a5a7ebde44..e843c14202 100644 +--- a/arch/arm/include/asm/arch-sunxi/dram_sunxi_dw.h ++++ b/arch/arm/include/asm/arch-sunxi/dram_sunxi_dw.h +@@ -215,12 +215,17 @@ struct sunxi_mctl_ctl_reg { + #define NR_OF_BYTE_LANES (32 / BITS_PER_BYTE) + /* The eight data lines (DQn) plus DM, DQS and DQSN */ + #define LINES_PER_BYTE_LANE (BITS_PER_BYTE + 3) +-struct dram_para { ++ ++struct rank_para { + u16 page_size; +- u8 bus_full_width; +- u8 dual_rank; + u8 row_bits; + u8 bank_bits; ++}; ++ ++struct dram_para { ++ u8 dual_rank; ++ u8 bus_full_width; ++ struct rank_para ranks[2]; + const u8 dx_read_delays[NR_OF_BYTE_LANES][LINES_PER_BYTE_LANE]; + const u8 dx_write_delays[NR_OF_BYTE_LANES][LINES_PER_BYTE_LANE]; + const u8 ac_delays[31]; +diff --git a/arch/arm/mach-sunxi/dram_sunxi_dw.c b/arch/arm/mach-sunxi/dram_sunxi_dw.c +index d0600011ff..2b9d631d49 100644 +--- a/arch/arm/mach-sunxi/dram_sunxi_dw.c ++++ b/arch/arm/mach-sunxi/dram_sunxi_dw.c +@@ -399,11 +399,19 @@ static void mctl_set_cr(uint16_t socid, struct dram_para *para) + #else + #error Unsupported DRAM type! + #endif +- (para->bank_bits == 3 ? MCTL_CR_EIGHT_BANKS : MCTL_CR_FOUR_BANKS) | ++ (para->ranks[0].bank_bits == 3 ? MCTL_CR_EIGHT_BANKS : MCTL_CR_FOUR_BANKS) | + MCTL_CR_BUS_FULL_WIDTH(para->bus_full_width) | + (para->dual_rank ? MCTL_CR_DUAL_RANK : MCTL_CR_SINGLE_RANK) | +- MCTL_CR_PAGE_SIZE(para->page_size) | +- MCTL_CR_ROW_BITS(para->row_bits), &mctl_com->cr); ++ MCTL_CR_PAGE_SIZE(para->ranks[0].page_size) | ++ MCTL_CR_ROW_BITS(para->ranks[0].row_bits), &mctl_com->cr); ++ ++ if (para->dual_rank && (socid == SOCID_A64 || socid == SOCID_R40)) { ++ writel((para->ranks[1].bank_bits == 3 ? MCTL_CR_EIGHT_BANKS : MCTL_CR_FOUR_BANKS) | ++ MCTL_CR_BUS_FULL_WIDTH(para->bus_full_width) | ++ MCTL_CR_DUAL_RANK | ++ MCTL_CR_PAGE_SIZE(para->ranks[1].page_size) | ++ MCTL_CR_ROW_BITS(para->ranks[1].row_bits), &mctl_com->cr_r1); ++ } + + if (socid == SOCID_R40) { + if (para->dual_rank) +@@ -646,35 +654,63 @@ static int mctl_channel_init(uint16_t socid, struct dram_para *para) + return 0; + } + +-static void mctl_auto_detect_dram_size(uint16_t socid, struct dram_para *para) ++/* ++ * Test if memory at offset offset matches memory at a certain base ++ */ ++static bool mctl_mem_matches_base(u32 offset, ulong base) ++{ ++ /* Try to write different values to RAM at two addresses */ ++ writel(0, base); ++ writel(0xaa55aa55, base + offset); ++ dsb(); ++ /* Check if the same value is actually observed when reading back */ ++ return readl(base) == ++ readl(base + offset); ++} ++ ++static void mctl_auto_detect_dram_size_rank(uint16_t socid, struct dram_para *para, ulong base, struct rank_para *rank) + { + /* detect row address bits */ +- para->page_size = 512; +- para->row_bits = 16; +- para->bank_bits = 2; ++ rank->page_size = 512; ++ rank->row_bits = 16; ++ rank->bank_bits = 2; + mctl_set_cr(socid, para); + +- for (para->row_bits = 11; para->row_bits < 16; para->row_bits++) +- if (mctl_mem_matches((1 << (para->row_bits + para->bank_bits)) * para->page_size)) ++ for (rank->row_bits = 11; rank->row_bits < 16; rank->row_bits++) ++ if (mctl_mem_matches_base((1 << (rank->row_bits + rank->bank_bits)) * rank->page_size, base)) + break; + + /* detect bank address bits */ +- para->bank_bits = 3; ++ rank->bank_bits = 3; + mctl_set_cr(socid, para); + +- for (para->bank_bits = 2; para->bank_bits < 3; para->bank_bits++) +- if (mctl_mem_matches((1 << para->bank_bits) * para->page_size)) ++ for (rank->bank_bits = 2; rank->bank_bits < 3; rank->bank_bits++) ++ if (mctl_mem_matches_base((1 << rank->bank_bits) * rank->page_size, base)) + break; + + /* detect page size */ +- para->page_size = 8192; ++ rank->page_size = 8192; + mctl_set_cr(socid, para); + +- for (para->page_size = 512; para->page_size < 8192; para->page_size *= 2) +- if (mctl_mem_matches(para->page_size)) ++ for (rank->page_size = 512; rank->page_size < 8192; rank->page_size *= 2) ++ if (mctl_mem_matches_base(rank->page_size, base)) + break; + } + ++static unsigned long mctl_calc_rank_size(struct rank_para *rank) ++{ ++ return (1UL << (rank->row_bits + rank->bank_bits)) * rank->page_size; ++} ++ ++static void mctl_auto_detect_dram_size(uint16_t socid, struct dram_para *para) ++{ ++ mctl_auto_detect_dram_size_rank(socid, para, (ulong)CONFIG_SYS_SDRAM_BASE, ¶->ranks[0]); ++ ++ if ((socid == SOCID_A64 || socid == SOCID_R40) && para->dual_rank) { ++ mctl_auto_detect_dram_size_rank(socid, para, (ulong)CONFIG_SYS_SDRAM_BASE + mctl_calc_rank_size(¶->ranks[0]), ¶->ranks[1]); ++ } ++} ++ + /* + * The actual values used here are taken from Allwinner provided boot0 + * binaries, though they are probably board specific, so would likely benefit +@@ -769,12 +805,23 @@ unsigned long sunxi_dram_init(void) + struct sunxi_mctl_ctl_reg * const mctl_ctl = + (struct sunxi_mctl_ctl_reg *)SUNXI_DRAM_CTL0_BASE; + ++ unsigned long size; ++ + struct dram_para para = { + .dual_rank = 1, + .bus_full_width = 1, +- .row_bits = 15, +- .bank_bits = 3, +- .page_size = 4096, ++ .ranks = { ++ { ++ .row_bits = 15, ++ .bank_bits = 3, ++ .page_size = 4096, ++ }, ++ { ++ .row_bits = 15, ++ .bank_bits = 3, ++ .page_size = 4096, ++ } ++ }, + + #if defined(CONFIG_MACH_SUN8I_H3) + .dx_read_delays = SUN8I_H3_DX_READ_DELAYS, +@@ -846,6 +893,13 @@ unsigned long sunxi_dram_init(void) + mctl_auto_detect_dram_size(socid, ¶); + mctl_set_cr(socid, ¶); + +- return (1UL << (para.row_bits + para.bank_bits)) * para.page_size * +- (para.dual_rank ? 2 : 1); ++ size = mctl_calc_rank_size(¶.ranks[0]); ++ if (socid == SOCID_A64 || socid == SOCID_R40) { ++ if (para.dual_rank) ++ size += mctl_calc_rank_size(¶.ranks[1]); ++ } else if (para.dual_rank) { ++ size *= 2; ++ } ++ ++ return size; + } diff --git a/uboot-tools.spec b/uboot-tools.spec index 17539a5..5660be2 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -2,7 +2,7 @@ Name: uboot-tools Version: 2021.04 -Release: 0.4%{?candidate:.%{candidate}}%{?dist} +Release: 0.5%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -22,6 +22,7 @@ Patch2: uefi-use-Fedora-specific-path-name.patch Patch3: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch # Board fixes and enablement +Patch9: 0001-Revert-efi_loader-consider-no-map-property-of-reserv.patch # AllWinner improvements Patch10: AllWinner-PineTab.patch # TI fixes @@ -30,6 +31,7 @@ Patch11: 0001-Fix-BeagleAI-detection.patch Patch12: rk3399-Pinebook-pro-EDP-support.patch # Fixes for Allwinner network issues Patch13: 0001-arm-dts-allwinner-sync-from-linux-for-RGMII-RX-TX-de.patch +Patch14: sunxi-support-asymmetric-dual-rank-DRAM-on-A64.patch BuildRequires: bc BuildRequires: dtc @@ -241,6 +243,10 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Sat Mar 13 2021 Peter Robinson - 2021.04-0.5.rc3 +- Fix for SMP on RPi3B and RPi3B+ +- Initial support for Pinephone 3Gb edition + * Mon Mar 08 2021 Peter Robinson - 2021.04-0.4.rc3 - Update to 2021.04 RC3 From 610279571ca60f430935dcd52c59e88fa8b3aa7d Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 17 Mar 2021 09:10:48 +0000 Subject: [PATCH 059/271] 2021.04 RC4, upstream rpi3 smp fix --- ...r-consider-no-map-property-of-reserv.patch | 82 ------------------- ...emory-type-for-memory-reservation-bl.patch | 38 +++++++++ sources | 2 +- uboot-tools.spec | 10 ++- 4 files changed, 46 insertions(+), 86 deletions(-) delete mode 100644 0001-Revert-efi_loader-consider-no-map-property-of-reserv.patch create mode 100644 0001-efi_loader-fix-memory-type-for-memory-reservation-bl.patch diff --git a/0001-Revert-efi_loader-consider-no-map-property-of-reserv.patch b/0001-Revert-efi_loader-consider-no-map-property-of-reserv.patch deleted file mode 100644 index 485f966..0000000 --- a/0001-Revert-efi_loader-consider-no-map-property-of-reserv.patch +++ /dev/null @@ -1,82 +0,0 @@ -From 62f3f85e50692b2685d1056a041d1dbb9e16f2a4 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Sat, 13 Mar 2021 14:42:29 +0000 -Subject: [PATCH] Revert: efi_loader: consider no-map property of reserved - memory - -This basically reverts 4cbb2930bd8c, but not directly as it's moved -about since. The patch breaks SMP on the Raspberry Pi 3 (original 3B -and 3B+) so on Linux only one CPU core comes online. I'm not exactly -sure why but a bisect idendified the patch and sure enough a revert -fixes the issue. - -Signed-off-by: Peter Robinson ---- - lib/efi_loader/efi_dt_fixup.c | 33 ++++++--------------------------- - 1 file changed, 6 insertions(+), 27 deletions(-) - -diff --git a/lib/efi_loader/efi_dt_fixup.c b/lib/efi_loader/efi_dt_fixup.c -index a4529ee3ef..87630f7857 100644 ---- a/lib/efi_loader/efi_dt_fixup.c -+++ b/lib/efi_loader/efi_dt_fixup.c -@@ -13,29 +13,13 @@ - - const efi_guid_t efi_guid_dt_fixup_protocol = EFI_DT_FIXUP_PROTOCOL_GUID; - --/** -- * efi_reserve_memory() - add reserved memory to memory map -- * -- * @addr: start address of the reserved memory range -- * @size: size of the reserved memory range -- * @nomap: indicates that the memory range shall not be accessed by the -- * UEFI payload -- */ --static void efi_reserve_memory(u64 addr, u64 size, bool nomap) -+static void efi_reserve_memory(u64 addr, u64 size) - { -- int type; -- efi_uintn_t ret; -- - /* Convert from sandbox address space. */ - addr = (uintptr_t)map_sysmem(addr, 0); -+ if (efi_add_memory_map(addr, size, -+ EFI_RESERVED_MEMORY_TYPE) != EFI_SUCCESS) - -- if (nomap) -- type = EFI_RESERVED_MEMORY_TYPE; -- else -- type = EFI_BOOT_SERVICES_DATA; -- -- ret = efi_add_memory_map(addr, size, type); -- if (ret != EFI_SUCCESS) - log_err("Reserved memory mapping failed addr %llx size %llx\n", - addr, size); - } -@@ -61,7 +45,7 @@ void efi_carve_out_dt_rsv(void *fdt) - for (i = 0; i < nr_rsv; i++) { - if (fdt_get_mem_rsv(fdt, i, &addr, &size) != 0) - continue; -- efi_reserve_memory(addr, size, false); -+ efi_reserve_memory(addr, size); - } - - /* process reserved-memory */ -@@ -81,13 +65,8 @@ void efi_carve_out_dt_rsv(void *fdt) - * a size instead of a reg property. - */ - if (fdt_addr != FDT_ADDR_T_NONE && -- fdtdec_get_is_enabled(fdt, subnode)) { -- bool nomap; -- -- nomap = !!fdt_getprop(fdt, subnode, "no-map", -- NULL); -- efi_reserve_memory(fdt_addr, fdt_size, nomap); -- } -+ fdtdec_get_is_enabled(fdt, subnode)) -+ efi_reserve_memory(fdt_addr, fdt_size); - subnode = fdt_next_subnode(fdt, subnode); - } - } --- -2.30.2 - diff --git a/0001-efi_loader-fix-memory-type-for-memory-reservation-bl.patch b/0001-efi_loader-fix-memory-type-for-memory-reservation-bl.patch new file mode 100644 index 0000000..4ca9f5d --- /dev/null +++ b/0001-efi_loader-fix-memory-type-for-memory-reservation-bl.patch @@ -0,0 +1,38 @@ +From ca1e8231dcf89b78c6860239281bbe36e7a63341 Mon Sep 17 00:00:00 2001 +From: Mark Kettenis +Date: Sun, 14 Mar 2021 20:04:24 +0100 +Subject: [PATCH] efi_loader: fix memory type for memory reservation block + +The devicetree specification clearly states that: + + As with the /reserved-memory node, when booting via UEFI + entries in the Memory Reservation Block must also be listed + in the system memory map obtained via the GetMemoryMap() toi + protect against allocations by UEFI applications. The memory + reservation block entries should be listed with type + EfiReservedMemoryType. + +This restores the behaviour that was changed by commit 4cbb2930bd8c +("efi_loader: consider no-map property of reserved memory"). + +Signed-off-by: Mark Kettenis +--- + lib/efi_loader/efi_dt_fixup.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/efi_loader/efi_dt_fixup.c b/lib/efi_loader/efi_dt_fixup.c +index a4529ee3ef..b6fe5d2e5a 100644 +--- a/lib/efi_loader/efi_dt_fixup.c ++++ b/lib/efi_loader/efi_dt_fixup.c +@@ -61,7 +61,7 @@ void efi_carve_out_dt_rsv(void *fdt) + for (i = 0; i < nr_rsv; i++) { + if (fdt_get_mem_rsv(fdt, i, &addr, &size) != 0) + continue; +- efi_reserve_memory(addr, size, false); ++ efi_reserve_memory(addr, size, true); + } + + /* process reserved-memory */ +-- +2.30.2 + diff --git a/sources b/sources index 6a0feed..7d286d7 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2021.04-rc3.tar.bz2) = 0d6b46b791475ce21320fbc2b361235d09588a5b912d40b32a11d937adc7c0e7b75b893ba4e8dc55156cfd99f684fc56839c17d0b9c021f5cfaaf5e5997f93ba +SHA512 (u-boot-2021.04-rc4.tar.bz2) = 522f9e7886a357ad573088fbbb4be17b91efedf5651808d7cbe53f4b3c4da236a96d5e781b8464d17bc6f961bd65cf3fb58d707bc7f10ce1df002800045cfd23 diff --git a/uboot-tools.spec b/uboot-tools.spec index 5660be2..28d5afb 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -%global candidate rc3 +%global candidate rc4 Name: uboot-tools Version: 2021.04 -Release: 0.5%{?candidate:.%{candidate}}%{?dist} +Release: 0.6%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -22,7 +22,7 @@ Patch2: uefi-use-Fedora-specific-path-name.patch Patch3: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch # Board fixes and enablement -Patch9: 0001-Revert-efi_loader-consider-no-map-property-of-reserv.patch +Patch9: 0001-efi_loader-fix-memory-type-for-memory-reservation-bl.patch # AllWinner improvements Patch10: AllWinner-PineTab.patch # TI fixes @@ -243,6 +243,10 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Wed Mar 17 2021 Peter Robinson - 2021.04-0.6.rc4 +- Update to 2021.04 RC4 +- Move to upstream fix for SMP on RPi3B and RPi3B+ + * Sat Mar 13 2021 Peter Robinson - 2021.04-0.5.rc3 - Fix for SMP on RPi3B and RPi3B+ - Initial support for Pinephone 3Gb edition From 060f78f396f1608e21a4cc3b9ae192d96596b52a Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 19 Apr 2021 14:07:58 +0100 Subject: [PATCH 060/271] 2021.04 GA, DTB load fix, add Turris Omnia, rockchip fixes --- ...emory-type-for-memory-reservation-bl.patch | 38 --- aarch64-boards | 1 - arm-boards | 2 +- ...-hang-when-multiple-controllers-exit.patch | 233 ++++++++++++++++++ rockchip-fix-mmc-numbering.patch | 57 +++++ rockchip-spl-u-boot-itb-offset.patch | 11 - sources | 2 +- uboot-tools.spec | 47 +++- ...DT-from-any-partition-on-boot-device.patch | 22 +- 9 files changed, 339 insertions(+), 74 deletions(-) delete mode 100644 0001-efi_loader-fix-memory-type-for-memory-reservation-bl.patch create mode 100644 phy-rockchip-inno-usb2-fix-hang-when-multiple-controllers-exit.patch create mode 100644 rockchip-fix-mmc-numbering.patch delete mode 100644 rockchip-spl-u-boot-itb-offset.patch diff --git a/0001-efi_loader-fix-memory-type-for-memory-reservation-bl.patch b/0001-efi_loader-fix-memory-type-for-memory-reservation-bl.patch deleted file mode 100644 index 4ca9f5d..0000000 --- a/0001-efi_loader-fix-memory-type-for-memory-reservation-bl.patch +++ /dev/null @@ -1,38 +0,0 @@ -From ca1e8231dcf89b78c6860239281bbe36e7a63341 Mon Sep 17 00:00:00 2001 -From: Mark Kettenis -Date: Sun, 14 Mar 2021 20:04:24 +0100 -Subject: [PATCH] efi_loader: fix memory type for memory reservation block - -The devicetree specification clearly states that: - - As with the /reserved-memory node, when booting via UEFI - entries in the Memory Reservation Block must also be listed - in the system memory map obtained via the GetMemoryMap() toi - protect against allocations by UEFI applications. The memory - reservation block entries should be listed with type - EfiReservedMemoryType. - -This restores the behaviour that was changed by commit 4cbb2930bd8c -("efi_loader: consider no-map property of reserved memory"). - -Signed-off-by: Mark Kettenis ---- - lib/efi_loader/efi_dt_fixup.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/efi_loader/efi_dt_fixup.c b/lib/efi_loader/efi_dt_fixup.c -index a4529ee3ef..b6fe5d2e5a 100644 ---- a/lib/efi_loader/efi_dt_fixup.c -+++ b/lib/efi_loader/efi_dt_fixup.c -@@ -61,7 +61,7 @@ void efi_carve_out_dt_rsv(void *fdt) - for (i = 0; i < nr_rsv; i++) { - if (fdt_get_mem_rsv(fdt, i, &addr, &size) != 0) - continue; -- efi_reserve_memory(addr, size, false); -+ efi_reserve_memory(addr, size, true); - } - - /* process reserved-memory */ --- -2.30.2 - diff --git a/aarch64-boards b/aarch64-boards index 1d81436..15abee1 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -5,7 +5,6 @@ bananapi_m64 beelink_gs1 dragonboard410c dragonboard820c -espresso7420 evb-rk3328 evb-rk3399 ficus-rk3399 diff --git a/arm-boards b/arm-boards index a2c8d89..63ab288 100644 --- a/arm-boards +++ b/arm-boards @@ -57,7 +57,6 @@ inet_q972 Itead_Ibox_A20 jesurun_q5 jetson-tk1 -kc1 Lamobo_R1 libretech_all_h3_cc_h2_plus Linksprite_pcDuino @@ -128,6 +127,7 @@ tbs_a711 tinker-rk3288 tinker-s-rk3288 trimslice +turris_omnia udoo udoo_neo usbarmory diff --git a/phy-rockchip-inno-usb2-fix-hang-when-multiple-controllers-exit.patch b/phy-rockchip-inno-usb2-fix-hang-when-multiple-controllers-exit.patch new file mode 100644 index 0000000..81f1cdb --- /dev/null +++ b/phy-rockchip-inno-usb2-fix-hang-when-multiple-controllers-exit.patch @@ -0,0 +1,233 @@ +From patchwork Tue Apr 6 15:10:59 2021 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Icenowy Zheng +X-Patchwork-Id: 1462876 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dkim=fail reason="signature verification failed" (1024-bit key; + unprotected) header.d=mymailcheap.com header.i=@mymailcheap.com + header.a=rsa-sha256 header.s=default header.b=unszVtqT; + dkim=fail reason="signature verification failed" (1024-bit key; + unprotected) header.d=aosc.io header.i=@aosc.io header.a=rsa-sha256 + header.s=default header.b=mWwYCh9A; + dkim-atps=neutral +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 RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4FF9wc3GdNz9sW1 + for ; Wed, 7 Apr 2021 01:11:42 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id C1F9C8040A; + Tue, 6 Apr 2021 17:11:32 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=aosc.io +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; + dkim=fail reason="signature verification failed" (1024-bit key; + unprotected) header.d=mymailcheap.com header.i=@mymailcheap.com + header.b="unszVtqT"; + dkim=fail reason="signature verification failed" (1024-bit key; + unprotected) header.d=aosc.io header.i=@aosc.io header.b="mWwYCh9A"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id E4F22805B4; Tue, 6 Apr 2021 17:11:30 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, + DKIM_VALID,DKIM_VALID_AU,SPF_HELO_NONE autolearn=ham + autolearn_force=no version=3.4.2 +Received: from relay3.mymailcheap.com (relay3.mymailcheap.com + [217.182.66.161]) + (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 2FC4A8039D + for ; Tue, 6 Apr 2021 17:11:27 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=aosc.io +Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=icenowy@aosc.io +Received: from filter2.mymailcheap.com (filter2.mymailcheap.com + [91.134.140.82]) + by relay3.mymailcheap.com (Postfix) with ESMTPS id A6AC13ECDF; + Tue, 6 Apr 2021 17:11:26 +0200 (CEST) +Received: from localhost (localhost [127.0.0.1]) + by filter2.mymailcheap.com (Postfix) with ESMTP id 88D512A915; + Tue, 6 Apr 2021 17:11:26 +0200 (CEST) +DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mymailcheap.com; + s=default; t=1617721886; + bh=qb5gt5o7M9qjdJd67A3WHGZp/76w4s4FS6+u1VuEh/o=; + h=From:To:Cc:Subject:Date:From; + b=unszVtqTnO9MGZVbgLH5H0cMo3VfQ+g5377blmOUcrtzMSqNbDD5SM25MUhlTUKiB + hTFq4L53gszBYfRPfh7Z5XgNVERULL5Zx0+WnVjZ7kUIp/wS3IQqxe81ChoFEsLTr8 + 22UB9NN3OSVkuN/jRAzX+lKpugVGBHwOCjZBZukQ= +Received: from filter2.mymailcheap.com ([127.0.0.1]) + by localhost (filter2.mymailcheap.com [127.0.0.1]) (amavisd-new, port 10024) + with ESMTP id V9lVOgo6gApH; Tue, 6 Apr 2021 17:11:25 +0200 (CEST) +Received: from mail20.mymailcheap.com (mail20.mymailcheap.com [51.83.111.147]) + (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by filter2.mymailcheap.com (Postfix) with ESMTPS; + Tue, 6 Apr 2021 17:11:25 +0200 (CEST) +Received: from [213.133.102.83] (ml.mymailcheap.com [213.133.102.83]) + by mail20.mymailcheap.com (Postfix) with ESMTP id C9EA3400B6; + Tue, 6 Apr 2021 15:11:24 +0000 (UTC) +Authentication-Results: mail20.mymailcheap.com; dkim=pass (1024-bit key; + unprotected) header.d=aosc.io header.i=@aosc.io header.b="mWwYCh9A"; + dkim-atps=neutral +AI-Spam-Status: Not processed +Received: from ice-e5v2.lan (unknown [59.41.163.135]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest + SHA256) (No client certificate requested) + by mail20.mymailcheap.com (Postfix) with ESMTPSA id 251F840C16; + Tue, 6 Apr 2021 15:11:10 +0000 (UTC) +DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=aosc.io; s=default; + t=1617721874; bh=qb5gt5o7M9qjdJd67A3WHGZp/76w4s4FS6+u1VuEh/o=; + h=From:To:Cc:Subject:Date:From; + b=mWwYCh9AM8eRWm9hiEqirytotj/G/C1p9r2fd0zUxPhS0UQH+kw6L3RWZnsfmXAYq + HmYFiM3ktIfwevqQw89tOi8c2ktb49iYOyHXkfi8hTZl1dNsJDS94uyzBiHYY+U7x5 + P0aTRRaL5C8ua2c1GedoPx06nrARO/KMEFy39rxI= +From: Icenowy Zheng +To: Simon Glass , Kever Yang , + Frank Wang , + Jagan Teki +Cc: u-boot@lists.denx.de, + Icenowy Zheng +Subject: [PATCH] phy: rockchip: inno-usb2: fix hang when multiple controllers + exit +Date: Tue, 6 Apr 2021 23:10:59 +0800 +Message-Id: <20210406151059.1187379-1-icenowy@aosc.io> +X-Mailer: git-send-email 2.30.2 +MIME-Version: 1.0 +X-Rspamd-Server: mail20.mymailcheap.com +X-Spamd-Result: default: False [4.90 / 20.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; + ARC_NA(0.00)[]; R_DKIM_ALLOW(0.00)[aosc.io:s=default]; + RECEIVED_SPAMHAUS_PBL(0.00)[59.41.163.135:received]; + FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; + R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; + MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[aosc.io]; + BROKEN_CONTENT_TYPE(1.50)[]; R_SPF_SOFTFAIL(0.00)[~all]; + RCPT_COUNT_FIVE(0.00)[6]; ML_SERVERS(-3.10)[213.133.102.83]; + DKIM_TRACE(0.00)[aosc.io:+]; MID_CONTAINS_FROM(1.00)[]; + RCVD_NO_TLS_LAST(0.10)[]; FROM_EQ_ENVFROM(0.00)[]; + MIME_TRACE(0.00)[0:+]; + ASN(0.00)[asn:24940, ipnet:213.133.96.0/19, country:DE]; + RCVD_COUNT_TWO(0.00)[2]; + HFILTER_HELO_BAREIP(3.00)[213.133.102.83,1] +X-Rspamd-Queue-Id: C9EA3400B6 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de +X-Virus-Status: Clean + +The OHCI and EHCI controllers are both bound to the same PHY. They will +both do init and power_on operations when the controller is brought up +and both do power_off and exit when the controller is stopped. However, +the PHY uclass of U-Boot is not as sane as we thought -- they won't +maintain a status mark for PHYs, and thus the functions of the PHYs +could be called for multiple times. Calling init/power_on for multiple +times have no severe problems, however calling power_off/exit for +multiple times have a problem -- the first exit call will stop the PHY +clock, and power_off/exit calls after it still trying to write to PHY +registers. The write operation to PHY registers will fail because clock +is already stopped. + +Adapt the count mechanism from phy-sun4i-usb to both init/exit and +power_on/power_off functions to phy-rockchip-inno-usb2 to fix this +problem. With this stopping USB controllers (manually or before booting +a kernel) will work. + +Signed-off-by: Icenowy Zheng +Fixes: ac97a9ece14e ("phy: rockchip: Add Rockchip USB2PHY driver") +--- + drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 21 +++++++++++++++++++ + 1 file changed, 21 insertions(+) + +diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c +index 62b8ba3a4a..be9cc99d90 100644 +--- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c ++++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c +@@ -62,6 +62,8 @@ struct rockchip_usb2phy { + void *reg_base; + struct clk phyclk; + const struct rockchip_usb2phy_cfg *phy_cfg; ++ int init_count; ++ int power_on_count; + }; + + static inline int property_enable(void *reg_base, +@@ -92,6 +94,10 @@ static int rockchip_usb2phy_power_on(struct phy *phy) + struct rockchip_usb2phy *priv = dev_get_priv(parent); + const struct rockchip_usb2phy_port_cfg *port_cfg = us2phy_get_port(phy); + ++ priv->power_on_count++; ++ if (priv->power_on_count != 1) ++ return 0; ++ + property_enable(priv->reg_base, &port_cfg->phy_sus, false); + + /* waiting for the utmi_clk to become stable */ +@@ -106,6 +112,10 @@ static int rockchip_usb2phy_power_off(struct phy *phy) + struct rockchip_usb2phy *priv = dev_get_priv(parent); + const struct rockchip_usb2phy_port_cfg *port_cfg = us2phy_get_port(phy); + ++ priv->power_on_count--; ++ if (priv->power_on_count != 0) ++ return 0; ++ + property_enable(priv->reg_base, &port_cfg->phy_sus, true); + + return 0; +@@ -118,6 +128,10 @@ static int rockchip_usb2phy_init(struct phy *phy) + const struct rockchip_usb2phy_port_cfg *port_cfg = us2phy_get_port(phy); + int ret; + ++ priv->init_count++; ++ if (priv->init_count != 1) ++ return 0; ++ + ret = clk_enable(&priv->phyclk); + if (ret) { + dev_err(phy->dev, "failed to enable phyclk (ret=%d)\n", ret); +@@ -140,6 +154,10 @@ static int rockchip_usb2phy_exit(struct phy *phy) + struct udevice *parent = dev_get_parent(phy->dev); + struct rockchip_usb2phy *priv = dev_get_priv(parent); + ++ priv->init_count--; ++ if (priv->init_count != 0) ++ return 0; ++ + clk_disable(&priv->phyclk); + + return 0; +@@ -212,6 +230,9 @@ static int rockchip_usb2phy_probe(struct udevice *dev) + return ret; + } + ++ priv->power_on_count = 0; ++ priv->init_count = 0; ++ + return 0; + } + diff --git a/rockchip-fix-mmc-numbering.patch b/rockchip-fix-mmc-numbering.patch new file mode 100644 index 0000000..b8569be --- /dev/null +++ b/rockchip-fix-mmc-numbering.patch @@ -0,0 +1,57 @@ +From 76162abd0252cc431abb19421436f34dd9703abe Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Mon, 19 Apr 2021 00:09:11 +0100 +Subject: [PATCH] arm: rockchip: fix mmc numbering + +Signed-off-by: Peter Robinson +--- + arch/arm/dts/rk3328.dtsi | 3 +++ + arch/arm/dts/rk3368.dtsi | 3 +++ + arch/arm/dts/rk3399.dtsi | 3 +++ + 3 files changed, 9 insertions(+) + +diff --git a/arch/arm/dts/rk3328.dtsi b/arch/arm/dts/rk3328.dtsi +index 945387e579..77a556d06f 100644 +--- a/arch/arm/dts/rk3328.dtsi ++++ b/arch/arm/dts/rk3328.dtsi +@@ -27,6 +27,9 @@ + i2c1 = &i2c1; + i2c2 = &i2c2; + i2c3 = &i2c3; ++ mmc0 = &sdmmc; ++ mmc1 = &sdio; ++ mmc2 = &emmc; + ethernet0 = &gmac2io; + ethernet1 = &gmac2phy; + }; +diff --git a/arch/arm/dts/rk3368.dtsi b/arch/arm/dts/rk3368.dtsi +index b4f4f6139d..55b5f6b2a7 100644 +--- a/arch/arm/dts/rk3368.dtsi ++++ b/arch/arm/dts/rk3368.dtsi +@@ -62,6 +62,9 @@ + i2c3 = &i2c3; + i2c4 = &i2c4; + i2c5 = &i2c5; ++ mmc0 = &sdmmc; ++ mmc1 = &sdio0; ++ mmc2 = &emmc; + serial0 = &uart0; + serial1 = &uart1; + serial2 = &uart2; +diff --git a/arch/arm/dts/rk3399.dtsi b/arch/arm/dts/rk3399.dtsi +index 74f2c3d490..5997c29bc8 100644 +--- a/arch/arm/dts/rk3399.dtsi ++++ b/arch/arm/dts/rk3399.dtsi +@@ -29,6 +29,9 @@ + i2c6 = &i2c6; + i2c7 = &i2c7; + i2c8 = &i2c8; ++ mmc0 = &sdmmc; ++ mmc1 = &sdio0; ++ mmc2 = &sdhci; + serial0 = &uart0; + serial1 = &uart1; + serial2 = &uart2; +-- +2.31.1 + diff --git a/rockchip-spl-u-boot-itb-offset.patch b/rockchip-spl-u-boot-itb-offset.patch deleted file mode 100644 index d78c2f2..0000000 --- a/rockchip-spl-u-boot-itb-offset.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- u-boot-2020.10/common/spl/Kconfig.orig 2020-10-07 12:08:54.972632715 +0100 -+++ u-boot-2020.10/common/spl/Kconfig 2020-10-07 12:08:59.100672506 +0100 -@@ -324,7 +324,7 @@ - default 0x200 if ARCH_SOCFPGA || ARCH_AT91 - default 0x300 if ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || OMAP44XX || \ - OMAP54XX || AM33XX || AM43XX || ARCH_K3 -- default 0x4000 if ARCH_ROCKCHIP -+ default 0x200 if ARCH_ROCKCHIP - default 0x822 if TARGET_SIFIVE_FU540 - help - Address on the MMC to load U-Boot from, when the MMC is being used diff --git a/sources b/sources index 7d286d7..0be2497 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2021.04-rc4.tar.bz2) = 522f9e7886a357ad573088fbbb4be17b91efedf5651808d7cbe53f4b3c4da236a96d5e781b8464d17bc6f961bd65cf3fb58d707bc7f10ce1df002800045cfd23 +SHA512 (u-boot-2021.04.tar.bz2) = c24835a520bfd528032614576ca552e55e6de129372e72e22e80e0d45dc5c1c75aa4aad80e856d5bbd7146ec092cac52a6f352253cf3fdf9fe536f5e87782803 diff --git a/uboot-tools.spec b/uboot-tools.spec index 28d5afb..8369af9 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -%global candidate rc4 +#global candidate rc1 Name: uboot-tools Version: 2021.04 -Release: 0.6%{?candidate:.%{candidate}}%{?dist} +Release: 1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -22,16 +22,17 @@ Patch2: uefi-use-Fedora-specific-path-name.patch Patch3: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch # Board fixes and enablement -Patch9: 0001-efi_loader-fix-memory-type-for-memory-reservation-bl.patch # AllWinner improvements Patch10: AllWinner-PineTab.patch # TI fixes Patch11: 0001-Fix-BeagleAI-detection.patch # Rockchips improvements Patch12: rk3399-Pinebook-pro-EDP-support.patch +Patch13: phy-rockchip-inno-usb2-fix-hang-when-multiple-controllers-exit.patch +Patch14: rockchip-fix-mmc-numbering.patch # Fixes for Allwinner network issues -Patch13: 0001-arm-dts-allwinner-sync-from-linux-for-RGMII-RX-TX-de.patch -Patch14: sunxi-support-asymmetric-dual-rank-DRAM-on-A64.patch +Patch15: 0001-arm-dts-allwinner-sync-from-linux-for-RGMII-RX-TX-de.patch +Patch16: sunxi-support-asymmetric-dual-rank-DRAM-on-A64.patch BuildRequires: bc BuildRequires: dtc @@ -97,11 +98,15 @@ mkdir builds %{?enable_devtoolset7:%{enable_devtoolset7}} %endif +%make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" tools-only_defconfig O=builds/ +%make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" tools-all O=builds/ + %ifarch aarch64 %{arm} for board in $(cat %{_arch}-boards) do echo "Building board: $board" mkdir builds/$(echo $board)/ + # ATF selection, needs improving, suggestions of ATF SoC to Board matrix welcome sun50i=(a64-olinuxino amarula_a64_relic bananapi_m2_plus_h5 bananapi_m64 libretech_all_h3_cc_h5 nanopi_a64 nanopi_neo2 nanopi_neo_plus2 orangepi_pc2 orangepi_prime orangepi_win orangepi_zero_plus orangepi_zero_plus2 pine64-lts pine64_plus pinebook pinephone pinetab sopine_baseboard teres_i) if [[ " ${sun50i[*]} " == *" $board "* ]]; then @@ -124,10 +129,18 @@ do cp /usr/share/arm-trusted-firmware/rk3399/* builds/$(echo $board)/ fi # End ATF + make $(echo $board)_defconfig O=builds/$(echo $board)/ %make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" O=builds/$(echo $board)/ + + # build spi images for rockchip boards with SPI flash + rkspi=(evb-rk3399 khadas-edge-captain-rk3399 khadas-edge-rk3399 khadas-edge-v-rk3399 nanopc-t4-rk3399 pinebook-pro-rk3399 rockpro64-rk3399) + if [[ " ${rkspi[*]} " == *" $board "* ]]; then + echo "Board: $board with SPI flash" + builds/$(echo $board)/tools/mkimage -n rk3399 -T rkspi -d builds/$(echo $board)/tpl/u-boot-tpl.bin:builds/$(echo $board)/spl/u-boot-spl.bin builds/$(echo $board)/idbloader.spi + fi # build spi, and uart images for mvebu boards - mvebu=(clearfog helios4) + mvebu=(clearfog helios4 turris_omnia) if [[ " ${mvebu[*]} " == *" $board "* ]]; then for target in spi uart do @@ -142,9 +155,6 @@ done %endif -%make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" tools-only_defconfig O=builds/ -%make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" tools-all O=builds/ - %install mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}%{_mandir}/man1 @@ -154,7 +164,7 @@ mkdir -p %{buildroot}%{_datadir}/uboot/ for board in $(ls builds) do mkdir -p %{buildroot}%{_datadir}/uboot/$(echo $board)/ - for file in u-boot.bin u-boot.dtb u-boot.img u-boot-dtb.img u-boot.itb u-boot-sunxi-with-spl.bin u-boot-rockchip.bin idbloader.img spl/boot.bin spl/sunxi-spl.bin + for file in u-boot.bin u-boot.dtb u-boot.img u-boot-dtb.img u-boot.itb u-boot-sunxi-with-spl.bin u-boot-rockchip.bin idbloader.img idbloader.spi spl/boot.bin spl/sunxi-spl.bin do if [ -f builds/$(echo $board)/$(echo $file) ]; then install -p -m 0644 builds/$(echo $board)/$(echo $file) %{buildroot}%{_datadir}/uboot/$(echo $board)/ @@ -173,14 +183,16 @@ do install -p -m 0644 builds/$(echo $board)/$(echo $file) %{buildroot}%{_datadir}/uboot/$(echo $board)/ fi done - done +%endif # Bit of a hack to remove binaries we don't use as they're large +%ifarch aarch64 %{arm} for board in $(ls builds) do + rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.dtb if [ -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot-sunxi-with-spl.bin ]; then - rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.* + rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot{,-dtb}.* fi if [ -f %{buildroot}%{_datadir}/uboot/$(echo $board)/MLO ]; then rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.bin @@ -195,6 +207,10 @@ do rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.* rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot-spl.bin fi + if [ -f %{buildroot}%{_datadir}/uboot/$(echo $board)/idbloader.img ]; then + rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.bin + rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot{,-dtb}.img + fi done %endif @@ -243,6 +259,13 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Sun Apr 18 2021 Peter Robinson - 2021.04-1 +- Update to 2021.04 GA +- Fix DTB load check (rhbz 1946278) +- Build Rockchip SPI support as idbloader.spi +- Fixes for Rockchip devices +- Build Turris Omnia for MMC/SPI/UART + * Wed Mar 17 2021 Peter Robinson - 2021.04-0.6.rc4 - Update to 2021.04 RC4 - Move to upstream fix for SMP on RPi3B and RPi3B+ diff --git a/uefi-distro-load-FDT-from-any-partition-on-boot-device.patch b/uefi-distro-load-FDT-from-any-partition-on-boot-device.patch index 39d6c20..c28fdb0 100644 --- a/uefi-distro-load-FDT-from-any-partition-on-boot-device.patch +++ b/uefi-distro-load-FDT-from-any-partition-on-boot-device.patch @@ -1,7 +1,7 @@ -From cc3700b5c65494547308df395fe63166ff48a1e3 Mon Sep 17 00:00:00 2001 +From fd3434c754b3b8dddb345352a2434b6b8445343a Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Tue, 24 Nov 2020 10:35:48 +0000 -Subject: [PATCH 1/2] distro: load FDT from any partition on boot device +Date: Sun, 18 Apr 2021 14:05:45 +0100 +Subject: [PATCH] distro: load FDT from any partition on boot device In the EFI_LOADER boot path, we were only checking the FAT partition containing the EFI payload for dtb files. But this is somewhat of a @@ -22,17 +22,19 @@ knows) and SoC/board specific ${fdtfile} (which grub does not know). Signed-off-by: Rob Clark Signed-off-by: Peter Robinson --- - include/config_distro_bootcmd.h | 33 +++++++++++++++++++++++---------- - 1 file changed, 23 insertions(+), 10 deletions(-) + include/config_distro_bootcmd.h | 35 ++++++++++++++++++++++----------- + 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h -index ff29ef5a905..769477cd80e 100644 +index 2627c2a6a5..eadd1080b3 100644 --- a/include/config_distro_bootcmd.h +++ b/include/config_distro_bootcmd.h -@@ -142,24 +142,37 @@ +@@ -148,26 +148,37 @@ + "fi\0" \ + \ "load_efi_dtb=" \ - "load ${devtype} ${devnum}:${distro_bootpart} " \ - "${fdt_addr_r} ${prefix}${efi_fdtfile}\0" \ +- "load ${devtype} ${devnum}:${distro_bootpart} " \ +- "${fdt_addr_r} ${prefix}${efi_fdtfile}\0" \ + "load ${devtype} ${devnum}:${dtb_devp} " \ + "${fdt_addr_r} ${prefix}${efi_fdtfile} && " \ + "run boot_efi_binary\0" \ @@ -78,5 +80,5 @@ index ff29ef5a905..769477cd80e 100644 "fi; " \ "setenv efi_fdtfile\0" -- -2.29.2 +2.31.1 From d512ddd572fdcc0778af359374319369199ef547 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 21 Apr 2021 16:20:29 +0100 Subject: [PATCH 061/271] fix keyboard regression but reverting upstream commit (rhbz 1946278) --- uboot-tools.spec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 8369af9..cf7658f 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -2,7 +2,7 @@ Name: uboot-tools Version: 2021.04 -Release: 1%{?candidate:.%{candidate}}%{?dist} +Release: 2%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -21,6 +21,8 @@ Patch2: uefi-use-Fedora-specific-path-name.patch # RPi - uses RPI firmware device tree for HAT support Patch3: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch +# Revert an upstream regression +Patch9: Revert-usb-kbd-destroy-device-after-console-is-stopp.patch # Board fixes and enablement # AllWinner improvements Patch10: AllWinner-PineTab.patch @@ -259,6 +261,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Wed Apr 21 2021 Peter Robinson - 2021.04-2 +- Revert keyboard console regression change (rhbz 1946278) + * Sun Apr 18 2021 Peter Robinson - 2021.04-1 - Update to 2021.04 GA - Fix DTB load check (rhbz 1946278) From b6c02ba2caa2ec5e5d0122ea2ef8a4030e525981 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 21 Apr 2021 16:20:56 +0100 Subject: [PATCH 062/271] add revert patch --- ...estroy-device-after-console-is-stopp.patch | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 Revert-usb-kbd-destroy-device-after-console-is-stopp.patch diff --git a/Revert-usb-kbd-destroy-device-after-console-is-stopp.patch b/Revert-usb-kbd-destroy-device-after-console-is-stopp.patch new file mode 100644 index 0000000..496b183 --- /dev/null +++ b/Revert-usb-kbd-destroy-device-after-console-is-stopp.patch @@ -0,0 +1,55 @@ +From 5cb853e7f78391595a0e3b01ef5dd877e169463b Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Wed, 21 Apr 2021 16:03:07 +0100 +Subject: [PATCH] Revert "usb: kbd: destroy device after console is stopped" + +This reverts commit eb5fd9e46c11ea41430d9c5bcc81d4583424216e. +--- + common/usb_kbd.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/common/usb_kbd.c b/common/usb_kbd.c +index afad260d3d..515f37136f 100644 +--- a/common/usb_kbd.c ++++ b/common/usb_kbd.c +@@ -622,12 +622,12 @@ int usb_kbd_deregister(int force) + if (dev) { + usb_kbd_dev = (struct usb_device *)dev->priv; + data = usb_kbd_dev->privptr; ++ if (stdio_deregister_dev(dev, force) != 0) ++ return 1; + #if CONFIG_IS_ENABLED(CONSOLE_MUX) +- if (iomux_replace_device(stdin, DEVNAME, force ? "nulldev" : "")) ++ if (iomux_doenv(stdin, env_get("stdin")) != 0) + return 1; + #endif +- if (stdio_deregister_dev(dev, force) != 0) +- return 1; + #ifdef CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE + destroy_int_queue(usb_kbd_dev, data->intq); + #endif +@@ -665,16 +665,16 @@ static int usb_kbd_remove(struct udevice *dev) + goto err; + } + data = udev->privptr; ++ if (stdio_deregister_dev(sdev, true)) { ++ ret = -EPERM; ++ goto err; ++ } + #if CONFIG_IS_ENABLED(CONSOLE_MUX) +- if (iomux_replace_device(stdin, DEVNAME, "nulldev")) { ++ if (iomux_doenv(stdin, env_get("stdin"))) { + ret = -ENOLINK; + goto err; + } + #endif +- if (stdio_deregister_dev(sdev, true)) { +- ret = -EPERM; +- goto err; +- } + #ifdef CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE + destroy_int_queue(udev, data->intq); + #endif +-- +2.31.1 + From 6209cab21ad85061b66d6be412c5f445b05b3995 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 28 Apr 2021 22:49:10 +0100 Subject: [PATCH 063/271] Upstream fix for console regression, Fix for fallback.efi crash --- ...fer-overflow-in-iomux_replace_device.patch | 152 +++++++++++++ ...estroy-device-after-console-is-stopp.patch | 55 ----- ...parameter-check-in-efi_file_read_int.patch | 211 ++++++++++++++++++ uboot-tools.spec | 12 +- uefi-use-Fedora-specific-path-name.patch | 50 ----- 5 files changed, 371 insertions(+), 109 deletions(-) create mode 100644 IOMUX-Fix-buffer-overflow-in-iomux_replace_device.patch delete mode 100644 Revert-usb-kbd-destroy-device-after-console-is-stopp.patch create mode 100644 efi_loader-loosen-buffer-parameter-check-in-efi_file_read_int.patch delete mode 100644 uefi-use-Fedora-specific-path-name.patch diff --git a/IOMUX-Fix-buffer-overflow-in-iomux_replace_device.patch b/IOMUX-Fix-buffer-overflow-in-iomux_replace_device.patch new file mode 100644 index 0000000..d2c55f6 --- /dev/null +++ b/IOMUX-Fix-buffer-overflow-in-iomux_replace_device.patch @@ -0,0 +1,152 @@ +From patchwork Sun Apr 25 23:08:03 2021 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Yuichiro Goto +X-Patchwork-Id: 1470141 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dkim=pass (2048-bit key; + unprotected) header.d=k-tech-co-jp.20150623.gappssmtp.com + header.i=@k-tech-co-jp.20150623.gappssmtp.com header.a=rsa-sha256 + header.s=20150623 header.b=aG2evrkI; + dkim-atps=neutral +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4FT3cr5pLLz9sV5 + for ; Mon, 26 Apr 2021 09:09:16 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id DAAE481FCD; + Mon, 26 Apr 2021 01:09:09 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=k-tech.co.jp +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=k-tech-co-jp.20150623.gappssmtp.com + header.i=@k-tech-co-jp.20150623.gappssmtp.com header.b="aG2evrkI"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 1971382057; Mon, 26 Apr 2021 01:09:06 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, + DKIM_VALID,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-pf1-x42a.google.com (mail-pf1-x42a.google.com + [IPv6:2607:f8b0: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 E883680EC1 + for ; Mon, 26 Apr 2021 01:09:00 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=k-tech.co.jp +Authentication-Results: phobos.denx.de; + spf=none smtp.mailfrom=goto@k-tech.co.jp +Received: by mail-pf1-x42a.google.com with SMTP id h11so6707950pfn.0 + for ; Sun, 25 Apr 2021 16:09:00 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=k-tech-co-jp.20150623.gappssmtp.com; s=20150623; + h=from:to:cc:subject:date:message-id; + bh=ToYmsqKBzr3zTVvJdRjIX1oCqkuII+g2LxuLKTcyCm4=; + b=aG2evrkIlEWR+2+O4uf7Z5Z5dADCoHUqUfa4wv2uGZq16LXSZXAfr96QVEaI+Ysrq9 + S1Wd+94g29kp+qnFc4wLcMUomaZnm0eH+oliBgyqOH/LAB8n7c8avUhcTMJA60McRjeb + lMsHOX4LwDCbN9Nem+kDEPLIGsYIlg4bQczceWdlw5oHTMNRrj3uqSx1S52Y2xVo9Tl2 + fGiB75T4OGHlO+4ZfXl6Ky1Q6j8eRAp0ysfO9ZY/SjDd8dFowmDn8nCU3Bmy4boJaiK9 + uBxgI8S7h0uSltG+o8KcszPN/fpi2H8oBFuia8kJ1X/mrQ9AK4+n9jA4m5XlsXuyJYon + NSNA== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20161025; + h=x-gm-message-state:from:to:cc:subject:date:message-id; + bh=ToYmsqKBzr3zTVvJdRjIX1oCqkuII+g2LxuLKTcyCm4=; + b=idcco1cmfR9jg46QoNPi2i5Xp7KywMSugg82Gr+a6q2d+z8Y0bAWm69vVvCv27OuBe + EqSikfaPx616hVlE2JSRYhiQjTAkRivx+HbZTOo88Ud3nFuZSye7IzWVgTJQfYeMwk2t + ur3IC3wNHP8ZJZd7/ncR5bQtEH1dnQnntzZ/ObcQ2qYD7tE8i3XirP+t6bEXgfve6l3z + h8uhRhUdonx3My77SfoguPZ7agogNuJwKDxEOv2AiQC+sgi6hMSoCM5I/CTY5XBXWBcG + DsVq6CFis7XI0q4vT+fJnobTZcY+apdx6CQgbTHscvNNANNVQTcW4AmZtdMU00Py7rwl + +dlw== +X-Gm-Message-State: AOAM530gSI6IYWTUQZeEHkOvsFu+rBGyB3fBUHY4LPk43shM1KC4uXnK + KlhhaOqM5unov+ya4+knemWrDiRXPLvgHgVJ +X-Google-Smtp-Source: + ABdhPJz3Z6j4z6TV4bjvrr75pCyOMhSLC37qICUXTZOgOyojVAW7AH0TT24BTcUVdx8V5n2RwnQzBA== +X-Received: by 2002:a62:8c8c:0:b029:253:31e:55cb with SMTP id + m134-20020a628c8c0000b0290253031e55cbmr14541132pfd.27.1619392138942; + Sun, 25 Apr 2021 16:08:58 -0700 (PDT) +Received: from lubuntu1804.flets-east.jp (p1086-maru1shinjuku.tokyo.ocn.ne.jp. + [61.208.220.86]) + by smtp.gmail.com with ESMTPSA id i63sm9669769pfg.112.2021.04.25.16.08.57 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Sun, 25 Apr 2021 16:08:58 -0700 (PDT) +From: Yuichiro Goto +To: u-boot@lists.denx.de +Cc: Yuichiro Goto , Peter Robinson , + Andy Shevchenko , + Nicolas Saenz Julienne +Subject: [PATCH v3] IOMUX: Fix buffer overflow in iomux_replace_device() +Date: Mon, 26 Apr 2021 08:08:03 +0900 +Message-Id: <20210425230803.3055-1-goto@k-tech.co.jp> +X-Mailer: git-send-email 2.17.1 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de +X-Virus-Status: Clean + +Use of strcat() against an uninitialized buffer would lead +to buffer overflow. This patch fixes it. + +Fixes: 694cd5618c ("IOMUX: Introduce iomux_replace_device()") +Signed-off-by: Yuichiro Goto +Cc: Peter Robinson +Cc: Andy Shevchenko +Cc: Nicolas Saenz Julienne +Reviewed-by: Andy Shevchenko +--- + +Changes for v3: +- Add a Fixes tag in commit message +- Refactor the patch per suggestion from Andy Shevchenko + +Changes for v2: +- Add "IOMUX" in title + + common/iomux.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/common/iomux.c b/common/iomux.c +index b9088aa3b5..c428f7110a 100644 +--- a/common/iomux.c ++++ b/common/iomux.c +@@ -158,8 +158,12 @@ int iomux_replace_device(const int console, const char *old, const char *new) + return -ENOMEM; + } + +- strcat(tmp, ","); +- strcat(tmp, name); ++ if (arg) { ++ strcat(tmp, ","); ++ strcat(tmp, name); ++ } ++ else ++ strcpy(tmp, name); + + arg = tmp; + size = strlen(tmp) + 1; diff --git a/Revert-usb-kbd-destroy-device-after-console-is-stopp.patch b/Revert-usb-kbd-destroy-device-after-console-is-stopp.patch deleted file mode 100644 index 496b183..0000000 --- a/Revert-usb-kbd-destroy-device-after-console-is-stopp.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 5cb853e7f78391595a0e3b01ef5dd877e169463b Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Wed, 21 Apr 2021 16:03:07 +0100 -Subject: [PATCH] Revert "usb: kbd: destroy device after console is stopped" - -This reverts commit eb5fd9e46c11ea41430d9c5bcc81d4583424216e. ---- - common/usb_kbd.c | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) - -diff --git a/common/usb_kbd.c b/common/usb_kbd.c -index afad260d3d..515f37136f 100644 ---- a/common/usb_kbd.c -+++ b/common/usb_kbd.c -@@ -622,12 +622,12 @@ int usb_kbd_deregister(int force) - if (dev) { - usb_kbd_dev = (struct usb_device *)dev->priv; - data = usb_kbd_dev->privptr; -+ if (stdio_deregister_dev(dev, force) != 0) -+ return 1; - #if CONFIG_IS_ENABLED(CONSOLE_MUX) -- if (iomux_replace_device(stdin, DEVNAME, force ? "nulldev" : "")) -+ if (iomux_doenv(stdin, env_get("stdin")) != 0) - return 1; - #endif -- if (stdio_deregister_dev(dev, force) != 0) -- return 1; - #ifdef CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE - destroy_int_queue(usb_kbd_dev, data->intq); - #endif -@@ -665,16 +665,16 @@ static int usb_kbd_remove(struct udevice *dev) - goto err; - } - data = udev->privptr; -+ if (stdio_deregister_dev(sdev, true)) { -+ ret = -EPERM; -+ goto err; -+ } - #if CONFIG_IS_ENABLED(CONSOLE_MUX) -- if (iomux_replace_device(stdin, DEVNAME, "nulldev")) { -+ if (iomux_doenv(stdin, env_get("stdin"))) { - ret = -ENOLINK; - goto err; - } - #endif -- if (stdio_deregister_dev(sdev, true)) { -- ret = -EPERM; -- goto err; -- } - #ifdef CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE - destroy_int_queue(udev, data->intq); - #endif --- -2.31.1 - diff --git a/efi_loader-loosen-buffer-parameter-check-in-efi_file_read_int.patch b/efi_loader-loosen-buffer-parameter-check-in-efi_file_read_int.patch new file mode 100644 index 0000000..b221ddd --- /dev/null +++ b/efi_loader-loosen-buffer-parameter-check-in-efi_file_read_int.patch @@ -0,0 +1,211 @@ +From patchwork Wed Apr 28 13:54:01 2021 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 8bit +X-Patchwork-Submitter: "Peng Fan (OSS)" +X-Patchwork-Id: 1471143 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dkim=pass (1024-bit key; + unprotected) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com + header.a=rsa-sha256 header.s=selector2-NXP1-onmicrosoft-com + header.b=Y9LhgRit; + dkim-atps=neutral +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4FVfRz6xNvz9sW6 + for ; Wed, 28 Apr 2021 23:22:07 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 0143180EC0; + Wed, 28 Apr 2021 15:22:01 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=oss.nxp.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; + dkim=pass (1024-bit key; + unprotected) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com + header.b="Y9LhgRit"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 11DCC80EC0; Wed, 28 Apr 2021 15:22:00 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-0.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, + DKIM_VALID,FORGED_SPF_HELO,MSGID_FROM_MTA_HEADER,SPF_HELO_PASS + autolearn=no autolearn_force=no version=3.4.2 +Received: from EUR05-VI1-obe.outbound.protection.outlook.com + (mail-vi1eur05on20614.outbound.protection.outlook.com + [IPv6:2a01:111:f400:7d00::614]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id BF2AE82BB2 + for ; Wed, 28 Apr 2021 15:21:56 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=oss.nxp.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=peng.fan@oss.nxp.com +ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; + b=Ykl/b+bOscXPccjkBLrnNZ64DLu+6jcykHxXg6zp1iRDn9PjYn5sAB9UzpDwBH/KBFvrw3JDaJE3H5KE1MYt/qTuXtPsUxfuHlok2cGYHW9QtYf5hVHXeWQ2CEuFUsTXn0wkc/UWBAqubidQx/AHfKQCT2TtJgSzsiaS+s0Q4xEfkByM49AF5KbOQ9dfEBqQgcpjjCPO5870sdVmZGUbHH2Alvo3NxlPP1gWLM0yVNN33b5BUxMiBgkiycAt1eN1V5lqmhkzB2i8LrKv8X+8P9n41oowUuqt0Qaai6eYOhg+bhNaZbrEUdcI47KRm5hpg1pk0sYYw+IeXo4P9EmhGg== +ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; + s=arcselector9901; + h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; + bh=Jvu1xYFUKJO/uJlsI76lQFrPlpRTiU+rjukLralExi8=; + b=fZLxEM4upa8xSPDRUr7ha1FAI2UY44OO4z3vEc15uhQcMMwddhIvqbEAMyJ9CfOjnAN3K8FzmE8uZAb5U7qqT9NqOlK0sVsPLb6rXRAIlj2lDUoPPwQ0LAzKA1A8ADxTEGJZhcy+s60JQ2mmPMgg8wf7ybi3YOHnV972Ai8EJT0dCJeEMbWJ2CjRtWZqpLyDujovr8w82q2vXpFPXMp/krwklqtTdlGxgKP9ZMU+2n0SGvqBTcXts/cE+XxraFrOTth/rdLrqKtKXGjbGGN9bW0cNJWzmYMFBwR8oU27Ygr0FZ7GFqW7pGdPaGkfjsbkqvS+8P9/4qBo208dUryMZg== +ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass + smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; + dkim=pass header.d=oss.nxp.com; arc=none +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; + s=selector2-NXP1-onmicrosoft-com; + h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; + bh=Jvu1xYFUKJO/uJlsI76lQFrPlpRTiU+rjukLralExi8=; + b=Y9LhgRit5KPyFtT5AVfHzHnlc9O6Ssk9T3mI7BThr15G7JYL8xyLUH1Yx3UmVl57Rvgz1z8yMTCtLyhHB3Xbw82ysiOO8JpHAM1U20AXO2mAew0td3xOPWJ7aDBS2NBdGmkM4PG9WfYlpl8TzsMDJNfjpNWiID6ykA2/FGS3Krg= +Authentication-Results: gmx.de; dkim=none (message not signed) + header.d=none;gmx.de; dmarc=none action=none header.from=oss.nxp.com; +Received: from AM5PR0402MB2756.eurprd04.prod.outlook.com + (2603:10a6:203:99::22) by AM6PR0402MB3525.eurprd04.prod.outlook.com + (2603:10a6:209:4::14) with Microsoft SMTP Server (version=TLS1_2, + cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.25; Wed, 28 Apr + 2021 13:21:55 +0000 +Received: from AM5PR0402MB2756.eurprd04.prod.outlook.com + ([fe80::b158:2ae5:f2d1:7142]) by AM5PR0402MB2756.eurprd04.prod.outlook.com + ([fe80::b158:2ae5:f2d1:7142%9]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 + 13:21:55 +0000 +From: "Peng Fan (OSS)" +To: xypron.glpk@gmx.de, + agraf@csgraf.de +Cc: u-boot@lists.denx.de, pbrobinson@redhat.com, grant.likely@arm.com, + Peng Fan , + =?utf-8?q?Stefan_S=C3=B8rensen?= , + Peter Robinson +Subject: [PATCH V2] efi_loader: loosen buffer parameter check in + efi_file_read_int +Date: Wed, 28 Apr 2021 21:54:01 +0800 +Message-Id: <20210428135401.22365-1-peng.fan@oss.nxp.com> +X-Mailer: git-send-email 2.30.0 +X-Originating-IP: [119.31.174.71] +X-ClientProxiedBy: HK2PR0302CA0020.apcprd03.prod.outlook.com + (2603:1096:202::30) To AM5PR0402MB2756.eurprd04.prod.outlook.com + (2603:10a6:203:99::22) +MIME-Version: 1.0 +X-MS-Exchange-MessageSentRepresentingType: 1 +Received: from linux-1xn6.ap.freescale.net (119.31.174.71) by + HK2PR0302CA0020.apcprd03.prod.outlook.com (2603:1096:202::30) with Microsoft + SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id + 15.20.4087.16 via Frontend Transport; Wed, 28 Apr 2021 13:21:52 +0000 +X-MS-PublicTrafficType: Email +X-MS-Office365-Filtering-Correlation-Id: d16d4712-33ca-4f2f-49cf-08d90a489784 +X-MS-TrafficTypeDiagnostic: AM6PR0402MB3525: +X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True +X-MS-Exchange-Transport-Forked: True +X-Microsoft-Antispam-PRVS: + +X-MS-Oob-TLC-OOBClassifiers: OLM:1091; +X-MS-Exchange-SenderADCheck: 1 +X-Microsoft-Antispam: BCL:0; +X-Microsoft-Antispam-Message-Info: + R8IIzR87BJ9qITheAW0/6SscIznIBDQntrQKYiITRtr3RZNBHPGuiexfqYuAABypLYa20Kpjk8qwFtkVl5Wv9zswD2NHqy5w+BU9PNQDIw5/spSSuSNZKUBD9L1rsFxNX+pluafaP2yEzJ09OmA1rGVbLC8uc0VtwPFvuyXoPYvMI8nbxEuX8eVVs8oz6i8qTLMzAKJS7PgYVwBQQjkqPEAwfnkSibtgFyy2rBjeD18PGmRSKqwkNWkO7w3bBkj/7Zor9h/8j8w07q+Iq/ZU1Mlbm8USlj2VCmhqkJddRE7/Jj0NMfQLQJ3zZABeONnYzgAUfyXXQb4sxuuM+nqRwyW/oASjsumXU4sApadRppYdLqA2uxrvM7HduDA16u1YIOc7exaHsHSuZm3p0jnKSbUkDWki3YwYZYKuOSAhwVnxIFzdFO331d/JoJnvCPulh43Bf2ndcJ+Fi6UK/BPtUCHjzSvXm5SWO2YlsNW6EAQf/teSOpYzo6jQT3QLS5InHcfHTUBcF7z7679ht2IGrNZZc2gq/Z5eCppzp33pHTx+R+wqWt+vDU8+iho2jR4+UoTTC2VanZ8dprckWpPXxgtPq6ZbkmFKjdql5ZZWwMfKu/0DaKI+T0Qcrgo5BUNETfCuDu48gBkMrs+ewk5JWR4u9Dwgq605ea1ydic2+X7SoTc/ZQ1mnr+P5IBaTsdJxE4rLVKGAo5HZcS7X6t2b9RSQz2CTskNOlg9t+2XE0zvDc19T8CF6rTS8DkG4yQa +X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; + IPV:NLI; SFV:NSPM; H:AM5PR0402MB2756.eurprd04.prod.outlook.com; PTR:; + CAT:NONE; + SFS:(4636009)(136003)(39860400002)(376002)(366004)(396003)(346002)(38100700002)(38350700002)(478600001)(5660300002)(6506007)(6666004)(66574015)(26005)(6486002)(86362001)(956004)(66476007)(2906002)(16526019)(83380400001)(6512007)(1076003)(8676002)(966005)(54906003)(186003)(52116002)(66556008)(66946007)(4326008)(316002)(2616005)(8936002); + DIR:OUT; SFP:1101; +X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?mYfVlOJMJVsoKYMLc92rFnaCTR+XLQ?= + =?utf-8?q?NE9Fknv0C/Xkfupn634/z0PDINPn1vwI7UBh2GXDundoV+tDpV3/J9Ao+ZaklGBv/?= + =?utf-8?q?35YvbogOLThhUOpbrxM2+PmyMASh2BwZQm4j3DtGuxerW2benG82zAGjtAJ70va+R?= + =?utf-8?q?fdHJfMOIDL+Oxkvqa8F1tiAWyVebMmTb9LvZQdnkJtClzsGEsN7JuXzN5zAG9JnDk?= + =?utf-8?q?ptt4s0xR8Tngwj+0ktYv/WIYfWbyVRKt2cGY+IbfGzOgHeeR/6msyKEXY6EKxdrGp?= + =?utf-8?q?ddqp/uOGuH2BlhbQtqWthQJBCUI+HaR7mZgiEJctgT+rWAgDrZMTtvzQT/2TTs+4L?= + =?utf-8?q?Pqu1h8tKSW3diXo+rqN1splk5PQ0rbM9pPZECBGS/9KWkqZOCtKtGQWbDf1N4t/tX?= + =?utf-8?q?jJ+JS/eOy0dBvhEmZ6tbCB5HpkLj/GbwlXsIm6aJbCXmd7hGzt+B9avRbm6uYmrHx?= + =?utf-8?q?xMBLr/kYUvivhGCUqFEuApHEUlG6yVU6rFPTtzXtE9aYWlsF+IFI0YAUfgmi5X3c4?= + =?utf-8?q?fvpdyhxyz0g5S58VT2SXLiBxvhwRX/5stsFvKurZjoTi5m7GkFJlzD3JpY5tikAgx?= + =?utf-8?q?S48dfUkcZRBLJKtpJln7kGQ4yCyuxkJfyN+4VDmIEUQgWmSGwo0Z77B/A1lYejj+p?= + =?utf-8?q?oC8BhkvFUTynlVzcft9BNfW3rQaTOoNFmU3wiIqRxDzWZfkL3tZroLTZJnDN6KOrK?= + =?utf-8?q?2xERgFeiItx0xafXIOmUEnPoWUY1jtqv7qdVGy2HyJ6Us3tI8KNIL/Ezl9Cl9Wm8F?= + =?utf-8?q?Rh/qZG13p7g11rt+6Bue1jxVckObYlnLPUzuAa2ZzqB1gZjXKKXDgS9eSsr+1aDjv?= + =?utf-8?q?0MZCYmHZIBgmkKI0oNiqOWuzYI3T3ofJ2RT1TKthFErEJu0dZAZH1O2YxGlEpXKzH?= + =?utf-8?q?eahQ8Zr/xhS85QykeKLXr+XKvURNH/yiY4KETT/kTq5BXPjIDIHtKaa3UnE8DTaew?= + =?utf-8?q?aqy7YoDaolXatDKpuLa9E9CwRbrN2D38XwteMWDd5zCLvLZ+g7+pUjtqyoHs5lXbv?= + =?utf-8?q?Tqb2DmK8tr3nMHzx5370ZV+bfbKvyqEECHE+AyXyb94GtEQaYgatdcI61SuVO82ZW?= + =?utf-8?q?imQgBtq9BAdYABcHPMBpe4BuiQZRO2VdwtaUrLAZc4xyFTPnrnqM0ajr5/9bMQ4Qd?= + =?utf-8?q?Ar+eZL4d88AuBRbax/JmKGSxLCxUVyAjXtrcEnoibNf1yLZlcgAp8kEaK1mMOh2B7?= + =?utf-8?q?UflHobGwDKQKgP5I34mBssnm96TCDU6t+rHhProt6OgOKQPoQ5gmKvQx5CBsVuTA0?= + =?utf-8?q?3gJ4gCfW4myFky?= +X-OriginatorOrg: oss.nxp.com +X-MS-Exchange-CrossTenant-Network-Message-Id: + d16d4712-33ca-4f2f-49cf-08d90a489784 +X-MS-Exchange-CrossTenant-AuthSource: + AM5PR0402MB2756.eurprd04.prod.outlook.com +X-MS-Exchange-CrossTenant-AuthAs: Internal +X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 13:21:54.9886 (UTC) +X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted +X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 +X-MS-Exchange-CrossTenant-MailboxType: HOSTED +X-MS-Exchange-CrossTenant-UserPrincipalName: + kJtC/i3wLmUtXCoTbf/Jg1qhdz4MvWusai7Piwigv6OEGOknbKvDpIUrRwJMUXhNsSApid+ni8lC5sO+x5y30w== +X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR0402MB3525 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de +X-Virus-Status: Clean + +From: Peng Fan + +This is same issue as https://bugzilla.redhat.com/show_bug.cgi?id=1733817, +but that fix was wrongly partial reverted. + +When reading a directory, EFI_BUFFER_TOO_SMALL should be returned when +the supplied buffer is too small, so a use-case is to call +EFI_FILE_PROTOCOL.Read() with *buffer_size=0 and buffer=NULL to +obtain the needed size before doing the actual read. + +So remove the check only for directory reading, file reading already +do the check by itself. + +Fixes: db12f518edb0("efi_loader: implement non-blocking file services") +Cc: Heinrich Schuchardt +Cc: Stefan Sørensen +Tested-by: Peter Robinson +Signed-off-by: Peng Fan +--- + +V2: + Update commit log Per Heinrich's comments. + Add T-b tag + + lib/efi_loader/efi_file.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/efi_loader/efi_file.c b/lib/efi_loader/efi_file.c +index 204105e25a..6b3f5962be 100644 +--- a/lib/efi_loader/efi_file.c ++++ b/lib/efi_loader/efi_file.c +@@ -554,7 +554,7 @@ static efi_status_t efi_file_read_int(struct efi_file_handle *this, + efi_status_t ret = EFI_SUCCESS; + u64 bs; + +- if (!this || !buffer_size || !buffer) ++ if (!this || !buffer_size) + return EFI_INVALID_PARAMETER; + + bs = *buffer_size; diff --git a/uboot-tools.spec b/uboot-tools.spec index cf7658f..3176c3a 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -2,7 +2,7 @@ Name: uboot-tools Version: 2021.04 -Release: 2%{?candidate:.%{candidate}}%{?dist} +Release: 3%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -16,13 +16,13 @@ Source4: aarch64-chromebooks # Fedoraisms patches # Needed to find DT on boot partition that's not the first partition Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch -# Needed due to issues with shim -Patch2: uefi-use-Fedora-specific-path-name.patch +# https://lists.denx.de/pipermail/u-boot/2021-April/448260.html +Patch2: efi_loader-loosen-buffer-parameter-check-in-efi_file_read_int.patch # RPi - uses RPI firmware device tree for HAT support Patch3: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch # Revert an upstream regression -Patch9: Revert-usb-kbd-destroy-device-after-console-is-stopp.patch +Patch9: IOMUX-Fix-buffer-overflow-in-iomux_replace_device.patch # Board fixes and enablement # AllWinner improvements Patch10: AllWinner-PineTab.patch @@ -261,6 +261,10 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Wed Apr 28 2021 Peter Robinson - 2021.04-3 +- Upstream fix for console regression (rhbz 1946278) +- Fix for fallback.efi crash (rhbz 1733817) + * Wed Apr 21 2021 Peter Robinson - 2021.04-2 - Revert keyboard console regression change (rhbz 1946278) diff --git a/uefi-use-Fedora-specific-path-name.patch b/uefi-use-Fedora-specific-path-name.patch deleted file mode 100644 index 5417866..0000000 --- a/uefi-use-Fedora-specific-path-name.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 308c4ac71c439b483bd69ed9e387cc1a56566af9 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Mon, 8 Feb 2021 10:11:39 +0000 -Subject: [PATCH] use Fedora specific EFI path/name - -Signed-off-by: Peter Robinson ---- - include/config_distro_bootcmd.h | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h -index 3d186b6d20..eda57e1707 100644 ---- a/include/config_distro_bootcmd.h -+++ b/include/config_distro_bootcmd.h -@@ -92,9 +92,9 @@ - - #ifdef CONFIG_EFI_LOADER - #if defined(CONFIG_ARM64) --#define BOOTEFI_NAME "bootaa64.efi" -+#define BOOTEFI_NAME "grubaa64.efi" - #elif defined(CONFIG_ARM) --#define BOOTEFI_NAME "bootarm.efi" -+#define BOOTEFI_NAME "grubarm.efi" - #elif defined(CONFIG_X86_RUN_32BIT) - #define BOOTEFI_NAME "bootia32.efi" - #elif defined(CONFIG_X86_RUN_64BIT) -@@ -140,7 +140,7 @@ - \ - "boot_efi_binary=" \ - "load ${devtype} ${devnum}:${distro_bootpart} " \ -- "${kernel_addr_r} efi/boot/"BOOTEFI_NAME"; " \ -+ "${kernel_addr_r} efi/fedora/"BOOTEFI_NAME"; " \ - "if fdt addr ${fdt_addr_r}; then " \ - "bootefi ${kernel_addr_r} ${fdt_addr_r};" \ - "else " \ -@@ -177,9 +177,9 @@ - "run boot_efi_binary\0" \ - "scan_dev_for_efi=" \ - "if test -e ${devtype} ${devnum}:${distro_bootpart} " \ -- "efi/boot/"BOOTEFI_NAME"; then " \ -+ "efi/fedora/"BOOTEFI_NAME"; then " \ - "echo Found EFI removable media binary " \ -- "efi/boot/"BOOTEFI_NAME"; " \ -+ "efi/fedora/"BOOTEFI_NAME"; " \ - "run scan_dev_for_dtb; " \ - "echo EFI LOAD FAILED: continuing...; " \ - "fi; " \ --- -2.29.2 - From d6fc5ecb4bd897b99b99609fcfe708d369a96daf Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 10 May 2021 22:20:20 +0100 Subject: [PATCH 064/271] 2021.07 RC2 --- ...r-sync-from-linux-for-RGMII-RX-TX-de.patch | 2977 ----------------- ...fer-overflow-in-iomux_replace_device.patch | 152 - ...parameter-check-in-efi_file_read_int.patch | 3 + rk3399-Pinebook-pro-EDP-support.patch | 1257 ------- sources | 2 +- ...ort-asymmetric-dual-rank-DRAM-on-A64.patch | 337 -- uboot-tools.spec | 19 +- usb-kbd-fixes.patch | 115 - 8 files changed, 12 insertions(+), 4850 deletions(-) delete mode 100644 0001-arm-dts-allwinner-sync-from-linux-for-RGMII-RX-TX-de.patch delete mode 100644 IOMUX-Fix-buffer-overflow-in-iomux_replace_device.patch delete mode 100644 rk3399-Pinebook-pro-EDP-support.patch delete mode 100644 sunxi-support-asymmetric-dual-rank-DRAM-on-A64.patch delete mode 100644 usb-kbd-fixes.patch diff --git a/0001-arm-dts-allwinner-sync-from-linux-for-RGMII-RX-TX-de.patch b/0001-arm-dts-allwinner-sync-from-linux-for-RGMII-RX-TX-de.patch deleted file mode 100644 index f0d3575..0000000 --- a/0001-arm-dts-allwinner-sync-from-linux-for-RGMII-RX-TX-de.patch +++ /dev/null @@ -1,2977 +0,0 @@ -From 4f26cacd28d71fd7d051b560f550863679a5f04b Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Wed, 10 Feb 2021 13:58:20 +0000 -Subject: [PATCH] arm: dts: allwinner: sync from linux for RGMII RX/TX delay - fixes - -Sync over a subset of the AllWinner dts changes from Linux 5.11 -for the RGMII RX/TX delay network fixes. - -This pulls other bits in needed to sync the whole files, the bits -are other minor fixes, or pieces of DT that don't affect U-Boot. - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/axp81x.dtsi | 9 + - arch/arm/dts/sun50i-a64-bananapi-m64.dts | 10 +- - arch/arm/dts/sun50i-a64-orangepi-win.dts | 10 +- - arch/arm/dts/sun50i-a64-pine64-plus.dts | 2 +- - arch/arm/dts/sun50i-a64-sopine-baseboard.dts | 10 +- - arch/arm/dts/sun50i-a64.dtsi | 34 +- - .../dts/sun50i-h5-bananapi-m2-plus-v1.2.dts | 1 + - .../arm/dts/sun50i-h5-libretech-all-h5-cc.dts | 2 +- - arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts | 2 +- - arch/arm/dts/sun50i-h5-orangepi-pc2.dts | 23 +- - arch/arm/dts/sun50i-h5-orangepi-prime.dts | 2 +- - .../arm/dts/sun50i-h5-orangepi-zero-plus2.dts | 38 +++ - arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts | 14 +- - arch/arm/dts/sun7i-a20-bananapi.dts | 24 +- - arch/arm/dts/sun7i-a20-bananapro.dts | 14 +- - arch/arm/dts/sun7i-a20-cubieboard2.dts | 24 +- - arch/arm/dts/sun7i-a20-cubietruck.dts | 14 +- - arch/arm/dts/sun7i-a20-hummingbird.dts | 21 +- - arch/arm/dts/sun7i-a20-i12-tvbox.dts | 12 +- - arch/arm/dts/sun7i-a20-icnova-swac.dts | 15 +- - arch/arm/dts/sun7i-a20-itead-ibox.dts | 4 +- - arch/arm/dts/sun7i-a20-lamobo-r1.dts | 14 +- - arch/arm/dts/sun7i-a20-m3.dts | 12 +- - arch/arm/dts/sun7i-a20-olimex-som-evb.dts | 12 +- - arch/arm/dts/sun7i-a20-olimex-som204-evb.dts | 24 +- - arch/arm/dts/sun7i-a20-olinuxino-lime.dts | 30 +- - arch/arm/dts/sun7i-a20-olinuxino-lime2.dts | 44 +-- - arch/arm/dts/sun7i-a20-olinuxino-micro.dts | 30 +- - arch/arm/dts/sun7i-a20-orangepi-mini.dts | 24 +- - arch/arm/dts/sun7i-a20-orangepi.dts | 24 +- - arch/arm/dts/sun7i-a20-pcduino3-nano.dts | 28 +- - arch/arm/dts/sun7i-a20-pcduino3.dts | 24 +- - arch/arm/dts/sun7i-a20-wexler-tab7200.dts | 12 +- - arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts | 24 +- - arch/arm/dts/sun7i-a20.dtsi | 218 +++++++++++- - arch/arm/dts/sun8i-a83t-bananapi-m3.dts | 53 ++- - arch/arm/dts/sun8i-a83t-cubietruck-plus.dts | 71 +++- - arch/arm/dts/sun8i-a83t.dtsi | 310 ++++++++++++++++-- - arch/arm/dts/sun8i-h3-orangepi-pc-plus.dts | 5 - - arch/arm/dts/sun8i-h3-orangepi-plus2e.dts | 2 +- - arch/arm/dts/sun8i-h3-orangepi-zero-plus2.dts | 38 +++ - arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts | 12 +- - arch/arm/dts/sunxi-bananapi-m2-plus.dtsi | 2 +- - 43 files changed, 947 insertions(+), 351 deletions(-) - -diff --git a/arch/arm/dts/axp81x.dtsi b/arch/arm/dts/axp81x.dtsi -index 043c717dce..1dfeeceabf 100644 ---- a/arch/arm/dts/axp81x.dtsi -+++ b/arch/arm/dts/axp81x.dtsi -@@ -48,6 +48,11 @@ - interrupt-controller; - #interrupt-cells = <1>; - -+ ac_power_supply: ac-power-supply { -+ compatible = "x-powers,axp813-ac-power-supply"; -+ status = "disabled"; -+ }; -+ - axp_adc: adc { - compatible = "x-powers,axp813-adc"; - #io-channel-cells = <1>; -@@ -166,4 +171,8 @@ - status = "disabled"; - }; - }; -+ -+ usb_power_supply: usb-power-supply { -+ compatible = "x-powers,axp813-usb-power-supply"; -+ }; - }; -diff --git a/arch/arm/dts/sun50i-a64-bananapi-m64.dts b/arch/arm/dts/sun50i-a64-bananapi-m64.dts -index 883f217efb..e5e840b9fb 100644 ---- a/arch/arm/dts/sun50i-a64-bananapi-m64.dts -+++ b/arch/arm/dts/sun50i-a64-bananapi-m64.dts -@@ -105,7 +105,7 @@ - &emac { - pinctrl-names = "default"; - pinctrl-0 = <&rgmii_pins>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - phy-handle = <&ext_rgmii_phy>; - phy-supply = <®_dc1sw>; - status = "okay"; -@@ -331,10 +331,10 @@ - "Microphone", "Microphone Jack", - "Microphone", "Onboard Microphone"; - simple-audio-card,routing = -- "Left DAC", "AIF1 Slot 0 Left", -- "Right DAC", "AIF1 Slot 0 Right", -- "AIF1 Slot 0 Left ADC", "Left ADC", -- "AIF1 Slot 0 Right ADC", "Right ADC", -+ "Left DAC", "DACL", -+ "Right DAC", "DACR", -+ "ADCL", "Left ADC", -+ "ADCR", "Right ADC", - "Headphone Jack", "HP", - "MIC2", "Microphone Jack", - "Onboard Microphone", "MBIAS", -diff --git a/arch/arm/dts/sun50i-a64-orangepi-win.dts b/arch/arm/dts/sun50i-a64-orangepi-win.dts -index fde9c7a99b..70e31743f0 100644 ---- a/arch/arm/dts/sun50i-a64-orangepi-win.dts -+++ b/arch/arm/dts/sun50i-a64-orangepi-win.dts -@@ -120,7 +120,7 @@ - &emac { - pinctrl-names = "default"; - pinctrl-0 = <&rgmii_pins>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - phy-handle = <&ext_rgmii_phy>; - phy-supply = <®_gmac_3v3>; - status = "okay"; -@@ -330,10 +330,10 @@ - "Microphone", "Microphone Jack", - "Microphone", "Onboard Microphone"; - simple-audio-card,routing = -- "Left DAC", "AIF1 Slot 0 Left", -- "Right DAC", "AIF1 Slot 0 Right", -- "AIF1 Slot 0 Left ADC", "Left ADC", -- "AIF1 Slot 0 Right ADC", "Right ADC", -+ "Left DAC", "DACL", -+ "Right DAC", "DACR", -+ "ADCL", "Left ADC", -+ "ADCR", "Right ADC", - "Headphone Jack", "HP", - "MIC2", "Microphone Jack", - "Onboard Microphone", "MBIAS", -diff --git a/arch/arm/dts/sun50i-a64-pine64-plus.dts b/arch/arm/dts/sun50i-a64-pine64-plus.dts -index b26181cf90..b54099b654 100644 ---- a/arch/arm/dts/sun50i-a64-pine64-plus.dts -+++ b/arch/arm/dts/sun50i-a64-pine64-plus.dts -@@ -13,7 +13,7 @@ - &emac { - pinctrl-names = "default"; - pinctrl-0 = <&rgmii_pins>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-txid"; - phy-handle = <&ext_rgmii_phy>; - status = "okay"; - }; -diff --git a/arch/arm/dts/sun50i-a64-sopine-baseboard.dts b/arch/arm/dts/sun50i-a64-sopine-baseboard.dts -index 2f6ea9f3f6..d4069749d7 100644 ---- a/arch/arm/dts/sun50i-a64-sopine-baseboard.dts -+++ b/arch/arm/dts/sun50i-a64-sopine-baseboard.dts -@@ -79,7 +79,7 @@ - &emac { - pinctrl-names = "default"; - pinctrl-0 = <&rgmii_pins>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - phy-handle = <&ext_rgmii_phy>; - phy-supply = <®_dc1sw>; - status = "okay"; -@@ -159,11 +159,11 @@ - simple-audio-card,widgets = "Microphone", "Microphone Jack", - "Headphone", "Headphone Jack"; - simple-audio-card,routing = -- "Left DAC", "AIF1 Slot 0 Left", -- "Right DAC", "AIF1 Slot 0 Right", -+ "Left DAC", "DACL", -+ "Right DAC", "DACR", - "Headphone Jack", "HP", -- "AIF1 Slot 0 Left ADC", "Left ADC", -- "AIF1 Slot 0 Right ADC", "Right ADC", -+ "ADCL", "Left ADC", -+ "ADCR", "Right ADC", - "MIC2", "Microphone Jack"; - status = "okay"; - }; -diff --git a/arch/arm/dts/sun50i-a64.dtsi b/arch/arm/dts/sun50i-a64.dtsi -index 8dfbcd1440..51cc30e84e 100644 ---- a/arch/arm/dts/sun50i-a64.dtsi -+++ b/arch/arm/dts/sun50i-a64.dtsi -@@ -51,7 +51,7 @@ - reg = <0>; - enable-method = "psci"; - next-level-cache = <&L2>; -- clocks = <&ccu 21>; -+ clocks = <&ccu CLK_CPUX>; - clock-names = "cpu"; - #cooling-cells = <2>; - }; -@@ -62,7 +62,7 @@ - reg = <1>; - enable-method = "psci"; - next-level-cache = <&L2>; -- clocks = <&ccu 21>; -+ clocks = <&ccu CLK_CPUX>; - clock-names = "cpu"; - #cooling-cells = <2>; - }; -@@ -73,7 +73,7 @@ - reg = <2>; - enable-method = "psci"; - next-level-cache = <&L2>; -- clocks = <&ccu 21>; -+ clocks = <&ccu CLK_CPUX>; - clock-names = "cpu"; - #cooling-cells = <2>; - }; -@@ -84,7 +84,7 @@ - reg = <3>; - enable-method = "psci"; - next-level-cache = <&L2>; -- clocks = <&ccu 21>; -+ clocks = <&ccu CLK_CPUX>; - clock-names = "cpu"; - #cooling-cells = <2>; - }; -@@ -139,10 +139,10 @@ - simple-audio-card,mclk-fs = <128>; - simple-audio-card,aux-devs = <&codec_analog>; - simple-audio-card,routing = -- "Left DAC", "AIF1 Slot 0 Left", -- "Right DAC", "AIF1 Slot 0 Right", -- "AIF1 Slot 0 Left ADC", "Left ADC", -- "AIF1 Slot 0 Right ADC", "Right ADC"; -+ "Left DAC", "DACL", -+ "Right DAC", "DACR", -+ "ADCL", "Left ADC", -+ "ADCR", "Right ADC"; - status = "disabled"; - - cpudai: simple-audio-card,cpu { -@@ -157,6 +157,7 @@ - timer { - compatible = "arm,armv8-timer"; - allwinner,erratum-unknown1; -+ arm,no-tick-in-suspend; - interrupts = , - ; -+ compatible = "allwinner,sun50i-a64-i2s", -+ "allwinner,sun8i-h3-i2s"; -+ reg = <0x01c22800 0x400>; -+ interrupts = ; -+ clocks = <&ccu CLK_BUS_I2S2>, <&ccu CLK_I2S2>; -+ clock-names = "apb", "mod"; -+ resets = <&ccu RST_BUS_I2S2>; -+ dma-names = "rx", "tx"; -+ dmas = <&dma 27>, <&dma 27>; -+ status = "disabled"; -+ }; -+ - dai: dai@1c22c00 { - #sound-dai-cells = <0>; - compatible = "allwinner,sun50i-a64-codec-i2s"; -@@ -860,7 +875,8 @@ - - codec: codec@1c22e00 { - #sound-dai-cells = <0>; -- compatible = "allwinner,sun8i-a33-codec"; -+ compatible = "allwinner,sun50i-a64-codec", -+ "allwinner,sun8i-a33-codec"; - reg = <0x01c22e00 0x600>; - interrupts = ; - clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>; -diff --git a/arch/arm/dts/sun50i-h5-bananapi-m2-plus-v1.2.dts b/arch/arm/dts/sun50i-h5-bananapi-m2-plus-v1.2.dts -index 2e2b14c0ae..8857a37915 100644 ---- a/arch/arm/dts/sun50i-h5-bananapi-m2-plus-v1.2.dts -+++ b/arch/arm/dts/sun50i-h5-bananapi-m2-plus-v1.2.dts -@@ -3,6 +3,7 @@ - - /dts-v1/; - #include "sun50i-h5.dtsi" -+#include "sun50i-h5-cpu-opp.dtsi" - #include - - / { -diff --git a/arch/arm/dts/sun50i-h5-libretech-all-h5-cc.dts b/arch/arm/dts/sun50i-h5-libretech-all-h5-cc.dts -index df1b9263ad..6e30a564c8 100644 ---- a/arch/arm/dts/sun50i-h5-libretech-all-h5-cc.dts -+++ b/arch/arm/dts/sun50i-h5-libretech-all-h5-cc.dts -@@ -36,7 +36,7 @@ - pinctrl-0 = <&emac_rgmii_pins>; - phy-supply = <®_gmac_3v3>; - phy-handle = <&ext_rgmii_phy>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - /delete-property/ allwinner,leds-active-low; - status = "okay"; - }; -diff --git a/arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts b/arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts -index 4f9ba53ffa..9d93fe1536 100644 ---- a/arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts -+++ b/arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts -@@ -96,7 +96,7 @@ - pinctrl-0 = <&emac_rgmii_pins>; - phy-supply = <®_gmac_3v3>; - phy-handle = <&ext_rgmii_phy>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - status = "okay"; - }; - -diff --git a/arch/arm/dts/sun50i-h5-orangepi-pc2.dts b/arch/arm/dts/sun50i-h5-orangepi-pc2.dts -index 70b5f09984..8bf2db9dcb 100644 ---- a/arch/arm/dts/sun50i-h5-orangepi-pc2.dts -+++ b/arch/arm/dts/sun50i-h5-orangepi-pc2.dts -@@ -61,6 +61,7 @@ - label = "sw4"; - linux,code = ; - gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>; -+ wakeup-source; - }; - }; - -@@ -93,6 +94,10 @@ - status = "okay"; - }; - -+&cpu0 { -+ cpu-supply = <®_vdd_cpux>; -+}; -+ - &de { - status = "okay"; - }; -@@ -118,7 +123,7 @@ - pinctrl-0 = <&emac_rgmii_pins>; - phy-supply = <®_gmac_3v3>; - phy-handle = <&ext_rgmii_phy>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - status = "okay"; - }; - -@@ -168,6 +173,22 @@ - status = "okay"; - }; - -+&r_i2c { -+ status = "okay"; -+ -+ reg_vdd_cpux: regulator@65 { -+ compatible = "silergy,sy8106a"; -+ reg = <0x65>; -+ regulator-name = "vdd-cpux"; -+ silergy,fixed-microvolt = <1100000>; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-ramp-delay = <200>; -+ regulator-boot-on; -+ regulator-always-on; -+ }; -+}; -+ - &spi0 { - status = "okay"; - -diff --git a/arch/arm/dts/sun50i-h5-orangepi-prime.dts b/arch/arm/dts/sun50i-h5-orangepi-prime.dts -index cb44bfa598..33ab44072e 100644 ---- a/arch/arm/dts/sun50i-h5-orangepi-prime.dts -+++ b/arch/arm/dts/sun50i-h5-orangepi-prime.dts -@@ -124,7 +124,7 @@ - pinctrl-0 = <&emac_rgmii_pins>; - phy-supply = <®_gmac_3v3>; - phy-handle = <&ext_rgmii_phy>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - status = "okay"; - }; - -diff --git a/arch/arm/dts/sun50i-h5-orangepi-zero-plus2.dts b/arch/arm/dts/sun50i-h5-orangepi-zero-plus2.dts -index c95a685413..de19e68eb8 100644 ---- a/arch/arm/dts/sun50i-h5-orangepi-zero-plus2.dts -+++ b/arch/arm/dts/sun50i-h5-orangepi-zero-plus2.dts -@@ -30,6 +30,21 @@ - }; - }; - -+ leds { -+ compatible = "gpio-leds"; -+ -+ pwr { -+ label = "orangepi:green:pwr"; -+ gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; -+ default-state = "on"; -+ }; -+ -+ status { -+ label = "orangepi:red:status"; -+ gpios = <&pio 0 17 GPIO_ACTIVE_HIGH>; -+ }; -+ }; -+ - reg_vcc3v3: vcc3v3 { - compatible = "regulator-fixed"; - regulator-name = "vcc3v3"; -@@ -48,6 +63,10 @@ - status = "okay"; - }; - -+&ehci0 { -+ status = "okay"; -+}; -+ - &hdmi { - status = "okay"; - }; -@@ -92,6 +111,10 @@ - status = "okay"; - }; - -+&ohci0 { -+ status = "okay"; -+}; -+ - &uart0 { - pinctrl-names = "default"; - pinctrl-0 = <&uart0_pa_pins>; -@@ -103,3 +126,18 @@ - pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>; - status = "okay"; - }; -+ -+&usb_otg { -+ /* -+ * According to schematics CN1 MicroUSB port can be used to take -+ * external 5V to power up the board VBUS. On the contrary CN1 MicroUSB -+ * port cannot provide power externally even if the board is powered -+ * via GPIO pins. It thus makes sense to force peripheral mode. -+ */ -+ dr_mode = "peripheral"; -+ status = "okay"; -+}; -+ -+&usbphy { -+ status = "okay"; -+}; -diff --git a/arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts b/arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts -index e2bfe00588..8945dbb114 100644 ---- a/arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts -+++ b/arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts -@@ -129,14 +129,10 @@ - &gmac { - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; -- phy = <&phy1>; -- phy-mode = "rgmii"; -+ phy-handle = <&phy1>; -+ phy-mode = "rgmii-id"; - phy-supply = <®_gmac_3v3>; - status = "okay"; -- -- phy1: ethernet-phy@1 { -- reg = <1>; -- }; - }; - - &hdmi { -@@ -171,6 +167,12 @@ - status = "okay"; - }; - -+&gmac_mdio { -+ phy1: ethernet-phy@1 { -+ reg = <1>; -+ }; -+}; -+ - &mmc0 { - vmmc-supply = <®_vcc3v3>; - bus-width = <4>; -diff --git a/arch/arm/dts/sun7i-a20-bananapi.dts b/arch/arm/dts/sun7i-a20-bananapi.dts -index 81bc85d398..0b3d9ae756 100644 ---- a/arch/arm/dts/sun7i-a20-bananapi.dts -+++ b/arch/arm/dts/sun7i-a20-bananapi.dts -@@ -131,14 +131,10 @@ - &gmac { - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; -- phy = <&phy1>; -- phy-mode = "rgmii"; -+ phy-handle = <&phy1>; -+ phy-mode = "rgmii-id"; - phy-supply = <®_gmac_3v3>; - status = "okay"; -- -- phy1: ethernet-phy@1 { -- reg = <1>; -- }; - }; - - &hdmi { -@@ -171,6 +167,12 @@ - status = "okay"; - }; - -+&gmac_mdio { -+ phy1: ethernet-phy@1 { -+ reg = <1>; -+ }; -+}; -+ - &mmc0 { - vmmc-supply = <®_vcc3v3>; - bus-width = <4>; -@@ -246,12 +248,6 @@ - "SPI-MISO", "SPI-CE1", "", - "IO-6", "IO-3", "IO-2", "IO-0", "", "", "", "", - "", "", "", "", "", "", "", ""; -- -- usb0_id_detect_pin: usb0-id-detect-pin { -- pins = "PH4"; -- function = "gpio_in"; -- bias-pull-up; -- }; - }; - - #include "axp209.dtsi" -@@ -329,9 +325,7 @@ - }; - - &usbphy { -- pinctrl-names = "default"; -- pinctrl-0 = <&usb0_id_detect_pin>; -- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -+ usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */ - usb0_vbus_power-supply = <&usb_power_supply>; - usb0_vbus-supply = <®_usb0_vbus>; - usb1_vbus-supply = <®_usb1_vbus>; -diff --git a/arch/arm/dts/sun7i-a20-bananapro.dts b/arch/arm/dts/sun7i-a20-bananapro.dts -index 0176e9de01..5740f94427 100644 ---- a/arch/arm/dts/sun7i-a20-bananapro.dts -+++ b/arch/arm/dts/sun7i-a20-bananapro.dts -@@ -109,14 +109,10 @@ - &gmac { - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; -- phy = <&phy1>; -- phy-mode = "rgmii"; -+ phy-handle = <&phy1>; -+ phy-mode = "rgmii-id"; - phy-supply = <®_gmac_3v3>; - status = "okay"; -- -- phy1: ethernet-phy@1 { -- reg = <1>; -- }; - }; - - &i2c0 { -@@ -143,6 +139,12 @@ - status = "okay"; - }; - -+&gmac_mdio { -+ phy1: ethernet-phy@1 { -+ reg = <1>; -+ }; -+}; -+ - &mmc0 { - vmmc-supply = <®_vcc3v3>; - bus-width = <4>; -diff --git a/arch/arm/dts/sun7i-a20-cubieboard2.dts b/arch/arm/dts/sun7i-a20-cubieboard2.dts -index 200685b0b1..b8203e4ef2 100644 ---- a/arch/arm/dts/sun7i-a20-cubieboard2.dts -+++ b/arch/arm/dts/sun7i-a20-cubieboard2.dts -@@ -115,13 +115,9 @@ - &gmac { - pinctrl-names = "default"; - pinctrl-0 = <&gmac_mii_pins>; -- phy = <&phy1>; -+ phy-handle = <&phy1>; - phy-mode = "mii"; - status = "okay"; -- -- phy1: ethernet-phy@1 { -- reg = <1>; -- }; - }; - - &hdmi { -@@ -161,6 +157,12 @@ - status = "okay"; - }; - -+&gmac_mdio { -+ phy1: ethernet-phy@1 { -+ reg = <1>; -+ }; -+}; -+ - &ohci0 { - status = "okay"; - }; -@@ -173,14 +175,6 @@ - status = "okay"; - }; - --&pio { -- usb0_id_detect_pin: usb0-id-detect-pin { -- pins = "PH4"; -- function = "gpio_in"; -- bias-pull-up; -- }; --}; -- - ®_ahci_5v { - status = "okay"; - }; -@@ -236,9 +230,7 @@ - }; - - &usbphy { -- pinctrl-names = "default"; -- pinctrl-0 = <&usb0_id_detect_pin>; -- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -+ usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */ - usb1_vbus-supply = <®_usb1_vbus>; - usb2_vbus-supply = <®_usb2_vbus>; - status = "okay"; -diff --git a/arch/arm/dts/sun7i-a20-cubietruck.dts b/arch/arm/dts/sun7i-a20-cubietruck.dts -index 99f531b8d2..9109ca0919 100644 ---- a/arch/arm/dts/sun7i-a20-cubietruck.dts -+++ b/arch/arm/dts/sun7i-a20-cubietruck.dts -@@ -150,13 +150,9 @@ - &gmac { - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; -- phy = <&phy1>; -- phy-mode = "rgmii"; -+ phy-handle = <&phy1>; -+ phy-mode = "rgmii-id"; - status = "okay"; -- -- phy1: ethernet-phy@1 { -- reg = <1>; -- }; - }; - - &hdmi { -@@ -194,6 +190,12 @@ - status = "okay"; - }; - -+&gmac_mdio { -+ phy1: ethernet-phy@1 { -+ reg = <1>; -+ }; -+}; -+ - &mmc0 { - vmmc-supply = <®_vcc3v3>; - bus-width = <4>; -diff --git a/arch/arm/dts/sun7i-a20-hummingbird.dts b/arch/arm/dts/sun7i-a20-hummingbird.dts -index fd0153f656..3def2a3305 100644 ---- a/arch/arm/dts/sun7i-a20-hummingbird.dts -+++ b/arch/arm/dts/sun7i-a20-hummingbird.dts -@@ -100,19 +100,10 @@ - &gmac { - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; -- phy = <&phy1>; -+ phy-handle = <&phy1>; - phy-mode = "rgmii"; - phy-supply = <®_gmac_vdd>; -- /* phy reset config */ -- snps,reset-gpio = <&pio 0 17 GPIO_ACTIVE_HIGH>; /* PA17 */ -- snps,reset-active-low; -- /* wait 1s after reset, otherwise fail to read phy id */ -- snps,reset-delays-us = <0 10000 1000000>; - status = "okay"; -- -- phy1: ethernet-phy@1 { -- reg = <1>; -- }; - }; - - &i2c0 { -@@ -146,6 +137,16 @@ - status = "okay"; - }; - -+&gmac_mdio { -+ phy1: ethernet-phy@1 { -+ reg = <1>; -+ reset-gpios = <&pio 0 17 GPIO_ACTIVE_LOW>; /* PA17 */ -+ reset-assert-us = <10000>; -+ /* wait 1s after reset, otherwise fail to read phy id */ -+ reset-deassert-us = <1000000>; -+ }; -+}; -+ - &mmc0 { - vmmc-supply = <®_vcc3v0>; - bus-width = <4>; -diff --git a/arch/arm/dts/sun7i-a20-i12-tvbox.dts b/arch/arm/dts/sun7i-a20-i12-tvbox.dts -index 5f1c4f573d..358ed5f1b1 100644 ---- a/arch/arm/dts/sun7i-a20-i12-tvbox.dts -+++ b/arch/arm/dts/sun7i-a20-i12-tvbox.dts -@@ -115,14 +115,10 @@ - &gmac { - pinctrl-names = "default"; - pinctrl-0 = <&gmac_mii_pins>; -- phy = <&phy1>; -+ phy-handle = <&phy1>; - phy-mode = "mii"; - phy-supply = <®_gmac_3v3>; - status = "okay"; -- -- phy1: ethernet-phy@1 { -- reg = <1>; -- }; - }; - - &i2c0 { -@@ -145,6 +141,12 @@ - status = "okay"; - }; - -+&gmac_mdio { -+ phy1: ethernet-phy@1 { -+ reg = <1>; -+ }; -+}; -+ - &mmc0 { - vmmc-supply = <®_vcc3v3>; - bus-width = <4>; -diff --git a/arch/arm/dts/sun7i-a20-icnova-swac.dts b/arch/arm/dts/sun7i-a20-icnova-swac.dts -index 949494730a..413505f45a 100644 ---- a/arch/arm/dts/sun7i-a20-icnova-swac.dts -+++ b/arch/arm/dts/sun7i-a20-icnova-swac.dts -@@ -49,7 +49,8 @@ - - / { - model = "ICnova-A20 SWAC"; -- compatible = "swac,icnova-a20-swac", "incircuit,icnova-a20", "allwinner,sun7i-a20"; -+ compatible = "incircuit,icnova-a20-swac", "incircuit,icnova-a20", -+ "allwinner,sun7i-a20"; - - aliases { - serial0 = &uart0; -@@ -75,13 +76,9 @@ - &gmac { - pinctrl-names = "default"; - pinctrl-0 = <&gmac_mii_pins>; -- phy = <&phy1>; -+ phy-handle = <&phy1>; - phy-mode = "mii"; - status = "okay"; -- -- phy1: ethernet-phy@1 { -- reg = <1>; -- }; - }; - - &i2c0 { -@@ -98,6 +95,12 @@ - status = "okay"; - }; - -+&gmac_mdio { -+ phy1: ethernet-phy@1 { -+ reg = <1>; -+ }; -+}; -+ - &mmc0 { - vmmc-supply = <®_vcc3v3>; - bus-width = <4>; -diff --git a/arch/arm/dts/sun7i-a20-itead-ibox.dts b/arch/arm/dts/sun7i-a20-itead-ibox.dts -index b90a7607d0..946c272783 100644 ---- a/arch/arm/dts/sun7i-a20-itead-ibox.dts -+++ b/arch/arm/dts/sun7i-a20-itead-ibox.dts -@@ -97,10 +97,12 @@ - &gmac { - pinctrl-names = "default"; - pinctrl-0 = <&gmac_mii_pins>; -- phy = <&phy1>; -+ phy-handle = <&phy1>; - phy-mode = "mii"; - status = "okay"; -+}; - -+&gmac_mdio { - phy1: ethernet-phy@1 { - reg = <1>; - }; -diff --git a/arch/arm/dts/sun7i-a20-lamobo-r1.dts b/arch/arm/dts/sun7i-a20-lamobo-r1.dts -index f91e1bee44..17fa8901fc 100644 ---- a/arch/arm/dts/sun7i-a20-lamobo-r1.dts -+++ b/arch/arm/dts/sun7i-a20-lamobo-r1.dts -@@ -123,8 +123,6 @@ - phy-mode = "rgmii"; - phy-supply = <®_gmac_3v3>; - status = "okay"; -- /delete-property/#address-cells; -- /delete-property/#size-cells; - - fixed-link { - speed = <1000>; -@@ -229,14 +227,6 @@ - status = "okay"; - }; - --&pio { -- usb0_id_detect_pin: usb0-id-detect-pin { -- pins = "PH4"; -- function = "gpio_in"; -- bias-pull-up; -- }; --}; -- - #include "axp209.dtsi" - - &ac_power_supply { -@@ -322,9 +312,7 @@ - }; - - &usbphy { -- pinctrl-names = "default"; -- pinctrl-0 = <&usb0_id_detect_pin>; -- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -+ usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */ - usb0_vbus_power-supply = <&usb_power_supply>; - usb0_vbus-supply = <®_usb0_vbus>; - usb2_vbus-supply = <®_usb2_vbus>; -diff --git a/arch/arm/dts/sun7i-a20-m3.dts b/arch/arm/dts/sun7i-a20-m3.dts -index b8a1aaaf39..6bff9e731f 100644 ---- a/arch/arm/dts/sun7i-a20-m3.dts -+++ b/arch/arm/dts/sun7i-a20-m3.dts -@@ -82,13 +82,9 @@ - &gmac { - pinctrl-names = "default"; - pinctrl-0 = <&gmac_mii_pins>; -- phy = <&phy1>; -+ phy-handle = <&phy1>; - phy-mode = "mii"; - status = "okay"; -- -- phy1: ethernet-phy@1 { -- reg = <1>; -- }; - }; - - &i2c0 { -@@ -111,6 +107,12 @@ - status = "okay"; - }; - -+&gmac_mdio { -+ phy1: ethernet-phy@1 { -+ reg = <1>; -+ }; -+}; -+ - &mmc0 { - vmmc-supply = <®_vcc3v3>; - bus-width = <4>; -diff --git a/arch/arm/dts/sun7i-a20-olimex-som-evb.dts b/arch/arm/dts/sun7i-a20-olimex-som-evb.dts -index f0e6a96e57..6f9c54b8e4 100644 ---- a/arch/arm/dts/sun7i-a20-olimex-som-evb.dts -+++ b/arch/arm/dts/sun7i-a20-olimex-som-evb.dts -@@ -111,13 +111,9 @@ - &gmac { - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; -- phy = <&phy1>; -+ phy-handle = <&phy1>; - phy-mode = "rgmii"; - status = "okay"; -- -- phy1: ethernet-phy@1 { -- reg = <1>; -- }; - }; - - &hdmi { -@@ -202,6 +198,12 @@ - }; - }; - -+&gmac_mdio { -+ phy1: ethernet-phy@1 { -+ reg = <1>; -+ }; -+}; -+ - &mmc0 { - vmmc-supply = <®_vcc3v3>; - bus-width = <4>; -diff --git a/arch/arm/dts/sun7i-a20-olimex-som204-evb.dts b/arch/arm/dts/sun7i-a20-olimex-som204-evb.dts -index 823aabce04..230d62a6b8 100644 ---- a/arch/arm/dts/sun7i-a20-olimex-som204-evb.dts -+++ b/arch/arm/dts/sun7i-a20-olimex-som204-evb.dts -@@ -105,18 +105,10 @@ - &gmac { - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; -- phy = <&phy3>; -+ phy-handle = <&phy3>; - phy-mode = "rgmii"; - phy-supply = <®_vcc3v3>; -- -- snps,reset-gpio = <&pio 0 17 GPIO_ACTIVE_HIGH>; -- snps,reset-active-low; -- snps,reset-delays-us = <0 10000 1000000>; - status = "okay"; -- -- phy3: ethernet-phy@3 { -- reg = <3>; -- }; - }; - - &hdmi { -@@ -161,6 +153,16 @@ - status = "okay"; - }; - -+&gmac_mdio { -+ phy3: ethernet-phy@3 { -+ reg = <3>; -+ reset-gpios = <&pio 0 17 GPIO_ACTIVE_LOW>; /* PA17 */ -+ reset-assert-us = <10000>; -+ /* wait 1s after reset, otherwise fail to read phy id */ -+ reset-deassert-us = <1000000>; -+ }; -+}; -+ - &mmc0 { - vmmc-supply = <®_vcc3v3>; - bus-width = <4>; -@@ -314,8 +316,8 @@ - }; - - &usbphy { -- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -- usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */ -+ usb0_id_det-gpios = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -+ usb0_vbus_det-gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */ - usb0_vbus_power-supply = <&usb_power_supply>; - usb0_vbus-supply = <®_usb0_vbus>; - usb1_vbus-supply = <®_usb1_vbus>; -diff --git a/arch/arm/dts/sun7i-a20-olinuxino-lime.dts b/arch/arm/dts/sun7i-a20-olinuxino-lime.dts -index 5e411194bf..2adbac8601 100644 ---- a/arch/arm/dts/sun7i-a20-olinuxino-lime.dts -+++ b/arch/arm/dts/sun7i-a20-olinuxino-lime.dts -@@ -106,13 +106,9 @@ - &gmac { - pinctrl-names = "default"; - pinctrl-0 = <&gmac_mii_pins>; -- phy = <&phy1>; -+ phy-handle = <&phy1>; - phy-mode = "mii"; - status = "okay"; -- -- phy1: ethernet-phy@1 { -- reg = <1>; -- }; - }; - - &hdmi { -@@ -149,6 +145,12 @@ - }; - }; - -+&gmac_mdio { -+ phy1: ethernet-phy@1 { -+ reg = <1>; -+ }; -+}; -+ - &mmc0 { - vmmc-supply = <®_vcc3v3>; - bus-width = <4>; -@@ -174,18 +176,6 @@ - function = "gpio_out"; - drive-strength = <20>; - }; -- -- usb0_id_detect_pin: usb0-id-detect-pin { -- pins = "PH4"; -- function = "gpio_in"; -- bias-pull-up; -- }; -- -- usb0_vbus_detect_pin: usb0-vbus-detect-pin { -- pins = "PH5"; -- function = "gpio_in"; -- bias-pull-down; -- }; - }; - - ®_ahci_5v { -@@ -217,10 +207,8 @@ - }; - - &usbphy { -- pinctrl-names = "default"; -- pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>; -- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -- usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */ -+ usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */ -+ usb0_vbus_det-gpios = <&pio 7 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>; /* PH5 */ - usb0_vbus-supply = <®_usb0_vbus>; - usb1_vbus-supply = <®_usb1_vbus>; - usb2_vbus-supply = <®_usb2_vbus>; -diff --git a/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts b/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts -index 4e1c590eb0..9ba62774e8 100644 ---- a/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts -+++ b/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts -@@ -111,13 +111,9 @@ - &gmac { - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; -- phy = <&phy1>; -+ phy-handle = <&phy1>; - phy-mode = "rgmii"; - status = "okay"; -- -- phy1: ethernet-phy@1 { -- reg = <1>; -- }; - }; - - &hdmi { -@@ -154,6 +150,12 @@ - vref-supply = <®_vcc3v0>; - }; - -+&gmac_mdio { -+ phy1: ethernet-phy@1 { -+ reg = <1>; -+ }; -+}; -+ - &mmc0 { - vmmc-supply = <®_vcc3v3>; - bus-width = <4>; -@@ -174,23 +176,17 @@ - }; - - &pio { -+ vcc-pa-supply = <®_vcc3v3>; -+ vcc-pc-supply = <®_vcc3v3>; -+ vcc-pe-supply = <®_ldo3>; -+ vcc-pf-supply = <®_vcc3v3>; -+ vcc-pg-supply = <®_ldo4>; -+ - led_pins_olinuxinolime: led-pins { - pins = "PH2"; - function = "gpio_out"; - drive-strength = <20>; - }; -- -- usb0_id_detect_pin: usb0-id-detect-pin { -- pins = "PH4"; -- function = "gpio_in"; -- bias-pull-up; -- }; -- -- usb0_vbus_detect_pin: usb0-vbus-detect-pin { -- pins = "PH5"; -- function = "gpio_in"; -- bias-pull-down; -- }; - }; - - ®_ahci_5v { -@@ -200,6 +196,14 @@ - - #include "axp209.dtsi" - -+&ac_power_supply { -+ status = "okay"; -+}; -+ -+&battery_power_supply { -+ status = "okay"; -+}; -+ - ®_dcdc2 { - regulator-always-on; - regulator-min-microvolt = <1000000>; -@@ -267,10 +271,8 @@ - }; - - &usbphy { -- pinctrl-names = "default"; -- pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>; -- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -- usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */ -+ usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */ -+ usb0_vbus_det-gpios = <&pio 7 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>; /* PH5 */ - usb0_vbus-supply = <®_usb0_vbus>; - usb1_vbus-supply = <®_usb1_vbus>; - usb2_vbus-supply = <®_usb2_vbus>; -diff --git a/arch/arm/dts/sun7i-a20-olinuxino-micro.dts b/arch/arm/dts/sun7i-a20-olinuxino-micro.dts -index 840ae1194a..359bd0d5b3 100644 ---- a/arch/arm/dts/sun7i-a20-olinuxino-micro.dts -+++ b/arch/arm/dts/sun7i-a20-olinuxino-micro.dts -@@ -118,13 +118,9 @@ - &gmac { - pinctrl-names = "default"; - pinctrl-0 = <&gmac_mii_pins>, <&gmac_txerr>; -- phy = <&phy1>; -+ phy-handle = <&phy1>; - phy-mode = "mii"; - status = "okay"; -- -- phy1: ethernet-phy@1 { -- reg = <1>; -- }; - }; - - &hdmi { -@@ -215,6 +211,12 @@ - }; - }; - -+&gmac_mdio { -+ phy1: ethernet-phy@1 { -+ reg = <1>; -+ }; -+}; -+ - &mmc0 { - vmmc-supply = <®_vcc3v3>; - bus-width = <4>; -@@ -252,18 +254,6 @@ - function = "gpio_out"; - drive-strength = <20>; - }; -- -- usb0_id_detect_pin: usb0-id-detect-pin { -- pins = "PH4"; -- function = "gpio_in"; -- bias-pull-up; -- }; -- -- usb0_vbus_detect_pin: usb0-vbus-detect-pin { -- pins = "PH5"; -- function = "gpio_in"; -- bias-pull-down; -- }; - }; - - #include "axp209.dtsi" -@@ -355,10 +345,8 @@ - }; - - &usbphy { -- pinctrl-names = "default"; -- pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>; -- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -- usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */ -+ usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */ -+ usb0_vbus_det-gpios = <&pio 7 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>; /* PH5 */ - usb0_vbus-supply = <®_usb0_vbus>; - usb1_vbus-supply = <®_usb1_vbus>; - usb2_vbus-supply = <®_usb2_vbus>; -diff --git a/arch/arm/dts/sun7i-a20-orangepi-mini.dts b/arch/arm/dts/sun7i-a20-orangepi-mini.dts -index 15881081ca..2e328d2cef 100644 ---- a/arch/arm/dts/sun7i-a20-orangepi-mini.dts -+++ b/arch/arm/dts/sun7i-a20-orangepi-mini.dts -@@ -120,14 +120,10 @@ - &gmac { - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; -- phy = <&phy1>; -+ phy-handle = <&phy1>; - phy-mode = "rgmii"; - phy-supply = <®_gmac_3v3>; - status = "okay"; -- -- phy1: ethernet-phy@1 { -- reg = <1>; -- }; - }; - - &hdmi { -@@ -158,6 +154,12 @@ - status = "okay"; - }; - -+&gmac_mdio { -+ phy1: ethernet-phy@1 { -+ reg = <1>; -+ }; -+}; -+ - &mmc0 { - vmmc-supply = <®_vcc3v3>; - bus-width = <4>; -@@ -176,14 +178,6 @@ - status = "okay"; - }; - --&pio { -- usb0_id_detect_pin: usb0-id-detect-pin { -- pins = "PH4"; -- function = "gpio_in"; -- bias-pull-up; -- }; --}; -- - ®_dcdc2 { - regulator-always-on; - regulator-min-microvolt = <1000000>; -@@ -239,9 +233,7 @@ - }; - - &usbphy { -- pinctrl-names = "default"; -- pinctrl-0 = <&usb0_id_detect_pin>; -- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -+ usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */ - usb0_vbus_power-supply = <&usb_power_supply>; - usb0_vbus-supply = <®_usb0_vbus>; - usb1_vbus-supply = <®_usb1_vbus>; -diff --git a/arch/arm/dts/sun7i-a20-orangepi.dts b/arch/arm/dts/sun7i-a20-orangepi.dts -index d64de2e73a..d75b2e2bab 100644 ---- a/arch/arm/dts/sun7i-a20-orangepi.dts -+++ b/arch/arm/dts/sun7i-a20-orangepi.dts -@@ -96,14 +96,10 @@ - &gmac { - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; -- phy = <&phy1>; -+ phy-handle = <&phy1>; - phy-mode = "rgmii"; - phy-supply = <®_gmac_3v3>; - status = "okay"; -- -- phy1: ethernet-phy@1 { -- reg = <1>; -- }; - }; - - &i2c0 { -@@ -124,6 +120,12 @@ - status = "okay"; - }; - -+&gmac_mdio { -+ phy1: ethernet-phy@1 { -+ reg = <1>; -+ }; -+}; -+ - &mmc0 { - vmmc-supply = <®_vcc3v3>; - bus-width = <4>; -@@ -135,14 +137,6 @@ - status = "okay"; - }; - --&pio { -- usb0_id_detect_pin: usb0-id-detect-pin { -- pins = "PH4"; -- function = "gpio_in"; -- bias-pull-up; -- }; --}; -- - ®_dcdc2 { - regulator-always-on; - regulator-min-microvolt = <1000000>; -@@ -198,9 +192,7 @@ - }; - - &usbphy { -- pinctrl-names = "default"; -- pinctrl-0 = <&usb0_id_detect_pin>; -- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -+ usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */ - usb0_vbus_power-supply = <&usb_power_supply>; - usb0_vbus-supply = <®_usb0_vbus>; - usb1_vbus-supply = <®_usb1_vbus>; -diff --git a/arch/arm/dts/sun7i-a20-pcduino3-nano.dts b/arch/arm/dts/sun7i-a20-pcduino3-nano.dts -index 538ea15fa3..bf38c66c18 100644 ---- a/arch/arm/dts/sun7i-a20-pcduino3-nano.dts -+++ b/arch/arm/dts/sun7i-a20-pcduino3-nano.dts -@@ -1,5 +1,5 @@ - /* -- * Copyright 2015 Adam Sampson -+ * Copyright 2015-2020 Adam Sampson - * - * This file is dual-licensed: you can use it either under the terms - * of the GPL or the X11 license, at your option. Note that this dual -@@ -114,13 +114,9 @@ - &gmac { - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; -- phy = <&phy1>; -- phy-mode = "rgmii"; -+ phy-handle = <&phy1>; -+ phy-mode = "rgmii-id"; - status = "okay"; -- -- phy1: ethernet-phy@1 { -- reg = <1>; -- }; - }; - - &hdmi { -@@ -149,6 +145,12 @@ - status = "okay"; - }; - -+&gmac_mdio { -+ phy1: ethernet-phy@1 { -+ reg = <1>; -+ }; -+}; -+ - &mmc0 { - vmmc-supply = <®_vcc3v3>; - bus-width = <4>; -@@ -168,14 +170,6 @@ - status = "okay"; - }; - --&pio { -- usb0_id_detect_pin: usb0-id-detect-pin { -- pins = "PH4"; -- function = "gpio_in"; -- bias-pull-up; -- }; --}; -- - ®_ahci_5v { - gpio = <&pio 7 2 GPIO_ACTIVE_HIGH>; /* PH2 */ - status = "okay"; -@@ -226,9 +220,7 @@ - }; - - &usbphy { -- pinctrl-names = "default"; -- pinctrl-0 = <&usb0_id_detect_pin>; -- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -+ usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */ - usb1_vbus-supply = <®_usb1_vbus>; - usb2_vbus-supply = <®_usb1_vbus>; - status = "okay"; -diff --git a/arch/arm/dts/sun7i-a20-pcduino3.dts b/arch/arm/dts/sun7i-a20-pcduino3.dts -index a72ed4318d..cc8271d777 100644 ---- a/arch/arm/dts/sun7i-a20-pcduino3.dts -+++ b/arch/arm/dts/sun7i-a20-pcduino3.dts -@@ -122,13 +122,9 @@ - &gmac { - pinctrl-names = "default"; - pinctrl-0 = <&gmac_mii_pins>; -- phy = <&phy1>; -+ phy-handle = <&phy1>; - phy-mode = "mii"; - status = "okay"; -- -- phy1: ethernet-phy@1 { -- reg = <1>; -- }; - }; - - &i2c0 { -@@ -149,6 +145,12 @@ - status = "okay"; - }; - -+&gmac_mdio { -+ phy1: ethernet-phy@1 { -+ reg = <1>; -+ }; -+}; -+ - &mmc0 { - vmmc-supply = <®_vcc3v3>; - bus-width = <4>; -@@ -168,14 +170,6 @@ - status = "okay"; - }; - --&pio { -- usb0_id_detect_pin: usb0-id-detect-pin { -- pins = "PH4"; -- function = "gpio_in"; -- bias-pull-up; -- }; --}; -- - ®_ahci_5v { - gpio = <&pio 7 2 GPIO_ACTIVE_HIGH>; - status = "okay"; -@@ -226,9 +220,7 @@ - }; - - &usbphy { -- pinctrl-names = "default"; -- pinctrl-0 = <&usb0_id_detect_pin>; -- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -+ usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */ - usb1_vbus-supply = <®_usb1_vbus>; - usb2_vbus-supply = <®_usb2_vbus>; - status = "okay"; -diff --git a/arch/arm/dts/sun7i-a20-wexler-tab7200.dts b/arch/arm/dts/sun7i-a20-wexler-tab7200.dts -index ffade253d1..6a66b0432d 100644 ---- a/arch/arm/dts/sun7i-a20-wexler-tab7200.dts -+++ b/arch/arm/dts/sun7i-a20-wexler-tab7200.dts -@@ -156,14 +156,6 @@ - status = "okay"; - }; - --&pio { -- usb0_id_detect_pin: usb0-id-detect-pin { -- pins = "PH4"; -- function = "gpio_in"; -- bias-pull-up; -- }; --}; -- - &pwm { - pinctrl-names = "default"; - pinctrl-0 = <&pwm0_pin>; -@@ -223,9 +215,7 @@ - }; - - &usbphy { -- pinctrl-names = "default"; -- pinctrl-0 = <&usb0_id_detect_pin>; -- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -+ usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */ - usb0_vbus_power-supply = <&usb_power_supply>; - usb0_vbus-supply = <®_usb0_vbus>; - usb1_vbus-supply = <®_usb1_vbus>; -diff --git a/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts b/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts -index c27e56091f..3bfae98f3c 100644 ---- a/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts -+++ b/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts -@@ -81,13 +81,9 @@ - &gmac { - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; -- phy = <&phy1>; -+ phy-handle = <&phy1>; - phy-mode = "rgmii"; - status = "okay"; -- -- phy1: ethernet-phy@1 { -- reg = <1>; -- }; - }; - - &i2c0 { -@@ -110,6 +106,12 @@ - - #include "axp209.dtsi" - -+&gmac_mdio { -+ phy1: ethernet-phy@1 { -+ reg = <1>; -+ }; -+}; -+ - &mmc0 { - vmmc-supply = <®_vcc3v3>; - bus-width = <4>; -@@ -145,14 +147,6 @@ - status = "okay"; - }; - --&pio { -- usb0_id_detect_pin: usb0-id-detect-pin { -- pins = "PH4"; -- function = "gpio_in"; -- bias-pull-up; -- }; --}; -- - ®_dcdc2 { - regulator-always-on; - regulator-min-microvolt = <1000000>; -@@ -206,9 +200,7 @@ - }; - - &usbphy { -- pinctrl-names = "default"; -- pinctrl-0 = <&usb0_id_detect_pin>; -- usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -+ usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */ - usb0_vbus_power-supply = <&usb_power_supply>; - usb0_vbus-supply = <®_usb0_vbus>; - usb1_vbus-supply = <®_usb1_vbus>; -diff --git a/arch/arm/dts/sun7i-a20.dtsi b/arch/arm/dts/sun7i-a20.dtsi -index 641a8fa6d4..6d6a37940d 100644 ---- a/arch/arm/dts/sun7i-a20.dtsi -+++ b/arch/arm/dts/sun7i-a20.dtsi -@@ -47,6 +47,7 @@ - #include - #include - #include -+#include - - / { - interrupt-parent = <&gic>; -@@ -180,7 +181,7 @@ - default-pool { - compatible = "shared-dma-pool"; - size = <0x6000000>; -- alloc-ranges = <0x4a000000 0x6000000>; -+ alloc-ranges = <0x40000000 0x10000000>; - reusable; - linux,cma-default; - }; -@@ -333,7 +334,7 @@ - #dma-cells = <2>; - }; - -- nfc: nand@1c03000 { -+ nfc: nand-controller@1c03000 { - compatible = "allwinner,sun4i-a10-nand"; - reg = <0x01c03000 0x1000>; - interrupts = ; -@@ -376,6 +377,16 @@ - num-cs = <1>; - }; - -+ csi0: csi@1c09000 { -+ compatible = "allwinner,sun7i-a20-csi0"; -+ reg = <0x01c09000 0x1000>; -+ interrupts = ; -+ clocks = <&ccu CLK_AHB_CSI0>, <&ccu CLK_CSI_SCLK>, <&ccu CLK_DRAM_CSI0>; -+ clock-names = "bus", "isp", "ram"; -+ resets = <&ccu RST_CSI0>; -+ status = "disabled"; -+ }; -+ - emac: ethernet@1c0b000 { - compatible = "allwinner,sun4i-a10-emac"; - reg = <0x01c0b000 0x1000>; -@@ -394,11 +405,12 @@ - }; - - tcon0: lcd-controller@1c0c000 { -- compatible = "allwinner,sun7i-a20-tcon"; -+ compatible = "allwinner,sun7i-a20-tcon0", -+ "allwinner,sun7i-a20-tcon"; - reg = <0x01c0c000 0x1000>; - interrupts = ; -- resets = <&ccu RST_TCON0>; -- reset-names = "lcd"; -+ resets = <&ccu RST_TCON0>, <&ccu RST_LVDS>; -+ reset-names = "lcd", "lvds"; - clocks = <&ccu CLK_AHB_LCD0>, - <&ccu CLK_TCON0_CH0>, - <&ccu CLK_TCON0_CH1>; -@@ -406,6 +418,7 @@ - "tcon-ch0", - "tcon-ch1"; - clock-output-names = "tcon0-pixel-clock"; -+ #clock-cells = <0>; - dmas = <&dma SUN4I_DMA_DEDICATED 14>; - - ports { -@@ -443,7 +456,8 @@ - }; - - tcon1: lcd-controller@1c0d000 { -- compatible = "allwinner,sun7i-a20-tcon"; -+ compatible = "allwinner,sun7i-a20-tcon1", -+ "allwinner,sun7i-a20-tcon"; - reg = <0x01c0d000 0x1000>; - interrupts = ; - resets = <&ccu RST_TCON1>; -@@ -455,6 +469,7 @@ - "tcon-ch0", - "tcon-ch1"; - clock-output-names = "tcon1-pixel-clock"; -+ #clock-cells = <0>; - dmas = <&dma SUN4I_DMA_DEDICATED 15>; - - ports { -@@ -586,13 +601,14 @@ - phy-names = "usb"; - extcon = <&usbphy 0>; - allwinner,sram = <&otg_sram 1>; -+ dr_mode = "otg"; - status = "disabled"; - }; - - usbphy: phy@1c13400 { - #phy-cells = <1>; - compatible = "allwinner,sun7i-a20-usb-phy"; -- reg = <0x01c13400 0x10 0x01c14800 0x4 0x01c1c800 0x4>; -+ reg = <0x01c13400 0x10>, <0x01c14800 0x4>, <0x01c1c800 0x4>; - reg-names = "phy_ctrl", "pmu1", "pmu2"; - clocks = <&ccu CLK_USB_PHY>; - clock-names = "usb_phy"; -@@ -716,6 +732,17 @@ - status = "disabled"; - }; - -+ csi1: csi@1c1d000 { -+ compatible = "allwinner,sun7i-a20-csi1", -+ "allwinner,sun4i-a10-csi1"; -+ reg = <0x01c1d000 0x1000>; -+ interrupts = ; -+ clocks = <&ccu CLK_AHB_CSI1>, <&ccu CLK_DRAM_CSI1>; -+ clock-names = "bus", "ram"; -+ resets = <&ccu RST_CSI1>; -+ status = "disabled"; -+ }; -+ - spi3: spi@1c1f000 { - compatible = "allwinner,sun4i-a10-spi"; - reg = <0x01c1f000 0x1000>; -@@ -751,21 +778,70 @@ - #interrupt-cells = <3>; - #gpio-cells = <3>; - -+ /omit-if-no-ref/ -+ can_pa_pins: can-pa-pins { -+ pins = "PA16", "PA17"; -+ function = "can"; -+ }; -+ -+ /omit-if-no-ref/ - can_ph_pins: can-ph-pins { - pins = "PH20", "PH21"; - function = "can"; - }; - -+ /omit-if-no-ref/ - clk_out_a_pin: clk-out-a-pin { - pins = "PI12"; - function = "clk_out_a"; - }; - -+ /omit-if-no-ref/ - clk_out_b_pin: clk-out-b-pin { - pins = "PI13"; - function = "clk_out_b"; - }; - -+ /omit-if-no-ref/ -+ csi0_8bits_pins: csi-8bits-pins { -+ pins = "PE0", "PE2", "PE3", "PE4", "PE5", -+ "PE6", "PE7", "PE8", "PE9", "PE10", -+ "PE11"; -+ function = "csi0"; -+ }; -+ -+ /omit-if-no-ref/ -+ csi0_clk_pin: csi-clk-pin { -+ pins = "PE1"; -+ function = "csi0"; -+ }; -+ -+ /omit-if-no-ref/ -+ csi1_8bits_pg_pins: csi1-8bits-pg-pins { -+ pins = "PG0", "PG2", "PG3", "PG4", "PG5", -+ "PG6", "PG7", "PG8", "PG9", "PG10", -+ "PG11"; -+ function = "csi1"; -+ }; -+ -+ /omit-if-no-ref/ -+ csi1_24bits_ph_pins: csi1-24bits-ph-pins { -+ pins = "PH0", "PH1", "PH2", "PH3", "PH4", -+ "PH5", "PH6", "PH7", "PH8", "PH9", -+ "PH10", "PH11", "PH12", "PH13", "PH14", -+ "PH15", "PH16", "PH17", "PH18", "PH19", -+ "PH20", "PH21", "PH22", "PH23", "PH24", -+ "PH25", "PH26", "PH27"; -+ function = "csi1"; -+ }; -+ -+ /omit-if-no-ref/ -+ csi1_clk_pg_pin: csi1-clk-pg-pin { -+ pins = "PG1"; -+ function = "csi1"; -+ }; -+ -+ /omit-if-no-ref/ - emac_pa_pins: emac-pa-pins { - pins = "PA0", "PA1", "PA2", - "PA3", "PA4", "PA5", "PA6", -@@ -775,6 +851,17 @@ - function = "emac"; - }; - -+ /omit-if-no-ref/ -+ emac_ph_pins: emac-ph-pins { -+ pins = "PH8", "PH9", "PH10", "PH11", -+ "PH14", "PH15", "PH16", "PH17", -+ "PH18", "PH19", "PH20", "PH21", -+ "PH22", "PH23", "PH24", "PH25", -+ "PH26"; -+ function = "emac"; -+ }; -+ -+ /omit-if-no-ref/ - gmac_mii_pins: gmac-mii-pins { - pins = "PA0", "PA1", "PA2", - "PA3", "PA4", "PA5", "PA6", -@@ -784,6 +871,7 @@ - function = "gmac"; - }; - -+ /omit-if-no-ref/ - gmac_rgmii_pins: gmac-rgmii-pins { - pins = "PA0", "PA1", "PA2", - "PA3", "PA4", "PA5", "PA6", -@@ -798,46 +886,69 @@ - drive-strength = <40>; - }; - -+ /omit-if-no-ref/ - i2c0_pins: i2c0-pins { - pins = "PB0", "PB1"; - function = "i2c0"; - }; - -+ /omit-if-no-ref/ - i2c1_pins: i2c1-pins { - pins = "PB18", "PB19"; - function = "i2c1"; - }; - -+ /omit-if-no-ref/ - i2c2_pins: i2c2-pins { - pins = "PB20", "PB21"; - function = "i2c2"; - }; - -+ /omit-if-no-ref/ - i2c3_pins: i2c3-pins { - pins = "PI0", "PI1"; - function = "i2c3"; - }; - -+ /omit-if-no-ref/ - ir0_rx_pin: ir0-rx-pin { - pins = "PB4"; - function = "ir0"; - }; - -+ /omit-if-no-ref/ - ir0_tx_pin: ir0-tx-pin { - pins = "PB3"; - function = "ir0"; - }; - -+ /omit-if-no-ref/ - ir1_rx_pin: ir1-rx-pin { - pins = "PB23"; - function = "ir1"; - }; - -+ /omit-if-no-ref/ - ir1_tx_pin: ir1-tx-pin { - pins = "PB22"; - function = "ir1"; - }; - -+ /omit-if-no-ref/ -+ lcd_lvds0_pins: lcd-lvds0-pins { -+ pins = "PD0", "PD1", "PD2", "PD3", "PD4", -+ "PD5", "PD6", "PD7", "PD8", "PD9"; -+ function = "lvds0"; -+ }; -+ -+ /omit-if-no-ref/ -+ lcd_lvds1_pins: lcd-lvds1-pins { -+ pins = "PD10", "PD11", "PD12", "PD13", "PD14", -+ "PD15", "PD16", "PD17", "PD18", "PD19"; -+ function = "lvds1"; -+ }; -+ -+ /omit-if-no-ref/ - mmc0_pins: mmc0-pins { - pins = "PF0", "PF1", "PF2", - "PF3", "PF4", "PF5"; -@@ -846,6 +957,7 @@ - bias-pull-up; - }; - -+ /omit-if-no-ref/ - mmc2_pins: mmc2-pins { - pins = "PC6", "PC7", "PC8", - "PC9", "PC10", "PC11"; -@@ -854,6 +966,7 @@ - bias-pull-up; - }; - -+ /omit-if-no-ref/ - mmc3_pins: mmc3-pins { - pins = "PI4", "PI5", "PI6", - "PI7", "PI8", "PI9"; -@@ -862,127 +975,206 @@ - bias-pull-up; - }; - -+ /omit-if-no-ref/ - ps2_0_pins: ps2-0-pins { - pins = "PI20", "PI21"; - function = "ps2"; - }; - -+ /omit-if-no-ref/ - ps2_1_ph_pins: ps2-1-ph-pins { - pins = "PH12", "PH13"; - function = "ps2"; - }; - -+ /omit-if-no-ref/ - pwm0_pin: pwm0-pin { - pins = "PB2"; - function = "pwm"; - }; - -+ /omit-if-no-ref/ - pwm1_pin: pwm1-pin { - pins = "PI3"; - function = "pwm"; - }; - -+ /omit-if-no-ref/ - spdif_tx_pin: spdif-tx-pin { - pins = "PB13"; - function = "spdif"; - bias-pull-up; - }; - -+ /omit-if-no-ref/ - spi0_pi_pins: spi0-pi-pins { - pins = "PI11", "PI12", "PI13"; - function = "spi0"; - }; - -+ /omit-if-no-ref/ - spi0_cs0_pi_pin: spi0-cs0-pi-pin { - pins = "PI10"; - function = "spi0"; - }; - -+ /omit-if-no-ref/ - spi0_cs1_pi_pin: spi0-cs1-pi-pin { - pins = "PI14"; - function = "spi0"; - }; - -+ /omit-if-no-ref/ - spi1_pi_pins: spi1-pi-pins { - pins = "PI17", "PI18", "PI19"; - function = "spi1"; - }; - -+ /omit-if-no-ref/ - spi1_cs0_pi_pin: spi1-cs0-pi-pin { - pins = "PI16"; - function = "spi1"; - }; - -+ /omit-if-no-ref/ - spi2_pb_pins: spi2-pb-pins { - pins = "PB15", "PB16", "PB17"; - function = "spi2"; - }; - -+ /omit-if-no-ref/ - spi2_cs0_pb_pin: spi2-cs0-pb-pin { - pins = "PB14"; - function = "spi2"; - }; - -+ /omit-if-no-ref/ - spi2_pc_pins: spi2-pc-pins { - pins = "PC20", "PC21", "PC22"; - function = "spi2"; - }; - -+ /omit-if-no-ref/ - spi2_cs0_pc_pin: spi2-cs0-pc-pin { - pins = "PC19"; - function = "spi2"; - }; - -+ /omit-if-no-ref/ - uart0_pb_pins: uart0-pb-pins { - pins = "PB22", "PB23"; - function = "uart0"; - }; - -+ /omit-if-no-ref/ -+ uart0_pf_pins: uart0-pf-pins { -+ pins = "PF2", "PF4"; -+ function = "uart0"; -+ }; -+ -+ /omit-if-no-ref/ -+ uart1_pa_pins: uart1-pa-pins { -+ pins = "PA10", "PA11"; -+ function = "uart1"; -+ }; -+ -+ /omit-if-no-ref/ -+ uart1_cts_rts_pa_pins: uart1-cts-rts-pa-pins { -+ pins = "PA12", "PA13"; -+ function = "uart1"; -+ }; -+ -+ /omit-if-no-ref/ -+ uart2_pa_pins: uart2-pa-pins { -+ pins = "PA2", "PA3"; -+ function = "uart2"; -+ }; -+ -+ /omit-if-no-ref/ -+ uart2_cts_rts_pa_pins: uart2-cts-rts-pa-pins { -+ pins = "PA0", "PA1"; -+ function = "uart2"; -+ }; -+ -+ /omit-if-no-ref/ - uart2_pi_pins: uart2-pi-pins { - pins = "PI18", "PI19"; - function = "uart2"; - }; - -+ /omit-if-no-ref/ - uart2_cts_rts_pi_pins: uart2-cts-rts-pi-pins { - pins = "PI16", "PI17"; - function = "uart2"; - }; - -+ /omit-if-no-ref/ - uart3_pg_pins: uart3-pg-pins { - pins = "PG6", "PG7"; - function = "uart3"; - }; - -+ /omit-if-no-ref/ - uart3_cts_rts_pg_pins: uart3-cts-rts-pg-pins { - pins = "PG8", "PG9"; - function = "uart3"; - }; - -+ /omit-if-no-ref/ - uart3_ph_pins: uart3-ph-pins { - pins = "PH0", "PH1"; - function = "uart3"; - }; - -+ /omit-if-no-ref/ -+ uart3_cts_rts_ph_pins: uart3-cts-rts-ph-pins { -+ pins = "PH2", "PH3"; -+ function = "uart3"; -+ }; -+ -+ /omit-if-no-ref/ - uart4_pg_pins: uart4-pg-pins { - pins = "PG10", "PG11"; - function = "uart4"; - }; - -+ /omit-if-no-ref/ - uart4_ph_pins: uart4-ph-pins { - pins = "PH4", "PH5"; - function = "uart4"; - }; - -+ /omit-if-no-ref/ -+ uart5_ph_pins: uart5-ph-pins { -+ pins = "PH6", "PH7"; -+ function = "uart5"; -+ }; -+ -+ /omit-if-no-ref/ - uart5_pi_pins: uart5-pi-pins { - pins = "PI10", "PI11"; - function = "uart5"; - }; - -+ /omit-if-no-ref/ -+ uart6_pa_pins: uart6-pa-pins { -+ pins = "PA12", "PA13"; -+ function = "uart6"; -+ }; -+ -+ /omit-if-no-ref/ - uart6_pi_pins: uart6-pi-pins { - pins = "PI12", "PI13"; - function = "uart6"; - }; - -+ /omit-if-no-ref/ -+ uart7_pa_pins: uart7-pa-pins { -+ pins = "PA14", "PA15"; -+ function = "uart7"; -+ }; -+ -+ /omit-if-no-ref/ - uart7_pi_pins: uart7-pi-pins { - pins = "PI20", "PI21"; - function = "uart7"; -@@ -1004,6 +1196,8 @@ - wdt: watchdog@1c20c90 { - compatible = "allwinner,sun4i-a10-wdt"; - reg = <0x01c20c90 0x10>; -+ interrupts = ; -+ clocks = <&osc24M>; - }; - - rtc: rtc@1c20d00 { -@@ -1326,8 +1520,12 @@ - snps,fixed-burst; - snps,force_sf_dma_mode; - status = "disabled"; -- #address-cells = <1>; -- #size-cells = <0>; -+ -+ gmac_mdio: mdio { -+ compatible = "snps,dwmac-mdio"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ }; - }; - - hstimer@1c60000 { -@@ -1341,7 +1539,7 @@ - }; - - gic: interrupt-controller@1c81000 { -- compatible = "arm,gic-400", "arm,cortex-a7-gic", "arm,cortex-a15-gic"; -+ compatible = "arm,gic-400"; - reg = <0x01c81000 0x1000>, - <0x01c82000 0x2000>, - <0x01c84000 0x2000>, -diff --git a/arch/arm/dts/sun8i-a83t-bananapi-m3.dts b/arch/arm/dts/sun8i-a83t-bananapi-m3.dts -index eaff6fa401..431f70234d 100644 ---- a/arch/arm/dts/sun8i-a83t-bananapi-m3.dts -+++ b/arch/arm/dts/sun8i-a83t-bananapi-m3.dts -@@ -107,6 +107,14 @@ - }; - }; - -+&cpu0 { -+ cpu-supply = <®_dcdc2>; -+}; -+ -+&cpu100 { -+ cpu-supply = <®_dcdc3>; -+}; -+ - &de { - status = "okay"; - }; -@@ -123,7 +131,7 @@ - pinctrl-0 = <&emac_rgmii_pins>; - phy-supply = <®_sw>; - phy-handle = <&rgmii_phy>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - allwinner,rx-delay-ps = <700>; - allwinner,tx-delay-ps = <700>; - status = "okay"; -@@ -183,6 +191,11 @@ - status = "okay"; - }; - -+&r_cir { -+ clock-frequency = <3000000>; -+ status = "okay"; -+}; -+ - &r_rsb { - status = "okay"; - -@@ -224,6 +237,14 @@ - - #include "axp81x.dtsi" - -+&ac_power_supply { -+ status = "okay"; -+}; -+ -+&battery_power_supply { -+ status = "okay"; -+}; -+ - ®_aldo1 { - regulator-always-on; - regulator-min-microvolt = <1800000>; -@@ -301,8 +322,8 @@ - - ®_dldo3 { - regulator-always-on; -- regulator-min-microvolt = <2500000>; -- regulator-max-microvolt = <2500000>; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; - regulator-name = "vcc-pd"; - }; - -@@ -350,11 +371,37 @@ - status = "okay"; - }; - -+&uart1 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>; -+ uart-has-rtscts; -+ status = "okay"; -+ -+ bluetooth { -+ compatible = "brcm,bcm43438-bt"; -+ clocks = <&ac100_rtc 1>; -+ clock-names = "lpo"; -+ vbat-supply = <®_dldo1>; -+ vddio-supply = <®_dldo1>; -+ device-wakeup-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */ -+ host-wakeup-gpios = <&r_pio 0 5 GPIO_ACTIVE_HIGH>; /* PL5 */ -+ shutdown-gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */ -+ }; -+}; -+ - &usb_otg { -+ dr_mode = "otg"; -+ status = "okay"; -+}; -+ -+&usb_power_supply { - status = "okay"; - }; - - &usbphy { -+ usb0_id_det-gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>; /* PH11 */ -+ usb0_vbus_power-supply = <&usb_power_supply>; -+ usb0_vbus-supply = <®_drivevbus>; - usb1_vbus-supply = <®_usb1_vbus>; - status = "okay"; - }; -diff --git a/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts b/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts -index 5dba4fc310..d8326a5c68 100644 ---- a/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts -+++ b/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts -@@ -60,6 +60,17 @@ - stdout-path = "serial0:115200n8"; - }; - -+ hdmi-connector { -+ compatible = "hdmi-connector"; -+ type = "a"; -+ -+ port { -+ hdmi_con_in: endpoint { -+ remote-endpoint = <&hdmi_out_con>; -+ }; -+ }; -+ }; -+ - leds { - compatible = "gpio-leds"; - -@@ -90,7 +101,7 @@ - initial-mode = <1>; /* initialize in HUB mode */ - disabled-ports = <1>; - intn-gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */ -- reset-gpios = <&pio 4 16 GPIO_ACTIVE_HIGH>; /* PE16 */ -+ reset-gpios = <&pio 4 16 GPIO_ACTIVE_LOW>; /* PE16 */ - connect-gpios = <&pio 4 17 GPIO_ACTIVE_HIGH>; /* PE17 */ - refclk-frequency = <19200000>; - }; -@@ -145,6 +156,18 @@ - }; - }; - -+&cpu0 { -+ cpu-supply = <®_dcdc2>; -+}; -+ -+&cpu100 { -+ cpu-supply = <®_dcdc3>; -+}; -+ -+&de { -+ status = "okay"; -+}; -+ - &ehci0 { - /* GL830 USB-to-SATA bridge here */ - status = "okay"; -@@ -160,10 +183,20 @@ - pinctrl-0 = <&emac_rgmii_pins>; - phy-supply = <®_dldo4>; - phy-handle = <&rgmii_phy>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; -+ status = "okay"; -+}; -+ -+&hdmi { - status = "okay"; - }; - -+&hdmi_out { -+ hdmi_out_con: endpoint { -+ remote-endpoint = <&hdmi_con_in>; -+ }; -+}; -+ - &mdio { - rgmii_phy: ethernet-phy@1 { - compatible = "ethernet-phy-ieee802.3-c22"; -@@ -239,6 +272,14 @@ - - #include "axp81x.dtsi" - -+&ac_power_supply { -+ status = "okay"; -+}; -+ -+&battery_power_supply { -+ status = "okay"; -+}; -+ - ®_aldo1 { - regulator-always-on; - regulator-min-microvolt = <1800000>; -@@ -386,11 +427,37 @@ - status = "okay"; - }; - -+&uart1 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>; -+ uart-has-rtscts; -+ status = "okay"; -+ -+ bluetooth { -+ compatible = "brcm,bcm4330-bt"; -+ clocks = <&ac100_rtc 1>; -+ clock-names = "lpo"; -+ vbat-supply = <®_dcdc1>; -+ vddio-supply = <®_sw>; -+ device-wakeup-gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; /* PL10 */ -+ host-wakeup-gpios = <&r_pio 0 8 GPIO_ACTIVE_HIGH>; /* PL8 */ -+ shutdown-gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */ -+ }; -+}; -+ - &usb_otg { -+ dr_mode = "otg"; -+ status = "okay"; -+}; -+ -+&usb_power_supply { - status = "okay"; - }; - - &usbphy { -+ usb0_id_det-gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>; /* PH11 */ -+ usb0_vbus_power-supply = <&usb_power_supply>; -+ usb0_vbus-supply = <®_drivevbus>; - usb1_vbus-supply = <®_usb1_vbus>; - usb2_vbus-supply = <®_usb2_vbus>; - status = "okay"; -diff --git a/arch/arm/dts/sun8i-a83t.dtsi b/arch/arm/dts/sun8i-a83t.dtsi -index 2be23d6009..c010b27fdb 100644 ---- a/arch/arm/dts/sun8i-a83t.dtsi -+++ b/arch/arm/dts/sun8i-a83t.dtsi -@@ -50,6 +50,7 @@ - #include - #include - #include -+#include - - / { - interrupt-parent = <&gic>; -@@ -61,79 +62,91 @@ - #size-cells = <0>; - - cpu0: cpu@0 { -- clocks = <&ccu CLK_C0CPUX>; -- clock-names = "cpu"; - compatible = "arm,cortex-a7"; - device_type = "cpu"; -+ clocks = <&ccu CLK_C0CPUX>; - operating-points-v2 = <&cpu0_opp_table>; - cci-control-port = <&cci_control0>; - enable-method = "allwinner,sun8i-a83t-smp"; - reg = <0>; -+ #cooling-cells = <2>; - }; - -- cpu@1 { -+ cpu1: cpu@1 { - compatible = "arm,cortex-a7"; - device_type = "cpu"; -+ clocks = <&ccu CLK_C0CPUX>; - operating-points-v2 = <&cpu0_opp_table>; - cci-control-port = <&cci_control0>; - enable-method = "allwinner,sun8i-a83t-smp"; - reg = <1>; -+ #cooling-cells = <2>; - }; - -- cpu@2 { -+ cpu2: cpu@2 { - compatible = "arm,cortex-a7"; - device_type = "cpu"; -+ clocks = <&ccu CLK_C0CPUX>; - operating-points-v2 = <&cpu0_opp_table>; - cci-control-port = <&cci_control0>; - enable-method = "allwinner,sun8i-a83t-smp"; - reg = <2>; -+ #cooling-cells = <2>; - }; - -- cpu@3 { -+ cpu3: cpu@3 { - compatible = "arm,cortex-a7"; - device_type = "cpu"; -+ clocks = <&ccu CLK_C0CPUX>; - operating-points-v2 = <&cpu0_opp_table>; - cci-control-port = <&cci_control0>; - enable-method = "allwinner,sun8i-a83t-smp"; - reg = <3>; -+ #cooling-cells = <2>; - }; - - cpu100: cpu@100 { -- clocks = <&ccu CLK_C1CPUX>; -- clock-names = "cpu"; - compatible = "arm,cortex-a7"; - device_type = "cpu"; -+ clocks = <&ccu CLK_C1CPUX>; - operating-points-v2 = <&cpu1_opp_table>; - cci-control-port = <&cci_control1>; - enable-method = "allwinner,sun8i-a83t-smp"; - reg = <0x100>; -+ #cooling-cells = <2>; - }; - -- cpu@101 { -+ cpu101: cpu@101 { - compatible = "arm,cortex-a7"; - device_type = "cpu"; -+ clocks = <&ccu CLK_C1CPUX>; - operating-points-v2 = <&cpu1_opp_table>; - cci-control-port = <&cci_control1>; - enable-method = "allwinner,sun8i-a83t-smp"; - reg = <0x101>; -+ #cooling-cells = <2>; - }; - -- cpu@102 { -+ cpu102: cpu@102 { - compatible = "arm,cortex-a7"; - device_type = "cpu"; -+ clocks = <&ccu CLK_C1CPUX>; - operating-points-v2 = <&cpu1_opp_table>; - cci-control-port = <&cci_control1>; - enable-method = "allwinner,sun8i-a83t-smp"; - reg = <0x102>; -+ #cooling-cells = <2>; - }; - -- cpu@103 { -+ cpu103: cpu@103 { - compatible = "arm,cortex-a7"; - device_type = "cpu"; -+ clocks = <&ccu CLK_C1CPUX>; - operating-points-v2 = <&cpu1_opp_table>; - cci-control-port = <&cci_control1>; - enable-method = "allwinner,sun8i-a83t-smp"; - reg = <0x103>; -+ #cooling-cells = <2>; - }; - }; - -@@ -187,11 +200,6 @@ - status = "disabled"; - }; - -- memory { -- reg = <0x40000000 0x80000000>; -- device_type = "memory"; -- }; -- - cpu0_opp_table: opp_table0 { - compatible = "operating-points-v2"; - opp-shared; -@@ -306,16 +314,27 @@ - - display_clocks: clock@1000000 { - compatible = "allwinner,sun8i-a83t-de2-clk"; -- reg = <0x01000000 0x100000>; -- clocks = <&ccu CLK_PLL_DE>, -- <&ccu CLK_BUS_DE>; -- clock-names = "mod", -- "bus"; -+ reg = <0x01000000 0x10000>; -+ clocks = <&ccu CLK_BUS_DE>, -+ <&ccu CLK_PLL_DE>; -+ clock-names = "bus", -+ "mod"; - resets = <&ccu RST_BUS_DE>; - #clock-cells = <1>; - #reset-cells = <1>; - }; - -+ rotate: rotate@1020000 { -+ compatible = "allwinner,sun8i-a83t-de2-rotate"; -+ reg = <0x1020000 0x10000>; -+ interrupts = ; -+ clocks = <&display_clocks CLK_BUS_ROT>, -+ <&display_clocks CLK_ROT>; -+ clock-names = "bus", -+ "mod"; -+ resets = <&display_clocks RST_ROT>; -+ }; -+ - mixer0: mixer@1100000 { - compatible = "allwinner,sun8i-a83t-de2-mixer-0"; - reg = <0x01100000 0x100000>; -@@ -338,6 +357,11 @@ - reg = <0>; - remote-endpoint = <&tcon0_in_mixer0>; - }; -+ -+ mixer0_out_tcon1: endpoint@1 { -+ reg = <1>; -+ remote-endpoint = <&tcon1_in_mixer0>; -+ }; - }; - }; - }; -@@ -356,9 +380,17 @@ - #size-cells = <0>; - - mixer1_out: port@1 { -+ #address-cells = <1>; -+ #size-cells = <0>; - reg = <1>; - -- mixer1_out_tcon1: endpoint { -+ mixer1_out_tcon0: endpoint@0 { -+ reg = <0>; -+ remote-endpoint = <&tcon0_in_mixer1>; -+ }; -+ -+ mixer1_out_tcon1: endpoint@1 { -+ reg = <1>; - remote-endpoint = <&tcon1_in_mixer1>; - }; - }; -@@ -425,6 +457,7 @@ - clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>; - clock-names = "ahb", "tcon-ch0"; - clock-output-names = "tcon-pixel-clock"; -+ #clock-cells = <0>; - resets = <&ccu RST_BUS_TCON0>, <&ccu RST_BUS_LVDS>; - reset-names = "lcd", "lvds"; - -@@ -441,11 +474,14 @@ - reg = <0>; - remote-endpoint = <&mixer0_out_tcon0>; - }; -+ -+ tcon0_in_mixer1: endpoint@1 { -+ reg = <1>; -+ remote-endpoint = <&mixer1_out_tcon0>; -+ }; - }; - - tcon0_out: port@1 { -- #address-cells = <1>; -- #size-cells = <0>; - reg = <1>; - }; - }; -@@ -465,9 +501,17 @@ - #size-cells = <0>; - - tcon1_in: port@0 { -+ #address-cells = <1>; -+ #size-cells = <0>; - reg = <0>; - -- tcon1_in_mixer1: endpoint { -+ tcon1_in_mixer0: endpoint@0 { -+ reg = <0>; -+ remote-endpoint = <&mixer0_out_tcon1>; -+ }; -+ -+ tcon1_in_mixer1: endpoint@1 { -+ reg = <1>; - remote-endpoint = <&mixer1_out_tcon1>; - }; - }; -@@ -549,6 +593,31 @@ - sid: eeprom@1c14000 { - compatible = "allwinner,sun8i-a83t-sid"; - reg = <0x1c14000 0x400>; -+ #address-cells = <1>; -+ #size-cells = <1>; -+ -+ ths_calibration: thermal-sensor-calibration@34 { -+ reg = <0x34 8>; -+ }; -+ }; -+ -+ crypto: crypto@1c15000 { -+ compatible = "allwinner,sun8i-a83t-crypto"; -+ reg = <0x01c15000 0x1000>; -+ interrupts = ; -+ resets = <&ccu RST_BUS_SS>; -+ clocks = <&ccu CLK_BUS_SS>, <&ccu CLK_SS>; -+ clock-names = "bus", "mod"; -+ }; -+ -+ msgbox: mailbox@1c17000 { -+ compatible = "allwinner,sun8i-a83t-msgbox", -+ "allwinner,sun6i-a31-msgbox"; -+ reg = <0x01c17000 0x1000>; -+ clocks = <&ccu CLK_BUS_MSGBOX>; -+ resets = <&ccu RST_BUS_MSGBOX>; -+ interrupts = ; -+ #mbox-cells = <1>; - }; - - usb_otg: usb@1c19000 { -@@ -562,6 +631,7 @@ - phys = <&usbphy 0>; - phy-names = "usb"; - extcon = <&usbphy 0>; -+ dr_mode = "otg"; - status = "disabled"; - }; - -@@ -649,6 +719,20 @@ - #interrupt-cells = <3>; - #gpio-cells = <3>; - -+ /omit-if-no-ref/ -+ csi_8bit_parallel_pins: csi-8bit-parallel-pins { -+ pins = "PE0", "PE2", "PE3", "PE6", "PE7", -+ "PE8", "PE9", "PE10", "PE11", -+ "PE12", "PE13"; -+ function = "csi"; -+ }; -+ -+ /omit-if-no-ref/ -+ csi_mclk_pin: csi-mclk-pin { -+ pins = "PE1"; -+ function = "csi"; -+ }; -+ - emac_rgmii_pins: emac-rgmii-pins { - pins = "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", - "PD11", "PD12", "PD13", "PD14", "PD18", -@@ -676,6 +760,12 @@ - function = "i2c1"; - }; - -+ /omit-if-no-ref/ -+ i2c2_pe_pins: i2c2-pe-pins { -+ pins = "PE14", "PE15"; -+ function = "i2c2"; -+ }; -+ - i2c2_ph_pins: i2c2-ph-pins { - pins = "PH4", "PH5"; - function = "i2c2"; -@@ -747,10 +837,16 @@ - pins = "PG8", "PG9"; - function = "uart1"; - }; -+ -+ /omit-if-no-ref/ -+ uart2_pb_pins: uart2-pb-pins { -+ pins = "PB0", "PB1"; -+ function = "uart2"; -+ }; - }; - - timer@1c20c00 { -- compatible = "allwinner,sun4i-a10-timer"; -+ compatible = "allwinner,sun8i-a23-timer"; - reg = <0x01c20c00 0xa0>; - interrupts = , - ; -@@ -852,6 +948,39 @@ - status = "disabled"; - }; - -+ uart2: serial@1c28800 { -+ compatible = "snps,dw-apb-uart"; -+ reg = <0x01c28800 0x400>; -+ interrupts = ; -+ reg-shift = <2>; -+ reg-io-width = <4>; -+ clocks = <&ccu CLK_BUS_UART2>; -+ resets = <&ccu RST_BUS_UART2>; -+ status = "disabled"; -+ }; -+ -+ uart3: serial@1c28c00 { -+ compatible = "snps,dw-apb-uart"; -+ reg = <0x01c28c00 0x400>; -+ interrupts = ; -+ reg-shift = <2>; -+ reg-io-width = <4>; -+ clocks = <&ccu CLK_BUS_UART3>; -+ resets = <&ccu RST_BUS_UART3>; -+ status = "disabled"; -+ }; -+ -+ uart4: serial@1c29000 { -+ compatible = "snps,dw-apb-uart"; -+ reg = <0x01c29000 0x400>; -+ interrupts = ; -+ reg-shift = <2>; -+ reg-io-width = <4>; -+ clocks = <&ccu CLK_BUS_UART4>; -+ resets = <&ccu RST_BUS_UART4>; -+ status = "disabled"; -+ }; -+ - i2c0: i2c@1c2ac00 { - compatible = "allwinner,sun8i-a83t-i2c", - "allwinner,sun6i-a31-i2c"; -@@ -898,12 +1027,10 @@ - reg = <0x01c30000 0x104>; - interrupts = ; - interrupt-names = "macirq"; -- resets = <&ccu 13>; -- reset-names = "stmmaceth"; -- clocks = <&ccu 27>; -+ clocks = <&ccu CLK_BUS_EMAC>; - clock-names = "stmmaceth"; -- #address-cells = <1>; -- #size-cells = <0>; -+ resets = <&ccu RST_BUS_EMAC>; -+ reset-names = "stmmaceth"; - status = "disabled"; - - mdio: mdio { -@@ -914,7 +1041,7 @@ - }; - - gic: interrupt-controller@1c81000 { -- compatible = "arm,cortex-a7-gic", "arm,cortex-a15-gic"; -+ compatible = "arm,gic-400"; - reg = <0x01c81000 0x1000>, - <0x01c82000 0x2000>, - <0x01c84000 0x2000>, -@@ -924,6 +1051,21 @@ - interrupts = ; - }; - -+ csi: camera@1cb0000 { -+ compatible = "allwinner,sun8i-a83t-csi"; -+ reg = <0x01cb0000 0x1000>; -+ interrupts = ; -+ clocks = <&ccu CLK_BUS_CSI>, -+ <&ccu CLK_CSI_SCLK>, -+ <&ccu CLK_DRAM_CSI>; -+ clock-names = "bus", "mod", "ram"; -+ resets = <&ccu RST_BUS_CSI>; -+ status = "disabled"; -+ -+ csi_in: port { -+ }; -+ }; -+ - hdmi: hdmi@1ee0000 { - compatible = "allwinner,sun8i-a83t-dw-hdmi"; - reg = <0x01ee0000 0x10000>; -@@ -935,7 +1077,7 @@ - resets = <&ccu RST_BUS_HDMI1>; - reset-names = "ctrl"; - phys = <&hdmi_phy>; -- phy-names = "hdmi-phy"; -+ phy-names = "phy"; - pinctrl-names = "default"; - pinctrl-0 = <&hdmi_pins>; - status = "disabled"; -@@ -981,7 +1123,7 @@ - compatible = "allwinner,sun8i-a83t-r-ccu"; - reg = <0x01f01400 0x400>; - clocks = <&osc24M>, <&osc16Md512>, <&osc16M>, -- <&ccu 6>; -+ <&ccu CLK_PLL_PERIPH>; - clock-names = "hosc", "losc", "iosc", "pll-periph"; - #clock-cells = <1>; - #reset-cells = <1>; -@@ -992,6 +1134,26 @@ - reg = <0x1f01c00 0x400>; - }; - -+ r_cir: ir@1f02000 { -+ compatible = "allwinner,sun8i-a83t-ir", -+ "allwinner,sun6i-a31-ir"; -+ clocks = <&r_ccu CLK_APB0_IR>, <&r_ccu CLK_IR>; -+ clock-names = "apb", "ir"; -+ resets = <&r_ccu RST_APB0_IR>; -+ interrupts = ; -+ reg = <0x01f02000 0x400>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&r_cir_pin>; -+ status = "disabled"; -+ }; -+ -+ r_lradc: lradc@1f03c00 { -+ compatible = "allwinner,sun8i-a83t-r-lradc"; -+ reg = <0x01f03c00 0x100>; -+ interrupts = ; -+ status = "disabled"; -+ }; -+ - r_pio: pinctrl@1f02c00 { - compatible = "allwinner,sun8i-a83t-r-pinctrl"; - reg = <0x01f02c00 0x400>; -@@ -1004,6 +1166,11 @@ - interrupt-controller; - #interrupt-cells = <3>; - -+ r_cir_pin: r-cir-pin { -+ pins = "PL12"; -+ function = "s_cir_rx"; -+ }; -+ - r_rsb_pins: r-rsb-pins { - pins = "PL0", "PL1"; - function = "s_rsb"; -@@ -1026,5 +1193,82 @@ - #address-cells = <1>; - #size-cells = <0>; - }; -+ -+ ths: thermal-sensor@1f04000 { -+ compatible = "allwinner,sun8i-a83t-ths"; -+ reg = <0x01f04000 0x100>; -+ interrupts = ; -+ nvmem-cells = <&ths_calibration>; -+ nvmem-cell-names = "calibration"; -+ #thermal-sensor-cells = <1>; -+ }; -+ }; -+ -+ thermal-zones { -+ cpu0_thermal: cpu0-thermal { -+ polling-delay-passive = <0>; -+ polling-delay = <0>; -+ thermal-sensors = <&ths 0>; -+ -+ trips { -+ cpu0_hot: cpu-hot { -+ temperature = <80000>; -+ hysteresis = <2000>; -+ type = "passive"; -+ }; -+ -+ cpu0_very_hot: cpu-very-hot { -+ temperature = <100000>; -+ hysteresis = <0>; -+ type = "critical"; -+ }; -+ }; -+ -+ cooling-maps { -+ cpu-hot-limit { -+ trip = <&cpu0_hot>; -+ cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, -+ <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, -+ <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, -+ <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; -+ }; -+ }; -+ }; -+ -+ cpu1_thermal: cpu1-thermal { -+ polling-delay-passive = <0>; -+ polling-delay = <0>; -+ thermal-sensors = <&ths 1>; -+ -+ trips { -+ cpu1_hot: cpu-hot { -+ temperature = <80000>; -+ hysteresis = <2000>; -+ type = "passive"; -+ }; -+ -+ cpu1_very_hot: cpu-very-hot { -+ temperature = <100000>; -+ hysteresis = <0>; -+ type = "critical"; -+ }; -+ }; -+ -+ cooling-maps { -+ cpu-hot-limit { -+ trip = <&cpu1_hot>; -+ cooling-device = <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, -+ <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, -+ <&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, -+ <&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; -+ }; -+ }; -+ }; -+ -+ gpu_thermal: gpu-thermal { -+ polling-delay-passive = <0>; -+ polling-delay = <0>; -+ thermal-sensors = <&ths 2>; -+ }; - }; - }; -diff --git a/arch/arm/dts/sun8i-h3-orangepi-pc-plus.dts b/arch/arm/dts/sun8i-h3-orangepi-pc-plus.dts -index 71fb732089..babf4cf1b2 100644 ---- a/arch/arm/dts/sun8i-h3-orangepi-pc-plus.dts -+++ b/arch/arm/dts/sun8i-h3-orangepi-pc-plus.dts -@@ -53,11 +53,6 @@ - }; - }; - --&emac { -- /* LEDs changed to active high on the plus */ -- /delete-property/ allwinner,leds-active-low; --}; -- - &mmc1 { - vmmc-supply = <®_vcc3v3>; - bus-width = <4>; -diff --git a/arch/arm/dts/sun8i-h3-orangepi-plus2e.dts b/arch/arm/dts/sun8i-h3-orangepi-plus2e.dts -index 6dbf7b2e0c..b6ca45d18e 100644 ---- a/arch/arm/dts/sun8i-h3-orangepi-plus2e.dts -+++ b/arch/arm/dts/sun8i-h3-orangepi-plus2e.dts -@@ -67,7 +67,7 @@ - pinctrl-0 = <&emac_rgmii_pins>; - phy-supply = <®_gmac_3v3>; - phy-handle = <&ext_rgmii_phy>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - status = "okay"; - }; - -diff --git a/arch/arm/dts/sun8i-h3-orangepi-zero-plus2.dts b/arch/arm/dts/sun8i-h3-orangepi-zero-plus2.dts -index b8f46e2802..251bbab7d7 100644 ---- a/arch/arm/dts/sun8i-h3-orangepi-zero-plus2.dts -+++ b/arch/arm/dts/sun8i-h3-orangepi-zero-plus2.dts -@@ -70,6 +70,21 @@ - }; - }; - -+ leds { -+ compatible = "gpio-leds"; -+ -+ pwr { -+ label = "orangepi:green:pwr"; -+ gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; -+ default-state = "on"; -+ }; -+ -+ status { -+ label = "orangepi:red:status"; -+ gpios = <&pio 0 17 GPIO_ACTIVE_HIGH>; -+ }; -+ }; -+ - reg_vcc3v3: vcc3v3 { - compatible = "regulator-fixed"; - regulator-name = "vcc3v3"; -@@ -88,6 +103,10 @@ - status = "okay"; - }; - -+&ehci0 { -+ status = "okay"; -+}; -+ - &hdmi { - status = "okay"; - }; -@@ -132,8 +151,27 @@ - status = "okay"; - }; - -+&ohci0 { -+ status = "okay"; -+}; -+ - &uart0 { - pinctrl-names = "default"; - pinctrl-0 = <&uart0_pa_pins>; - status = "okay"; - }; -+ -+&usb_otg { -+ /* -+ * According to schematics CN1 MicroUSB port can be used to take -+ * external 5V to power up the board VBUS. On the contrary CN1 MicroUSB -+ * port cannot provide power externally even if the board is powered -+ * via GPIO pins. It thus makes sense to force peripheral mode. -+ */ -+ dr_mode = "peripheral"; -+ status = "okay"; -+}; -+ -+&usbphy { -+ status = "okay"; -+}; -diff --git a/arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts b/arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts -index 15c22b06fc..47954551f5 100644 ---- a/arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts -+++ b/arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts -@@ -120,7 +120,7 @@ - pinctrl-names = "default"; - pinctrl-0 = <&gmac_rgmii_pins>; - phy-handle = <&phy1>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - phy-supply = <®_dc1sw>; - status = "okay"; - }; -@@ -198,16 +198,16 @@ - }; - - ®_dc1sw { -- regulator-min-microvolt = <3000000>; -- regulator-max-microvolt = <3000000>; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; - regulator-name = "vcc-gmac-phy"; - }; - - ®_dcdc1 { - regulator-always-on; -- regulator-min-microvolt = <3000000>; -- regulator-max-microvolt = <3000000>; -- regulator-name = "vcc-3v0"; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-3v3"; - }; - - ®_dcdc2 { -diff --git a/arch/arm/dts/sunxi-bananapi-m2-plus.dtsi b/arch/arm/dts/sunxi-bananapi-m2-plus.dtsi -index 39263e74fb..8e5cb3b3fd 100644 ---- a/arch/arm/dts/sunxi-bananapi-m2-plus.dtsi -+++ b/arch/arm/dts/sunxi-bananapi-m2-plus.dtsi -@@ -126,7 +126,7 @@ - pinctrl-0 = <&emac_rgmii_pins>; - phy-supply = <®_gmac_3v3>; - phy-handle = <&ext_rgmii_phy>; -- phy-mode = "rgmii"; -+ phy-mode = "rgmii-id"; - - status = "okay"; - }; --- -2.29.2 - diff --git a/IOMUX-Fix-buffer-overflow-in-iomux_replace_device.patch b/IOMUX-Fix-buffer-overflow-in-iomux_replace_device.patch deleted file mode 100644 index d2c55f6..0000000 --- a/IOMUX-Fix-buffer-overflow-in-iomux_replace_device.patch +++ /dev/null @@ -1,152 +0,0 @@ -From patchwork Sun Apr 25 23:08:03 2021 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Yuichiro Goto -X-Patchwork-Id: 1470141 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dkim=pass (2048-bit key; - unprotected) header.d=k-tech-co-jp.20150623.gappssmtp.com - header.i=@k-tech-co-jp.20150623.gappssmtp.com header.a=rsa-sha256 - header.s=20150623 header.b=aG2evrkI; - dkim-atps=neutral -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4FT3cr5pLLz9sV5 - for ; Mon, 26 Apr 2021 09:09:16 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id DAAE481FCD; - Mon, 26 Apr 2021 01:09:09 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=k-tech.co.jp -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=k-tech-co-jp.20150623.gappssmtp.com - header.i=@k-tech-co-jp.20150623.gappssmtp.com header.b="aG2evrkI"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 1971382057; Mon, 26 Apr 2021 01:09:06 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-pf1-x42a.google.com (mail-pf1-x42a.google.com - [IPv6:2607:f8b0: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 E883680EC1 - for ; Mon, 26 Apr 2021 01:09:00 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=k-tech.co.jp -Authentication-Results: phobos.denx.de; - spf=none smtp.mailfrom=goto@k-tech.co.jp -Received: by mail-pf1-x42a.google.com with SMTP id h11so6707950pfn.0 - for ; Sun, 25 Apr 2021 16:09:00 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=k-tech-co-jp.20150623.gappssmtp.com; s=20150623; - h=from:to:cc:subject:date:message-id; - bh=ToYmsqKBzr3zTVvJdRjIX1oCqkuII+g2LxuLKTcyCm4=; - b=aG2evrkIlEWR+2+O4uf7Z5Z5dADCoHUqUfa4wv2uGZq16LXSZXAfr96QVEaI+Ysrq9 - S1Wd+94g29kp+qnFc4wLcMUomaZnm0eH+oliBgyqOH/LAB8n7c8avUhcTMJA60McRjeb - lMsHOX4LwDCbN9Nem+kDEPLIGsYIlg4bQczceWdlw5oHTMNRrj3uqSx1S52Y2xVo9Tl2 - fGiB75T4OGHlO+4ZfXl6Ky1Q6j8eRAp0ysfO9ZY/SjDd8dFowmDn8nCU3Bmy4boJaiK9 - uBxgI8S7h0uSltG+o8KcszPN/fpi2H8oBFuia8kJ1X/mrQ9AK4+n9jA4m5XlsXuyJYon - NSNA== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20161025; - h=x-gm-message-state:from:to:cc:subject:date:message-id; - bh=ToYmsqKBzr3zTVvJdRjIX1oCqkuII+g2LxuLKTcyCm4=; - b=idcco1cmfR9jg46QoNPi2i5Xp7KywMSugg82Gr+a6q2d+z8Y0bAWm69vVvCv27OuBe - EqSikfaPx616hVlE2JSRYhiQjTAkRivx+HbZTOo88Ud3nFuZSye7IzWVgTJQfYeMwk2t - ur3IC3wNHP8ZJZd7/ncR5bQtEH1dnQnntzZ/ObcQ2qYD7tE8i3XirP+t6bEXgfve6l3z - h8uhRhUdonx3My77SfoguPZ7agogNuJwKDxEOv2AiQC+sgi6hMSoCM5I/CTY5XBXWBcG - DsVq6CFis7XI0q4vT+fJnobTZcY+apdx6CQgbTHscvNNANNVQTcW4AmZtdMU00Py7rwl - +dlw== -X-Gm-Message-State: AOAM530gSI6IYWTUQZeEHkOvsFu+rBGyB3fBUHY4LPk43shM1KC4uXnK - KlhhaOqM5unov+ya4+knemWrDiRXPLvgHgVJ -X-Google-Smtp-Source: - ABdhPJz3Z6j4z6TV4bjvrr75pCyOMhSLC37qICUXTZOgOyojVAW7AH0TT24BTcUVdx8V5n2RwnQzBA== -X-Received: by 2002:a62:8c8c:0:b029:253:31e:55cb with SMTP id - m134-20020a628c8c0000b0290253031e55cbmr14541132pfd.27.1619392138942; - Sun, 25 Apr 2021 16:08:58 -0700 (PDT) -Received: from lubuntu1804.flets-east.jp (p1086-maru1shinjuku.tokyo.ocn.ne.jp. - [61.208.220.86]) - by smtp.gmail.com with ESMTPSA id i63sm9669769pfg.112.2021.04.25.16.08.57 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Sun, 25 Apr 2021 16:08:58 -0700 (PDT) -From: Yuichiro Goto -To: u-boot@lists.denx.de -Cc: Yuichiro Goto , Peter Robinson , - Andy Shevchenko , - Nicolas Saenz Julienne -Subject: [PATCH v3] IOMUX: Fix buffer overflow in iomux_replace_device() -Date: Mon, 26 Apr 2021 08:08:03 +0900 -Message-Id: <20210425230803.3055-1-goto@k-tech.co.jp> -X-Mailer: git-send-email 2.17.1 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de -X-Virus-Status: Clean - -Use of strcat() against an uninitialized buffer would lead -to buffer overflow. This patch fixes it. - -Fixes: 694cd5618c ("IOMUX: Introduce iomux_replace_device()") -Signed-off-by: Yuichiro Goto -Cc: Peter Robinson -Cc: Andy Shevchenko -Cc: Nicolas Saenz Julienne -Reviewed-by: Andy Shevchenko ---- - -Changes for v3: -- Add a Fixes tag in commit message -- Refactor the patch per suggestion from Andy Shevchenko - -Changes for v2: -- Add "IOMUX" in title - - common/iomux.c | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/common/iomux.c b/common/iomux.c -index b9088aa3b5..c428f7110a 100644 ---- a/common/iomux.c -+++ b/common/iomux.c -@@ -158,8 +158,12 @@ int iomux_replace_device(const int console, const char *old, const char *new) - return -ENOMEM; - } - -- strcat(tmp, ","); -- strcat(tmp, name); -+ if (arg) { -+ strcat(tmp, ","); -+ strcat(tmp, name); -+ } -+ else -+ strcpy(tmp, name); - - arg = tmp; - size = strlen(tmp) + 1; diff --git a/efi_loader-loosen-buffer-parameter-check-in-efi_file_read_int.patch b/efi_loader-loosen-buffer-parameter-check-in-efi_file_read_int.patch index b221ddd..8bbf9d9 100644 --- a/efi_loader-loosen-buffer-parameter-check-in-efi_file_read_int.patch +++ b/efi_loader-loosen-buffer-parameter-check-in-efi_file_read_int.patch @@ -4,6 +4,7 @@ MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Peng Fan (OSS)" X-Patchwork-Id: 1471143 +X-Patchwork-Delegate: xypron.glpk@gmx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org @@ -187,6 +188,8 @@ Cc: Heinrich Schuchardt Cc: Stefan Sørensen Tested-by: Peter Robinson Signed-off-by: Peng Fan +Reviewed-by: Heinrich Schuchardt +Tested-by: Michal Simek --- V2: diff --git a/rk3399-Pinebook-pro-EDP-support.patch b/rk3399-Pinebook-pro-EDP-support.patch deleted file mode 100644 index 43a52ad..0000000 --- a/rk3399-Pinebook-pro-EDP-support.patch +++ /dev/null @@ -1,1257 +0,0 @@ -From patchwork Fri Mar 5 10:27:46 2021 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1447757 -X-Patchwork-Delegate: agust@denx.de -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4DsPKq3YGqz9sRR - for ; Fri, 5 Mar 2021 21:36:31 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 18DC78269D; - Fri, 5 Mar 2021 11:35:59 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=fail (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 4DDC182036; Fri, 5 Mar 2021 11:35:50 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE - autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org - [IPv6:2001:bc8:3430:1000::c0f:fee]) - (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id D4F2882036 - for ; Fri, 5 Mar 2021 11:35:43 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org -Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 123CD18069A; Fri, 5 Mar 2021 11:35:41 +0100 (CET) -Message-ID: <20210305103307.004041703@rtp-net.org> -User-Agent: quilt/0.66 -Date: Fri, 05 Mar 2021 11:27:46 +0100 -From: Arnaud Patard (Rtp) -To: u-boot@lists.denx.de -Cc: Kever Yang , - Anatolij Gustschin , - Philipp Tomsich , - Peter Robinson , - Samuel Dionne-Riel , - Alper Nebi Yasak , - Arnaud Patard -Subject: [patch v4 1/9] rockchip: video: vop: Use endpoint compatible string - to find VOP mode -References: <20210305102745.078091129@rtp-net.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de -X-Virus-Status: Clean - -The current code is using an hard coded enum and the of node reg value of -endpoint to find out if the endpoint is mipi/hdmi/lvds/edp/dp. The order -is different between rk3288, rk3399 vop little, rk3399 vop big. - -A possible solution would be to make sure that the rk3288.dtsi and -rk3399.dtsi files have "expected" reg value or an other solution is -to find the kind of endpoint by comparing the endpoint compatible value. - -This patch is implementing the more flexible second solution. - -Signed-off-by: Arnaud Patard -Tested-by: Peter Robinson - -Index: u-boot/arch/arm/include/asm/arch-rockchip/vop_rk3288.h -=================================================================== ---- u-boot.orig/arch/arm/include/asm/arch-rockchip/vop_rk3288.h -+++ u-boot/arch/arm/include/asm/arch-rockchip/vop_rk3288.h -@@ -85,26 +85,13 @@ enum { - LB_RGB_1280X8 = 0x5 - }; - --#if defined(CONFIG_ROCKCHIP_RK3399) - enum vop_modes { - VOP_MODE_EDP = 0, - VOP_MODE_MIPI, - VOP_MODE_HDMI, -- VOP_MODE_MIPI1, -- VOP_MODE_DP, -- VOP_MODE_NONE, --}; --#else --enum vop_modes { -- VOP_MODE_EDP = 0, -- VOP_MODE_HDMI, - VOP_MODE_LVDS, -- VOP_MODE_MIPI, -- VOP_MODE_NONE, -- VOP_MODE_AUTO_DETECT, -- VOP_MODE_UNKNOWN, -+ VOP_MODE_DP, - }; --#endif - - /* VOP_VERSION_INFO */ - #define M_FPGA_VERSION (0xffff << 16) -Index: u-boot/drivers/video/rockchip/rk_vop.c -=================================================================== ---- u-boot.orig/drivers/video/rockchip/rk_vop.c -+++ u-boot/drivers/video/rockchip/rk_vop.c -@@ -236,12 +236,11 @@ static int rk_display_init(struct udevic - struct clk clk; - enum video_log2_bpp l2bpp; - ofnode remote; -+ const char *compat; - - debug("%s(%s, %lu, %s)\n", __func__, - dev_read_name(dev), fbbase, ofnode_get_name(ep_node)); - -- vop_id = ofnode_read_s32_default(ep_node, "reg", -1); -- debug("vop_id=%d\n", vop_id); - ret = ofnode_read_u32(ep_node, "remote-endpoint", &remote_phandle); - if (ret) - return ret; -@@ -283,6 +282,28 @@ static int rk_display_init(struct udevic - if (disp) - break; - }; -+ compat = ofnode_get_property(remote, "compatible", NULL); -+ if (!compat) { -+ debug("%s(%s): Failed to find compatible property\n", -+ __func__, dev_read_name(dev)); -+ return -EINVAL; -+ } -+ if (strstr(compat, "edp")) { -+ vop_id = VOP_MODE_EDP; -+ } else if (strstr(compat, "mipi")) { -+ vop_id = VOP_MODE_MIPI; -+ } else if (strstr(compat, "hdmi")) { -+ vop_id = VOP_MODE_HDMI; -+ } else if (strstr(compat, "cdn-dp")) { -+ vop_id = VOP_MODE_DP; -+ } else if (strstr(compat, "lvds")) { -+ vop_id = VOP_MODE_LVDS; -+ } else { -+ debug("%s(%s): Failed to find vop mode for %s\n", -+ __func__, dev_read_name(dev), compat); -+ return -EINVAL; -+ } -+ debug("vop_id=%d\n", vop_id); - - disp_uc_plat = dev_get_uclass_plat(disp); - debug("Found device '%s', disp_uc_priv=%p\n", disp->name, disp_uc_plat); - -From patchwork Fri Mar 5 10:27:47 2021 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1447760 -X-Patchwork-Delegate: agust@denx.de -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4DsPLV0lZ1z9sRR - for ; Fri, 5 Mar 2021 21:37:06 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id D622682774; - Fri, 5 Mar 2021 11:36:10 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=fail (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id CF09E8206F; Fri, 5 Mar 2021 11:35: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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE - autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org - [IPv6:2001:bc8:3430:1000::c0f:fee]) - (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 02E608204B - for ; Fri, 5 Mar 2021 11:35:43 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org -Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 2D11018084F; Fri, 5 Mar 2021 11:35:41 +0100 (CET) -Message-ID: <20210305103307.057540339@rtp-net.org> -User-Agent: quilt/0.66 -Date: Fri, 05 Mar 2021 11:27:47 +0100 -From: Arnaud Patard (Rtp) -To: u-boot@lists.denx.de -Cc: Kever Yang , - Anatolij Gustschin , - Philipp Tomsich , - Peter Robinson , - Samuel Dionne-Riel , - Alper Nebi Yasak , - Arnaud Patard -Subject: [patch v4 2/9] rockchip: video: edp: Add rk3399 support -References: <20210305102745.078091129@rtp-net.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de -X-Virus-Status: Clean - -According to linux commit "drm/rockchip: analogix_dp: add rk3399 eDP -support" (82872e42bb1501dd9e60ca430f4bae45a469aa64), rk3288 and rk3399 -eDP IPs are nearly the same, the difference is in the grf register -(SOC_CON6 versus SOC_CON20). So, change the code to use the right -register on each IP. - -The clocks don't seem to be the same, the eDP clock is not at index 1 -on rk3399, so don't try changing the clock at index 1 to rate 0 on -rk3399. - -Signed-off-by: Arnaud Patard -Tested-by: Peter Robinson - -Index: u-boot/drivers/video/rockchip/rk_edp.c -=================================================================== ---- u-boot.orig/drivers/video/rockchip/rk_edp.c -+++ u-boot/drivers/video/rockchip/rk_edp.c -@@ -17,11 +17,10 @@ - #include - #include - #include -+#include - #include - #include --#include --#include --#include -+#include - - #define MAX_CR_LOOP 5 - #define MAX_EQ_LOOP 5 -@@ -37,18 +36,42 @@ static const char * const pre_emph_names - #define DP_VOLTAGE_MAX DP_TRAIN_VOLTAGE_SWING_1200 - #define DP_PRE_EMPHASIS_MAX DP_TRAIN_PRE_EMPHASIS_9_5 - -+#define RK3288_GRF_SOC_CON6 0x025c -+#define RK3288_GRF_SOC_CON12 0x0274 -+#define RK3399_GRF_SOC_CON20 0x6250 -+#define RK3399_GRF_SOC_CON25 0x6264 -+ -+enum rockchip_dp_types { -+ RK3288_DP = 0, -+ RK3399_EDP -+}; -+ -+struct rockchip_dp_data { -+ unsigned long reg_vop_big_little; -+ unsigned long reg_vop_big_little_sel; -+ unsigned long reg_ref_clk_sel; -+ unsigned long ref_clk_sel_bit; -+ enum rockchip_dp_types chip_type; -+}; -+ - struct rk_edp_priv { - struct rk3288_edp *regs; -- struct rk3288_grf *grf; -+ void *grf; - struct udevice *panel; - struct link_train link_train; - u8 train_set[4]; - }; - --static void rk_edp_init_refclk(struct rk3288_edp *regs) -+static void rk_edp_init_refclk(struct rk3288_edp *regs, enum rockchip_dp_types chip_type) - { - writel(SEL_24M, ®s->analog_ctl_2); -- writel(REF_CLK_24M, ®s->pll_reg_1); -+ u32 reg; -+ -+ reg = REF_CLK_24M; -+ if (chip_type == RK3288_DP) -+ reg ^= REF_CLK_MASK; -+ writel(reg, ®s->pll_reg_1); -+ - - writel(LDO_OUTPUT_V_SEL_145 | KVCO_DEFALUT | CHG_PUMP_CUR_SEL_5US | - V2L_CUR_SEL_1MA, ®s->pll_reg_2); -@@ -1029,6 +1052,8 @@ static int rk_edp_probe(struct udevice * - struct display_plat *uc_plat = dev_get_uclass_plat(dev); - struct rk_edp_priv *priv = dev_get_priv(dev); - struct rk3288_edp *regs = priv->regs; -+ struct rockchip_dp_data *edp_data = (struct rockchip_dp_data *)dev_get_driver_data(dev); -+ - struct clk clk; - int ret; - -@@ -1043,16 +1068,17 @@ static int rk_edp_probe(struct udevice * - int vop_id = uc_plat->source_id; - debug("%s, uc_plat=%p, vop_id=%u\n", __func__, uc_plat, vop_id); - -- ret = clk_get_by_index(dev, 1, &clk); -- if (ret >= 0) { -- ret = clk_set_rate(&clk, 0); -- clk_free(&clk); -- } -- if (ret) { -- debug("%s: Failed to set EDP clock: ret=%d\n", __func__, ret); -- return ret; -+ if (edp_data->chip_type == RK3288_DP) { -+ ret = clk_get_by_index(dev, 1, &clk); -+ if (ret >= 0) { -+ ret = clk_set_rate(&clk, 0); -+ clk_free(&clk); -+ } -+ if (ret) { -+ debug("%s: Failed to set EDP clock: ret=%d\n", __func__, ret); -+ return ret; -+ } - } -- - ret = clk_get_by_index(uc_plat->src_dev, 0, &clk); - if (ret >= 0) { - ret = clk_set_rate(&clk, 192000000); -@@ -1065,15 +1091,17 @@ static int rk_edp_probe(struct udevice * - } - - /* grf_edp_ref_clk_sel: from internal 24MHz or 27MHz clock */ -- rk_setreg(&priv->grf->soc_con12, 1 << 4); -+ rk_setreg(priv->grf + edp_data->reg_ref_clk_sel, -+ edp_data->ref_clk_sel_bit); - - /* select epd signal from vop0 or vop1 */ -- rk_clrsetreg(&priv->grf->soc_con6, (1 << 5), -- (vop_id == 1) ? (1 << 5) : (0 << 5)); -+ rk_clrsetreg(priv->grf + edp_data->reg_vop_big_little, -+ edp_data->reg_vop_big_little_sel, -+ (vop_id == 1) ? edp_data->reg_vop_big_little_sel : 0); - - rockchip_edp_wait_hpd(priv); - -- rk_edp_init_refclk(regs); -+ rk_edp_init_refclk(regs, edp_data->chip_type); - rk_edp_init_interrupt(regs); - rk_edp_enable_sw_function(regs); - ret = rk_edp_init_analog_func(regs); -@@ -1089,8 +1117,25 @@ static const struct dm_display_ops dp_ro - .enable = rk_edp_enable, - }; - -+static const struct rockchip_dp_data rk3399_edp = { -+ .reg_vop_big_little = RK3399_GRF_SOC_CON20, -+ .reg_vop_big_little_sel = BIT(5), -+ .reg_ref_clk_sel = RK3399_GRF_SOC_CON25, -+ .ref_clk_sel_bit = BIT(11), -+ .chip_type = RK3399_EDP, -+}; -+ -+static const struct rockchip_dp_data rk3288_dp = { -+ .reg_vop_big_little = RK3288_GRF_SOC_CON6, -+ .reg_vop_big_little_sel = BIT(5), -+ .reg_ref_clk_sel = RK3288_GRF_SOC_CON12, -+ .ref_clk_sel_bit = BIT(4), -+ .chip_type = RK3288_DP, -+}; -+ - static const struct udevice_id rockchip_dp_ids[] = { -- { .compatible = "rockchip,rk3288-edp" }, -+ { .compatible = "rockchip,rk3288-edp", .data = (ulong)&rk3288_dp }, -+ { .compatible = "rockchip,rk3399-edp", .data = (ulong)&rk3399_edp }, - { } - }; - -Index: u-boot/arch/arm/include/asm/arch-rockchip/edp_rk3288.h -=================================================================== ---- u-boot.orig/arch/arm/include/asm/arch-rockchip/edp_rk3288.h -+++ u-boot/arch/arm/include/asm/arch-rockchip/edp_rk3288.h -@@ -232,8 +232,9 @@ check_member(rk3288_edp, pll_reg_5, 0xa0 - #define PD_CH0 (0x1 << 0) - - /* pll_reg_1 */ --#define REF_CLK_24M (0x1 << 1) --#define REF_CLK_27M (0x0 << 1) -+#define REF_CLK_24M (0x1 << 0) -+#define REF_CLK_27M (0x0 << 0) -+#define REF_CLK_MASK (0x1 << 0) - - /* line_map */ - #define LANE3_MAP_LOGIC_LANE_0 (0x0 << 6) - -From patchwork Fri Mar 5 10:27:48 2021 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1447758 -X-Patchwork-Delegate: agust@denx.de -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4DsPL32w8Bz9sRR - for ; Fri, 5 Mar 2021 21:36:43 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 44C1D82082; - Fri, 5 Mar 2021 11:36:04 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=fail (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 5F86A8204C; Fri, 5 Mar 2021 11:35: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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE - autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org - [IPv6:2001:bc8:3430:1000::c0f:fee]) - (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 1AEBD825C6 - for ; Fri, 5 Mar 2021 11:35:44 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org -Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 3E0CC180475; Fri, 5 Mar 2021 11:35:41 +0100 (CET) -Message-ID: <20210305103307.112947687@rtp-net.org> -User-Agent: quilt/0.66 -Date: Fri, 05 Mar 2021 11:27:48 +0100 -From: Arnaud Patard (Rtp) -To: u-boot@lists.denx.de -Cc: Kever Yang , - Anatolij Gustschin , - Philipp Tomsich , - Peter Robinson , - Samuel Dionne-Riel , - Alper Nebi Yasak , - Arnaud Patard -Subject: [patch v4 3/9] Rockchip: video: edp: Change interrupt polarity - configuration -References: <20210305102745.078091129@rtp-net.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de -X-Virus-Status: Clean - -The linux code is setting polarity configuration to 3 but -uboot code is setting it to 1. Change the configuration to match the -linux configuration - -Signed-off-by: Arnaud Patard -Tested-by: Peter Robinson - -Index: u-boot/arch/arm/include/asm/arch-rockchip/edp_rk3288.h -=================================================================== ---- u-boot.orig/arch/arm/include/asm/arch-rockchip/edp_rk3288.h -+++ u-boot/arch/arm/include/asm/arch-rockchip/edp_rk3288.h -@@ -297,7 +297,9 @@ check_member(rk3288_edp, pll_reg_5, 0xa0 - - /* int_ctl */ - #define SOFT_INT_CTRL (0x1 << 2) --#define INT_POL (0x1 << 0) -+#define INT_POL1 (0x1 << 1) -+#define INT_POL0 (0x1 << 0) -+#define INT_POL (INT_POL0 | INT_POL1) - - /* sys_ctl_1 */ - #define DET_STA (0x1 << 2) - -From patchwork Fri Mar 5 10:27:49 2021 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1447759 -X-Patchwork-Delegate: agust@denx.de -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4DsPLH1GRYz9sRR - for ; Fri, 5 Mar 2021 21:36:55 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 96D31826F3; - Fri, 5 Mar 2021 11:36:07 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=fail (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 1A41B82036; Fri, 5 Mar 2021 11:35: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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE - autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) - (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 09C178204C - for ; Fri, 5 Mar 2021 11:35:44 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org -Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 61DE01808B6; Fri, 5 Mar 2021 11:35:41 +0100 (CET) -Message-ID: <20210305103307.175518624@rtp-net.org> -User-Agent: quilt/0.66 -Date: Fri, 05 Mar 2021 11:27:49 +0100 -From: Arnaud Patard (Rtp) -To: u-boot@lists.denx.de -Cc: Kever Yang , - Anatolij Gustschin , - Philipp Tomsich , - Peter Robinson , - Samuel Dionne-Riel , - Alper Nebi Yasak , - Arnaud Patard -Subject: [patch v4 4/9] Rockchip: video: vop: Reserve efi fb memory -References: <20210305102745.078091129@rtp-net.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de -X-Virus-Status: Clean - -When booting with EFI and graphics, the memory used for framebuffer -has to be reserved, otherwise it may leads to kernel memory -overwrite. - -Signed-off-by: Arnaud Patard -Tested-by: Peter Robinson - -Index: u-boot/drivers/video/rockchip/rk_vop.c -=================================================================== ---- u-boot.orig/drivers/video/rockchip/rk_vop.c -+++ u-boot/drivers/video/rockchip/rk_vop.c -@@ -21,6 +21,8 @@ - #include - #include - #include -+#include -+#include - #include - #include - #include -@@ -395,6 +397,11 @@ int rk_vop_probe(struct udevice *dev) - if (!(gd->flags & GD_FLG_RELOC)) - return 0; - -+#if defined(CONFIG_EFI_LOADER) -+ debug("Adding to EFI map %d @ %lx\n", plat->size, plat->base); -+ efi_add_memory_map(plat->base, plat->size, EFI_RESERVED_MEMORY_TYPE); -+#endif -+ - priv->regs = (struct rk3288_vop *)dev_read_addr(dev); - - /* - -From patchwork Fri Mar 5 10:27:50 2021 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1447756 -X-Patchwork-Delegate: agust@denx.de -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4DsPKd3f7rz9sRR - for ; Fri, 5 Mar 2021 21:36:21 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 470D882070; - Fri, 5 Mar 2021 11:35:56 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=fail (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 5AAD48204A; Fri, 5 Mar 2021 11:35:49 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE - autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) - (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id DCB148204A - for ; Fri, 5 Mar 2021 11:35:43 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org -Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 71166180A1E; Fri, 5 Mar 2021 11:35:41 +0100 (CET) -Message-ID: <20210305103307.228214963@rtp-net.org> -User-Agent: quilt/0.66 -Date: Fri, 05 Mar 2021 11:27:50 +0100 -From: Arnaud Patard (Rtp) -To: u-boot@lists.denx.de -Cc: Kever Yang , - Anatolij Gustschin , - Philipp Tomsich , - Peter Robinson , - Samuel Dionne-Riel , - Alper Nebi Yasak , - Arnaud Patard -Subject: [patch v4 5/9] rockchip: Pinebook Pro: Enable edp -References: <20210305102745.078091129@rtp-net.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de -X-Virus-Status: Clean - -- uboot rockchip edp code is looking for a rockchip,panel property - for the edp dts node, so add it. - -Signed-off-by: Arnaud Patard -Tested-by: Peter Robinson - -Index: u-boot/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -=================================================================== ---- u-boot.orig/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -+++ u-boot/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -@@ -16,6 +16,10 @@ - }; - }; - -+&edp { -+ rockchip,panel = <&edp_panel>; -+}; -+ - &i2c0 { - u-boot,dm-pre-reloc; - }; - -From patchwork Fri Mar 5 10:27:51 2021 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1447754 -X-Patchwork-Delegate: agust@denx.de -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -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 RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4DsPKR1d2Fz9sRR - for ; Fri, 5 Mar 2021 21:36:11 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 12B478204C; - Fri, 5 Mar 2021 11:35:53 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=fail (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 447228206F; Fri, 5 Mar 2021 11:35:47 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE - autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) - (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id B778881C7C - for ; Fri, 5 Mar 2021 11:35:43 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org -Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id C0DB4180A22; Fri, 5 Mar 2021 11:35:41 +0100 (CET) -Message-ID: <20210305103307.290295328@rtp-net.org> -User-Agent: quilt/0.66 -Date: Fri, 05 Mar 2021 11:27:51 +0100 -From: Arnaud Patard (Rtp) -To: u-boot@lists.denx.de -Cc: Kever Yang , - Anatolij Gustschin , - Philipp Tomsich , - Peter Robinson , - Samuel Dionne-Riel , - Alper Nebi Yasak , - Arnaud Patard -Subject: [patch v4 6/9] rockchip: pwm: Fix default polarity -References: <20210305102745.078091129@rtp-net.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de -X-Virus-Status: Clean - -In the code, the default polarity is set to positive/positive, -which is neither normal polarity or inverted polarity. It's -only the hardware default. This leads to booting linux with -wrong polarity setting. - -Update the code to use PWM_DUTY_POSTIVE | PWM_INACTIVE_NEGATIVE -by default instead. - -Signed-off-by: Arnaud Patard -Tested-by: Peter Robinson - -Index: u-boot/drivers/pwm/rk_pwm.c -=================================================================== ---- u-boot.orig/drivers/pwm/rk_pwm.c -+++ u-boot/drivers/pwm/rk_pwm.c -@@ -147,7 +147,7 @@ static int rk_pwm_probe(struct udevice * - priv->data = (struct rockchip_pwm_data *)dev_get_driver_data(dev); - - if (priv->data->supports_polarity) -- priv->conf_polarity = PWM_DUTY_POSTIVE | PWM_INACTIVE_POSTIVE; -+ priv->conf_polarity = PWM_DUTY_POSTIVE | PWM_INACTIVE_NEGATIVE; - - return 0; - } - -From patchwork Fri Mar 5 10:27:52 2021 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1447761 -X-Patchwork-Delegate: agust@denx.de -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4DsPLk2Jx9z9sRR - for ; Fri, 5 Mar 2021 21:37:18 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 95200827A5; - Fri, 5 Mar 2021 11:36:13 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=fail (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 948DB8204A; Fri, 5 Mar 2021 11:35: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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE - autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) - (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 353198204D - for ; Fri, 5 Mar 2021 11:35:44 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org -Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id E7A2D180ACE; Fri, 5 Mar 2021 11:35:41 +0100 (CET) -Message-ID: <20210305103307.342131644@rtp-net.org> -User-Agent: quilt/0.66 -Date: Fri, 05 Mar 2021 11:27:52 +0100 -From: Arnaud Patard (Rtp) -To: u-boot@lists.denx.de -Cc: Kever Yang , - Anatolij Gustschin , - Philipp Tomsich , - Peter Robinson , - Samuel Dionne-Riel , - Alper Nebi Yasak , - Arnaud Patard -Subject: [patch v4 7/9] rockchip: video: vop: Fix format of fbbase in debug - string -References: <20210305102745.078091129@rtp-net.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de -X-Virus-Status: Clean - -The debug string printing the device name, framebuffer address and of node -is using %lu as format for the framebuffer address, which is not so nice. -Change it to %lx. - -Signed-off-by: Arnaud Patard -Tested-by: Peter Robinson - -Index: u-boot/drivers/video/rockchip/rk_vop.c -=================================================================== ---- u-boot.orig/drivers/video/rockchip/rk_vop.c -+++ u-boot/drivers/video/rockchip/rk_vop.c -@@ -240,7 +240,7 @@ static int rk_display_init(struct udevic - ofnode remote; - const char *compat; - -- debug("%s(%s, %lu, %s)\n", __func__, -+ debug("%s(%s, 0x%lx, %s)\n", __func__, - dev_read_name(dev), fbbase, ofnode_get_name(ep_node)); - - ret = ofnode_read_u32(ep_node, "remote-endpoint", &remote_phandle); - -From patchwork Fri Mar 5 10:27:53 2021 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1447762 -X-Patchwork-Delegate: agust@denx.de -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4DsPLx35qQz9sRR - for ; Fri, 5 Mar 2021 21:37:29 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id CA1E082785; - Fri, 5 Mar 2021 11:36:16 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=fail (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 67A538204A; Fri, 5 Mar 2021 11:35:54 +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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE - autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) - (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 4B7598236C - for ; Fri, 5 Mar 2021 11:35:44 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org -Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id F37E5180A23; Fri, 5 Mar 2021 11:35:41 +0100 (CET) -Message-ID: <20210305103307.395781510@rtp-net.org> -User-Agent: quilt/0.66 -Date: Fri, 05 Mar 2021 11:27:53 +0100 -From: Arnaud Patard (Rtp) -To: u-boot@lists.denx.de -Cc: Kever Yang , - Anatolij Gustschin , - Philipp Tomsich , - Peter Robinson , - Samuel Dionne-Riel , - Alper Nebi Yasak , - Arnaud Patard -Subject: [patch v4 8/9] rockchip: video: edp: Add missing reset support -References: <20210305102745.078091129@rtp-net.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de -X-Virus-Status: Clean - -In order to ensure that the eDP registers are in correct state, -add missing support for the eDP reset lines found in the device-tree. - - -Signed-off-by: Arnaud Patard -Tested-by: Peter Robinson - -Index: u-boot/drivers/video/rockchip/rk_edp.c -=================================================================== ---- u-boot.orig/drivers/video/rockchip/rk_edp.c -+++ u-boot/drivers/video/rockchip/rk_edp.c -@@ -8,11 +8,13 @@ - #include - #include - #include -+#include - #include - #include - #include - #include - #include -+#include - #include - #include - #include -@@ -1053,6 +1055,7 @@ static int rk_edp_probe(struct udevice * - struct rk_edp_priv *priv = dev_get_priv(dev); - struct rk3288_edp *regs = priv->regs; - struct rockchip_dp_data *edp_data = (struct rockchip_dp_data *)dev_get_driver_data(dev); -+ struct reset_ctl dp_rst; - - struct clk clk; - int ret; -@@ -1065,6 +1068,25 @@ static int rk_edp_probe(struct udevice * - return ret; - } - -+ ret = reset_get_by_name(dev, "dp", &dp_rst); -+ if (ret) { -+ dev_err(dev, "failed to get dp reset (ret=%d)\n", ret); -+ return ret; -+ } -+ -+ ret = reset_assert(&dp_rst); -+ if (ret) { -+ dev_err(dev, "failed to assert dp reset (ret=%d)\n", ret); -+ return ret; -+ } -+ udelay(20); -+ -+ ret = reset_deassert(&dp_rst); -+ if (ret) { -+ dev_err(dev, "failed to deassert dp reset (ret=%d)\n", ret); -+ return ret; -+ } -+ - int vop_id = uc_plat->source_id; - debug("%s, uc_plat=%p, vop_id=%u\n", __func__, uc_plat, vop_id); - - -From patchwork Fri Mar 5 10:27:54 2021 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Arnaud Patard (Rtp)" -X-Patchwork-Id: 1447763 -X-Patchwork-Delegate: agust@denx.de -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4DsPM76BCrz9sRR - for ; Fri, 5 Mar 2021 21:37:39 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 67BC2827B1; - Fri, 5 Mar 2021 11:36:20 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=fail (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id DF2998206F; Fri, 5 Mar 2021 11:35: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=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE - autolearn=ham autolearn_force=no version=3.4.2 -Received: from lechat.rtp-net.org (lechat.rtp-net.org [51.15.165.164]) - (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 4C91882070 - for ; Fri, 5 Mar 2021 11:35:44 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=rtp-net.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=arnaud.patard@rtp-net.org -Received: by lechat.rtp-net.org (Postfix, from userid 1000) - id 329B7180B08; Fri, 5 Mar 2021 11:35:42 +0100 (CET) -Message-ID: <20210305103307.447309277@rtp-net.org> -User-Agent: quilt/0.66 -Date: Fri, 05 Mar 2021 11:27:54 +0100 -From: Arnaud Patard (Rtp) -To: u-boot@lists.denx.de -Cc: Kever Yang , - Anatolij Gustschin , - Philipp Tomsich , - Peter Robinson , - Samuel Dionne-Riel , - Alper Nebi Yasak , - Arnaud Patard -Subject: [patch v4 9/9] rockchip: video: vop: Add reset support -References: <20210305102745.078091129@rtp-net.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de -X-Virus-Status: Clean - -In order to ensure that the VOP registers are in correct state, -add missing support for the VOP reset lines found in the device-tree - -Signed-off-by: Arnaud Patard -Tested-by: Peter Robinson - -Index: u-boot/drivers/video/rockchip/rk_vop.c -=================================================================== ---- u-boot.orig/drivers/video/rockchip/rk_vop.c -+++ u-boot/drivers/video/rockchip/rk_vop.c -@@ -8,9 +8,11 @@ - #include - #include - #include -+#include - #include - #include - #include -+#include - #include - #include - #include -@@ -37,14 +39,16 @@ enum vop_pol { - DCLK_INVERT = 3 - }; - --static void rkvop_enable(struct rk3288_vop *regs, ulong fbbase, -+static void rkvop_enable(struct udevice *dev, struct rk3288_vop *regs, ulong fbbase, - int fb_bits_per_pixel, -- const struct display_timing *edid) -+ const struct display_timing *edid, -+ struct reset_ctl *dclk_rst) - { - u32 lb_mode; - u32 rgb_mode; - u32 hactive = edid->hactive.typ; - u32 vactive = edid->vactive.typ; -+ int ret; - - writel(V_ACT_WIDTH(hactive - 1) | V_ACT_HEIGHT(vactive - 1), - ®s->win0_act_info); -@@ -92,6 +96,18 @@ static void rkvop_enable(struct rk3288_v - - writel(fbbase, ®s->win0_yrgb_mst); - writel(0x01, ®s->reg_cfg_done); /* enable reg config */ -+ -+ ret = reset_assert(dclk_rst); -+ if (ret) { -+ dev_warn(dev, "failed to assert dclk reset (ret=%d)\n", ret); -+ return; -+ } -+ udelay(20); -+ -+ ret = reset_deassert(dclk_rst); -+ if (ret) -+ dev_warn(dev, "failed to deassert dclk reset (ret=%d)\n", ret); -+ - } - - static void rkvop_set_pin_polarity(struct udevice *dev, -@@ -239,6 +255,7 @@ static int rk_display_init(struct udevic - enum video_log2_bpp l2bpp; - ofnode remote; - const char *compat; -+ struct reset_ctl dclk_rst; - - debug("%s(%s, 0x%lx, %s)\n", __func__, - dev_read_name(dev), fbbase, ofnode_get_name(ep_node)); -@@ -355,7 +372,14 @@ static int rk_display_init(struct udevic - } - - rkvop_mode_set(dev, &timing, vop_id); -- rkvop_enable(regs, fbbase, 1 << l2bpp, &timing); -+ -+ ret = reset_get_by_name(dev, "dclk", &dclk_rst); -+ if (ret) { -+ dev_err(dev, "failed to get dclk reset (ret=%d)\n", ret); -+ return ret; -+ } -+ -+ rkvop_enable(dev, regs, fbbase, 1 << l2bpp, &timing, &dclk_rst); - - ret = display_enable(disp, 1 << l2bpp, &timing); - if (ret) -@@ -392,11 +416,31 @@ int rk_vop_probe(struct udevice *dev) - struct rk_vop_priv *priv = dev_get_priv(dev); - int ret = 0; - ofnode port, node; -+ struct reset_ctl ahb_rst; - - /* Before relocation we don't need to do anything */ - if (!(gd->flags & GD_FLG_RELOC)) - return 0; - -+ ret = reset_get_by_name(dev, "ahb", &ahb_rst); -+ if (ret) { -+ dev_err(dev, "failed to get ahb reset (ret=%d)\n", ret); -+ return ret; -+ } -+ -+ ret = reset_assert(&ahb_rst); -+ if (ret) { -+ dev_err(dev, "failed to assert ahb reset (ret=%d)\n", ret); -+ return ret; -+ } -+ udelay(20); -+ -+ ret = reset_deassert(&ahb_rst); -+ if (ret) { -+ dev_err(dev, "failed to deassert ahb reset (ret=%d)\n", ret); -+ return ret; -+ } -+ - #if defined(CONFIG_EFI_LOADER) - debug("Adding to EFI map %d @ %lx\n", plat->size, plat->base); - efi_add_memory_map(plat->base, plat->size, EFI_RESERVED_MEMORY_TYPE); diff --git a/sources b/sources index 0be2497..d89c8d2 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2021.04.tar.bz2) = c24835a520bfd528032614576ca552e55e6de129372e72e22e80e0d45dc5c1c75aa4aad80e856d5bbd7146ec092cac52a6f352253cf3fdf9fe536f5e87782803 +SHA512 (u-boot-2021.07-rc2.tar.bz2) = 3d753a7e85894fd0ecbe9ffcf6da6cc8f5e5d26cb1ec2505035c2183729d1b3ae5e4ece6ecdd93125f50627cd3e358cd911570c366e7e9dafac2c1369ca49697 diff --git a/sunxi-support-asymmetric-dual-rank-DRAM-on-A64.patch b/sunxi-support-asymmetric-dual-rank-DRAM-on-A64.patch deleted file mode 100644 index c2b6946..0000000 --- a/sunxi-support-asymmetric-dual-rank-DRAM-on-A64.patch +++ /dev/null @@ -1,337 +0,0 @@ -From patchwork Thu Feb 25 16:13:24 2021 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Icenowy Zheng -X-Patchwork-Id: 1444507 -X-Patchwork-Delegate: andre.przywara@arm.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dkim=fail reason="signature verification failed" (1024-bit key; - unprotected) header.d=mymailcheap.com header.i=@mymailcheap.com - header.a=rsa-sha256 header.s=default header.b=cioDKJo2; - dkim=fail reason="signature verification failed" (1024-bit key; - unprotected) header.d=aosc.io header.i=@aosc.io header.a=rsa-sha256 - header.s=default header.b=HIUK4Nk2; - dkim-atps=neutral -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 RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4DmdCS3h1Hz9rx6 - for ; Fri, 26 Feb 2021 03:14:28 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 110BD81B51; - Thu, 25 Feb 2021 17:14:23 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=aosc.io -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=fail reason="signature verification failed" (1024-bit key; - unprotected) header.d=mymailcheap.com header.i=@mymailcheap.com - header.b="cioDKJo2"; - dkim=fail reason="signature verification failed" (1024-bit key; - unprotected) header.d=aosc.io header.i=@aosc.io header.b="HIUK4Nk2"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id B889280598; Thu, 25 Feb 2021 17:14:13 +0100 (CET) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,SPF_HELO_NONE autolearn=ham - autolearn_force=no version=3.4.2 -Received: from relay4.mymailcheap.com (relay4.mymailcheap.com - [137.74.199.117]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id C7F5580598 - for ; Thu, 25 Feb 2021 17:14:09 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=aosc.io -Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=icenowy@aosc.io -Received: from filter1.mymailcheap.com (filter1.mymailcheap.com - [149.56.130.247]) - by relay4.mymailcheap.com (Postfix) with ESMTPS id 6FC363F1CF; - Thu, 25 Feb 2021 17:14:09 +0100 (CET) -Received: from localhost (localhost [127.0.0.1]) - by filter1.mymailcheap.com (Postfix) with ESMTP id A57402A383; - Thu, 25 Feb 2021 11:14:08 -0500 (EST) -DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mymailcheap.com; - s=default; t=1614269648; - bh=p5Qg+eI0X+uHI/vb/v+Q5hqIyhUcxanqxa0s3F6kzsk=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=cioDKJo2JP5QKxiGm4JTh3EgF9+TQ/ar45VDuTK90pKSZQrjTbxwSxU6+g/Qf11YS - Tl8xBob9LtGr3IqRPR6NvT1E5ZMyjJY5TA/5NTeRVDtgbfihgr9y79uX6wx8j0PwGI - HmhrdMUcAi1i6Nf8P8i7864A0P2g+73GGSbFTnxw= -Received: from filter1.mymailcheap.com ([127.0.0.1]) - by localhost (filter1.mymailcheap.com [127.0.0.1]) (amavisd-new, port 10024) - with ESMTP id ZupYgX5wP4Vd; Thu, 25 Feb 2021 11:14:07 -0500 (EST) -Received: from mail20.mymailcheap.com (mail20.mymailcheap.com [51.83.111.147]) - (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by filter1.mymailcheap.com (Postfix) with ESMTPS; - Thu, 25 Feb 2021 11:14:07 -0500 (EST) -Received: from [148.251.23.173] (ml.mymailcheap.com [148.251.23.173]) - by mail20.mymailcheap.com (Postfix) with ESMTP id 623DD41AAC; - Thu, 25 Feb 2021 16:14:06 +0000 (UTC) -Authentication-Results: mail20.mymailcheap.com; dkim=pass (1024-bit key; - unprotected) header.d=aosc.io header.i=@aosc.io header.b="HIUK4Nk2"; - dkim-atps=neutral -AI-Spam-Status: Not processed -Received: from ice-e5v2.lan (unknown [59.41.161.221]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest - SHA256) (No client certificate requested) - by mail20.mymailcheap.com (Postfix) with ESMTPSA id 373A94085F; - Thu, 25 Feb 2021 16:13:48 +0000 (UTC) -DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=aosc.io; s=default; - t=1614269631; bh=p5Qg+eI0X+uHI/vb/v+Q5hqIyhUcxanqxa0s3F6kzsk=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=HIUK4Nk2y/BejXaMIQECyQ7r0JiiRWWbURK29vtVJOxbvSa5uDI5eMKRpJPD1FM0C - FcHWJD/H2cXjFNbCk9Ogmfwhcw2wgyXx0AranW4WXH8qg4g8uzYrAqN9nKGhbmDZ3n - ds22TcdBpaiuxNCOmVjRPJvWBZhWtTxLREQv27fw= -From: Icenowy Zheng -To: Jagan Teki , - Andre Przywara -Cc: u-boot@lists.denx.de, linux-sunxi@googlegroups.com, - Icenowy Zheng -Subject: [PATCH 1/2] sunxi: support asymmetric dual rank DRAM on A64/R40 -Date: Fri, 26 Feb 2021 00:13:24 +0800 -Message-Id: <20210225161325.94019-2-icenowy@aosc.io> -X-Mailer: git-send-email 2.30.0 -In-Reply-To: <20210225161325.94019-1-icenowy@aosc.io> -References: <20210225161325.94019-1-icenowy@aosc.io> -MIME-Version: 1.0 -X-Rspamd-Server: mail20.mymailcheap.com -X-Spamd-Result: default: False [4.90 / 20.00]; ARC_NA(0.00)[]; - RCVD_VIA_SMTP_AUTH(0.00)[]; - R_DKIM_ALLOW(0.00)[aosc.io:s=default]; - RECEIVED_SPAMHAUS_PBL(0.00)[59.41.161.221:received]; - FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; - R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; - MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[aosc.io]; - BROKEN_CONTENT_TYPE(1.50)[]; R_SPF_SOFTFAIL(0.00)[~all:c]; - RCPT_COUNT_FIVE(0.00)[5]; ML_SERVERS(-3.10)[148.251.23.173]; - DKIM_TRACE(0.00)[aosc.io:+]; MID_CONTAINS_FROM(1.00)[]; - RCVD_NO_TLS_LAST(0.10)[]; FROM_EQ_ENVFROM(0.00)[]; - MIME_TRACE(0.00)[0:+]; - ASN(0.00)[asn:24940, ipnet:148.251.0.0/16, country:DE]; - RCVD_COUNT_TWO(0.00)[2]; - HFILTER_HELO_BAREIP(3.00)[148.251.23.173,1] -X-Rspamd-Queue-Id: 623DD41AAC -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de -X-Virus-Status: Clean - -Previously we have known that R40 has a configuration register for its -rank 1, which allows different configuration than rank 0. Reverse -engineering of newest libdram of A64 from Allwinner shows that A64 has -this register too. It's bit 0 (which enables dual rank in rank 0 -configuration register) means a dedicated rank size setup is used for -rank 1. - -Now, Pine64 scheduled to use a 3GiB LPDDR3 DRAM chip (which has 2GiB -rank 0 and 1GiB rank 1) on PinePhone, that makes asymmetric dual rank -DRAM support necessary. - -Add this support. The code could support both A64 and R40, but because -dual rank detection is broken on R40 now, we cannot really use it on R40 -currently. - -Signed-off-by: Icenowy Zheng ---- - .../include/asm/arch-sunxi/dram_sunxi_dw.h | 11 ++- - arch/arm/mach-sunxi/dram_sunxi_dw.c | 94 +++++++++++++++---- - 2 files changed, 82 insertions(+), 23 deletions(-) - -diff --git a/arch/arm/include/asm/arch-sunxi/dram_sunxi_dw.h b/arch/arm/include/asm/arch-sunxi/dram_sunxi_dw.h -index a5a7ebde44..e843c14202 100644 ---- a/arch/arm/include/asm/arch-sunxi/dram_sunxi_dw.h -+++ b/arch/arm/include/asm/arch-sunxi/dram_sunxi_dw.h -@@ -215,12 +215,17 @@ struct sunxi_mctl_ctl_reg { - #define NR_OF_BYTE_LANES (32 / BITS_PER_BYTE) - /* The eight data lines (DQn) plus DM, DQS and DQSN */ - #define LINES_PER_BYTE_LANE (BITS_PER_BYTE + 3) --struct dram_para { -+ -+struct rank_para { - u16 page_size; -- u8 bus_full_width; -- u8 dual_rank; - u8 row_bits; - u8 bank_bits; -+}; -+ -+struct dram_para { -+ u8 dual_rank; -+ u8 bus_full_width; -+ struct rank_para ranks[2]; - const u8 dx_read_delays[NR_OF_BYTE_LANES][LINES_PER_BYTE_LANE]; - const u8 dx_write_delays[NR_OF_BYTE_LANES][LINES_PER_BYTE_LANE]; - const u8 ac_delays[31]; -diff --git a/arch/arm/mach-sunxi/dram_sunxi_dw.c b/arch/arm/mach-sunxi/dram_sunxi_dw.c -index d0600011ff..2b9d631d49 100644 ---- a/arch/arm/mach-sunxi/dram_sunxi_dw.c -+++ b/arch/arm/mach-sunxi/dram_sunxi_dw.c -@@ -399,11 +399,19 @@ static void mctl_set_cr(uint16_t socid, struct dram_para *para) - #else - #error Unsupported DRAM type! - #endif -- (para->bank_bits == 3 ? MCTL_CR_EIGHT_BANKS : MCTL_CR_FOUR_BANKS) | -+ (para->ranks[0].bank_bits == 3 ? MCTL_CR_EIGHT_BANKS : MCTL_CR_FOUR_BANKS) | - MCTL_CR_BUS_FULL_WIDTH(para->bus_full_width) | - (para->dual_rank ? MCTL_CR_DUAL_RANK : MCTL_CR_SINGLE_RANK) | -- MCTL_CR_PAGE_SIZE(para->page_size) | -- MCTL_CR_ROW_BITS(para->row_bits), &mctl_com->cr); -+ MCTL_CR_PAGE_SIZE(para->ranks[0].page_size) | -+ MCTL_CR_ROW_BITS(para->ranks[0].row_bits), &mctl_com->cr); -+ -+ if (para->dual_rank && (socid == SOCID_A64 || socid == SOCID_R40)) { -+ writel((para->ranks[1].bank_bits == 3 ? MCTL_CR_EIGHT_BANKS : MCTL_CR_FOUR_BANKS) | -+ MCTL_CR_BUS_FULL_WIDTH(para->bus_full_width) | -+ MCTL_CR_DUAL_RANK | -+ MCTL_CR_PAGE_SIZE(para->ranks[1].page_size) | -+ MCTL_CR_ROW_BITS(para->ranks[1].row_bits), &mctl_com->cr_r1); -+ } - - if (socid == SOCID_R40) { - if (para->dual_rank) -@@ -646,35 +654,63 @@ static int mctl_channel_init(uint16_t socid, struct dram_para *para) - return 0; - } - --static void mctl_auto_detect_dram_size(uint16_t socid, struct dram_para *para) -+/* -+ * Test if memory at offset offset matches memory at a certain base -+ */ -+static bool mctl_mem_matches_base(u32 offset, ulong base) -+{ -+ /* Try to write different values to RAM at two addresses */ -+ writel(0, base); -+ writel(0xaa55aa55, base + offset); -+ dsb(); -+ /* Check if the same value is actually observed when reading back */ -+ return readl(base) == -+ readl(base + offset); -+} -+ -+static void mctl_auto_detect_dram_size_rank(uint16_t socid, struct dram_para *para, ulong base, struct rank_para *rank) - { - /* detect row address bits */ -- para->page_size = 512; -- para->row_bits = 16; -- para->bank_bits = 2; -+ rank->page_size = 512; -+ rank->row_bits = 16; -+ rank->bank_bits = 2; - mctl_set_cr(socid, para); - -- for (para->row_bits = 11; para->row_bits < 16; para->row_bits++) -- if (mctl_mem_matches((1 << (para->row_bits + para->bank_bits)) * para->page_size)) -+ for (rank->row_bits = 11; rank->row_bits < 16; rank->row_bits++) -+ if (mctl_mem_matches_base((1 << (rank->row_bits + rank->bank_bits)) * rank->page_size, base)) - break; - - /* detect bank address bits */ -- para->bank_bits = 3; -+ rank->bank_bits = 3; - mctl_set_cr(socid, para); - -- for (para->bank_bits = 2; para->bank_bits < 3; para->bank_bits++) -- if (mctl_mem_matches((1 << para->bank_bits) * para->page_size)) -+ for (rank->bank_bits = 2; rank->bank_bits < 3; rank->bank_bits++) -+ if (mctl_mem_matches_base((1 << rank->bank_bits) * rank->page_size, base)) - break; - - /* detect page size */ -- para->page_size = 8192; -+ rank->page_size = 8192; - mctl_set_cr(socid, para); - -- for (para->page_size = 512; para->page_size < 8192; para->page_size *= 2) -- if (mctl_mem_matches(para->page_size)) -+ for (rank->page_size = 512; rank->page_size < 8192; rank->page_size *= 2) -+ if (mctl_mem_matches_base(rank->page_size, base)) - break; - } - -+static unsigned long mctl_calc_rank_size(struct rank_para *rank) -+{ -+ return (1UL << (rank->row_bits + rank->bank_bits)) * rank->page_size; -+} -+ -+static void mctl_auto_detect_dram_size(uint16_t socid, struct dram_para *para) -+{ -+ mctl_auto_detect_dram_size_rank(socid, para, (ulong)CONFIG_SYS_SDRAM_BASE, ¶->ranks[0]); -+ -+ if ((socid == SOCID_A64 || socid == SOCID_R40) && para->dual_rank) { -+ mctl_auto_detect_dram_size_rank(socid, para, (ulong)CONFIG_SYS_SDRAM_BASE + mctl_calc_rank_size(¶->ranks[0]), ¶->ranks[1]); -+ } -+} -+ - /* - * The actual values used here are taken from Allwinner provided boot0 - * binaries, though they are probably board specific, so would likely benefit -@@ -769,12 +805,23 @@ unsigned long sunxi_dram_init(void) - struct sunxi_mctl_ctl_reg * const mctl_ctl = - (struct sunxi_mctl_ctl_reg *)SUNXI_DRAM_CTL0_BASE; - -+ unsigned long size; -+ - struct dram_para para = { - .dual_rank = 1, - .bus_full_width = 1, -- .row_bits = 15, -- .bank_bits = 3, -- .page_size = 4096, -+ .ranks = { -+ { -+ .row_bits = 15, -+ .bank_bits = 3, -+ .page_size = 4096, -+ }, -+ { -+ .row_bits = 15, -+ .bank_bits = 3, -+ .page_size = 4096, -+ } -+ }, - - #if defined(CONFIG_MACH_SUN8I_H3) - .dx_read_delays = SUN8I_H3_DX_READ_DELAYS, -@@ -846,6 +893,13 @@ unsigned long sunxi_dram_init(void) - mctl_auto_detect_dram_size(socid, ¶); - mctl_set_cr(socid, ¶); - -- return (1UL << (para.row_bits + para.bank_bits)) * para.page_size * -- (para.dual_rank ? 2 : 1); -+ size = mctl_calc_rank_size(¶.ranks[0]); -+ if (socid == SOCID_A64 || socid == SOCID_R40) { -+ if (para.dual_rank) -+ size += mctl_calc_rank_size(¶.ranks[1]); -+ } else if (para.dual_rank) { -+ size *= 2; -+ } -+ -+ return size; - } diff --git a/uboot-tools.spec b/uboot-tools.spec index 3176c3a..4d7c27d 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -#global candidate rc1 +%global candidate rc2 Name: uboot-tools -Version: 2021.04 -Release: 3%{?candidate:.%{candidate}}%{?dist} +Version: 2021.07 +Release: 0.1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -21,20 +21,14 @@ Patch2: efi_loader-loosen-buffer-parameter-check-in-efi_file_read_int.patch # RPi - uses RPI firmware device tree for HAT support Patch3: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch -# Revert an upstream regression -Patch9: IOMUX-Fix-buffer-overflow-in-iomux_replace_device.patch # Board fixes and enablement # AllWinner improvements Patch10: AllWinner-PineTab.patch # TI fixes Patch11: 0001-Fix-BeagleAI-detection.patch # Rockchips improvements -Patch12: rk3399-Pinebook-pro-EDP-support.patch -Patch13: phy-rockchip-inno-usb2-fix-hang-when-multiple-controllers-exit.patch -Patch14: rockchip-fix-mmc-numbering.patch -# Fixes for Allwinner network issues -Patch15: 0001-arm-dts-allwinner-sync-from-linux-for-RGMII-RX-TX-de.patch -Patch16: sunxi-support-asymmetric-dual-rank-DRAM-on-A64.patch +Patch12: phy-rockchip-inno-usb2-fix-hang-when-multiple-controllers-exit.patch +Patch13: rockchip-fix-mmc-numbering.patch BuildRequires: bc BuildRequires: dtc @@ -261,6 +255,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Mon May 10 2021 Peter Robinson - 2021.07-0.1.rc2 +- Update to 2021.07 RC2 + * Wed Apr 28 2021 Peter Robinson - 2021.04-3 - Upstream fix for console regression (rhbz 1946278) - Fix for fallback.efi crash (rhbz 1733817) diff --git a/usb-kbd-fixes.patch b/usb-kbd-fixes.patch deleted file mode 100644 index fb6a0e0..0000000 --- a/usb-kbd-fixes.patch +++ /dev/null @@ -1,115 +0,0 @@ -From a49845f198af088c4e5e0019edbf519344d78c97 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Tue, 4 Dec 2018 15:29:14 +0000 -Subject: [PATCH] usb kbd fixes - -Signed-off-by: Peter Robinson ---- - common/usb_kbd.c | 66 +++++++++++++++++++++++++++++++++++------------ - include/console.h | 2 -- - 2 files changed, 50 insertions(+), 18 deletions(-) - -diff --git a/common/usb_kbd.c b/common/usb_kbd.c -index 020f0d4117f..47674ce4458 100644 ---- a/common/usb_kbd.c -+++ b/common/usb_kbd.c -@@ -518,25 +518,59 @@ static int probe_usb_keyboard(struct usb_device *dev) - return error; - - stdinname = env_get("stdin"); --#if CONFIG_IS_ENABLED(CONSOLE_MUX) -- error = iomux_doenv(stdin, stdinname); -- if (error) -- return error; --#else -- /* Check if this is the standard input device. */ -- if (strcmp(stdinname, DEVNAME)) -- return 1; -+ if (CONFIG_IS_ENABLED(CONSOLE_MUX)) { -+ char *devname = DEVNAME; -+ char *newstdin = NULL; -+ /* -+ * stdin might not be set yet.. either way, with console- -+ * mux the sensible thing to do is add ourselves to the -+ * list of stdio devices: -+ */ -+ if (stdinname && !strstr(stdinname, DEVNAME)) { -+ newstdin = malloc(strlen(stdinname) + -+ strlen(","DEVNAME) + 1); -+ sprintf(newstdin, "%s,"DEVNAME, stdinname); -+ stdinname = newstdin; -+ } else if (!stdinname) { -+ stdinname = devname; -+ } -+ error = iomux_doenv(stdin, stdinname); -+ free(newstdin); -+ if (error) -+ goto unregister_stdio; -+ } else { -+ /* Check if this is the standard input device. */ -+ if (strcmp(stdinname, DEVNAME)) { -+ error = -1; -+ goto unregister_stdio; -+ } - -- /* Reassign the console */ -- if (overwrite_console()) -- return 1; -+ /* Reassign the console */ -+ if (overwrite_console()) { -+ error = -1; -+ goto unregister_stdio; -+ } - -- error = console_assign(stdin, DEVNAME); -- if (error) -- return error; --#endif -+ error = console_assign(stdin, DEVNAME); -+ if (error) -+ goto unregister_stdio; -+ } -+ -+ return 0; - -+unregister_stdio: -+ /* -+ * If probe fails, the device will be removed.. leaving dangling -+ * pointers if the stdio device is not unregistered. If u-boot -+ * is built without stdio_deregister(), just pretend to succeed -+ * in order to avoid dangling pointers. -+ */ -+#if CONFIG_IS_ENABLED(SYS_STDIO_DEREGISTER) -+ stdio_deregister(DEVNAME, 1); -+ return error; -+#else - return 0; -+#endif - } - - #if !CONFIG_IS_ENABLED(DM_USB) -@@ -642,7 +676,7 @@ static int usb_kbd_remove(struct udevice *dev) - - return 0; - err: -- printf("%s: warning, ret=%d", __func__, ret); -+ printf("%s: warning, ret=%d\n", __func__, ret); - return ret; - } - -diff --git a/include/console.h b/include/console.h -index e935c601f12..6382ec8e0d6 100644 ---- a/include/console.h -+++ b/include/console.h -@@ -56,8 +56,6 @@ int console_announce_r(void); - /* - * CONSOLE multiplexing. - */ --#ifdef CONFIG_CONSOLE_MUX - #include --#endif - - #endif --- -2.19.2 - From bff9338fe9e72cd6502512ac17fe71264b557fa1 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 10 May 2021 23:13:33 +0100 Subject: [PATCH 065/271] Update docs locations --- uboot-tools.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 4d7c27d..2e73b08 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -237,8 +237,8 @@ cp -p board/warp7/README builds/docs/README.warp7 %files %doc README doc/README.kwbimage doc/README.distro doc/README.gpt -%doc doc/README.odroid doc/README.rockchip doc/uefi doc/uImage.FIT doc/arch/arm64.rst -%doc doc/README.chromium builds/docs/* +%doc doc/README.odroid doc/README.rockchip doc/develop/uefi doc/uImage.FIT doc/arch/arm64.rst +%doc doc/chromium builds/docs/* %doc doc/board/amlogic/ doc/board/rockchip/ %{_bindir}/* %{_mandir}/man1/mkimage.1* From c74ab1fc05f11bf859492332841796deecf8dc41 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 13 May 2021 12:50:05 +0100 Subject: [PATCH 066/271] Build against new ATF 2.5-rc1 --- uboot-tools.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 2e73b08..fa0cc28 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -2,7 +2,7 @@ Name: uboot-tools Version: 2021.07 -Release: 0.1%{?candidate:.%{candidate}}%{?dist} +Release: 0.2%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -255,6 +255,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Thu May 13 2021 Peter Robinson - 2021.07-0.2.rc2 +- Build against new ATF 2.5-rc1 + * Mon May 10 2021 Peter Robinson - 2021.07-0.1.rc2 - Update to 2021.07 RC2 From 896c46870f7db8ec1313f8b457c3a49eb22960b1 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 25 May 2021 10:01:27 +0100 Subject: [PATCH 067/271] 2021.07 RC3 --- ...parameter-check-in-efi_file_read_int.patch | 214 ------------------ sources | 2 +- uboot-tools.spec | 12 +- 3 files changed, 8 insertions(+), 220 deletions(-) delete mode 100644 efi_loader-loosen-buffer-parameter-check-in-efi_file_read_int.patch diff --git a/efi_loader-loosen-buffer-parameter-check-in-efi_file_read_int.patch b/efi_loader-loosen-buffer-parameter-check-in-efi_file_read_int.patch deleted file mode 100644 index 8bbf9d9..0000000 --- a/efi_loader-loosen-buffer-parameter-check-in-efi_file_read_int.patch +++ /dev/null @@ -1,214 +0,0 @@ -From patchwork Wed Apr 28 13:54:01 2021 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 8bit -X-Patchwork-Submitter: "Peng Fan (OSS)" -X-Patchwork-Id: 1471143 -X-Patchwork-Delegate: xypron.glpk@gmx.de -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com - header.a=rsa-sha256 header.s=selector2-NXP1-onmicrosoft-com - header.b=Y9LhgRit; - dkim-atps=neutral -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4FVfRz6xNvz9sW6 - for ; Wed, 28 Apr 2021 23:22:07 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 0143180EC0; - Wed, 28 Apr 2021 15:22:01 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=oss.nxp.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com - header.b="Y9LhgRit"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 11DCC80EC0; Wed, 28 Apr 2021 15:22:00 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-0.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,FORGED_SPF_HELO,MSGID_FROM_MTA_HEADER,SPF_HELO_PASS - autolearn=no autolearn_force=no version=3.4.2 -Received: from EUR05-VI1-obe.outbound.protection.outlook.com - (mail-vi1eur05on20614.outbound.protection.outlook.com - [IPv6:2a01:111:f400:7d00::614]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id BF2AE82BB2 - for ; Wed, 28 Apr 2021 15:21:56 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=oss.nxp.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=peng.fan@oss.nxp.com -ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; - b=Ykl/b+bOscXPccjkBLrnNZ64DLu+6jcykHxXg6zp1iRDn9PjYn5sAB9UzpDwBH/KBFvrw3JDaJE3H5KE1MYt/qTuXtPsUxfuHlok2cGYHW9QtYf5hVHXeWQ2CEuFUsTXn0wkc/UWBAqubidQx/AHfKQCT2TtJgSzsiaS+s0Q4xEfkByM49AF5KbOQ9dfEBqQgcpjjCPO5870sdVmZGUbHH2Alvo3NxlPP1gWLM0yVNN33b5BUxMiBgkiycAt1eN1V5lqmhkzB2i8LrKv8X+8P9n41oowUuqt0Qaai6eYOhg+bhNaZbrEUdcI47KRm5hpg1pk0sYYw+IeXo4P9EmhGg== -ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; - s=arcselector9901; - h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; - bh=Jvu1xYFUKJO/uJlsI76lQFrPlpRTiU+rjukLralExi8=; - b=fZLxEM4upa8xSPDRUr7ha1FAI2UY44OO4z3vEc15uhQcMMwddhIvqbEAMyJ9CfOjnAN3K8FzmE8uZAb5U7qqT9NqOlK0sVsPLb6rXRAIlj2lDUoPPwQ0LAzKA1A8ADxTEGJZhcy+s60JQ2mmPMgg8wf7ybi3YOHnV972Ai8EJT0dCJeEMbWJ2CjRtWZqpLyDujovr8w82q2vXpFPXMp/krwklqtTdlGxgKP9ZMU+2n0SGvqBTcXts/cE+XxraFrOTth/rdLrqKtKXGjbGGN9bW0cNJWzmYMFBwR8oU27Ygr0FZ7GFqW7pGdPaGkfjsbkqvS+8P9/4qBo208dUryMZg== -ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass - smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; - dkim=pass header.d=oss.nxp.com; arc=none -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; - s=selector2-NXP1-onmicrosoft-com; - h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; - bh=Jvu1xYFUKJO/uJlsI76lQFrPlpRTiU+rjukLralExi8=; - b=Y9LhgRit5KPyFtT5AVfHzHnlc9O6Ssk9T3mI7BThr15G7JYL8xyLUH1Yx3UmVl57Rvgz1z8yMTCtLyhHB3Xbw82ysiOO8JpHAM1U20AXO2mAew0td3xOPWJ7aDBS2NBdGmkM4PG9WfYlpl8TzsMDJNfjpNWiID6ykA2/FGS3Krg= -Authentication-Results: gmx.de; dkim=none (message not signed) - header.d=none;gmx.de; dmarc=none action=none header.from=oss.nxp.com; -Received: from AM5PR0402MB2756.eurprd04.prod.outlook.com - (2603:10a6:203:99::22) by AM6PR0402MB3525.eurprd04.prod.outlook.com - (2603:10a6:209:4::14) with Microsoft SMTP Server (version=TLS1_2, - cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.25; Wed, 28 Apr - 2021 13:21:55 +0000 -Received: from AM5PR0402MB2756.eurprd04.prod.outlook.com - ([fe80::b158:2ae5:f2d1:7142]) by AM5PR0402MB2756.eurprd04.prod.outlook.com - ([fe80::b158:2ae5:f2d1:7142%9]) with mapi id 15.20.4065.027; Wed, 28 Apr 2021 - 13:21:55 +0000 -From: "Peng Fan (OSS)" -To: xypron.glpk@gmx.de, - agraf@csgraf.de -Cc: u-boot@lists.denx.de, pbrobinson@redhat.com, grant.likely@arm.com, - Peng Fan , - =?utf-8?q?Stefan_S=C3=B8rensen?= , - Peter Robinson -Subject: [PATCH V2] efi_loader: loosen buffer parameter check in - efi_file_read_int -Date: Wed, 28 Apr 2021 21:54:01 +0800 -Message-Id: <20210428135401.22365-1-peng.fan@oss.nxp.com> -X-Mailer: git-send-email 2.30.0 -X-Originating-IP: [119.31.174.71] -X-ClientProxiedBy: HK2PR0302CA0020.apcprd03.prod.outlook.com - (2603:1096:202::30) To AM5PR0402MB2756.eurprd04.prod.outlook.com - (2603:10a6:203:99::22) -MIME-Version: 1.0 -X-MS-Exchange-MessageSentRepresentingType: 1 -Received: from linux-1xn6.ap.freescale.net (119.31.174.71) by - HK2PR0302CA0020.apcprd03.prod.outlook.com (2603:1096:202::30) with Microsoft - SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id - 15.20.4087.16 via Frontend Transport; Wed, 28 Apr 2021 13:21:52 +0000 -X-MS-PublicTrafficType: Email -X-MS-Office365-Filtering-Correlation-Id: d16d4712-33ca-4f2f-49cf-08d90a489784 -X-MS-TrafficTypeDiagnostic: AM6PR0402MB3525: -X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True -X-MS-Exchange-Transport-Forked: True -X-Microsoft-Antispam-PRVS: - -X-MS-Oob-TLC-OOBClassifiers: OLM:1091; -X-MS-Exchange-SenderADCheck: 1 -X-Microsoft-Antispam: BCL:0; -X-Microsoft-Antispam-Message-Info: - R8IIzR87BJ9qITheAW0/6SscIznIBDQntrQKYiITRtr3RZNBHPGuiexfqYuAABypLYa20Kpjk8qwFtkVl5Wv9zswD2NHqy5w+BU9PNQDIw5/spSSuSNZKUBD9L1rsFxNX+pluafaP2yEzJ09OmA1rGVbLC8uc0VtwPFvuyXoPYvMI8nbxEuX8eVVs8oz6i8qTLMzAKJS7PgYVwBQQjkqPEAwfnkSibtgFyy2rBjeD18PGmRSKqwkNWkO7w3bBkj/7Zor9h/8j8w07q+Iq/ZU1Mlbm8USlj2VCmhqkJddRE7/Jj0NMfQLQJ3zZABeONnYzgAUfyXXQb4sxuuM+nqRwyW/oASjsumXU4sApadRppYdLqA2uxrvM7HduDA16u1YIOc7exaHsHSuZm3p0jnKSbUkDWki3YwYZYKuOSAhwVnxIFzdFO331d/JoJnvCPulh43Bf2ndcJ+Fi6UK/BPtUCHjzSvXm5SWO2YlsNW6EAQf/teSOpYzo6jQT3QLS5InHcfHTUBcF7z7679ht2IGrNZZc2gq/Z5eCppzp33pHTx+R+wqWt+vDU8+iho2jR4+UoTTC2VanZ8dprckWpPXxgtPq6ZbkmFKjdql5ZZWwMfKu/0DaKI+T0Qcrgo5BUNETfCuDu48gBkMrs+ewk5JWR4u9Dwgq605ea1ydic2+X7SoTc/ZQ1mnr+P5IBaTsdJxE4rLVKGAo5HZcS7X6t2b9RSQz2CTskNOlg9t+2XE0zvDc19T8CF6rTS8DkG4yQa -X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; - IPV:NLI; SFV:NSPM; H:AM5PR0402MB2756.eurprd04.prod.outlook.com; PTR:; - CAT:NONE; - SFS:(4636009)(136003)(39860400002)(376002)(366004)(396003)(346002)(38100700002)(38350700002)(478600001)(5660300002)(6506007)(6666004)(66574015)(26005)(6486002)(86362001)(956004)(66476007)(2906002)(16526019)(83380400001)(6512007)(1076003)(8676002)(966005)(54906003)(186003)(52116002)(66556008)(66946007)(4326008)(316002)(2616005)(8936002); - DIR:OUT; SFP:1101; -X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?mYfVlOJMJVsoKYMLc92rFnaCTR+XLQ?= - =?utf-8?q?NE9Fknv0C/Xkfupn634/z0PDINPn1vwI7UBh2GXDundoV+tDpV3/J9Ao+ZaklGBv/?= - =?utf-8?q?35YvbogOLThhUOpbrxM2+PmyMASh2BwZQm4j3DtGuxerW2benG82zAGjtAJ70va+R?= - =?utf-8?q?fdHJfMOIDL+Oxkvqa8F1tiAWyVebMmTb9LvZQdnkJtClzsGEsN7JuXzN5zAG9JnDk?= - =?utf-8?q?ptt4s0xR8Tngwj+0ktYv/WIYfWbyVRKt2cGY+IbfGzOgHeeR/6msyKEXY6EKxdrGp?= - =?utf-8?q?ddqp/uOGuH2BlhbQtqWthQJBCUI+HaR7mZgiEJctgT+rWAgDrZMTtvzQT/2TTs+4L?= - =?utf-8?q?Pqu1h8tKSW3diXo+rqN1splk5PQ0rbM9pPZECBGS/9KWkqZOCtKtGQWbDf1N4t/tX?= - =?utf-8?q?jJ+JS/eOy0dBvhEmZ6tbCB5HpkLj/GbwlXsIm6aJbCXmd7hGzt+B9avRbm6uYmrHx?= - =?utf-8?q?xMBLr/kYUvivhGCUqFEuApHEUlG6yVU6rFPTtzXtE9aYWlsF+IFI0YAUfgmi5X3c4?= - =?utf-8?q?fvpdyhxyz0g5S58VT2SXLiBxvhwRX/5stsFvKurZjoTi5m7GkFJlzD3JpY5tikAgx?= - =?utf-8?q?S48dfUkcZRBLJKtpJln7kGQ4yCyuxkJfyN+4VDmIEUQgWmSGwo0Z77B/A1lYejj+p?= - =?utf-8?q?oC8BhkvFUTynlVzcft9BNfW3rQaTOoNFmU3wiIqRxDzWZfkL3tZroLTZJnDN6KOrK?= - =?utf-8?q?2xERgFeiItx0xafXIOmUEnPoWUY1jtqv7qdVGy2HyJ6Us3tI8KNIL/Ezl9Cl9Wm8F?= - =?utf-8?q?Rh/qZG13p7g11rt+6Bue1jxVckObYlnLPUzuAa2ZzqB1gZjXKKXDgS9eSsr+1aDjv?= - =?utf-8?q?0MZCYmHZIBgmkKI0oNiqOWuzYI3T3ofJ2RT1TKthFErEJu0dZAZH1O2YxGlEpXKzH?= - =?utf-8?q?eahQ8Zr/xhS85QykeKLXr+XKvURNH/yiY4KETT/kTq5BXPjIDIHtKaa3UnE8DTaew?= - =?utf-8?q?aqy7YoDaolXatDKpuLa9E9CwRbrN2D38XwteMWDd5zCLvLZ+g7+pUjtqyoHs5lXbv?= - =?utf-8?q?Tqb2DmK8tr3nMHzx5370ZV+bfbKvyqEECHE+AyXyb94GtEQaYgatdcI61SuVO82ZW?= - =?utf-8?q?imQgBtq9BAdYABcHPMBpe4BuiQZRO2VdwtaUrLAZc4xyFTPnrnqM0ajr5/9bMQ4Qd?= - =?utf-8?q?Ar+eZL4d88AuBRbax/JmKGSxLCxUVyAjXtrcEnoibNf1yLZlcgAp8kEaK1mMOh2B7?= - =?utf-8?q?UflHobGwDKQKgP5I34mBssnm96TCDU6t+rHhProt6OgOKQPoQ5gmKvQx5CBsVuTA0?= - =?utf-8?q?3gJ4gCfW4myFky?= -X-OriginatorOrg: oss.nxp.com -X-MS-Exchange-CrossTenant-Network-Message-Id: - d16d4712-33ca-4f2f-49cf-08d90a489784 -X-MS-Exchange-CrossTenant-AuthSource: - AM5PR0402MB2756.eurprd04.prod.outlook.com -X-MS-Exchange-CrossTenant-AuthAs: Internal -X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2021 13:21:54.9886 (UTC) -X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted -X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 -X-MS-Exchange-CrossTenant-MailboxType: HOSTED -X-MS-Exchange-CrossTenant-UserPrincipalName: - kJtC/i3wLmUtXCoTbf/Jg1qhdz4MvWusai7Piwigv6OEGOknbKvDpIUrRwJMUXhNsSApid+ni8lC5sO+x5y30w== -X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR0402MB3525 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de -X-Virus-Status: Clean - -From: Peng Fan - -This is same issue as https://bugzilla.redhat.com/show_bug.cgi?id=1733817, -but that fix was wrongly partial reverted. - -When reading a directory, EFI_BUFFER_TOO_SMALL should be returned when -the supplied buffer is too small, so a use-case is to call -EFI_FILE_PROTOCOL.Read() with *buffer_size=0 and buffer=NULL to -obtain the needed size before doing the actual read. - -So remove the check only for directory reading, file reading already -do the check by itself. - -Fixes: db12f518edb0("efi_loader: implement non-blocking file services") -Cc: Heinrich Schuchardt -Cc: Stefan Sørensen -Tested-by: Peter Robinson -Signed-off-by: Peng Fan -Reviewed-by: Heinrich Schuchardt -Tested-by: Michal Simek ---- - -V2: - Update commit log Per Heinrich's comments. - Add T-b tag - - lib/efi_loader/efi_file.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/efi_loader/efi_file.c b/lib/efi_loader/efi_file.c -index 204105e25a..6b3f5962be 100644 ---- a/lib/efi_loader/efi_file.c -+++ b/lib/efi_loader/efi_file.c -@@ -554,7 +554,7 @@ static efi_status_t efi_file_read_int(struct efi_file_handle *this, - efi_status_t ret = EFI_SUCCESS; - u64 bs; - -- if (!this || !buffer_size || !buffer) -+ if (!this || !buffer_size) - return EFI_INVALID_PARAMETER; - - bs = *buffer_size; diff --git a/sources b/sources index d89c8d2..8a66efd 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2021.07-rc2.tar.bz2) = 3d753a7e85894fd0ecbe9ffcf6da6cc8f5e5d26cb1ec2505035c2183729d1b3ae5e4ece6ecdd93125f50627cd3e358cd911570c366e7e9dafac2c1369ca49697 +SHA512 (u-boot-2021.07-rc3.tar.bz2) = 11d4f7ab96ac4a430ed39a0d13788c32f4a8b1657cd71f00d27ea1c87047f48ed85055e4ceca940912301d15f3f1448af442b3011c290eddf8c72ee8d4a7d437 diff --git a/uboot-tools.spec b/uboot-tools.spec index fa0cc28..c4b5d82 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -%global candidate rc2 +%global candidate rc3 Name: uboot-tools Version: 2021.07 -Release: 0.2%{?candidate:.%{candidate}}%{?dist} +Release: 0.3%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -16,10 +16,8 @@ Source4: aarch64-chromebooks # Fedoraisms patches # Needed to find DT on boot partition that's not the first partition Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch -# https://lists.denx.de/pipermail/u-boot/2021-April/448260.html -Patch2: efi_loader-loosen-buffer-parameter-check-in-efi_file_read_int.patch # RPi - uses RPI firmware device tree for HAT support -Patch3: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch +Patch2: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch # Board fixes and enablement # AllWinner improvements @@ -255,6 +253,10 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Tue May 25 2021 Peter Robinson - 2021.07-0.3.rc3 +- Update to 2021.07 RC3 +- Build against ATF 2.5 GA + * Thu May 13 2021 Peter Robinson - 2021.07-0.2.rc2 - Build against new ATF 2.5-rc1 From 6c925bc3153c9ec6aec3b059de3c14c45e6c3f9b Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sat, 5 Jun 2021 21:23:11 +0100 Subject: [PATCH 068/271] AllWinner devices booting from mSD/MMC --- sunxi-fix-mmc0.patch | 41 +++++++++++++++++++++++++++++++++++++++++ uboot-tools.spec | 7 ++++++- 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 sunxi-fix-mmc0.patch diff --git a/sunxi-fix-mmc0.patch b/sunxi-fix-mmc0.patch new file mode 100644 index 0000000..e741ac1 --- /dev/null +++ b/sunxi-fix-mmc0.patch @@ -0,0 +1,41 @@ +From 6785434709b74b9a821a21e7228a4c9eb4843095 Mon Sep 17 00:00:00 2001 +From: Andre Przywara +Date: Fri, 16 Apr 2021 11:52:27 +0100 +Subject: [PATCH] sunxi: Bring back SD card as MMC device 0 + +Commit 2243d19e5618 ("mmc: mmc-uclass: Use dev_seq() to read aliases +node's index") now actually enforces U-Boot's device enumeration policy, +where explicitly named devices come first, then any other non-named +devices follow, without filling gaps. + +For quite a while we have had an "mmc1 = &mmc2;" alias in our +sunxi-u-boot.dtsi, which now leads to the problem that the SD card +(which was always mmc device 0) now gets to be number 2. +This breaks quite some boot scripts, including our own distro boot +commands, and some other features looking at $mmc_bootdev, also +fastboot. + +Just add an explicit mmc0 alias in the very same file to fix this and +restore the old behaviour. + +Signed-off-by: Andre Przywara +Reported-by: Samuel Holland +Tested-by: Simon Baatz +--- + arch/arm/dts/sunxi-u-boot.dtsi | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/arch/arm/dts/sunxi-u-boot.dtsi b/arch/arm/dts/sunxi-u-boot.dtsi +index a4227a3c22..06da009fa2 100644 +--- a/arch/arm/dts/sunxi-u-boot.dtsi ++++ b/arch/arm/dts/sunxi-u-boot.dtsi +@@ -12,6 +12,7 @@ + + / { + aliases { ++ mmc0 = &mmc0; + mmc1 = &mmc2; + }; + +-- +GitLab diff --git a/uboot-tools.spec b/uboot-tools.spec index c4b5d82..15ad550 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -2,11 +2,12 @@ Name: uboot-tools Version: 2021.07 -Release: 0.3%{?candidate:.%{candidate}}%{?dist} +Release: 0.4%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot +ExcludeArch: s390x Source0: ftp://ftp.denx.de/pub/u-boot/u-boot-%{version}%{?candidate:-%{candidate}}.tar.bz2 Source1: arm-boards Source2: arm-chromebooks @@ -27,6 +28,7 @@ Patch11: 0001-Fix-BeagleAI-detection.patch # Rockchips improvements Patch12: phy-rockchip-inno-usb2-fix-hang-when-multiple-controllers-exit.patch Patch13: rockchip-fix-mmc-numbering.patch +Patch14: sunxi-fix-mmc0.patch BuildRequires: bc BuildRequires: dtc @@ -253,6 +255,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Sat Jun 05 2021 Peter Robinson - 2021.07-0.4.rc3 +- Fix AllWinner devices booting from mSD/MMC + * Tue May 25 2021 Peter Robinson - 2021.07-0.3.rc3 - Update to 2021.07 RC3 - Build against ATF 2.5 GA From 52be77ca6b5d7bdcdc512842beb8749171a375c7 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 7 Jun 2021 16:44:07 +0100 Subject: [PATCH 069/271] 2021.07 RC4 --- sources | 2 +- sunxi-fix-mmc0.patch | 41 ----------------------------------------- uboot-tools.spec | 8 +++++--- 3 files changed, 6 insertions(+), 45 deletions(-) delete mode 100644 sunxi-fix-mmc0.patch diff --git a/sources b/sources index 8a66efd..23a8296 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2021.07-rc3.tar.bz2) = 11d4f7ab96ac4a430ed39a0d13788c32f4a8b1657cd71f00d27ea1c87047f48ed85055e4ceca940912301d15f3f1448af442b3011c290eddf8c72ee8d4a7d437 +SHA512 (u-boot-2021.07-rc4.tar.bz2) = 43d6b6106aa075f9834f425710215eac2285108a845a80e29582a0425e006478594744806c3892b2d27fbeaba34d324d2cfdc149ce059cbf22ee76746ff66151 diff --git a/sunxi-fix-mmc0.patch b/sunxi-fix-mmc0.patch deleted file mode 100644 index e741ac1..0000000 --- a/sunxi-fix-mmc0.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 6785434709b74b9a821a21e7228a4c9eb4843095 Mon Sep 17 00:00:00 2001 -From: Andre Przywara -Date: Fri, 16 Apr 2021 11:52:27 +0100 -Subject: [PATCH] sunxi: Bring back SD card as MMC device 0 - -Commit 2243d19e5618 ("mmc: mmc-uclass: Use dev_seq() to read aliases -node's index") now actually enforces U-Boot's device enumeration policy, -where explicitly named devices come first, then any other non-named -devices follow, without filling gaps. - -For quite a while we have had an "mmc1 = &mmc2;" alias in our -sunxi-u-boot.dtsi, which now leads to the problem that the SD card -(which was always mmc device 0) now gets to be number 2. -This breaks quite some boot scripts, including our own distro boot -commands, and some other features looking at $mmc_bootdev, also -fastboot. - -Just add an explicit mmc0 alias in the very same file to fix this and -restore the old behaviour. - -Signed-off-by: Andre Przywara -Reported-by: Samuel Holland -Tested-by: Simon Baatz ---- - arch/arm/dts/sunxi-u-boot.dtsi | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/arch/arm/dts/sunxi-u-boot.dtsi b/arch/arm/dts/sunxi-u-boot.dtsi -index a4227a3c22..06da009fa2 100644 ---- a/arch/arm/dts/sunxi-u-boot.dtsi -+++ b/arch/arm/dts/sunxi-u-boot.dtsi -@@ -12,6 +12,7 @@ - - / { - aliases { -+ mmc0 = &mmc0; - mmc1 = &mmc2; - }; - --- -GitLab diff --git a/uboot-tools.spec b/uboot-tools.spec index 15ad550..0233f49 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -%global candidate rc3 +%global candidate rc4 Name: uboot-tools Version: 2021.07 -Release: 0.4%{?candidate:.%{candidate}}%{?dist} +Release: 0.5%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -28,7 +28,6 @@ Patch11: 0001-Fix-BeagleAI-detection.patch # Rockchips improvements Patch12: phy-rockchip-inno-usb2-fix-hang-when-multiple-controllers-exit.patch Patch13: rockchip-fix-mmc-numbering.patch -Patch14: sunxi-fix-mmc0.patch BuildRequires: bc BuildRequires: dtc @@ -255,6 +254,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Mon Jun 07 2021 Peter Robinson - 2021.07-0.5.rc4 +- Update to 2021.07 RC4 + * Sat Jun 05 2021 Peter Robinson - 2021.07-0.4.rc3 - Fix AllWinner devices booting from mSD/MMC From 8cca32551309dd3f5870d50f3e2814a70132ea58 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 28 Jun 2021 20:52:12 +0100 Subject: [PATCH 070/271] 2021.07 RC5 --- sources | 2 +- uboot-tools.spec | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/sources b/sources index 23a8296..db1745f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2021.07-rc4.tar.bz2) = 43d6b6106aa075f9834f425710215eac2285108a845a80e29582a0425e006478594744806c3892b2d27fbeaba34d324d2cfdc149ce059cbf22ee76746ff66151 +SHA512 (u-boot-2021.07-rc5.tar.bz2) = ecac447e6df0ad0cc73c27dc821dd663efa239004f5b5947cdedf5593a32a1931555bfc9359e1863b01c35fdbbd21784f66ed704c82edf82409159dcf06400c1 diff --git a/uboot-tools.spec b/uboot-tools.spec index 0233f49..1b468aa 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -%global candidate rc4 +%global candidate rc5 Name: uboot-tools Version: 2021.07 -Release: 0.5%{?candidate:.%{candidate}}%{?dist} +Release: 0.6%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -129,7 +129,7 @@ do %make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" O=builds/$(echo $board)/ # build spi images for rockchip boards with SPI flash - rkspi=(evb-rk3399 khadas-edge-captain-rk3399 khadas-edge-rk3399 khadas-edge-v-rk3399 nanopc-t4-rk3399 pinebook-pro-rk3399 rockpro64-rk3399) + rkspi=(evb-rk3399 khadas-edge-captain-rk3399 khadas-edge-rk3399 khadas-edge-v-rk3399 nanopc-t4-rk3399 pinebook-pro-rk3399 rockpro64-rk3399 roc-pc-mezzanine-rk3399 roc-pc-rk3399) if [[ " ${rkspi[*]} " == *" $board "* ]]; then echo "Board: $board with SPI flash" builds/$(echo $board)/tools/mkimage -n rk3399 -T rkspi -d builds/$(echo $board)/tpl/u-boot-tpl.bin:builds/$(echo $board)/spl/u-boot-spl.bin builds/$(echo $board)/idbloader.spi @@ -254,6 +254,10 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Mon Jun 28 2021 Peter Robinson - 2021.07-0.6.rc5 +- Update to 2021.07 RC5 +- Build SPI fash images for ROC-PC-RK3399 + * Mon Jun 07 2021 Peter Robinson - 2021.07-0.5.rc4 - Update to 2021.07 RC4 From dd361c8ed3282d53ca7f115b6f6104e39cb4eab7 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 5 Jul 2021 20:09:30 +0100 Subject: [PATCH 071/271] 2021.07 --- sources | 2 +- uboot-tools.spec | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sources b/sources index db1745f..723afda 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2021.07-rc5.tar.bz2) = ecac447e6df0ad0cc73c27dc821dd663efa239004f5b5947cdedf5593a32a1931555bfc9359e1863b01c35fdbbd21784f66ed704c82edf82409159dcf06400c1 +SHA512 (u-boot-2021.07.tar.bz2) = 210b206a4626feb0985580d9448a97b499b09bf9b9313ca847a66624785e9e9b0fae8f2e329acd344f5f75cb722d2093dd0ee394311ddd1fde05e400ee71a24d diff --git a/uboot-tools.spec b/uboot-tools.spec index 1b468aa..9bb615d 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -%global candidate rc5 +#global candidate rc0 Name: uboot-tools Version: 2021.07 -Release: 0.6%{?candidate:.%{candidate}}%{?dist} +Release: 1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -254,6 +254,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Mon Jul 05 2021 Peter Robinson - 2021.07-1 +- Update to 2021.07 GA + * Mon Jun 28 2021 Peter Robinson - 2021.07-0.6.rc5 - Update to 2021.07 RC5 - Build SPI fash images for ROC-PC-RK3399 From e3985d3d2e54af6d9bced51928731c05a7a73dd1 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 22 Jul 2021 16:44:12 +0100 Subject: [PATCH 072/271] Fix regression for Rockchip devices running firmware from SPI flash --- ...class-Add-support-to-manually-reloca.patch | 53 +++++++++++++++++++ uboot-tools.spec | 6 ++- 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch diff --git a/0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch b/0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch new file mode 100644 index 0000000..5dd7695 --- /dev/null +++ b/0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch @@ -0,0 +1,53 @@ +From 1c56fc2835e10cdc039a4c1d049c1a6978e036f3 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Thu, 22 Jul 2021 16:22:48 +0100 +Subject: [PATCH] Revert "spi: spi-uclass: Add support to manually relocate spi + memory ops" + +This reverts commit 346df7d4fa62afc578d820b3a18815eec765074f. + +This patch broke booting Rockchip systems from U-Boot residing on SPI +flash, for at least the Pinebook Pro and Rockpro64, and also confirmed +with the not yet upstream Helios64. + +Signed-off-by: Peter Robinson +Cc: T Karthik Reddy +Cc: Ashok Reddy Soma +Cc: Michal Simek +Cc: Pratyush Yadav +--- + drivers/spi/spi-uclass.c | 11 ----------- + 1 file changed, 11 deletions(-) + +diff --git a/drivers/spi/spi-uclass.c b/drivers/spi/spi-uclass.c +index d867b27806..ec7f4652b3 100644 +--- a/drivers/spi/spi-uclass.c ++++ b/drivers/spi/spi-uclass.c +@@ -11,7 +11,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -200,16 +199,6 @@ static int spi_post_probe(struct udevice *bus) + ops->set_mode += gd->reloc_off; + if (ops->cs_info) + ops->cs_info += gd->reloc_off; +- if (ops->mem_ops) { +- struct spi_controller_mem_ops *mem_ops = +- (struct spi_controller_mem_ops *)ops->mem_ops; +- if (mem_ops->adjust_op_size) +- mem_ops->adjust_op_size += gd->reloc_off; +- if (mem_ops->supports_op) +- mem_ops->supports_op += gd->reloc_off; +- if (mem_ops->exec_op) +- mem_ops->exec_op += gd->reloc_off; +- } + reloc_done++; + } + #endif +-- +2.31.1 + diff --git a/uboot-tools.spec b/uboot-tools.spec index 9bb615d..6afb82e 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -2,7 +2,7 @@ Name: uboot-tools Version: 2021.07 -Release: 1%{?candidate:.%{candidate}}%{?dist} +Release: 2%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -28,6 +28,7 @@ Patch11: 0001-Fix-BeagleAI-detection.patch # Rockchips improvements Patch12: phy-rockchip-inno-usb2-fix-hang-when-multiple-controllers-exit.patch Patch13: rockchip-fix-mmc-numbering.patch +Patch14: 0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch BuildRequires: bc BuildRequires: dtc @@ -254,6 +255,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Thu Jul 22 2021 Peter Robinson - 2021.07-2 +- Fix regression for Rockchip devices running firmware from SPI flash + * Mon Jul 05 2021 Peter Robinson - 2021.07-1 - Update to 2021.07 GA From 70da6a07574b8b3d010d75254fdd4d9908623f9f Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sat, 14 Aug 2021 10:04:14 +0100 Subject: [PATCH 073/271] 2021.10 RC1 --- arm-boards | 1 + sources | 2 +- uboot-tools.spec | 12 ++++++++---- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/arm-boards b/arm-boards index 63ab288..a6b85e5 100644 --- a/arm-boards +++ b/arm-boards @@ -138,3 +138,4 @@ Wexler_TAB7200 Wits_Pro_A20_DKT xilinx_zynq_virt Yones_Toptech_BS1078_V2 +zeropi diff --git a/sources b/sources index 723afda..b1c060f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2021.07.tar.bz2) = 210b206a4626feb0985580d9448a97b499b09bf9b9313ca847a66624785e9e9b0fae8f2e329acd344f5f75cb722d2093dd0ee394311ddd1fde05e400ee71a24d +SHA512 (u-boot-2021.10-rc1.tar.bz2) = 1481cb95501432b8cf5a06793e0e9dd3164911b8844bd328dccf88deabeb6fe18c865003f170b5d46a0b2b301a0960478582f922381e3e9b36962a97fe6cb5bc diff --git a/uboot-tools.spec b/uboot-tools.spec index 6afb82e..fd0a2bc 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -#global candidate rc0 +%global candidate rc1 Name: uboot-tools -Version: 2021.07 -Release: 2%{?candidate:.%{candidate}}%{?dist} +Version: 2021.10 +Release: 0.1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -33,6 +33,7 @@ Patch14: 0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch BuildRequires: bc BuildRequires: dtc BuildRequires: make +BuildRequires: perl-interpreter # Requirements for building on el7 %if 0%{?rhel} == 7 BuildRequires: devtoolset-7-build @@ -136,7 +137,7 @@ do builds/$(echo $board)/tools/mkimage -n rk3399 -T rkspi -d builds/$(echo $board)/tpl/u-boot-tpl.bin:builds/$(echo $board)/spl/u-boot-spl.bin builds/$(echo $board)/idbloader.spi fi # build spi, and uart images for mvebu boards - mvebu=(clearfog helios4 turris_omnia) + # mvebu=(clearfog helios4 turris_omnia) if [[ " ${mvebu[*]} " == *" $board "* ]]; then for target in spi uart do @@ -255,6 +256,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Sun Aug 08 2021 Peter Robinson - 2021.10-0.1.rc1 +- Update to 2021.10 RC1 + * Thu Jul 22 2021 Peter Robinson - 2021.07-2 - Fix regression for Rockchip devices running firmware from SPI flash From e006fd503572c5ceb996723d77af92f898a09c09 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 16 Aug 2021 20:03:59 +0100 Subject: [PATCH 074/271] 2021.10 RC2 --- ...class-Add-support-to-manually-reloca.patch | 53 ----------------- rockchip-fix-mmc-numbering.patch | 57 ------------------- sources | 2 +- uboot-tools.spec | 9 +-- 4 files changed, 6 insertions(+), 115 deletions(-) delete mode 100644 0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch delete mode 100644 rockchip-fix-mmc-numbering.patch diff --git a/0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch b/0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch deleted file mode 100644 index 5dd7695..0000000 --- a/0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 1c56fc2835e10cdc039a4c1d049c1a6978e036f3 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Thu, 22 Jul 2021 16:22:48 +0100 -Subject: [PATCH] Revert "spi: spi-uclass: Add support to manually relocate spi - memory ops" - -This reverts commit 346df7d4fa62afc578d820b3a18815eec765074f. - -This patch broke booting Rockchip systems from U-Boot residing on SPI -flash, for at least the Pinebook Pro and Rockpro64, and also confirmed -with the not yet upstream Helios64. - -Signed-off-by: Peter Robinson -Cc: T Karthik Reddy -Cc: Ashok Reddy Soma -Cc: Michal Simek -Cc: Pratyush Yadav ---- - drivers/spi/spi-uclass.c | 11 ----------- - 1 file changed, 11 deletions(-) - -diff --git a/drivers/spi/spi-uclass.c b/drivers/spi/spi-uclass.c -index d867b27806..ec7f4652b3 100644 ---- a/drivers/spi/spi-uclass.c -+++ b/drivers/spi/spi-uclass.c -@@ -11,7 +11,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -200,16 +199,6 @@ static int spi_post_probe(struct udevice *bus) - ops->set_mode += gd->reloc_off; - if (ops->cs_info) - ops->cs_info += gd->reloc_off; -- if (ops->mem_ops) { -- struct spi_controller_mem_ops *mem_ops = -- (struct spi_controller_mem_ops *)ops->mem_ops; -- if (mem_ops->adjust_op_size) -- mem_ops->adjust_op_size += gd->reloc_off; -- if (mem_ops->supports_op) -- mem_ops->supports_op += gd->reloc_off; -- if (mem_ops->exec_op) -- mem_ops->exec_op += gd->reloc_off; -- } - reloc_done++; - } - #endif --- -2.31.1 - diff --git a/rockchip-fix-mmc-numbering.patch b/rockchip-fix-mmc-numbering.patch deleted file mode 100644 index b8569be..0000000 --- a/rockchip-fix-mmc-numbering.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 76162abd0252cc431abb19421436f34dd9703abe Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Mon, 19 Apr 2021 00:09:11 +0100 -Subject: [PATCH] arm: rockchip: fix mmc numbering - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/rk3328.dtsi | 3 +++ - arch/arm/dts/rk3368.dtsi | 3 +++ - arch/arm/dts/rk3399.dtsi | 3 +++ - 3 files changed, 9 insertions(+) - -diff --git a/arch/arm/dts/rk3328.dtsi b/arch/arm/dts/rk3328.dtsi -index 945387e579..77a556d06f 100644 ---- a/arch/arm/dts/rk3328.dtsi -+++ b/arch/arm/dts/rk3328.dtsi -@@ -27,6 +27,9 @@ - i2c1 = &i2c1; - i2c2 = &i2c2; - i2c3 = &i2c3; -+ mmc0 = &sdmmc; -+ mmc1 = &sdio; -+ mmc2 = &emmc; - ethernet0 = &gmac2io; - ethernet1 = &gmac2phy; - }; -diff --git a/arch/arm/dts/rk3368.dtsi b/arch/arm/dts/rk3368.dtsi -index b4f4f6139d..55b5f6b2a7 100644 ---- a/arch/arm/dts/rk3368.dtsi -+++ b/arch/arm/dts/rk3368.dtsi -@@ -62,6 +62,9 @@ - i2c3 = &i2c3; - i2c4 = &i2c4; - i2c5 = &i2c5; -+ mmc0 = &sdmmc; -+ mmc1 = &sdio0; -+ mmc2 = &emmc; - serial0 = &uart0; - serial1 = &uart1; - serial2 = &uart2; -diff --git a/arch/arm/dts/rk3399.dtsi b/arch/arm/dts/rk3399.dtsi -index 74f2c3d490..5997c29bc8 100644 ---- a/arch/arm/dts/rk3399.dtsi -+++ b/arch/arm/dts/rk3399.dtsi -@@ -29,6 +29,9 @@ - i2c6 = &i2c6; - i2c7 = &i2c7; - i2c8 = &i2c8; -+ mmc0 = &sdmmc; -+ mmc1 = &sdio0; -+ mmc2 = &sdhci; - serial0 = &uart0; - serial1 = &uart1; - serial2 = &uart2; --- -2.31.1 - diff --git a/sources b/sources index b1c060f..f55c53a 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2021.10-rc1.tar.bz2) = 1481cb95501432b8cf5a06793e0e9dd3164911b8844bd328dccf88deabeb6fe18c865003f170b5d46a0b2b301a0960478582f922381e3e9b36962a97fe6cb5bc +SHA512 (u-boot-2021.10-rc2.tar.bz2) = 311e83e982b4fcbb54e67a87302eb49f10e15291956bae08b0edb2065cfefb1b8e7b8a60514fdbc6d86d4129774ddf2fb37620b87917af74bfe31e432b265f9e diff --git a/uboot-tools.spec b/uboot-tools.spec index fd0a2bc..1673200 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -%global candidate rc1 +%global candidate rc2 Name: uboot-tools Version: 2021.10 -Release: 0.1%{?candidate:.%{candidate}}%{?dist} +Release: 0.2%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -27,8 +27,6 @@ Patch10: AllWinner-PineTab.patch Patch11: 0001-Fix-BeagleAI-detection.patch # Rockchips improvements Patch12: phy-rockchip-inno-usb2-fix-hang-when-multiple-controllers-exit.patch -Patch13: rockchip-fix-mmc-numbering.patch -Patch14: 0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch BuildRequires: bc BuildRequires: dtc @@ -256,6 +254,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Mon Aug 16 2021 Peter Robinson - 2021.10-0.2.rc2 +- Update to 2021.10 RC2 + * Sun Aug 08 2021 Peter Robinson - 2021.10-0.1.rc1 - Update to 2021.10 RC1 From 2bd8d4cdb406c3a72163b61a121f37a9be3e18fa Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 23 Aug 2021 21:33:21 +0100 Subject: [PATCH 075/271] Fix for rockchip SPI --- uboot-tools.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 1673200..5f772c8 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -2,7 +2,7 @@ Name: uboot-tools Version: 2021.10 -Release: 0.2%{?candidate:.%{candidate}}%{?dist} +Release: 0.3%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -27,6 +27,7 @@ Patch10: AllWinner-PineTab.patch Patch11: 0001-Fix-BeagleAI-detection.patch # Rockchips improvements Patch12: phy-rockchip-inno-usb2-fix-hang-when-multiple-controllers-exit.patch +Patch13: 0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch BuildRequires: bc BuildRequires: dtc @@ -254,6 +255,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Mon Aug 23 2021 Peter Robinson - 2021.10-0.3.rc2 +- Fix for rockchip SPI + * Mon Aug 16 2021 Peter Robinson - 2021.10-0.2.rc2 - Update to 2021.10 RC2 From e63667d6b3998d5109982022c0f88470ee7a395c Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 23 Aug 2021 21:34:51 +0100 Subject: [PATCH 076/271] add patch --- ...class-Add-support-to-manually-reloca.patch | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch diff --git a/0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch b/0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch new file mode 100644 index 0000000..5dd7695 --- /dev/null +++ b/0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch @@ -0,0 +1,53 @@ +From 1c56fc2835e10cdc039a4c1d049c1a6978e036f3 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Thu, 22 Jul 2021 16:22:48 +0100 +Subject: [PATCH] Revert "spi: spi-uclass: Add support to manually relocate spi + memory ops" + +This reverts commit 346df7d4fa62afc578d820b3a18815eec765074f. + +This patch broke booting Rockchip systems from U-Boot residing on SPI +flash, for at least the Pinebook Pro and Rockpro64, and also confirmed +with the not yet upstream Helios64. + +Signed-off-by: Peter Robinson +Cc: T Karthik Reddy +Cc: Ashok Reddy Soma +Cc: Michal Simek +Cc: Pratyush Yadav +--- + drivers/spi/spi-uclass.c | 11 ----------- + 1 file changed, 11 deletions(-) + +diff --git a/drivers/spi/spi-uclass.c b/drivers/spi/spi-uclass.c +index d867b27806..ec7f4652b3 100644 +--- a/drivers/spi/spi-uclass.c ++++ b/drivers/spi/spi-uclass.c +@@ -11,7 +11,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -200,16 +199,6 @@ static int spi_post_probe(struct udevice *bus) + ops->set_mode += gd->reloc_off; + if (ops->cs_info) + ops->cs_info += gd->reloc_off; +- if (ops->mem_ops) { +- struct spi_controller_mem_ops *mem_ops = +- (struct spi_controller_mem_ops *)ops->mem_ops; +- if (mem_ops->adjust_op_size) +- mem_ops->adjust_op_size += gd->reloc_off; +- if (mem_ops->supports_op) +- mem_ops->supports_op += gd->reloc_off; +- if (mem_ops->exec_op) +- mem_ops->exec_op += gd->reloc_off; +- } + reloc_done++; + } + #endif +-- +2.31.1 + From 319f8123df247d528b4edb1ff7f055427b89ce69 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 24 Aug 2021 14:08:33 +0100 Subject: [PATCH 077/271] Fix for Raspberry Pi firmware properties --- ...-from-firmware-dtb-to-the-loaded-dtb.patch | 161 ++++++++++++++++++ uboot-tools.spec | 6 +- 2 files changed, 166 insertions(+), 1 deletion(-) create mode 100644 rpi-Copy-properties-from-firmware-dtb-to-the-loaded-dtb.patch diff --git a/rpi-Copy-properties-from-firmware-dtb-to-the-loaded-dtb.patch b/rpi-Copy-properties-from-firmware-dtb-to-the-loaded-dtb.patch new file mode 100644 index 0000000..e274435 --- /dev/null +++ b/rpi-Copy-properties-from-firmware-dtb-to-the-loaded-dtb.patch @@ -0,0 +1,161 @@ +From patchwork Sun Aug 22 14:36:55 2021 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sjoerd Simons +X-Patchwork-Id: 1519427 +X-Patchwork-Delegate: matthias.bgg@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4GsydW6ksJz9sW8 + for ; Mon, 23 Aug 2021 00:37:35 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id E456680C87; + Sun, 22 Aug 2021 16:37:28 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=collabora.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 2DF9A80612; Sun, 22 Aug 2021 16:37:03 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_PASS, + SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 +Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk + [IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id E18A480612 + for ; Sun, 22 Aug 2021 16:36:58 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=collabora.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=sjoerd@collabora.com +Received: from beast.luon.net (unknown + [IPv6:2a00:bba0:114f:8c00:40e2:7ff:fef4:3122]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) (Authenticated sender: sjoerd) + by bhuna.collabora.co.uk (Postfix) with ESMTPSA id 7EB361F42806; + Sun, 22 Aug 2021 15:36:58 +0100 (BST) +Received: by beast.luon.net (Postfix, from userid 1000) + id 3CAF1819617; Sun, 22 Aug 2021 16:36:56 +0200 (CEST) +From: Sjoerd Simons +To: u-boot@lists.denx.de +Cc: Ariel D'Alessandro , + Marek Szyprowski , + Matthias Brugger , + Nicolas Saenz Julienne , + Peter Robinson +Subject: [PATCH] rpi: Copy properties from firmware dtb to the loaded dtb +Date: Sun, 22 Aug 2021 16:36:55 +0200 +Message-Id: <20210822143656.289891-1-sjoerd@collabora.com> +X-Mailer: git-send-email 2.33.0 +MIME-Version: 1.0 +X-Mailman-Approved-At: Sun, 22 Aug 2021 16:37:27 +0200 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de +X-Virus-Status: Clean + +The RPI firmware adjusts several property values in the dtb it passes +to u-boot depending on the board/SoC revision. Inherit some of these +when u-boot loads a dtb itself. Specificaly copy: + +* /model: The firmware provides a more specific string +* /memreserve: The firmware defines a reserved range, better keep it +* emmc2bus and pcie0 dma-ranges: The C0T revision of the bcm2711 Soc (as + present on rpi 400 and some rpi 4B boards) has different values for + these then the B0T revision. So these need to be adjusted to boot on + these boards +* blconfig: The firmware defines the memory area where the blconfig + stored. Copy those over so it can be enabled. +* /chosen/kaslr-seed: The firmware generates a kaslr seed, take advantage + of that. + +Signed-off-by: Sjoerd Simons +--- + + board/raspberrypi/rpi/rpi.c | 47 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 47 insertions(+) + +diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c +index df52a4689f..d9467f4bda 100644 +--- a/board/raspberrypi/rpi/rpi.c ++++ b/board/raspberrypi/rpi/rpi.c +@@ -495,8 +495,55 @@ void *board_fdt_blob_setup(void) + return (void *)fw_dtb_pointer; + } + ++int copy_property(void *dst, void *src, char *path, char *property) ++{ ++ int dst_offset, src_offset; ++ const fdt32_t *prop; ++ int len; ++ ++ src_offset = fdt_path_offset(src, path); ++ dst_offset = fdt_path_offset(dst, path); ++ ++ if (src_offset < 0 || dst_offset < 0) ++ return -1; ++ ++ prop = fdt_getprop(src, src_offset, property, &len); ++ if (!prop) ++ return -1; ++ ++ return fdt_setprop(dst, dst_offset, property, prop, len); ++} ++ ++/* Copy tweaks from the firmware dtb to the loaded dtb */ ++void update_fdt_from_fw(void *fdt, void *fw_fdt) ++{ ++ /* Using dtb from firmware directly; leave it alone */ ++ if (fdt == fw_fdt) ++ return; ++ ++ /* The firmware provides a more precie model; so copy that */ ++ copy_property(fdt, fw_fdt, "/", "model"); ++ ++ /* memory reserve as suggested by the firmware */ ++ copy_property(fdt, fw_fdt, "/", "memreserve"); ++ ++ /* Adjust dma-ranges for the SD card and PCI bus as they can depend on ++ * the SoC revision ++ */ ++ copy_property(fdt, fw_fdt, "emmc2bus", "dma-ranges"); ++ copy_property(fdt, fw_fdt, "pcie0", "dma-ranges"); ++ ++ /* Bootloader configuration template exposes as nvmem */ ++ if (copy_property(fdt, fw_fdt, "blconfig", "reg") == 0) ++ copy_property(fdt, fw_fdt, "blconfig", "status"); ++ ++ /* kernel address randomisation seed as provided by the firmware */ ++ copy_property(fdt, fw_fdt, "/chosen", "kaslr-seed"); ++} ++ + int ft_board_setup(void *blob, struct bd_info *bd) + { ++ update_fdt_from_fw(blob, (void *)fw_dtb_pointer); + /* + * For now, we simply always add the simplefb DT node. Later, we + * should be more intelligent, and e.g. only do this if no enabled DT diff --git a/uboot-tools.spec b/uboot-tools.spec index 5f772c8..70240ce 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -2,7 +2,7 @@ Name: uboot-tools Version: 2021.10 -Release: 0.3%{?candidate:.%{candidate}}%{?dist} +Release: 0.4%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -19,6 +19,7 @@ Source4: aarch64-chromebooks Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch # RPi - uses RPI firmware device tree for HAT support Patch2: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch +Patch3: rpi-Copy-properties-from-firmware-dtb-to-the-loaded-dtb.patch # Board fixes and enablement # AllWinner improvements @@ -255,6 +256,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Tue Aug 24 2021 Peter Robinson - 2021.10-0.4.rc2 +- Fix for Raspberry Pi firmware properties + * Mon Aug 23 2021 Peter Robinson - 2021.10-0.3.rc2 - Fix for rockchip SPI From c455dea8f25d50a5e27e4e7f56a0a260f41f0a28 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 30 Aug 2021 18:09:53 +0100 Subject: [PATCH 078/271] 2021.10 RC3 --- sources | 2 +- uboot-tools.spec | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/sources b/sources index f55c53a..f1a966e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2021.10-rc2.tar.bz2) = 311e83e982b4fcbb54e67a87302eb49f10e15291956bae08b0edb2065cfefb1b8e7b8a60514fdbc6d86d4129774ddf2fb37620b87917af74bfe31e432b265f9e +SHA512 (u-boot-2021.10-rc3.tar.bz2) = 8ea85c1d466d7b85e1405bd3c78aefe2b171e5bf443518e0ed78c1fb080a83fd4afda97dd5a0367d4cb2ddb6614f4f41a2c7be7181c99b959c7c0abcdaa3ae18 diff --git a/uboot-tools.spec b/uboot-tools.spec index 70240ce..68de4bc 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,14 +1,14 @@ -%global candidate rc2 +%global candidate rc3 Name: uboot-tools Version: 2021.10 -Release: 0.4%{?candidate:.%{candidate}}%{?dist} +Release: 0.5%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot ExcludeArch: s390x -Source0: ftp://ftp.denx.de/pub/u-boot/u-boot-%{version}%{?candidate:-%{candidate}}.tar.bz2 +Source0: https://ftp.denx.de/pub/u-boot/u-boot-%{version}%{?candidate:-%{candidate}}.tar.bz2 Source1: arm-boards Source2: arm-chromebooks Source3: aarch64-boards @@ -256,6 +256,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Mon Aug 30 2021 Peter Robinson - 2021.10-0.5.rc3 +- Update to 2021.10 RC3 + * Tue Aug 24 2021 Peter Robinson - 2021.10-0.4.rc2 - Fix for Raspberry Pi firmware properties From a320cf868cbc433ade303d8268bf4515a2204ab8 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 30 Aug 2021 18:28:42 +0100 Subject: [PATCH 079/271] rockchip rk3399: enable hs400 and sdma support --- 0001-enable-hs400-and-sdma-support.patch | 158 +++++++++++++++++++++++ uboot-tools.spec | 1 + 2 files changed, 159 insertions(+) create mode 100644 0001-enable-hs400-and-sdma-support.patch diff --git a/0001-enable-hs400-and-sdma-support.patch b/0001-enable-hs400-and-sdma-support.patch new file mode 100644 index 0000000..782366f --- /dev/null +++ b/0001-enable-hs400-and-sdma-support.patch @@ -0,0 +1,158 @@ +From 42aa88db46fa88db52bbb5a96fc0eaebe695110e Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Mon, 30 Aug 2021 18:20:39 +0100 +Subject: [PATCH] enable hs400 and sdma support + +Signed-off-by: Peter Robinson +--- + configs/firefly-rk3399_defconfig | 2 ++ + configs/nanopc-t4-rk3399_defconfig | 2 ++ + configs/nanopi-m4-2gb-rk3399_defconfig | 2 ++ + configs/nanopi-m4-rk3399_defconfig | 2 ++ + configs/nanopi-m4b-rk3399_defconfig | 2 ++ + configs/nanopi-neo4-rk3399_defconfig | 2 ++ + configs/nanopi-r4s-rk3399_defconfig | 2 ++ + configs/pinebook-pro-rk3399_defconfig | 1 + + configs/rock960-rk3399_defconfig | 1 + + configs/rockpro64-rk3399_defconfig | 2 ++ + 10 files changed, 18 insertions(+) + +diff --git a/configs/firefly-rk3399_defconfig b/configs/firefly-rk3399_defconfig +index 2ca2ac35e4..84ee690a2d 100644 +--- a/configs/firefly-rk3399_defconfig ++++ b/configs/firefly-rk3399_defconfig +@@ -33,7 +33,9 @@ CONFIG_MISC=y + CONFIG_ROCKCHIP_EFUSE=y + CONFIG_MMC_DW=y + CONFIG_MMC_DW_ROCKCHIP=y ++CONFIG_MMC_HS400_SUPPORT=y + CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_SDMA=y + CONFIG_MMC_SDHCI_ROCKCHIP=y + CONFIG_SF_DEFAULT_SPEED=20000000 + CONFIG_DM_ETH=y +diff --git a/configs/nanopc-t4-rk3399_defconfig b/configs/nanopc-t4-rk3399_defconfig +index a94f428def..722377803e 100644 +--- a/configs/nanopc-t4-rk3399_defconfig ++++ b/configs/nanopc-t4-rk3399_defconfig +@@ -30,7 +30,9 @@ CONFIG_ROCKCHIP_GPIO=y + CONFIG_SYS_I2C_ROCKCHIP=y + CONFIG_MMC_DW=y + CONFIG_MMC_DW_ROCKCHIP=y ++CONFIG_MMC_HS400_SUPPORT=y + CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_SDMA=y + CONFIG_MMC_SDHCI_ROCKCHIP=y + CONFIG_DM_ETH=y + CONFIG_ETH_DESIGNWARE=y +diff --git a/configs/nanopi-m4-2gb-rk3399_defconfig b/configs/nanopi-m4-2gb-rk3399_defconfig +index c9833fdb85..384d7da80c 100644 +--- a/configs/nanopi-m4-2gb-rk3399_defconfig ++++ b/configs/nanopi-m4-2gb-rk3399_defconfig +@@ -29,7 +29,9 @@ CONFIG_ROCKCHIP_GPIO=y + CONFIG_SYS_I2C_ROCKCHIP=y + CONFIG_MMC_DW=y + CONFIG_MMC_DW_ROCKCHIP=y ++CONFIG_MMC_HS400_SUPPORT=y + CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_SDMA=y + CONFIG_MMC_SDHCI_ROCKCHIP=y + CONFIG_DM_ETH=y + CONFIG_ETH_DESIGNWARE=y +diff --git a/configs/nanopi-m4-rk3399_defconfig b/configs/nanopi-m4-rk3399_defconfig +index 2b2fcac366..b6b8ca8d3a 100644 +--- a/configs/nanopi-m4-rk3399_defconfig ++++ b/configs/nanopi-m4-rk3399_defconfig +@@ -29,7 +29,9 @@ CONFIG_ROCKCHIP_GPIO=y + CONFIG_SYS_I2C_ROCKCHIP=y + CONFIG_MMC_DW=y + CONFIG_MMC_DW_ROCKCHIP=y ++CONFIG_MMC_HS400_SUPPORT=y + CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_SDMA=y + CONFIG_MMC_SDHCI_ROCKCHIP=y + CONFIG_DM_ETH=y + CONFIG_ETH_DESIGNWARE=y +diff --git a/configs/nanopi-m4b-rk3399_defconfig b/configs/nanopi-m4b-rk3399_defconfig +index 6d3afe1b63..3f83877e0a 100644 +--- a/configs/nanopi-m4b-rk3399_defconfig ++++ b/configs/nanopi-m4b-rk3399_defconfig +@@ -29,7 +29,9 @@ CONFIG_ROCKCHIP_GPIO=y + CONFIG_SYS_I2C_ROCKCHIP=y + CONFIG_MMC_DW=y + CONFIG_MMC_DW_ROCKCHIP=y ++CONFIG_MMC_HS400_SUPPORT=y + CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_SDMA=y + CONFIG_MMC_SDHCI_ROCKCHIP=y + CONFIG_DM_ETH=y + CONFIG_ETH_DESIGNWARE=y +diff --git a/configs/nanopi-neo4-rk3399_defconfig b/configs/nanopi-neo4-rk3399_defconfig +index 1bf5d1d095..6412cb2d7e 100644 +--- a/configs/nanopi-neo4-rk3399_defconfig ++++ b/configs/nanopi-neo4-rk3399_defconfig +@@ -29,7 +29,9 @@ CONFIG_ROCKCHIP_GPIO=y + CONFIG_SYS_I2C_ROCKCHIP=y + CONFIG_MMC_DW=y + CONFIG_MMC_DW_ROCKCHIP=y ++CONFIG_MMC_HS400_SUPPORT=y + CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_SDMA=y + CONFIG_MMC_SDHCI_ROCKCHIP=y + CONFIG_DM_ETH=y + CONFIG_ETH_DESIGNWARE=y +diff --git a/configs/nanopi-r4s-rk3399_defconfig b/configs/nanopi-r4s-rk3399_defconfig +index 351d2eb553..7b527d47fa 100644 +--- a/configs/nanopi-r4s-rk3399_defconfig ++++ b/configs/nanopi-r4s-rk3399_defconfig +@@ -29,7 +29,9 @@ CONFIG_ROCKCHIP_GPIO=y + CONFIG_SYS_I2C_ROCKCHIP=y + CONFIG_MMC_DW=y + CONFIG_MMC_DW_ROCKCHIP=y ++CONFIG_MMC_HS400_SUPPORT=y + CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_SDMA=y + CONFIG_MMC_SDHCI_ROCKCHIP=y + CONFIG_DM_ETH=y + CONFIG_ETH_DESIGNWARE=y +diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig +index f97d5e872b..b0e68c9591 100644 +--- a/configs/pinebook-pro-rk3399_defconfig ++++ b/configs/pinebook-pro-rk3399_defconfig +@@ -46,6 +46,7 @@ CONFIG_MISC=y + CONFIG_ROCKCHIP_EFUSE=y + CONFIG_MMC_DW=y + CONFIG_MMC_DW_ROCKCHIP=y ++CONFIG_MMC_HS400_SUPPORT=y + CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_SDMA=y + CONFIG_MMC_SDHCI_ROCKCHIP=y +diff --git a/configs/rock960-rk3399_defconfig b/configs/rock960-rk3399_defconfig +index 0233e0ea52..624d718f9f 100644 +--- a/configs/rock960-rk3399_defconfig ++++ b/configs/rock960-rk3399_defconfig +@@ -36,6 +36,7 @@ CONFIG_ROCKCHIP_GPIO=y + CONFIG_SYS_I2C_ROCKCHIP=y + CONFIG_MMC_DW=y + CONFIG_MMC_DW_ROCKCHIP=y ++CONFIG_MMC_HS400_SUPPORT=y + CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_SDMA=y + CONFIG_MMC_SDHCI_ROCKCHIP=y +diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig +index ae11a8f5eb..b4e7e9700a 100644 +--- a/configs/rockpro64-rk3399_defconfig ++++ b/configs/rockpro64-rk3399_defconfig +@@ -39,7 +39,9 @@ CONFIG_MISC=y + CONFIG_ROCKCHIP_EFUSE=y + CONFIG_MMC_DW=y + CONFIG_MMC_DW_ROCKCHIP=y ++CONFIG_MMC_HS400_SUPPORT=y + CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_SDMA=y + CONFIG_MMC_SDHCI_ROCKCHIP=y + CONFIG_SF_DEFAULT_BUS=1 + CONFIG_SPI_FLASH_GIGADEVICE=y +-- +2.31.1 + diff --git a/uboot-tools.spec b/uboot-tools.spec index 68de4bc..0435ff9 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -29,6 +29,7 @@ Patch11: 0001-Fix-BeagleAI-detection.patch # Rockchips improvements Patch12: phy-rockchip-inno-usb2-fix-hang-when-multiple-controllers-exit.patch Patch13: 0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch +Patch14: 0001-enable-hs400-and-sdma-support.patch BuildRequires: bc BuildRequires: dtc From ae47304273e766105ae3fce64047e0431feb62c1 Mon Sep 17 00:00:00 2001 From: Sahana Prasad Date: Tue, 14 Sep 2021 19:17:15 +0200 Subject: [PATCH 080/271] Rebuilt with OpenSSL 3.0.0 --- uboot-tools.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 0435ff9..3db95bc 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -2,7 +2,7 @@ Name: uboot-tools Version: 2021.10 -Release: 0.5%{?candidate:.%{candidate}}%{?dist} +Release: 0.6%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -257,6 +257,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Tue Sep 14 2021 Sahana Prasad - 2021.10-0.6.rc3 +- Rebuilt with OpenSSL 3.0.0 + * Mon Aug 30 2021 Peter Robinson - 2021.10-0.5.rc3 - Update to 2021.10 RC3 From b73fa7b98013a1790d32320bb9dc3090cb40efea Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 16 Sep 2021 12:40:49 +0100 Subject: [PATCH 081/271] 2021.10 RC4, Proposed fix for RPi MMC clock issue --- ...-address-of-the-XHCI-PCI-device-base.patch | 203 ++++++++++++++++ ...cm2835_sdhost-firmware-managed-clock.patch | 228 ++++++++++++++++++ rpi-fallback-to-max-clock-for-mmc.patch | 77 ++++++ uboot-tools.spec | 15 +- 4 files changed, 520 insertions(+), 3 deletions(-) create mode 100644 ARM-bcm283x-change-the-virtual-address-of-the-XHCI-PCI-device-base.patch create mode 100644 rpi-bcm2835_sdhost-firmware-managed-clock.patch create mode 100644 rpi-fallback-to-max-clock-for-mmc.patch diff --git a/ARM-bcm283x-change-the-virtual-address-of-the-XHCI-PCI-device-base.patch b/ARM-bcm283x-change-the-virtual-address-of-the-XHCI-PCI-device-base.patch new file mode 100644 index 0000000..f4d7d54 --- /dev/null +++ b/ARM-bcm283x-change-the-virtual-address-of-the-XHCI-PCI-device-base.patch @@ -0,0 +1,203 @@ +From patchwork Thu Jun 17 09:22:03 2021 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Marek Szyprowski +X-Patchwork-Id: 1493284 +X-Patchwork-Delegate: matthias.bgg@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Authentication-Results: ozlabs.org; + dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 + header.s=mail20170921 header.b=S423zQBA; + dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by ozlabs.org (Postfix) with ESMTPS id 4G5GmF2YYPz9s1l + for ; Thu, 17 Jun 2021 19:22:21 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 380E981E1C; + Thu, 17 Jun 2021 11:22:15 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; + dkim=pass (1024-bit key; + unprotected) header.d=samsung.com header.i=@samsung.com header.b="S423zQBA"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 066B882024; Thu, 17 Jun 2021 11:22:14 +0200 (CEST) +X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de +X-Spam-Level: +X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, + RCVD_IN_MSPIKE_WL,SPF_HELO_PASS autolearn=ham autolearn_force=no + version=3.4.2 +Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com + [210.118.77.12]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 791718020E + for ; Thu, 17 Jun 2021 11:22:09 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=samsung.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=m.szyprowski@samsung.com +Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) + by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id + 20210617092208euoutp02306cccdadbd0a0fa3e360e9b40c870e4~JVDVFtPo90470104701euoutp02N + for ; Thu, 17 Jun 2021 09:22:08 +0000 (GMT) +DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com + 20210617092208euoutp02306cccdadbd0a0fa3e360e9b40c870e4~JVDVFtPo90470104701euoutp02N +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; + s=mail20170921; t=1623921728; + bh=g6sGWmD8hHxoWJS92fMYWdZG8PUB5T7hF5BCApkjjtQ=; + h=From:To:Cc:Subject:Date:References:From; + b=S423zQBAD3CJixEJMLt4LIue0UknKK6dcTJTYm0QESnzOGnr8JSiTSWbI42vYfeEr + uPY3rg88YpmiNYbY2UtEBDu9k20/SxO3xqChy69dH5g2tu3FlkC+Y9+355chFE9zhR + YtgdD6ME6PXoo6ju6YGnhtM4h3d1wOCBgZ8DRNHg= +Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by + eucas1p2.samsung.com (KnoxPortal) with ESMTP id + 20210617092207eucas1p254ca42a27f671fd370b24d43d77bced7~JVDUqibou0517905179eucas1p28; + Thu, 17 Jun 2021 09:22:07 +0000 (GMT) +Received: from eucas1p1.samsung.com ( [182.198.249.206]) by + eusmges3new.samsung.com (EUCPMTA) with SMTP id 97.82.09439.F341BC06; Thu, 17 + Jun 2021 10:22:07 +0100 (BST) +Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by + eucas1p2.samsung.com (KnoxPortal) with ESMTPA id + 20210617092207eucas1p2fba39144e5d4890a23ba70f794a25b79~JVDULHlNB0517805178eucas1p2x; + Thu, 17 Jun 2021 09:22:07 +0000 (GMT) +Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by + eusmtrp1.samsung.com (KnoxPortal) with ESMTP id + 20210617092207eusmtrp1b3838c7f35a29ad48395199a93d03d9f~JVDUKaS5h2885128851eusmtrp1P; + Thu, 17 Jun 2021 09:22:07 +0000 (GMT) +X-AuditID: cbfec7f5-c03ff700000024df-38-60cb143fddfe +Received: from eusmtip2.samsung.com ( [203.254.199.222]) by + eusmgms1.samsung.com (EUCPMTA) with SMTP id 8C.31.08705.F341BC06; Thu, 17 + Jun 2021 10:22:07 +0100 (BST) +Received: from AMDC2765.digital.local (unknown [106.120.51.73]) by + eusmtip2.samsung.com (KnoxPortal) with ESMTPA id + 20210617092206eusmtip2389e23cf1a3074d360ad1974f6ed1b53~JVDTufYcj1280412804eusmtip2z; + Thu, 17 Jun 2021 09:22:06 +0000 (GMT) +From: Marek Szyprowski +To: u-boot@lists.denx.de +Cc: Marek Szyprowski , Matthias Brugger + , Sylwester Nawrocki , Nicolas + Saenz Julienne , Jaehoon Chung + , Bartlomiej Zolnierkiewicz + +Subject: [PATCH] ARM: bcm283x: change the virtual address of the XHCI PCI + device base +Date: Thu, 17 Jun 2021 11:22:03 +0200 +Message-Id: <20210617092203.19825-1-m.szyprowski@samsung.com> +X-Mailer: git-send-email 2.17.1 +X-Brightmail-Tracker: + H4sIAAAAAAAAA+NgFrrDIsWRmVeSWpSXmKPExsWy7djPc7r2IqcTDB40GFtsnLGe1eLGrzZW + i7VH7rJbLJj8hNVi26zlbBaH37SzWrzd28nuwO5x9s4ORo++LasYPdZvucrisfl0dQBLFJdN + SmpOZllqkb5dAlfG+eermQqO8lT09y5naWC8xtXFyMkhIWAi0X/mMEsXIxeHkMAKRol9356w + dzFyADlfGCVuhkHEPzNKNNycywLT8G/nNkaIxHJGiaWdm1ghHKCGffe+sYNUsQkYSnS97WID + sUUEJCR+9V8F62AWmMkk0dw5kRUkISwQLvH7/2xGEJtFQFWib/cHsAZeAVuJl+e62SDWyUus + 3nCAGaRZQuAnu8Si7/sYIRIuEo+6V0LZwhKvjm9hh7BlJE5P7mGBaGhmlHh4bi07hNPDKHG5 + aQZUh7XEnXO/2EA+ZRbQlFi/Sx/ElBBwlJg7gR/C5JO48VYQpJgZyJy0bTozRJhXoqNNCGKG + msSs4+vgth68cIkZwvaQuPd4Pdj5QgKxEkcOfWScwCg3C2HVAkbGVYziqaXFuempxcZ5qeV6 + xYm5xaV56XrJ+bmbGIEJ4PS/4193MK549VHvECMTB+MhRgkOZiURXt3iEwlCvCmJlVWpRfnx + RaU5qcWHGKU5WJTEeXdtXRMvJJCeWJKanZpakFoEk2Xi4JRqYBJge2bX53WWz1Lf4MPq4pKd + L2Z7TUp3VDv2fwfHf6Y2rg5e979vjNICyxdMeW+qc0OHOVT8Q+3kj7qOC66fOsy4xb61uH4h + 951lnRF8exoM9TeGJ715tqduV6XnjaXVPyYtMn03k3MLb92nXs2vNxpuFebsiS62yarPnZ9d + ZPBOU0yvpoR307TFV/niSsVfeYrt4A/k1bB+WKXxd382MxdrGIvDrJUsCSsW7NglYTjXcVbO + 1bzaJ8lfWv7511UuqNvpJJ+093bvgWOlqbeVfjW2v3j+fP79PKeNgUle3dO622YUq2S4Cyh/ + DZbd7mC8SedY8eZZfxdGrozhnGFmGj9nwTKzJQWb562Rl/9prMRSnJFoqMVcVJwIAFvDw65v + AwAA +X-Brightmail-Tracker: + H4sIAAAAAAAAA+NgFtrCLMWRmVeSWpSXmKPExsVy+t/xe7r2IqcTDNb0CFlsnLGe1eLGrzZW + i7VH7rJbLJj8hNVi26zlbBaH37SzWrzd28nuwO5x9s4ORo++LasYPdZvucrisfl0dQBLlJ5N + UX5pSapCRn5xia1StKGFkZ6hpYWekYmlnqGxeayVkamSvp1NSmpOZllqkb5dgl7G+eermQqO + 8lT09y5naWC8xtXFyMkhIWAi8W/nNsYuRi4OIYGljBJP/q5gh0jISJyc1sAKYQtL/LnWxQZR + 9IlRYs/8y2AJNgFDia63IAlODhEBCYlf/VfBJjELzGaSeL7iLhNIQlggVOL5jHVgDSwCqhJ9 + uz+ANfAK2Eq8PNfNBrFBXmL1hgPMExh5FjAyrGIUSS0tzk3PLTbUK07MLS7NS9dLzs/dxAgM + vm3Hfm7ewTjv1Ue9Q4xMHIyHGCU4mJVEeHWLTyQI8aYkVlalFuXHF5XmpBYfYjQF2jeRWUo0 + OR8Y/nkl8YZmBqaGJmaWBqaWZsZK4rxb566JFxJITyxJzU5NLUgtgulj4uCUamAyvS18MHIp + 7+EpilHuXy7d3MPzPnfRlSWnFr5+m5lzNSx03owzNw51LmK5Hv4vJ6nPlaHi3Ma1ZubH/23N + uHX0nlWi8bL9jxzLqptsE0+y961tVtRKuvD/QGJR1+3NeoUWKW7rH9pz89YdcnimPGWf7Jb/ + fVnJZ6tdbPuu3nv29sWhteIKixdUX1rlHzUtVfyN0ILXawqfTJU7/SR/jtrSjMpvufKfZKb+ + 3b1sW2hkU2aN9VuDk+52mbFrb3P/1LzhsN309FfG24tY3TjtzFaLf35WI6rUZiAa8lNEtFJE + 1a9l8zLRs3wbm574XwmsP111UPfxm4q0yHKuE6GbZm1T/LfpzOkcP6Yg1r+3Vmy8osRSnJFo + qMVcVJwIAKDUsMjHAgAA +X-CMS-MailID: 20210617092207eucas1p2fba39144e5d4890a23ba70f794a25b79 +X-Msg-Generator: CA +X-RootMTR: 20210617092207eucas1p2fba39144e5d4890a23ba70f794a25b79 +X-EPHeader: CA +CMS-TYPE: 201P +X-CMS-RootMailID: 20210617092207eucas1p2fba39144e5d4890a23ba70f794a25b79 +References: + +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de +X-Virus-Status: Clean + +Move the XHCI PCI device base up in the virtual address space. This fixes +initialization failure observed with newer Raspberry Pi firmware, later +than 63b1922311 ("firmware: arm_loader: Update armstubs with those from +PR 117). It looks that chosing 0xff800000 as the XHCI PCI device base +conflicts with the updated ARM/VideoCore firmware. + +This also requires to reduce the size of the mapped PCI device region +from 8MiB to 4MiB to fit into 32bit address space. This is still enough +for the XHCI PCI device. + +Signed-off-by: Marek Szyprowski +Reviewed-by: Jaehoon Chung +Reviewed-by: Nicolas Saenz Julienne +Tested-by: Stefan Agner +--- +This fixes the issue observed on ARM 32bit after upgrading the RPi4 +firmware files, described some time ago here: +https://lists.denx.de/pipermail/u-boot/2021-February/442317.html +--- + arch/arm/mach-bcm283x/init.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c +index 49027ce0a2..9803499985 100644 +--- a/arch/arm/mach-bcm283x/init.c ++++ b/arch/arm/mach-bcm283x/init.c +@@ -14,7 +14,7 @@ + #include + + #define BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS 0x600000000UL +-#define BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE 0x800000UL ++#define BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE 0x400000UL + + #ifdef CONFIG_ARM64 + #include +@@ -148,7 +148,7 @@ int mach_cpu_init(void) + + #ifdef CONFIG_ARMV7_LPAE + #ifdef CONFIG_TARGET_RPI_4_32B +-#define BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT 0xff800000UL ++#define BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT 0xffc00000UL + #include + #include + diff --git a/rpi-bcm2835_sdhost-firmware-managed-clock.patch b/rpi-bcm2835_sdhost-firmware-managed-clock.patch new file mode 100644 index 0000000..d1c60e8 --- /dev/null +++ b/rpi-bcm2835_sdhost-firmware-managed-clock.patch @@ -0,0 +1,228 @@ +From f3a870bfa075fb880f5e018a0a5ae6f27ca8be49 Mon Sep 17 00:00:00 2001 +From: Vincent Fazio +Date: Mon, 13 Sep 2021 13:34:45 -0500 +Subject: [PATCH] mmc: bcm2835-host: let firmware manage the clock + +Newer firmware supports managing the sdhost clock divisor, so leverage +this feature if it is available. + +SET_SDHOST_CLOCK is largely undocumented except for its usage within the +Linux kernel, which this change is based on. + +https://github.com/raspberrypi/linux/commit/3cd16c39c718e2dda7885c4ed7a20118aed12524 + +Signed-off-by: Vincent Fazio +--- + arch/arm/mach-bcm283x/include/mach/mbox.h | 18 ++++++++ + arch/arm/mach-bcm283x/include/mach/msg.h | 10 +++++ + arch/arm/mach-bcm283x/msg.c | 30 +++++++++++++ + drivers/mmc/bcm2835_sdhost.c | 53 ++++++++++++++--------- + 4 files changed, 90 insertions(+), 21 deletions(-) + +diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h +index 7dcac583cc4..9b1943fcfc4 100644 +--- a/arch/arm/mach-bcm283x/include/mach/mbox.h ++++ b/arch/arm/mach-bcm283x/include/mach/mbox.h +@@ -252,6 +252,24 @@ struct bcm2835_mbox_tag_get_clock_rate { + } body; + }; + ++#define BCM2835_MBOX_TAG_SET_SDHOST_CLOCK 0x00038042 ++ ++struct bcm2835_mbox_tag_set_sdhost_clock { ++ struct bcm2835_mbox_tag_hdr tag_hdr; ++ union { ++ struct { ++ u32 rate_hz; ++ u32 rate_1; ++ u32 rate_2; ++ } req; ++ struct { ++ u32 rate_hz; ++ u32 rate_1; ++ u32 rate_2; ++ } resp; ++ } body; ++}; ++ + #define BCM2835_MBOX_TAG_ALLOCATE_BUFFER 0x00040001 + + struct bcm2835_mbox_tag_allocate_buffer { +diff --git a/arch/arm/mach-bcm283x/include/mach/msg.h b/arch/arm/mach-bcm283x/include/mach/msg.h +index e45c1bf010f..ab37abdb6c6 100644 +--- a/arch/arm/mach-bcm283x/include/mach/msg.h ++++ b/arch/arm/mach-bcm283x/include/mach/msg.h +@@ -22,6 +22,16 @@ int bcm2835_power_on_module(u32 module); + */ + int bcm2835_get_mmc_clock(u32 clock_id); + ++/** ++ * bcm2835_set_sdhost_clock() - determine if firmware controls sdhost cdiv ++ * ++ * @rate_hz: Input clock frequency ++ * @rate_1: Returns a clock frequency ++ * @rate_2: Returns a clock frequency ++ * @return 0 of OK, -EIO on error ++ */ ++int bcm2835_set_sdhost_clock(u32 rate_hz, u32 *rate_1, u32 *rate_2); ++ + /** + * bcm2835_get_video_size() - get the current display size + * +diff --git a/arch/arm/mach-bcm283x/msg.c b/arch/arm/mach-bcm283x/msg.c +index e2badfecb09..8c1c36a5f15 100644 +--- a/arch/arm/mach-bcm283x/msg.c ++++ b/arch/arm/mach-bcm283x/msg.c +@@ -21,6 +21,12 @@ struct msg_get_clock_rate { + u32 end_tag; + }; + ++struct msg_set_sdhost_clock { ++ struct bcm2835_mbox_hdr hdr; ++ struct bcm2835_mbox_tag_set_sdhost_clock set_sdhost_clock; ++ u32 end_tag; ++}; ++ + struct msg_query { + struct bcm2835_mbox_hdr hdr; + struct bcm2835_mbox_tag_physical_w_h physical_w_h; +@@ -111,6 +117,30 @@ int bcm2835_get_mmc_clock(u32 clock_id) + return clock_rate; + } + ++int bcm2835_set_sdhost_clock(u32 rate_hz, u32 *rate_1, u32 *rate_2) ++{ ++ ALLOC_CACHE_ALIGN_BUFFER(struct msg_set_sdhost_clock, msg_sdhost_clk, 1); ++ int ret; ++ ++ BCM2835_MBOX_INIT_HDR(msg_sdhost_clk); ++ BCM2835_MBOX_INIT_TAG(&msg_sdhost_clk->set_sdhost_clock, SET_SDHOST_CLOCK); ++ ++ msg_sdhost_clk->set_sdhost_clock.body.req.rate_hz = rate_hz; ++ msg_sdhost_clk->set_sdhost_clock.body.req.rate_1 = *rate_1; ++ msg_sdhost_clk->set_sdhost_clock.body.req.rate_2 = *rate_2; ++ ++ ret = bcm2835_mbox_call_prop(BCM2835_MBOX_PROP_CHAN, &msg_sdhost_clk->hdr); ++ if (ret) { ++ printf("bcm2835: Could not query sdhost clock rate\n"); ++ return -EIO; ++ } ++ ++ *rate_1 = msg_sdhost_clk->set_sdhost_clock.body.resp.rate_1; ++ *rate_2 = msg_sdhost_clk->set_sdhost_clock.body.resp.rate_2; ++ ++ return 0; ++} ++ + int bcm2835_get_video_size(int *widthp, int *heightp) + { + ALLOC_CACHE_ALIGN_BUFFER(struct msg_query, msg_query, 1); +diff --git a/drivers/mmc/bcm2835_sdhost.c b/drivers/mmc/bcm2835_sdhost.c +index 894dbdd6861..3a9cd6f1eb2 100644 +--- a/drivers/mmc/bcm2835_sdhost.c ++++ b/drivers/mmc/bcm2835_sdhost.c +@@ -181,6 +181,7 @@ struct bcm2835_host { + struct udevice *dev; + struct mmc *mmc; + struct bcm2835_plat *plat; ++ unsigned int firmware_sets_cdiv:1; + }; + + static void bcm2835_dumpregs(struct bcm2835_host *host) +@@ -233,7 +234,7 @@ static void bcm2835_reset_internal(struct bcm2835_host *host) + msleep(20); + host->clock = 0; + writel(host->hcfg, host->ioaddr + SDHCFG); +- writel(host->cdiv, host->ioaddr + SDCDIV); ++ writel(SDCDIV_MAX_CDIV, host->ioaddr + SDCDIV); + } + + static int bcm2835_wait_transfer_complete(struct bcm2835_host *host) +@@ -598,6 +599,7 @@ static int bcm2835_transmit(struct bcm2835_host *host) + static void bcm2835_set_clock(struct bcm2835_host *host, unsigned int clock) + { + int div; ++ u32 clock_rate[2] = { 0 }; + + /* The SDCDIV register has 11 bits, and holds (div - 2). But + * in data mode the max is 50MHz wihout a minimum, and only +@@ -620,26 +622,34 @@ static void bcm2835_set_clock(struct bcm2835_host *host, unsigned int clock) + * clock divisor at all times. + */ + +- if (clock < 100000) { +- /* Can't stop the clock, but make it as slow as possible +- * to show willing +- */ +- host->cdiv = SDCDIV_MAX_CDIV; +- writel(host->cdiv, host->ioaddr + SDCDIV); +- return; +- } ++ if (host->firmware_sets_cdiv) { ++ bcm2835_set_sdhost_clock(clock, &clock_rate[0], &clock_rate[1]); ++ clock = max(clock_rate[0], clock_rate[1]); ++ } else { ++ if (clock < 100000) { ++ /* Can't stop the clock, but make it as slow as possible ++ * to show willing ++ */ ++ host->cdiv = SDCDIV_MAX_CDIV; ++ writel(host->cdiv, host->ioaddr + SDCDIV); ++ return; ++ } + +- div = host->max_clk / clock; +- if (div < 2) +- div = 2; +- if ((host->max_clk / div) > clock) +- div++; +- div -= 2; ++ div = host->max_clk / clock; ++ if (div < 2) ++ div = 2; ++ if ((host->max_clk / div) > clock) ++ div++; ++ div -= 2; + +- if (div > SDCDIV_MAX_CDIV) +- div = SDCDIV_MAX_CDIV; ++ if (div > SDCDIV_MAX_CDIV) ++ div = SDCDIV_MAX_CDIV; ++ ++ clock = host->max_clk / (div + 2); ++ host->cdiv = div; ++ writel(host->cdiv, host->ioaddr + SDCDIV); ++ } + +- clock = host->max_clk / (div + 2); + host->mmc->clock = clock; + + /* Calibrate some delays */ +@@ -647,9 +657,6 @@ static void bcm2835_set_clock(struct bcm2835_host *host, unsigned int clock) + host->ns_per_fifo_word = (1000000000 / clock) * + ((host->mmc->card_caps & MMC_MODE_4BIT) ? 8 : 32); + +- host->cdiv = div; +- writel(host->cdiv, host->ioaddr + SDCDIV); +- + /* Set the timeout to 500ms */ + writel(host->mmc->clock / 2, host->ioaddr + SDTOUT); + } +@@ -759,6 +766,7 @@ static int bcm2835_probe(struct udevice *dev) + struct bcm2835_host *host = dev_get_priv(dev); + struct mmc *mmc = mmc_get_mmc_dev(dev); + struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev); ++ u32 clock_rate[2] = { ~0 }; + + host->dev = dev; + host->mmc = mmc; +@@ -776,6 +784,9 @@ static int bcm2835_probe(struct udevice *dev) + + host->max_clk = bcm2835_get_mmc_clock(BCM2835_MBOX_CLOCK_ID_CORE); + ++ bcm2835_set_sdhost_clock(0, &clock_rate[0], &clock_rate[1]); ++ host->firmware_sets_cdiv = (clock_rate[0] != ~0); ++ + bcm2835_add_host(host); + + dev_dbg(dev, "%s -> OK\n", __func__); diff --git a/rpi-fallback-to-max-clock-for-mmc.patch b/rpi-fallback-to-max-clock-for-mmc.patch new file mode 100644 index 0000000..81ee372 --- /dev/null +++ b/rpi-fallback-to-max-clock-for-mmc.patch @@ -0,0 +1,77 @@ +From 71ba043e5c5575f3d86536acade70dab6599489b Mon Sep 17 00:00:00 2001 +From: Vincent Fazio +Date: Mon, 13 Sep 2021 11:22:30 -0500 +Subject: [PATCH] arm: rpi: fallback to max clock rate for MMC clock + +In rpi-firmware 25e2b597ebfb2495eab4816a276758dcc6ea21f1 and later, +the GET_CLOCK_RATE mailbox property was changed to return the last +value set by SET_CLOCK_RATE. + +https://github.com/raspberrypi/firmware/issues/1619#issuecomment-917025502 + +U-Boot does not call SET_CLOCK_RATE so bcm2835_get_mmc_clock will +return zero and can cause degraded MMC performance. + +Calling SET_CLOCK_RATE fixes the frequency of the clock to a specific +value and disables the firmware's clock scaling so is not an option. + +Instead, fallback to GET_MAX_CLOCK_RATE in bcm2835_get_mmc_clock if +GET_CLOCK_RATE returns zero. + +Signed-off-by: Vincent Fazio +--- + arch/arm/mach-bcm283x/include/mach/mbox.h | 2 ++ + arch/arm/mach-bcm283x/msg.c | 20 +++++++++++++++++++- + 2 files changed, 21 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h +index 2ae2d3d97c3..7dcac583cc4 100644 +--- a/arch/arm/mach-bcm283x/include/mach/mbox.h ++++ b/arch/arm/mach-bcm283x/include/mach/mbox.h +@@ -224,6 +224,8 @@ struct bcm2835_mbox_tag_set_power_state { + }; + + #define BCM2835_MBOX_TAG_GET_CLOCK_RATE 0x00030002 ++#define BCM2835_MBOX_TAG_GET_MAX_CLOCK_RATE 0x00030004 ++#define BCM2835_MBOX_TAG_GET_MIN_CLOCK_RATE 0x00030007 + + #define BCM2835_MBOX_CLOCK_ID_EMMC 1 + #define BCM2835_MBOX_CLOCK_ID_UART 2 +diff --git a/arch/arm/mach-bcm283x/msg.c b/arch/arm/mach-bcm283x/msg.c +index 347aece3cd8..e2badfecb09 100644 +--- a/arch/arm/mach-bcm283x/msg.c ++++ b/arch/arm/mach-bcm283x/msg.c +@@ -75,6 +75,7 @@ int bcm2835_get_mmc_clock(u32 clock_id) + { + ALLOC_CACHE_ALIGN_BUFFER(struct msg_get_clock_rate, msg_clk, 1); + int ret; ++ u32 clock_rate = 0; + + ret = bcm2835_power_on_module(BCM2835_MBOX_POWER_DEVID_SDHCI); + if (ret) +@@ -90,7 +91,24 @@ int bcm2835_get_mmc_clock(u32 clock_id) + return -EIO; + } + +- return msg_clk->get_clock_rate.body.resp.rate_hz; ++ clock_rate = msg_clk->get_clock_rate.body.resp.rate_hz; ++ ++ if (clock_rate == 0) ++ { ++ BCM2835_MBOX_INIT_HDR(msg_clk); ++ BCM2835_MBOX_INIT_TAG(&msg_clk->get_clock_rate, GET_MAX_CLOCK_RATE); ++ msg_clk->get_clock_rate.body.req.clock_id = clock_id; ++ ++ ret = bcm2835_mbox_call_prop(BCM2835_MBOX_PROP_CHAN, &msg_clk->hdr); ++ if (ret) { ++ printf("bcm2835: Could not query max eMMC clock rate\n"); ++ return -EIO; ++ } ++ ++ clock_rate = msg_clk->get_clock_rate.body.resp.rate_hz; ++ } ++ ++ return clock_rate; + } + + int bcm2835_get_video_size(int *widthp, int *heightp) diff --git a/uboot-tools.spec b/uboot-tools.spec index 3db95bc..f1d701b 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc3 +%global candidate rc4 Name: uboot-tools Version: 2021.10 @@ -17,11 +17,13 @@ Source4: aarch64-chromebooks # Fedoraisms patches # Needed to find DT on boot partition that's not the first partition Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch +# Board fixes and enablement # RPi - uses RPI firmware device tree for HAT support Patch2: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch Patch3: rpi-Copy-properties-from-firmware-dtb-to-the-loaded-dtb.patch - -# Board fixes and enablement +Patch4: rpi-fallback-to-max-clock-for-mmc.patch +Patch5: rpi-bcm2835_sdhost-firmware-managed-clock.patch +Patch6: ARM-bcm283x-change-the-virtual-address-of-the-XHCI-PCI-device-base.patch # AllWinner improvements Patch10: AllWinner-PineTab.patch # TI fixes @@ -99,6 +101,9 @@ mkdir builds %make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" tools-only_defconfig O=builds/ %make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" tools-all O=builds/ +# U-Boot device firmwares don't currently support LTO +%define _lto_cflags %{nil} + %ifarch aarch64 %{arm} for board in $(cat %{_arch}-boards) do @@ -257,6 +262,10 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Wed Sep 15 2021 Peter Robinson - 2021.10-0.6.rc4 +- Update to 2021.10 RC4 +- Proposed fix for RPi MMC clock issue + * Tue Sep 14 2021 Sahana Prasad - 2021.10-0.6.rc3 - Rebuilt with OpenSSL 3.0.0 From 82d32758b4c5a050931a2fa89e31618498dd4745 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 16 Sep 2021 12:44:57 +0100 Subject: [PATCH 082/271] Update sources --- sources | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources b/sources index f1a966e..384045b 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2021.10-rc3.tar.bz2) = 8ea85c1d466d7b85e1405bd3c78aefe2b171e5bf443518e0ed78c1fb080a83fd4afda97dd5a0367d4cb2ddb6614f4f41a2c7be7181c99b959c7c0abcdaa3ae18 +SHA512 (u-boot-2021.10-rc4.tar.bz2) = c7b64d3da6407615226820bc217f0d8db6392629c22c966817a6d292f6741ebc5da3e3550e24420e16018931da6b8ab926daf180e94ff3827543285f354b1ea6 From 33afbf3788c96d58ed74610b2f7d2be30dff639f Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 4 Oct 2021 08:07:19 +0100 Subject: [PATCH 083/271] 2021.10 RC5 --- ...-address-of-the-XHCI-PCI-device-base.patch | 203 ------------------ ...-from-firmware-dtb-to-the-loaded-dtb.patch | 161 -------------- sources | 2 +- uboot-tools.spec | 13 +- 4 files changed, 8 insertions(+), 371 deletions(-) delete mode 100644 ARM-bcm283x-change-the-virtual-address-of-the-XHCI-PCI-device-base.patch delete mode 100644 rpi-Copy-properties-from-firmware-dtb-to-the-loaded-dtb.patch diff --git a/ARM-bcm283x-change-the-virtual-address-of-the-XHCI-PCI-device-base.patch b/ARM-bcm283x-change-the-virtual-address-of-the-XHCI-PCI-device-base.patch deleted file mode 100644 index f4d7d54..0000000 --- a/ARM-bcm283x-change-the-virtual-address-of-the-XHCI-PCI-device-base.patch +++ /dev/null @@ -1,203 +0,0 @@ -From patchwork Thu Jun 17 09:22:03 2021 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Marek Szyprowski -X-Patchwork-Id: 1493284 -X-Patchwork-Delegate: matthias.bgg@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 - header.s=mail20170921 header.b=S423zQBA; - dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4G5GmF2YYPz9s1l - for ; Thu, 17 Jun 2021 19:22:21 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 380E981E1C; - Thu, 17 Jun 2021 11:22:15 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=samsung.com header.i=@samsung.com header.b="S423zQBA"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 066B882024; Thu, 17 Jun 2021 11:22:14 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, - RCVD_IN_MSPIKE_WL,SPF_HELO_PASS autolearn=ham autolearn_force=no - version=3.4.2 -Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com - [210.118.77.12]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 791718020E - for ; Thu, 17 Jun 2021 11:22:09 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=samsung.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=m.szyprowski@samsung.com -Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) - by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id - 20210617092208euoutp02306cccdadbd0a0fa3e360e9b40c870e4~JVDVFtPo90470104701euoutp02N - for ; Thu, 17 Jun 2021 09:22:08 +0000 (GMT) -DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com - 20210617092208euoutp02306cccdadbd0a0fa3e360e9b40c870e4~JVDVFtPo90470104701euoutp02N -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; - s=mail20170921; t=1623921728; - bh=g6sGWmD8hHxoWJS92fMYWdZG8PUB5T7hF5BCApkjjtQ=; - h=From:To:Cc:Subject:Date:References:From; - b=S423zQBAD3CJixEJMLt4LIue0UknKK6dcTJTYm0QESnzOGnr8JSiTSWbI42vYfeEr - uPY3rg88YpmiNYbY2UtEBDu9k20/SxO3xqChy69dH5g2tu3FlkC+Y9+355chFE9zhR - YtgdD6ME6PXoo6ju6YGnhtM4h3d1wOCBgZ8DRNHg= -Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by - eucas1p2.samsung.com (KnoxPortal) with ESMTP id - 20210617092207eucas1p254ca42a27f671fd370b24d43d77bced7~JVDUqibou0517905179eucas1p28; - Thu, 17 Jun 2021 09:22:07 +0000 (GMT) -Received: from eucas1p1.samsung.com ( [182.198.249.206]) by - eusmges3new.samsung.com (EUCPMTA) with SMTP id 97.82.09439.F341BC06; Thu, 17 - Jun 2021 10:22:07 +0100 (BST) -Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by - eucas1p2.samsung.com (KnoxPortal) with ESMTPA id - 20210617092207eucas1p2fba39144e5d4890a23ba70f794a25b79~JVDULHlNB0517805178eucas1p2x; - Thu, 17 Jun 2021 09:22:07 +0000 (GMT) -Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by - eusmtrp1.samsung.com (KnoxPortal) with ESMTP id - 20210617092207eusmtrp1b3838c7f35a29ad48395199a93d03d9f~JVDUKaS5h2885128851eusmtrp1P; - Thu, 17 Jun 2021 09:22:07 +0000 (GMT) -X-AuditID: cbfec7f5-c03ff700000024df-38-60cb143fddfe -Received: from eusmtip2.samsung.com ( [203.254.199.222]) by - eusmgms1.samsung.com (EUCPMTA) with SMTP id 8C.31.08705.F341BC06; Thu, 17 - Jun 2021 10:22:07 +0100 (BST) -Received: from AMDC2765.digital.local (unknown [106.120.51.73]) by - eusmtip2.samsung.com (KnoxPortal) with ESMTPA id - 20210617092206eusmtip2389e23cf1a3074d360ad1974f6ed1b53~JVDTufYcj1280412804eusmtip2z; - Thu, 17 Jun 2021 09:22:06 +0000 (GMT) -From: Marek Szyprowski -To: u-boot@lists.denx.de -Cc: Marek Szyprowski , Matthias Brugger - , Sylwester Nawrocki , Nicolas - Saenz Julienne , Jaehoon Chung - , Bartlomiej Zolnierkiewicz - -Subject: [PATCH] ARM: bcm283x: change the virtual address of the XHCI PCI - device base -Date: Thu, 17 Jun 2021 11:22:03 +0200 -Message-Id: <20210617092203.19825-1-m.szyprowski@samsung.com> -X-Mailer: git-send-email 2.17.1 -X-Brightmail-Tracker: - H4sIAAAAAAAAA+NgFrrDIsWRmVeSWpSXmKPExsWy7djPc7r2IqcTDB40GFtsnLGe1eLGrzZW - i7VH7rJbLJj8hNVi26zlbBaH37SzWrzd28nuwO5x9s4ORo++LasYPdZvucrisfl0dQBLFJdN - SmpOZllqkb5dAlfG+eermQqO8lT09y5naWC8xtXFyMkhIWAi0X/mMEsXIxeHkMAKRol9356w - dzFyADlfGCVuhkHEPzNKNNycywLT8G/nNkaIxHJGiaWdm1ghHKCGffe+sYNUsQkYSnS97WID - sUUEJCR+9V8F62AWmMkk0dw5kRUkISwQLvH7/2xGEJtFQFWib/cHsAZeAVuJl+e62SDWyUus - 3nCAGaRZQuAnu8Si7/sYIRIuEo+6V0LZwhKvjm9hh7BlJE5P7mGBaGhmlHh4bi07hNPDKHG5 - aQZUh7XEnXO/2EA+ZRbQlFi/Sx/ElBBwlJg7gR/C5JO48VYQpJgZyJy0bTozRJhXoqNNCGKG - msSs4+vgth68cIkZwvaQuPd4Pdj5QgKxEkcOfWScwCg3C2HVAkbGVYziqaXFuempxcZ5qeV6 - xYm5xaV56XrJ+bmbGIEJ4PS/4193MK549VHvECMTB+MhRgkOZiURXt3iEwlCvCmJlVWpRfnx - RaU5qcWHGKU5WJTEeXdtXRMvJJCeWJKanZpakFoEk2Xi4JRqYBJge2bX53WWz1Lf4MPq4pKd - L2Z7TUp3VDv2fwfHf6Y2rg5e979vjNICyxdMeW+qc0OHOVT8Q+3kj7qOC66fOsy4xb61uH4h - 951lnRF8exoM9TeGJ715tqduV6XnjaXVPyYtMn03k3MLb92nXs2vNxpuFebsiS62yarPnZ9d - ZPBOU0yvpoR307TFV/niSsVfeYrt4A/k1bB+WKXxd382MxdrGIvDrJUsCSsW7NglYTjXcVbO - 1bzaJ8lfWv7511UuqNvpJJ+093bvgWOlqbeVfjW2v3j+fP79PKeNgUle3dO622YUq2S4Cyh/ - DZbd7mC8SedY8eZZfxdGrozhnGFmGj9nwTKzJQWb562Rl/9prMRSnJFoqMVcVJwIAFvDw65v - AwAA -X-Brightmail-Tracker: - H4sIAAAAAAAAA+NgFtrCLMWRmVeSWpSXmKPExsVy+t/xe7r2IqcTDNb0CFlsnLGe1eLGrzZW - i7VH7rJbLJj8hNVi26zlbBaH37SzWrzd28nuwO5x9s4ORo++LasYPdZvucrisfl0dQBLlJ5N - UX5pSapCRn5xia1StKGFkZ6hpYWekYmlnqGxeayVkamSvp1NSmpOZllqkb5dgl7G+eermQqO - 8lT09y5naWC8xtXFyMkhIWAi8W/nNsYuRi4OIYGljBJP/q5gh0jISJyc1sAKYQtL/LnWxQZR - 9IlRYs/8y2AJNgFDia63IAlODhEBCYlf/VfBJjELzGaSeL7iLhNIQlggVOL5jHVgDSwCqhJ9 - uz+ANfAK2Eq8PNfNBrFBXmL1hgPMExh5FjAyrGIUSS0tzk3PLTbUK07MLS7NS9dLzs/dxAgM - vm3Hfm7ewTjv1Ue9Q4xMHIyHGCU4mJVEeHWLTyQI8aYkVlalFuXHF5XmpBYfYjQF2jeRWUo0 - OR8Y/nkl8YZmBqaGJmaWBqaWZsZK4rxb566JFxJITyxJzU5NLUgtgulj4uCUamAyvS18MHIp - 7+EpilHuXy7d3MPzPnfRlSWnFr5+m5lzNSx03owzNw51LmK5Hv4vJ6nPlaHi3Ma1ZubH/23N - uHX0nlWi8bL9jxzLqptsE0+y961tVtRKuvD/QGJR1+3NeoUWKW7rH9pz89YdcnimPGWf7Jb/ - fVnJZ6tdbPuu3nv29sWhteIKixdUX1rlHzUtVfyN0ILXawqfTJU7/SR/jtrSjMpvufKfZKb+ - 3b1sW2hkU2aN9VuDk+52mbFrb3P/1LzhsN309FfG24tY3TjtzFaLf35WI6rUZiAa8lNEtFJE - 1a9l8zLRs3wbm574XwmsP111UPfxm4q0yHKuE6GbZm1T/LfpzOkcP6Yg1r+3Vmy8osRSnJFo - qMVcVJwIAKDUsMjHAgAA -X-CMS-MailID: 20210617092207eucas1p2fba39144e5d4890a23ba70f794a25b79 -X-Msg-Generator: CA -X-RootMTR: 20210617092207eucas1p2fba39144e5d4890a23ba70f794a25b79 -X-EPHeader: CA -CMS-TYPE: 201P -X-CMS-RootMailID: 20210617092207eucas1p2fba39144e5d4890a23ba70f794a25b79 -References: - -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de -X-Virus-Status: Clean - -Move the XHCI PCI device base up in the virtual address space. This fixes -initialization failure observed with newer Raspberry Pi firmware, later -than 63b1922311 ("firmware: arm_loader: Update armstubs with those from -PR 117). It looks that chosing 0xff800000 as the XHCI PCI device base -conflicts with the updated ARM/VideoCore firmware. - -This also requires to reduce the size of the mapped PCI device region -from 8MiB to 4MiB to fit into 32bit address space. This is still enough -for the XHCI PCI device. - -Signed-off-by: Marek Szyprowski -Reviewed-by: Jaehoon Chung -Reviewed-by: Nicolas Saenz Julienne -Tested-by: Stefan Agner ---- -This fixes the issue observed on ARM 32bit after upgrading the RPi4 -firmware files, described some time ago here: -https://lists.denx.de/pipermail/u-boot/2021-February/442317.html ---- - arch/arm/mach-bcm283x/init.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c -index 49027ce0a2..9803499985 100644 ---- a/arch/arm/mach-bcm283x/init.c -+++ b/arch/arm/mach-bcm283x/init.c -@@ -14,7 +14,7 @@ - #include - - #define BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS 0x600000000UL --#define BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE 0x800000UL -+#define BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE 0x400000UL - - #ifdef CONFIG_ARM64 - #include -@@ -148,7 +148,7 @@ int mach_cpu_init(void) - - #ifdef CONFIG_ARMV7_LPAE - #ifdef CONFIG_TARGET_RPI_4_32B --#define BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT 0xff800000UL -+#define BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT 0xffc00000UL - #include - #include - diff --git a/rpi-Copy-properties-from-firmware-dtb-to-the-loaded-dtb.patch b/rpi-Copy-properties-from-firmware-dtb-to-the-loaded-dtb.patch deleted file mode 100644 index e274435..0000000 --- a/rpi-Copy-properties-from-firmware-dtb-to-the-loaded-dtb.patch +++ /dev/null @@ -1,161 +0,0 @@ -From patchwork Sun Aug 22 14:36:55 2021 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Sjoerd Simons -X-Patchwork-Id: 1519427 -X-Patchwork-Delegate: matthias.bgg@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4GsydW6ksJz9sW8 - for ; Mon, 23 Aug 2021 00:37:35 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id E456680C87; - Sun, 22 Aug 2021 16:37:28 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=fail (p=none dis=none) header.from=collabora.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 2DF9A80612; Sun, 22 Aug 2021 16:37:03 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_PASS, - SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 -Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk - [IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id E18A480612 - for ; Sun, 22 Aug 2021 16:36:58 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=collabora.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=sjoerd@collabora.com -Received: from beast.luon.net (unknown - [IPv6:2a00:bba0:114f:8c00:40e2:7ff:fef4:3122]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) (Authenticated sender: sjoerd) - by bhuna.collabora.co.uk (Postfix) with ESMTPSA id 7EB361F42806; - Sun, 22 Aug 2021 15:36:58 +0100 (BST) -Received: by beast.luon.net (Postfix, from userid 1000) - id 3CAF1819617; Sun, 22 Aug 2021 16:36:56 +0200 (CEST) -From: Sjoerd Simons -To: u-boot@lists.denx.de -Cc: Ariel D'Alessandro , - Marek Szyprowski , - Matthias Brugger , - Nicolas Saenz Julienne , - Peter Robinson -Subject: [PATCH] rpi: Copy properties from firmware dtb to the loaded dtb -Date: Sun, 22 Aug 2021 16:36:55 +0200 -Message-Id: <20210822143656.289891-1-sjoerd@collabora.com> -X-Mailer: git-send-email 2.33.0 -MIME-Version: 1.0 -X-Mailman-Approved-At: Sun, 22 Aug 2021 16:37:27 +0200 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de -X-Virus-Status: Clean - -The RPI firmware adjusts several property values in the dtb it passes -to u-boot depending on the board/SoC revision. Inherit some of these -when u-boot loads a dtb itself. Specificaly copy: - -* /model: The firmware provides a more specific string -* /memreserve: The firmware defines a reserved range, better keep it -* emmc2bus and pcie0 dma-ranges: The C0T revision of the bcm2711 Soc (as - present on rpi 400 and some rpi 4B boards) has different values for - these then the B0T revision. So these need to be adjusted to boot on - these boards -* blconfig: The firmware defines the memory area where the blconfig - stored. Copy those over so it can be enabled. -* /chosen/kaslr-seed: The firmware generates a kaslr seed, take advantage - of that. - -Signed-off-by: Sjoerd Simons ---- - - board/raspberrypi/rpi/rpi.c | 47 +++++++++++++++++++++++++++++++++++++ - 1 file changed, 47 insertions(+) - -diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c -index df52a4689f..d9467f4bda 100644 ---- a/board/raspberrypi/rpi/rpi.c -+++ b/board/raspberrypi/rpi/rpi.c -@@ -495,8 +495,55 @@ void *board_fdt_blob_setup(void) - return (void *)fw_dtb_pointer; - } - -+int copy_property(void *dst, void *src, char *path, char *property) -+{ -+ int dst_offset, src_offset; -+ const fdt32_t *prop; -+ int len; -+ -+ src_offset = fdt_path_offset(src, path); -+ dst_offset = fdt_path_offset(dst, path); -+ -+ if (src_offset < 0 || dst_offset < 0) -+ return -1; -+ -+ prop = fdt_getprop(src, src_offset, property, &len); -+ if (!prop) -+ return -1; -+ -+ return fdt_setprop(dst, dst_offset, property, prop, len); -+} -+ -+/* Copy tweaks from the firmware dtb to the loaded dtb */ -+void update_fdt_from_fw(void *fdt, void *fw_fdt) -+{ -+ /* Using dtb from firmware directly; leave it alone */ -+ if (fdt == fw_fdt) -+ return; -+ -+ /* The firmware provides a more precie model; so copy that */ -+ copy_property(fdt, fw_fdt, "/", "model"); -+ -+ /* memory reserve as suggested by the firmware */ -+ copy_property(fdt, fw_fdt, "/", "memreserve"); -+ -+ /* Adjust dma-ranges for the SD card and PCI bus as they can depend on -+ * the SoC revision -+ */ -+ copy_property(fdt, fw_fdt, "emmc2bus", "dma-ranges"); -+ copy_property(fdt, fw_fdt, "pcie0", "dma-ranges"); -+ -+ /* Bootloader configuration template exposes as nvmem */ -+ if (copy_property(fdt, fw_fdt, "blconfig", "reg") == 0) -+ copy_property(fdt, fw_fdt, "blconfig", "status"); -+ -+ /* kernel address randomisation seed as provided by the firmware */ -+ copy_property(fdt, fw_fdt, "/chosen", "kaslr-seed"); -+} -+ - int ft_board_setup(void *blob, struct bd_info *bd) - { -+ update_fdt_from_fw(blob, (void *)fw_dtb_pointer); - /* - * For now, we simply always add the simplefb DT node. Later, we - * should be more intelligent, and e.g. only do this if no enabled DT diff --git a/sources b/sources index 384045b..a0b423c 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2021.10-rc4.tar.bz2) = c7b64d3da6407615226820bc217f0d8db6392629c22c966817a6d292f6741ebc5da3e3550e24420e16018931da6b8ab926daf180e94ff3827543285f354b1ea6 +SHA512 (u-boot-2021.10-rc5.tar.bz2) = d88193597ff9251f56624b2002a455beb0c51d661f6e5d94d5b0ab28ec1580c7b002e4f6ba6e01535d8531c5ba23ba6bc4eade7ffcabbc5786d20032dc7889ac diff --git a/uboot-tools.spec b/uboot-tools.spec index f1d701b..c0b35c4 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -%global candidate rc4 +%global candidate rc5 Name: uboot-tools Version: 2021.10 -Release: 0.6%{?candidate:.%{candidate}}%{?dist} +Release: 0.7%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -20,10 +20,8 @@ Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch # Board fixes and enablement # RPi - uses RPI firmware device tree for HAT support Patch2: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch -Patch3: rpi-Copy-properties-from-firmware-dtb-to-the-loaded-dtb.patch -Patch4: rpi-fallback-to-max-clock-for-mmc.patch -Patch5: rpi-bcm2835_sdhost-firmware-managed-clock.patch -Patch6: ARM-bcm283x-change-the-virtual-address-of-the-XHCI-PCI-device-base.patch +Patch3: rpi-fallback-to-max-clock-for-mmc.patch +Patch4: rpi-bcm2835_sdhost-firmware-managed-clock.patch # AllWinner improvements Patch10: AllWinner-PineTab.patch # TI fixes @@ -262,6 +260,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Mon Sep 27 2021 Peter Robinson - 2021.10-0.7.rc5 +- Update to 2021.10 RC5 + * Wed Sep 15 2021 Peter Robinson - 2021.10-0.6.rc4 - Update to 2021.10 RC4 - Proposed fix for RPi MMC clock issue From 6487c37f16d9a986b98460ab2c7feb3ff41468b7 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 4 Oct 2021 18:52:08 +0100 Subject: [PATCH 084/271] 2021.10 --- sources | 2 +- uboot-tools.spec | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sources b/sources index a0b423c..f64b4ca 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2021.10-rc5.tar.bz2) = d88193597ff9251f56624b2002a455beb0c51d661f6e5d94d5b0ab28ec1580c7b002e4f6ba6e01535d8531c5ba23ba6bc4eade7ffcabbc5786d20032dc7889ac +SHA512 (u-boot-2021.10.tar.bz2) = be5be1c9a54b270307a04177d5577a21c57a02b307bf8b63d0fa2655d1f025c7ce010dca6a1f7f60d4e639c2e6fb6f0a292a2e5d190f1fad478eb12dd786c9da diff --git a/uboot-tools.spec b/uboot-tools.spec index c0b35c4..4a9c8f9 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -%global candidate rc5 +#global candidate rc5 Name: uboot-tools Version: 2021.10 -Release: 0.7%{?candidate:.%{candidate}}%{?dist} +Release: 1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -260,6 +260,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Mon Oct 04 2021 Peter Robinson - 2021.10-1 +- Update to 2021.10 + * Mon Sep 27 2021 Peter Robinson - 2021.10-0.7.rc5 - Update to 2021.10 RC5 From 37df227bc0961f9f0dc4dafa9e983290dbdb2bc3 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sun, 17 Oct 2021 15:57:39 +0100 Subject: [PATCH 085/271] Fixes for Rockchip devices Fix booting from MMC for Rockchip 3399 (rhbz #2014182) Enable new rk3399 devices (Leez, NanoPi-M4B, NanoPi-4S, NanoPi-T4) (rhbz #2009126) --- ...ockchip_sdhci-Add-support-for-RK3568.patch | 152 +++++++ ...hip_sdhci-add-phy-and-clock-config-f.patch | 406 ++++++++++++++++++ aarch64-boards | 3 + uboot-tools.spec | 10 +- 4 files changed, 569 insertions(+), 2 deletions(-) create mode 100644 0001-Revert-mmc-rockchip_sdhci-Add-support-for-RK3568.patch create mode 100644 0002-Revert-mmc-rockchip_sdhci-add-phy-and-clock-config-f.patch diff --git a/0001-Revert-mmc-rockchip_sdhci-Add-support-for-RK3568.patch b/0001-Revert-mmc-rockchip_sdhci-Add-support-for-RK3568.patch new file mode 100644 index 0000000..33dbf61 --- /dev/null +++ b/0001-Revert-mmc-rockchip_sdhci-Add-support-for-RK3568.patch @@ -0,0 +1,152 @@ +From e3e6018d0b67fbab3d05053688e53f5baac63bc3 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Thu, 14 Oct 2021 16:01:56 +0100 +Subject: [PATCH 1/2] Revert "mmc: rockchip_sdhci: Add support for RK3568" + +This reverts commit a63a57e59d864a1ca2b0acb5fadc5c3579c3e79c. +--- + drivers/mmc/rockchip_sdhci.c | 109 ----------------------------------- + 1 file changed, 109 deletions(-) + +diff --git a/drivers/mmc/rockchip_sdhci.c b/drivers/mmc/rockchip_sdhci.c +index 1ac00587d4..eff134c8f5 100644 +--- a/drivers/mmc/rockchip_sdhci.c ++++ b/drivers/mmc/rockchip_sdhci.c +@@ -42,34 +42,6 @@ + ((((x) >> PHYCTRL_DLLRDY_SHIFT) & PHYCTRL_DLLRDY_MASK) ==\ + PHYCTRL_DLLRDY_DONE) + +-/* Rockchip specific Registers */ +-#define DWCMSHC_EMMC_DLL_CTRL 0x800 +-#define DWCMSHC_EMMC_DLL_CTRL_RESET BIT(1) +-#define DWCMSHC_EMMC_DLL_RXCLK 0x804 +-#define DWCMSHC_EMMC_DLL_TXCLK 0x808 +-#define DWCMSHC_EMMC_DLL_STRBIN 0x80c +-#define DWCMSHC_EMMC_DLL_STATUS0 0x840 +-#define DWCMSHC_EMMC_DLL_STATUS1 0x844 +-#define DWCMSHC_EMMC_DLL_START BIT(0) +-#define DWCMSHC_EMMC_DLL_RXCLK_SRCSEL 29 +-#define DWCMSHC_EMMC_DLL_START_POINT 16 +-#define DWCMSHC_EMMC_DLL_START_DEFAULT 5 +-#define DWCMSHC_EMMC_DLL_INC_VALUE 2 +-#define DWCMSHC_EMMC_DLL_INC 8 +-#define DWCMSHC_EMMC_DLL_DLYENA BIT(27) +-#define DLL_TXCLK_TAPNUM_DEFAULT 0x10 +-#define DLL_STRBIN_TAPNUM_DEFAULT 0x3 +-#define DLL_TXCLK_TAPNUM_FROM_SW BIT(24) +-#define DWCMSHC_EMMC_DLL_LOCKED BIT(8) +-#define DWCMSHC_EMMC_DLL_TIMEOUT BIT(9) +-#define DLL_RXCLK_NO_INVERTER 1 +-#define DLL_RXCLK_INVERTER 0 +-#define DWCMSHC_ENHANCED_STROBE BIT(8) +-#define DLL_LOCK_WO_TMOUT(x) \ +- ((((x) & DWCMSHC_EMMC_DLL_LOCKED) == DWCMSHC_EMMC_DLL_LOCKED) && \ +- (((x) & DWCMSHC_EMMC_DLL_TIMEOUT) == 0)) +-#define ROCKCHIP_MAX_CLKS 3 +- + struct rockchip_sdhc_plat { + struct mmc_config cfg; + struct mmc mmc; +@@ -195,77 +167,6 @@ static int rk3399_sdhci_emmc_set_clock(struct sdhci_host *host, unsigned int clo + return 0; + } + +-static int rk3568_emmc_phy_init(struct udevice *dev) +-{ +- struct rockchip_sdhc *prv = dev_get_priv(dev); +- struct sdhci_host *host = &prv->host; +- u32 extra; +- +- extra = DLL_RXCLK_NO_INVERTER << DWCMSHC_EMMC_DLL_RXCLK_SRCSEL; +- sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_RXCLK); +- +- return 0; +-} +- +-static int rk3568_sdhci_emmc_set_clock(struct sdhci_host *host, unsigned int clock) +-{ +- struct rockchip_sdhc *priv = container_of(host, struct rockchip_sdhc, host); +- int val, ret; +- u32 extra; +- +- if (clock > host->max_clk) +- clock = host->max_clk; +- if (clock) +- clk_set_rate(&priv->emmc_clk, clock); +- +- sdhci_set_clock(host->mmc, clock); +- +- if (clock >= 100 * MHz) { +- /* reset DLL */ +- sdhci_writel(host, DWCMSHC_EMMC_DLL_CTRL_RESET, DWCMSHC_EMMC_DLL_CTRL); +- udelay(1); +- sdhci_writel(host, 0, DWCMSHC_EMMC_DLL_CTRL); +- +- /* Init DLL settings */ +- extra = DWCMSHC_EMMC_DLL_START_DEFAULT << DWCMSHC_EMMC_DLL_START_POINT | +- DWCMSHC_EMMC_DLL_INC_VALUE << DWCMSHC_EMMC_DLL_INC | +- DWCMSHC_EMMC_DLL_START; +- sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_CTRL); +- +- ret = read_poll_timeout(readl, host->ioaddr + DWCMSHC_EMMC_DLL_STATUS0, +- val, DLL_LOCK_WO_TMOUT(val), 1, 500); +- if (ret) +- return ret; +- +- extra = DWCMSHC_EMMC_DLL_DLYENA | +- DLL_RXCLK_NO_INVERTER << DWCMSHC_EMMC_DLL_RXCLK_SRCSEL; +- sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_RXCLK); +- +- extra = DWCMSHC_EMMC_DLL_DLYENA | +- DLL_TXCLK_TAPNUM_DEFAULT | +- DLL_TXCLK_TAPNUM_FROM_SW; +- sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_TXCLK); +- +- extra = DWCMSHC_EMMC_DLL_DLYENA | +- DLL_STRBIN_TAPNUM_DEFAULT; +- sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_STRBIN); +- } else { +- /* reset the clock phase when the frequency is lower than 100MHz */ +- sdhci_writel(host, 0, DWCMSHC_EMMC_DLL_CTRL); +- extra = DLL_RXCLK_NO_INVERTER << DWCMSHC_EMMC_DLL_RXCLK_SRCSEL; +- sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_RXCLK); +- sdhci_writel(host, 0, DWCMSHC_EMMC_DLL_TXCLK); +- sdhci_writel(host, 0, DWCMSHC_EMMC_DLL_STRBIN); +- } +- +- return 0; +-} +- +-static int rk3568_emmc_get_phy(struct udevice *dev) +-{ +- return 0; +-} +- + static int rockchip_sdhci_set_ios_post(struct sdhci_host *host) + { + struct rockchip_sdhc *priv = container_of(host, struct rockchip_sdhc, host); +@@ -438,21 +339,11 @@ static const struct sdhci_data rk3399_data = { + .emmc_phy_init = rk3399_emmc_phy_init, + }; + +-static const struct sdhci_data rk3568_data = { +- .emmc_set_clock = rk3568_sdhci_emmc_set_clock, +- .get_phy = rk3568_emmc_get_phy, +- .emmc_phy_init = rk3568_emmc_phy_init, +-}; +- + static const struct udevice_id sdhci_ids[] = { + { + .compatible = "arasan,sdhci-5.1", + .data = (ulong)&rk3399_data, + }, +- { +- .compatible = "rockchip,rk3568-dwcmshc", +- .data = (ulong)&rk3568_data, +- }, + { } + }; + +-- +2.33.0 + diff --git a/0002-Revert-mmc-rockchip_sdhci-add-phy-and-clock-config-f.patch b/0002-Revert-mmc-rockchip_sdhci-add-phy-and-clock-config-f.patch new file mode 100644 index 0000000..20a827c --- /dev/null +++ b/0002-Revert-mmc-rockchip_sdhci-add-phy-and-clock-config-f.patch @@ -0,0 +1,406 @@ +From bb7b9097efc67ff6051f206e3ac9602dabbfc33e Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Thu, 14 Oct 2021 16:02:03 +0100 +Subject: [PATCH 2/2] Revert "mmc: rockchip_sdhci: add phy and clock config for + rk3399" + +This reverts commit ac804143cfd128d144403ef2434344988c3fde9f. +--- + drivers/mmc/rockchip_sdhci.c | 313 ++++------------------------------- + 1 file changed, 36 insertions(+), 277 deletions(-) + +diff --git a/drivers/mmc/rockchip_sdhci.c b/drivers/mmc/rockchip_sdhci.c +index eff134c8f5..d95f8b2a15 100644 +--- a/drivers/mmc/rockchip_sdhci.c ++++ b/drivers/mmc/rockchip_sdhci.c +@@ -6,322 +6,90 @@ + */ + + #include +-#include + #include +-#include + #include +-#include + #include + #include +-#include + #include + #include +-#include "mmc_private.h" + #include +-#include +-#include +-#include ++#include + + /* 400KHz is max freq for card ID etc. Use that as min */ + #define EMMC_MIN_FREQ 400000 +-#define KHz (1000) +-#define MHz (1000 * KHz) +-#define SDHCI_TUNING_LOOP_COUNT 40 +- +-#define PHYCTRL_CALDONE_MASK 0x1 +-#define PHYCTRL_CALDONE_SHIFT 0x6 +-#define PHYCTRL_CALDONE_DONE 0x1 +-#define PHYCTRL_DLLRDY_MASK 0x1 +-#define PHYCTRL_DLLRDY_SHIFT 0x5 +-#define PHYCTRL_DLLRDY_DONE 0x1 +-#define PHYCTRL_FREQSEL_200M 0x0 +-#define PHYCTRL_FREQSEL_50M 0x1 +-#define PHYCTRL_FREQSEL_100M 0x2 +-#define PHYCTRL_FREQSEL_150M 0x3 +-#define PHYCTRL_DLL_LOCK_WO_TMOUT(x) \ +- ((((x) >> PHYCTRL_DLLRDY_SHIFT) & PHYCTRL_DLLRDY_MASK) ==\ +- PHYCTRL_DLLRDY_DONE) + + struct rockchip_sdhc_plat { ++#if CONFIG_IS_ENABLED(OF_PLATDATA) ++ struct dtd_rockchip_rk3399_sdhci_5_1 dtplat; ++#endif + struct mmc_config cfg; + struct mmc mmc; + }; + +-struct rockchip_emmc_phy { +- u32 emmcphy_con[7]; +- u32 reserved; +- u32 emmcphy_status; +-}; +- + struct rockchip_sdhc { + struct sdhci_host host; +- struct udevice *dev; + void *base; +- struct rockchip_emmc_phy *phy; +- struct clk emmc_clk; +-}; +- +-struct sdhci_data { +- int (*emmc_set_clock)(struct sdhci_host *host, unsigned int clock); +- int (*emmc_phy_init)(struct udevice *dev); +- int (*get_phy)(struct udevice *dev); +-}; +- +-static int rk3399_emmc_phy_init(struct udevice *dev) +-{ +- return 0; +-} +- +-static void rk3399_emmc_phy_power_on(struct rockchip_emmc_phy *phy, u32 clock) +-{ +- u32 caldone, dllrdy, freqsel; +- +- writel(RK_CLRSETBITS(7 << 4, 0), &phy->emmcphy_con[6]); +- writel(RK_CLRSETBITS(1 << 11, 1 << 11), &phy->emmcphy_con[0]); +- writel(RK_CLRSETBITS(0xf << 7, 6 << 7), &phy->emmcphy_con[0]); +- +- /* +- * According to the user manual, calpad calibration +- * cycle takes more than 2us without the minimal recommended +- * value, so we may need a little margin here +- */ +- udelay(3); +- writel(RK_CLRSETBITS(1, 1), &phy->emmcphy_con[6]); +- +- /* +- * According to the user manual, it asks driver to +- * wait 5us for calpad busy trimming. But it seems that +- * 5us of caldone isn't enough for all cases. +- */ +- udelay(500); +- caldone = readl(&phy->emmcphy_status); +- caldone = (caldone >> PHYCTRL_CALDONE_SHIFT) & PHYCTRL_CALDONE_MASK; +- if (caldone != PHYCTRL_CALDONE_DONE) { +- printf("%s: caldone timeout.\n", __func__); +- return; +- } +- +- /* Set the frequency of the DLL operation */ +- if (clock < 75 * MHz) +- freqsel = PHYCTRL_FREQSEL_50M; +- else if (clock < 125 * MHz) +- freqsel = PHYCTRL_FREQSEL_100M; +- else if (clock < 175 * MHz) +- freqsel = PHYCTRL_FREQSEL_150M; +- else +- freqsel = PHYCTRL_FREQSEL_200M; +- +- /* Set the frequency of the DLL operation */ +- writel(RK_CLRSETBITS(3 << 12, freqsel << 12), &phy->emmcphy_con[0]); +- writel(RK_CLRSETBITS(1 << 1, 1 << 1), &phy->emmcphy_con[6]); +- +- read_poll_timeout(readl, &phy->emmcphy_status, dllrdy, +- PHYCTRL_DLL_LOCK_WO_TMOUT(dllrdy), 1, 5000); +-} +- +-static void rk3399_emmc_phy_power_off(struct rockchip_emmc_phy *phy) +-{ +- writel(RK_CLRSETBITS(1, 0), &phy->emmcphy_con[6]); +- writel(RK_CLRSETBITS(1 << 1, 0), &phy->emmcphy_con[6]); +-} +- +-static int rk3399_emmc_get_phy(struct udevice *dev) +-{ +- struct rockchip_sdhc *priv = dev_get_priv(dev); +- ofnode phy_node; +- void *grf_base; +- u32 grf_phy_offset, phandle; +- +- phandle = dev_read_u32_default(dev, "phys", 0); +- phy_node = ofnode_get_by_phandle(phandle); +- if (!ofnode_valid(phy_node)) { +- debug("Not found emmc phy device\n"); +- return -ENODEV; +- } +- +- grf_base = syscon_get_first_range(ROCKCHIP_SYSCON_GRF); +- if (grf_base < 0) { +- printf("%s Get syscon grf failed", __func__); +- return -ENODEV; +- } +- grf_phy_offset = ofnode_read_u32_default(phy_node, "reg", 0); +- +- priv->phy = (struct rockchip_emmc_phy *)(grf_base + grf_phy_offset); +- +- return 0; +-} +- +-static int rk3399_sdhci_emmc_set_clock(struct sdhci_host *host, unsigned int clock) +-{ +- struct rockchip_sdhc *priv = container_of(host, struct rockchip_sdhc, host); +- int cycle_phy = host->clock != clock && clock > EMMC_MIN_FREQ; +- +- if (cycle_phy) +- rk3399_emmc_phy_power_off(priv->phy); +- +- sdhci_set_clock(host->mmc, clock); +- +- if (cycle_phy) +- rk3399_emmc_phy_power_on(priv->phy, clock); +- +- return 0; +-} +- +-static int rockchip_sdhci_set_ios_post(struct sdhci_host *host) +-{ +- struct rockchip_sdhc *priv = container_of(host, struct rockchip_sdhc, host); +- struct sdhci_data *data = (struct sdhci_data *)dev_get_driver_data(priv->dev); +- struct mmc *mmc = host->mmc; +- uint clock = mmc->tran_speed; +- u32 reg; +- +- if (!clock) +- clock = mmc->clock; +- +- if (data->emmc_set_clock) +- data->emmc_set_clock(host, clock); +- +- if (mmc->selected_mode == MMC_HS_400 || mmc->selected_mode == MMC_HS_400_ES) { +- reg = sdhci_readw(host, SDHCI_HOST_CONTROL2); +- reg &= ~SDHCI_CTRL_UHS_MASK; +- reg |= SDHCI_CTRL_HS400; +- sdhci_writew(host, reg, SDHCI_HOST_CONTROL2); +- } else { +- sdhci_set_uhs_timing(host); +- } +- +- return 0; +-} +- +-static int rockchip_sdhci_execute_tuning(struct mmc *mmc, u8 opcode) +-{ +- struct sdhci_host *host = dev_get_priv(mmc->dev); +- char tuning_loop_counter = SDHCI_TUNING_LOOP_COUNT; +- struct mmc_cmd cmd; +- u32 ctrl, blk_size; +- int ret = 0; +- +- ctrl = sdhci_readw(host, SDHCI_HOST_CONTROL2); +- ctrl |= SDHCI_CTRL_EXEC_TUNING; +- sdhci_writew(host, ctrl, SDHCI_HOST_CONTROL2); +- +- sdhci_writel(host, SDHCI_INT_DATA_AVAIL, SDHCI_INT_ENABLE); +- sdhci_writel(host, SDHCI_INT_DATA_AVAIL, SDHCI_SIGNAL_ENABLE); +- +- blk_size = SDHCI_MAKE_BLKSZ(SDHCI_DEFAULT_BOUNDARY_ARG, 64); +- if (opcode == MMC_CMD_SEND_TUNING_BLOCK_HS200 && host->mmc->bus_width == 8) +- blk_size = SDHCI_MAKE_BLKSZ(SDHCI_DEFAULT_BOUNDARY_ARG, 128); +- sdhci_writew(host, blk_size, SDHCI_BLOCK_SIZE); +- sdhci_writew(host, SDHCI_TRNS_READ, SDHCI_TRANSFER_MODE); +- +- cmd.cmdidx = opcode; +- cmd.resp_type = MMC_RSP_R1; +- cmd.cmdarg = 0; +- +- do { +- if (tuning_loop_counter-- == 0) +- break; +- +- mmc_send_cmd(mmc, &cmd, NULL); +- +- if (opcode == MMC_CMD_SEND_TUNING_BLOCK) +- /* +- * For tuning command, do not do busy loop. As tuning +- * is happening (CLK-DATA latching for setup/hold time +- * requirements), give time to complete +- */ +- udelay(1); +- +- ctrl = sdhci_readw(host, SDHCI_HOST_CONTROL2); +- } while (ctrl & SDHCI_CTRL_EXEC_TUNING); +- +- if (!(ctrl & SDHCI_CTRL_TUNED_CLK)) { +- printf("%s:Tuning failed\n", __func__); +- ret = -EIO; +- } +- +- if (tuning_loop_counter < 0) { +- ctrl &= ~SDHCI_CTRL_TUNED_CLK; +- sdhci_writel(host, ctrl, SDHCI_HOST_CONTROL2); +- } +- +- /* Enable only interrupts served by the SD controller */ +- sdhci_writel(host, SDHCI_INT_DATA_MASK | SDHCI_INT_CMD_MASK, SDHCI_INT_ENABLE); +- /* Mask all sdhci interrupt sources */ +- sdhci_writel(host, 0x0, SDHCI_SIGNAL_ENABLE); +- +- return ret; +-} +- +-static struct sdhci_ops rockchip_sdhci_ops = { +- .set_ios_post = rockchip_sdhci_set_ios_post, +- .platform_execute_tuning = &rockchip_sdhci_execute_tuning, + }; + +-static int rockchip_sdhci_probe(struct udevice *dev) ++static int arasan_sdhci_probe(struct udevice *dev) + { +- struct sdhci_data *data = (struct sdhci_data *)dev_get_driver_data(dev); + struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev); + struct rockchip_sdhc_plat *plat = dev_get_plat(dev); + struct rockchip_sdhc *prv = dev_get_priv(dev); +- struct mmc_config *cfg = &plat->cfg; + struct sdhci_host *host = &prv->host; ++ int max_frequency, ret; + struct clk clk; +- int ret; + +- host->max_clk = cfg->f_max; ++#if CONFIG_IS_ENABLED(OF_PLATDATA) ++ struct dtd_rockchip_rk3399_sdhci_5_1 *dtplat = &plat->dtplat; ++ ++ host->name = dev->name; ++ host->ioaddr = map_sysmem(dtplat->reg[0], dtplat->reg[1]); ++ max_frequency = dtplat->max_frequency; ++ ret = clk_get_by_driver_info(dev, dtplat->clocks, &clk); ++#else ++ max_frequency = dev_read_u32_default(dev, "max-frequency", 0); + ret = clk_get_by_index(dev, 0, &clk); ++#endif + if (!ret) { +- ret = clk_set_rate(&clk, host->max_clk); ++ ret = clk_set_rate(&clk, max_frequency); + if (IS_ERR_VALUE(ret)) + printf("%s clk set rate fail!\n", __func__); + } else { + printf("%s fail to get clk\n", __func__); + } + +- prv->emmc_clk = clk; +- prv->dev = dev; +- +- if (data->get_phy) { +- ret = data->get_phy(dev); +- if (ret) +- return ret; +- } +- +- if (data->emmc_phy_init) { +- ret = data->emmc_phy_init(dev); +- if (ret) +- return ret; +- } +- +- host->ops = &rockchip_sdhci_ops; + host->quirks = SDHCI_QUIRK_WAIT_SEND_CMD; ++ host->max_clk = max_frequency; ++ /* ++ * The sdhci-driver only supports 4bit and 8bit, as sdhci_setup_cfg ++ * doesn't allow us to clear MMC_MODE_4BIT. Consequently, we don't ++ * check for other bus-width values. ++ */ ++ if (host->bus_width == 8) ++ host->host_caps |= MMC_MODE_8BIT; + + host->mmc = &plat->mmc; + host->mmc->priv = &prv->host; + host->mmc->dev = dev; + upriv->mmc = host->mmc; + +- ret = sdhci_setup_cfg(cfg, host, cfg->f_max, EMMC_MIN_FREQ); ++ ret = sdhci_setup_cfg(&plat->cfg, host, 0, EMMC_MIN_FREQ); + if (ret) + return ret; + + return sdhci_probe(dev); + } + +-static int rockchip_sdhci_of_to_plat(struct udevice *dev) ++static int arasan_sdhci_of_to_plat(struct udevice *dev) + { +- struct rockchip_sdhc_plat *plat = dev_get_plat(dev); ++#if !CONFIG_IS_ENABLED(OF_PLATDATA) + struct sdhci_host *host = dev_get_priv(dev); +- struct mmc_config *cfg = &plat->cfg; +- int ret; + + host->name = dev->name; + host->ioaddr = dev_read_addr_ptr(dev); +- +- ret = mmc_of_parse(dev, cfg); +- if (ret) +- return ret; ++ host->bus_width = dev_read_u32_default(dev, "bus-width", 4); ++#endif + + return 0; + } +@@ -333,28 +101,19 @@ static int rockchip_sdhci_bind(struct udevice *dev) + return sdhci_bind(dev, &plat->mmc, &plat->cfg); + } + +-static const struct sdhci_data rk3399_data = { +- .emmc_set_clock = rk3399_sdhci_emmc_set_clock, +- .get_phy = rk3399_emmc_get_phy, +- .emmc_phy_init = rk3399_emmc_phy_init, +-}; +- +-static const struct udevice_id sdhci_ids[] = { +- { +- .compatible = "arasan,sdhci-5.1", +- .data = (ulong)&rk3399_data, +- }, ++static const struct udevice_id arasan_sdhci_ids[] = { ++ { .compatible = "arasan,sdhci-5.1" }, + { } + }; + + U_BOOT_DRIVER(arasan_sdhci_drv) = { +- .name = "rockchip_sdhci_5_1", ++ .name = "rockchip_rk3399_sdhci_5_1", + .id = UCLASS_MMC, +- .of_match = sdhci_ids, +- .of_to_plat = rockchip_sdhci_of_to_plat, ++ .of_match = arasan_sdhci_ids, ++ .of_to_plat = arasan_sdhci_of_to_plat, + .ops = &sdhci_ops, + .bind = rockchip_sdhci_bind, +- .probe = rockchip_sdhci_probe, ++ .probe = arasan_sdhci_probe, + .priv_auto = sizeof(struct rockchip_sdhc), + .plat_auto = sizeof(struct rockchip_sdhc_plat), + }; +-- +2.33.0 + diff --git a/aarch64-boards b/aarch64-boards index 15abee1..9e2fafa 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -18,6 +18,7 @@ khadas-vim khadas-vim2 khadas-vim3 khadas-vim3l +leez-rk3399 libretech-ac libretech_all_h3_cc_h5 libretech_all_h3_it_h5 @@ -29,11 +30,13 @@ nanopc-t4-rk3399 nanopi_a64 nanopi-k2 nanopi-m4-2gb-rk3399 +nanopi-m4b-rk3399 nanopi-m4-rk3399 nanopi_neo2 nanopi-neo4-rk3399 nanopi_neo_plus2 nanopi-r2s-rk3328 +nanopi-r4s-rk3399 odroid-c2 orangepi_3 orangepi_lite2 diff --git a/uboot-tools.spec b/uboot-tools.spec index 4a9c8f9..d3c5b0c 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -2,7 +2,7 @@ Name: uboot-tools Version: 2021.10 -Release: 1%{?candidate:.%{candidate}}%{?dist} +Release: 2%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -30,6 +30,8 @@ Patch11: 0001-Fix-BeagleAI-detection.patch Patch12: phy-rockchip-inno-usb2-fix-hang-when-multiple-controllers-exit.patch Patch13: 0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch Patch14: 0001-enable-hs400-and-sdma-support.patch +Patch15: 0001-Revert-mmc-rockchip_sdhci-Add-support-for-RK3568.patch +Patch16: 0002-Revert-mmc-rockchip_sdhci-add-phy-and-clock-config-f.patch BuildRequires: bc BuildRequires: dtc @@ -124,7 +126,7 @@ do echo "Board: $board using rk3328" cp /usr/share/arm-trusted-firmware/rk3328/* builds/$(echo $board)/ fi - rk3399=(evb-rk3399 ficus-rk3399 firefly-rk3399 khadas-edge-captain-rk3399 khadas-edge-rk3399 khadas-edge-v-rk3399 nanopc-t4-rk3399 nanopi-m4-2gb-rk3399 nanopi-m4-rk3399 nanopi-neo4-rk3399 orangepi-rk3399 pinebook-pro-rk3399 puma-rk3399 rock960-rk3399 rock-pi-4c-rk3399 rock-pi-4-rk3399 rock-pi-n10-rk3399pro rockpro64-rk3399 roc-pc-mezzanine-rk3399 roc-pc-rk3399) + rk3399=(evb-rk3399 ficus-rk3399 firefly-rk3399 khadas-edge-captain-rk3399 khadas-edge-rk3399 khadas-edge-v-rk3399 leez-rk3399 nanopc-t4-rk3399 nanopi-m4-2gb-rk3399 nanopi-m4b-rk3399 nanopi-m4-rk3399 nanopi-neo4-rk3399 nanopi-r4s-rk3399 orangepi-rk3399 pinebook-pro-rk3399 puma-rk3399 rock960-rk3399 rock-pi-4c-rk3399 rock-pi-4-rk3399 rock-pi-n10-rk3399pro rockpro64-rk3399 roc-pc-mezzanine-rk3399 roc-pc-rk3399) if [[ " ${rk3399[*]} " == *" $board "* ]]; then echo "Board: $board using rk3399" cp /usr/share/arm-trusted-firmware/rk3399/* builds/$(echo $board)/ @@ -260,6 +262,10 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Thu Oct 14 2021 Peter Robinson - 2021.10-2 +- Fix booting from MMC for Rockchip 3399 (rhbz #2014182) +- Enable new rk3399 devices (Leez, NanoPi-M4B, NanoPi-4S, NanoPi-T4) (rhbz #2009126) + * Mon Oct 04 2021 Peter Robinson - 2021.10-1 - Update to 2021.10 From e708510df15ea218dc931bf71d0a1ca7bdf78b2c Mon Sep 17 00:00:00 2001 From: Javier Martinez Canillas Date: Wed, 27 Oct 2021 13:29:32 +0200 Subject: [PATCH 086/271] Drop vboot-utils build dependency The package contains tools to build and sign FIT (Flat Image Tree) images that are used in u-boot based Chromebooks. But it isn't really needded to build u-boot, since FIT images are not shipped in uboot-images-armv{7,8}. Also, the vboot-utils package has as build dependency the trousers-devel package and this gets pulled as a dependency to build u-boot as well. But the trousers package is really deprecated since TPM 1.2 chips aren't used anymore nowadays. Let's just drop that unneeded build dependency. --- uboot-tools.spec | 3 --- 1 file changed, 3 deletions(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index d3c5b0c..11083e7 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -55,9 +55,6 @@ BuildRequires: flex bison BuildRequires: openssl-devel BuildRequires: SDL-devel BuildRequires: swig -%ifarch %{arm} aarch64 -BuildRequires: vboot-utils -%endif %ifarch aarch64 BuildRequires: arm-trusted-firmware-armv8 %endif From 684d5792496141406e93b7cb7f0b8d0dced4131a Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 27 Oct 2021 13:43:20 +0100 Subject: [PATCH 087/271] Drop any vestigate of an idea we build U-Boot for Chromebooks, if someone gets the time it can be added back --- aarch64-chromebooks | 0 arm-chromebooks | 8 -------- uboot-tools.spec | 9 +++------ 3 files changed, 3 insertions(+), 14 deletions(-) delete mode 100644 aarch64-chromebooks delete mode 100644 arm-chromebooks diff --git a/aarch64-chromebooks b/aarch64-chromebooks deleted file mode 100644 index e69de29..0000000 diff --git a/arm-chromebooks b/arm-chromebooks deleted file mode 100644 index 899c823..0000000 --- a/arm-chromebooks +++ /dev/null @@ -1,8 +0,0 @@ -chromebit_mickey_defconfig -chromebook_jerry_defconfig -chromebook_minnie_defconfig -nyan-big_defconfig -peach-pi_defconfig -peach-pit_defconfig -snow_defconfig -spring_defconfig diff --git a/uboot-tools.spec b/uboot-tools.spec index 11083e7..bff1088 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -10,9 +10,7 @@ URL: http://www.denx.de/wiki/U-Boot ExcludeArch: s390x Source0: https://ftp.denx.de/pub/u-boot/u-boot-%{version}%{?candidate:-%{candidate}}.tar.bz2 Source1: arm-boards -Source2: arm-chromebooks -Source3: aarch64-boards -Source4: aarch64-chromebooks +Source2: aarch64-boards # Fedoraisms patches # Needed to find DT on boot partition that's not the first partition @@ -85,7 +83,7 @@ U-Boot firmware binaries for armv7 boards %prep %autosetup -p1 -n u-boot-%{version}%{?candidate:-%{candidate}} -cp %SOURCE1 %SOURCE2 %SOURCE3 %SOURCE4 . +cp %SOURCE1 %SOURCE2 . %build mkdir builds @@ -242,8 +240,7 @@ cp -p board/warp7/README builds/docs/README.warp7 %files %doc README doc/README.kwbimage doc/README.distro doc/README.gpt %doc doc/README.odroid doc/README.rockchip doc/develop/uefi doc/uImage.FIT doc/arch/arm64.rst -%doc doc/chromium builds/docs/* -%doc doc/board/amlogic/ doc/board/rockchip/ +%doc builds/docs/* doc/board/amlogic/ doc/board/rockchip/ %{_bindir}/* %{_mandir}/man1/mkimage.1* %dir %{_datadir}/uboot/ From 9eb973e7d2ab74341c0eb7312576b6f016ec03d4 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 15 Nov 2021 18:24:46 +0000 Subject: [PATCH 088/271] upstream rk3399 MMC fix, build against new ATF for rk3399 suspend fix --- ...ockchip_sdhci-Add-support-for-RK3568.patch | 152 ------- ...hip_sdhci-add-phy-and-clock-config-f.patch | 406 ------------------ ...kchip-rk3399-enable-emmc-phy-for-spl.patch | 115 +++++ uboot-tools.spec | 8 +- 4 files changed, 120 insertions(+), 561 deletions(-) delete mode 100644 0001-Revert-mmc-rockchip_sdhci-Add-support-for-RK3568.patch delete mode 100644 0002-Revert-mmc-rockchip_sdhci-add-phy-and-clock-config-f.patch create mode 100644 dts-rockchip-rk3399-enable-emmc-phy-for-spl.patch diff --git a/0001-Revert-mmc-rockchip_sdhci-Add-support-for-RK3568.patch b/0001-Revert-mmc-rockchip_sdhci-Add-support-for-RK3568.patch deleted file mode 100644 index 33dbf61..0000000 --- a/0001-Revert-mmc-rockchip_sdhci-Add-support-for-RK3568.patch +++ /dev/null @@ -1,152 +0,0 @@ -From e3e6018d0b67fbab3d05053688e53f5baac63bc3 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Thu, 14 Oct 2021 16:01:56 +0100 -Subject: [PATCH 1/2] Revert "mmc: rockchip_sdhci: Add support for RK3568" - -This reverts commit a63a57e59d864a1ca2b0acb5fadc5c3579c3e79c. ---- - drivers/mmc/rockchip_sdhci.c | 109 ----------------------------------- - 1 file changed, 109 deletions(-) - -diff --git a/drivers/mmc/rockchip_sdhci.c b/drivers/mmc/rockchip_sdhci.c -index 1ac00587d4..eff134c8f5 100644 ---- a/drivers/mmc/rockchip_sdhci.c -+++ b/drivers/mmc/rockchip_sdhci.c -@@ -42,34 +42,6 @@ - ((((x) >> PHYCTRL_DLLRDY_SHIFT) & PHYCTRL_DLLRDY_MASK) ==\ - PHYCTRL_DLLRDY_DONE) - --/* Rockchip specific Registers */ --#define DWCMSHC_EMMC_DLL_CTRL 0x800 --#define DWCMSHC_EMMC_DLL_CTRL_RESET BIT(1) --#define DWCMSHC_EMMC_DLL_RXCLK 0x804 --#define DWCMSHC_EMMC_DLL_TXCLK 0x808 --#define DWCMSHC_EMMC_DLL_STRBIN 0x80c --#define DWCMSHC_EMMC_DLL_STATUS0 0x840 --#define DWCMSHC_EMMC_DLL_STATUS1 0x844 --#define DWCMSHC_EMMC_DLL_START BIT(0) --#define DWCMSHC_EMMC_DLL_RXCLK_SRCSEL 29 --#define DWCMSHC_EMMC_DLL_START_POINT 16 --#define DWCMSHC_EMMC_DLL_START_DEFAULT 5 --#define DWCMSHC_EMMC_DLL_INC_VALUE 2 --#define DWCMSHC_EMMC_DLL_INC 8 --#define DWCMSHC_EMMC_DLL_DLYENA BIT(27) --#define DLL_TXCLK_TAPNUM_DEFAULT 0x10 --#define DLL_STRBIN_TAPNUM_DEFAULT 0x3 --#define DLL_TXCLK_TAPNUM_FROM_SW BIT(24) --#define DWCMSHC_EMMC_DLL_LOCKED BIT(8) --#define DWCMSHC_EMMC_DLL_TIMEOUT BIT(9) --#define DLL_RXCLK_NO_INVERTER 1 --#define DLL_RXCLK_INVERTER 0 --#define DWCMSHC_ENHANCED_STROBE BIT(8) --#define DLL_LOCK_WO_TMOUT(x) \ -- ((((x) & DWCMSHC_EMMC_DLL_LOCKED) == DWCMSHC_EMMC_DLL_LOCKED) && \ -- (((x) & DWCMSHC_EMMC_DLL_TIMEOUT) == 0)) --#define ROCKCHIP_MAX_CLKS 3 -- - struct rockchip_sdhc_plat { - struct mmc_config cfg; - struct mmc mmc; -@@ -195,77 +167,6 @@ static int rk3399_sdhci_emmc_set_clock(struct sdhci_host *host, unsigned int clo - return 0; - } - --static int rk3568_emmc_phy_init(struct udevice *dev) --{ -- struct rockchip_sdhc *prv = dev_get_priv(dev); -- struct sdhci_host *host = &prv->host; -- u32 extra; -- -- extra = DLL_RXCLK_NO_INVERTER << DWCMSHC_EMMC_DLL_RXCLK_SRCSEL; -- sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_RXCLK); -- -- return 0; --} -- --static int rk3568_sdhci_emmc_set_clock(struct sdhci_host *host, unsigned int clock) --{ -- struct rockchip_sdhc *priv = container_of(host, struct rockchip_sdhc, host); -- int val, ret; -- u32 extra; -- -- if (clock > host->max_clk) -- clock = host->max_clk; -- if (clock) -- clk_set_rate(&priv->emmc_clk, clock); -- -- sdhci_set_clock(host->mmc, clock); -- -- if (clock >= 100 * MHz) { -- /* reset DLL */ -- sdhci_writel(host, DWCMSHC_EMMC_DLL_CTRL_RESET, DWCMSHC_EMMC_DLL_CTRL); -- udelay(1); -- sdhci_writel(host, 0, DWCMSHC_EMMC_DLL_CTRL); -- -- /* Init DLL settings */ -- extra = DWCMSHC_EMMC_DLL_START_DEFAULT << DWCMSHC_EMMC_DLL_START_POINT | -- DWCMSHC_EMMC_DLL_INC_VALUE << DWCMSHC_EMMC_DLL_INC | -- DWCMSHC_EMMC_DLL_START; -- sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_CTRL); -- -- ret = read_poll_timeout(readl, host->ioaddr + DWCMSHC_EMMC_DLL_STATUS0, -- val, DLL_LOCK_WO_TMOUT(val), 1, 500); -- if (ret) -- return ret; -- -- extra = DWCMSHC_EMMC_DLL_DLYENA | -- DLL_RXCLK_NO_INVERTER << DWCMSHC_EMMC_DLL_RXCLK_SRCSEL; -- sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_RXCLK); -- -- extra = DWCMSHC_EMMC_DLL_DLYENA | -- DLL_TXCLK_TAPNUM_DEFAULT | -- DLL_TXCLK_TAPNUM_FROM_SW; -- sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_TXCLK); -- -- extra = DWCMSHC_EMMC_DLL_DLYENA | -- DLL_STRBIN_TAPNUM_DEFAULT; -- sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_STRBIN); -- } else { -- /* reset the clock phase when the frequency is lower than 100MHz */ -- sdhci_writel(host, 0, DWCMSHC_EMMC_DLL_CTRL); -- extra = DLL_RXCLK_NO_INVERTER << DWCMSHC_EMMC_DLL_RXCLK_SRCSEL; -- sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_RXCLK); -- sdhci_writel(host, 0, DWCMSHC_EMMC_DLL_TXCLK); -- sdhci_writel(host, 0, DWCMSHC_EMMC_DLL_STRBIN); -- } -- -- return 0; --} -- --static int rk3568_emmc_get_phy(struct udevice *dev) --{ -- return 0; --} -- - static int rockchip_sdhci_set_ios_post(struct sdhci_host *host) - { - struct rockchip_sdhc *priv = container_of(host, struct rockchip_sdhc, host); -@@ -438,21 +339,11 @@ static const struct sdhci_data rk3399_data = { - .emmc_phy_init = rk3399_emmc_phy_init, - }; - --static const struct sdhci_data rk3568_data = { -- .emmc_set_clock = rk3568_sdhci_emmc_set_clock, -- .get_phy = rk3568_emmc_get_phy, -- .emmc_phy_init = rk3568_emmc_phy_init, --}; -- - static const struct udevice_id sdhci_ids[] = { - { - .compatible = "arasan,sdhci-5.1", - .data = (ulong)&rk3399_data, - }, -- { -- .compatible = "rockchip,rk3568-dwcmshc", -- .data = (ulong)&rk3568_data, -- }, - { } - }; - --- -2.33.0 - diff --git a/0002-Revert-mmc-rockchip_sdhci-add-phy-and-clock-config-f.patch b/0002-Revert-mmc-rockchip_sdhci-add-phy-and-clock-config-f.patch deleted file mode 100644 index 20a827c..0000000 --- a/0002-Revert-mmc-rockchip_sdhci-add-phy-and-clock-config-f.patch +++ /dev/null @@ -1,406 +0,0 @@ -From bb7b9097efc67ff6051f206e3ac9602dabbfc33e Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Thu, 14 Oct 2021 16:02:03 +0100 -Subject: [PATCH 2/2] Revert "mmc: rockchip_sdhci: add phy and clock config for - rk3399" - -This reverts commit ac804143cfd128d144403ef2434344988c3fde9f. ---- - drivers/mmc/rockchip_sdhci.c | 313 ++++------------------------------- - 1 file changed, 36 insertions(+), 277 deletions(-) - -diff --git a/drivers/mmc/rockchip_sdhci.c b/drivers/mmc/rockchip_sdhci.c -index eff134c8f5..d95f8b2a15 100644 ---- a/drivers/mmc/rockchip_sdhci.c -+++ b/drivers/mmc/rockchip_sdhci.c -@@ -6,322 +6,90 @@ - */ - - #include --#include - #include --#include - #include --#include - #include - #include --#include - #include - #include --#include "mmc_private.h" - #include --#include --#include --#include -+#include - - /* 400KHz is max freq for card ID etc. Use that as min */ - #define EMMC_MIN_FREQ 400000 --#define KHz (1000) --#define MHz (1000 * KHz) --#define SDHCI_TUNING_LOOP_COUNT 40 -- --#define PHYCTRL_CALDONE_MASK 0x1 --#define PHYCTRL_CALDONE_SHIFT 0x6 --#define PHYCTRL_CALDONE_DONE 0x1 --#define PHYCTRL_DLLRDY_MASK 0x1 --#define PHYCTRL_DLLRDY_SHIFT 0x5 --#define PHYCTRL_DLLRDY_DONE 0x1 --#define PHYCTRL_FREQSEL_200M 0x0 --#define PHYCTRL_FREQSEL_50M 0x1 --#define PHYCTRL_FREQSEL_100M 0x2 --#define PHYCTRL_FREQSEL_150M 0x3 --#define PHYCTRL_DLL_LOCK_WO_TMOUT(x) \ -- ((((x) >> PHYCTRL_DLLRDY_SHIFT) & PHYCTRL_DLLRDY_MASK) ==\ -- PHYCTRL_DLLRDY_DONE) - - struct rockchip_sdhc_plat { -+#if CONFIG_IS_ENABLED(OF_PLATDATA) -+ struct dtd_rockchip_rk3399_sdhci_5_1 dtplat; -+#endif - struct mmc_config cfg; - struct mmc mmc; - }; - --struct rockchip_emmc_phy { -- u32 emmcphy_con[7]; -- u32 reserved; -- u32 emmcphy_status; --}; -- - struct rockchip_sdhc { - struct sdhci_host host; -- struct udevice *dev; - void *base; -- struct rockchip_emmc_phy *phy; -- struct clk emmc_clk; --}; -- --struct sdhci_data { -- int (*emmc_set_clock)(struct sdhci_host *host, unsigned int clock); -- int (*emmc_phy_init)(struct udevice *dev); -- int (*get_phy)(struct udevice *dev); --}; -- --static int rk3399_emmc_phy_init(struct udevice *dev) --{ -- return 0; --} -- --static void rk3399_emmc_phy_power_on(struct rockchip_emmc_phy *phy, u32 clock) --{ -- u32 caldone, dllrdy, freqsel; -- -- writel(RK_CLRSETBITS(7 << 4, 0), &phy->emmcphy_con[6]); -- writel(RK_CLRSETBITS(1 << 11, 1 << 11), &phy->emmcphy_con[0]); -- writel(RK_CLRSETBITS(0xf << 7, 6 << 7), &phy->emmcphy_con[0]); -- -- /* -- * According to the user manual, calpad calibration -- * cycle takes more than 2us without the minimal recommended -- * value, so we may need a little margin here -- */ -- udelay(3); -- writel(RK_CLRSETBITS(1, 1), &phy->emmcphy_con[6]); -- -- /* -- * According to the user manual, it asks driver to -- * wait 5us for calpad busy trimming. But it seems that -- * 5us of caldone isn't enough for all cases. -- */ -- udelay(500); -- caldone = readl(&phy->emmcphy_status); -- caldone = (caldone >> PHYCTRL_CALDONE_SHIFT) & PHYCTRL_CALDONE_MASK; -- if (caldone != PHYCTRL_CALDONE_DONE) { -- printf("%s: caldone timeout.\n", __func__); -- return; -- } -- -- /* Set the frequency of the DLL operation */ -- if (clock < 75 * MHz) -- freqsel = PHYCTRL_FREQSEL_50M; -- else if (clock < 125 * MHz) -- freqsel = PHYCTRL_FREQSEL_100M; -- else if (clock < 175 * MHz) -- freqsel = PHYCTRL_FREQSEL_150M; -- else -- freqsel = PHYCTRL_FREQSEL_200M; -- -- /* Set the frequency of the DLL operation */ -- writel(RK_CLRSETBITS(3 << 12, freqsel << 12), &phy->emmcphy_con[0]); -- writel(RK_CLRSETBITS(1 << 1, 1 << 1), &phy->emmcphy_con[6]); -- -- read_poll_timeout(readl, &phy->emmcphy_status, dllrdy, -- PHYCTRL_DLL_LOCK_WO_TMOUT(dllrdy), 1, 5000); --} -- --static void rk3399_emmc_phy_power_off(struct rockchip_emmc_phy *phy) --{ -- writel(RK_CLRSETBITS(1, 0), &phy->emmcphy_con[6]); -- writel(RK_CLRSETBITS(1 << 1, 0), &phy->emmcphy_con[6]); --} -- --static int rk3399_emmc_get_phy(struct udevice *dev) --{ -- struct rockchip_sdhc *priv = dev_get_priv(dev); -- ofnode phy_node; -- void *grf_base; -- u32 grf_phy_offset, phandle; -- -- phandle = dev_read_u32_default(dev, "phys", 0); -- phy_node = ofnode_get_by_phandle(phandle); -- if (!ofnode_valid(phy_node)) { -- debug("Not found emmc phy device\n"); -- return -ENODEV; -- } -- -- grf_base = syscon_get_first_range(ROCKCHIP_SYSCON_GRF); -- if (grf_base < 0) { -- printf("%s Get syscon grf failed", __func__); -- return -ENODEV; -- } -- grf_phy_offset = ofnode_read_u32_default(phy_node, "reg", 0); -- -- priv->phy = (struct rockchip_emmc_phy *)(grf_base + grf_phy_offset); -- -- return 0; --} -- --static int rk3399_sdhci_emmc_set_clock(struct sdhci_host *host, unsigned int clock) --{ -- struct rockchip_sdhc *priv = container_of(host, struct rockchip_sdhc, host); -- int cycle_phy = host->clock != clock && clock > EMMC_MIN_FREQ; -- -- if (cycle_phy) -- rk3399_emmc_phy_power_off(priv->phy); -- -- sdhci_set_clock(host->mmc, clock); -- -- if (cycle_phy) -- rk3399_emmc_phy_power_on(priv->phy, clock); -- -- return 0; --} -- --static int rockchip_sdhci_set_ios_post(struct sdhci_host *host) --{ -- struct rockchip_sdhc *priv = container_of(host, struct rockchip_sdhc, host); -- struct sdhci_data *data = (struct sdhci_data *)dev_get_driver_data(priv->dev); -- struct mmc *mmc = host->mmc; -- uint clock = mmc->tran_speed; -- u32 reg; -- -- if (!clock) -- clock = mmc->clock; -- -- if (data->emmc_set_clock) -- data->emmc_set_clock(host, clock); -- -- if (mmc->selected_mode == MMC_HS_400 || mmc->selected_mode == MMC_HS_400_ES) { -- reg = sdhci_readw(host, SDHCI_HOST_CONTROL2); -- reg &= ~SDHCI_CTRL_UHS_MASK; -- reg |= SDHCI_CTRL_HS400; -- sdhci_writew(host, reg, SDHCI_HOST_CONTROL2); -- } else { -- sdhci_set_uhs_timing(host); -- } -- -- return 0; --} -- --static int rockchip_sdhci_execute_tuning(struct mmc *mmc, u8 opcode) --{ -- struct sdhci_host *host = dev_get_priv(mmc->dev); -- char tuning_loop_counter = SDHCI_TUNING_LOOP_COUNT; -- struct mmc_cmd cmd; -- u32 ctrl, blk_size; -- int ret = 0; -- -- ctrl = sdhci_readw(host, SDHCI_HOST_CONTROL2); -- ctrl |= SDHCI_CTRL_EXEC_TUNING; -- sdhci_writew(host, ctrl, SDHCI_HOST_CONTROL2); -- -- sdhci_writel(host, SDHCI_INT_DATA_AVAIL, SDHCI_INT_ENABLE); -- sdhci_writel(host, SDHCI_INT_DATA_AVAIL, SDHCI_SIGNAL_ENABLE); -- -- blk_size = SDHCI_MAKE_BLKSZ(SDHCI_DEFAULT_BOUNDARY_ARG, 64); -- if (opcode == MMC_CMD_SEND_TUNING_BLOCK_HS200 && host->mmc->bus_width == 8) -- blk_size = SDHCI_MAKE_BLKSZ(SDHCI_DEFAULT_BOUNDARY_ARG, 128); -- sdhci_writew(host, blk_size, SDHCI_BLOCK_SIZE); -- sdhci_writew(host, SDHCI_TRNS_READ, SDHCI_TRANSFER_MODE); -- -- cmd.cmdidx = opcode; -- cmd.resp_type = MMC_RSP_R1; -- cmd.cmdarg = 0; -- -- do { -- if (tuning_loop_counter-- == 0) -- break; -- -- mmc_send_cmd(mmc, &cmd, NULL); -- -- if (opcode == MMC_CMD_SEND_TUNING_BLOCK) -- /* -- * For tuning command, do not do busy loop. As tuning -- * is happening (CLK-DATA latching for setup/hold time -- * requirements), give time to complete -- */ -- udelay(1); -- -- ctrl = sdhci_readw(host, SDHCI_HOST_CONTROL2); -- } while (ctrl & SDHCI_CTRL_EXEC_TUNING); -- -- if (!(ctrl & SDHCI_CTRL_TUNED_CLK)) { -- printf("%s:Tuning failed\n", __func__); -- ret = -EIO; -- } -- -- if (tuning_loop_counter < 0) { -- ctrl &= ~SDHCI_CTRL_TUNED_CLK; -- sdhci_writel(host, ctrl, SDHCI_HOST_CONTROL2); -- } -- -- /* Enable only interrupts served by the SD controller */ -- sdhci_writel(host, SDHCI_INT_DATA_MASK | SDHCI_INT_CMD_MASK, SDHCI_INT_ENABLE); -- /* Mask all sdhci interrupt sources */ -- sdhci_writel(host, 0x0, SDHCI_SIGNAL_ENABLE); -- -- return ret; --} -- --static struct sdhci_ops rockchip_sdhci_ops = { -- .set_ios_post = rockchip_sdhci_set_ios_post, -- .platform_execute_tuning = &rockchip_sdhci_execute_tuning, - }; - --static int rockchip_sdhci_probe(struct udevice *dev) -+static int arasan_sdhci_probe(struct udevice *dev) - { -- struct sdhci_data *data = (struct sdhci_data *)dev_get_driver_data(dev); - struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev); - struct rockchip_sdhc_plat *plat = dev_get_plat(dev); - struct rockchip_sdhc *prv = dev_get_priv(dev); -- struct mmc_config *cfg = &plat->cfg; - struct sdhci_host *host = &prv->host; -+ int max_frequency, ret; - struct clk clk; -- int ret; - -- host->max_clk = cfg->f_max; -+#if CONFIG_IS_ENABLED(OF_PLATDATA) -+ struct dtd_rockchip_rk3399_sdhci_5_1 *dtplat = &plat->dtplat; -+ -+ host->name = dev->name; -+ host->ioaddr = map_sysmem(dtplat->reg[0], dtplat->reg[1]); -+ max_frequency = dtplat->max_frequency; -+ ret = clk_get_by_driver_info(dev, dtplat->clocks, &clk); -+#else -+ max_frequency = dev_read_u32_default(dev, "max-frequency", 0); - ret = clk_get_by_index(dev, 0, &clk); -+#endif - if (!ret) { -- ret = clk_set_rate(&clk, host->max_clk); -+ ret = clk_set_rate(&clk, max_frequency); - if (IS_ERR_VALUE(ret)) - printf("%s clk set rate fail!\n", __func__); - } else { - printf("%s fail to get clk\n", __func__); - } - -- prv->emmc_clk = clk; -- prv->dev = dev; -- -- if (data->get_phy) { -- ret = data->get_phy(dev); -- if (ret) -- return ret; -- } -- -- if (data->emmc_phy_init) { -- ret = data->emmc_phy_init(dev); -- if (ret) -- return ret; -- } -- -- host->ops = &rockchip_sdhci_ops; - host->quirks = SDHCI_QUIRK_WAIT_SEND_CMD; -+ host->max_clk = max_frequency; -+ /* -+ * The sdhci-driver only supports 4bit and 8bit, as sdhci_setup_cfg -+ * doesn't allow us to clear MMC_MODE_4BIT. Consequently, we don't -+ * check for other bus-width values. -+ */ -+ if (host->bus_width == 8) -+ host->host_caps |= MMC_MODE_8BIT; - - host->mmc = &plat->mmc; - host->mmc->priv = &prv->host; - host->mmc->dev = dev; - upriv->mmc = host->mmc; - -- ret = sdhci_setup_cfg(cfg, host, cfg->f_max, EMMC_MIN_FREQ); -+ ret = sdhci_setup_cfg(&plat->cfg, host, 0, EMMC_MIN_FREQ); - if (ret) - return ret; - - return sdhci_probe(dev); - } - --static int rockchip_sdhci_of_to_plat(struct udevice *dev) -+static int arasan_sdhci_of_to_plat(struct udevice *dev) - { -- struct rockchip_sdhc_plat *plat = dev_get_plat(dev); -+#if !CONFIG_IS_ENABLED(OF_PLATDATA) - struct sdhci_host *host = dev_get_priv(dev); -- struct mmc_config *cfg = &plat->cfg; -- int ret; - - host->name = dev->name; - host->ioaddr = dev_read_addr_ptr(dev); -- -- ret = mmc_of_parse(dev, cfg); -- if (ret) -- return ret; -+ host->bus_width = dev_read_u32_default(dev, "bus-width", 4); -+#endif - - return 0; - } -@@ -333,28 +101,19 @@ static int rockchip_sdhci_bind(struct udevice *dev) - return sdhci_bind(dev, &plat->mmc, &plat->cfg); - } - --static const struct sdhci_data rk3399_data = { -- .emmc_set_clock = rk3399_sdhci_emmc_set_clock, -- .get_phy = rk3399_emmc_get_phy, -- .emmc_phy_init = rk3399_emmc_phy_init, --}; -- --static const struct udevice_id sdhci_ids[] = { -- { -- .compatible = "arasan,sdhci-5.1", -- .data = (ulong)&rk3399_data, -- }, -+static const struct udevice_id arasan_sdhci_ids[] = { -+ { .compatible = "arasan,sdhci-5.1" }, - { } - }; - - U_BOOT_DRIVER(arasan_sdhci_drv) = { -- .name = "rockchip_sdhci_5_1", -+ .name = "rockchip_rk3399_sdhci_5_1", - .id = UCLASS_MMC, -- .of_match = sdhci_ids, -- .of_to_plat = rockchip_sdhci_of_to_plat, -+ .of_match = arasan_sdhci_ids, -+ .of_to_plat = arasan_sdhci_of_to_plat, - .ops = &sdhci_ops, - .bind = rockchip_sdhci_bind, -- .probe = rockchip_sdhci_probe, -+ .probe = arasan_sdhci_probe, - .priv_auto = sizeof(struct rockchip_sdhc), - .plat_auto = sizeof(struct rockchip_sdhc_plat), - }; --- -2.33.0 - diff --git a/dts-rockchip-rk3399-enable-emmc-phy-for-spl.patch b/dts-rockchip-rk3399-enable-emmc-phy-for-spl.patch new file mode 100644 index 0000000..3ef5b53 --- /dev/null +++ b/dts-rockchip-rk3399-enable-emmc-phy-for-spl.patch @@ -0,0 +1,115 @@ +From patchwork Mon Nov 1 04:43:47 2021 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Yifeng Zhao +X-Patchwork-Id: 1548950 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=85.214.62.61; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +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 RSA-PSS (4096 bits)) + (No client certificate requested) + by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HjL646Yhcz9sS8 + for ; Mon, 1 Nov 2021 15:44:12 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 6212783389; + Mon, 1 Nov 2021 05:44:06 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=none (p=none dis=none) header.from=rock-chips.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 26A6483395; Mon, 1 Nov 2021 05:44:05 +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=-0.4 required=5.0 tests=BAYES_00,RCVD_IN_SORBS_WEB, + SPF_HELO_NONE,T_SPF_PERMERROR autolearn=no autolearn_force=no + version=3.4.2 +Received: from lucky1.263xmail.com (lucky1.263xmail.com [211.157.147.134]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 04D7B83383 + for ; Mon, 1 Nov 2021 05:43:59 +0100 (CET) +Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) + header.from=rock-chips.com +Authentication-Results: phobos.denx.de; + spf=fail smtp.mailfrom=yifeng.zhao@rock-chips.com +Received: from localhost (unknown [192.168.167.16]) + by lucky1.263xmail.com (Postfix) with ESMTP id 1B96CD124A; + Mon, 1 Nov 2021 12:43:55 +0800 (CST) +X-MAIL-GRAY: 0 +X-MAIL-DELIVERY: 1 +X-ADDR-CHECKED4: 1 +X-SKE-CHECKED: 1 +X-ANTISPAM-LEVEL: 2 +Received: from localhost.localdomain (unknown [58.22.7.114]) + by smtp.263.net (postfix) whith ESMTP id + P5172T139932542678784S1635741828952225_; + Mon, 01 Nov 2021 12:43:55 +0800 (CST) +X-IP-DOMAINF: 1 +X-RL-SENDER: yifeng.zhao@rock-chips.com +X-SENDER: zyf@rock-chips.com +X-LOGIN-NAME: yifeng.zhao@rock-chips.com +X-FST-TO: kever.yang@rock-chips.com +X-RCPT-COUNT: 7 +X-LOCAL-RCPT-COUNT: 2 +X-SENDER-IP: 58.22.7.114 +X-ATTACHMENT-NUM: 0 +X-UNIQUE-TAG: <8beb59827f65d556787d36e0068aa9cb> +X-System-Flag: 0 +From: Yifeng Zhao +To: Kever Yang +Cc: sjg , Peter Robinson , + Philipp Tomsich , + u-boot@lists.denx.de, Jack Mitchell , + Yifeng Zhao +Subject: [PATCH] dts: rockchip: rk3399: enable emmc phy for spl +Date: Mon, 1 Nov 2021 12:43:47 +0800 +Message-Id: <20211101044347.17822-1-yifeng.zhao@rock-chips.com> +X-Mailer: git-send-email 2.17.1 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.34 +Precedence: list +List-Id: U-Boot discussion +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Errors-To: u-boot-bounces@lists.denx.de +Sender: "U-Boot" +X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de +X-Virus-Status: Clean + +adapting commit ac804143cf ("mmc: rockchip_sdhci: add phy and clock +config for rk3399") to fix the issue "Not found emmc phy device". + +Signed-off-by: Yifeng Zhao +--- + + arch/arm/dts/rk3399-u-boot.dtsi | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/arch/arm/dts/rk3399-u-boot.dtsi b/arch/arm/dts/rk3399-u-boot.dtsi +index 73922c328a..716b9a433a 100644 +--- a/arch/arm/dts/rk3399-u-boot.dtsi ++++ b/arch/arm/dts/rk3399-u-boot.dtsi +@@ -88,6 +88,10 @@ + u-boot,dm-pre-reloc; + }; + ++&emmc_phy { ++ u-boot,dm-pre-reloc; ++}; ++ + &grf { + u-boot,dm-pre-reloc; + }; diff --git a/uboot-tools.spec b/uboot-tools.spec index bff1088..d77e112 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -2,7 +2,7 @@ Name: uboot-tools Version: 2021.10 -Release: 2%{?candidate:.%{candidate}}%{?dist} +Release: 3%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -28,8 +28,7 @@ Patch11: 0001-Fix-BeagleAI-detection.patch Patch12: phy-rockchip-inno-usb2-fix-hang-when-multiple-controllers-exit.patch Patch13: 0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch Patch14: 0001-enable-hs400-and-sdma-support.patch -Patch15: 0001-Revert-mmc-rockchip_sdhci-Add-support-for-RK3568.patch -Patch16: 0002-Revert-mmc-rockchip_sdhci-add-phy-and-clock-config-f.patch +Patch15: dts-rockchip-rk3399-enable-emmc-phy-for-spl.patch BuildRequires: bc BuildRequires: dtc @@ -256,6 +255,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Mon Nov 15 2021 Peter Robinson - 2021.10-3 +- Fixes for rk3399 devices + * Thu Oct 14 2021 Peter Robinson - 2021.10-2 - Fix booting from MMC for Rockchip 3399 (rhbz #2014182) - Enable new rk3399 devices (Leez, NanoPi-M4B, NanoPi-4S, NanoPi-T4) (rhbz #2009126) From 89bd41507ecefd2f18fdfc7cc8d2993a7c24b772 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 15 Nov 2021 21:11:49 +0000 Subject: [PATCH 089/271] 2022.01 RC2 --- AllWinner-PineTab.patch | 45 ----------------------------------------- sources | 2 +- uboot-tools.spec | 11 +++++----- 3 files changed, 7 insertions(+), 51 deletions(-) delete mode 100644 AllWinner-PineTab.patch diff --git a/AllWinner-PineTab.patch b/AllWinner-PineTab.patch deleted file mode 100644 index 04b6896..0000000 --- a/AllWinner-PineTab.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 6bf15552c2b6becb48ce7732120e0ddb2078cb1a Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Tue, 14 Apr 2020 09:53:07 +0100 -Subject: [PATCH 9/9] initial pinetab support - -Signed-off-by: Peter Robinson ---- - configs/pinetab_defconfig | 26 ++++++++++++++++++++++++++ - 1 file changed, 26 insertions(+) - create mode 100644 configs/pinetab_defconfig - -diff --git a/configs/pinetab_defconfig b/configs/pinetab_defconfig -new file mode 100644 -index 0000000000..5b9620f3e5 ---- /dev/null -+++ b/configs/pinetab_defconfig -@@ -0,0 +1,26 @@ -+CONFIG_ARM=y -+CONFIG_ARCH_SUNXI=y -+CONFIG_SPL=y -+CONFIG_MACH_SUN50I=y -+CONFIG_SUNXI_DRAM_LPDDR3_STOCK=y -+CONFIG_DRAM_CLK=552 -+CONFIG_DRAM_ZQ=3881949 -+CONFIG_MMC_SUNXI_SLOT_EXTRA=2 -+CONFIG_R_I2C_ENABLE=y -+CONFIG_SPL_SPI_SUNXI=y -+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set -+CONFIG_USE_PREBOOT=y -+# CONFIG_SPL_DOS_PARTITION is not set -+# CONFIG_SPL_EFI_PARTITION is not set -+CONFIG_DEFAULT_DEVICE_TREE="sun50i-a64-pinetab" -+CONFIG_OF_LIST="sun50i-a64-pinetab" -+CONFIG_SYS_RELOC_GD_ENV_ADDR=y -+CONFIG_DM_REGULATOR=y -+CONFIG_DM_REGULATOR_FIXED=y -+CONFIG_DM_PWM=y -+CONFIG_PWM_SUNXI=y -+CONFIG_LED=y -+CONFIG_LED_GPIO=y -+CONFIG_USB_EHCI_HCD=y -+CONFIG_USB_OHCI_HCD=y -+CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y --- -2.26.0 diff --git a/sources b/sources index f64b4ca..24f086d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2021.10.tar.bz2) = be5be1c9a54b270307a04177d5577a21c57a02b307bf8b63d0fa2655d1f025c7ce010dca6a1f7f60d4e639c2e6fb6f0a292a2e5d190f1fad478eb12dd786c9da +SHA512 (u-boot-2022.01-rc2.tar.bz2) = 1caaff097270ee205cf63cca0d66c6161ff03d927275dc7f757b39d59a52a21e7d81d5391570e649a196d9ba114536539cef688cdc43690a2e53d321f22fec43 diff --git a/uboot-tools.spec b/uboot-tools.spec index d77e112..b2cb2a9 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -#global candidate rc5 +%global candidate rc2 Name: uboot-tools -Version: 2021.10 -Release: 3%{?candidate:.%{candidate}}%{?dist} +Version: 2022.01 +Release: 0.1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -20,8 +20,6 @@ Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch Patch2: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch Patch3: rpi-fallback-to-max-clock-for-mmc.patch Patch4: rpi-bcm2835_sdhost-firmware-managed-clock.patch -# AllWinner improvements -Patch10: AllWinner-PineTab.patch # TI fixes Patch11: 0001-Fix-BeagleAI-detection.patch # Rockchips improvements @@ -255,6 +253,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Mon Nov 15 2021 Peter Robinson - 2022.01-0.1.rc2 +- Update to 2022.01 RC2 + * Mon Nov 15 2021 Peter Robinson - 2021.10-3 - Fixes for rk3399 devices From c08df485fa1f3244af7c43a53c6c8cc457c84426 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 15 Nov 2021 22:12:48 +0000 Subject: [PATCH 090/271] Update names of shipped docs --- uboot-tools.spec | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index b2cb2a9..80cf5fe 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -227,7 +227,6 @@ cp -p board/solidrun/clearfog/README builds/docs/README.clearfog cp -p board/solidrun/mx6cuboxi/README builds/docs/README.mx6cuboxi cp -p board/sunxi/README.sunxi64 builds/docs/README.sunxi64 cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand -cp -p board/ti/am335x/README builds/docs/README.am335x cp -p board/ti/omap5_uevm/README builds/docs/README.omap5_uevm cp -p board/udoo/README builds/docs/README.udoo cp -p board/wandboard/README builds/docs/README.wandboard @@ -235,9 +234,9 @@ cp -p board/warp/README builds/docs/README.warp cp -p board/warp7/README builds/docs/README.warp7 %files -%doc README doc/README.kwbimage doc/README.distro doc/README.gpt +%doc README doc/README.kwbimage doc/develop/distro.rst doc/README.gpt %doc doc/README.odroid doc/README.rockchip doc/develop/uefi doc/uImage.FIT doc/arch/arm64.rst -%doc builds/docs/* doc/board/amlogic/ doc/board/rockchip/ +%doc builds/docs/* doc/board/amlogic/ doc/board/rockchip/ doc/board/ti/am335x_evm.rst %{_bindir}/* %{_mandir}/man1/mkimage.1* %dir %{_datadir}/uboot/ From d98cfa77d6c02521b70378e27f2baff27bcfad6c Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 20 Dec 2021 19:55:40 +0000 Subject: [PATCH 091/271] 2022.01 RC4 --- 0001-Fix-BeagleAI-detection.patch | 29 ----- 0001-enable-hs400-and-sdma-support.patch | 158 ----------------------- sources | 2 +- uboot-tools.spec | 17 +-- 4 files changed, 10 insertions(+), 196 deletions(-) delete mode 100644 0001-Fix-BeagleAI-detection.patch delete mode 100644 0001-enable-hs400-and-sdma-support.patch diff --git a/0001-Fix-BeagleAI-detection.patch b/0001-Fix-BeagleAI-detection.patch deleted file mode 100644 index dfd96cc..0000000 --- a/0001-Fix-BeagleAI-detection.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 1849ef423238aeb1732eb3b8e67eb46bc21401c7 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Thu, 10 Sep 2020 14:24:12 +0100 -Subject: [PATCH] Fix BeagleAI detection - -Signed-off-by: Peter Robinson ---- - board/ti/am57xx/board.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/board/ti/am57xx/board.c b/board/ti/am57xx/board.c -index 7809875510..3232812a97 100644 ---- a/board/ti/am57xx/board.c -+++ b/board/ti/am57xx/board.c -@@ -527,8 +527,10 @@ void do_board_detect(void) - - rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS, - CONFIG_EEPROM_CHIP_ADDRESS); -- if (rc) -+ if (rc) { - printf("ti_i2c_eeprom_init failed %d\n", rc); -+ ti_i2c_eeprom_am_set("BBONE-AI", "A"); -+ } - - #ifdef CONFIG_SUPPORT_EMMC_BOOT - rc = board_bootmode_has_emmc(); --- -2.26.2 - diff --git a/0001-enable-hs400-and-sdma-support.patch b/0001-enable-hs400-and-sdma-support.patch deleted file mode 100644 index 782366f..0000000 --- a/0001-enable-hs400-and-sdma-support.patch +++ /dev/null @@ -1,158 +0,0 @@ -From 42aa88db46fa88db52bbb5a96fc0eaebe695110e Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Mon, 30 Aug 2021 18:20:39 +0100 -Subject: [PATCH] enable hs400 and sdma support - -Signed-off-by: Peter Robinson ---- - configs/firefly-rk3399_defconfig | 2 ++ - configs/nanopc-t4-rk3399_defconfig | 2 ++ - configs/nanopi-m4-2gb-rk3399_defconfig | 2 ++ - configs/nanopi-m4-rk3399_defconfig | 2 ++ - configs/nanopi-m4b-rk3399_defconfig | 2 ++ - configs/nanopi-neo4-rk3399_defconfig | 2 ++ - configs/nanopi-r4s-rk3399_defconfig | 2 ++ - configs/pinebook-pro-rk3399_defconfig | 1 + - configs/rock960-rk3399_defconfig | 1 + - configs/rockpro64-rk3399_defconfig | 2 ++ - 10 files changed, 18 insertions(+) - -diff --git a/configs/firefly-rk3399_defconfig b/configs/firefly-rk3399_defconfig -index 2ca2ac35e4..84ee690a2d 100644 ---- a/configs/firefly-rk3399_defconfig -+++ b/configs/firefly-rk3399_defconfig -@@ -33,7 +33,9 @@ CONFIG_MISC=y - CONFIG_ROCKCHIP_EFUSE=y - CONFIG_MMC_DW=y - CONFIG_MMC_DW_ROCKCHIP=y -+CONFIG_MMC_HS400_SUPPORT=y - CONFIG_MMC_SDHCI=y -+CONFIG_MMC_SDHCI_SDMA=y - CONFIG_MMC_SDHCI_ROCKCHIP=y - CONFIG_SF_DEFAULT_SPEED=20000000 - CONFIG_DM_ETH=y -diff --git a/configs/nanopc-t4-rk3399_defconfig b/configs/nanopc-t4-rk3399_defconfig -index a94f428def..722377803e 100644 ---- a/configs/nanopc-t4-rk3399_defconfig -+++ b/configs/nanopc-t4-rk3399_defconfig -@@ -30,7 +30,9 @@ CONFIG_ROCKCHIP_GPIO=y - CONFIG_SYS_I2C_ROCKCHIP=y - CONFIG_MMC_DW=y - CONFIG_MMC_DW_ROCKCHIP=y -+CONFIG_MMC_HS400_SUPPORT=y - CONFIG_MMC_SDHCI=y -+CONFIG_MMC_SDHCI_SDMA=y - CONFIG_MMC_SDHCI_ROCKCHIP=y - CONFIG_DM_ETH=y - CONFIG_ETH_DESIGNWARE=y -diff --git a/configs/nanopi-m4-2gb-rk3399_defconfig b/configs/nanopi-m4-2gb-rk3399_defconfig -index c9833fdb85..384d7da80c 100644 ---- a/configs/nanopi-m4-2gb-rk3399_defconfig -+++ b/configs/nanopi-m4-2gb-rk3399_defconfig -@@ -29,7 +29,9 @@ CONFIG_ROCKCHIP_GPIO=y - CONFIG_SYS_I2C_ROCKCHIP=y - CONFIG_MMC_DW=y - CONFIG_MMC_DW_ROCKCHIP=y -+CONFIG_MMC_HS400_SUPPORT=y - CONFIG_MMC_SDHCI=y -+CONFIG_MMC_SDHCI_SDMA=y - CONFIG_MMC_SDHCI_ROCKCHIP=y - CONFIG_DM_ETH=y - CONFIG_ETH_DESIGNWARE=y -diff --git a/configs/nanopi-m4-rk3399_defconfig b/configs/nanopi-m4-rk3399_defconfig -index 2b2fcac366..b6b8ca8d3a 100644 ---- a/configs/nanopi-m4-rk3399_defconfig -+++ b/configs/nanopi-m4-rk3399_defconfig -@@ -29,7 +29,9 @@ CONFIG_ROCKCHIP_GPIO=y - CONFIG_SYS_I2C_ROCKCHIP=y - CONFIG_MMC_DW=y - CONFIG_MMC_DW_ROCKCHIP=y -+CONFIG_MMC_HS400_SUPPORT=y - CONFIG_MMC_SDHCI=y -+CONFIG_MMC_SDHCI_SDMA=y - CONFIG_MMC_SDHCI_ROCKCHIP=y - CONFIG_DM_ETH=y - CONFIG_ETH_DESIGNWARE=y -diff --git a/configs/nanopi-m4b-rk3399_defconfig b/configs/nanopi-m4b-rk3399_defconfig -index 6d3afe1b63..3f83877e0a 100644 ---- a/configs/nanopi-m4b-rk3399_defconfig -+++ b/configs/nanopi-m4b-rk3399_defconfig -@@ -29,7 +29,9 @@ CONFIG_ROCKCHIP_GPIO=y - CONFIG_SYS_I2C_ROCKCHIP=y - CONFIG_MMC_DW=y - CONFIG_MMC_DW_ROCKCHIP=y -+CONFIG_MMC_HS400_SUPPORT=y - CONFIG_MMC_SDHCI=y -+CONFIG_MMC_SDHCI_SDMA=y - CONFIG_MMC_SDHCI_ROCKCHIP=y - CONFIG_DM_ETH=y - CONFIG_ETH_DESIGNWARE=y -diff --git a/configs/nanopi-neo4-rk3399_defconfig b/configs/nanopi-neo4-rk3399_defconfig -index 1bf5d1d095..6412cb2d7e 100644 ---- a/configs/nanopi-neo4-rk3399_defconfig -+++ b/configs/nanopi-neo4-rk3399_defconfig -@@ -29,7 +29,9 @@ CONFIG_ROCKCHIP_GPIO=y - CONFIG_SYS_I2C_ROCKCHIP=y - CONFIG_MMC_DW=y - CONFIG_MMC_DW_ROCKCHIP=y -+CONFIG_MMC_HS400_SUPPORT=y - CONFIG_MMC_SDHCI=y -+CONFIG_MMC_SDHCI_SDMA=y - CONFIG_MMC_SDHCI_ROCKCHIP=y - CONFIG_DM_ETH=y - CONFIG_ETH_DESIGNWARE=y -diff --git a/configs/nanopi-r4s-rk3399_defconfig b/configs/nanopi-r4s-rk3399_defconfig -index 351d2eb553..7b527d47fa 100644 ---- a/configs/nanopi-r4s-rk3399_defconfig -+++ b/configs/nanopi-r4s-rk3399_defconfig -@@ -29,7 +29,9 @@ CONFIG_ROCKCHIP_GPIO=y - CONFIG_SYS_I2C_ROCKCHIP=y - CONFIG_MMC_DW=y - CONFIG_MMC_DW_ROCKCHIP=y -+CONFIG_MMC_HS400_SUPPORT=y - CONFIG_MMC_SDHCI=y -+CONFIG_MMC_SDHCI_SDMA=y - CONFIG_MMC_SDHCI_ROCKCHIP=y - CONFIG_DM_ETH=y - CONFIG_ETH_DESIGNWARE=y -diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig -index f97d5e872b..b0e68c9591 100644 ---- a/configs/pinebook-pro-rk3399_defconfig -+++ b/configs/pinebook-pro-rk3399_defconfig -@@ -46,6 +46,7 @@ CONFIG_MISC=y - CONFIG_ROCKCHIP_EFUSE=y - CONFIG_MMC_DW=y - CONFIG_MMC_DW_ROCKCHIP=y -+CONFIG_MMC_HS400_SUPPORT=y - CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_SDMA=y - CONFIG_MMC_SDHCI_ROCKCHIP=y -diff --git a/configs/rock960-rk3399_defconfig b/configs/rock960-rk3399_defconfig -index 0233e0ea52..624d718f9f 100644 ---- a/configs/rock960-rk3399_defconfig -+++ b/configs/rock960-rk3399_defconfig -@@ -36,6 +36,7 @@ CONFIG_ROCKCHIP_GPIO=y - CONFIG_SYS_I2C_ROCKCHIP=y - CONFIG_MMC_DW=y - CONFIG_MMC_DW_ROCKCHIP=y -+CONFIG_MMC_HS400_SUPPORT=y - CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_SDMA=y - CONFIG_MMC_SDHCI_ROCKCHIP=y -diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig -index ae11a8f5eb..b4e7e9700a 100644 ---- a/configs/rockpro64-rk3399_defconfig -+++ b/configs/rockpro64-rk3399_defconfig -@@ -39,7 +39,9 @@ CONFIG_MISC=y - CONFIG_ROCKCHIP_EFUSE=y - CONFIG_MMC_DW=y - CONFIG_MMC_DW_ROCKCHIP=y -+CONFIG_MMC_HS400_SUPPORT=y - CONFIG_MMC_SDHCI=y -+CONFIG_MMC_SDHCI_SDMA=y - CONFIG_MMC_SDHCI_ROCKCHIP=y - CONFIG_SF_DEFAULT_BUS=1 - CONFIG_SPI_FLASH_GIGADEVICE=y --- -2.31.1 - diff --git a/sources b/sources index 24f086d..b98988f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2022.01-rc2.tar.bz2) = 1caaff097270ee205cf63cca0d66c6161ff03d927275dc7f757b39d59a52a21e7d81d5391570e649a196d9ba114536539cef688cdc43690a2e53d321f22fec43 +SHA512 (u-boot-2022.01-rc4.tar.bz2) = 2b07f52794056926125ca0327999c06939c19c9bbcfa2b3ea6809a2298adee1323f22f142aed57297be07541662f1d909af23393f78d7718ff6963d0552119b7 diff --git a/uboot-tools.spec b/uboot-tools.spec index 80cf5fe..f06fbe0 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -%global candidate rc2 +%global candidate rc4 Name: uboot-tools Version: 2022.01 -Release: 0.1%{?candidate:.%{candidate}}%{?dist} +Release: 0.2%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -15,18 +15,16 @@ Source2: aarch64-boards # Fedoraisms patches # Needed to find DT on boot partition that's not the first partition Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch + # Board fixes and enablement # RPi - uses RPI firmware device tree for HAT support Patch2: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch Patch3: rpi-fallback-to-max-clock-for-mmc.patch Patch4: rpi-bcm2835_sdhost-firmware-managed-clock.patch -# TI fixes -Patch11: 0001-Fix-BeagleAI-detection.patch # Rockchips improvements -Patch12: phy-rockchip-inno-usb2-fix-hang-when-multiple-controllers-exit.patch -Patch13: 0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch -Patch14: 0001-enable-hs400-and-sdma-support.patch -Patch15: dts-rockchip-rk3399-enable-emmc-phy-for-spl.patch +Patch5: phy-rockchip-inno-usb2-fix-hang-when-multiple-controllers-exit.patch +Patch6: dts-rockchip-rk3399-enable-emmc-phy-for-spl.patch +Patch7: 0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch BuildRequires: bc BuildRequires: dtc @@ -252,6 +250,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Mon Dec 20 2021 Peter Robinson - 2022.01-0.2.rc4 +- Update to 2022.01 RC4 + * Mon Nov 15 2021 Peter Robinson - 2022.01-0.1.rc2 - Update to 2022.01 RC2 From 1457c7c78ebb2d23e20d86501c3afb0505019e19 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 5 Jan 2022 15:01:52 +0000 Subject: [PATCH 092/271] fixes for UEFI and improved upstream fix for PHY shutdown lockups --- aarch64-boards | 2 + ...-hang-when-multiple-controllers-exit.patch | 233 -------- uboot-tools.spec | 18 +- ...oll-frequency-to-improve-performance.patch | 178 ++++++ ...k-power-on-and-init-counts-in-uclass.patch | 556 ++++++++++++++++++ 5 files changed, 747 insertions(+), 240 deletions(-) delete mode 100644 phy-rockchip-inno-usb2-fix-hang-when-multiple-controllers-exit.patch create mode 100644 v2-console-usb-kbd-Limit-poll-frequency-to-improve-performance.patch create mode 100644 v3-phy-Track-power-on-and-init-counts-in-uclass.patch diff --git a/aarch64-boards b/aarch64-boards index 9e2fafa..50427ad 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -1,5 +1,6 @@ a64-olinuxino amarula_a64_relic +apple_m1 bananapi_m2_plus_h5 bananapi_m64 beelink_gs1 @@ -35,6 +36,7 @@ nanopi-m4-rk3399 nanopi_neo2 nanopi-neo4-rk3399 nanopi_neo_plus2 +nanopi_r1s_h5 nanopi-r2s-rk3328 nanopi-r4s-rk3399 odroid-c2 diff --git a/phy-rockchip-inno-usb2-fix-hang-when-multiple-controllers-exit.patch b/phy-rockchip-inno-usb2-fix-hang-when-multiple-controllers-exit.patch deleted file mode 100644 index 81f1cdb..0000000 --- a/phy-rockchip-inno-usb2-fix-hang-when-multiple-controllers-exit.patch +++ /dev/null @@ -1,233 +0,0 @@ -From patchwork Tue Apr 6 15:10:59 2021 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Icenowy Zheng -X-Patchwork-Id: 1462876 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Authentication-Results: ozlabs.org; - dkim=fail reason="signature verification failed" (1024-bit key; - unprotected) header.d=mymailcheap.com header.i=@mymailcheap.com - header.a=rsa-sha256 header.s=default header.b=unszVtqT; - dkim=fail reason="signature verification failed" (1024-bit key; - unprotected) header.d=aosc.io header.i=@aosc.io header.a=rsa-sha256 - header.s=default header.b=mWwYCh9A; - dkim-atps=neutral -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 RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by ozlabs.org (Postfix) with ESMTPS id 4FF9wc3GdNz9sW1 - for ; Wed, 7 Apr 2021 01:11:42 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id C1F9C8040A; - Tue, 6 Apr 2021 17:11:32 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=aosc.io -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=fail reason="signature verification failed" (1024-bit key; - unprotected) header.d=mymailcheap.com header.i=@mymailcheap.com - header.b="unszVtqT"; - dkim=fail reason="signature verification failed" (1024-bit key; - unprotected) header.d=aosc.io header.i=@aosc.io header.b="mWwYCh9A"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id E4F22805B4; Tue, 6 Apr 2021 17:11:30 +0200 (CEST) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,SPF_HELO_NONE autolearn=ham - autolearn_force=no version=3.4.2 -Received: from relay3.mymailcheap.com (relay3.mymailcheap.com - [217.182.66.161]) - (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 2FC4A8039D - for ; Tue, 6 Apr 2021 17:11:27 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=aosc.io -Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=icenowy@aosc.io -Received: from filter2.mymailcheap.com (filter2.mymailcheap.com - [91.134.140.82]) - by relay3.mymailcheap.com (Postfix) with ESMTPS id A6AC13ECDF; - Tue, 6 Apr 2021 17:11:26 +0200 (CEST) -Received: from localhost (localhost [127.0.0.1]) - by filter2.mymailcheap.com (Postfix) with ESMTP id 88D512A915; - Tue, 6 Apr 2021 17:11:26 +0200 (CEST) -DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mymailcheap.com; - s=default; t=1617721886; - bh=qb5gt5o7M9qjdJd67A3WHGZp/76w4s4FS6+u1VuEh/o=; - h=From:To:Cc:Subject:Date:From; - b=unszVtqTnO9MGZVbgLH5H0cMo3VfQ+g5377blmOUcrtzMSqNbDD5SM25MUhlTUKiB - hTFq4L53gszBYfRPfh7Z5XgNVERULL5Zx0+WnVjZ7kUIp/wS3IQqxe81ChoFEsLTr8 - 22UB9NN3OSVkuN/jRAzX+lKpugVGBHwOCjZBZukQ= -Received: from filter2.mymailcheap.com ([127.0.0.1]) - by localhost (filter2.mymailcheap.com [127.0.0.1]) (amavisd-new, port 10024) - with ESMTP id V9lVOgo6gApH; Tue, 6 Apr 2021 17:11:25 +0200 (CEST) -Received: from mail20.mymailcheap.com (mail20.mymailcheap.com [51.83.111.147]) - (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by filter2.mymailcheap.com (Postfix) with ESMTPS; - Tue, 6 Apr 2021 17:11:25 +0200 (CEST) -Received: from [213.133.102.83] (ml.mymailcheap.com [213.133.102.83]) - by mail20.mymailcheap.com (Postfix) with ESMTP id C9EA3400B6; - Tue, 6 Apr 2021 15:11:24 +0000 (UTC) -Authentication-Results: mail20.mymailcheap.com; dkim=pass (1024-bit key; - unprotected) header.d=aosc.io header.i=@aosc.io header.b="mWwYCh9A"; - dkim-atps=neutral -AI-Spam-Status: Not processed -Received: from ice-e5v2.lan (unknown [59.41.163.135]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest - SHA256) (No client certificate requested) - by mail20.mymailcheap.com (Postfix) with ESMTPSA id 251F840C16; - Tue, 6 Apr 2021 15:11:10 +0000 (UTC) -DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=aosc.io; s=default; - t=1617721874; bh=qb5gt5o7M9qjdJd67A3WHGZp/76w4s4FS6+u1VuEh/o=; - h=From:To:Cc:Subject:Date:From; - b=mWwYCh9AM8eRWm9hiEqirytotj/G/C1p9r2fd0zUxPhS0UQH+kw6L3RWZnsfmXAYq - HmYFiM3ktIfwevqQw89tOi8c2ktb49iYOyHXkfi8hTZl1dNsJDS94uyzBiHYY+U7x5 - P0aTRRaL5C8ua2c1GedoPx06nrARO/KMEFy39rxI= -From: Icenowy Zheng -To: Simon Glass , Kever Yang , - Frank Wang , - Jagan Teki -Cc: u-boot@lists.denx.de, - Icenowy Zheng -Subject: [PATCH] phy: rockchip: inno-usb2: fix hang when multiple controllers - exit -Date: Tue, 6 Apr 2021 23:10:59 +0800 -Message-Id: <20210406151059.1187379-1-icenowy@aosc.io> -X-Mailer: git-send-email 2.30.2 -MIME-Version: 1.0 -X-Rspamd-Server: mail20.mymailcheap.com -X-Spamd-Result: default: False [4.90 / 20.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; - ARC_NA(0.00)[]; R_DKIM_ALLOW(0.00)[aosc.io:s=default]; - RECEIVED_SPAMHAUS_PBL(0.00)[59.41.163.135:received]; - FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; - R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; - MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[aosc.io]; - BROKEN_CONTENT_TYPE(1.50)[]; R_SPF_SOFTFAIL(0.00)[~all]; - RCPT_COUNT_FIVE(0.00)[6]; ML_SERVERS(-3.10)[213.133.102.83]; - DKIM_TRACE(0.00)[aosc.io:+]; MID_CONTAINS_FROM(1.00)[]; - RCVD_NO_TLS_LAST(0.10)[]; FROM_EQ_ENVFROM(0.00)[]; - MIME_TRACE(0.00)[0:+]; - ASN(0.00)[asn:24940, ipnet:213.133.96.0/19, country:DE]; - RCVD_COUNT_TWO(0.00)[2]; - HFILTER_HELO_BAREIP(3.00)[213.133.102.83,1] -X-Rspamd-Queue-Id: C9EA3400B6 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de -X-Virus-Status: Clean - -The OHCI and EHCI controllers are both bound to the same PHY. They will -both do init and power_on operations when the controller is brought up -and both do power_off and exit when the controller is stopped. However, -the PHY uclass of U-Boot is not as sane as we thought -- they won't -maintain a status mark for PHYs, and thus the functions of the PHYs -could be called for multiple times. Calling init/power_on for multiple -times have no severe problems, however calling power_off/exit for -multiple times have a problem -- the first exit call will stop the PHY -clock, and power_off/exit calls after it still trying to write to PHY -registers. The write operation to PHY registers will fail because clock -is already stopped. - -Adapt the count mechanism from phy-sun4i-usb to both init/exit and -power_on/power_off functions to phy-rockchip-inno-usb2 to fix this -problem. With this stopping USB controllers (manually or before booting -a kernel) will work. - -Signed-off-by: Icenowy Zheng -Fixes: ac97a9ece14e ("phy: rockchip: Add Rockchip USB2PHY driver") ---- - drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 21 +++++++++++++++++++ - 1 file changed, 21 insertions(+) - -diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c -index 62b8ba3a4a..be9cc99d90 100644 ---- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c -+++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c -@@ -62,6 +62,8 @@ struct rockchip_usb2phy { - void *reg_base; - struct clk phyclk; - const struct rockchip_usb2phy_cfg *phy_cfg; -+ int init_count; -+ int power_on_count; - }; - - static inline int property_enable(void *reg_base, -@@ -92,6 +94,10 @@ static int rockchip_usb2phy_power_on(struct phy *phy) - struct rockchip_usb2phy *priv = dev_get_priv(parent); - const struct rockchip_usb2phy_port_cfg *port_cfg = us2phy_get_port(phy); - -+ priv->power_on_count++; -+ if (priv->power_on_count != 1) -+ return 0; -+ - property_enable(priv->reg_base, &port_cfg->phy_sus, false); - - /* waiting for the utmi_clk to become stable */ -@@ -106,6 +112,10 @@ static int rockchip_usb2phy_power_off(struct phy *phy) - struct rockchip_usb2phy *priv = dev_get_priv(parent); - const struct rockchip_usb2phy_port_cfg *port_cfg = us2phy_get_port(phy); - -+ priv->power_on_count--; -+ if (priv->power_on_count != 0) -+ return 0; -+ - property_enable(priv->reg_base, &port_cfg->phy_sus, true); - - return 0; -@@ -118,6 +128,10 @@ static int rockchip_usb2phy_init(struct phy *phy) - const struct rockchip_usb2phy_port_cfg *port_cfg = us2phy_get_port(phy); - int ret; - -+ priv->init_count++; -+ if (priv->init_count != 1) -+ return 0; -+ - ret = clk_enable(&priv->phyclk); - if (ret) { - dev_err(phy->dev, "failed to enable phyclk (ret=%d)\n", ret); -@@ -140,6 +154,10 @@ static int rockchip_usb2phy_exit(struct phy *phy) - struct udevice *parent = dev_get_parent(phy->dev); - struct rockchip_usb2phy *priv = dev_get_priv(parent); - -+ priv->init_count--; -+ if (priv->init_count != 0) -+ return 0; -+ - clk_disable(&priv->phyclk); - - return 0; -@@ -212,6 +230,9 @@ static int rockchip_usb2phy_probe(struct udevice *dev) - return ret; - } - -+ priv->power_on_count = 0; -+ priv->init_count = 0; -+ - return 0; - } - diff --git a/uboot-tools.spec b/uboot-tools.spec index f06fbe0..92d15ee 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -2,7 +2,7 @@ Name: uboot-tools Version: 2022.01 -Release: 0.2%{?candidate:.%{candidate}}%{?dist} +Release: 0.3%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -17,14 +17,15 @@ Source2: aarch64-boards Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch # Board fixes and enablement +Patch2: v2-console-usb-kbd-Limit-poll-frequency-to-improve-performance.patch # RPi - uses RPI firmware device tree for HAT support -Patch2: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch -Patch3: rpi-fallback-to-max-clock-for-mmc.patch -Patch4: rpi-bcm2835_sdhost-firmware-managed-clock.patch +Patch3: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch +Patch4: rpi-fallback-to-max-clock-for-mmc.patch +Patch5: rpi-bcm2835_sdhost-firmware-managed-clock.patch # Rockchips improvements -Patch5: phy-rockchip-inno-usb2-fix-hang-when-multiple-controllers-exit.patch -Patch6: dts-rockchip-rk3399-enable-emmc-phy-for-spl.patch -Patch7: 0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch +Patch6: v3-phy-Track-power-on-and-init-counts-in-uclass.patch +Patch7: dts-rockchip-rk3399-enable-emmc-phy-for-spl.patch +Patch8: 0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch BuildRequires: bc BuildRequires: dtc @@ -250,6 +251,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Wed Jan 05 2022 Peter Robinson - 2022.01-0.3.rc4 +- Upstream fixes for PHY and UEFI + * Mon Dec 20 2021 Peter Robinson - 2022.01-0.2.rc4 - Update to 2022.01 RC4 diff --git a/v2-console-usb-kbd-Limit-poll-frequency-to-improve-performance.patch b/v2-console-usb-kbd-Limit-poll-frequency-to-improve-performance.patch new file mode 100644 index 0000000..5eb366c --- /dev/null +++ b/v2-console-usb-kbd-Limit-poll-frequency-to-improve-performance.patch @@ -0,0 +1,178 @@ +From patchwork Wed Dec 22 22:51:26 2021 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Thomas Watson +X-Patchwork-Id: 1572368 +X-Patchwork-Delegate: marek.vasut@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: bilbo.ozlabs.org; + dkim=pass (2048-bit key; + unprotected) header.d=icloud.com header.i=@icloud.com header.a=rsa-sha256 + header.s=1a1hai header.b=SkTQ1vLj; + dkim-atps=neutral +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) + by bilbo.ozlabs.org (Postfix) with ESMTPS id 4JK8Mc4B31z9s0r + for ; Thu, 23 Dec 2021 10:16:10 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id D051D830C3; + Thu, 23 Dec 2021 00:15:59 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=quarantine dis=none) header.from=icloud.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=icloud.com header.i=@icloud.com header.b="SkTQ1vLj"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 0DA67830F5; Wed, 22 Dec 2021 23:52:26 +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=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, + DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT, + FREEMAIL_FROM,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS autolearn=ham + autolearn_force=no version=3.4.2 +Received: from st43p00im-ztbu10073601.me.com (st43p00im-ztbu10073601.me.com + [17.58.63.184]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 1598D830C2 + for ; Wed, 22 Dec 2021 23:52:23 +0100 (CET) +Authentication-Results: phobos.denx.de; dmarc=pass (p=quarantine dis=none) + header.from=icloud.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=twatson52@icloud.com +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=icloud.com; + s=1a1hai; t=1640213541; + bh=9Gu/RsbBH8Lwy0caxjtXwguQwc3tOXLqzye8cafMd78=; + h=From:To:Subject:Date:Message-Id:MIME-Version; + b=SkTQ1vLjDZUB4S3pQ+QOuMAQs7y78hvdCVG59JmuiBtL/pLL9IskzfDYEEVxmBQ8j + QIbZXSdaHlAH3tL3ajaqL0+IJp7J/yQ5/wpmmTsRMBdk0xcgSGilBCve35DMoKYFu1 + YSaXYI8GDtaBL5R9EGZAW6SekyeIWfyy03PQpawqJpTlqUNZuLdrr9mGRF/q2fbSHd + Fr4qzePCKzk3GsUhdfkh8hEDS4lOGVAPa3K2mGEpK6K/+Gv3rCckgYrV5IAJQ8YpdP + SCmRL3N03P5wkt5WiYasawJW4pcx92J2RXtyikC9fc6p67bGXkUJA+8dOtxlOyBY8E + 8TrKBWY9cvKTw== +Received: from jacobs-p52.memphis.edu + (99-122-90-201.lightspeed.mmphtn.sbcglobal.net [99.122.90.201]) + by st43p00im-ztbu10073601.me.com (Postfix) with ESMTPSA id 283205A0974; + Wed, 22 Dec 2021 22:52:21 +0000 (UTC) +From: Thomas Watson +To: u-boot@lists.denx.de +Cc: Thomas Watson , + Marek Vasut +Subject: [PATCH v2] console: usb: kbd: Limit poll frequency to improve + performance +Date: Wed, 22 Dec 2021 16:51:26 -0600 +Message-Id: <20211222225124.7154-1-twatson52@icloud.com> +X-Mailer: git-send-email 2.31.1 +MIME-Version: 1.0 +X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.425, 18.0.790 + definitions=2021-12-22_02:2021-12-22, + 2021-12-22 signatures=0 +X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 + malwarescore=0 + phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 mlxscore=0 + mlxlogscore=934 adultscore=0 classifier=spam adjust=0 reason=mlx + scancount=1 engine=8.0.1-2009150000 definitions=main-2112220119 +X-Mailman-Approved-At: Thu, 23 Dec 2021 00:15:58 +0100 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.38 +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.2 at phobos.denx.de +X-Virus-Status: Clean + +Using the XHCI driver, the function `usb_kbd_poll_for_event` takes +30-40ms to run. The exact time is dependent on the polling interval the +keyboard requests in its descriptor, and likely cannot be significantly +reduced without major rework to the XHCI driver. + +The U-Boot EFI console service sets a timer to poll the keyboard every 5 +microseconds, and this timer is checked every time a block is read off +disk. The net effect is that, on my system, loading a ~40MiB kernel and +initrd takes about 62 seconds with a slower keyboard and 53 seconds +with a faster one, with the vast majority of the time spent polling the +keyboard. + +To solve this problem, this patch adds a 20ms delay between consecutive +calls to `usb_kbd_poll_for_event`. This is sufficient to reduce the +total loading time to under half a second for both keyboards, and does +not impact the perceived keystroke latency. + +Signed-off-by: Thomas Watson +--- +This revision wraps the comment at 80 characters and also should not +have been corrupted by my e-mail client. + + common/usb_kbd.c | 20 +++++++++++++++----- + 1 file changed, 15 insertions(+), 5 deletions(-) + +diff --git a/common/usb_kbd.c b/common/usb_kbd.c +index afad260d3d..5408c821b4 100644 +--- a/common/usb_kbd.c ++++ b/common/usb_kbd.c +@@ -118,7 +118,7 @@ struct usb_kbd_pdata { + extern int __maybe_unused net_busy_flag; + + /* The period of time between two calls of usb_kbd_testc(). */ +-static unsigned long __maybe_unused kbd_testc_tms; ++static unsigned long kbd_testc_tms; + + /* Puts character in the queue and sets up the in and out pointer. */ + static void usb_kbd_put_queue(struct usb_kbd_pdata *data, u8 c) +@@ -394,21 +394,31 @@ static int usb_kbd_testc(struct stdio_dev *sdev) + struct usb_device *usb_kbd_dev; + struct usb_kbd_pdata *data; + ++ /* ++ * Polling the keyboard for an event can take dozens of milliseconds. ++ * Add a delay between polls to avoid blocking activity which polls ++ * rapidly, like the UEFI console timer. ++ */ ++ unsigned long poll_delay = CONFIG_SYS_HZ / 50; ++ + #ifdef CONFIG_CMD_NET + /* + * If net_busy_flag is 1, NET transfer is running, + * then we check key-pressed every second (first check may be + * less than 1 second) to improve TFTP booting performance. + */ +- if (net_busy_flag && (get_timer(kbd_testc_tms) < CONFIG_SYS_HZ)) +- return 0; +- kbd_testc_tms = get_timer(0); ++ if (net_busy_flag) ++ poll_delay = CONFIG_SYS_HZ; + #endif ++ + dev = stdio_get_by_name(sdev->name); + usb_kbd_dev = (struct usb_device *)dev->priv; + data = usb_kbd_dev->privptr; + +- usb_kbd_poll_for_event(usb_kbd_dev); ++ if (get_timer(kbd_testc_tms) >= poll_delay) { ++ usb_kbd_poll_for_event(usb_kbd_dev); ++ kbd_testc_tms = get_timer(0); ++ } + + return !(data->usb_in_pointer == data->usb_out_pointer); + } diff --git a/v3-phy-Track-power-on-and-init-counts-in-uclass.patch b/v3-phy-Track-power-on-and-init-counts-in-uclass.patch new file mode 100644 index 0000000..d6cc31d --- /dev/null +++ b/v3-phy-Track-power-on-and-init-counts-in-uclass.patch @@ -0,0 +1,556 @@ +From patchwork Thu Dec 30 19:36:51 2021 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Alper Nebi Yasak +X-Patchwork-Id: 1574229 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: bilbo.ozlabs.org; + dkim=pass (2048-bit key; + unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 + header.s=20210112 header.b=cK81Bg2I; + dkim-atps=neutral +Authentication-Results: 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=) +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 RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) + by bilbo.ozlabs.org (Postfix) with ESMTPS id 4JPz7X0bFyz9s0r + for ; Fri, 31 Dec 2021 06:37:26 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 0F0B2804C8; + Thu, 30 Dec 2021 20:37:18 +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="cK81Bg2I"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id AEDBD811BB; Thu, 30 Dec 2021 20:37:16 +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,SPF_HELO_NONE, + SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com + [IPv6:2a00:1450:4864:20::52d]) + (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 DFF2E81184 + for ; Thu, 30 Dec 2021 20:37:12 +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=alpernebiyasak@gmail.com +Received: by mail-ed1-x52d.google.com with SMTP id x15so101755439edv.1 + for ; Thu, 30 Dec 2021 11:37:12 -0800 (PST) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; + h=from:to:cc:subject:date:message-id:mime-version + :content-transfer-encoding; + bh=o95ZU+qnz+og5Dat/q/VTF9YYww8PBCzA+ABZSXXolA=; + b=cK81Bg2IxzE3JOMrYmY71vV4AwQM5u4QfMs8UyJlfcZ1/+ES5KYKqOqFfpKFnoHmhj + dExR4ZG55QcIoQvX2QjSsh5m4oqpvqaJRCHmG8MNFscusyVvJvZidSC4A6MsKFm/xDhO + 6trpXrffdaK4mrMLrlpNwtX4zvGFrQ8BfwsRN6vkYzissuXrMEHMB8gnY2z9FMvnQepB + suI6C2oVprB/tyo+iFw6q9vnxnFxbNMaU6Kbevqekv1lG4k2bAKTTcgLTUETQ8fbYtPt + 8f1NCTBCNS2fRO0fx1tGhK9Ymw8hLuO8f0Bzrj+ZixtmYiR9QRbZU/OYM/dvO0SVCQAo + 6/cA== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20210112; + h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version + :content-transfer-encoding; + bh=o95ZU+qnz+og5Dat/q/VTF9YYww8PBCzA+ABZSXXolA=; + b=2fadn4WWHwuQAEwrV9KPDpx5of4g6aU2eu41AiBB7973C1mGKZc9wITb6nQTG1VesX + 2N/LdQdgK6TKFXUcJnujd8Kh2+aTbmxK5aa4CT48DOc+FjvNWln6+GW3Cu2NYVuM1P+P + AC8aeVMpezmVLZMnUFgc46wf/9vd/U0SG6I5Iv3/89f4IjiajTPgp2yZZSSBPmK0QQoJ + y+w0KYKeICH1Q/IiYUvQjgEvWY3DdK6si2QT+UO9I0xo+gkK3CwaEpVIVQ6HC75FEPLZ + HRLoHTUYGCu30AZsXToNOOR/eX5cjyzON64fUyBqO69BiI43Hh9x8usz+VdI8B2LcOT+ + 7WuQ== +X-Gm-Message-State: AOAM533kWmvGofl0Ku1us2MhhVDF3yCz3i6FyVMhb7qhAA3dYLiAjW43 + WXFRC/b1oHVMXZDbmQz2s6c0KYDb8KI= +X-Google-Smtp-Source: + ABdhPJwyxnfOXQuo28I9zKzDtG6KUXF845MW0EPlPCt/upF5MoMLbHxEazYxf+uas6Ce8af3fcfE5g== +X-Received: by 2002:a50:d74e:: with SMTP id + i14mr31016125edj.243.1640893032437; + Thu, 30 Dec 2021 11:37:12 -0800 (PST) +Received: from localhost.localdomain ([178.233.26.119]) + by smtp.gmail.com with ESMTPSA id y13sm9836432edq.77.2021.12.30.11.37.09 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Thu, 30 Dec 2021 11:37:11 -0800 (PST) +From: Alper Nebi Yasak +To: u-boot@lists.denx.de +Cc: Frank Wang , + Andre Przywara , Tom Rini , + Simon Glass , Neil Armstrong , + Grant Likely , + Joe Hershberger , + Peter Robinson , + Jagan Teki , + Patrick Delaunay , + Grant Likely , Icenowy Zheng , + Alper Nebi Yasak +Subject: [PATCH v3] phy: Track power-on and init counts in uclass +Date: Thu, 30 Dec 2021 22:36:51 +0300 +Message-Id: <20211230193652.33514-1-alpernebiyasak@gmail.com> +X-Mailer: git-send-email 2.34.1 +MIME-Version: 1.0 +X-BeenThere: u-boot@lists.denx.de +X-Mailman-Version: 2.1.38 +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.2 at phobos.denx.de +X-Virus-Status: Clean + +On boards using the RK3399 SoC, the USB OHCI and EHCI controllers share +the same PHY device instance. While these controllers are being stopped +they both attempt to power-off and deinitialize it, but trying to +power-off the deinitialized PHY device results in a hang. This usually +happens just before booting an OS, and can be explicitly triggered by +running "usb start; usb stop" in the U-Boot shell. + +Implement a uclass-wide counting mechanism for PHY initialization and +power state change requests, so that we don't power-off/deinitialize a +PHY instance until all of its users want it done. The Allwinner A10 USB +PHY driver does this counting in-driver, remove those parts in favour of +this in-uclass implementation. + +The sandbox PHY operations test needs some changes since the uclass will +no longer call into the drivers for actions matching its tracked state +(e.g. powering-off a powered-off PHY). Update that test, and add a new +one which simulates multiple users of a single PHY. + +The major complication here is that PHY handles aren't deduplicated per +instance, so the obvious idea of putting the counts in the PHY handles +don't immediately work. It seems possible to bind a child udevice per +PHY instance to the PHY provider and deduplicate the handles in each +child's uclass-private areas, like in the CLK framework. An alternative +approach could be to use those bound child udevices themselves as the +PHY handles. Instead, to avoid the architectural changes those would +require, this patch solves things by dynamically allocating a list of +structs (one per instance) in the provider's uclass-private area. + +Signed-off-by: Alper Nebi Yasak +Reviewed-by: Simon Glass +--- + +Changes in v3: +- Add tag: "Reviewed-by: Simon Glass " +- Add comment for phy_counts struct + +v2: https://patchwork.ozlabs.org/project/uboot/patch/20211224130549.20276-1-alpernebiyasak@gmail.com/ + +Changes in v2: +- Rename {phy_,}id_priv -> {phy_,}counts +- Split phy_get_uclass_priv -> phy_{alloc,get}_counts +- Allocate counts (or return error) in generic_phy_get_by_*() +- Remove now-unnecessary null checks for counts of valid phy handles + +v1: https://patchwork.ozlabs.org/project/uboot/patch/20211210200124.19226-1-alpernebiyasak@gmail.com/ + + drivers/phy/allwinner/phy-sun4i-usb.c | 9 -- + drivers/phy/phy-uclass.c | 137 ++++++++++++++++++++++++++ + test/dm/phy.c | 83 +++++++++++++++- + 3 files changed, 215 insertions(+), 14 deletions(-) + +diff --git a/drivers/phy/allwinner/phy-sun4i-usb.c b/drivers/phy/allwinner/phy-sun4i-usb.c +index ab2a5d17fcff..86c589a65fd3 100644 +--- a/drivers/phy/allwinner/phy-sun4i-usb.c ++++ b/drivers/phy/allwinner/phy-sun4i-usb.c +@@ -125,7 +125,6 @@ struct sun4i_usb_phy_info { + + struct sun4i_usb_phy_plat { + void __iomem *pmu; +- int power_on_count; + int gpio_vbus; + int gpio_vbus_det; + int gpio_id_det; +@@ -225,10 +224,6 @@ static int sun4i_usb_phy_power_on(struct phy *phy) + initial_usb_scan_delay = 0; + } + +- usb_phy->power_on_count++; +- if (usb_phy->power_on_count != 1) +- return 0; +- + if (usb_phy->gpio_vbus >= 0) + gpio_set_value(usb_phy->gpio_vbus, SUNXI_GPIO_PULL_UP); + +@@ -240,10 +235,6 @@ static int sun4i_usb_phy_power_off(struct phy *phy) + struct sun4i_usb_phy_data *data = dev_get_priv(phy->dev); + struct sun4i_usb_phy_plat *usb_phy = &data->usb_phy[phy->id]; + +- usb_phy->power_on_count--; +- if (usb_phy->power_on_count != 0) +- return 0; +- + if (usb_phy->gpio_vbus >= 0) + gpio_set_value(usb_phy->gpio_vbus, SUNXI_GPIO_PULL_DISABLE); + +diff --git a/drivers/phy/phy-uclass.c b/drivers/phy/phy-uclass.c +index 59683a080cd7..cec46c2c4103 100644 +--- a/drivers/phy/phy-uclass.c ++++ b/drivers/phy/phy-uclass.c +@@ -11,12 +11,96 @@ + #include + #include + #include ++#include ++ ++/** ++ * struct phy_counts - Init and power-on counts of a single PHY port ++ * ++ * This structure is used to keep track of PHY initialization and power ++ * state change requests, so that we don't power off and deinitialize a ++ * PHY instance until all of its users want it done. Otherwise, multiple ++ * consumers using the same PHY port can cause problems (e.g. one might ++ * call power_off() after another's exit() and hang indefinitely). ++ * ++ * @id: The PHY ID within a PHY provider ++ * @power_on_count: Times generic_phy_power_on() was called for this ID ++ * without a matching generic_phy_power_off() afterwards ++ * @init_count: Times generic_phy_init() was called for this ID ++ * without a matching generic_phy_exit() afterwards ++ * @list: Handle for a linked list of these structures corresponding to ++ * ports of the same PHY provider ++ */ ++struct phy_counts { ++ unsigned long id; ++ int power_on_count; ++ int init_count; ++ struct list_head list; ++}; + + static inline struct phy_ops *phy_dev_ops(struct udevice *dev) + { + return (struct phy_ops *)dev->driver->ops; + } + ++static struct phy_counts *phy_get_counts(struct phy *phy) ++{ ++ struct list_head *uc_priv; ++ struct phy_counts *counts; ++ ++ if (!generic_phy_valid(phy)) ++ return NULL; ++ ++ uc_priv = dev_get_uclass_priv(phy->dev); ++ list_for_each_entry(counts, uc_priv, list) ++ if (counts->id == phy->id) ++ return counts; ++ ++ return NULL; ++} ++ ++static int phy_alloc_counts(struct phy *phy) ++{ ++ struct list_head *uc_priv; ++ struct phy_counts *counts; ++ ++ if (!generic_phy_valid(phy)) ++ return 0; ++ if (phy_get_counts(phy)) ++ return 0; ++ ++ uc_priv = dev_get_uclass_priv(phy->dev); ++ counts = kzalloc(sizeof(*counts), GFP_KERNEL); ++ if (!counts) ++ return -ENOMEM; ++ ++ counts->id = phy->id; ++ counts->power_on_count = 0; ++ counts->init_count = 0; ++ list_add(&counts->list, uc_priv); ++ ++ return 0; ++} ++ ++static int phy_uclass_pre_probe(struct udevice *dev) ++{ ++ struct list_head *uc_priv = dev_get_uclass_priv(dev); ++ ++ INIT_LIST_HEAD(uc_priv); ++ ++ return 0; ++} ++ ++static int phy_uclass_pre_remove(struct udevice *dev) ++{ ++ struct list_head *uc_priv = dev_get_uclass_priv(dev); ++ struct phy_counts *counts, *next; ++ ++ list_for_each_entry_safe(counts, next, uc_priv, list) ++ kfree(counts); ++ ++ return 0; ++} ++ + static int generic_phy_xlate_offs_flags(struct phy *phy, + struct ofnode_phandle_args *args) + { +@@ -88,6 +172,12 @@ int generic_phy_get_by_index_nodev(ofnode node, int index, struct phy *phy) + goto err; + } + ++ ret = phy_alloc_counts(phy); ++ if (ret) { ++ debug("phy_alloc_counts() failed: %d\n", ret); ++ goto err; ++ } ++ + return 0; + + err: +@@ -118,6 +208,7 @@ int generic_phy_get_by_name(struct udevice *dev, const char *phy_name, + + int generic_phy_init(struct phy *phy) + { ++ struct phy_counts *counts; + struct phy_ops const *ops; + int ret; + +@@ -126,10 +217,19 @@ int generic_phy_init(struct phy *phy) + ops = phy_dev_ops(phy->dev); + if (!ops->init) + return 0; ++ ++ counts = phy_get_counts(phy); ++ if (counts->init_count > 0) { ++ counts->init_count++; ++ return 0; ++ } ++ + ret = ops->init(phy); + if (ret) + dev_err(phy->dev, "PHY: Failed to init %s: %d.\n", + phy->dev->name, ret); ++ else ++ counts->init_count = 1; + + return ret; + } +@@ -154,6 +254,7 @@ int generic_phy_reset(struct phy *phy) + + int generic_phy_exit(struct phy *phy) + { ++ struct phy_counts *counts; + struct phy_ops const *ops; + int ret; + +@@ -162,16 +263,28 @@ int generic_phy_exit(struct phy *phy) + ops = phy_dev_ops(phy->dev); + if (!ops->exit) + return 0; ++ ++ counts = phy_get_counts(phy); ++ if (counts->init_count == 0) ++ return 0; ++ if (counts->init_count > 1) { ++ counts->init_count--; ++ return 0; ++ } ++ + ret = ops->exit(phy); + if (ret) + dev_err(phy->dev, "PHY: Failed to exit %s: %d.\n", + phy->dev->name, ret); ++ else ++ counts->init_count = 0; + + return ret; + } + + int generic_phy_power_on(struct phy *phy) + { ++ struct phy_counts *counts; + struct phy_ops const *ops; + int ret; + +@@ -180,16 +293,26 @@ int generic_phy_power_on(struct phy *phy) + ops = phy_dev_ops(phy->dev); + if (!ops->power_on) + return 0; ++ ++ counts = phy_get_counts(phy); ++ if (counts->power_on_count > 0) { ++ counts->power_on_count++; ++ return 0; ++ } ++ + ret = ops->power_on(phy); + if (ret) + dev_err(phy->dev, "PHY: Failed to power on %s: %d.\n", + phy->dev->name, ret); ++ else ++ counts->power_on_count = 1; + + return ret; + } + + int generic_phy_power_off(struct phy *phy) + { ++ struct phy_counts *counts; + struct phy_ops const *ops; + int ret; + +@@ -198,10 +321,21 @@ int generic_phy_power_off(struct phy *phy) + ops = phy_dev_ops(phy->dev); + if (!ops->power_off) + return 0; ++ ++ counts = phy_get_counts(phy); ++ if (counts->power_on_count == 0) ++ return 0; ++ if (counts->power_on_count > 1) { ++ counts->power_on_count--; ++ return 0; ++ } ++ + ret = ops->power_off(phy); + if (ret) + dev_err(phy->dev, "PHY: Failed to power off %s: %d.\n", + phy->dev->name, ret); ++ else ++ counts->power_on_count = 0; + + return ret; + } +@@ -316,4 +450,7 @@ int generic_phy_power_off_bulk(struct phy_bulk *bulk) + UCLASS_DRIVER(phy) = { + .id = UCLASS_PHY, + .name = "phy", ++ .pre_probe = phy_uclass_pre_probe, ++ .pre_remove = phy_uclass_pre_remove, ++ .per_device_auto = sizeof(struct list_head), + }; +diff --git a/test/dm/phy.c b/test/dm/phy.c +index ecbd47bf12fd..df4c73fc701f 100644 +--- a/test/dm/phy.c ++++ b/test/dm/phy.c +@@ -79,12 +79,15 @@ static int dm_test_phy_ops(struct unit_test_state *uts) + ut_assertok(generic_phy_power_off(&phy1)); + + /* +- * test operations after exit(). +- * The sandbox phy driver does not allow it. ++ * Test power_on() failure after exit(). ++ * The sandbox phy driver does not allow power-on/off after ++ * exit, but the uclass counts power-on/init calls and skips ++ * calling the driver's ops when e.g. powering off an already ++ * powered-off phy. + */ + ut_assertok(generic_phy_exit(&phy1)); + ut_assert(generic_phy_power_on(&phy1) != 0); +- ut_assert(generic_phy_power_off(&phy1) != 0); ++ ut_assertok(generic_phy_power_off(&phy1)); + + /* + * test normal operations again (after re-init) +@@ -99,6 +102,17 @@ static int dm_test_phy_ops(struct unit_test_state *uts) + */ + ut_assertok(generic_phy_reset(&phy1)); + ++ /* ++ * Test power_off() failure after exit(). ++ * For this we need to call exit() while the phy is powered-on, ++ * so that the uclass actually calls the driver's power-off() ++ * and reports the resulting failure. ++ */ ++ ut_assertok(generic_phy_power_on(&phy1)); ++ ut_assertok(generic_phy_exit(&phy1)); ++ ut_assert(generic_phy_power_off(&phy1) != 0); ++ ut_assertok(generic_phy_power_on(&phy1)); ++ + /* PHY2 has a known problem with power off */ + ut_assertok(generic_phy_init(&phy2)); + ut_assertok(generic_phy_power_on(&phy2)); +@@ -106,8 +120,8 @@ static int dm_test_phy_ops(struct unit_test_state *uts) + + /* PHY3 has a known problem with power off and power on */ + ut_assertok(generic_phy_init(&phy3)); +- ut_asserteq(-EIO, generic_phy_power_off(&phy3)); +- ut_asserteq(-EIO, generic_phy_power_off(&phy3)); ++ ut_asserteq(-EIO, generic_phy_power_on(&phy3)); ++ ut_assertok(generic_phy_power_off(&phy3)); + + return 0; + } +@@ -145,3 +159,62 @@ static int dm_test_phy_bulk(struct unit_test_state *uts) + return 0; + } + DM_TEST(dm_test_phy_bulk, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); ++ ++static int dm_test_phy_multi_exit(struct unit_test_state *uts) ++{ ++ struct phy phy1_method1; ++ struct phy phy1_method2; ++ struct phy phy1_method3; ++ struct udevice *parent; ++ ++ /* Get the same phy instance in 3 different ways. */ ++ ut_assertok(uclass_get_device_by_name(UCLASS_SIMPLE_BUS, ++ "gen_phy_user", &parent)); ++ ut_assertok(generic_phy_get_by_name(parent, "phy1", &phy1_method1)); ++ ut_asserteq(0, phy1_method1.id); ++ ut_assertok(generic_phy_get_by_name(parent, "phy1", &phy1_method2)); ++ ut_asserteq(0, phy1_method2.id); ++ ut_asserteq_ptr(phy1_method1.dev, phy1_method1.dev); ++ ++ ut_assertok(uclass_get_device_by_name(UCLASS_SIMPLE_BUS, ++ "gen_phy_user1", &parent)); ++ ut_assertok(generic_phy_get_by_name(parent, "phy1", &phy1_method3)); ++ ut_asserteq(0, phy1_method3.id); ++ ut_asserteq_ptr(phy1_method1.dev, phy1_method3.dev); ++ ++ /* ++ * Test using the same PHY from different handles. ++ * In non-test code these could be in different drivers. ++ */ ++ ++ /* ++ * These must only call the driver's ops at the first init() ++ * and power_on(). ++ */ ++ ut_assertok(generic_phy_init(&phy1_method1)); ++ ut_assertok(generic_phy_init(&phy1_method2)); ++ ut_assertok(generic_phy_power_on(&phy1_method1)); ++ ut_assertok(generic_phy_power_on(&phy1_method2)); ++ ut_assertok(generic_phy_init(&phy1_method3)); ++ ut_assertok(generic_phy_power_on(&phy1_method3)); ++ ++ /* ++ * These must not call the driver's ops as other handles still ++ * want the PHY powered-on and initialized. ++ */ ++ ut_assertok(generic_phy_power_off(&phy1_method3)); ++ ut_assertok(generic_phy_exit(&phy1_method3)); ++ ++ /* ++ * We would get an error here if the generic_phy_exit() above ++ * actually called the driver's exit(), as the sandbox driver ++ * doesn't allow power-off() after exit(). ++ */ ++ ut_assertok(generic_phy_power_off(&phy1_method1)); ++ ut_assertok(generic_phy_power_off(&phy1_method2)); ++ ut_assertok(generic_phy_exit(&phy1_method1)); ++ ut_assertok(generic_phy_exit(&phy1_method2)); ++ ++ return 0; ++} ++DM_TEST(dm_test_phy_multi_exit, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); From cc4e21b64cc58ab75818fba7cb84051d7122e084 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 11 Jan 2022 10:04:15 +0000 Subject: [PATCH 093/271] 2022.01 --- ...to-DM-for-REGUALTOR-PMIC-I2C-drivers.patch | 244 ++++++++++++++++++ uboot-tools.spec | 8 +- 2 files changed, 250 insertions(+), 2 deletions(-) create mode 100644 0001-udoo_neo-Move-to-DM-for-REGUALTOR-PMIC-I2C-drivers.patch diff --git a/0001-udoo_neo-Move-to-DM-for-REGUALTOR-PMIC-I2C-drivers.patch b/0001-udoo_neo-Move-to-DM-for-REGUALTOR-PMIC-I2C-drivers.patch new file mode 100644 index 0000000..0f762d9 --- /dev/null +++ b/0001-udoo_neo-Move-to-DM-for-REGUALTOR-PMIC-I2C-drivers.patch @@ -0,0 +1,244 @@ +From 53f3d6e9219a36f375e27150b8ec1088624f1aa0 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Tue, 21 Dec 2021 17:25:35 +0000 +Subject: [PATCH] udoo_neo: Move to DM for REGUALTOR/PMIC/I2C drivers + +This moves over the PMIC power init to DM and the associated i2c and +regulator bits. + +Signed-off-by: Peter Robinson +--- + board/udoo/neo/neo.c | 139 +++---------------------------------- + configs/udoo_neo_defconfig | 10 +-- + include/configs/udoo_neo.h | 5 -- + 3 files changed, 15 insertions(+), 139 deletions(-) + +diff --git a/board/udoo/neo/neo.c b/board/udoo/neo/neo.c +index 5e40583ab4..9e2a66996c 100644 +--- a/board/udoo/neo/neo.c ++++ b/board/udoo/neo/neo.c +@@ -51,11 +51,6 @@ enum { + PAD_CTL_PUS_22K_UP | PAD_CTL_SPEED_LOW | \ + PAD_CTL_DSE_80ohm | PAD_CTL_SRE_FAST | PAD_CTL_HYS) + +-#define I2C_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE | \ +- PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED | \ +- PAD_CTL_DSE_40ohm | PAD_CTL_HYS | \ +- PAD_CTL_ODE) +- + #define ENET_PAD_CTRL (PAD_CTL_PUS_100K_UP | PAD_CTL_PUE | \ + PAD_CTL_SPEED_MED | \ + PAD_CTL_DSE_40ohm | PAD_CTL_SRE_FAST) +@@ -83,135 +78,25 @@ int dram_init(void) + return 0; + } + +-#ifdef CONFIG_SYS_I2C_MXC +-#define PC MUX_PAD_CTRL(I2C_PAD_CTRL) +-/* I2C1 for PMIC */ +-static struct i2c_pads_info i2c_pad_info1 = { +- .scl = { +- .i2c_mode = MX6_PAD_GPIO1_IO00__I2C1_SCL | PC, +- .gpio_mode = MX6_PAD_GPIO1_IO00__GPIO1_IO_0 | PC, +- .gp = IMX_GPIO_NR(1, 0), +- }, +- .sda = { +- .i2c_mode = MX6_PAD_GPIO1_IO01__I2C1_SDA | PC, +- .gpio_mode = MX6_PAD_GPIO1_IO01__GPIO1_IO_1 | PC, +- .gp = IMX_GPIO_NR(1, 1), +- }, +-}; +-#endif +- +-#if CONFIG_IS_ENABLED(POWER_LEGACY) + int power_init_board(void) + { +- struct pmic *p; +- int ret; +- unsigned int reg, rev_id; +- +- ret = power_pfuze3000_init(PFUZE3000_I2C_BUS); +- if (ret) +- return ret; +- +- p = pmic_get("PFUZE3000"); +- ret = pmic_probe(p); +- if (ret) +- return ret; ++ struct udevice *dev; ++ int ret, dev_id, rev_id; + +- pmic_reg_read(p, PFUZE3000_DEVICEID, ®); +- pmic_reg_read(p, PFUZE3000_REVID, &rev_id); +- printf("PMIC: PFUZE3000 DEV_ID=0x%x REV_ID=0x%x\n", reg, rev_id); +- +- /* disable Low Power Mode during standby mode */ +- pmic_reg_read(p, PFUZE3000_LDOGCTL, ®); +- reg |= 0x1; +- ret = pmic_reg_write(p, PFUZE3000_LDOGCTL, reg); +- if (ret) ++ ret = pmic_get("pfuze3000@8", &dev); ++ if (ret == -ENODEV) ++ return 0; ++ if (ret != 0) + return ret; + +- ret = pmic_reg_write(p, PFUZE3000_SW1AMODE, 0xc); +- if (ret) +- return ret; ++ dev_id = pmic_reg_read(dev, PFUZE3000_DEVICEID); ++ rev_id = pmic_reg_read(dev, PFUZE3000_REVID); ++ printf("PMIC: PFUZE3000 DEV_ID=0x%x REV_ID=0x%x\n", dev_id, rev_id); + +- ret = pmic_reg_write(p, PFUZE3000_SW1BMODE, 0xc); +- if (ret) +- return ret; +- +- ret = pmic_reg_write(p, PFUZE3000_SW2MODE, 0xc); +- if (ret) +- return ret; +- +- ret = pmic_reg_write(p, PFUZE3000_SW3MODE, 0xc); +- if (ret) +- return ret; +- +- /* set SW1A standby voltage 0.975V */ +- pmic_reg_read(p, PFUZE3000_SW1ASTBY, ®); +- reg &= ~0x3f; +- reg |= PFUZE3000_SW1AB_SETP(9750); +- ret = pmic_reg_write(p, PFUZE3000_SW1ASTBY, reg); +- if (ret) +- return ret; +- +- /* set SW1B standby voltage 0.975V */ +- pmic_reg_read(p, PFUZE3000_SW1BSTBY, ®); +- reg &= ~0x3f; +- reg |= PFUZE3000_SW1AB_SETP(9750); +- ret = pmic_reg_write(p, PFUZE3000_SW1BSTBY, reg); +- if (ret) +- return ret; +- +- /* set SW1A/VDD_ARM_IN step ramp up time from 16us to 4us/25mV */ +- pmic_reg_read(p, PFUZE3000_SW1ACONF, ®); +- reg &= ~0xc0; +- reg |= 0x40; +- ret = pmic_reg_write(p, PFUZE3000_SW1ACONF, reg); +- if (ret) +- return ret; +- +- /* set SW1B/VDD_SOC_IN step ramp up time from 16us to 4us/25mV */ +- pmic_reg_read(p, PFUZE3000_SW1BCONF, ®); +- reg &= ~0xc0; +- reg |= 0x40; +- ret = pmic_reg_write(p, PFUZE3000_SW1BCONF, reg); +- if (ret) +- return ret; +- +- /* set VDD_ARM_IN to 1.350V */ +- pmic_reg_read(p, PFUZE3000_SW1AVOLT, ®); +- reg &= ~0x3f; +- reg |= PFUZE3000_SW1AB_SETP(13500); +- ret = pmic_reg_write(p, PFUZE3000_SW1AVOLT, reg); +- if (ret) +- return ret; +- +- /* set VDD_SOC_IN to 1.350V */ +- pmic_reg_read(p, PFUZE3000_SW1BVOLT, ®); +- reg &= ~0x3f; +- reg |= PFUZE3000_SW1AB_SETP(13500); +- ret = pmic_reg_write(p, PFUZE3000_SW1BVOLT, reg); +- if (ret) +- return ret; +- +- /* set DDR_1_5V to 1.350V */ +- pmic_reg_read(p, PFUZE3000_SW3VOLT, ®); +- reg &= ~0x0f; +- reg |= PFUZE3000_SW3_SETP(13500); +- ret = pmic_reg_write(p, PFUZE3000_SW3VOLT, reg); +- if (ret) +- return ret; +- +- /* set VGEN2_1V5 to 1.5V */ +- pmic_reg_read(p, PFUZE3000_VLDO2CTL, ®); +- reg &= ~0x0f; +- reg |= PFUZE3000_VLDO_SETP(15000); +- /* enable */ +- reg |= 0x10; +- ret = pmic_reg_write(p, PFUZE3000_VLDO2CTL, reg); +- if (ret) +- return ret; ++ pmic_clrsetbits(dev, PFUZE3000_LDOGCTL, 0, 1); + + return 0; + } +-#endif + + static iomux_v3_cfg_t const uart1_pads[] = { + MX6_PAD_GPIO1_IO04__UART1_TX | MUX_PAD_CTRL(UART_PAD_CTRL), +@@ -294,10 +179,6 @@ int board_init(void) + gpio_request(IMX_GPIO_NR(4, 16), "ncp692"); + gpio_direction_output(IMX_GPIO_NR(4, 16) , 1); + +-#ifdef CONFIG_SYS_I2C_MXC +- setup_i2c(0, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info1); +-#endif +- + setup_fec(); + + return 0; +diff --git a/configs/udoo_neo_defconfig b/configs/udoo_neo_defconfig +index ca08de1bd4..9177bdba65 100644 +--- a/configs/udoo_neo_defconfig ++++ b/configs/udoo_neo_defconfig +@@ -10,8 +10,9 @@ CONFIG_ENV_SIZE=0x2000 + CONFIG_ENV_OFFSET=0x80000 + CONFIG_MX6SX=y + CONFIG_TARGET_UDOO_NEO=y +-CONFIG_SYS_I2C_MXC_I2C1=y ++CONFIG_DM_I2C=y + CONFIG_DM_GPIO=y ++CONFIG_DM_MMC=y + CONFIG_DEFAULT_DEVICE_TREE="imx6sx-udoo-neo-basic" + CONFIG_SPL_TEXT_BASE=0x00908000 + CONFIG_SPL_MMC=y +@@ -39,8 +40,6 @@ CONFIG_SYS_RELOC_GD_ENV_ADDR=y + CONFIG_SYS_MMC_ENV_DEV=1 + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y + CONFIG_BOUNCE_BUFFER=y +-CONFIG_SYS_I2C_LEGACY=y +-CONFIG_SPL_SYS_I2C_LEGACY=y + CONFIG_SYS_I2C_MXC=y + CONFIG_FSL_USDHC=y + CONFIG_PHYLIB=y +@@ -52,11 +51,12 @@ CONFIG_FEC_MXC=y + CONFIG_MII=y + CONFIG_PINCTRL=y + CONFIG_PINCTRL_IMX6=y +-CONFIG_POWER_LEGACY=y +-CONFIG_POWER_I2C=y ++CONFIG_DM_PMIC=y ++CONFIG_DM_PMIC_PFUZE100=y + CONFIG_DM_REGULATOR=y + CONFIG_DM_REGULATOR_ANATOP=y + CONFIG_DM_REGULATOR_FIXED=y ++CONFIG_DM_REGULATOR_PFUZE100=y + CONFIG_USB=y + CONFIG_DM_USB=y + CONFIG_USB_STORAGE=y +diff --git a/include/configs/udoo_neo.h b/include/configs/udoo_neo.h +index 3a7cb050b1..ac13c3e57f 100644 +--- a/include/configs/udoo_neo.h ++++ b/include/configs/udoo_neo.h +@@ -68,9 +68,4 @@ + #define CONFIG_SYS_INIT_SP_ADDR \ + (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET) + +-/* PMIC */ +-#define CONFIG_POWER_PFUZE3000 +-#define CONFIG_POWER_PFUZE3000_I2C_ADDR 0x08 +-#define PFUZE3000_I2C_BUS 0 +- + #endif /* __CONFIG_H */ +-- +2.34.1 + diff --git a/uboot-tools.spec b/uboot-tools.spec index 92d15ee..9bf773b 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -%global candidate rc4 +#global candidate rc4 Name: uboot-tools Version: 2022.01 -Release: 0.3%{?candidate:.%{candidate}}%{?dist} +Release: 1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -26,6 +26,7 @@ Patch5: rpi-bcm2835_sdhost-firmware-managed-clock.patch Patch6: v3-phy-Track-power-on-and-init-counts-in-uclass.patch Patch7: dts-rockchip-rk3399-enable-emmc-phy-for-spl.patch Patch8: 0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch +Patch9: 0001-udoo_neo-Move-to-DM-for-REGUALTOR-PMIC-I2C-drivers.patch BuildRequires: bc BuildRequires: dtc @@ -251,6 +252,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Mon Jan 10 2022 Peter Robinson - 2022.01-1 +- Update to 2022.01 + * Wed Jan 05 2022 Peter Robinson - 2022.01-0.3.rc4 - Upstream fixes for PHY and UEFI From c1b0bbe3612ec6e8fd38b805ec0eb9c1e5cbefad Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 11 Jan 2022 10:11:22 +0000 Subject: [PATCH 094/271] Upload source --- sources | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources b/sources index b98988f..d632a51 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2022.01-rc4.tar.bz2) = 2b07f52794056926125ca0327999c06939c19c9bbcfa2b3ea6809a2298adee1323f22f142aed57297be07541662f1d909af23393f78d7718ff6963d0552119b7 +SHA512 (u-boot-2022.01.tar.bz2) = d83c62bd8f0f51664d2aca329a3ce1379cfd1dfff439dccd6cfc2cb33cfef89a2b01855c97716f591b5550bfdf99e2f3aef7efa33f2e7834c820648f9eef3825 From b27a96095d4528e556dc251c7a196d9936f48123 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 22 Jan 2022 03:22:08 +0000 Subject: [PATCH 095/271] - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- uboot-tools.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 9bf773b..fffbf72 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -2,7 +2,7 @@ Name: uboot-tools Version: 2022.01 -Release: 1%{?candidate:.%{candidate}}%{?dist} +Release: 2%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -252,6 +252,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Sat Jan 22 2022 Fedora Release Engineering - 2022.01-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + * Mon Jan 10 2022 Peter Robinson - 2022.01-1 - Update to 2022.01 From 18e07ba9f6f80abd4ed2fe126836bcda8171371f Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 2 Feb 2022 23:04:35 +0000 Subject: [PATCH 096/271] 2022.04 RC1 --- ...kchip-rk3399-enable-emmc-phy-for-spl.patch | 115 ---- sources | 2 +- uboot-tools.spec | 13 +- ...k-power-on-and-init-counts-in-uclass.patch | 556 ------------------ 4 files changed, 8 insertions(+), 678 deletions(-) delete mode 100644 dts-rockchip-rk3399-enable-emmc-phy-for-spl.patch delete mode 100644 v3-phy-Track-power-on-and-init-counts-in-uclass.patch diff --git a/dts-rockchip-rk3399-enable-emmc-phy-for-spl.patch b/dts-rockchip-rk3399-enable-emmc-phy-for-spl.patch deleted file mode 100644 index 3ef5b53..0000000 --- a/dts-rockchip-rk3399-enable-emmc-phy-for-spl.patch +++ /dev/null @@ -1,115 +0,0 @@ -From patchwork Mon Nov 1 04:43:47 2021 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Yifeng Zhao -X-Patchwork-Id: 1548950 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -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 RSA-PSS (4096 bits)) - (No client certificate requested) - by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HjL646Yhcz9sS8 - for ; Mon, 1 Nov 2021 15:44:12 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 6212783389; - Mon, 1 Nov 2021 05:44:06 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=none (p=none dis=none) header.from=rock-chips.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Received: by phobos.denx.de (Postfix, from userid 109) - id 26A6483395; Mon, 1 Nov 2021 05:44:05 +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=-0.4 required=5.0 tests=BAYES_00,RCVD_IN_SORBS_WEB, - SPF_HELO_NONE,T_SPF_PERMERROR autolearn=no autolearn_force=no - version=3.4.2 -Received: from lucky1.263xmail.com (lucky1.263xmail.com [211.157.147.134]) - (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 04D7B83383 - for ; Mon, 1 Nov 2021 05:43:59 +0100 (CET) -Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) - header.from=rock-chips.com -Authentication-Results: phobos.denx.de; - spf=fail smtp.mailfrom=yifeng.zhao@rock-chips.com -Received: from localhost (unknown [192.168.167.16]) - by lucky1.263xmail.com (Postfix) with ESMTP id 1B96CD124A; - Mon, 1 Nov 2021 12:43:55 +0800 (CST) -X-MAIL-GRAY: 0 -X-MAIL-DELIVERY: 1 -X-ADDR-CHECKED4: 1 -X-SKE-CHECKED: 1 -X-ANTISPAM-LEVEL: 2 -Received: from localhost.localdomain (unknown [58.22.7.114]) - by smtp.263.net (postfix) whith ESMTP id - P5172T139932542678784S1635741828952225_; - Mon, 01 Nov 2021 12:43:55 +0800 (CST) -X-IP-DOMAINF: 1 -X-RL-SENDER: yifeng.zhao@rock-chips.com -X-SENDER: zyf@rock-chips.com -X-LOGIN-NAME: yifeng.zhao@rock-chips.com -X-FST-TO: kever.yang@rock-chips.com -X-RCPT-COUNT: 7 -X-LOCAL-RCPT-COUNT: 2 -X-SENDER-IP: 58.22.7.114 -X-ATTACHMENT-NUM: 0 -X-UNIQUE-TAG: <8beb59827f65d556787d36e0068aa9cb> -X-System-Flag: 0 -From: Yifeng Zhao -To: Kever Yang -Cc: sjg , Peter Robinson , - Philipp Tomsich , - u-boot@lists.denx.de, Jack Mitchell , - Yifeng Zhao -Subject: [PATCH] dts: rockchip: rk3399: enable emmc phy for spl -Date: Mon, 1 Nov 2021 12:43:47 +0800 -Message-Id: <20211101044347.17822-1-yifeng.zhao@rock-chips.com> -X-Mailer: git-send-email 2.17.1 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.34 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de -X-Virus-Status: Clean - -adapting commit ac804143cf ("mmc: rockchip_sdhci: add phy and clock -config for rk3399") to fix the issue "Not found emmc phy device". - -Signed-off-by: Yifeng Zhao ---- - - arch/arm/dts/rk3399-u-boot.dtsi | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/arch/arm/dts/rk3399-u-boot.dtsi b/arch/arm/dts/rk3399-u-boot.dtsi -index 73922c328a..716b9a433a 100644 ---- a/arch/arm/dts/rk3399-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-u-boot.dtsi -@@ -88,6 +88,10 @@ - u-boot,dm-pre-reloc; - }; - -+&emmc_phy { -+ u-boot,dm-pre-reloc; -+}; -+ - &grf { - u-boot,dm-pre-reloc; - }; diff --git a/sources b/sources index d632a51..870dc09 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2022.01.tar.bz2) = d83c62bd8f0f51664d2aca329a3ce1379cfd1dfff439dccd6cfc2cb33cfef89a2b01855c97716f591b5550bfdf99e2f3aef7efa33f2e7834c820648f9eef3825 +SHA512 (u-boot-2022.04-rc1.tar.bz2) = 95421d9ed69f46b727e9bbe53f8ecbd66a6779512c97342b02eb440adac175e6abeebbf5664f256397518e39602b9eee70a2b66ca21c2f13a3331bab755b9735 diff --git a/uboot-tools.spec b/uboot-tools.spec index fffbf72..0185254 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -#global candidate rc4 +%global candidate rc1 Name: uboot-tools -Version: 2022.01 -Release: 2%{?candidate:.%{candidate}}%{?dist} +Version: 2022.04 +Release: 0.1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -23,10 +23,8 @@ Patch3: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch Patch4: rpi-fallback-to-max-clock-for-mmc.patch Patch5: rpi-bcm2835_sdhost-firmware-managed-clock.patch # Rockchips improvements -Patch6: v3-phy-Track-power-on-and-init-counts-in-uclass.patch -Patch7: dts-rockchip-rk3399-enable-emmc-phy-for-spl.patch Patch8: 0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch -Patch9: 0001-udoo_neo-Move-to-DM-for-REGUALTOR-PMIC-I2C-drivers.patch +# Patch9: 0001-udoo_neo-Move-to-DM-for-REGUALTOR-PMIC-I2C-drivers.patch BuildRequires: bc BuildRequires: dtc @@ -252,6 +250,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Wed Feb 02 2022 Peter Robinson - 2022.04-0.1.rc1 +- Update to 2022.04 RC1 + * Sat Jan 22 2022 Fedora Release Engineering - 2022.01-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild diff --git a/v3-phy-Track-power-on-and-init-counts-in-uclass.patch b/v3-phy-Track-power-on-and-init-counts-in-uclass.patch deleted file mode 100644 index d6cc31d..0000000 --- a/v3-phy-Track-power-on-and-init-counts-in-uclass.patch +++ /dev/null @@ -1,556 +0,0 @@ -From patchwork Thu Dec 30 19:36:51 2021 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Alper Nebi Yasak -X-Patchwork-Id: 1574229 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: bilbo.ozlabs.org; - dkim=pass (2048-bit key; - unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 - header.s=20210112 header.b=cK81Bg2I; - dkim-atps=neutral -Authentication-Results: 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=) -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 RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by bilbo.ozlabs.org (Postfix) with ESMTPS id 4JPz7X0bFyz9s0r - for ; Fri, 31 Dec 2021 06:37:26 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 0F0B2804C8; - Thu, 30 Dec 2021 20:37:18 +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="cK81Bg2I"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id AEDBD811BB; Thu, 30 Dec 2021 20:37:16 +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,SPF_HELO_NONE, - SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com - [IPv6:2a00:1450:4864:20::52d]) - (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 DFF2E81184 - for ; Thu, 30 Dec 2021 20:37:12 +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=alpernebiyasak@gmail.com -Received: by mail-ed1-x52d.google.com with SMTP id x15so101755439edv.1 - for ; Thu, 30 Dec 2021 11:37:12 -0800 (PST) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; - h=from:to:cc:subject:date:message-id:mime-version - :content-transfer-encoding; - bh=o95ZU+qnz+og5Dat/q/VTF9YYww8PBCzA+ABZSXXolA=; - b=cK81Bg2IxzE3JOMrYmY71vV4AwQM5u4QfMs8UyJlfcZ1/+ES5KYKqOqFfpKFnoHmhj - dExR4ZG55QcIoQvX2QjSsh5m4oqpvqaJRCHmG8MNFscusyVvJvZidSC4A6MsKFm/xDhO - 6trpXrffdaK4mrMLrlpNwtX4zvGFrQ8BfwsRN6vkYzissuXrMEHMB8gnY2z9FMvnQepB - suI6C2oVprB/tyo+iFw6q9vnxnFxbNMaU6Kbevqekv1lG4k2bAKTTcgLTUETQ8fbYtPt - 8f1NCTBCNS2fRO0fx1tGhK9Ymw8hLuO8f0Bzrj+ZixtmYiR9QRbZU/OYM/dvO0SVCQAo - 6/cA== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20210112; - h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version - :content-transfer-encoding; - bh=o95ZU+qnz+og5Dat/q/VTF9YYww8PBCzA+ABZSXXolA=; - b=2fadn4WWHwuQAEwrV9KPDpx5of4g6aU2eu41AiBB7973C1mGKZc9wITb6nQTG1VesX - 2N/LdQdgK6TKFXUcJnujd8Kh2+aTbmxK5aa4CT48DOc+FjvNWln6+GW3Cu2NYVuM1P+P - AC8aeVMpezmVLZMnUFgc46wf/9vd/U0SG6I5Iv3/89f4IjiajTPgp2yZZSSBPmK0QQoJ - y+w0KYKeICH1Q/IiYUvQjgEvWY3DdK6si2QT+UO9I0xo+gkK3CwaEpVIVQ6HC75FEPLZ - HRLoHTUYGCu30AZsXToNOOR/eX5cjyzON64fUyBqO69BiI43Hh9x8usz+VdI8B2LcOT+ - 7WuQ== -X-Gm-Message-State: AOAM533kWmvGofl0Ku1us2MhhVDF3yCz3i6FyVMhb7qhAA3dYLiAjW43 - WXFRC/b1oHVMXZDbmQz2s6c0KYDb8KI= -X-Google-Smtp-Source: - ABdhPJwyxnfOXQuo28I9zKzDtG6KUXF845MW0EPlPCt/upF5MoMLbHxEazYxf+uas6Ce8af3fcfE5g== -X-Received: by 2002:a50:d74e:: with SMTP id - i14mr31016125edj.243.1640893032437; - Thu, 30 Dec 2021 11:37:12 -0800 (PST) -Received: from localhost.localdomain ([178.233.26.119]) - by smtp.gmail.com with ESMTPSA id y13sm9836432edq.77.2021.12.30.11.37.09 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Thu, 30 Dec 2021 11:37:11 -0800 (PST) -From: Alper Nebi Yasak -To: u-boot@lists.denx.de -Cc: Frank Wang , - Andre Przywara , Tom Rini , - Simon Glass , Neil Armstrong , - Grant Likely , - Joe Hershberger , - Peter Robinson , - Jagan Teki , - Patrick Delaunay , - Grant Likely , Icenowy Zheng , - Alper Nebi Yasak -Subject: [PATCH v3] phy: Track power-on and init counts in uclass -Date: Thu, 30 Dec 2021 22:36:51 +0300 -Message-Id: <20211230193652.33514-1-alpernebiyasak@gmail.com> -X-Mailer: git-send-email 2.34.1 -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.38 -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.2 at phobos.denx.de -X-Virus-Status: Clean - -On boards using the RK3399 SoC, the USB OHCI and EHCI controllers share -the same PHY device instance. While these controllers are being stopped -they both attempt to power-off and deinitialize it, but trying to -power-off the deinitialized PHY device results in a hang. This usually -happens just before booting an OS, and can be explicitly triggered by -running "usb start; usb stop" in the U-Boot shell. - -Implement a uclass-wide counting mechanism for PHY initialization and -power state change requests, so that we don't power-off/deinitialize a -PHY instance until all of its users want it done. The Allwinner A10 USB -PHY driver does this counting in-driver, remove those parts in favour of -this in-uclass implementation. - -The sandbox PHY operations test needs some changes since the uclass will -no longer call into the drivers for actions matching its tracked state -(e.g. powering-off a powered-off PHY). Update that test, and add a new -one which simulates multiple users of a single PHY. - -The major complication here is that PHY handles aren't deduplicated per -instance, so the obvious idea of putting the counts in the PHY handles -don't immediately work. It seems possible to bind a child udevice per -PHY instance to the PHY provider and deduplicate the handles in each -child's uclass-private areas, like in the CLK framework. An alternative -approach could be to use those bound child udevices themselves as the -PHY handles. Instead, to avoid the architectural changes those would -require, this patch solves things by dynamically allocating a list of -structs (one per instance) in the provider's uclass-private area. - -Signed-off-by: Alper Nebi Yasak -Reviewed-by: Simon Glass ---- - -Changes in v3: -- Add tag: "Reviewed-by: Simon Glass " -- Add comment for phy_counts struct - -v2: https://patchwork.ozlabs.org/project/uboot/patch/20211224130549.20276-1-alpernebiyasak@gmail.com/ - -Changes in v2: -- Rename {phy_,}id_priv -> {phy_,}counts -- Split phy_get_uclass_priv -> phy_{alloc,get}_counts -- Allocate counts (or return error) in generic_phy_get_by_*() -- Remove now-unnecessary null checks for counts of valid phy handles - -v1: https://patchwork.ozlabs.org/project/uboot/patch/20211210200124.19226-1-alpernebiyasak@gmail.com/ - - drivers/phy/allwinner/phy-sun4i-usb.c | 9 -- - drivers/phy/phy-uclass.c | 137 ++++++++++++++++++++++++++ - test/dm/phy.c | 83 +++++++++++++++- - 3 files changed, 215 insertions(+), 14 deletions(-) - -diff --git a/drivers/phy/allwinner/phy-sun4i-usb.c b/drivers/phy/allwinner/phy-sun4i-usb.c -index ab2a5d17fcff..86c589a65fd3 100644 ---- a/drivers/phy/allwinner/phy-sun4i-usb.c -+++ b/drivers/phy/allwinner/phy-sun4i-usb.c -@@ -125,7 +125,6 @@ struct sun4i_usb_phy_info { - - struct sun4i_usb_phy_plat { - void __iomem *pmu; -- int power_on_count; - int gpio_vbus; - int gpio_vbus_det; - int gpio_id_det; -@@ -225,10 +224,6 @@ static int sun4i_usb_phy_power_on(struct phy *phy) - initial_usb_scan_delay = 0; - } - -- usb_phy->power_on_count++; -- if (usb_phy->power_on_count != 1) -- return 0; -- - if (usb_phy->gpio_vbus >= 0) - gpio_set_value(usb_phy->gpio_vbus, SUNXI_GPIO_PULL_UP); - -@@ -240,10 +235,6 @@ static int sun4i_usb_phy_power_off(struct phy *phy) - struct sun4i_usb_phy_data *data = dev_get_priv(phy->dev); - struct sun4i_usb_phy_plat *usb_phy = &data->usb_phy[phy->id]; - -- usb_phy->power_on_count--; -- if (usb_phy->power_on_count != 0) -- return 0; -- - if (usb_phy->gpio_vbus >= 0) - gpio_set_value(usb_phy->gpio_vbus, SUNXI_GPIO_PULL_DISABLE); - -diff --git a/drivers/phy/phy-uclass.c b/drivers/phy/phy-uclass.c -index 59683a080cd7..cec46c2c4103 100644 ---- a/drivers/phy/phy-uclass.c -+++ b/drivers/phy/phy-uclass.c -@@ -11,12 +11,96 @@ - #include - #include - #include -+#include -+ -+/** -+ * struct phy_counts - Init and power-on counts of a single PHY port -+ * -+ * This structure is used to keep track of PHY initialization and power -+ * state change requests, so that we don't power off and deinitialize a -+ * PHY instance until all of its users want it done. Otherwise, multiple -+ * consumers using the same PHY port can cause problems (e.g. one might -+ * call power_off() after another's exit() and hang indefinitely). -+ * -+ * @id: The PHY ID within a PHY provider -+ * @power_on_count: Times generic_phy_power_on() was called for this ID -+ * without a matching generic_phy_power_off() afterwards -+ * @init_count: Times generic_phy_init() was called for this ID -+ * without a matching generic_phy_exit() afterwards -+ * @list: Handle for a linked list of these structures corresponding to -+ * ports of the same PHY provider -+ */ -+struct phy_counts { -+ unsigned long id; -+ int power_on_count; -+ int init_count; -+ struct list_head list; -+}; - - static inline struct phy_ops *phy_dev_ops(struct udevice *dev) - { - return (struct phy_ops *)dev->driver->ops; - } - -+static struct phy_counts *phy_get_counts(struct phy *phy) -+{ -+ struct list_head *uc_priv; -+ struct phy_counts *counts; -+ -+ if (!generic_phy_valid(phy)) -+ return NULL; -+ -+ uc_priv = dev_get_uclass_priv(phy->dev); -+ list_for_each_entry(counts, uc_priv, list) -+ if (counts->id == phy->id) -+ return counts; -+ -+ return NULL; -+} -+ -+static int phy_alloc_counts(struct phy *phy) -+{ -+ struct list_head *uc_priv; -+ struct phy_counts *counts; -+ -+ if (!generic_phy_valid(phy)) -+ return 0; -+ if (phy_get_counts(phy)) -+ return 0; -+ -+ uc_priv = dev_get_uclass_priv(phy->dev); -+ counts = kzalloc(sizeof(*counts), GFP_KERNEL); -+ if (!counts) -+ return -ENOMEM; -+ -+ counts->id = phy->id; -+ counts->power_on_count = 0; -+ counts->init_count = 0; -+ list_add(&counts->list, uc_priv); -+ -+ return 0; -+} -+ -+static int phy_uclass_pre_probe(struct udevice *dev) -+{ -+ struct list_head *uc_priv = dev_get_uclass_priv(dev); -+ -+ INIT_LIST_HEAD(uc_priv); -+ -+ return 0; -+} -+ -+static int phy_uclass_pre_remove(struct udevice *dev) -+{ -+ struct list_head *uc_priv = dev_get_uclass_priv(dev); -+ struct phy_counts *counts, *next; -+ -+ list_for_each_entry_safe(counts, next, uc_priv, list) -+ kfree(counts); -+ -+ return 0; -+} -+ - static int generic_phy_xlate_offs_flags(struct phy *phy, - struct ofnode_phandle_args *args) - { -@@ -88,6 +172,12 @@ int generic_phy_get_by_index_nodev(ofnode node, int index, struct phy *phy) - goto err; - } - -+ ret = phy_alloc_counts(phy); -+ if (ret) { -+ debug("phy_alloc_counts() failed: %d\n", ret); -+ goto err; -+ } -+ - return 0; - - err: -@@ -118,6 +208,7 @@ int generic_phy_get_by_name(struct udevice *dev, const char *phy_name, - - int generic_phy_init(struct phy *phy) - { -+ struct phy_counts *counts; - struct phy_ops const *ops; - int ret; - -@@ -126,10 +217,19 @@ int generic_phy_init(struct phy *phy) - ops = phy_dev_ops(phy->dev); - if (!ops->init) - return 0; -+ -+ counts = phy_get_counts(phy); -+ if (counts->init_count > 0) { -+ counts->init_count++; -+ return 0; -+ } -+ - ret = ops->init(phy); - if (ret) - dev_err(phy->dev, "PHY: Failed to init %s: %d.\n", - phy->dev->name, ret); -+ else -+ counts->init_count = 1; - - return ret; - } -@@ -154,6 +254,7 @@ int generic_phy_reset(struct phy *phy) - - int generic_phy_exit(struct phy *phy) - { -+ struct phy_counts *counts; - struct phy_ops const *ops; - int ret; - -@@ -162,16 +263,28 @@ int generic_phy_exit(struct phy *phy) - ops = phy_dev_ops(phy->dev); - if (!ops->exit) - return 0; -+ -+ counts = phy_get_counts(phy); -+ if (counts->init_count == 0) -+ return 0; -+ if (counts->init_count > 1) { -+ counts->init_count--; -+ return 0; -+ } -+ - ret = ops->exit(phy); - if (ret) - dev_err(phy->dev, "PHY: Failed to exit %s: %d.\n", - phy->dev->name, ret); -+ else -+ counts->init_count = 0; - - return ret; - } - - int generic_phy_power_on(struct phy *phy) - { -+ struct phy_counts *counts; - struct phy_ops const *ops; - int ret; - -@@ -180,16 +293,26 @@ int generic_phy_power_on(struct phy *phy) - ops = phy_dev_ops(phy->dev); - if (!ops->power_on) - return 0; -+ -+ counts = phy_get_counts(phy); -+ if (counts->power_on_count > 0) { -+ counts->power_on_count++; -+ return 0; -+ } -+ - ret = ops->power_on(phy); - if (ret) - dev_err(phy->dev, "PHY: Failed to power on %s: %d.\n", - phy->dev->name, ret); -+ else -+ counts->power_on_count = 1; - - return ret; - } - - int generic_phy_power_off(struct phy *phy) - { -+ struct phy_counts *counts; - struct phy_ops const *ops; - int ret; - -@@ -198,10 +321,21 @@ int generic_phy_power_off(struct phy *phy) - ops = phy_dev_ops(phy->dev); - if (!ops->power_off) - return 0; -+ -+ counts = phy_get_counts(phy); -+ if (counts->power_on_count == 0) -+ return 0; -+ if (counts->power_on_count > 1) { -+ counts->power_on_count--; -+ return 0; -+ } -+ - ret = ops->power_off(phy); - if (ret) - dev_err(phy->dev, "PHY: Failed to power off %s: %d.\n", - phy->dev->name, ret); -+ else -+ counts->power_on_count = 0; - - return ret; - } -@@ -316,4 +450,7 @@ int generic_phy_power_off_bulk(struct phy_bulk *bulk) - UCLASS_DRIVER(phy) = { - .id = UCLASS_PHY, - .name = "phy", -+ .pre_probe = phy_uclass_pre_probe, -+ .pre_remove = phy_uclass_pre_remove, -+ .per_device_auto = sizeof(struct list_head), - }; -diff --git a/test/dm/phy.c b/test/dm/phy.c -index ecbd47bf12fd..df4c73fc701f 100644 ---- a/test/dm/phy.c -+++ b/test/dm/phy.c -@@ -79,12 +79,15 @@ static int dm_test_phy_ops(struct unit_test_state *uts) - ut_assertok(generic_phy_power_off(&phy1)); - - /* -- * test operations after exit(). -- * The sandbox phy driver does not allow it. -+ * Test power_on() failure after exit(). -+ * The sandbox phy driver does not allow power-on/off after -+ * exit, but the uclass counts power-on/init calls and skips -+ * calling the driver's ops when e.g. powering off an already -+ * powered-off phy. - */ - ut_assertok(generic_phy_exit(&phy1)); - ut_assert(generic_phy_power_on(&phy1) != 0); -- ut_assert(generic_phy_power_off(&phy1) != 0); -+ ut_assertok(generic_phy_power_off(&phy1)); - - /* - * test normal operations again (after re-init) -@@ -99,6 +102,17 @@ static int dm_test_phy_ops(struct unit_test_state *uts) - */ - ut_assertok(generic_phy_reset(&phy1)); - -+ /* -+ * Test power_off() failure after exit(). -+ * For this we need to call exit() while the phy is powered-on, -+ * so that the uclass actually calls the driver's power-off() -+ * and reports the resulting failure. -+ */ -+ ut_assertok(generic_phy_power_on(&phy1)); -+ ut_assertok(generic_phy_exit(&phy1)); -+ ut_assert(generic_phy_power_off(&phy1) != 0); -+ ut_assertok(generic_phy_power_on(&phy1)); -+ - /* PHY2 has a known problem with power off */ - ut_assertok(generic_phy_init(&phy2)); - ut_assertok(generic_phy_power_on(&phy2)); -@@ -106,8 +120,8 @@ static int dm_test_phy_ops(struct unit_test_state *uts) - - /* PHY3 has a known problem with power off and power on */ - ut_assertok(generic_phy_init(&phy3)); -- ut_asserteq(-EIO, generic_phy_power_off(&phy3)); -- ut_asserteq(-EIO, generic_phy_power_off(&phy3)); -+ ut_asserteq(-EIO, generic_phy_power_on(&phy3)); -+ ut_assertok(generic_phy_power_off(&phy3)); - - return 0; - } -@@ -145,3 +159,62 @@ static int dm_test_phy_bulk(struct unit_test_state *uts) - return 0; - } - DM_TEST(dm_test_phy_bulk, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); -+ -+static int dm_test_phy_multi_exit(struct unit_test_state *uts) -+{ -+ struct phy phy1_method1; -+ struct phy phy1_method2; -+ struct phy phy1_method3; -+ struct udevice *parent; -+ -+ /* Get the same phy instance in 3 different ways. */ -+ ut_assertok(uclass_get_device_by_name(UCLASS_SIMPLE_BUS, -+ "gen_phy_user", &parent)); -+ ut_assertok(generic_phy_get_by_name(parent, "phy1", &phy1_method1)); -+ ut_asserteq(0, phy1_method1.id); -+ ut_assertok(generic_phy_get_by_name(parent, "phy1", &phy1_method2)); -+ ut_asserteq(0, phy1_method2.id); -+ ut_asserteq_ptr(phy1_method1.dev, phy1_method1.dev); -+ -+ ut_assertok(uclass_get_device_by_name(UCLASS_SIMPLE_BUS, -+ "gen_phy_user1", &parent)); -+ ut_assertok(generic_phy_get_by_name(parent, "phy1", &phy1_method3)); -+ ut_asserteq(0, phy1_method3.id); -+ ut_asserteq_ptr(phy1_method1.dev, phy1_method3.dev); -+ -+ /* -+ * Test using the same PHY from different handles. -+ * In non-test code these could be in different drivers. -+ */ -+ -+ /* -+ * These must only call the driver's ops at the first init() -+ * and power_on(). -+ */ -+ ut_assertok(generic_phy_init(&phy1_method1)); -+ ut_assertok(generic_phy_init(&phy1_method2)); -+ ut_assertok(generic_phy_power_on(&phy1_method1)); -+ ut_assertok(generic_phy_power_on(&phy1_method2)); -+ ut_assertok(generic_phy_init(&phy1_method3)); -+ ut_assertok(generic_phy_power_on(&phy1_method3)); -+ -+ /* -+ * These must not call the driver's ops as other handles still -+ * want the PHY powered-on and initialized. -+ */ -+ ut_assertok(generic_phy_power_off(&phy1_method3)); -+ ut_assertok(generic_phy_exit(&phy1_method3)); -+ -+ /* -+ * We would get an error here if the generic_phy_exit() above -+ * actually called the driver's exit(), as the sandbox driver -+ * doesn't allow power-off() after exit(). -+ */ -+ ut_assertok(generic_phy_power_off(&phy1_method1)); -+ ut_assertok(generic_phy_power_off(&phy1_method2)); -+ ut_assertok(generic_phy_exit(&phy1_method1)); -+ ut_assertok(generic_phy_exit(&phy1_method2)); -+ -+ return 0; -+} -+DM_TEST(dm_test_phy_multi_exit, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); From 93f0ff8c4feb17229dc4e47f61a3aa4224bb3ec0 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 15 Feb 2022 16:48:19 +0000 Subject: [PATCH 097/271] 2022.04 RC2 --- aarch64-boards | 1 + sources | 2 +- uboot-tools.spec | 8 +- ...oll-frequency-to-improve-performance.patch | 178 ------------------ 4 files changed, 7 insertions(+), 182 deletions(-) delete mode 100644 v2-console-usb-kbd-Limit-poll-frequency-to-improve-performance.patch diff --git a/aarch64-boards b/aarch64-boards index 50427ad..de5f479 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -76,6 +76,7 @@ roc-pc-rk3399 rpi_3 rpi_4 rpi_arm64 +starqltechn sopine_baseboard tanix_tx6 teres_i diff --git a/sources b/sources index 870dc09..6267dad 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2022.04-rc1.tar.bz2) = 95421d9ed69f46b727e9bbe53f8ecbd66a6779512c97342b02eb440adac175e6abeebbf5664f256397518e39602b9eee70a2b66ca21c2f13a3331bab755b9735 +SHA512 (u-boot-2022.04-rc2.tar.bz2) = 34af2d91a86e6864615ab09a2da7ec752beb56808d9eea652d425476cd1bbdf84d4e5f98740254f7cd91a04f11712d073450e74f4e07ae4180d845cb38620ee3 diff --git a/uboot-tools.spec b/uboot-tools.spec index 0185254..e04730a 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -%global candidate rc1 +%global candidate rc2 Name: uboot-tools Version: 2022.04 -Release: 0.1%{?candidate:.%{candidate}}%{?dist} +Release: 0.2%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -17,7 +17,6 @@ Source2: aarch64-boards Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch # Board fixes and enablement -Patch2: v2-console-usb-kbd-Limit-poll-frequency-to-improve-performance.patch # RPi - uses RPI firmware device tree for HAT support Patch3: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch Patch4: rpi-fallback-to-max-clock-for-mmc.patch @@ -250,6 +249,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Tue Feb 15 2022 Peter Robinson - 2022.04-0.2.rc2 +- Update to 2022.04 RC2 + * Wed Feb 02 2022 Peter Robinson - 2022.04-0.1.rc1 - Update to 2022.04 RC1 diff --git a/v2-console-usb-kbd-Limit-poll-frequency-to-improve-performance.patch b/v2-console-usb-kbd-Limit-poll-frequency-to-improve-performance.patch deleted file mode 100644 index 5eb366c..0000000 --- a/v2-console-usb-kbd-Limit-poll-frequency-to-improve-performance.patch +++ /dev/null @@ -1,178 +0,0 @@ -From patchwork Wed Dec 22 22:51:26 2021 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Thomas Watson -X-Patchwork-Id: 1572368 -X-Patchwork-Delegate: marek.vasut@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: bilbo.ozlabs.org; - dkim=pass (2048-bit key; - unprotected) header.d=icloud.com header.i=@icloud.com header.a=rsa-sha256 - header.s=1a1hai header.b=SkTQ1vLj; - dkim-atps=neutral -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) - by bilbo.ozlabs.org (Postfix) with ESMTPS id 4JK8Mc4B31z9s0r - for ; Thu, 23 Dec 2021 10:16:10 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id D051D830C3; - Thu, 23 Dec 2021 00:15:59 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=quarantine dis=none) header.from=icloud.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=icloud.com header.i=@icloud.com header.b="SkTQ1vLj"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 0DA67830F5; Wed, 22 Dec 2021 23:52:26 +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=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT, - FREEMAIL_FROM,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS autolearn=ham - autolearn_force=no version=3.4.2 -Received: from st43p00im-ztbu10073601.me.com (st43p00im-ztbu10073601.me.com - [17.58.63.184]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 1598D830C2 - for ; Wed, 22 Dec 2021 23:52:23 +0100 (CET) -Authentication-Results: phobos.denx.de; dmarc=pass (p=quarantine dis=none) - header.from=icloud.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=twatson52@icloud.com -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=icloud.com; - s=1a1hai; t=1640213541; - bh=9Gu/RsbBH8Lwy0caxjtXwguQwc3tOXLqzye8cafMd78=; - h=From:To:Subject:Date:Message-Id:MIME-Version; - b=SkTQ1vLjDZUB4S3pQ+QOuMAQs7y78hvdCVG59JmuiBtL/pLL9IskzfDYEEVxmBQ8j - QIbZXSdaHlAH3tL3ajaqL0+IJp7J/yQ5/wpmmTsRMBdk0xcgSGilBCve35DMoKYFu1 - YSaXYI8GDtaBL5R9EGZAW6SekyeIWfyy03PQpawqJpTlqUNZuLdrr9mGRF/q2fbSHd - Fr4qzePCKzk3GsUhdfkh8hEDS4lOGVAPa3K2mGEpK6K/+Gv3rCckgYrV5IAJQ8YpdP - SCmRL3N03P5wkt5WiYasawJW4pcx92J2RXtyikC9fc6p67bGXkUJA+8dOtxlOyBY8E - 8TrKBWY9cvKTw== -Received: from jacobs-p52.memphis.edu - (99-122-90-201.lightspeed.mmphtn.sbcglobal.net [99.122.90.201]) - by st43p00im-ztbu10073601.me.com (Postfix) with ESMTPSA id 283205A0974; - Wed, 22 Dec 2021 22:52:21 +0000 (UTC) -From: Thomas Watson -To: u-boot@lists.denx.de -Cc: Thomas Watson , - Marek Vasut -Subject: [PATCH v2] console: usb: kbd: Limit poll frequency to improve - performance -Date: Wed, 22 Dec 2021 16:51:26 -0600 -Message-Id: <20211222225124.7154-1-twatson52@icloud.com> -X-Mailer: git-send-email 2.31.1 -MIME-Version: 1.0 -X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.425, 18.0.790 - definitions=2021-12-22_02:2021-12-22, - 2021-12-22 signatures=0 -X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 - malwarescore=0 - phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 mlxscore=0 - mlxlogscore=934 adultscore=0 classifier=spam adjust=0 reason=mlx - scancount=1 engine=8.0.1-2009150000 definitions=main-2112220119 -X-Mailman-Approved-At: Thu, 23 Dec 2021 00:15:58 +0100 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.38 -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.2 at phobos.denx.de -X-Virus-Status: Clean - -Using the XHCI driver, the function `usb_kbd_poll_for_event` takes -30-40ms to run. The exact time is dependent on the polling interval the -keyboard requests in its descriptor, and likely cannot be significantly -reduced without major rework to the XHCI driver. - -The U-Boot EFI console service sets a timer to poll the keyboard every 5 -microseconds, and this timer is checked every time a block is read off -disk. The net effect is that, on my system, loading a ~40MiB kernel and -initrd takes about 62 seconds with a slower keyboard and 53 seconds -with a faster one, with the vast majority of the time spent polling the -keyboard. - -To solve this problem, this patch adds a 20ms delay between consecutive -calls to `usb_kbd_poll_for_event`. This is sufficient to reduce the -total loading time to under half a second for both keyboards, and does -not impact the perceived keystroke latency. - -Signed-off-by: Thomas Watson ---- -This revision wraps the comment at 80 characters and also should not -have been corrupted by my e-mail client. - - common/usb_kbd.c | 20 +++++++++++++++----- - 1 file changed, 15 insertions(+), 5 deletions(-) - -diff --git a/common/usb_kbd.c b/common/usb_kbd.c -index afad260d3d..5408c821b4 100644 ---- a/common/usb_kbd.c -+++ b/common/usb_kbd.c -@@ -118,7 +118,7 @@ struct usb_kbd_pdata { - extern int __maybe_unused net_busy_flag; - - /* The period of time between two calls of usb_kbd_testc(). */ --static unsigned long __maybe_unused kbd_testc_tms; -+static unsigned long kbd_testc_tms; - - /* Puts character in the queue and sets up the in and out pointer. */ - static void usb_kbd_put_queue(struct usb_kbd_pdata *data, u8 c) -@@ -394,21 +394,31 @@ static int usb_kbd_testc(struct stdio_dev *sdev) - struct usb_device *usb_kbd_dev; - struct usb_kbd_pdata *data; - -+ /* -+ * Polling the keyboard for an event can take dozens of milliseconds. -+ * Add a delay between polls to avoid blocking activity which polls -+ * rapidly, like the UEFI console timer. -+ */ -+ unsigned long poll_delay = CONFIG_SYS_HZ / 50; -+ - #ifdef CONFIG_CMD_NET - /* - * If net_busy_flag is 1, NET transfer is running, - * then we check key-pressed every second (first check may be - * less than 1 second) to improve TFTP booting performance. - */ -- if (net_busy_flag && (get_timer(kbd_testc_tms) < CONFIG_SYS_HZ)) -- return 0; -- kbd_testc_tms = get_timer(0); -+ if (net_busy_flag) -+ poll_delay = CONFIG_SYS_HZ; - #endif -+ - dev = stdio_get_by_name(sdev->name); - usb_kbd_dev = (struct usb_device *)dev->priv; - data = usb_kbd_dev->privptr; - -- usb_kbd_poll_for_event(usb_kbd_dev); -+ if (get_timer(kbd_testc_tms) >= poll_delay) { -+ usb_kbd_poll_for_event(usb_kbd_dev); -+ kbd_testc_tms = get_timer(0); -+ } - - return !(data->usb_in_pointer == data->usb_out_pointer); - } From e06a81622d476c077573e504e78c97f92d123778 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 15 Feb 2022 17:06:52 +0000 Subject: [PATCH 098/271] BR: libuuid-devel --- uboot-tools.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/uboot-tools.spec b/uboot-tools.spec index e04730a..1a4127c 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -46,6 +46,7 @@ BuildRequires: python3-libfdt BuildRequires: flex bison BuildRequires: openssl-devel BuildRequires: SDL-devel +BuildRequires: libuuid-devel BuildRequires: swig %ifarch aarch64 BuildRequires: arm-trusted-firmware-armv8 From be009d93163e00efee372cde135e84a36921acc0 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 15 Feb 2022 18:51:20 +0000 Subject: [PATCH 099/271] add gnutls-devel --- uboot-tools.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/uboot-tools.spec b/uboot-tools.spec index 1a4127c..2125458 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -47,6 +47,7 @@ BuildRequires: flex bison BuildRequires: openssl-devel BuildRequires: SDL-devel BuildRequires: libuuid-devel +BuildRequires: gnutls-devel BuildRequires: swig %ifarch aarch64 BuildRequires: arm-trusted-firmware-armv8 From 359979e25b7a54bdfb46b6162dca116fbea6325d Mon Sep 17 00:00:00 2001 From: Javier Martinez Canillas Date: Sat, 19 Feb 2022 11:11:28 +0100 Subject: [PATCH 100/271] Add support for another rk3399 device --- aarch64-boards | 1 + ...nitial-support-for-the-PinePhone-Pro.patch | 886 ++++++++++++++++++ uboot-tools.spec | 5 +- 3 files changed, 890 insertions(+), 2 deletions(-) create mode 100644 rockchip-Add-initial-support-for-the-PinePhone-Pro.patch diff --git a/aarch64-boards b/aarch64-boards index de5f479..a38107c 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -58,6 +58,7 @@ pine64-lts pine64_plus pinebook pinebook-pro-rk3399 +pinephone-pro-rk3399 pine_h64 pinephone pinetab diff --git a/rockchip-Add-initial-support-for-the-PinePhone-Pro.patch b/rockchip-Add-initial-support-for-the-PinePhone-Pro.patch new file mode 100644 index 0000000..3dc7614 --- /dev/null +++ b/rockchip-Add-initial-support-for-the-PinePhone-Pro.patch @@ -0,0 +1,886 @@ +From: Martijn Braam +Subject: [PATCH] rockchip: Add initial support for the PinePhone Pro +Date: Thu, 21 Oct 2021 19:18:43 +0200 + +This is a new device by PINE64 that's very similar to the Pinebook Pro +that's already supported. + +Specification: +- Rockchip RK3399 +- 4GB Dual-Channel LPDDR4 +- 128GB eMMC +- mSD card slot +- AP6255 for 802.11ac WiFi and Bluetooth +- 6 inch 720*1440 DSI display +- Quectel EG25g usb modem +- Type-C port with alt-mode display (DP 1.2) and PD charging. + +Signed-off-by: Martijn Braam +--- + + arch/arm/dts/Makefile | 1 + + arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi | 44 ++ + arch/arm/dts/rk3399-pinephone-pro.dts | 520 ++++++++++++++++++ + arch/arm/mach-rockchip/rk3399/Kconfig | 8 + + board/pine64/pinephone-pro-rk3399/Kconfig | 15 + + board/pine64/pinephone-pro-rk3399/MAINTAINERS | 8 + + board/pine64/pinephone-pro-rk3399/Makefile | 1 + + .../pinephone-pro-rk3399.c | 57 ++ + configs/pinephone-pro-rk3399_defconfig | 92 ++++ + include/configs/pinephone-pro-rk3399.h | 23 + + 10 files changed, 769 insertions(+) + create mode 100644 arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi + create mode 100644 arch/arm/dts/rk3399-pinephone-pro.dts + create mode 100644 board/pine64/pinephone-pro-rk3399/Kconfig + create mode 100644 board/pine64/pinephone-pro-rk3399/MAINTAINERS + create mode 100644 board/pine64/pinephone-pro-rk3399/Makefile + create mode 100644 board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c + create mode 100644 configs/pinephone-pro-rk3399_defconfig + create mode 100644 include/configs/pinephone-pro-rk3399.h + +diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile +index ed3d360bb1..3206370226 100644 +--- a/arch/arm/dts/Makefile ++++ b/arch/arm/dts/Makefile +@@ -137,6 +137,7 @@ dtb-$(CONFIG_ROCKCHIP_RK3399) += \ + rk3399-nanopi-r4s.dtb \ + rk3399-orangepi.dtb \ + rk3399-pinebook-pro.dtb \ ++ rk3399-pinephone-pro.dtb \ + rk3399-puma-haikou.dtb \ + rk3399-roc-pc.dtb \ + rk3399-roc-pc-mezzanine.dtb \ +diff --git a/arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi +new file mode 100644 +index 0000000000..9d44db5978 +--- /dev/null ++++ b/arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi +@@ -0,0 +1,44 @@ ++// SPDX-License-Identifier: GPL-2.0+ ++/* ++ * Copyright (C) 2019 Peter Robinson ++ * Copyright (C) 2021 Martijn Braam ++ */ ++ ++#include "rk3399-u-boot.dtsi" ++#include "rk3399-sdram-lpddr4-100.dtsi" ++ ++/ { ++ aliases { ++ spi0 = &spi1; ++ }; ++ ++ chosen { ++ u-boot,spl-boot-order = "same-as-spl", &sdhci, &sdmmc; ++ }; ++ ++ config { ++ u-boot,spl-payload-offset = <0x60000>; /* @ 384KB */ ++ }; ++}; ++ ++&i2c0 { ++ u-boot,dm-pre-reloc; ++}; ++ ++&rk818 { ++ u-boot,dm-pre-reloc; ++}; ++ ++&rng { ++ status = "okay"; ++}; ++ ++&sdhci { ++ max-frequency = <25000000>; ++ u-boot,dm-pre-reloc; ++}; ++ ++&sdmmc { ++ max-frequency = <20000000>; ++ u-boot,dm-pre-reloc; ++}; +diff --git a/arch/arm/dts/rk3399-pinephone-pro.dts b/arch/arm/dts/rk3399-pinephone-pro.dts +new file mode 100644 +index 0000000000..3fe1845ced +--- /dev/null ++++ b/arch/arm/dts/rk3399-pinephone-pro.dts +@@ -0,0 +1,520 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++/* ++ * Copyright (c) 2021 Martijn Braam ++ */ ++ ++/dts-v1/; ++#include "rk3399.dtsi" ++#include "rk3399-opp.dtsi" ++ ++/ { ++ model = "Pine64 PinePhone Pro"; ++ compatible = "pine64,pinephone-pro", "rockchip,rk3399"; ++ ++ chosen { ++ stdout-path = "serial2:1500000n8"; ++ }; ++ ++ sdio_pwrseq: sdio-pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ pinctrl-names = "default"; ++ }; ++ ++ /* Power tree */ ++ /* Root power source */ ++ vcc_sysin: vcc-sysin { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc_sysin"; ++ regulator-always-on; ++ regulator-boot-on; ++ }; ++ ++ /* Main 3.3v supply */ ++ vcc3v3_sys: vcc3v3-sys { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc3v3_sys"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ vin-supply = <&vcc_sysin>; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ }; ++ }; ++}; ++ ++&cpu_l0 { ++ cpu-supply = <&vdd_cpu_l>; ++}; ++ ++&cpu_l1 { ++ cpu-supply = <&vdd_cpu_l>; ++}; ++ ++&cpu_l2 { ++ cpu-supply = <&vdd_cpu_l>; ++}; ++ ++&cpu_l3 { ++ cpu-supply = <&vdd_cpu_l>; ++}; ++ ++&cpu_b0 { ++ cpu-supply = <&vdd_cpu_b>; ++}; ++ ++&cpu_b1 { ++ cpu-supply = <&vdd_cpu_b>; ++}; ++ ++&emmc_phy { ++ status = "okay"; ++}; ++ ++&gpu { ++ mali-supply = <&vdd_gpu>; ++ status = "okay"; ++}; ++ ++&i2c0 { ++ clock-frequency = <400000>; ++ i2c-scl-rising-time-ns = <168>; ++ i2c-scl-falling-time-ns = <4>; ++ status = "okay"; ++ ++ rk818: pmic@1c { ++ compatible = "rockchip,rk818"; ++ reg = <0x1c>; ++ interrupt-parent = <&gpio1>; ++ interrupts = ; ++ #clock-cells = <1>; ++ clock-output-names = "xin32k", "rk808-clkout2"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pmic_int_l>; ++ rockchip,system-power-controller; ++ wakeup-source; ++ ++ vcc1-supply = <&vcc_sysin>; ++ vcc2-supply = <&vcc_sysin>; ++ vcc3-supply = <&vcc_sysin>; ++ vcc4-supply = <&vcc_sysin>; ++ vcc6-supply = <&vcc_sysin>; ++ vcc7-supply = <&vcc3v3_sys>; ++ vcc8-supply = <&vcc_sysin>; ++ vcc9-supply = <&vcc3v3_sys>; ++ ++ regulators { ++ vdd_cpu_l: DCDC_REG1 { ++ regulator-name = "vdd_cpu_1"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <750000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-ramp-delay = <6001>; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vdd_center: DCDC_REG2 { ++ regulator-name = "vdd_center"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <800000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-ramp-delay = <6001>; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc_ddr: DCDC_REG3 { ++ regulator-name = "vcc_ddr"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ }; ++ }; ++ ++ vcc_1v8: DCDC_REG4 { ++ regulator-name = "vcc_1v8"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <1800000>; ++ }; ++ }; ++ ++ vcca3v0_codec: LDO_REG1 { ++ regulator-name = "vcca3v0_codec"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3000000>; ++ regulator-max-microvolt = <3000000>; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc3v0_touch: LDO_REG2 { ++ regulator-name = "vcc3v0_touch"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3000000>; ++ regulator-max-microvolt = <3000000>; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcca1v8_codec: LDO_REG3 { ++ regulator-name = "vcca1v8_codec"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc_power_on: LDO_REG4 { ++ regulator-name = "vcc_power_on"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vcc_3v0: LDO_REG5 { ++ regulator-name = "vcc_3v0"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3000000>; ++ regulator-max-microvolt = <3000000>; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3000000>; ++ }; ++ }; ++ ++ vcc_1v5: LDO_REG6 { ++ regulator-name = "vcc_1v5"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1500000>; ++ regulator-max-microvolt = <1500000>; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <1500000>; ++ }; ++ }; ++ ++ vcc1v8_dvp: LDO_REG7 { ++ regulator-name = "vcc1v8_dvp"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc3v3_s3: LDO_REG8 { ++ regulator-name = "vcc3v3_s3"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc_sd: LDO_REG9 { ++ regulator-name = "vcc_sd"; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vcc3v3_s0: SWITCH_REG { ++ regulator-name = "vcc3v3_s0"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ }; ++ }; ++ ++ boost_otg: DCDC_BOOST { ++ regulator-name = "boost_otg"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <5000000>; ++ }; ++ }; ++ ++ otg_switch: OTG_SWITCH { ++ regulator-name = "otg_switch"; ++ }; ++ }; ++ }; ++ ++ vdd_cpu_b: regulator@40 { ++ compatible = "silergy,syr827"; ++ reg = <0x40>; ++ fcs,suspend-voltage-selector = <1>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&vsel1_pin>; ++ regulator-name = "vdd_cpu_b"; ++ regulator-min-microvolt = <712500>; ++ regulator-max-microvolt = <1500000>; ++ regulator-ramp-delay = <1000>; ++ regulator-always-on; ++ regulator-boot-on; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vdd_gpu: regulator@41 { ++ compatible = "silergy,syr828"; ++ reg = <0x41>; ++ fcs,suspend-voltage-selector = <1>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&vsel2_pin>; ++ regulator-name = "vdd_gpu"; ++ regulator-min-microvolt = <712500>; ++ regulator-max-microvolt = <1500000>; ++ regulator-ramp-delay = <1000>; ++ regulator-always-on; ++ regulator-boot-on; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++}; ++ ++&i2c1 { ++ i2c-scl-rising-time-ns = <300>; ++ i2c-scl-falling-time-ns = <15>; ++ status = "okay"; ++}; ++ ++&i2c3 { ++ i2c-scl-rising-time-ns = <450>; ++ i2c-scl-falling-time-ns = <15>; ++ status = "okay"; ++}; ++ ++&i2c4 { ++ i2c-scl-rising-time-ns = <600>; ++ i2c-scl-falling-time-ns = <20>; ++ status = "okay"; ++ ++ fusb0: typec-portc@22 { ++ compatible = "fcs,fusb302"; ++ reg = <0x22>; ++ interrupt-parent = <&gpio1>; ++ interrupts = ; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&fusb0_int>; ++ status = "okay"; ++ }; ++}; ++ ++&io_domains { ++ status = "okay"; ++ ++ bt656-supply = <&vcc1v8_dvp>; ++ audio-supply = <&vcca1v8_codec>; ++ sdmmc-supply = <&vcc_sd>; ++ gpio1830-supply = <&vcc_3v0>; ++}; ++ ++&pmu_io_domains { ++ pmu1830-supply = <&vcc_3v0>; ++ status = "okay"; ++}; ++ ++&pinctrl { ++ bt { ++ bt_enable_h: bt-enable-h { ++ rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ ++ bt_host_wake_l: bt-host-wake-l { ++ rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_down>; ++ }; ++ ++ bt_wake_l: bt-wake-l { ++ rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ buttons { ++ pwrbtn: pwrbtn { ++ rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ fusb302x { ++ fusb0_int: fusb0-int { ++ rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ leds { ++ work_led_pin: work-led-pin { ++ rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ ++ diy_led_pin: diy-led-pin { ++ rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ pcie { ++ pcie_perst: pcie-perst { ++ rockchip,pins = <2 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ ++ pcie_pwr_en: pcie-pwr-en { ++ rockchip,pins = <1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ pmic { ++ pmic_int_l: pmic-int-l { ++ rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ ++ vsel1_pin: vsel1-pin { ++ rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>; ++ }; ++ ++ vsel2_pin: vsel2-pin { ++ rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>; ++ }; ++ }; ++ ++ sdcard { ++ sdmmc0_pwr_h: sdmmc0-pwr-h { ++ rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ ++ }; ++ ++ sdio-pwrseq { ++ wifi_enable_h: wifi-enable-h { ++ rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ usb-typec { ++ vcc5v0_typec_en: vcc5v0_typec_en { ++ rockchip,pins = <1 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ usb2 { ++ vcc5v0_host_en: vcc5v0-host-en { ++ rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++}; ++ ++&pwm0 { ++ status = "okay"; ++}; ++ ++&pwm1 { ++ status = "okay"; ++}; ++ ++&pwm2 { ++ status = "okay"; ++}; ++ ++&sdio0 { ++ bus-width = <4>; ++ cap-sd-highspeed; ++ cap-sdio-irq; ++ disable-wp; ++ keep-power-in-suspend; ++ mmc-pwrseq = <&sdio_pwrseq>; ++ non-removable; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>; ++ sd-uhs-sdr104; ++ status = "okay"; ++}; ++ ++&sdmmc { ++ bus-width = <4>; ++ cap-sd-highspeed; ++ cd-gpios = <&gpio0 7 GPIO_ACTIVE_LOW>; ++ disable-wp; ++ max-frequency = <150000000>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>; ++ vmmc-supply = <&vcc3v3_s3>; ++ vqmmc-supply = <&vcc_1v8>; ++ status = "okay"; ++}; ++ ++&sdhci { ++ bus-width = <8>; ++ mmc-hs200-1_8v; ++ non-removable; ++ status = "okay"; ++}; ++ ++&tsadc { ++ /* tshut mode 0:CRU 1:GPIO */ ++ rockchip,hw-tshut-mode = <1>; ++ /* tshut polarity 0:LOW 1:HIGH */ ++ rockchip,hw-tshut-polarity = <1>; ++ status = "okay"; ++}; ++ ++&uart2 { ++ status = "okay"; ++}; ++ ++&vopb { ++ status = "okay"; ++}; ++ ++&vopb_mmu { ++ status = "okay"; ++}; ++ ++&vopl { ++ status = "okay"; ++}; ++ ++&vopl_mmu { ++ status = "okay"; ++}; +diff --git a/arch/arm/mach-rockchip/rk3399/Kconfig b/arch/arm/mach-rockchip/rk3399/Kconfig +index 17628f9171..3ba603ca80 100644 +--- a/arch/arm/mach-rockchip/rk3399/Kconfig ++++ b/arch/arm/mach-rockchip/rk3399/Kconfig +@@ -28,6 +28,13 @@ config TARGET_PINEBOOK_PRO_RK3399 + with 4Gb RAM, onboard eMMC, USB-C, a USB3 and USB2 port, + 1920*1080 screen and all the usual laptop features. + ++config TARGET_PINEPHONE_PRO_RK3399 ++ bool "PinePhone Pro" ++ help ++ PinePhone Pro is a phone based on the Rockchip rk3399 SoC ++ with 4Gb RAM, onboard eMMC, USB-C, a headphone jack, ++ 720x1440 screen and an external Quectel USB modem. ++ + config TARGET_PUMA_RK3399 + bool "Theobroma Systems RK3399-Q7 (Puma)" + help +@@ -154,6 +161,7 @@ endif # BOOTCOUNT_LIMIT + source "board/firefly/roc-pc-rk3399/Kconfig" + source "board/google/gru/Kconfig" + source "board/pine64/pinebook-pro-rk3399/Kconfig" ++source "board/pine64/pinephone-pro-rk3399/Kconfig" + source "board/pine64/rockpro64_rk3399/Kconfig" + source "board/rockchip/evb_rk3399/Kconfig" + source "board/theobroma-systems/puma_rk3399/Kconfig" +diff --git a/board/pine64/pinephone-pro-rk3399/Kconfig b/board/pine64/pinephone-pro-rk3399/Kconfig +new file mode 100644 +index 0000000000..13d6465ae6 +--- /dev/null ++++ b/board/pine64/pinephone-pro-rk3399/Kconfig +@@ -0,0 +1,15 @@ ++if TARGET_PINEPHONE_PRO_RK3399 ++ ++config SYS_BOARD ++ default "pinephone-pro-rk3399" ++ ++config SYS_VENDOR ++ default "pine64" ++ ++config SYS_CONFIG_NAME ++ default "pinephone-pro-rk3399" ++ ++config BOARD_SPECIFIC_OPTIONS ++ def_bool y ++ ++endif +diff --git a/board/pine64/pinephone-pro-rk3399/MAINTAINERS b/board/pine64/pinephone-pro-rk3399/MAINTAINERS +new file mode 100644 +index 0000000000..9ca4fc4cbe +--- /dev/null ++++ b/board/pine64/pinephone-pro-rk3399/MAINTAINERS +@@ -0,0 +1,8 @@ ++PINEPHONE_PRO ++M: Martijn Braam ++S: Maintained ++F: board/pine64/rk3399-pinephone-pro/ ++F: include/configs/rk3399-pinephone-pro.h ++F: arch/arm/dts/rk3399-pinephone-pro.dts ++F: arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi ++F: configs/pinephone-pro-rk3399_defconfig +diff --git a/board/pine64/pinephone-pro-rk3399/Makefile b/board/pine64/pinephone-pro-rk3399/Makefile +new file mode 100644 +index 0000000000..8d9203053e +--- /dev/null ++++ b/board/pine64/pinephone-pro-rk3399/Makefile +@@ -0,0 +1 @@ ++obj-y += pinephone-pro-rk3399.o +diff --git a/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c b/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c +new file mode 100644 +index 0000000000..8efeb6ea3d +--- /dev/null ++++ b/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c +@@ -0,0 +1,57 @@ ++// SPDX-License-Identifier: GPL-2.0+ ++/* ++ * (C) Copyright 2019 Vasily Khoruzhick ++ * (C) Copyright 2021 Martijn Braam ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#define GRF_IO_VSEL_BT565_SHIFT 0 ++#define PMUGRF_CON0_VSEL_SHIFT 8 ++ ++#ifdef CONFIG_MISC_INIT_R ++static void setup_iodomain(void) ++{ ++ struct rk3399_grf_regs *grf = ++ syscon_get_first_range(ROCKCHIP_SYSCON_GRF); ++ struct rk3399_pmugrf_regs *pmugrf = ++ syscon_get_first_range(ROCKCHIP_SYSCON_PMUGRF); ++ ++ /* BT565 is in 1.8v domain */ ++ rk_setreg(&grf->io_vsel, 1 << GRF_IO_VSEL_BT565_SHIFT); ++ ++ /* Set GPIO1 1.8v/3.0v source select to PMU1830_VOL */ ++ rk_setreg(&pmugrf->soc_con0, 1 << PMUGRF_CON0_VSEL_SHIFT); ++} ++ ++int misc_init_r(void) ++{ ++ const u32 cpuid_offset = 0x7; ++ const u32 cpuid_length = 0x10; ++ u8 cpuid[cpuid_length]; ++ int ret; ++ ++ setup_iodomain(); ++ ++ ret = rockchip_cpuid_from_efuse(cpuid_offset, cpuid_length, cpuid); ++ if (ret) ++ return ret; ++ ++ ret = rockchip_cpuid_set(cpuid, cpuid_length); ++ if (ret) ++ return ret; ++ ++ ret = rockchip_setup_macaddr(); ++ ++ return ret; ++} ++ ++#endif +diff --git a/configs/pinephone-pro-rk3399_defconfig b/configs/pinephone-pro-rk3399_defconfig +new file mode 100644 +index 0000000000..2cf80f7d35 +--- /dev/null ++++ b/configs/pinephone-pro-rk3399_defconfig +@@ -0,0 +1,92 @@ ++CONFIG_ARM=y ++CONFIG_SKIP_LOWLEVEL_INIT=y ++CONFIG_ARCH_ROCKCHIP=y ++CONFIG_SYS_TEXT_BASE=0x00200000 ++CONFIG_NR_DRAM_BANKS=1 ++CONFIG_ENV_SIZE=0x8000 ++CONFIG_ROCKCHIP_RK3399=y ++CONFIG_TARGET_PINEPHONE_PRO_RK3399=y ++CONFIG_DEBUG_UART_BASE=0xFF1A0000 ++CONFIG_DEBUG_UART_CLOCK=24000000 ++CONFIG_SPL_SPI_FLASH_SUPPORT=y ++CONFIG_SPL_SPI_SUPPORT=y ++CONFIG_DEFAULT_DEVICE_TREE="rk3399-pinephone-pro" ++CONFIG_DEBUG_UART=y ++CONFIG_SYS_LOAD_ADDR=0x800800 ++CONFIG_BOOTDELAY=3 ++CONFIG_USE_PREBOOT=y ++CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-pinephone-pro.dtb" ++CONFIG_DISPLAY_BOARDINFO_LATE=y ++CONFIG_MISC_INIT_R=y ++# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set ++CONFIG_SPL_STACK_R=y ++CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000 ++CONFIG_SPL_MTD_SUPPORT=y ++CONFIG_SPL_SPI_LOAD=y ++CONFIG_TPL=y ++CONFIG_CMD_BOOTZ=y ++CONFIG_CMD_GPIO=y ++CONFIG_CMD_GPT=y ++CONFIG_CMD_I2C=y ++CONFIG_CMD_MMC=y ++CONFIG_CMD_PCI=y ++CONFIG_CMD_USB=y ++# CONFIG_CMD_SETEXPR is not set ++CONFIG_CMD_TIME=y ++CONFIG_CMD_PMIC=y ++CONFIG_CMD_REGULATOR=y ++CONFIG_SPL_OF_CONTROL=y ++CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" ++CONFIG_ENV_IS_IN_SPI_FLASH=y ++CONFIG_SYS_RELOC_GD_ENV_ADDR=y ++CONFIG_ROCKCHIP_GPIO=y ++CONFIG_SYS_I2C_ROCKCHIP=y ++CONFIG_DM_KEYBOARD=y ++CONFIG_LED=y ++CONFIG_LED_GPIO=y ++CONFIG_MISC=y ++CONFIG_ROCKCHIP_EFUSE=y ++CONFIG_MMC_DW=y ++CONFIG_MMC_DW_ROCKCHIP=y ++CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_SDMA=y ++CONFIG_MMC_SDHCI_ROCKCHIP=y ++CONFIG_SF_DEFAULT_SPEED=20000000 ++CONFIG_SPI_FLASH_GIGADEVICE=y ++CONFIG_SPI_FLASH_WINBOND=y ++CONFIG_DM_ETH=y ++CONFIG_PHY_ROCKCHIP_INNO_USB2=y ++CONFIG_PHY_ROCKCHIP_TYPEC=y ++CONFIG_DM_PMIC_FAN53555=y ++CONFIG_PMIC_RK8XX=y ++CONFIG_REGULATOR_PWM=y ++CONFIG_REGULATOR_RK8XX=y ++CONFIG_PWM_ROCKCHIP=y ++CONFIG_RAM_RK3399_LPDDR4=y ++CONFIG_DM_RESET=y ++CONFIG_DM_RNG=y ++CONFIG_RNG_ROCKCHIP=y ++CONFIG_BAUDRATE=1500000 ++CONFIG_DEBUG_UART_SHIFT=2 ++CONFIG_ROCKCHIP_SPI=y ++CONFIG_SYSRESET=y ++CONFIG_USB=y ++CONFIG_USB_XHCI_HCD=y ++CONFIG_USB_XHCI_DWC3=y ++CONFIG_USB_EHCI_HCD=y ++CONFIG_USB_EHCI_GENERIC=y ++CONFIG_USB_OHCI_HCD=y ++CONFIG_USB_OHCI_GENERIC=y ++CONFIG_USB_DWC3=y ++CONFIG_USB_DWC3_GENERIC=y ++CONFIG_USB_KEYBOARD=y ++CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y ++CONFIG_USB_HOST_ETHER=y ++CONFIG_USB_ETHER_ASIX=y ++CONFIG_USB_ETHER_RTL8152=y ++CONFIG_DM_VIDEO=y ++CONFIG_DISPLAY=y ++CONFIG_VIDEO_ROCKCHIP=y ++CONFIG_DISPLAY_ROCKCHIP_EDP=y ++CONFIG_SPL_TINY_MEMSET=y ++CONFIG_ERRNO_STR=y +diff --git a/include/configs/pinephone-pro-rk3399.h b/include/configs/pinephone-pro-rk3399.h +new file mode 100644 +index 0000000000..fefa793fdd +--- /dev/null ++++ b/include/configs/pinephone-pro-rk3399.h +@@ -0,0 +1,23 @@ ++/* SPDX-License-Identifier: GPL-2.0+ */ ++/* ++ * Copyright (C) 2016 Rockchip Electronics Co., Ltd ++ * Copyright (C) 2020 Peter Robinson ++ * Copyright (C) 2021 Martijn Braam ++ */ ++ ++#ifndef __PINEPHONE_PRO_RK3399_H ++#define __PINEPHONE_PRO_RK3399_H ++ ++#define ROCKCHIP_DEVICE_SETTINGS \ ++ "stdin=serial,usbkbd\0" \ ++ "stdout=serial,vidconsole\0" \ ++ "stderr=serial,vidconsole\0" ++ ++#include ++ ++#define SDRAM_BANK_SIZE (2UL << 30) ++ ++#define CONFIG_USB_OHCI_NEW ++#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 2 ++ ++#endif diff --git a/uboot-tools.spec b/uboot-tools.spec index 2125458..7a267f5 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -23,6 +23,7 @@ Patch4: rpi-fallback-to-max-clock-for-mmc.patch Patch5: rpi-bcm2835_sdhost-firmware-managed-clock.patch # Rockchips improvements Patch8: 0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch +Patch9: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch # Patch9: 0001-udoo_neo-Move-to-DM-for-REGUALTOR-PMIC-I2C-drivers.patch BuildRequires: bc @@ -117,7 +118,7 @@ do echo "Board: $board using rk3328" cp /usr/share/arm-trusted-firmware/rk3328/* builds/$(echo $board)/ fi - rk3399=(evb-rk3399 ficus-rk3399 firefly-rk3399 khadas-edge-captain-rk3399 khadas-edge-rk3399 khadas-edge-v-rk3399 leez-rk3399 nanopc-t4-rk3399 nanopi-m4-2gb-rk3399 nanopi-m4b-rk3399 nanopi-m4-rk3399 nanopi-neo4-rk3399 nanopi-r4s-rk3399 orangepi-rk3399 pinebook-pro-rk3399 puma-rk3399 rock960-rk3399 rock-pi-4c-rk3399 rock-pi-4-rk3399 rock-pi-n10-rk3399pro rockpro64-rk3399 roc-pc-mezzanine-rk3399 roc-pc-rk3399) + rk3399=(evb-rk3399 ficus-rk3399 firefly-rk3399 khadas-edge-captain-rk3399 khadas-edge-rk3399 khadas-edge-v-rk3399 leez-rk3399 nanopc-t4-rk3399 nanopi-m4-2gb-rk3399 nanopi-m4b-rk3399 nanopi-m4-rk3399 nanopi-neo4-rk3399 nanopi-r4s-rk3399 orangepi-rk3399 pinebook-pro-rk3399 pinephone-pro-rk3399 puma-rk3399 rock960-rk3399 rock-pi-4c-rk3399 rock-pi-4-rk3399 rock-pi-n10-rk3399pro rockpro64-rk3399 roc-pc-mezzanine-rk3399 roc-pc-rk3399) if [[ " ${rk3399[*]} " == *" $board "* ]]; then echo "Board: $board using rk3399" cp /usr/share/arm-trusted-firmware/rk3399/* builds/$(echo $board)/ @@ -128,7 +129,7 @@ do %make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" O=builds/$(echo $board)/ # build spi images for rockchip boards with SPI flash - rkspi=(evb-rk3399 khadas-edge-captain-rk3399 khadas-edge-rk3399 khadas-edge-v-rk3399 nanopc-t4-rk3399 pinebook-pro-rk3399 rockpro64-rk3399 roc-pc-mezzanine-rk3399 roc-pc-rk3399) + rkspi=(evb-rk3399 khadas-edge-captain-rk3399 khadas-edge-rk3399 khadas-edge-v-rk3399 nanopc-t4-rk3399 pinebook-pro-rk3399 pinephone-pro-rk3399 rockpro64-rk3399 roc-pc-mezzanine-rk3399 roc-pc-rk3399) if [[ " ${rkspi[*]} " == *" $board "* ]]; then echo "Board: $board with SPI flash" builds/$(echo $board)/tools/mkimage -n rk3399 -T rkspi -d builds/$(echo $board)/tpl/u-boot-tpl.bin:builds/$(echo $board)/spl/u-boot-spl.bin builds/$(echo $board)/idbloader.spi From 6706eb16a4eced58eb53b2f702c8196673a84f78 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 8 Mar 2022 09:53:45 +0000 Subject: [PATCH 101/271] 2022.04 RC3 --- sources | 2 +- uboot-tools.spec | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/sources b/sources index 6267dad..67d2217 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2022.04-rc2.tar.bz2) = 34af2d91a86e6864615ab09a2da7ec752beb56808d9eea652d425476cd1bbdf84d4e5f98740254f7cd91a04f11712d073450e74f4e07ae4180d845cb38620ee3 +SHA512 (u-boot-2022.04-rc3.tar.bz2) = 0c6c2534709045461872a348b988863197743b58732b6ba6a25069dd31de96312b699c571f9af4bcf40d9cdbe920cf6378efde876669e5e421a405e4d15359ec diff --git a/uboot-tools.spec b/uboot-tools.spec index 7a267f5..65c0415 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,8 +1,8 @@ -%global candidate rc2 +%global candidate rc3 Name: uboot-tools Version: 2022.04 -Release: 0.2%{?candidate:.%{candidate}}%{?dist} +Release: 0.3%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -252,6 +252,10 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Tue Mar 08 2022 Peter Robinson - 2022.04-0.3.rc3 +- Update to 2022.04 RC3 +- Enable new Rockchip devices + * Tue Feb 15 2022 Peter Robinson - 2022.04-0.2.rc2 - Update to 2022.04 RC2 From 1b64b89c2dd5779207d6721d1f98dfd21f2c7d4c Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Fri, 11 Mar 2022 14:40:53 +0000 Subject: [PATCH 102/271] Add the ability to do a tools only build, drop old el7 support --- uboot-tools.spec | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 65c0415..bd1a217 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,5 @@ %global candidate rc3 +%bcond_without toolsonly Name: uboot-tools Version: 2022.04 @@ -27,28 +28,19 @@ Patch9: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch # Patch9: 0001-udoo_neo-Move-to-DM-for-REGUALTOR-PMIC-I2C-drivers.patch BuildRequires: bc +BuildRequires: bison BuildRequires: dtc -BuildRequires: make -BuildRequires: perl-interpreter -# Requirements for building on el7 -%if 0%{?rhel} == 7 -BuildRequires: devtoolset-7-build -BuildRequires: devtoolset-7-binutils -BuildRequires: devtoolset-7-gcc -BuildRequires: python2-devel -BuildRequires: python2-setuptools -BuildRequires: python2-libfdt -%else +BuildRequires: flex BuildRequires: gcc +BuildRequires: gnutls-devel +BuildRequires: libuuid-devel +BuildRequires: make +BuildRequires: openssl-devel +BuildRequires: perl-interpreter BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-libfdt -%endif -BuildRequires: flex bison -BuildRequires: openssl-devel BuildRequires: SDL-devel -BuildRequires: libuuid-devel -BuildRequires: gnutls-devel BuildRequires: swig %ifarch aarch64 BuildRequires: arm-trusted-firmware-armv8 @@ -59,6 +51,7 @@ Requires: dtc This package contains a few U-Boot utilities - mkimage for creating boot images and fw_printenv/fw_setenv for manipulating the boot environment variables. +%if %{with toolsonly} %ifarch aarch64 %package -n uboot-images-armv8 Summary: U-Boot firmware images for aarch64 boards @@ -76,6 +69,7 @@ BuildArch: noarch %description -n uboot-images-armv7 U-Boot firmware binaries for armv7 boards %endif +%endif %prep %autosetup -p1 -n u-boot-%{version}%{?candidate:-%{candidate}} @@ -85,14 +79,10 @@ cp %SOURCE1 %SOURCE2 . %build mkdir builds -%if 0%{?rhel} == 7 -#Enabling DTS for .el7 -%{?enable_devtoolset7:%{enable_devtoolset7}} -%endif - %make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" tools-only_defconfig O=builds/ %make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" tools-all O=builds/ +%if %{with toolsonly} # U-Boot device firmwares don't currently support LTO %define _lto_cflags %{nil} @@ -148,6 +138,7 @@ do fi done +%endif %endif %install @@ -155,6 +146,7 @@ mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}%{_mandir}/man1 mkdir -p %{buildroot}%{_datadir}/uboot/ +%if %{with toolsonly} %ifarch aarch64 for board in $(ls builds) do @@ -208,6 +200,7 @@ do fi done %endif +%endif for tool in bmp_logo dumpimage env/fw_printenv fit_check_sign fit_info gdb/gdbcont gdb/gdbsend gen_eth_addr gen_ethaddr_crc img2srec mkenvimage mkimage mksunxiboot ncb proftool sunxi-spl-image-builder ubsha1 xway-swap-bytes kwboot do @@ -241,6 +234,7 @@ cp -p board/warp7/README builds/docs/README.warp7 %{_mandir}/man1/mkimage.1* %dir %{_datadir}/uboot/ +%if %{with toolsonly} %ifarch aarch64 %files -n uboot-images-armv8 %{_datadir}/uboot/* @@ -250,6 +244,7 @@ cp -p board/warp7/README builds/docs/README.warp7 %files -n uboot-images-armv7 %{_datadir}/uboot/* %endif +%endif %changelog * Tue Mar 08 2022 Peter Robinson - 2022.04-0.3.rc3 From 2a3a46103d3c40bd3214a62c6af6f831e1a552e4 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 28 Mar 2022 17:37:15 +0100 Subject: [PATCH 103/271] 2022.04 RC5 --- sources | 2 +- uboot-tools.spec | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sources b/sources index 67d2217..20a29f2 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2022.04-rc3.tar.bz2) = 0c6c2534709045461872a348b988863197743b58732b6ba6a25069dd31de96312b699c571f9af4bcf40d9cdbe920cf6378efde876669e5e421a405e4d15359ec +SHA512 (u-boot-2022.04-rc5.tar.bz2) = 9450786f7decedc9ccd6973c2d3a1554edc10dcc64285e3793341291d003bf7676e8a9f146191b1db7869d1855a1da5c8dcbd02a76c828ad9a95f78297bf0d5e diff --git a/uboot-tools.spec b/uboot-tools.spec index bd1a217..594f15f 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,9 +1,9 @@ -%global candidate rc3 +%global candidate rc5 %bcond_without toolsonly Name: uboot-tools Version: 2022.04 -Release: 0.3%{?candidate:.%{candidate}}%{?dist} +Release: 0.4%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -247,6 +247,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Mon Mar 28 2022 Peter Robinson - 2022.04-0.4.rc5 +- Update to 2022.04 RC5 + * Tue Mar 08 2022 Peter Robinson - 2022.04-0.3.rc3 - Update to 2022.04 RC3 - Enable new Rockchip devices From 7b988dd8fc35fbfb1de902e64573577726a6671d Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 28 Mar 2022 17:48:50 +0100 Subject: [PATCH 104/271] Upload fixes source, add ncurses-devel --- sources | 2 +- uboot-tools.spec | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/sources b/sources index 20a29f2..ebcb769 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2022.04-rc5.tar.bz2) = 9450786f7decedc9ccd6973c2d3a1554edc10dcc64285e3793341291d003bf7676e8a9f146191b1db7869d1855a1da5c8dcbd02a76c828ad9a95f78297bf0d5e +SHA512 (u-boot-2022.04-rc5.tar.bz2) = 6fbd2eeb0155ba3ab0460bc0a31ab5434f059b1f8eb7a182ee147583c8b827ef9979601fd147bfe9f617998433a2292cd2491f5a03cfc8bf90127fc45e585f1a diff --git a/uboot-tools.spec b/uboot-tools.spec index 594f15f..905a847 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -35,6 +35,7 @@ BuildRequires: gcc BuildRequires: gnutls-devel BuildRequires: libuuid-devel BuildRequires: make +BuildRequires: ncurses-devel BuildRequires: openssl-devel BuildRequires: perl-interpreter BuildRequires: python3-devel From b6626c87f42b02118991723ca64ef29a21e1f139 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 29 Mar 2022 21:36:14 +0100 Subject: [PATCH 105/271] cleanup some old patches --- ...to-DM-for-REGUALTOR-PMIC-I2C-drivers.patch | 244 ------------------ dragonboard-fixes.patch | 115 --------- uboot-tools.spec | 1 - 3 files changed, 360 deletions(-) delete mode 100644 0001-udoo_neo-Move-to-DM-for-REGUALTOR-PMIC-I2C-drivers.patch delete mode 100644 dragonboard-fixes.patch diff --git a/0001-udoo_neo-Move-to-DM-for-REGUALTOR-PMIC-I2C-drivers.patch b/0001-udoo_neo-Move-to-DM-for-REGUALTOR-PMIC-I2C-drivers.patch deleted file mode 100644 index 0f762d9..0000000 --- a/0001-udoo_neo-Move-to-DM-for-REGUALTOR-PMIC-I2C-drivers.patch +++ /dev/null @@ -1,244 +0,0 @@ -From 53f3d6e9219a36f375e27150b8ec1088624f1aa0 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Tue, 21 Dec 2021 17:25:35 +0000 -Subject: [PATCH] udoo_neo: Move to DM for REGUALTOR/PMIC/I2C drivers - -This moves over the PMIC power init to DM and the associated i2c and -regulator bits. - -Signed-off-by: Peter Robinson ---- - board/udoo/neo/neo.c | 139 +++---------------------------------- - configs/udoo_neo_defconfig | 10 +-- - include/configs/udoo_neo.h | 5 -- - 3 files changed, 15 insertions(+), 139 deletions(-) - -diff --git a/board/udoo/neo/neo.c b/board/udoo/neo/neo.c -index 5e40583ab4..9e2a66996c 100644 ---- a/board/udoo/neo/neo.c -+++ b/board/udoo/neo/neo.c -@@ -51,11 +51,6 @@ enum { - PAD_CTL_PUS_22K_UP | PAD_CTL_SPEED_LOW | \ - PAD_CTL_DSE_80ohm | PAD_CTL_SRE_FAST | PAD_CTL_HYS) - --#define I2C_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE | \ -- PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED | \ -- PAD_CTL_DSE_40ohm | PAD_CTL_HYS | \ -- PAD_CTL_ODE) -- - #define ENET_PAD_CTRL (PAD_CTL_PUS_100K_UP | PAD_CTL_PUE | \ - PAD_CTL_SPEED_MED | \ - PAD_CTL_DSE_40ohm | PAD_CTL_SRE_FAST) -@@ -83,135 +78,25 @@ int dram_init(void) - return 0; - } - --#ifdef CONFIG_SYS_I2C_MXC --#define PC MUX_PAD_CTRL(I2C_PAD_CTRL) --/* I2C1 for PMIC */ --static struct i2c_pads_info i2c_pad_info1 = { -- .scl = { -- .i2c_mode = MX6_PAD_GPIO1_IO00__I2C1_SCL | PC, -- .gpio_mode = MX6_PAD_GPIO1_IO00__GPIO1_IO_0 | PC, -- .gp = IMX_GPIO_NR(1, 0), -- }, -- .sda = { -- .i2c_mode = MX6_PAD_GPIO1_IO01__I2C1_SDA | PC, -- .gpio_mode = MX6_PAD_GPIO1_IO01__GPIO1_IO_1 | PC, -- .gp = IMX_GPIO_NR(1, 1), -- }, --}; --#endif -- --#if CONFIG_IS_ENABLED(POWER_LEGACY) - int power_init_board(void) - { -- struct pmic *p; -- int ret; -- unsigned int reg, rev_id; -- -- ret = power_pfuze3000_init(PFUZE3000_I2C_BUS); -- if (ret) -- return ret; -- -- p = pmic_get("PFUZE3000"); -- ret = pmic_probe(p); -- if (ret) -- return ret; -+ struct udevice *dev; -+ int ret, dev_id, rev_id; - -- pmic_reg_read(p, PFUZE3000_DEVICEID, ®); -- pmic_reg_read(p, PFUZE3000_REVID, &rev_id); -- printf("PMIC: PFUZE3000 DEV_ID=0x%x REV_ID=0x%x\n", reg, rev_id); -- -- /* disable Low Power Mode during standby mode */ -- pmic_reg_read(p, PFUZE3000_LDOGCTL, ®); -- reg |= 0x1; -- ret = pmic_reg_write(p, PFUZE3000_LDOGCTL, reg); -- if (ret) -+ ret = pmic_get("pfuze3000@8", &dev); -+ if (ret == -ENODEV) -+ return 0; -+ if (ret != 0) - return ret; - -- ret = pmic_reg_write(p, PFUZE3000_SW1AMODE, 0xc); -- if (ret) -- return ret; -+ dev_id = pmic_reg_read(dev, PFUZE3000_DEVICEID); -+ rev_id = pmic_reg_read(dev, PFUZE3000_REVID); -+ printf("PMIC: PFUZE3000 DEV_ID=0x%x REV_ID=0x%x\n", dev_id, rev_id); - -- ret = pmic_reg_write(p, PFUZE3000_SW1BMODE, 0xc); -- if (ret) -- return ret; -- -- ret = pmic_reg_write(p, PFUZE3000_SW2MODE, 0xc); -- if (ret) -- return ret; -- -- ret = pmic_reg_write(p, PFUZE3000_SW3MODE, 0xc); -- if (ret) -- return ret; -- -- /* set SW1A standby voltage 0.975V */ -- pmic_reg_read(p, PFUZE3000_SW1ASTBY, ®); -- reg &= ~0x3f; -- reg |= PFUZE3000_SW1AB_SETP(9750); -- ret = pmic_reg_write(p, PFUZE3000_SW1ASTBY, reg); -- if (ret) -- return ret; -- -- /* set SW1B standby voltage 0.975V */ -- pmic_reg_read(p, PFUZE3000_SW1BSTBY, ®); -- reg &= ~0x3f; -- reg |= PFUZE3000_SW1AB_SETP(9750); -- ret = pmic_reg_write(p, PFUZE3000_SW1BSTBY, reg); -- if (ret) -- return ret; -- -- /* set SW1A/VDD_ARM_IN step ramp up time from 16us to 4us/25mV */ -- pmic_reg_read(p, PFUZE3000_SW1ACONF, ®); -- reg &= ~0xc0; -- reg |= 0x40; -- ret = pmic_reg_write(p, PFUZE3000_SW1ACONF, reg); -- if (ret) -- return ret; -- -- /* set SW1B/VDD_SOC_IN step ramp up time from 16us to 4us/25mV */ -- pmic_reg_read(p, PFUZE3000_SW1BCONF, ®); -- reg &= ~0xc0; -- reg |= 0x40; -- ret = pmic_reg_write(p, PFUZE3000_SW1BCONF, reg); -- if (ret) -- return ret; -- -- /* set VDD_ARM_IN to 1.350V */ -- pmic_reg_read(p, PFUZE3000_SW1AVOLT, ®); -- reg &= ~0x3f; -- reg |= PFUZE3000_SW1AB_SETP(13500); -- ret = pmic_reg_write(p, PFUZE3000_SW1AVOLT, reg); -- if (ret) -- return ret; -- -- /* set VDD_SOC_IN to 1.350V */ -- pmic_reg_read(p, PFUZE3000_SW1BVOLT, ®); -- reg &= ~0x3f; -- reg |= PFUZE3000_SW1AB_SETP(13500); -- ret = pmic_reg_write(p, PFUZE3000_SW1BVOLT, reg); -- if (ret) -- return ret; -- -- /* set DDR_1_5V to 1.350V */ -- pmic_reg_read(p, PFUZE3000_SW3VOLT, ®); -- reg &= ~0x0f; -- reg |= PFUZE3000_SW3_SETP(13500); -- ret = pmic_reg_write(p, PFUZE3000_SW3VOLT, reg); -- if (ret) -- return ret; -- -- /* set VGEN2_1V5 to 1.5V */ -- pmic_reg_read(p, PFUZE3000_VLDO2CTL, ®); -- reg &= ~0x0f; -- reg |= PFUZE3000_VLDO_SETP(15000); -- /* enable */ -- reg |= 0x10; -- ret = pmic_reg_write(p, PFUZE3000_VLDO2CTL, reg); -- if (ret) -- return ret; -+ pmic_clrsetbits(dev, PFUZE3000_LDOGCTL, 0, 1); - - return 0; - } --#endif - - static iomux_v3_cfg_t const uart1_pads[] = { - MX6_PAD_GPIO1_IO04__UART1_TX | MUX_PAD_CTRL(UART_PAD_CTRL), -@@ -294,10 +179,6 @@ int board_init(void) - gpio_request(IMX_GPIO_NR(4, 16), "ncp692"); - gpio_direction_output(IMX_GPIO_NR(4, 16) , 1); - --#ifdef CONFIG_SYS_I2C_MXC -- setup_i2c(0, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info1); --#endif -- - setup_fec(); - - return 0; -diff --git a/configs/udoo_neo_defconfig b/configs/udoo_neo_defconfig -index ca08de1bd4..9177bdba65 100644 ---- a/configs/udoo_neo_defconfig -+++ b/configs/udoo_neo_defconfig -@@ -10,8 +10,9 @@ CONFIG_ENV_SIZE=0x2000 - CONFIG_ENV_OFFSET=0x80000 - CONFIG_MX6SX=y - CONFIG_TARGET_UDOO_NEO=y --CONFIG_SYS_I2C_MXC_I2C1=y -+CONFIG_DM_I2C=y - CONFIG_DM_GPIO=y -+CONFIG_DM_MMC=y - CONFIG_DEFAULT_DEVICE_TREE="imx6sx-udoo-neo-basic" - CONFIG_SPL_TEXT_BASE=0x00908000 - CONFIG_SPL_MMC=y -@@ -39,8 +40,6 @@ CONFIG_SYS_RELOC_GD_ENV_ADDR=y - CONFIG_SYS_MMC_ENV_DEV=1 - CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y - CONFIG_BOUNCE_BUFFER=y --CONFIG_SYS_I2C_LEGACY=y --CONFIG_SPL_SYS_I2C_LEGACY=y - CONFIG_SYS_I2C_MXC=y - CONFIG_FSL_USDHC=y - CONFIG_PHYLIB=y -@@ -52,11 +51,12 @@ CONFIG_FEC_MXC=y - CONFIG_MII=y - CONFIG_PINCTRL=y - CONFIG_PINCTRL_IMX6=y --CONFIG_POWER_LEGACY=y --CONFIG_POWER_I2C=y -+CONFIG_DM_PMIC=y -+CONFIG_DM_PMIC_PFUZE100=y - CONFIG_DM_REGULATOR=y - CONFIG_DM_REGULATOR_ANATOP=y - CONFIG_DM_REGULATOR_FIXED=y -+CONFIG_DM_REGULATOR_PFUZE100=y - CONFIG_USB=y - CONFIG_DM_USB=y - CONFIG_USB_STORAGE=y -diff --git a/include/configs/udoo_neo.h b/include/configs/udoo_neo.h -index 3a7cb050b1..ac13c3e57f 100644 ---- a/include/configs/udoo_neo.h -+++ b/include/configs/udoo_neo.h -@@ -68,9 +68,4 @@ - #define CONFIG_SYS_INIT_SP_ADDR \ - (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET) - --/* PMIC */ --#define CONFIG_POWER_PFUZE3000 --#define CONFIG_POWER_PFUZE3000_I2C_ADDR 0x08 --#define PFUZE3000_I2C_BUS 0 -- - #endif /* __CONFIG_H */ --- -2.34.1 - diff --git a/dragonboard-fixes.patch b/dragonboard-fixes.patch deleted file mode 100644 index c49ea50..0000000 --- a/dragonboard-fixes.patch +++ /dev/null @@ -1,115 +0,0 @@ -From 8b0274a733cd1ce39ad9ad18e1bd8efdd02a40b7 Mon Sep 17 00:00:00 2001 -From: Rob Clark -Date: Wed, 21 Jun 2017 14:21:15 -0400 -Subject: [PATCH 1/3] WIP: fix usb - ---- - common/usb_storage.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/common/usb_storage.c b/common/usb_storage.c -index d92ebb6eb19..9df3c3daaf4 100644 ---- a/common/usb_storage.c -+++ b/common/usb_storage.c -@@ -1016,7 +1016,7 @@ static int usb_request_sense(struct scsi_cmd *srb, struct us_data *ss) - - static int usb_test_unit_ready(struct scsi_cmd *srb, struct us_data *ss) - { -- int retries = 10; -+ int retries = 20; - - do { - memset(&srb->cmd[0], 0, 12); -@@ -1039,7 +1039,7 @@ static int usb_test_unit_ready(struct scsi_cmd *srb, struct us_data *ss) - if ((srb->sense_buf[2] == 0x02) && - (srb->sense_buf[12] == 0x3a)) - return -1; -- mdelay(100); -+ mdelay(250); - } while (retries--); - - return -1; --- -2.19.1 - -From 7bf41d74ca9d58bc2243b7688f8987c1d373ea56 Mon Sep 17 00:00:00 2001 -From: Rob Clark -Date: Mon, 3 Jul 2017 08:34:37 -0400 -Subject: [PATCH 2/3] HACK: disable emmc - -Hitting some timeout which makes boot take much longer. And -uefi/boot/rootfs partitions will be on sd-card or usb disk, etc, -so we can just ignore emmc. ---- - arch/arm/dts/dragonboard410c.dts | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/arch/arm/dts/dragonboard410c.dts b/arch/arm/dts/dragonboard410c.dts -index fa348bc621e..bfe7f15d5ed 100644 ---- a/arch/arm/dts/dragonboard410c.dts -+++ b/arch/arm/dts/dragonboard410c.dts -@@ -106,6 +106,7 @@ - #phy-cells = <0>; - }; - -+/* - sdhci@07824000 { - compatible = "qcom,sdhci-msm-v4"; - reg = <0x7824900 0x11c 0x7824000 0x800>; -@@ -115,6 +116,7 @@ - clock = <&clkc 0>; - clock-frequency = <100000000>; - }; -+*/ - - sdhci@07864000 { - compatible = "qcom,sdhci-msm-v4"; --- -2.19.1 - -From 871fe802cf3ab593b9332c4f36ab2b3f179d51ae Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Tue, 4 Sep 2018 12:21:59 +0100 -Subject: [PATCH 3/3] add options for dm410c config - ---- - configs/dragonboard410c_defconfig | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/configs/dragonboard410c_defconfig b/configs/dragonboard410c_defconfig -index a55abaf8df5..4ece0cafbe4 100644 ---- a/configs/dragonboard410c_defconfig -+++ b/configs/dragonboard410c_defconfig -@@ -7,6 +7,8 @@ CONFIG_NR_DRAM_BANKS=1 - # CONFIG_ANDROID_BOOT_IMAGE is not set - CONFIG_FIT=y - CONFIG_OF_BOARD_SETUP=y -+CONFIG_FAT_WRITE=y -+CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y - CONFIG_MISC_INIT_R=y - # CONFIG_DISPLAY_CPUINFO is not set - # CONFIG_DISPLAY_BOARDINFO is not set -@@ -41,6 +43,13 @@ CONFIG_DM_PMIC=y - CONFIG_PMIC_PM8916=y - CONFIG_MSM_SERIAL=y - CONFIG_SPMI_MSM=y -+CONFIG_DM_ETH=y -+CONFIG_DM_KEYBOARD=y -+CONFIG_DM_VIDEO=y -+# CONFG_VIDEO_BPP8 is not set -+CONFIG_NO_FB_CLEAR=y -+CONFIG_VIDEO_SIMPLE=y -+CONFIG_USB_KEYBOARD=y - CONFIG_USB=y - CONFIG_DM_USB=y - CONFIG_USB_EHCI_HCD=y -@@ -57,5 +66,6 @@ CONFIG_USB_HOST_ETHER=y - CONFIG_USB_ETHER_ASIX=y - CONFIG_USB_ETHER_ASIX88179=y - CONFIG_USB_ETHER_MCS7830=y -+CONFIG_USB_ETHER_RTL8152=y - CONFIG_USB_ETHER_SMSC95XX=y - CONFIG_OF_LIBFDT_OVERLAY=y --- -2.19.1 - diff --git a/uboot-tools.spec b/uboot-tools.spec index 905a847..ef878b5 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -25,7 +25,6 @@ Patch5: rpi-bcm2835_sdhost-firmware-managed-clock.patch # Rockchips improvements Patch8: 0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch Patch9: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch -# Patch9: 0001-udoo_neo-Move-to-DM-for-REGUALTOR-PMIC-I2C-drivers.patch BuildRequires: bc BuildRequires: bison From ab63b190498296c2b1cf3d9dc612b9980fd353a7 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 4 Apr 2022 15:37:35 +0100 Subject: [PATCH 106/271] 2022.04 GA --- sources | 2 +- uboot-tools.spec | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sources b/sources index ebcb769..f3d74be 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2022.04-rc5.tar.bz2) = 6fbd2eeb0155ba3ab0460bc0a31ab5434f059b1f8eb7a182ee147583c8b827ef9979601fd147bfe9f617998433a2292cd2491f5a03cfc8bf90127fc45e585f1a +SHA512 (u-boot-2022.04.tar.bz2) = 113056e542db049eea3b1d1ccbbe52c79539a2f9bb6129d284ec9200dcffec7bd5969821913a9899631575b80991c84ad01bc845b4bba614e42e54466d9f0d64 diff --git a/uboot-tools.spec b/uboot-tools.spec index ef878b5..e147faf 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,9 +1,9 @@ -%global candidate rc5 +#global candidate rc0 %bcond_without toolsonly Name: uboot-tools Version: 2022.04 -Release: 0.4%{?candidate:.%{candidate}}%{?dist} +Release: 1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -247,6 +247,9 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog +* Mon Apr 04 2022 Peter Robinson - 2022.04-1 +- Update to 2022.04 GA + * Mon Mar 28 2022 Peter Robinson - 2022.04-0.4.rc5 - Update to 2022.04 RC5 From 9cc572a2b0851d79b4457e7591564fb6797da32c Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 26 Apr 2022 12:49:33 +0100 Subject: [PATCH 107/271] Drop ARMv7 builds --- arm-boards | 141 ----------------------------------------------- uboot-tools.spec | 62 +++------------------ 2 files changed, 7 insertions(+), 196 deletions(-) delete mode 100644 arm-boards diff --git a/arm-boards b/arm-boards deleted file mode 100644 index a6b85e5..0000000 --- a/arm-boards +++ /dev/null @@ -1,141 +0,0 @@ -A10-OLinuXino-Lime -A10s-OLinuXino-M -A13-OLinuXino -A13-OLinuXinoM -A20-Olimex-SOM-EVB -A20-OLinuXino-Lime -A20-OLinuXino-Lime2 -A20-OLinuXino_MICRO -am335x_evm -am57xx_evm -Ampe_A76 -apalis_imx6 -arndale -Auxtek-T003 -Auxtek-T004 -ba10_tv_box -Bananapi -bananapi_m1_plus -bananapi_m2_berry -Bananapi_m2m -bananapi_m2_plus_h3 -Bananapi_M2_Ultra -bananapi_m2_zero -Bananapro -chiliboard -CHIP -Chuwi_V7_CW0825 -clearfog -cm_fx6 -Colombus -colorfly_e708_q1 -CSQ_CS908 -Cubieboard -Cubieboard2 -Cubieboard4 -Cubietruck -Cubietruck_plus -db-mv784mp-gp -difrnce_dit4350 -dserve_dsrv9703c -evb-rk3229 -firefly-rk3288 -helios4 -Hummingbird_A31 -Hyundai_A7HD -i12-tvbox -icnova-a20-swac -inet1 -iNet_3F -iNet_3W -inet86dz -iNet_86VS -inet97fv2 -inet98v_rev2 -inet9f_rev03 -inet_q972 -Itead_Ibox_A20 -jesurun_q5 -jetson-tk1 -Lamobo_R1 -libretech_all_h3_cc_h2_plus -Linksprite_pcDuino -Linksprite_pcDuino3 -Linksprite_pcDuino3_Nano -liteboard -marsboard -Marsboard_A10 -Mele_A1000 -Mele_A1000G_quad -Mele_I7 -Mele_M3 -Mele_M5 -Mele_M9 -Mini-X -mk802 -mk802_a10s -mk802ii -MK808C -MSI_Primo73 -MSI_Primo81 -mx6cuboxi -nanopi_m1 -nanopi_m1_plus -nanopi_neo -novena -odroid -odroid-xu3 -omap3_beagle -omap4_panda -omap5_uevm -Orangepi -orangepi_2 -orangepi_lite -Orangepi_mini -orangepi_one -orangepi_pc -orangepi_pc_plus -orangepi_plus -orangepi_plus2e -orangepi_r1 -orangepi_zero -origen -paz00 -pinecube -polaroid_mid2809pxe04 -pov_protab2_ips9 -q8_a13_tablet -q8_a23_tablet_800x480 -q8_a33_tablet_1024x600 -q8_a33_tablet_800x480 -qemu_arm -r7-tv-dongle -riotboard -rock -rock2 -rock-pi-n8-rk3288 -rpi_2 -rpi_3_32b -rpi_4_32b -Sinlinx_SinA31s -Sinovoip_BPI_M2 -Sinovoip_BPI_M3 -stih410-b2260 -stm32mp15_basic -sunxi_Gemei_G9 -tbs_a711 -tinker-rk3288 -tinker-s-rk3288 -trimslice -turris_omnia -udoo -udoo_neo -usbarmory -UTOO_P66 -wandboard -warp7 -Wexler_TAB7200 -Wits_Pro_A20_DKT -xilinx_zynq_virt -Yones_Toptech_BS1078_V2 -zeropi diff --git a/uboot-tools.spec b/uboot-tools.spec index e147faf..c2904dd 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -10,8 +10,7 @@ URL: http://www.denx.de/wiki/U-Boot ExcludeArch: s390x Source0: https://ftp.denx.de/pub/u-boot/u-boot-%{version}%{?candidate:-%{candidate}}.tar.bz2 -Source1: arm-boards -Source2: aarch64-boards +Source1: aarch64-boards # Fedoraisms patches # Needed to find DT on boot partition that's not the first partition @@ -60,21 +59,12 @@ BuildArch: noarch %description -n uboot-images-armv8 U-Boot firmware binaries for aarch64 boards %endif - -%ifarch %{arm} -%package -n uboot-images-armv7 -Summary: U-Boot firmware images for armv7 boards -BuildArch: noarch - -%description -n uboot-images-armv7 -U-Boot firmware binaries for armv7 boards -%endif %endif %prep %autosetup -p1 -n u-boot-%{version}%{?candidate:-%{candidate}} -cp %SOURCE1 %SOURCE2 . +cp %SOURCE1 . %build mkdir builds @@ -86,7 +76,7 @@ mkdir builds # U-Boot device firmwares don't currently support LTO %define _lto_cflags %{nil} -%ifarch aarch64 %{arm} +%ifarch aarch64 for board in $(cat %{_arch}-boards) do echo "Building board: $board" @@ -124,18 +114,6 @@ do echo "Board: $board with SPI flash" builds/$(echo $board)/tools/mkimage -n rk3399 -T rkspi -d builds/$(echo $board)/tpl/u-boot-tpl.bin:builds/$(echo $board)/spl/u-boot-spl.bin builds/$(echo $board)/idbloader.spi fi - # build spi, and uart images for mvebu boards - # mvebu=(clearfog helios4 turris_omnia) - if [[ " ${mvebu[*]} " == *" $board "* ]]; then - for target in spi uart - do - echo "Board: $board Target: $target" - sed -i -e '/CONFIG_MVEBU_SPL_BOOT_DEVICE_/d' configs/$(echo $board)_defconfig - echo CONFIG_MVEBU_SPL_BOOT_DEVICE_${target^^}=y >> configs/$(echo $board)_defconfig - make $(echo $board)_defconfig O=builds/$(echo $board-$target)/ - %make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" O=builds/$(echo $board-$target)/ - done - fi done %endif @@ -160,21 +138,8 @@ do done %endif -%ifarch %{arm} -for board in $(ls builds) -do - mkdir -p %{buildroot}%{_datadir}/uboot/$(echo $board)/ - for file in MLO SPL spl/arndale-spl.bin spl/origen-spl.bin spl/*spl.bin u-boot.bin u-boot.dtb u-boot-dtb-tegra.bin u-boot.img u-boot.imx u-boot-spl.kwb u-boot-rockchip.bin u-boot-sunxi-with-spl.bin spl/boot.bin - do - if [ -f builds/$(echo $board)/$(echo $file) ]; then - install -p -m 0644 builds/$(echo $board)/$(echo $file) %{buildroot}%{_datadir}/uboot/$(echo $board)/ - fi - done -done -%endif - # Bit of a hack to remove binaries we don't use as they're large -%ifarch aarch64 %{arm} +%ifarch aarch64 for board in $(ls builds) do rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.dtb @@ -214,22 +179,14 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} # Copy some useful docs over mkdir -p builds/docs cp -p board/hisilicon/hikey/README builds/docs/README.hikey -cp -p board/Marvell/db-88f6820-gp/README builds/docs/README.mvebu-db-88f6820 cp -p board/rockchip/evb_rk3399/README builds/docs/README.evb_rk3399 -cp -p board/solidrun/clearfog/README builds/docs/README.clearfog -cp -p board/solidrun/mx6cuboxi/README builds/docs/README.mx6cuboxi cp -p board/sunxi/README.sunxi64 builds/docs/README.sunxi64 cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand -cp -p board/ti/omap5_uevm/README builds/docs/README.omap5_uevm -cp -p board/udoo/README builds/docs/README.udoo -cp -p board/wandboard/README builds/docs/README.wandboard -cp -p board/warp/README builds/docs/README.warp -cp -p board/warp7/README builds/docs/README.warp7 %files -%doc README doc/README.kwbimage doc/develop/distro.rst doc/README.gpt -%doc doc/README.odroid doc/README.rockchip doc/develop/uefi doc/uImage.FIT doc/arch/arm64.rst -%doc builds/docs/* doc/board/amlogic/ doc/board/rockchip/ doc/board/ti/am335x_evm.rst +%doc README doc/develop/distro.rst doc/README.gpt +%doc doc/README.rockchip doc/develop/uefi doc/uImage.FIT doc/arch/arm64.rst +%doc builds/docs/* doc/board/amlogic/ doc/board/rockchip/ %{_bindir}/* %{_mandir}/man1/mkimage.1* %dir %{_datadir}/uboot/ @@ -239,11 +196,6 @@ cp -p board/warp7/README builds/docs/README.warp7 %files -n uboot-images-armv8 %{_datadir}/uboot/* %endif - -%ifarch %{arm} -%files -n uboot-images-armv7 -%{_datadir}/uboot/* -%endif %endif %changelog From f02cd136917e1f13b8e1a9f44b7f1d1c6e0bfc81 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 27 Apr 2022 01:39:32 +0100 Subject: [PATCH 108/271] 2022.07 RC1 --- sources | 2 +- uboot-tools.spec | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sources b/sources index f3d74be..20973a8 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2022.04.tar.bz2) = 113056e542db049eea3b1d1ccbbe52c79539a2f9bb6129d284ec9200dcffec7bd5969821913a9899631575b80991c84ad01bc845b4bba614e42e54466d9f0d64 +SHA512 (u-boot-2022.07-rc1.tar.bz2) = f3b3c2fbcf2542cd17feef8374f07bce9300f4491b5c1d7194a791d7b4279062de74b639b043f250ef416e1c345e40d7b72f51f3f1d8687670dda30ebb31a5f6 diff --git a/uboot-tools.spec b/uboot-tools.spec index c2904dd..6fedab7 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,9 +1,9 @@ -#global candidate rc0 +%global candidate rc1 %bcond_without toolsonly Name: uboot-tools Version: 2022.04 -Release: 1%{?candidate:.%{candidate}}%{?dist} +Release: 0.1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -199,6 +199,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Tue Apr 26 2022 Peter Robinson - 2022.04-0.1.rc1 +- Update to 2022.07 RC1 + * Mon Apr 04 2022 Peter Robinson - 2022.04-1 - Update to 2022.04 GA From 41e28cf922a394ef8d663a2182fd2c5075964fc3 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 27 Apr 2022 01:49:46 +0100 Subject: [PATCH 109/271] fix version --- uboot-tools.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 6fedab7..38940ec 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -2,7 +2,7 @@ %bcond_without toolsonly Name: uboot-tools -Version: 2022.04 +Version: 2022.07 Release: 0.1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ @@ -199,7 +199,7 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog -* Tue Apr 26 2022 Peter Robinson - 2022.04-0.1.rc1 +* Tue Apr 26 2022 Peter Robinson - 2022.07-0.1.rc1 - Update to 2022.07 RC1 * Mon Apr 04 2022 Peter Robinson - 2022.04-1 From f0b776d4d6e0fdd9c371767b0260ce7239848d46 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Fri, 13 May 2022 19:24:42 +0100 Subject: [PATCH 110/271] 2022.07 RC2 Signed-off-by: Peter Robinson --- sources | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources b/sources index 20973a8..32f1aa8 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2022.07-rc1.tar.bz2) = f3b3c2fbcf2542cd17feef8374f07bce9300f4491b5c1d7194a791d7b4279062de74b639b043f250ef416e1c345e40d7b72f51f3f1d8687670dda30ebb31a5f6 +SHA512 (u-boot-2022.07-rc2.tar.bz2) = c3b0aab1e2de4ac48af1a5b5147f3afa4296dc3f264d15da43421ff58207bb5bb17b99d0a571361e76150804fc3f78bd16f2bc623cb8324c48e6834440b247c2 From 0e7b56408159f830f0ec13240a464153a6002c25 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sat, 14 May 2022 10:17:26 +0100 Subject: [PATCH 111/271] 2022.07 RC2 --- uboot-tools.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 38940ec..be83aa7 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,9 +1,9 @@ -%global candidate rc1 +%global candidate rc2 %bcond_without toolsonly Name: uboot-tools Version: 2022.07 -Release: 0.1%{?candidate:.%{candidate}}%{?dist} +Release: 0.2%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -199,6 +199,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Sat May 14 2022 Peter Robinson - 2022.07-0.2.rc2 +- Update to 2022.07 RC2 + * Tue Apr 26 2022 Peter Robinson - 2022.07-0.1.rc1 - Update to 2022.07 RC1 From fa86e10d711ab526e20279a2654491c0f37c383e Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 25 May 2022 15:46:30 +0100 Subject: [PATCH 112/271] 2022.07 RC3 --- sources | 2 +- uboot-tools.spec | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sources b/sources index 32f1aa8..7182c58 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2022.07-rc2.tar.bz2) = c3b0aab1e2de4ac48af1a5b5147f3afa4296dc3f264d15da43421ff58207bb5bb17b99d0a571361e76150804fc3f78bd16f2bc623cb8324c48e6834440b247c2 +SHA512 (u-boot-2022.07-rc3.tar.bz2) = 1ebc19ca9828f38e5568a3415281917a12d086f3e4e23749441faf77771612526d95a84af5433057f6caa09b424aff9d4709d2d223cbe98f7d6356049c3b0d3c diff --git a/uboot-tools.spec b/uboot-tools.spec index be83aa7..2fb5fee 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,9 +1,9 @@ -%global candidate rc2 +%global candidate rc3 %bcond_without toolsonly Name: uboot-tools Version: 2022.07 -Release: 0.2%{?candidate:.%{candidate}}%{?dist} +Release: 0.3%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -199,6 +199,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Wed May 25 2022 Peter Robinson - 2022.07-0.3.rc3 +- Update to 2022.07 RC3 + * Sat May 14 2022 Peter Robinson - 2022.07-0.2.rc2 - Update to 2022.07 RC2 From cefa60ce7fdc19b38a750a4f3e33ae4338c8f721 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sun, 12 Jun 2022 14:58:18 +0100 Subject: [PATCH 113/271] 2022.07 RC4, rk3328 spi builds, PBP/Rockpro64 fixes --- ...class-Add-support-to-manually-reloca.patch | 53 --------------- rockchip-general-fixes.patch | 65 +++++++++++++++++++ sources | 2 +- uboot-tools.spec | 17 +++-- 4 files changed, 79 insertions(+), 58 deletions(-) delete mode 100644 0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch create mode 100644 rockchip-general-fixes.patch diff --git a/0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch b/0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch deleted file mode 100644 index 5dd7695..0000000 --- a/0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 1c56fc2835e10cdc039a4c1d049c1a6978e036f3 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Thu, 22 Jul 2021 16:22:48 +0100 -Subject: [PATCH] Revert "spi: spi-uclass: Add support to manually relocate spi - memory ops" - -This reverts commit 346df7d4fa62afc578d820b3a18815eec765074f. - -This patch broke booting Rockchip systems from U-Boot residing on SPI -flash, for at least the Pinebook Pro and Rockpro64, and also confirmed -with the not yet upstream Helios64. - -Signed-off-by: Peter Robinson -Cc: T Karthik Reddy -Cc: Ashok Reddy Soma -Cc: Michal Simek -Cc: Pratyush Yadav ---- - drivers/spi/spi-uclass.c | 11 ----------- - 1 file changed, 11 deletions(-) - -diff --git a/drivers/spi/spi-uclass.c b/drivers/spi/spi-uclass.c -index d867b27806..ec7f4652b3 100644 ---- a/drivers/spi/spi-uclass.c -+++ b/drivers/spi/spi-uclass.c -@@ -11,7 +11,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -200,16 +199,6 @@ static int spi_post_probe(struct udevice *bus) - ops->set_mode += gd->reloc_off; - if (ops->cs_info) - ops->cs_info += gd->reloc_off; -- if (ops->mem_ops) { -- struct spi_controller_mem_ops *mem_ops = -- (struct spi_controller_mem_ops *)ops->mem_ops; -- if (mem_ops->adjust_op_size) -- mem_ops->adjust_op_size += gd->reloc_off; -- if (mem_ops->supports_op) -- mem_ops->supports_op += gd->reloc_off; -- if (mem_ops->exec_op) -- mem_ops->exec_op += gd->reloc_off; -- } - reloc_done++; - } - #endif --- -2.31.1 - diff --git a/rockchip-general-fixes.patch b/rockchip-general-fixes.patch new file mode 100644 index 0000000..28d43db --- /dev/null +++ b/rockchip-general-fixes.patch @@ -0,0 +1,65 @@ +From 2d9350c50a9659cc2a247cdea07f0eacffa3cb32 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Sun, 12 Jun 2022 14:44:44 +0100 +Subject: [PATCH] rockchip: pinebook-pro: minor SPI flash fixes + +Set a default offset for environment so it doesn't write it to +unexpected locations, drop unneeded mtd config option. + +Signed-off-by: Peter Robinson +--- + configs/pinebook-pro-rk3399_defconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig +index 8ca1d0708f9..aaa52c6ea70 100644 +--- a/configs/pinebook-pro-rk3399_defconfig ++++ b/configs/pinebook-pro-rk3399_defconfig +@@ -5,6 +5,7 @@ CONFIG_ARCH_ROCKCHIP=y + CONFIG_SYS_TEXT_BASE=0x00200000 + CONFIG_NR_DRAM_BANKS=1 + CONFIG_ENV_SIZE=0x8000 ++CONFIG_ENV_OFFSET=0x3F8000 + CONFIG_DEFAULT_DEVICE_TREE="rk3399-pinebook-pro" + CONFIG_ROCKCHIP_RK3399=y + CONFIG_TARGET_PINEBOOK_PRO_RK3399=y +@@ -22,7 +23,6 @@ CONFIG_MISC_INIT_R=y + # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set + CONFIG_SPL_STACK_R=y + CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000 +-CONFIG_SPL_MTD_SUPPORT=y + CONFIG_SPL_SPI_LOAD=y + CONFIG_TPL=y + CONFIG_CMD_BOOTZ=y +-- +2.36.1 + +From 27ba8e2f904063aec5196f86dd0332bf58a60259 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Sun, 12 Jun 2022 14:50:42 +0100 +Subject: [PATCH] rockchip: rockpro64: enable leds + +The Rockpro64 has some GPIO leds so let's enable them so the +user gets some output in early boot. + +Signed-off-by: Peter Robinson +--- + configs/rockpro64-rk3399_defconfig | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig +index e6f7a8469a3..b0c3527fab0 100644 +--- a/configs/rockpro64-rk3399_defconfig ++++ b/configs/rockpro64-rk3399_defconfig +@@ -42,6 +42,8 @@ CONFIG_AHCI_PCI=y + CONFIG_SATA_SIL=y + CONFIG_ROCKCHIP_GPIO=y + CONFIG_SYS_I2C_ROCKCHIP=y ++CONFIG_LED=y ++CONFIG_LED_GPIO=y + CONFIG_MISC=y + CONFIG_ROCKCHIP_EFUSE=y + CONFIG_MMC_DW=y +-- +2.36.1 + diff --git a/sources b/sources index 7182c58..826b328 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2022.07-rc3.tar.bz2) = 1ebc19ca9828f38e5568a3415281917a12d086f3e4e23749441faf77771612526d95a84af5433057f6caa09b424aff9d4709d2d223cbe98f7d6356049c3b0d3c +SHA512 (u-boot-2022.07-rc4.tar.bz2) = e54b9df6e4854fa8314e815409eb7b7b9d29af956aa021df8f7138f997bc683bc84bb1a80e71cb02821fe82e77ce12aa404d84841684f7b4e14f36756a6843f2 diff --git a/uboot-tools.spec b/uboot-tools.spec index 2fb5fee..728345c 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,9 +1,9 @@ -%global candidate rc3 +%global candidate rc4 %bcond_without toolsonly Name: uboot-tools Version: 2022.07 -Release: 0.3%{?candidate:.%{candidate}}%{?dist} +Release: 0.4%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -22,8 +22,8 @@ Patch3: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch Patch4: rpi-fallback-to-max-clock-for-mmc.patch Patch5: rpi-bcm2835_sdhost-firmware-managed-clock.patch # Rockchips improvements -Patch8: 0001-Revert-spi-spi-uclass-Add-support-to-manually-reloca.patch -Patch9: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch +Patch7: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch +Patch8: rockchip-general-fixes.patch BuildRequires: bc BuildRequires: bison @@ -109,6 +109,11 @@ do %make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" O=builds/$(echo $board)/ # build spi images for rockchip boards with SPI flash + rkspi=(rock64-rk3328) + if [[ " ${rkspi[*]} " == *" $board "* ]]; then + echo "Board: $board with SPI flash" + builds/$(echo $board)/tools/mkimage -n rk3328 -T rkspi -d builds/$(echo $board)/tpl/u-boot-tpl.bin:builds/$(echo $board)/spl/u-boot-spl.bin builds/$(echo $board)/idbloader.spi + fi rkspi=(evb-rk3399 khadas-edge-captain-rk3399 khadas-edge-rk3399 khadas-edge-v-rk3399 nanopc-t4-rk3399 pinebook-pro-rk3399 pinephone-pro-rk3399 rockpro64-rk3399 roc-pc-mezzanine-rk3399 roc-pc-rk3399) if [[ " ${rkspi[*]} " == *" $board "* ]]; then echo "Board: $board with SPI flash" @@ -199,6 +204,10 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Sun Jun 12 2022 Peter Robinson - 2022.07-0.4.rc4 +- Update to 2022.07 RC4 +- Some minor Rockchips device fixes + * Wed May 25 2022 Peter Robinson - 2022.07-0.3.rc3 - Update to 2022.07 RC3 From 832d64676bf25b0cc39dbfa03802ee933ac93324 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sun, 12 Jun 2022 16:46:57 +0100 Subject: [PATCH 114/271] Fix for Pinebook Pro when booting with FW DT --- rockchip-general-fixes.patch | 71 ++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/rockchip-general-fixes.patch b/rockchip-general-fixes.patch index 28d43db..00e78f5 100644 --- a/rockchip-general-fixes.patch +++ b/rockchip-general-fixes.patch @@ -63,3 +63,74 @@ index e6f7a8469a3..b0c3527fab0 100644 -- 2.36.1 +From 8bca90472e0d71e5344711b6f5fe8dc95e19af5a Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Sun, 12 Jun 2022 15:12:47 +0100 +Subject: [PATCH] rockchip: pinebook-pro: sync PBP dtb to 5.18 + +Sync the pinebook pro to upstream 5.18, in particular this brings +brings in a fix so the DP is disabled so Linux will actually boot. + +Signed-off-by: Peter Robinson +--- + arch/arm/dts/rk3399-pinebook-pro.dts | 11 +++-------- + 1 file changed, 3 insertions(+), 8 deletions(-) + +diff --git a/arch/arm/dts/rk3399-pinebook-pro.dts b/arch/arm/dts/rk3399-pinebook-pro.dts +index 2b5f001ff4a..d6b68d77d63 100644 +--- a/arch/arm/dts/rk3399-pinebook-pro.dts ++++ b/arch/arm/dts/rk3399-pinebook-pro.dts +@@ -17,6 +17,7 @@ + / { + model = "Pine64 Pinebook Pro"; + compatible = "pine64,pinebook-pro", "rockchip,rk3399"; ++ chassis-type = "laptop"; + + aliases { + mmc0 = &sdio0; +@@ -242,12 +243,12 @@ + vdd_log: vdd-log { + compatible = "pwm-regulator"; + pwms = <&pwm2 0 25000 1>; ++ pwm-supply = <&vcc_sysin>; + regulator-name = "vdd_log"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <1400000>; +- vin-supply = <&vcc_sysin>; + + regulator-state-mem { + regulator-on-in-suspend; +@@ -385,10 +386,6 @@ + }; + }; + +-&cdn_dp { +- status = "okay"; +-}; +- + &cpu_b0 { + cpu-supply = <&vdd_cpu_b>; + }; +@@ -475,8 +472,6 @@ + vcc10-supply = <&vcc_sysin>; + vcc11-supply = <&vcc_sysin>; + vcc12-supply = <&vcc3v3_sys>; +- vcc13-supply = <&vcc_sysin>; +- vcc14-supply = <&vcc_sysin>; + + regulators { + /* rk3399 center logic supply */ +@@ -711,7 +706,7 @@ + + connector { + compatible = "usb-c-connector"; +- data-role = "host"; ++ data-role = "dual"; + label = "USB-C"; + op-sink-microwatt = <1000000>; + power-role = "dual"; +-- +2.36.1 + From dc41daecba8ed9eb84c80c850f7317172d90c536 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sun, 26 Jun 2022 17:40:50 +0100 Subject: [PATCH 115/271] 2022.07 RC5 --- sources | 2 +- uboot-tools.spec | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sources b/sources index 826b328..5ac08e9 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2022.07-rc4.tar.bz2) = e54b9df6e4854fa8314e815409eb7b7b9d29af956aa021df8f7138f997bc683bc84bb1a80e71cb02821fe82e77ce12aa404d84841684f7b4e14f36756a6843f2 +SHA512 (u-boot-2022.07-rc5.tar.bz2) = 0e72671b9126ccb813f8981ce10c8b7d736e0f8cc4b2a8cdc8233588d50882852873ad7e7576757fc2282eb8884dac04c86c6e3432d64d8ef66a514b7edb1b1c diff --git a/uboot-tools.spec b/uboot-tools.spec index 728345c..16a294b 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,9 +1,9 @@ -%global candidate rc4 +%global candidate rc5 %bcond_without toolsonly Name: uboot-tools Version: 2022.07 -Release: 0.4%{?candidate:.%{candidate}}%{?dist} +Release: 0.5%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -204,6 +204,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Mon Jun 20 2022 Peter Robinson - 2022.07-0.5.rc5 +- Update to 2022.07 RC5 + * Sun Jun 12 2022 Peter Robinson - 2022.07-0.4.rc4 - Update to 2022.07 RC4 - Some minor Rockchips device fixes From 49a3b5d27cba51ba7111a79fbac76f622b717c4f Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 4 Jul 2022 13:23:43 +0100 Subject: [PATCH 116/271] Update to 2022.07 RC6 --- sources | 2 +- uboot-tools.spec | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/sources b/sources index 5ac08e9..49e8e65 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2022.07-rc5.tar.bz2) = 0e72671b9126ccb813f8981ce10c8b7d736e0f8cc4b2a8cdc8233588d50882852873ad7e7576757fc2282eb8884dac04c86c6e3432d64d8ef66a514b7edb1b1c +SHA512 (u-boot-2022.07-rc6.tar.bz2) = 9772c69b48e2d76f7c70e148d54cbb857c728c6cf131eb27e6baceeb9212d63220b7cfb7c43b6ef9620430bd754822691b3149b923ae57e2bf9805d36845b2b2 diff --git a/uboot-tools.spec b/uboot-tools.spec index 16a294b..7c1ec6d 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,9 +1,9 @@ -%global candidate rc5 +%global candidate rc6 %bcond_without toolsonly Name: uboot-tools Version: 2022.07 -Release: 0.5%{?candidate:.%{candidate}}%{?dist} +Release: 0.6%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -23,7 +23,6 @@ Patch4: rpi-fallback-to-max-clock-for-mmc.patch Patch5: rpi-bcm2835_sdhost-firmware-managed-clock.patch # Rockchips improvements Patch7: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch -Patch8: rockchip-general-fixes.patch BuildRequires: bc BuildRequires: bison @@ -204,6 +203,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Mon Jul 04 2022 Peter Robinson - 2022.07-0.6.rc6 +- Update to 2022.07 RC6 + * Mon Jun 20 2022 Peter Robinson - 2022.07-0.5.rc5 - Update to 2022.07 RC5 From 6c3ac9b2298bbe4d28e69634c13a78b9fa10d906 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sun, 17 Jul 2022 11:16:46 +0100 Subject: [PATCH 117/271] 2022.07 GA --- sources | 2 +- uboot-tools.spec | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sources b/sources index 49e8e65..bba9d23 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2022.07-rc6.tar.bz2) = 9772c69b48e2d76f7c70e148d54cbb857c728c6cf131eb27e6baceeb9212d63220b7cfb7c43b6ef9620430bd754822691b3149b923ae57e2bf9805d36845b2b2 +SHA512 (u-boot-2022.07.tar.bz2) = e1b3621dafac876c644ffb3d24b6e2380f5a78454c420a5b17d174e3f0b57731a95cfbff28ae7d0af4493f4bbf8d21e7f9236d61bb2414ed12295332b3d557b6 diff --git a/uboot-tools.spec b/uboot-tools.spec index 7c1ec6d..f800c18 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,9 +1,9 @@ -%global candidate rc6 +#global candidate rc0 %bcond_without toolsonly Name: uboot-tools Version: 2022.07 -Release: 0.6%{?candidate:.%{candidate}}%{?dist} +Release: 1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -203,6 +203,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Sun Jul 17 2022 Peter Robinson - 2022.07-1 +- Update to 2022.07 GA + * Mon Jul 04 2022 Peter Robinson - 2022.07-0.6.rc6 - Update to 2022.07 RC6 From c7412f83bd8afdb497132f4c4fb06ad3d1634e6d Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 23 Jul 2022 11:13:36 +0000 Subject: [PATCH 118/271] Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- uboot-tools.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index f800c18..030c1e8 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -3,7 +3,7 @@ Name: uboot-tools Version: 2022.07 -Release: 1%{?candidate:.%{candidate}}%{?dist} +Release: 2%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -203,6 +203,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Sat Jul 23 2022 Fedora Release Engineering - 2022.07-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + * Sun Jul 17 2022 Peter Robinson - 2022.07-1 - Update to 2022.07 GA From 8bfc149984318e2af148c095598a22f22fc59e6c Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 28 Jul 2022 10:11:26 +0100 Subject: [PATCH 119/271] 2022.10 RC1 --- aarch64-boards | 2 +- sources | 2 +- uboot-tools.spec | 17 +++++++++++------ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/aarch64-boards b/aarch64-boards index a38107c..ab282d9 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -6,6 +6,7 @@ bananapi_m64 beelink_gs1 dragonboard410c dragonboard820c +dragonboard845c evb-rk3328 evb-rk3399 ficus-rk3399 @@ -58,7 +59,6 @@ pine64-lts pine64_plus pinebook pinebook-pro-rk3399 -pinephone-pro-rk3399 pine_h64 pinephone pinetab diff --git a/sources b/sources index bba9d23..bed7049 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2022.07.tar.bz2) = e1b3621dafac876c644ffb3d24b6e2380f5a78454c420a5b17d174e3f0b57731a95cfbff28ae7d0af4493f4bbf8d21e7f9236d61bb2414ed12295332b3d557b6 +SHA512 (u-boot-2022.10-rc1.tar.bz2) = 7db532ed286d8cc8a3e38d7eee6db6bfe11b9ecba62dc5a0e29b3a95c9c345d3be4f1c036bede2d0d069e291d1dcb4e496ffc3c799b17e483f17fb8a57d5d27f diff --git a/uboot-tools.spec b/uboot-tools.spec index 030c1e8..5af92da 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,9 +1,13 @@ -#global candidate rc0 +%global candidate rc1 +%if !0%{?rhel} %bcond_without toolsonly +%else +%bcond_with toolsonly +%endif Name: uboot-tools -Version: 2022.07 -Release: 2%{?candidate:.%{candidate}}%{?dist} +Version: 2022.10 +Release: 0.1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -72,9 +76,6 @@ mkdir builds %make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" tools-all O=builds/ %if %{with toolsonly} -# U-Boot device firmwares don't currently support LTO -%define _lto_cflags %{nil} - %ifarch aarch64 for board in $(cat %{_arch}-boards) do @@ -203,6 +204,10 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Thu Jul 28 2022 Peter Robinson - 2022.10-0.1.rc1 +- Update to 2022.10 RC1 +- Enable LTO for firmware builds + * Sat Jul 23 2022 Fedora Release Engineering - 2022.07-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild From 8522759e85ea39ef797336a505e3be9f483c6539 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 16 Aug 2022 20:10:33 +0100 Subject: [PATCH 120/271] Fix for DT property propogation via firmware --- ...erties-from-firmware-DT-to-loaded-DT.patch | 296 ++++++++++++++++++ uboot-tools.spec | 6 +- 2 files changed, 301 insertions(+), 1 deletion(-) create mode 100644 rpi-Copy-properties-from-firmware-DT-to-loaded-DT.patch diff --git a/rpi-Copy-properties-from-firmware-DT-to-loaded-DT.patch b/rpi-Copy-properties-from-firmware-DT-to-loaded-DT.patch new file mode 100644 index 0000000..7ef65bc --- /dev/null +++ b/rpi-Copy-properties-from-firmware-DT-to-loaded-DT.patch @@ -0,0 +1,296 @@ +From patchwork Wed Aug 10 12:39:26 2022 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Antoine Mazeas +X-Patchwork-Id: 1665242 +X-Patchwork-Delegate: matthias.bgg@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: bilbo.ozlabs.org; + dkim=pass (1024-bit key; + unprotected) header.d=karthanis.net header.i=@karthanis.net + header.a=rsa-sha256 header.s=20191114 header.b=mcrC/rnn; + dkim-atps=neutral +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (2048 bits)) + (No client certificate requested) + by bilbo.ozlabs.org (Postfix) with ESMTPS id 4M2qkM6g8Vz9ryY + for ; Wed, 10 Aug 2022 22:58:35 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id CB5EF842A3; + Wed, 10 Aug 2022 14:58:11 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=karthanis.net +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; + dkim=pass (1024-bit key; + unprotected) header.d=karthanis.net header.i=@karthanis.net + header.b="mcrC/rnn"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 4FB14841DC; Wed, 10 Aug 2022 14:40:46 +0200 (CEST) +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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 +Received: from smtp-42a9.mail.infomaniak.ch (smtp-42a9.mail.infomaniak.ch + [IPv6:2001:1600:3:17::42a9]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id CCC6784084 + for ; Wed, 10 Aug 2022 14:40:43 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=karthanis.net +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=antoine@karthanis.net +Received: from smtp-3-0001.mail.infomaniak.ch (unknown [10.4.36.108]) + by smtp-2-3000.mail.infomaniak.ch (Postfix) with ESMTPS id 4M2qKl3S6GzMqbyx; + Wed, 10 Aug 2022 14:40:43 +0200 (CEST) +Received: from localhost.localdomain (unknown [88.168.170.86]) + by smtp-3-0001.mail.infomaniak.ch (Postfix) with ESMTPA id 4M2qKk6qXKzlnSD1; + Wed, 10 Aug 2022 14:40:42 +0200 (CEST) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=karthanis.net; + s=20191114; t=1660135243; + bh=YF4GTVv5pqqW0OMrNZFlf0WHnELr1KiKKA02ok/znf4=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=mcrC/rnnUv3FXlrllL2s9lLTjUEnTuLbiINuyrIQWr2HG3AmCcD11F7n0AypUdePp + 2XfG1PnZalJa2v3m6/DUWsz6B/cqmYo31h/6HpFeJ4g2i1pEZar7cC+9oScmbjJptV + w2oDsFHzyK2oWHUMGFJ4N6bboD8kq3z4WLaH2vrQ= +From: Antoine Mazeas +To: u-boot@lists.denx.de +Cc: Antoine Mazeas , + Sjoerd Simons +Subject: [PATCH 1/2] rpi: Copy properties from firmware dtb to the loaded dtb +Date: Wed, 10 Aug 2022 14:39:26 +0200 +Message-Id: <20220810123927.2567677-2-antoine@karthanis.net> +X-Mailer: git-send-email 2.37.1 +In-Reply-To: <20220810123927.2567677-1-antoine@karthanis.net> +References: <20220810123927.2567677-1-antoine@karthanis.net> +MIME-Version: 1.0 +X-Mailman-Approved-At: Wed, 10 Aug 2022 14:58:03 +0200 +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.6 at phobos.denx.de +X-Virus-Status: Clean + +The RPI firmware adjusts several property values in the dtb it passes +to u-boot depending on the board/SoC revision. Inherit some of these +when u-boot loads a dtb itself. Specificaly copy: + +* /model: The firmware provides a more specific string +* /memreserve: The firmware defines a reserved range, better keep it +* emmc2bus and pcie0 dma-ranges: The C0T revision of the bcm2711 Soc (as + present on rpi 400 and some rpi 4B boards) has different values for + these then the B0T revision. So these need to be adjusted to boot on + these boards +* blconfig: The firmware defines the memory area where the blconfig + stored. Copy those over so it can be enabled. +* /chosen/kaslr-seed: The firmware generates a kaslr seed, take advantage + of that. + +Signed-off-by: Sjoerd Simons +--- + board/raspberrypi/rpi/rpi.c | 48 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 48 insertions(+) + +diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c +index 17b8108cc8..28b6f52506 100644 +--- a/board/raspberrypi/rpi/rpi.c ++++ b/board/raspberrypi/rpi/rpi.c +@@ -504,10 +504,58 @@ void *board_fdt_blob_setup(int *err) + return (void *)fw_dtb_pointer; + } + ++int copy_property(void *dst, void *src, char *path, char *property) ++{ ++ int dst_offset, src_offset; ++ const fdt32_t *prop; ++ int len; ++ ++ src_offset = fdt_path_offset(src, path); ++ dst_offset = fdt_path_offset(dst, path); ++ ++ if (src_offset < 0 || dst_offset < 0) ++ return -1; ++ ++ prop = fdt_getprop(src, src_offset, property, &len); ++ if (!prop) ++ return -1; ++ ++ return fdt_setprop(dst, dst_offset, property, prop, len); ++} ++ ++/* Copy tweaks from the firmware dtb to the loaded dtb */ ++void update_fdt_from_fw(void *fdt, void *fw_fdt) ++{ ++ /* Using dtb from firmware directly; leave it alone */ ++ if (fdt == fw_fdt) ++ return; ++ ++ /* The firmware provides a more precie model; so copy that */ ++ copy_property(fdt, fw_fdt, "/", "model"); ++ ++ /* memory reserve as suggested by the firmware */ ++ copy_property(fdt, fw_fdt, "/", "memreserve"); ++ ++ /* Adjust dma-ranges for the SD card and PCI bus as they can depend on ++ * the SoC revision ++ */ ++ copy_property(fdt, fw_fdt, "emmc2bus", "dma-ranges"); ++ copy_property(fdt, fw_fdt, "pcie0", "dma-ranges"); ++ ++ /* Bootloader configuration template exposes as nvmem */ ++ if (copy_property(fdt, fw_fdt, "blconfig", "reg") == 0) ++ copy_property(fdt, fw_fdt, "blconfig", "status"); ++ ++ /* kernel address randomisation seed as provided by the firmware */ ++ copy_property(fdt, fw_fdt, "/chosen", "kaslr-seed"); ++} ++ + int ft_board_setup(void *blob, struct bd_info *bd) + { + int node; + ++ update_fdt_from_fw(blob, (void *)fw_dtb_pointer); ++ + node = fdt_node_offset_by_compatible(blob, -1, "simple-framebuffer"); + if (node < 0) + fdt_simplefb_add_node(blob); + +From patchwork Wed Aug 10 12:39:27 2022 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Antoine Mazeas +X-Patchwork-Id: 1665243 +X-Patchwork-Delegate: matthias.bgg@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@bilbo.ozlabs.org +Authentication-Results: bilbo.ozlabs.org; + dkim=pass (1024-bit key; + unprotected) header.d=karthanis.net header.i=@karthanis.net + header.a=rsa-sha256 header.s=20191114 header.b=3Vltv92i; + dkim-atps=neutral +Authentication-Results: ozlabs.org; + spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de + (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; + envelope-from=u-boot-bounces@lists.denx.de; receiver=) +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (2048 bits)) + (No client certificate requested) + by bilbo.ozlabs.org (Postfix) with ESMTPS id 4M2qkb5v6sz9ryY + for ; Wed, 10 Aug 2022 22:58:47 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 2E6C784564; + Wed, 10 Aug 2022 14:58:17 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=karthanis.net +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; + dkim=pass (1024-bit key; + unprotected) header.d=karthanis.net header.i=@karthanis.net + header.b="3Vltv92i"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 274CF8415B; Wed, 10 Aug 2022 14:40:48 +0200 (CEST) +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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 +Received: from smtp-42a9.mail.infomaniak.ch (smtp-42a9.mail.infomaniak.ch + [84.16.66.169]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id DAC58841A4 + for ; Wed, 10 Aug 2022 14:40:45 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=karthanis.net +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=antoine@karthanis.net +Received: from smtp-3-0001.mail.infomaniak.ch (unknown [10.4.36.108]) + by smtp-2-3000.mail.infomaniak.ch (Postfix) with ESMTPS id 4M2qKn4VzjzMqnFS; + Wed, 10 Aug 2022 14:40:45 +0200 (CEST) +Received: from localhost.localdomain (unknown [88.168.170.86]) + by smtp-3-0001.mail.infomaniak.ch (Postfix) with ESMTPA id 4M2qKn1TBqzlnSCc; + Wed, 10 Aug 2022 14:40:45 +0200 (CEST) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=karthanis.net; + s=20191114; t=1660135245; + bh=f61vvBG7E2UozLHxeE7zghMr3kXQzBW+5PpzEyEGYJU=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=3Vltv92i/KGKD06qHi+zyrqGwfJWUvdwHMojKKH7OqswhScJTxhUbGq6MnPrCqWsn + QgB117zr++vQSy1jxV2vZIFLxMC3j8AZb4l3ktmU7FiPp7AUB6AqAzv+tUrYeS3nz4 + LQ0mJS4s1jk1k0WWAK3/WGdOyUAo8ZWw5oiBHUvk= +From: Antoine Mazeas +To: u-boot@lists.denx.de +Cc: Antoine Mazeas +Subject: [PATCH 2/2] rpi: Copy eth PHY address from fw DT to loaded DT +Date: Wed, 10 Aug 2022 14:39:27 +0200 +Message-Id: <20220810123927.2567677-3-antoine@karthanis.net> +X-Mailer: git-send-email 2.37.1 +In-Reply-To: <20220810123927.2567677-1-antoine@karthanis.net> +References: <20220810123927.2567677-1-antoine@karthanis.net> +MIME-Version: 1.0 +X-Mailman-Approved-At: Wed, 10 Aug 2022 14:58:03 +0200 +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.6 at phobos.denx.de +X-Virus-Status: Clean + +Some Raspberry Pi 400 boards, specifically rev 1.1, have a different address for the ethernet PHY device than what is provided by the kernel DTB. The correct address is provided by the firmware, so we should carry it over into the loaded device tree so that ethernet works on such boards. + +Signed-off-by: Antoine Mazeas +--- + board/raspberrypi/rpi/rpi.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c +index 28b6f52506..793fd1aa30 100644 +--- a/board/raspberrypi/rpi/rpi.c ++++ b/board/raspberrypi/rpi/rpi.c +@@ -548,6 +548,9 @@ void update_fdt_from_fw(void *fdt, void *fw_fdt) + + /* kernel address randomisation seed as provided by the firmware */ + copy_property(fdt, fw_fdt, "/chosen", "kaslr-seed"); ++ ++ /* address of the PHY device as provided by the firmware */ ++ copy_property(fdt, fw_fdt, "ethernet0/mdio@e14/ethernet-phy@1", "reg"); + } + + int ft_board_setup(void *blob, struct bd_info *bd) diff --git a/uboot-tools.spec b/uboot-tools.spec index 5af92da..c120a86 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2022.10 -Release: 0.1%{?candidate:.%{candidate}}%{?dist} +Release: 0.2%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -25,6 +25,7 @@ Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch Patch3: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch Patch4: rpi-fallback-to-max-clock-for-mmc.patch Patch5: rpi-bcm2835_sdhost-firmware-managed-clock.patch +Patch6: rpi-Copy-properties-from-firmware-DT-to-loaded-DT.patch # Rockchips improvements Patch7: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch @@ -204,6 +205,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Tue Aug 16 2022 Peter Robinson - 2022.10-0.2.rc1 +- Fix for DT property propogation via firmware + * Thu Jul 28 2022 Peter Robinson - 2022.10-0.1.rc1 - Update to 2022.10 RC1 - Enable LTO for firmware builds From 48ddd14c80cc1b1f8029c285b36722bdbbc4a924 Mon Sep 17 00:00:00 2001 From: Davide Cavalca Date: Sat, 26 Mar 2022 13:53:43 -0700 Subject: [PATCH 121/271] Install nodtb variant for Apple M1 Fixes: rhbz#2068958 --- uboot-tools.spec | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index c120a86..d3c8f96 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2022.10 -Release: 0.2%{?candidate:.%{candidate}}%{?dist} +Release: 0.3%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -142,6 +142,9 @@ do fi done done + +# For Apple M1 we also need the nodtb variant +install -p -m 0644 builds/apple_m1/u-boot-nodtb.bin %{buildroot}%{_datadir}/uboot/apple_m1/u-boot-nodtb.bin %endif # Bit of a hack to remove binaries we don't use as they're large @@ -205,6 +208,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Mon Aug 22 2022 Davide Cavalca - 2022.10-0.3.rc1 +- Install nodtb variant for Apple M1 (rhbz#2068958) + * Tue Aug 16 2022 Peter Robinson - 2022.10-0.2.rc1 - Fix for DT property propogation via firmware From d2c989dc3292764bbb2fef25e5fea67d8fb37447 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 23 Aug 2022 15:29:38 +0100 Subject: [PATCH 122/271] 2022.10 RC3 --- sources | 2 +- uboot-tools.spec | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sources b/sources index bed7049..ba88a1e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2022.10-rc1.tar.bz2) = 7db532ed286d8cc8a3e38d7eee6db6bfe11b9ecba62dc5a0e29b3a95c9c345d3be4f1c036bede2d0d069e291d1dcb4e496ffc3c799b17e483f17fb8a57d5d27f +SHA512 (u-boot-2022.10-rc3.tar.bz2) = 4e4c747525c22180ecf7ad18b6064def4542f08782aaadfd7f6a781a3b7fa1e9474f4d20036a9b62d8265eccc78c361c4b278699d7d81d2721d0a7d504a40d3a diff --git a/uboot-tools.spec b/uboot-tools.spec index d3c8f96..e243451 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc1 +%global candidate rc3 %if !0%{?rhel} %bcond_without toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2022.10 -Release: 0.3%{?candidate:.%{candidate}}%{?dist} +Release: 0.4%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -208,6 +208,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Tue Aug 23 2022 Peter Robinson - 2022.10-0.4.rc3 +- Update to 2022.10 RC3 + * Mon Aug 22 2022 Davide Cavalca - 2022.10-0.3.rc1 - Install nodtb variant for Apple M1 (rhbz#2068958) From 6134477ebcdb4fdd607a0abd62aa5dde5852d058 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 6 Sep 2022 08:51:21 +0100 Subject: [PATCH 123/271] 2022.10 RC4, rockchip PMIC revert --- ...c-rk8xx-Support-sysreset-shutdown-me.patch | 92 +++++++++++++++++++ smbios-test-dmi.patch | 51 ++++++++++ sources | 2 +- uboot-tools.spec | 10 +- 4 files changed, 152 insertions(+), 3 deletions(-) create mode 100644 0001-Revert-power-pmic-rk8xx-Support-sysreset-shutdown-me.patch create mode 100644 smbios-test-dmi.patch diff --git a/0001-Revert-power-pmic-rk8xx-Support-sysreset-shutdown-me.patch b/0001-Revert-power-pmic-rk8xx-Support-sysreset-shutdown-me.patch new file mode 100644 index 0000000..3c297e3 --- /dev/null +++ b/0001-Revert-power-pmic-rk8xx-Support-sysreset-shutdown-me.patch @@ -0,0 +1,92 @@ +From 17096f20920205200b88d6d8facdbef0d3d3d3e8 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Sun, 4 Sep 2022 22:22:50 +0100 +Subject: [PATCH] Revert "power: pmic: rk8xx: Support sysreset shutdown method" + +This reverts commit ad607512f5757f4485968efd5bcf2c0245a8a235. +--- + drivers/power/pmic/rk8xx.c | 50 +------------------------------------- + 1 file changed, 1 insertion(+), 49 deletions(-) + +diff --git a/drivers/power/pmic/rk8xx.c b/drivers/power/pmic/rk8xx.c +index 25ef621f8df..8d703112c38 100644 +--- a/drivers/power/pmic/rk8xx.c ++++ b/drivers/power/pmic/rk8xx.c +@@ -6,50 +6,10 @@ + + #include + #include +-#include + #include + #include + #include + #include +-#include +- +-static int rk8xx_sysreset_request(struct udevice *dev, enum sysreset_t type) +-{ +- struct rk8xx_priv *priv = dev_get_priv(dev->parent); +- +- if (type != SYSRESET_POWER_OFF) +- return -EPROTONOSUPPORT; +- +- switch (priv->variant) { +- case RK805_ID: +- case RK808_ID: +- case RK816_ID: +- case RK818_ID: +- pmic_clrsetbits(dev->parent, REG_DEVCTRL, 0, BIT(0)); +- break; +- case RK809_ID: +- case RK817_ID: +- pmic_clrsetbits(dev->parent, RK817_REG_SYS_CFG3, 0, +- BIT(0)); +- break; +- default: +- printf("Unknown PMIC RK%x: Cannot shutdown\n", +- priv->variant); +- return -EPROTONOSUPPORT; +- }; +- +- return -EINPROGRESS; +-} +- +-static struct sysreset_ops rk8xx_sysreset_ops = { +- .request = rk8xx_sysreset_request, +-}; +- +-U_BOOT_DRIVER(rk8xx_sysreset) = { +- .name = "rk8xx_sysreset", +- .id = UCLASS_SYSRESET, +- .ops = &rk8xx_sysreset_ops, +-}; + + /* In the event of a plug-in and the appropriate option has been + * selected, we simply shutdown instead of continue the normal boot +@@ -133,7 +93,7 @@ static int rk8xx_read(struct udevice *dev, uint reg, uint8_t *buff, int len) + static int rk8xx_bind(struct udevice *dev) + { + ofnode regulators_node; +- int children, ret; ++ int children; + + regulators_node = dev_read_subnode(dev, "regulators"); + if (!ofnode_valid(regulators_node)) { +@@ -144,14 +104,6 @@ static int rk8xx_bind(struct udevice *dev) + + debug("%s: '%s' - found regulators subnode\n", __func__, dev->name); + +- if (CONFIG_IS_ENABLED(SYSRESET)) { +- ret = device_bind_driver_to_node(dev, "rk8xx_sysreset", +- "rk8xx_sysreset", +- dev_ofnode(dev), NULL); +- if (ret) +- return ret; +- } +- + children = pmic_bind_children(dev, regulators_node, pmic_children_info); + if (!children) + debug("%s: %s - no child found\n", __func__, dev->name); +-- +2.37.3 + diff --git a/smbios-test-dmi.patch b/smbios-test-dmi.patch new file mode 100644 index 0000000..c47ac1a --- /dev/null +++ b/smbios-test-dmi.patch @@ -0,0 +1,51 @@ +diff --git a/lib/smbios.c b/lib/smbios.c +index d7f4999e8b..0ceb758cb1 100644 +--- a/lib/smbios.c ++++ b/lib/smbios.c +@@ -281,9 +281,13 @@ static int smbios_write_type1(ulong *current, int handle, + fill_smbios_header(t, SMBIOS_SYSTEM_INFORMATION, len, handle); + smbios_set_eos(ctx, t->eos); + t->manufacturer = smbios_add_prop(ctx, "manufacturer"); ++ if (!t->manufacturer) ++ t->manufacturer = smbios_add_prop(ctx, "compatible"); + if (!t->manufacturer) + t->manufacturer = smbios_add_string(ctx, "Unknown"); + t->product_name = smbios_add_prop(ctx, "product"); ++ if (!t->product_name) ++ t->product_name = smbios_add_prop(ctx, "model"); + if (!t->product_name) + t->product_name = smbios_add_string(ctx, "Unknown Product"); + t->version = smbios_add_prop_si(ctx, "version", +@@ -315,9 +319,13 @@ static int smbios_write_type2(ulong *current, int handle, + fill_smbios_header(t, SMBIOS_BOARD_INFORMATION, len, handle); + smbios_set_eos(ctx, t->eos); + t->manufacturer = smbios_add_prop(ctx, "manufacturer"); ++ if (!t->manufacturer) ++ t->manufacturer = smbios_add_prop(ctx, "compatible"); + if (!t->manufacturer) + t->manufacturer = smbios_add_string(ctx, "Unknown"); + t->product_name = smbios_add_prop(ctx, "product"); ++ if (!t->product_name) ++ t->product_name = smbios_add_prop(ctx, "model"); + if (!t->product_name) + t->product_name = smbios_add_string(ctx, "Unknown Product"); + t->version = smbios_add_prop_si(ctx, "version", +@@ -344,6 +352,8 @@ static int smbios_write_type3(ulong *current, int handle, + fill_smbios_header(t, SMBIOS_SYSTEM_ENCLOSURE, len, handle); + smbios_set_eos(ctx, t->eos); + t->manufacturer = smbios_add_prop(ctx, "manufacturer"); ++ if (!t->manufacturer) ++ t->manufacturer = smbios_add_prop(ctx, "compatible"); + if (!t->manufacturer) + t->manufacturer = smbios_add_string(ctx, "Unknown"); + t->chassis_type = SMBIOS_ENCLOSURE_DESKTOP; +@@ -503,6 +513,9 @@ ulong write_smbios_table(ulong addr) + if (IS_ENABLED(CONFIG_OF_CONTROL) && method->subnode_name) + ctx.node = ofnode_find_subnode(parent_node, + method->subnode_name); ++ /* If we can't find any smbios node fallback to the entire DT */ ++ if (!ofnode_valid(ctx.node)) ++ ctx.node = ofnode_root(); + tmp = method->write((ulong *)&addr, handle++, &ctx); + + max_struct_size = max(max_struct_size, tmp); diff --git a/sources b/sources index ba88a1e..1ac9bfe 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2022.10-rc3.tar.bz2) = 4e4c747525c22180ecf7ad18b6064def4542f08782aaadfd7f6a781a3b7fa1e9474f4d20036a9b62d8265eccc78c361c4b278699d7d81d2721d0a7d504a40d3a +SHA512 (u-boot-2022.10-rc4.tar.bz2) = 678b64480d794af987e462076575db9b3b44a458fca5e68f8f0df5701d40642c4e10e5f2d3daa50513c30d5573a57c0d1f4707178a385ca0509bc1d5412f81ea diff --git a/uboot-tools.spec b/uboot-tools.spec index e243451..63125e4 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc3 +%global candidate rc4 %if !0%{?rhel} %bcond_without toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2022.10 -Release: 0.4%{?candidate:.%{candidate}}%{?dist} +Release: 0.5%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -19,6 +19,7 @@ Source1: aarch64-boards # Fedoraisms patches # Needed to find DT on boot partition that's not the first partition Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch +Patch2: smbios-test-dmi.patch # Board fixes and enablement # RPi - uses RPI firmware device tree for HAT support @@ -28,6 +29,7 @@ Patch5: rpi-bcm2835_sdhost-firmware-managed-clock.patch Patch6: rpi-Copy-properties-from-firmware-DT-to-loaded-DT.patch # Rockchips improvements Patch7: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch +Patch8: 0001-Revert-power-pmic-rk8xx-Support-sysreset-shutdown-me.patch BuildRequires: bc BuildRequires: bison @@ -208,6 +210,10 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Tue Sep 06 2022 Peter Robinson - 2022.10-0.5.rc4 +- Update to 2022.10 RC4 +- Fix for booting Rockchip devices from NVME + * Tue Aug 23 2022 Peter Robinson - 2022.10-0.4.rc3 - Update to 2022.10 RC3 From 3b11dffa4fec507c63605a81cda9ab88a5e3ac79 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 6 Sep 2022 17:31:51 +0100 Subject: [PATCH 124/271] Update SMBIOS patch --- ...Simplify-reporting-of-unknown-values.patch | 544 ++++++++++++++++++ smbios-test-dmi.patch | 51 -- uboot-tools.spec | 7 +- 3 files changed, 549 insertions(+), 53 deletions(-) create mode 100644 smbios-Simplify-reporting-of-unknown-values.patch delete mode 100644 smbios-test-dmi.patch diff --git a/smbios-Simplify-reporting-of-unknown-values.patch b/smbios-Simplify-reporting-of-unknown-values.patch new file mode 100644 index 0000000..0aef8e7 --- /dev/null +++ b/smbios-Simplify-reporting-of-unknown-values.patch @@ -0,0 +1,544 @@ +From patchwork Tue Sep 6 13:44:25 2022 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Ilias Apalodimas +X-Patchwork-Id: 1674857 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +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=) +Authentication-Results: legolas.ozlabs.org; + dkim=pass (2048-bit key; + unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 + header.s=google header.b=wUY2RcfH; + dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature ECDSA (P-384)) + (No client certificate requested) + by legolas.ozlabs.org (Postfix) with ESMTPS id 4MMRT72TCPz1yhd + for ; Tue, 6 Sep 2022 23:44:43 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 498F2849CE; + Tue, 6 Sep 2022 15:44:39 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=linaro.org +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=linaro.org header.i=@linaro.org header.b="wUY2RcfH"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id A8842849CF; Tue, 6 Sep 2022 15:44:37 +0200 (CEST) +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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com + [IPv6:2a00:1450:4864:20::52d]) + (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 403A5849AA + for ; Tue, 6 Sep 2022 15:44:35 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=linaro.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=ilias.apalodimas@linaro.org +Received: by mail-ed1-x52d.google.com with SMTP id x73so8243364ede.10 + for ; Tue, 06 Sep 2022 06:44:35 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; + h=content-transfer-encoding:mime-version:message-id:date:subject:cc + :to:from:from:to:cc:subject:date; + bh=YBbhuTYZcGSI4FSsstTIADofj6ZEC8vsTpd/U8gWDlU=; + b=wUY2RcfHqhMQ1dgd2my7jtmfsgHjAF8xFa3HnTkB/tUGQL/oQyls7ODcVui/VImHlf + Ah33xwYqK1nwEuoS8HqkWcksTr48pKf/EikkkBbHif0XnfS4oySI3RHo7WW6Yi8HQUoP + tbuQ3LPSYgo+62HaqTYVoJ2g6jc1qiEFe/+y6hR2BfmyKd0g/SxwLS9P1QuQosdhX+uO + DKWWukFYFV06Nn7x/3oiyoXq33VAWatgQBv/sPC7dBgh/EpnobDpI8NhNhJAkFIcAUrU + B91PBwNRtB1Lsf+Eo3WjLtQbinL3h/VvogRSvZEoKCmHY5dbTYB8G1uNzksnK6QecIRu + q9qA== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20210112; + h=content-transfer-encoding:mime-version:message-id:date:subject:cc + :to:from:x-gm-message-state:from:to:cc:subject:date; + bh=YBbhuTYZcGSI4FSsstTIADofj6ZEC8vsTpd/U8gWDlU=; + b=KfQ/P0sYI7szdfgs6GA5oPXctzQ8yfxjRs7PgVHFg7jl09SeFl3jpKzaMGbC7GlEgM + JXt2VP6w9TndL/D71cR8w9BObY2mZJoLRP/s25LpSU6izkisnuueyGeqKegGEfGE+4B3 + 9xaG/EUlPZmHlAem6bOf9Dl6lE5WkT6SnTDopwODIbcTAWlIa8Gjtw9XBaaa8iRnVuTn + S3IwY9R7DLaSFBQXTVHmAYnhCc2b5XCRKlSNwmDE65+LqvOdAu3MTbA5/YyL9pEPjHi9 + 4q0ZQksAE0olpQQwxyjHrvz7h7ktSuJoesa/A4dX3PEbzSbBmPI1CGtPy27/luAUCH3F + e8Vw== +X-Gm-Message-State: ACgBeo2YRons+T+T1+BdP4+uyEFge3LrQ/gS2VYwuVZg325XGZ8HVnXH + Lq8no+qriMaFPrto6+L889ufiYLHsm+dZQ== +X-Google-Smtp-Source: + AA6agR6coLdFIB45xwZJzpltd9Qfi6bEAn6J22G77ibwSDNyt1L1YbxRL9dlK4pmf9A6n2RN31Ug2w== +X-Received: by 2002:aa7:c84f:0:b0:446:2bfb:5a63 with SMTP id + g15-20020aa7c84f000000b004462bfb5a63mr17498596edt.172.1662471874779; + Tue, 06 Sep 2022 06:44:34 -0700 (PDT) +Received: from localhost.localdomain ([46.103.15.185]) + by smtp.gmail.com with ESMTPSA id + p23-20020a056402501700b0043ba7df7a42sm8473330eda.26.2022.09.06.06.44.33 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Tue, 06 Sep 2022 06:44:34 -0700 (PDT) +From: Ilias Apalodimas +To: u-boot@lists.denx.de +Cc: trini@konsulko.com, sjg@chromium.org, heinrich.schuchardt@canonical.com, + pbrobinson@gmail.com, Ilias Apalodimas +Subject: [PATCH 1/2] smbios: Simplify reporting of unknown values +Date: Tue, 6 Sep 2022 16:44:25 +0300 +Message-Id: <20220906134426.53748-1-ilias.apalodimas@linaro.org> +X-Mailer: git-send-email 2.37.2 +MIME-Version: 1.0 +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.6 at phobos.denx.de +X-Virus-Status: Clean + +If a value is not valid during the DT or SYSINFO parsing, we explicitly +set that to "Unknown Product" and "Unknown" for the product and +manufacturer respectively. It's cleaner if we move the checks insisde +smbios_add_string() and always report "Unknown" regardless of the missing +field. + +pre-patch dmidecode + +Handle 0x0001, DMI type 1, 27 bytes +System Information + Manufacturer: Unknown + Product Name: Unknown Product + Version: Not Specified + Serial Number: Not Specified + UUID: Not Settable + Wake-up Type: Reserved + SKU Number: Not Specified + Family: Not Specified + +Handle 0x0002, DMI type 2, 14 bytes +Base Board Information + Manufacturer: Unknown + Product Name: Unknown Product + Version: Not Specified + Serial Number: Not Specified + Asset Tag: Not Specified + Features: + Board is a hosting board + Location In Chassis: Not Specified + Chassis Handle: 0x0000 + Type: Motherboard + + +post-patch dmidecode: + +Handle 0x0001, DMI type 1, 27 bytes +System Information + Manufacturer: Unknown + Product Name: Unknown + Version: Unknown + Serial Number: Unknown + UUID: Not Settable + Wake-up Type: Reserved + SKU Number: Unknown + Family: Unknown + +Handle 0x0002, DMI type 2, 14 bytes +Base Board Information + Manufacturer: Unknown + Product Name: Unknown + Version: Unknown + Serial Number: Not Specified + Asset Tag: Unknown + Features: + Board is a hosting board + Location In Chassis: Not Specified + Chassis Handle: 0x0000 + Type: Motherboard + +Signed-off-by: Ilias Apalodimas +--- + lib/smbios.c | 17 +++-------------- + 1 file changed, 3 insertions(+), 14 deletions(-) + +diff --git a/lib/smbios.c b/lib/smbios.c +index d7f4999e8b2a..fcc8686993ef 100644 +--- a/lib/smbios.c ++++ b/lib/smbios.c +@@ -102,7 +102,7 @@ static int smbios_add_string(struct smbios_ctx *ctx, const char *str) + int i = 1; + char *p = ctx->eos; + +- if (!*str) ++ if (!str || !*str) + str = "Unknown"; + + for (;;) { +@@ -151,8 +151,7 @@ static int smbios_add_prop_si(struct smbios_ctx *ctx, const char *prop, + const char *str; + + str = ofnode_read_string(ctx->node, prop); +- if (str) +- return smbios_add_string(ctx, str); ++ return smbios_add_string(ctx, str); + } + + return 0; +@@ -231,7 +230,7 @@ static int smbios_write_type0(ulong *current, int handle, + t->vendor = smbios_add_string(ctx, "U-Boot"); + + t->bios_ver = smbios_add_prop(ctx, "version"); +- if (!t->bios_ver) ++ if (!strcmp(ctx->last_str, "Unknown")) + t->bios_ver = smbios_add_string(ctx, PLAIN_VERSION); + if (t->bios_ver) + gd->smbios_version = ctx->last_str; +@@ -281,11 +280,7 @@ static int smbios_write_type1(ulong *current, int handle, + fill_smbios_header(t, SMBIOS_SYSTEM_INFORMATION, len, handle); + smbios_set_eos(ctx, t->eos); + t->manufacturer = smbios_add_prop(ctx, "manufacturer"); +- if (!t->manufacturer) +- t->manufacturer = smbios_add_string(ctx, "Unknown"); + t->product_name = smbios_add_prop(ctx, "product"); +- if (!t->product_name) +- t->product_name = smbios_add_string(ctx, "Unknown Product"); + t->version = smbios_add_prop_si(ctx, "version", + SYSINFO_ID_SMBIOS_SYSTEM_VERSION); + if (serial_str) { +@@ -315,11 +310,7 @@ static int smbios_write_type2(ulong *current, int handle, + fill_smbios_header(t, SMBIOS_BOARD_INFORMATION, len, handle); + smbios_set_eos(ctx, t->eos); + t->manufacturer = smbios_add_prop(ctx, "manufacturer"); +- if (!t->manufacturer) +- t->manufacturer = smbios_add_string(ctx, "Unknown"); + t->product_name = smbios_add_prop(ctx, "product"); +- if (!t->product_name) +- t->product_name = smbios_add_string(ctx, "Unknown Product"); + t->version = smbios_add_prop_si(ctx, "version", + SYSINFO_ID_SMBIOS_BASEBOARD_VERSION); + t->asset_tag_number = smbios_add_prop(ctx, "asset-tag"); +@@ -344,8 +335,6 @@ static int smbios_write_type3(ulong *current, int handle, + fill_smbios_header(t, SMBIOS_SYSTEM_ENCLOSURE, len, handle); + smbios_set_eos(ctx, t->eos); + t->manufacturer = smbios_add_prop(ctx, "manufacturer"); +- if (!t->manufacturer) +- t->manufacturer = smbios_add_string(ctx, "Unknown"); + t->chassis_type = SMBIOS_ENCLOSURE_DESKTOP; + t->bootup_state = SMBIOS_STATE_SAFE; + t->power_supply_state = SMBIOS_STATE_SAFE; + +From patchwork Tue Sep 6 13:44:26 2022 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Ilias Apalodimas +X-Patchwork-Id: 1674858 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +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=) +Authentication-Results: legolas.ozlabs.org; + dkim=pass (2048-bit key; + unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 + header.s=google header.b=wBCOiKYw; + dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature ECDSA (P-384)) + (No client certificate requested) + by legolas.ozlabs.org (Postfix) with ESMTPS id 4MMRTM5pHRz1yhk + for ; Tue, 6 Sep 2022 23:44:55 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 3639F849EA; + Tue, 6 Sep 2022 15:44:53 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=linaro.org +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=linaro.org header.i=@linaro.org header.b="wBCOiKYw"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id E57FC84A1A; Tue, 6 Sep 2022 15:44:51 +0200 (CEST) +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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com + [IPv6:2a00:1450:4864:20::52f]) + (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 60CD0849AA + for ; Tue, 6 Sep 2022 15:44:49 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=linaro.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=ilias.apalodimas@linaro.org +Received: by mail-ed1-x52f.google.com with SMTP id z21so5172669edi.1 + for ; Tue, 06 Sep 2022 06:44:49 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; + h=content-transfer-encoding:mime-version:references:in-reply-to + :message-id:date:subject:cc:to:from:from:to:cc:subject:date; + bh=KsGBN7dLy4q3TeQQmsDywPtn2m3V5eSK1ppBgO8D3xg=; + b=wBCOiKYwM4mGDZUo6l68tblLVt57cCnO0dlzFPj9+m6cwKXe3agxiM3w4t9T5c822i + vHmFd2F08bUrX81t/h4PDzg0mngbB9Rc9o4i3td1G9Zw6NdmogU7T7gEUyKKcTc80AWl + QbbYgxulWB5Eg2dTQ3tlb2xmb5BU1/X0zl/rOC6l89urohdQtpIJ4XgFlijFlBgxh8XD + aHytniLKGTLlVdJAIobcF9aM/ihpO7LPTDZ4SPCBt4t9+UWGW7vuTPDPDkCRiaaFestv + 9P32ZrGj43CH92zBQtpgZICS0UhzD3oYWJkwsmFbfxddgY5VD5SQi69VzD1CfFOvTGgX + 5HBg== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20210112; + 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; + bh=KsGBN7dLy4q3TeQQmsDywPtn2m3V5eSK1ppBgO8D3xg=; + b=h1yL2aMN8ooI48PrqxwSNjw+MAj6qGtRMJjV8AWmRfv7nVQ97I/cXbauy/NItVEWP0 + eO4WFqVMQO+xyGn1S5w0MXYGVbEpVNxf0gwM7n7Ad+K2E2PDHyu6glGTvcqCW11gPGOJ + uNDyo6pu7OtmOBso2OaL5eMGhw66ZGqQbzlQtO0mhqJf1RtQ9fRduRZrfTzAR9wIrM4Y + qR3iK6b4O97tu0W0SctGf3rCNzI2bDv/zBKRvfSJ6q7s4DhLDxBJyQjySBo0Ee6UIwKc + 5q8zldycF/JfIbqzlJe6DaeoeDbzJ7qLBPvDmxQ7owSV9ftEa8lh/IIdPn13uDL2Bxjz + WLbg== +X-Gm-Message-State: ACgBeo0DsGDn9dDw7GQ5K44iwyXJqKH0pM3NWFxuDlmBNzKLyzH8SEzb + 03ImCopxuD/6oyVtH7ygeEl2Cc6GlNzVNQ== +X-Google-Smtp-Source: + AA6agR6kpp8KIkqO+/pui5Dy7mRTrk+S2U0k99eVOJv3PGkIDZ8H0oqIBypOwW5nogFds0FAjF4TXg== +X-Received: by 2002:a05:6402:f18:b0:44d:9a45:394 with SMTP id + i24-20020a0564020f1800b0044d9a450394mr12375719eda.138.1662471889015; + Tue, 06 Sep 2022 06:44:49 -0700 (PDT) +Received: from localhost.localdomain ([46.103.15.185]) + by smtp.gmail.com with ESMTPSA id + p23-20020a056402501700b0043ba7df7a42sm8473330eda.26.2022.09.06.06.44.48 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Tue, 06 Sep 2022 06:44:48 -0700 (PDT) +From: Ilias Apalodimas +To: u-boot@lists.denx.de +Cc: trini@konsulko.com, sjg@chromium.org, heinrich.schuchardt@canonical.com, + pbrobinson@gmail.com, Ilias Apalodimas +Subject: [PATCH 2/2] smbios: Fallback to the default DT if sysinfo nodes are + missing +Date: Tue, 6 Sep 2022 16:44:26 +0300 +Message-Id: <20220906134426.53748-2-ilias.apalodimas@linaro.org> +X-Mailer: git-send-email 2.37.2 +In-Reply-To: <20220906134426.53748-1-ilias.apalodimas@linaro.org> +References: <20220906134426.53748-1-ilias.apalodimas@linaro.org> +MIME-Version: 1.0 +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.6 at phobos.denx.de +X-Virus-Status: Clean + +In order to fill in the SMBIOS tables U-Boot currently relies on a +"u-boot,sysinfo-smbios" compatible node. This is fine for the boards +that already include such nodes. However with some recent EFI changes, +the majority of boards can boot up distros, which usually rely on +things like dmidecode etc for their reporting. For boards that +lack this special node the SMBIOS output looks like: + +System Information + Manufacturer: Unknown + Product Name: Unknown + Version: Unknown + Serial Number: Unknown + UUID: Not Settable + Wake-up Type: Reserved + SKU Number: Unknown + Family: Unknown + +This looks problematic since most of the info are "Unknown". The DT spec +specifies standard properties containing relevant information like +'model' and 'compatible' for which the suggested format is +. So let's add a last resort to our current +smbios parsing. If none of the sysinfo properties are found, we can +scan the root node for 'model' and 'compatible'. + +pre-patch dmidecode: + +Handle 0x0001, DMI type 1, 27 bytes +System Information + Manufacturer: Unknown + Product Name: Unknown + Version: Unknown + Serial Number: Unknown + UUID: Not Settable + Wake-up Type: Reserved + SKU Number: Unknown + Family: Unknown + +Handle 0x0002, DMI type 2, 14 bytes +Base Board Information + Manufacturer: Unknown + Product Name: Unknown + Version: Unknown + Serial Number: Not Specified + Asset Tag: Unknown + Features: + Board is a hosting board + Location In Chassis: Not Specified + Chassis Handle: 0x0000 + Type: Motherboard + +Handle 0x0003, DMI type 3, 21 bytes +Chassis Information + Manufacturer: Unknown + Type: Desktop + Lock: Not Present + Version: Not Specified + Serial Number: Not Specified + Asset Tag: Not Specified + Boot-up State: Safe + Power Supply State: Safe + Thermal State: Safe + Security Status: None + OEM Information: 0x00000000 + Height: Unspecified + Number Of Power Cords: Unspecified + Contained Elements: 0 + + +post-pastch dmidecode: + +Handle 0x0001, DMI type 1, 27 bytes +System Information + Manufacturer: socionext,developer-box + Product Name: Socionext Developer Box + Version: Unknown + Serial Number: Unknown + UUID: Not Settable + Wake-up Type: Reserved + SKU Number: Unknown + Family: Unknown + +Handle 0x0002, DMI type 2, 14 bytes +Base Board Information + Manufacturer: socionext,developer-box + Product Name: Socionext Developer Box + Version: Unknown + Serial Number: Not Specified + Asset Tag: Unknown + Features: + Board is a hosting board + Location In Chassis: Not Specified + Chassis Handle: 0x0000 + Type: Motherboard + +Handle 0x0003, DMI type 3, 21 bytes +Chassis Information + Manufacturer: socionext,developer-box + Type: Desktop + Lock: Not Present + Version: Not Specified + Serial Number: Not Specified + Asset Tag: Not Specified + Boot-up State: Safe + Power Supply State: Safe + Thermal State: Safe + Security Status: None + OEM Information: 0x00000000 + Height: Unspecified + Number Of Power Cords: Unspecified + Contained Elements: 0 + + +Signed-off-by: Ilias Apalodimas +--- + lib/smbios.c | 41 +++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 39 insertions(+), 2 deletions(-) + +diff --git a/lib/smbios.c b/lib/smbios.c +index fcc8686993ef..f2eb961f514b 100644 +--- a/lib/smbios.c ++++ b/lib/smbios.c +@@ -43,6 +43,20 @@ + + DECLARE_GLOBAL_DATA_PTR; + ++/** ++ * struct sysifno_to_dt - Mapping of sysinfo strings to DT ++ * ++ * @sysinfo_str: sysinfo string ++ * @dt_str: DT string ++ */ ++static const struct { ++ const char *sysinfo_str; ++ const char *dt_str; ++} sysifno_to_dt[] = { ++ { .sysinfo_str = "product", .dt_str = "model" }, ++ { .sysinfo_str = "manufacturer", .dt_str = "compatible" }, ++}; ++ + /** + * struct smbios_ctx - context for writing SMBIOS tables + * +@@ -87,6 +101,18 @@ struct smbios_write_method { + const char *subnode_name; + }; + ++static const char *convert_sysinfo_to_dt(const char *sysinfo_str) ++{ ++ int i; ++ ++ for (i = 0; i < ARRAY_SIZE(sysifno_to_dt); i++) { ++ if (!strcmp(sysinfo_str, sysifno_to_dt[i].sysinfo_str)) ++ return sysifno_to_dt[i].dt_str; ++ } ++ ++ return NULL; ++} ++ + /** + * smbios_add_string() - add a string to the string area + * +@@ -148,9 +174,20 @@ static int smbios_add_prop_si(struct smbios_ctx *ctx, const char *prop, + return smbios_add_string(ctx, val); + } + if (IS_ENABLED(CONFIG_OF_CONTROL)) { +- const char *str; ++ const char *str = NULL; + +- str = ofnode_read_string(ctx->node, prop); ++ /* ++ * If the node is not valid fallback and try the entire DT ++ * so we can at least fill in maufacturer and board type ++ */ ++ if (!ofnode_valid(ctx->node)) { ++ const char *nprop = convert_sysinfo_to_dt(prop); ++ ++ if (nprop) ++ str = ofnode_read_string(ofnode_root(), nprop); ++ } else { ++ str = ofnode_read_string(ctx->node, prop); ++ } + return smbios_add_string(ctx, str); + } + diff --git a/smbios-test-dmi.patch b/smbios-test-dmi.patch deleted file mode 100644 index c47ac1a..0000000 --- a/smbios-test-dmi.patch +++ /dev/null @@ -1,51 +0,0 @@ -diff --git a/lib/smbios.c b/lib/smbios.c -index d7f4999e8b..0ceb758cb1 100644 ---- a/lib/smbios.c -+++ b/lib/smbios.c -@@ -281,9 +281,13 @@ static int smbios_write_type1(ulong *current, int handle, - fill_smbios_header(t, SMBIOS_SYSTEM_INFORMATION, len, handle); - smbios_set_eos(ctx, t->eos); - t->manufacturer = smbios_add_prop(ctx, "manufacturer"); -+ if (!t->manufacturer) -+ t->manufacturer = smbios_add_prop(ctx, "compatible"); - if (!t->manufacturer) - t->manufacturer = smbios_add_string(ctx, "Unknown"); - t->product_name = smbios_add_prop(ctx, "product"); -+ if (!t->product_name) -+ t->product_name = smbios_add_prop(ctx, "model"); - if (!t->product_name) - t->product_name = smbios_add_string(ctx, "Unknown Product"); - t->version = smbios_add_prop_si(ctx, "version", -@@ -315,9 +319,13 @@ static int smbios_write_type2(ulong *current, int handle, - fill_smbios_header(t, SMBIOS_BOARD_INFORMATION, len, handle); - smbios_set_eos(ctx, t->eos); - t->manufacturer = smbios_add_prop(ctx, "manufacturer"); -+ if (!t->manufacturer) -+ t->manufacturer = smbios_add_prop(ctx, "compatible"); - if (!t->manufacturer) - t->manufacturer = smbios_add_string(ctx, "Unknown"); - t->product_name = smbios_add_prop(ctx, "product"); -+ if (!t->product_name) -+ t->product_name = smbios_add_prop(ctx, "model"); - if (!t->product_name) - t->product_name = smbios_add_string(ctx, "Unknown Product"); - t->version = smbios_add_prop_si(ctx, "version", -@@ -344,6 +352,8 @@ static int smbios_write_type3(ulong *current, int handle, - fill_smbios_header(t, SMBIOS_SYSTEM_ENCLOSURE, len, handle); - smbios_set_eos(ctx, t->eos); - t->manufacturer = smbios_add_prop(ctx, "manufacturer"); -+ if (!t->manufacturer) -+ t->manufacturer = smbios_add_prop(ctx, "compatible"); - if (!t->manufacturer) - t->manufacturer = smbios_add_string(ctx, "Unknown"); - t->chassis_type = SMBIOS_ENCLOSURE_DESKTOP; -@@ -503,6 +513,9 @@ ulong write_smbios_table(ulong addr) - if (IS_ENABLED(CONFIG_OF_CONTROL) && method->subnode_name) - ctx.node = ofnode_find_subnode(parent_node, - method->subnode_name); -+ /* If we can't find any smbios node fallback to the entire DT */ -+ if (!ofnode_valid(ctx.node)) -+ ctx.node = ofnode_root(); - tmp = method->write((ulong *)&addr, handle++, &ctx); - - max_struct_size = max(max_struct_size, tmp); diff --git a/uboot-tools.spec b/uboot-tools.spec index 63125e4..503380f 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2022.10 -Release: 0.5%{?candidate:.%{candidate}}%{?dist} +Release: 0.6%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -19,7 +19,7 @@ Source1: aarch64-boards # Fedoraisms patches # Needed to find DT on boot partition that's not the first partition Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch -Patch2: smbios-test-dmi.patch +Patch2: smbios-Simplify-reporting-of-unknown-values.patch # Board fixes and enablement # RPi - uses RPI firmware device tree for HAT support @@ -210,6 +210,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Tue Sep 06 2022 Peter Robinson - 2022.10-0.6.rc4 +- Update SMBIOS patch + * Tue Sep 06 2022 Peter Robinson - 2022.10-0.5.rc4 - Update to 2022.10 RC4 - Fix for booting Rockchip devices from NVME From 716e4d578e74142b8c7b696eda62668120d59fa3 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 10 Oct 2022 20:43:56 +0100 Subject: [PATCH 125/271] 2022.10 GA --- sources | 2 +- uboot-tools.spec | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sources b/sources index 1ac9bfe..ec76487 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2022.10-rc4.tar.bz2) = 678b64480d794af987e462076575db9b3b44a458fca5e68f8f0df5701d40642c4e10e5f2d3daa50513c30d5573a57c0d1f4707178a385ca0509bc1d5412f81ea +SHA512 (u-boot-2022.10.tar.bz2) = 95bc1f915a3349f6045e59f46d8514485ca0de1d62303f7026b8e59f3ac539b9545895e0dd736ed7b26f28239db31672ecad2accc3fd99356a55269697039147 diff --git a/uboot-tools.spec b/uboot-tools.spec index 503380f..1cf1c00 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc4 +#global candidate rc1 %if !0%{?rhel} %bcond_without toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2022.10 -Release: 0.6%{?candidate:.%{candidate}}%{?dist} +Release: 1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -210,6 +210,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Mon Oct 10 2022 Peter Robinson - 2022.10-1 +- Update to 2022.10 GA + * Tue Sep 06 2022 Peter Robinson - 2022.10-0.6.rc4 - Update SMBIOS patch From 56a26f9cc480affc48ed3af8be923560170453d9 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 24 Nov 2022 13:10:24 +0000 Subject: [PATCH 126/271] 2023.01 RC2 --- aarch64-boards | 1 + ...nitial-support-for-the-PinePhone-Pro.patch | 82 +++++++++++++++++++ sources | 2 +- uboot-tools.spec | 18 ++-- ...DT-from-any-partition-on-boot-device.patch | 17 ++-- 5 files changed, 106 insertions(+), 14 deletions(-) diff --git a/aarch64-boards b/aarch64-boards index ab282d9..6cd34df 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -61,6 +61,7 @@ pinebook pinebook-pro-rk3399 pine_h64 pinephone +pinephone-pro-rk3399 pinetab poplar puma-rk3399 diff --git a/rockchip-Add-initial-support-for-the-PinePhone-Pro.patch b/rockchip-Add-initial-support-for-the-PinePhone-Pro.patch index 3dc7614..f06c063 100644 --- a/rockchip-Add-initial-support-for-the-PinePhone-Pro.patch +++ b/rockchip-Add-initial-support-for-the-PinePhone-Pro.patch @@ -884,3 +884,85 @@ index 0000000000..fefa793fdd +#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 2 + +#endif +--- u-boot-2022.10/configs/pinephone-pro-rk3399_defconfig.orig 2022-10-12 16:14:17.050158119 +0100 ++++ u-boot-2022.10/configs/pinephone-pro-rk3399_defconfig 2022-10-12 16:14:28.525240728 +0100 +@@ -1,27 +1,37 @@ + CONFIG_ARM=y + CONFIG_SKIP_LOWLEVEL_INIT=y ++CONFIG_COUNTER_FREQUENCY=24000000 + CONFIG_ARCH_ROCKCHIP=y + CONFIG_SYS_TEXT_BASE=0x00200000 + CONFIG_NR_DRAM_BANKS=1 + CONFIG_ENV_SIZE=0x8000 ++CONFIG_ENV_OFFSET=0x3F8000 ++CONFIG_DEFAULT_DEVICE_TREE="rk3399-pinephone-pro" + CONFIG_ROCKCHIP_RK3399=y + CONFIG_TARGET_PINEPHONE_PRO_RK3399=y + CONFIG_DEBUG_UART_BASE=0xFF1A0000 + CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SPL_SPI_FLASH_SUPPORT=y +-CONFIG_SPL_SPI_SUPPORT=y +-CONFIG_DEFAULT_DEVICE_TREE="rk3399-pinephone-pro" +-CONFIG_DEBUG_UART=y ++CONFIG_SPL_SPI=y + CONFIG_SYS_LOAD_ADDR=0x800800 ++CONFIG_DEBUG_UART=y ++CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y ++CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x300000 + CONFIG_BOOTDELAY=3 + CONFIG_USE_PREBOOT=y + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-pinephone-pro.dtb" + CONFIG_DISPLAY_BOARDINFO_LATE=y + CONFIG_MISC_INIT_R=y ++CONFIG_SPL_MAX_SIZE=0x2e000 ++CONFIG_SPL_PAD_TO=0x7f8000 ++CONFIG_SPL_HAS_BSS_LINKER_SECTION=y ++CONFIG_SPL_BSS_START_ADDR=0x400000 ++CONFIG_SPL_BSS_MAX_SIZE=0x2000 + # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set ++# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set ++CONFIG_SPL_STACK=0x400000 + CONFIG_SPL_STACK_R=y + CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000 +-CONFIG_SPL_MTD_SUPPORT=y + CONFIG_SPL_SPI_LOAD=y + CONFIG_TPL=y + CONFIG_CMD_BOOTZ=y +@@ -39,6 +49,7 @@ + CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" + CONFIG_ENV_IS_IN_SPI_FLASH=y + CONFIG_SYS_RELOC_GD_ENV_ADDR=y ++CONFIG_SPL_DM_SEQ_ALIAS=y + CONFIG_ROCKCHIP_GPIO=y + CONFIG_SYS_I2C_ROCKCHIP=y + CONFIG_DM_KEYBOARD=y +@@ -51,10 +62,10 @@ + CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_SDMA=y + CONFIG_MMC_SDHCI_ROCKCHIP=y ++CONFIG_SF_DEFAULT_BUS=1 + CONFIG_SF_DEFAULT_SPEED=20000000 + CONFIG_SPI_FLASH_GIGADEVICE=y + CONFIG_SPI_FLASH_WINBOND=y +-CONFIG_DM_ETH=y + CONFIG_PHY_ROCKCHIP_INNO_USB2=y + CONFIG_PHY_ROCKCHIP_TYPEC=y + CONFIG_DM_PMIC_FAN53555=y +@@ -77,6 +88,7 @@ + CONFIG_USB_EHCI_GENERIC=y + CONFIG_USB_OHCI_HCD=y + CONFIG_USB_OHCI_GENERIC=y ++CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS=2 + CONFIG_USB_DWC3=y + CONFIG_USB_DWC3_GENERIC=y + CONFIG_USB_KEYBOARD=y +--- u-boot-2022.10/include/configs/pinephone-pro-rk3399.h.orig 2022-10-12 16:14:51.881408874 +0100 ++++ u-boot-2022.10/include/configs/pinephone-pro-rk3399.h 2022-10-12 16:14:58.693457915 +0100 +@@ -17,7 +17,4 @@ + + #define SDRAM_BANK_SIZE (2UL << 30) + +-#define CONFIG_USB_OHCI_NEW +-#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 2 +- + #endif diff --git a/sources b/sources index ec76487..68c900c 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2022.10.tar.bz2) = 95bc1f915a3349f6045e59f46d8514485ca0de1d62303f7026b8e59f3ac539b9545895e0dd736ed7b26f28239db31672ecad2accc3fd99356a55269697039147 +SHA512 (u-boot-2023.01-rc2.tar.bz2) = fd3c25db53c59ec2a101955582a5e240b178e7e3e29e9a0070687411ff5bbe0f2bb1bb398198572ba9724870482c947432bc5256da7f7761bed693e8c613b433 diff --git a/uboot-tools.spec b/uboot-tools.spec index 1cf1c00..3dbadd9 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,13 +1,13 @@ -#global candidate rc1 -%if !0%{?rhel} -%bcond_without toolsonly -%else +%global candidate rc2 +%if 0%{?rhel} %bcond_with toolsonly +%else +%bcond_without toolsonly %endif Name: uboot-tools -Version: 2022.10 -Release: 1%{?candidate:.%{candidate}}%{?dist} +Version: 2023.01 +Release: 0.1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -47,9 +47,11 @@ BuildRequires: python3-setuptools BuildRequires: python3-libfdt BuildRequires: SDL-devel BuildRequires: swig +%if %{with toolsonly} %ifarch aarch64 BuildRequires: arm-trusted-firmware-armv8 %endif +%endif Requires: dtc %description @@ -210,6 +212,10 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Thu Nov 24 2022 Peter Robinson - 2023.01-0.1.rc2 +- Update to U-Boot 2023.01 RC2 +- Update Pinephone Pro patches + * Mon Oct 10 2022 Peter Robinson - 2022.10-1 - Update to 2022.10 GA diff --git a/uefi-distro-load-FDT-from-any-partition-on-boot-device.patch b/uefi-distro-load-FDT-from-any-partition-on-boot-device.patch index c28fdb0..112c79e 100644 --- a/uefi-distro-load-FDT-from-any-partition-on-boot-device.patch +++ b/uefi-distro-load-FDT-from-any-partition-on-boot-device.patch @@ -1,6 +1,6 @@ -From fd3434c754b3b8dddb345352a2434b6b8445343a Mon Sep 17 00:00:00 2001 +From 4306c538d4a00dd1aa46c55c3c4005c2b0bf7cd5 Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Sun, 18 Apr 2021 14:05:45 +0100 +Date: Thu, 24 Nov 2022 12:57:55 +0000 Subject: [PATCH] distro: load FDT from any partition on boot device In the EFI_LOADER boot path, we were only checking the FAT partition @@ -22,14 +22,14 @@ knows) and SoC/board specific ${fdtfile} (which grub does not know). Signed-off-by: Rob Clark Signed-off-by: Peter Robinson --- - include/config_distro_bootcmd.h | 35 ++++++++++++++++++++++----------- - 1 file changed, 23 insertions(+), 12 deletions(-) + include/config_distro_bootcmd.h | 37 +++++++++++++++++++++------------ + 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h -index 2627c2a6a5..eadd1080b3 100644 +index fcb319a20ae..e71004fad9c 100644 --- a/include/config_distro_bootcmd.h +++ b/include/config_distro_bootcmd.h -@@ -148,26 +148,37 @@ +@@ -155,28 +155,39 @@ "fi\0" \ \ "load_efi_dtb=" \ @@ -44,11 +44,13 @@ index 2627c2a6a5..eadd1080b3 100644 + "scan_dev_for_dtb=" \ "setenv efi_fdtfile ${fdtfile}; " \ BOOTENV_EFI_SET_FDTFILE_FALLBACK \ + BOOTENV_RUN_EXTENSION_INIT \ - "for prefix in ${efi_dtb_prefixes}; do " \ - "if test -e ${devtype} " \ - "${devnum}:${distro_bootpart} " \ - "${prefix}${efi_fdtfile}; then " \ - "run load_efi_dtb; " \ +- BOOTENV_RUN_EXTENSION_APPLY \ - "fi;" \ - "done;" \ - "run boot_efi_bootmgr;" \ @@ -65,6 +67,7 @@ index 2627c2a6a5..eadd1080b3 100644 + "${devnum}:${dtb_devp} " \ + "${prefix}${efi_fdtfile};"\ + "run load_efi_dtb; " \ ++ BOOTENV_RUN_EXTENSION_APPLY + "fi;" \ + "done; " \ + "done; " \ @@ -80,5 +83,5 @@ index 2627c2a6a5..eadd1080b3 100644 "fi; " \ "setenv efi_fdtfile\0" -- -2.31.1 +2.38.1 From a56399745c9d127d365cffd7f3ca1284b8ac3e37 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 24 Nov 2022 14:02:10 +0000 Subject: [PATCH 127/271] Fix building utils --- ...LOGO-to-tools-only-to-build-bmp_logo.patch | 25 +++++++++++++++++++ uboot-tools.spec | 3 ++- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 0001-add-VIDEO_LOGO-to-tools-only-to-build-bmp_logo.patch diff --git a/0001-add-VIDEO_LOGO-to-tools-only-to-build-bmp_logo.patch b/0001-add-VIDEO_LOGO-to-tools-only-to-build-bmp_logo.patch new file mode 100644 index 0000000..dcf5229 --- /dev/null +++ b/0001-add-VIDEO_LOGO-to-tools-only-to-build-bmp_logo.patch @@ -0,0 +1,25 @@ +From 11ff7f20123629bb4271db41a170e9ad69126dc2 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Thu, 24 Nov 2022 13:39:05 +0000 +Subject: [PATCH] add VIDEO_LOGO to tools-only to build bmp_logo + +Signed-off-by: Peter Robinson +--- + configs/tools-only_defconfig | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/configs/tools-only_defconfig b/configs/tools-only_defconfig +index 86464d2f075..c3b3b387818 100644 +--- a/configs/tools-only_defconfig ++++ b/configs/tools-only_defconfig +@@ -27,6 +27,7 @@ CONFIG_DM_RTC=y + CONFIG_SOUND=y + CONFIG_SYSRESET=y + CONFIG_TIMER=y ++CONFIG_VIDEO=y + # CONFIG_VIRTIO_MMIO is not set + # CONFIG_VIRTIO_PCI is not set + # CONFIG_VIRTIO_SANDBOX is not set +-- +2.38.1 + diff --git a/uboot-tools.spec b/uboot-tools.spec index 3dbadd9..29f2181 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -30,6 +30,7 @@ Patch6: rpi-Copy-properties-from-firmware-DT-to-loaded-DT.patch # Rockchips improvements Patch7: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch Patch8: 0001-Revert-power-pmic-rk8xx-Support-sysreset-shutdown-me.patch +Patch9: 0001-add-VIDEO_LOGO-to-tools-only-to-build-bmp_logo.patch BuildRequires: bc BuildRequires: bison @@ -180,7 +181,7 @@ done %endif %endif -for tool in bmp_logo dumpimage env/fw_printenv fit_check_sign fit_info gdb/gdbcont gdb/gdbsend gen_eth_addr gen_ethaddr_crc img2srec mkenvimage mkimage mksunxiboot ncb proftool sunxi-spl-image-builder ubsha1 xway-swap-bytes kwboot +for tool in bmp_logo dumpimage env/fw_printenv fit_check_sign fit_info gdb/gdbcont gdb/gdbsend gen_eth_addr gen_ethaddr_crc ifwitool img2srec kwboot mkeficapsule mkenvimage mkimage mksunxiboot ncb proftool sunxi-spl-image-builder ubsha1 xway-swap-bytes do install -p -m 0755 builds/tools/$tool %{buildroot}%{_bindir} done From 47aa93aa340ecf3f365fbf336e51e8dbcac053ae Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 24 Nov 2022 14:16:33 +0000 Subject: [PATCH 128/271] fix uefi patch rebase --- uefi-distro-load-FDT-from-any-partition-on-boot-device.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uefi-distro-load-FDT-from-any-partition-on-boot-device.patch b/uefi-distro-load-FDT-from-any-partition-on-boot-device.patch index 112c79e..5954848 100644 --- a/uefi-distro-load-FDT-from-any-partition-on-boot-device.patch +++ b/uefi-distro-load-FDT-from-any-partition-on-boot-device.patch @@ -67,7 +67,7 @@ index fcb319a20ae..e71004fad9c 100644 + "${devnum}:${dtb_devp} " \ + "${prefix}${efi_fdtfile};"\ + "run load_efi_dtb; " \ -+ BOOTENV_RUN_EXTENSION_APPLY ++ BOOTENV_RUN_EXTENSION_APPLY \ + "fi;" \ + "done; " \ + "done; " \ From 8bcd936f72c750b30d2f52a06b2dcc2b204c508d Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 24 Nov 2022 16:25:37 +0000 Subject: [PATCH 129/271] disable PPP for the moment as it's seemingly locking up the builds --- aarch64-boards | 1 - 1 file changed, 1 deletion(-) diff --git a/aarch64-boards b/aarch64-boards index 6cd34df..ab282d9 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -61,7 +61,6 @@ pinebook pinebook-pro-rk3399 pine_h64 pinephone -pinephone-pro-rk3399 pinetab poplar puma-rk3399 From 70b0c177c313d49c1985840fe89723f2884dd885 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 5 Dec 2022 21:08:19 +0000 Subject: [PATCH 130/271] 2023.01 RC3 --- ...c-rk8xx-Support-sysreset-shutdown-me.patch | 92 ----------- ...LOGO-to-tools-only-to-build-bmp_logo.patch | 25 --- ...not-initialize-i2c-before-relocation.patch | 148 ++++++++++++++++++ sources | 2 +- uboot-tools.spec | 10 +- 5 files changed, 155 insertions(+), 122 deletions(-) delete mode 100644 0001-Revert-power-pmic-rk8xx-Support-sysreset-shutdown-me.patch delete mode 100644 0001-add-VIDEO_LOGO-to-tools-only-to-build-bmp_logo.patch create mode 100644 rockchip-Pinebook-Pro-Do-not-initialize-i2c-before-relocation.patch diff --git a/0001-Revert-power-pmic-rk8xx-Support-sysreset-shutdown-me.patch b/0001-Revert-power-pmic-rk8xx-Support-sysreset-shutdown-me.patch deleted file mode 100644 index 3c297e3..0000000 --- a/0001-Revert-power-pmic-rk8xx-Support-sysreset-shutdown-me.patch +++ /dev/null @@ -1,92 +0,0 @@ -From 17096f20920205200b88d6d8facdbef0d3d3d3e8 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Sun, 4 Sep 2022 22:22:50 +0100 -Subject: [PATCH] Revert "power: pmic: rk8xx: Support sysreset shutdown method" - -This reverts commit ad607512f5757f4485968efd5bcf2c0245a8a235. ---- - drivers/power/pmic/rk8xx.c | 50 +------------------------------------- - 1 file changed, 1 insertion(+), 49 deletions(-) - -diff --git a/drivers/power/pmic/rk8xx.c b/drivers/power/pmic/rk8xx.c -index 25ef621f8df..8d703112c38 100644 ---- a/drivers/power/pmic/rk8xx.c -+++ b/drivers/power/pmic/rk8xx.c -@@ -6,50 +6,10 @@ - - #include - #include --#include - #include - #include - #include - #include --#include -- --static int rk8xx_sysreset_request(struct udevice *dev, enum sysreset_t type) --{ -- struct rk8xx_priv *priv = dev_get_priv(dev->parent); -- -- if (type != SYSRESET_POWER_OFF) -- return -EPROTONOSUPPORT; -- -- switch (priv->variant) { -- case RK805_ID: -- case RK808_ID: -- case RK816_ID: -- case RK818_ID: -- pmic_clrsetbits(dev->parent, REG_DEVCTRL, 0, BIT(0)); -- break; -- case RK809_ID: -- case RK817_ID: -- pmic_clrsetbits(dev->parent, RK817_REG_SYS_CFG3, 0, -- BIT(0)); -- break; -- default: -- printf("Unknown PMIC RK%x: Cannot shutdown\n", -- priv->variant); -- return -EPROTONOSUPPORT; -- }; -- -- return -EINPROGRESS; --} -- --static struct sysreset_ops rk8xx_sysreset_ops = { -- .request = rk8xx_sysreset_request, --}; -- --U_BOOT_DRIVER(rk8xx_sysreset) = { -- .name = "rk8xx_sysreset", -- .id = UCLASS_SYSRESET, -- .ops = &rk8xx_sysreset_ops, --}; - - /* In the event of a plug-in and the appropriate option has been - * selected, we simply shutdown instead of continue the normal boot -@@ -133,7 +93,7 @@ static int rk8xx_read(struct udevice *dev, uint reg, uint8_t *buff, int len) - static int rk8xx_bind(struct udevice *dev) - { - ofnode regulators_node; -- int children, ret; -+ int children; - - regulators_node = dev_read_subnode(dev, "regulators"); - if (!ofnode_valid(regulators_node)) { -@@ -144,14 +104,6 @@ static int rk8xx_bind(struct udevice *dev) - - debug("%s: '%s' - found regulators subnode\n", __func__, dev->name); - -- if (CONFIG_IS_ENABLED(SYSRESET)) { -- ret = device_bind_driver_to_node(dev, "rk8xx_sysreset", -- "rk8xx_sysreset", -- dev_ofnode(dev), NULL); -- if (ret) -- return ret; -- } -- - children = pmic_bind_children(dev, regulators_node, pmic_children_info); - if (!children) - debug("%s: %s - no child found\n", __func__, dev->name); --- -2.37.3 - diff --git a/0001-add-VIDEO_LOGO-to-tools-only-to-build-bmp_logo.patch b/0001-add-VIDEO_LOGO-to-tools-only-to-build-bmp_logo.patch deleted file mode 100644 index dcf5229..0000000 --- a/0001-add-VIDEO_LOGO-to-tools-only-to-build-bmp_logo.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 11ff7f20123629bb4271db41a170e9ad69126dc2 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Thu, 24 Nov 2022 13:39:05 +0000 -Subject: [PATCH] add VIDEO_LOGO to tools-only to build bmp_logo - -Signed-off-by: Peter Robinson ---- - configs/tools-only_defconfig | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/configs/tools-only_defconfig b/configs/tools-only_defconfig -index 86464d2f075..c3b3b387818 100644 ---- a/configs/tools-only_defconfig -+++ b/configs/tools-only_defconfig -@@ -27,6 +27,7 @@ CONFIG_DM_RTC=y - CONFIG_SOUND=y - CONFIG_SYSRESET=y - CONFIG_TIMER=y -+CONFIG_VIDEO=y - # CONFIG_VIRTIO_MMIO is not set - # CONFIG_VIRTIO_PCI is not set - # CONFIG_VIRTIO_SANDBOX is not set --- -2.38.1 - diff --git a/rockchip-Pinebook-Pro-Do-not-initialize-i2c-before-relocation.patch b/rockchip-Pinebook-Pro-Do-not-initialize-i2c-before-relocation.patch new file mode 100644 index 0000000..c7a1992 --- /dev/null +++ b/rockchip-Pinebook-Pro-Do-not-initialize-i2c-before-relocation.patch @@ -0,0 +1,148 @@ +From patchwork Sat Dec 3 12:31:29 2022 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Michal Suchanek +X-Patchwork-Id: 1711682 +X-Patchwork-Delegate: ykai007@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +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=) +Authentication-Results: legolas.ozlabs.org; + dkim=pass (1024-bit key; + unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 + header.s=susede2_rsa header.b=wxtn4xc3; + dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 + header.s=susede2_ed25519 header.b=ITqbCEv6; + dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) + (No client certificate requested) + by legolas.ozlabs.org (Postfix) with ESMTPS id 4NPThH74WSz23mf + for ; Sat, 3 Dec 2022 23:31:43 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 70D68810F9; + Sat, 3 Dec 2022 13:31:39 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; + dkim=pass (1024-bit key; + unprotected) header.d=suse.de header.i=@suse.de header.b="wxtn4xc3"; + dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de + header.b="ITqbCEv6"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 7B90681581; Sat, 3 Dec 2022 13:31:37 +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,SPF_HELO_NONE,SPF_PASS + autolearn=ham autolearn_force=no version=3.4.2 +Received: from smtp-out1.suse.de (smtp-out1.suse.de + [IPv6:2001:67c:2178:6::1c]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 5AD2380FF4 + for ; Sat, 3 Dec 2022 13:31:35 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=msuchanek@suse.de +Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) + by smtp-out1.suse.de (Postfix) with ESMTP id 1F15E21BBE; + Sat, 3 Dec 2022 12:31:35 +0000 (UTC) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_rsa; + t=1670070695; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding; + bh=MxiYvt7AyD2raveb0nYOqctq9SwZhhFlUOQQnvLVaQg=; + b=wxtn4xc3CKeoPgie/R/AdIrpA2ywBATIqA9KAfa1GEXdWlIf74tVDuaz5iMJ6BpeskOSl2 + nLeJEQA332T9Aqr4B56t0lQVfOXL5KgwD6soHX23k0CyNtimBjQflyDa7qPsrlB71ZXEow + vE4Uuu65zoYtywT4VY23ipPBExIch5c= +DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_ed25519; t=1670070695; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding; + bh=MxiYvt7AyD2raveb0nYOqctq9SwZhhFlUOQQnvLVaQg=; + b=ITqbCEv62X454NT22kzCNg+NOS6Iu0cxcF+xhUtLc6CDIy3Cv4GXp20Wi7qIeywhmkKMLT + bzobwsBrib9t1NDw== +Received: from naga.suse.cz (unknown [10.100.224.114]) + by relay2.suse.de (Postfix) with ESMTP id 719FC2C141; + Sat, 3 Dec 2022 12:31:34 +0000 (UTC) +From: Michal Suchanek +To: u-boot@lists.denx.de +Cc: Michal Suchanek , Simon Glass , + Philipp Tomsich , + Kever Yang , + Peter Robinson +Subject: [PATCH] rockchip: Pinebook Pro: Do not initialize i2c before + relocation +Date: Sat, 3 Dec 2022 13:31:29 +0100 +Message-Id: <20221203123129.27645-1-msuchanek@suse.de> +X-Mailer: git-send-email 2.38.1 +MIME-Version: 1.0 +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.6 at phobos.denx.de +X-Virus-Status: Clean + +The i2c locks up when initialized before relocation, and it stays broken +in Linux as well breaking the ability to boot Linux. + +The i2c bus and pmic was not actually used in pre-reloc before +commit ad607512f575 ("power: pmic: rk8xx: Support sysreset shutdown method") + +The cause is not known. + +This is board-specific, other boards that do not add the option to +include the i2c bus in pre-reloc DT are not affected. + +Signed-off-by: Michal Suchanek +--- + +This is not tested, my board does not currentl;y boot at all, YMMV +--- + arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi +index 2d87bea933..fd87102c0b 100644 +--- a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi ++++ b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi +@@ -20,14 +20,6 @@ + rockchip,panel = <&edp_panel>; + }; + +-&i2c0 { +- u-boot,dm-pre-reloc; +-}; +- +-&rk808 { +- u-boot,dm-pre-reloc; +-}; +- + &sdhci { + max-frequency = <25000000>; + u-boot,dm-pre-reloc; diff --git a/sources b/sources index 68c900c..a4cdf37 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2023.01-rc2.tar.bz2) = fd3c25db53c59ec2a101955582a5e240b178e7e3e29e9a0070687411ff5bbe0f2bb1bb398198572ba9724870482c947432bc5256da7f7761bed693e8c613b433 +SHA512 (u-boot-2023.01-rc3.tar.bz2) = fe48fbe285003b44095f420355919cb0a69613bdf17483c6fcace387f079b590a4ae4258813d676d1a84476853b70096287516e618bffb4702ee7f160ec3f764 diff --git a/uboot-tools.spec b/uboot-tools.spec index 29f2181..17b3212 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc2 +%global candidate rc3 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2023.01 -Release: 0.1%{?candidate:.%{candidate}}%{?dist} +Release: 0.2%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -29,8 +29,7 @@ Patch5: rpi-bcm2835_sdhost-firmware-managed-clock.patch Patch6: rpi-Copy-properties-from-firmware-DT-to-loaded-DT.patch # Rockchips improvements Patch7: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch -Patch8: 0001-Revert-power-pmic-rk8xx-Support-sysreset-shutdown-me.patch -Patch9: 0001-add-VIDEO_LOGO-to-tools-only-to-build-bmp_logo.patch +Patch8: rockchip-Pinebook-Pro-Do-not-initialize-i2c-before-relocation.patch BuildRequires: bc BuildRequires: bison @@ -213,6 +212,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Mon Dec 05 2022 Peter Robinson - 2023.01-0.2.rc3 +- Update to 2023.01 RC3 + * Thu Nov 24 2022 Peter Robinson - 2023.01-0.1.rc2 - Update to U-Boot 2023.01 RC2 - Update Pinephone Pro patches From bc28006c894c084719bd3be2005eb4793a026755 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 20 Dec 2022 03:30:32 +0000 Subject: [PATCH 131/271] 2023.01 RC4 --- sources | 2 +- uboot-tools.spec | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/sources b/sources index a4cdf37..e2935f1 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2023.01-rc3.tar.bz2) = fe48fbe285003b44095f420355919cb0a69613bdf17483c6fcace387f079b590a4ae4258813d676d1a84476853b70096287516e618bffb4702ee7f160ec3f764 +SHA512 (u-boot-2023.01-rc4.tar.bz2) = 42c5693e2dafb83af64e6958567a5cdf4452d6799fc12214fb60ebd6753bfe24b41dfdc7f1c373b35dfaada35a819e8a1a4958eff64f806c0610f764b73dbbcd diff --git a/uboot-tools.spec b/uboot-tools.spec index 17b3212..d0de0e0 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc3 +%global candidate rc4 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2023.01 -Release: 0.2%{?candidate:.%{candidate}}%{?dist} +Release: 0.3%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -110,8 +110,8 @@ do fi # End ATF - make $(echo $board)_defconfig O=builds/$(echo $board)/ - %make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" O=builds/$(echo $board)/ + BINMAN_ALLOW_MISSING=1 make $(echo $board)_defconfig O=builds/$(echo $board)/ + BINMAN_ALLOW_MISSING=1 %make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" O=builds/$(echo $board)/ # build spi images for rockchip boards with SPI flash rkspi=(rock64-rk3328) @@ -212,6 +212,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Tue Dec 20 2022 Peter Robinson - 2023.01-0.3.rc4 +- Update to 2023.01 RC4 + * Mon Dec 05 2022 Peter Robinson - 2023.01-0.2.rc3 - Update to 2023.01 RC3 From d245dbb379a8a206e1caf823b8229b91037b7469 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 20 Dec 2022 03:51:10 +0000 Subject: [PATCH 132/271] drop upstreamed PBP patch --- ...not-initialize-i2c-before-relocation.patch | 148 ------------------ uboot-tools.spec | 1 - 2 files changed, 149 deletions(-) delete mode 100644 rockchip-Pinebook-Pro-Do-not-initialize-i2c-before-relocation.patch diff --git a/rockchip-Pinebook-Pro-Do-not-initialize-i2c-before-relocation.patch b/rockchip-Pinebook-Pro-Do-not-initialize-i2c-before-relocation.patch deleted file mode 100644 index c7a1992..0000000 --- a/rockchip-Pinebook-Pro-Do-not-initialize-i2c-before-relocation.patch +++ /dev/null @@ -1,148 +0,0 @@ -From patchwork Sat Dec 3 12:31:29 2022 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Michal Suchanek -X-Patchwork-Id: 1711682 -X-Patchwork-Delegate: ykai007@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -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=) -Authentication-Results: legolas.ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 - header.s=susede2_rsa header.b=wxtn4xc3; - dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=ITqbCEv6; - dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4NPThH74WSz23mf - for ; Sat, 3 Dec 2022 23:31:43 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 70D68810F9; - Sat, 3 Dec 2022 13:31:39 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.b="wxtn4xc3"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="ITqbCEv6"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 7B90681581; Sat, 3 Dec 2022 13:31:37 +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,SPF_HELO_NONE,SPF_PASS - autolearn=ham autolearn_force=no version=3.4.2 -Received: from smtp-out1.suse.de (smtp-out1.suse.de - [IPv6:2001:67c:2178:6::1c]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 5AD2380FF4 - for ; Sat, 3 Dec 2022 13:31:35 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=msuchanek@suse.de -Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) - by smtp-out1.suse.de (Postfix) with ESMTP id 1F15E21BBE; - Sat, 3 Dec 2022 12:31:35 +0000 (UTC) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1670070695; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding; - bh=MxiYvt7AyD2raveb0nYOqctq9SwZhhFlUOQQnvLVaQg=; - b=wxtn4xc3CKeoPgie/R/AdIrpA2ywBATIqA9KAfa1GEXdWlIf74tVDuaz5iMJ6BpeskOSl2 - nLeJEQA332T9Aqr4B56t0lQVfOXL5KgwD6soHX23k0CyNtimBjQflyDa7qPsrlB71ZXEow - vE4Uuu65zoYtywT4VY23ipPBExIch5c= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1670070695; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding; - bh=MxiYvt7AyD2raveb0nYOqctq9SwZhhFlUOQQnvLVaQg=; - b=ITqbCEv62X454NT22kzCNg+NOS6Iu0cxcF+xhUtLc6CDIy3Cv4GXp20Wi7qIeywhmkKMLT - bzobwsBrib9t1NDw== -Received: from naga.suse.cz (unknown [10.100.224.114]) - by relay2.suse.de (Postfix) with ESMTP id 719FC2C141; - Sat, 3 Dec 2022 12:31:34 +0000 (UTC) -From: Michal Suchanek -To: u-boot@lists.denx.de -Cc: Michal Suchanek , Simon Glass , - Philipp Tomsich , - Kever Yang , - Peter Robinson -Subject: [PATCH] rockchip: Pinebook Pro: Do not initialize i2c before - relocation -Date: Sat, 3 Dec 2022 13:31:29 +0100 -Message-Id: <20221203123129.27645-1-msuchanek@suse.de> -X-Mailer: git-send-email 2.38.1 -MIME-Version: 1.0 -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.6 at phobos.denx.de -X-Virus-Status: Clean - -The i2c locks up when initialized before relocation, and it stays broken -in Linux as well breaking the ability to boot Linux. - -The i2c bus and pmic was not actually used in pre-reloc before -commit ad607512f575 ("power: pmic: rk8xx: Support sysreset shutdown method") - -The cause is not known. - -This is board-specific, other boards that do not add the option to -include the i2c bus in pre-reloc DT are not affected. - -Signed-off-by: Michal Suchanek ---- - -This is not tested, my board does not currentl;y boot at all, YMMV ---- - arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi | 8 -------- - 1 file changed, 8 deletions(-) - -diff --git a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -index 2d87bea933..fd87102c0b 100644 ---- a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -@@ -20,14 +20,6 @@ - rockchip,panel = <&edp_panel>; - }; - --&i2c0 { -- u-boot,dm-pre-reloc; --}; -- --&rk808 { -- u-boot,dm-pre-reloc; --}; -- - &sdhci { - max-frequency = <25000000>; - u-boot,dm-pre-reloc; diff --git a/uboot-tools.spec b/uboot-tools.spec index d0de0e0..409e35b 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -29,7 +29,6 @@ Patch5: rpi-bcm2835_sdhost-firmware-managed-clock.patch Patch6: rpi-Copy-properties-from-firmware-DT-to-loaded-DT.patch # Rockchips improvements Patch7: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch -Patch8: rockchip-Pinebook-Pro-Do-not-initialize-i2c-before-relocation.patch BuildRequires: bc BuildRequires: bison From c811eec4b727c701ccebdd327ddebe51522a6c1c Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 20 Dec 2022 03:57:41 +0000 Subject: [PATCH 133/271] Use SDL2 --- uboot-tools.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 409e35b..09d8e3e 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -44,7 +44,7 @@ BuildRequires: perl-interpreter BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-libfdt -BuildRequires: SDL-devel +BuildRequires: SDL2-devel BuildRequires: swig %if %{with toolsonly} %ifarch aarch64 From eee75bb93405dab219d382f79435fd65ef4aa9df Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sat, 31 Dec 2022 11:06:47 +0000 Subject: [PATCH 134/271] Update PinePhone Pro to latest rev --- aarch64-boards | 3 +- ...nitial-support-for-the-PinePhone-Pro.patch | 722 ++++++++---------- uboot-tools.spec | 5 +- 3 files changed, 343 insertions(+), 387 deletions(-) diff --git a/aarch64-boards b/aarch64-boards index ab282d9..f8e2f3b 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -61,6 +61,7 @@ pinebook pinebook-pro-rk3399 pine_h64 pinephone +pinephone-pro-rk3399 pinetab poplar puma-rk3399 @@ -77,8 +78,8 @@ roc-pc-rk3399 rpi_3 rpi_4 rpi_arm64 -starqltechn sopine_baseboard +starqltechn tanix_tx6 teres_i turris_mox diff --git a/rockchip-Add-initial-support-for-the-PinePhone-Pro.patch b/rockchip-Add-initial-support-for-the-PinePhone-Pro.patch index f06c063..30012ad 100644 --- a/rockchip-Add-initial-support-for-the-PinePhone-Pro.patch +++ b/rockchip-Add-initial-support-for-the-PinePhone-Pro.patch @@ -1,34 +1,38 @@ -From: Martijn Braam -Subject: [PATCH] rockchip: Add initial support for the PinePhone Pro -Date: Thu, 21 Oct 2021 19:18:43 +0200 +From 004af623388022d258cbc29c0b71d8e22cd96c52 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Sat, 31 Dec 2022 09:20:34 +0000 +Subject: [PATCH v2 0/2] Initial support for Pinephone Pro -This is a new device by PINE64 that's very similar to the Pinebook Pro -that's already supported. +This adds initial support for the PINE64 Pinephone Pro. It's a rebase +to upstream core rk3399 DT pieces, and the addition of the upstream +PPP DT from 6.2-rc1 and the U-Boot pieces are based on my work on +the Pinebook Pro. -Specification: -- Rockchip RK3399 -- 4GB Dual-Channel LPDDR4 -- 128GB eMMC -- mSD card slot -- AP6255 for 802.11ac WiFi and Bluetooth -- 6 inch 720*1440 DSI display -- Quectel EG25g usb modem -- Type-C port with alt-mode display (DP 1.2) and PD charging. +Changes v2: +- Drop the rk3399.dtsi sync for time being, causing issues around + clock/dram +- Sync the Pinephone DT to 6.2-rc1 +- Update for the CONFIG_SYS_TEXT_BASE -> CONFIG_TEXT_BASE change +- usb: ohci: Use a flexible array member for portstatus +- Rename CONFIG_DM_VIDEO to CONFIG_VIDEO +- Enable DM_REGULATOR_FAN53555 +- Don't initialize i2c before relocation -Signed-off-by: Martijn Braam ---- +Peter Robinson (2): + arm64: dts: rk3399: Add upstream Pinephone Pro dts + rockchip: Add initial support for the PINE64 Pinephone Pro arch/arm/dts/Makefile | 1 + - arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi | 44 ++ - arch/arm/dts/rk3399-pinephone-pro.dts | 520 ++++++++++++++++++ + arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi | 31 ++ + arch/arm/dts/rk3399-pinephone-pro.dts | 474 ++++++++++++++++++ arch/arm/mach-rockchip/rk3399/Kconfig | 8 + board/pine64/pinephone-pro-rk3399/Kconfig | 15 + board/pine64/pinephone-pro-rk3399/MAINTAINERS | 8 + board/pine64/pinephone-pro-rk3399/Makefile | 1 + - .../pinephone-pro-rk3399.c | 57 ++ - configs/pinephone-pro-rk3399_defconfig | 92 ++++ - include/configs/pinephone-pro-rk3399.h | 23 + - 10 files changed, 769 insertions(+) + .../pinephone-pro-rk3399.c | 76 +++ + configs/pinephone-pro-rk3399_defconfig | 104 ++++ + include/configs/pinephone-pro-rk3399.h | 19 + + 10 files changed, 737 insertions(+) create mode 100644 arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi create mode 100644 arch/arm/dts/rk3399-pinephone-pro.dts create mode 100644 board/pine64/pinephone-pro-rk3399/Kconfig @@ -37,12 +41,30 @@ Signed-off-by: Martijn Braam create mode 100644 board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c create mode 100644 configs/pinephone-pro-rk3399_defconfig create mode 100644 include/configs/pinephone-pro-rk3399.h - + +-- +2.39.0 + +From 9976caacb35316cbe047ded58855d2ca1a54243b Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Sat, 31 Dec 2022 09:18:44 +0000 +Subject: [PATCH v2 1/2] arm64: dts: rk3399: Add upstream Pinephone Pro dts + +Initial support for the PinePhone Pro has now landed upstream in +Linux 6.1 RC1 so sync the dts from 6.2-rc1 for initial support. + +Signed-off-by: Peter Robinson +--- + arch/arm/dts/Makefile | 1 + + arch/arm/dts/rk3399-pinephone-pro.dts | 474 ++++++++++++++++++++++++++ + 2 files changed, 475 insertions(+) + create mode 100644 arch/arm/dts/rk3399-pinephone-pro.dts + diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile -index ed3d360bb1..3206370226 100644 +index 43951a7731e..8c1eec1025f 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile -@@ -137,6 +137,7 @@ dtb-$(CONFIG_ROCKCHIP_RK3399) += \ +@@ -153,6 +153,7 @@ dtb-$(CONFIG_ROCKCHIP_RK3399) += \ rk3399-nanopi-r4s.dtb \ rk3399-orangepi.dtb \ rk3399-pinebook-pro.dtb \ @@ -50,106 +72,115 @@ index ed3d360bb1..3206370226 100644 rk3399-puma-haikou.dtb \ rk3399-roc-pc.dtb \ rk3399-roc-pc-mezzanine.dtb \ -diff --git a/arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi -new file mode 100644 -index 0000000000..9d44db5978 ---- /dev/null -+++ b/arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi -@@ -0,0 +1,44 @@ -+// SPDX-License-Identifier: GPL-2.0+ -+/* -+ * Copyright (C) 2019 Peter Robinson -+ * Copyright (C) 2021 Martijn Braam -+ */ -+ -+#include "rk3399-u-boot.dtsi" -+#include "rk3399-sdram-lpddr4-100.dtsi" -+ -+/ { -+ aliases { -+ spi0 = &spi1; -+ }; -+ -+ chosen { -+ u-boot,spl-boot-order = "same-as-spl", &sdhci, &sdmmc; -+ }; -+ -+ config { -+ u-boot,spl-payload-offset = <0x60000>; /* @ 384KB */ -+ }; -+}; -+ -+&i2c0 { -+ u-boot,dm-pre-reloc; -+}; -+ -+&rk818 { -+ u-boot,dm-pre-reloc; -+}; -+ -+&rng { -+ status = "okay"; -+}; -+ -+&sdhci { -+ max-frequency = <25000000>; -+ u-boot,dm-pre-reloc; -+}; -+ -+&sdmmc { -+ max-frequency = <20000000>; -+ u-boot,dm-pre-reloc; -+}; diff --git a/arch/arm/dts/rk3399-pinephone-pro.dts b/arch/arm/dts/rk3399-pinephone-pro.dts new file mode 100644 -index 0000000000..3fe1845ced +index 00000000000..04403a76238 --- /dev/null +++ b/arch/arm/dts/rk3399-pinephone-pro.dts -@@ -0,0 +1,520 @@ +@@ -0,0 +1,474 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* -+ * Copyright (c) 2021 Martijn Braam ++ * Copyright (c) 2020 Martijn Braam ++ * Copyright (c) 2021 Kamil Trzciński ++ */ ++ ++/* ++ * PinePhone Pro datasheet: ++ * https://files.pine64.org/doc/PinePhonePro/PinephonePro-Schematic-V1.0-20211127.pdf + */ + +/dts-v1/; ++#include +#include "rk3399.dtsi" +#include "rk3399-opp.dtsi" + +/ { -+ model = "Pine64 PinePhone Pro"; ++ model = "Pine64 PinePhonePro"; + compatible = "pine64,pinephone-pro", "rockchip,rk3399"; ++ chassis-type = "handset"; ++ ++ aliases { ++ mmc0 = &sdio0; ++ mmc1 = &sdmmc; ++ mmc2 = &sdhci; ++ }; + + chosen { -+ stdout-path = "serial2:1500000n8"; ++ stdout-path = "serial2:115200n8"; + }; + -+ sdio_pwrseq: sdio-pwrseq { -+ compatible = "mmc-pwrseq-simple"; ++ gpio-keys { ++ compatible = "gpio-keys"; + pinctrl-names = "default"; ++ pinctrl-0 = <&pwrbtn_pin>; ++ ++ key-power { ++ debounce-interval = <20>; ++ gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>; ++ label = "Power"; ++ linux,code = ; ++ wakeup-source; ++ }; + }; + -+ /* Power tree */ -+ /* Root power source */ -+ vcc_sysin: vcc-sysin { ++ vcc_sys: vcc-sys-regulator { + compatible = "regulator-fixed"; -+ regulator-name = "vcc_sysin"; ++ regulator-name = "vcc_sys"; + regulator-always-on; + regulator-boot-on; + }; + -+ /* Main 3.3v supply */ -+ vcc3v3_sys: vcc3v3-sys { ++ vcc3v3_sys: vcc3v3-sys-regulator { + compatible = "regulator-fixed"; + regulator-name = "vcc3v3_sys"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; -+ vin-supply = <&vcc_sysin>; ++ vin-supply = <&vcc_sys>; ++ }; + -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ }; ++ vcca1v8_s3: vcc1v8-s3-regulator { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcca1v8_s3"; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ vin-supply = <&vcc3v3_sys>; ++ regulator-always-on; ++ regulator-boot-on; ++ }; ++ ++ vcc1v8_codec: vcc1v8-codec-regulator { ++ compatible = "regulator-fixed"; ++ enable-active-high; ++ gpio = <&gpio3 RK_PA4 GPIO_ACTIVE_HIGH>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&vcc1v8_codec_en>; ++ regulator-name = "vcc1v8_codec"; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ vin-supply = <&vcc3v3_sys>; ++ }; ++ ++ wifi_pwrseq: sdio-wifi-pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ clocks = <&rk818 1>; ++ clock-names = "ext_clock"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&wifi_enable_h_pin>; ++ /* ++ * Wait between power-on and SDIO access for CYP43455 ++ * POR circuit. ++ */ ++ post-power-on-delay-ms = <110>; ++ /* ++ * Wait between consecutive toggles for CYP43455 CBUCK ++ * regulator discharge. ++ */ ++ power-off-delay-us = <10000>; ++ ++ /* WL_REG_ON on module */ ++ reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>; + }; +}; + @@ -181,11 +212,6 @@ index 0000000000..3fe1845ced + status = "okay"; +}; + -+&gpu { -+ mali-supply = <&vdd_gpu>; -+ status = "okay"; -+}; -+ +&i2c0 { + clock-frequency = <400000>; + i2c-scl-rising-time-ns = <168>; @@ -204,22 +230,22 @@ index 0000000000..3fe1845ced + rockchip,system-power-controller; + wakeup-source; + -+ vcc1-supply = <&vcc_sysin>; -+ vcc2-supply = <&vcc_sysin>; -+ vcc3-supply = <&vcc_sysin>; -+ vcc4-supply = <&vcc_sysin>; -+ vcc6-supply = <&vcc_sysin>; ++ vcc1-supply = <&vcc_sys>; ++ vcc2-supply = <&vcc_sys>; ++ vcc3-supply = <&vcc_sys>; ++ vcc4-supply = <&vcc_sys>; ++ vcc6-supply = <&vcc_sys>; + vcc7-supply = <&vcc3v3_sys>; -+ vcc8-supply = <&vcc_sysin>; ++ vcc8-supply = <&vcc_sys>; + vcc9-supply = <&vcc3v3_sys>; + + regulators { + vdd_cpu_l: DCDC_REG1 { -+ regulator-name = "vdd_cpu_1"; ++ regulator-name = "vdd_cpu_l"; + regulator-always-on; + regulator-boot-on; -+ regulator-min-microvolt = <750000>; -+ regulator-max-microvolt = <1350000>; ++ regulator-min-microvolt = <875000>; ++ regulator-max-microvolt = <975000>; + regulator-ramp-delay = <6001>; + regulator-state-mem { + regulator-off-in-suspend; @@ -231,7 +257,7 @@ index 0000000000..3fe1845ced + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <800000>; -+ regulator-max-microvolt = <1350000>; ++ regulator-max-microvolt = <1000000>; + regulator-ramp-delay = <6001>; + regulator-state-mem { + regulator-off-in-suspend; @@ -255,52 +281,35 @@ index 0000000000..3fe1845ced + regulator-max-microvolt = <1800000>; + regulator-state-mem { + regulator-on-in-suspend; -+ regulator-suspend-microvolt = <1800000>; + }; + }; + + vcca3v0_codec: LDO_REG1 { + regulator-name = "vcca3v0_codec"; -+ regulator-always-on; -+ regulator-boot-on; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; + }; + + vcc3v0_touch: LDO_REG2 { + regulator-name = "vcc3v0_touch"; -+ regulator-always-on; -+ regulator-boot-on; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; + }; + + vcca1v8_codec: LDO_REG3 { + regulator-name = "vcca1v8_codec"; -+ regulator-always-on; -+ regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; + }; + -+ vcc_power_on: LDO_REG4 { -+ regulator-name = "vcc_power_on"; ++ rk818_pwr_on: LDO_REG4 { ++ regulator-name = "rk818_pwr_on"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-state-mem { + regulator-on-in-suspend; -+ regulator-suspend-microvolt = <3300000>; + }; + }; + @@ -312,7 +321,6 @@ index 0000000000..3fe1845ced + regulator-max-microvolt = <3000000>; + regulator-state-mem { + regulator-on-in-suspend; -+ regulator-suspend-microvolt = <3000000>; + }; + }; + @@ -324,19 +332,13 @@ index 0000000000..3fe1845ced + regulator-max-microvolt = <1500000>; + regulator-state-mem { + regulator-on-in-suspend; -+ regulator-suspend-microvolt = <1500000>; + }; + }; + + vcc1v8_dvp: LDO_REG7 { + regulator-name = "vcc1v8_dvp"; -+ regulator-always-on; -+ regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; + }; + + vcc3v3_s3: LDO_REG8 { @@ -350,14 +352,10 @@ index 0000000000..3fe1845ced + }; + }; + -+ vcc_sd: LDO_REG9 { -+ regulator-name = "vcc_sd"; ++ vccio_sd: LDO_REG9 { ++ regulator-name = "vccio_sd"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <3300000>; -+ }; + }; + + vcc3v3_s0: SWITCH_REG { @@ -368,22 +366,6 @@ index 0000000000..3fe1845ced + regulator-on-in-suspend; + }; + }; -+ -+ boost_otg: DCDC_BOOST { -+ regulator-name = "boost_otg"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ regulator-suspend-microvolt = <5000000>; -+ }; -+ }; -+ -+ otg_switch: OTG_SWITCH { -+ regulator-name = "otg_switch"; -+ }; + }; + }; + @@ -394,8 +376,8 @@ index 0000000000..3fe1845ced + pinctrl-names = "default"; + pinctrl-0 = <&vsel1_pin>; + regulator-name = "vdd_cpu_b"; -+ regulator-min-microvolt = <712500>; -+ regulator-max-microvolt = <1500000>; ++ regulator-min-microvolt = <875000>; ++ regulator-max-microvolt = <1150000>; + regulator-ramp-delay = <1000>; + regulator-always-on; + regulator-boot-on; @@ -412,8 +394,8 @@ index 0000000000..3fe1845ced + pinctrl-names = "default"; + pinctrl-0 = <&vsel2_pin>; + regulator-name = "vdd_gpu"; -+ regulator-min-microvolt = <712500>; -+ regulator-max-microvolt = <1500000>; ++ regulator-min-microvolt = <875000>; ++ regulator-max-microvolt = <975000>; + regulator-ramp-delay = <1000>; + regulator-always-on; + regulator-boot-on; @@ -424,95 +406,47 @@ index 0000000000..3fe1845ced + }; +}; + -+&i2c1 { -+ i2c-scl-rising-time-ns = <300>; -+ i2c-scl-falling-time-ns = <15>; -+ status = "okay"; ++&cluster0_opp { ++ opp04 { ++ status = "disabled"; ++ }; ++ ++ opp05 { ++ status = "disabled"; ++ }; +}; + -+&i2c3 { -+ i2c-scl-rising-time-ns = <450>; -+ i2c-scl-falling-time-ns = <15>; -+ status = "okay"; -+}; ++&cluster1_opp { ++ opp06 { ++ opp-hz = /bits/ 64 <1500000000>; ++ opp-microvolt = <1100000 1100000 1150000>; ++ }; + -+&i2c4 { -+ i2c-scl-rising-time-ns = <600>; -+ i2c-scl-falling-time-ns = <20>; -+ status = "okay"; -+ -+ fusb0: typec-portc@22 { -+ compatible = "fcs,fusb302"; -+ reg = <0x22>; -+ interrupt-parent = <&gpio1>; -+ interrupts = ; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&fusb0_int>; -+ status = "okay"; ++ opp07 { ++ status = "disabled"; + }; +}; + +&io_domains { -+ status = "okay"; -+ + bt656-supply = <&vcc1v8_dvp>; + audio-supply = <&vcca1v8_codec>; -+ sdmmc-supply = <&vcc_sd>; ++ sdmmc-supply = <&vccio_sd>; + gpio1830-supply = <&vcc_3v0>; ++ status = "okay"; +}; + +&pmu_io_domains { -+ pmu1830-supply = <&vcc_3v0>; ++ pmu1830-supply = <&vcc_1v8>; + status = "okay"; +}; + +&pinctrl { -+ bt { -+ bt_enable_h: bt-enable-h { -+ rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ -+ bt_host_wake_l: bt-host-wake-l { -+ rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_down>; -+ }; -+ -+ bt_wake_l: bt-wake-l { -+ rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ + buttons { -+ pwrbtn: pwrbtn { ++ pwrbtn_pin: pwrbtn-pin { + rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; + }; + }; + -+ fusb302x { -+ fusb0_int: fusb0-int { -+ rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ }; -+ -+ leds { -+ work_led_pin: work-led-pin { -+ rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ -+ diy_led_pin: diy-led-pin { -+ rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ pcie { -+ pcie_perst: pcie-perst { -+ rockchip,pins = <2 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ -+ pcie_pwr_en: pcie-pwr-en { -+ rockchip,pins = <1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ + pmic { + pmic_int_l: pmic-int-l { + rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>; @@ -527,51 +461,40 @@ index 0000000000..3fe1845ced + }; + }; + -+ sdcard { -+ sdmmc0_pwr_h: sdmmc0-pwr-h { -+ rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ -+ }; -+ + sdio-pwrseq { -+ wifi_enable_h: wifi-enable-h { ++ wifi_enable_h_pin: wifi-enable-h-pin { + rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; + -+ usb-typec { -+ vcc5v0_typec_en: vcc5v0_typec_en { -+ rockchip,pins = <1 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; ++ sound { ++ vcc1v8_codec_en: vcc1v8-codec-en { ++ rockchip,pins = <3 RK_PA4 RK_FUNC_GPIO &pcfg_pull_down>; + }; + }; + -+ usb2 { -+ vcc5v0_host_en: vcc5v0-host-en { -+ rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>; ++ wireless-bluetooth { ++ bt_wake_pin: bt-wake-pin { ++ rockchip,pins = <2 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ ++ bt_host_wake_pin: bt-host-wake-pin { ++ rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ ++ bt_reset_pin: bt-reset-pin { ++ rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; +}; + -+&pwm0 { -+ status = "okay"; -+}; -+ -+&pwm1 { -+ status = "okay"; -+}; -+ -+&pwm2 { -+ status = "okay"; -+}; -+ +&sdio0 { + bus-width = <4>; + cap-sd-highspeed; + cap-sdio-irq; + disable-wp; + keep-power-in-suspend; -+ mmc-pwrseq = <&sdio_pwrseq>; ++ mmc-pwrseq = <&wifi_pwrseq>; + non-removable; + pinctrl-names = "default"; + pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>; @@ -582,13 +505,13 @@ index 0000000000..3fe1845ced +&sdmmc { + bus-width = <4>; + cap-sd-highspeed; -+ cd-gpios = <&gpio0 7 GPIO_ACTIVE_LOW>; ++ cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>; + disable-wp; + max-frequency = <150000000>; + pinctrl-names = "default"; -+ pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>; -+ vmmc-supply = <&vcc3v3_s3>; -+ vqmmc-supply = <&vcc_1v8>; ++ pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>; ++ vmmc-supply = <&vcc3v3_sys>; ++ vqmmc-supply = <&vccio_sd>; + status = "okay"; +}; + @@ -600,51 +523,133 @@ index 0000000000..3fe1845ced +}; + +&tsadc { -+ /* tshut mode 0:CRU 1:GPIO */ + rockchip,hw-tshut-mode = <1>; -+ /* tshut polarity 0:LOW 1:HIGH */ + rockchip,hw-tshut-polarity = <1>; + status = "okay"; +}; + ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>; ++ uart-has-rtscts; ++ status = "okay"; ++ ++ bluetooth { ++ compatible = "brcm,bcm4345c5"; ++ clocks = <&rk818 1>; ++ clock-names = "lpo"; ++ device-wakeup-gpios = <&gpio2 RK_PD2 GPIO_ACTIVE_HIGH>; ++ host-wakeup-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>; ++ max-speed = <1500000>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&bt_host_wake_pin &bt_wake_pin &bt_reset_pin>; ++ shutdown-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>; ++ vbat-supply = <&vcc3v3_sys>; ++ vddio-supply = <&vcc_1v8>; ++ }; ++}; ++ +&uart2 { + status = "okay"; +}; +-- +2.39.0 + +From 004af623388022d258cbc29c0b71d8e22cd96c52 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Wed, 28 Dec 2022 03:52:27 +0000 +Subject: [PATCH v2 2/2] rockchip: Add initial support for the PINE64 Pinephone + Pro + +The Pinephone Pro is another device by PINE64. It's closely related +to the Pinebook Pro of which this initial support is derived from. + +Specification: +- A variant of the Rockchip RK3399 +- A 6 inch 720*1440 DSI display +- Front and rear cameras +- Type-C interface with alt mode display (DP 1.2) and PD charging +- 4GB LPDDR4 RAM +- 128GB eMMC +- mSD card slot +- An AP6255 module for 802.11ac WiFi and Bluetooth 5 +- Quectel EG25-G 4G/LTE modem + +Signed-off-by: Peter Robinson +--- + arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi | 31 ++++++ + arch/arm/mach-rockchip/rk3399/Kconfig | 8 ++ + board/pine64/pinephone-pro-rk3399/Kconfig | 15 +++ + board/pine64/pinephone-pro-rk3399/MAINTAINERS | 8 ++ + board/pine64/pinephone-pro-rk3399/Makefile | 1 + + .../pinephone-pro-rk3399.c | 76 +++++++++++++ + configs/pinephone-pro-rk3399_defconfig | 104 ++++++++++++++++++ + include/configs/pinephone-pro-rk3399.h | 19 ++++ + 8 files changed, 262 insertions(+) + create mode 100644 arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi + create mode 100644 board/pine64/pinephone-pro-rk3399/Kconfig + create mode 100644 board/pine64/pinephone-pro-rk3399/MAINTAINERS + create mode 100644 board/pine64/pinephone-pro-rk3399/Makefile + create mode 100644 board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c + create mode 100644 configs/pinephone-pro-rk3399_defconfig + create mode 100644 include/configs/pinephone-pro-rk3399.h + +diff --git a/arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi +new file mode 100644 +index 00000000000..1dad283ad05 +--- /dev/null ++++ b/arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi +@@ -0,0 +1,31 @@ ++// SPDX-License-Identifier: GPL-2.0+ ++/* ++ * Copyright (C) 2022 Peter Robinson ++ */ + -+&vopb { ++#include "rk3399-u-boot.dtsi" ++#include "rk3399-sdram-lpddr4-100.dtsi" ++ ++/ { ++ chosen { ++ u-boot,spl-boot-order = "same-as-spl", &sdhci, &sdmmc; ++ }; ++ ++ config { ++ u-boot,spl-payload-offset = <0x60000>; /* @ 384KB */ ++ }; ++}; ++ ++&rng { + status = "okay"; +}; + -+&vopb_mmu { -+ status = "okay"; ++&sdhci { ++ max-frequency = <25000000>; ++ u-boot,dm-pre-reloc; +}; + -+&vopl { -+ status = "okay"; -+}; -+ -+&vopl_mmu { -+ status = "okay"; ++&sdmmc { ++ max-frequency = <20000000>; ++ u-boot,dm-pre-reloc; +}; diff --git a/arch/arm/mach-rockchip/rk3399/Kconfig b/arch/arm/mach-rockchip/rk3399/Kconfig -index 17628f9171..3ba603ca80 100644 +index b48feeb3466..d01063ac98b 100644 --- a/arch/arm/mach-rockchip/rk3399/Kconfig +++ b/arch/arm/mach-rockchip/rk3399/Kconfig -@@ -28,6 +28,13 @@ config TARGET_PINEBOOK_PRO_RK3399 +@@ -39,6 +39,13 @@ config TARGET_PINEBOOK_PRO_RK3399 with 4Gb RAM, onboard eMMC, USB-C, a USB3 and USB2 port, 1920*1080 screen and all the usual laptop features. +config TARGET_PINEPHONE_PRO_RK3399 + bool "PinePhone Pro" + help -+ PinePhone Pro is a phone based on the Rockchip rk3399 SoC -+ with 4Gb RAM, onboard eMMC, USB-C, a headphone jack, -+ 720x1440 screen and an external Quectel USB modem. ++ PinePhone Pro is a phone based on a variant of the Rockchip ++ rk3399 SoC with 4Gb RAM, onboard eMMC, USB-C, headphone jack, ++ 720x1440 screen and a Quectel 4G/LTE modem. + config TARGET_PUMA_RK3399 bool "Theobroma Systems RK3399-Q7 (Puma)" help -@@ -154,6 +161,7 @@ endif # BOOTCOUNT_LIMIT +@@ -165,6 +172,7 @@ endif # BOOTCOUNT_LIMIT source "board/firefly/roc-pc-rk3399/Kconfig" source "board/google/gru/Kconfig" source "board/pine64/pinebook-pro-rk3399/Kconfig" @@ -654,7 +659,7 @@ index 17628f9171..3ba603ca80 100644 source "board/theobroma-systems/puma_rk3399/Kconfig" diff --git a/board/pine64/pinephone-pro-rk3399/Kconfig b/board/pine64/pinephone-pro-rk3399/Kconfig new file mode 100644 -index 0000000000..13d6465ae6 +index 00000000000..13d6465ae6e --- /dev/null +++ b/board/pine64/pinephone-pro-rk3399/Kconfig @@ -0,0 +1,15 @@ @@ -675,12 +680,12 @@ index 0000000000..13d6465ae6 +endif diff --git a/board/pine64/pinephone-pro-rk3399/MAINTAINERS b/board/pine64/pinephone-pro-rk3399/MAINTAINERS new file mode 100644 -index 0000000000..9ca4fc4cbe +index 00000000000..c923ff1be32 --- /dev/null +++ b/board/pine64/pinephone-pro-rk3399/MAINTAINERS @@ -0,0 +1,8 @@ +PINEPHONE_PRO -+M: Martijn Braam ++M: Peter Robinson +S: Maintained +F: board/pine64/rk3399-pinephone-pro/ +F: include/configs/rk3399-pinephone-pro.h @@ -689,21 +694,21 @@ index 0000000000..9ca4fc4cbe +F: configs/pinephone-pro-rk3399_defconfig diff --git a/board/pine64/pinephone-pro-rk3399/Makefile b/board/pine64/pinephone-pro-rk3399/Makefile new file mode 100644 -index 0000000000..8d9203053e +index 00000000000..8d9203053e5 --- /dev/null +++ b/board/pine64/pinephone-pro-rk3399/Makefile @@ -0,0 +1 @@ +obj-y += pinephone-pro-rk3399.o diff --git a/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c b/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c new file mode 100644 -index 0000000000..8efeb6ea3d +index 00000000000..eb639cd0d07 --- /dev/null +++ b/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c -@@ -0,0 +1,57 @@ +@@ -0,0 +1,76 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* -+ * (C) Copyright 2019 Vasily Khoruzhick -+ * (C) Copyright 2021 Martijn Braam ++ * (C) Copyright 2016 Rockchip Electronics Co., Ltd ++ * (C) Copyright 2022 Peter Robinson + */ + +#include @@ -715,17 +720,39 @@ index 0000000000..8efeb6ea3d +#include +#include +#include ++#include + +#define GRF_IO_VSEL_BT565_SHIFT 0 +#define PMUGRF_CON0_VSEL_SHIFT 8 + ++#ifndef CONFIG_SPL_BUILD ++int board_early_init_f(void) ++{ ++ struct udevice *regulator; ++ int ret; ++ ++ ret = regulator_get_by_platname("vcc5v0_usb", ®ulator); ++ if (ret) { ++ pr_debug("%s vcc5v0_usb init fail! ret %d\n", __func__, ret); ++ goto out; ++ } ++ ++ ret = regulator_set_enable(regulator, true); ++ if (ret) ++ pr_debug("%s vcc5v0-host-en-gpio set fail! ret %d\n", __func__, ret); ++ ++out: ++ return 0; ++} ++#endif ++ +#ifdef CONFIG_MISC_INIT_R +static void setup_iodomain(void) +{ + struct rk3399_grf_regs *grf = -+ syscon_get_first_range(ROCKCHIP_SYSCON_GRF); ++ syscon_get_first_range(ROCKCHIP_SYSCON_GRF); + struct rk3399_pmugrf_regs *pmugrf = -+ syscon_get_first_range(ROCKCHIP_SYSCON_PMUGRF); ++ syscon_get_first_range(ROCKCHIP_SYSCON_PMUGRF); + + /* BT565 is in 1.8v domain */ + rk_setreg(&grf->io_vsel, 1 << GRF_IO_VSEL_BT565_SHIFT); @@ -751,42 +778,49 @@ index 0000000000..8efeb6ea3d + if (ret) + return ret; + -+ ret = rockchip_setup_macaddr(); -+ + return ret; +} -+ +#endif diff --git a/configs/pinephone-pro-rk3399_defconfig b/configs/pinephone-pro-rk3399_defconfig new file mode 100644 -index 0000000000..2cf80f7d35 +index 00000000000..eb979f6c051 --- /dev/null +++ b/configs/pinephone-pro-rk3399_defconfig -@@ -0,0 +1,92 @@ +@@ -0,0 +1,104 @@ +CONFIG_ARM=y +CONFIG_SKIP_LOWLEVEL_INIT=y ++CONFIG_COUNTER_FREQUENCY=24000000 +CONFIG_ARCH_ROCKCHIP=y -+CONFIG_SYS_TEXT_BASE=0x00200000 ++CONFIG_TEXT_BASE=0x00200000 +CONFIG_NR_DRAM_BANKS=1 +CONFIG_ENV_SIZE=0x8000 ++CONFIG_ENV_OFFSET=0x3F8000 ++CONFIG_DEFAULT_DEVICE_TREE="rk3399-pinephone-pro" +CONFIG_ROCKCHIP_RK3399=y +CONFIG_TARGET_PINEPHONE_PRO_RK3399=y +CONFIG_DEBUG_UART_BASE=0xFF1A0000 +CONFIG_DEBUG_UART_CLOCK=24000000 +CONFIG_SPL_SPI_FLASH_SUPPORT=y -+CONFIG_SPL_SPI_SUPPORT=y -+CONFIG_DEFAULT_DEVICE_TREE="rk3399-pinephone-pro" -+CONFIG_DEBUG_UART=y ++CONFIG_SPL_SPI=y +CONFIG_SYS_LOAD_ADDR=0x800800 ++CONFIG_DEBUG_UART=y ++CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y ++CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x300000 +CONFIG_BOOTDELAY=3 +CONFIG_USE_PREBOOT=y +CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-pinephone-pro.dtb" +CONFIG_DISPLAY_BOARDINFO_LATE=y +CONFIG_MISC_INIT_R=y ++CONFIG_SPL_MAX_SIZE=0x2e000 ++CONFIG_SPL_PAD_TO=0x7f8000 ++CONFIG_SPL_HAS_BSS_LINKER_SECTION=y ++CONFIG_SPL_BSS_START_ADDR=0x400000 ++CONFIG_SPL_BSS_MAX_SIZE=0x2000 +# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set ++# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set ++CONFIG_SPL_STACK=0x400000 +CONFIG_SPL_STACK_R=y +CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000 -+CONFIG_SPL_MTD_SUPPORT=y +CONFIG_SPL_SPI_LOAD=y +CONFIG_TPL=y +CONFIG_CMD_BOOTZ=y @@ -804,6 +838,7 @@ index 0000000000..2cf80f7d35 +CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" +CONFIG_ENV_IS_IN_SPI_FLASH=y +CONFIG_SYS_RELOC_GD_ENV_ADDR=y ++CONFIG_SPL_DM_SEQ_ALIAS=y +CONFIG_ROCKCHIP_GPIO=y +CONFIG_SYS_I2C_ROCKCHIP=y +CONFIG_DM_KEYBOARD=y @@ -816,13 +851,14 @@ index 0000000000..2cf80f7d35 +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_SDMA=y +CONFIG_MMC_SDHCI_ROCKCHIP=y ++CONFIG_SF_DEFAULT_BUS=1 +CONFIG_SF_DEFAULT_SPEED=20000000 +CONFIG_SPI_FLASH_GIGADEVICE=y +CONFIG_SPI_FLASH_WINBOND=y -+CONFIG_DM_ETH=y +CONFIG_PHY_ROCKCHIP_INNO_USB2=y +CONFIG_PHY_ROCKCHIP_TYPEC=y +CONFIG_DM_PMIC_FAN53555=y ++CONFIG_DM_REGULATOR_FAN53555=y +CONFIG_PMIC_RK8XX=y +CONFIG_REGULATOR_PWM=y +CONFIG_REGULATOR_RK8XX=y @@ -849,23 +885,22 @@ index 0000000000..2cf80f7d35 +CONFIG_USB_HOST_ETHER=y +CONFIG_USB_ETHER_ASIX=y +CONFIG_USB_ETHER_RTL8152=y -+CONFIG_DM_VIDEO=y +CONFIG_DISPLAY=y ++CONFIG_VIDEO=y +CONFIG_VIDEO_ROCKCHIP=y +CONFIG_DISPLAY_ROCKCHIP_EDP=y +CONFIG_SPL_TINY_MEMSET=y +CONFIG_ERRNO_STR=y diff --git a/include/configs/pinephone-pro-rk3399.h b/include/configs/pinephone-pro-rk3399.h new file mode 100644 -index 0000000000..fefa793fdd +index 00000000000..78017d6bcc3 --- /dev/null +++ b/include/configs/pinephone-pro-rk3399.h -@@ -0,0 +1,23 @@ +@@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright (C) 2016 Rockchip Electronics Co., Ltd -+ * Copyright (C) 2020 Peter Robinson -+ * Copyright (C) 2021 Martijn Braam ++ * Copyright (C) 2022 Peter Robinson + */ + +#ifndef __PINEPHONE_PRO_RK3399_H @@ -880,89 +915,6 @@ index 0000000000..fefa793fdd + +#define SDRAM_BANK_SIZE (2UL << 30) + -+#define CONFIG_USB_OHCI_NEW -+#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 2 -+ +#endif ---- u-boot-2022.10/configs/pinephone-pro-rk3399_defconfig.orig 2022-10-12 16:14:17.050158119 +0100 -+++ u-boot-2022.10/configs/pinephone-pro-rk3399_defconfig 2022-10-12 16:14:28.525240728 +0100 -@@ -1,27 +1,37 @@ - CONFIG_ARM=y - CONFIG_SKIP_LOWLEVEL_INIT=y -+CONFIG_COUNTER_FREQUENCY=24000000 - CONFIG_ARCH_ROCKCHIP=y - CONFIG_SYS_TEXT_BASE=0x00200000 - CONFIG_NR_DRAM_BANKS=1 - CONFIG_ENV_SIZE=0x8000 -+CONFIG_ENV_OFFSET=0x3F8000 -+CONFIG_DEFAULT_DEVICE_TREE="rk3399-pinephone-pro" - CONFIG_ROCKCHIP_RK3399=y - CONFIG_TARGET_PINEPHONE_PRO_RK3399=y - CONFIG_DEBUG_UART_BASE=0xFF1A0000 - CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SPL_SPI_FLASH_SUPPORT=y --CONFIG_SPL_SPI_SUPPORT=y --CONFIG_DEFAULT_DEVICE_TREE="rk3399-pinephone-pro" --CONFIG_DEBUG_UART=y -+CONFIG_SPL_SPI=y - CONFIG_SYS_LOAD_ADDR=0x800800 -+CONFIG_DEBUG_UART=y -+CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y -+CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x300000 - CONFIG_BOOTDELAY=3 - CONFIG_USE_PREBOOT=y - CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-pinephone-pro.dtb" - CONFIG_DISPLAY_BOARDINFO_LATE=y - CONFIG_MISC_INIT_R=y -+CONFIG_SPL_MAX_SIZE=0x2e000 -+CONFIG_SPL_PAD_TO=0x7f8000 -+CONFIG_SPL_HAS_BSS_LINKER_SECTION=y -+CONFIG_SPL_BSS_START_ADDR=0x400000 -+CONFIG_SPL_BSS_MAX_SIZE=0x2000 - # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set -+# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set -+CONFIG_SPL_STACK=0x400000 - CONFIG_SPL_STACK_R=y - CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000 --CONFIG_SPL_MTD_SUPPORT=y - CONFIG_SPL_SPI_LOAD=y - CONFIG_TPL=y - CONFIG_CMD_BOOTZ=y -@@ -39,6 +49,7 @@ - CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" - CONFIG_ENV_IS_IN_SPI_FLASH=y - CONFIG_SYS_RELOC_GD_ENV_ADDR=y -+CONFIG_SPL_DM_SEQ_ALIAS=y - CONFIG_ROCKCHIP_GPIO=y - CONFIG_SYS_I2C_ROCKCHIP=y - CONFIG_DM_KEYBOARD=y -@@ -51,10 +62,10 @@ - CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_SDMA=y - CONFIG_MMC_SDHCI_ROCKCHIP=y -+CONFIG_SF_DEFAULT_BUS=1 - CONFIG_SF_DEFAULT_SPEED=20000000 - CONFIG_SPI_FLASH_GIGADEVICE=y - CONFIG_SPI_FLASH_WINBOND=y --CONFIG_DM_ETH=y - CONFIG_PHY_ROCKCHIP_INNO_USB2=y - CONFIG_PHY_ROCKCHIP_TYPEC=y - CONFIG_DM_PMIC_FAN53555=y -@@ -77,6 +88,7 @@ - CONFIG_USB_EHCI_GENERIC=y - CONFIG_USB_OHCI_HCD=y - CONFIG_USB_OHCI_GENERIC=y -+CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS=2 - CONFIG_USB_DWC3=y - CONFIG_USB_DWC3_GENERIC=y - CONFIG_USB_KEYBOARD=y ---- u-boot-2022.10/include/configs/pinephone-pro-rk3399.h.orig 2022-10-12 16:14:51.881408874 +0100 -+++ u-boot-2022.10/include/configs/pinephone-pro-rk3399.h 2022-10-12 16:14:58.693457915 +0100 -@@ -17,7 +17,4 @@ - - #define SDRAM_BANK_SIZE (2UL << 30) - --#define CONFIG_USB_OHCI_NEW --#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 2 -- - #endif +-- +2.39.0 diff --git a/uboot-tools.spec b/uboot-tools.spec index 09d8e3e..095727c 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2023.01 -Release: 0.3%{?candidate:.%{candidate}}%{?dist} +Release: 0.4%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -211,6 +211,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Sat Dec 31 2022 Peter Robinson - 2023.01-0.4.rc4 +- Update PinePhone Pro to latest rev + * Tue Dec 20 2022 Peter Robinson - 2023.01-0.3.rc4 - Update to 2023.01 RC4 From 5b281a96f025b29e29c6e9cf08b042ccd2c3c7a5 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 18 Jan 2023 15:06:40 +0000 Subject: [PATCH 135/271] 2023.01 GA --- sources | 2 +- uboot-tools.spec | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sources b/sources index e2935f1..b8bf2c3 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2023.01-rc4.tar.bz2) = 42c5693e2dafb83af64e6958567a5cdf4452d6799fc12214fb60ebd6753bfe24b41dfdc7f1c373b35dfaada35a819e8a1a4958eff64f806c0610f764b73dbbcd +SHA512 (u-boot-2023.01.tar.bz2) = 417a28267eb7875820d08fafc7316f164663609378637539e71648b0b9b7d28796b6c381717f31b0ab6472805fefd32628ef7d1b2e7b9f3c51c8ad122993f679 diff --git a/uboot-tools.spec b/uboot-tools.spec index 095727c..5cd807e 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc4 +#global candidate rc4 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2023.01 -Release: 0.4%{?candidate:.%{candidate}}%{?dist} +Release: 0.5%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -211,6 +211,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Wed Jan 18 2023 Peter Robinson - 2023.01-0.5 +- Update to 2023.01 GA + * Sat Dec 31 2022 Peter Robinson - 2023.01-0.4.rc4 - Update PinePhone Pro to latest rev From 8376d2cf3ada06f8132c72a173c05f5a985eb58e Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 18 Jan 2023 16:05:48 +0000 Subject: [PATCH 136/271] fix release --- uboot-tools.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 5cd807e..d9f8bf3 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2023.01 -Release: 0.5%{?candidate:.%{candidate}}%{?dist} +Release: 1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -211,7 +211,7 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog -* Wed Jan 18 2023 Peter Robinson - 2023.01-0.5 +* Wed Jan 18 2023 Peter Robinson - 2023.01-1 - Update to 2023.01 GA * Sat Dec 31 2022 Peter Robinson - 2023.01-0.4.rc4 From 8798072f53dfbcb1b7001d6b2809cf52436f1322 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 21 Jan 2023 05:38:21 +0000 Subject: [PATCH 137/271] Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- uboot-tools.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index d9f8bf3..b2f73a8 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2023.01 -Release: 1%{?candidate:.%{candidate}}%{?dist} +Release: 2%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -211,6 +211,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Sat Jan 21 2023 Fedora Release Engineering - 2023.01-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + * Wed Jan 18 2023 Peter Robinson - 2023.01-1 - Update to 2023.01 GA From 65896be74ab0b6d7db58b4ca067631fcd2c8d969 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 31 Jan 2023 10:29:14 +0000 Subject: [PATCH 138/271] Update to 2023.04 rc1 --- ...nitial-support-for-the-PinePhone-Pro.patch | 1076 +++-------------- uboot-tools.spec | 12 +- 2 files changed, 204 insertions(+), 884 deletions(-) diff --git a/rockchip-Add-initial-support-for-the-PinePhone-Pro.patch b/rockchip-Add-initial-support-for-the-PinePhone-Pro.patch index 30012ad..d127522 100644 --- a/rockchip-Add-initial-support-for-the-PinePhone-Pro.patch +++ b/rockchip-Add-initial-support-for-the-PinePhone-Pro.patch @@ -1,920 +1,236 @@ -From 004af623388022d258cbc29c0b71d8e22cd96c52 Mon Sep 17 00:00:00 2001 +From a23687b77c1e0b5be7f0443e5fba9d9bb7514b6b Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Sat, 31 Dec 2022 09:20:34 +0000 -Subject: [PATCH v2 0/2] Initial support for Pinephone Pro +Date: Sun, 1 Jan 2023 02:11:29 +0000 +Subject: [PATCH] rockchip: pinephone pro: add initial display support -This adds initial support for the PINE64 Pinephone Pro. It's a rebase -to upstream core rk3399 DT pieces, and the addition of the upstream -PPP DT from 6.2-rc1 and the U-Boot pieces are based on my work on -the Pinebook Pro. +Add proposed upstream DT patches for display, disable edp, +enable mipi and backlight, add required clocks. -Changes v2: -- Drop the rk3399.dtsi sync for time being, causing issues around - clock/dram -- Sync the Pinephone DT to 6.2-rc1 -- Update for the CONFIG_SYS_TEXT_BASE -> CONFIG_TEXT_BASE change -- usb: ohci: Use a flexible array member for portstatus -- Rename CONFIG_DM_VIDEO to CONFIG_VIDEO -- Enable DM_REGULATOR_FAN53555 -- Don't initialize i2c before relocation - -Peter Robinson (2): - arm64: dts: rk3399: Add upstream Pinephone Pro dts - rockchip: Add initial support for the PINE64 Pinephone Pro - - arch/arm/dts/Makefile | 1 + - arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi | 31 ++ - arch/arm/dts/rk3399-pinephone-pro.dts | 474 ++++++++++++++++++ - arch/arm/mach-rockchip/rk3399/Kconfig | 8 + - board/pine64/pinephone-pro-rk3399/Kconfig | 15 + - board/pine64/pinephone-pro-rk3399/MAINTAINERS | 8 + - board/pine64/pinephone-pro-rk3399/Makefile | 1 + - .../pinephone-pro-rk3399.c | 76 +++ - configs/pinephone-pro-rk3399_defconfig | 104 ++++ - include/configs/pinephone-pro-rk3399.h | 19 + - 10 files changed, 737 insertions(+) - create mode 100644 arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi - create mode 100644 arch/arm/dts/rk3399-pinephone-pro.dts - create mode 100644 board/pine64/pinephone-pro-rk3399/Kconfig - create mode 100644 board/pine64/pinephone-pro-rk3399/MAINTAINERS - create mode 100644 board/pine64/pinephone-pro-rk3399/Makefile - create mode 100644 board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c - create mode 100644 configs/pinephone-pro-rk3399_defconfig - create mode 100644 include/configs/pinephone-pro-rk3399.h - --- -2.39.0 - -From 9976caacb35316cbe047ded58855d2ca1a54243b Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Sat, 31 Dec 2022 09:18:44 +0000 -Subject: [PATCH v2 1/2] arm64: dts: rk3399: Add upstream Pinephone Pro dts - -Initial support for the PinePhone Pro has now landed upstream in -Linux 6.1 RC1 so sync the dts from 6.2-rc1 for initial support. +Clocks may not be required based on upstream review. Still +need to add panel pieces, the rk3288-evb has an example for +panel DT for u-boot, or may need to do a mipi addition to +simple-panel, or something else. Signed-off-by: Peter Robinson --- - arch/arm/dts/Makefile | 1 + - arch/arm/dts/rk3399-pinephone-pro.dts | 474 ++++++++++++++++++++++++++ - 2 files changed, 475 insertions(+) - create mode 100644 arch/arm/dts/rk3399-pinephone-pro.dts + arch/arm/dts/rk3399-pinephone-pro.dts | 123 +++++++++++++++++++++++++ + configs/pinephone-pro-rk3399_defconfig | 3 +- + include/dt-bindings/clock/rk3399-cru.h | 2 + + 3 files changed, 127 insertions(+), 1 deletion(-) -diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile -index 43951a7731e..8c1eec1025f 100644 ---- a/arch/arm/dts/Makefile -+++ b/arch/arm/dts/Makefile -@@ -153,6 +153,7 @@ dtb-$(CONFIG_ROCKCHIP_RK3399) += \ - rk3399-nanopi-r4s.dtb \ - rk3399-orangepi.dtb \ - rk3399-pinebook-pro.dtb \ -+ rk3399-pinephone-pro.dtb \ - rk3399-puma-haikou.dtb \ - rk3399-roc-pc.dtb \ - rk3399-roc-pc-mezzanine.dtb \ diff --git a/arch/arm/dts/rk3399-pinephone-pro.dts b/arch/arm/dts/rk3399-pinephone-pro.dts -new file mode 100644 -index 00000000000..04403a76238 ---- /dev/null +index 04403a76238..d0609d1b534 100644 +--- a/arch/arm/dts/rk3399-pinephone-pro.dts +++ b/arch/arm/dts/rk3399-pinephone-pro.dts -@@ -0,0 +1,474 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+/* -+ * Copyright (c) 2020 Martijn Braam -+ * Copyright (c) 2021 Kamil Trzciński -+ */ -+ -+/* -+ * PinePhone Pro datasheet: -+ * https://files.pine64.org/doc/PinePhonePro/PinephonePro-Schematic-V1.0-20211127.pdf -+ */ -+ -+/dts-v1/; -+#include -+#include "rk3399.dtsi" -+#include "rk3399-opp.dtsi" -+ -+/ { -+ model = "Pine64 PinePhonePro"; -+ compatible = "pine64,pinephone-pro", "rockchip,rk3399"; -+ chassis-type = "handset"; -+ -+ aliases { -+ mmc0 = &sdio0; -+ mmc1 = &sdmmc; -+ mmc2 = &sdhci; +@@ -29,6 +29,12 @@ + stdout-path = "serial2:115200n8"; + }; + ++ backlight: backlight { ++ compatible = "pwm-backlight"; ++ pwms = <&pwm0 0 1000000 0>; ++ pwm-delay-us = <10000>; + }; + -+ chosen { -+ stdout-path = "serial2:115200n8"; -+ }; + gpio-keys { + compatible = "gpio-keys"; + pinctrl-names = "default"; +@@ -102,6 +108,32 @@ + /* WL_REG_ON on module */ + reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>; + }; + -+ gpio-keys { -+ compatible = "gpio-keys"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwrbtn_pin>; -+ -+ key-power { -+ debounce-interval = <20>; -+ gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>; -+ label = "Power"; -+ linux,code = ; -+ wakeup-source; -+ }; -+ }; -+ -+ vcc_sys: vcc-sys-regulator { -+ compatible = "regulator-fixed"; -+ regulator-name = "vcc_sys"; -+ regulator-always-on; -+ regulator-boot-on; -+ }; -+ -+ vcc3v3_sys: vcc3v3-sys-regulator { -+ compatible = "regulator-fixed"; -+ regulator-name = "vcc3v3_sys"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ vin-supply = <&vcc_sys>; -+ }; -+ -+ vcca1v8_s3: vcc1v8-s3-regulator { -+ compatible = "regulator-fixed"; -+ regulator-name = "vcca1v8_s3"; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ vin-supply = <&vcc3v3_sys>; -+ regulator-always-on; -+ regulator-boot-on; -+ }; -+ -+ vcc1v8_codec: vcc1v8-codec-regulator { ++ /* MIPI DSI panel 1.8v supply */ ++ vcc1v8_lcd: vcc1v8-lcd-regulator { + compatible = "regulator-fixed"; + enable-active-high; -+ gpio = <&gpio3 RK_PA4 GPIO_ACTIVE_HIGH>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&vcc1v8_codec_en>; -+ regulator-name = "vcc1v8_codec"; ++ regulator-name = "vcc1v8_lcd"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + vin-supply = <&vcc3v3_sys>; -+ }; -+ -+ wifi_pwrseq: sdio-wifi-pwrseq { -+ compatible = "mmc-pwrseq-simple"; -+ clocks = <&rk818 1>; -+ clock-names = "ext_clock"; ++ gpio = <&gpio3 RK_PA5 GPIO_ACTIVE_HIGH>; + pinctrl-names = "default"; -+ pinctrl-0 = <&wifi_enable_h_pin>; -+ /* -+ * Wait between power-on and SDIO access for CYP43455 -+ * POR circuit. -+ */ -+ post-power-on-delay-ms = <110>; -+ /* -+ * Wait between consecutive toggles for CYP43455 CBUCK -+ * regulator discharge. -+ */ -+ power-off-delay-us = <10000>; -+ -+ /* WL_REG_ON on module */ -+ reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>; ++ pinctrl-0 = <&display_pwren1>; + }; -+}; + -+&cpu_l0 { -+ cpu-supply = <&vdd_cpu_l>; -+}; -+ -+&cpu_l1 { -+ cpu-supply = <&vdd_cpu_l>; -+}; -+ -+&cpu_l2 { -+ cpu-supply = <&vdd_cpu_l>; -+}; -+ -+&cpu_l3 { -+ cpu-supply = <&vdd_cpu_l>; -+}; -+ -+&cpu_b0 { -+ cpu-supply = <&vdd_cpu_b>; -+}; -+ -+&cpu_b1 { -+ cpu-supply = <&vdd_cpu_b>; -+}; -+ -+&emmc_phy { -+ status = "okay"; -+}; -+ -+&i2c0 { -+ clock-frequency = <400000>; -+ i2c-scl-rising-time-ns = <168>; -+ i2c-scl-falling-time-ns = <4>; -+ status = "okay"; -+ -+ rk818: pmic@1c { -+ compatible = "rockchip,rk818"; -+ reg = <0x1c>; -+ interrupt-parent = <&gpio1>; -+ interrupts = ; -+ #clock-cells = <1>; -+ clock-output-names = "xin32k", "rk808-clkout2"; ++ /* MIPI DSI panel 2.8v supply */ ++ vcc2v8_lcd: vcc2v8-lcd-regulator { ++ compatible = "regulator-fixed"; ++ enable-active-high; ++ regulator-name = "vcc2v8_lcd"; ++ regulator-min-microvolt = <2800000>; ++ regulator-max-microvolt = <2800000>; ++ vin-supply = <&vcc3v3_sys>; ++ gpio = <&gpio3 RK_PA1 GPIO_ACTIVE_HIGH>; + pinctrl-names = "default"; -+ pinctrl-0 = <&pmic_int_l>; -+ rockchip,system-power-controller; -+ wakeup-source; -+ -+ vcc1-supply = <&vcc_sys>; -+ vcc2-supply = <&vcc_sys>; -+ vcc3-supply = <&vcc_sys>; -+ vcc4-supply = <&vcc_sys>; -+ vcc6-supply = <&vcc_sys>; -+ vcc7-supply = <&vcc3v3_sys>; -+ vcc8-supply = <&vcc_sys>; -+ vcc9-supply = <&vcc3v3_sys>; -+ -+ regulators { -+ vdd_cpu_l: DCDC_REG1 { -+ regulator-name = "vdd_cpu_l"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <875000>; -+ regulator-max-microvolt = <975000>; -+ regulator-ramp-delay = <6001>; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vdd_center: DCDC_REG2 { -+ regulator-name = "vdd_center"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <800000>; -+ regulator-max-microvolt = <1000000>; -+ regulator-ramp-delay = <6001>; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vcc_ddr: DCDC_REG3 { -+ regulator-name = "vcc_ddr"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ }; -+ }; -+ -+ vcc_1v8: DCDC_REG4 { -+ regulator-name = "vcc_1v8"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ }; -+ }; -+ -+ vcca3v0_codec: LDO_REG1 { -+ regulator-name = "vcca3v0_codec"; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ }; -+ -+ vcc3v0_touch: LDO_REG2 { -+ regulator-name = "vcc3v0_touch"; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ }; -+ -+ vcca1v8_codec: LDO_REG3 { -+ regulator-name = "vcca1v8_codec"; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ }; -+ -+ rk818_pwr_on: LDO_REG4 { -+ regulator-name = "rk818_pwr_on"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ }; -+ }; -+ -+ vcc_3v0: LDO_REG5 { -+ regulator-name = "vcc_3v0"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ }; -+ }; -+ -+ vcc_1v5: LDO_REG6 { -+ regulator-name = "vcc_1v5"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <1500000>; -+ regulator-max-microvolt = <1500000>; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ }; -+ }; -+ -+ vcc1v8_dvp: LDO_REG7 { -+ regulator-name = "vcc1v8_dvp"; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ }; -+ -+ vcc3v3_s3: LDO_REG8 { -+ regulator-name = "vcc3v3_s3"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vccio_sd: LDO_REG9 { -+ regulator-name = "vccio_sd"; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <3300000>; -+ }; -+ -+ vcc3v3_s0: SWITCH_REG { -+ regulator-name = "vcc3v3_s0"; -+ regulator-always-on; -+ regulator-boot-on; -+ regulator-state-mem { -+ regulator-on-in-suspend; -+ }; -+ }; -+ }; ++ pinctrl-0 = <&display_pwren>; + }; -+ -+ vdd_cpu_b: regulator@40 { -+ compatible = "silergy,syr827"; -+ reg = <0x40>; -+ fcs,suspend-voltage-selector = <1>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&vsel1_pin>; -+ regulator-name = "vdd_cpu_b"; -+ regulator-min-microvolt = <875000>; -+ regulator-max-microvolt = <1150000>; -+ regulator-ramp-delay = <1000>; -+ regulator-always-on; -+ regulator-boot-on; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+ -+ vdd_gpu: regulator@41 { -+ compatible = "silergy,syr828"; -+ reg = <0x41>; -+ fcs,suspend-voltage-selector = <1>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&vsel2_pin>; -+ regulator-name = "vdd_gpu"; -+ regulator-min-microvolt = <875000>; -+ regulator-max-microvolt = <975000>; -+ regulator-ramp-delay = <1000>; -+ regulator-always-on; -+ regulator-boot-on; -+ -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; -+ }; -+}; -+ -+&cluster0_opp { -+ opp04 { -+ status = "disabled"; -+ }; -+ -+ opp05 { -+ status = "disabled"; -+ }; -+}; -+ -+&cluster1_opp { -+ opp06 { -+ opp-hz = /bits/ 64 <1500000000>; -+ opp-microvolt = <1100000 1100000 1150000>; -+ }; -+ -+ opp07 { -+ status = "disabled"; -+ }; -+}; -+ -+&io_domains { -+ bt656-supply = <&vcc1v8_dvp>; -+ audio-supply = <&vcca1v8_codec>; -+ sdmmc-supply = <&vccio_sd>; -+ gpio1830-supply = <&vcc_3v0>; -+ status = "okay"; -+}; -+ -+&pmu_io_domains { -+ pmu1830-supply = <&vcc_1v8>; -+ status = "okay"; -+}; -+ -+&pinctrl { -+ buttons { -+ pwrbtn_pin: pwrbtn-pin { -+ rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ }; -+ -+ pmic { -+ pmic_int_l: pmic-int-l { -+ rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>; -+ }; -+ -+ vsel1_pin: vsel1-pin { -+ rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>; -+ }; -+ -+ vsel2_pin: vsel2-pin { -+ rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>; -+ }; -+ }; -+ -+ sdio-pwrseq { -+ wifi_enable_h_pin: wifi-enable-h-pin { -+ rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+ -+ sound { -+ vcc1v8_codec_en: vcc1v8-codec-en { -+ rockchip,pins = <3 RK_PA4 RK_FUNC_GPIO &pcfg_pull_down>; -+ }; -+ }; -+ -+ wireless-bluetooth { -+ bt_wake_pin: bt-wake-pin { -+ rockchip,pins = <2 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ -+ bt_host_wake_pin: bt-host-wake-pin { -+ rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ -+ bt_reset_pin: bt-reset-pin { -+ rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+}; -+ -+&sdio0 { -+ bus-width = <4>; -+ cap-sd-highspeed; -+ cap-sdio-irq; -+ disable-wp; -+ keep-power-in-suspend; -+ mmc-pwrseq = <&wifi_pwrseq>; -+ non-removable; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>; -+ sd-uhs-sdr104; -+ status = "okay"; -+}; -+ -+&sdmmc { -+ bus-width = <4>; -+ cap-sd-highspeed; -+ cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>; -+ disable-wp; -+ max-frequency = <150000000>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>; -+ vmmc-supply = <&vcc3v3_sys>; -+ vqmmc-supply = <&vccio_sd>; -+ status = "okay"; -+}; -+ -+&sdhci { -+ bus-width = <8>; -+ mmc-hs200-1_8v; -+ non-removable; -+ status = "okay"; -+}; -+ -+&tsadc { -+ rockchip,hw-tshut-mode = <1>; -+ rockchip,hw-tshut-polarity = <1>; -+ status = "okay"; -+}; -+ -+&uart0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>; -+ uart-has-rtscts; -+ status = "okay"; -+ -+ bluetooth { -+ compatible = "brcm,bcm4345c5"; -+ clocks = <&rk818 1>; -+ clock-names = "lpo"; -+ device-wakeup-gpios = <&gpio2 RK_PD2 GPIO_ACTIVE_HIGH>; -+ host-wakeup-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>; -+ max-speed = <1500000>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&bt_host_wake_pin &bt_wake_pin &bt_reset_pin>; -+ shutdown-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>; -+ vbat-supply = <&vcc3v3_sys>; -+ vddio-supply = <&vcc_1v8>; -+ }; -+}; -+ -+&uart2 { -+ status = "okay"; -+}; --- -2.39.0 - -From 004af623388022d258cbc29c0b71d8e22cd96c52 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Wed, 28 Dec 2022 03:52:27 +0000 -Subject: [PATCH v2 2/2] rockchip: Add initial support for the PINE64 Pinephone - Pro - -The Pinephone Pro is another device by PINE64. It's closely related -to the Pinebook Pro of which this initial support is derived from. - -Specification: -- A variant of the Rockchip RK3399 -- A 6 inch 720*1440 DSI display -- Front and rear cameras -- Type-C interface with alt mode display (DP 1.2) and PD charging -- 4GB LPDDR4 RAM -- 128GB eMMC -- mSD card slot -- An AP6255 module for 802.11ac WiFi and Bluetooth 5 -- Quectel EG25-G 4G/LTE modem - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi | 31 ++++++ - arch/arm/mach-rockchip/rk3399/Kconfig | 8 ++ - board/pine64/pinephone-pro-rk3399/Kconfig | 15 +++ - board/pine64/pinephone-pro-rk3399/MAINTAINERS | 8 ++ - board/pine64/pinephone-pro-rk3399/Makefile | 1 + - .../pinephone-pro-rk3399.c | 76 +++++++++++++ - configs/pinephone-pro-rk3399_defconfig | 104 ++++++++++++++++++ - include/configs/pinephone-pro-rk3399.h | 19 ++++ - 8 files changed, 262 insertions(+) - create mode 100644 arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi - create mode 100644 board/pine64/pinephone-pro-rk3399/Kconfig - create mode 100644 board/pine64/pinephone-pro-rk3399/MAINTAINERS - create mode 100644 board/pine64/pinephone-pro-rk3399/Makefile - create mode 100644 board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c - create mode 100644 configs/pinephone-pro-rk3399_defconfig - create mode 100644 include/configs/pinephone-pro-rk3399.h - -diff --git a/arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi -new file mode 100644 -index 00000000000..1dad283ad05 ---- /dev/null -+++ b/arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi -@@ -0,0 +1,31 @@ -+// SPDX-License-Identifier: GPL-2.0+ -+/* -+ * Copyright (C) 2022 Peter Robinson -+ */ -+ -+#include "rk3399-u-boot.dtsi" -+#include "rk3399-sdram-lpddr4-100.dtsi" -+ -+/ { -+ chosen { -+ u-boot,spl-boot-order = "same-as-spl", &sdhci, &sdmmc; -+ }; -+ -+ config { -+ u-boot,spl-payload-offset = <0x60000>; /* @ 384KB */ -+ }; -+}; -+ -+&rng { -+ status = "okay"; -+}; -+ -+&sdhci { -+ max-frequency = <25000000>; -+ u-boot,dm-pre-reloc; -+}; -+ -+&sdmmc { -+ max-frequency = <20000000>; -+ u-boot,dm-pre-reloc; -+}; -diff --git a/arch/arm/mach-rockchip/rk3399/Kconfig b/arch/arm/mach-rockchip/rk3399/Kconfig -index b48feeb3466..d01063ac98b 100644 ---- a/arch/arm/mach-rockchip/rk3399/Kconfig -+++ b/arch/arm/mach-rockchip/rk3399/Kconfig -@@ -39,6 +39,13 @@ config TARGET_PINEBOOK_PRO_RK3399 - with 4Gb RAM, onboard eMMC, USB-C, a USB3 and USB2 port, - 1920*1080 screen and all the usual laptop features. + }; -+config TARGET_PINEPHONE_PRO_RK3399 -+ bool "PinePhone Pro" -+ help -+ PinePhone Pro is a phone based on a variant of the Rockchip -+ rk3399 SoC with 4Gb RAM, onboard eMMC, USB-C, headphone jack, -+ 720x1440 screen and a Quectel 4G/LTE modem. + &cpu_l0 { +@@ -132,6 +164,11 @@ + status = "okay"; + }; + ++&gpu { ++ mali-supply = <&vdd_gpu>; ++ status = "okay"; ++}; + - config TARGET_PUMA_RK3399 - bool "Theobroma Systems RK3399-Q7 (Puma)" - help -@@ -165,6 +172,7 @@ endif # BOOTCOUNT_LIMIT - source "board/firefly/roc-pc-rk3399/Kconfig" - source "board/google/gru/Kconfig" - source "board/pine64/pinebook-pro-rk3399/Kconfig" -+source "board/pine64/pinephone-pro-rk3399/Kconfig" - source "board/pine64/rockpro64_rk3399/Kconfig" - source "board/rockchip/evb_rk3399/Kconfig" - source "board/theobroma-systems/puma_rk3399/Kconfig" -diff --git a/board/pine64/pinephone-pro-rk3399/Kconfig b/board/pine64/pinephone-pro-rk3399/Kconfig -new file mode 100644 -index 00000000000..13d6465ae6e ---- /dev/null -+++ b/board/pine64/pinephone-pro-rk3399/Kconfig -@@ -0,0 +1,15 @@ -+if TARGET_PINEPHONE_PRO_RK3399 + &i2c0 { + clock-frequency = <400000>; + i2c-scl-rising-time-ns = <168>; +@@ -214,6 +251,9 @@ + regulator-name = "vcc3v0_touch"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; + }; + + vcca1v8_codec: LDO_REG3 { +@@ -347,6 +387,25 @@ + }; + }; + ++&i2c3 { ++ i2c-scl-rising-time-ns = <450>; ++ i2c-scl-falling-time-ns = <15>; ++ status = "okay"; + -+config SYS_BOARD -+ default "pinephone-pro-rk3399" ++ touchscreen@14 { ++ compatible = "goodix,gt917s"; ++ reg = <0x14>; ++ interrupt-parent = <&gpio3>; ++ interrupts = ; ++ irq-gpios = <&gpio3 RK_PB5 GPIO_ACTIVE_HIGH>; ++ reset-gpios = <&gpio3 RK_PB4 GPIO_ACTIVE_HIGH>; ++ AVDD28-supply = <&vcc3v0_touch>; ++ VDDIO-supply = <&vcc3v0_touch>; ++ touchscreen-size-x = <720>; ++ touchscreen-size-y = <1440>; ++ }; ++}; + -+config SYS_VENDOR -+ default "pine64" + &io_domains { + bt656-supply = <&vcc1v8_dvp>; + audio-supply = <&vcca1v8_codec>; +@@ -355,6 +414,40 @@ + status = "okay"; + }; + ++&mipi_dsi { ++ status = "okay"; ++ clock-master; + -+config SYS_CONFIG_NAME -+ default "pinephone-pro-rk3399" ++ ports { ++ mipi_out: port@1 { ++ #address-cells = <0>; ++ #size-cells = <0>; ++ reg = <1>; + -+config BOARD_SPECIFIC_OPTIONS -+ def_bool y ++ mipi_out_panel: endpoint { ++ remote-endpoint = <&mipi_in_panel>; ++ }; ++ }; ++ }; + -+endif -diff --git a/board/pine64/pinephone-pro-rk3399/MAINTAINERS b/board/pine64/pinephone-pro-rk3399/MAINTAINERS -new file mode 100644 -index 00000000000..c923ff1be32 ---- /dev/null -+++ b/board/pine64/pinephone-pro-rk3399/MAINTAINERS -@@ -0,0 +1,8 @@ -+PINEPHONE_PRO -+M: Peter Robinson -+S: Maintained -+F: board/pine64/rk3399-pinephone-pro/ -+F: include/configs/rk3399-pinephone-pro.h -+F: arch/arm/dts/rk3399-pinephone-pro.dts -+F: arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi -+F: configs/pinephone-pro-rk3399_defconfig -diff --git a/board/pine64/pinephone-pro-rk3399/Makefile b/board/pine64/pinephone-pro-rk3399/Makefile -new file mode 100644 -index 00000000000..8d9203053e5 ---- /dev/null -+++ b/board/pine64/pinephone-pro-rk3399/Makefile -@@ -0,0 +1 @@ -+obj-y += pinephone-pro-rk3399.o -diff --git a/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c b/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c -new file mode 100644 -index 00000000000..eb639cd0d07 ---- /dev/null -+++ b/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c -@@ -0,0 +1,76 @@ -+// SPDX-License-Identifier: GPL-2.0+ -+/* -+ * (C) Copyright 2016 Rockchip Electronics Co., Ltd -+ * (C) Copyright 2022 Peter Robinson -+ */ ++ panel@0 { ++ compatible = "hannstar,hsd060bhw4"; ++ reg = <0>; ++ backlight = <&backlight>; ++ reset-gpios = <&gpio4 RK_PD1 GPIO_ACTIVE_LOW>; ++ vcc-supply = <&vcc2v8_lcd>; ++ iovcc-supply = <&vcc1v8_lcd>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&display_rst_l>; + -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include ++ port { ++ mipi_in_panel: endpoint { ++ remote-endpoint = <&mipi_out_panel>; ++ }; ++ }; ++ }; ++}; + -+#define GRF_IO_VSEL_BT565_SHIFT 0 -+#define PMUGRF_CON0_VSEL_SHIFT 8 + &pmu_io_domains { + pmu1830-supply = <&vcc_1v8>; + status = "okay"; +@@ -387,6 +480,20 @@ + }; + }; + ++ dsi { ++ display_rst_l: display-rst-l { ++ rockchip,pins = <4 RK_PD1 RK_FUNC_GPIO &pcfg_pull_down>; ++ }; + -+#ifndef CONFIG_SPL_BUILD -+int board_early_init_f(void) -+{ -+ struct udevice *regulator; -+ int ret; ++ display_pwren: display-pwren { ++ rockchip,pins = <3 RK_PA1 RK_FUNC_GPIO &pcfg_pull_down>; ++ }; + -+ ret = regulator_get_by_platname("vcc5v0_usb", ®ulator); -+ if (ret) { -+ pr_debug("%s vcc5v0_usb init fail! ret %d\n", __func__, ret); -+ goto out; -+ } ++ display_pwren1: display-pwren1 { ++ rockchip,pins = <3 RK_PA5 RK_FUNC_GPIO &pcfg_pull_down>; ++ }; ++ }; + -+ ret = regulator_set_enable(regulator, true); -+ if (ret) -+ pr_debug("%s vcc5v0-host-en-gpio set fail! ret %d\n", __func__, ret); + sound { + vcc1v8_codec_en: vcc1v8-codec-en { + rockchip,pins = <3 RK_PA4 RK_FUNC_GPIO &pcfg_pull_down>; +@@ -422,6 +529,10 @@ + status = "okay"; + }; + ++&pwm0 { ++ status = "okay"; ++}; + -+out: -+ return 0; -+} -+#endif + &sdmmc { + bus-width = <4>; + cap-sd-highspeed; +@@ -472,3 +583,15 @@ + &uart2 { + status = "okay"; + }; + -+#ifdef CONFIG_MISC_INIT_R -+static void setup_iodomain(void) -+{ -+ struct rk3399_grf_regs *grf = -+ syscon_get_first_range(ROCKCHIP_SYSCON_GRF); -+ struct rk3399_pmugrf_regs *pmugrf = -+ syscon_get_first_range(ROCKCHIP_SYSCON_PMUGRF); ++&vopb { ++ status = "okay"; ++ assigned-clocks = <&cru DCLK_VOP0_DIV>, <&cru DCLK_VOP0>, ++ <&cru ACLK_VOP0>, <&cru HCLK_VOP0>; ++ assigned-clock-rates = <0>, <0>, <400000000>, <100000000>; ++ assigned-clock-parents = <&cru PLL_CPLL>, <&cru DCLK_VOP0_FRAC>; ++}; + -+ /* BT565 is in 1.8v domain */ -+ rk_setreg(&grf->io_vsel, 1 << GRF_IO_VSEL_BT565_SHIFT); -+ -+ /* Set GPIO1 1.8v/3.0v source select to PMU1830_VOL */ -+ rk_setreg(&pmugrf->soc_con0, 1 << PMUGRF_CON0_VSEL_SHIFT); -+} -+ -+int misc_init_r(void) -+{ -+ const u32 cpuid_offset = 0x7; -+ const u32 cpuid_length = 0x10; -+ u8 cpuid[cpuid_length]; -+ int ret; -+ -+ setup_iodomain(); -+ -+ ret = rockchip_cpuid_from_efuse(cpuid_offset, cpuid_length, cpuid); -+ if (ret) -+ return ret; -+ -+ ret = rockchip_cpuid_set(cpuid, cpuid_length); -+ if (ret) -+ return ret; -+ -+ return ret; -+} -+#endif ++&vopb_mmu { ++ status = "okay"; ++}; diff --git a/configs/pinephone-pro-rk3399_defconfig b/configs/pinephone-pro-rk3399_defconfig -new file mode 100644 -index 00000000000..eb979f6c051 ---- /dev/null +index eb979f6c051..25941abc93a 100644 +--- a/configs/pinephone-pro-rk3399_defconfig +++ b/configs/pinephone-pro-rk3399_defconfig -@@ -0,0 +1,104 @@ -+CONFIG_ARM=y -+CONFIG_SKIP_LOWLEVEL_INIT=y -+CONFIG_COUNTER_FREQUENCY=24000000 -+CONFIG_ARCH_ROCKCHIP=y -+CONFIG_TEXT_BASE=0x00200000 -+CONFIG_NR_DRAM_BANKS=1 -+CONFIG_ENV_SIZE=0x8000 -+CONFIG_ENV_OFFSET=0x3F8000 -+CONFIG_DEFAULT_DEVICE_TREE="rk3399-pinephone-pro" -+CONFIG_ROCKCHIP_RK3399=y -+CONFIG_TARGET_PINEPHONE_PRO_RK3399=y -+CONFIG_DEBUG_UART_BASE=0xFF1A0000 -+CONFIG_DEBUG_UART_CLOCK=24000000 -+CONFIG_SPL_SPI_FLASH_SUPPORT=y -+CONFIG_SPL_SPI=y -+CONFIG_SYS_LOAD_ADDR=0x800800 -+CONFIG_DEBUG_UART=y -+CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y -+CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x300000 -+CONFIG_BOOTDELAY=3 -+CONFIG_USE_PREBOOT=y -+CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-pinephone-pro.dtb" -+CONFIG_DISPLAY_BOARDINFO_LATE=y -+CONFIG_MISC_INIT_R=y -+CONFIG_SPL_MAX_SIZE=0x2e000 -+CONFIG_SPL_PAD_TO=0x7f8000 -+CONFIG_SPL_HAS_BSS_LINKER_SECTION=y -+CONFIG_SPL_BSS_START_ADDR=0x400000 -+CONFIG_SPL_BSS_MAX_SIZE=0x2000 -+# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set -+# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set -+CONFIG_SPL_STACK=0x400000 -+CONFIG_SPL_STACK_R=y -+CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000 -+CONFIG_SPL_SPI_LOAD=y -+CONFIG_TPL=y -+CONFIG_CMD_BOOTZ=y -+CONFIG_CMD_GPIO=y -+CONFIG_CMD_GPT=y -+CONFIG_CMD_I2C=y -+CONFIG_CMD_MMC=y -+CONFIG_CMD_PCI=y -+CONFIG_CMD_USB=y -+# CONFIG_CMD_SETEXPR is not set -+CONFIG_CMD_TIME=y -+CONFIG_CMD_PMIC=y -+CONFIG_CMD_REGULATOR=y -+CONFIG_SPL_OF_CONTROL=y -+CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" -+CONFIG_ENV_IS_IN_SPI_FLASH=y -+CONFIG_SYS_RELOC_GD_ENV_ADDR=y -+CONFIG_SPL_DM_SEQ_ALIAS=y -+CONFIG_ROCKCHIP_GPIO=y -+CONFIG_SYS_I2C_ROCKCHIP=y -+CONFIG_DM_KEYBOARD=y -+CONFIG_LED=y -+CONFIG_LED_GPIO=y -+CONFIG_MISC=y -+CONFIG_ROCKCHIP_EFUSE=y -+CONFIG_MMC_DW=y -+CONFIG_MMC_DW_ROCKCHIP=y -+CONFIG_MMC_SDHCI=y -+CONFIG_MMC_SDHCI_SDMA=y -+CONFIG_MMC_SDHCI_ROCKCHIP=y -+CONFIG_SF_DEFAULT_BUS=1 -+CONFIG_SF_DEFAULT_SPEED=20000000 -+CONFIG_SPI_FLASH_GIGADEVICE=y -+CONFIG_SPI_FLASH_WINBOND=y -+CONFIG_PHY_ROCKCHIP_INNO_USB2=y -+CONFIG_PHY_ROCKCHIP_TYPEC=y -+CONFIG_DM_PMIC_FAN53555=y -+CONFIG_DM_REGULATOR_FAN53555=y -+CONFIG_PMIC_RK8XX=y -+CONFIG_REGULATOR_PWM=y -+CONFIG_REGULATOR_RK8XX=y -+CONFIG_PWM_ROCKCHIP=y -+CONFIG_RAM_RK3399_LPDDR4=y -+CONFIG_DM_RESET=y -+CONFIG_DM_RNG=y -+CONFIG_RNG_ROCKCHIP=y -+CONFIG_BAUDRATE=1500000 -+CONFIG_DEBUG_UART_SHIFT=2 -+CONFIG_ROCKCHIP_SPI=y -+CONFIG_SYSRESET=y -+CONFIG_USB=y -+CONFIG_USB_XHCI_HCD=y -+CONFIG_USB_XHCI_DWC3=y -+CONFIG_USB_EHCI_HCD=y -+CONFIG_USB_EHCI_GENERIC=y -+CONFIG_USB_OHCI_HCD=y -+CONFIG_USB_OHCI_GENERIC=y -+CONFIG_USB_DWC3=y -+CONFIG_USB_DWC3_GENERIC=y -+CONFIG_USB_KEYBOARD=y -+CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y -+CONFIG_USB_HOST_ETHER=y -+CONFIG_USB_ETHER_ASIX=y -+CONFIG_USB_ETHER_RTL8152=y -+CONFIG_DISPLAY=y -+CONFIG_VIDEO=y -+CONFIG_VIDEO_ROCKCHIP=y -+CONFIG_DISPLAY_ROCKCHIP_EDP=y -+CONFIG_SPL_TINY_MEMSET=y -+CONFIG_ERRNO_STR=y -diff --git a/include/configs/pinephone-pro-rk3399.h b/include/configs/pinephone-pro-rk3399.h -new file mode 100644 -index 00000000000..78017d6bcc3 ---- /dev/null -+++ b/include/configs/pinephone-pro-rk3399.h -@@ -0,0 +1,19 @@ -+/* SPDX-License-Identifier: GPL-2.0+ */ -+/* -+ * Copyright (C) 2016 Rockchip Electronics Co., Ltd -+ * Copyright (C) 2022 Peter Robinson -+ */ -+ -+#ifndef __PINEPHONE_PRO_RK3399_H -+#define __PINEPHONE_PRO_RK3399_H -+ -+#define ROCKCHIP_DEVICE_SETTINGS \ -+ "stdin=serial,usbkbd\0" \ -+ "stdout=serial,vidconsole\0" \ -+ "stderr=serial,vidconsole\0" -+ -+#include -+ -+#define SDRAM_BANK_SIZE (2UL << 30) -+ -+#endif +@@ -99,6 +99,7 @@ CONFIG_USB_ETHER_RTL8152=y + CONFIG_DISPLAY=y + CONFIG_VIDEO=y + CONFIG_VIDEO_ROCKCHIP=y +-CONFIG_DISPLAY_ROCKCHIP_EDP=y ++CONFIG_DISPLAY_ROCKCHIP_MIPI=y ++CONFIG_BACKLIGHT_PWM=y + CONFIG_SPL_TINY_MEMSET=y + CONFIG_ERRNO_STR=y +diff --git a/include/dt-bindings/clock/rk3399-cru.h b/include/dt-bindings/clock/rk3399-cru.h +index 211faf8fa89..7866e5266d2 100644 +--- a/include/dt-bindings/clock/rk3399-cru.h ++++ b/include/dt-bindings/clock/rk3399-cru.h +@@ -131,6 +131,8 @@ + #define DCLK_VOP0_DIV 182 + #define DCLK_VOP1_DIV 183 + #define DCLK_M0_PERILP 184 ++#define DCLK_VOP0_FRAC 185 ++#define DCLK_VOP1_FRAC 186 + + #define FCLK_CM0S 190 + -- -2.39.0 +2.39.1 + diff --git a/uboot-tools.spec b/uboot-tools.spec index b2f73a8..60a8786 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -#global candidate rc4 +%global candidate rc1 %if 0%{?rhel} %bcond_with toolsonly %else @@ -6,8 +6,8 @@ %endif Name: uboot-tools -Version: 2023.01 -Release: 2%{?candidate:.%{candidate}}%{?dist} +Version: 2023.04 +Release: 0.1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -179,7 +179,7 @@ done %endif %endif -for tool in bmp_logo dumpimage env/fw_printenv fit_check_sign fit_info gdb/gdbcont gdb/gdbsend gen_eth_addr gen_ethaddr_crc ifwitool img2srec kwboot mkeficapsule mkenvimage mkimage mksunxiboot ncb proftool sunxi-spl-image-builder ubsha1 xway-swap-bytes +for tool in dumpimage env/fw_printenv fit_check_sign fit_info gdb/gdbcont gdb/gdbsend gen_eth_addr gen_ethaddr_crc ifwitool img2srec kwboot mkeficapsule mkenvimage mkimage mksunxiboot ncb proftool sunxi-spl-image-builder ubsha1 xway-swap-bytes do install -p -m 0755 builds/tools/$tool %{buildroot}%{_bindir} done @@ -211,6 +211,10 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Tue Jan 31 2023 Peter Robinson - 2023.04-0.1.rc1 +- Update to 2023.04 RC1 +- Drop bmp_logo tool + * Sat Jan 21 2023 Fedora Release Engineering - 2023.01-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild From de2eac07ba03fbc040213d507fe4f756acc8e847 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 31 Jan 2023 13:11:34 +0000 Subject: [PATCH 139/271] upadte source hash --- sources | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources b/sources index b8bf2c3..d1e0a25 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2023.01.tar.bz2) = 417a28267eb7875820d08fafc7316f164663609378637539e71648b0b9b7d28796b6c381717f31b0ab6472805fefd32628ef7d1b2e7b9f3c51c8ad122993f679 +SHA512 (u-boot-2023.04-rc1.tar.bz2) = e08080aa4988321aaf8d402940ff2737f001102dcc4e575b8155d77fff140d1e5a2bd8a618dc885f4f1a82e0bf882cb0880a25514ab51a3bd8735437bc1190c6 From 7a9f14f8e748f48b8de702b6e8692ccc7ee7dd69 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Fri, 17 Feb 2023 16:03:02 +0000 Subject: [PATCH 140/271] 2023.04 RC2 --- sources | 2 +- uboot-tools.spec | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sources b/sources index d1e0a25..766a5a0 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2023.04-rc1.tar.bz2) = e08080aa4988321aaf8d402940ff2737f001102dcc4e575b8155d77fff140d1e5a2bd8a618dc885f4f1a82e0bf882cb0880a25514ab51a3bd8735437bc1190c6 +SHA512 (u-boot-2023.04-rc2.tar.bz2) = 7de3513fc07ce67c11144cadccfa7e21d2de7dbb22d051822a5890396caf2109f5ee12ebdc8bb1c3f77bec26fee032bae2c2e243e8f3a0cc390057f700d76cf0 diff --git a/uboot-tools.spec b/uboot-tools.spec index 60a8786..c4218f8 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc1 +%global candidate rc2 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2023.04 -Release: 0.1%{?candidate:.%{candidate}}%{?dist} +Release: 0.2%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -211,6 +211,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Fri Feb 17 2023 Peter Robinson - 2023.04-0.2.rc2 +- Update to 2023.04 RC2 + * Tue Jan 31 2023 Peter Robinson - 2023.04-0.1.rc1 - Update to 2023.04 RC1 - Drop bmp_logo tool From 4adcd6c9bf4a42424ad583d6eb45d53d6f745c9c Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 20 Feb 2023 10:19:35 +0000 Subject: [PATCH 141/271] drop ubsha1 --- uboot-tools.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index c4218f8..059fc2a 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -179,7 +179,7 @@ done %endif %endif -for tool in dumpimage env/fw_printenv fit_check_sign fit_info gdb/gdbcont gdb/gdbsend gen_eth_addr gen_ethaddr_crc ifwitool img2srec kwboot mkeficapsule mkenvimage mkimage mksunxiboot ncb proftool sunxi-spl-image-builder ubsha1 xway-swap-bytes +for tool in dumpimage env/fw_printenv fit_check_sign fit_info gdb/gdbcont gdb/gdbsend gen_eth_addr gen_ethaddr_crc ifwitool img2srec kwboot mkeficapsule mkenvimage mkimage mksunxiboot ncb proftool sunxi-spl-image-builder xway-swap-bytes do install -p -m 0755 builds/tools/$tool %{buildroot}%{_bindir} done From 8a0d41132e6508368dbe6b70ce27cc40a2948daa Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 20 Feb 2023 11:01:34 +0000 Subject: [PATCH 142/271] drop xway-swap-bytes --- uboot-tools.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 059fc2a..5c88e27 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -179,7 +179,7 @@ done %endif %endif -for tool in dumpimage env/fw_printenv fit_check_sign fit_info gdb/gdbcont gdb/gdbsend gen_eth_addr gen_ethaddr_crc ifwitool img2srec kwboot mkeficapsule mkenvimage mkimage mksunxiboot ncb proftool sunxi-spl-image-builder xway-swap-bytes +for tool in dumpimage env/fw_printenv fit_check_sign fit_info gdb/gdbcont gdb/gdbsend gen_eth_addr gen_ethaddr_crc ifwitool img2srec kwboot mkeficapsule mkenvimage mkimage mksunxiboot ncb proftool sunxi-spl-image-builder do install -p -m 0755 builds/tools/$tool %{buildroot}%{_bindir} done From 8e7afdbb87a4ed790b938dc52dc5f09e397784e6 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 14 Mar 2023 17:19:11 +0000 Subject: [PATCH 143/271] 2023.04 RC4 --- ...nitial-support-for-the-PinePhone-Pro.patch | 12 +- ...erties-from-firmware-DT-to-loaded-DT.patch | 215 ++---------------- ...-the-DT-provided-by-the-Raspberry-Pi.patch | 79 +++++-- rpi-Update-the-RPi-Zero-2W-DT-filename.patch | 29 +++ sources | 2 +- uboot-tools.spec | 10 +- 6 files changed, 128 insertions(+), 219 deletions(-) create mode 100644 rpi-Update-the-RPi-Zero-2W-DT-filename.patch diff --git a/rockchip-Add-initial-support-for-the-PinePhone-Pro.patch b/rockchip-Add-initial-support-for-the-PinePhone-Pro.patch index d127522..337ea8c 100644 --- a/rockchip-Add-initial-support-for-the-PinePhone-Pro.patch +++ b/rockchip-Add-initial-support-for-the-PinePhone-Pro.patch @@ -1,6 +1,6 @@ -From a23687b77c1e0b5be7f0443e5fba9d9bb7514b6b Mon Sep 17 00:00:00 2001 +From 72400858605c085cf94a6cf5599269c8c39e3e72 Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Sun, 1 Jan 2023 02:11:29 +0000 +Date: Tue, 14 Mar 2023 12:30:36 +0000 Subject: [PATCH] rockchip: pinephone pro: add initial display support Add proposed upstream DT patches for display, disable edp, @@ -206,12 +206,12 @@ index 04403a76238..d0609d1b534 100644 + status = "okay"; +}; diff --git a/configs/pinephone-pro-rk3399_defconfig b/configs/pinephone-pro-rk3399_defconfig -index eb979f6c051..25941abc93a 100644 +index 54f9b90536c..1982131c805 100644 --- a/configs/pinephone-pro-rk3399_defconfig +++ b/configs/pinephone-pro-rk3399_defconfig -@@ -99,6 +99,7 @@ CONFIG_USB_ETHER_RTL8152=y - CONFIG_DISPLAY=y +@@ -96,6 +96,7 @@ CONFIG_USB_ETHER_RTL8152=y CONFIG_VIDEO=y + CONFIG_DISPLAY=y CONFIG_VIDEO_ROCKCHIP=y -CONFIG_DISPLAY_ROCKCHIP_EDP=y +CONFIG_DISPLAY_ROCKCHIP_MIPI=y @@ -232,5 +232,5 @@ index 211faf8fa89..7866e5266d2 100644 #define FCLK_CM0S 190 -- -2.39.1 +2.39.2 diff --git a/rpi-Copy-properties-from-firmware-DT-to-loaded-DT.patch b/rpi-Copy-properties-from-firmware-DT-to-loaded-DT.patch index 7ef65bc..2a78fe5 100644 --- a/rpi-Copy-properties-from-firmware-DT-to-loaded-DT.patch +++ b/rpi-Copy-properties-from-firmware-DT-to-loaded-DT.patch @@ -1,98 +1,7 @@ -From patchwork Wed Aug 10 12:39:26 2022 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Antoine Mazeas -X-Patchwork-Id: 1665242 -X-Patchwork-Delegate: matthias.bgg@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: bilbo.ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=karthanis.net header.i=@karthanis.net - header.a=rsa-sha256 header.s=20191114 header.b=mcrC/rnn; - dkim-atps=neutral -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (2048 bits)) - (No client certificate requested) - by bilbo.ozlabs.org (Postfix) with ESMTPS id 4M2qkM6g8Vz9ryY - for ; Wed, 10 Aug 2022 22:58:35 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id CB5EF842A3; - Wed, 10 Aug 2022 14:58:11 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=karthanis.net -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=karthanis.net header.i=@karthanis.net - header.b="mcrC/rnn"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 4FB14841DC; Wed, 10 Aug 2022 14:40:46 +0200 (CEST) -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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 -Received: from smtp-42a9.mail.infomaniak.ch (smtp-42a9.mail.infomaniak.ch - [IPv6:2001:1600:3:17::42a9]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id CCC6784084 - for ; Wed, 10 Aug 2022 14:40:43 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=karthanis.net -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=antoine@karthanis.net -Received: from smtp-3-0001.mail.infomaniak.ch (unknown [10.4.36.108]) - by smtp-2-3000.mail.infomaniak.ch (Postfix) with ESMTPS id 4M2qKl3S6GzMqbyx; - Wed, 10 Aug 2022 14:40:43 +0200 (CEST) -Received: from localhost.localdomain (unknown [88.168.170.86]) - by smtp-3-0001.mail.infomaniak.ch (Postfix) with ESMTPA id 4M2qKk6qXKzlnSD1; - Wed, 10 Aug 2022 14:40:42 +0200 (CEST) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=karthanis.net; - s=20191114; t=1660135243; - bh=YF4GTVv5pqqW0OMrNZFlf0WHnELr1KiKKA02ok/znf4=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=mcrC/rnnUv3FXlrllL2s9lLTjUEnTuLbiINuyrIQWr2HG3AmCcD11F7n0AypUdePp - 2XfG1PnZalJa2v3m6/DUWsz6B/cqmYo31h/6HpFeJ4g2i1pEZar7cC+9oScmbjJptV - w2oDsFHzyK2oWHUMGFJ4N6bboD8kq3z4WLaH2vrQ= +From 6d0642494993f39440a4d6e95f88c0456ee6d689 Mon Sep 17 00:00:00 2001 From: Antoine Mazeas -To: u-boot@lists.denx.de -Cc: Antoine Mazeas , - Sjoerd Simons -Subject: [PATCH 1/2] rpi: Copy properties from firmware dtb to the loaded dtb -Date: Wed, 10 Aug 2022 14:39:26 +0200 -Message-Id: <20220810123927.2567677-2-antoine@karthanis.net> -X-Mailer: git-send-email 2.37.1 -In-Reply-To: <20220810123927.2567677-1-antoine@karthanis.net> -References: <20220810123927.2567677-1-antoine@karthanis.net> -MIME-Version: 1.0 -X-Mailman-Approved-At: Wed, 10 Aug 2022 14:58:03 +0200 -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.6 at phobos.denx.de -X-Virus-Status: Clean +Date: Fri, 19 Aug 2022 10:56:45 +0200 +Subject: [PATCH 1/3] rpi: Copy properties from firmware dtb to the loaded dtb The RPI firmware adjusts several property values in the dtb it passes to u-boot depending on the board/SoC revision. Inherit some of these @@ -110,15 +19,18 @@ when u-boot loads a dtb itself. Specificaly copy: of that. Signed-off-by: Sjoerd Simons +Signed-off-by: Antoine Mazeas +Reviewed-by: Simon Glass +Signed-off-by: Peter Robinson --- board/raspberrypi/rpi/rpi.c | 48 +++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c -index 17b8108cc8..28b6f52506 100644 +index 8603c93de77..d4b059c6204 100644 --- a/board/raspberrypi/rpi/rpi.c +++ b/board/raspberrypi/rpi/rpi.c -@@ -504,10 +504,58 @@ void *board_fdt_blob_setup(int *err) +@@ -503,10 +503,58 @@ void *board_fdt_blob_setup(int *err) return (void *)fw_dtb_pointer; } @@ -177,114 +89,30 @@ index 17b8108cc8..28b6f52506 100644 node = fdt_node_offset_by_compatible(blob, -1, "simple-framebuffer"); if (node < 0) fdt_simplefb_add_node(blob); +-- +2.39.2 -From patchwork Wed Aug 10 12:39:27 2022 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Antoine Mazeas -X-Patchwork-Id: 1665243 -X-Patchwork-Delegate: matthias.bgg@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@bilbo.ozlabs.org -Authentication-Results: bilbo.ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=karthanis.net header.i=@karthanis.net - header.a=rsa-sha256 header.s=20191114 header.b=3Vltv92i; - dkim-atps=neutral -Authentication-Results: ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=) -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (2048 bits)) - (No client certificate requested) - by bilbo.ozlabs.org (Postfix) with ESMTPS id 4M2qkb5v6sz9ryY - for ; Wed, 10 Aug 2022 22:58:47 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 2E6C784564; - Wed, 10 Aug 2022 14:58:17 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=karthanis.net -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=karthanis.net header.i=@karthanis.net - header.b="3Vltv92i"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 274CF8415B; Wed, 10 Aug 2022 14:40:48 +0200 (CEST) -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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 -Received: from smtp-42a9.mail.infomaniak.ch (smtp-42a9.mail.infomaniak.ch - [84.16.66.169]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id DAC58841A4 - for ; Wed, 10 Aug 2022 14:40:45 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=karthanis.net -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=antoine@karthanis.net -Received: from smtp-3-0001.mail.infomaniak.ch (unknown [10.4.36.108]) - by smtp-2-3000.mail.infomaniak.ch (Postfix) with ESMTPS id 4M2qKn4VzjzMqnFS; - Wed, 10 Aug 2022 14:40:45 +0200 (CEST) -Received: from localhost.localdomain (unknown [88.168.170.86]) - by smtp-3-0001.mail.infomaniak.ch (Postfix) with ESMTPA id 4M2qKn1TBqzlnSCc; - Wed, 10 Aug 2022 14:40:45 +0200 (CEST) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=karthanis.net; - s=20191114; t=1660135245; - bh=f61vvBG7E2UozLHxeE7zghMr3kXQzBW+5PpzEyEGYJU=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=3Vltv92i/KGKD06qHi+zyrqGwfJWUvdwHMojKKH7OqswhScJTxhUbGq6MnPrCqWsn - QgB117zr++vQSy1jxV2vZIFLxMC3j8AZb4l3ktmU7FiPp7AUB6AqAzv+tUrYeS3nz4 - LQ0mJS4s1jk1k0WWAK3/WGdOyUAo8ZWw5oiBHUvk= +From 4a45086c0ca874858d4064ee26d45199bcab494d Mon Sep 17 00:00:00 2001 From: Antoine Mazeas -To: u-boot@lists.denx.de -Cc: Antoine Mazeas -Subject: [PATCH 2/2] rpi: Copy eth PHY address from fw DT to loaded DT -Date: Wed, 10 Aug 2022 14:39:27 +0200 -Message-Id: <20220810123927.2567677-3-antoine@karthanis.net> -X-Mailer: git-send-email 2.37.1 -In-Reply-To: <20220810123927.2567677-1-antoine@karthanis.net> -References: <20220810123927.2567677-1-antoine@karthanis.net> -MIME-Version: 1.0 -X-Mailman-Approved-At: Wed, 10 Aug 2022 14:58:03 +0200 -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.6 at phobos.denx.de -X-Virus-Status: Clean +Date: Fri, 19 Aug 2022 10:56:46 +0200 +Subject: [PATCH 2/3] rpi: Copy eth PHY address from fw DT to loaded DT -Some Raspberry Pi 400 boards, specifically rev 1.1, have a different address for the ethernet PHY device than what is provided by the kernel DTB. The correct address is provided by the firmware, so we should carry it over into the loaded device tree so that ethernet works on such boards. +Some Raspberry Pi 400 boards, specifically rev 1.1, have a different +address for the ethernet PHY device than what is provided by the kernel +DTB. The correct address is provided by the firmware, so we should carry +it over into the loaded device tree so that ethernet works on such boards. Signed-off-by: Antoine Mazeas +Signed-off-by: Peter Robinson --- board/raspberrypi/rpi/rpi.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c -index 28b6f52506..793fd1aa30 100644 +index d4b059c6204..fc1fffedfb7 100644 --- a/board/raspberrypi/rpi/rpi.c +++ b/board/raspberrypi/rpi/rpi.c -@@ -548,6 +548,9 @@ void update_fdt_from_fw(void *fdt, void *fw_fdt) +@@ -547,6 +547,9 @@ void update_fdt_from_fw(void *fdt, void *fw_fdt) /* kernel address randomisation seed as provided by the firmware */ copy_property(fdt, fw_fdt, "/chosen", "kaslr-seed"); @@ -294,3 +122,6 @@ index 28b6f52506..793fd1aa30 100644 } int ft_board_setup(void *blob, struct bd_info *bd) +-- +2.39.2 + diff --git a/rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch b/rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch index c156e4d..fd032fe 100644 --- a/rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch +++ b/rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch @@ -1,7 +1,13 @@ -From f10f94831450671a77f61fe413b4a57459963860 Mon Sep 17 00:00:00 2001 +From 52b75976133683dc9fe66e8ad35127125f938bed Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Mon, 10 Aug 2020 22:20:29 +0100 -Subject: [PATCH] rpi: Use firmware provided device tree +Date: Tue, 28 Feb 2023 12:04:34 +0000 +Subject: [PATCH 2/2] rpi: Use OF_BOARD rather than OF_EMBED + +The use of OF_EMBED isn't recommended for standard use and the OF_BOARD +is actually a better fit for the Raspberry Pi as the prior firmware +provides a DT that can be used by U-Boot and the subsequent OS too, but +it still allows the loading of a DT from disk as well if users wish +to use the upstream kernel DT. Signed-off-by: Peter Robinson --- @@ -10,14 +16,17 @@ Signed-off-by: Peter Robinson configs/rpi_3_32b_defconfig | 2 +- configs/rpi_3_b_plus_defconfig | 2 +- configs/rpi_3_defconfig | 2 +- + configs/rpi_4_32b_defconfig | 1 + + configs/rpi_4_defconfig | 1 + + configs/rpi_arm64_defconfig | 1 + configs/rpi_defconfig | 2 +- - 6 files changed, 6 insertions(+), 6 deletions(-) + 9 files changed, 9 insertions(+), 6 deletions(-) diff --git a/configs/rpi_0_w_defconfig b/configs/rpi_0_w_defconfig -index bba5e12b12..0241f4c6d3 100644 +index 5249b29d76c..8c217848ca2 100644 --- a/configs/rpi_0_w_defconfig +++ b/configs/rpi_0_w_defconfig -@@ -17,7 +17,7 @@ CONFIG_CMD_GPIO=y +@@ -23,7 +23,7 @@ CONFIG_CMD_GPIO=y CONFIG_CMD_MMC=y CONFIG_CMD_USB=y CONFIG_CMD_FS_UUID=y @@ -27,10 +36,10 @@ index bba5e12b12..0241f4c6d3 100644 CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y diff --git a/configs/rpi_2_defconfig b/configs/rpi_2_defconfig -index 1c2bbb29ce..9573e475f4 100644 +index 154284765f4..bfc5679fb7e 100644 --- a/configs/rpi_2_defconfig +++ b/configs/rpi_2_defconfig -@@ -17,7 +17,7 @@ CONFIG_CMD_GPIO=y +@@ -24,7 +24,7 @@ CONFIG_CMD_GPIO=y CONFIG_CMD_MMC=y CONFIG_CMD_USB=y CONFIG_CMD_FS_UUID=y @@ -40,10 +49,10 @@ index 1c2bbb29ce..9573e475f4 100644 CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y diff --git a/configs/rpi_3_32b_defconfig b/configs/rpi_3_32b_defconfig -index b8a3d17f43..252df994e6 100644 +index ef1f25d2ad7..54cdcee980a 100644 --- a/configs/rpi_3_32b_defconfig +++ b/configs/rpi_3_32b_defconfig -@@ -18,7 +18,7 @@ CONFIG_CMD_GPIO=y +@@ -23,7 +23,7 @@ CONFIG_CMD_GPIO=y CONFIG_CMD_MMC=y CONFIG_CMD_USB=y CONFIG_CMD_FS_UUID=y @@ -53,10 +62,10 @@ index b8a3d17f43..252df994e6 100644 CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y diff --git a/configs/rpi_3_b_plus_defconfig b/configs/rpi_3_b_plus_defconfig -index 4c361438fa..3b2996a2f9 100644 +index 154615d78a1..3008c7a1c18 100644 --- a/configs/rpi_3_b_plus_defconfig +++ b/configs/rpi_3_b_plus_defconfig -@@ -18,7 +18,7 @@ CONFIG_CMD_GPIO=y +@@ -22,7 +22,7 @@ CONFIG_CMD_GPIO=y CONFIG_CMD_MMC=y CONFIG_CMD_USB=y CONFIG_CMD_FS_UUID=y @@ -66,10 +75,10 @@ index 4c361438fa..3b2996a2f9 100644 CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y diff --git a/configs/rpi_3_defconfig b/configs/rpi_3_defconfig -index 9b281a4f15..1e9ee6122e 100644 +index f0cf7f8e236..f7b9108ba00 100644 --- a/configs/rpi_3_defconfig +++ b/configs/rpi_3_defconfig -@@ -18,7 +18,7 @@ CONFIG_CMD_GPIO=y +@@ -22,7 +22,7 @@ CONFIG_CMD_GPIO=y CONFIG_CMD_MMC=y CONFIG_CMD_USB=y CONFIG_CMD_FS_UUID=y @@ -78,11 +87,47 @@ index 9b281a4f15..1e9ee6122e 100644 CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y +diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig +index 713b2ee231c..fa20ab767fe 100644 +--- a/configs/rpi_4_32b_defconfig ++++ b/configs/rpi_4_32b_defconfig +@@ -24,6 +24,7 @@ CONFIG_CMD_MMC=y + CONFIG_CMD_PCI=y + CONFIG_CMD_USB=y + CONFIG_CMD_FS_UUID=y ++CONFIG_OF_BOARD=y + CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" + CONFIG_SYS_RELOC_GD_ENV_ADDR=y + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y +diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig +index 24f70b14fe8..741d4dbbbf4 100644 +--- a/configs/rpi_4_defconfig ++++ b/configs/rpi_4_defconfig +@@ -24,6 +24,7 @@ CONFIG_CMD_MMC=y + CONFIG_CMD_PCI=y + CONFIG_CMD_USB=y + CONFIG_CMD_FS_UUID=y ++CONFIG_OF_BOARD=y + CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" + CONFIG_SYS_RELOC_GD_ENV_ADDR=y + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y +diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig +index 1d1ff12a58c..5e1195dd786 100644 +--- a/configs/rpi_arm64_defconfig ++++ b/configs/rpi_arm64_defconfig +@@ -23,6 +23,7 @@ CONFIG_CMD_MMC=y + CONFIG_CMD_PCI=y + CONFIG_CMD_USB=y + CONFIG_CMD_FS_UUID=y ++CONFIG_OF_BOARD=y + CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y + CONFIG_TFTP_TSIZE=y diff --git a/configs/rpi_defconfig b/configs/rpi_defconfig -index b5ad53c37b..223fc03275 100644 +index 28b92b14456..1504093eddf 100644 --- a/configs/rpi_defconfig +++ b/configs/rpi_defconfig -@@ -17,7 +17,7 @@ CONFIG_CMD_GPIO=y +@@ -23,7 +23,7 @@ CONFIG_CMD_GPIO=y CONFIG_CMD_MMC=y CONFIG_CMD_USB=y CONFIG_CMD_FS_UUID=y @@ -92,5 +137,5 @@ index b5ad53c37b..223fc03275 100644 CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y -- -2.26.2 +2.39.2 diff --git a/rpi-Update-the-RPi-Zero-2W-DT-filename.patch b/rpi-Update-the-RPi-Zero-2W-DT-filename.patch new file mode 100644 index 0000000..b53c050 --- /dev/null +++ b/rpi-Update-the-RPi-Zero-2W-DT-filename.patch @@ -0,0 +1,29 @@ +From 0e8c94054fd80535e868900deb978a9a1ebcab67 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Tue, 28 Feb 2023 10:17:26 +0000 +Subject: [PATCH 3/3] rpi: Update the RPi Zero 2W DT filename + +Update the Raspberry Pi Zero 2W device tree file +name to match what landed upstream. + +Signed-off-by: Peter Robinson +--- + board/raspberrypi/rpi/rpi.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c +index fc1fffedfb7..1057ebb9948 100644 +--- a/board/raspberrypi/rpi/rpi.c ++++ b/board/raspberrypi/rpi/rpi.c +@@ -158,7 +158,7 @@ static const struct rpi_model rpi_models_new_scheme[] = { + }, + [0x12] = { + "Zero 2 W", +- DTB_DIR "bcm2837-rpi-zero-2.dtb", ++ DTB_DIR "bcm2837-rpi-zero-2-w.dtb", + false, + }, + [0x13] = { +-- +2.39.2 + diff --git a/sources b/sources index 766a5a0..05b4824 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2023.04-rc2.tar.bz2) = 7de3513fc07ce67c11144cadccfa7e21d2de7dbb22d051822a5890396caf2109f5ee12ebdc8bb1c3f77bec26fee032bae2c2e243e8f3a0cc390057f700d76cf0 +SHA512 (u-boot-2023.04-rc4.tar.bz2) = b40349d03abcbc0eb9061046071ff29578bf83007e70a0a57518763c1ef4b8a60c9c691c9921ac4d76135910a8053a4271a6d92346649d11d01b6997c4b09254 diff --git a/uboot-tools.spec b/uboot-tools.spec index 5c88e27..4ca6fa6 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc2 +%global candidate rc4 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2023.04 -Release: 0.2%{?candidate:.%{candidate}}%{?dist} +Release: 0.3%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -27,8 +27,9 @@ Patch3: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch Patch4: rpi-fallback-to-max-clock-for-mmc.patch Patch5: rpi-bcm2835_sdhost-firmware-managed-clock.patch Patch6: rpi-Copy-properties-from-firmware-DT-to-loaded-DT.patch +Patch7: rpi-Update-the-RPi-Zero-2W-DT-filename.patch # Rockchips improvements -Patch7: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch +Patch8: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch BuildRequires: bc BuildRequires: bison @@ -211,6 +212,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Tue Mar 14 2023 Peter Robinson - 2023.04-0.3.rc4 +- Update to 2023.04 RC4 + * Fri Feb 17 2023 Peter Robinson - 2023.04-0.2.rc2 - Update to 2023.04 RC2 From 33708bf7f4c75a4c7aa353c0f06fab1d7852164b Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sun, 2 Apr 2023 22:33:04 +0100 Subject: [PATCH 144/271] 2023.04 RC5 --- ...rrect-constant-name-in-RAM-init-code.patch | 136 +++++++++++ ...erties-from-firmware-DT-to-loaded-DT.patch | 127 ---------- rpi-Update-the-RPi-Zero-2W-DT-filename.patch | 29 --- ...cm2835_sdhost-firmware-managed-clock.patch | 228 ------------------ rpi-fallback-to-max-clock-for-mmc.patch | 77 ------ sources | 2 +- uboot-tools.spec | 18 +- 7 files changed, 148 insertions(+), 469 deletions(-) create mode 100644 rockchip-Fix-incorrect-constant-name-in-RAM-init-code.patch delete mode 100644 rpi-Copy-properties-from-firmware-DT-to-loaded-DT.patch delete mode 100644 rpi-Update-the-RPi-Zero-2W-DT-filename.patch delete mode 100644 rpi-bcm2835_sdhost-firmware-managed-clock.patch delete mode 100644 rpi-fallback-to-max-clock-for-mmc.patch diff --git a/rockchip-Fix-incorrect-constant-name-in-RAM-init-code.patch b/rockchip-Fix-incorrect-constant-name-in-RAM-init-code.patch new file mode 100644 index 0000000..381105d --- /dev/null +++ b/rockchip-Fix-incorrect-constant-name-in-RAM-init-code.patch @@ -0,0 +1,136 @@ +From patchwork Thu Mar 30 21:51:14 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: David Sebek +X-Patchwork-Id: 1763526 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +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=) +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=20210112 header.b=Ur2Foz7G; + dkim-atps=neutral +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 (P-384)) + (No client certificate requested) + by legolas.ozlabs.org (Postfix) with ESMTPS id 4PnccK6Hkyz1yY8 + for ; Fri, 31 Mar 2023 08:53:21 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 504A385F3F; + Thu, 30 Mar 2023 23:53:19 +0200 (CEST) +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="Ur2Foz7G"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id D179285F40; Thu, 30 Mar 2023 23:52:42 +0200 (CEST) +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,SPF_HELO_NONE, + SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-qv1-xf36.google.com (mail-qv1-xf36.google.com + [IPv6:2607:f8b0:4864:20::f36]) + (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 2033985F3F + for ; Thu, 30 Mar 2023 23:52:38 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=gmail.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=dasebek@gmail.com +Received: by mail-qv1-xf36.google.com with SMTP id kr22so1200478qvb.5 + for ; Thu, 30 Mar 2023 14:52:38 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20210112; t=1680213157; + h=content-transfer-encoding:mime-version:message-id:date:subject:cc + :to:from:from:to:cc:subject:date:message-id:reply-to; + bh=WlhaDeGiQSnfOs2/9s0KCU263BnBJ6NBdaytsU9sg7g=; + b=Ur2Foz7G2I7plUDBFoUSZnvUqm1qe6isgeZchzTJizjuyScb9aIr+l4Y7kNOOQGdc/ + i8jKZkeikuONySQd2OO0XRKZNsG/OFDotB5PuxnuzojmdEHLUeXPR4vVr2U7w1evC0FV + WsRdQjKNHExVuqC6pCdfDypiLeHxlI3xjzZAX1ZdZ3vL1HpjEdOz5F+LkX4/q2n+k8hQ + 6kj71uph8Vc1tfmdNLxaVOCuSLjBjtKSvwQwndqfZhp55MBSwZOBC7E79tzprByA+2jm + gPusk25eDFTS4KdF99vyViFflzZcdCOd/3aivHFm22w8656KQMnTYqdcg+FVhbWCvXMB + boWw== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20210112; t=1680213157; + h=content-transfer-encoding:mime-version:message-id:date:subject:cc + :to:from:x-gm-message-state:from:to:cc:subject:date:message-id + :reply-to; + bh=WlhaDeGiQSnfOs2/9s0KCU263BnBJ6NBdaytsU9sg7g=; + b=ju+uXKxSg4L6GOqfy8tiSrBoKUIlAScW/CP1ukEGXtEXfQBiFwcqNzCc3Sj6j9Bdg1 + oLjqUkd0VXXt/hSpdFlSPOP8eqY9tHRLv8BJkRjlIuuCJDRNEAUUEeQhs9Q3EqltT1r7 + IPyM/TrkpuUWbr0PYVKQy2MUFTM1BK1UnqrJ9nKdQ21P+IbMhFz3LkTGbR0mIyW3aBws + Lafp9pABfuq4IomjoHD04o2f3M499dxlzmeSWM5VM4G6Jn/fDhvUZQhKU/vOdJVICUBM + eTp2laeeQo3dU45NqTZAuHRExqWvXVfhRPCOjVhv4NGd1ZhXTyJlw58Sq8t1kogMaZYZ + Ig8g== +X-Gm-Message-State: AAQBX9dHjWPG3k4IU3/uooZuMWlvPPp07Gf3iAuGftQx7/rI9tIH2/9E + 2RpZKACqRmNgqLHljBDY0Ikog6vfLUjUCQ== +X-Google-Smtp-Source: + AKy350ZwCjCcvTc/JU/KbyOydxFmq/ZQNkIyCK/MsKcufgGLOKBKj9hxPMBrRLLgXzD6BdzMNiAVSA== +X-Received: by 2002:ad4:5c6b:0:b0:5ce:7b40:8999 with SMTP id + i11-20020ad45c6b000000b005ce7b408999mr45081108qvh.22.1680213156729; + Thu, 30 Mar 2023 14:52:36 -0700 (PDT) +Received: from pc4.lan ([2605:a601:a620:5c00::d89]) + by smtp.gmail.com with ESMTPSA id + k5-20020a0cebc5000000b005dd8b9345d3sm129269qvq.107.2023.03.30.14.52.36 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Thu, 30 Mar 2023 14:52:36 -0700 (PDT) +From: David Sebek +To: u-boot@lists.denx.de +Cc: jagan@amarulasolutions.com, kever.yang@rock-chips.com, + David Sebek +Subject: [PATCH 1/1] rockchip: Fix incorrect constant name in RAM init code +Date: Thu, 30 Mar 2023 17:51:14 -0400 +Message-Id: <20230330215114.248481-1-dasebek@gmail.com> +X-Mailer: git-send-email 2.40.0 +MIME-Version: 1.0 +X-Mailman-Approved-At: Thu, 30 Mar 2023 23:53:17 +0200 +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 + +A condition in the rk3399 RAM initialization code used the old +CONFIG_RAM_RK3399_LPDDR4 constant name. This commit changes the +condition to use the correct CONFIG_RAM_ROCKCHIP_LPDDR4 constant. +Reviewed-by: Simon Glass +--- + drivers/ram/rockchip/sdram_rk3399.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/ram/rockchip/sdram_rk3399.c b/drivers/ram/rockchip/sdram_rk3399.c +index b1fea04e84..963a05c244 100644 +--- a/drivers/ram/rockchip/sdram_rk3399.c ++++ b/drivers/ram/rockchip/sdram_rk3399.c +@@ -2954,7 +2954,7 @@ static int sdram_init(struct dram_info *dram, + params->ch[ch].cap_info.rank = rank; + } + +-#if defined(CONFIG_RAM_RK3399_LPDDR4) ++#if defined(CONFIG_RAM_ROCKCHIP_LPDDR4) + /* LPDDR4 needs to be trained at 400MHz */ + lpddr4_set_rate(dram, params, 0); + params->base.ddr_freq = dfs_cfgs_lpddr4[0].base.ddr_freq / MHz; diff --git a/rpi-Copy-properties-from-firmware-DT-to-loaded-DT.patch b/rpi-Copy-properties-from-firmware-DT-to-loaded-DT.patch deleted file mode 100644 index 2a78fe5..0000000 --- a/rpi-Copy-properties-from-firmware-DT-to-loaded-DT.patch +++ /dev/null @@ -1,127 +0,0 @@ -From 6d0642494993f39440a4d6e95f88c0456ee6d689 Mon Sep 17 00:00:00 2001 -From: Antoine Mazeas -Date: Fri, 19 Aug 2022 10:56:45 +0200 -Subject: [PATCH 1/3] rpi: Copy properties from firmware dtb to the loaded dtb - -The RPI firmware adjusts several property values in the dtb it passes -to u-boot depending on the board/SoC revision. Inherit some of these -when u-boot loads a dtb itself. Specificaly copy: - -* /model: The firmware provides a more specific string -* /memreserve: The firmware defines a reserved range, better keep it -* emmc2bus and pcie0 dma-ranges: The C0T revision of the bcm2711 Soc (as - present on rpi 400 and some rpi 4B boards) has different values for - these then the B0T revision. So these need to be adjusted to boot on - these boards -* blconfig: The firmware defines the memory area where the blconfig - stored. Copy those over so it can be enabled. -* /chosen/kaslr-seed: The firmware generates a kaslr seed, take advantage - of that. - -Signed-off-by: Sjoerd Simons -Signed-off-by: Antoine Mazeas -Reviewed-by: Simon Glass -Signed-off-by: Peter Robinson ---- - board/raspberrypi/rpi/rpi.c | 48 +++++++++++++++++++++++++++++++++++++ - 1 file changed, 48 insertions(+) - -diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c -index 8603c93de77..d4b059c6204 100644 ---- a/board/raspberrypi/rpi/rpi.c -+++ b/board/raspberrypi/rpi/rpi.c -@@ -503,10 +503,58 @@ void *board_fdt_blob_setup(int *err) - return (void *)fw_dtb_pointer; - } - -+int copy_property(void *dst, void *src, char *path, char *property) -+{ -+ int dst_offset, src_offset; -+ const fdt32_t *prop; -+ int len; -+ -+ src_offset = fdt_path_offset(src, path); -+ dst_offset = fdt_path_offset(dst, path); -+ -+ if (src_offset < 0 || dst_offset < 0) -+ return -1; -+ -+ prop = fdt_getprop(src, src_offset, property, &len); -+ if (!prop) -+ return -1; -+ -+ return fdt_setprop(dst, dst_offset, property, prop, len); -+} -+ -+/* Copy tweaks from the firmware dtb to the loaded dtb */ -+void update_fdt_from_fw(void *fdt, void *fw_fdt) -+{ -+ /* Using dtb from firmware directly; leave it alone */ -+ if (fdt == fw_fdt) -+ return; -+ -+ /* The firmware provides a more precie model; so copy that */ -+ copy_property(fdt, fw_fdt, "/", "model"); -+ -+ /* memory reserve as suggested by the firmware */ -+ copy_property(fdt, fw_fdt, "/", "memreserve"); -+ -+ /* Adjust dma-ranges for the SD card and PCI bus as they can depend on -+ * the SoC revision -+ */ -+ copy_property(fdt, fw_fdt, "emmc2bus", "dma-ranges"); -+ copy_property(fdt, fw_fdt, "pcie0", "dma-ranges"); -+ -+ /* Bootloader configuration template exposes as nvmem */ -+ if (copy_property(fdt, fw_fdt, "blconfig", "reg") == 0) -+ copy_property(fdt, fw_fdt, "blconfig", "status"); -+ -+ /* kernel address randomisation seed as provided by the firmware */ -+ copy_property(fdt, fw_fdt, "/chosen", "kaslr-seed"); -+} -+ - int ft_board_setup(void *blob, struct bd_info *bd) - { - int node; - -+ update_fdt_from_fw(blob, (void *)fw_dtb_pointer); -+ - node = fdt_node_offset_by_compatible(blob, -1, "simple-framebuffer"); - if (node < 0) - fdt_simplefb_add_node(blob); --- -2.39.2 - -From 4a45086c0ca874858d4064ee26d45199bcab494d Mon Sep 17 00:00:00 2001 -From: Antoine Mazeas -Date: Fri, 19 Aug 2022 10:56:46 +0200 -Subject: [PATCH 2/3] rpi: Copy eth PHY address from fw DT to loaded DT - -Some Raspberry Pi 400 boards, specifically rev 1.1, have a different -address for the ethernet PHY device than what is provided by the kernel -DTB. The correct address is provided by the firmware, so we should carry -it over into the loaded device tree so that ethernet works on such boards. - -Signed-off-by: Antoine Mazeas -Signed-off-by: Peter Robinson ---- - board/raspberrypi/rpi/rpi.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c -index d4b059c6204..fc1fffedfb7 100644 ---- a/board/raspberrypi/rpi/rpi.c -+++ b/board/raspberrypi/rpi/rpi.c -@@ -547,6 +547,9 @@ void update_fdt_from_fw(void *fdt, void *fw_fdt) - - /* kernel address randomisation seed as provided by the firmware */ - copy_property(fdt, fw_fdt, "/chosen", "kaslr-seed"); -+ -+ /* address of the PHY device as provided by the firmware */ -+ copy_property(fdt, fw_fdt, "ethernet0/mdio@e14/ethernet-phy@1", "reg"); - } - - int ft_board_setup(void *blob, struct bd_info *bd) --- -2.39.2 - diff --git a/rpi-Update-the-RPi-Zero-2W-DT-filename.patch b/rpi-Update-the-RPi-Zero-2W-DT-filename.patch deleted file mode 100644 index b53c050..0000000 --- a/rpi-Update-the-RPi-Zero-2W-DT-filename.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 0e8c94054fd80535e868900deb978a9a1ebcab67 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Tue, 28 Feb 2023 10:17:26 +0000 -Subject: [PATCH 3/3] rpi: Update the RPi Zero 2W DT filename - -Update the Raspberry Pi Zero 2W device tree file -name to match what landed upstream. - -Signed-off-by: Peter Robinson ---- - board/raspberrypi/rpi/rpi.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c -index fc1fffedfb7..1057ebb9948 100644 ---- a/board/raspberrypi/rpi/rpi.c -+++ b/board/raspberrypi/rpi/rpi.c -@@ -158,7 +158,7 @@ static const struct rpi_model rpi_models_new_scheme[] = { - }, - [0x12] = { - "Zero 2 W", -- DTB_DIR "bcm2837-rpi-zero-2.dtb", -+ DTB_DIR "bcm2837-rpi-zero-2-w.dtb", - false, - }, - [0x13] = { --- -2.39.2 - diff --git a/rpi-bcm2835_sdhost-firmware-managed-clock.patch b/rpi-bcm2835_sdhost-firmware-managed-clock.patch deleted file mode 100644 index d1c60e8..0000000 --- a/rpi-bcm2835_sdhost-firmware-managed-clock.patch +++ /dev/null @@ -1,228 +0,0 @@ -From f3a870bfa075fb880f5e018a0a5ae6f27ca8be49 Mon Sep 17 00:00:00 2001 -From: Vincent Fazio -Date: Mon, 13 Sep 2021 13:34:45 -0500 -Subject: [PATCH] mmc: bcm2835-host: let firmware manage the clock - -Newer firmware supports managing the sdhost clock divisor, so leverage -this feature if it is available. - -SET_SDHOST_CLOCK is largely undocumented except for its usage within the -Linux kernel, which this change is based on. - -https://github.com/raspberrypi/linux/commit/3cd16c39c718e2dda7885c4ed7a20118aed12524 - -Signed-off-by: Vincent Fazio ---- - arch/arm/mach-bcm283x/include/mach/mbox.h | 18 ++++++++ - arch/arm/mach-bcm283x/include/mach/msg.h | 10 +++++ - arch/arm/mach-bcm283x/msg.c | 30 +++++++++++++ - drivers/mmc/bcm2835_sdhost.c | 53 ++++++++++++++--------- - 4 files changed, 90 insertions(+), 21 deletions(-) - -diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h -index 7dcac583cc4..9b1943fcfc4 100644 ---- a/arch/arm/mach-bcm283x/include/mach/mbox.h -+++ b/arch/arm/mach-bcm283x/include/mach/mbox.h -@@ -252,6 +252,24 @@ struct bcm2835_mbox_tag_get_clock_rate { - } body; - }; - -+#define BCM2835_MBOX_TAG_SET_SDHOST_CLOCK 0x00038042 -+ -+struct bcm2835_mbox_tag_set_sdhost_clock { -+ struct bcm2835_mbox_tag_hdr tag_hdr; -+ union { -+ struct { -+ u32 rate_hz; -+ u32 rate_1; -+ u32 rate_2; -+ } req; -+ struct { -+ u32 rate_hz; -+ u32 rate_1; -+ u32 rate_2; -+ } resp; -+ } body; -+}; -+ - #define BCM2835_MBOX_TAG_ALLOCATE_BUFFER 0x00040001 - - struct bcm2835_mbox_tag_allocate_buffer { -diff --git a/arch/arm/mach-bcm283x/include/mach/msg.h b/arch/arm/mach-bcm283x/include/mach/msg.h -index e45c1bf010f..ab37abdb6c6 100644 ---- a/arch/arm/mach-bcm283x/include/mach/msg.h -+++ b/arch/arm/mach-bcm283x/include/mach/msg.h -@@ -22,6 +22,16 @@ int bcm2835_power_on_module(u32 module); - */ - int bcm2835_get_mmc_clock(u32 clock_id); - -+/** -+ * bcm2835_set_sdhost_clock() - determine if firmware controls sdhost cdiv -+ * -+ * @rate_hz: Input clock frequency -+ * @rate_1: Returns a clock frequency -+ * @rate_2: Returns a clock frequency -+ * @return 0 of OK, -EIO on error -+ */ -+int bcm2835_set_sdhost_clock(u32 rate_hz, u32 *rate_1, u32 *rate_2); -+ - /** - * bcm2835_get_video_size() - get the current display size - * -diff --git a/arch/arm/mach-bcm283x/msg.c b/arch/arm/mach-bcm283x/msg.c -index e2badfecb09..8c1c36a5f15 100644 ---- a/arch/arm/mach-bcm283x/msg.c -+++ b/arch/arm/mach-bcm283x/msg.c -@@ -21,6 +21,12 @@ struct msg_get_clock_rate { - u32 end_tag; - }; - -+struct msg_set_sdhost_clock { -+ struct bcm2835_mbox_hdr hdr; -+ struct bcm2835_mbox_tag_set_sdhost_clock set_sdhost_clock; -+ u32 end_tag; -+}; -+ - struct msg_query { - struct bcm2835_mbox_hdr hdr; - struct bcm2835_mbox_tag_physical_w_h physical_w_h; -@@ -111,6 +117,30 @@ int bcm2835_get_mmc_clock(u32 clock_id) - return clock_rate; - } - -+int bcm2835_set_sdhost_clock(u32 rate_hz, u32 *rate_1, u32 *rate_2) -+{ -+ ALLOC_CACHE_ALIGN_BUFFER(struct msg_set_sdhost_clock, msg_sdhost_clk, 1); -+ int ret; -+ -+ BCM2835_MBOX_INIT_HDR(msg_sdhost_clk); -+ BCM2835_MBOX_INIT_TAG(&msg_sdhost_clk->set_sdhost_clock, SET_SDHOST_CLOCK); -+ -+ msg_sdhost_clk->set_sdhost_clock.body.req.rate_hz = rate_hz; -+ msg_sdhost_clk->set_sdhost_clock.body.req.rate_1 = *rate_1; -+ msg_sdhost_clk->set_sdhost_clock.body.req.rate_2 = *rate_2; -+ -+ ret = bcm2835_mbox_call_prop(BCM2835_MBOX_PROP_CHAN, &msg_sdhost_clk->hdr); -+ if (ret) { -+ printf("bcm2835: Could not query sdhost clock rate\n"); -+ return -EIO; -+ } -+ -+ *rate_1 = msg_sdhost_clk->set_sdhost_clock.body.resp.rate_1; -+ *rate_2 = msg_sdhost_clk->set_sdhost_clock.body.resp.rate_2; -+ -+ return 0; -+} -+ - int bcm2835_get_video_size(int *widthp, int *heightp) - { - ALLOC_CACHE_ALIGN_BUFFER(struct msg_query, msg_query, 1); -diff --git a/drivers/mmc/bcm2835_sdhost.c b/drivers/mmc/bcm2835_sdhost.c -index 894dbdd6861..3a9cd6f1eb2 100644 ---- a/drivers/mmc/bcm2835_sdhost.c -+++ b/drivers/mmc/bcm2835_sdhost.c -@@ -181,6 +181,7 @@ struct bcm2835_host { - struct udevice *dev; - struct mmc *mmc; - struct bcm2835_plat *plat; -+ unsigned int firmware_sets_cdiv:1; - }; - - static void bcm2835_dumpregs(struct bcm2835_host *host) -@@ -233,7 +234,7 @@ static void bcm2835_reset_internal(struct bcm2835_host *host) - msleep(20); - host->clock = 0; - writel(host->hcfg, host->ioaddr + SDHCFG); -- writel(host->cdiv, host->ioaddr + SDCDIV); -+ writel(SDCDIV_MAX_CDIV, host->ioaddr + SDCDIV); - } - - static int bcm2835_wait_transfer_complete(struct bcm2835_host *host) -@@ -598,6 +599,7 @@ static int bcm2835_transmit(struct bcm2835_host *host) - static void bcm2835_set_clock(struct bcm2835_host *host, unsigned int clock) - { - int div; -+ u32 clock_rate[2] = { 0 }; - - /* The SDCDIV register has 11 bits, and holds (div - 2). But - * in data mode the max is 50MHz wihout a minimum, and only -@@ -620,26 +622,34 @@ static void bcm2835_set_clock(struct bcm2835_host *host, unsigned int clock) - * clock divisor at all times. - */ - -- if (clock < 100000) { -- /* Can't stop the clock, but make it as slow as possible -- * to show willing -- */ -- host->cdiv = SDCDIV_MAX_CDIV; -- writel(host->cdiv, host->ioaddr + SDCDIV); -- return; -- } -+ if (host->firmware_sets_cdiv) { -+ bcm2835_set_sdhost_clock(clock, &clock_rate[0], &clock_rate[1]); -+ clock = max(clock_rate[0], clock_rate[1]); -+ } else { -+ if (clock < 100000) { -+ /* Can't stop the clock, but make it as slow as possible -+ * to show willing -+ */ -+ host->cdiv = SDCDIV_MAX_CDIV; -+ writel(host->cdiv, host->ioaddr + SDCDIV); -+ return; -+ } - -- div = host->max_clk / clock; -- if (div < 2) -- div = 2; -- if ((host->max_clk / div) > clock) -- div++; -- div -= 2; -+ div = host->max_clk / clock; -+ if (div < 2) -+ div = 2; -+ if ((host->max_clk / div) > clock) -+ div++; -+ div -= 2; - -- if (div > SDCDIV_MAX_CDIV) -- div = SDCDIV_MAX_CDIV; -+ if (div > SDCDIV_MAX_CDIV) -+ div = SDCDIV_MAX_CDIV; -+ -+ clock = host->max_clk / (div + 2); -+ host->cdiv = div; -+ writel(host->cdiv, host->ioaddr + SDCDIV); -+ } - -- clock = host->max_clk / (div + 2); - host->mmc->clock = clock; - - /* Calibrate some delays */ -@@ -647,9 +657,6 @@ static void bcm2835_set_clock(struct bcm2835_host *host, unsigned int clock) - host->ns_per_fifo_word = (1000000000 / clock) * - ((host->mmc->card_caps & MMC_MODE_4BIT) ? 8 : 32); - -- host->cdiv = div; -- writel(host->cdiv, host->ioaddr + SDCDIV); -- - /* Set the timeout to 500ms */ - writel(host->mmc->clock / 2, host->ioaddr + SDTOUT); - } -@@ -759,6 +766,7 @@ static int bcm2835_probe(struct udevice *dev) - struct bcm2835_host *host = dev_get_priv(dev); - struct mmc *mmc = mmc_get_mmc_dev(dev); - struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev); -+ u32 clock_rate[2] = { ~0 }; - - host->dev = dev; - host->mmc = mmc; -@@ -776,6 +784,9 @@ static int bcm2835_probe(struct udevice *dev) - - host->max_clk = bcm2835_get_mmc_clock(BCM2835_MBOX_CLOCK_ID_CORE); - -+ bcm2835_set_sdhost_clock(0, &clock_rate[0], &clock_rate[1]); -+ host->firmware_sets_cdiv = (clock_rate[0] != ~0); -+ - bcm2835_add_host(host); - - dev_dbg(dev, "%s -> OK\n", __func__); diff --git a/rpi-fallback-to-max-clock-for-mmc.patch b/rpi-fallback-to-max-clock-for-mmc.patch deleted file mode 100644 index 81ee372..0000000 --- a/rpi-fallback-to-max-clock-for-mmc.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 71ba043e5c5575f3d86536acade70dab6599489b Mon Sep 17 00:00:00 2001 -From: Vincent Fazio -Date: Mon, 13 Sep 2021 11:22:30 -0500 -Subject: [PATCH] arm: rpi: fallback to max clock rate for MMC clock - -In rpi-firmware 25e2b597ebfb2495eab4816a276758dcc6ea21f1 and later, -the GET_CLOCK_RATE mailbox property was changed to return the last -value set by SET_CLOCK_RATE. - -https://github.com/raspberrypi/firmware/issues/1619#issuecomment-917025502 - -U-Boot does not call SET_CLOCK_RATE so bcm2835_get_mmc_clock will -return zero and can cause degraded MMC performance. - -Calling SET_CLOCK_RATE fixes the frequency of the clock to a specific -value and disables the firmware's clock scaling so is not an option. - -Instead, fallback to GET_MAX_CLOCK_RATE in bcm2835_get_mmc_clock if -GET_CLOCK_RATE returns zero. - -Signed-off-by: Vincent Fazio ---- - arch/arm/mach-bcm283x/include/mach/mbox.h | 2 ++ - arch/arm/mach-bcm283x/msg.c | 20 +++++++++++++++++++- - 2 files changed, 21 insertions(+), 1 deletion(-) - -diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h -index 2ae2d3d97c3..7dcac583cc4 100644 ---- a/arch/arm/mach-bcm283x/include/mach/mbox.h -+++ b/arch/arm/mach-bcm283x/include/mach/mbox.h -@@ -224,6 +224,8 @@ struct bcm2835_mbox_tag_set_power_state { - }; - - #define BCM2835_MBOX_TAG_GET_CLOCK_RATE 0x00030002 -+#define BCM2835_MBOX_TAG_GET_MAX_CLOCK_RATE 0x00030004 -+#define BCM2835_MBOX_TAG_GET_MIN_CLOCK_RATE 0x00030007 - - #define BCM2835_MBOX_CLOCK_ID_EMMC 1 - #define BCM2835_MBOX_CLOCK_ID_UART 2 -diff --git a/arch/arm/mach-bcm283x/msg.c b/arch/arm/mach-bcm283x/msg.c -index 347aece3cd8..e2badfecb09 100644 ---- a/arch/arm/mach-bcm283x/msg.c -+++ b/arch/arm/mach-bcm283x/msg.c -@@ -75,6 +75,7 @@ int bcm2835_get_mmc_clock(u32 clock_id) - { - ALLOC_CACHE_ALIGN_BUFFER(struct msg_get_clock_rate, msg_clk, 1); - int ret; -+ u32 clock_rate = 0; - - ret = bcm2835_power_on_module(BCM2835_MBOX_POWER_DEVID_SDHCI); - if (ret) -@@ -90,7 +91,24 @@ int bcm2835_get_mmc_clock(u32 clock_id) - return -EIO; - } - -- return msg_clk->get_clock_rate.body.resp.rate_hz; -+ clock_rate = msg_clk->get_clock_rate.body.resp.rate_hz; -+ -+ if (clock_rate == 0) -+ { -+ BCM2835_MBOX_INIT_HDR(msg_clk); -+ BCM2835_MBOX_INIT_TAG(&msg_clk->get_clock_rate, GET_MAX_CLOCK_RATE); -+ msg_clk->get_clock_rate.body.req.clock_id = clock_id; -+ -+ ret = bcm2835_mbox_call_prop(BCM2835_MBOX_PROP_CHAN, &msg_clk->hdr); -+ if (ret) { -+ printf("bcm2835: Could not query max eMMC clock rate\n"); -+ return -EIO; -+ } -+ -+ clock_rate = msg_clk->get_clock_rate.body.resp.rate_hz; -+ } -+ -+ return clock_rate; - } - - int bcm2835_get_video_size(int *widthp, int *heightp) diff --git a/sources b/sources index 05b4824..154228d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2023.04-rc4.tar.bz2) = b40349d03abcbc0eb9061046071ff29578bf83007e70a0a57518763c1ef4b8a60c9c691c9921ac4d76135910a8053a4271a6d92346649d11d01b6997c4b09254 +SHA512 (u-boot-2023.04-rc5.tar.bz2) = e953585d3b59f53aec1e17179fe5c84cbc56d5a5150815aaf9b01a73dc6384a9cbe89e6848f8c4fd85c00bf61de4487018fa6df9411caff2f0c9a8a175a5dd28 diff --git a/uboot-tools.spec b/uboot-tools.spec index 4ca6fa6..42ac2eb 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc4 +%global candidate rc5 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2023.04 -Release: 0.3%{?candidate:.%{candidate}}%{?dist} +Release: 0.4%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -24,12 +24,9 @@ Patch2: smbios-Simplify-reporting-of-unknown-values.patch # Board fixes and enablement # RPi - uses RPI firmware device tree for HAT support Patch3: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch -Patch4: rpi-fallback-to-max-clock-for-mmc.patch -Patch5: rpi-bcm2835_sdhost-firmware-managed-clock.patch -Patch6: rpi-Copy-properties-from-firmware-DT-to-loaded-DT.patch -Patch7: rpi-Update-the-RPi-Zero-2W-DT-filename.patch # Rockchips improvements -Patch8: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch +Patch5: rockchip-Fix-incorrect-constant-name-in-RAM-init-code.patch +Patch6: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch BuildRequires: bc BuildRequires: bison @@ -50,6 +47,7 @@ BuildRequires: swig %if %{with toolsonly} %ifarch aarch64 BuildRequires: arm-trusted-firmware-armv8 +BuildRequires: python3-pyelftools %endif %endif Requires: dtc @@ -107,6 +105,7 @@ do if [[ " ${rk3399[*]} " == *" $board "* ]]; then echo "Board: $board using rk3399" cp /usr/share/arm-trusted-firmware/rk3399/* builds/$(echo $board)/ + cp builds/$(echo $board)/bl31.elf builds/$(echo $board)/atf-bl31 fi # End ATF @@ -212,6 +211,11 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Tue Mar 28 2023 Peter Robinson - 2023.04-0.4.rc5 +- Update to 2023.04 RC5 +- Drop upstreamed patches +- Rockchip boot fixes + * Tue Mar 14 2023 Peter Robinson - 2023.04-0.3.rc4 - Update to 2023.04 RC4 From 2a1c71298b528b5b8d1f04f75f416392fe86fe87 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 5 Apr 2023 23:03:46 +0100 Subject: [PATCH 145/271] 2023.04 GA --- aarch64-boards | 1 + ...rrect-constant-name-in-RAM-init-code.patch | 136 ------------------ sources | 2 +- uboot-tools.spec | 12 +- 4 files changed, 9 insertions(+), 142 deletions(-) delete mode 100644 rockchip-Fix-incorrect-constant-name-in-RAM-init-code.patch diff --git a/aarch64-boards b/aarch64-boards index f8e2f3b..63adc19 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -7,6 +7,7 @@ beelink_gs1 dragonboard410c dragonboard820c dragonboard845c +eaidk-610-rk3399 evb-rk3328 evb-rk3399 ficus-rk3399 diff --git a/rockchip-Fix-incorrect-constant-name-in-RAM-init-code.patch b/rockchip-Fix-incorrect-constant-name-in-RAM-init-code.patch deleted file mode 100644 index 381105d..0000000 --- a/rockchip-Fix-incorrect-constant-name-in-RAM-init-code.patch +++ /dev/null @@ -1,136 +0,0 @@ -From patchwork Thu Mar 30 21:51:14 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: David Sebek -X-Patchwork-Id: 1763526 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -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=) -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=20210112 header.b=Ur2Foz7G; - dkim-atps=neutral -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 (P-384)) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4PnccK6Hkyz1yY8 - for ; Fri, 31 Mar 2023 08:53:21 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 504A385F3F; - Thu, 30 Mar 2023 23:53:19 +0200 (CEST) -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="Ur2Foz7G"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id D179285F40; Thu, 30 Mar 2023 23:52:42 +0200 (CEST) -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,SPF_HELO_NONE, - SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-qv1-xf36.google.com (mail-qv1-xf36.google.com - [IPv6:2607:f8b0:4864:20::f36]) - (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 2033985F3F - for ; Thu, 30 Mar 2023 23:52:38 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=dasebek@gmail.com -Received: by mail-qv1-xf36.google.com with SMTP id kr22so1200478qvb.5 - for ; Thu, 30 Mar 2023 14:52:38 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=gmail.com; s=20210112; t=1680213157; - h=content-transfer-encoding:mime-version:message-id:date:subject:cc - :to:from:from:to:cc:subject:date:message-id:reply-to; - bh=WlhaDeGiQSnfOs2/9s0KCU263BnBJ6NBdaytsU9sg7g=; - b=Ur2Foz7G2I7plUDBFoUSZnvUqm1qe6isgeZchzTJizjuyScb9aIr+l4Y7kNOOQGdc/ - i8jKZkeikuONySQd2OO0XRKZNsG/OFDotB5PuxnuzojmdEHLUeXPR4vVr2U7w1evC0FV - WsRdQjKNHExVuqC6pCdfDypiLeHxlI3xjzZAX1ZdZ3vL1HpjEdOz5F+LkX4/q2n+k8hQ - 6kj71uph8Vc1tfmdNLxaVOCuSLjBjtKSvwQwndqfZhp55MBSwZOBC7E79tzprByA+2jm - gPusk25eDFTS4KdF99vyViFflzZcdCOd/3aivHFm22w8656KQMnTYqdcg+FVhbWCvXMB - boWw== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20210112; t=1680213157; - h=content-transfer-encoding:mime-version:message-id:date:subject:cc - :to:from:x-gm-message-state:from:to:cc:subject:date:message-id - :reply-to; - bh=WlhaDeGiQSnfOs2/9s0KCU263BnBJ6NBdaytsU9sg7g=; - b=ju+uXKxSg4L6GOqfy8tiSrBoKUIlAScW/CP1ukEGXtEXfQBiFwcqNzCc3Sj6j9Bdg1 - oLjqUkd0VXXt/hSpdFlSPOP8eqY9tHRLv8BJkRjlIuuCJDRNEAUUEeQhs9Q3EqltT1r7 - IPyM/TrkpuUWbr0PYVKQy2MUFTM1BK1UnqrJ9nKdQ21P+IbMhFz3LkTGbR0mIyW3aBws - Lafp9pABfuq4IomjoHD04o2f3M499dxlzmeSWM5VM4G6Jn/fDhvUZQhKU/vOdJVICUBM - eTp2laeeQo3dU45NqTZAuHRExqWvXVfhRPCOjVhv4NGd1ZhXTyJlw58Sq8t1kogMaZYZ - Ig8g== -X-Gm-Message-State: AAQBX9dHjWPG3k4IU3/uooZuMWlvPPp07Gf3iAuGftQx7/rI9tIH2/9E - 2RpZKACqRmNgqLHljBDY0Ikog6vfLUjUCQ== -X-Google-Smtp-Source: - AKy350ZwCjCcvTc/JU/KbyOydxFmq/ZQNkIyCK/MsKcufgGLOKBKj9hxPMBrRLLgXzD6BdzMNiAVSA== -X-Received: by 2002:ad4:5c6b:0:b0:5ce:7b40:8999 with SMTP id - i11-20020ad45c6b000000b005ce7b408999mr45081108qvh.22.1680213156729; - Thu, 30 Mar 2023 14:52:36 -0700 (PDT) -Received: from pc4.lan ([2605:a601:a620:5c00::d89]) - by smtp.gmail.com with ESMTPSA id - k5-20020a0cebc5000000b005dd8b9345d3sm129269qvq.107.2023.03.30.14.52.36 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Thu, 30 Mar 2023 14:52:36 -0700 (PDT) -From: David Sebek -To: u-boot@lists.denx.de -Cc: jagan@amarulasolutions.com, kever.yang@rock-chips.com, - David Sebek -Subject: [PATCH 1/1] rockchip: Fix incorrect constant name in RAM init code -Date: Thu, 30 Mar 2023 17:51:14 -0400 -Message-Id: <20230330215114.248481-1-dasebek@gmail.com> -X-Mailer: git-send-email 2.40.0 -MIME-Version: 1.0 -X-Mailman-Approved-At: Thu, 30 Mar 2023 23:53:17 +0200 -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 - -A condition in the rk3399 RAM initialization code used the old -CONFIG_RAM_RK3399_LPDDR4 constant name. This commit changes the -condition to use the correct CONFIG_RAM_ROCKCHIP_LPDDR4 constant. -Reviewed-by: Simon Glass ---- - drivers/ram/rockchip/sdram_rk3399.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/ram/rockchip/sdram_rk3399.c b/drivers/ram/rockchip/sdram_rk3399.c -index b1fea04e84..963a05c244 100644 ---- a/drivers/ram/rockchip/sdram_rk3399.c -+++ b/drivers/ram/rockchip/sdram_rk3399.c -@@ -2954,7 +2954,7 @@ static int sdram_init(struct dram_info *dram, - params->ch[ch].cap_info.rank = rank; - } - --#if defined(CONFIG_RAM_RK3399_LPDDR4) -+#if defined(CONFIG_RAM_ROCKCHIP_LPDDR4) - /* LPDDR4 needs to be trained at 400MHz */ - lpddr4_set_rate(dram, params, 0); - params->base.ddr_freq = dfs_cfgs_lpddr4[0].base.ddr_freq / MHz; diff --git a/sources b/sources index 154228d..6466983 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2023.04-rc5.tar.bz2) = e953585d3b59f53aec1e17179fe5c84cbc56d5a5150815aaf9b01a73dc6384a9cbe89e6848f8c4fd85c00bf61de4487018fa6df9411caff2f0c9a8a175a5dd28 +SHA512 (u-boot-2023.04.tar.bz2) = 31a44083af8084cd657c08233f485ff9503002bbaf95114c6135d483881fa14dc5a1b7ab42fd91f1fdd6b330556e76958d475280115018cb59c62b6ab4b508e6 diff --git a/uboot-tools.spec b/uboot-tools.spec index 42ac2eb..e754741 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc5 +#global candidate rc0 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2023.04 -Release: 0.4%{?candidate:.%{candidate}}%{?dist} +Release: 1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -25,7 +25,6 @@ Patch2: smbios-Simplify-reporting-of-unknown-values.patch # RPi - uses RPI firmware device tree for HAT support Patch3: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch # Rockchips improvements -Patch5: rockchip-Fix-incorrect-constant-name-in-RAM-init-code.patch Patch6: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch BuildRequires: bc @@ -99,9 +98,9 @@ do rk3328=(evb-rk3328 nanopi-r2s-rk3328 rock64-rk3328 rock-pi-e-rk3328 roc-cc-rk3328) if [[ " ${rk3328[*]} " == *" $board "* ]]; then echo "Board: $board using rk3328" - cp /usr/share/arm-trusted-firmware/rk3328/* builds/$(echo $board)/ + cp /usr/share/arm-trusted-firmware/rk3328/bl31.elf builds/$(echo $board)/atf-bl31 fi - rk3399=(evb-rk3399 ficus-rk3399 firefly-rk3399 khadas-edge-captain-rk3399 khadas-edge-rk3399 khadas-edge-v-rk3399 leez-rk3399 nanopc-t4-rk3399 nanopi-m4-2gb-rk3399 nanopi-m4b-rk3399 nanopi-m4-rk3399 nanopi-neo4-rk3399 nanopi-r4s-rk3399 orangepi-rk3399 pinebook-pro-rk3399 pinephone-pro-rk3399 puma-rk3399 rock960-rk3399 rock-pi-4c-rk3399 rock-pi-4-rk3399 rock-pi-n10-rk3399pro rockpro64-rk3399 roc-pc-mezzanine-rk3399 roc-pc-rk3399) + rk3399=(evb-rk3399 ficus-rk3399 firefly-rk3399 khadas-edge-captain-rk3399 khadas-edge-rk3399 khadas-edge-v-rk3399 leez-rk3399 nanopc-t4-rk3399 nanopi-m4-2gb-rk3399 nanopi-m4b-rk3399 nanopi-m4-rk3399 nanopi-neo4-rk3399 nanopi-r4s-rk3399 orangepi-rk3399 pinebook-pro-rk3399 pinephone-pro-rk3399 puma-rk3399 rock960-rk3399 rock-pi-4c-rk3399 rock-pi-4-rk3399 rock-pi-n10-rk3399pro rockpro64-rk3399 roc-pc-mezzanine-rk3399 roc-pc-rk3399 eaidk-610-rk3399) if [[ " ${rk3399[*]} " == *" $board "* ]]; then echo "Board: $board using rk3399" cp /usr/share/arm-trusted-firmware/rk3399/* builds/$(echo $board)/ @@ -211,6 +210,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Tue Apr 04 2023 Peter Robinson - 2023.04-1 +- Update to 2023.04 GA + * Tue Mar 28 2023 Peter Robinson - 2023.04-0.4.rc5 - Update to 2023.04 RC5 - Drop upstreamed patches From 4bf4670e83129691d4218dc9c68d922ab8c2e048 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 17 May 2023 23:06:15 +0100 Subject: [PATCH 146/271] 2023.07 RC2 --- sources | 2 +- uboot-tools.spec | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/sources b/sources index 6466983..882178d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2023.04.tar.bz2) = 31a44083af8084cd657c08233f485ff9503002bbaf95114c6135d483881fa14dc5a1b7ab42fd91f1fdd6b330556e76958d475280115018cb59c62b6ab4b508e6 +SHA512 (u-boot-2023.07-rc2.tar.bz2) = 88c17e7b835a78e93e39e2e455dcaa7bd1dc5abb7fbced36bc5ecdcacd3bd8633a36bdf4411cb3dbb59f8f6ae26d7dc4f9f3664290112e706ca0546033adba83 diff --git a/uboot-tools.spec b/uboot-tools.spec index e754741..bc8cfbf 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -#global candidate rc0 +%global candidate rc2 %if 0%{?rhel} %bcond_with toolsonly %else @@ -6,8 +6,8 @@ %endif Name: uboot-tools -Version: 2023.04 -Release: 1%{?candidate:.%{candidate}}%{?dist} +Version: 2023.07 +Release: 0.1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -210,6 +210,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Wed May 17 2023 Peter Robinson - 2023.07-0.1.rc2 +- Update to 2023.07 RC2 + * Tue Apr 04 2023 Peter Robinson - 2023.04-1 - Update to 2023.04 GA From 181c3671e7ce1141f3611610f1532b6133e5d8cd Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 29 May 2023 22:02:20 +0100 Subject: [PATCH 147/271] 2023.07 RC3 --- sources | 2 +- uboot-tools.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sources b/sources index 882178d..3ef372f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2023.07-rc2.tar.bz2) = 88c17e7b835a78e93e39e2e455dcaa7bd1dc5abb7fbced36bc5ecdcacd3bd8633a36bdf4411cb3dbb59f8f6ae26d7dc4f9f3664290112e706ca0546033adba83 +SHA512 (u-boot-2023.07-rc3.tar.bz2) = 2fc12ec0be56603931122063926e5edcb5464cc033f9bb79b07fdfa80a3045ccb5dd17703515f794406e109a5f2ad32e1a22909567d1d7ad2251bae2f70ed4a2 diff --git a/uboot-tools.spec b/uboot-tools.spec index bc8cfbf..6306df5 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc2 +%global candidate rc3 %if 0%{?rhel} %bcond_with toolsonly %else From 0d5f023cd64a9872009673990bdb3c2bf9bfe609 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sun, 11 Jun 2023 21:27:31 +0100 Subject: [PATCH 148/271] Fixes for the Pinephone Pro, RockPro64 --- ...rockpro64-Build-u-boot-rockchip-spi..patch | 41 ++++++ rockchip-PinePhone-Pro-fixes.patch | 127 ++++++++++++++++++ uboot-tools.spec | 8 +- 3 files changed, 175 insertions(+), 1 deletion(-) create mode 100644 0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch create mode 100644 rockchip-PinePhone-Pro-fixes.patch diff --git a/0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch b/0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch new file mode 100644 index 0000000..7ab4bbd --- /dev/null +++ b/0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch @@ -0,0 +1,41 @@ +From ed5ffb3b53690a47333b931301a3765b9588b5dc Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Sun, 11 Jun 2023 21:22:41 +0100 +Subject: [PATCH] Revert "rockchip: rockpro64: Build u-boot-rockchip-spi.bin" + +This reverts commit 5713135ecc75660684ff3eb6cfba7bc11eb6433c. +--- + configs/rockpro64-rk3399_defconfig | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig +index f41c0306790..0ca2cecade2 100644 +--- a/configs/rockpro64-rk3399_defconfig ++++ b/configs/rockpro64-rk3399_defconfig +@@ -11,7 +11,6 @@ CONFIG_ENV_OFFSET=0x3F8000 + CONFIG_DEFAULT_DEVICE_TREE="rk3399-rockpro64" + CONFIG_DM_RESET=y + CONFIG_ROCKCHIP_RK3399=y +-CONFIG_ROCKCHIP_SPI_IMAGE=y + CONFIG_TARGET_ROCKPRO64_RK3399=y + CONFIG_SPL_STACK=0x400000 + CONFIG_DEBUG_UART_BASE=0xFF1A0000 +@@ -21,7 +20,6 @@ CONFIG_SPL_SPI=y + CONFIG_SYS_LOAD_ADDR=0x800800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y +-CONFIG_LTO=y + CONFIG_SPL_FIT_SIGNATURE=y + CONFIG_BOOTSTAGE=y + CONFIG_BOOTSTAGE_REPORT=y +@@ -39,7 +37,6 @@ CONFIG_SPL_BSS_MAX_SIZE=0x2000 + CONFIG_SPL_STACK_R=y + CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000 + CONFIG_SPL_SPI_LOAD=y +-CONFIG_SYS_SPI_U_BOOT_OFFS=0x60000 + CONFIG_TPL=y + CONFIG_CMD_BOOTZ=y + CONFIG_CMD_GPT=y +-- +2.41.0 + diff --git a/rockchip-PinePhone-Pro-fixes.patch b/rockchip-PinePhone-Pro-fixes.patch new file mode 100644 index 0000000..74d0bab --- /dev/null +++ b/rockchip-PinePhone-Pro-fixes.patch @@ -0,0 +1,127 @@ +From 671b2e758900f4a733d6840b2f39bc24dd63cfdb Mon Sep 17 00:00:00 2001 +From: Ondrej Jirman +Date: Thu, 25 May 2023 14:18:17 +0200 +Subject: [PATCH] i2c: rockchip: De-initialize the bus after start bit failure + +Failure can happen when i2c is used without initializing pinctrl properly, +which U-Boot happily allows in SPL. Without this fix, further I2C access would +fail, even after proper pinctrl initialization. + +Signed-off-by: Ondrej Jirman +Cc: Heiko Schocher +Reviewed-by: Kever Yang +Reviewed-by: Heiko Schocher +--- + drivers/i2c/rk_i2c.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/drivers/i2c/rk_i2c.c b/drivers/i2c/rk_i2c.c +index f8fac45b6ca..9927af94a80 100644 +--- a/drivers/i2c/rk_i2c.c ++++ b/drivers/i2c/rk_i2c.c +@@ -342,7 +342,7 @@ static int rockchip_i2c_xfer(struct udevice *bus, struct i2c_msg *msg, + int nmsgs) + { + struct rk_i2c *i2c = dev_get_priv(bus); +- int ret; ++ int ret = 0; + + debug("i2c_xfer: %d messages\n", nmsgs); + for (; nmsgs > 0; nmsgs--, msg++) { +@@ -356,14 +356,15 @@ static int rockchip_i2c_xfer(struct udevice *bus, struct i2c_msg *msg, + } + if (ret) { + debug("i2c_write: error sending\n"); +- return -EREMOTEIO; ++ ret = -EREMOTEIO; ++ break; + } + } + + rk_i2c_send_stop_bit(i2c); + rk_i2c_disable(i2c); + +- return 0; ++ return ret; + } + + int rockchip_i2c_set_bus_speed(struct udevice *bus, unsigned int speed) +-- +2.41.0 + +From 1af5e42f170d2c4b944beeb875b80ec7f061038a Mon Sep 17 00:00:00 2001 +From: Ondrej Jirman +Date: Thu, 25 May 2023 15:27:08 +0200 +Subject: [PATCH] pinephone-pro: Fix I/O port voltage (GPIO3D4A is 1.8V) + +This fixes access to camera sensor over I2C during probe time in +the kernel. (Kernel will fix I/0 port voltage by itself, but the +timing depends on probe order of the drivers, so the fix can +come after the camera sensor driver already failed to probe.) + +Signed-off-by: Ondrej Jirman +Cc: Kever Yang +Reviewed-by: Kever Yang +--- + board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c b/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c +index eb639cd0d07..b6ccbb9c1c4 100644 +--- a/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c ++++ b/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c +@@ -15,7 +15,8 @@ + #include + #include + +-#define GRF_IO_VSEL_BT565_SHIFT 0 ++#define GRF_IO_VSEL_BT565_GPIO2AB 1 ++#define GRF_IO_VSEL_AUDIO_GPIO3D4A 2 + #define PMUGRF_CON0_VSEL_SHIFT 8 + + #ifndef CONFIG_SPL_BUILD +@@ -48,7 +49,8 @@ static void setup_iodomain(void) + syscon_get_first_range(ROCKCHIP_SYSCON_PMUGRF); + + /* BT565 is in 1.8v domain */ +- rk_setreg(&grf->io_vsel, 1 << GRF_IO_VSEL_BT565_SHIFT); ++ rk_setreg(&grf->io_vsel, ++ GRF_IO_VSEL_BT565_GPIO2AB | GRF_IO_VSEL_AUDIO_GPIO3D4A); + + /* Set GPIO1 1.8v/3.0v source select to PMU1830_VOL */ + rk_setreg(&pmugrf->soc_con0, 1 << PMUGRF_CON0_VSEL_SHIFT); +-- +2.41.0 + +From 6a7f8be74b44013513e51f5e7979dcc410ca2723 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Sun, 11 Jun 2023 18:13:19 +0100 +Subject: [PATCH] rockchip: Pinephone Pro: Add DDR RAM type config + +Add the RAM_ROCKCHIP_LPDDR4 to fix the Pinephone Pro booting. +When the configs were updated in 26f92be07e2 it somehow broke +the PPP boot process so let's fix it. + +Signed-off-by: Peter Robinson +CC: Jagan Teki +CC: Kever Yang + +--- + configs/pinephone-pro-rk3399_defconfig | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/configs/pinephone-pro-rk3399_defconfig b/configs/pinephone-pro-rk3399_defconfig +index 4edea88665f..e4a8beeb1ab 100644 +--- a/configs/pinephone-pro-rk3399_defconfig ++++ b/configs/pinephone-pro-rk3399_defconfig +@@ -73,6 +73,7 @@ CONFIG_PMIC_RK8XX=y + CONFIG_REGULATOR_PWM=y + CONFIG_REGULATOR_RK8XX=y + CONFIG_PWM_ROCKCHIP=y ++CONFIG_RAM_ROCKCHIP_LPDDR4=y + CONFIG_DM_RNG=y + CONFIG_RNG_ROCKCHIP=y + CONFIG_BAUDRATE=1500000 +-- +2.41.0 + diff --git a/uboot-tools.spec b/uboot-tools.spec index 6306df5..43fc748 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2023.07 -Release: 0.1%{?candidate:.%{candidate}}%{?dist} +Release: 0.2%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -26,6 +26,8 @@ Patch2: smbios-Simplify-reporting-of-unknown-values.patch Patch3: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch # Rockchips improvements Patch6: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch +Patch7: rockchip-PinePhone-Pro-fixes.patch +Patch8: 0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch BuildRequires: bc BuildRequires: bison @@ -210,6 +212,10 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Sun Jun 11 2023 Peter Robinson - 2023.07-0.2.rc3 +- Update to 2023.07 RC3 +- Fixes for the Pinephone Pro, RockPro64 + * Wed May 17 2023 Peter Robinson - 2023.07-0.1.rc2 - Update to 2023.07 RC2 From 9f5ba74ae09adf9c7c158cf68985a173260c27dc Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 12 Jun 2023 22:33:53 +0100 Subject: [PATCH 149/271] 2023.07 RC4 --- rockchip-PinePhone-Pro-fixes.patch | 51 ------------------------------ sources | 2 +- uboot-tools.spec | 7 ++-- 3 files changed, 6 insertions(+), 54 deletions(-) diff --git a/rockchip-PinePhone-Pro-fixes.patch b/rockchip-PinePhone-Pro-fixes.patch index 74d0bab..826ab23 100644 --- a/rockchip-PinePhone-Pro-fixes.patch +++ b/rockchip-PinePhone-Pro-fixes.patch @@ -1,54 +1,3 @@ -From 671b2e758900f4a733d6840b2f39bc24dd63cfdb Mon Sep 17 00:00:00 2001 -From: Ondrej Jirman -Date: Thu, 25 May 2023 14:18:17 +0200 -Subject: [PATCH] i2c: rockchip: De-initialize the bus after start bit failure - -Failure can happen when i2c is used without initializing pinctrl properly, -which U-Boot happily allows in SPL. Without this fix, further I2C access would -fail, even after proper pinctrl initialization. - -Signed-off-by: Ondrej Jirman -Cc: Heiko Schocher -Reviewed-by: Kever Yang -Reviewed-by: Heiko Schocher ---- - drivers/i2c/rk_i2c.c | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/drivers/i2c/rk_i2c.c b/drivers/i2c/rk_i2c.c -index f8fac45b6ca..9927af94a80 100644 ---- a/drivers/i2c/rk_i2c.c -+++ b/drivers/i2c/rk_i2c.c -@@ -342,7 +342,7 @@ static int rockchip_i2c_xfer(struct udevice *bus, struct i2c_msg *msg, - int nmsgs) - { - struct rk_i2c *i2c = dev_get_priv(bus); -- int ret; -+ int ret = 0; - - debug("i2c_xfer: %d messages\n", nmsgs); - for (; nmsgs > 0; nmsgs--, msg++) { -@@ -356,14 +356,15 @@ static int rockchip_i2c_xfer(struct udevice *bus, struct i2c_msg *msg, - } - if (ret) { - debug("i2c_write: error sending\n"); -- return -EREMOTEIO; -+ ret = -EREMOTEIO; -+ break; - } - } - - rk_i2c_send_stop_bit(i2c); - rk_i2c_disable(i2c); - -- return 0; -+ return ret; - } - - int rockchip_i2c_set_bus_speed(struct udevice *bus, unsigned int speed) --- -2.41.0 - From 1af5e42f170d2c4b944beeb875b80ec7f061038a Mon Sep 17 00:00:00 2001 From: Ondrej Jirman Date: Thu, 25 May 2023 15:27:08 +0200 diff --git a/sources b/sources index 3ef372f..eeeb20d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2023.07-rc3.tar.bz2) = 2fc12ec0be56603931122063926e5edcb5464cc033f9bb79b07fdfa80a3045ccb5dd17703515f794406e109a5f2ad32e1a22909567d1d7ad2251bae2f70ed4a2 +SHA512 (u-boot-2023.07-rc4.tar.bz2) = 523e0e63960921f3fa5a6cbb4d73b5326e4a95c81e7dc74dcca5e460d2a37209fbd2622db636358f6d7e4b0fdd715d4587f021a0d722b95808b65db2998b6fcf diff --git a/uboot-tools.spec b/uboot-tools.spec index 43fc748..0e2d64d 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc3 +%global candidate rc4 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2023.07 -Release: 0.2%{?candidate:.%{candidate}}%{?dist} +Release: 0.3%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -212,6 +212,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Mon Jun 12 2023 Peter Robinson - 2023.07-0.3.rc4 +- Update to 2023.07 RC4 + * Sun Jun 11 2023 Peter Robinson - 2023.07-0.2.rc3 - Update to 2023.07 RC3 - Fixes for the Pinephone Pro, RockPro64 From a66ab5dbb0f5d8bbba2f7064d42cab56751f645b Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Fri, 16 Jun 2023 10:43:01 +0100 Subject: [PATCH 150/271] Disable NFS --- 0001-disable-NFS-support-by-default.patch | 35 +++++++++++++++++++++++ uboot-tools.spec | 8 ++++-- 2 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 0001-disable-NFS-support-by-default.patch diff --git a/0001-disable-NFS-support-by-default.patch b/0001-disable-NFS-support-by-default.patch new file mode 100644 index 0000000..b520b15 --- /dev/null +++ b/0001-disable-NFS-support-by-default.patch @@ -0,0 +1,35 @@ +From 31dc49dee987500b0d5b5b536b6da2f3fbfd5b59 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Tue, 13 Jun 2023 09:36:50 +0100 +Subject: [v1] disable NFS support by default + +While NFS is widely used in data centres, and private +networks it's quite a nuanced usecase for device firmware. +A lot of devices already disable it. + +Various network protocols should really be opt in, not opt +out, because they add extra size and are potential attack +vectors from a security PoV. In the NFS case it doesn't +really make sense for a lot of devices like tables, SBCs etc. +It's also something we don't really want for SystemReady-IR +due to security concerns. + +Signed-off-by: Peter Robinson +--- + +v1: drop RFC tag + + cmd/Kconfig | 1 - + +diff --git a/cmd/Kconfig b/cmd/Kconfig +index 365371fb511..a193929cec4 100644 +--- a/cmd/Kconfig ++++ b/cmd/Kconfig +@@ -1848,7 +1848,6 @@ config CMD_RARP + + config CMD_NFS + bool "nfs" +- default y + help + Boot image via network using NFS protocol. + diff --git a/uboot-tools.spec b/uboot-tools.spec index 0e2d64d..f035f7d 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2023.07 -Release: 0.3%{?candidate:.%{candidate}}%{?dist} +Release: 0.4%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -20,10 +20,11 @@ Source1: aarch64-boards # Needed to find DT on boot partition that's not the first partition Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch Patch2: smbios-Simplify-reporting-of-unknown-values.patch +Patch3: 0001-disable-NFS-support-by-default.patch # Board fixes and enablement # RPi - uses RPI firmware device tree for HAT support -Patch3: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch +Patch5: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch # Rockchips improvements Patch6: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch Patch7: rockchip-PinePhone-Pro-fixes.patch @@ -212,6 +213,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Fri Jun 16 2023 Peter Robinson - 2023.07-0.4.rc4 +- Disable NFS by default + * Mon Jun 12 2023 Peter Robinson - 2023.07-0.3.rc4 - Update to 2023.07 RC4 From bb667eb6c94fd70a33386260d04b06269b0c4572 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 11 Jul 2023 15:37:44 +0100 Subject: [PATCH 151/271] 2023.07 GA --- ...rockpro64-Build-u-boot-rockchip-spi..patch | 8 ++--- fix-release-rev.patch | 11 +++++++ rockchip-PinePhone-Pro-fixes.patch | 33 ------------------- sources | 2 +- uboot-tools.spec | 13 +++++--- 5 files changed, 24 insertions(+), 43 deletions(-) create mode 100644 fix-release-rev.patch diff --git a/0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch b/0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch index 7ab4bbd..30e4ad8 100644 --- a/0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch +++ b/0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch @@ -12,7 +12,7 @@ diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defco index f41c0306790..0ca2cecade2 100644 --- a/configs/rockpro64-rk3399_defconfig +++ b/configs/rockpro64-rk3399_defconfig -@@ -11,7 +11,6 @@ CONFIG_ENV_OFFSET=0x3F8000 +@@ -11,7 +11,6 @@ CONFIG_DEFAULT_DEVICE_TREE="rk3399-rockpro64" CONFIG_DM_RESET=y CONFIG_ROCKCHIP_RK3399=y @@ -20,15 +20,15 @@ index f41c0306790..0ca2cecade2 100644 CONFIG_TARGET_ROCKPRO64_RK3399=y CONFIG_SPL_STACK=0x400000 CONFIG_DEBUG_UART_BASE=0xFF1A0000 -@@ -21,7 +20,6 @@ CONFIG_SPL_SPI=y +@@ -21,7 +20,6 @@ CONFIG_SYS_LOAD_ADDR=0x800800 CONFIG_PCI=y CONFIG_DEBUG_UART=y -CONFIG_LTO=y CONFIG_SPL_FIT_SIGNATURE=y + CONFIG_LEGACY_IMAGE_FORMAT=y CONFIG_BOOTSTAGE=y - CONFIG_BOOTSTAGE_REPORT=y -@@ -39,7 +37,6 @@ CONFIG_SPL_BSS_MAX_SIZE=0x2000 +@@ -40,7 +38,6 @@ CONFIG_SPL_STACK_R=y CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000 CONFIG_SPL_SPI_LOAD=y diff --git a/fix-release-rev.patch b/fix-release-rev.patch new file mode 100644 index 0000000..ad78eeb --- /dev/null +++ b/fix-release-rev.patch @@ -0,0 +1,11 @@ +--- u-boot-2023.07/Makefile.orig 2023-07-11 11:47:16.996315851 +0100 ++++ u-boot-2023.07/Makefile 2023-07-11 11:47:31.049391730 +0100 +@@ -3,7 +3,7 @@ + VERSION = 2023 + PATCHLEVEL = 07 + SUBLEVEL = +-EXTRAVERSION = -rc6 ++EXTRAVERSION = + NAME = + + # *DOCUMENTATION* diff --git a/rockchip-PinePhone-Pro-fixes.patch b/rockchip-PinePhone-Pro-fixes.patch index 826ab23..5e07490 100644 --- a/rockchip-PinePhone-Pro-fixes.patch +++ b/rockchip-PinePhone-Pro-fixes.patch @@ -41,36 +41,3 @@ index eb639cd0d07..b6ccbb9c1c4 100644 rk_setreg(&pmugrf->soc_con0, 1 << PMUGRF_CON0_VSEL_SHIFT); -- 2.41.0 - -From 6a7f8be74b44013513e51f5e7979dcc410ca2723 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Sun, 11 Jun 2023 18:13:19 +0100 -Subject: [PATCH] rockchip: Pinephone Pro: Add DDR RAM type config - -Add the RAM_ROCKCHIP_LPDDR4 to fix the Pinephone Pro booting. -When the configs were updated in 26f92be07e2 it somehow broke -the PPP boot process so let's fix it. - -Signed-off-by: Peter Robinson -CC: Jagan Teki -CC: Kever Yang - ---- - configs/pinephone-pro-rk3399_defconfig | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/configs/pinephone-pro-rk3399_defconfig b/configs/pinephone-pro-rk3399_defconfig -index 4edea88665f..e4a8beeb1ab 100644 ---- a/configs/pinephone-pro-rk3399_defconfig -+++ b/configs/pinephone-pro-rk3399_defconfig -@@ -73,6 +73,7 @@ CONFIG_PMIC_RK8XX=y - CONFIG_REGULATOR_PWM=y - CONFIG_REGULATOR_RK8XX=y - CONFIG_PWM_ROCKCHIP=y -+CONFIG_RAM_ROCKCHIP_LPDDR4=y - CONFIG_DM_RNG=y - CONFIG_RNG_ROCKCHIP=y - CONFIG_BAUDRATE=1500000 --- -2.41.0 - diff --git a/sources b/sources index eeeb20d..150374f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2023.07-rc4.tar.bz2) = 523e0e63960921f3fa5a6cbb4d73b5326e4a95c81e7dc74dcca5e460d2a37209fbd2622db636358f6d7e4b0fdd715d4587f021a0d722b95808b65db2998b6fcf +SHA512 (u-boot-2023.07.tar.bz2) = c11c2dd8e44babf7d5c15c28587139f0fa7e73833bf6d4902b46780a6ed2199d007db4fec579f10b041da478dfa8c6c21e6cee76cfd65ec6cc6860c116bbc0fb diff --git a/uboot-tools.spec b/uboot-tools.spec index f035f7d..34209a0 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc4 +#global candidate rc0 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2023.07 -Release: 0.4%{?candidate:.%{candidate}}%{?dist} +Release: 1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -21,14 +21,14 @@ Source1: aarch64-boards Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch Patch2: smbios-Simplify-reporting-of-unknown-values.patch Patch3: 0001-disable-NFS-support-by-default.patch +Patch4: fix-release-rev.patch # Board fixes and enablement # RPi - uses RPI firmware device tree for HAT support Patch5: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch # Rockchips improvements Patch6: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch -Patch7: rockchip-PinePhone-Pro-fixes.patch -Patch8: 0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch +Patch7: 0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch BuildRequires: bc BuildRequires: bison @@ -199,7 +199,7 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %files %doc README doc/develop/distro.rst doc/README.gpt -%doc doc/README.rockchip doc/develop/uefi doc/uImage.FIT doc/arch/arm64.rst +%doc doc/README.rockchip doc/develop/uefi doc/usage doc/arch/arm64.rst %doc builds/docs/* doc/board/amlogic/ doc/board/rockchip/ %{_bindir}/* %{_mandir}/man1/mkimage.1* @@ -213,6 +213,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Tue Jul 11 2023 Peter Robinson - 2023.07-1 +- Update to 2023.07 GA + * Fri Jun 16 2023 Peter Robinson - 2023.07-0.4.rc4 - Disable NFS by default From 1a686adf3732fa2fd9f348601518648c86009475 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 22 Jul 2023 16:57:06 +0000 Subject: [PATCH 152/271] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- uboot-tools.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 34209a0..dae5485 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2023.07 -Release: 1%{?candidate:.%{candidate}}%{?dist} +Release: 2%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -213,6 +213,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Sat Jul 22 2023 Fedora Release Engineering - 2023.07-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + * Tue Jul 11 2023 Peter Robinson - 2023.07-1 - Update to 2023.07 GA From c7752f4a3223e10fa6ac66874e25d5dcfe23eb8f Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sat, 19 Aug 2023 12:52:49 +0100 Subject: [PATCH 153/271] 2023.10 RC2 --- 0001-disable-NFS-support-by-default.patch | 35 -- disable-VBE-by-default.patch | 28 ++ enable-bootmenu-by-default.patch | 49 +++ fix-release-rev.patch | 11 - rock64-small-fixes.patch | 476 ++++++++++++++++++++++ sources | 2 +- uboot-tools.spec | 16 +- 7 files changed, 564 insertions(+), 53 deletions(-) delete mode 100644 0001-disable-NFS-support-by-default.patch create mode 100644 disable-VBE-by-default.patch create mode 100644 enable-bootmenu-by-default.patch delete mode 100644 fix-release-rev.patch create mode 100644 rock64-small-fixes.patch diff --git a/0001-disable-NFS-support-by-default.patch b/0001-disable-NFS-support-by-default.patch deleted file mode 100644 index b520b15..0000000 --- a/0001-disable-NFS-support-by-default.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 31dc49dee987500b0d5b5b536b6da2f3fbfd5b59 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Tue, 13 Jun 2023 09:36:50 +0100 -Subject: [v1] disable NFS support by default - -While NFS is widely used in data centres, and private -networks it's quite a nuanced usecase for device firmware. -A lot of devices already disable it. - -Various network protocols should really be opt in, not opt -out, because they add extra size and are potential attack -vectors from a security PoV. In the NFS case it doesn't -really make sense for a lot of devices like tables, SBCs etc. -It's also something we don't really want for SystemReady-IR -due to security concerns. - -Signed-off-by: Peter Robinson ---- - -v1: drop RFC tag - - cmd/Kconfig | 1 - - -diff --git a/cmd/Kconfig b/cmd/Kconfig -index 365371fb511..a193929cec4 100644 ---- a/cmd/Kconfig -+++ b/cmd/Kconfig -@@ -1848,7 +1848,6 @@ config CMD_RARP - - config CMD_NFS - bool "nfs" -- default y - help - Boot image via network using NFS protocol. - diff --git a/disable-VBE-by-default.patch b/disable-VBE-by-default.patch new file mode 100644 index 0000000..dffa9fc --- /dev/null +++ b/disable-VBE-by-default.patch @@ -0,0 +1,28 @@ +From 02513d9ecc38d11ffc051ed59529e11f82164785 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Fri, 18 Aug 2023 13:28:05 +0100 +Subject: [PATCH] disable VBE by default + +Fedora doesn't support the VBE boot method, disable it +to reduce size and remove a possible boot attack vector. + +Signed-off-by: Peter Robinson +--- + boot/Kconfig | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/boot/Kconfig b/boot/Kconfig +index e8fb03b8016..467b09e2350 100644 +--- a/boot/Kconfig ++++ b/boot/Kconfig +@@ -526,7 +526,6 @@ config BOOTMETH_EFILOADER + config BOOTMETH_VBE + bool "Bootdev support for Verified Boot for Embedded" + depends on FIT +- default y + select BOOTMETH_GLOBAL + select EVENT + help +-- +2.41.0 + diff --git a/enable-bootmenu-by-default.patch b/enable-bootmenu-by-default.patch new file mode 100644 index 0000000..1ecd514 --- /dev/null +++ b/enable-bootmenu-by-default.patch @@ -0,0 +1,49 @@ +From a956480a6d52ae90ef4a46275c2ee29a4074de36 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Fri, 18 Aug 2023 23:10:42 +0100 +Subject: [PATCH] enable bootmenu by default + +We want the boot menu on all Fedora devices as it makes +it a whole lot more user friendly. + +Signed-off-by: Peter Robinson +--- + boot/Kconfig | 2 ++ + cmd/Kconfig | 1 + + 2 files changed, 3 insertions(+) + +diff --git a/boot/Kconfig b/boot/Kconfig +index 467b09e2350..ad67b1f65a6 100644 +--- a/boot/Kconfig ++++ b/boot/Kconfig +@@ -1281,6 +1281,7 @@ config BOOTDELAY + + config AUTOBOOT_KEYED + bool "Stop autobooting via specific input key / string" ++ default y + help + This option enables stopping (aborting) of the automatic + boot feature only by issuing a specific input key or +@@ -1433,6 +1434,7 @@ config AUTOBOOT_MENUKEY + + config AUTOBOOT_MENU_SHOW + bool "Show a menu on boot" ++ default y + depends on CMD_BOOTMENU + help + This enables the boot menu, controlled by environment variables +diff --git a/cmd/Kconfig b/cmd/Kconfig +index 43ca10f69cc..3d39f2914cc 100644 +--- a/cmd/Kconfig ++++ b/cmd/Kconfig +@@ -413,6 +413,7 @@ source lib/efi_selftest/Kconfig + + config CMD_BOOTMENU + bool "bootmenu" ++ default y + select MENU + select CHARSET + help +-- +2.41.0 + diff --git a/fix-release-rev.patch b/fix-release-rev.patch deleted file mode 100644 index ad78eeb..0000000 --- a/fix-release-rev.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- u-boot-2023.07/Makefile.orig 2023-07-11 11:47:16.996315851 +0100 -+++ u-boot-2023.07/Makefile 2023-07-11 11:47:31.049391730 +0100 -@@ -3,7 +3,7 @@ - VERSION = 2023 - PATCHLEVEL = 07 - SUBLEVEL = --EXTRAVERSION = -rc6 -+EXTRAVERSION = - NAME = - - # *DOCUMENTATION* diff --git a/rock64-small-fixes.patch b/rock64-small-fixes.patch new file mode 100644 index 0000000..5ea77fb --- /dev/null +++ b/rock64-small-fixes.patch @@ -0,0 +1,476 @@ +From patchwork Wed Jun 14 12:43:12 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Peter Robinson +X-Patchwork-Id: 1794950 +X-Patchwork-Delegate: ykai007@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +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=) +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=20221208 header.b=FZFn9vAY; + dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature ECDSA (P-384)) + (No client certificate requested) + by legolas.ozlabs.org (Postfix) with ESMTPS id 4Qh4qN0nXtz20WR + for ; Wed, 14 Jun 2023 22:44:00 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id E188F86167; + Wed, 14 Jun 2023 14:43:40 +0200 (CEST) +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="FZFn9vAY"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 4CE61860AA; Wed, 14 Jun 2023 14:43:37 +0200 (CEST) +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,SPF_HELO_NONE, + SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no + version=3.4.2 +Received: from mail-lf1-x133.google.com (mail-lf1-x133.google.com + [IPv6:2a00:1450:4864:20::133]) + (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 BEECA860C3 + for ; Wed, 14 Jun 2023 14:43:34 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=gmail.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=pbrobinson@gmail.com +Received: by mail-lf1-x133.google.com with SMTP id + 2adb3069b0e04-4f642a24568so8546568e87.2 + for ; Wed, 14 Jun 2023 05:43:34 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20221208; t=1686746614; x=1689338614; + 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=sjzdpxK2W2UaYKf4Dbb6vo2R4h51tHoSQv2PLAL+ytA=; + b=FZFn9vAYzx95g5Cma3VU7TW3RzrwGrr2DTEZogYSk3tr58CXaHbRCJAD8suFJLbB18 + 4Uh25vZecFfXajC8z3+nGc/G+yLjO4p+uHq9laCmR1d/OjJadseCHzdHF2vgrMFi4x3U + c2A7F/JYazfKq/1McGMyMsI899Ot9xB8lffElanhTShEGmUwMjSzvalWbJA9ZUkisJvX + 1lfsoPk+26gamlPG4QftIFmXpxUf5pcRqA7pSzgOWyGcPSb8e5HBvcMnMTlNaRSNcjKs + k+TnZww3gSKjD+VxWck1VwgeEK8X4cPgV6HyI4TSSnjWSn2qjy6YW8eJWS4K/h+48RWn + 5VKA== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20221208; t=1686746614; x=1689338614; + 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=sjzdpxK2W2UaYKf4Dbb6vo2R4h51tHoSQv2PLAL+ytA=; + b=TIUdzRnLC89Ao7oVBZZH1iJgNXJg4bFp54s574ftCbOZSDxA49ZHH8ULPGzHpCG0ze + ffGZYszi+DbRLFr92kxE5wgmGjiMapn8MfDaNs5tFm31rBk7QeHIwNH2WwHmmERtGSfi + NbA6vIBYmQFUgdc2GxAfmwQkmyEqnlZUwxz43Goz6W7OnoYofitm9fM2P5JAjVEC9B4g + 3zqxZDCIEJmgTHUpPWgqM1QwJtQA9trNTMJESxsTocqABFS+cCPJCj9HitbWYe3TNGeG + JT6Ma3umJF+whshi0h/4csqV5wCXy5FHEC0nx/p88Tq+o/zCveJu1f16B8PQ3baaIw6n + Bj3Q== +X-Gm-Message-State: AC+VfDwm3GSwcQOMRo9W3rdlJIQd8KXeHulIsQkeI3v53WVLSbA4UQji + Er6vsMhWXQhyhjlcr1WdCnc= +X-Google-Smtp-Source: + ACHHUZ6pFh8GXXZTuMA7izeqjUHeS1gbvk8BisDz2HsWH0v5R9/HJDxhuCGwt4wFH7TA2hi2Y/haJg== +X-Received: by 2002:a19:4359:0:b0:4f3:b4a9:a619 with SMTP id + m25-20020a194359000000b004f3b4a9a619mr7072659lfj.40.1686746613623; + Wed, 14 Jun 2023 05:43:33 -0700 (PDT) +Received: from morpheus.home.roving-it.com + (3.e.2.0.0.0.0.0.0.0.0.0.0.0.0.0.1.8.6.2.1.1.b.f.0.b.8.0.1.0.0.2.ip6.arpa. + [2001:8b0:fb11:2681::2e3]) by smtp.googlemail.com with ESMTPSA id + g26-20020a7bc4da000000b003f60e143d38sm17329161wmk.11.2023.06.14.05.43.33 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Wed, 14 Jun 2023 05:43:33 -0700 (PDT) +From: Peter Robinson +To: "Matwey V. Kornilov" , + Simon Glass , Philipp Tomsich , + Kever Yang , u-boot@lists.denx.de +Cc: Peter Robinson +Subject: [PATCH 2/4] config: rock64: enable efuse for stable mac addr +Date: Wed, 14 Jun 2023 13:43:12 +0100 +Message-ID: <20230614124329.244462-2-pbrobinson@gmail.com> +X-Mailer: git-send-email 2.41.0 +In-Reply-To: <20230614124329.244462-1-pbrobinson@gmail.com> +References: <20230614124329.244462-1-pbrobinson@gmail.com> +MIME-Version: 1.0 +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 + +Enable the rockchip efuse driver on the Rock64 to +provide a stable ethernet address on the device. + +Signed-off-by: Peter Robinson +Reviewed-by: Kever Yang +--- + +While the rockchip efuse driver currently has issues on rk3328 due to, I believe, it +not being properly initialised in ATF, enabling it at least provides a stable MAC +adress on the NIC which I think makes it worthwhile + + configs/rock64-rk3328_defconfig | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/configs/rock64-rk3328_defconfig b/configs/rock64-rk3328_defconfig +index 1da9b0545a5..97ac8734d1b 100644 +--- a/configs/rock64-rk3328_defconfig ++++ b/configs/rock64-rk3328_defconfig +@@ -74,6 +74,7 @@ CONFIG_FASTBOOT_CMD_OEM_FORMAT=y + CONFIG_ROCKCHIP_GPIO=y + CONFIG_SYS_I2C_ROCKCHIP=y + CONFIG_MISC=y ++CONFIG_ROCKCHIP_EFUSE=y + CONFIG_MMC_DW=y + CONFIG_MMC_DW_ROCKCHIP=y + CONFIG_SPI_FLASH_GIGADEVICE=y + +From patchwork Wed Jun 14 12:43:13 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Peter Robinson +X-Patchwork-Id: 1794951 +X-Patchwork-Delegate: ykai007@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +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=) +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=20221208 header.b=WIV1zbyE; + dkim-atps=neutral +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 (P-384)) + (No client certificate requested) + by legolas.ozlabs.org (Postfix) with ESMTPS id 4Qh4qf6BLXz20WR + for ; Wed, 14 Jun 2023 22:44:14 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 5B12B86146; + Wed, 14 Jun 2023 14:43:44 +0200 (CEST) +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="WIV1zbyE"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 5200686146; Wed, 14 Jun 2023 14:43:39 +0200 (CEST) +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,SPF_HELO_NONE, + SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no + version=3.4.2 +Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com + [IPv6:2a00:1450:4864:20::336]) + (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 0F3CC860FE + for ; Wed, 14 Jun 2023 14:43:35 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=gmail.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=pbrobinson@gmail.com +Received: by mail-wm1-x336.google.com with SMTP id + 5b1f17b1804b1-3f8c74af64fso5587725e9.1 + for ; Wed, 14 Jun 2023 05:43:35 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20221208; t=1686746614; x=1689338614; + 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=Jne9SqWnJdgDpj5mkPbP6jWrorHm2Ewr8ivuyd1zKBQ=; + b=WIV1zbyEf76/AZV4av4Ab6kytOWNx4Cgr8LFRAVy0DIDj6GKOPyPg7yVsSUOtkkQPR + 4plpstbCTo2xN/epjgrDc70Y2XNal4Y8c8EZIDkfSPn7mVN3vBZscIpajCVK9oMY006G + hQ/3lRYirYKtJbAOt5oRXWqGqXdlrfXMqhDA9dRla5l3J1Px77QZiE7/czqNeryTcrSC + nQJKPLOKXZZwzI7Dcv4QtfBMI2zpkStKYCHynOnD96H1Fm/CRfc4RmKiW3UgJVfCn5eC + 5QHH+onIEDk91Izuk4qry+RAGnMwqv7WthL3hMJY2+gMuJiGbTyNsQZ2VAoD1qgVHXY9 + p/mg== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20221208; t=1686746614; x=1689338614; + 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=Jne9SqWnJdgDpj5mkPbP6jWrorHm2Ewr8ivuyd1zKBQ=; + b=bPn3UB+Nr7fgBm9Vrhg5MVBNiRLiVAR6TPvKWbUGhJ4kytAVtZPyUZrO2FJgbWkSay + uQG5vH7K+ytlJdki06QVI8h99N241iYpSqqA2GjEMWCkes4ATEyMuC112uBb66PpjHJR + 44wpSYTUdxyNSVbtOC5svYFBrcOtrWn3XptxoCrPswBAXXMloirTxyh3TqUOond2NNDc + 7cgEcz1aIYnW2s9BPIZSuCrTO491tBU3Rcd1ubL+7gbMX/Z4hG0fgUdPU6pf4oxQNZ78 + kYue8TdOqV/ksCbzxgMFPXPrwmAVAuodAoaRpDH449SvEr9TNT+k1SJEve21VwZCyZAN + k/3w== +X-Gm-Message-State: AC+VfDz+euUQ/kYf5v84y5arXPpq6LOLBmbUqMFIVVB7/TmpcGsagHMr + v64fxEF0CGVXk4pqvA+7upE= +X-Google-Smtp-Source: + ACHHUZ47g7ktmMWUGnTvkK4deYzNa9InQuYnEmy91+AuY7+Avu9rVE/HmGTqh7XE7FzZF8tB2Wscww== +X-Received: by 2002:a05:600c:364f:b0:3f6:c8c:7048 with SMTP id + y15-20020a05600c364f00b003f60c8c7048mr10715141wmq.20.1686746614238; + Wed, 14 Jun 2023 05:43:34 -0700 (PDT) +Received: from morpheus.home.roving-it.com + (3.e.2.0.0.0.0.0.0.0.0.0.0.0.0.0.1.8.6.2.1.1.b.f.0.b.8.0.1.0.0.2.ip6.arpa. + [2001:8b0:fb11:2681::2e3]) by smtp.googlemail.com with ESMTPSA id + g26-20020a7bc4da000000b003f60e143d38sm17329161wmk.11.2023.06.14.05.43.33 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Wed, 14 Jun 2023 05:43:33 -0700 (PDT) +From: Peter Robinson +To: "Matwey V. Kornilov" , + Simon Glass , Philipp Tomsich , + Kever Yang , u-boot@lists.denx.de +Cc: Peter Robinson +Subject: [PATCH 3/4] rockchip: dts: rk3328: Add rng details to u-boot.dtsi +Date: Wed, 14 Jun 2023 13:43:13 +0100 +Message-ID: <20230614124329.244462-3-pbrobinson@gmail.com> +X-Mailer: git-send-email 2.41.0 +In-Reply-To: <20230614124329.244462-1-pbrobinson@gmail.com> +References: <20230614124329.244462-1-pbrobinson@gmail.com> +MIME-Version: 1.0 +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 the rk3328 rng details to the u-boot.dtsi and +enable the RNG on the Rock64 to be able to provide +a rnadom seed via UEFI. + +Signed-off-by: Peter Robinson +--- + +The DT snippet will allow this to be enabled on other rk3328 devices but +I only have the Rock54 to test on. + + arch/arm/dts/rk3328-u-boot.dtsi | 6 ++++++ + configs/rock64-rk3328_defconfig | 2 ++ + 2 files changed, 8 insertions(+) + +diff --git a/arch/arm/dts/rk3328-u-boot.dtsi b/arch/arm/dts/rk3328-u-boot.dtsi +index ce96ce40a73..a9f2536de2a 100644 +--- a/arch/arm/dts/rk3328-u-boot.dtsi ++++ b/arch/arm/dts/rk3328-u-boot.dtsi +@@ -26,6 +26,12 @@ + 0x0 0xff720000 0x0 0x1000 + 0x0 0xff798000 0x0 0x1000>; + }; ++ ++ rng: rng@ff060000 { ++ compatible = "rockchip,cryptov1-rng"; ++ reg = <0x0 0xff060000 0x0 0x4000>; ++ status = "okay"; ++ }; + }; + + &cru { +diff --git a/configs/rock64-rk3328_defconfig b/configs/rock64-rk3328_defconfig +index 97ac8734d1b..1820deee373 100644 +--- a/configs/rock64-rk3328_defconfig ++++ b/configs/rock64-rk3328_defconfig +@@ -77,6 +77,8 @@ CONFIG_MISC=y + CONFIG_ROCKCHIP_EFUSE=y + CONFIG_MMC_DW=y + CONFIG_MMC_DW_ROCKCHIP=y ++CONFIG_DM_RNG=y ++CONFIG_RNG_ROCKCHIP=y + CONFIG_SPI_FLASH_GIGADEVICE=y + CONFIG_ETH_DESIGNWARE=y + CONFIG_GMAC_ROCKCHIP=y + +From patchwork Wed Jun 14 12:43:14 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Peter Robinson +X-Patchwork-Id: 1794952 +X-Patchwork-Delegate: ykai007@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +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=) +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=20221208 header.b=Fk8Gn/bp; + dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) + (No client certificate requested) + by legolas.ozlabs.org (Postfix) with ESMTPS id 4Qh4qx1cDFz20WR + for ; Wed, 14 Jun 2023 22:44:29 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 42BE586140; + Wed, 14 Jun 2023 14:43:47 +0200 (CEST) +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="Fk8Gn/bp"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 5363386119; Wed, 14 Jun 2023 14:43:40 +0200 (CEST) +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,SPF_HELO_NONE, + SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no + version=3.4.2 +Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com + [IPv6:2a00:1450:4864:20::432]) + (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 92EA186130 + for ; Wed, 14 Jun 2023 14:43:35 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=gmail.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=pbrobinson@gmail.com +Received: by mail-wr1-x432.google.com with SMTP id + ffacd0b85a97d-31110aea814so555f8f.2 + for ; Wed, 14 Jun 2023 05:43:35 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20221208; t=1686746615; x=1689338615; + 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=GunsDF8pMC87eoXzdmDNRZz8DMTMTGTC8JJJKs0JxI4=; + b=Fk8Gn/bpnLP7olTGYnvDxvwbEfNNa1rl1mPZ4QelJXPFqGN4+shTjFbREgSRC/dMtW + yRez1jgUlJRK7lz8uY+O+exV8NdCbcHbzvdQtHDCDnQqLKjgIPVMjLyH5VIJECxjXc8/ + FuocNJXIdjBBfLC1msErM2xm850WcNYbIZ+hPDOwpMTYitpqvM3xhwL6vIJlsBw6BqaC + C5MKw4jWH3KCYzU6kqLsP3reuse4YwOUK8BoRfC130ebJzm2MhRdj1xfOvTMNGNNKO9b + Ii5zq3BB7VZqdM3vFNWva7lFwc6nzvSx026CBWC04UbxKmp2qd8WgU/GHTgnV8lcL/sz + 5uBQ== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20221208; t=1686746615; x=1689338615; + 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=GunsDF8pMC87eoXzdmDNRZz8DMTMTGTC8JJJKs0JxI4=; + b=ZU+X/vMacHAmhpPxEEwUnlvwe6qSQQDPnUVljh0mCFS+0MlJyOgFlaJdQKr4qZ9028 + 5HU/u7kr7mvPN4LvU1sVBZ4QlyI8rrgzMl576uvBb3rZ8AQ5aQJCvUrYOPUilPyNbhWq + lDMZCjWuHeKLpwutkyLveGg0yVgYz8i4STe35fH7B3q60K/v+y9G8wFJUdN+XV8c2+Gx + MTSE42FF8tOnHkXPIFXmh4LKO5BQWAHQuYadILsFo2pUahMfroOaCT2xVQzDmC+Ur76L + Bw1TPPC/b69/qHFZwuG0/5e6ansfMs1oO6DCGOIMxLzJch7c6VC/WJql/xOnO/c4os12 + swLw== +X-Gm-Message-State: AC+VfDy9BKAtjnGx6ud2kU6GAYtOOxIFuTpeAhT+l9wtZ+C3zpK6T+ld + CD+kjgM7Fs3oCfEFfoOLmJE= +X-Google-Smtp-Source: + ACHHUZ6WCesQBbBQ0kQoCj860p1GMKM0o6UKw7uiH/CWAXkwqPWFIEw+YhmaoR6ynnvAzLDQ3IbsCw== +X-Received: by 2002:adf:fec4:0:b0:30f:ce9a:7632 with SMTP id + q4-20020adffec4000000b0030fce9a7632mr3527925wrs.67.1686746614858; + Wed, 14 Jun 2023 05:43:34 -0700 (PDT) +Received: from morpheus.home.roving-it.com + (3.e.2.0.0.0.0.0.0.0.0.0.0.0.0.0.1.8.6.2.1.1.b.f.0.b.8.0.1.0.0.2.ip6.arpa. + [2001:8b0:fb11:2681::2e3]) by smtp.googlemail.com with ESMTPSA id + g26-20020a7bc4da000000b003f60e143d38sm17329161wmk.11.2023.06.14.05.43.34 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Wed, 14 Jun 2023 05:43:34 -0700 (PDT) +From: Peter Robinson +To: "Matwey V. Kornilov" , + Simon Glass , Philipp Tomsich , + Kever Yang , u-boot@lists.denx.de +Cc: Peter Robinson +Subject: [PATCH 4/4] rockchip: dts: rk3328: rock64: Align spi flash entry +Date: Wed, 14 Jun 2023 13:43:14 +0100 +Message-ID: <20230614124329.244462-4-pbrobinson@gmail.com> +X-Mailer: git-send-email 2.41.0 +In-Reply-To: <20230614124329.244462-1-pbrobinson@gmail.com> +References: <20230614124329.244462-1-pbrobinson@gmail.com> +MIME-Version: 1.0 +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 + +Align the SPI flash entry with upstream. There's no need +to diverge here. + +Signed-off-by: Peter Robinson +Reviewed-by: Kever Yang +--- + arch/arm/dts/rk3328-rock64-u-boot.dtsi | 2 +- + arch/arm/dts/rk3328-rock64.dts | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/dts/rk3328-rock64-u-boot.dtsi b/arch/arm/dts/rk3328-rock64-u-boot.dtsi +index 849854302ee..6904515b969 100644 +--- a/arch/arm/dts/rk3328-rock64-u-boot.dtsi ++++ b/arch/arm/dts/rk3328-rock64-u-boot.dtsi +@@ -54,7 +54,7 @@ + }; + + &spi0 { +- spi_flash: spiflash@0 { ++ spi_flash: flash@0 { + bootph-all; + }; + }; +diff --git a/arch/arm/dts/rk3328-rock64.dts b/arch/arm/dts/rk3328-rock64.dts +index 1b0f7e4551e..f69a38f42d2 100644 +--- a/arch/arm/dts/rk3328-rock64.dts ++++ b/arch/arm/dts/rk3328-rock64.dts +@@ -345,7 +345,7 @@ + &spi0 { + status = "okay"; + +- spiflash@0 { ++ flash@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + diff --git a/sources b/sources index 150374f..1504d9e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2023.07.tar.bz2) = c11c2dd8e44babf7d5c15c28587139f0fa7e73833bf6d4902b46780a6ed2199d007db4fec579f10b041da478dfa8c6c21e6cee76cfd65ec6cc6860c116bbc0fb +SHA512 (u-boot-2023.10-rc2.tar.bz2) = cc3cd85c84e1d7d8e45244f330709ad5ecf918ee42aac4de565ca5e1e1cde25e89b1a8672aaac04c0bf830e36192a72caabfde3baf6633c68fa76103768be201 diff --git a/uboot-tools.spec b/uboot-tools.spec index dae5485..5774bc2 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -#global candidate rc0 +%global candidate rc2 %if 0%{?rhel} %bcond_with toolsonly %else @@ -6,8 +6,8 @@ %endif Name: uboot-tools -Version: 2023.07 -Release: 2%{?candidate:.%{candidate}}%{?dist} +Version: 2023.10 +Release: 0.1%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -20,15 +20,16 @@ Source1: aarch64-boards # Needed to find DT on boot partition that's not the first partition Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch Patch2: smbios-Simplify-reporting-of-unknown-values.patch -Patch3: 0001-disable-NFS-support-by-default.patch -Patch4: fix-release-rev.patch +Patch3: disable-VBE-by-default.patch +Patch4: enable-bootmenu-by-default.patch # Board fixes and enablement # RPi - uses RPI firmware device tree for HAT support Patch5: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch # Rockchips improvements Patch6: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch -Patch7: 0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch +Patch7: rock64-small-fixes.patch +#Patch7: 0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch BuildRequires: bc BuildRequires: bison @@ -213,6 +214,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Fri Aug 18 2023 Peter Robinson - 2023.10-0.1.rc2 +- Update to 2023.10 RC2 + * Sat Jul 22 2023 Fedora Release Engineering - 2023.07-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild From 99f3204130b5d9f77717f67c1fa08e9e06f003e5 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sat, 19 Aug 2023 14:33:37 +0100 Subject: [PATCH 154/271] Raspberry Pi standard boot --- rpi-Convert-to-standard-boot.patch | 892 +++++++++++++++++++++++++++++ uboot-tools.spec | 6 +- 2 files changed, 897 insertions(+), 1 deletion(-) create mode 100644 rpi-Convert-to-standard-boot.patch diff --git a/rpi-Convert-to-standard-boot.patch b/rpi-Convert-to-standard-boot.patch new file mode 100644 index 0000000..de02728 --- /dev/null +++ b/rpi-Convert-to-standard-boot.patch @@ -0,0 +1,892 @@ +From patchwork Thu Jul 27 21:54:28 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Simon Glass +X-Patchwork-Id: 1813968 +X-Patchwork-Delegate: pbrobinson@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +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=) +Authentication-Results: legolas.ozlabs.org; + dkim=pass (1024-bit key; + unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 + header.s=google header.b=N1JBl/Ip; + dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature ECDSA (P-384)) + (No client certificate requested) + by legolas.ozlabs.org (Postfix) with ESMTPS id 4RBl1V3MSFz1yZb + for ; Fri, 28 Jul 2023 07:55:10 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 29D6686883; + Thu, 27 Jul 2023 23:54:50 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=chromium.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; + dkim=pass (1024-bit key; + unprotected) header.d=chromium.org header.i=@chromium.org + header.b="N1JBl/Ip"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id BFC74863EE; Thu, 27 Jul 2023 23:54:44 +0200 (CEST) +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,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, + SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no + version=3.4.2 +Received: from mail-il1-x12d.google.com (mail-il1-x12d.google.com + [IPv6:2607:f8b0:4864:20::12d]) + (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 A9CE3867A8 + for ; Thu, 27 Jul 2023 23:54:41 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=chromium.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=sjg@chromium.org +Received: by mail-il1-x12d.google.com with SMTP id + e9e14a558f8ab-3466725f0beso6233385ab.1 + for ; Thu, 27 Jul 2023 14:54:41 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=chromium.org; s=google; t=1690494880; x=1691099680; + 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=PfW4qtLSfZ+bnC9lQwrjMDVmboUSfVp8v4ohkW8rjNg=; + b=N1JBl/IpuUO0bR2jxCF4K6S6GW+xv1r7HlydRFhGC+Y0jR6zVXjPOQITlZBrwEARlk + THRvjpw5qRIedk0NNo/pQCKKQqruScbjKPYX1OBI4dK8j/HkC/GExnZkrzqJlvtCNqRi + vd32bzFnA0G7Sw/tWm/fMJuxGDvemFLzoLQgg= +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20221208; t=1690494880; x=1691099680; + 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=PfW4qtLSfZ+bnC9lQwrjMDVmboUSfVp8v4ohkW8rjNg=; + b=htLAMKMTT/T5aB5rrz1DwCj312u/yXPKNVhy1hUQl0xUxGmuV261y4snpFJIp92LWY + bPTp84aFfLtyyJhH6BRikYrtWYDX1XpPE35ADFLtlQMM5GIU9q0hkifkPd7abPqf9CjN + 34tE1/jfbEQ9DVjGSSH+XObnLtGLjO2UX0/c9ws1veWcDD9e9lre0Tr0FdMyy+r4RdCC + V39BVGSWBW9Mr3+y6MVHLCblg21I+/bjRp2nviWmZbeJhx4cKepnzFGfm5KjWnIujj0D + Y86K9+ZBDN2NRnIyfK6oPrQqLMSObWKrzxurO93MsbUXmBc8FJqZwyN2XUixqo8t6Kso + pNvg== +X-Gm-Message-State: ABy/qLb0K45Zq6AUJT2FpWarTb3YBaFoeytG1lXRxYdhcArX6FKSUhG7 + DkuKoL8etDw0hNEDFIyMz2KF4qEO37wmml3Qc3M= +X-Google-Smtp-Source: + APBJJlG54VUHOmyZVhkSmMpIiz5S/hblBzg2zwJFl+9fxJRZJWQN2zHspMrpRxc36G3YPyvYcXHJ4A== +X-Received: by 2002:a05:6e02:1ba5:b0:347:6f47:bb2 with SMTP id + n5-20020a056e021ba500b003476f470bb2mr889940ili.19.1690494880268; + Thu, 27 Jul 2023 14:54:40 -0700 (PDT) +Received: from sjg1.lan (c-73-14-173-85.hsd1.co.comcast.net. [73.14.173.85]) + by smtp.gmail.com with ESMTPSA id + n28-20020a02cc1c000000b00430245071ddsm679215jap.176.2023.07.27.14.54.39 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Thu, 27 Jul 2023 14:54:40 -0700 (PDT) +From: Simon Glass +To: U-Boot Mailing List +Cc: Tom Rini , Peter Robinson , + Simon Glass , Albert Aribaud , + Matthias Brugger , Stephen Warren , + Stephen Warren +Subject: [RESEND PATCH v3 1/3] arm: rpi: Switch to standard boot +Date: Thu, 27 Jul 2023 15:54:28 -0600 +Message-ID: <20230727215433.578830-2-sjg@chromium.org> +X-Mailer: git-send-email 2.41.0.487.g6d72f3e995-goog +In-Reply-To: <20230727215433.578830-1-sjg@chromium.org> +References: <20230727215433.578830-1-sjg@chromium.org> +MIME-Version: 1.0 +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 + +Drop use of the distro scripts and use standard boot instead. + +We don't need to specify the mmc devices individually, since they are +used in order from 0 to 2, and standard boot uses that order anyway. + +Signed-off-by: Simon Glass +--- + +Changes in v3: +- Rebase to -master + +Changes in v2: +- Rebase to -next + + configs/rpi_0_w_defconfig | 1 + + configs/rpi_2_defconfig | 1 + + configs/rpi_3_32b_defconfig | 1 + + configs/rpi_3_b_plus_defconfig | 1 + + configs/rpi_3_defconfig | 1 + + configs/rpi_4_32b_defconfig | 1 + + configs/rpi_4_defconfig | 1 + + configs/rpi_arm64_defconfig | 1 + + configs/rpi_defconfig | 1 + + include/configs/rpi.h | 38 ++-------------------------------- + 10 files changed, 11 insertions(+), 36 deletions(-) + +diff --git a/configs/rpi_0_w_defconfig b/configs/rpi_0_w_defconfig +index 5da334a8bcf9..7554e671e2ca 100644 +--- a/configs/rpi_0_w_defconfig ++++ b/configs/rpi_0_w_defconfig +@@ -12,6 +12,7 @@ CONFIG_DEFAULT_DEVICE_TREE="bcm2835-rpi-zero-w" + CONFIG_SYS_PROMPT="U-Boot> " + CONFIG_OF_LIBFDT_OVERLAY=y + CONFIG_SYS_LOAD_ADDR=0x1000000 ++CONFIG_BOOTSTD_DEFAULTS=y + CONFIG_OF_BOARD_SETUP=y + CONFIG_DISTRO_DEFAULTS=y + CONFIG_USE_PREBOOT=y +diff --git a/configs/rpi_2_defconfig b/configs/rpi_2_defconfig +index 990862160712..653f78bec1e8 100644 +--- a/configs/rpi_2_defconfig ++++ b/configs/rpi_2_defconfig +@@ -13,6 +13,7 @@ CONFIG_DEFAULT_DEVICE_TREE="bcm2836-rpi-2-b" + CONFIG_SYS_PROMPT="U-Boot> " + CONFIG_OF_LIBFDT_OVERLAY=y + CONFIG_SYS_LOAD_ADDR=0x1000000 ++CONFIG_BOOTSTD_DEFAULTS=y + CONFIG_OF_BOARD_SETUP=y + CONFIG_DISTRO_DEFAULTS=y + CONFIG_USE_PREBOOT=y +diff --git a/configs/rpi_3_32b_defconfig b/configs/rpi_3_32b_defconfig +index 80885aa9488d..305f1dacfd46 100644 +--- a/configs/rpi_3_32b_defconfig ++++ b/configs/rpi_3_32b_defconfig +@@ -12,6 +12,7 @@ CONFIG_DEFAULT_DEVICE_TREE="bcm2837-rpi-3-b" + CONFIG_SYS_PROMPT="U-Boot> " + CONFIG_OF_LIBFDT_OVERLAY=y + CONFIG_SYS_LOAD_ADDR=0x1000000 ++CONFIG_BOOTSTD_DEFAULTS=y + CONFIG_OF_BOARD_SETUP=y + CONFIG_DISTRO_DEFAULTS=y + CONFIG_USE_PREBOOT=y +diff --git a/configs/rpi_3_b_plus_defconfig b/configs/rpi_3_b_plus_defconfig +index 0acce8b883f8..f36f1258aa6d 100644 +--- a/configs/rpi_3_b_plus_defconfig ++++ b/configs/rpi_3_b_plus_defconfig +@@ -11,6 +11,7 @@ CONFIG_DEFAULT_DEVICE_TREE="bcm2837-rpi-3-b-plus" + CONFIG_SYS_PROMPT="U-Boot> " + CONFIG_OF_LIBFDT_OVERLAY=y + CONFIG_SYS_LOAD_ADDR=0x1000000 ++CONFIG_BOOTSTD_DEFAULTS=y + CONFIG_OF_BOARD_SETUP=y + CONFIG_DISTRO_DEFAULTS=y + CONFIG_USE_PREBOOT=y +diff --git a/configs/rpi_3_defconfig b/configs/rpi_3_defconfig +index bb6fe128061b..a0d8be42537f 100644 +--- a/configs/rpi_3_defconfig ++++ b/configs/rpi_3_defconfig +@@ -11,6 +11,7 @@ CONFIG_DEFAULT_DEVICE_TREE="bcm2837-rpi-3-b" + CONFIG_SYS_PROMPT="U-Boot> " + CONFIG_OF_LIBFDT_OVERLAY=y + CONFIG_SYS_LOAD_ADDR=0x1000000 ++CONFIG_BOOTSTD_DEFAULTS=y + CONFIG_OF_BOARD_SETUP=y + CONFIG_DISTRO_DEFAULTS=y + CONFIG_USE_PREBOOT=y +diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig +index f6213340971e..71f61c52e52d 100644 +--- a/configs/rpi_4_32b_defconfig ++++ b/configs/rpi_4_32b_defconfig +@@ -10,6 +10,7 @@ CONFIG_SYS_PROMPT="U-Boot> " + CONFIG_OF_LIBFDT_OVERLAY=y + CONFIG_DM_RESET=y + CONFIG_SYS_LOAD_ADDR=0x1000000 ++CONFIG_BOOTSTD_DEFAULTS=y + CONFIG_PCI=y + CONFIG_OF_BOARD_SETUP=y + CONFIG_DISTRO_DEFAULTS=y +diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig +index bbc0fd6c649a..fa2c05da21e8 100644 +--- a/configs/rpi_4_defconfig ++++ b/configs/rpi_4_defconfig +@@ -10,6 +10,7 @@ CONFIG_SYS_PROMPT="U-Boot> " + CONFIG_OF_LIBFDT_OVERLAY=y + CONFIG_DM_RESET=y + CONFIG_SYS_LOAD_ADDR=0x1000000 ++CONFIG_BOOTSTD_DEFAULTS=y + CONFIG_PCI=y + CONFIG_OF_BOARD_SETUP=y + CONFIG_DISTRO_DEFAULTS=y +diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig +index 5d9a273cb920..3e64573b70b1 100644 +--- a/configs/rpi_arm64_defconfig ++++ b/configs/rpi_arm64_defconfig +@@ -10,6 +10,7 @@ CONFIG_SYS_PROMPT="U-Boot> " + CONFIG_OF_LIBFDT_OVERLAY=y + CONFIG_DM_RESET=y + CONFIG_SYS_LOAD_ADDR=0x1000000 ++CONFIG_BOOTSTD_DEFAULTS=y + CONFIG_PCI=y + CONFIG_OF_BOARD_SETUP=y + CONFIG_DISTRO_DEFAULTS=y +diff --git a/configs/rpi_defconfig b/configs/rpi_defconfig +index 550b8dcb9587..4b8e402c89d4 100644 +--- a/configs/rpi_defconfig ++++ b/configs/rpi_defconfig +@@ -12,6 +12,7 @@ CONFIG_DEFAULT_DEVICE_TREE="bcm2835-rpi-b" + CONFIG_SYS_PROMPT="U-Boot> " + CONFIG_OF_LIBFDT_OVERLAY=y + CONFIG_SYS_LOAD_ADDR=0x1000000 ++CONFIG_BOOTSTD_DEFAULTS=y + CONFIG_OF_BOARD_SETUP=y + CONFIG_DISTRO_DEFAULTS=y + CONFIG_USE_PREBOOT=y +diff --git a/include/configs/rpi.h b/include/configs/rpi.h +index 4da982f73578..4160db2d8e14 100644 +--- a/include/configs/rpi.h ++++ b/include/configs/rpi.h +@@ -122,47 +122,13 @@ + "fdt_addr_r=0x02600000\0" \ + "ramdisk_addr_r=0x02700000\0" + +-#if IS_ENABLED(CONFIG_CMD_MMC) +- #define BOOT_TARGET_MMC(func) \ +- func(MMC, mmc, 0) \ +- func(MMC, mmc, 1) \ +- func(MMC, mmc, 2) +-#else +- #define BOOT_TARGET_MMC(func) +-#endif +- +-#if IS_ENABLED(CONFIG_CMD_USB) +- #define BOOT_TARGET_USB(func) func(USB, usb, 0) +-#else +- #define BOOT_TARGET_USB(func) +-#endif +- +-#if CONFIG_IS_ENABLED(CMD_PXE) +- #define BOOT_TARGET_PXE(func) func(PXE, pxe, na) +-#else +- #define BOOT_TARGET_PXE(func) +-#endif +- +-#if CONFIG_IS_ENABLED(CMD_DHCP) +- #define BOOT_TARGET_DHCP(func) func(DHCP, dhcp, na) +-#else +- #define BOOT_TARGET_DHCP(func) +-#endif +- +-#define BOOT_TARGET_DEVICES(func) \ +- BOOT_TARGET_MMC(func) \ +- BOOT_TARGET_USB(func) \ +- BOOT_TARGET_PXE(func) \ +- BOOT_TARGET_DHCP(func) +- +-#include ++#define BOOT_TARGETS "mmc usb pxe dhcp" + + #define CFG_EXTRA_ENV_SETTINGS \ + "dhcpuboot=usb start; dhcp u-boot.uimg; bootm\0" \ + ENV_DEVICE_SETTINGS \ + ENV_DFU_SETTINGS \ + ENV_MEM_LAYOUT_SETTINGS \ +- BOOTENV +- ++ "boot_targets=" BOOT_TARGETS "\0" + + #endif + +From patchwork Thu Jul 27 21:54:29 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Simon Glass +X-Patchwork-Id: 1813969 +X-Patchwork-Delegate: pbrobinson@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +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=) +Authentication-Results: legolas.ozlabs.org; + dkim=pass (1024-bit key; + unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 + header.s=google header.b=nzf25ZVl; + dkim-atps=neutral +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 (P-384) server-digest SHA384) + (No client certificate requested) + by legolas.ozlabs.org (Postfix) with ESMTPS id 4RBl1p1S1xz1yZb + for ; Fri, 28 Jul 2023 07:55:26 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id CEB4186898; + Thu, 27 Jul 2023 23:55:12 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=chromium.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; + dkim=pass (1024-bit key; + unprotected) header.d=chromium.org header.i=@chromium.org + header.b="nzf25ZVl"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id A550186437; Thu, 27 Jul 2023 23:54:46 +0200 (CEST) +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,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, + SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no + version=3.4.2 +Received: from mail-io1-xd35.google.com (mail-io1-xd35.google.com + [IPv6:2607:f8b0:4864:20::d35]) + (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 848728687F + for ; Thu, 27 Jul 2023 23:54:42 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=chromium.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=sjg@chromium.org +Received: by mail-io1-xd35.google.com with SMTP id + ca18e2360f4ac-7906614bc90so37744039f.3 + for ; Thu, 27 Jul 2023 14:54:42 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=chromium.org; s=google; t=1690494881; x=1691099681; + 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=rvJFSxuX2uR5MvGPMP0r8JMhRHphT9SXIfCxnVxNK0U=; + b=nzf25ZVlr+TPb8i9KPe94q+xnslw0eiim8ufkD20J+REgYqV1+bfKhPYKo45AkO/Cs + 4b6fZA33NLf5U7qgGo7v+urHNiAPER6YN1bXI9hJSNAEtM13z2v621IsEFffyVMcM85C + 4AMfUiBclfET9Wn0oQnsQ5JK94HV4jlQugZzQ= +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20221208; t=1690494881; x=1691099681; + 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=rvJFSxuX2uR5MvGPMP0r8JMhRHphT9SXIfCxnVxNK0U=; + b=SWZg15tnmLFbQbK+nDA8NsoxsfTOrSK/kUZE8JUBjXnb/EfYfPfZWjBXdTlOT0hTzs + Do1oyQ0GpF9az6Cx1cJaNL+6/ndCRmpmhbQqCvSRgBsAKnQp00cgnet2sm4yVWfiF5PX + 2qaBEeb9gg636lDes6X4aWDvc+t+OzxAlyoh09leqtoNsYaZ9IaM0yoiS8fr0BiqJMrg + MSYnMIsBLMm+jhgQFf2e8ur5tdy7JpF2W9IWlzTu24aMYaDO7jzv2OPLE4yabyZoUIxZ + VGKiZBQssS0Xb/sjea7V65wIws1WhJUfrh088lrlqAdsj+ZlnkWnVhBhlZPR+tkRHWJZ + HcHw== +X-Gm-Message-State: ABy/qLaVdYCT7tOkUReGBSdg/9KznV2sYfo8iTdWbZcW3wegZxOZfpEX + rfBbszTe7MI5Zzj4HA69r3jTlgsxblkKBaKi4I0= +X-Google-Smtp-Source: + APBJJlGWO4DcArS83mKgiEVe92ZPEk/c3kJN6Gj7ZAwNVPMXoPhbtveScu/4+gTrfnrjCxTkZP9a3g== +X-Received: by 2002:a05:6602:682:b0:787:1d53:e6cc with SMTP id + dp2-20020a056602068200b007871d53e6ccmr874039iob.21.1690494881076; + Thu, 27 Jul 2023 14:54:41 -0700 (PDT) +Received: from sjg1.lan (c-73-14-173-85.hsd1.co.comcast.net. [73.14.173.85]) + by smtp.gmail.com with ESMTPSA id + n28-20020a02cc1c000000b00430245071ddsm679215jap.176.2023.07.27.14.54.40 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Thu, 27 Jul 2023 14:54:40 -0700 (PDT) +From: Simon Glass +To: U-Boot Mailing List +Cc: Tom Rini , Peter Robinson , + Simon Glass , Matthias Brugger , + Stephen Warren , Stephen Warren +Subject: [RESEND PATCH v3 2/3] rpi: Disable DISTRO_DEFAULTS +Date: Thu, 27 Jul 2023 15:54:29 -0600 +Message-ID: <20230727215433.578830-3-sjg@chromium.org> +X-Mailer: git-send-email 2.41.0.487.g6d72f3e995-goog +In-Reply-To: <20230727215433.578830-1-sjg@chromium.org> +References: <20230727215433.578830-1-sjg@chromium.org> +MIME-Version: 1.0 +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 + +Disable this option to reclaim some space, since bootstd requires less +functionality to operate (e.g. hush parser). + +Signed-off-by: Simon Glass +--- + +(no changes since v2) + +Changes in v2: +- Add new patch to disable DISTRO_DEFAULTS + + configs/rpi_0_w_defconfig | 1 - + configs/rpi_2_defconfig | 1 - + configs/rpi_3_32b_defconfig | 1 - + configs/rpi_3_b_plus_defconfig | 1 - + configs/rpi_3_defconfig | 1 - + configs/rpi_4_32b_defconfig | 1 - + configs/rpi_4_defconfig | 1 - + configs/rpi_arm64_defconfig | 1 - + configs/rpi_defconfig | 1 - + 9 files changed, 9 deletions(-) + +diff --git a/configs/rpi_0_w_defconfig b/configs/rpi_0_w_defconfig +index 7554e671e2ca..3167bfbe48f7 100644 +--- a/configs/rpi_0_w_defconfig ++++ b/configs/rpi_0_w_defconfig +@@ -14,7 +14,6 @@ CONFIG_OF_LIBFDT_OVERLAY=y + CONFIG_SYS_LOAD_ADDR=0x1000000 + CONFIG_BOOTSTD_DEFAULTS=y + CONFIG_OF_BOARD_SETUP=y +-CONFIG_DISTRO_DEFAULTS=y + CONFIG_USE_PREBOOT=y + # CONFIG_DISPLAY_CPUINFO is not set + # CONFIG_DISPLAY_BOARDINFO is not set +diff --git a/configs/rpi_2_defconfig b/configs/rpi_2_defconfig +index 653f78bec1e8..883dab161702 100644 +--- a/configs/rpi_2_defconfig ++++ b/configs/rpi_2_defconfig +@@ -15,7 +15,6 @@ CONFIG_OF_LIBFDT_OVERLAY=y + CONFIG_SYS_LOAD_ADDR=0x1000000 + CONFIG_BOOTSTD_DEFAULTS=y + CONFIG_OF_BOARD_SETUP=y +-CONFIG_DISTRO_DEFAULTS=y + CONFIG_USE_PREBOOT=y + # CONFIG_DISPLAY_CPUINFO is not set + # CONFIG_DISPLAY_BOARDINFO is not set +diff --git a/configs/rpi_3_32b_defconfig b/configs/rpi_3_32b_defconfig +index 305f1dacfd46..5ff7d987a431 100644 +--- a/configs/rpi_3_32b_defconfig ++++ b/configs/rpi_3_32b_defconfig +@@ -14,7 +14,6 @@ CONFIG_OF_LIBFDT_OVERLAY=y + CONFIG_SYS_LOAD_ADDR=0x1000000 + CONFIG_BOOTSTD_DEFAULTS=y + CONFIG_OF_BOARD_SETUP=y +-CONFIG_DISTRO_DEFAULTS=y + CONFIG_USE_PREBOOT=y + # CONFIG_DISPLAY_CPUINFO is not set + # CONFIG_DISPLAY_BOARDINFO is not set +diff --git a/configs/rpi_3_b_plus_defconfig b/configs/rpi_3_b_plus_defconfig +index f36f1258aa6d..31f2a6eb310c 100644 +--- a/configs/rpi_3_b_plus_defconfig ++++ b/configs/rpi_3_b_plus_defconfig +@@ -13,7 +13,6 @@ CONFIG_OF_LIBFDT_OVERLAY=y + CONFIG_SYS_LOAD_ADDR=0x1000000 + CONFIG_BOOTSTD_DEFAULTS=y + CONFIG_OF_BOARD_SETUP=y +-CONFIG_DISTRO_DEFAULTS=y + CONFIG_USE_PREBOOT=y + # CONFIG_DISPLAY_CPUINFO is not set + # CONFIG_DISPLAY_BOARDINFO is not set +diff --git a/configs/rpi_3_defconfig b/configs/rpi_3_defconfig +index a0d8be42537f..fa6e1507d640 100644 +--- a/configs/rpi_3_defconfig ++++ b/configs/rpi_3_defconfig +@@ -13,7 +13,6 @@ CONFIG_OF_LIBFDT_OVERLAY=y + CONFIG_SYS_LOAD_ADDR=0x1000000 + CONFIG_BOOTSTD_DEFAULTS=y + CONFIG_OF_BOARD_SETUP=y +-CONFIG_DISTRO_DEFAULTS=y + CONFIG_USE_PREBOOT=y + # CONFIG_DISPLAY_CPUINFO is not set + # CONFIG_DISPLAY_BOARDINFO is not set +diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig +index 71f61c52e52d..55bf6c0770f0 100644 +--- a/configs/rpi_4_32b_defconfig ++++ b/configs/rpi_4_32b_defconfig +@@ -13,7 +13,6 @@ CONFIG_SYS_LOAD_ADDR=0x1000000 + CONFIG_BOOTSTD_DEFAULTS=y + CONFIG_PCI=y + CONFIG_OF_BOARD_SETUP=y +-CONFIG_DISTRO_DEFAULTS=y + CONFIG_USE_PREBOOT=y + CONFIG_PREBOOT="pci enum; usb start;" + # CONFIG_DISPLAY_CPUINFO is not set +diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig +index fa2c05da21e8..6679cce9a165 100644 +--- a/configs/rpi_4_defconfig ++++ b/configs/rpi_4_defconfig +@@ -13,7 +13,6 @@ CONFIG_SYS_LOAD_ADDR=0x1000000 + CONFIG_BOOTSTD_DEFAULTS=y + CONFIG_PCI=y + CONFIG_OF_BOARD_SETUP=y +-CONFIG_DISTRO_DEFAULTS=y + CONFIG_USE_PREBOOT=y + CONFIG_PREBOOT="pci enum; usb start;" + # CONFIG_DISPLAY_CPUINFO is not set +diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig +index 3e64573b70b1..26e29ffb5a1f 100644 +--- a/configs/rpi_arm64_defconfig ++++ b/configs/rpi_arm64_defconfig +@@ -13,7 +13,6 @@ CONFIG_SYS_LOAD_ADDR=0x1000000 + CONFIG_BOOTSTD_DEFAULTS=y + CONFIG_PCI=y + CONFIG_OF_BOARD_SETUP=y +-CONFIG_DISTRO_DEFAULTS=y + CONFIG_USE_PREBOOT=y + CONFIG_PREBOOT="pci enum; usb start;" + # CONFIG_DISPLAY_CPUINFO is not set +diff --git a/configs/rpi_defconfig b/configs/rpi_defconfig +index 4b8e402c89d4..0ac5efec717b 100644 +--- a/configs/rpi_defconfig ++++ b/configs/rpi_defconfig +@@ -14,7 +14,6 @@ CONFIG_OF_LIBFDT_OVERLAY=y + CONFIG_SYS_LOAD_ADDR=0x1000000 + CONFIG_BOOTSTD_DEFAULTS=y + CONFIG_OF_BOARD_SETUP=y +-CONFIG_DISTRO_DEFAULTS=y + CONFIG_USE_PREBOOT=y + # CONFIG_DISPLAY_CPUINFO is not set + # CONFIG_DISPLAY_BOARDINFO is not set + +From patchwork Thu Jul 27 21:54:30 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Simon Glass +X-Patchwork-Id: 1813970 +X-Patchwork-Delegate: pbrobinson@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +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=) +Authentication-Results: legolas.ozlabs.org; + dkim=pass (1024-bit key; + unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 + header.s=google header.b=mBws8fys; + dkim-atps=neutral +Received: from phobos.denx.de (phobos.denx.de + [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature ECDSA (P-384)) + (No client certificate requested) + by legolas.ozlabs.org (Postfix) with ESMTPS id 4RBl220N1zz1yZb + for ; Fri, 28 Jul 2023 07:55:38 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 7E187868A9; + Thu, 27 Jul 2023 23:55:29 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=chromium.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; + dkim=pass (1024-bit key; + unprotected) header.d=chromium.org header.i=@chromium.org + header.b="mBws8fys"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 7F3798687F; Thu, 27 Jul 2023 23:54:47 +0200 (CEST) +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,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, + SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no + version=3.4.2 +Received: from mail-io1-xd31.google.com (mail-io1-xd31.google.com + [IPv6:2607:f8b0:4864:20::d31]) + (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 6FD6A86883 + for ; Thu, 27 Jul 2023 23:54:43 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=chromium.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=sjg@chromium.org +Received: by mail-io1-xd31.google.com with SMTP id + ca18e2360f4ac-7878e573827so57883239f.1 + for ; Thu, 27 Jul 2023 14:54:43 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=chromium.org; s=google; t=1690494882; x=1691099682; + 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=YMeq2z0BceWJEeXZ+KPCl2/DO9snM/APf71IQJ8+EHM=; + b=mBws8fysMfDnws5xSckJmwYoFnbO4f08B6wlUEznhDpb/FVohJO+FmfQbnHUDUDsSy + Ee6d5JuG8wVUQSapqqsi2JXsNwfvnzsA0e7QaUoJptoauwkl1oKG+AZ91ThkEcjXdL6O + RK775AhnEeLE5jMuVBfe9uFq6Re05aeM+vdsU= +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20221208; t=1690494882; x=1691099682; + 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=YMeq2z0BceWJEeXZ+KPCl2/DO9snM/APf71IQJ8+EHM=; + b=JCEGP9SG2bCGvzpYyon4ZvzAorqfIf8zfk2pJUGBNzjUUgshrJ61sNPKq511ECI9Iq + 4yxAoqYQDXgSv32IWK7fI0cGnv7QlyXjPSVE42G6W+gO2BZAnd0nUhwVSoV4Llz1vwx5 + RVOUfXyUZVtm/98JYyMavbvbNvnFy2RmefMLDz3Q3ES8eb7l8KclgtnPTpvsNdO4pw4W + MVzDzaNyuZq1tfHjYJz1UTC7G5rfiqkgThZbvc0VAa3wEnxtT4xxFIfebHKkyqbLqQ/6 + CfuFspsQDYnNZ4pVUaM9P6SWPzRKLIFCThE3AZDKEjW9hb9O1MOTzablkioHKNFipH2v + 8aPw== +X-Gm-Message-State: ABy/qLbiMvFNCnHAWkxWhayqbqcbzPbE/txTwyh8SaP8/5b7BdEzsSap + DdDHhSzoDCe+X4IQmkeApNsbmjJmALrfhBJBa1E= +X-Google-Smtp-Source: + APBJJlE+7X+YHtsSdv0glv6+7e+JF2c+SP9bOM3kvNRjEtcpLydgTQTDsxizlaaU3s5ZzSPXDsW9LQ== +X-Received: by 2002:a6b:d902:0:b0:786:cd9b:1ccd with SMTP id + r2-20020a6bd902000000b00786cd9b1ccdmr812254ioc.0.1690494881976; + Thu, 27 Jul 2023 14:54:41 -0700 (PDT) +Received: from sjg1.lan (c-73-14-173-85.hsd1.co.comcast.net. [73.14.173.85]) + by smtp.gmail.com with ESMTPSA id + n28-20020a02cc1c000000b00430245071ddsm679215jap.176.2023.07.27.14.54.41 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Thu, 27 Jul 2023 14:54:41 -0700 (PDT) +From: Simon Glass +To: U-Boot Mailing List +Cc: Tom Rini , Peter Robinson , + Simon Glass , Albert Aribaud , + Matthias Brugger , Stephen Warren , + Stephen Warren +Subject: [RESEND PATCH v3 3/3] arm: rpi: Switch to a text environment +Date: Thu, 27 Jul 2023 15:54:30 -0600 +Message-ID: <20230727215433.578830-4-sjg@chromium.org> +X-Mailer: git-send-email 2.41.0.487.g6d72f3e995-goog +In-Reply-To: <20230727215433.578830-1-sjg@chromium.org> +References: <20230727215433.578830-1-sjg@chromium.org> +MIME-Version: 1.0 +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 + +Use the new environment format so we can drop most of the config.h file. + +Signed-off-by: Simon Glass +--- + +(no changes since v1) + + board/raspberrypi/rpi/rpi.env | 77 ++++++++++++++++++++++++++ + include/configs/rpi.h | 100 ---------------------------------- + 2 files changed, 77 insertions(+), 100 deletions(-) + create mode 100644 board/raspberrypi/rpi/rpi.env + +diff --git a/board/raspberrypi/rpi/rpi.env b/board/raspberrypi/rpi/rpi.env +new file mode 100644 +index 000000000000..30228285edde +--- /dev/null ++++ b/board/raspberrypi/rpi/rpi.env +@@ -0,0 +1,77 @@ ++/* SPDX-License-Identifier: GPL-2.0+ */ ++ ++/* environment for Raspberry Pi boards */ ++ ++dhcpuboot=usb start; dhcp u-boot.uimg; bootm ++ ++/* Environment */ ++stdin=serial,usbkbd ++stdout=serial,vidconsole ++stderr=serial,vidconsole ++ ++/* DFU over USB/UDC */ ++#ifdef CONFIG_CMD_DFU ++dfu_alt_info=u-boot.bin fat 0 1;uboot.env fat 0 1; ++ config.txt fat 0 1; ++#ifdef CONFIG_ARM64 ++dfu_alt_info+=Image fat 0 1 ++#else ++dfu_alt_info+=zImage fat 0 1 ++#endif ++#endif /* CONFIG_CMD_DFU */ ++ ++/* ++ * Memory layout for where various images get loaded by boot scripts: ++ * ++ * I suspect address 0 is used as the SMP pen on the RPi2, so avoid this. ++ * ++ * Older versions of the boot firmware place the firmware-loaded DTB at 0x100, ++ * newer versions place it in high memory. So prevent U-Boot from doing its own ++ * DTB + initrd relocation so that we won't accidentally relocate the initrd ++ * over the firmware-loaded DTB and generally try to lay out things starting ++ * from the bottom of RAM. ++ * ++ * kernel_addr_r has different constraints on ARM and Aarch64. For 32-bit ARM, ++ * it must be within the first 128M of RAM in order for the kernel's ++ * CONFIG_AUTO_ZRELADDR option to work. The kernel itself will be decompressed ++ * to 0x8000 but the decompressor clobbers 0x4000-0x8000 as well. The ++ * decompressor also likes to relocate itself to right past the end of the ++ * decompressed kernel, so in total the sum of the compressed and ++ * decompressed kernel needs to be reserved. ++ * ++ * For Aarch64, the kernel image is uncompressed and must be loaded at ++ * text_offset bytes (specified in the header of the Image) into a 2MB ++ * boundary. The 'booti' command relocates the image if necessary. Linux uses ++ * a default text_offset of 0x80000. In summary, loading at 0x80000 ++ * satisfies all these constraints and reserving memory up to 0x02400000 ++ * permits fairly large (roughly 36M) kernels. ++ * ++ * scriptaddr and pxefile_addr_r can be pretty much anywhere that doesn't ++ * conflict with something else. Reserving 1M for each of them at ++ * 0x02400000-0x02500000 and 0x02500000-0x02600000 should be plenty. ++ * ++ * On ARM, both the DTB and any possible initrd must be loaded such that they ++ * fit inside the lowmem mapping in Linux. In practice, this usually means not ++ * more than ~700M away from the start of the kernel image but this number can ++ * be larger OR smaller depending on e.g. the 'vmalloc=xxxM' command line ++ * parameter given to the kernel. So reserving memory from low to high ++ * satisfies this constraint again. Reserving 1M at 0x02600000-0x02700000 for ++ * the DTB leaves rest of the free RAM to the initrd starting at 0x02700000. ++ * Even with the smallest possible CPU-GPU memory split of the CPU getting ++ * only 64M, the remaining 25M starting at 0x02700000 should allow quite ++ * large initrds before they start colliding with U-Boot. ++ */ ++#ifdef CONFIG_ARM64 ++fdt_high=ffffffffffffffff ++initrd_high=ffffffffffffffff ++#else ++fdt_high=ffffffff ++initrd_high=ffffffff ++#endif ++kernel_addr_r=0x00080000 ++scriptaddr=0x02400000 ++pxefile_addr_r=0x02500000 ++fdt_addr_r=0x02600000 ++ramdisk_addr_r=0x02700000 ++ ++boot_targets=mmc usb pxe dhcp +diff --git a/include/configs/rpi.h b/include/configs/rpi.h +index 4160db2d8e14..8e56bdc84a89 100644 +--- a/include/configs/rpi.h ++++ b/include/configs/rpi.h +@@ -13,8 +13,6 @@ + #include + #endif + +-/* Architecture, CPU, etc.*/ +- + /* Use SoC timer for AArch32, but architected timer for AArch64 */ + #ifndef CONFIG_ARM64 + #define CFG_SYS_TIMER_RATE 1000000 +@@ -33,102 +31,4 @@ + */ + #define CFG_SYS_SDRAM_SIZE SZ_128M + +-/* Devices */ +-/* LCD */ +- +-/* DFU over USB/UDC */ +-#ifdef CONFIG_CMD_DFU +-#ifdef CONFIG_ARM64 +-#define KERNEL_FILENAME "Image" +-#else +-#define KERNEL_FILENAME "zImage" +-#endif +- +-#define ENV_DFU_SETTINGS \ +- "dfu_alt_info=u-boot.bin fat 0 1;uboot.env fat 0 1;" \ +- "config.txt fat 0 1;" \ +- KERNEL_FILENAME " fat 0 1\0" +-#else +-#define ENV_DFU_SETTINGS "" +-#endif +- +-/* Console configuration */ +- +-/* Environment */ +- +-/* Shell */ +- +-/* Environment */ +-#define ENV_DEVICE_SETTINGS \ +- "stdin=serial,usbkbd\0" \ +- "stdout=serial,vidconsole\0" \ +- "stderr=serial,vidconsole\0" +- +-#ifdef CONFIG_ARM64 +-#define FDT_HIGH "ffffffffffffffff" +-#define INITRD_HIGH "ffffffffffffffff" +-#else +-#define FDT_HIGH "ffffffff" +-#define INITRD_HIGH "ffffffff" +-#endif +- +-/* +- * Memory layout for where various images get loaded by boot scripts: +- * +- * I suspect address 0 is used as the SMP pen on the RPi2, so avoid this. +- * +- * Older versions of the boot firmware place the firmware-loaded DTB at 0x100, +- * newer versions place it in high memory. So prevent U-Boot from doing its own +- * DTB + initrd relocation so that we won't accidentally relocate the initrd +- * over the firmware-loaded DTB and generally try to lay out things starting +- * from the bottom of RAM. +- * +- * kernel_addr_r has different constraints on ARM and Aarch64. For 32-bit ARM, +- * it must be within the first 128M of RAM in order for the kernel's +- * CONFIG_AUTO_ZRELADDR option to work. The kernel itself will be decompressed +- * to 0x8000 but the decompressor clobbers 0x4000-0x8000 as well. The +- * decompressor also likes to relocate itself to right past the end of the +- * decompressed kernel, so in total the sum of the compressed and and +- * decompressed kernel needs to be reserved. +- * +- * For Aarch64, the kernel image is uncompressed and must be loaded at +- * text_offset bytes (specified in the header of the Image) into a 2MB +- * boundary. The 'booti' command relocates the image if necessary. Linux uses +- * a default text_offset of 0x80000. In summary, loading at 0x80000 +- * satisfies all these constraints and reserving memory up to 0x02400000 +- * permits fairly large (roughly 36M) kernels. +- * +- * scriptaddr and pxefile_addr_r can be pretty much anywhere that doesn't +- * conflict with something else. Reserving 1M for each of them at +- * 0x02400000-0x02500000 and 0x02500000-0x02600000 should be plenty. +- * +- * On ARM, both the DTB and any possible initrd must be loaded such that they +- * fit inside the lowmem mapping in Linux. In practice, this usually means not +- * more than ~700M away from the start of the kernel image but this number can +- * be larger OR smaller depending on e.g. the 'vmalloc=xxxM' command line +- * parameter given to the kernel. So reserving memory from low to high +- * satisfies this constraint again. Reserving 1M at 0x02600000-0x02700000 for +- * the DTB leaves rest of the free RAM to the initrd starting at 0x02700000. +- * Even with the smallest possible CPU-GPU memory split of the CPU getting +- * only 64M, the remaining 25M starting at 0x02700000 should allow quite +- * large initrds before they start colliding with U-Boot. +- */ +-#define ENV_MEM_LAYOUT_SETTINGS \ +- "fdt_high=" FDT_HIGH "\0" \ +- "initrd_high=" INITRD_HIGH "\0" \ +- "kernel_addr_r=0x00080000\0" \ +- "scriptaddr=0x02400000\0" \ +- "pxefile_addr_r=0x02500000\0" \ +- "fdt_addr_r=0x02600000\0" \ +- "ramdisk_addr_r=0x02700000\0" +- +-#define BOOT_TARGETS "mmc usb pxe dhcp" +- +-#define CFG_EXTRA_ENV_SETTINGS \ +- "dhcpuboot=usb start; dhcp u-boot.uimg; bootm\0" \ +- ENV_DEVICE_SETTINGS \ +- ENV_DFU_SETTINGS \ +- ENV_MEM_LAYOUT_SETTINGS \ +- "boot_targets=" BOOT_TARGETS "\0" +- + #endif diff --git a/uboot-tools.spec b/uboot-tools.spec index 5774bc2..bd19b50 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2023.10 -Release: 0.1%{?candidate:.%{candidate}}%{?dist} +Release: 0.2%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -30,6 +30,7 @@ Patch5: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch Patch6: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch Patch7: rock64-small-fixes.patch #Patch7: 0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch +Patch8: rpi-Convert-to-standard-boot.patch BuildRequires: bc BuildRequires: bison @@ -214,6 +215,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Sat Aug 19 2023 Peter Robinson - 2023.10-0.2.rc2 +- Add patch for Raspberry Pi boot + * Fri Aug 18 2023 Peter Robinson - 2023.10-0.1.rc2 - Update to 2023.10 RC2 From c151f709dedf15e1c47633d72d73cf0518814e93 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 21 Aug 2023 20:11:07 +0100 Subject: [PATCH 155/271] Add patch to speed up firmware UEFI video output --- Add-video-damage-tracking.patch | 4136 +++++++++++++++++++++++++++++++ uboot-tools.spec | 16 +- 2 files changed, 4146 insertions(+), 6 deletions(-) create mode 100644 Add-video-damage-tracking.patch diff --git a/Add-video-damage-tracking.patch b/Add-video-damage-tracking.patch new file mode 100644 index 0000000..3cfd387 --- /dev/null +++ b/Add-video-damage-tracking.patch @@ -0,0 +1,4136 @@ +From patchwork Mon Aug 21 13:50:58 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Alper Nebi Yasak +X-Patchwork-Id: 1823643 +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=20221208 header.b=jAFdt8C3; + 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 4RTv611rHqz1yg0 + for ; Mon, 21 Aug 2023 23:51:37 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 69F2487066; + Mon, 21 Aug 2023 15:51:29 +0200 (CEST) +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="jAFdt8C3"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 71CEC8706D; Mon, 21 Aug 2023 15:51:28 +0200 (CEST) +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,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 3320B87062 + for ; Mon, 21 Aug 2023 15:51:25 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=gmail.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=alpernebiyasak@gmail.com +Received: by mail-wm1-x32e.google.com with SMTP id + 5b1f17b1804b1-3fef56f7222so2727775e9.2 + for ; Mon, 21 Aug 2023 06:51:25 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20221208; t=1692625884; x=1693230684; + 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=0KM0F1+WkNhDdn0zbbXHFFjqAdCr64hX7QvIzy6/iyI=; + b=jAFdt8C3owZgLvkS3GxcS5N+GiTxn30Z/xJkqzPDEYfC0PDH1kIsDI4pb6eHKAFVBt + PLqr4R9Sdmb05o76fez0U9nTmmv97QjcaeHGc0adZliwf33YdMgotCTaUiHc/nhkpLWw + c8rHP6jWgFPGn5Y45QEtPjQFEuV0nP0SkMONJorI+ci6NUadDN8X0tZNK5GoF1lvhF4o + mQZs5xJfJ6evaIBX7srcue8NUq4BtyhQ18vVYm0nCIPEltA23PBpkcejhCv6g5o/4puI + sgF/+jj8BhBQFKhPEIktVLWcqveScR/ngqiv1iDRHrCL6flPhtCsrpShY+rzilzpJdtC + fkJQ== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20221208; t=1692625884; x=1693230684; + 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=0KM0F1+WkNhDdn0zbbXHFFjqAdCr64hX7QvIzy6/iyI=; + b=gWHm6TE1o6bFZMTHoyWCi4QgdvFQkn06zRip9uOn3HqDzCG7KLnrXsFUdYdugOcadS + yQH0TYQ9YCGnJEItFC8+BAPuij69++YczOI2dzUQz6ejqfjFnTORccJmFginC+ZQynSw + ygcqWBt7iXKWwm2BNaTOS0ZbXxZuQrdebM6QD55CSsB+YnJ/21Q4txo4VOIzT+g2LmU4 + YhR1Ec8+2HGk3w1oWalKPpGcBc3y3y7ADgy/Kt0L4pFhAmBewW+wlGtrTxdoIbRmcMwx + 6xx1bS9ZrdHzFpTAB7myHjowwbIvRmhpNDr1e+ROx71myEhCEhnz0o6tjGmHTmebIiZB + Axiw== +X-Gm-Message-State: AOJu0Yw7o7394U5eAr5ipSyfIWmc1YVzBHdp8jslW0qPlsoIXMjiuI6c + SaZaVpf+ZihLZ51797OE439hQFEZL4o= +X-Google-Smtp-Source: + AGHT+IGiiJu3kdw60kWynu1HizRmCX0l3/hesikD0kGHzt9jbq6D24m4A0InLSpbaBLDcUVjniBVKA== +X-Received: by 2002:a05:600c:3799:b0:3fe:2011:a7ce with SMTP id + o25-20020a05600c379900b003fe2011a7cemr5345546wmr.6.1692625884228; + Mon, 21 Aug 2023 06:51:24 -0700 (PDT) +Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id + r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.22 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Mon, 21 Aug 2023 06:51:23 -0700 (PDT) +From: Alper Nebi Yasak +To: u-boot@lists.denx.de +Cc: Kever Yang , + Jagan Teki , + Andre Przywara , + Svyatoslav Ryhel , Alexander Graf , + Philipp Tomsich , Andrew Davis , + Da Xue , Heinrich Schuchardt , + Patrice Chotard , + Patrick Delaunay , + Derald Woods , + Anatolij Gustschin , + uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , + Matthias Brugger , u-boot-amlogic@groups.io, + Ilias Apalodimas , + Neil Armstrong , + Alper Nebi Yasak +Subject: [PATCH v5 01/13] video: test: Split copy frame buffer check into a + function +Date: Mon, 21 Aug 2023 16:50:58 +0300 +Message-Id: <20230821135111.3558478-2-alpernebiyasak@gmail.com> +X-Mailer: git-send-email 2.40.1 +In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +MIME-Version: 1.0 +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 + +While checking frame buffer contents, the video tests also check if the +copy frame buffer contents match the main frame buffer. To test if only +the modified regions are updated after a sync, we will need to create +situations where the two are mismatched. Split this check into another +function that we can skip calling, since we won't want it to error on +those mismatched cases. + +Signed-off-by: Alper Nebi Yasak +--- + +Changes in v5: +- Add patch "video: test: Split copy frame buffer check into a function" + + test/dm/video.c | 69 +++++++++++++++++++++++++++++++++++++++++-------- + 1 file changed, 58 insertions(+), 11 deletions(-) + +diff --git a/test/dm/video.c b/test/dm/video.c +index d907f681600b..641a6250100a 100644 +--- a/test/dm/video.c ++++ b/test/dm/video.c +@@ -55,9 +55,6 @@ DM_TEST(dm_test_video_base, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); + * size of the compressed data. This provides a pretty good level of + * certainty and the resulting tests need only check a single value. + * +- * If the copy framebuffer is enabled, this compares it to the main framebuffer +- * too. +- * + * @uts: Test state + * @dev: Video device + * Return: compressed size of the frame buffer, or -ve on error +@@ -66,7 +63,6 @@ static int compress_frame_buffer(struct unit_test_state *uts, + struct udevice *dev) + { + struct video_priv *priv = dev_get_uclass_priv(dev); +- struct video_priv *uc_priv = dev_get_uclass_priv(dev); + uint destlen; + void *dest; + int ret; +@@ -82,16 +78,34 @@ static int compress_frame_buffer(struct unit_test_state *uts, + if (ret) + return ret; + +- /* Check here that the copy frame buffer is working correctly */ +- if (IS_ENABLED(CONFIG_VIDEO_COPY)) { +- ut_assertf(!memcmp(uc_priv->fb, uc_priv->copy_fb, +- uc_priv->fb_size), +- "Copy framebuffer does not match fb"); +- } +- + return destlen; + } + ++/** ++ * check_copy_frame_buffer() - Compare main frame buffer to copy ++ * ++ * If the copy frame buffer is enabled, this compares it to the main ++ * frame buffer. Normally they should have the same contents after a ++ * sync. ++ * ++ * @uts: Test state ++ * @dev: Video device ++ * Return: 0, or -ve on error ++ */ ++static int check_copy_frame_buffer(struct unit_test_state *uts, ++ struct udevice *dev) ++{ ++ struct video_priv *priv = dev_get_uclass_priv(dev); ++ ++ if (!IS_ENABLED(CONFIG_VIDEO_COPY)) ++ return 0; ++ ++ ut_assertf(!memcmp(priv->fb, priv->copy_fb, priv->fb_size), ++ "Copy framebuffer does not match fb"); ++ ++ return 0; ++} ++ + /* + * Call this function at any point to halt and show the current display. Be + * sure to run the test with the -l flag. +@@ -155,24 +169,30 @@ static int dm_test_video_text(struct unit_test_state *uts) + ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); + ut_assertok(vidconsole_select_font(con, "8x16", 0)); + ut_asserteq(46, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); + vidconsole_putc_xy(con, 0, 0, 'a'); + ut_asserteq(79, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + vidconsole_putc_xy(con, 0, 0, ' '); + ut_asserteq(46, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + for (i = 0; i < 20; i++) + vidconsole_putc_xy(con, VID_TO_POS(i * 8), 0, ' ' + i); + ut_asserteq(273, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + vidconsole_set_row(con, 0, WHITE); + ut_asserteq(46, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + for (i = 0; i < 20; i++) + vidconsole_putc_xy(con, VID_TO_POS(i * 8), 0, ' ' + i); + ut_asserteq(273, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; + } +@@ -191,24 +211,30 @@ static int dm_test_video_text_12x22(struct unit_test_state *uts) + ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); + ut_assertok(vidconsole_select_font(con, "12x22", 0)); + ut_asserteq(46, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); + vidconsole_putc_xy(con, 0, 0, 'a'); + ut_asserteq(89, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + vidconsole_putc_xy(con, 0, 0, ' '); + ut_asserteq(46, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + for (i = 0; i < 20; i++) + vidconsole_putc_xy(con, VID_TO_POS(i * 8), 0, ' ' + i); + ut_asserteq(363, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + vidconsole_set_row(con, 0, WHITE); + ut_asserteq(46, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + for (i = 0; i < 20; i++) + vidconsole_putc_xy(con, VID_TO_POS(i * 8), 0, ' ' + i); + ut_asserteq(363, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; + } +@@ -226,6 +252,7 @@ static int dm_test_video_chars(struct unit_test_state *uts) + ut_assertok(vidconsole_select_font(con, "8x16", 0)); + vidconsole_put_string(con, test_string); + ut_asserteq(466, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; + } +@@ -247,19 +274,23 @@ static int dm_test_video_ansi(struct unit_test_state *uts) + video_clear(con->parent); + video_sync(con->parent, false); + ut_asserteq(46, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + /* test clear escape sequence: [2J */ + vidconsole_put_string(con, "A\tB\tC"ANSI_ESC"[2J"); + ut_asserteq(46, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + /* test set-cursor: [%d;%df */ + vidconsole_put_string(con, "abc"ANSI_ESC"[2;2fab"ANSI_ESC"[4;4fcd"); + ut_asserteq(143, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + /* test colors (30-37 fg color, 40-47 bg color) */ + vidconsole_put_string(con, ANSI_ESC"[30;41mfoo"); /* black on red */ + vidconsole_put_string(con, ANSI_ESC"[33;44mbar"); /* yellow on blue */ + ut_asserteq(272, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; + } +@@ -292,11 +323,13 @@ static int check_vidconsole_output(struct unit_test_state *uts, int rot, + ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); + ut_assertok(vidconsole_select_font(con, "8x16", 0)); + ut_asserteq(46, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + /* Check display wrap */ + for (i = 0; i < 120; i++) + vidconsole_put_char(con, 'A' + i % 50); + ut_asserteq(wrap_size, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + /* Check display scrolling */ + for (i = 0; i < SCROLL_LINES; i++) { +@@ -304,11 +337,13 @@ static int check_vidconsole_output(struct unit_test_state *uts, int rot, + vidconsole_put_char(con, '\n'); + } + ut_asserteq(scroll_size, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + /* If we scroll enough, the screen becomes blank again */ + for (i = 0; i < SCROLL_LINES; i++) + vidconsole_put_char(con, '\n'); + ut_asserteq(46, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; + } +@@ -383,6 +418,7 @@ static int dm_test_video_bmp(struct unit_test_state *uts) + + ut_assertok(video_bmp_display(dev, addr, 0, 0, false)); + ut_asserteq(1368, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; + } +@@ -402,6 +438,7 @@ static int dm_test_video_bmp8(struct unit_test_state *uts) + + ut_assertok(video_bmp_display(dev, addr, 0, 0, false)); + ut_asserteq(1247, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; + } +@@ -425,6 +462,7 @@ static int dm_test_video_bmp16(struct unit_test_state *uts) + + ut_assertok(video_bmp_display(dev, dst, 0, 0, false)); + ut_asserteq(3700, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; + } +@@ -448,6 +486,7 @@ static int dm_test_video_bmp24(struct unit_test_state *uts) + + ut_assertok(video_bmp_display(dev, dst, 0, 0, false)); + ut_asserteq(3656, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; + } +@@ -471,6 +510,7 @@ static int dm_test_video_bmp24_32(struct unit_test_state *uts) + + ut_assertok(video_bmp_display(dev, dst, 0, 0, false)); + ut_asserteq(6827, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; + } +@@ -489,6 +529,7 @@ static int dm_test_video_bmp32(struct unit_test_state *uts) + + ut_assertok(video_bmp_display(dev, addr, 0, 0, false)); + ut_asserteq(2024, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; + } +@@ -505,6 +546,7 @@ static int dm_test_video_bmp_comp(struct unit_test_state *uts) + + ut_assertok(video_bmp_display(dev, addr, 0, 0, false)); + ut_asserteq(1368, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; + } +@@ -524,6 +566,7 @@ static int dm_test_video_comp_bmp32(struct unit_test_state *uts) + + ut_assertok(video_bmp_display(dev, addr, 0, 0, false)); + ut_asserteq(2024, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; + } +@@ -543,6 +586,7 @@ static int dm_test_video_comp_bmp8(struct unit_test_state *uts) + + ut_assertok(video_bmp_display(dev, addr, 0, 0, false)); + ut_asserteq(1247, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; + } +@@ -558,6 +602,7 @@ static int dm_test_video_truetype(struct unit_test_state *uts) + ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); + vidconsole_put_string(con, test_string); + ut_asserteq(12174, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; + } +@@ -579,6 +624,7 @@ static int dm_test_video_truetype_scroll(struct unit_test_state *uts) + ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); + vidconsole_put_string(con, test_string); + ut_asserteq(34287, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; + } +@@ -600,6 +646,7 @@ static int dm_test_video_truetype_bs(struct unit_test_state *uts) + ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); + vidconsole_put_string(con, test_string); + ut_asserteq(29471, compress_frame_buffer(uts, dev)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; + } + +From patchwork Mon Aug 21 13:50:59 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Alper Nebi Yasak +X-Patchwork-Id: 1823644 +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=20221208 header.b=mYzIbw17; + 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 4RTv6B5sZGz1yYZ + for ; Mon, 21 Aug 2023 23:51:46 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id AD34B8706B; + Mon, 21 Aug 2023 15:51:31 +0200 (CEST) +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="mYzIbw17"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 5EF078707C; Mon, 21 Aug 2023 15:51:30 +0200 (CEST) +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,SPF_HELO_NONE, + SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com + [IPv6:2a00:1450:4864:20::42b]) + (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 8B77787069 + for ; Mon, 21 Aug 2023 15:51:27 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=gmail.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=alpernebiyasak@gmail.com +Received: by mail-wr1-x42b.google.com with SMTP id + ffacd0b85a97d-307d20548adso2907788f8f.0 + for ; Mon, 21 Aug 2023 06:51:27 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20221208; t=1692625887; x=1693230687; + 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=2OB7382go0g6JBjezy6TmzGfi6gIlYCFDFe4xM7HRw8=; + b=mYzIbw17s5ut2Lj8TmUyEmZZuMpoWf/YpZMisLloBGvTOI6o9/p8nP2M17yjk++h8P + 8+GH169jMY+6EuzecVUKktHLjLULhqcSGVgb+K8TH4Z0MkPhLZg6u+23TnjErs5v1VYS + +euy4y8wSAudLGdJHtR26NtBqeJHDFiK6ves/aUe6PVWoPVDofUTUC53I4mvF96uWF8K + NxLW9B5KIoY0T2WpxZUDwabQASQORqw1sA33K5oTD5OvFTS081ZnJT9otEq9+EgTySU5 + e9RQTRRZ1lstBqBTAQHRXPAniy7qhyu+ptlO9RhqLC6R08WOBN8Fwz7r4fVsnuuGMEgm + CatQ== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20221208; t=1692625887; x=1693230687; + 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=2OB7382go0g6JBjezy6TmzGfi6gIlYCFDFe4xM7HRw8=; + b=ChLsD8uyfsbRsBr3u3v4RBW8IRqsNDwAduakdrWkASxSDmmx1fr/AROSBC5feYGGDe + hS2CHTTA7mzZBgx65Trp5EItwl/T+Vp9i6ot9yz9QlTUNNEcPawZEdr+wrwsTgDaxH2v + snQjENvBTKP8nVEyAFqDmM2dOMLBHKEnI/a8MuKKZMuMu9dujekXUR7zTMOWyhTLK6Gc + D8F+qwz8FIhnEGMc1i1LvXmjDCs7delvdWCetg6JqpaHZUQQc6Ru03gSKWXkedKTdHsF + IFdkr4qm3W7Rsy2BwYQZN2XrZO5IuLkQjVOtfryPfMGux/37jUX8zNJ0y+TL8k42PlEC + Xicw== +X-Gm-Message-State: AOJu0YwlYwARbrwNV25POhyWxcoym3cQztI8SjGOeCzdsQys/HqRUQV+ + wqnhOKThUMfcGC8MZ8gLFE2KT2+SxVA= +X-Google-Smtp-Source: + AGHT+IHSYU3/G4dWV8P3egqgpph9YxOl4+mH1vDWUtosphrFiVQk7BNu/zdvNsUiJiU3qzGO9VCxdg== +X-Received: by 2002:a5d:44cf:0:b0:313:f33c:24c4 with SMTP id + z15-20020a5d44cf000000b00313f33c24c4mr4457731wrr.39.1692625886757; + Mon, 21 Aug 2023 06:51:26 -0700 (PDT) +Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id + r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.24 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Mon, 21 Aug 2023 06:51:26 -0700 (PDT) +From: Alper Nebi Yasak +To: u-boot@lists.denx.de +Cc: Kever Yang , + Jagan Teki , + Andre Przywara , + Svyatoslav Ryhel , Alexander Graf , + Philipp Tomsich , Andrew Davis , + Da Xue , Heinrich Schuchardt , + Patrice Chotard , + Patrick Delaunay , + Derald Woods , + Anatolij Gustschin , + uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , + Matthias Brugger , u-boot-amlogic@groups.io, + Ilias Apalodimas , + Neil Armstrong , + Alper Nebi Yasak +Subject: [PATCH v5 02/13] video: test: Support checking copy frame buffer + contents +Date: Mon, 21 Aug 2023 16:50:59 +0300 +Message-Id: <20230821135111.3558478-3-alpernebiyasak@gmail.com> +X-Mailer: git-send-email 2.40.1 +In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +MIME-Version: 1.0 +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 video tests have a helper function to generate a pseudo-digest of +frame buffer contents, but it only does so for the main one. There is +another check that the copy frame buffer is the same as that. But +neither is enough to test if only the modified regions are copied to the +copy frame buffer, since we will want the two to be different in very +specific ways. + +Add a boolean argument to the existing helper function to indicate which +frame buffer we want to inspect, and update the existing callers. + +Signed-off-by: Alper Nebi Yasak +--- + +Changes in v5: +- Add patch "video: test: Support checking copy frame buffer contents" + + test/dm/video.c | 76 ++++++++++++++++++++++++++----------------------- + 1 file changed, 41 insertions(+), 35 deletions(-) + +diff --git a/test/dm/video.c b/test/dm/video.c +index 641a6250100a..b9ff3da10c18 100644 +--- a/test/dm/video.c ++++ b/test/dm/video.c +@@ -57,22 +57,28 @@ DM_TEST(dm_test_video_base, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); + * + * @uts: Test state + * @dev: Video device ++ * @use_copy: Use copy frame buffer if available + * Return: compressed size of the frame buffer, or -ve on error + */ + static int compress_frame_buffer(struct unit_test_state *uts, +- struct udevice *dev) ++ struct udevice *dev, ++ bool use_copy) + { + struct video_priv *priv = dev_get_uclass_priv(dev); + uint destlen; + void *dest; + int ret; + ++ if (!IS_ENABLED(CONFIG_VIDEO_COPY)) ++ use_copy = false; ++ + destlen = priv->fb_size; + dest = malloc(priv->fb_size); + if (!dest) + return -ENOMEM; + ret = BZ2_bzBuffToBuffCompress(dest, &destlen, +- priv->fb, priv->fb_size, ++ use_copy ? priv->copy_fb : priv->fb, ++ priv->fb_size, + 3, 0, 0); + free(dest); + if (ret) +@@ -168,30 +174,30 @@ static int dm_test_video_text(struct unit_test_state *uts) + ut_assertok(video_get_nologo(uts, &dev)); + ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); + ut_assertok(vidconsole_select_font(con, "8x16", 0)); +- ut_asserteq(46, compress_frame_buffer(uts, dev)); ++ ut_asserteq(46, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); + vidconsole_putc_xy(con, 0, 0, 'a'); +- ut_asserteq(79, compress_frame_buffer(uts, dev)); ++ ut_asserteq(79, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + vidconsole_putc_xy(con, 0, 0, ' '); +- ut_asserteq(46, compress_frame_buffer(uts, dev)); ++ ut_asserteq(46, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + for (i = 0; i < 20; i++) + vidconsole_putc_xy(con, VID_TO_POS(i * 8), 0, ' ' + i); +- ut_asserteq(273, compress_frame_buffer(uts, dev)); ++ ut_asserteq(273, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + vidconsole_set_row(con, 0, WHITE); +- ut_asserteq(46, compress_frame_buffer(uts, dev)); ++ ut_asserteq(46, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + for (i = 0; i < 20; i++) + vidconsole_putc_xy(con, VID_TO_POS(i * 8), 0, ' ' + i); +- ut_asserteq(273, compress_frame_buffer(uts, dev)); ++ ut_asserteq(273, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; +@@ -210,30 +216,30 @@ static int dm_test_video_text_12x22(struct unit_test_state *uts) + ut_assertok(video_get_nologo(uts, &dev)); + ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); + ut_assertok(vidconsole_select_font(con, "12x22", 0)); +- ut_asserteq(46, compress_frame_buffer(uts, dev)); ++ ut_asserteq(46, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); + vidconsole_putc_xy(con, 0, 0, 'a'); +- ut_asserteq(89, compress_frame_buffer(uts, dev)); ++ ut_asserteq(89, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + vidconsole_putc_xy(con, 0, 0, ' '); +- ut_asserteq(46, compress_frame_buffer(uts, dev)); ++ ut_asserteq(46, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + for (i = 0; i < 20; i++) + vidconsole_putc_xy(con, VID_TO_POS(i * 8), 0, ' ' + i); +- ut_asserteq(363, compress_frame_buffer(uts, dev)); ++ ut_asserteq(363, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + vidconsole_set_row(con, 0, WHITE); +- ut_asserteq(46, compress_frame_buffer(uts, dev)); ++ ut_asserteq(46, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + for (i = 0; i < 20; i++) + vidconsole_putc_xy(con, VID_TO_POS(i * 8), 0, ' ' + i); +- ut_asserteq(363, compress_frame_buffer(uts, dev)); ++ ut_asserteq(363, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; +@@ -251,7 +257,7 @@ static int dm_test_video_chars(struct unit_test_state *uts) + ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); + ut_assertok(vidconsole_select_font(con, "8x16", 0)); + vidconsole_put_string(con, test_string); +- ut_asserteq(466, compress_frame_buffer(uts, dev)); ++ ut_asserteq(466, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; +@@ -273,23 +279,23 @@ static int dm_test_video_ansi(struct unit_test_state *uts) + /* reference clear: */ + video_clear(con->parent); + video_sync(con->parent, false); +- ut_asserteq(46, compress_frame_buffer(uts, dev)); ++ ut_asserteq(46, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + /* test clear escape sequence: [2J */ + vidconsole_put_string(con, "A\tB\tC"ANSI_ESC"[2J"); +- ut_asserteq(46, compress_frame_buffer(uts, dev)); ++ ut_asserteq(46, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + /* test set-cursor: [%d;%df */ + vidconsole_put_string(con, "abc"ANSI_ESC"[2;2fab"ANSI_ESC"[4;4fcd"); +- ut_asserteq(143, compress_frame_buffer(uts, dev)); ++ ut_asserteq(143, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + /* test colors (30-37 fg color, 40-47 bg color) */ + vidconsole_put_string(con, ANSI_ESC"[30;41mfoo"); /* black on red */ + vidconsole_put_string(con, ANSI_ESC"[33;44mbar"); /* yellow on blue */ +- ut_asserteq(272, compress_frame_buffer(uts, dev)); ++ ut_asserteq(272, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; +@@ -322,13 +328,13 @@ static int check_vidconsole_output(struct unit_test_state *uts, int rot, + ut_assertok(video_get_nologo(uts, &dev)); + ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); + ut_assertok(vidconsole_select_font(con, "8x16", 0)); +- ut_asserteq(46, compress_frame_buffer(uts, dev)); ++ ut_asserteq(46, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + /* Check display wrap */ + for (i = 0; i < 120; i++) + vidconsole_put_char(con, 'A' + i % 50); +- ut_asserteq(wrap_size, compress_frame_buffer(uts, dev)); ++ ut_asserteq(wrap_size, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + /* Check display scrolling */ +@@ -336,13 +342,13 @@ static int check_vidconsole_output(struct unit_test_state *uts, int rot, + vidconsole_put_char(con, 'A' + i % 50); + vidconsole_put_char(con, '\n'); + } +- ut_asserteq(scroll_size, compress_frame_buffer(uts, dev)); ++ ut_asserteq(scroll_size, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + /* If we scroll enough, the screen becomes blank again */ + for (i = 0; i < SCROLL_LINES; i++) + vidconsole_put_char(con, '\n'); +- ut_asserteq(46, compress_frame_buffer(uts, dev)); ++ ut_asserteq(46, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; +@@ -417,7 +423,7 @@ static int dm_test_video_bmp(struct unit_test_state *uts) + ut_assertok(read_file(uts, "tools/logos/denx.bmp", &addr)); + + ut_assertok(video_bmp_display(dev, addr, 0, 0, false)); +- ut_asserteq(1368, compress_frame_buffer(uts, dev)); ++ ut_asserteq(1368, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; +@@ -437,7 +443,7 @@ static int dm_test_video_bmp8(struct unit_test_state *uts) + ut_assertok(read_file(uts, "tools/logos/denx.bmp", &addr)); + + ut_assertok(video_bmp_display(dev, addr, 0, 0, false)); +- ut_asserteq(1247, compress_frame_buffer(uts, dev)); ++ ut_asserteq(1247, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; +@@ -461,7 +467,7 @@ static int dm_test_video_bmp16(struct unit_test_state *uts) + &src_len)); + + ut_assertok(video_bmp_display(dev, dst, 0, 0, false)); +- ut_asserteq(3700, compress_frame_buffer(uts, dev)); ++ ut_asserteq(3700, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; +@@ -485,7 +491,7 @@ static int dm_test_video_bmp24(struct unit_test_state *uts) + &src_len)); + + ut_assertok(video_bmp_display(dev, dst, 0, 0, false)); +- ut_asserteq(3656, compress_frame_buffer(uts, dev)); ++ ut_asserteq(3656, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; +@@ -509,7 +515,7 @@ static int dm_test_video_bmp24_32(struct unit_test_state *uts) + &src_len)); + + ut_assertok(video_bmp_display(dev, dst, 0, 0, false)); +- ut_asserteq(6827, compress_frame_buffer(uts, dev)); ++ ut_asserteq(6827, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; +@@ -528,7 +534,7 @@ static int dm_test_video_bmp32(struct unit_test_state *uts) + ut_assertok(read_file(uts, "tools/logos/denx.bmp", &addr)); + + ut_assertok(video_bmp_display(dev, addr, 0, 0, false)); +- ut_asserteq(2024, compress_frame_buffer(uts, dev)); ++ ut_asserteq(2024, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; +@@ -545,7 +551,7 @@ static int dm_test_video_bmp_comp(struct unit_test_state *uts) + ut_assertok(read_file(uts, "tools/logos/denx-comp.bmp", &addr)); + + ut_assertok(video_bmp_display(dev, addr, 0, 0, false)); +- ut_asserteq(1368, compress_frame_buffer(uts, dev)); ++ ut_asserteq(1368, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; +@@ -565,7 +571,7 @@ static int dm_test_video_comp_bmp32(struct unit_test_state *uts) + ut_assertok(read_file(uts, "tools/logos/denx.bmp", &addr)); + + ut_assertok(video_bmp_display(dev, addr, 0, 0, false)); +- ut_asserteq(2024, compress_frame_buffer(uts, dev)); ++ ut_asserteq(2024, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; +@@ -585,7 +591,7 @@ static int dm_test_video_comp_bmp8(struct unit_test_state *uts) + ut_assertok(read_file(uts, "tools/logos/denx.bmp", &addr)); + + ut_assertok(video_bmp_display(dev, addr, 0, 0, false)); +- ut_asserteq(1247, compress_frame_buffer(uts, dev)); ++ ut_asserteq(1247, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; +@@ -601,7 +607,7 @@ static int dm_test_video_truetype(struct unit_test_state *uts) + ut_assertok(video_get_nologo(uts, &dev)); + ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); + vidconsole_put_string(con, test_string); +- ut_asserteq(12174, compress_frame_buffer(uts, dev)); ++ ut_asserteq(12174, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; +@@ -623,7 +629,7 @@ static int dm_test_video_truetype_scroll(struct unit_test_state *uts) + ut_assertok(video_get_nologo(uts, &dev)); + ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); + vidconsole_put_string(con, test_string); +- ut_asserteq(34287, compress_frame_buffer(uts, dev)); ++ ut_asserteq(34287, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; +@@ -645,7 +651,7 @@ static int dm_test_video_truetype_bs(struct unit_test_state *uts) + ut_assertok(video_get_nologo(uts, &dev)); + ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); + vidconsole_put_string(con, test_string); +- ut_asserteq(29471, compress_frame_buffer(uts, dev)); ++ ut_asserteq(29471, compress_frame_buffer(uts, dev, false)); + ut_assertok(check_copy_frame_buffer(uts, dev)); + + return 0; + +From patchwork Mon Aug 21 13:51:00 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Alper Nebi Yasak +X-Patchwork-Id: 1823645 +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=20221208 header.b=h0nfUUKH; + 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 4RTv6P02TYz1yYZ + for ; Mon, 21 Aug 2023 23:51:56 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id F40E487071; + Mon, 21 Aug 2023 15:51:33 +0200 (CEST) +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="h0nfUUKH"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id EFD6D87069; Mon, 21 Aug 2023 15:51:32 +0200 (CEST) +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,SPF_HELO_NONE, + SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 +Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com + [IPv6:2a00:1450:4864:20::42c]) + (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 0028587074 + for ; Mon, 21 Aug 2023 15:51:29 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=gmail.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=alpernebiyasak@gmail.com +Received: by mail-wr1-x42c.google.com with SMTP id + ffacd0b85a97d-319779f0347so2987491f8f.1 + for ; Mon, 21 Aug 2023 06:51:29 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20221208; t=1692625889; x=1693230689; + 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=Ls20OKhVk8mknnS6GLFBhmTjxLz0/7fKNgK2nzSEs6M=; + b=h0nfUUKHqteSaQqflnkXT9zc90H1nKLTOoG4B78CtKhSKUI/thuMDU61AtN+enWvFJ + MdvU9OW3jOHeg+LRrxur+6+N4V9k4nGhm2BGwtj56A1DDfCLgk5+Vg38dhi1a24kfBH9 + d5w6HXOg3wdMizdTsyL0PbugSX7K9ByL9XKpH646NdsnqcikQNdmT2OeiGAmonEmHXAa + FII1SypkiZ5TOFcJx9N4X2XqMM3CNxyUsDs6+AV4dTPnjtXaElWj1fQcz8bLn/9q88/X + UCvE35N4Y37FFgb+5uTi+00hcLIavYKYrLEpNAclnl9NKFSUAUJyabqQM0+riy1OSMHF + 5YBw== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20221208; t=1692625889; x=1693230689; + 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=Ls20OKhVk8mknnS6GLFBhmTjxLz0/7fKNgK2nzSEs6M=; + b=Gmm/6GKzL921nU50fcXK4FdwCaAc1DVbDj7ilfjHfBXRaw/k3mmUZ/l5nbwGsTUYUU + VX6nd+xFgekVSP5Cns7th6+jnbBBaoaCZUfZYGIhQjEH3JMxxpo17+eNdfCTuo7TjTdl + MtWwxmceukhRiNql2W7VOHfb5CXBxorcXXcy3szcEJOlzxIqqUDQcLjNgoe5d2Kpkv9Y + 6qkNp6XFyfQCMAMGjF68T5eViaLcvFHFIsvmjXlMU7Ohhhm2We4SK9nBsr6gUgyaxmNs + qBLKVZKf+iC9WptVFbXhAML6gJZJo+JQu/tGHHfLf7rm/WT+1VhmDKBgpU1CzA8BRqcG + t+og== +X-Gm-Message-State: AOJu0YxCm+p57uF96KzOW9kggq2KLZimSeriKFH9gpv8fgoy+ddR1X7S + 9HsUigoZFUND3/u7rp+XB9qHn3dcZTU= +X-Google-Smtp-Source: + AGHT+IEwSW6rIF+3ua5ruA0V/p8R0SXlrxBIJRwdiP9dn7nhkL8gMfhxYppZ2c8jWSzauubY8xUVnQ== +X-Received: by 2002:adf:e482:0:b0:31a:dc27:e10 with SMTP id + i2-20020adfe482000000b0031adc270e10mr4721868wrm.65.1692625889315; + Mon, 21 Aug 2023 06:51:29 -0700 (PDT) +Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id + r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.27 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Mon, 21 Aug 2023 06:51:28 -0700 (PDT) +From: Alper Nebi Yasak +To: u-boot@lists.denx.de +Cc: Kever Yang , + Jagan Teki , + Andre Przywara , + Svyatoslav Ryhel , Alexander Graf , + Philipp Tomsich , Andrew Davis , + Da Xue , Heinrich Schuchardt , + Patrice Chotard , + Patrick Delaunay , + Derald Woods , + Anatolij Gustschin , + uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , + Matthias Brugger , u-boot-amlogic@groups.io, + Ilias Apalodimas , + Neil Armstrong , + Alper Nebi Yasak +Subject: [PATCH v5 03/13] video: test: Test partial updates of hardware frame + buffer +Date: Mon, 21 Aug 2023 16:51:00 +0300 +Message-Id: <20230821135111.3558478-4-alpernebiyasak@gmail.com> +X-Mailer: git-send-email 2.40.1 +In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +MIME-Version: 1.0 +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 + +With VIDEO_COPY enabled, only the modified parts of the frame buffer are +intended to be copied to the hardware. Add a test that checks this, by +overwriting contents we prepared without telling the video uclass and +then checking if the overwritten contents have been redrawn on the next +sync. + +Signed-off-by: Alper Nebi Yasak +--- + +Changes in v5: +- Add patch "video: test: Test partial updates of hardware frame buffer" + + test/dm/video.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 54 insertions(+) + +diff --git a/test/dm/video.c b/test/dm/video.c +index b9ff3da10c18..e4bd27a6b76f 100644 +--- a/test/dm/video.c ++++ b/test/dm/video.c +@@ -657,3 +657,57 @@ static int dm_test_video_truetype_bs(struct unit_test_state *uts) + return 0; + } + DM_TEST(dm_test_video_truetype_bs, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); ++ ++/* Test partial rendering onto hardware frame buffer */ ++static int dm_test_video_copy(struct unit_test_state *uts) ++{ ++ struct sandbox_sdl_plat *plat; ++ struct video_uc_plat *uc_plat; ++ struct udevice *dev, *con; ++ struct video_priv *priv; ++ const char *test_string = "\n\tCriticism may not be agreeable, but it is necessary.\t"; ++ ulong addr; ++ ++ if (!IS_ENABLED(CONFIG_VIDEO_COPY)) ++ return -EAGAIN; ++ ++ ut_assertok(uclass_find_first_device(UCLASS_VIDEO, &dev)); ++ ut_assertnonnull(dev); ++ uc_plat = dev_get_uclass_plat(dev); ++ uc_plat->hide_logo = true; ++ plat = dev_get_plat(dev); ++ plat->font_size = 32; ++ ut_assert(!device_active(dev)); ++ ut_assertok(uclass_first_device_err(UCLASS_VIDEO, &dev)); ++ ut_assertnonnull(dev); ++ priv = dev_get_uclass_priv(dev); ++ ++ ut_assertok(read_file(uts, "tools/logos/denx.bmp", &addr)); ++ ut_assertok(video_bmp_display(dev, addr, 0, 0, false)); ++ ++ ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); ++ vidconsole_put_string(con, "\n\n\n\n\n"); ++ vidconsole_put_string(con, test_string); ++ vidconsole_put_string(con, test_string); ++ ++ ut_asserteq(6678, compress_frame_buffer(uts, dev, false)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); ++ ++ /* ++ * Secretly clear the hardware frame buffer, but in a different ++ * color (black) to see which parts will be overwritten. ++ */ ++ memset(priv->copy_fb, 0, priv->fb_size); ++ ++ /* ++ * We should have the full content on the main buffer, but only ++ * the new content should have been copied to the copy buffer. ++ */ ++ vidconsole_put_string(con, test_string); ++ vidconsole_put_string(con, test_string); ++ ut_asserteq(7589, compress_frame_buffer(uts, dev, false)); ++ ut_asserteq(5278, compress_frame_buffer(uts, dev, true)); ++ ++ return 0; ++} ++DM_TEST(dm_test_video_copy, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); + +From patchwork Mon Aug 21 13:51:01 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Alper Nebi Yasak +X-Patchwork-Id: 1823647 +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=20221208 header.b=bU3qjQR0; + 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 4RTv6c2SWvz1yYZ + for ; Mon, 21 Aug 2023 23:52:08 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 4441F87070; + Mon, 21 Aug 2023 15:51:36 +0200 (CEST) +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="bU3qjQR0"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 3848287075; Mon, 21 Aug 2023 15:51:35 +0200 (CEST) +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,SPF_HELO_NONE, + SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com + [IPv6:2a00:1450:4864:20::42c]) + (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 841D2869B6 + for ; Mon, 21 Aug 2023 15:51:32 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=gmail.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=alpernebiyasak@gmail.com +Received: by mail-wr1-x42c.google.com with SMTP id + ffacd0b85a97d-31aec0a1a8bso1211537f8f.0 + for ; Mon, 21 Aug 2023 06:51:32 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20221208; t=1692625892; x=1693230692; + 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=edVipA0fXjfO2+yIw/Pp5VvEle3RKuzWiUXEb/KCl5I=; + b=bU3qjQR0xHT3knwMAc4fOHXpeWOGcUonKhClh1IfqxsqOHWeRbIi1W1OtDuPIyv8dX + CyIHX30R+SQr8o+T5xSFf4E4kwRpsqOzh2mXOD3dzuYzJPkreOM5clQMgmyn2JGs+nON + KDztnOSqesV2IvPZqdr61bxJTw/SjXqRXGc7/YkT7OWwlaug26E+DbzP7Xt+plHDVz/9 + 6OB5zFxUapwX0mqxb6jbNAz17TvjQ5qIviNkCRZUZ2vseEB78BwHajxkNCG4jVOaQDON + aJWc+UOFyWJ3jLmQ+cOJgR+J0SoF3VAVYhbYaYviNV2DiaBPLPL9axirby/hW4Kx2waB + YKAg== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20221208; t=1692625892; x=1693230692; + 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=edVipA0fXjfO2+yIw/Pp5VvEle3RKuzWiUXEb/KCl5I=; + b=STc6gYqDRe7JtT56BIezfKTd0PQe87I83hDC5mL+8D0AqUp1RiJPnPt9MWIAVfO63j + plu8RveodelqOd26zWzlFDepTA+jfvcAgOePHLLLx3YiAidxIWD6d0SVlG+zagmUlHzm + HGscQ+3iGYhTHAGxc10UHaQcMlCmyeWecwIjxXBpM85g6puunYrN14aYfsp6E0ODCLMg + 9HAD2Zx5b++HK3yE7Ld6hientRzVXxwURTL5ehSSO2AX95YMagfKaP767VvupWtB18du + 5Lfk0k60qTxe3Xlamnm8bdoRofuIyLLaSZ+0M7lAsEPPsS4QRGn+m7MwI8YTlRIU8wFQ + cYSQ== +X-Gm-Message-State: AOJu0YwPPIi0QLYKGPNa9T+XPhwof7rD3VBA3kfub7MM4xEG6u6r8puq + cSLl/n+w1P2LSAPH1AWswz3SS227DdQ= +X-Google-Smtp-Source: + AGHT+IFAUyNsvOmdhjdIygYhsv/SH6hvXItfwiWsY14vr3nwQ9J7A0Q0Y71M8WvaFJdxn7mmOeZlrg== +X-Received: by 2002:a5d:44c8:0:b0:317:e9d7:9387 with SMTP id + z8-20020a5d44c8000000b00317e9d79387mr7196865wrr.25.1692625891911; + Mon, 21 Aug 2023 06:51:31 -0700 (PDT) +Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id + r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.30 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Mon, 21 Aug 2023 06:51:31 -0700 (PDT) +From: Alper Nebi Yasak +To: u-boot@lists.denx.de +Cc: Kever Yang , + Jagan Teki , + Andre Przywara , + Svyatoslav Ryhel , Alexander Graf , + Philipp Tomsich , Andrew Davis , + Da Xue , Heinrich Schuchardt , + Patrice Chotard , + Patrick Delaunay , + Derald Woods , + Anatolij Gustschin , + uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , + Matthias Brugger , u-boot-amlogic@groups.io, + Ilias Apalodimas , + Neil Armstrong , + Alper Nebi Yasak +Subject: [PATCH v5 04/13] dm: video: Add damage tracking API +Date: Mon, 21 Aug 2023 16:51:01 +0300 +Message-Id: <20230821135111.3558478-5-alpernebiyasak@gmail.com> +X-Mailer: git-send-email 2.40.1 +In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +MIME-Version: 1.0 +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 + +From: Alexander Graf + +We are going to introduce image damage tracking to fasten up screen +refresh on large displays. This patch adds damage tracking for up to +one rectangle of the screen which is typically enough to hold blt or +text print updates. Callers into this API and a reduced dcache flush +code path will follow in later patches. + +Signed-off-by: Alexander Graf +Reported-by: Da Xue +[Alper: Use xstart/yend, document new fields, return void from + video_damage(), declare priv, drop headers, use IS_ENABLED()] +Co-developed-by: Alper Nebi Yasak +Signed-off-by: Alper Nebi Yasak +--- + +Changes in v5: +- Use xstart, ystart, xend, yend as names for damage region +- Document damage struct and fields in struct video_priv comment +- Return void from video_damage() +- Fix undeclared priv error in video_sync() +- Drop unused headers from video-uclass.c +- Use IS_ENABLED() instead of CONFIG_IS_ENABLED() + +Changes in v4: +- Move damage clear to patch "dm: video: Add damage tracking API" +- Simplify first damage logic +- Remove VIDEO_DAMAGE default for ARM + +Changes in v3: +- Adapt to always assume DM is used + +Changes in v2: +- Remove ifdefs + + drivers/video/Kconfig | 13 ++++++++++++ + drivers/video/video-uclass.c | 41 +++++++++++++++++++++++++++++++++--- + include/video.h | 32 ++++++++++++++++++++++++++-- + 3 files changed, 81 insertions(+), 5 deletions(-) + +diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig +index fe43fbd7004a..97f494a1340b 100644 +--- a/drivers/video/Kconfig ++++ b/drivers/video/Kconfig +@@ -92,6 +92,19 @@ config VIDEO_COPY + To use this, your video driver must set @copy_base in + struct video_uc_plat. + ++config VIDEO_DAMAGE ++ bool "Enable damage tracking of frame buffer regions" ++ help ++ On some machines (most ARM), the display frame buffer resides in ++ RAM. To make the display controller pick up screen updates, we ++ have to flush frame buffer contents from CPU caches into RAM which ++ can be a slow operation. ++ ++ This feature adds damage tracking to collect information about regions ++ that received updates. When we want to sync, we then only flush ++ regions of the frame buffer that were modified before, speeding up ++ screen refreshes significantly. ++ + config BACKLIGHT_PWM + bool "Generic PWM based Backlight Driver" + depends on BACKLIGHT && DM_PWM +diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c +index 8f268fc4063f..447689581668 100644 +--- a/drivers/video/video-uclass.c ++++ b/drivers/video/video-uclass.c +@@ -351,9 +351,39 @@ void video_set_default_colors(struct udevice *dev, bool invert) + priv->colour_bg = video_index_to_colour(priv, back); + } + ++/* Notify about changes in the frame buffer */ ++void video_damage(struct udevice *vid, int x, int y, int width, int height) ++{ ++ struct video_priv *priv = dev_get_uclass_priv(vid); ++ int xend = x + width; ++ int yend = y + height; ++ ++ if (!IS_ENABLED(CONFIG_VIDEO_DAMAGE)) ++ return; ++ ++ if (x > priv->xsize) ++ return; ++ ++ if (y > priv->ysize) ++ return; ++ ++ if (xend > priv->xsize) ++ xend = priv->xsize; ++ ++ if (yend > priv->ysize) ++ yend = priv->ysize; ++ ++ /* Span a rectangle across all old and new damage */ ++ priv->damage.xstart = min(x, priv->damage.xstart); ++ priv->damage.ystart = min(y, priv->damage.ystart); ++ priv->damage.xend = max(xend, priv->damage.xend); ++ priv->damage.yend = max(yend, priv->damage.yend); ++} ++ + /* Flush video activity to the caches */ + int video_sync(struct udevice *vid, bool force) + { ++ struct video_priv *priv = dev_get_uclass_priv(vid); + struct video_ops *ops = video_get_ops(vid); + int ret; + +@@ -369,15 +399,12 @@ int video_sync(struct udevice *vid, bool force) + * out whether it exists? For now, ARM is safe. + */ + #if defined(CONFIG_ARM) && !CONFIG_IS_ENABLED(SYS_DCACHE_OFF) +- struct video_priv *priv = dev_get_uclass_priv(vid); +- + if (priv->flush_dcache) { + flush_dcache_range((ulong)priv->fb, + ALIGN((ulong)priv->fb + priv->fb_size, + CONFIG_SYS_CACHELINE_SIZE)); + } + #elif defined(CONFIG_VIDEO_SANDBOX_SDL) +- struct video_priv *priv = dev_get_uclass_priv(vid); + static ulong last_sync; + + if (force || get_timer(last_sync) > 100) { +@@ -385,6 +412,14 @@ int video_sync(struct udevice *vid, bool force) + last_sync = get_timer(0); + } + #endif ++ ++ if (IS_ENABLED(CONFIG_VIDEO_DAMAGE)) { ++ priv->damage.xstart = priv->xsize; ++ priv->damage.ystart = priv->ysize; ++ priv->damage.xend = 0; ++ priv->damage.yend = 0; ++ } ++ + return 0; + } + +diff --git a/include/video.h b/include/video.h +index 66d109ca5da6..a522f33949e5 100644 +--- a/include/video.h ++++ b/include/video.h +@@ -85,6 +85,11 @@ enum video_format { + * @fb_size: Frame buffer size + * @copy_fb: Copy of the frame buffer to keep up to date; see struct + * video_uc_plat ++ * @damage: A bounding box of framebuffer regions updated since last sync ++ * @damage.xstart: X start position in pixels from the left ++ * @damage.ystart: Y start position in pixels from the top ++ * @damage.xend: X end position in pixels from the left ++ * @damage.xend: Y end position in pixels from the top + * @line_length: Length of each frame buffer line, in bytes. This can be + * set by the driver, but if not, the uclass will set it after + * probing +@@ -112,6 +117,12 @@ struct video_priv { + void *fb; + int fb_size; + void *copy_fb; ++ struct { ++ int xstart; ++ int ystart; ++ int xend; ++ int yend; ++ } damage; + int line_length; + u32 colour_fg; + u32 colour_bg; +@@ -254,8 +265,9 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, + * @return: 0 on success, error code otherwise + * + * Some frame buffers are cached or have a secondary frame buffer. This +- * function syncs these up so that the current contents of the U-Boot frame +- * buffer are displayed to the user. ++ * function syncs the damaged parts of them up so that the current contents ++ * of the U-Boot frame buffer are displayed to the user. It clears the damage ++ * buffer. + */ + int video_sync(struct udevice *vid, bool force); + +@@ -375,6 +387,22 @@ static inline int video_sync_copy_all(struct udevice *dev) + + #endif + ++/** ++ * video_damage() - Notify the video subsystem about screen updates. ++ * ++ * @vid: Device to sync ++ * @x: Upper left X coordinate of the damaged rectangle ++ * @y: Upper left Y coordinate of the damaged rectangle ++ * @width: Width of the damaged rectangle ++ * @height: Height of the damaged rectangle ++ * ++ * Some frame buffers are cached or have a secondary frame buffer. This ++ * function notifies the video subsystem about rectangles that were updated ++ * within the frame buffer. They may only get written to the screen on the ++ * next call to video_sync(). ++ */ ++void video_damage(struct udevice *vid, int x, int y, int width, int height); ++ + /** + * video_is_active() - Test if one video device it active + * + +From patchwork Mon Aug 21 13:51:02 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Alper Nebi Yasak +X-Patchwork-Id: 1823648 +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=20221208 header.b=BdIntNrw; + 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) server-digest SHA384) + (No client certificate requested) + by legolas.ozlabs.org (Postfix) with ESMTPS id 4RTv6p6cj3z1yYZ + for ; Mon, 21 Aug 2023 23:52:18 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 8A59F87086; + Mon, 21 Aug 2023 15:51:40 +0200 (CEST) +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="BdIntNrw"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 3C3FD867A0; Mon, 21 Aug 2023 15:51:39 +0200 (CEST) +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,SPF_HELO_NONE, + SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 +Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com + [IPv6:2a00:1450:4864:20::42c]) + (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 546E686F0A + for ; Mon, 21 Aug 2023 15:51:35 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=gmail.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=alpernebiyasak@gmail.com +Received: by mail-wr1-x42c.google.com with SMTP id + ffacd0b85a97d-31c3df710bdso1066363f8f.1 + for ; Mon, 21 Aug 2023 06:51:35 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20221208; t=1692625895; x=1693230695; + 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=rfyiNp4RS7b8BQCxsUs1afKXNK4WMu1bUdXxDQXJn1U=; + b=BdIntNrw+JbVTri7AodJPuA4KoTwuid2ByavDMP+gEZwSfMkjrlWlFROWNdM4E2KeC + btsSXcPQO3jMnyoxVbS5g4DL2PkXPHNZO/Lw5Db4La4RGjoB4ks8w4G1nQ5kVo8NIXlQ + 7da1BVmm9tlV2cmt2LVuLp3WDWvgE5vJ9kVj8BH8fjD+gKc5wVOKtRIPJnqL8Eqj55A5 + y8xjVcW5ldxVps2jj0kE7Mq8LG2R6Bd37Zsw+Dq3Cj/1khMgLkYog8/Nf+k2uYXPQpjA + TS03XR6eJ7GQcRUf0iWft80hVZMVk6KF2AWuF04HcJ/goyNj4MGGFun0tanDYNImJzv0 + A/8A== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20221208; t=1692625895; x=1693230695; + 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=rfyiNp4RS7b8BQCxsUs1afKXNK4WMu1bUdXxDQXJn1U=; + b=N71LYmMnxX45xKNJxNk72goiD3Cf5e0f3znUaZ/B4Ue95/rqpwn6vLQvhNkxjyJjKz + QxOUGBKeP4pdGPJD2eVZgEA1+8cyBu3q0BssvtHzLuXCZtgGmVE+jhS1ZplzCePV5HDq + cpjabmm8tLydQpgXN42bXGeg5S7C2hbuWb9P1yFz0T2VRKDhKfnBacDMMyCM77q885Xq + scmyG9QS6JjzzhlNCx2LAvunQyb5Ub3Jeac6w62kdW5d82X5hQ7R5IuMhO6HB9cXSoIL + q4cciYJYPkkgJo7cJBCGs9hpoG7mAiYugMX3xvTX0AozIxV+I0RqRnIaeK4YPRctAqDa + B+ZQ== +X-Gm-Message-State: AOJu0Yzo17fP4SdOljTzWNaDUk2p0KMalzHe92zD3l/uyJxeFYnVtZ6Z + JKO6vwp7AEEfITHacMlSfDnu20sRQPA= +X-Google-Smtp-Source: + AGHT+IEaweUWG6MdegfaF+T8dg4D4mXuTL2UTLikuqRhtfAyLWNc6xApEfO0HHPUExbseBScRw20SA== +X-Received: by 2002:a5d:44d1:0:b0:313:f94f:3b15 with SMTP id + z17-20020a5d44d1000000b00313f94f3b15mr5140696wrr.2.1692625894567; + Mon, 21 Aug 2023 06:51:34 -0700 (PDT) +Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id + r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.32 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Mon, 21 Aug 2023 06:51:34 -0700 (PDT) +From: Alper Nebi Yasak +To: u-boot@lists.denx.de +Cc: Kever Yang , + Jagan Teki , + Andre Przywara , + Svyatoslav Ryhel , Alexander Graf , + Philipp Tomsich , Andrew Davis , + Da Xue , Heinrich Schuchardt , + Patrice Chotard , + Patrick Delaunay , + Derald Woods , + Anatolij Gustschin , + uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , + Matthias Brugger , u-boot-amlogic@groups.io, + Ilias Apalodimas , + Neil Armstrong , + Alper Nebi Yasak +Subject: [PATCH v5 05/13] dm: video: Add damage notification on display fills +Date: Mon, 21 Aug 2023 16:51:02 +0300 +Message-Id: <20230821135111.3558478-6-alpernebiyasak@gmail.com> +X-Mailer: git-send-email 2.40.1 +In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +MIME-Version: 1.0 +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 + +From: Alexander Graf + +Let's report the video damage when we fill parts of the screen. This +way we can later lazily flush only relevant regions to hardware. + +Signed-off-by: Alexander Graf +Reported-by: Da Xue +[Alper: Call video_damage() in video_fill_part(), edit commit message] +Signed-off-by: Alper Nebi Yasak +--- +Does video_fill_part() need a video_sync(dev, false) here? + +Changes in v5: +- Call video_damage() also in video_fill_part() + + drivers/video/video-uclass.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c +index 447689581668..ebf409d839f0 100644 +--- a/drivers/video/video-uclass.c ++++ b/drivers/video/video-uclass.c +@@ -203,6 +203,8 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, + if (ret) + return ret; + ++ video_damage(dev, xstart, ystart, xend - xstart, yend - ystart); ++ + return 0; + } + +@@ -249,6 +251,8 @@ int video_fill(struct udevice *dev, u32 colour) + if (ret) + return ret; + ++ video_damage(dev, 0, 0, priv->xsize, priv->ysize); ++ + return video_sync(dev, false); + } + + +From patchwork Mon Aug 21 13:51:03 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Alper Nebi Yasak +X-Patchwork-Id: 1823649 +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=20221208 header.b=oaK1+upy; + 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 4RTv712FN9z1yYZ + for ; Mon, 21 Aug 2023 23:52:29 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id D08B3867A0; + Mon, 21 Aug 2023 15:51:42 +0200 (CEST) +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="oaK1+upy"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 8D15587084; Mon, 21 Aug 2023 15:51:40 +0200 (CEST) +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,SPF_HELO_NONE, + SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com + [IPv6:2a00:1450:4864:20::436]) + (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 DA4E1869B6 + for ; Mon, 21 Aug 2023 15:51:37 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=gmail.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=alpernebiyasak@gmail.com +Received: by mail-wr1-x436.google.com with SMTP id + ffacd0b85a97d-317f1c480eeso3049475f8f.2 + for ; Mon, 21 Aug 2023 06:51:37 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20221208; t=1692625897; x=1693230697; + 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=7yrfRyMChh1ygDQtR1jl9BYhd6F+V0coaR3saA65Ao8=; + b=oaK1+upyGYfwOr4/nZR8RIRT+Yn2PZ+2dy2+GMSjffIkOUvAA4SwUrsuBUHVmQ+cIg + Q0F+D60Mp5/MzkFm9rwAnrQpO2uJb9esI/U8crcERtM+p1p5iKU9VNHrwRjlzB4VfG3E + 1rFRNOOhGpyPBS6RY+cJD557cLeGMoVUsQbv3xfnShrQg142CAOgzdQ4AtJ3FYRDngOc + QiczfO53zpeOnZjhBAa5aw7TDgIqHuR1bYCYIRraWJdIl9Cxa6ZDN1IozoPg6hutV+SE + 77oOM9VfIYyC8B3q6wdaduzcH0Qgeq3IEzfE54DLVtS/yT5z2vJiPtnfnV2pXzjU01Iq + l7Fg== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20221208; t=1692625897; x=1693230697; + 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=7yrfRyMChh1ygDQtR1jl9BYhd6F+V0coaR3saA65Ao8=; + b=NgyE/5/ABpribqDY5ykRBi/ftUfa+3meGxemZJPAl2gCi2+PfUEbrdHMbSPz/8nbY9 + qS/5UPv+41yRmDLmqeaNK/RXif7qV+CdVrg4K7xD0x/HbezXsIvKSc6rs5IqPqQvp0lx + JDuescRAcyrjtBjBFIAsrOx0+GynSijvWQArLcJRL330eiNnBn0HYRiVFqfEy3jpv5Hz + 13zk9q/GW8Hc7GRtA+FAkeUqJ3t8VaRzHLfoUJO3zFS8bWXgnWUAbCx0OOB9MahUqvyv + s/jpw79ZhFlhzO/Nwa63SlfQi+T3dAiYQ3kpBDgz7YFjSxvYaFYJDW3ihVDv8VTIiLdl + WB8Q== +X-Gm-Message-State: AOJu0YwqmT7iLKiUZblbrZz+UE4GebW514Sdllsg7NS//fk35AzXbHd7 + 7wXdC1ugEQP9Gez3jIRiAyQs4cDTcVc= +X-Google-Smtp-Source: + AGHT+IHO/arCmWeM8GYL18CXATu4Sh++TdyEswajL5QnvTaImLdSHvMUo+xc/gBkyHdBnNYS/qgvaQ== +X-Received: by 2002:adf:cd0b:0:b0:31c:3013:9fa5 with SMTP id + w11-20020adfcd0b000000b0031c30139fa5mr3560706wrm.59.1692625897248; + Mon, 21 Aug 2023 06:51:37 -0700 (PDT) +Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id + r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.35 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Mon, 21 Aug 2023 06:51:36 -0700 (PDT) +From: Alper Nebi Yasak +To: u-boot@lists.denx.de +Cc: Kever Yang , + Jagan Teki , + Andre Przywara , + Svyatoslav Ryhel , Alexander Graf , + Philipp Tomsich , Andrew Davis , + Da Xue , Heinrich Schuchardt , + Patrice Chotard , + Patrick Delaunay , + Derald Woods , + Anatolij Gustschin , + uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , + Matthias Brugger , u-boot-amlogic@groups.io, + Ilias Apalodimas , + Neil Armstrong , + Alper Nebi Yasak +Subject: [PATCH v5 06/13] vidconsole: Add damage notifications to all + vidconsole drivers +Date: Mon, 21 Aug 2023 16:51:03 +0300 +Message-Id: <20230821135111.3558478-7-alpernebiyasak@gmail.com> +X-Mailer: git-send-email 2.40.1 +In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +MIME-Version: 1.0 +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 + +From: Alexander Graf + +Now that we have a damage tracking API, let's populate damage done by +vidconsole drivers. We try to declare as little memory as damaged as +possible. + +Signed-off-by: Alexander Graf +Reported-by: Da Xue +[Alper: Rebase for met->baseline, fontdata->height/width, make rotated + console_putc_xy() damages pass tests, edit patch message] +Co-developed-by: Alper Nebi Yasak +Signed-off-by: Alper Nebi Yasak +--- + +Changes in v5: +- Use met->baseline instead of priv->baseline +- Use fontdata->height/width instead of VIDEO_FONT_HEIGHT/WIDTH +- Update console_rotate.c video_damage() calls to pass video tests +- Remove mention about not having minimal damage for console_rotate.c + +Changes in v2: +- Fix ranges in truetype target +- Limit rotate to necessary damage + + drivers/video/console_normal.c | 18 +++++++++++ + drivers/video/console_rotate.c | 54 ++++++++++++++++++++++++++++++++ + drivers/video/console_truetype.c | 21 +++++++++++++ + drivers/video/video-uclass.c | 1 + + 4 files changed, 94 insertions(+) + +diff --git a/drivers/video/console_normal.c b/drivers/video/console_normal.c +index 413c7abee9e1..a19ce6a2bc11 100644 +--- a/drivers/video/console_normal.c ++++ b/drivers/video/console_normal.c +@@ -39,6 +39,12 @@ static int console_set_row(struct udevice *dev, uint row, int clr) + if (ret) + return ret; + ++ video_damage(dev->parent, ++ 0, ++ fontdata->height * row, ++ vid_priv->xsize, ++ fontdata->height); ++ + return 0; + } + +@@ -60,6 +66,12 @@ static int console_move_rows(struct udevice *dev, uint rowdst, + if (ret) + return ret; + ++ video_damage(dev->parent, ++ 0, ++ fontdata->height * rowdst, ++ vid_priv->xsize, ++ fontdata->height * count); ++ + return 0; + } + +@@ -90,6 +102,12 @@ static int console_putc_xy(struct udevice *dev, uint x_frac, uint y, char ch) + if (ret) + return ret; + ++ video_damage(dev->parent, ++ x, ++ y, ++ fontdata->width, ++ fontdata->height); ++ + ret = vidconsole_sync_copy(dev, start, line); + if (ret) + return ret; +diff --git a/drivers/video/console_rotate.c b/drivers/video/console_rotate.c +index 65358a1c6e74..6c3e7c1bb8dc 100644 +--- a/drivers/video/console_rotate.c ++++ b/drivers/video/console_rotate.c +@@ -36,6 +36,12 @@ static int console_set_row_1(struct udevice *dev, uint row, int clr) + if (ret) + return ret; + ++ video_damage(dev->parent, ++ vid_priv->xsize - ((row + 1) * fontdata->height), ++ 0, ++ fontdata->height, ++ vid_priv->ysize); ++ + return 0; + } + +@@ -64,6 +70,12 @@ static int console_move_rows_1(struct udevice *dev, uint rowdst, uint rowsrc, + dst += vid_priv->line_length; + } + ++ video_damage(dev->parent, ++ vid_priv->xsize - ((rowdst + count) * fontdata->height), ++ 0, ++ count * fontdata->height, ++ vid_priv->ysize); ++ + return 0; + } + +@@ -96,6 +108,12 @@ static int console_putc_xy_1(struct udevice *dev, uint x_frac, uint y, char ch) + if (ret) + return ret; + ++ video_damage(dev->parent, ++ vid_priv->xsize - y - fontdata->height, ++ linenum - 1, ++ fontdata->height, ++ fontdata->width); ++ + return VID_TO_POS(fontdata->width); + } + +@@ -121,6 +139,12 @@ static int console_set_row_2(struct udevice *dev, uint row, int clr) + if (ret) + return ret; + ++ video_damage(dev->parent, ++ 0, ++ vid_priv->ysize - (row + 1) * fontdata->height, ++ vid_priv->xsize, ++ fontdata->height); ++ + return 0; + } + +@@ -142,6 +166,12 @@ static int console_move_rows_2(struct udevice *dev, uint rowdst, uint rowsrc, + vidconsole_memmove(dev, dst, src, + fontdata->height * vid_priv->line_length * count); + ++ video_damage(dev->parent, ++ 0, ++ vid_priv->ysize - (rowdst + count) * fontdata->height, ++ vid_priv->xsize, ++ count * fontdata->height); ++ + return 0; + } + +@@ -174,6 +204,12 @@ static int console_putc_xy_2(struct udevice *dev, uint x_frac, uint y, char ch) + if (ret) + return ret; + ++ video_damage(dev->parent, ++ x - fontdata->width + 1, ++ linenum - fontdata->height + 1, ++ fontdata->width, ++ fontdata->height); ++ + return VID_TO_POS(fontdata->width); + } + +@@ -198,6 +234,12 @@ static int console_set_row_3(struct udevice *dev, uint row, int clr) + if (ret) + return ret; + ++ video_damage(dev->parent, ++ row * fontdata->height, ++ 0, ++ fontdata->height, ++ vid_priv->ysize); ++ + return 0; + } + +@@ -224,6 +266,12 @@ static int console_move_rows_3(struct udevice *dev, uint rowdst, uint rowsrc, + dst += vid_priv->line_length; + } + ++ video_damage(dev->parent, ++ rowdst * fontdata->height, ++ 0, ++ count * fontdata->height, ++ vid_priv->ysize); ++ + return 0; + } + +@@ -255,6 +303,12 @@ static int console_putc_xy_3(struct udevice *dev, uint x_frac, uint y, char ch) + if (ret) + return ret; + ++ video_damage(dev->parent, ++ y, ++ linenum - fontdata->width + 1, ++ fontdata->height, ++ fontdata->width); ++ + return VID_TO_POS(fontdata->width); + } + +diff --git a/drivers/video/console_truetype.c b/drivers/video/console_truetype.c +index 0f9bb49e44f7..0adbf9cc3d67 100644 +--- a/drivers/video/console_truetype.c ++++ b/drivers/video/console_truetype.c +@@ -178,6 +178,7 @@ struct console_tt_priv { + static int console_truetype_set_row(struct udevice *dev, uint row, int clr) + { + struct video_priv *vid_priv = dev_get_uclass_priv(dev->parent); ++ struct vidconsole_priv *vc_priv = dev_get_uclass_priv(dev); + struct console_tt_priv *priv = dev_get_priv(dev); + struct console_tt_metrics *met = priv->cur_met; + void *end, *line; +@@ -221,6 +222,12 @@ static int console_truetype_set_row(struct udevice *dev, uint row, int clr) + if (ret) + return ret; + ++ video_damage(dev->parent, ++ 0, ++ vc_priv->y_charsize * row, ++ vid_priv->xsize, ++ vc_priv->y_charsize); ++ + return 0; + } + +@@ -228,6 +235,7 @@ static int console_truetype_move_rows(struct udevice *dev, uint rowdst, + uint rowsrc, uint count) + { + struct video_priv *vid_priv = dev_get_uclass_priv(dev->parent); ++ struct vidconsole_priv *vc_priv = dev_get_uclass_priv(dev); + struct console_tt_priv *priv = dev_get_priv(dev); + struct console_tt_metrics *met = priv->cur_met; + void *dst; +@@ -246,6 +254,12 @@ static int console_truetype_move_rows(struct udevice *dev, uint rowdst, + for (i = 0; i < priv->pos_ptr; i++) + priv->pos[i].ypos -= diff; + ++ video_damage(dev->parent, ++ 0, ++ vc_priv->y_charsize * rowdst, ++ vid_priv->xsize, ++ vc_priv->y_charsize * count); ++ + return 0; + } + +@@ -403,6 +417,13 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y, + + line += vid_priv->line_length; + } ++ ++ video_damage(dev->parent, ++ VID_TO_PIXEL(x) + xoff, ++ y + met->baseline + yoff, ++ width, ++ height); ++ + ret = vidconsole_sync_copy(dev, start, line); + if (ret) + return ret; +diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c +index ebf409d839f0..8bfcbc88dda7 100644 +--- a/drivers/video/video-uclass.c ++++ b/drivers/video/video-uclass.c +@@ -199,6 +199,7 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, + } + line += priv->line_length; + } ++ + ret = video_sync_copy(dev, start, line); + if (ret) + return ret; + +From patchwork Mon Aug 21 13:51:04 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Alper Nebi Yasak +X-Patchwork-Id: 1823650 +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=20221208 header.b=i+1wSJUC; + 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 4RTv7B5SVxz1yYZ + for ; Mon, 21 Aug 2023 23:52:38 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 2380887084; + Mon, 21 Aug 2023 15:51:45 +0200 (CEST) +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="i+1wSJUC"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 2081087081; Mon, 21 Aug 2023 15:51:43 +0200 (CEST) +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,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 45F8E8707A + for ; Mon, 21 Aug 2023 15:51:40 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=gmail.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=alpernebiyasak@gmail.com +Received: by mail-wm1-x329.google.com with SMTP id + 5b1f17b1804b1-3fee600dce6so18065515e9.1 + for ; Mon, 21 Aug 2023 06:51:40 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20221208; t=1692625900; x=1693230700; + 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=du9K8HAMfjDBv9t9zq9p8Zs+vCZHJ6g2zmB7iSzSF7o=; + b=i+1wSJUCYpv3D2Y4WhFT+a+eXACMjCfu9K5FQkWQdC2smyIukzPLOT9TKll1BIlZ+S + 0BSrF+Vp8/DGT40HSh+wXWV4jYRbGaai6uC9HETzas7pJ6Qhy+ffz2UKdEYLi1VLHsaq + X75Z5dWmXphu9f83rAKezE9CYHm+PJtfCCmN6nzYmKby9xzdvEmPjC4JmCjqvh+sqORE + Bzxq55zbOUyTxIzqT01tuFNOw/v8W0H5dQ6fFOCzvxrMmYV1xWY68YL/0QqfqG2DG5q1 + XPDS0Sgg6L+yzBD2e/I0iNDZaFfXRDq4jvWBkELBWMrWm1880C9/qHFlPwFRRUlHYf+M + 4DSQ== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20221208; t=1692625900; x=1693230700; + 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=du9K8HAMfjDBv9t9zq9p8Zs+vCZHJ6g2zmB7iSzSF7o=; + b=ejVU1hfEMyFZ7BfMSqaYec4EUOoA0M467Rm/YLD9WqMi6MKcePqHndqYIVtBdIb8pl + jE/EUHhBvvRp1Bn9zpDfUbCUk27iKZaqWwqAa4ZLknDsCStzGovzG2+wKem8yoP2H1jp + e5tUVYZa2/MESz/zDnwWZV528p3+eHhCUUWBwTCt3plzb+SWqR1j0T40nBrUB+tDj1b0 + VYDTZvDCxDhQRGlLmMYX8QtWf/waAzPl5ePXvPhus06aR5+7O2V28M8yF2xRcceFSIQR + 4T2k/MBwCdM1+mpz6TnKB+zjN6Kj0TmPzEo9o6Pcc/lXWY0kRniuHFu0fzE84gOcGlOi + Xfyw== +X-Gm-Message-State: AOJu0YxMuk5t4Hh2FasrdRfRr0tLxX8vAgGS5cfNm5tZpbvKz9V6ip/a + g8C3FsqqNAKybynks3ECaaBXn+kLAr4= +X-Google-Smtp-Source: + AGHT+IE0aHC9IeAZ9om6v+CX5lhGhaikzyvs7K+JjasiPPxFotFPaEOG+0SHfy/L4wW7iRlvWFh0mw== +X-Received: by 2002:a5d:568f:0:b0:317:e5ec:8767 with SMTP id + f15-20020a5d568f000000b00317e5ec8767mr4615501wrv.21.1692625899711; + Mon, 21 Aug 2023 06:51:39 -0700 (PDT) +Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id + r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.37 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Mon, 21 Aug 2023 06:51:39 -0700 (PDT) +From: Alper Nebi Yasak +To: u-boot@lists.denx.de +Cc: Kever Yang , + Jagan Teki , + Andre Przywara , + Svyatoslav Ryhel , Alexander Graf , + Philipp Tomsich , Andrew Davis , + Da Xue , Heinrich Schuchardt , + Patrice Chotard , + Patrick Delaunay , + Derald Woods , + Anatolij Gustschin , + uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , + Matthias Brugger , u-boot-amlogic@groups.io, + Ilias Apalodimas , + Neil Armstrong , + Alper Nebi Yasak +Subject: [PATCH v5 07/13] video: test: Test video damage tracking via + vidconsole +Date: Mon, 21 Aug 2023 16:51:04 +0300 +Message-Id: <20230821135111.3558478-8-alpernebiyasak@gmail.com> +X-Mailer: git-send-email 2.40.1 +In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +MIME-Version: 1.0 +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 + +With VIDEO_DAMAGE, the video uclass tracks updated regions of the frame +buffer in order to avoid unnecessary work during a video sync. Enable +the config in sandbox and add a test for it, by printing strings at a +few locations and checking the tracked region. + +Signed-off-by: Alper Nebi Yasak +--- +This is hard to test because most things issue video syncs that process +and reset the damaged region. + +Changes in v5: +- Add patch "video: test: Test video damage tracking via vidconsole" + + configs/sandbox_defconfig | 1 + + test/dm/video.c | 56 +++++++++++++++++++++++++++++++++++++++ + 2 files changed, 57 insertions(+) + +diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig +index 259f31f26cee..51b820f13121 100644 +--- a/configs/sandbox_defconfig ++++ b/configs/sandbox_defconfig +@@ -307,6 +307,7 @@ CONFIG_USB_ETH_CDC=y + CONFIG_VIDEO=y + CONFIG_VIDEO_FONT_SUN12X22=y + CONFIG_VIDEO_COPY=y ++CONFIG_VIDEO_DAMAGE=y + CONFIG_CONSOLE_ROTATION=y + CONFIG_CONSOLE_TRUETYPE=y + CONFIG_CONSOLE_TRUETYPE_CANTORAONE=y +diff --git a/test/dm/video.c b/test/dm/video.c +index e4bd27a6b76f..8c7d9800a42e 100644 +--- a/test/dm/video.c ++++ b/test/dm/video.c +@@ -711,3 +711,59 @@ static int dm_test_video_copy(struct unit_test_state *uts) + return 0; + } + DM_TEST(dm_test_video_copy, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); ++ ++/* Test video damage tracking */ ++static int dm_test_video_damage(struct unit_test_state *uts) ++{ ++ struct sandbox_sdl_plat *plat; ++ struct udevice *dev, *con; ++ struct video_priv *priv; ++ const char *test_string_1 = "Criticism may not be agreeable, "; ++ const char *test_string_2 = "but it is necessary."; ++ const char *test_string_3 = "It fulfils the same function as pain in the human body."; ++ ++ if (!IS_ENABLED(CONFIG_VIDEO_DAMAGE)) ++ return -EAGAIN; ++ ++ ut_assertok(uclass_find_device(UCLASS_VIDEO, 0, &dev)); ++ ut_assert(!device_active(dev)); ++ plat = dev_get_plat(dev); ++ plat->font_size = 32; ++ ++ ut_assertok(video_get_nologo(uts, &dev)); ++ ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); ++ priv = dev_get_uclass_priv(dev); ++ ++ vidconsole_position_cursor(con, 14, 10); ++ vidconsole_put_string(con, test_string_2); ++ ut_asserteq(449, priv->damage.xstart); ++ ut_asserteq(325, priv->damage.ystart); ++ ut_asserteq(661, priv->damage.xend); ++ ut_asserteq(350, priv->damage.yend); ++ ++ vidconsole_position_cursor(con, 7, 5); ++ vidconsole_put_string(con, test_string_1); ++ ut_asserteq(225, priv->damage.xstart); ++ ut_asserteq(164, priv->damage.ystart); ++ ut_asserteq(661, priv->damage.xend); ++ ut_asserteq(350, priv->damage.yend); ++ ++ vidconsole_position_cursor(con, 21, 15); ++ vidconsole_put_string(con, test_string_3); ++ ut_asserteq(225, priv->damage.xstart); ++ ut_asserteq(164, priv->damage.ystart); ++ ut_asserteq(1280, priv->damage.xend); ++ ut_asserteq(510, priv->damage.yend); ++ ++ video_sync(dev, false); ++ ut_asserteq(priv->xsize, priv->damage.xstart); ++ ut_asserteq(priv->ysize, priv->damage.ystart); ++ ut_asserteq(0, priv->damage.xend); ++ ut_asserteq(0, priv->damage.yend); ++ ++ ut_asserteq(7339, compress_frame_buffer(uts, dev, false)); ++ ut_assertok(check_copy_frame_buffer(uts, dev)); ++ ++ return 0; ++} ++DM_TEST(dm_test_video_damage, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); + +From patchwork Mon Aug 21 13:51:05 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Alper Nebi Yasak +X-Patchwork-Id: 1823651 +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=20221208 header.b=mvjKik+t; + 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 4RTv7M6kVWz1yYZ + for ; Mon, 21 Aug 2023 23:52:47 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 6CAC987085; + Mon, 21 Aug 2023 15:51:46 +0200 (CEST) +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="mvjKik+t"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 6192687085; Mon, 21 Aug 2023 15:51:45 +0200 (CEST) +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,SPF_HELO_NONE, + SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 +Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com + [IPv6:2a00:1450:4864:20::336]) + (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 D1E718706A + for ; Mon, 21 Aug 2023 15:51:42 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=gmail.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=alpernebiyasak@gmail.com +Received: by mail-wm1-x336.google.com with SMTP id + 5b1f17b1804b1-3fee17aebc8so20256405e9.0 + for ; Mon, 21 Aug 2023 06:51:42 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20221208; t=1692625902; x=1693230702; + 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=OUPwGyIUGhu07FwRipI6J5nz3cUBWpffvk0k2vprnLg=; + b=mvjKik+ts2RRqakLQOi9t7J1i101HYF0aguRZ/P4y3h8SvaC+jrWNXPy+MyUiGFatO + EW5N4iqonVrCvE+i19nnSxA3TW5G5ItgSDTN6yq5TEp806h08MC17nKgCuRk/Urg+Nkj + ZewK+CW+lOR6k2kB8LtZylmeke1YHCeGMXq9VMK1hsm4co4hgSx0ZJ1OXiP5+tc4mVug + L2WSO1+ILyeHTT0N/dHw3FHShX08Y0SisUe32K946KofaqN6teHjb172uNMPVvd4Nk1S + G2GYNvIigYOzyXNzeBRUDXG3TkK8+ioXwBLZ4iqTsf77Dc0p2ePFbhc23gHzBcKBpUSc + O2nA== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20221208; t=1692625902; x=1693230702; + 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=OUPwGyIUGhu07FwRipI6J5nz3cUBWpffvk0k2vprnLg=; + b=PY5C635/8jWW5ixQ4L1L3j9qeTGHNNV7zdPW6utGplgCgNorieSsCHQweRvRmMeEuD + MFr4iXeMz4fuhtbE79McVeS1D2v3BXvw2DX52qn7G6MlWSp/OVuocmhZPavm+DsYq7wJ + D//vupLeuSNo0SXsniHXWL8NlKNfz7qnozFFui+kEvO0IwOmVbDRI99V9uZM3ng9hERg + y3hKkIFQSgXYtPJ+4h3reOPhrZLXW5t/o9rXjgeC+l6WyxkI6UASNgww0aC0iwiIg40B + enEpHJN00lL6FOkCuYsMay4itv3ydNVuzZHbW7w6tmgDHIWKLg4yi4tFuiSgl+EnJluq + pqDw== +X-Gm-Message-State: AOJu0YzfIxtWigpVmRfL01E4NvwPLzRkCCjd173t25icCTVna47obihz + mXXbV/Xvlo7hwqge7/MU2LnnCJaUcgE= +X-Google-Smtp-Source: + AGHT+IFzj3fGJ3yOnSTVNmg3QQIrMsHdzvHVI7a3IQjx0jS8kD0qBSvWJ3Z5+c4jA0D6oPZBiuGxwA== +X-Received: by 2002:a5d:6811:0:b0:319:8a5a:ab5e with SMTP id + w17-20020a5d6811000000b003198a5aab5emr4349395wru.38.1692625902291; + Mon, 21 Aug 2023 06:51:42 -0700 (PDT) +Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id + r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.40 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Mon, 21 Aug 2023 06:51:41 -0700 (PDT) +From: Alper Nebi Yasak +To: u-boot@lists.denx.de +Cc: Kever Yang , + Jagan Teki , + Andre Przywara , + Svyatoslav Ryhel , Alexander Graf , + Philipp Tomsich , Andrew Davis , + Da Xue , Heinrich Schuchardt , + Patrice Chotard , + Patrick Delaunay , + Derald Woods , + Anatolij Gustschin , + uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , + Matthias Brugger , u-boot-amlogic@groups.io, + Ilias Apalodimas , + Neil Armstrong , + Alper Nebi Yasak +Subject: [PATCH v5 08/13] video: Add damage notification on bmp display +Date: Mon, 21 Aug 2023 16:51:05 +0300 +Message-Id: <20230821135111.3558478-9-alpernebiyasak@gmail.com> +X-Mailer: git-send-email 2.40.1 +In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +MIME-Version: 1.0 +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 + +From: Alexander Graf + +Let's report the video damage when we draw a bitmap on the screen. This +way we can later lazily flush only relevant regions to hardware. + +Signed-off-by: Alexander Graf +Reported-by: Da Xue +Reviewed-by: Simon Glass +Signed-off-by: Alper Nebi Yasak +--- + +(no changes since v1) + + drivers/video/video_bmp.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/drivers/video/video_bmp.c b/drivers/video/video_bmp.c +index 45f003c8251a..10943b9ca19f 100644 +--- a/drivers/video/video_bmp.c ++++ b/drivers/video/video_bmp.c +@@ -460,6 +460,8 @@ int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y, + break; + }; + ++ video_damage(dev, x, y, width, height); ++ + /* Find the position of the top left of the image in the framebuffer */ + fb = (uchar *)(priv->fb + y * priv->line_length + x * bpix / 8); + ret = video_sync_copy(dev, start, fb); + +From patchwork Mon Aug 21 13:51:06 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Alper Nebi Yasak +X-Patchwork-Id: 1823652 +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=20221208 header.b=rvkBTDGo; + 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 4RTv7Y6TNDz1yYZ + for ; Mon, 21 Aug 2023 23:52:57 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id B23478708D; + Mon, 21 Aug 2023 15:51:48 +0200 (CEST) +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="rvkBTDGo"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id E994E87081; Mon, 21 Aug 2023 15:51:47 +0200 (CEST) +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,SPF_HELO_NONE, + SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 +Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com + [IPv6:2a00:1450:4864:20::430]) + (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 4A29E8708E + for ; Mon, 21 Aug 2023 15:51:45 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=gmail.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=alpernebiyasak@gmail.com +Received: by mail-wr1-x430.google.com with SMTP id + ffacd0b85a97d-31427ddd3fbso3057122f8f.0 + for ; Mon, 21 Aug 2023 06:51:45 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20221208; t=1692625905; x=1693230705; + 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=NHWfOmBWnCfG15vLo7N7Y/b5x/nSoPE0dmgy30xOm9Q=; + b=rvkBTDGokSsZ+zHSmCyephYHOa1zCgYEH1V/eHcDIaJehG3LF1h3ZetBhv0F1WCnRL + dg0OqSl4nhT+d01IqkhLNI1FTeIJQeE/FHwY83jActydA9RdIKB97V7VAmOnABjsedPs + n/m1fNRUpKdpm/TBglBcCWTlhrozxmO+plcVOAjMhNlQQGUGkRo1eq/yHOw8pzfiIQVT + 4G4hJi3ePKSsEYbd1YuMZSkrzN70N+Erw/eeRb2QAdkn4J6xcJyPMEWirh7uNV2erutB + ZzxtmQOTBV9y19HeQkYKJeCnpReJ2LaLzTJj72ehPZpZqbYfj67OE+MeCC6Yt/m3YILh + fpGQ== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20221208; t=1692625905; x=1693230705; + 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=NHWfOmBWnCfG15vLo7N7Y/b5x/nSoPE0dmgy30xOm9Q=; + b=i5Ecd9fdl1ZJU0VqAc78F3Pmf9jo/gquJagwYJOv+0Gs8ayWCAJVUNkBV1a10fi3YU + uHNi0JjDvPtp8HPET+X5ywPbVDMbGOtad+ZjijeZL+mbC+Zc+lN2Oy35AoZjAeiYYqcL + qr+tjpJBWmj7lsr4rZ+Tqpc5m93dDUcxAeKZeOas3KQ+oM/S5zaPEb6puDJuVXTGbx9/ + NF+fyUg6I5MN+ZrT/+2pj8da5MpJaSlYzzymyg7JmdELwMKcBJsOuVNFfj+kXHLAmapY + MCO+hRidacGMoSYFLc/PHU7rU1qZqAWuizW35JPJmGYWschbDBhU5HWTPkJ8ifdZ9dqO + 7kkA== +X-Gm-Message-State: AOJu0YxlhwAy04+v9sqR7+z6BpzMYlqGrKNxnrBV5TAuFHvCn94+0y5X + UCsHr11K/guiHrF8/+oTMNTEUjwCaRQ= +X-Google-Smtp-Source: + AGHT+IF9A6Dqme3W/tV3JyovhEsU6i4A15qi8QyYKIlOrt7P6EPMkzmv+B+4oB2S58BxD/9oTr/SHQ== +X-Received: by 2002:a5d:4988:0:b0:31a:e6c2:770d with SMTP id + r8-20020a5d4988000000b0031ae6c2770dmr4196623wrq.36.1692625904737; + Mon, 21 Aug 2023 06:51:44 -0700 (PDT) +Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id + r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.42 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Mon, 21 Aug 2023 06:51:44 -0700 (PDT) +From: Alper Nebi Yasak +To: u-boot@lists.denx.de +Cc: Kever Yang , + Jagan Teki , + Andre Przywara , + Svyatoslav Ryhel , Alexander Graf , + Philipp Tomsich , Andrew Davis , + Da Xue , Heinrich Schuchardt , + Patrice Chotard , + Patrick Delaunay , + Derald Woods , + Anatolij Gustschin , + uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , + Matthias Brugger , u-boot-amlogic@groups.io, + Ilias Apalodimas , + Neil Armstrong , + Alper Nebi Yasak +Subject: [PATCH v5 09/13] efi_loader: GOP: Add damage notification on BLT +Date: Mon, 21 Aug 2023 16:51:06 +0300 +Message-Id: <20230821135111.3558478-10-alpernebiyasak@gmail.com> +X-Mailer: git-send-email 2.40.1 +In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +MIME-Version: 1.0 +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 + +From: Alexander Graf + +Now that we have a damage tracking API, let's populate damage done by +UEFI payloads when they BLT data onto the screen. + +Signed-off-by: Alexander Graf +Reported-by: Da Xue +Reviewed-by: Heinrich Schuchardt +[Alper: Add struct comment for new member] +Signed-off-by: Alper Nebi Yasak +--- + +Changes in v5: +- Document new vdev field in struct efi_gop_obj comment + +Changes in v4: +- Skip damage on EfiBltVideoToBltBuffer + +Changes in v3: +- Adapt to always assume DM is used + +Changes in v2: +- Remove ifdefs from gop + + lib/efi_loader/efi_gop.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/lib/efi_loader/efi_gop.c b/lib/efi_loader/efi_gop.c +index 778b693f983a..db6535e080c4 100644 +--- a/lib/efi_loader/efi_gop.c ++++ b/lib/efi_loader/efi_gop.c +@@ -24,6 +24,7 @@ static const efi_guid_t efi_gop_guid = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID; + * @ops: graphical output protocol interface + * @info: graphical output mode information + * @mode: graphical output mode ++ * @vdev: backing video device + * @bpix: bits per pixel + * @fb: frame buffer + */ +@@ -32,6 +33,7 @@ struct efi_gop_obj { + struct efi_gop ops; + struct efi_gop_mode_info info; + struct efi_gop_mode mode; ++ struct udevice *vdev; + /* Fields we only have access to during init */ + u32 bpix; + void *fb; +@@ -120,6 +122,7 @@ static __always_inline efi_status_t gop_blt_int(struct efi_gop *this, + u32 *fb32 = gopobj->fb; + u16 *fb16 = gopobj->fb; + struct efi_gop_pixel *buffer = __builtin_assume_aligned(bufferp, 4); ++ bool blt_to_video = (operation != EFI_BLT_VIDEO_TO_BLT_BUFFER); + + if (delta) { + /* Check for 4 byte alignment */ +@@ -243,6 +246,9 @@ static __always_inline efi_status_t gop_blt_int(struct efi_gop *this, + dlineoff += dwidth; + } + ++ if (blt_to_video) ++ video_damage(gopobj->vdev, dx, dy, width, height); ++ + return EFI_SUCCESS; + } + +@@ -548,6 +554,7 @@ efi_status_t efi_gop_register(void) + gopobj->info.pixels_per_scanline = col; + gopobj->bpix = bpix; + gopobj->fb = fb; ++ gopobj->vdev = vdev; + + return EFI_SUCCESS; + } + +From patchwork Mon Aug 21 13:51:07 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Alper Nebi Yasak +X-Patchwork-Id: 1823653 +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=20221208 header.b=SJ3CoTwS; + 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 4RTv7l6Gwbz1yYZ + for ; Mon, 21 Aug 2023 23:53:07 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 04C3A87091; + Mon, 21 Aug 2023 15:51:52 +0200 (CEST) +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="SJ3CoTwS"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 79C6786F0A; Mon, 21 Aug 2023 15:51:50 +0200 (CEST) +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,SPF_HELO_NONE, + SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 +Received: from mail-wr1-x435.google.com (mail-wr1-x435.google.com + [IPv6:2a00:1450:4864:20::435]) + (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 E3F3B86E80 + for ; Mon, 21 Aug 2023 15:51:47 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=gmail.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=alpernebiyasak@gmail.com +Received: by mail-wr1-x435.google.com with SMTP id + ffacd0b85a97d-31aeef88a55so1551204f8f.2 + for ; Mon, 21 Aug 2023 06:51:47 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20221208; t=1692625907; x=1693230707; + 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=l/DCoXVnGlEMqWseytQAYuhC9MvrFlVv7QEu+lzOB9U=; + b=SJ3CoTwShv0m1a2l77IYGRiPJhE773qxJozbJ8TLkbWb/Fs3vzMjaetMjO1LteCIix + nxWVY9KC93yaMYqJT6SqYWKi1BaFToYnd6muvummJcQpRouAllJWg2nVkF0e6rb8GdHn + kEvHDvCo4Xq4Lrpvs6/W0ONesn+kGcCJbX3+BARXOoTD87bHAQpb5gcTr6FjYwUraYf/ + 31t1qEak7+tRD5cuPx0ItVaX8KSHeAMuueL0gEw6Wt64zNUyAO7W7cCRNJFMIsBkB2Lw + IOsoOk7kBgIqU/InShFLnIoLlW9EafAood5bDff+/ADKYaXgkgxpBbWQWgtF6tmmvjGO + gfgg== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20221208; t=1692625907; x=1693230707; + 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=l/DCoXVnGlEMqWseytQAYuhC9MvrFlVv7QEu+lzOB9U=; + b=Tx8Anl+tKgGLw4YpMhb5VbWFhDaaZ7izCBtT/Mun3zxxONGjrw/1uYrQVf/HxeEzcw + 0VQqKGIC9Kek3RaHw20BGPdbmmDTmaVo3IGNrikhp2qDmM0bBH2AVbn0K5MV5t9dwKsA + U5D/cFon6pqj8sco6Dd5oVBskjrgqlgNtd3HXzCrfuFmFtsXxecVmlgKOnnE8Kj+CGGI + D2EMM/0yQCq/vuxC4/ISIiaRk0/6GCX55V8DYg+claM+h691kk/LGeEGXJqs5X1wFGQU + EZeKiKrY2VvqZ7yOXoriyel6QE7BvHmCmurDC+oji/do1hnGp/6NPxPFV/ABKsRmjPGY + V6Eg== +X-Gm-Message-State: AOJu0YxqpYt8rTBNvBZ9hiz/qYI+xhkc2uURaJNeyYssFbd+tACGWJtX + 6fE/7qVWobRKTs1ZWXtn3qcomaeF/nc= +X-Google-Smtp-Source: + AGHT+IHlrJ5IlwhVESQ4N6S+FeCJPNau4Ry7TWJN4H6yUmdpI19HJsGEPwtYtoPvcLuI4yNltjc9CQ== +X-Received: by 2002:a5d:4483:0:b0:317:dada:2417 with SMTP id + j3-20020a5d4483000000b00317dada2417mr4326536wrq.31.1692625907186; + Mon, 21 Aug 2023 06:51:47 -0700 (PDT) +Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id + r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.45 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Mon, 21 Aug 2023 06:51:46 -0700 (PDT) +From: Alper Nebi Yasak +To: u-boot@lists.denx.de +Cc: Kever Yang , + Jagan Teki , + Andre Przywara , + Svyatoslav Ryhel , Alexander Graf , + Philipp Tomsich , Andrew Davis , + Da Xue , Heinrich Schuchardt , + Patrice Chotard , + Patrick Delaunay , + Derald Woods , + Anatolij Gustschin , + uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , + Matthias Brugger , u-boot-amlogic@groups.io, + Ilias Apalodimas , + Neil Armstrong , + Alper Nebi Yasak +Subject: [PATCH v5 10/13] video: Only dcache flush damaged lines +Date: Mon, 21 Aug 2023 16:51:07 +0300 +Message-Id: <20230821135111.3558478-11-alpernebiyasak@gmail.com> +X-Mailer: git-send-email 2.40.1 +In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +MIME-Version: 1.0 +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 + +From: Alexander Graf + +Now that we have a damage area tells us which parts of the frame buffer +actually need updating, let's only dcache flush those on video_sync() +calls. With this optimization in place, frame buffer updates - especially +on large screen such as 4k displays - speed up significantly. + +Signed-off-by: Alexander Graf +Reported-by: Da Xue +[Alper: Use damage.xstart/yend, IS_ENABLED()] +Co-developed-by: Alper Nebi Yasak +Signed-off-by: Alper Nebi Yasak +--- + +Changes in v5: +- Use xstart, ystart, xend, yend as names for damage region +- Use IS_ENABLED() instead of CONFIG_IS_ENABLED() + +Changes in v2: +- Fix dcache range; we were flushing too much before +- Remove ifdefs + + drivers/video/video-uclass.c | 41 +++++++++++++++++++++++++++++++----- + 1 file changed, 36 insertions(+), 5 deletions(-) + +diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c +index 8bfcbc88dda7..a50220bcc684 100644 +--- a/drivers/video/video-uclass.c ++++ b/drivers/video/video-uclass.c +@@ -385,6 +385,41 @@ void video_damage(struct udevice *vid, int x, int y, int width, int height) + priv->damage.yend = max(yend, priv->damage.yend); + } + ++#if defined(CONFIG_ARM) && !CONFIG_IS_ENABLED(SYS_DCACHE_OFF) ++static void video_flush_dcache(struct udevice *vid) ++{ ++ struct video_priv *priv = dev_get_uclass_priv(vid); ++ ++ if (!priv->flush_dcache) ++ return; ++ ++ if (!IS_ENABLED(CONFIG_VIDEO_DAMAGE)) { ++ flush_dcache_range((ulong)priv->fb, ++ ALIGN((ulong)priv->fb + priv->fb_size, ++ CONFIG_SYS_CACHELINE_SIZE)); ++ ++ return; ++ } ++ ++ if (priv->damage.xend && priv->damage.yend) { ++ int lstart = priv->damage.xstart * VNBYTES(priv->bpix); ++ int lend = priv->damage.xend * VNBYTES(priv->bpix); ++ int y; ++ ++ for (y = priv->damage.ystart; y < priv->damage.yend; y++) { ++ ulong fb = (ulong)priv->fb; ++ ulong start = fb + (y * priv->line_length) + lstart; ++ ulong end = start + lend - lstart; ++ ++ start = ALIGN_DOWN(start, CONFIG_SYS_CACHELINE_SIZE); ++ end = ALIGN(end, CONFIG_SYS_CACHELINE_SIZE); ++ ++ flush_dcache_range(start, end); ++ } ++ } ++} ++#endif ++ + /* Flush video activity to the caches */ + int video_sync(struct udevice *vid, bool force) + { +@@ -404,11 +439,7 @@ int video_sync(struct udevice *vid, bool force) + * out whether it exists? For now, ARM is safe. + */ + #if defined(CONFIG_ARM) && !CONFIG_IS_ENABLED(SYS_DCACHE_OFF) +- if (priv->flush_dcache) { +- flush_dcache_range((ulong)priv->fb, +- ALIGN((ulong)priv->fb + priv->fb_size, +- CONFIG_SYS_CACHELINE_SIZE)); +- } ++ video_flush_dcache(vid); + #elif defined(CONFIG_VIDEO_SANDBOX_SDL) + static ulong last_sync; + + +From patchwork Mon Aug 21 13:51:08 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Alper Nebi Yasak +X-Patchwork-Id: 1823654 +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=20221208 header.b=JgtEabWc; + 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 4RTv7w4Mskz1yYZ + for ; Mon, 21 Aug 2023 23:53:16 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 4790487096; + Mon, 21 Aug 2023 15:51:54 +0200 (CEST) +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="JgtEabWc"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 102DC87096; Mon, 21 Aug 2023 15:51:54 +0200 (CEST) +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,SPF_HELO_NONE, + SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 +Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com + [IPv6:2a00:1450:4864:20::429]) + (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 4AFE187098 + for ; Mon, 21 Aug 2023 15:51:50 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=gmail.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=alpernebiyasak@gmail.com +Received: by mail-wr1-x429.google.com with SMTP id + ffacd0b85a97d-31c3726cc45so1247414f8f.0 + for ; Mon, 21 Aug 2023 06:51:50 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20221208; t=1692625910; x=1693230710; + 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=NdoZCMaizC3Y759MOjDBPu1VoZ+fIm/Lqzoh+gR4stQ=; + b=JgtEabWcIca2ALjUCCqGgXmUf5MREa+Jm3Yt8fmf6mwr8MrhP5Iu7KssN+MMQbAxKO + cl+LarTpXoK8lh4x2WmdcUKViUJdCAMCFJCk6vdMhIFAjaBH1Sqhudg315eFGharTw6G + 7FFSDdE1ZAablttQmfgcm59Ilk5+2QRAFycWcOiue5yFfF8RSAAAF8UHkl7rKxgQKHCO + NWC3P4PdjYEtaQFoJ4R5txJ07Wdvoptc9JVL9WGf4wSL5X6fm+SbalQaW3YgFuKNy0fk + 0+lmUOMDOXmwx4iGWZd6+LRFXYEZGCZ95AvjoDF83ZlL9Nu1oUvB/qzH7PRJatx6j/mw + J8Zw== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20221208; t=1692625910; x=1693230710; + 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=NdoZCMaizC3Y759MOjDBPu1VoZ+fIm/Lqzoh+gR4stQ=; + b=ATA2PnRfDc2gQVzxEqGIcgBsTvJvkOPNl2NSZEoxqmZfEe/94an/QM50JhcxX0wNEA + 0HpCsEsyDLhFnjW4APp/TYwLoc0mbRD/T517DYROiuJLUSRxyO/NApA1qyRJpVQTqpRc + dRZ5hG5VoUH3oHfwZN1abRKxbIogLNiJhSSNDvjA01RYJwTZY6Fq8xUJCYp9gI28/OI0 + oZ0SA+qdXZ4UvNR/uqun2tysI+JnatTKlbwSfCF7q/sj5AfH/VNk3EqNROuXlIBRMWI8 + pgosvMd73/GvTMQvsWPgGNNc3fhZgcnLKIoQFKdoqCeSFAufSLREsoWPLMMH1xXuh1lG + JKFQ== +X-Gm-Message-State: AOJu0YyKi/tYIN4uVjau5AbbNkJPzybGF79aUx+ls+uiyxVTGeu0zy64 + aMCSasGPaxyg+ogYkqU0Dx/1q3mIbnM= +X-Google-Smtp-Source: + AGHT+IHsb00O74X0NrGSp+Znx7MktY8oHr2PL7yyjJMmEkZVU5lzx7Wg/Yr0hFddlw1zsptntp6etA== +X-Received: by 2002:a05:6000:1cce:b0:314:ca7:f30b with SMTP id + bf14-20020a0560001cce00b003140ca7f30bmr5251008wrb.54.1692625909678; + Mon, 21 Aug 2023 06:51:49 -0700 (PDT) +Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id + r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.47 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Mon, 21 Aug 2023 06:51:49 -0700 (PDT) +From: Alper Nebi Yasak +To: u-boot@lists.denx.de +Cc: Kever Yang , + Jagan Teki , + Andre Przywara , + Svyatoslav Ryhel , Alexander Graf , + Philipp Tomsich , Andrew Davis , + Da Xue , Heinrich Schuchardt , + Patrice Chotard , + Patrick Delaunay , + Derald Woods , + Anatolij Gustschin , + uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , + Matthias Brugger , u-boot-amlogic@groups.io, + Ilias Apalodimas , + Neil Armstrong , + Alper Nebi Yasak +Subject: [PATCH v5 11/13] video: Use VIDEO_DAMAGE for VIDEO_COPY +Date: Mon, 21 Aug 2023 16:51:08 +0300 +Message-Id: <20230821135111.3558478-12-alpernebiyasak@gmail.com> +X-Mailer: git-send-email 2.40.1 +In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +MIME-Version: 1.0 +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 + +From: Alexander Graf + +CONFIG_VIDEO_COPY implemented a range-based copying mechanism: If we +print a single character, it will always copy the full range of bytes +from the top left corner of the character to the lower right onto the +uncached frame buffer. This includes pretty much the full line contents +of the printed character. + +Since we now have proper damage tracking, let's make use of that to reduce +the amount of data we need to copy. With this patch applied, we will only +copy the tiny rectangle surrounding characters when we print them, +speeding up the video console. + +After this, changes to the main frame buffer are not immediately copied +to the copy frame buffer, but postponed until the next video device +sync. So issue an explicit sync before inspecting the copy frame buffer +contents for the video tests. + +Signed-off-by: Alexander Graf +[Alper: Rebase for fontdata->height/w, fill_part(), fix memmove(dev), + drop from defconfig, use damage.xstart/yend, use IS_ENABLED(), + call video_sync() before copy_fb check, update video_copy test] +Co-developed-by: Alper Nebi Yasak +Signed-off-by: Alper Nebi Yasak +--- + +Changes in v5: +- Remove video_sync_copy() also from video_fill(), video_fill_part() +- Fix memmove() calls by removing the extra dev argument +- Call video_sync() before checking copy_fb in video tests +- Use xstart, ystart, xend, yend as names for damage region +- Use met->baseline instead of priv->baseline +- Use fontdata->height/width instead of VIDEO_FONT_HEIGHT/WIDTH +- Use xstart, ystart, xend, yend as names for damage region +- Use IS_ENABLED() instead of CONFIG_IS_ENABLED() +- Drop VIDEO_DAMAGE from sandbox defconfig added in a new patch +- Update dm_test_video_copy test added in a new patch + +Changes in v3: +- Make VIDEO_COPY always select VIDEO_DAMAGE + +Changes in v2: +- Add patch "video: Use VIDEO_DAMAGE for VIDEO_COPY" + + configs/sandbox_defconfig | 1 - + drivers/video/Kconfig | 5 ++ + drivers/video/console_normal.c | 13 +---- + drivers/video/console_rotate.c | 44 +++----------- + drivers/video/console_truetype.c | 16 +---- + drivers/video/vidconsole-uclass.c | 16 ----- + drivers/video/video-uclass.c | 97 ++++++++----------------------- + drivers/video/video_bmp.c | 7 --- + include/video.h | 37 ------------ + include/video_console.h | 52 ----------------- + test/dm/video.c | 3 +- + 11 files changed, 43 insertions(+), 248 deletions(-) + +diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig +index 51b820f13121..259f31f26cee 100644 +--- a/configs/sandbox_defconfig ++++ b/configs/sandbox_defconfig +@@ -307,7 +307,6 @@ CONFIG_USB_ETH_CDC=y + CONFIG_VIDEO=y + CONFIG_VIDEO_FONT_SUN12X22=y + CONFIG_VIDEO_COPY=y +-CONFIG_VIDEO_DAMAGE=y + CONFIG_CONSOLE_ROTATION=y + CONFIG_CONSOLE_TRUETYPE=y + CONFIG_CONSOLE_TRUETYPE_CANTORAONE=y +diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig +index 97f494a1340b..b3fbd9d7d9ca 100644 +--- a/drivers/video/Kconfig ++++ b/drivers/video/Kconfig +@@ -83,11 +83,14 @@ config VIDEO_PCI_DEFAULT_FB_SIZE + + config VIDEO_COPY + bool "Enable copying the frame buffer to a hardware copy" ++ select VIDEO_DAMAGE + help + On some machines (e.g. x86), reading from the frame buffer is very + slow because it is uncached. To improve performance, this feature + allows the frame buffer to be kept in cached memory (allocated by + U-Boot) and then copied to the hardware frame-buffer as needed. ++ It uses the VIDEO_DAMAGE feature to keep track of regions to copy ++ and will only copy actually touched regions. + + To use this, your video driver must set @copy_base in + struct video_uc_plat. +@@ -105,6 +108,8 @@ config VIDEO_DAMAGE + regions of the frame buffer that were modified before, speeding up + screen refreshes significantly. + ++ It is also used by VIDEO_COPY to identify which regions changed. ++ + config BACKLIGHT_PWM + bool "Generic PWM based Backlight Driver" + depends on BACKLIGHT && DM_PWM +diff --git a/drivers/video/console_normal.c b/drivers/video/console_normal.c +index a19ce6a2bc11..c44aa09473a3 100644 +--- a/drivers/video/console_normal.c ++++ b/drivers/video/console_normal.c +@@ -35,10 +35,6 @@ static int console_set_row(struct udevice *dev, uint row, int clr) + fill_pixel_and_goto_next(&dst, clr, pbytes, pbytes); + end = dst; + +- ret = vidconsole_sync_copy(dev, line, end); +- if (ret) +- return ret; +- + video_damage(dev->parent, + 0, + fontdata->height * row, +@@ -57,14 +53,11 @@ static int console_move_rows(struct udevice *dev, uint rowdst, + void *dst; + void *src; + int size; +- int ret; + + dst = vid_priv->fb + rowdst * fontdata->height * vid_priv->line_length; + src = vid_priv->fb + rowsrc * fontdata->height * vid_priv->line_length; + size = fontdata->height * vid_priv->line_length * count; +- ret = vidconsole_memmove(dev, dst, src, size); +- if (ret) +- return ret; ++ memmove(dst, src, size); + + video_damage(dev->parent, + 0, +@@ -108,10 +101,6 @@ static int console_putc_xy(struct udevice *dev, uint x_frac, uint y, char ch) + fontdata->width, + fontdata->height); + +- ret = vidconsole_sync_copy(dev, start, line); +- if (ret) +- return ret; +- + return VID_TO_POS(fontdata->width); + } + +diff --git a/drivers/video/console_rotate.c b/drivers/video/console_rotate.c +index 6c3e7c1bb8dc..6e9067d1c7fb 100644 +--- a/drivers/video/console_rotate.c ++++ b/drivers/video/console_rotate.c +@@ -21,7 +21,6 @@ static int console_set_row_1(struct udevice *dev, uint row, int clr) + int pbytes = VNBYTES(vid_priv->bpix); + void *start, *dst, *line; + int i, j; +- int ret; + + start = vid_priv->fb + vid_priv->line_length - + (row + 1) * fontdata->height * pbytes; +@@ -32,9 +31,6 @@ static int console_set_row_1(struct udevice *dev, uint row, int clr) + fill_pixel_and_goto_next(&dst, clr, pbytes, pbytes); + line += vid_priv->line_length; + } +- ret = vidconsole_sync_copy(dev, start, line); +- if (ret) +- return ret; + + video_damage(dev->parent, + vid_priv->xsize - ((row + 1) * fontdata->height), +@@ -54,7 +50,7 @@ static int console_move_rows_1(struct udevice *dev, uint rowdst, uint rowsrc, + int pbytes = VNBYTES(vid_priv->bpix); + void *dst; + void *src; +- int j, ret; ++ int j; + + dst = vid_priv->fb + vid_priv->line_length - + (rowdst + count) * fontdata->height * pbytes; +@@ -62,10 +58,7 @@ static int console_move_rows_1(struct udevice *dev, uint rowdst, uint rowsrc, + (rowsrc + count) * fontdata->height * pbytes; + + for (j = 0; j < vid_priv->ysize; j++) { +- ret = vidconsole_memmove(dev, dst, src, +- fontdata->height * pbytes * count); +- if (ret) +- return ret; ++ memmove(dst, src, fontdata->height * pbytes * count); + src += vid_priv->line_length; + dst += vid_priv->line_length; + } +@@ -104,10 +97,6 @@ static int console_putc_xy_1(struct udevice *dev, uint x_frac, uint y, char ch) + return ret; + + /* We draw backwards from 'start, so account for the first line */ +- ret = vidconsole_sync_copy(dev, start - vid_priv->line_length, line); +- if (ret) +- return ret; +- + video_damage(dev->parent, + vid_priv->xsize - y - fontdata->height, + linenum - 1, +@@ -125,7 +114,7 @@ static int console_set_row_2(struct udevice *dev, uint row, int clr) + struct video_fontdata *fontdata = priv->fontdata; + void *start, *line, *dst, *end; + int pixels = fontdata->height * vid_priv->xsize; +- int i, ret; ++ int i; + int pbytes = VNBYTES(vid_priv->bpix); + + start = vid_priv->fb + vid_priv->ysize * vid_priv->line_length - +@@ -135,9 +124,6 @@ static int console_set_row_2(struct udevice *dev, uint row, int clr) + for (i = 0; i < pixels; i++) + fill_pixel_and_goto_next(&dst, clr, pbytes, pbytes); + end = dst; +- ret = vidconsole_sync_copy(dev, start, end); +- if (ret) +- return ret; + + video_damage(dev->parent, + 0, +@@ -163,8 +149,7 @@ static int console_move_rows_2(struct udevice *dev, uint rowdst, uint rowsrc, + vid_priv->line_length; + src = end - (rowsrc + count) * fontdata->height * + vid_priv->line_length; +- vidconsole_memmove(dev, dst, src, +- fontdata->height * vid_priv->line_length * count); ++ memmove(dst, src, fontdata->height * vid_priv->line_length * count); + + video_damage(dev->parent, + 0, +@@ -199,11 +184,6 @@ static int console_putc_xy_2(struct udevice *dev, uint x_frac, uint y, char ch) + if (ret) + return ret; + +- /* Add 4 bytes to allow for the first pixel writen */ +- ret = vidconsole_sync_copy(dev, start + 4, line); +- if (ret) +- return ret; +- + video_damage(dev->parent, + x - fontdata->width + 1, + linenum - fontdata->height + 1, +@@ -220,7 +200,7 @@ static int console_set_row_3(struct udevice *dev, uint row, int clr) + struct video_fontdata *fontdata = priv->fontdata; + int pbytes = VNBYTES(vid_priv->bpix); + void *start, *dst, *line; +- int i, j, ret; ++ int i, j; + + start = vid_priv->fb + row * fontdata->height * pbytes; + line = start; +@@ -230,9 +210,6 @@ static int console_set_row_3(struct udevice *dev, uint row, int clr) + fill_pixel_and_goto_next(&dst, clr, pbytes, pbytes); + line += vid_priv->line_length; + } +- ret = vidconsole_sync_copy(dev, start, line); +- if (ret) +- return ret; + + video_damage(dev->parent, + row * fontdata->height, +@@ -252,16 +229,13 @@ static int console_move_rows_3(struct udevice *dev, uint rowdst, uint rowsrc, + int pbytes = VNBYTES(vid_priv->bpix); + void *dst; + void *src; +- int j, ret; ++ int j; + + dst = vid_priv->fb + rowdst * fontdata->height * pbytes; + src = vid_priv->fb + rowsrc * fontdata->height * pbytes; + + for (j = 0; j < vid_priv->ysize; j++) { +- ret = vidconsole_memmove(dev, dst, src, +- fontdata->height * pbytes * count); +- if (ret) +- return ret; ++ memmove(dst, src, fontdata->height * pbytes * count); + src += vid_priv->line_length; + dst += vid_priv->line_length; + } +@@ -296,10 +270,6 @@ static int console_putc_xy_3(struct udevice *dev, uint x_frac, uint y, char ch) + line = start; + + ret = fill_char_horizontally(pfont, &line, vid_priv, fontdata, NORMAL_DIRECTION); +- if (ret) +- return ret; +- /* Add a line to allow for the first pixels writen */ +- ret = vidconsole_sync_copy(dev, start + vid_priv->line_length, line); + if (ret) + return ret; + +diff --git a/drivers/video/console_truetype.c b/drivers/video/console_truetype.c +index 0adbf9cc3d67..07bb0af71311 100644 +--- a/drivers/video/console_truetype.c ++++ b/drivers/video/console_truetype.c +@@ -182,7 +182,6 @@ static int console_truetype_set_row(struct udevice *dev, uint row, int clr) + struct console_tt_priv *priv = dev_get_priv(dev); + struct console_tt_metrics *met = priv->cur_met; + void *end, *line; +- int ret; + + line = vid_priv->fb + row * met->font_size * vid_priv->line_length; + end = line + met->font_size * vid_priv->line_length; +@@ -218,9 +217,6 @@ static int console_truetype_set_row(struct udevice *dev, uint row, int clr) + default: + return -ENOSYS; + } +- ret = vidconsole_sync_copy(dev, line, end); +- if (ret) +- return ret; + + video_damage(dev->parent, + 0, +@@ -240,14 +236,11 @@ static int console_truetype_move_rows(struct udevice *dev, uint rowdst, + struct console_tt_metrics *met = priv->cur_met; + void *dst; + void *src; +- int i, diff, ret; ++ int i, diff; + + dst = vid_priv->fb + rowdst * met->font_size * vid_priv->line_length; + src = vid_priv->fb + rowsrc * met->font_size * vid_priv->line_length; +- ret = vidconsole_memmove(dev, dst, src, met->font_size * +- vid_priv->line_length * count); +- if (ret) +- return ret; ++ memmove(dst, src, met->font_size * vid_priv->line_length * count); + + /* Scroll up our position history */ + diff = (rowsrc - rowdst) * met->font_size; +@@ -280,7 +273,7 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y, + u8 *bits, *data; + int advance; + void *start, *end, *line; +- int row, ret; ++ int row; + + /* First get some basic metrics about this character */ + stbtt_GetCodepointHMetrics(font, ch, &advance, &lsb); +@@ -424,9 +417,6 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y, + width, + height); + +- ret = vidconsole_sync_copy(dev, start, line); +- if (ret) +- return ret; + free(data); + + return width_frac; +diff --git a/drivers/video/vidconsole-uclass.c b/drivers/video/vidconsole-uclass.c +index 05f930478096..27a1e8ec3e49 100644 +--- a/drivers/video/vidconsole-uclass.c ++++ b/drivers/video/vidconsole-uclass.c +@@ -682,22 +682,6 @@ UCLASS_DRIVER(vidconsole) = { + .per_device_auto = sizeof(struct vidconsole_priv), + }; + +-#ifdef CONFIG_VIDEO_COPY +-int vidconsole_sync_copy(struct udevice *dev, void *from, void *to) +-{ +- struct udevice *vid = dev_get_parent(dev); +- +- return video_sync_copy(vid, from, to); +-} +- +-int vidconsole_memmove(struct udevice *dev, void *dst, const void *src, +- int size) +-{ +- memmove(dst, src, size); +- return vidconsole_sync_copy(dev, dst, dst + size); +-} +-#endif +- + int vidconsole_clear_and_reset(struct udevice *dev) + { + int ret; +diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c +index a50220bcc684..c79499252a22 100644 +--- a/drivers/video/video-uclass.c ++++ b/drivers/video/video-uclass.c +@@ -160,7 +160,7 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, + struct video_priv *priv = dev_get_uclass_priv(dev); + void *start, *line; + int pixels = xend - xstart; +- int row, i, ret; ++ int row, i; + + start = priv->fb + ystart * priv->line_length; + start += xstart * VNBYTES(priv->bpix); +@@ -200,10 +200,6 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, + line += priv->line_length; + } + +- ret = video_sync_copy(dev, start, line); +- if (ret) +- return ret; +- + video_damage(dev, xstart, ystart, xend - xstart, yend - ystart); + + return 0; +@@ -223,7 +219,6 @@ int video_reserve_from_bloblist(struct video_handoff *ho) + int video_fill(struct udevice *dev, u32 colour) + { + struct video_priv *priv = dev_get_uclass_priv(dev); +- int ret; + + switch (priv->bpix) { + case VIDEO_BPP16: +@@ -248,9 +243,6 @@ int video_fill(struct udevice *dev, u32 colour) + memset(priv->fb, colour, priv->fb_size); + break; + } +- ret = video_sync_copy(dev, priv->fb, priv->fb + priv->fb_size); +- if (ret) +- return ret; + + video_damage(dev, 0, 0, priv->xsize, priv->ysize); + +@@ -420,6 +412,27 @@ static void video_flush_dcache(struct udevice *vid) + } + #endif + ++static void video_flush_copy(struct udevice *vid) ++{ ++ struct video_priv *priv = dev_get_uclass_priv(vid); ++ ++ if (!priv->copy_fb) ++ return; ++ ++ if (priv->damage.xend && priv->damage.yend) { ++ int lstart = priv->damage.xstart * VNBYTES(priv->bpix); ++ int lend = priv->damage.xend * VNBYTES(priv->bpix); ++ int y; ++ ++ for (y = priv->damage.ystart; y < priv->damage.yend; y++) { ++ ulong offset = (y * priv->line_length) + lstart; ++ ulong len = lend - lstart; ++ ++ memcpy(priv->copy_fb + offset, priv->fb + offset, len); ++ } ++ } ++} ++ + /* Flush video activity to the caches */ + int video_sync(struct udevice *vid, bool force) + { +@@ -427,6 +440,9 @@ int video_sync(struct udevice *vid, bool force) + struct video_ops *ops = video_get_ops(vid); + int ret; + ++ if (IS_ENABLED(CONFIG_VIDEO_COPY)) ++ video_flush_copy(vid); ++ + if (ops && ops->video_sync) { + ret = ops->video_sync(vid); + if (ret) +@@ -503,69 +519,6 @@ int video_get_ysize(struct udevice *dev) + return priv->ysize; + } + +-#ifdef CONFIG_VIDEO_COPY +-int video_sync_copy(struct udevice *dev, void *from, void *to) +-{ +- struct video_priv *priv = dev_get_uclass_priv(dev); +- +- if (priv->copy_fb) { +- long offset, size; +- +- /* Find the offset of the first byte to copy */ +- if ((ulong)to > (ulong)from) { +- size = to - from; +- offset = from - priv->fb; +- } else { +- size = from - to; +- offset = to - priv->fb; +- } +- +- /* +- * Allow a bit of leeway for valid requests somewhere near the +- * frame buffer +- */ +- if (offset < -priv->fb_size || offset > 2 * priv->fb_size) { +-#ifdef DEBUG +- char str[120]; +- +- snprintf(str, sizeof(str), +- "[** FAULT sync_copy fb=%p, from=%p, to=%p, offset=%lx]", +- priv->fb, from, to, offset); +- console_puts_select_stderr(true, str); +-#endif +- return -EFAULT; +- } +- +- /* +- * Silently crop the memcpy. This allows callers to avoid doing +- * this themselves. It is common for the end pointer to go a +- * few lines after the end of the frame buffer, since most of +- * the update algorithms terminate a line after their last write +- */ +- if (offset + size > priv->fb_size) { +- size = priv->fb_size - offset; +- } else if (offset < 0) { +- size += offset; +- offset = 0; +- } +- +- memcpy(priv->copy_fb + offset, priv->fb + offset, size); +- } +- +- return 0; +-} +- +-int video_sync_copy_all(struct udevice *dev) +-{ +- struct video_priv *priv = dev_get_uclass_priv(dev); +- +- video_sync_copy(dev, priv->fb, priv->fb + priv->fb_size); +- +- return 0; +-} +- +-#endif +- + #define SPLASH_DECL(_name) \ + extern u8 __splash_ ## _name ## _begin[]; \ + extern u8 __splash_ ## _name ## _end[] +diff --git a/drivers/video/video_bmp.c b/drivers/video/video_bmp.c +index 10943b9ca19f..da2bbe864a03 100644 +--- a/drivers/video/video_bmp.c ++++ b/drivers/video/video_bmp.c +@@ -268,7 +268,6 @@ int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y, + enum video_format eformat; + struct bmp_color_table_entry *palette; + int hdr_size; +- int ret; + + if (!bmp || !(bmp->header.signature[0] == 'B' && + bmp->header.signature[1] == 'M')) { +@@ -462,11 +461,5 @@ int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y, + + video_damage(dev, x, y, width, height); + +- /* Find the position of the top left of the image in the framebuffer */ +- fb = (uchar *)(priv->fb + y * priv->line_length + x * bpix / 8); +- ret = video_sync_copy(dev, start, fb); +- if (ret) +- return log_ret(ret); +- + return video_sync(dev, false); + } +diff --git a/include/video.h b/include/video.h +index a522f33949e5..42e57b44188d 100644 +--- a/include/video.h ++++ b/include/video.h +@@ -350,43 +350,6 @@ void video_set_default_colors(struct udevice *dev, bool invert); + */ + int video_default_font_height(struct udevice *dev); + +-#ifdef CONFIG_VIDEO_COPY +-/** +- * vidconsole_sync_copy() - Sync back to the copy framebuffer +- * +- * This ensures that the copy framebuffer has the same data as the framebuffer +- * for a particular region. It should be called after the framebuffer is updated +- * +- * @from and @to can be in either order. The region between them is synced. +- * +- * @dev: Vidconsole device being updated +- * @from: Start/end address within the framebuffer (->fb) +- * @to: Other address within the frame buffer +- * Return: 0 if OK, -EFAULT if the start address is before the start of the +- * frame buffer start +- */ +-int video_sync_copy(struct udevice *dev, void *from, void *to); +- +-/** +- * video_sync_copy_all() - Sync the entire framebuffer to the copy +- * +- * @dev: Vidconsole device being updated +- * Return: 0 (always) +- */ +-int video_sync_copy_all(struct udevice *dev); +-#else +-static inline int video_sync_copy(struct udevice *dev, void *from, void *to) +-{ +- return 0; +-} +- +-static inline int video_sync_copy_all(struct udevice *dev) +-{ +- return 0; +-} +- +-#endif +- + /** + * video_damage() - Notify the video subsystem about screen updates. + * +diff --git a/include/video_console.h b/include/video_console.h +index 2694e44f6ecf..caadeb878989 100644 +--- a/include/video_console.h ++++ b/include/video_console.h +@@ -404,56 +404,4 @@ void vidconsole_list_fonts(struct udevice *dev); + */ + int vidconsole_get_font_size(struct udevice *dev, const char **name, uint *sizep); + +-#ifdef CONFIG_VIDEO_COPY +-/** +- * vidconsole_sync_copy() - Sync back to the copy framebuffer +- * +- * This ensures that the copy framebuffer has the same data as the framebuffer +- * for a particular region. It should be called after the framebuffer is updated +- * +- * @from and @to can be in either order. The region between them is synced. +- * +- * @dev: Vidconsole device being updated +- * @from: Start/end address within the framebuffer (->fb) +- * @to: Other address within the frame buffer +- * Return: 0 if OK, -EFAULT if the start address is before the start of the +- * frame buffer start +- */ +-int vidconsole_sync_copy(struct udevice *dev, void *from, void *to); +- +-/** +- * vidconsole_memmove() - Perform a memmove() within the frame buffer +- * +- * This handles a memmove(), e.g. for scrolling. It also updates the copy +- * framebuffer. +- * +- * @dev: Vidconsole device being updated +- * @dst: Destination address within the framebuffer (->fb) +- * @src: Source address within the framebuffer (->fb) +- * @size: Number of bytes to transfer +- * Return: 0 if OK, -EFAULT if the start address is before the start of the +- * frame buffer start +- */ +-int vidconsole_memmove(struct udevice *dev, void *dst, const void *src, +- int size); +-#else +- +-#include +- +-static inline int vidconsole_sync_copy(struct udevice *dev, void *from, +- void *to) +-{ +- return 0; +-} +- +-static inline int vidconsole_memmove(struct udevice *dev, void *dst, +- const void *src, int size) +-{ +- memmove(dst, src, size); +- +- return 0; +-} +- +-#endif +- + #endif +diff --git a/test/dm/video.c b/test/dm/video.c +index 8c7d9800a42e..4c3bcd26e94f 100644 +--- a/test/dm/video.c ++++ b/test/dm/video.c +@@ -106,6 +106,7 @@ static int check_copy_frame_buffer(struct unit_test_state *uts, + if (!IS_ENABLED(CONFIG_VIDEO_COPY)) + return 0; + ++ video_sync(dev, false); + ut_assertf(!memcmp(priv->fb, priv->copy_fb, priv->fb_size), + "Copy framebuffer does not match fb"); + +@@ -706,7 +707,7 @@ static int dm_test_video_copy(struct unit_test_state *uts) + vidconsole_put_string(con, test_string); + vidconsole_put_string(con, test_string); + ut_asserteq(7589, compress_frame_buffer(uts, dev, false)); +- ut_asserteq(5278, compress_frame_buffer(uts, dev, true)); ++ ut_asserteq(4127, compress_frame_buffer(uts, dev, true)); + + return 0; + } + +From patchwork Mon Aug 21 13:51:09 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Alper Nebi Yasak +X-Patchwork-Id: 1823655 +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=20221208 header.b=Q9fX66MT; + 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 4RTv8541j7z1yYZ + for ; Mon, 21 Aug 2023 23:53:25 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 909B287075; + Mon, 21 Aug 2023 15:51:56 +0200 (CEST) +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="Q9fX66MT"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 801C187082; Mon, 21 Aug 2023 15:51:55 +0200 (CEST) +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,SPF_HELO_NONE, + SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 +Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com + [IPv6:2a00:1450:4864:20::431]) + (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 D67548709E + for ; Mon, 21 Aug 2023 15:51:52 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=gmail.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=alpernebiyasak@gmail.com +Received: by mail-wr1-x431.google.com with SMTP id + ffacd0b85a97d-317716a4622so3055294f8f.1 + for ; Mon, 21 Aug 2023 06:51:52 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20221208; t=1692625912; x=1693230712; + 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=pB2qI48avq9qUXnFEl+wSnmS8SG0cxx3SZjicfp6H7M=; + b=Q9fX66MTTcUQaIK9Ypbt13c6159mxahNRVYZb/qRcTZRgB9DWf7SyL5B6iwaerzl6H + V/NgeKQknUqjdF1rx5cN+0oUlRjL/uqf2PRT1u/2iPSTrLx9ImfxO59U1v7bkAyqsRHD + 9d/OLcbkmN2dqLKXGEJEhw9wRWn6PflMZfMjZfJ6PgDh1lldO8RAGdA+f9Wv0Uqs/CHY + M6HHFEIenHnWt15i3RWPMrP09rbx4OkOqYNXz1V/3BWUxb3tRe+1IqwA2n/oEpR5c0PM + YcGRP1tNM3yqfxG53IdsPPiujOtSHSbvtWSyefvk7z3wSlVPYMzicea8BirSi8/Ag/R0 + CJ5A== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20221208; t=1692625912; x=1693230712; + 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=pB2qI48avq9qUXnFEl+wSnmS8SG0cxx3SZjicfp6H7M=; + b=L5dQ5I1/r76Ec7WfGFYq1iqhI4RaRdXt+61BNvttoSzkuI28cDeE9IYg5h41YdBzNd + t6sNriBN4Qc+mGdOBHQb7hoI62tzka68Qd18eexmWznS1lz73CJWNA6nW0T2heZpmRnx + frQSxlPNxv5FZ2eXSdZLRIhWG0T0L+B+G/6B665+1/N1tvTFCLsToL2GaiGnEskSn3rJ + wQPY7b2lG/xkfWZiNERig8/6ZMW5R3QQDdOucA/FVYuHY4/dr+9UuPEHaimYzTwzN6AM + aehqXj0h7YO8NjF9HG1n1T4hEYq0FKqbcb2t+hLAUBpzGBjLNrpCdWa9LzQWN0EEJw8H + /ijQ== +X-Gm-Message-State: AOJu0YwwdmeqIA0FUSFZkbrYH8d4F3YWnny6MkSqZvX6DQEtu9Y/TVK7 + x418Ed0mXh7BUNyNIuPNquOOpbM3J+o= +X-Google-Smtp-Source: + AGHT+IFpiAY2BjXpJaKJJodzwN7aKj9YFF3eAkfmZgRFnB94o3W7mQtEZgXERHeKNVbIpRB5HlMypw== +X-Received: by 2002:a05:6000:1205:b0:31c:4f80:9f7 with SMTP id + e5-20020a056000120500b0031c4f8009f7mr1593479wrx.45.1692625912317; + Mon, 21 Aug 2023 06:51:52 -0700 (PDT) +Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id + r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.50 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Mon, 21 Aug 2023 06:51:51 -0700 (PDT) +From: Alper Nebi Yasak +To: u-boot@lists.denx.de +Cc: Kever Yang , + Jagan Teki , + Andre Przywara , + Svyatoslav Ryhel , Alexander Graf , + Philipp Tomsich , Andrew Davis , + Da Xue , Heinrich Schuchardt , + Patrice Chotard , + Patrick Delaunay , + Derald Woods , + Anatolij Gustschin , + uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , + Matthias Brugger , u-boot-amlogic@groups.io, + Ilias Apalodimas , + Neil Armstrong , + Alper Nebi Yasak +Subject: [PATCH v5 12/13] video: Always compile cache flushing code +Date: Mon, 21 Aug 2023 16:51:09 +0300 +Message-Id: <20230821135111.3558478-13-alpernebiyasak@gmail.com> +X-Mailer: git-send-email 2.40.1 +In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +MIME-Version: 1.0 +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 + +From: Alexander Graf + +The dcache flushing code path was conditional on ARM && !DCACHE config +options. However, dcaches exist on other platforms as well and may need +clearing if their driver requires it. + +Simplify the compile logic and always enable the dcache flush logic in +the video core. That way, drivers can always rely on it to call the arch +specific callbacks. + +This will increase code size for non-ARM platforms with CONFIG_VIDEO=y +slightly. + +Reported-by: Heinrich Schuchardt +Signed-off-by: Alexander Graf +Reviewed-by: Simon Glass +Signed-off-by: Alper Nebi Yasak +--- + +(no changes since v4) + +Changes in v4: +- Add patch "video: Always compile cache flushing code" + + drivers/video/video-uclass.c | 14 +++++--------- + 1 file changed, 5 insertions(+), 9 deletions(-) + +diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c +index c79499252a22..3f9ddaadd15d 100644 +--- a/drivers/video/video-uclass.c ++++ b/drivers/video/video-uclass.c +@@ -377,11 +377,13 @@ void video_damage(struct udevice *vid, int x, int y, int width, int height) + priv->damage.yend = max(yend, priv->damage.yend); + } + +-#if defined(CONFIG_ARM) && !CONFIG_IS_ENABLED(SYS_DCACHE_OFF) + static void video_flush_dcache(struct udevice *vid) + { + struct video_priv *priv = dev_get_uclass_priv(vid); + ++ if (CONFIG_IS_ENABLED(SYS_DCACHE_OFF)) ++ return; ++ + if (!priv->flush_dcache) + return; + +@@ -410,7 +412,6 @@ static void video_flush_dcache(struct udevice *vid) + } + } + } +-#endif + + static void video_flush_copy(struct udevice *vid) + { +@@ -449,14 +450,9 @@ int video_sync(struct udevice *vid, bool force) + return ret; + } + +- /* +- * flush_dcache_range() is declared in common.h but it seems that some +- * architectures do not actually implement it. Is there a way to find +- * out whether it exists? For now, ARM is safe. +- */ +-#if defined(CONFIG_ARM) && !CONFIG_IS_ENABLED(SYS_DCACHE_OFF) + video_flush_dcache(vid); +-#elif defined(CONFIG_VIDEO_SANDBOX_SDL) ++ ++#if defined(CONFIG_VIDEO_SANDBOX_SDL) + static ulong last_sync; + + if (force || get_timer(last_sync) > 100) { + +From patchwork Mon Aug 21 13:51:10 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Alper Nebi Yasak +X-Patchwork-Id: 1823656 +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=20221208 header.b=LXQ9F9oF; + 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 4RTv8G1ylrz1yYZ + for ; Mon, 21 Aug 2023 23:53:34 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id D63BC87082; + Mon, 21 Aug 2023 15:51:59 +0200 (CEST) +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="LXQ9F9oF"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 6DC358709F; Mon, 21 Aug 2023 15:51:58 +0200 (CEST) +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,SPF_HELO_NONE, + SPF_PASS autolearn=ham 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 B9E5887094 + for ; Mon, 21 Aug 2023 15:51:55 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=gmail.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=alpernebiyasak@gmail.com +Received: by mail-wm1-x329.google.com with SMTP id + 5b1f17b1804b1-3fee5ddc23eso19328245e9.1 + for ; Mon, 21 Aug 2023 06:51:55 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20221208; t=1692625915; x=1693230715; + 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=q4KbQNgBgg/jRM/b8KJaE0YjvGZTzMRikT8MXE6mjwI=; + b=LXQ9F9oF17Es3W44Ien7NWJ7ymwABfjmSOFUn1nlvsBdcyw9b3O/o8ulQCpUwqhXho + Lsoff11Pmwlo87siidtGiRDX/BRiaZ8rBVWjS3jgK+U6RDPcwNCfR7otgNlLLaNyAd4w + BCXHT1+90WvAX/9alOvPUYlvUkP1t/S15/C+bUJWxok5Nf6l5iGthuNMWvZFFiUdQ8yR + 02AJastvoFpsYlAJI+JY69q6OhIhuxvdeDVc81dEOKzKkkEOdENJDmT6pJI4fiWlgwEE + iSJz97xC4lCSs+y5RPJTJfxE97zWwduKphPAN75dLRw0vnBYyqeXIo4ERx4uO7ku2jHf + 8feQ== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20221208; t=1692625915; x=1693230715; + 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=q4KbQNgBgg/jRM/b8KJaE0YjvGZTzMRikT8MXE6mjwI=; + b=VOZaSadRyfgFoQTc22AZ+r/0BSY4/MskC2GhVnMFg1gAc1bBAg7PJOyNu3x0V3ICuX + w68LWLVRLSaTmnF46xARtATTh8hJhyj7k3/oD4mNclUIyfmx/9vTSXJLn1MsG6m3TL8z + l5QNyUjNlgAK+YeuYH6zQl/yp5lmAF4EaOg5ITz+eLN2lf10QPYS18/bVbvNQ0Q2cwIN + FH+i7NhTRVoeExDFNVEFO11ZI3CJiAzpMC4WhI6OucHDWGIzEGcQKOYu9FfgwOfF5dVY + Yc6qjX3w9zhbwV3LA/grMncdSA9joMxVkWJwvFFD+6AlVLgin7DH8EDaIOtENT/RD/qq + Hjvw== +X-Gm-Message-State: AOJu0YyYX84n+767GB59OryFC5m/WbElRHO2Ix8D2HaL8Wnef45wnjme + 9nuXLuU5B1juuVwSn7QqTlnSVvjWNGQ= +X-Google-Smtp-Source: + AGHT+IER2mHBuKBsYnQ3qf+DOtUzSQystkj8v17bWgFVK+zSLUhwLW9BOExvB2cO0RXSrx1vnjzR/w== +X-Received: by 2002:adf:e711:0:b0:317:e542:80a8 with SMTP id + c17-20020adfe711000000b00317e54280a8mr4968619wrm.15.1692625915025; + Mon, 21 Aug 2023 06:51:55 -0700 (PDT) +Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id + r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.52 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Mon, 21 Aug 2023 06:51:54 -0700 (PDT) +From: Alper Nebi Yasak +To: u-boot@lists.denx.de +Cc: Kever Yang , + Jagan Teki , + Andre Przywara , + Svyatoslav Ryhel , Alexander Graf , + Philipp Tomsich , Andrew Davis , + Da Xue , Heinrich Schuchardt , + Patrice Chotard , + Patrick Delaunay , + Derald Woods , + Anatolij Gustschin , + uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , + Matthias Brugger , u-boot-amlogic@groups.io, + Ilias Apalodimas , + Neil Armstrong , + Alper Nebi Yasak +Subject: [PATCH v5 13/13] video: Enable VIDEO_DAMAGE for drivers that need it +Date: Mon, 21 Aug 2023 16:51:10 +0300 +Message-Id: <20230821135111.3558478-14-alpernebiyasak@gmail.com> +X-Mailer: git-send-email 2.40.1 +In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> +MIME-Version: 1.0 +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 + +From: Alexander Graf + +Some drivers call video_set_flush_dcache() to indicate that they want to +have the dcache flushed for the frame buffer. These drivers benefit from +our new video damage control, because we can reduce the amount of memory +that gets flushed significantly. + +This patch enables video damage control for all device drivers that call +video_set_flush_dcache() to make sure they benefit from it. + +Signed-off-by: Alexander Graf +[Alper: Add to VIDEO_TIDSS, imply instead of select] +Co-developed-by: Alper Nebi Yasak +Signed-off-by: Alper Nebi Yasak +--- + +Changes in v5: +- Imply VIDEO_DAMAGE for video drivers instead of selecting it +- Imply VIDEO_DAMAGE also for VIDEO_TIDSS + +Changes in v4: +- Add patch "video: Enable VIDEO_DAMAGE for drivers that need it" + + arch/arm/mach-omap2/omap3/Kconfig | 1 + + arch/arm/mach-sunxi/Kconfig | 1 + + drivers/video/Kconfig | 8 ++++++++ + drivers/video/exynos/Kconfig | 1 + + drivers/video/imx/Kconfig | 1 + + drivers/video/meson/Kconfig | 1 + + drivers/video/rockchip/Kconfig | 1 + + drivers/video/stm32/Kconfig | 1 + + drivers/video/tegra20/Kconfig | 1 + + drivers/video/tidss/Kconfig | 1 + + 10 files changed, 17 insertions(+) + +diff --git a/arch/arm/mach-omap2/omap3/Kconfig b/arch/arm/mach-omap2/omap3/Kconfig +index 671e4791c67f..fd858f7b50f2 100644 +--- a/arch/arm/mach-omap2/omap3/Kconfig ++++ b/arch/arm/mach-omap2/omap3/Kconfig +@@ -113,6 +113,7 @@ config TARGET_NOKIA_RX51 + select CMDLINE_TAG + select INITRD_TAG + select REVISION_TAG ++ imply VIDEO_DAMAGE + + config TARGET_TAO3530 + bool "TAO3530" +diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig +index 9d5df2c10273..fb4478ea32e8 100644 +--- a/arch/arm/mach-sunxi/Kconfig ++++ b/arch/arm/mach-sunxi/Kconfig +@@ -813,6 +813,7 @@ config VIDEO_SUNXI + depends on !SUN50I_GEN_H6 + select VIDEO + select DISPLAY ++ imply VIDEO_DAMAGE + imply VIDEO_DT_SIMPLEFB + default y + ---help--- +diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig +index b3fbd9d7d9ca..185dbb1f8390 100644 +--- a/drivers/video/Kconfig ++++ b/drivers/video/Kconfig +@@ -499,6 +499,7 @@ config VIDEO_LCD_ANX9804 + + config ATMEL_LCD + bool "Atmel LCD panel support" ++ imply VIDEO_DAMAGE + depends on ARCH_AT91 + + config ATMEL_LCD_BGR555 +@@ -508,6 +509,7 @@ config ATMEL_LCD_BGR555 + + config VIDEO_BCM2835 + bool "Display support for BCM2835" ++ imply VIDEO_DAMAGE + help + The graphics processor already sets up the display so this driver + simply checks the resolution and then sets up the frame buffer with +@@ -654,6 +656,7 @@ source "drivers/video/meson/Kconfig" + + config VIDEO_MVEBU + bool "Armada XP LCD controller" ++ imply VIDEO_DAMAGE + ---help--- + Support for the LCD controller integrated in the Marvell + Armada XP SoC. +@@ -688,6 +691,7 @@ config NXP_TDA19988 + + config ATMEL_HLCD + bool "Enable ATMEL video support using HLCDC" ++ imply VIDEO_DAMAGE + help + HLCDC supports video output to an attached LCD panel. + +@@ -764,6 +768,7 @@ source "drivers/video/tidss/Kconfig" + + config VIDEO_TEGRA124 + bool "Enable video support on Tegra124" ++ imply VIDEO_DAMAGE + help + Tegra124 supports many video output options including eDP and + HDMI. At present only eDP is supported by U-Boot. This option +@@ -778,6 +783,7 @@ source "drivers/video/imx/Kconfig" + + config VIDEO_MXS + bool "Enable video support on i.MX28/i.MX6UL/i.MX7 SoCs" ++ imply VIDEO_DAMAGE + help + Enable framebuffer driver for i.MX28/i.MX6UL/i.MX7 processors + +@@ -840,6 +846,7 @@ config VIDEO_DW_MIPI_DSI + + config VIDEO_SIMPLE + bool "Simple display driver for preconfigured display" ++ imply VIDEO_DAMAGE + help + Enables a simple generic display driver which utilizes the + simple-framebuffer devicetree bindings. +@@ -858,6 +865,7 @@ config VIDEO_DT_SIMPLEFB + + config VIDEO_MCDE_SIMPLE + bool "Simple driver for ST-Ericsson MCDE with preconfigured display" ++ imply VIDEO_DAMAGE + help + Enables a simple display driver for ST-Ericsson MCDE + (Multichannel Display Engine), which reads the configuration from +diff --git a/drivers/video/exynos/Kconfig b/drivers/video/exynos/Kconfig +index 599d19d5ecc2..a2cf752aac03 100644 +--- a/drivers/video/exynos/Kconfig ++++ b/drivers/video/exynos/Kconfig +@@ -12,6 +12,7 @@ config EXYNOS_DP + + config EXYNOS_FB + bool "Exynos FIMD support" ++ imply VIDEO_DAMAGE + + config EXYNOS_MIPI_DSIM + bool "Exynos MIPI DSI support" +diff --git a/drivers/video/imx/Kconfig b/drivers/video/imx/Kconfig +index 34e8b640595b..5db3e5c0499e 100644 +--- a/drivers/video/imx/Kconfig ++++ b/drivers/video/imx/Kconfig +@@ -2,6 +2,7 @@ + config VIDEO_IPUV3 + bool "i.MX IPUv3 Core video support" + depends on VIDEO && (MX5 || MX6) ++ imply VIDEO_DAMAGE + help + This enables framebuffer driver for i.MX processors working + on the IPUv3(Image Processing Unit) internal graphic processor. +diff --git a/drivers/video/meson/Kconfig b/drivers/video/meson/Kconfig +index 3c2d72d019b8..fcf486ca0a3a 100644 +--- a/drivers/video/meson/Kconfig ++++ b/drivers/video/meson/Kconfig +@@ -8,5 +8,6 @@ config VIDEO_MESON + bool "Enable Amlogic Meson video support" + depends on VIDEO + select DISPLAY ++ imply VIDEO_DAMAGE + help + Enable Amlogic Meson Video Processing Unit video support. +diff --git a/drivers/video/rockchip/Kconfig b/drivers/video/rockchip/Kconfig +index 01804dcb1cc8..0f4550a29e38 100644 +--- a/drivers/video/rockchip/Kconfig ++++ b/drivers/video/rockchip/Kconfig +@@ -11,6 +11,7 @@ + menuconfig VIDEO_ROCKCHIP + bool "Enable Rockchip Video Support" + depends on VIDEO ++ imply VIDEO_DAMAGE + help + Rockchip SoCs provide video output capabilities for High-Definition + Multimedia Interface (HDMI), Low-voltage Differential Signalling +diff --git a/drivers/video/stm32/Kconfig b/drivers/video/stm32/Kconfig +index 48066063e4c5..c354c402c288 100644 +--- a/drivers/video/stm32/Kconfig ++++ b/drivers/video/stm32/Kconfig +@@ -8,6 +8,7 @@ + menuconfig VIDEO_STM32 + bool "Enable STM32 video support" + depends on VIDEO ++ imply VIDEO_DAMAGE + help + STM32 supports many video output options including RGB and + DSI. This option enables these supports which can be used on +diff --git a/drivers/video/tegra20/Kconfig b/drivers/video/tegra20/Kconfig +index f5c4843e1191..2232b0b3ff53 100644 +--- a/drivers/video/tegra20/Kconfig ++++ b/drivers/video/tegra20/Kconfig +@@ -1,6 +1,7 @@ + config VIDEO_TEGRA20 + bool "Enable Display Controller support on Tegra20 and Tegra 30" + depends on OF_CONTROL ++ imply VIDEO_DAMAGE + help + T20/T30 support video output to an attached LCD panel as well as + other options such as HDMI. Only the LCD is supported in U-Boot. +diff --git a/drivers/video/tidss/Kconfig b/drivers/video/tidss/Kconfig +index 95086f3a5d66..3291b3ceb8d5 100644 +--- a/drivers/video/tidss/Kconfig ++++ b/drivers/video/tidss/Kconfig +@@ -11,6 +11,7 @@ + menuconfig VIDEO_TIDSS + bool "Enable TIDSS video support" + depends on VIDEO ++ imply VIDEO_DAMAGE + help + TIDSS supports video output options LVDS and + DPI . This option enables these supports which can be used on diff --git a/uboot-tools.spec b/uboot-tools.spec index bd19b50..ede4905 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2023.10 -Release: 0.2%{?candidate:.%{candidate}}%{?dist} +Release: 0.3%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -22,15 +22,16 @@ Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch Patch2: smbios-Simplify-reporting-of-unknown-values.patch Patch3: disable-VBE-by-default.patch Patch4: enable-bootmenu-by-default.patch +Patch5: Add-video-damage-tracking.patch # Board fixes and enablement # RPi - uses RPI firmware device tree for HAT support -Patch5: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch +Patch10: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch # Rockchips improvements -Patch6: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch -Patch7: rock64-small-fixes.patch -#Patch7: 0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch -Patch8: rpi-Convert-to-standard-boot.patch +Patch11: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch +Patch12: rock64-small-fixes.patch +#Patch12: 0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch +Patch13: rpi-Convert-to-standard-boot.patch BuildRequires: bc BuildRequires: bison @@ -215,6 +216,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Mon Aug 21 2023 Peter Robinson - 2023.10-0.3.rc2 +- Add patch to speed up firmware UEFI video output + * Sat Aug 19 2023 Peter Robinson - 2023.10-0.2.rc2 - Add patch for Raspberry Pi boot From 4798befe9560325fc14d29a3a1d800404ea3c4ea Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 21 Aug 2023 22:05:15 +0100 Subject: [PATCH 156/271] 2023.10 RC3 --- rock64-small-fixes.patch | 476 --------------------------------------- sources | 2 +- uboot-tools.spec | 8 +- 3 files changed, 6 insertions(+), 480 deletions(-) delete mode 100644 rock64-small-fixes.patch diff --git a/rock64-small-fixes.patch b/rock64-small-fixes.patch deleted file mode 100644 index 5ea77fb..0000000 --- a/rock64-small-fixes.patch +++ /dev/null @@ -1,476 +0,0 @@ -From patchwork Wed Jun 14 12:43:12 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Peter Robinson -X-Patchwork-Id: 1794950 -X-Patchwork-Delegate: ykai007@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -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=) -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=20221208 header.b=FZFn9vAY; - dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature ECDSA (P-384)) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4Qh4qN0nXtz20WR - for ; Wed, 14 Jun 2023 22:44:00 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id E188F86167; - Wed, 14 Jun 2023 14:43:40 +0200 (CEST) -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="FZFn9vAY"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 4CE61860AA; Wed, 14 Jun 2023 14:43:37 +0200 (CEST) -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,SPF_HELO_NONE, - SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no - version=3.4.2 -Received: from mail-lf1-x133.google.com (mail-lf1-x133.google.com - [IPv6:2a00:1450:4864:20::133]) - (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 BEECA860C3 - for ; Wed, 14 Jun 2023 14:43:34 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=pbrobinson@gmail.com -Received: by mail-lf1-x133.google.com with SMTP id - 2adb3069b0e04-4f642a24568so8546568e87.2 - for ; Wed, 14 Jun 2023 05:43:34 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=gmail.com; s=20221208; t=1686746614; x=1689338614; - 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=sjzdpxK2W2UaYKf4Dbb6vo2R4h51tHoSQv2PLAL+ytA=; - b=FZFn9vAYzx95g5Cma3VU7TW3RzrwGrr2DTEZogYSk3tr58CXaHbRCJAD8suFJLbB18 - 4Uh25vZecFfXajC8z3+nGc/G+yLjO4p+uHq9laCmR1d/OjJadseCHzdHF2vgrMFi4x3U - c2A7F/JYazfKq/1McGMyMsI899Ot9xB8lffElanhTShEGmUwMjSzvalWbJA9ZUkisJvX - 1lfsoPk+26gamlPG4QftIFmXpxUf5pcRqA7pSzgOWyGcPSb8e5HBvcMnMTlNaRSNcjKs - k+TnZww3gSKjD+VxWck1VwgeEK8X4cPgV6HyI4TSSnjWSn2qjy6YW8eJWS4K/h+48RWn - 5VKA== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20221208; t=1686746614; x=1689338614; - 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=sjzdpxK2W2UaYKf4Dbb6vo2R4h51tHoSQv2PLAL+ytA=; - b=TIUdzRnLC89Ao7oVBZZH1iJgNXJg4bFp54s574ftCbOZSDxA49ZHH8ULPGzHpCG0ze - ffGZYszi+DbRLFr92kxE5wgmGjiMapn8MfDaNs5tFm31rBk7QeHIwNH2WwHmmERtGSfi - NbA6vIBYmQFUgdc2GxAfmwQkmyEqnlZUwxz43Goz6W7OnoYofitm9fM2P5JAjVEC9B4g - 3zqxZDCIEJmgTHUpPWgqM1QwJtQA9trNTMJESxsTocqABFS+cCPJCj9HitbWYe3TNGeG - JT6Ma3umJF+whshi0h/4csqV5wCXy5FHEC0nx/p88Tq+o/zCveJu1f16B8PQ3baaIw6n - Bj3Q== -X-Gm-Message-State: AC+VfDwm3GSwcQOMRo9W3rdlJIQd8KXeHulIsQkeI3v53WVLSbA4UQji - Er6vsMhWXQhyhjlcr1WdCnc= -X-Google-Smtp-Source: - ACHHUZ6pFh8GXXZTuMA7izeqjUHeS1gbvk8BisDz2HsWH0v5R9/HJDxhuCGwt4wFH7TA2hi2Y/haJg== -X-Received: by 2002:a19:4359:0:b0:4f3:b4a9:a619 with SMTP id - m25-20020a194359000000b004f3b4a9a619mr7072659lfj.40.1686746613623; - Wed, 14 Jun 2023 05:43:33 -0700 (PDT) -Received: from morpheus.home.roving-it.com - (3.e.2.0.0.0.0.0.0.0.0.0.0.0.0.0.1.8.6.2.1.1.b.f.0.b.8.0.1.0.0.2.ip6.arpa. - [2001:8b0:fb11:2681::2e3]) by smtp.googlemail.com with ESMTPSA id - g26-20020a7bc4da000000b003f60e143d38sm17329161wmk.11.2023.06.14.05.43.33 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Wed, 14 Jun 2023 05:43:33 -0700 (PDT) -From: Peter Robinson -To: "Matwey V. Kornilov" , - Simon Glass , Philipp Tomsich , - Kever Yang , u-boot@lists.denx.de -Cc: Peter Robinson -Subject: [PATCH 2/4] config: rock64: enable efuse for stable mac addr -Date: Wed, 14 Jun 2023 13:43:12 +0100 -Message-ID: <20230614124329.244462-2-pbrobinson@gmail.com> -X-Mailer: git-send-email 2.41.0 -In-Reply-To: <20230614124329.244462-1-pbrobinson@gmail.com> -References: <20230614124329.244462-1-pbrobinson@gmail.com> -MIME-Version: 1.0 -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 - -Enable the rockchip efuse driver on the Rock64 to -provide a stable ethernet address on the device. - -Signed-off-by: Peter Robinson -Reviewed-by: Kever Yang ---- - -While the rockchip efuse driver currently has issues on rk3328 due to, I believe, it -not being properly initialised in ATF, enabling it at least provides a stable MAC -adress on the NIC which I think makes it worthwhile - - configs/rock64-rk3328_defconfig | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/configs/rock64-rk3328_defconfig b/configs/rock64-rk3328_defconfig -index 1da9b0545a5..97ac8734d1b 100644 ---- a/configs/rock64-rk3328_defconfig -+++ b/configs/rock64-rk3328_defconfig -@@ -74,6 +74,7 @@ CONFIG_FASTBOOT_CMD_OEM_FORMAT=y - CONFIG_ROCKCHIP_GPIO=y - CONFIG_SYS_I2C_ROCKCHIP=y - CONFIG_MISC=y -+CONFIG_ROCKCHIP_EFUSE=y - CONFIG_MMC_DW=y - CONFIG_MMC_DW_ROCKCHIP=y - CONFIG_SPI_FLASH_GIGADEVICE=y - -From patchwork Wed Jun 14 12:43:13 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Peter Robinson -X-Patchwork-Id: 1794951 -X-Patchwork-Delegate: ykai007@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -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=) -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=20221208 header.b=WIV1zbyE; - dkim-atps=neutral -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 (P-384)) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4Qh4qf6BLXz20WR - for ; Wed, 14 Jun 2023 22:44:14 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 5B12B86146; - Wed, 14 Jun 2023 14:43:44 +0200 (CEST) -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="WIV1zbyE"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 5200686146; Wed, 14 Jun 2023 14:43:39 +0200 (CEST) -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,SPF_HELO_NONE, - SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no - version=3.4.2 -Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com - [IPv6:2a00:1450:4864:20::336]) - (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 0F3CC860FE - for ; Wed, 14 Jun 2023 14:43:35 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=pbrobinson@gmail.com -Received: by mail-wm1-x336.google.com with SMTP id - 5b1f17b1804b1-3f8c74af64fso5587725e9.1 - for ; Wed, 14 Jun 2023 05:43:35 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=gmail.com; s=20221208; t=1686746614; x=1689338614; - 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=Jne9SqWnJdgDpj5mkPbP6jWrorHm2Ewr8ivuyd1zKBQ=; - b=WIV1zbyEf76/AZV4av4Ab6kytOWNx4Cgr8LFRAVy0DIDj6GKOPyPg7yVsSUOtkkQPR - 4plpstbCTo2xN/epjgrDc70Y2XNal4Y8c8EZIDkfSPn7mVN3vBZscIpajCVK9oMY006G - hQ/3lRYirYKtJbAOt5oRXWqGqXdlrfXMqhDA9dRla5l3J1Px77QZiE7/czqNeryTcrSC - nQJKPLOKXZZwzI7Dcv4QtfBMI2zpkStKYCHynOnD96H1Fm/CRfc4RmKiW3UgJVfCn5eC - 5QHH+onIEDk91Izuk4qry+RAGnMwqv7WthL3hMJY2+gMuJiGbTyNsQZ2VAoD1qgVHXY9 - p/mg== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20221208; t=1686746614; x=1689338614; - 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=Jne9SqWnJdgDpj5mkPbP6jWrorHm2Ewr8ivuyd1zKBQ=; - b=bPn3UB+Nr7fgBm9Vrhg5MVBNiRLiVAR6TPvKWbUGhJ4kytAVtZPyUZrO2FJgbWkSay - uQG5vH7K+ytlJdki06QVI8h99N241iYpSqqA2GjEMWCkes4ATEyMuC112uBb66PpjHJR - 44wpSYTUdxyNSVbtOC5svYFBrcOtrWn3XptxoCrPswBAXXMloirTxyh3TqUOond2NNDc - 7cgEcz1aIYnW2s9BPIZSuCrTO491tBU3Rcd1ubL+7gbMX/Z4hG0fgUdPU6pf4oxQNZ78 - kYue8TdOqV/ksCbzxgMFPXPrwmAVAuodAoaRpDH449SvEr9TNT+k1SJEve21VwZCyZAN - k/3w== -X-Gm-Message-State: AC+VfDz+euUQ/kYf5v84y5arXPpq6LOLBmbUqMFIVVB7/TmpcGsagHMr - v64fxEF0CGVXk4pqvA+7upE= -X-Google-Smtp-Source: - ACHHUZ47g7ktmMWUGnTvkK4deYzNa9InQuYnEmy91+AuY7+Avu9rVE/HmGTqh7XE7FzZF8tB2Wscww== -X-Received: by 2002:a05:600c:364f:b0:3f6:c8c:7048 with SMTP id - y15-20020a05600c364f00b003f60c8c7048mr10715141wmq.20.1686746614238; - Wed, 14 Jun 2023 05:43:34 -0700 (PDT) -Received: from morpheus.home.roving-it.com - (3.e.2.0.0.0.0.0.0.0.0.0.0.0.0.0.1.8.6.2.1.1.b.f.0.b.8.0.1.0.0.2.ip6.arpa. - [2001:8b0:fb11:2681::2e3]) by smtp.googlemail.com with ESMTPSA id - g26-20020a7bc4da000000b003f60e143d38sm17329161wmk.11.2023.06.14.05.43.33 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Wed, 14 Jun 2023 05:43:33 -0700 (PDT) -From: Peter Robinson -To: "Matwey V. Kornilov" , - Simon Glass , Philipp Tomsich , - Kever Yang , u-boot@lists.denx.de -Cc: Peter Robinson -Subject: [PATCH 3/4] rockchip: dts: rk3328: Add rng details to u-boot.dtsi -Date: Wed, 14 Jun 2023 13:43:13 +0100 -Message-ID: <20230614124329.244462-3-pbrobinson@gmail.com> -X-Mailer: git-send-email 2.41.0 -In-Reply-To: <20230614124329.244462-1-pbrobinson@gmail.com> -References: <20230614124329.244462-1-pbrobinson@gmail.com> -MIME-Version: 1.0 -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 the rk3328 rng details to the u-boot.dtsi and -enable the RNG on the Rock64 to be able to provide -a rnadom seed via UEFI. - -Signed-off-by: Peter Robinson ---- - -The DT snippet will allow this to be enabled on other rk3328 devices but -I only have the Rock54 to test on. - - arch/arm/dts/rk3328-u-boot.dtsi | 6 ++++++ - configs/rock64-rk3328_defconfig | 2 ++ - 2 files changed, 8 insertions(+) - -diff --git a/arch/arm/dts/rk3328-u-boot.dtsi b/arch/arm/dts/rk3328-u-boot.dtsi -index ce96ce40a73..a9f2536de2a 100644 ---- a/arch/arm/dts/rk3328-u-boot.dtsi -+++ b/arch/arm/dts/rk3328-u-boot.dtsi -@@ -26,6 +26,12 @@ - 0x0 0xff720000 0x0 0x1000 - 0x0 0xff798000 0x0 0x1000>; - }; -+ -+ rng: rng@ff060000 { -+ compatible = "rockchip,cryptov1-rng"; -+ reg = <0x0 0xff060000 0x0 0x4000>; -+ status = "okay"; -+ }; - }; - - &cru { -diff --git a/configs/rock64-rk3328_defconfig b/configs/rock64-rk3328_defconfig -index 97ac8734d1b..1820deee373 100644 ---- a/configs/rock64-rk3328_defconfig -+++ b/configs/rock64-rk3328_defconfig -@@ -77,6 +77,8 @@ CONFIG_MISC=y - CONFIG_ROCKCHIP_EFUSE=y - CONFIG_MMC_DW=y - CONFIG_MMC_DW_ROCKCHIP=y -+CONFIG_DM_RNG=y -+CONFIG_RNG_ROCKCHIP=y - CONFIG_SPI_FLASH_GIGADEVICE=y - CONFIG_ETH_DESIGNWARE=y - CONFIG_GMAC_ROCKCHIP=y - -From patchwork Wed Jun 14 12:43:14 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Peter Robinson -X-Patchwork-Id: 1794952 -X-Patchwork-Delegate: ykai007@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -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=) -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=20221208 header.b=Fk8Gn/bp; - dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4Qh4qx1cDFz20WR - for ; Wed, 14 Jun 2023 22:44:29 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 42BE586140; - Wed, 14 Jun 2023 14:43:47 +0200 (CEST) -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="Fk8Gn/bp"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 5363386119; Wed, 14 Jun 2023 14:43:40 +0200 (CEST) -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,SPF_HELO_NONE, - SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no - version=3.4.2 -Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com - [IPv6:2a00:1450:4864:20::432]) - (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 92EA186130 - for ; Wed, 14 Jun 2023 14:43:35 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=pbrobinson@gmail.com -Received: by mail-wr1-x432.google.com with SMTP id - ffacd0b85a97d-31110aea814so555f8f.2 - for ; Wed, 14 Jun 2023 05:43:35 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=gmail.com; s=20221208; t=1686746615; x=1689338615; - 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=GunsDF8pMC87eoXzdmDNRZz8DMTMTGTC8JJJKs0JxI4=; - b=Fk8Gn/bpnLP7olTGYnvDxvwbEfNNa1rl1mPZ4QelJXPFqGN4+shTjFbREgSRC/dMtW - yRez1jgUlJRK7lz8uY+O+exV8NdCbcHbzvdQtHDCDnQqLKjgIPVMjLyH5VIJECxjXc8/ - FuocNJXIdjBBfLC1msErM2xm850WcNYbIZ+hPDOwpMTYitpqvM3xhwL6vIJlsBw6BqaC - C5MKw4jWH3KCYzU6kqLsP3reuse4YwOUK8BoRfC130ebJzm2MhRdj1xfOvTMNGNNKO9b - Ii5zq3BB7VZqdM3vFNWva7lFwc6nzvSx026CBWC04UbxKmp2qd8WgU/GHTgnV8lcL/sz - 5uBQ== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20221208; t=1686746615; x=1689338615; - 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=GunsDF8pMC87eoXzdmDNRZz8DMTMTGTC8JJJKs0JxI4=; - b=ZU+X/vMacHAmhpPxEEwUnlvwe6qSQQDPnUVljh0mCFS+0MlJyOgFlaJdQKr4qZ9028 - 5HU/u7kr7mvPN4LvU1sVBZ4QlyI8rrgzMl576uvBb3rZ8AQ5aQJCvUrYOPUilPyNbhWq - lDMZCjWuHeKLpwutkyLveGg0yVgYz8i4STe35fH7B3q60K/v+y9G8wFJUdN+XV8c2+Gx - MTSE42FF8tOnHkXPIFXmh4LKO5BQWAHQuYadILsFo2pUahMfroOaCT2xVQzDmC+Ur76L - Bw1TPPC/b69/qHFZwuG0/5e6ansfMs1oO6DCGOIMxLzJch7c6VC/WJql/xOnO/c4os12 - swLw== -X-Gm-Message-State: AC+VfDy9BKAtjnGx6ud2kU6GAYtOOxIFuTpeAhT+l9wtZ+C3zpK6T+ld - CD+kjgM7Fs3oCfEFfoOLmJE= -X-Google-Smtp-Source: - ACHHUZ6WCesQBbBQ0kQoCj860p1GMKM0o6UKw7uiH/CWAXkwqPWFIEw+YhmaoR6ynnvAzLDQ3IbsCw== -X-Received: by 2002:adf:fec4:0:b0:30f:ce9a:7632 with SMTP id - q4-20020adffec4000000b0030fce9a7632mr3527925wrs.67.1686746614858; - Wed, 14 Jun 2023 05:43:34 -0700 (PDT) -Received: from morpheus.home.roving-it.com - (3.e.2.0.0.0.0.0.0.0.0.0.0.0.0.0.1.8.6.2.1.1.b.f.0.b.8.0.1.0.0.2.ip6.arpa. - [2001:8b0:fb11:2681::2e3]) by smtp.googlemail.com with ESMTPSA id - g26-20020a7bc4da000000b003f60e143d38sm17329161wmk.11.2023.06.14.05.43.34 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Wed, 14 Jun 2023 05:43:34 -0700 (PDT) -From: Peter Robinson -To: "Matwey V. Kornilov" , - Simon Glass , Philipp Tomsich , - Kever Yang , u-boot@lists.denx.de -Cc: Peter Robinson -Subject: [PATCH 4/4] rockchip: dts: rk3328: rock64: Align spi flash entry -Date: Wed, 14 Jun 2023 13:43:14 +0100 -Message-ID: <20230614124329.244462-4-pbrobinson@gmail.com> -X-Mailer: git-send-email 2.41.0 -In-Reply-To: <20230614124329.244462-1-pbrobinson@gmail.com> -References: <20230614124329.244462-1-pbrobinson@gmail.com> -MIME-Version: 1.0 -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 - -Align the SPI flash entry with upstream. There's no need -to diverge here. - -Signed-off-by: Peter Robinson -Reviewed-by: Kever Yang ---- - arch/arm/dts/rk3328-rock64-u-boot.dtsi | 2 +- - arch/arm/dts/rk3328-rock64.dts | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/arch/arm/dts/rk3328-rock64-u-boot.dtsi b/arch/arm/dts/rk3328-rock64-u-boot.dtsi -index 849854302ee..6904515b969 100644 ---- a/arch/arm/dts/rk3328-rock64-u-boot.dtsi -+++ b/arch/arm/dts/rk3328-rock64-u-boot.dtsi -@@ -54,7 +54,7 @@ - }; - - &spi0 { -- spi_flash: spiflash@0 { -+ spi_flash: flash@0 { - bootph-all; - }; - }; -diff --git a/arch/arm/dts/rk3328-rock64.dts b/arch/arm/dts/rk3328-rock64.dts -index 1b0f7e4551e..f69a38f42d2 100644 ---- a/arch/arm/dts/rk3328-rock64.dts -+++ b/arch/arm/dts/rk3328-rock64.dts -@@ -345,7 +345,7 @@ - &spi0 { - status = "okay"; - -- spiflash@0 { -+ flash@0 { - compatible = "jedec,spi-nor"; - reg = <0>; - diff --git a/sources b/sources index 1504d9e..0fa4df0 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2023.10-rc2.tar.bz2) = cc3cd85c84e1d7d8e45244f330709ad5ecf918ee42aac4de565ca5e1e1cde25e89b1a8672aaac04c0bf830e36192a72caabfde3baf6633c68fa76103768be201 +SHA512 (u-boot-2023.10-rc3.tar.bz2) = 920190c47faca085c44fbd747669379f47461e3a3de5041e6a0d28d073116f1b18b0711876fb3c49eacd130e6fd2aa9d5ec84cb5fe0b2f7617b2438804317e81 diff --git a/uboot-tools.spec b/uboot-tools.spec index ede4905..478b255 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc2 +%global candidate rc3 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2023.10 -Release: 0.3%{?candidate:.%{candidate}}%{?dist} +Release: 0.4%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -29,7 +29,6 @@ Patch5: Add-video-damage-tracking.patch Patch10: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch # Rockchips improvements Patch11: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch -Patch12: rock64-small-fixes.patch #Patch12: 0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch Patch13: rpi-Convert-to-standard-boot.patch @@ -216,6 +215,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Mon Aug 21 2023 Peter Robinson - 2023.10-0.4.rc3 +- Update to 2023.10 RC3 + * Mon Aug 21 2023 Peter Robinson - 2023.10-0.3.rc2 - Add patch to speed up firmware UEFI video output From 6cd0d073d6dd336a82d1b646c7f80f6982c7a37e Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sat, 21 Oct 2023 10:16:31 +0100 Subject: [PATCH 157/271] 2023.10, initial pass at DT detection fix --- Add-video-damage-tracking.patch | 13 - aarch64-boards | 2 - ...all-bootdevs-in-a-boot_targets-entry.patch | 213 +++++ rpi-Convert-to-standard-boot.patch | 892 ------------------ sources | 2 +- uboot-tools.spec | 14 +- ...atic-management-for-removable-medias.patch | 550 +++++++++++ 7 files changed, 772 insertions(+), 914 deletions(-) create mode 100644 bootstd-Scan-all-bootdevs-in-a-boot_targets-entry.patch delete mode 100644 rpi-Convert-to-standard-boot.patch create mode 100644 uefi-Boot-var-automatic-management-for-removable-medias.patch diff --git a/Add-video-damage-tracking.patch b/Add-video-damage-tracking.patch index 3cfd387..5e78df8 100644 --- a/Add-video-damage-tracking.patch +++ b/Add-video-damage-tracking.patch @@ -3947,7 +3947,6 @@ Changes in v5: Changes in v4: - Add patch "video: Enable VIDEO_DAMAGE for drivers that need it" - arch/arm/mach-omap2/omap3/Kconfig | 1 + arch/arm/mach-sunxi/Kconfig | 1 + drivers/video/Kconfig | 8 ++++++++ drivers/video/exynos/Kconfig | 1 + @@ -3959,18 +3958,6 @@ Changes in v4: drivers/video/tidss/Kconfig | 1 + 10 files changed, 17 insertions(+) -diff --git a/arch/arm/mach-omap2/omap3/Kconfig b/arch/arm/mach-omap2/omap3/Kconfig -index 671e4791c67f..fd858f7b50f2 100644 ---- a/arch/arm/mach-omap2/omap3/Kconfig -+++ b/arch/arm/mach-omap2/omap3/Kconfig -@@ -113,6 +113,7 @@ config TARGET_NOKIA_RX51 - select CMDLINE_TAG - select INITRD_TAG - select REVISION_TAG -+ imply VIDEO_DAMAGE - - config TARGET_TAO3530 - bool "TAO3530" diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig index 9d5df2c10273..fb4478ea32e8 100644 --- a/arch/arm/mach-sunxi/Kconfig diff --git a/aarch64-boards b/aarch64-boards index 63adc19..ac90276 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -76,8 +76,6 @@ rock-pi-n10-rk3399pro rockpro64-rk3399 roc-pc-mezzanine-rk3399 roc-pc-rk3399 -rpi_3 -rpi_4 rpi_arm64 sopine_baseboard starqltechn diff --git a/bootstd-Scan-all-bootdevs-in-a-boot_targets-entry.patch b/bootstd-Scan-all-bootdevs-in-a-boot_targets-entry.patch new file mode 100644 index 0000000..8ab2759 --- /dev/null +++ b/bootstd-Scan-all-bootdevs-in-a-boot_targets-entry.patch @@ -0,0 +1,213 @@ +From patchwork Sat Sep 23 20:50:15 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 8bit +X-Patchwork-Submitter: Simon Glass +X-Patchwork-Id: 1838641 +X-Patchwork-Delegate: sjg@chromium.org +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +Authentication-Results: legolas.ozlabs.org; + dkim=pass (1024-bit key; + unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 + header.s=google header.b=KG3aXwv5; + 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) server-digest SHA384) + (No client certificate requested) + by legolas.ozlabs.org (Postfix) with ESMTPS id 4RtLr82vCNz1ynH + for ; Sun, 24 Sep 2023 06:50:30 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id C5750868D8; + Sat, 23 Sep 2023 22:50:24 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=chromium.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; + dkim=pass (1024-bit key; + unprotected) header.d=chromium.org header.i=@chromium.org + header.b="KG3aXwv5"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id E66458698D; Sat, 23 Sep 2023 22:50:23 +0200 (CEST) +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,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, + SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-io1-xd35.google.com (mail-io1-xd35.google.com + [IPv6:2607:f8b0:4864:20::d35]) + (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 739828684C + for ; Sat, 23 Sep 2023 22:50:21 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=chromium.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=sjg@chromium.org +Received: by mail-io1-xd35.google.com with SMTP id + ca18e2360f4ac-79fa4ff8220so82788439f.3 + for ; Sat, 23 Sep 2023 13:50:21 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=chromium.org; s=google; t=1695502220; x=1696107020; darn=lists.denx.de; + h=content-transfer-encoding:mime-version:message-id:date:subject:cc + :to:from:from:to:cc:subject:date:message-id:reply-to; + bh=fcy5WkVBoc7uoRrzJTdjAvllGuUSUwfIiQ5P7MPqanU=; + b=KG3aXwv5HvtWYkt2G7n3DcwAsa2xdEa6uyrBRWhucS+3OUN5eZ79edhY+dVDuwuEAL + I/Ci/8cflRdX1s9cv7mPYw2tXHkWnudM3Jwyw+72113wGGZG+e1q9i0wvb+MmxxK4lDM + ApdxnzfJunDfWMC4zu0PhcdG39ZcuC82Ezgcc= +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20230601; t=1695502220; x=1696107020; + h=content-transfer-encoding:mime-version:message-id:date:subject:cc + :to:from:x-gm-message-state:from:to:cc:subject:date:message-id + :reply-to; + bh=fcy5WkVBoc7uoRrzJTdjAvllGuUSUwfIiQ5P7MPqanU=; + b=UNAm2llXUYdkTNewaIJpX2/kKkDsigJYBX1Ch147g7NChNygnu0Glr6Ya3Cw6WpHIG + OzXCeyakwC/pjiea0NTxHVU01HvJOlAiZwBZoQMMnavjUuSAdMqDCSLIndWzRhOARHfS + ksVozUDoXyyT/gV0XsaczFQgdgBImzMU7OR4NRnNalhSl2iZqYqt/TJ3Ftciv0KfxrcB + CrNKVLlJySDCY+svy4oHY0uID6SHsIAGjKBEAE1x9VhZ1jtpTJE4Zzrqa4nrrt+oEgus + A44BAwUrpks5SSMYfllyvb2A/OavxCiknMLIS7ENPr4izxS2EvAZcqH0KhFUUzD5aDXf + XmKg== +X-Gm-Message-State: AOJu0YwjY6Rk6HbA8DutFJQwzzA4q1TI/KwnuD1ZteWezSPjeMGyx26P + qvXFutS0QtYRlcVbGETlNS4BhMXg2YyAsItRSoI= +X-Google-Smtp-Source: + AGHT+IE/HwkByEI0cMcKWYghOMoUVXCzjV4a68DB17kNo1TCDUCCFa07idjIRi4hzVA51WQbE/JX/w== +X-Received: by 2002:a05:6e02:19cd:b0:34f:f5a4:3e68 with SMTP id + r13-20020a056e0219cd00b0034ff5a43e68mr4812478ill.30.1695502219881; + Sat, 23 Sep 2023 13:50:19 -0700 (PDT) +Received: from sjg1.roam.corp.google.com (c-73-14-173-85.hsd1.co.comcast.net. + [73.14.173.85]) by smtp.gmail.com with ESMTPSA id + i8-20020a056e020ec800b0034fda29890asm691408ilk.10.2023.09.23.13.50.19 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Sat, 23 Sep 2023 13:50:19 -0700 (PDT) +From: Simon Glass +To: U-Boot Mailing List +Cc: Date Huang , Tom Rini , + =?utf-8?q?Vincent_Stehl=C3=A9?= , + Simon Glass +Subject: [PATCH] bootstd: Scan all bootdevs in a boot_targets entry +Date: Sat, 23 Sep 2023 14:50:15 -0600 +Message-ID: <20230923205017.1754340-1-sjg@chromium.org> +X-Mailer: git-send-email 2.42.0.515.g380fc7ccd1-goog +MIME-Version: 1.0 +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 + +When the boot_targets environment variable is used with the distro-boot +scripts, each device is included individually. For example, if there +are three mmc devices, then we will have something like: + + boot_targets="mmc0 mmc1 mmc2" + +In contrast, standard boot supports specifying just the uclass, i.e.: + + boot_targets="mmc" + +The intention is that this should scan all MMC devices, but in fact it +currently only scans the first. + +Update the logic to handle this case, without required BOOTSTD_FULL to +be enabled. + +I believe at least three people reported this, but I found two. + +Signed-off-by: Simon Glass +Reported-by: Date Huang +Reported-by: Vincent Stehlé +--- + + boot/bootdev-uclass.c | 3 ++- + boot/bootflow.c | 21 +++++++++++++++++++-- + test/boot/bootdev.c | 10 ++++++++++ + 3 files changed, 31 insertions(+), 3 deletions(-) + +diff --git a/boot/bootdev-uclass.c b/boot/bootdev-uclass.c +index fa52bc3a9c4e..5a60cf223c79 100644 +--- a/boot/bootdev-uclass.c ++++ b/boot/bootdev-uclass.c +@@ -460,10 +460,11 @@ int bootdev_find_by_label(const char *label, struct udevice **devp, + * if no sequence number was provided, we must scan all + * bootdevs for this media uclass + */ +- if (IS_ENABLED(CONFIG_BOOTSTD_FULL) && seq == -1) ++ if (seq == -1) + method_flags |= BOOTFLOW_METHF_SINGLE_UCLASS; + if (method_flagsp) + *method_flagsp = method_flags; ++ log_debug("method flags %x\n", method_flags); + return 0; + } + log_debug("- no device in %s\n", media->name); +diff --git a/boot/bootflow.c b/boot/bootflow.c +index 81b5829d5b37..74abf3e17d7e 100644 +--- a/boot/bootflow.c ++++ b/boot/bootflow.c +@@ -260,8 +260,25 @@ static int iter_incr(struct bootflow_iter *iter) + } else { + log_debug("labels %p\n", iter->labels); + if (iter->labels) { +- ret = bootdev_next_label(iter, &dev, +- &method_flags); ++ /* ++ * when the label is "mmc" we want to scan all ++ * mmc bootdevs, not just the first. See ++ * bootdev_find_by_label() where this flag is ++ * set up ++ */ ++ if (iter->method_flags & BOOTFLOW_METHF_SINGLE_UCLASS) { ++ uclass_next_device(&dev); ++ log_debug("looking for next device %s: %s\n", ++ iter->dev->name, ++ dev ? dev->name : ""); ++ } else { ++ dev = NULL; ++ } ++ if (!dev) { ++ log_debug("looking at next label\n"); ++ ret = bootdev_next_label(iter, &dev, ++ &method_flags); ++ } + } else { + ret = bootdev_next_prio(iter, &dev); + method_flags = 0; +diff --git a/test/boot/bootdev.c b/test/boot/bootdev.c +index 6b29213416db..c5f14a7a1323 100644 +--- a/test/boot/bootdev.c ++++ b/test/boot/bootdev.c +@@ -221,6 +221,16 @@ static int bootdev_test_order(struct unit_test_state *uts) + ut_asserteq_str("mmc2.bootdev", iter.dev_used[1]->name); + bootflow_iter_uninit(&iter); + ++ /* Make sure it scans a bootdevs in each target */ ++ ut_assertok(env_set("boot_targets", "mmc spi")); ++ ut_asserteq(0, bootflow_scan_first(NULL, NULL, &iter, 0, &bflow)); ++ ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow)); ++ ut_asserteq(3, iter.num_devs); ++ ut_asserteq_str("mmc2.bootdev", iter.dev_used[0]->name); ++ ut_asserteq_str("mmc1.bootdev", iter.dev_used[1]->name); ++ ut_asserteq_str("mmc0.bootdev", iter.dev_used[2]->name); ++ bootflow_iter_uninit(&iter); ++ + return 0; + } + BOOTSTD_TEST(bootdev_test_order, UT_TESTF_DM | UT_TESTF_SCAN_FDT); diff --git a/rpi-Convert-to-standard-boot.patch b/rpi-Convert-to-standard-boot.patch deleted file mode 100644 index de02728..0000000 --- a/rpi-Convert-to-standard-boot.patch +++ /dev/null @@ -1,892 +0,0 @@ -From patchwork Thu Jul 27 21:54:28 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Simon Glass -X-Patchwork-Id: 1813968 -X-Patchwork-Delegate: pbrobinson@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -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=) -Authentication-Results: legolas.ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 - header.s=google header.b=N1JBl/Ip; - dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature ECDSA (P-384)) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4RBl1V3MSFz1yZb - for ; Fri, 28 Jul 2023 07:55:10 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 29D6686883; - Thu, 27 Jul 2023 23:54:50 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=chromium.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=chromium.org header.i=@chromium.org - header.b="N1JBl/Ip"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id BFC74863EE; Thu, 27 Jul 2023 23:54:44 +0200 (CEST) -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,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, - SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no - version=3.4.2 -Received: from mail-il1-x12d.google.com (mail-il1-x12d.google.com - [IPv6:2607:f8b0:4864:20::12d]) - (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 A9CE3867A8 - for ; Thu, 27 Jul 2023 23:54:41 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=chromium.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=sjg@chromium.org -Received: by mail-il1-x12d.google.com with SMTP id - e9e14a558f8ab-3466725f0beso6233385ab.1 - for ; Thu, 27 Jul 2023 14:54:41 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=chromium.org; s=google; t=1690494880; x=1691099680; - 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=PfW4qtLSfZ+bnC9lQwrjMDVmboUSfVp8v4ohkW8rjNg=; - b=N1JBl/IpuUO0bR2jxCF4K6S6GW+xv1r7HlydRFhGC+Y0jR6zVXjPOQITlZBrwEARlk - THRvjpw5qRIedk0NNo/pQCKKQqruScbjKPYX1OBI4dK8j/HkC/GExnZkrzqJlvtCNqRi - vd32bzFnA0G7Sw/tWm/fMJuxGDvemFLzoLQgg= -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20221208; t=1690494880; x=1691099680; - 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=PfW4qtLSfZ+bnC9lQwrjMDVmboUSfVp8v4ohkW8rjNg=; - b=htLAMKMTT/T5aB5rrz1DwCj312u/yXPKNVhy1hUQl0xUxGmuV261y4snpFJIp92LWY - bPTp84aFfLtyyJhH6BRikYrtWYDX1XpPE35ADFLtlQMM5GIU9q0hkifkPd7abPqf9CjN - 34tE1/jfbEQ9DVjGSSH+XObnLtGLjO2UX0/c9ws1veWcDD9e9lre0Tr0FdMyy+r4RdCC - V39BVGSWBW9Mr3+y6MVHLCblg21I+/bjRp2nviWmZbeJhx4cKepnzFGfm5KjWnIujj0D - Y86K9+ZBDN2NRnIyfK6oPrQqLMSObWKrzxurO93MsbUXmBc8FJqZwyN2XUixqo8t6Kso - pNvg== -X-Gm-Message-State: ABy/qLb0K45Zq6AUJT2FpWarTb3YBaFoeytG1lXRxYdhcArX6FKSUhG7 - DkuKoL8etDw0hNEDFIyMz2KF4qEO37wmml3Qc3M= -X-Google-Smtp-Source: - APBJJlG54VUHOmyZVhkSmMpIiz5S/hblBzg2zwJFl+9fxJRZJWQN2zHspMrpRxc36G3YPyvYcXHJ4A== -X-Received: by 2002:a05:6e02:1ba5:b0:347:6f47:bb2 with SMTP id - n5-20020a056e021ba500b003476f470bb2mr889940ili.19.1690494880268; - Thu, 27 Jul 2023 14:54:40 -0700 (PDT) -Received: from sjg1.lan (c-73-14-173-85.hsd1.co.comcast.net. [73.14.173.85]) - by smtp.gmail.com with ESMTPSA id - n28-20020a02cc1c000000b00430245071ddsm679215jap.176.2023.07.27.14.54.39 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Thu, 27 Jul 2023 14:54:40 -0700 (PDT) -From: Simon Glass -To: U-Boot Mailing List -Cc: Tom Rini , Peter Robinson , - Simon Glass , Albert Aribaud , - Matthias Brugger , Stephen Warren , - Stephen Warren -Subject: [RESEND PATCH v3 1/3] arm: rpi: Switch to standard boot -Date: Thu, 27 Jul 2023 15:54:28 -0600 -Message-ID: <20230727215433.578830-2-sjg@chromium.org> -X-Mailer: git-send-email 2.41.0.487.g6d72f3e995-goog -In-Reply-To: <20230727215433.578830-1-sjg@chromium.org> -References: <20230727215433.578830-1-sjg@chromium.org> -MIME-Version: 1.0 -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 - -Drop use of the distro scripts and use standard boot instead. - -We don't need to specify the mmc devices individually, since they are -used in order from 0 to 2, and standard boot uses that order anyway. - -Signed-off-by: Simon Glass ---- - -Changes in v3: -- Rebase to -master - -Changes in v2: -- Rebase to -next - - configs/rpi_0_w_defconfig | 1 + - configs/rpi_2_defconfig | 1 + - configs/rpi_3_32b_defconfig | 1 + - configs/rpi_3_b_plus_defconfig | 1 + - configs/rpi_3_defconfig | 1 + - configs/rpi_4_32b_defconfig | 1 + - configs/rpi_4_defconfig | 1 + - configs/rpi_arm64_defconfig | 1 + - configs/rpi_defconfig | 1 + - include/configs/rpi.h | 38 ++-------------------------------- - 10 files changed, 11 insertions(+), 36 deletions(-) - -diff --git a/configs/rpi_0_w_defconfig b/configs/rpi_0_w_defconfig -index 5da334a8bcf9..7554e671e2ca 100644 ---- a/configs/rpi_0_w_defconfig -+++ b/configs/rpi_0_w_defconfig -@@ -12,6 +12,7 @@ CONFIG_DEFAULT_DEVICE_TREE="bcm2835-rpi-zero-w" - CONFIG_SYS_PROMPT="U-Boot> " - CONFIG_OF_LIBFDT_OVERLAY=y - CONFIG_SYS_LOAD_ADDR=0x1000000 -+CONFIG_BOOTSTD_DEFAULTS=y - CONFIG_OF_BOARD_SETUP=y - CONFIG_DISTRO_DEFAULTS=y - CONFIG_USE_PREBOOT=y -diff --git a/configs/rpi_2_defconfig b/configs/rpi_2_defconfig -index 990862160712..653f78bec1e8 100644 ---- a/configs/rpi_2_defconfig -+++ b/configs/rpi_2_defconfig -@@ -13,6 +13,7 @@ CONFIG_DEFAULT_DEVICE_TREE="bcm2836-rpi-2-b" - CONFIG_SYS_PROMPT="U-Boot> " - CONFIG_OF_LIBFDT_OVERLAY=y - CONFIG_SYS_LOAD_ADDR=0x1000000 -+CONFIG_BOOTSTD_DEFAULTS=y - CONFIG_OF_BOARD_SETUP=y - CONFIG_DISTRO_DEFAULTS=y - CONFIG_USE_PREBOOT=y -diff --git a/configs/rpi_3_32b_defconfig b/configs/rpi_3_32b_defconfig -index 80885aa9488d..305f1dacfd46 100644 ---- a/configs/rpi_3_32b_defconfig -+++ b/configs/rpi_3_32b_defconfig -@@ -12,6 +12,7 @@ CONFIG_DEFAULT_DEVICE_TREE="bcm2837-rpi-3-b" - CONFIG_SYS_PROMPT="U-Boot> " - CONFIG_OF_LIBFDT_OVERLAY=y - CONFIG_SYS_LOAD_ADDR=0x1000000 -+CONFIG_BOOTSTD_DEFAULTS=y - CONFIG_OF_BOARD_SETUP=y - CONFIG_DISTRO_DEFAULTS=y - CONFIG_USE_PREBOOT=y -diff --git a/configs/rpi_3_b_plus_defconfig b/configs/rpi_3_b_plus_defconfig -index 0acce8b883f8..f36f1258aa6d 100644 ---- a/configs/rpi_3_b_plus_defconfig -+++ b/configs/rpi_3_b_plus_defconfig -@@ -11,6 +11,7 @@ CONFIG_DEFAULT_DEVICE_TREE="bcm2837-rpi-3-b-plus" - CONFIG_SYS_PROMPT="U-Boot> " - CONFIG_OF_LIBFDT_OVERLAY=y - CONFIG_SYS_LOAD_ADDR=0x1000000 -+CONFIG_BOOTSTD_DEFAULTS=y - CONFIG_OF_BOARD_SETUP=y - CONFIG_DISTRO_DEFAULTS=y - CONFIG_USE_PREBOOT=y -diff --git a/configs/rpi_3_defconfig b/configs/rpi_3_defconfig -index bb6fe128061b..a0d8be42537f 100644 ---- a/configs/rpi_3_defconfig -+++ b/configs/rpi_3_defconfig -@@ -11,6 +11,7 @@ CONFIG_DEFAULT_DEVICE_TREE="bcm2837-rpi-3-b" - CONFIG_SYS_PROMPT="U-Boot> " - CONFIG_OF_LIBFDT_OVERLAY=y - CONFIG_SYS_LOAD_ADDR=0x1000000 -+CONFIG_BOOTSTD_DEFAULTS=y - CONFIG_OF_BOARD_SETUP=y - CONFIG_DISTRO_DEFAULTS=y - CONFIG_USE_PREBOOT=y -diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig -index f6213340971e..71f61c52e52d 100644 ---- a/configs/rpi_4_32b_defconfig -+++ b/configs/rpi_4_32b_defconfig -@@ -10,6 +10,7 @@ CONFIG_SYS_PROMPT="U-Boot> " - CONFIG_OF_LIBFDT_OVERLAY=y - CONFIG_DM_RESET=y - CONFIG_SYS_LOAD_ADDR=0x1000000 -+CONFIG_BOOTSTD_DEFAULTS=y - CONFIG_PCI=y - CONFIG_OF_BOARD_SETUP=y - CONFIG_DISTRO_DEFAULTS=y -diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig -index bbc0fd6c649a..fa2c05da21e8 100644 ---- a/configs/rpi_4_defconfig -+++ b/configs/rpi_4_defconfig -@@ -10,6 +10,7 @@ CONFIG_SYS_PROMPT="U-Boot> " - CONFIG_OF_LIBFDT_OVERLAY=y - CONFIG_DM_RESET=y - CONFIG_SYS_LOAD_ADDR=0x1000000 -+CONFIG_BOOTSTD_DEFAULTS=y - CONFIG_PCI=y - CONFIG_OF_BOARD_SETUP=y - CONFIG_DISTRO_DEFAULTS=y -diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig -index 5d9a273cb920..3e64573b70b1 100644 ---- a/configs/rpi_arm64_defconfig -+++ b/configs/rpi_arm64_defconfig -@@ -10,6 +10,7 @@ CONFIG_SYS_PROMPT="U-Boot> " - CONFIG_OF_LIBFDT_OVERLAY=y - CONFIG_DM_RESET=y - CONFIG_SYS_LOAD_ADDR=0x1000000 -+CONFIG_BOOTSTD_DEFAULTS=y - CONFIG_PCI=y - CONFIG_OF_BOARD_SETUP=y - CONFIG_DISTRO_DEFAULTS=y -diff --git a/configs/rpi_defconfig b/configs/rpi_defconfig -index 550b8dcb9587..4b8e402c89d4 100644 ---- a/configs/rpi_defconfig -+++ b/configs/rpi_defconfig -@@ -12,6 +12,7 @@ CONFIG_DEFAULT_DEVICE_TREE="bcm2835-rpi-b" - CONFIG_SYS_PROMPT="U-Boot> " - CONFIG_OF_LIBFDT_OVERLAY=y - CONFIG_SYS_LOAD_ADDR=0x1000000 -+CONFIG_BOOTSTD_DEFAULTS=y - CONFIG_OF_BOARD_SETUP=y - CONFIG_DISTRO_DEFAULTS=y - CONFIG_USE_PREBOOT=y -diff --git a/include/configs/rpi.h b/include/configs/rpi.h -index 4da982f73578..4160db2d8e14 100644 ---- a/include/configs/rpi.h -+++ b/include/configs/rpi.h -@@ -122,47 +122,13 @@ - "fdt_addr_r=0x02600000\0" \ - "ramdisk_addr_r=0x02700000\0" - --#if IS_ENABLED(CONFIG_CMD_MMC) -- #define BOOT_TARGET_MMC(func) \ -- func(MMC, mmc, 0) \ -- func(MMC, mmc, 1) \ -- func(MMC, mmc, 2) --#else -- #define BOOT_TARGET_MMC(func) --#endif -- --#if IS_ENABLED(CONFIG_CMD_USB) -- #define BOOT_TARGET_USB(func) func(USB, usb, 0) --#else -- #define BOOT_TARGET_USB(func) --#endif -- --#if CONFIG_IS_ENABLED(CMD_PXE) -- #define BOOT_TARGET_PXE(func) func(PXE, pxe, na) --#else -- #define BOOT_TARGET_PXE(func) --#endif -- --#if CONFIG_IS_ENABLED(CMD_DHCP) -- #define BOOT_TARGET_DHCP(func) func(DHCP, dhcp, na) --#else -- #define BOOT_TARGET_DHCP(func) --#endif -- --#define BOOT_TARGET_DEVICES(func) \ -- BOOT_TARGET_MMC(func) \ -- BOOT_TARGET_USB(func) \ -- BOOT_TARGET_PXE(func) \ -- BOOT_TARGET_DHCP(func) -- --#include -+#define BOOT_TARGETS "mmc usb pxe dhcp" - - #define CFG_EXTRA_ENV_SETTINGS \ - "dhcpuboot=usb start; dhcp u-boot.uimg; bootm\0" \ - ENV_DEVICE_SETTINGS \ - ENV_DFU_SETTINGS \ - ENV_MEM_LAYOUT_SETTINGS \ -- BOOTENV -- -+ "boot_targets=" BOOT_TARGETS "\0" - - #endif - -From patchwork Thu Jul 27 21:54:29 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Simon Glass -X-Patchwork-Id: 1813969 -X-Patchwork-Delegate: pbrobinson@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -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=) -Authentication-Results: legolas.ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 - header.s=google header.b=nzf25ZVl; - dkim-atps=neutral -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 (P-384) server-digest SHA384) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4RBl1p1S1xz1yZb - for ; Fri, 28 Jul 2023 07:55:26 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id CEB4186898; - Thu, 27 Jul 2023 23:55:12 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=chromium.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=chromium.org header.i=@chromium.org - header.b="nzf25ZVl"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id A550186437; Thu, 27 Jul 2023 23:54:46 +0200 (CEST) -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,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, - SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no - version=3.4.2 -Received: from mail-io1-xd35.google.com (mail-io1-xd35.google.com - [IPv6:2607:f8b0:4864:20::d35]) - (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 848728687F - for ; Thu, 27 Jul 2023 23:54:42 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=chromium.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=sjg@chromium.org -Received: by mail-io1-xd35.google.com with SMTP id - ca18e2360f4ac-7906614bc90so37744039f.3 - for ; Thu, 27 Jul 2023 14:54:42 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=chromium.org; s=google; t=1690494881; x=1691099681; - 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=rvJFSxuX2uR5MvGPMP0r8JMhRHphT9SXIfCxnVxNK0U=; - b=nzf25ZVlr+TPb8i9KPe94q+xnslw0eiim8ufkD20J+REgYqV1+bfKhPYKo45AkO/Cs - 4b6fZA33NLf5U7qgGo7v+urHNiAPER6YN1bXI9hJSNAEtM13z2v621IsEFffyVMcM85C - 4AMfUiBclfET9Wn0oQnsQ5JK94HV4jlQugZzQ= -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20221208; t=1690494881; x=1691099681; - 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=rvJFSxuX2uR5MvGPMP0r8JMhRHphT9SXIfCxnVxNK0U=; - b=SWZg15tnmLFbQbK+nDA8NsoxsfTOrSK/kUZE8JUBjXnb/EfYfPfZWjBXdTlOT0hTzs - Do1oyQ0GpF9az6Cx1cJaNL+6/ndCRmpmhbQqCvSRgBsAKnQp00cgnet2sm4yVWfiF5PX - 2qaBEeb9gg636lDes6X4aWDvc+t+OzxAlyoh09leqtoNsYaZ9IaM0yoiS8fr0BiqJMrg - MSYnMIsBLMm+jhgQFf2e8ur5tdy7JpF2W9IWlzTu24aMYaDO7jzv2OPLE4yabyZoUIxZ - VGKiZBQssS0Xb/sjea7V65wIws1WhJUfrh088lrlqAdsj+ZlnkWnVhBhlZPR+tkRHWJZ - HcHw== -X-Gm-Message-State: ABy/qLaVdYCT7tOkUReGBSdg/9KznV2sYfo8iTdWbZcW3wegZxOZfpEX - rfBbszTe7MI5Zzj4HA69r3jTlgsxblkKBaKi4I0= -X-Google-Smtp-Source: - APBJJlGWO4DcArS83mKgiEVe92ZPEk/c3kJN6Gj7ZAwNVPMXoPhbtveScu/4+gTrfnrjCxTkZP9a3g== -X-Received: by 2002:a05:6602:682:b0:787:1d53:e6cc with SMTP id - dp2-20020a056602068200b007871d53e6ccmr874039iob.21.1690494881076; - Thu, 27 Jul 2023 14:54:41 -0700 (PDT) -Received: from sjg1.lan (c-73-14-173-85.hsd1.co.comcast.net. [73.14.173.85]) - by smtp.gmail.com with ESMTPSA id - n28-20020a02cc1c000000b00430245071ddsm679215jap.176.2023.07.27.14.54.40 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Thu, 27 Jul 2023 14:54:40 -0700 (PDT) -From: Simon Glass -To: U-Boot Mailing List -Cc: Tom Rini , Peter Robinson , - Simon Glass , Matthias Brugger , - Stephen Warren , Stephen Warren -Subject: [RESEND PATCH v3 2/3] rpi: Disable DISTRO_DEFAULTS -Date: Thu, 27 Jul 2023 15:54:29 -0600 -Message-ID: <20230727215433.578830-3-sjg@chromium.org> -X-Mailer: git-send-email 2.41.0.487.g6d72f3e995-goog -In-Reply-To: <20230727215433.578830-1-sjg@chromium.org> -References: <20230727215433.578830-1-sjg@chromium.org> -MIME-Version: 1.0 -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 - -Disable this option to reclaim some space, since bootstd requires less -functionality to operate (e.g. hush parser). - -Signed-off-by: Simon Glass ---- - -(no changes since v2) - -Changes in v2: -- Add new patch to disable DISTRO_DEFAULTS - - configs/rpi_0_w_defconfig | 1 - - configs/rpi_2_defconfig | 1 - - configs/rpi_3_32b_defconfig | 1 - - configs/rpi_3_b_plus_defconfig | 1 - - configs/rpi_3_defconfig | 1 - - configs/rpi_4_32b_defconfig | 1 - - configs/rpi_4_defconfig | 1 - - configs/rpi_arm64_defconfig | 1 - - configs/rpi_defconfig | 1 - - 9 files changed, 9 deletions(-) - -diff --git a/configs/rpi_0_w_defconfig b/configs/rpi_0_w_defconfig -index 7554e671e2ca..3167bfbe48f7 100644 ---- a/configs/rpi_0_w_defconfig -+++ b/configs/rpi_0_w_defconfig -@@ -14,7 +14,6 @@ CONFIG_OF_LIBFDT_OVERLAY=y - CONFIG_SYS_LOAD_ADDR=0x1000000 - CONFIG_BOOTSTD_DEFAULTS=y - CONFIG_OF_BOARD_SETUP=y --CONFIG_DISTRO_DEFAULTS=y - CONFIG_USE_PREBOOT=y - # CONFIG_DISPLAY_CPUINFO is not set - # CONFIG_DISPLAY_BOARDINFO is not set -diff --git a/configs/rpi_2_defconfig b/configs/rpi_2_defconfig -index 653f78bec1e8..883dab161702 100644 ---- a/configs/rpi_2_defconfig -+++ b/configs/rpi_2_defconfig -@@ -15,7 +15,6 @@ CONFIG_OF_LIBFDT_OVERLAY=y - CONFIG_SYS_LOAD_ADDR=0x1000000 - CONFIG_BOOTSTD_DEFAULTS=y - CONFIG_OF_BOARD_SETUP=y --CONFIG_DISTRO_DEFAULTS=y - CONFIG_USE_PREBOOT=y - # CONFIG_DISPLAY_CPUINFO is not set - # CONFIG_DISPLAY_BOARDINFO is not set -diff --git a/configs/rpi_3_32b_defconfig b/configs/rpi_3_32b_defconfig -index 305f1dacfd46..5ff7d987a431 100644 ---- a/configs/rpi_3_32b_defconfig -+++ b/configs/rpi_3_32b_defconfig -@@ -14,7 +14,6 @@ CONFIG_OF_LIBFDT_OVERLAY=y - CONFIG_SYS_LOAD_ADDR=0x1000000 - CONFIG_BOOTSTD_DEFAULTS=y - CONFIG_OF_BOARD_SETUP=y --CONFIG_DISTRO_DEFAULTS=y - CONFIG_USE_PREBOOT=y - # CONFIG_DISPLAY_CPUINFO is not set - # CONFIG_DISPLAY_BOARDINFO is not set -diff --git a/configs/rpi_3_b_plus_defconfig b/configs/rpi_3_b_plus_defconfig -index f36f1258aa6d..31f2a6eb310c 100644 ---- a/configs/rpi_3_b_plus_defconfig -+++ b/configs/rpi_3_b_plus_defconfig -@@ -13,7 +13,6 @@ CONFIG_OF_LIBFDT_OVERLAY=y - CONFIG_SYS_LOAD_ADDR=0x1000000 - CONFIG_BOOTSTD_DEFAULTS=y - CONFIG_OF_BOARD_SETUP=y --CONFIG_DISTRO_DEFAULTS=y - CONFIG_USE_PREBOOT=y - # CONFIG_DISPLAY_CPUINFO is not set - # CONFIG_DISPLAY_BOARDINFO is not set -diff --git a/configs/rpi_3_defconfig b/configs/rpi_3_defconfig -index a0d8be42537f..fa6e1507d640 100644 ---- a/configs/rpi_3_defconfig -+++ b/configs/rpi_3_defconfig -@@ -13,7 +13,6 @@ CONFIG_OF_LIBFDT_OVERLAY=y - CONFIG_SYS_LOAD_ADDR=0x1000000 - CONFIG_BOOTSTD_DEFAULTS=y - CONFIG_OF_BOARD_SETUP=y --CONFIG_DISTRO_DEFAULTS=y - CONFIG_USE_PREBOOT=y - # CONFIG_DISPLAY_CPUINFO is not set - # CONFIG_DISPLAY_BOARDINFO is not set -diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig -index 71f61c52e52d..55bf6c0770f0 100644 ---- a/configs/rpi_4_32b_defconfig -+++ b/configs/rpi_4_32b_defconfig -@@ -13,7 +13,6 @@ CONFIG_SYS_LOAD_ADDR=0x1000000 - CONFIG_BOOTSTD_DEFAULTS=y - CONFIG_PCI=y - CONFIG_OF_BOARD_SETUP=y --CONFIG_DISTRO_DEFAULTS=y - CONFIG_USE_PREBOOT=y - CONFIG_PREBOOT="pci enum; usb start;" - # CONFIG_DISPLAY_CPUINFO is not set -diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig -index fa2c05da21e8..6679cce9a165 100644 ---- a/configs/rpi_4_defconfig -+++ b/configs/rpi_4_defconfig -@@ -13,7 +13,6 @@ CONFIG_SYS_LOAD_ADDR=0x1000000 - CONFIG_BOOTSTD_DEFAULTS=y - CONFIG_PCI=y - CONFIG_OF_BOARD_SETUP=y --CONFIG_DISTRO_DEFAULTS=y - CONFIG_USE_PREBOOT=y - CONFIG_PREBOOT="pci enum; usb start;" - # CONFIG_DISPLAY_CPUINFO is not set -diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig -index 3e64573b70b1..26e29ffb5a1f 100644 ---- a/configs/rpi_arm64_defconfig -+++ b/configs/rpi_arm64_defconfig -@@ -13,7 +13,6 @@ CONFIG_SYS_LOAD_ADDR=0x1000000 - CONFIG_BOOTSTD_DEFAULTS=y - CONFIG_PCI=y - CONFIG_OF_BOARD_SETUP=y --CONFIG_DISTRO_DEFAULTS=y - CONFIG_USE_PREBOOT=y - CONFIG_PREBOOT="pci enum; usb start;" - # CONFIG_DISPLAY_CPUINFO is not set -diff --git a/configs/rpi_defconfig b/configs/rpi_defconfig -index 4b8e402c89d4..0ac5efec717b 100644 ---- a/configs/rpi_defconfig -+++ b/configs/rpi_defconfig -@@ -14,7 +14,6 @@ CONFIG_OF_LIBFDT_OVERLAY=y - CONFIG_SYS_LOAD_ADDR=0x1000000 - CONFIG_BOOTSTD_DEFAULTS=y - CONFIG_OF_BOARD_SETUP=y --CONFIG_DISTRO_DEFAULTS=y - CONFIG_USE_PREBOOT=y - # CONFIG_DISPLAY_CPUINFO is not set - # CONFIG_DISPLAY_BOARDINFO is not set - -From patchwork Thu Jul 27 21:54:30 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Simon Glass -X-Patchwork-Id: 1813970 -X-Patchwork-Delegate: pbrobinson@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -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=) -Authentication-Results: legolas.ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 - header.s=google header.b=mBws8fys; - dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature ECDSA (P-384)) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4RBl220N1zz1yZb - for ; Fri, 28 Jul 2023 07:55:38 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 7E187868A9; - Thu, 27 Jul 2023 23:55:29 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=chromium.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=chromium.org header.i=@chromium.org - header.b="mBws8fys"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 7F3798687F; Thu, 27 Jul 2023 23:54:47 +0200 (CEST) -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,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, - SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no - version=3.4.2 -Received: from mail-io1-xd31.google.com (mail-io1-xd31.google.com - [IPv6:2607:f8b0:4864:20::d31]) - (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 6FD6A86883 - for ; Thu, 27 Jul 2023 23:54:43 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=chromium.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=sjg@chromium.org -Received: by mail-io1-xd31.google.com with SMTP id - ca18e2360f4ac-7878e573827so57883239f.1 - for ; Thu, 27 Jul 2023 14:54:43 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=chromium.org; s=google; t=1690494882; x=1691099682; - 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=YMeq2z0BceWJEeXZ+KPCl2/DO9snM/APf71IQJ8+EHM=; - b=mBws8fysMfDnws5xSckJmwYoFnbO4f08B6wlUEznhDpb/FVohJO+FmfQbnHUDUDsSy - Ee6d5JuG8wVUQSapqqsi2JXsNwfvnzsA0e7QaUoJptoauwkl1oKG+AZ91ThkEcjXdL6O - RK775AhnEeLE5jMuVBfe9uFq6Re05aeM+vdsU= -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20221208; t=1690494882; x=1691099682; - 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=YMeq2z0BceWJEeXZ+KPCl2/DO9snM/APf71IQJ8+EHM=; - b=JCEGP9SG2bCGvzpYyon4ZvzAorqfIf8zfk2pJUGBNzjUUgshrJ61sNPKq511ECI9Iq - 4yxAoqYQDXgSv32IWK7fI0cGnv7QlyXjPSVE42G6W+gO2BZAnd0nUhwVSoV4Llz1vwx5 - RVOUfXyUZVtm/98JYyMavbvbNvnFy2RmefMLDz3Q3ES8eb7l8KclgtnPTpvsNdO4pw4W - MVzDzaNyuZq1tfHjYJz1UTC7G5rfiqkgThZbvc0VAa3wEnxtT4xxFIfebHKkyqbLqQ/6 - CfuFspsQDYnNZ4pVUaM9P6SWPzRKLIFCThE3AZDKEjW9hb9O1MOTzablkioHKNFipH2v - 8aPw== -X-Gm-Message-State: ABy/qLbiMvFNCnHAWkxWhayqbqcbzPbE/txTwyh8SaP8/5b7BdEzsSap - DdDHhSzoDCe+X4IQmkeApNsbmjJmALrfhBJBa1E= -X-Google-Smtp-Source: - APBJJlE+7X+YHtsSdv0glv6+7e+JF2c+SP9bOM3kvNRjEtcpLydgTQTDsxizlaaU3s5ZzSPXDsW9LQ== -X-Received: by 2002:a6b:d902:0:b0:786:cd9b:1ccd with SMTP id - r2-20020a6bd902000000b00786cd9b1ccdmr812254ioc.0.1690494881976; - Thu, 27 Jul 2023 14:54:41 -0700 (PDT) -Received: from sjg1.lan (c-73-14-173-85.hsd1.co.comcast.net. [73.14.173.85]) - by smtp.gmail.com with ESMTPSA id - n28-20020a02cc1c000000b00430245071ddsm679215jap.176.2023.07.27.14.54.41 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Thu, 27 Jul 2023 14:54:41 -0700 (PDT) -From: Simon Glass -To: U-Boot Mailing List -Cc: Tom Rini , Peter Robinson , - Simon Glass , Albert Aribaud , - Matthias Brugger , Stephen Warren , - Stephen Warren -Subject: [RESEND PATCH v3 3/3] arm: rpi: Switch to a text environment -Date: Thu, 27 Jul 2023 15:54:30 -0600 -Message-ID: <20230727215433.578830-4-sjg@chromium.org> -X-Mailer: git-send-email 2.41.0.487.g6d72f3e995-goog -In-Reply-To: <20230727215433.578830-1-sjg@chromium.org> -References: <20230727215433.578830-1-sjg@chromium.org> -MIME-Version: 1.0 -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 - -Use the new environment format so we can drop most of the config.h file. - -Signed-off-by: Simon Glass ---- - -(no changes since v1) - - board/raspberrypi/rpi/rpi.env | 77 ++++++++++++++++++++++++++ - include/configs/rpi.h | 100 ---------------------------------- - 2 files changed, 77 insertions(+), 100 deletions(-) - create mode 100644 board/raspberrypi/rpi/rpi.env - -diff --git a/board/raspberrypi/rpi/rpi.env b/board/raspberrypi/rpi/rpi.env -new file mode 100644 -index 000000000000..30228285edde ---- /dev/null -+++ b/board/raspberrypi/rpi/rpi.env -@@ -0,0 +1,77 @@ -+/* SPDX-License-Identifier: GPL-2.0+ */ -+ -+/* environment for Raspberry Pi boards */ -+ -+dhcpuboot=usb start; dhcp u-boot.uimg; bootm -+ -+/* Environment */ -+stdin=serial,usbkbd -+stdout=serial,vidconsole -+stderr=serial,vidconsole -+ -+/* DFU over USB/UDC */ -+#ifdef CONFIG_CMD_DFU -+dfu_alt_info=u-boot.bin fat 0 1;uboot.env fat 0 1; -+ config.txt fat 0 1; -+#ifdef CONFIG_ARM64 -+dfu_alt_info+=Image fat 0 1 -+#else -+dfu_alt_info+=zImage fat 0 1 -+#endif -+#endif /* CONFIG_CMD_DFU */ -+ -+/* -+ * Memory layout for where various images get loaded by boot scripts: -+ * -+ * I suspect address 0 is used as the SMP pen on the RPi2, so avoid this. -+ * -+ * Older versions of the boot firmware place the firmware-loaded DTB at 0x100, -+ * newer versions place it in high memory. So prevent U-Boot from doing its own -+ * DTB + initrd relocation so that we won't accidentally relocate the initrd -+ * over the firmware-loaded DTB and generally try to lay out things starting -+ * from the bottom of RAM. -+ * -+ * kernel_addr_r has different constraints on ARM and Aarch64. For 32-bit ARM, -+ * it must be within the first 128M of RAM in order for the kernel's -+ * CONFIG_AUTO_ZRELADDR option to work. The kernel itself will be decompressed -+ * to 0x8000 but the decompressor clobbers 0x4000-0x8000 as well. The -+ * decompressor also likes to relocate itself to right past the end of the -+ * decompressed kernel, so in total the sum of the compressed and -+ * decompressed kernel needs to be reserved. -+ * -+ * For Aarch64, the kernel image is uncompressed and must be loaded at -+ * text_offset bytes (specified in the header of the Image) into a 2MB -+ * boundary. The 'booti' command relocates the image if necessary. Linux uses -+ * a default text_offset of 0x80000. In summary, loading at 0x80000 -+ * satisfies all these constraints and reserving memory up to 0x02400000 -+ * permits fairly large (roughly 36M) kernels. -+ * -+ * scriptaddr and pxefile_addr_r can be pretty much anywhere that doesn't -+ * conflict with something else. Reserving 1M for each of them at -+ * 0x02400000-0x02500000 and 0x02500000-0x02600000 should be plenty. -+ * -+ * On ARM, both the DTB and any possible initrd must be loaded such that they -+ * fit inside the lowmem mapping in Linux. In practice, this usually means not -+ * more than ~700M away from the start of the kernel image but this number can -+ * be larger OR smaller depending on e.g. the 'vmalloc=xxxM' command line -+ * parameter given to the kernel. So reserving memory from low to high -+ * satisfies this constraint again. Reserving 1M at 0x02600000-0x02700000 for -+ * the DTB leaves rest of the free RAM to the initrd starting at 0x02700000. -+ * Even with the smallest possible CPU-GPU memory split of the CPU getting -+ * only 64M, the remaining 25M starting at 0x02700000 should allow quite -+ * large initrds before they start colliding with U-Boot. -+ */ -+#ifdef CONFIG_ARM64 -+fdt_high=ffffffffffffffff -+initrd_high=ffffffffffffffff -+#else -+fdt_high=ffffffff -+initrd_high=ffffffff -+#endif -+kernel_addr_r=0x00080000 -+scriptaddr=0x02400000 -+pxefile_addr_r=0x02500000 -+fdt_addr_r=0x02600000 -+ramdisk_addr_r=0x02700000 -+ -+boot_targets=mmc usb pxe dhcp -diff --git a/include/configs/rpi.h b/include/configs/rpi.h -index 4160db2d8e14..8e56bdc84a89 100644 ---- a/include/configs/rpi.h -+++ b/include/configs/rpi.h -@@ -13,8 +13,6 @@ - #include - #endif - --/* Architecture, CPU, etc.*/ -- - /* Use SoC timer for AArch32, but architected timer for AArch64 */ - #ifndef CONFIG_ARM64 - #define CFG_SYS_TIMER_RATE 1000000 -@@ -33,102 +31,4 @@ - */ - #define CFG_SYS_SDRAM_SIZE SZ_128M - --/* Devices */ --/* LCD */ -- --/* DFU over USB/UDC */ --#ifdef CONFIG_CMD_DFU --#ifdef CONFIG_ARM64 --#define KERNEL_FILENAME "Image" --#else --#define KERNEL_FILENAME "zImage" --#endif -- --#define ENV_DFU_SETTINGS \ -- "dfu_alt_info=u-boot.bin fat 0 1;uboot.env fat 0 1;" \ -- "config.txt fat 0 1;" \ -- KERNEL_FILENAME " fat 0 1\0" --#else --#define ENV_DFU_SETTINGS "" --#endif -- --/* Console configuration */ -- --/* Environment */ -- --/* Shell */ -- --/* Environment */ --#define ENV_DEVICE_SETTINGS \ -- "stdin=serial,usbkbd\0" \ -- "stdout=serial,vidconsole\0" \ -- "stderr=serial,vidconsole\0" -- --#ifdef CONFIG_ARM64 --#define FDT_HIGH "ffffffffffffffff" --#define INITRD_HIGH "ffffffffffffffff" --#else --#define FDT_HIGH "ffffffff" --#define INITRD_HIGH "ffffffff" --#endif -- --/* -- * Memory layout for where various images get loaded by boot scripts: -- * -- * I suspect address 0 is used as the SMP pen on the RPi2, so avoid this. -- * -- * Older versions of the boot firmware place the firmware-loaded DTB at 0x100, -- * newer versions place it in high memory. So prevent U-Boot from doing its own -- * DTB + initrd relocation so that we won't accidentally relocate the initrd -- * over the firmware-loaded DTB and generally try to lay out things starting -- * from the bottom of RAM. -- * -- * kernel_addr_r has different constraints on ARM and Aarch64. For 32-bit ARM, -- * it must be within the first 128M of RAM in order for the kernel's -- * CONFIG_AUTO_ZRELADDR option to work. The kernel itself will be decompressed -- * to 0x8000 but the decompressor clobbers 0x4000-0x8000 as well. The -- * decompressor also likes to relocate itself to right past the end of the -- * decompressed kernel, so in total the sum of the compressed and and -- * decompressed kernel needs to be reserved. -- * -- * For Aarch64, the kernel image is uncompressed and must be loaded at -- * text_offset bytes (specified in the header of the Image) into a 2MB -- * boundary. The 'booti' command relocates the image if necessary. Linux uses -- * a default text_offset of 0x80000. In summary, loading at 0x80000 -- * satisfies all these constraints and reserving memory up to 0x02400000 -- * permits fairly large (roughly 36M) kernels. -- * -- * scriptaddr and pxefile_addr_r can be pretty much anywhere that doesn't -- * conflict with something else. Reserving 1M for each of them at -- * 0x02400000-0x02500000 and 0x02500000-0x02600000 should be plenty. -- * -- * On ARM, both the DTB and any possible initrd must be loaded such that they -- * fit inside the lowmem mapping in Linux. In practice, this usually means not -- * more than ~700M away from the start of the kernel image but this number can -- * be larger OR smaller depending on e.g. the 'vmalloc=xxxM' command line -- * parameter given to the kernel. So reserving memory from low to high -- * satisfies this constraint again. Reserving 1M at 0x02600000-0x02700000 for -- * the DTB leaves rest of the free RAM to the initrd starting at 0x02700000. -- * Even with the smallest possible CPU-GPU memory split of the CPU getting -- * only 64M, the remaining 25M starting at 0x02700000 should allow quite -- * large initrds before they start colliding with U-Boot. -- */ --#define ENV_MEM_LAYOUT_SETTINGS \ -- "fdt_high=" FDT_HIGH "\0" \ -- "initrd_high=" INITRD_HIGH "\0" \ -- "kernel_addr_r=0x00080000\0" \ -- "scriptaddr=0x02400000\0" \ -- "pxefile_addr_r=0x02500000\0" \ -- "fdt_addr_r=0x02600000\0" \ -- "ramdisk_addr_r=0x02700000\0" -- --#define BOOT_TARGETS "mmc usb pxe dhcp" -- --#define CFG_EXTRA_ENV_SETTINGS \ -- "dhcpuboot=usb start; dhcp u-boot.uimg; bootm\0" \ -- ENV_DEVICE_SETTINGS \ -- ENV_DFU_SETTINGS \ -- ENV_MEM_LAYOUT_SETTINGS \ -- "boot_targets=" BOOT_TARGETS "\0" -- - #endif diff --git a/sources b/sources index 0fa4df0..1ef8db1 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2023.10-rc3.tar.bz2) = 920190c47faca085c44fbd747669379f47461e3a3de5041e6a0d28d073116f1b18b0711876fb3c49eacd130e6fd2aa9d5ec84cb5fe0b2f7617b2438804317e81 +SHA512 (u-boot-2023.10.tar.bz2) = f238a69b9cc08ee0a69ea8ca2fa26975f2f2ede14e978b4db274b1e4095e43af0052307ac39034658a72ec9706951cd03c0f316d0591f391adecaf2cc9496fc4 diff --git a/uboot-tools.spec b/uboot-tools.spec index 478b255..d4ae06f 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc3 +#global candidate rc0 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2023.10 -Release: 0.4%{?candidate:.%{candidate}}%{?dist} +Release: 0.7%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -16,13 +16,12 @@ ExcludeArch: s390x Source0: https://ftp.denx.de/pub/u-boot/u-boot-%{version}%{?candidate:-%{candidate}}.tar.bz2 Source1: aarch64-boards -# Fedoraisms patches -# Needed to find DT on boot partition that's not the first partition -Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch +Patch1: uefi-Boot-var-automatic-management-for-removable-medias.patch Patch2: smbios-Simplify-reporting-of-unknown-values.patch Patch3: disable-VBE-by-default.patch Patch4: enable-bootmenu-by-default.patch Patch5: Add-video-damage-tracking.patch +Patch6: bootstd-Scan-all-bootdevs-in-a-boot_targets-entry.patch # Board fixes and enablement # RPi - uses RPI firmware device tree for HAT support @@ -30,7 +29,6 @@ Patch10: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch # Rockchips improvements Patch11: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch #Patch12: 0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch -Patch13: rpi-Convert-to-standard-boot.patch BuildRequires: bc BuildRequires: bison @@ -215,6 +213,10 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Mon Oct 02 2023 Peter Robinson - 2023.10-0.7 +- Update to 2023.10 GA +- Some upstream fixes + * Mon Aug 21 2023 Peter Robinson - 2023.10-0.4.rc3 - Update to 2023.10 RC3 diff --git a/uefi-Boot-var-automatic-management-for-removable-medias.patch b/uefi-Boot-var-automatic-management-for-removable-medias.patch new file mode 100644 index 0000000..aa8db6c --- /dev/null +++ b/uefi-Boot-var-automatic-management-for-removable-medias.patch @@ -0,0 +1,550 @@ +From patchwork Mon Oct 16 06:45:24 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 8bit +X-Patchwork-Submitter: Masahisa Kojima +X-Patchwork-Id: 1849182 +X-Patchwork-Delegate: trini@ti.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=linaro.org header.i=@linaro.org header.a=rsa-sha256 + header.s=google header.b=Ul1XEHOs; + 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 4S874K5Xxfz20Pd + for ; Mon, 16 Oct 2023 17:48:49 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id CEAE986C65; + Mon, 16 Oct 2023 08:47:35 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=linaro.org +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=linaro.org header.i=@linaro.org header.b="Ul1XEHOs"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 8D53786DB3; Mon, 16 Oct 2023 08:47:30 +0200 (CEST) +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,SPF_HELO_NONE,SPF_PASS + autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-pf1-x42e.google.com (mail-pf1-x42e.google.com + [IPv6:2607:f8b0: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 CDE3A86E17 + for ; Mon, 16 Oct 2023 08:47:09 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=linaro.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=masahisa.kojima@linaro.org +Received: by mail-pf1-x42e.google.com with SMTP id + d2e1a72fcca58-6b9af7d41d2so1095255b3a.0 + for ; Sun, 15 Oct 2023 23:47:09 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=linaro.org; s=google; t=1697438827; x=1698043627; 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=a4zZ4HlSkK/oY3qfyV9r1nYVhNuROFuLhRstgf1Rv2c=; + b=Ul1XEHOsGM4s5ZXhl8izVuRgdzwBvimAZkXuoqhECUyzZ5Ez0xE4L1Hg3jaebkJtT4 + Obo7iWdiOztGGXAQsCc6aArrMkn5aWaxldZj3Pk7wiMXDQQwkaTGjRCvrTsNYEXGqaYa + lgGsDUHQY9XV9evUyGDM53AoPvEQpMUn6Ise6OpLox6UUZP1F50ibABAcCqCaWEz+1nq + 4lVN8G9iVN+cmBLHgyABIM/ySQviS1kOYG+YTltUb5HvVaMxir4vqsa4+x6vd/tTxXMk + 56wvCrB5HMNqfSgdipSasXwMLCFgHXkBq93i2kbuzMIQ7Ysvv3C8BVI0G+1f6oLwENLk + e/CQ== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20230601; t=1697438827; x=1698043627; + 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=a4zZ4HlSkK/oY3qfyV9r1nYVhNuROFuLhRstgf1Rv2c=; + b=OcOEUqe358XOG7Zc6Hy+FF1rfaLYWmEF0A8OizdzAhGDLivYKjNd4BoOEHO4KvOACh + FZMZ1CB92hAiYJu1Ndf90dBBML5rNhQNU2W7UeXtS71umYvHozHLjFpF1yhECni/jQQU + 4oOX+5SMFsICbIbh7s4rTv7wQiw9WfipvTiPbJAhIlFiWT90CFt3hyN8/9KlKbl0Sclz + gllfdag+B/kpFHp53cH9u/zyihobAX9mjV7UWzK5LavAIv6z62RlsRMaICfqqhzWdiCQ + HVNQr2zZEmvsRXg8I0bE1n51DSkTLQ3tXeACm5nhLyxgtyqWwailoFeacOUsF7GMlCcD + qEbw== +X-Gm-Message-State: AOJu0YzjJEUEStoUb3N4IXyZxHifoMSiHxGU6B4mx7PQowC7gzvn1TnE + xTthn5FBg1s44Z9M4SsWxKIzkdvcmlpYkXlx7zA= +X-Google-Smtp-Source: + AGHT+IHbD6oyEamNHq3LhzVqk9GmlOVQEB1PUP0LTuRVh232jV1wx8mVR7sYKvotrVqHEVfJnRLFMA== +X-Received: by 2002:a05:6a00:1511:b0:690:4362:7011 with SMTP id + q17-20020a056a00151100b0069043627011mr35009133pfu.24.1697438827170; + Sun, 15 Oct 2023 23:47:07 -0700 (PDT) +Received: from localhost ([164.70.16.189]) by smtp.gmail.com with ESMTPSA id + fa13-20020a056a002d0d00b006b1c14a493fsm5242447pfb.71.2023.10.15.23.47.06 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Sun, 15 Oct 2023 23:47:06 -0700 (PDT) +From: Masahisa Kojima +To: u-boot@lists.denx.de +Cc: Heinrich Schuchardt , + Ilias Apalodimas , + Simon Glass , + Takahiro Akashi , + Michal Simek , Raymond Mao , + Masahisa Kojima , + Joao Marcos Costa , + Thomas Petazzoni , + Miquel Raynal +Subject: [PATCH v7 7/9] Boot var automatic management for removable medias +Date: Mon, 16 Oct 2023 15:45:24 +0900 +Message-Id: <20231016064526.2410856-8-masahisa.kojima@linaro.org> +X-Mailer: git-send-email 2.34.1 +In-Reply-To: <20231016064526.2410856-1-masahisa.kojima@linaro.org> +References: <20231016064526.2410856-1-masahisa.kojima@linaro.org> +MIME-Version: 1.0 +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 + +From: Raymond Mao + +Changes for complying to EFI spec §3.5.1.1 +'Removable Media Boot Behavior'. +Boot variables can be automatically generated during a removable +media is probed. At the same time, unused boot variables will be +detected and removed. + +Please note that currently the function 'efi_disk_remove' has no +ability to distinguish below two scenarios +a) Unplugging of a removable media under U-Boot +b) U-Boot exiting and booting an OS +Thus currently the boot variables management is not added into +'efi_disk_remove' to avoid boot options being added/erased +repeatedly under scenario b) during power cycles +See TODO comments under function 'efi_disk_remove' for more details + +The original efi_secboot tests expect that BootOrder EFI variable +is not defined. With this commit, the BootOrder EFI variable is +automatically added when the disk is detected. The original +efi_secboot tests end up with unexpected failure. +The efi_secboot tests need to be modified to explicitly set +the BootOrder EFI variable. + +squashfs ls test is also affected by this modification, need to +clear the previous state before squashfs ls test starts. + +Co-developed-by: Masahisa Kojima +Signed-off-by: Masahisa Kojima +Signed-off-by: Raymond Mao +Reviewed-by: Heinrich Schuchardt +Reviewed-by: Ilias Apalodimas +Signed-off-by: Joao Marcos Costa +Reviewed-by: Joao Marcos Costa +--- + lib/efi_loader/efi_disk.c | 18 ++++++++ + lib/efi_loader/efi_setup.c | 7 ++++ + test/py/tests/test_efi_secboot/test_signed.py | 42 +++++++++---------- + .../test_efi_secboot/test_signed_intca.py | 14 +++---- + .../tests/test_efi_secboot/test_unsigned.py | 14 +++---- + .../test_fs/test_squashfs/test_sqfs_ls.py | 6 +++ + 6 files changed, 66 insertions(+), 35 deletions(-) + +diff --git a/lib/efi_loader/efi_disk.c b/lib/efi_loader/efi_disk.c +index f0d76113b0..b808a7fe62 100644 +--- a/lib/efi_loader/efi_disk.c ++++ b/lib/efi_loader/efi_disk.c +@@ -690,6 +690,13 @@ int efi_disk_probe(void *ctx, struct event *event) + return -1; + } + ++ /* only do the boot option management when UEFI sub-system is initialized */ ++ if (IS_ENABLED(CONFIG_CMD_BOOTEFI_BOOTMGR) && efi_obj_list_initialized == EFI_SUCCESS) { ++ ret = efi_bootmgr_update_media_device_boot_option(); ++ if (ret != EFI_SUCCESS) ++ return -1; ++ } ++ + return 0; + } + +@@ -742,6 +749,17 @@ int efi_disk_remove(void *ctx, struct event *event) + dev_tag_del(dev, DM_TAG_EFI); + + return 0; ++ ++ /* ++ * TODO A flag to distinguish below 2 different scenarios of this ++ * function call is needed: ++ * a) Unplugging of a removable media under U-Boot ++ * b) U-Boot exiting and booting an OS ++ * In case of scenario a), efi_bootmgr_update_media_device_boot_option() ++ * needs to be invoked here to update the boot options and remove the ++ * unnecessary ones. ++ */ ++ + } + + /** +diff --git a/lib/efi_loader/efi_setup.c b/lib/efi_loader/efi_setup.c +index e6de685e87..37359a77bb 100644 +--- a/lib/efi_loader/efi_setup.c ++++ b/lib/efi_loader/efi_setup.c +@@ -245,6 +245,13 @@ efi_status_t efi_init_obj_list(void) + if (ret != EFI_SUCCESS) + goto out; + ++ if (IS_ENABLED(CONFIG_CMD_BOOTEFI_BOOTMGR)) { ++ /* update boot option after variable service initialized */ ++ ret = efi_bootmgr_update_media_device_boot_option(); ++ if (ret != EFI_SUCCESS) ++ goto out; ++ } ++ + /* Define supported languages */ + ret = efi_init_platform_lang(); + if (ret != EFI_SUCCESS) +diff --git a/test/py/tests/test_efi_secboot/test_signed.py b/test/py/tests/test_efi_secboot/test_signed.py +index ca52e853d8..2f862a259a 100644 +--- a/test/py/tests/test_efi_secboot/test_signed.py ++++ b/test/py/tests/test_efi_secboot/test_signed.py +@@ -29,7 +29,7 @@ class TestEfiSignedImage(object): + output = u_boot_console.run_command_list([ + 'host bind 0 %s' % disk_img, + 'efidebug boot add -b 1 HELLO1 host 0:1 /helloworld.efi.signed -s ""', +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'bootefi bootmgr']) + assert 'Hello, world!' in ''.join(output) + +@@ -37,7 +37,7 @@ class TestEfiSignedImage(object): + # Test Case 1b, run unsigned image if no PK + output = u_boot_console.run_command_list([ + 'efidebug boot add -b 2 HELLO2 host 0:1 /helloworld.efi -s ""', +- 'efidebug boot next 2', ++ 'efidebug boot order 2', + 'bootefi bootmgr']) + assert 'Hello, world!' in ''.join(output) + +@@ -59,13 +59,13 @@ class TestEfiSignedImage(object): + assert 'Failed to set EFI variable' not in ''.join(output) + output = u_boot_console.run_command_list([ + 'efidebug boot add -b 1 HELLO1 host 0:1 /helloworld.efi.signed -s ""', +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'efidebug test bootmgr']) + assert('\'HELLO1\' failed' in ''.join(output)) + assert('efi_start_image() returned: 26' in ''.join(output)) + output = u_boot_console.run_command_list([ + 'efidebug boot add -b 2 HELLO2 host 0:1 /helloworld.efi -s ""', +- 'efidebug boot next 2', ++ 'efidebug boot order 2', + 'efidebug test bootmgr']) + assert '\'HELLO2\' failed' in ''.join(output) + assert 'efi_start_image() returned: 26' in ''.join(output) +@@ -77,12 +77,12 @@ class TestEfiSignedImage(object): + 'setenv -e -nv -bs -rt -at -i 4000000:$filesize db']) + assert 'Failed to set EFI variable' not in ''.join(output) + output = u_boot_console.run_command_list([ +- 'efidebug boot next 2', ++ 'efidebug boot order 2', + 'efidebug test bootmgr']) + assert '\'HELLO2\' failed' in ''.join(output) + assert 'efi_start_image() returned: 26' in ''.join(output) + output = u_boot_console.run_command_list([ +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'bootefi bootmgr']) + assert 'Hello, world!' in ''.join(output) + +@@ -105,7 +105,7 @@ class TestEfiSignedImage(object): + assert 'Failed to set EFI variable' not in ''.join(output) + output = u_boot_console.run_command_list([ + 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi.signed -s ""', +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'efidebug test bootmgr']) + assert '\'HELLO\' failed' in ''.join(output) + assert 'efi_start_image() returned: 26' in ''.join(output) +@@ -117,7 +117,7 @@ class TestEfiSignedImage(object): + 'setenv -e -nv -bs -rt -at -i 4000000:$filesize db']) + assert 'Failed to set EFI variable' not in ''.join(output) + output = u_boot_console.run_command_list([ +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'efidebug test bootmgr']) + assert '\'HELLO\' failed' in ''.join(output) + assert 'efi_start_image() returned: 26' in ''.join(output) +@@ -143,7 +143,7 @@ class TestEfiSignedImage(object): + assert 'Failed to set EFI variable' not in ''.join(output) + output = u_boot_console.run_command_list([ + 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi.signed -s ""', +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'efidebug test bootmgr']) + assert '\'HELLO\' failed' in ''.join(output) + assert 'efi_start_image() returned: 26' in ''.join(output) +@@ -170,7 +170,7 @@ class TestEfiSignedImage(object): + assert 'Failed to set EFI variable' not in ''.join(output) + output = u_boot_console.run_command_list([ + 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi.signed_2sigs -s ""', +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'efidebug test bootmgr']) + assert 'Hello, world!' in ''.join(output) + +@@ -181,7 +181,7 @@ class TestEfiSignedImage(object): + 'setenv -e -nv -bs -rt -at -a -i 4000000:$filesize db']) + assert 'Failed to set EFI variable' not in ''.join(output) + output = u_boot_console.run_command_list([ +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'efidebug test bootmgr']) + assert 'Hello, world!' in ''.join(output) + +@@ -193,7 +193,7 @@ class TestEfiSignedImage(object): + 'setenv -e -nv -bs -rt -at -i 4000000:$filesize dbx']) + assert 'Failed to set EFI variable' not in ''.join(output) + output = u_boot_console.run_command_list([ +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'efidebug test bootmgr']) + assert '\'HELLO\' failed' in ''.join(output) + assert 'efi_start_image() returned: 26' in ''.join(output) +@@ -205,7 +205,7 @@ class TestEfiSignedImage(object): + 'setenv -e -nv -bs -rt -at -a -i 4000000:$filesize dbx']) + assert 'Failed to set EFI variable' not in ''.join(output) + output = u_boot_console.run_command_list([ +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'efidebug test bootmgr']) + assert '\'HELLO\' failed' in ''.join(output) + assert 'efi_start_image() returned: 26' in ''.join(output) +@@ -230,7 +230,7 @@ class TestEfiSignedImage(object): + assert 'Failed to set EFI variable' not in ''.join(output) + output = u_boot_console.run_command_list([ + 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi.signed_2sigs -s ""', +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'efidebug test bootmgr']) + assert '\'HELLO\' failed' in ''.join(output) + assert 'efi_start_image() returned: 26' in ''.join(output) +@@ -254,7 +254,7 @@ class TestEfiSignedImage(object): + assert 'Failed to set EFI variable' not in ''.join(output) + output = u_boot_console.run_command_list([ + 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi.signed -s ""', +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'bootefi bootmgr']) + assert 'Hello, world!' in ''.join(output) + +@@ -265,7 +265,7 @@ class TestEfiSignedImage(object): + 'setenv -e -nv -bs -rt -at -i 4000000:$filesize dbx']) + assert 'Failed to set EFI variable' not in ''.join(output) + output = u_boot_console.run_command_list([ +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'efidebug test bootmgr']) + assert '\'HELLO\' failed' in ''.join(output) + assert 'efi_start_image() returned: 26' in ''.join(output) +@@ -279,7 +279,7 @@ class TestEfiSignedImage(object): + 'setenv -e -nv -bs -rt -at -i 4000000:$filesize dbx']) + assert 'Failed to set EFI variable' not in ''.join(output) + output = u_boot_console.run_command_list([ +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'efidebug test bootmgr']) + assert '\'HELLO\' failed' in ''.join(output) + assert 'efi_start_image() returned: 26' in ''.join(output) +@@ -307,7 +307,7 @@ class TestEfiSignedImage(object): + assert 'Failed to set EFI variable' not in ''.join(output) + output = u_boot_console.run_command_list([ + 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi.signed_2sigs -s ""', +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'efidebug test bootmgr']) + assert '\'HELLO\' failed' in ''.join(output) + assert 'efi_start_image() returned: 26' in ''.join(output) +@@ -330,7 +330,7 @@ class TestEfiSignedImage(object): + assert 'Failed to set EFI variable' not in ''.join(output) + output = u_boot_console.run_command_list([ + 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi.signed_2sigs -s ""', +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'efidebug test bootmgr']) + assert '\'HELLO\' failed' in ''.join(output) + assert 'efi_start_image() returned: 26' in ''.join(output) +@@ -349,7 +349,7 @@ class TestEfiSignedImage(object): + output = u_boot_console.run_command_list([ + 'host bind 0 %s' % disk_img, + 'efidebug boot add -b 1 HELLO1 host 0:1 /helloworld_forged.efi.signed -s ""', +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'efidebug test bootmgr']) + assert('hELLO, world!' in ''.join(output)) + +@@ -364,7 +364,7 @@ class TestEfiSignedImage(object): + 'setenv -e -nv -bs -rt -at -i 4000000:$filesize PK']) + assert 'Failed to set EFI variable' not in ''.join(output) + output = u_boot_console.run_command_list([ +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'efidebug test bootmgr']) + assert(not 'hELLO, world!' in ''.join(output)) + assert('\'HELLO1\' failed' in ''.join(output)) +diff --git a/test/py/tests/test_efi_secboot/test_signed_intca.py b/test/py/tests/test_efi_secboot/test_signed_intca.py +index d8d599d22f..8d9a5f3e7f 100644 +--- a/test/py/tests/test_efi_secboot/test_signed_intca.py ++++ b/test/py/tests/test_efi_secboot/test_signed_intca.py +@@ -40,7 +40,7 @@ class TestEfiSignedImageIntca(object): + + output = u_boot_console.run_command_list([ + 'efidebug boot add -b 1 HELLO_a host 0:1 /helloworld.efi.signed_a -s ""', +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'efidebug test bootmgr']) + assert '\'HELLO_a\' failed' in ''.join(output) + assert 'efi_start_image() returned: 26' in ''.join(output) +@@ -49,7 +49,7 @@ class TestEfiSignedImageIntca(object): + # Test Case 1b, signed and authenticated by root CA + output = u_boot_console.run_command_list([ + 'efidebug boot add -b 2 HELLO_ab host 0:1 /helloworld.efi.signed_ab -s ""', +- 'efidebug boot next 2', ++ 'efidebug boot order 2', + 'bootefi bootmgr']) + assert 'Hello, world!' in ''.join(output) + +@@ -71,7 +71,7 @@ class TestEfiSignedImageIntca(object): + + output = u_boot_console.run_command_list([ + 'efidebug boot add -b 1 HELLO_abc host 0:1 /helloworld.efi.signed_abc -s ""', +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'efidebug test bootmgr']) + assert '\'HELLO_abc\' failed' in ''.join(output) + assert 'efi_start_image() returned: 26' in ''.join(output) +@@ -81,7 +81,7 @@ class TestEfiSignedImageIntca(object): + output = u_boot_console.run_command_list([ + 'fatload host 0:1 4000000 db_b.auth', + 'setenv -e -nv -bs -rt -at -i 4000000:$filesize db', +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'efidebug test bootmgr']) + assert '\'HELLO_abc\' failed' in ''.join(output) + assert 'efi_start_image() returned: 26' in ''.join(output) +@@ -91,7 +91,7 @@ class TestEfiSignedImageIntca(object): + output = u_boot_console.run_command_list([ + 'fatload host 0:1 4000000 db_c.auth', + 'setenv -e -nv -bs -rt -at -i 4000000:$filesize db', +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'efidebug test bootmgr']) + assert 'Hello, world!' in ''.join(output) + +@@ -117,7 +117,7 @@ class TestEfiSignedImageIntca(object): + + output = u_boot_console.run_command_list([ + 'efidebug boot add -b 1 HELLO_abc host 0:1 /helloworld.efi.signed_abc -s ""', +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'efidebug test bootmgr']) + assert 'Hello, world!' in ''.join(output) + # Or, +@@ -129,7 +129,7 @@ class TestEfiSignedImageIntca(object): + output = u_boot_console.run_command_list([ + 'fatload host 0:1 4000000 dbx_c.auth', + 'setenv -e -nv -bs -rt -at -i 4000000:$filesize dbx', +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'efidebug test bootmgr']) + assert '\'HELLO_abc\' failed' in ''.join(output) + assert 'efi_start_image() returned: 26' in ''.join(output) +diff --git a/test/py/tests/test_efi_secboot/test_unsigned.py b/test/py/tests/test_efi_secboot/test_unsigned.py +index df63f0df08..7c078f220d 100644 +--- a/test/py/tests/test_efi_secboot/test_unsigned.py ++++ b/test/py/tests/test_efi_secboot/test_unsigned.py +@@ -36,11 +36,11 @@ class TestEfiUnsignedImage(object): + + output = u_boot_console.run_command_list([ + 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi -s ""', +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'bootefi bootmgr']) + assert '\'HELLO\' failed' in ''.join(output) + output = u_boot_console.run_command_list([ +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'efidebug test bootmgr']) + assert 'efi_start_image() returned: 26' in ''.join(output) + assert 'Hello, world!' not in ''.join(output) +@@ -65,7 +65,7 @@ class TestEfiUnsignedImage(object): + + output = u_boot_console.run_command_list([ + 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi -s ""', +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'bootefi bootmgr']) + assert 'Hello, world!' in ''.join(output) + +@@ -89,11 +89,11 @@ class TestEfiUnsignedImage(object): + + output = u_boot_console.run_command_list([ + 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi -s ""', +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'bootefi bootmgr']) + assert '\'HELLO\' failed' in ''.join(output) + output = u_boot_console.run_command_list([ +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'efidebug test bootmgr']) + assert 'efi_start_image() returned: 26' in ''.join(output) + assert 'Hello, world!' not in ''.join(output) +@@ -107,11 +107,11 @@ class TestEfiUnsignedImage(object): + + output = u_boot_console.run_command_list([ + 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi -s ""', +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'bootefi bootmgr']) + assert '\'HELLO\' failed' in ''.join(output) + output = u_boot_console.run_command_list([ +- 'efidebug boot next 1', ++ 'efidebug boot order 1', + 'efidebug test bootmgr']) + assert 'efi_start_image() returned: 26' in ''.join(output) + assert 'Hello, world!' not in ''.join(output) +diff --git a/test/py/tests/test_fs/test_squashfs/test_sqfs_ls.py b/test/py/tests/test_fs/test_squashfs/test_sqfs_ls.py +index 527a556ed8..3b8118104f 100644 +--- a/test/py/tests/test_fs/test_squashfs/test_sqfs_ls.py ++++ b/test/py/tests/test_fs/test_squashfs/test_sqfs_ls.py +@@ -118,6 +118,12 @@ def test_sqfs_ls(u_boot_console): + """ + build_dir = u_boot_console.config.build_dir + ++ # If the EFI subsystem is enabled, default file(e.g. EFI/BOOT/BOOTAA64.EFI) ++ # is scanned when the new disk is detected. This ends up with the unexpected ++ # output at the first 'sqfsls' command. ++ # Clear the previous state. ++ u_boot_console.restart_uboot() ++ + # setup test environment + check_mksquashfs_version() + generate_sqfs_src_dir(build_dir) From d9dd20bdd05472ae2e3d0a81e6e5469d69341887 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 23 Oct 2023 15:42:39 +0100 Subject: [PATCH 158/271] Further potential upstream fixes --- ...all-bootdevs-in-a-boot_targets-entry.patch | 213 ------ ...d-Test-and-boot_targets-improvements.patch | 626 ++++++++++++++++++ uboot-tools.spec | 10 +- 3 files changed, 633 insertions(+), 216 deletions(-) delete mode 100644 bootstd-Scan-all-bootdevs-in-a-boot_targets-entry.patch create mode 100644 bootstd-Test-and-boot_targets-improvements.patch diff --git a/bootstd-Scan-all-bootdevs-in-a-boot_targets-entry.patch b/bootstd-Scan-all-bootdevs-in-a-boot_targets-entry.patch deleted file mode 100644 index 8ab2759..0000000 --- a/bootstd-Scan-all-bootdevs-in-a-boot_targets-entry.patch +++ /dev/null @@ -1,213 +0,0 @@ -From patchwork Sat Sep 23 20:50:15 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 8bit -X-Patchwork-Submitter: Simon Glass -X-Patchwork-Id: 1838641 -X-Patchwork-Delegate: sjg@chromium.org -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -Authentication-Results: legolas.ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 - header.s=google header.b=KG3aXwv5; - 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) server-digest SHA384) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4RtLr82vCNz1ynH - for ; Sun, 24 Sep 2023 06:50:30 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id C5750868D8; - Sat, 23 Sep 2023 22:50:24 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=chromium.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=chromium.org header.i=@chromium.org - header.b="KG3aXwv5"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id E66458698D; Sat, 23 Sep 2023 22:50:23 +0200 (CEST) -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,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, - SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-io1-xd35.google.com (mail-io1-xd35.google.com - [IPv6:2607:f8b0:4864:20::d35]) - (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 739828684C - for ; Sat, 23 Sep 2023 22:50:21 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=chromium.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=sjg@chromium.org -Received: by mail-io1-xd35.google.com with SMTP id - ca18e2360f4ac-79fa4ff8220so82788439f.3 - for ; Sat, 23 Sep 2023 13:50:21 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=chromium.org; s=google; t=1695502220; x=1696107020; darn=lists.denx.de; - h=content-transfer-encoding:mime-version:message-id:date:subject:cc - :to:from:from:to:cc:subject:date:message-id:reply-to; - bh=fcy5WkVBoc7uoRrzJTdjAvllGuUSUwfIiQ5P7MPqanU=; - b=KG3aXwv5HvtWYkt2G7n3DcwAsa2xdEa6uyrBRWhucS+3OUN5eZ79edhY+dVDuwuEAL - I/Ci/8cflRdX1s9cv7mPYw2tXHkWnudM3Jwyw+72113wGGZG+e1q9i0wvb+MmxxK4lDM - ApdxnzfJunDfWMC4zu0PhcdG39ZcuC82Ezgcc= -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20230601; t=1695502220; x=1696107020; - h=content-transfer-encoding:mime-version:message-id:date:subject:cc - :to:from:x-gm-message-state:from:to:cc:subject:date:message-id - :reply-to; - bh=fcy5WkVBoc7uoRrzJTdjAvllGuUSUwfIiQ5P7MPqanU=; - b=UNAm2llXUYdkTNewaIJpX2/kKkDsigJYBX1Ch147g7NChNygnu0Glr6Ya3Cw6WpHIG - OzXCeyakwC/pjiea0NTxHVU01HvJOlAiZwBZoQMMnavjUuSAdMqDCSLIndWzRhOARHfS - ksVozUDoXyyT/gV0XsaczFQgdgBImzMU7OR4NRnNalhSl2iZqYqt/TJ3Ftciv0KfxrcB - CrNKVLlJySDCY+svy4oHY0uID6SHsIAGjKBEAE1x9VhZ1jtpTJE4Zzrqa4nrrt+oEgus - A44BAwUrpks5SSMYfllyvb2A/OavxCiknMLIS7ENPr4izxS2EvAZcqH0KhFUUzD5aDXf - XmKg== -X-Gm-Message-State: AOJu0YwjY6Rk6HbA8DutFJQwzzA4q1TI/KwnuD1ZteWezSPjeMGyx26P - qvXFutS0QtYRlcVbGETlNS4BhMXg2YyAsItRSoI= -X-Google-Smtp-Source: - AGHT+IE/HwkByEI0cMcKWYghOMoUVXCzjV4a68DB17kNo1TCDUCCFa07idjIRi4hzVA51WQbE/JX/w== -X-Received: by 2002:a05:6e02:19cd:b0:34f:f5a4:3e68 with SMTP id - r13-20020a056e0219cd00b0034ff5a43e68mr4812478ill.30.1695502219881; - Sat, 23 Sep 2023 13:50:19 -0700 (PDT) -Received: from sjg1.roam.corp.google.com (c-73-14-173-85.hsd1.co.comcast.net. - [73.14.173.85]) by smtp.gmail.com with ESMTPSA id - i8-20020a056e020ec800b0034fda29890asm691408ilk.10.2023.09.23.13.50.19 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Sat, 23 Sep 2023 13:50:19 -0700 (PDT) -From: Simon Glass -To: U-Boot Mailing List -Cc: Date Huang , Tom Rini , - =?utf-8?q?Vincent_Stehl=C3=A9?= , - Simon Glass -Subject: [PATCH] bootstd: Scan all bootdevs in a boot_targets entry -Date: Sat, 23 Sep 2023 14:50:15 -0600 -Message-ID: <20230923205017.1754340-1-sjg@chromium.org> -X-Mailer: git-send-email 2.42.0.515.g380fc7ccd1-goog -MIME-Version: 1.0 -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 - -When the boot_targets environment variable is used with the distro-boot -scripts, each device is included individually. For example, if there -are three mmc devices, then we will have something like: - - boot_targets="mmc0 mmc1 mmc2" - -In contrast, standard boot supports specifying just the uclass, i.e.: - - boot_targets="mmc" - -The intention is that this should scan all MMC devices, but in fact it -currently only scans the first. - -Update the logic to handle this case, without required BOOTSTD_FULL to -be enabled. - -I believe at least three people reported this, but I found two. - -Signed-off-by: Simon Glass -Reported-by: Date Huang -Reported-by: Vincent Stehlé ---- - - boot/bootdev-uclass.c | 3 ++- - boot/bootflow.c | 21 +++++++++++++++++++-- - test/boot/bootdev.c | 10 ++++++++++ - 3 files changed, 31 insertions(+), 3 deletions(-) - -diff --git a/boot/bootdev-uclass.c b/boot/bootdev-uclass.c -index fa52bc3a9c4e..5a60cf223c79 100644 ---- a/boot/bootdev-uclass.c -+++ b/boot/bootdev-uclass.c -@@ -460,10 +460,11 @@ int bootdev_find_by_label(const char *label, struct udevice **devp, - * if no sequence number was provided, we must scan all - * bootdevs for this media uclass - */ -- if (IS_ENABLED(CONFIG_BOOTSTD_FULL) && seq == -1) -+ if (seq == -1) - method_flags |= BOOTFLOW_METHF_SINGLE_UCLASS; - if (method_flagsp) - *method_flagsp = method_flags; -+ log_debug("method flags %x\n", method_flags); - return 0; - } - log_debug("- no device in %s\n", media->name); -diff --git a/boot/bootflow.c b/boot/bootflow.c -index 81b5829d5b37..74abf3e17d7e 100644 ---- a/boot/bootflow.c -+++ b/boot/bootflow.c -@@ -260,8 +260,25 @@ static int iter_incr(struct bootflow_iter *iter) - } else { - log_debug("labels %p\n", iter->labels); - if (iter->labels) { -- ret = bootdev_next_label(iter, &dev, -- &method_flags); -+ /* -+ * when the label is "mmc" we want to scan all -+ * mmc bootdevs, not just the first. See -+ * bootdev_find_by_label() where this flag is -+ * set up -+ */ -+ if (iter->method_flags & BOOTFLOW_METHF_SINGLE_UCLASS) { -+ uclass_next_device(&dev); -+ log_debug("looking for next device %s: %s\n", -+ iter->dev->name, -+ dev ? dev->name : ""); -+ } else { -+ dev = NULL; -+ } -+ if (!dev) { -+ log_debug("looking at next label\n"); -+ ret = bootdev_next_label(iter, &dev, -+ &method_flags); -+ } - } else { - ret = bootdev_next_prio(iter, &dev); - method_flags = 0; -diff --git a/test/boot/bootdev.c b/test/boot/bootdev.c -index 6b29213416db..c5f14a7a1323 100644 ---- a/test/boot/bootdev.c -+++ b/test/boot/bootdev.c -@@ -221,6 +221,16 @@ static int bootdev_test_order(struct unit_test_state *uts) - ut_asserteq_str("mmc2.bootdev", iter.dev_used[1]->name); - bootflow_iter_uninit(&iter); - -+ /* Make sure it scans a bootdevs in each target */ -+ ut_assertok(env_set("boot_targets", "mmc spi")); -+ ut_asserteq(0, bootflow_scan_first(NULL, NULL, &iter, 0, &bflow)); -+ ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow)); -+ ut_asserteq(3, iter.num_devs); -+ ut_asserteq_str("mmc2.bootdev", iter.dev_used[0]->name); -+ ut_asserteq_str("mmc1.bootdev", iter.dev_used[1]->name); -+ ut_asserteq_str("mmc0.bootdev", iter.dev_used[2]->name); -+ bootflow_iter_uninit(&iter); -+ - return 0; - } - BOOTSTD_TEST(bootdev_test_order, UT_TESTF_DM | UT_TESTF_SCAN_FDT); diff --git a/bootstd-Test-and-boot_targets-improvements.patch b/bootstd-Test-and-boot_targets-improvements.patch new file mode 100644 index 0000000..68f1223 --- /dev/null +++ b/bootstd-Test-and-boot_targets-improvements.patch @@ -0,0 +1,626 @@ +From patchwork Mon Oct 23 07:02:11 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Simon Glass +X-Patchwork-Id: 1853514 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +Authentication-Results: legolas.ozlabs.org; + dkim=pass (1024-bit key; + unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 + header.s=google header.b=ft1tNW5r; + 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 4SDR4l2QBzz202k + for ; Mon, 23 Oct 2023 18:04:07 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 3591D87893; + Mon, 23 Oct 2023 09:03:57 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=chromium.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; + dkim=pass (1024-bit key; + unprotected) header.d=chromium.org header.i=@chromium.org + header.b="ft1tNW5r"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 74EC18789D; Mon, 23 Oct 2023 09:03:55 +0200 (CEST) +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,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, + SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-oi1-x22f.google.com (mail-oi1-x22f.google.com + [IPv6:2607:f8b0:4864:20::22f]) + (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 5F22E87874 + for ; Mon, 23 Oct 2023 09:03:53 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=chromium.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=sjg@chromium.org +Received: by mail-oi1-x22f.google.com with SMTP id + 5614622812f47-3b2ea7cca04so2216594b6e.2 + for ; Mon, 23 Oct 2023 00:03:53 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=chromium.org; s=google; t=1698044632; x=1698649432; 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=cIwvqOWntoH56aVh+uK5vSKMw8BFeAK+5xfygEqOPIs=; + b=ft1tNW5rHnnlnf552nQnVvJdgHJqUOIPR89PZQ12NUAyrlDzlzOEdzF55vs0bmokXJ + czzGmRw8FwBvmzO/fekIxGsNzg40U5ypkgqj13Plvj07iGgJvNLbwmOGyYwpTD86eBO8 + HxWQUCwgkoFZldu1VLcZHUzw69U1vUVcLpDqE= +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20230601; t=1698044632; x=1698649432; + 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=cIwvqOWntoH56aVh+uK5vSKMw8BFeAK+5xfygEqOPIs=; + b=AvcWPKPeRESlQnvwva3Yydv23E8Q1GOx+sH830m0arYUvEW4+J/TkXRzyM0Z8amaDR + 4dvztcY+Hh54LqVGw9cD0R65sHvXrvqUPURdBpVFT3yX2LhoN7ZxPD1EcKy9Hqr3ATlJ + 9eOCuyD+UHHeMAIvdTR918uaO5Bja38XSaNAzNV57JBYkDgWJeNK9OBHBuJj2Y2sTNZ1 + poF5sGH839p3nx69X+ImsEwsgz8JIZFnwe4WBsXMMM13hVQ1ZDpdhKzKI7ai1jE67Ixo + 4hOXD6ACVKkBijBRqW8t2V1Wf12AAun1z+mrhyFaq/UgyxuplGyHQHWGmwL7maxTzdVv + IX4A== +X-Gm-Message-State: AOJu0YwtYv7Lh6kUp+eOTO6dV8tIAMnl+FJU9kPSXGHNBjxPmbWNgo0/ + gEs6R/iZt+vLqxRzuubv1ROzFkNfj6SlCXza5g7l1A== +X-Google-Smtp-Source: + AGHT+IHvJm5/lr6rXt08U65SxntTogh09qTfiLs2+CF8IjsSnkkTeqbhy/o2f2YjHn0GHRZ0TtCNpA== +X-Received: by 2002:a05:6808:e85:b0:3b2:d8cb:8e14 with SMTP id + k5-20020a0568080e8500b003b2d8cb8e14mr11558910oil.28.1698044631920; + Mon, 23 Oct 2023 00:03:51 -0700 (PDT) +Received: from sjg1.roam.corp.google.com ([202.144.206.130]) + by smtp.gmail.com with ESMTPSA id + u187-20020a6279c4000000b006bde8e1f0adsm5910841pfc.98.2023.10.23.00.03.49 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Mon, 23 Oct 2023 00:03:51 -0700 (PDT) +From: Simon Glass +To: U-Boot Mailing List +Cc: Heinrich Schuchardt , + Guillaume Gardet , Tom Rini , + Simon Glass +Subject: [PATCH 2/4] bootstd: Expand boot-ordering test to include USB +Date: Mon, 23 Oct 2023 00:02:11 -0700 +Message-ID: + <20231023000211.2.I9d49d1e28d3ef75af768dc20bb491e4c82e4ab76@changeid> +X-Mailer: git-send-email 2.42.0.655.g421f12c284-goog +In-Reply-To: <20231023070216.394709-1-sjg@chromium.org> +References: <20231023070216.394709-1-sjg@chromium.org> +MIME-Version: 1.0 +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 + +Scan the USB bus as well, so we can check that different uclasses work +correctly in boot_targets + +update the function comment with more detail. + +Signed-off-by: Simon Glass +--- + + test/boot/bootdev.c | 17 ++++++++++++++--- + 1 file changed, 14 insertions(+), 3 deletions(-) + +diff --git a/test/boot/bootdev.c b/test/boot/bootdev.c +index 6b29213416db..7228f545e9e6 100644 +--- a/test/boot/bootdev.c ++++ b/test/boot/bootdev.c +@@ -190,12 +190,21 @@ static int bootdev_test_any(struct unit_test_state *uts) + BOOTSTD_TEST(bootdev_test_any, UT_TESTF_DM | UT_TESTF_SCAN_FDT | + UT_TESTF_ETH_BOOTDEV); + +-/* Check bootdev ordering with the bootdev-order property */ ++/* ++ * Check bootdev ordering with the bootdev-order property and boot_targets ++ * environment variable ++ */ + static int bootdev_test_order(struct unit_test_state *uts) + { + struct bootflow_iter iter; + struct bootflow bflow; + ++ test_set_skip_delays(true); ++ ++ /* Start up USB which gives us three additional bootdevs */ ++ usb_started = false; ++ ut_assertok(run_command("usb start", 0)); ++ + /* + * First try the order set by the bootdev-order property + * Like all sandbox unit tests this relies on the devicetree setting up +@@ -213,12 +222,14 @@ static int bootdev_test_order(struct unit_test_state *uts) + bootflow_iter_uninit(&iter); + + /* Use the environment variable to override it */ +- ut_assertok(env_set("boot_targets", "mmc1 mmc2")); ++ ut_assertok(env_set("boot_targets", "mmc1 mmc2 usb")); + ut_assertok(bootflow_scan_first(NULL, NULL, &iter, 0, &bflow)); + ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow)); +- ut_asserteq(2, iter.num_devs); ++ ut_asserteq(3, iter.num_devs); + ut_asserteq_str("mmc1.bootdev", iter.dev_used[0]->name); + ut_asserteq_str("mmc2.bootdev", iter.dev_used[1]->name); ++ ut_asserteq_str("usb_mass_storage.lun0.bootdev", ++ iter.dev_used[2]->name); + bootflow_iter_uninit(&iter); + + return 0; + +From patchwork Mon Oct 23 07:02:12 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Simon Glass +X-Patchwork-Id: 1853515 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +Authentication-Results: legolas.ozlabs.org; + dkim=pass (1024-bit key; + unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 + header.s=google header.b=aYxxWBdy; + 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 4SDR4z5WcTz202k + for ; Mon, 23 Oct 2023 18:04:19 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id A279B878A9; + Mon, 23 Oct 2023 09:03:59 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=chromium.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; + dkim=pass (1024-bit key; + unprotected) header.d=chromium.org header.i=@chromium.org + header.b="aYxxWBdy"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 231CE878B2; Mon, 23 Oct 2023 09:03:59 +0200 (CEST) +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,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, + SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-pf1-x431.google.com (mail-pf1-x431.google.com + [IPv6:2607:f8b0:4864:20::431]) + (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 E9DE187874 + for ; Mon, 23 Oct 2023 09:03:56 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=chromium.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=sjg@chromium.org +Received: by mail-pf1-x431.google.com with SMTP id + d2e1a72fcca58-6bd73395bceso2113746b3a.0 + for ; Mon, 23 Oct 2023 00:03:56 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=chromium.org; s=google; t=1698044635; x=1698649435; 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=8b4yhHi8HkVDVyxmZZ8a/B9oJfD95880A8O7ScnCUlA=; + b=aYxxWBdy/wJMQ/tjjK8Fxa3hq2jB+RQ/GZvaC5Z3WX/PHTfrcBBEncxnUjhKGVpRDX + W+KcG58tqawI84z5bFLFL0b9sW2fogOlQatvQajdAUe47BPNqB6QAhnJi9Kz7r/r9Gs6 + NNgvS1a0l6YIH9C//eL4UL+4CZAI3w/xuJglw= +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20230601; t=1698044635; x=1698649435; + 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=8b4yhHi8HkVDVyxmZZ8a/B9oJfD95880A8O7ScnCUlA=; + b=I5RQ7op3C0RGr709+nlAxagLQLSvqp2mbM2boS7Q037eSoibAVpk4mZ4eybB3mgH7s + CU7QPLmTk89Z+nypz02nbdWiiDUxCGGmjyWllc8F1lpiyjdILqp5njd+8mukVbhujjua + wbRX/7IaEywz0hp5/4jlTO+cz+b6t8VrLGXFFR8MJNzfchp2hHCRDypg8K/GlpfN9Vrh + SeZuMbw7X3R9vJf+qkLzCYC4bKuMUFgXrXnL/ZNgq+cmMfXFwT5f92+aIq8MvTuIIJMI + krBCjES1iIXXHLKw7aF3b1EC0+alfvtIAfIjK8UhAiTW019VbZ/uyxJbG+XG2ZLxkJPB + QhTQ== +X-Gm-Message-State: AOJu0YxXE6hDpzTCrR02q/+ia8kFUD/3VJLYeldwCaUAM/ZjNFiglRSk + N+4b2ozl4hRwo7qO57OeOxowm5MFBDGdy9h+8WGPjQ== +X-Google-Smtp-Source: + AGHT+IEjnpgei2u9GBHpMxAqISqdKlCrvD572cRfntnploYm1RPfc2ermsDOfWBp72z4zSgZo07dRw== +X-Received: by 2002:a05:6a00:1817:b0:68e:3616:604a with SMTP id + y23-20020a056a00181700b0068e3616604amr11976822pfa.8.1698044635168; + Mon, 23 Oct 2023 00:03:55 -0700 (PDT) +Received: from sjg1.roam.corp.google.com ([202.144.206.130]) + by smtp.gmail.com with ESMTPSA id + u187-20020a6279c4000000b006bde8e1f0adsm5910841pfc.98.2023.10.23.00.03.52 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Mon, 23 Oct 2023 00:03:54 -0700 (PDT) +From: Simon Glass +To: U-Boot Mailing List +Cc: Heinrich Schuchardt , + Guillaume Gardet , Tom Rini , + Simon Glass +Subject: [PATCH 3/4] bootstd: Correct logic for single uclass +Date: Mon, 23 Oct 2023 00:02:12 -0700 +Message-ID: + <20231023000211.3.Icefe7db8f3c1ddc3624f95ca5dc89b81ef97eab4@changeid> +X-Mailer: git-send-email 2.42.0.655.g421f12c284-goog +In-Reply-To: <20231023070216.394709-1-sjg@chromium.org> +References: <20231023070216.394709-1-sjg@chromium.org> +MIME-Version: 1.0 +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 current logic for "bootflow mmc" is flawed since it checks the +uclass of the bootdev instead of its parent, the media device. Correct +this and add a test that covers this scenario. + +Signed-off-by: Simon Glass +--- + + boot/bootflow.c | 24 ++++++++++++++++++++++-- + test/boot/bootdev.c | 13 +++++++++++++ + 2 files changed, 35 insertions(+), 2 deletions(-) + +diff --git a/boot/bootflow.c b/boot/bootflow.c +index 6ef62e1d1896..7f5b0e942078 100644 +--- a/boot/bootflow.c ++++ b/boot/bootflow.c +@@ -155,6 +155,27 @@ static void bootflow_iter_set_dev(struct bootflow_iter *iter, + } + } + ++/** ++ * scan_next_in_uclass() - Scan for the next bootdev in the same media uclass ++ * ++ * Move through the following bootdevs until we find another in this media ++ * uclass, or run out ++ * ++ * @devp: On entry, the device to check, on exit the new device, or NULL if ++ * there is none ++ */ ++static void scan_next_in_uclass(struct udevice **devp) ++{ ++ struct udevice *dev = *devp; ++ enum uclass_id cur_id = device_get_uclass_id(dev->parent); ++ ++ do { ++ uclass_find_next_device(&dev); ++ } while (dev && cur_id != device_get_uclass_id(dev->parent)); ++ ++ *devp = dev; ++} ++ + /** + * iter_incr() - Move to the next item (method, part, bootdev) + * +@@ -230,8 +251,7 @@ static int iter_incr(struct bootflow_iter *iter) + &method_flags); + } else if (IS_ENABLED(CONFIG_BOOTSTD_FULL) && + (iter->flags & BOOTFLOWIF_SINGLE_UCLASS)) { +- /* Move to the next bootdev in this uclass */ +- uclass_find_next_device(&dev); ++ scan_next_in_uclass(&dev); + if (!dev) { + log_debug("finished uclass %s\n", + dev_get_uclass_name(dev)); +diff --git a/test/boot/bootdev.c b/test/boot/bootdev.c +index 7228f545e9e6..637861748057 100644 +--- a/test/boot/bootdev.c ++++ b/test/boot/bootdev.c +@@ -232,6 +232,19 @@ static int bootdev_test_order(struct unit_test_state *uts) + iter.dev_used[2]->name); + bootflow_iter_uninit(&iter); + ++ /* Try a single uclass */ ++ ut_assertok(env_set("boot_targets", NULL)); ++ ut_assertok(bootflow_scan_first(NULL, "mmc", &iter, 0, &bflow)); ++ ut_asserteq(2, iter.num_devs); ++ ++ /* Now scan pass mmc1 and make sure that only mmc0 shows up */ ++ ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow)); ++ ut_asserteq(3, iter.num_devs); ++ ut_asserteq_str("mmc2.bootdev", iter.dev_used[0]->name); ++ ut_asserteq_str("mmc1.bootdev", iter.dev_used[1]->name); ++ ut_asserteq_str("mmc0.bootdev", iter.dev_used[2]->name); ++ bootflow_iter_uninit(&iter); ++ + return 0; + } + BOOTSTD_TEST(bootdev_test_order, UT_TESTF_DM | UT_TESTF_SCAN_FDT); + +From patchwork Mon Oct 23 07:02:13 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 8bit +X-Patchwork-Submitter: Simon Glass +X-Patchwork-Id: 1853516 +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +Authentication-Results: legolas.ozlabs.org; + dkim=pass (1024-bit key; + unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 + header.s=google header.b=g7MVFEGd; + 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 4SDR5C2s5gz202k + for ; Mon, 23 Oct 2023 18:04:31 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 1A36A87880; + Mon, 23 Oct 2023 09:04:04 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=chromium.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; + dkim=pass (1024-bit key; + unprotected) header.d=chromium.org header.i=@chromium.org + header.b="g7MVFEGd"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 2EC9687897; Mon, 23 Oct 2023 09:04:03 +0200 (CEST) +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,DKIMWL_WL_HIGH, + DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, + SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-oi1-x22d.google.com (mail-oi1-x22d.google.com + [IPv6:2607:f8b0:4864:20::22d]) + (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 F1B5887880 + for ; Mon, 23 Oct 2023 09:04:00 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=chromium.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=sjg@chromium.org +Received: by mail-oi1-x22d.google.com with SMTP id + 5614622812f47-3af604c3f8fso2266068b6e.1 + for ; Mon, 23 Oct 2023 00:04:00 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=chromium.org; s=google; t=1698044639; x=1698649439; 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=ZQHdVZoqu6vL//0Rc8e1SX1+2VK3djq3hW1NDOA/VUc=; + b=g7MVFEGdmwlVgYbQvsUlLUH8u5YdqRAZZ7IGvJkKw+t9TgR7CBLAz6FTbcUqCf7ix3 + ka6wz36z3I7e9+8Vu/XxtfjMh+FsE2MmR1pR8WtODlM2rNTfjAL7SzMzFwNNdBolnbaF + YEgrsCKckVERiDmY6ZcR1st7af2v4Zd3IMEjU= +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20230601; t=1698044639; x=1698649439; + 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=ZQHdVZoqu6vL//0Rc8e1SX1+2VK3djq3hW1NDOA/VUc=; + b=dmetYCxcqOdjG06nNcEgNsHTXN2i2yJe2yaTu9+igYWthZh3jBPskXE+lqfItnIeWl + 7Ti/qjE0EfHZfEfg2qVDuxSbj3zUqB8FRtcGV9rNXUn6NCsu3+zbWL03hsVUpc3vryFx + jWRyDrV2iQXJFbTcXuutCHCXNMwcCuHwGgN1nSfK/4Dxxw4T8y/c0y2O8gb1V3cURCB4 + iIUvgFjuI6Cr+EVLkWuTmm292mJryz7Wnj14Gvh1f3kgdWqfDOCJHBmSu2DImC0KGlsU + 5OwVzpagMZfWwuofbsHzRRvhzjEWAFhbwaIB7TeQMQBQfO+eAJ4ItsCll1m4KCusAJtm + fq2w== +X-Gm-Message-State: AOJu0YyL+7DxZXljBQhaS2gWBuhvR5uESsc040WsnLpteLMvL8txONvN + ASxmZ+0rltdSHxuUUw73ZNSNctboaLQkz2ygO4kSZg== +X-Google-Smtp-Source: + AGHT+IEn4DDw7VvfhcVhjZx6AfZZp+iDzM6s6RxSA4wM8oGRbEEwrJxjkMtDfxGtuPQjJkuiEWQW+w== +X-Received: by 2002:a05:6808:4d4:b0:3a7:44da:d5e6 with SMTP id + a20-20020a05680804d400b003a744dad5e6mr9586643oie.38.1698044639506; + Mon, 23 Oct 2023 00:03:59 -0700 (PDT) +Received: from sjg1.roam.corp.google.com ([202.144.206.130]) + by smtp.gmail.com with ESMTPSA id + u187-20020a6279c4000000b006bde8e1f0adsm5910841pfc.98.2023.10.23.00.03.55 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Mon, 23 Oct 2023 00:03:59 -0700 (PDT) +From: Simon Glass +To: U-Boot Mailing List +Cc: Heinrich Schuchardt , + Guillaume Gardet , Tom Rini , + Simon Glass , Date Huang , + =?utf-8?q?Vincent_Stehl=C3=A9?= , + Ivan Ivanov +Subject: [PATCH 4/4] bootstd: Scan all bootdevs in a boot_targets entry (take + 2) +Date: Mon, 23 Oct 2023 00:02:13 -0700 +Message-ID: + <20231023000211.4.Ie4e7ba290d4957a88bebf306ca39f46618d9c363@changeid> +X-Mailer: git-send-email 2.42.0.655.g421f12c284-goog +In-Reply-To: <20231023070216.394709-1-sjg@chromium.org> +References: <20231023070216.394709-1-sjg@chromium.org> +MIME-Version: 1.0 +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 + +When the boot_targets environment variable is used with the distro-boot +scripts, each device is included individually. For example, if there +are three mmc devices, then we will have something like: + + boot_targets="mmc0 mmc1 mmc2" + +In contrast, standard boot supports specifying just the uclass, i.e.: + + boot_targets="mmc" + +The intention is that this should scan all MMC devices, but in fact it +currently only scans the first. + +Update the logic to handle this case, without required BOOTSTD_FULL to +be enabled. + +Signed-off-by: Simon Glass +Reported-by: Date Huang +Reported-by: Vincent Stehlé +Reported-by: Ivan Ivanov +--- + + boot/bootdev-uclass.c | 3 ++- + boot/bootflow.c | 22 ++++++++++++++++++++-- + test/boot/bootdev.c | 32 ++++++++++++++++++++++++++++++-- + 3 files changed, 52 insertions(+), 5 deletions(-) + +diff --git a/boot/bootdev-uclass.c b/boot/bootdev-uclass.c +index 974ddee5d2fa..44ae98a9269c 100644 +--- a/boot/bootdev-uclass.c ++++ b/boot/bootdev-uclass.c +@@ -469,10 +469,11 @@ int bootdev_find_by_label(const char *label, struct udevice **devp, + * if no sequence number was provided, we must scan all + * bootdevs for this media uclass + */ +- if (IS_ENABLED(CONFIG_BOOTSTD_FULL) && seq == -1) ++ if (seq == -1) + method_flags |= BOOTFLOW_METHF_SINGLE_UCLASS; + if (method_flagsp) + *method_flagsp = method_flags; ++ log_debug("method flags %x\n", method_flags); + return 0; + } + log_debug("- no device in %s\n", media->name); +diff --git a/boot/bootflow.c b/boot/bootflow.c +index 7f5b0e942078..be543c8588cc 100644 +--- a/boot/bootflow.c ++++ b/boot/bootflow.c +@@ -280,8 +280,26 @@ static int iter_incr(struct bootflow_iter *iter) + } else { + log_debug("labels %p\n", iter->labels); + if (iter->labels) { +- ret = bootdev_next_label(iter, &dev, +- &method_flags); ++ /* ++ * when the label is "mmc" we want to scan all ++ * mmc bootdevs, not just the first. See ++ * bootdev_find_by_label() where this flag is ++ * set up ++ */ ++ if (iter->method_flags & ++ BOOTFLOW_METHF_SINGLE_UCLASS) { ++ scan_next_in_uclass(&dev); ++ log_debug("looking for next device %s: %s\n", ++ iter->dev->name, ++ dev ? dev->name : ""); ++ } else { ++ dev = NULL; ++ } ++ if (!dev) { ++ log_debug("looking at next label\n"); ++ ret = bootdev_next_label(iter, &dev, ++ &method_flags); ++ } + } else { + ret = bootdev_next_prio(iter, &dev); + method_flags = 0; +diff --git a/test/boot/bootdev.c b/test/boot/bootdev.c +index 637861748057..0702fccdae60 100644 +--- a/test/boot/bootdev.c ++++ b/test/boot/bootdev.c +@@ -225,7 +225,7 @@ static int bootdev_test_order(struct unit_test_state *uts) + ut_assertok(env_set("boot_targets", "mmc1 mmc2 usb")); + ut_assertok(bootflow_scan_first(NULL, NULL, &iter, 0, &bflow)); + ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow)); +- ut_asserteq(3, iter.num_devs); ++ ut_asserteq(5, iter.num_devs); + ut_asserteq_str("mmc1.bootdev", iter.dev_used[0]->name); + ut_asserteq_str("mmc2.bootdev", iter.dev_used[1]->name); + ut_asserteq_str("usb_mass_storage.lun0.bootdev", +@@ -237,7 +237,20 @@ static int bootdev_test_order(struct unit_test_state *uts) + ut_assertok(bootflow_scan_first(NULL, "mmc", &iter, 0, &bflow)); + ut_asserteq(2, iter.num_devs); + +- /* Now scan pass mmc1 and make sure that only mmc0 shows up */ ++ /* Now scan past mmc1 and make sure that only mmc0 shows up */ ++ ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow)); ++ ut_asserteq(3, iter.num_devs); ++ ut_asserteq_str("mmc2.bootdev", iter.dev_used[0]->name); ++ ut_asserteq_str("mmc1.bootdev", iter.dev_used[1]->name); ++ ut_asserteq_str("mmc0.bootdev", iter.dev_used[2]->name); ++ bootflow_iter_uninit(&iter); ++ ++ /* Try a single uclass with boot_targets */ ++ ut_assertok(env_set("boot_targets", "mmc")); ++ ut_assertok(bootflow_scan_first(NULL, NULL, &iter, 0, &bflow)); ++ ut_asserteq(2, iter.num_devs); ++ ++ /* Now scan past mmc1 and make sure that only mmc0 shows up */ + ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow)); + ut_asserteq(3, iter.num_devs); + ut_asserteq_str("mmc2.bootdev", iter.dev_used[0]->name); +@@ -245,6 +258,21 @@ static int bootdev_test_order(struct unit_test_state *uts) + ut_asserteq_str("mmc0.bootdev", iter.dev_used[2]->name); + bootflow_iter_uninit(&iter); + ++ /* Try a single uclass with boot_targets */ ++ ut_assertok(env_set("boot_targets", "mmc usb")); ++ ut_assertok(bootflow_scan_first(NULL, NULL, &iter, 0, &bflow)); ++ ut_asserteq(2, iter.num_devs); ++ ++ /* Now scan past mmc1 and make sure that the 3 USB devices show up */ ++ ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow)); ++ ut_asserteq(6, iter.num_devs); ++ ut_asserteq_str("mmc2.bootdev", iter.dev_used[0]->name); ++ ut_asserteq_str("mmc1.bootdev", iter.dev_used[1]->name); ++ ut_asserteq_str("mmc0.bootdev", iter.dev_used[2]->name); ++ ut_asserteq_str("usb_mass_storage.lun0.bootdev", ++ iter.dev_used[3]->name); ++ bootflow_iter_uninit(&iter); ++ + return 0; + } + BOOTSTD_TEST(bootdev_test_order, UT_TESTF_DM | UT_TESTF_SCAN_FDT); diff --git a/uboot-tools.spec b/uboot-tools.spec index d4ae06f..931adf6 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2023.10 -Release: 0.7%{?candidate:.%{candidate}}%{?dist} +Release: 0.8%{?candidate:.%{candidate}}%{?dist} Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -16,12 +16,13 @@ ExcludeArch: s390x Source0: https://ftp.denx.de/pub/u-boot/u-boot-%{version}%{?candidate:-%{candidate}}.tar.bz2 Source1: aarch64-boards -Patch1: uefi-Boot-var-automatic-management-for-removable-medias.patch +Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch Patch2: smbios-Simplify-reporting-of-unknown-values.patch Patch3: disable-VBE-by-default.patch Patch4: enable-bootmenu-by-default.patch Patch5: Add-video-damage-tracking.patch -Patch6: bootstd-Scan-all-bootdevs-in-a-boot_targets-entry.patch +Patch6: uefi-Boot-var-automatic-management-for-removable-medias.patch +Patch7: bootstd-Test-and-boot_targets-improvements.patch # Board fixes and enablement # RPi - uses RPI firmware device tree for HAT support @@ -213,6 +214,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Mon Oct 23 2023 Peter Robinson - 2023.10-0.8 +- Further potential upstream fixes + * Mon Oct 02 2023 Peter Robinson - 2023.10-0.7 - Update to 2023.10 GA - Some upstream fixes From f1d098b8a047795f7e510498357361467f618fab Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 31 Oct 2023 11:41:30 +0000 Subject: [PATCH 159/271] Add epoch --- uboot-tools.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 931adf6..4706710 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -7,7 +7,8 @@ Name: uboot-tools Version: 2023.10 -Release: 0.8%{?candidate:.%{candidate}}%{?dist} +Release: 0.9%{?candidate:.%{candidate}}%{?dist} +Epoch: 1 Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ URL: http://www.denx.de/wiki/U-Boot @@ -214,6 +215,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Tue Oct 31 2023 Peter Robinson - 1:2023.10-0.9 +- Rebuild + * Mon Oct 23 2023 Peter Robinson - 2023.10-0.8 - Further potential upstream fixes From 69521310e4200bb293a5a3cafa30926a9caa4885 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Fri, 24 Nov 2023 17:34:22 +0000 Subject: [PATCH 160/271] 2024.01 RC3 --- ...Simplify-reporting-of-unknown-values.patch | 115 ++++ ...to-the-default-DT-if-sysinfo-nodes-a.patch | 242 ++++++++ ...Simplify-reporting-of-unknown-values.patch | 544 ------------------ sources | 2 +- uboot-tools.spec | 20 +- 5 files changed, 370 insertions(+), 553 deletions(-) create mode 100644 0001-smbios-Simplify-reporting-of-unknown-values.patch create mode 100644 0002-smbios-Fallback-to-the-default-DT-if-sysinfo-nodes-a.patch delete mode 100644 smbios-Simplify-reporting-of-unknown-values.patch diff --git a/0001-smbios-Simplify-reporting-of-unknown-values.patch b/0001-smbios-Simplify-reporting-of-unknown-values.patch new file mode 100644 index 0000000..6fd5dde --- /dev/null +++ b/0001-smbios-Simplify-reporting-of-unknown-values.patch @@ -0,0 +1,115 @@ +From 6eb1fce7ca692b211ca467040cfe25a750ecc0fe Mon Sep 17 00:00:00 2001 +From: Ilias Apalodimas +Date: Tue, 6 Sep 2022 16:44:25 +0300 +Subject: [PATCH 1/2] smbios: Simplify reporting of unknown values + +If a value is not valid during the DT or SYSINFO parsing, we explicitly +set that to "Unknown Product" and "Unknown" for the product and +manufacturer respectively. It's cleaner if we move the checks insisde +smbios_add_string() and always report "Unknown" regardless of the missing +field. + +pre-patch dmidecode + +Handle 0x0001, DMI type 1, 27 bytes +System Information + Manufacturer: Unknown + Product Name: Unknown Product + Version: Not Specified + Serial Number: Not Specified + UUID: Not Settable + Wake-up Type: Reserved + SKU Number: Not Specified + Family: Not Specified + +[...] + +post-patch dmidecode: + +Handle 0x0001, DMI type 1, 27 bytes +System Information + Manufacturer: Unknown + Product Name: Unknown + Version: Unknown + Serial Number: Unknown + UUID: Not Settable + Wake-up Type: Reserved + SKU Number: Unknown + Family: Unknown +[...] + +Signed-off-by: Ilias Apalodimas +Reviewed-by: Peter Robinson +Tested-by: Peter Robinson +--- + lib/smbios.c | 17 +++-------------- + 1 file changed, 3 insertions(+), 14 deletions(-) + +diff --git a/lib/smbios.c b/lib/smbios.c +index d7f4999e8b2a..fcc8686993ef 100644 +--- a/lib/smbios.c ++++ b/lib/smbios.c +@@ -102,7 +102,7 @@ static int smbios_add_string(struct smbios_ctx *ctx, const char *str) + int i = 1; + char *p = ctx->eos; + +- if (!*str) ++ if (!str || !*str) + str = "Unknown"; + + for (;;) { +@@ -151,8 +151,7 @@ static int smbios_add_prop_si(struct smbios_ctx *ctx, const char *prop, + const char *str; + + str = ofnode_read_string(ctx->node, prop); +- if (str) +- return smbios_add_string(ctx, str); ++ return smbios_add_string(ctx, str); + } + + return 0; +@@ -231,7 +230,7 @@ static int smbios_write_type0(ulong *current, int handle, + t->vendor = smbios_add_string(ctx, "U-Boot"); + + t->bios_ver = smbios_add_prop(ctx, "version"); +- if (!t->bios_ver) ++ if (!strcmp(ctx->last_str, "Unknown")) + t->bios_ver = smbios_add_string(ctx, PLAIN_VERSION); + if (t->bios_ver) + gd->smbios_version = ctx->last_str; +@@ -281,11 +280,7 @@ static int smbios_write_type1(ulong *current, int handle, + fill_smbios_header(t, SMBIOS_SYSTEM_INFORMATION, len, handle); + smbios_set_eos(ctx, t->eos); + t->manufacturer = smbios_add_prop(ctx, "manufacturer"); +- if (!t->manufacturer) +- t->manufacturer = smbios_add_string(ctx, "Unknown"); + t->product_name = smbios_add_prop(ctx, "product"); +- if (!t->product_name) +- t->product_name = smbios_add_string(ctx, "Unknown Product"); + t->version = smbios_add_prop_si(ctx, "version", + SYSINFO_ID_SMBIOS_SYSTEM_VERSION); + if (serial_str) { +@@ -315,11 +310,7 @@ static int smbios_write_type2(ulong *current, int handle, + fill_smbios_header(t, SMBIOS_BOARD_INFORMATION, len, handle); + smbios_set_eos(ctx, t->eos); + t->manufacturer = smbios_add_prop(ctx, "manufacturer"); +- if (!t->manufacturer) +- t->manufacturer = smbios_add_string(ctx, "Unknown"); + t->product_name = smbios_add_prop(ctx, "product"); +- if (!t->product_name) +- t->product_name = smbios_add_string(ctx, "Unknown Product"); + t->version = smbios_add_prop_si(ctx, "version", + SYSINFO_ID_SMBIOS_BASEBOARD_VERSION); + t->asset_tag_number = smbios_add_prop(ctx, "asset-tag"); +@@ -344,8 +335,6 @@ static int smbios_write_type3(ulong *current, int handle, + fill_smbios_header(t, SMBIOS_SYSTEM_ENCLOSURE, len, handle); + smbios_set_eos(ctx, t->eos); + t->manufacturer = smbios_add_prop(ctx, "manufacturer"); +- if (!t->manufacturer) +- t->manufacturer = smbios_add_string(ctx, "Unknown"); + t->chassis_type = SMBIOS_ENCLOSURE_DESKTOP; + t->bootup_state = SMBIOS_STATE_SAFE; + t->power_supply_state = SMBIOS_STATE_SAFE; +-- +2.40.1 + diff --git a/0002-smbios-Fallback-to-the-default-DT-if-sysinfo-nodes-a.patch b/0002-smbios-Fallback-to-the-default-DT-if-sysinfo-nodes-a.patch new file mode 100644 index 0000000..a256b9b --- /dev/null +++ b/0002-smbios-Fallback-to-the-default-DT-if-sysinfo-nodes-a.patch @@ -0,0 +1,242 @@ +From ed67997890981fda4f859cb96e523a0ec5b58042 Mon Sep 17 00:00:00 2001 +From: Ilias Apalodimas +Date: Tue, 6 Sep 2022 16:44:26 +0300 +Subject: [PATCH 2/2] smbios: Fallback to the default DT if sysinfo nodes are + missing + +In order to fill in the SMBIOS tables U-Boot currently relies on a +"u-boot,sysinfo-smbios" compatible node. This is fine for the boards +that already include such nodes. However with some recent EFI changes, +the majority of boards can boot up distros, which usually rely on +things like dmidecode etc for their reporting. For boards that +lack this special node the SMBIOS output looks like: + +System Information + Manufacturer: Unknown + Product Name: Unknown + Version: Unknown + Serial Number: Unknown + UUID: Not Settable + Wake-up Type: Reserved + SKU Number: Unknown + Family: Unknown + +This looks problematic since most of the info are "Unknown". The DT spec +specifies standard properties containing relevant information like +'model' and 'compatible' for which the suggested format is +. So let's add a last resort to our current +smbios parsing. If none of the sysinfo properties are found, we can +scan the root node for 'model' and 'compatible'. + +pre-patch dmidecode: + +Handle 0x0001, DMI type 1, 27 bytes +System Information + Manufacturer: Unknown + Product Name: Unknown + Version: Unknown + Serial Number: Unknown + UUID: Not Settable + Wake-up Type: Reserved + SKU Number: Unknown + Family: Unknown + +Handle 0x0002, DMI type 2, 14 bytes +Base Board Information + Manufacturer: Unknown + Product Name: Unknown + Version: Unknown + Serial Number: Not Specified + Asset Tag: Unknown + Features: + Board is a hosting board + Location In Chassis: Not Specified + Chassis Handle: 0x0000 + Type: Motherboard + +Handle 0x0003, DMI type 3, 21 bytes +Chassis Information + Manufacturer: Unknown + Type: Desktop + Lock: Not Present + Version: Not Specified + Serial Number: Not Specified + Asset Tag: Not Specified + Boot-up State: Safe + Power Supply State: Safe + Thermal State: Safe + Security Status: None + OEM Information: 0x00000000 + Height: Unspecified + Number Of Power Cords: Unspecified + Contained Elements: 0 + + +post-pastch dmidecode: + +Handle 0x0001, DMI type 1, 27 bytes +System Information + Manufacturer: socionext,developer-box + Product Name: Socionext Developer Box + Version: Unknown + Serial Number: Unknown + UUID: Not Settable + Wake-up Type: Reserved + SKU Number: Unknown + Family: Unknown + +Handle 0x0002, DMI type 2, 14 bytes +Base Board Information + Manufacturer: socionext,developer-box + Product Name: Socionext Developer Box + Version: Unknown + Serial Number: Not Specified + Asset Tag: Unknown + Features: + Board is a hosting board + Location In Chassis: Not Specified + Chassis Handle: 0x0000 + Type: Motherboard + +Handle 0x0003, DMI type 3, 21 bytes +Chassis Information + Manufacturer: socionext,developer-box + Type: Desktop + Lock: Not Present + Version: Not Specified + Serial Number: Not Specified + Asset Tag: Not Specified + Boot-up State: Safe + Power Supply State: Safe + Thermal State: Safe + Security Status: None + OEM Information: 0x00000000 + Height: Unspecified + Number Of Power Cords: Unspecified + Contained Elements: 0 + + +Signed-off-by: Ilias Apalodimas +Reviewed-by: Peter Robinson +Tested-by: Peter Robinson +--- + lib/smbios.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 64 insertions(+), 4 deletions(-) + +diff --git a/lib/smbios.c b/lib/smbios.c +index fcc8686993ef..9c8e34625e65 100644 +--- a/lib/smbios.c ++++ b/lib/smbios.c +@@ -9,11 +9,13 @@ + #include + #include + #include ++#include + #include + #include + #include + #include + #include ++#include + #ifdef CONFIG_CPU + #include + #include +@@ -43,6 +45,25 @@ + + DECLARE_GLOBAL_DATA_PTR; + ++/** ++ * struct map_sysinfo - Mapping of sysinfo strings to DT ++ * ++ * @sysinfo_str: sysinfo string ++ * @dt_str: DT string ++ * @max: Max index of the tokenized string to pick. First element is 0 ++ * ++ */ ++struct map_sysinfo { ++ const char *sysinfo_str; ++ const char *dt_str; ++ int max; ++}; ++ ++static const struct map_sysinfo sysinfo_to_dt[] = { ++ { .sysinfo_str = "product", .dt_str = "model", 1 }, ++ { .sysinfo_str = "manufacturer", .dt_str = "compatible", 0 }, ++}; ++ + /** + * struct smbios_ctx - context for writing SMBIOS tables + * +@@ -87,6 +108,18 @@ struct smbios_write_method { + const char *subnode_name; + }; + ++static const struct map_sysinfo *convert_sysinfo_to_dt(const char *sysinfo_str) ++{ ++ int i; ++ ++ for (i = 0; i < ARRAY_SIZE(sysinfo_to_dt); i++) { ++ if (!strcmp(sysinfo_str, sysinfo_to_dt[i].sysinfo_str)) ++ return &sysinfo_to_dt[i]; ++ } ++ ++ return NULL; ++} ++ + /** + * smbios_add_string() - add a string to the string area + * +@@ -139,19 +172,46 @@ static int smbios_add_string(struct smbios_ctx *ctx, const char *str) + static int smbios_add_prop_si(struct smbios_ctx *ctx, const char *prop, + int sysinfo_id) + { ++ int ret = 0; ++ + if (sysinfo_id && ctx->dev) { + char val[SMBIOS_STR_MAX]; +- int ret; + + ret = sysinfo_get_str(ctx->dev, sysinfo_id, sizeof(val), val); + if (!ret) + return smbios_add_string(ctx, val); + } ++ + if (IS_ENABLED(CONFIG_OF_CONTROL)) { +- const char *str; ++ const char *str = NULL; ++ char str_tmp[128]; ++ char *token; + +- str = ofnode_read_string(ctx->node, prop); +- return smbios_add_string(ctx, str); ++ /* ++ * If the node is not valid fallback and try the entire DT ++ * so we can at least fill in maufacturer and board type ++ */ ++ if (!ofnode_valid(ctx->node)) { ++ const struct map_sysinfo *nprop; ++ ++ nprop = convert_sysinfo_to_dt(prop); ++ if (nprop) { ++ int cnt = 0; ++ ++ str = ofnode_read_string(ofnode_root(), nprop->dt_str); ++ strncpy(str_tmp, str, sizeof(str_tmp)); ++ token = strtok(str_tmp, ","); ++ while (token != NULL && cnt <= nprop->max) { ++ str = token; ++ token = strtok(NULL, ","); ++ cnt++; ++ } ++ } ++ } else { ++ str = ofnode_read_string(ctx->node, prop); ++ } ++ ret = smbios_add_string(ctx, str); ++ return ret; + } + + return 0; +-- +2.40.1 + diff --git a/smbios-Simplify-reporting-of-unknown-values.patch b/smbios-Simplify-reporting-of-unknown-values.patch deleted file mode 100644 index 0aef8e7..0000000 --- a/smbios-Simplify-reporting-of-unknown-values.patch +++ /dev/null @@ -1,544 +0,0 @@ -From patchwork Tue Sep 6 13:44:25 2022 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Ilias Apalodimas -X-Patchwork-Id: 1674857 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -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=) -Authentication-Results: legolas.ozlabs.org; - dkim=pass (2048-bit key; - unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 - header.s=google header.b=wUY2RcfH; - dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature ECDSA (P-384)) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4MMRT72TCPz1yhd - for ; Tue, 6 Sep 2022 23:44:43 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 498F2849CE; - Tue, 6 Sep 2022 15:44:39 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -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=linaro.org header.i=@linaro.org header.b="wUY2RcfH"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id A8842849CF; Tue, 6 Sep 2022 15:44:37 +0200 (CEST) -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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com - [IPv6:2a00:1450:4864:20::52d]) - (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 403A5849AA - for ; Tue, 6 Sep 2022 15:44:35 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=ilias.apalodimas@linaro.org -Received: by mail-ed1-x52d.google.com with SMTP id x73so8243364ede.10 - for ; Tue, 06 Sep 2022 06:44:35 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; - h=content-transfer-encoding:mime-version:message-id:date:subject:cc - :to:from:from:to:cc:subject:date; - bh=YBbhuTYZcGSI4FSsstTIADofj6ZEC8vsTpd/U8gWDlU=; - b=wUY2RcfHqhMQ1dgd2my7jtmfsgHjAF8xFa3HnTkB/tUGQL/oQyls7ODcVui/VImHlf - Ah33xwYqK1nwEuoS8HqkWcksTr48pKf/EikkkBbHif0XnfS4oySI3RHo7WW6Yi8HQUoP - tbuQ3LPSYgo+62HaqTYVoJ2g6jc1qiEFe/+y6hR2BfmyKd0g/SxwLS9P1QuQosdhX+uO - DKWWukFYFV06Nn7x/3oiyoXq33VAWatgQBv/sPC7dBgh/EpnobDpI8NhNhJAkFIcAUrU - B91PBwNRtB1Lsf+Eo3WjLtQbinL3h/VvogRSvZEoKCmHY5dbTYB8G1uNzksnK6QecIRu - q9qA== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20210112; - h=content-transfer-encoding:mime-version:message-id:date:subject:cc - :to:from:x-gm-message-state:from:to:cc:subject:date; - bh=YBbhuTYZcGSI4FSsstTIADofj6ZEC8vsTpd/U8gWDlU=; - b=KfQ/P0sYI7szdfgs6GA5oPXctzQ8yfxjRs7PgVHFg7jl09SeFl3jpKzaMGbC7GlEgM - JXt2VP6w9TndL/D71cR8w9BObY2mZJoLRP/s25LpSU6izkisnuueyGeqKegGEfGE+4B3 - 9xaG/EUlPZmHlAem6bOf9Dl6lE5WkT6SnTDopwODIbcTAWlIa8Gjtw9XBaaa8iRnVuTn - S3IwY9R7DLaSFBQXTVHmAYnhCc2b5XCRKlSNwmDE65+LqvOdAu3MTbA5/YyL9pEPjHi9 - 4q0ZQksAE0olpQQwxyjHrvz7h7ktSuJoesa/A4dX3PEbzSbBmPI1CGtPy27/luAUCH3F - e8Vw== -X-Gm-Message-State: ACgBeo2YRons+T+T1+BdP4+uyEFge3LrQ/gS2VYwuVZg325XGZ8HVnXH - Lq8no+qriMaFPrto6+L889ufiYLHsm+dZQ== -X-Google-Smtp-Source: - AA6agR6coLdFIB45xwZJzpltd9Qfi6bEAn6J22G77ibwSDNyt1L1YbxRL9dlK4pmf9A6n2RN31Ug2w== -X-Received: by 2002:aa7:c84f:0:b0:446:2bfb:5a63 with SMTP id - g15-20020aa7c84f000000b004462bfb5a63mr17498596edt.172.1662471874779; - Tue, 06 Sep 2022 06:44:34 -0700 (PDT) -Received: from localhost.localdomain ([46.103.15.185]) - by smtp.gmail.com with ESMTPSA id - p23-20020a056402501700b0043ba7df7a42sm8473330eda.26.2022.09.06.06.44.33 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Tue, 06 Sep 2022 06:44:34 -0700 (PDT) -From: Ilias Apalodimas -To: u-boot@lists.denx.de -Cc: trini@konsulko.com, sjg@chromium.org, heinrich.schuchardt@canonical.com, - pbrobinson@gmail.com, Ilias Apalodimas -Subject: [PATCH 1/2] smbios: Simplify reporting of unknown values -Date: Tue, 6 Sep 2022 16:44:25 +0300 -Message-Id: <20220906134426.53748-1-ilias.apalodimas@linaro.org> -X-Mailer: git-send-email 2.37.2 -MIME-Version: 1.0 -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.6 at phobos.denx.de -X-Virus-Status: Clean - -If a value is not valid during the DT or SYSINFO parsing, we explicitly -set that to "Unknown Product" and "Unknown" for the product and -manufacturer respectively. It's cleaner if we move the checks insisde -smbios_add_string() and always report "Unknown" regardless of the missing -field. - -pre-patch dmidecode - -Handle 0x0001, DMI type 1, 27 bytes -System Information - Manufacturer: Unknown - Product Name: Unknown Product - Version: Not Specified - Serial Number: Not Specified - UUID: Not Settable - Wake-up Type: Reserved - SKU Number: Not Specified - Family: Not Specified - -Handle 0x0002, DMI type 2, 14 bytes -Base Board Information - Manufacturer: Unknown - Product Name: Unknown Product - Version: Not Specified - Serial Number: Not Specified - Asset Tag: Not Specified - Features: - Board is a hosting board - Location In Chassis: Not Specified - Chassis Handle: 0x0000 - Type: Motherboard - - -post-patch dmidecode: - -Handle 0x0001, DMI type 1, 27 bytes -System Information - Manufacturer: Unknown - Product Name: Unknown - Version: Unknown - Serial Number: Unknown - UUID: Not Settable - Wake-up Type: Reserved - SKU Number: Unknown - Family: Unknown - -Handle 0x0002, DMI type 2, 14 bytes -Base Board Information - Manufacturer: Unknown - Product Name: Unknown - Version: Unknown - Serial Number: Not Specified - Asset Tag: Unknown - Features: - Board is a hosting board - Location In Chassis: Not Specified - Chassis Handle: 0x0000 - Type: Motherboard - -Signed-off-by: Ilias Apalodimas ---- - lib/smbios.c | 17 +++-------------- - 1 file changed, 3 insertions(+), 14 deletions(-) - -diff --git a/lib/smbios.c b/lib/smbios.c -index d7f4999e8b2a..fcc8686993ef 100644 ---- a/lib/smbios.c -+++ b/lib/smbios.c -@@ -102,7 +102,7 @@ static int smbios_add_string(struct smbios_ctx *ctx, const char *str) - int i = 1; - char *p = ctx->eos; - -- if (!*str) -+ if (!str || !*str) - str = "Unknown"; - - for (;;) { -@@ -151,8 +151,7 @@ static int smbios_add_prop_si(struct smbios_ctx *ctx, const char *prop, - const char *str; - - str = ofnode_read_string(ctx->node, prop); -- if (str) -- return smbios_add_string(ctx, str); -+ return smbios_add_string(ctx, str); - } - - return 0; -@@ -231,7 +230,7 @@ static int smbios_write_type0(ulong *current, int handle, - t->vendor = smbios_add_string(ctx, "U-Boot"); - - t->bios_ver = smbios_add_prop(ctx, "version"); -- if (!t->bios_ver) -+ if (!strcmp(ctx->last_str, "Unknown")) - t->bios_ver = smbios_add_string(ctx, PLAIN_VERSION); - if (t->bios_ver) - gd->smbios_version = ctx->last_str; -@@ -281,11 +280,7 @@ static int smbios_write_type1(ulong *current, int handle, - fill_smbios_header(t, SMBIOS_SYSTEM_INFORMATION, len, handle); - smbios_set_eos(ctx, t->eos); - t->manufacturer = smbios_add_prop(ctx, "manufacturer"); -- if (!t->manufacturer) -- t->manufacturer = smbios_add_string(ctx, "Unknown"); - t->product_name = smbios_add_prop(ctx, "product"); -- if (!t->product_name) -- t->product_name = smbios_add_string(ctx, "Unknown Product"); - t->version = smbios_add_prop_si(ctx, "version", - SYSINFO_ID_SMBIOS_SYSTEM_VERSION); - if (serial_str) { -@@ -315,11 +310,7 @@ static int smbios_write_type2(ulong *current, int handle, - fill_smbios_header(t, SMBIOS_BOARD_INFORMATION, len, handle); - smbios_set_eos(ctx, t->eos); - t->manufacturer = smbios_add_prop(ctx, "manufacturer"); -- if (!t->manufacturer) -- t->manufacturer = smbios_add_string(ctx, "Unknown"); - t->product_name = smbios_add_prop(ctx, "product"); -- if (!t->product_name) -- t->product_name = smbios_add_string(ctx, "Unknown Product"); - t->version = smbios_add_prop_si(ctx, "version", - SYSINFO_ID_SMBIOS_BASEBOARD_VERSION); - t->asset_tag_number = smbios_add_prop(ctx, "asset-tag"); -@@ -344,8 +335,6 @@ static int smbios_write_type3(ulong *current, int handle, - fill_smbios_header(t, SMBIOS_SYSTEM_ENCLOSURE, len, handle); - smbios_set_eos(ctx, t->eos); - t->manufacturer = smbios_add_prop(ctx, "manufacturer"); -- if (!t->manufacturer) -- t->manufacturer = smbios_add_string(ctx, "Unknown"); - t->chassis_type = SMBIOS_ENCLOSURE_DESKTOP; - t->bootup_state = SMBIOS_STATE_SAFE; - t->power_supply_state = SMBIOS_STATE_SAFE; - -From patchwork Tue Sep 6 13:44:26 2022 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Ilias Apalodimas -X-Patchwork-Id: 1674858 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -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=) -Authentication-Results: legolas.ozlabs.org; - dkim=pass (2048-bit key; - unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 - header.s=google header.b=wBCOiKYw; - dkim-atps=neutral -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature ECDSA (P-384)) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4MMRTM5pHRz1yhk - for ; Tue, 6 Sep 2022 23:44:55 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 3639F849EA; - Tue, 6 Sep 2022 15:44:53 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -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=linaro.org header.i=@linaro.org header.b="wBCOiKYw"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id E57FC84A1A; Tue, 6 Sep 2022 15:44:51 +0200 (CEST) -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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com - [IPv6:2a00:1450:4864:20::52f]) - (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 60CD0849AA - for ; Tue, 6 Sep 2022 15:44:49 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=ilias.apalodimas@linaro.org -Received: by mail-ed1-x52f.google.com with SMTP id z21so5172669edi.1 - for ; Tue, 06 Sep 2022 06:44:49 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; - h=content-transfer-encoding:mime-version:references:in-reply-to - :message-id:date:subject:cc:to:from:from:to:cc:subject:date; - bh=KsGBN7dLy4q3TeQQmsDywPtn2m3V5eSK1ppBgO8D3xg=; - b=wBCOiKYwM4mGDZUo6l68tblLVt57cCnO0dlzFPj9+m6cwKXe3agxiM3w4t9T5c822i - vHmFd2F08bUrX81t/h4PDzg0mngbB9Rc9o4i3td1G9Zw6NdmogU7T7gEUyKKcTc80AWl - QbbYgxulWB5Eg2dTQ3tlb2xmb5BU1/X0zl/rOC6l89urohdQtpIJ4XgFlijFlBgxh8XD - aHytniLKGTLlVdJAIobcF9aM/ihpO7LPTDZ4SPCBt4t9+UWGW7vuTPDPDkCRiaaFestv - 9P32ZrGj43CH92zBQtpgZICS0UhzD3oYWJkwsmFbfxddgY5VD5SQi69VzD1CfFOvTGgX - 5HBg== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20210112; - 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; - bh=KsGBN7dLy4q3TeQQmsDywPtn2m3V5eSK1ppBgO8D3xg=; - b=h1yL2aMN8ooI48PrqxwSNjw+MAj6qGtRMJjV8AWmRfv7nVQ97I/cXbauy/NItVEWP0 - eO4WFqVMQO+xyGn1S5w0MXYGVbEpVNxf0gwM7n7Ad+K2E2PDHyu6glGTvcqCW11gPGOJ - uNDyo6pu7OtmOBso2OaL5eMGhw66ZGqQbzlQtO0mhqJf1RtQ9fRduRZrfTzAR9wIrM4Y - qR3iK6b4O97tu0W0SctGf3rCNzI2bDv/zBKRvfSJ6q7s4DhLDxBJyQjySBo0Ee6UIwKc - 5q8zldycF/JfIbqzlJe6DaeoeDbzJ7qLBPvDmxQ7owSV9ftEa8lh/IIdPn13uDL2Bxjz - WLbg== -X-Gm-Message-State: ACgBeo0DsGDn9dDw7GQ5K44iwyXJqKH0pM3NWFxuDlmBNzKLyzH8SEzb - 03ImCopxuD/6oyVtH7ygeEl2Cc6GlNzVNQ== -X-Google-Smtp-Source: - AA6agR6kpp8KIkqO+/pui5Dy7mRTrk+S2U0k99eVOJv3PGkIDZ8H0oqIBypOwW5nogFds0FAjF4TXg== -X-Received: by 2002:a05:6402:f18:b0:44d:9a45:394 with SMTP id - i24-20020a0564020f1800b0044d9a450394mr12375719eda.138.1662471889015; - Tue, 06 Sep 2022 06:44:49 -0700 (PDT) -Received: from localhost.localdomain ([46.103.15.185]) - by smtp.gmail.com with ESMTPSA id - p23-20020a056402501700b0043ba7df7a42sm8473330eda.26.2022.09.06.06.44.48 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Tue, 06 Sep 2022 06:44:48 -0700 (PDT) -From: Ilias Apalodimas -To: u-boot@lists.denx.de -Cc: trini@konsulko.com, sjg@chromium.org, heinrich.schuchardt@canonical.com, - pbrobinson@gmail.com, Ilias Apalodimas -Subject: [PATCH 2/2] smbios: Fallback to the default DT if sysinfo nodes are - missing -Date: Tue, 6 Sep 2022 16:44:26 +0300 -Message-Id: <20220906134426.53748-2-ilias.apalodimas@linaro.org> -X-Mailer: git-send-email 2.37.2 -In-Reply-To: <20220906134426.53748-1-ilias.apalodimas@linaro.org> -References: <20220906134426.53748-1-ilias.apalodimas@linaro.org> -MIME-Version: 1.0 -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.6 at phobos.denx.de -X-Virus-Status: Clean - -In order to fill in the SMBIOS tables U-Boot currently relies on a -"u-boot,sysinfo-smbios" compatible node. This is fine for the boards -that already include such nodes. However with some recent EFI changes, -the majority of boards can boot up distros, which usually rely on -things like dmidecode etc for their reporting. For boards that -lack this special node the SMBIOS output looks like: - -System Information - Manufacturer: Unknown - Product Name: Unknown - Version: Unknown - Serial Number: Unknown - UUID: Not Settable - Wake-up Type: Reserved - SKU Number: Unknown - Family: Unknown - -This looks problematic since most of the info are "Unknown". The DT spec -specifies standard properties containing relevant information like -'model' and 'compatible' for which the suggested format is -. So let's add a last resort to our current -smbios parsing. If none of the sysinfo properties are found, we can -scan the root node for 'model' and 'compatible'. - -pre-patch dmidecode: - -Handle 0x0001, DMI type 1, 27 bytes -System Information - Manufacturer: Unknown - Product Name: Unknown - Version: Unknown - Serial Number: Unknown - UUID: Not Settable - Wake-up Type: Reserved - SKU Number: Unknown - Family: Unknown - -Handle 0x0002, DMI type 2, 14 bytes -Base Board Information - Manufacturer: Unknown - Product Name: Unknown - Version: Unknown - Serial Number: Not Specified - Asset Tag: Unknown - Features: - Board is a hosting board - Location In Chassis: Not Specified - Chassis Handle: 0x0000 - Type: Motherboard - -Handle 0x0003, DMI type 3, 21 bytes -Chassis Information - Manufacturer: Unknown - Type: Desktop - Lock: Not Present - Version: Not Specified - Serial Number: Not Specified - Asset Tag: Not Specified - Boot-up State: Safe - Power Supply State: Safe - Thermal State: Safe - Security Status: None - OEM Information: 0x00000000 - Height: Unspecified - Number Of Power Cords: Unspecified - Contained Elements: 0 - - -post-pastch dmidecode: - -Handle 0x0001, DMI type 1, 27 bytes -System Information - Manufacturer: socionext,developer-box - Product Name: Socionext Developer Box - Version: Unknown - Serial Number: Unknown - UUID: Not Settable - Wake-up Type: Reserved - SKU Number: Unknown - Family: Unknown - -Handle 0x0002, DMI type 2, 14 bytes -Base Board Information - Manufacturer: socionext,developer-box - Product Name: Socionext Developer Box - Version: Unknown - Serial Number: Not Specified - Asset Tag: Unknown - Features: - Board is a hosting board - Location In Chassis: Not Specified - Chassis Handle: 0x0000 - Type: Motherboard - -Handle 0x0003, DMI type 3, 21 bytes -Chassis Information - Manufacturer: socionext,developer-box - Type: Desktop - Lock: Not Present - Version: Not Specified - Serial Number: Not Specified - Asset Tag: Not Specified - Boot-up State: Safe - Power Supply State: Safe - Thermal State: Safe - Security Status: None - OEM Information: 0x00000000 - Height: Unspecified - Number Of Power Cords: Unspecified - Contained Elements: 0 - - -Signed-off-by: Ilias Apalodimas ---- - lib/smbios.c | 41 +++++++++++++++++++++++++++++++++++++++-- - 1 file changed, 39 insertions(+), 2 deletions(-) - -diff --git a/lib/smbios.c b/lib/smbios.c -index fcc8686993ef..f2eb961f514b 100644 ---- a/lib/smbios.c -+++ b/lib/smbios.c -@@ -43,6 +43,20 @@ - - DECLARE_GLOBAL_DATA_PTR; - -+/** -+ * struct sysifno_to_dt - Mapping of sysinfo strings to DT -+ * -+ * @sysinfo_str: sysinfo string -+ * @dt_str: DT string -+ */ -+static const struct { -+ const char *sysinfo_str; -+ const char *dt_str; -+} sysifno_to_dt[] = { -+ { .sysinfo_str = "product", .dt_str = "model" }, -+ { .sysinfo_str = "manufacturer", .dt_str = "compatible" }, -+}; -+ - /** - * struct smbios_ctx - context for writing SMBIOS tables - * -@@ -87,6 +101,18 @@ struct smbios_write_method { - const char *subnode_name; - }; - -+static const char *convert_sysinfo_to_dt(const char *sysinfo_str) -+{ -+ int i; -+ -+ for (i = 0; i < ARRAY_SIZE(sysifno_to_dt); i++) { -+ if (!strcmp(sysinfo_str, sysifno_to_dt[i].sysinfo_str)) -+ return sysifno_to_dt[i].dt_str; -+ } -+ -+ return NULL; -+} -+ - /** - * smbios_add_string() - add a string to the string area - * -@@ -148,9 +174,20 @@ static int smbios_add_prop_si(struct smbios_ctx *ctx, const char *prop, - return smbios_add_string(ctx, val); - } - if (IS_ENABLED(CONFIG_OF_CONTROL)) { -- const char *str; -+ const char *str = NULL; - -- str = ofnode_read_string(ctx->node, prop); -+ /* -+ * If the node is not valid fallback and try the entire DT -+ * so we can at least fill in maufacturer and board type -+ */ -+ if (!ofnode_valid(ctx->node)) { -+ const char *nprop = convert_sysinfo_to_dt(prop); -+ -+ if (nprop) -+ str = ofnode_read_string(ofnode_root(), nprop); -+ } else { -+ str = ofnode_read_string(ctx->node, prop); -+ } - return smbios_add_string(ctx, str); - } - diff --git a/sources b/sources index 1ef8db1..a04670b 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2023.10.tar.bz2) = f238a69b9cc08ee0a69ea8ca2fa26975f2f2ede14e978b4db274b1e4095e43af0052307ac39034658a72ec9706951cd03c0f316d0591f391adecaf2cc9496fc4 +SHA512 (u-boot-2024.01-rc3.tar.bz2) = 51a45e6a0008ef04570b6357518c85fd22604be0090ad5bf1dc7c821eb34ea33441314c49128dd0bd3084406b7138497044bb47f7e57d38a680768fb9f2f6577 diff --git a/uboot-tools.spec b/uboot-tools.spec index 4706710..798f97d 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -#global candidate rc0 +%global candidate rc3 %if 0%{?rhel} %bcond_with toolsonly %else @@ -6,8 +6,8 @@ %endif Name: uboot-tools -Version: 2023.10 -Release: 0.9%{?candidate:.%{candidate}}%{?dist} +Version: 2024.01 +Release: 0.1%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ @@ -18,12 +18,13 @@ Source0: https://ftp.denx.de/pub/u-boot/u-boot-%{version}%{?candidate:-%{candid Source1: aarch64-boards Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch -Patch2: smbios-Simplify-reporting-of-unknown-values.patch -Patch3: disable-VBE-by-default.patch -Patch4: enable-bootmenu-by-default.patch -Patch5: Add-video-damage-tracking.patch +Patch2: disable-VBE-by-default.patch +Patch3: 0001-smbios-Simplify-reporting-of-unknown-values.patch +Patch4: 0002-smbios-Fallback-to-the-default-DT-if-sysinfo-nodes-a.patch +Patch5: enable-bootmenu-by-default.patch Patch6: uefi-Boot-var-automatic-management-for-removable-medias.patch -Patch7: bootstd-Test-and-boot_targets-improvements.patch +#Patch6: Add-video-damage-tracking.patch +#Patch7: bootstd-Test-and-boot_targets-improvements.patch # Board fixes and enablement # RPi - uses RPI firmware device tree for HAT support @@ -215,6 +216,9 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Fri Nov 24 2023 Peter Robinson - 1:2024.01-0.1.rc3 +- Update to 2024.01 RC3 + * Tue Oct 31 2023 Peter Robinson - 1:2023.10-0.9 - Rebuild From 2989b728b025d157b42b6a9c5e6f9664df1a590e Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sat, 25 Nov 2023 09:18:23 +0000 Subject: [PATCH 161/271] Rebase patches for new release --- Add-video-damage-tracking.patch | 2026 ++--------------- ...d-Test-and-boot_targets-improvements.patch | 626 ----- uboot-tools.spec | 3 +- 3 files changed, 150 insertions(+), 2505 deletions(-) delete mode 100644 bootstd-Test-and-boot_targets-improvements.patch diff --git a/Add-video-damage-tracking.patch b/Add-video-damage-tracking.patch index 5e78df8..7ba10f6 100644 --- a/Add-video-damage-tracking.patch +++ b/Add-video-damage-tracking.patch @@ -1,133 +1,8 @@ -From patchwork Mon Aug 21 13:50:58 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Alper Nebi Yasak -X-Patchwork-Id: 1823643 -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=20221208 header.b=jAFdt8C3; - 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 4RTv611rHqz1yg0 - for ; Mon, 21 Aug 2023 23:51:37 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 69F2487066; - Mon, 21 Aug 2023 15:51:29 +0200 (CEST) -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="jAFdt8C3"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 71CEC8706D; Mon, 21 Aug 2023 15:51:28 +0200 (CEST) -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,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 3320B87062 - for ; Mon, 21 Aug 2023 15:51:25 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=alpernebiyasak@gmail.com -Received: by mail-wm1-x32e.google.com with SMTP id - 5b1f17b1804b1-3fef56f7222so2727775e9.2 - for ; Mon, 21 Aug 2023 06:51:25 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=gmail.com; s=20221208; t=1692625884; x=1693230684; - 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=0KM0F1+WkNhDdn0zbbXHFFjqAdCr64hX7QvIzy6/iyI=; - b=jAFdt8C3owZgLvkS3GxcS5N+GiTxn30Z/xJkqzPDEYfC0PDH1kIsDI4pb6eHKAFVBt - PLqr4R9Sdmb05o76fez0U9nTmmv97QjcaeHGc0adZliwf33YdMgotCTaUiHc/nhkpLWw - c8rHP6jWgFPGn5Y45QEtPjQFEuV0nP0SkMONJorI+ci6NUadDN8X0tZNK5GoF1lvhF4o - mQZs5xJfJ6evaIBX7srcue8NUq4BtyhQ18vVYm0nCIPEltA23PBpkcejhCv6g5o/4puI - sgF/+jj8BhBQFKhPEIktVLWcqveScR/ngqiv1iDRHrCL6flPhtCsrpShY+rzilzpJdtC - fkJQ== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20221208; t=1692625884; x=1693230684; - 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=0KM0F1+WkNhDdn0zbbXHFFjqAdCr64hX7QvIzy6/iyI=; - b=gWHm6TE1o6bFZMTHoyWCi4QgdvFQkn06zRip9uOn3HqDzCG7KLnrXsFUdYdugOcadS - yQH0TYQ9YCGnJEItFC8+BAPuij69++YczOI2dzUQz6ejqfjFnTORccJmFginC+ZQynSw - ygcqWBt7iXKWwm2BNaTOS0ZbXxZuQrdebM6QD55CSsB+YnJ/21Q4txo4VOIzT+g2LmU4 - YhR1Ec8+2HGk3w1oWalKPpGcBc3y3y7ADgy/Kt0L4pFhAmBewW+wlGtrTxdoIbRmcMwx - 6xx1bS9ZrdHzFpTAB7myHjowwbIvRmhpNDr1e+ROx71myEhCEhnz0o6tjGmHTmebIiZB - Axiw== -X-Gm-Message-State: AOJu0Yw7o7394U5eAr5ipSyfIWmc1YVzBHdp8jslW0qPlsoIXMjiuI6c - SaZaVpf+ZihLZ51797OE439hQFEZL4o= -X-Google-Smtp-Source: - AGHT+IGiiJu3kdw60kWynu1HizRmCX0l3/hesikD0kGHzt9jbq6D24m4A0InLSpbaBLDcUVjniBVKA== -X-Received: by 2002:a05:600c:3799:b0:3fe:2011:a7ce with SMTP id - o25-20020a05600c379900b003fe2011a7cemr5345546wmr.6.1692625884228; - Mon, 21 Aug 2023 06:51:24 -0700 (PDT) -Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id - r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.22 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Mon, 21 Aug 2023 06:51:23 -0700 (PDT) +From 79c2ed100ee9b901d676567e73ea4ebde84f15bc Mon Sep 17 00:00:00 2001 From: Alper Nebi Yasak -To: u-boot@lists.denx.de -Cc: Kever Yang , - Jagan Teki , - Andre Przywara , - Svyatoslav Ryhel , Alexander Graf , - Philipp Tomsich , Andrew Davis , - Da Xue , Heinrich Schuchardt , - Patrice Chotard , - Patrick Delaunay , - Derald Woods , - Anatolij Gustschin , - uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , - Matthias Brugger , u-boot-amlogic@groups.io, - Ilias Apalodimas , - Neil Armstrong , - Alper Nebi Yasak -Subject: [PATCH v5 01/13] video: test: Split copy frame buffer check into a - function Date: Mon, 21 Aug 2023 16:50:58 +0300 -Message-Id: <20230821135111.3558478-2-alpernebiyasak@gmail.com> -X-Mailer: git-send-email 2.40.1 -In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -MIME-Version: 1.0 -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 +Subject: [PATCH 01/13] video: test: Split copy frame buffer check into a + function While checking frame buffer contents, the video tests also check if the copy frame buffer contents match the main frame buffer. To test if only @@ -137,16 +12,13 @@ function that we can skip calling, since we won't want it to error on those mismatched cases. Signed-off-by: Alper Nebi Yasak +Reviewed-by: Simon Glass --- - -Changes in v5: -- Add patch "video: test: Split copy frame buffer check into a function" - test/dm/video.c | 69 +++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 58 insertions(+), 11 deletions(-) diff --git a/test/dm/video.c b/test/dm/video.c -index d907f681600b..641a6250100a 100644 +index d907f681600..641a6250100 100644 --- a/test/dm/video.c +++ b/test/dm/video.c @@ -55,9 +55,6 @@ DM_TEST(dm_test_video_base, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); @@ -427,138 +299,14 @@ index d907f681600b..641a6250100a 100644 return 0; } +-- +2.43.0 -From patchwork Mon Aug 21 13:50:59 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Alper Nebi Yasak -X-Patchwork-Id: 1823644 -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=20221208 header.b=mYzIbw17; - 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 4RTv6B5sZGz1yYZ - for ; Mon, 21 Aug 2023 23:51:46 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id AD34B8706B; - Mon, 21 Aug 2023 15:51:31 +0200 (CEST) -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="mYzIbw17"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 5EF078707C; Mon, 21 Aug 2023 15:51:30 +0200 (CEST) -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,SPF_HELO_NONE, - SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com - [IPv6:2a00:1450:4864:20::42b]) - (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 8B77787069 - for ; Mon, 21 Aug 2023 15:51:27 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=alpernebiyasak@gmail.com -Received: by mail-wr1-x42b.google.com with SMTP id - ffacd0b85a97d-307d20548adso2907788f8f.0 - for ; Mon, 21 Aug 2023 06:51:27 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=gmail.com; s=20221208; t=1692625887; x=1693230687; - 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=2OB7382go0g6JBjezy6TmzGfi6gIlYCFDFe4xM7HRw8=; - b=mYzIbw17s5ut2Lj8TmUyEmZZuMpoWf/YpZMisLloBGvTOI6o9/p8nP2M17yjk++h8P - 8+GH169jMY+6EuzecVUKktHLjLULhqcSGVgb+K8TH4Z0MkPhLZg6u+23TnjErs5v1VYS - +euy4y8wSAudLGdJHtR26NtBqeJHDFiK6ves/aUe6PVWoPVDofUTUC53I4mvF96uWF8K - NxLW9B5KIoY0T2WpxZUDwabQASQORqw1sA33K5oTD5OvFTS081ZnJT9otEq9+EgTySU5 - e9RQTRRZ1lstBqBTAQHRXPAniy7qhyu+ptlO9RhqLC6R08WOBN8Fwz7r4fVsnuuGMEgm - CatQ== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20221208; t=1692625887; x=1693230687; - 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=2OB7382go0g6JBjezy6TmzGfi6gIlYCFDFe4xM7HRw8=; - b=ChLsD8uyfsbRsBr3u3v4RBW8IRqsNDwAduakdrWkASxSDmmx1fr/AROSBC5feYGGDe - hS2CHTTA7mzZBgx65Trp5EItwl/T+Vp9i6ot9yz9QlTUNNEcPawZEdr+wrwsTgDaxH2v - snQjENvBTKP8nVEyAFqDmM2dOMLBHKEnI/a8MuKKZMuMu9dujekXUR7zTMOWyhTLK6Gc - D8F+qwz8FIhnEGMc1i1LvXmjDCs7delvdWCetg6JqpaHZUQQc6Ru03gSKWXkedKTdHsF - IFdkr4qm3W7Rsy2BwYQZN2XrZO5IuLkQjVOtfryPfMGux/37jUX8zNJ0y+TL8k42PlEC - Xicw== -X-Gm-Message-State: AOJu0YwlYwARbrwNV25POhyWxcoym3cQztI8SjGOeCzdsQys/HqRUQV+ - wqnhOKThUMfcGC8MZ8gLFE2KT2+SxVA= -X-Google-Smtp-Source: - AGHT+IHSYU3/G4dWV8P3egqgpph9YxOl4+mH1vDWUtosphrFiVQk7BNu/zdvNsUiJiU3qzGO9VCxdg== -X-Received: by 2002:a5d:44cf:0:b0:313:f33c:24c4 with SMTP id - z15-20020a5d44cf000000b00313f33c24c4mr4457731wrr.39.1692625886757; - Mon, 21 Aug 2023 06:51:26 -0700 (PDT) -Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id - r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.24 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Mon, 21 Aug 2023 06:51:26 -0700 (PDT) +From eb6a5cd225f0818e5dec2253e0c676142c3835a1 Mon Sep 17 00:00:00 2001 From: Alper Nebi Yasak -To: u-boot@lists.denx.de -Cc: Kever Yang , - Jagan Teki , - Andre Przywara , - Svyatoslav Ryhel , Alexander Graf , - Philipp Tomsich , Andrew Davis , - Da Xue , Heinrich Schuchardt , - Patrice Chotard , - Patrick Delaunay , - Derald Woods , - Anatolij Gustschin , - uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , - Matthias Brugger , u-boot-amlogic@groups.io, - Ilias Apalodimas , - Neil Armstrong , - Alper Nebi Yasak -Subject: [PATCH v5 02/13] video: test: Support checking copy frame buffer - contents Date: Mon, 21 Aug 2023 16:50:59 +0300 -Message-Id: <20230821135111.3558478-3-alpernebiyasak@gmail.com> -X-Mailer: git-send-email 2.40.1 -In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -MIME-Version: 1.0 -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 +Subject: [PATCH 02/13] video: test: Support checking copy frame buffer + contents The video tests have a helper function to generate a pseudo-digest of frame buffer contents, but it only does so for the main one. There is @@ -571,16 +319,13 @@ Add a boolean argument to the existing helper function to indicate which frame buffer we want to inspect, and update the existing callers. Signed-off-by: Alper Nebi Yasak +Reviewed-by: Simon Glass --- - -Changes in v5: -- Add patch "video: test: Support checking copy frame buffer contents" - test/dm/video.c | 76 ++++++++++++++++++++++++++----------------------- 1 file changed, 41 insertions(+), 35 deletions(-) diff --git a/test/dm/video.c b/test/dm/video.c -index 641a6250100a..b9ff3da10c18 100644 +index 641a6250100..b9ff3da10c1 100644 --- a/test/dm/video.c +++ b/test/dm/video.c @@ -57,22 +57,28 @@ DM_TEST(dm_test_video_base, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); @@ -865,137 +610,14 @@ index 641a6250100a..b9ff3da10c18 100644 ut_assertok(check_copy_frame_buffer(uts, dev)); return 0; +-- +2.43.0 -From patchwork Mon Aug 21 13:51:00 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Alper Nebi Yasak -X-Patchwork-Id: 1823645 -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=20221208 header.b=h0nfUUKH; - 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 4RTv6P02TYz1yYZ - for ; Mon, 21 Aug 2023 23:51:56 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id F40E487071; - Mon, 21 Aug 2023 15:51:33 +0200 (CEST) -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="h0nfUUKH"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id EFD6D87069; Mon, 21 Aug 2023 15:51:32 +0200 (CEST) -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,SPF_HELO_NONE, - SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 -Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com - [IPv6:2a00:1450:4864:20::42c]) - (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 0028587074 - for ; Mon, 21 Aug 2023 15:51:29 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=alpernebiyasak@gmail.com -Received: by mail-wr1-x42c.google.com with SMTP id - ffacd0b85a97d-319779f0347so2987491f8f.1 - for ; Mon, 21 Aug 2023 06:51:29 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=gmail.com; s=20221208; t=1692625889; x=1693230689; - 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=Ls20OKhVk8mknnS6GLFBhmTjxLz0/7fKNgK2nzSEs6M=; - b=h0nfUUKHqteSaQqflnkXT9zc90H1nKLTOoG4B78CtKhSKUI/thuMDU61AtN+enWvFJ - MdvU9OW3jOHeg+LRrxur+6+N4V9k4nGhm2BGwtj56A1DDfCLgk5+Vg38dhi1a24kfBH9 - d5w6HXOg3wdMizdTsyL0PbugSX7K9ByL9XKpH646NdsnqcikQNdmT2OeiGAmonEmHXAa - FII1SypkiZ5TOFcJx9N4X2XqMM3CNxyUsDs6+AV4dTPnjtXaElWj1fQcz8bLn/9q88/X - UCvE35N4Y37FFgb+5uTi+00hcLIavYKYrLEpNAclnl9NKFSUAUJyabqQM0+riy1OSMHF - 5YBw== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20221208; t=1692625889; x=1693230689; - 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=Ls20OKhVk8mknnS6GLFBhmTjxLz0/7fKNgK2nzSEs6M=; - b=Gmm/6GKzL921nU50fcXK4FdwCaAc1DVbDj7ilfjHfBXRaw/k3mmUZ/l5nbwGsTUYUU - VX6nd+xFgekVSP5Cns7th6+jnbBBaoaCZUfZYGIhQjEH3JMxxpo17+eNdfCTuo7TjTdl - MtWwxmceukhRiNql2W7VOHfb5CXBxorcXXcy3szcEJOlzxIqqUDQcLjNgoe5d2Kpkv9Y - 6qkNp6XFyfQCMAMGjF68T5eViaLcvFHFIsvmjXlMU7Ohhhm2We4SK9nBsr6gUgyaxmNs - qBLKVZKf+iC9WptVFbXhAML6gJZJo+JQu/tGHHfLf7rm/WT+1VhmDKBgpU1CzA8BRqcG - t+og== -X-Gm-Message-State: AOJu0YxCm+p57uF96KzOW9kggq2KLZimSeriKFH9gpv8fgoy+ddR1X7S - 9HsUigoZFUND3/u7rp+XB9qHn3dcZTU= -X-Google-Smtp-Source: - AGHT+IEwSW6rIF+3ua5ruA0V/p8R0SXlrxBIJRwdiP9dn7nhkL8gMfhxYppZ2c8jWSzauubY8xUVnQ== -X-Received: by 2002:adf:e482:0:b0:31a:dc27:e10 with SMTP id - i2-20020adfe482000000b0031adc270e10mr4721868wrm.65.1692625889315; - Mon, 21 Aug 2023 06:51:29 -0700 (PDT) -Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id - r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.27 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Mon, 21 Aug 2023 06:51:28 -0700 (PDT) +From 4c80b655e5c82acd1573e80668747d8ef25deb83 Mon Sep 17 00:00:00 2001 From: Alper Nebi Yasak -To: u-boot@lists.denx.de -Cc: Kever Yang , - Jagan Teki , - Andre Przywara , - Svyatoslav Ryhel , Alexander Graf , - Philipp Tomsich , Andrew Davis , - Da Xue , Heinrich Schuchardt , - Patrice Chotard , - Patrick Delaunay , - Derald Woods , - Anatolij Gustschin , - uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , - Matthias Brugger , u-boot-amlogic@groups.io, - Ilias Apalodimas , - Neil Armstrong , - Alper Nebi Yasak -Subject: [PATCH v5 03/13] video: test: Test partial updates of hardware frame - buffer Date: Mon, 21 Aug 2023 16:51:00 +0300 -Message-Id: <20230821135111.3558478-4-alpernebiyasak@gmail.com> -X-Mailer: git-send-email 2.40.1 -In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -MIME-Version: 1.0 -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 +Subject: [PATCH 03/13] video: test: Test partial updates of hardware frame + buffer With VIDEO_COPY enabled, only the modified parts of the frame buffer are intended to be copied to the hardware. Add a test that checks this, by @@ -1004,16 +626,13 @@ then checking if the overwritten contents have been redrawn on the next sync. Signed-off-by: Alper Nebi Yasak +Reviewed-by: Simon Glass --- - -Changes in v5: -- Add patch "video: test: Test partial updates of hardware frame buffer" - test/dm/video.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/test/dm/video.c b/test/dm/video.c -index b9ff3da10c18..e4bd27a6b76f 100644 +index b9ff3da10c1..e4bd27a6b76 100644 --- a/test/dm/video.c +++ b/test/dm/video.c @@ -657,3 +657,57 @@ static int dm_test_video_truetype_bs(struct unit_test_state *uts) @@ -1074,138 +693,13 @@ index b9ff3da10c18..e4bd27a6b76f 100644 + return 0; +} +DM_TEST(dm_test_video_copy, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); +-- +2.43.0 -From patchwork Mon Aug 21 13:51:01 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Alper Nebi Yasak -X-Patchwork-Id: 1823647 -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=20221208 header.b=bU3qjQR0; - 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 4RTv6c2SWvz1yYZ - for ; Mon, 21 Aug 2023 23:52:08 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 4441F87070; - Mon, 21 Aug 2023 15:51:36 +0200 (CEST) -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="bU3qjQR0"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 3848287075; Mon, 21 Aug 2023 15:51:35 +0200 (CEST) -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,SPF_HELO_NONE, - SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com - [IPv6:2a00:1450:4864:20::42c]) - (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 841D2869B6 - for ; Mon, 21 Aug 2023 15:51:32 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=alpernebiyasak@gmail.com -Received: by mail-wr1-x42c.google.com with SMTP id - ffacd0b85a97d-31aec0a1a8bso1211537f8f.0 - for ; Mon, 21 Aug 2023 06:51:32 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=gmail.com; s=20221208; t=1692625892; x=1693230692; - 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=edVipA0fXjfO2+yIw/Pp5VvEle3RKuzWiUXEb/KCl5I=; - b=bU3qjQR0xHT3knwMAc4fOHXpeWOGcUonKhClh1IfqxsqOHWeRbIi1W1OtDuPIyv8dX - CyIHX30R+SQr8o+T5xSFf4E4kwRpsqOzh2mXOD3dzuYzJPkreOM5clQMgmyn2JGs+nON - KDztnOSqesV2IvPZqdr61bxJTw/SjXqRXGc7/YkT7OWwlaug26E+DbzP7Xt+plHDVz/9 - 6OB5zFxUapwX0mqxb6jbNAz17TvjQ5qIviNkCRZUZ2vseEB78BwHajxkNCG4jVOaQDON - aJWc+UOFyWJ3jLmQ+cOJgR+J0SoF3VAVYhbYaYviNV2DiaBPLPL9axirby/hW4Kx2waB - YKAg== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20221208; t=1692625892; x=1693230692; - 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=edVipA0fXjfO2+yIw/Pp5VvEle3RKuzWiUXEb/KCl5I=; - b=STc6gYqDRe7JtT56BIezfKTd0PQe87I83hDC5mL+8D0AqUp1RiJPnPt9MWIAVfO63j - plu8RveodelqOd26zWzlFDepTA+jfvcAgOePHLLLx3YiAidxIWD6d0SVlG+zagmUlHzm - HGscQ+3iGYhTHAGxc10UHaQcMlCmyeWecwIjxXBpM85g6puunYrN14aYfsp6E0ODCLMg - 9HAD2Zx5b++HK3yE7Ld6hientRzVXxwURTL5ehSSO2AX95YMagfKaP767VvupWtB18du - 5Lfk0k60qTxe3Xlamnm8bdoRofuIyLLaSZ+0M7lAsEPPsS4QRGn+m7MwI8YTlRIU8wFQ - cYSQ== -X-Gm-Message-State: AOJu0YwPPIi0QLYKGPNa9T+XPhwof7rD3VBA3kfub7MM4xEG6u6r8puq - cSLl/n+w1P2LSAPH1AWswz3SS227DdQ= -X-Google-Smtp-Source: - AGHT+IFAUyNsvOmdhjdIygYhsv/SH6hvXItfwiWsY14vr3nwQ9J7A0Q0Y71M8WvaFJdxn7mmOeZlrg== -X-Received: by 2002:a5d:44c8:0:b0:317:e9d7:9387 with SMTP id - z8-20020a5d44c8000000b00317e9d79387mr7196865wrr.25.1692625891911; - Mon, 21 Aug 2023 06:51:31 -0700 (PDT) -Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id - r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.30 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Mon, 21 Aug 2023 06:51:31 -0700 (PDT) -From: Alper Nebi Yasak -To: u-boot@lists.denx.de -Cc: Kever Yang , - Jagan Teki , - Andre Przywara , - Svyatoslav Ryhel , Alexander Graf , - Philipp Tomsich , Andrew Davis , - Da Xue , Heinrich Schuchardt , - Patrice Chotard , - Patrick Delaunay , - Derald Woods , - Anatolij Gustschin , - uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , - Matthias Brugger , u-boot-amlogic@groups.io, - Ilias Apalodimas , - Neil Armstrong , - Alper Nebi Yasak -Subject: [PATCH v5 04/13] dm: video: Add damage tracking API -Date: Mon, 21 Aug 2023 16:51:01 +0300 -Message-Id: <20230821135111.3558478-5-alpernebiyasak@gmail.com> -X-Mailer: git-send-email 2.40.1 -In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -MIME-Version: 1.0 -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 - +From 40f4addde7e05ce94fb74cd7d6795265ad282de6 Mon Sep 17 00:00:00 2001 From: Alexander Graf +Date: Mon, 21 Aug 2023 16:51:01 +0300 +Subject: [PATCH 04/13] dm: video: Add damage tracking API We are going to introduce image damage tracking to fasten up screen refresh on large displays. This patch adds damage tracking for up to @@ -1219,34 +713,15 @@ Reported-by: Da Xue video_damage(), declare priv, drop headers, use IS_ENABLED()] Co-developed-by: Alper Nebi Yasak Signed-off-by: Alper Nebi Yasak +Reviewed-by: Simon Glass --- - -Changes in v5: -- Use xstart, ystart, xend, yend as names for damage region -- Document damage struct and fields in struct video_priv comment -- Return void from video_damage() -- Fix undeclared priv error in video_sync() -- Drop unused headers from video-uclass.c -- Use IS_ENABLED() instead of CONFIG_IS_ENABLED() - -Changes in v4: -- Move damage clear to patch "dm: video: Add damage tracking API" -- Simplify first damage logic -- Remove VIDEO_DAMAGE default for ARM - -Changes in v3: -- Adapt to always assume DM is used - -Changes in v2: -- Remove ifdefs - drivers/video/Kconfig | 13 ++++++++++++ drivers/video/video-uclass.c | 41 +++++++++++++++++++++++++++++++++--- include/video.h | 32 ++++++++++++++++++++++++++-- 3 files changed, 81 insertions(+), 5 deletions(-) diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig -index fe43fbd7004a..97f494a1340b 100644 +index ab927641bb7..ac3edbfdb54 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig @@ -92,6 +92,19 @@ config VIDEO_COPY @@ -1270,7 +745,7 @@ index fe43fbd7004a..97f494a1340b 100644 bool "Generic PWM based Backlight Driver" depends on BACKLIGHT && DM_PWM diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c -index 8f268fc4063f..447689581668 100644 +index f743ed74c81..9888a580bfd 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c @@ -351,9 +351,39 @@ void video_set_default_colors(struct udevice *dev, bool invert) @@ -1345,10 +820,10 @@ index 8f268fc4063f..447689581668 100644 } diff --git a/include/video.h b/include/video.h -index 66d109ca5da6..a522f33949e5 100644 +index 4d8df9baaad..1310195f307 100644 --- a/include/video.h +++ b/include/video.h -@@ -85,6 +85,11 @@ enum video_format { +@@ -88,6 +88,11 @@ enum video_format { * @fb_size: Frame buffer size * @copy_fb: Copy of the frame buffer to keep up to date; see struct * video_uc_plat @@ -1360,7 +835,7 @@ index 66d109ca5da6..a522f33949e5 100644 * @line_length: Length of each frame buffer line, in bytes. This can be * set by the driver, but if not, the uclass will set it after * probing -@@ -112,6 +117,12 @@ struct video_priv { +@@ -115,6 +120,12 @@ struct video_priv { void *fb; int fb_size; void *copy_fb; @@ -1373,7 +848,7 @@ index 66d109ca5da6..a522f33949e5 100644 int line_length; u32 colour_fg; u32 colour_bg; -@@ -254,8 +265,9 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, +@@ -257,8 +268,9 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, * @return: 0 on success, error code otherwise * * Some frame buffers are cached or have a secondary frame buffer. This @@ -1385,7 +860,7 @@ index 66d109ca5da6..a522f33949e5 100644 */ int video_sync(struct udevice *vid, bool force); -@@ -375,6 +387,22 @@ static inline int video_sync_copy_all(struct udevice *dev) +@@ -378,6 +390,22 @@ static inline int video_sync_copy_all(struct udevice *dev) #endif @@ -1408,139 +883,13 @@ index 66d109ca5da6..a522f33949e5 100644 /** * video_is_active() - Test if one video device it active * +-- +2.43.0 -From patchwork Mon Aug 21 13:51:02 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Alper Nebi Yasak -X-Patchwork-Id: 1823648 -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=20221208 header.b=BdIntNrw; - 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) server-digest SHA384) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4RTv6p6cj3z1yYZ - for ; Mon, 21 Aug 2023 23:52:18 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 8A59F87086; - Mon, 21 Aug 2023 15:51:40 +0200 (CEST) -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="BdIntNrw"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 3C3FD867A0; Mon, 21 Aug 2023 15:51:39 +0200 (CEST) -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,SPF_HELO_NONE, - SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 -Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com - [IPv6:2a00:1450:4864:20::42c]) - (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 546E686F0A - for ; Mon, 21 Aug 2023 15:51:35 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=alpernebiyasak@gmail.com -Received: by mail-wr1-x42c.google.com with SMTP id - ffacd0b85a97d-31c3df710bdso1066363f8f.1 - for ; Mon, 21 Aug 2023 06:51:35 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=gmail.com; s=20221208; t=1692625895; x=1693230695; - 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=rfyiNp4RS7b8BQCxsUs1afKXNK4WMu1bUdXxDQXJn1U=; - b=BdIntNrw+JbVTri7AodJPuA4KoTwuid2ByavDMP+gEZwSfMkjrlWlFROWNdM4E2KeC - btsSXcPQO3jMnyoxVbS5g4DL2PkXPHNZO/Lw5Db4La4RGjoB4ks8w4G1nQ5kVo8NIXlQ - 7da1BVmm9tlV2cmt2LVuLp3WDWvgE5vJ9kVj8BH8fjD+gKc5wVOKtRIPJnqL8Eqj55A5 - y8xjVcW5ldxVps2jj0kE7Mq8LG2R6Bd37Zsw+Dq3Cj/1khMgLkYog8/Nf+k2uYXPQpjA - TS03XR6eJ7GQcRUf0iWft80hVZMVk6KF2AWuF04HcJ/goyNj4MGGFun0tanDYNImJzv0 - A/8A== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20221208; t=1692625895; x=1693230695; - 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=rfyiNp4RS7b8BQCxsUs1afKXNK4WMu1bUdXxDQXJn1U=; - b=N71LYmMnxX45xKNJxNk72goiD3Cf5e0f3znUaZ/B4Ue95/rqpwn6vLQvhNkxjyJjKz - QxOUGBKeP4pdGPJD2eVZgEA1+8cyBu3q0BssvtHzLuXCZtgGmVE+jhS1ZplzCePV5HDq - cpjabmm8tLydQpgXN42bXGeg5S7C2hbuWb9P1yFz0T2VRKDhKfnBacDMMyCM77q885Xq - scmyG9QS6JjzzhlNCx2LAvunQyb5Ub3Jeac6w62kdW5d82X5hQ7R5IuMhO6HB9cXSoIL - q4cciYJYPkkgJo7cJBCGs9hpoG7mAiYugMX3xvTX0AozIxV+I0RqRnIaeK4YPRctAqDa - B+ZQ== -X-Gm-Message-State: AOJu0Yzo17fP4SdOljTzWNaDUk2p0KMalzHe92zD3l/uyJxeFYnVtZ6Z - JKO6vwp7AEEfITHacMlSfDnu20sRQPA= -X-Google-Smtp-Source: - AGHT+IEaweUWG6MdegfaF+T8dg4D4mXuTL2UTLikuqRhtfAyLWNc6xApEfO0HHPUExbseBScRw20SA== -X-Received: by 2002:a5d:44d1:0:b0:313:f94f:3b15 with SMTP id - z17-20020a5d44d1000000b00313f94f3b15mr5140696wrr.2.1692625894567; - Mon, 21 Aug 2023 06:51:34 -0700 (PDT) -Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id - r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.32 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Mon, 21 Aug 2023 06:51:34 -0700 (PDT) -From: Alper Nebi Yasak -To: u-boot@lists.denx.de -Cc: Kever Yang , - Jagan Teki , - Andre Przywara , - Svyatoslav Ryhel , Alexander Graf , - Philipp Tomsich , Andrew Davis , - Da Xue , Heinrich Schuchardt , - Patrice Chotard , - Patrick Delaunay , - Derald Woods , - Anatolij Gustschin , - uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , - Matthias Brugger , u-boot-amlogic@groups.io, - Ilias Apalodimas , - Neil Armstrong , - Alper Nebi Yasak -Subject: [PATCH v5 05/13] dm: video: Add damage notification on display fills -Date: Mon, 21 Aug 2023 16:51:02 +0300 -Message-Id: <20230821135111.3558478-6-alpernebiyasak@gmail.com> -X-Mailer: git-send-email 2.40.1 -In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -MIME-Version: 1.0 -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 - +From 38f85c1620b99691bc0bd06a18c7173386a0a846 Mon Sep 17 00:00:00 2001 From: Alexander Graf +Date: Mon, 21 Aug 2023 16:51:02 +0300 +Subject: [PATCH 05/13] dm: video: Add damage notification on display fills Let's report the video damage when we fill parts of the screen. This way we can later lazily flush only relevant regions to hardware. @@ -1549,17 +898,13 @@ Signed-off-by: Alexander Graf Reported-by: Da Xue [Alper: Call video_damage() in video_fill_part(), edit commit message] Signed-off-by: Alper Nebi Yasak +Reviewed-by: Simon Glass --- -Does video_fill_part() need a video_sync(dev, false) here? - -Changes in v5: -- Call video_damage() also in video_fill_part() - drivers/video/video-uclass.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c -index 447689581668..ebf409d839f0 100644 +index 9888a580bfd..09172f1f7f4 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c @@ -203,6 +203,8 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, @@ -1580,140 +925,14 @@ index 447689581668..ebf409d839f0 100644 return video_sync(dev, false); } +-- +2.43.0 -From patchwork Mon Aug 21 13:51:03 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Alper Nebi Yasak -X-Patchwork-Id: 1823649 -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=20221208 header.b=oaK1+upy; - 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 4RTv712FN9z1yYZ - for ; Mon, 21 Aug 2023 23:52:29 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id D08B3867A0; - Mon, 21 Aug 2023 15:51:42 +0200 (CEST) -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="oaK1+upy"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 8D15587084; Mon, 21 Aug 2023 15:51:40 +0200 (CEST) -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,SPF_HELO_NONE, - SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com - [IPv6:2a00:1450:4864:20::436]) - (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 DA4E1869B6 - for ; Mon, 21 Aug 2023 15:51:37 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=alpernebiyasak@gmail.com -Received: by mail-wr1-x436.google.com with SMTP id - ffacd0b85a97d-317f1c480eeso3049475f8f.2 - for ; Mon, 21 Aug 2023 06:51:37 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=gmail.com; s=20221208; t=1692625897; x=1693230697; - 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=7yrfRyMChh1ygDQtR1jl9BYhd6F+V0coaR3saA65Ao8=; - b=oaK1+upyGYfwOr4/nZR8RIRT+Yn2PZ+2dy2+GMSjffIkOUvAA4SwUrsuBUHVmQ+cIg - Q0F+D60Mp5/MzkFm9rwAnrQpO2uJb9esI/U8crcERtM+p1p5iKU9VNHrwRjlzB4VfG3E - 1rFRNOOhGpyPBS6RY+cJD557cLeGMoVUsQbv3xfnShrQg142CAOgzdQ4AtJ3FYRDngOc - QiczfO53zpeOnZjhBAa5aw7TDgIqHuR1bYCYIRraWJdIl9Cxa6ZDN1IozoPg6hutV+SE - 77oOM9VfIYyC8B3q6wdaduzcH0Qgeq3IEzfE54DLVtS/yT5z2vJiPtnfnV2pXzjU01Iq - l7Fg== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20221208; t=1692625897; x=1693230697; - 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=7yrfRyMChh1ygDQtR1jl9BYhd6F+V0coaR3saA65Ao8=; - b=NgyE/5/ABpribqDY5ykRBi/ftUfa+3meGxemZJPAl2gCi2+PfUEbrdHMbSPz/8nbY9 - qS/5UPv+41yRmDLmqeaNK/RXif7qV+CdVrg4K7xD0x/HbezXsIvKSc6rs5IqPqQvp0lx - JDuescRAcyrjtBjBFIAsrOx0+GynSijvWQArLcJRL330eiNnBn0HYRiVFqfEy3jpv5Hz - 13zk9q/GW8Hc7GRtA+FAkeUqJ3t8VaRzHLfoUJO3zFS8bWXgnWUAbCx0OOB9MahUqvyv - s/jpw79ZhFlhzO/Nwa63SlfQi+T3dAiYQ3kpBDgz7YFjSxvYaFYJDW3ihVDv8VTIiLdl - WB8Q== -X-Gm-Message-State: AOJu0YwqmT7iLKiUZblbrZz+UE4GebW514Sdllsg7NS//fk35AzXbHd7 - 7wXdC1ugEQP9Gez3jIRiAyQs4cDTcVc= -X-Google-Smtp-Source: - AGHT+IHO/arCmWeM8GYL18CXATu4Sh++TdyEswajL5QnvTaImLdSHvMUo+xc/gBkyHdBnNYS/qgvaQ== -X-Received: by 2002:adf:cd0b:0:b0:31c:3013:9fa5 with SMTP id - w11-20020adfcd0b000000b0031c30139fa5mr3560706wrm.59.1692625897248; - Mon, 21 Aug 2023 06:51:37 -0700 (PDT) -Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id - r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.35 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Mon, 21 Aug 2023 06:51:36 -0700 (PDT) -From: Alper Nebi Yasak -To: u-boot@lists.denx.de -Cc: Kever Yang , - Jagan Teki , - Andre Przywara , - Svyatoslav Ryhel , Alexander Graf , - Philipp Tomsich , Andrew Davis , - Da Xue , Heinrich Schuchardt , - Patrice Chotard , - Patrick Delaunay , - Derald Woods , - Anatolij Gustschin , - uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , - Matthias Brugger , u-boot-amlogic@groups.io, - Ilias Apalodimas , - Neil Armstrong , - Alper Nebi Yasak -Subject: [PATCH v5 06/13] vidconsole: Add damage notifications to all - vidconsole drivers -Date: Mon, 21 Aug 2023 16:51:03 +0300 -Message-Id: <20230821135111.3558478-7-alpernebiyasak@gmail.com> -X-Mailer: git-send-email 2.40.1 -In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -MIME-Version: 1.0 -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 - +From 77425d7aca92bf734e51cf36fad658adc53cb57d Mon Sep 17 00:00:00 2001 From: Alexander Graf +Date: Mon, 21 Aug 2023 16:51:03 +0300 +Subject: [PATCH 06/13] vidconsole: Add damage notifications to all vidconsole + drivers Now that we have a damage tracking API, let's populate damage done by vidconsole drivers. We try to declare as little memory as damaged as @@ -1725,18 +944,8 @@ Reported-by: Da Xue console_putc_xy() damages pass tests, edit patch message] Co-developed-by: Alper Nebi Yasak Signed-off-by: Alper Nebi Yasak +Reviewed-by: Simon Glass --- - -Changes in v5: -- Use met->baseline instead of priv->baseline -- Use fontdata->height/width instead of VIDEO_FONT_HEIGHT/WIDTH -- Update console_rotate.c video_damage() calls to pass video tests -- Remove mention about not having minimal damage for console_rotate.c - -Changes in v2: -- Fix ranges in truetype target -- Limit rotate to necessary damage - drivers/video/console_normal.c | 18 +++++++++++ drivers/video/console_rotate.c | 54 ++++++++++++++++++++++++++++++++ drivers/video/console_truetype.c | 21 +++++++++++++ @@ -1744,7 +953,7 @@ Changes in v2: 4 files changed, 94 insertions(+) diff --git a/drivers/video/console_normal.c b/drivers/video/console_normal.c -index 413c7abee9e1..a19ce6a2bc11 100644 +index a0231293f31..ad7ce860e9d 100644 --- a/drivers/video/console_normal.c +++ b/drivers/video/console_normal.c @@ -39,6 +39,12 @@ static int console_set_row(struct udevice *dev, uint row, int clr) @@ -1787,7 +996,7 @@ index 413c7abee9e1..a19ce6a2bc11 100644 if (ret) return ret; diff --git a/drivers/video/console_rotate.c b/drivers/video/console_rotate.c -index 65358a1c6e74..6c3e7c1bb8dc 100644 +index 65358a1c6e7..6c3e7c1bb8d 100644 --- a/drivers/video/console_rotate.c +++ b/drivers/video/console_rotate.c @@ -36,6 +36,12 @@ static int console_set_row_1(struct udevice *dev, uint row, int clr) @@ -1908,10 +1117,10 @@ index 65358a1c6e74..6c3e7c1bb8dc 100644 } diff --git a/drivers/video/console_truetype.c b/drivers/video/console_truetype.c -index 0f9bb49e44f7..0adbf9cc3d67 100644 +index 14fb81e9563..c0a5ad1a51e 100644 --- a/drivers/video/console_truetype.c +++ b/drivers/video/console_truetype.c -@@ -178,6 +178,7 @@ struct console_tt_priv { +@@ -190,6 +190,7 @@ struct console_tt_store { static int console_truetype_set_row(struct udevice *dev, uint row, int clr) { struct video_priv *vid_priv = dev_get_uclass_priv(dev->parent); @@ -1919,7 +1128,7 @@ index 0f9bb49e44f7..0adbf9cc3d67 100644 struct console_tt_priv *priv = dev_get_priv(dev); struct console_tt_metrics *met = priv->cur_met; void *end, *line; -@@ -221,6 +222,12 @@ static int console_truetype_set_row(struct udevice *dev, uint row, int clr) +@@ -233,6 +234,12 @@ static int console_truetype_set_row(struct udevice *dev, uint row, int clr) if (ret) return ret; @@ -1932,7 +1141,7 @@ index 0f9bb49e44f7..0adbf9cc3d67 100644 return 0; } -@@ -228,6 +235,7 @@ static int console_truetype_move_rows(struct udevice *dev, uint rowdst, +@@ -240,6 +247,7 @@ static int console_truetype_move_rows(struct udevice *dev, uint rowdst, uint rowsrc, uint count) { struct video_priv *vid_priv = dev_get_uclass_priv(dev->parent); @@ -1940,7 +1149,7 @@ index 0f9bb49e44f7..0adbf9cc3d67 100644 struct console_tt_priv *priv = dev_get_priv(dev); struct console_tt_metrics *met = priv->cur_met; void *dst; -@@ -246,6 +254,12 @@ static int console_truetype_move_rows(struct udevice *dev, uint rowdst, +@@ -258,6 +266,12 @@ static int console_truetype_move_rows(struct udevice *dev, uint rowdst, for (i = 0; i < priv->pos_ptr; i++) priv->pos[i].ypos -= diff; @@ -1953,7 +1162,7 @@ index 0f9bb49e44f7..0adbf9cc3d67 100644 return 0; } -@@ -403,6 +417,13 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y, +@@ -415,6 +429,13 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y, line += vid_priv->line_length; } @@ -1968,7 +1177,7 @@ index 0f9bb49e44f7..0adbf9cc3d67 100644 if (ret) return ret; diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c -index ebf409d839f0..8bfcbc88dda7 100644 +index 09172f1f7f4..06e344f415c 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c @@ -199,6 +199,7 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, @@ -1979,138 +1188,13 @@ index ebf409d839f0..8bfcbc88dda7 100644 ret = video_sync_copy(dev, start, line); if (ret) return ret; +-- +2.43.0 -From patchwork Mon Aug 21 13:51:04 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Alper Nebi Yasak -X-Patchwork-Id: 1823650 -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=20221208 header.b=i+1wSJUC; - 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 4RTv7B5SVxz1yYZ - for ; Mon, 21 Aug 2023 23:52:38 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 2380887084; - Mon, 21 Aug 2023 15:51:45 +0200 (CEST) -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="i+1wSJUC"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 2081087081; Mon, 21 Aug 2023 15:51:43 +0200 (CEST) -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,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 45F8E8707A - for ; Mon, 21 Aug 2023 15:51:40 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=alpernebiyasak@gmail.com -Received: by mail-wm1-x329.google.com with SMTP id - 5b1f17b1804b1-3fee600dce6so18065515e9.1 - for ; Mon, 21 Aug 2023 06:51:40 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=gmail.com; s=20221208; t=1692625900; x=1693230700; - 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=du9K8HAMfjDBv9t9zq9p8Zs+vCZHJ6g2zmB7iSzSF7o=; - b=i+1wSJUCYpv3D2Y4WhFT+a+eXACMjCfu9K5FQkWQdC2smyIukzPLOT9TKll1BIlZ+S - 0BSrF+Vp8/DGT40HSh+wXWV4jYRbGaai6uC9HETzas7pJ6Qhy+ffz2UKdEYLi1VLHsaq - X75Z5dWmXphu9f83rAKezE9CYHm+PJtfCCmN6nzYmKby9xzdvEmPjC4JmCjqvh+sqORE - Bzxq55zbOUyTxIzqT01tuFNOw/v8W0H5dQ6fFOCzvxrMmYV1xWY68YL/0QqfqG2DG5q1 - XPDS0Sgg6L+yzBD2e/I0iNDZaFfXRDq4jvWBkELBWMrWm1880C9/qHFlPwFRRUlHYf+M - 4DSQ== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20221208; t=1692625900; x=1693230700; - 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=du9K8HAMfjDBv9t9zq9p8Zs+vCZHJ6g2zmB7iSzSF7o=; - b=ejVU1hfEMyFZ7BfMSqaYec4EUOoA0M467Rm/YLD9WqMi6MKcePqHndqYIVtBdIb8pl - jE/EUHhBvvRp1Bn9zpDfUbCUk27iKZaqWwqAa4ZLknDsCStzGovzG2+wKem8yoP2H1jp - e5tUVYZa2/MESz/zDnwWZV528p3+eHhCUUWBwTCt3plzb+SWqR1j0T40nBrUB+tDj1b0 - VYDTZvDCxDhQRGlLmMYX8QtWf/waAzPl5ePXvPhus06aR5+7O2V28M8yF2xRcceFSIQR - 4T2k/MBwCdM1+mpz6TnKB+zjN6Kj0TmPzEo9o6Pcc/lXWY0kRniuHFu0fzE84gOcGlOi - Xfyw== -X-Gm-Message-State: AOJu0YxMuk5t4Hh2FasrdRfRr0tLxX8vAgGS5cfNm5tZpbvKz9V6ip/a - g8C3FsqqNAKybynks3ECaaBXn+kLAr4= -X-Google-Smtp-Source: - AGHT+IE0aHC9IeAZ9om6v+CX5lhGhaikzyvs7K+JjasiPPxFotFPaEOG+0SHfy/L4wW7iRlvWFh0mw== -X-Received: by 2002:a5d:568f:0:b0:317:e5ec:8767 with SMTP id - f15-20020a5d568f000000b00317e5ec8767mr4615501wrv.21.1692625899711; - Mon, 21 Aug 2023 06:51:39 -0700 (PDT) -Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id - r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.37 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Mon, 21 Aug 2023 06:51:39 -0700 (PDT) +From b44368015bdea3e71cb1c392afa124e6d26ab798 Mon Sep 17 00:00:00 2001 From: Alper Nebi Yasak -To: u-boot@lists.denx.de -Cc: Kever Yang , - Jagan Teki , - Andre Przywara , - Svyatoslav Ryhel , Alexander Graf , - Philipp Tomsich , Andrew Davis , - Da Xue , Heinrich Schuchardt , - Patrice Chotard , - Patrick Delaunay , - Derald Woods , - Anatolij Gustschin , - uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , - Matthias Brugger , u-boot-amlogic@groups.io, - Ilias Apalodimas , - Neil Armstrong , - Alper Nebi Yasak -Subject: [PATCH v5 07/13] video: test: Test video damage tracking via - vidconsole Date: Mon, 21 Aug 2023 16:51:04 +0300 -Message-Id: <20230821135111.3558478-8-alpernebiyasak@gmail.com> -X-Mailer: git-send-email 2.40.1 -In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -MIME-Version: 1.0 -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 +Subject: [PATCH 07/13] video: test: Test video damage tracking via vidconsole With VIDEO_DAMAGE, the video uclass tracks updated regions of the frame buffer in order to avoid unnecessary work during a video sync. Enable @@ -2118,22 +1202,17 @@ the config in sandbox and add a test for it, by printing strings at a few locations and checking the tracked region. Signed-off-by: Alper Nebi Yasak +Reviewed-by: Simon Glass --- -This is hard to test because most things issue video syncs that process -and reset the damaged region. - -Changes in v5: -- Add patch "video: test: Test video damage tracking via vidconsole" - configs/sandbox_defconfig | 1 + test/dm/video.c | 56 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig -index 259f31f26cee..51b820f13121 100644 +index bc5bcb2a623..fa6b23f365c 100644 --- a/configs/sandbox_defconfig +++ b/configs/sandbox_defconfig -@@ -307,6 +307,7 @@ CONFIG_USB_ETH_CDC=y +@@ -311,6 +311,7 @@ CONFIG_USB_ETH_CDC=y CONFIG_VIDEO=y CONFIG_VIDEO_FONT_SUN12X22=y CONFIG_VIDEO_COPY=y @@ -2142,7 +1221,7 @@ index 259f31f26cee..51b820f13121 100644 CONFIG_CONSOLE_TRUETYPE=y CONFIG_CONSOLE_TRUETYPE_CANTORAONE=y diff --git a/test/dm/video.c b/test/dm/video.c -index e4bd27a6b76f..8c7d9800a42e 100644 +index e4bd27a6b76..8c7d9800a42 100644 --- a/test/dm/video.c +++ b/test/dm/video.c @@ -711,3 +711,59 @@ static int dm_test_video_copy(struct unit_test_state *uts) @@ -2205,139 +1284,13 @@ index e4bd27a6b76f..8c7d9800a42e 100644 + return 0; +} +DM_TEST(dm_test_video_damage, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); +-- +2.43.0 -From patchwork Mon Aug 21 13:51:05 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Alper Nebi Yasak -X-Patchwork-Id: 1823651 -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=20221208 header.b=mvjKik+t; - 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 4RTv7M6kVWz1yYZ - for ; Mon, 21 Aug 2023 23:52:47 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 6CAC987085; - Mon, 21 Aug 2023 15:51:46 +0200 (CEST) -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="mvjKik+t"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 6192687085; Mon, 21 Aug 2023 15:51:45 +0200 (CEST) -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,SPF_HELO_NONE, - SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 -Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com - [IPv6:2a00:1450:4864:20::336]) - (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 D1E718706A - for ; Mon, 21 Aug 2023 15:51:42 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=alpernebiyasak@gmail.com -Received: by mail-wm1-x336.google.com with SMTP id - 5b1f17b1804b1-3fee17aebc8so20256405e9.0 - for ; Mon, 21 Aug 2023 06:51:42 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=gmail.com; s=20221208; t=1692625902; x=1693230702; - 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=OUPwGyIUGhu07FwRipI6J5nz3cUBWpffvk0k2vprnLg=; - b=mvjKik+ts2RRqakLQOi9t7J1i101HYF0aguRZ/P4y3h8SvaC+jrWNXPy+MyUiGFatO - EW5N4iqonVrCvE+i19nnSxA3TW5G5ItgSDTN6yq5TEp806h08MC17nKgCuRk/Urg+Nkj - ZewK+CW+lOR6k2kB8LtZylmeke1YHCeGMXq9VMK1hsm4co4hgSx0ZJ1OXiP5+tc4mVug - L2WSO1+ILyeHTT0N/dHw3FHShX08Y0SisUe32K946KofaqN6teHjb172uNMPVvd4Nk1S - G2GYNvIigYOzyXNzeBRUDXG3TkK8+ioXwBLZ4iqTsf77Dc0p2ePFbhc23gHzBcKBpUSc - O2nA== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20221208; t=1692625902; x=1693230702; - 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=OUPwGyIUGhu07FwRipI6J5nz3cUBWpffvk0k2vprnLg=; - b=PY5C635/8jWW5ixQ4L1L3j9qeTGHNNV7zdPW6utGplgCgNorieSsCHQweRvRmMeEuD - MFr4iXeMz4fuhtbE79McVeS1D2v3BXvw2DX52qn7G6MlWSp/OVuocmhZPavm+DsYq7wJ - D//vupLeuSNo0SXsniHXWL8NlKNfz7qnozFFui+kEvO0IwOmVbDRI99V9uZM3ng9hERg - y3hKkIFQSgXYtPJ+4h3reOPhrZLXW5t/o9rXjgeC+l6WyxkI6UASNgww0aC0iwiIg40B - enEpHJN00lL6FOkCuYsMay4itv3ydNVuzZHbW7w6tmgDHIWKLg4yi4tFuiSgl+EnJluq - pqDw== -X-Gm-Message-State: AOJu0YzfIxtWigpVmRfL01E4NvwPLzRkCCjd173t25icCTVna47obihz - mXXbV/Xvlo7hwqge7/MU2LnnCJaUcgE= -X-Google-Smtp-Source: - AGHT+IFzj3fGJ3yOnSTVNmg3QQIrMsHdzvHVI7a3IQjx0jS8kD0qBSvWJ3Z5+c4jA0D6oPZBiuGxwA== -X-Received: by 2002:a5d:6811:0:b0:319:8a5a:ab5e with SMTP id - w17-20020a5d6811000000b003198a5aab5emr4349395wru.38.1692625902291; - Mon, 21 Aug 2023 06:51:42 -0700 (PDT) -Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id - r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.40 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Mon, 21 Aug 2023 06:51:41 -0700 (PDT) -From: Alper Nebi Yasak -To: u-boot@lists.denx.de -Cc: Kever Yang , - Jagan Teki , - Andre Przywara , - Svyatoslav Ryhel , Alexander Graf , - Philipp Tomsich , Andrew Davis , - Da Xue , Heinrich Schuchardt , - Patrice Chotard , - Patrick Delaunay , - Derald Woods , - Anatolij Gustschin , - uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , - Matthias Brugger , u-boot-amlogic@groups.io, - Ilias Apalodimas , - Neil Armstrong , - Alper Nebi Yasak -Subject: [PATCH v5 08/13] video: Add damage notification on bmp display -Date: Mon, 21 Aug 2023 16:51:05 +0300 -Message-Id: <20230821135111.3558478-9-alpernebiyasak@gmail.com> -X-Mailer: git-send-email 2.40.1 -In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -MIME-Version: 1.0 -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 - +From 9278f6c9492b0a7960a6ee2294a524ef150bf1cb Mon Sep 17 00:00:00 2001 From: Alexander Graf +Date: Mon, 21 Aug 2023 16:51:05 +0300 +Subject: [PATCH 08/13] video: Add damage notification on bmp display Let's report the video damage when we draw a bitmap on the screen. This way we can later lazily flush only relevant regions to hardware. @@ -2347,14 +1300,11 @@ Reported-by: Da Xue Reviewed-by: Simon Glass Signed-off-by: Alper Nebi Yasak --- - -(no changes since v1) - drivers/video/video_bmp.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/video/video_bmp.c b/drivers/video/video_bmp.c -index 45f003c8251a..10943b9ca19f 100644 +index 45f003c8251..10943b9ca19 100644 --- a/drivers/video/video_bmp.c +++ b/drivers/video/video_bmp.c @@ -460,6 +460,8 @@ int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y, @@ -2366,138 +1316,13 @@ index 45f003c8251a..10943b9ca19f 100644 /* Find the position of the top left of the image in the framebuffer */ fb = (uchar *)(priv->fb + y * priv->line_length + x * bpix / 8); ret = video_sync_copy(dev, start, fb); +-- +2.43.0 -From patchwork Mon Aug 21 13:51:06 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Alper Nebi Yasak -X-Patchwork-Id: 1823652 -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=20221208 header.b=rvkBTDGo; - 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 4RTv7Y6TNDz1yYZ - for ; Mon, 21 Aug 2023 23:52:57 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id B23478708D; - Mon, 21 Aug 2023 15:51:48 +0200 (CEST) -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="rvkBTDGo"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id E994E87081; Mon, 21 Aug 2023 15:51:47 +0200 (CEST) -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,SPF_HELO_NONE, - SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 -Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com - [IPv6:2a00:1450:4864:20::430]) - (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 4A29E8708E - for ; Mon, 21 Aug 2023 15:51:45 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=alpernebiyasak@gmail.com -Received: by mail-wr1-x430.google.com with SMTP id - ffacd0b85a97d-31427ddd3fbso3057122f8f.0 - for ; Mon, 21 Aug 2023 06:51:45 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=gmail.com; s=20221208; t=1692625905; x=1693230705; - 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=NHWfOmBWnCfG15vLo7N7Y/b5x/nSoPE0dmgy30xOm9Q=; - b=rvkBTDGokSsZ+zHSmCyephYHOa1zCgYEH1V/eHcDIaJehG3LF1h3ZetBhv0F1WCnRL - dg0OqSl4nhT+d01IqkhLNI1FTeIJQeE/FHwY83jActydA9RdIKB97V7VAmOnABjsedPs - n/m1fNRUpKdpm/TBglBcCWTlhrozxmO+plcVOAjMhNlQQGUGkRo1eq/yHOw8pzfiIQVT - 4G4hJi3ePKSsEYbd1YuMZSkrzN70N+Erw/eeRb2QAdkn4J6xcJyPMEWirh7uNV2erutB - ZzxtmQOTBV9y19HeQkYKJeCnpReJ2LaLzTJj72ehPZpZqbYfj67OE+MeCC6Yt/m3YILh - fpGQ== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20221208; t=1692625905; x=1693230705; - 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=NHWfOmBWnCfG15vLo7N7Y/b5x/nSoPE0dmgy30xOm9Q=; - b=i5Ecd9fdl1ZJU0VqAc78F3Pmf9jo/gquJagwYJOv+0Gs8ayWCAJVUNkBV1a10fi3YU - uHNi0JjDvPtp8HPET+X5ywPbVDMbGOtad+ZjijeZL+mbC+Zc+lN2Oy35AoZjAeiYYqcL - qr+tjpJBWmj7lsr4rZ+Tqpc5m93dDUcxAeKZeOas3KQ+oM/S5zaPEb6puDJuVXTGbx9/ - NF+fyUg6I5MN+ZrT/+2pj8da5MpJaSlYzzymyg7JmdELwMKcBJsOuVNFfj+kXHLAmapY - MCO+hRidacGMoSYFLc/PHU7rU1qZqAWuizW35JPJmGYWschbDBhU5HWTPkJ8ifdZ9dqO - 7kkA== -X-Gm-Message-State: AOJu0YxlhwAy04+v9sqR7+z6BpzMYlqGrKNxnrBV5TAuFHvCn94+0y5X - UCsHr11K/guiHrF8/+oTMNTEUjwCaRQ= -X-Google-Smtp-Source: - AGHT+IF9A6Dqme3W/tV3JyovhEsU6i4A15qi8QyYKIlOrt7P6EPMkzmv+B+4oB2S58BxD/9oTr/SHQ== -X-Received: by 2002:a5d:4988:0:b0:31a:e6c2:770d with SMTP id - r8-20020a5d4988000000b0031ae6c2770dmr4196623wrq.36.1692625904737; - Mon, 21 Aug 2023 06:51:44 -0700 (PDT) -Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id - r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.42 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Mon, 21 Aug 2023 06:51:44 -0700 (PDT) -From: Alper Nebi Yasak -To: u-boot@lists.denx.de -Cc: Kever Yang , - Jagan Teki , - Andre Przywara , - Svyatoslav Ryhel , Alexander Graf , - Philipp Tomsich , Andrew Davis , - Da Xue , Heinrich Schuchardt , - Patrice Chotard , - Patrick Delaunay , - Derald Woods , - Anatolij Gustschin , - uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , - Matthias Brugger , u-boot-amlogic@groups.io, - Ilias Apalodimas , - Neil Armstrong , - Alper Nebi Yasak -Subject: [PATCH v5 09/13] efi_loader: GOP: Add damage notification on BLT -Date: Mon, 21 Aug 2023 16:51:06 +0300 -Message-Id: <20230821135111.3558478-10-alpernebiyasak@gmail.com> -X-Mailer: git-send-email 2.40.1 -In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -MIME-Version: 1.0 -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 - +From b56b97ef176a2753a9827d761760a829eece00d0 Mon Sep 17 00:00:00 2001 From: Alexander Graf +Date: Mon, 21 Aug 2023 16:51:06 +0300 +Subject: [PATCH 09/13] efi_loader: GOP: Add damage notification on BLT Now that we have a damage tracking API, let's populate damage done by UEFI payloads when they BLT data onto the screen. @@ -2507,28 +1332,16 @@ Reported-by: Da Xue Reviewed-by: Heinrich Schuchardt [Alper: Add struct comment for new member] Signed-off-by: Alper Nebi Yasak +Reviewed-by: Simon Glass --- - -Changes in v5: -- Document new vdev field in struct efi_gop_obj comment - -Changes in v4: -- Skip damage on EfiBltVideoToBltBuffer - -Changes in v3: -- Adapt to always assume DM is used - -Changes in v2: -- Remove ifdefs from gop - lib/efi_loader/efi_gop.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/efi_loader/efi_gop.c b/lib/efi_loader/efi_gop.c -index 778b693f983a..db6535e080c4 100644 +index a09db31eb46..ede77af1fe4 100644 --- a/lib/efi_loader/efi_gop.c +++ b/lib/efi_loader/efi_gop.c -@@ -24,6 +24,7 @@ static const efi_guid_t efi_gop_guid = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID; +@@ -25,6 +25,7 @@ static const efi_guid_t efi_gop_guid = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID; * @ops: graphical output protocol interface * @info: graphical output mode information * @mode: graphical output mode @@ -2536,7 +1349,7 @@ index 778b693f983a..db6535e080c4 100644 * @bpix: bits per pixel * @fb: frame buffer */ -@@ -32,6 +33,7 @@ struct efi_gop_obj { +@@ -33,6 +34,7 @@ struct efi_gop_obj { struct efi_gop ops; struct efi_gop_mode_info info; struct efi_gop_mode mode; @@ -2544,7 +1357,7 @@ index 778b693f983a..db6535e080c4 100644 /* Fields we only have access to during init */ u32 bpix; void *fb; -@@ -120,6 +122,7 @@ static __always_inline efi_status_t gop_blt_int(struct efi_gop *this, +@@ -121,6 +123,7 @@ static __always_inline efi_status_t gop_blt_int(struct efi_gop *this, u32 *fb32 = gopobj->fb; u16 *fb16 = gopobj->fb; struct efi_gop_pixel *buffer = __builtin_assume_aligned(bufferp, 4); @@ -2552,7 +1365,7 @@ index 778b693f983a..db6535e080c4 100644 if (delta) { /* Check for 4 byte alignment */ -@@ -243,6 +246,9 @@ static __always_inline efi_status_t gop_blt_int(struct efi_gop *this, +@@ -244,6 +247,9 @@ static __always_inline efi_status_t gop_blt_int(struct efi_gop *this, dlineoff += dwidth; } @@ -2562,147 +1375,21 @@ index 778b693f983a..db6535e080c4 100644 return EFI_SUCCESS; } -@@ -548,6 +554,7 @@ efi_status_t efi_gop_register(void) +@@ -550,6 +556,7 @@ efi_status_t efi_gop_register(void) gopobj->info.pixels_per_scanline = col; gopobj->bpix = bpix; - gopobj->fb = fb; + gopobj->fb = map_sysmem(fb_base, fb_size); + gopobj->vdev = vdev; return EFI_SUCCESS; } +-- +2.43.0 -From patchwork Mon Aug 21 13:51:07 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Alper Nebi Yasak -X-Patchwork-Id: 1823653 -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=20221208 header.b=SJ3CoTwS; - 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 4RTv7l6Gwbz1yYZ - for ; Mon, 21 Aug 2023 23:53:07 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 04C3A87091; - Mon, 21 Aug 2023 15:51:52 +0200 (CEST) -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="SJ3CoTwS"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 79C6786F0A; Mon, 21 Aug 2023 15:51:50 +0200 (CEST) -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,SPF_HELO_NONE, - SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 -Received: from mail-wr1-x435.google.com (mail-wr1-x435.google.com - [IPv6:2a00:1450:4864:20::435]) - (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 E3F3B86E80 - for ; Mon, 21 Aug 2023 15:51:47 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=alpernebiyasak@gmail.com -Received: by mail-wr1-x435.google.com with SMTP id - ffacd0b85a97d-31aeef88a55so1551204f8f.2 - for ; Mon, 21 Aug 2023 06:51:47 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=gmail.com; s=20221208; t=1692625907; x=1693230707; - 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=l/DCoXVnGlEMqWseytQAYuhC9MvrFlVv7QEu+lzOB9U=; - b=SJ3CoTwShv0m1a2l77IYGRiPJhE773qxJozbJ8TLkbWb/Fs3vzMjaetMjO1LteCIix - nxWVY9KC93yaMYqJT6SqYWKi1BaFToYnd6muvummJcQpRouAllJWg2nVkF0e6rb8GdHn - kEvHDvCo4Xq4Lrpvs6/W0ONesn+kGcCJbX3+BARXOoTD87bHAQpb5gcTr6FjYwUraYf/ - 31t1qEak7+tRD5cuPx0ItVaX8KSHeAMuueL0gEw6Wt64zNUyAO7W7cCRNJFMIsBkB2Lw - IOsoOk7kBgIqU/InShFLnIoLlW9EafAood5bDff+/ADKYaXgkgxpBbWQWgtF6tmmvjGO - gfgg== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20221208; t=1692625907; x=1693230707; - 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=l/DCoXVnGlEMqWseytQAYuhC9MvrFlVv7QEu+lzOB9U=; - b=Tx8Anl+tKgGLw4YpMhb5VbWFhDaaZ7izCBtT/Mun3zxxONGjrw/1uYrQVf/HxeEzcw - 0VQqKGIC9Kek3RaHw20BGPdbmmDTmaVo3IGNrikhp2qDmM0bBH2AVbn0K5MV5t9dwKsA - U5D/cFon6pqj8sco6Dd5oVBskjrgqlgNtd3HXzCrfuFmFtsXxecVmlgKOnnE8Kj+CGGI - D2EMM/0yQCq/vuxC4/ISIiaRk0/6GCX55V8DYg+claM+h691kk/LGeEGXJqs5X1wFGQU - EZeKiKrY2VvqZ7yOXoriyel6QE7BvHmCmurDC+oji/do1hnGp/6NPxPFV/ABKsRmjPGY - V6Eg== -X-Gm-Message-State: AOJu0YxqpYt8rTBNvBZ9hiz/qYI+xhkc2uURaJNeyYssFbd+tACGWJtX - 6fE/7qVWobRKTs1ZWXtn3qcomaeF/nc= -X-Google-Smtp-Source: - AGHT+IHlrJ5IlwhVESQ4N6S+FeCJPNau4Ry7TWJN4H6yUmdpI19HJsGEPwtYtoPvcLuI4yNltjc9CQ== -X-Received: by 2002:a5d:4483:0:b0:317:dada:2417 with SMTP id - j3-20020a5d4483000000b00317dada2417mr4326536wrq.31.1692625907186; - Mon, 21 Aug 2023 06:51:47 -0700 (PDT) -Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id - r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.45 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Mon, 21 Aug 2023 06:51:46 -0700 (PDT) -From: Alper Nebi Yasak -To: u-boot@lists.denx.de -Cc: Kever Yang , - Jagan Teki , - Andre Przywara , - Svyatoslav Ryhel , Alexander Graf , - Philipp Tomsich , Andrew Davis , - Da Xue , Heinrich Schuchardt , - Patrice Chotard , - Patrick Delaunay , - Derald Woods , - Anatolij Gustschin , - uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , - Matthias Brugger , u-boot-amlogic@groups.io, - Ilias Apalodimas , - Neil Armstrong , - Alper Nebi Yasak -Subject: [PATCH v5 10/13] video: Only dcache flush damaged lines -Date: Mon, 21 Aug 2023 16:51:07 +0300 -Message-Id: <20230821135111.3558478-11-alpernebiyasak@gmail.com> -X-Mailer: git-send-email 2.40.1 -In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -MIME-Version: 1.0 -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 - +From e77793c6320f827b4f8efc06bd55d38037b6373e Mon Sep 17 00:00:00 2001 From: Alexander Graf +Date: Mon, 21 Aug 2023 16:51:07 +0300 +Subject: [PATCH 10/13] video: Only dcache flush damaged lines Now that we have a damage area tells us which parts of the frame buffer actually need updating, let's only dcache flush those on video_sync() @@ -2715,20 +1402,11 @@ Reported-by: Da Xue Co-developed-by: Alper Nebi Yasak Signed-off-by: Alper Nebi Yasak --- - -Changes in v5: -- Use xstart, ystart, xend, yend as names for damage region -- Use IS_ENABLED() instead of CONFIG_IS_ENABLED() - -Changes in v2: -- Fix dcache range; we were flushing too much before -- Remove ifdefs - drivers/video/video-uclass.c | 41 +++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c -index 8bfcbc88dda7..a50220bcc684 100644 +index 06e344f415c..ac2141892bf 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c @@ -385,6 +385,41 @@ void video_damage(struct udevice *vid, int x, int y, int width, int height) @@ -2786,138 +1464,13 @@ index 8bfcbc88dda7..a50220bcc684 100644 #elif defined(CONFIG_VIDEO_SANDBOX_SDL) static ulong last_sync; +-- +2.43.0 -From patchwork Mon Aug 21 13:51:08 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Alper Nebi Yasak -X-Patchwork-Id: 1823654 -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=20221208 header.b=JgtEabWc; - 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 4RTv7w4Mskz1yYZ - for ; Mon, 21 Aug 2023 23:53:16 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 4790487096; - Mon, 21 Aug 2023 15:51:54 +0200 (CEST) -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="JgtEabWc"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 102DC87096; Mon, 21 Aug 2023 15:51:54 +0200 (CEST) -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,SPF_HELO_NONE, - SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 -Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com - [IPv6:2a00:1450:4864:20::429]) - (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 4AFE187098 - for ; Mon, 21 Aug 2023 15:51:50 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=alpernebiyasak@gmail.com -Received: by mail-wr1-x429.google.com with SMTP id - ffacd0b85a97d-31c3726cc45so1247414f8f.0 - for ; Mon, 21 Aug 2023 06:51:50 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=gmail.com; s=20221208; t=1692625910; x=1693230710; - 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=NdoZCMaizC3Y759MOjDBPu1VoZ+fIm/Lqzoh+gR4stQ=; - b=JgtEabWcIca2ALjUCCqGgXmUf5MREa+Jm3Yt8fmf6mwr8MrhP5Iu7KssN+MMQbAxKO - cl+LarTpXoK8lh4x2WmdcUKViUJdCAMCFJCk6vdMhIFAjaBH1Sqhudg315eFGharTw6G - 7FFSDdE1ZAablttQmfgcm59Ilk5+2QRAFycWcOiue5yFfF8RSAAAF8UHkl7rKxgQKHCO - NWC3P4PdjYEtaQFoJ4R5txJ07Wdvoptc9JVL9WGf4wSL5X6fm+SbalQaW3YgFuKNy0fk - 0+lmUOMDOXmwx4iGWZd6+LRFXYEZGCZ95AvjoDF83ZlL9Nu1oUvB/qzH7PRJatx6j/mw - J8Zw== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20221208; t=1692625910; x=1693230710; - 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=NdoZCMaizC3Y759MOjDBPu1VoZ+fIm/Lqzoh+gR4stQ=; - b=ATA2PnRfDc2gQVzxEqGIcgBsTvJvkOPNl2NSZEoxqmZfEe/94an/QM50JhcxX0wNEA - 0HpCsEsyDLhFnjW4APp/TYwLoc0mbRD/T517DYROiuJLUSRxyO/NApA1qyRJpVQTqpRc - dRZ5hG5VoUH3oHfwZN1abRKxbIogLNiJhSSNDvjA01RYJwTZY6Fq8xUJCYp9gI28/OI0 - oZ0SA+qdXZ4UvNR/uqun2tysI+JnatTKlbwSfCF7q/sj5AfH/VNk3EqNROuXlIBRMWI8 - pgosvMd73/GvTMQvsWPgGNNc3fhZgcnLKIoQFKdoqCeSFAufSLREsoWPLMMH1xXuh1lG - JKFQ== -X-Gm-Message-State: AOJu0YyKi/tYIN4uVjau5AbbNkJPzybGF79aUx+ls+uiyxVTGeu0zy64 - aMCSasGPaxyg+ogYkqU0Dx/1q3mIbnM= -X-Google-Smtp-Source: - AGHT+IHsb00O74X0NrGSp+Znx7MktY8oHr2PL7yyjJMmEkZVU5lzx7Wg/Yr0hFddlw1zsptntp6etA== -X-Received: by 2002:a05:6000:1cce:b0:314:ca7:f30b with SMTP id - bf14-20020a0560001cce00b003140ca7f30bmr5251008wrb.54.1692625909678; - Mon, 21 Aug 2023 06:51:49 -0700 (PDT) -Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id - r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.47 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Mon, 21 Aug 2023 06:51:49 -0700 (PDT) -From: Alper Nebi Yasak -To: u-boot@lists.denx.de -Cc: Kever Yang , - Jagan Teki , - Andre Przywara , - Svyatoslav Ryhel , Alexander Graf , - Philipp Tomsich , Andrew Davis , - Da Xue , Heinrich Schuchardt , - Patrice Chotard , - Patrick Delaunay , - Derald Woods , - Anatolij Gustschin , - uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , - Matthias Brugger , u-boot-amlogic@groups.io, - Ilias Apalodimas , - Neil Armstrong , - Alper Nebi Yasak -Subject: [PATCH v5 11/13] video: Use VIDEO_DAMAGE for VIDEO_COPY -Date: Mon, 21 Aug 2023 16:51:08 +0300 -Message-Id: <20230821135111.3558478-12-alpernebiyasak@gmail.com> -X-Mailer: git-send-email 2.40.1 -In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -MIME-Version: 1.0 -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 - +From e9d51b4dcbfa43aa0e4d2b4f285bf94c295603e4 Mon Sep 17 00:00:00 2001 From: Alexander Graf +Date: Mon, 21 Aug 2023 16:51:08 +0300 +Subject: [PATCH 11/13] video: Use VIDEO_DAMAGE for VIDEO_COPY CONFIG_VIDEO_COPY implemented a range-based copying mechanism: If we print a single character, it will always copy the full range of bytes @@ -2942,25 +1495,6 @@ Signed-off-by: Alexander Graf Co-developed-by: Alper Nebi Yasak Signed-off-by: Alper Nebi Yasak --- - -Changes in v5: -- Remove video_sync_copy() also from video_fill(), video_fill_part() -- Fix memmove() calls by removing the extra dev argument -- Call video_sync() before checking copy_fb in video tests -- Use xstart, ystart, xend, yend as names for damage region -- Use met->baseline instead of priv->baseline -- Use fontdata->height/width instead of VIDEO_FONT_HEIGHT/WIDTH -- Use xstart, ystart, xend, yend as names for damage region -- Use IS_ENABLED() instead of CONFIG_IS_ENABLED() -- Drop VIDEO_DAMAGE from sandbox defconfig added in a new patch -- Update dm_test_video_copy test added in a new patch - -Changes in v3: -- Make VIDEO_COPY always select VIDEO_DAMAGE - -Changes in v2: -- Add patch "video: Use VIDEO_DAMAGE for VIDEO_COPY" - configs/sandbox_defconfig | 1 - drivers/video/Kconfig | 5 ++ drivers/video/console_normal.c | 13 +---- @@ -2975,10 +1509,10 @@ Changes in v2: 11 files changed, 43 insertions(+), 248 deletions(-) diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig -index 51b820f13121..259f31f26cee 100644 +index fa6b23f365c..bc5bcb2a623 100644 --- a/configs/sandbox_defconfig +++ b/configs/sandbox_defconfig -@@ -307,7 +307,6 @@ CONFIG_USB_ETH_CDC=y +@@ -311,7 +311,6 @@ CONFIG_USB_ETH_CDC=y CONFIG_VIDEO=y CONFIG_VIDEO_FONT_SUN12X22=y CONFIG_VIDEO_COPY=y @@ -2987,7 +1521,7 @@ index 51b820f13121..259f31f26cee 100644 CONFIG_CONSOLE_TRUETYPE=y CONFIG_CONSOLE_TRUETYPE_CANTORAONE=y diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig -index 97f494a1340b..b3fbd9d7d9ca 100644 +index ac3edbfdb54..438cf3d4899 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig @@ -83,11 +83,14 @@ config VIDEO_PCI_DEFAULT_FB_SIZE @@ -3015,7 +1549,7 @@ index 97f494a1340b..b3fbd9d7d9ca 100644 bool "Generic PWM based Backlight Driver" depends on BACKLIGHT && DM_PWM diff --git a/drivers/video/console_normal.c b/drivers/video/console_normal.c -index a19ce6a2bc11..c44aa09473a3 100644 +index ad7ce860e9d..5625dbb8d08 100644 --- a/drivers/video/console_normal.c +++ b/drivers/video/console_normal.c @@ -35,10 +35,6 @@ static int console_set_row(struct udevice *dev, uint row, int clr) @@ -3057,7 +1591,7 @@ index a19ce6a2bc11..c44aa09473a3 100644 } diff --git a/drivers/video/console_rotate.c b/drivers/video/console_rotate.c -index 6c3e7c1bb8dc..6e9067d1c7fb 100644 +index 6c3e7c1bb8d..6e9067d1c7f 100644 --- a/drivers/video/console_rotate.c +++ b/drivers/video/console_rotate.c @@ -21,7 +21,6 @@ static int console_set_row_1(struct udevice *dev, uint row, int clr) @@ -3201,10 +1735,10 @@ index 6c3e7c1bb8dc..6e9067d1c7fb 100644 return ret; diff --git a/drivers/video/console_truetype.c b/drivers/video/console_truetype.c -index 0adbf9cc3d67..07bb0af71311 100644 +index c0a5ad1a51e..7aa1cdaef88 100644 --- a/drivers/video/console_truetype.c +++ b/drivers/video/console_truetype.c -@@ -182,7 +182,6 @@ static int console_truetype_set_row(struct udevice *dev, uint row, int clr) +@@ -194,7 +194,6 @@ static int console_truetype_set_row(struct udevice *dev, uint row, int clr) struct console_tt_priv *priv = dev_get_priv(dev); struct console_tt_metrics *met = priv->cur_met; void *end, *line; @@ -3212,7 +1746,7 @@ index 0adbf9cc3d67..07bb0af71311 100644 line = vid_priv->fb + row * met->font_size * vid_priv->line_length; end = line + met->font_size * vid_priv->line_length; -@@ -218,9 +217,6 @@ static int console_truetype_set_row(struct udevice *dev, uint row, int clr) +@@ -230,9 +229,6 @@ static int console_truetype_set_row(struct udevice *dev, uint row, int clr) default: return -ENOSYS; } @@ -3222,7 +1756,7 @@ index 0adbf9cc3d67..07bb0af71311 100644 video_damage(dev->parent, 0, -@@ -240,14 +236,11 @@ static int console_truetype_move_rows(struct udevice *dev, uint rowdst, +@@ -252,14 +248,11 @@ static int console_truetype_move_rows(struct udevice *dev, uint rowdst, struct console_tt_metrics *met = priv->cur_met; void *dst; void *src; @@ -3239,7 +1773,7 @@ index 0adbf9cc3d67..07bb0af71311 100644 /* Scroll up our position history */ diff = (rowsrc - rowdst) * met->font_size; -@@ -280,7 +273,7 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y, +@@ -292,7 +285,7 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y, u8 *bits, *data; int advance; void *start, *end, *line; @@ -3248,7 +1782,7 @@ index 0adbf9cc3d67..07bb0af71311 100644 /* First get some basic metrics about this character */ stbtt_GetCodepointHMetrics(font, ch, &advance, &lsb); -@@ -424,9 +417,6 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y, +@@ -436,9 +429,6 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y, width, height); @@ -3259,10 +1793,10 @@ index 0adbf9cc3d67..07bb0af71311 100644 return width_frac; diff --git a/drivers/video/vidconsole-uclass.c b/drivers/video/vidconsole-uclass.c -index 05f930478096..27a1e8ec3e49 100644 +index 22d55df71f6..16b38a27d39 100644 --- a/drivers/video/vidconsole-uclass.c +++ b/drivers/video/vidconsole-uclass.c -@@ -682,22 +682,6 @@ UCLASS_DRIVER(vidconsole) = { +@@ -751,22 +751,6 @@ UCLASS_DRIVER(vidconsole) = { .per_device_auto = sizeof(struct vidconsole_priv), }; @@ -3286,7 +1820,7 @@ index 05f930478096..27a1e8ec3e49 100644 { int ret; diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c -index a50220bcc684..c79499252a22 100644 +index ac2141892bf..afbd4670240 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c @@ -160,7 +160,7 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, @@ -3436,7 +1970,7 @@ index a50220bcc684..c79499252a22 100644 extern u8 __splash_ ## _name ## _begin[]; \ extern u8 __splash_ ## _name ## _end[] diff --git a/drivers/video/video_bmp.c b/drivers/video/video_bmp.c -index 10943b9ca19f..da2bbe864a03 100644 +index 10943b9ca19..da2bbe864a0 100644 --- a/drivers/video/video_bmp.c +++ b/drivers/video/video_bmp.c @@ -268,7 +268,6 @@ int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y, @@ -3460,10 +1994,10 @@ index 10943b9ca19f..da2bbe864a03 100644 return video_sync(dev, false); } diff --git a/include/video.h b/include/video.h -index a522f33949e5..42e57b44188d 100644 +index 1310195f307..29eff3c0900 100644 --- a/include/video.h +++ b/include/video.h -@@ -350,43 +350,6 @@ void video_set_default_colors(struct udevice *dev, bool invert); +@@ -353,43 +353,6 @@ void video_set_default_colors(struct udevice *dev, bool invert); */ int video_default_font_height(struct udevice *dev); @@ -3508,10 +2042,10 @@ index a522f33949e5..42e57b44188d 100644 * video_damage() - Notify the video subsystem about screen updates. * diff --git a/include/video_console.h b/include/video_console.h -index 2694e44f6ecf..caadeb878989 100644 +index bde67fa9a5a..43bc7db489a 100644 --- a/include/video_console.h +++ b/include/video_console.h -@@ -404,56 +404,4 @@ void vidconsole_list_fonts(struct udevice *dev); +@@ -527,56 +527,4 @@ void vidconsole_list_fonts(struct udevice *dev); */ int vidconsole_get_font_size(struct udevice *dev, const char **name, uint *sizep); @@ -3569,7 +2103,7 @@ index 2694e44f6ecf..caadeb878989 100644 - #endif diff --git a/test/dm/video.c b/test/dm/video.c -index 8c7d9800a42e..4c3bcd26e94f 100644 +index 8c7d9800a42..4c3bcd26e94 100644 --- a/test/dm/video.c +++ b/test/dm/video.c @@ -106,6 +106,7 @@ static int check_copy_frame_buffer(struct unit_test_state *uts, @@ -3589,139 +2123,13 @@ index 8c7d9800a42e..4c3bcd26e94f 100644 return 0; } +-- +2.43.0 -From patchwork Mon Aug 21 13:51:09 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Alper Nebi Yasak -X-Patchwork-Id: 1823655 -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=20221208 header.b=Q9fX66MT; - 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 4RTv8541j7z1yYZ - for ; Mon, 21 Aug 2023 23:53:25 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 909B287075; - Mon, 21 Aug 2023 15:51:56 +0200 (CEST) -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="Q9fX66MT"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 801C187082; Mon, 21 Aug 2023 15:51:55 +0200 (CEST) -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,SPF_HELO_NONE, - SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 -Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com - [IPv6:2a00:1450:4864:20::431]) - (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 D67548709E - for ; Mon, 21 Aug 2023 15:51:52 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=alpernebiyasak@gmail.com -Received: by mail-wr1-x431.google.com with SMTP id - ffacd0b85a97d-317716a4622so3055294f8f.1 - for ; Mon, 21 Aug 2023 06:51:52 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=gmail.com; s=20221208; t=1692625912; x=1693230712; - 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=pB2qI48avq9qUXnFEl+wSnmS8SG0cxx3SZjicfp6H7M=; - b=Q9fX66MTTcUQaIK9Ypbt13c6159mxahNRVYZb/qRcTZRgB9DWf7SyL5B6iwaerzl6H - V/NgeKQknUqjdF1rx5cN+0oUlRjL/uqf2PRT1u/2iPSTrLx9ImfxO59U1v7bkAyqsRHD - 9d/OLcbkmN2dqLKXGEJEhw9wRWn6PflMZfMjZfJ6PgDh1lldO8RAGdA+f9Wv0Uqs/CHY - M6HHFEIenHnWt15i3RWPMrP09rbx4OkOqYNXz1V/3BWUxb3tRe+1IqwA2n/oEpR5c0PM - YcGRP1tNM3yqfxG53IdsPPiujOtSHSbvtWSyefvk7z3wSlVPYMzicea8BirSi8/Ag/R0 - CJ5A== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20221208; t=1692625912; x=1693230712; - 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=pB2qI48avq9qUXnFEl+wSnmS8SG0cxx3SZjicfp6H7M=; - b=L5dQ5I1/r76Ec7WfGFYq1iqhI4RaRdXt+61BNvttoSzkuI28cDeE9IYg5h41YdBzNd - t6sNriBN4Qc+mGdOBHQb7hoI62tzka68Qd18eexmWznS1lz73CJWNA6nW0T2heZpmRnx - frQSxlPNxv5FZ2eXSdZLRIhWG0T0L+B+G/6B665+1/N1tvTFCLsToL2GaiGnEskSn3rJ - wQPY7b2lG/xkfWZiNERig8/6ZMW5R3QQDdOucA/FVYuHY4/dr+9UuPEHaimYzTwzN6AM - aehqXj0h7YO8NjF9HG1n1T4hEYq0FKqbcb2t+hLAUBpzGBjLNrpCdWa9LzQWN0EEJw8H - /ijQ== -X-Gm-Message-State: AOJu0YwwdmeqIA0FUSFZkbrYH8d4F3YWnny6MkSqZvX6DQEtu9Y/TVK7 - x418Ed0mXh7BUNyNIuPNquOOpbM3J+o= -X-Google-Smtp-Source: - AGHT+IFpiAY2BjXpJaKJJodzwN7aKj9YFF3eAkfmZgRFnB94o3W7mQtEZgXERHeKNVbIpRB5HlMypw== -X-Received: by 2002:a05:6000:1205:b0:31c:4f80:9f7 with SMTP id - e5-20020a056000120500b0031c4f8009f7mr1593479wrx.45.1692625912317; - Mon, 21 Aug 2023 06:51:52 -0700 (PDT) -Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id - r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.50 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Mon, 21 Aug 2023 06:51:51 -0700 (PDT) -From: Alper Nebi Yasak -To: u-boot@lists.denx.de -Cc: Kever Yang , - Jagan Teki , - Andre Przywara , - Svyatoslav Ryhel , Alexander Graf , - Philipp Tomsich , Andrew Davis , - Da Xue , Heinrich Schuchardt , - Patrice Chotard , - Patrick Delaunay , - Derald Woods , - Anatolij Gustschin , - uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , - Matthias Brugger , u-boot-amlogic@groups.io, - Ilias Apalodimas , - Neil Armstrong , - Alper Nebi Yasak -Subject: [PATCH v5 12/13] video: Always compile cache flushing code -Date: Mon, 21 Aug 2023 16:51:09 +0300 -Message-Id: <20230821135111.3558478-13-alpernebiyasak@gmail.com> -X-Mailer: git-send-email 2.40.1 -In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -MIME-Version: 1.0 -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 - +From 8831933fcc6cf60308e6ede438409717ab1a94a6 Mon Sep 17 00:00:00 2001 From: Alexander Graf +Date: Mon, 21 Aug 2023 16:51:09 +0300 +Subject: [PATCH 12/13] video: Always compile cache flushing code The dcache flushing code path was conditional on ARM && !DCACHE config options. However, dcaches exist on other platforms as well and may need @@ -3739,17 +2147,11 @@ Signed-off-by: Alexander Graf Reviewed-by: Simon Glass Signed-off-by: Alper Nebi Yasak --- - -(no changes since v4) - -Changes in v4: -- Add patch "video: Always compile cache flushing code" - drivers/video/video-uclass.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c -index c79499252a22..3f9ddaadd15d 100644 +index afbd4670240..2c7777261ad 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c @@ -377,11 +377,13 @@ void video_damage(struct udevice *vid, int x, int y, int width, int height) @@ -3792,139 +2194,13 @@ index c79499252a22..3f9ddaadd15d 100644 static ulong last_sync; if (force || get_timer(last_sync) > 100) { +-- +2.43.0 -From patchwork Mon Aug 21 13:51:10 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Alper Nebi Yasak -X-Patchwork-Id: 1823656 -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=20221208 header.b=LXQ9F9oF; - 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 4RTv8G1ylrz1yYZ - for ; Mon, 21 Aug 2023 23:53:34 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id D63BC87082; - Mon, 21 Aug 2023 15:51:59 +0200 (CEST) -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="LXQ9F9oF"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 6DC358709F; Mon, 21 Aug 2023 15:51:58 +0200 (CEST) -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,SPF_HELO_NONE, - SPF_PASS autolearn=ham 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 B9E5887094 - for ; Mon, 21 Aug 2023 15:51:55 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=gmail.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=alpernebiyasak@gmail.com -Received: by mail-wm1-x329.google.com with SMTP id - 5b1f17b1804b1-3fee5ddc23eso19328245e9.1 - for ; Mon, 21 Aug 2023 06:51:55 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=gmail.com; s=20221208; t=1692625915; x=1693230715; - 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=q4KbQNgBgg/jRM/b8KJaE0YjvGZTzMRikT8MXE6mjwI=; - b=LXQ9F9oF17Es3W44Ien7NWJ7ymwABfjmSOFUn1nlvsBdcyw9b3O/o8ulQCpUwqhXho - Lsoff11Pmwlo87siidtGiRDX/BRiaZ8rBVWjS3jgK+U6RDPcwNCfR7otgNlLLaNyAd4w - BCXHT1+90WvAX/9alOvPUYlvUkP1t/S15/C+bUJWxok5Nf6l5iGthuNMWvZFFiUdQ8yR - 02AJastvoFpsYlAJI+JY69q6OhIhuxvdeDVc81dEOKzKkkEOdENJDmT6pJI4fiWlgwEE - iSJz97xC4lCSs+y5RPJTJfxE97zWwduKphPAN75dLRw0vnBYyqeXIo4ERx4uO7ku2jHf - 8feQ== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20221208; t=1692625915; x=1693230715; - 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=q4KbQNgBgg/jRM/b8KJaE0YjvGZTzMRikT8MXE6mjwI=; - b=VOZaSadRyfgFoQTc22AZ+r/0BSY4/MskC2GhVnMFg1gAc1bBAg7PJOyNu3x0V3ICuX - w68LWLVRLSaTmnF46xARtATTh8hJhyj7k3/oD4mNclUIyfmx/9vTSXJLn1MsG6m3TL8z - l5QNyUjNlgAK+YeuYH6zQl/yp5lmAF4EaOg5ITz+eLN2lf10QPYS18/bVbvNQ0Q2cwIN - FH+i7NhTRVoeExDFNVEFO11ZI3CJiAzpMC4WhI6OucHDWGIzEGcQKOYu9FfgwOfF5dVY - Yc6qjX3w9zhbwV3LA/grMncdSA9joMxVkWJwvFFD+6AlVLgin7DH8EDaIOtENT/RD/qq - Hjvw== -X-Gm-Message-State: AOJu0YyYX84n+767GB59OryFC5m/WbElRHO2Ix8D2HaL8Wnef45wnjme - 9nuXLuU5B1juuVwSn7QqTlnSVvjWNGQ= -X-Google-Smtp-Source: - AGHT+IER2mHBuKBsYnQ3qf+DOtUzSQystkj8v17bWgFVK+zSLUhwLW9BOExvB2cO0RXSrx1vnjzR/w== -X-Received: by 2002:adf:e711:0:b0:317:e542:80a8 with SMTP id - c17-20020adfe711000000b00317e54280a8mr4968619wrm.15.1692625915025; - Mon, 21 Aug 2023 06:51:55 -0700 (PDT) -Received: from ALPER-PC.. ([178.233.24.1]) by smtp.gmail.com with ESMTPSA id - r11-20020a5d4e4b000000b00317b063590fsm12600049wrt.55.2023.08.21.06.51.52 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Mon, 21 Aug 2023 06:51:54 -0700 (PDT) -From: Alper Nebi Yasak -To: u-boot@lists.denx.de -Cc: Kever Yang , - Jagan Teki , - Andre Przywara , - Svyatoslav Ryhel , Alexander Graf , - Philipp Tomsich , Andrew Davis , - Da Xue , Heinrich Schuchardt , - Patrice Chotard , - Patrick Delaunay , - Derald Woods , - Anatolij Gustschin , - uboot-stm32@st-md-mailman.stormreply.com, Simon Glass , - Matthias Brugger , u-boot-amlogic@groups.io, - Ilias Apalodimas , - Neil Armstrong , - Alper Nebi Yasak -Subject: [PATCH v5 13/13] video: Enable VIDEO_DAMAGE for drivers that need it -Date: Mon, 21 Aug 2023 16:51:10 +0300 -Message-Id: <20230821135111.3558478-14-alpernebiyasak@gmail.com> -X-Mailer: git-send-email 2.40.1 -In-Reply-To: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -References: <20230821135111.3558478-1-alpernebiyasak@gmail.com> -MIME-Version: 1.0 -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 - +From 676104d8420152c97321c4fa22bb925fb139dd66 Mon Sep 17 00:00:00 2001 From: Alexander Graf +Date: Mon, 21 Aug 2023 16:51:10 +0300 +Subject: [PATCH 13/13] video: Enable VIDEO_DAMAGE for drivers that need it Some drivers call video_set_flush_dcache() to indicate that they want to have the dcache flushed for the frame buffer. These drivers benefit from @@ -3938,32 +2214,25 @@ Signed-off-by: Alexander Graf [Alper: Add to VIDEO_TIDSS, imply instead of select] Co-developed-by: Alper Nebi Yasak Signed-off-by: Alper Nebi Yasak +Reviewed-by: Simon Glass --- - -Changes in v5: -- Imply VIDEO_DAMAGE for video drivers instead of selecting it -- Imply VIDEO_DAMAGE also for VIDEO_TIDSS - -Changes in v4: -- Add patch "video: Enable VIDEO_DAMAGE for drivers that need it" - - arch/arm/mach-sunxi/Kconfig | 1 + - drivers/video/Kconfig | 8 ++++++++ - drivers/video/exynos/Kconfig | 1 + - drivers/video/imx/Kconfig | 1 + - drivers/video/meson/Kconfig | 1 + - drivers/video/rockchip/Kconfig | 1 + - drivers/video/stm32/Kconfig | 1 + - drivers/video/tegra20/Kconfig | 1 + - drivers/video/tidss/Kconfig | 1 + - 10 files changed, 17 insertions(+) + arch/arm/mach-sunxi/Kconfig | 1 + + drivers/video/Kconfig | 8 ++++++++ + drivers/video/exynos/Kconfig | 1 + + drivers/video/imx/Kconfig | 1 + + drivers/video/meson/Kconfig | 1 + + drivers/video/rockchip/Kconfig | 1 + + drivers/video/stm32/Kconfig | 1 + + drivers/video/tegra20/Kconfig | 1 + + drivers/video/tidss/Kconfig | 1 + + 9 files changed, 16 insertions(+) diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig -index 9d5df2c10273..fb4478ea32e8 100644 +index a4a8d8e9445..1d32a3140bf 100644 --- a/arch/arm/mach-sunxi/Kconfig +++ b/arch/arm/mach-sunxi/Kconfig -@@ -813,6 +813,7 @@ config VIDEO_SUNXI - depends on !SUN50I_GEN_H6 +@@ -846,6 +846,7 @@ config VIDEO_SUNXI + depends on !SUNXI_GEN_NCAT2 select VIDEO select DISPLAY + imply VIDEO_DAMAGE @@ -3971,7 +2240,7 @@ index 9d5df2c10273..fb4478ea32e8 100644 default y ---help--- diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig -index b3fbd9d7d9ca..185dbb1f8390 100644 +index 438cf3d4899..a736ee6724c 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig @@ -499,6 +499,7 @@ config VIDEO_LCD_ANX9804 @@ -4039,7 +2308,7 @@ index b3fbd9d7d9ca..185dbb1f8390 100644 Enables a simple display driver for ST-Ericsson MCDE (Multichannel Display Engine), which reads the configuration from diff --git a/drivers/video/exynos/Kconfig b/drivers/video/exynos/Kconfig -index 599d19d5ecc2..a2cf752aac03 100644 +index 599d19d5ecc..a2cf752aac0 100644 --- a/drivers/video/exynos/Kconfig +++ b/drivers/video/exynos/Kconfig @@ -12,6 +12,7 @@ config EXYNOS_DP @@ -4051,7 +2320,7 @@ index 599d19d5ecc2..a2cf752aac03 100644 config EXYNOS_MIPI_DSIM bool "Exynos MIPI DSI support" diff --git a/drivers/video/imx/Kconfig b/drivers/video/imx/Kconfig -index 34e8b640595b..5db3e5c0499e 100644 +index 34e8b640595..5db3e5c0499 100644 --- a/drivers/video/imx/Kconfig +++ b/drivers/video/imx/Kconfig @@ -2,6 +2,7 @@ @@ -4063,7 +2332,7 @@ index 34e8b640595b..5db3e5c0499e 100644 This enables framebuffer driver for i.MX processors working on the IPUv3(Image Processing Unit) internal graphic processor. diff --git a/drivers/video/meson/Kconfig b/drivers/video/meson/Kconfig -index 3c2d72d019b8..fcf486ca0a3a 100644 +index 3c2d72d019b..fcf486ca0a3 100644 --- a/drivers/video/meson/Kconfig +++ b/drivers/video/meson/Kconfig @@ -8,5 +8,6 @@ config VIDEO_MESON @@ -4074,7 +2343,7 @@ index 3c2d72d019b8..fcf486ca0a3a 100644 help Enable Amlogic Meson Video Processing Unit video support. diff --git a/drivers/video/rockchip/Kconfig b/drivers/video/rockchip/Kconfig -index 01804dcb1cc8..0f4550a29e38 100644 +index 01804dcb1cc..0f4550a29e3 100644 --- a/drivers/video/rockchip/Kconfig +++ b/drivers/video/rockchip/Kconfig @@ -11,6 +11,7 @@ @@ -4086,7 +2355,7 @@ index 01804dcb1cc8..0f4550a29e38 100644 Rockchip SoCs provide video output capabilities for High-Definition Multimedia Interface (HDMI), Low-voltage Differential Signalling diff --git a/drivers/video/stm32/Kconfig b/drivers/video/stm32/Kconfig -index 48066063e4c5..c354c402c288 100644 +index 48066063e4c..c354c402c28 100644 --- a/drivers/video/stm32/Kconfig +++ b/drivers/video/stm32/Kconfig @@ -8,6 +8,7 @@ @@ -4098,7 +2367,7 @@ index 48066063e4c5..c354c402c288 100644 STM32 supports many video output options including RGB and DSI. This option enables these supports which can be used on diff --git a/drivers/video/tegra20/Kconfig b/drivers/video/tegra20/Kconfig -index f5c4843e1191..2232b0b3ff53 100644 +index f5c4843e119..2232b0b3ff5 100644 --- a/drivers/video/tegra20/Kconfig +++ b/drivers/video/tegra20/Kconfig @@ -1,6 +1,7 @@ @@ -4110,7 +2379,7 @@ index f5c4843e1191..2232b0b3ff53 100644 T20/T30 support video output to an attached LCD panel as well as other options such as HDMI. Only the LCD is supported in U-Boot. diff --git a/drivers/video/tidss/Kconfig b/drivers/video/tidss/Kconfig -index 95086f3a5d66..3291b3ceb8d5 100644 +index 95086f3a5d6..3291b3ceb8d 100644 --- a/drivers/video/tidss/Kconfig +++ b/drivers/video/tidss/Kconfig @@ -11,6 +11,7 @@ @@ -4121,3 +2390,6 @@ index 95086f3a5d66..3291b3ceb8d5 100644 help TIDSS supports video output options LVDS and DPI . This option enables these supports which can be used on +-- +2.43.0 + diff --git a/bootstd-Test-and-boot_targets-improvements.patch b/bootstd-Test-and-boot_targets-improvements.patch deleted file mode 100644 index 68f1223..0000000 --- a/bootstd-Test-and-boot_targets-improvements.patch +++ /dev/null @@ -1,626 +0,0 @@ -From patchwork Mon Oct 23 07:02:11 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Simon Glass -X-Patchwork-Id: 1853514 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -Authentication-Results: legolas.ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 - header.s=google header.b=ft1tNW5r; - 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 4SDR4l2QBzz202k - for ; Mon, 23 Oct 2023 18:04:07 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 3591D87893; - Mon, 23 Oct 2023 09:03:57 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=chromium.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=chromium.org header.i=@chromium.org - header.b="ft1tNW5r"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 74EC18789D; Mon, 23 Oct 2023 09:03:55 +0200 (CEST) -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,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, - SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-oi1-x22f.google.com (mail-oi1-x22f.google.com - [IPv6:2607:f8b0:4864:20::22f]) - (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 5F22E87874 - for ; Mon, 23 Oct 2023 09:03:53 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=chromium.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=sjg@chromium.org -Received: by mail-oi1-x22f.google.com with SMTP id - 5614622812f47-3b2ea7cca04so2216594b6e.2 - for ; Mon, 23 Oct 2023 00:03:53 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=chromium.org; s=google; t=1698044632; x=1698649432; 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=cIwvqOWntoH56aVh+uK5vSKMw8BFeAK+5xfygEqOPIs=; - b=ft1tNW5rHnnlnf552nQnVvJdgHJqUOIPR89PZQ12NUAyrlDzlzOEdzF55vs0bmokXJ - czzGmRw8FwBvmzO/fekIxGsNzg40U5ypkgqj13Plvj07iGgJvNLbwmOGyYwpTD86eBO8 - HxWQUCwgkoFZldu1VLcZHUzw69U1vUVcLpDqE= -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20230601; t=1698044632; x=1698649432; - 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=cIwvqOWntoH56aVh+uK5vSKMw8BFeAK+5xfygEqOPIs=; - b=AvcWPKPeRESlQnvwva3Yydv23E8Q1GOx+sH830m0arYUvEW4+J/TkXRzyM0Z8amaDR - 4dvztcY+Hh54LqVGw9cD0R65sHvXrvqUPURdBpVFT3yX2LhoN7ZxPD1EcKy9Hqr3ATlJ - 9eOCuyD+UHHeMAIvdTR918uaO5Bja38XSaNAzNV57JBYkDgWJeNK9OBHBuJj2Y2sTNZ1 - poF5sGH839p3nx69X+ImsEwsgz8JIZFnwe4WBsXMMM13hVQ1ZDpdhKzKI7ai1jE67Ixo - 4hOXD6ACVKkBijBRqW8t2V1Wf12AAun1z+mrhyFaq/UgyxuplGyHQHWGmwL7maxTzdVv - IX4A== -X-Gm-Message-State: AOJu0YwtYv7Lh6kUp+eOTO6dV8tIAMnl+FJU9kPSXGHNBjxPmbWNgo0/ - gEs6R/iZt+vLqxRzuubv1ROzFkNfj6SlCXza5g7l1A== -X-Google-Smtp-Source: - AGHT+IHvJm5/lr6rXt08U65SxntTogh09qTfiLs2+CF8IjsSnkkTeqbhy/o2f2YjHn0GHRZ0TtCNpA== -X-Received: by 2002:a05:6808:e85:b0:3b2:d8cb:8e14 with SMTP id - k5-20020a0568080e8500b003b2d8cb8e14mr11558910oil.28.1698044631920; - Mon, 23 Oct 2023 00:03:51 -0700 (PDT) -Received: from sjg1.roam.corp.google.com ([202.144.206.130]) - by smtp.gmail.com with ESMTPSA id - u187-20020a6279c4000000b006bde8e1f0adsm5910841pfc.98.2023.10.23.00.03.49 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Mon, 23 Oct 2023 00:03:51 -0700 (PDT) -From: Simon Glass -To: U-Boot Mailing List -Cc: Heinrich Schuchardt , - Guillaume Gardet , Tom Rini , - Simon Glass -Subject: [PATCH 2/4] bootstd: Expand boot-ordering test to include USB -Date: Mon, 23 Oct 2023 00:02:11 -0700 -Message-ID: - <20231023000211.2.I9d49d1e28d3ef75af768dc20bb491e4c82e4ab76@changeid> -X-Mailer: git-send-email 2.42.0.655.g421f12c284-goog -In-Reply-To: <20231023070216.394709-1-sjg@chromium.org> -References: <20231023070216.394709-1-sjg@chromium.org> -MIME-Version: 1.0 -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 - -Scan the USB bus as well, so we can check that different uclasses work -correctly in boot_targets - -update the function comment with more detail. - -Signed-off-by: Simon Glass ---- - - test/boot/bootdev.c | 17 ++++++++++++++--- - 1 file changed, 14 insertions(+), 3 deletions(-) - -diff --git a/test/boot/bootdev.c b/test/boot/bootdev.c -index 6b29213416db..7228f545e9e6 100644 ---- a/test/boot/bootdev.c -+++ b/test/boot/bootdev.c -@@ -190,12 +190,21 @@ static int bootdev_test_any(struct unit_test_state *uts) - BOOTSTD_TEST(bootdev_test_any, UT_TESTF_DM | UT_TESTF_SCAN_FDT | - UT_TESTF_ETH_BOOTDEV); - --/* Check bootdev ordering with the bootdev-order property */ -+/* -+ * Check bootdev ordering with the bootdev-order property and boot_targets -+ * environment variable -+ */ - static int bootdev_test_order(struct unit_test_state *uts) - { - struct bootflow_iter iter; - struct bootflow bflow; - -+ test_set_skip_delays(true); -+ -+ /* Start up USB which gives us three additional bootdevs */ -+ usb_started = false; -+ ut_assertok(run_command("usb start", 0)); -+ - /* - * First try the order set by the bootdev-order property - * Like all sandbox unit tests this relies on the devicetree setting up -@@ -213,12 +222,14 @@ static int bootdev_test_order(struct unit_test_state *uts) - bootflow_iter_uninit(&iter); - - /* Use the environment variable to override it */ -- ut_assertok(env_set("boot_targets", "mmc1 mmc2")); -+ ut_assertok(env_set("boot_targets", "mmc1 mmc2 usb")); - ut_assertok(bootflow_scan_first(NULL, NULL, &iter, 0, &bflow)); - ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow)); -- ut_asserteq(2, iter.num_devs); -+ ut_asserteq(3, iter.num_devs); - ut_asserteq_str("mmc1.bootdev", iter.dev_used[0]->name); - ut_asserteq_str("mmc2.bootdev", iter.dev_used[1]->name); -+ ut_asserteq_str("usb_mass_storage.lun0.bootdev", -+ iter.dev_used[2]->name); - bootflow_iter_uninit(&iter); - - return 0; - -From patchwork Mon Oct 23 07:02:12 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Simon Glass -X-Patchwork-Id: 1853515 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -Authentication-Results: legolas.ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 - header.s=google header.b=aYxxWBdy; - 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 4SDR4z5WcTz202k - for ; Mon, 23 Oct 2023 18:04:19 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id A279B878A9; - Mon, 23 Oct 2023 09:03:59 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=chromium.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=chromium.org header.i=@chromium.org - header.b="aYxxWBdy"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 231CE878B2; Mon, 23 Oct 2023 09:03:59 +0200 (CEST) -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,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, - SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-pf1-x431.google.com (mail-pf1-x431.google.com - [IPv6:2607:f8b0:4864:20::431]) - (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 E9DE187874 - for ; Mon, 23 Oct 2023 09:03:56 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=chromium.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=sjg@chromium.org -Received: by mail-pf1-x431.google.com with SMTP id - d2e1a72fcca58-6bd73395bceso2113746b3a.0 - for ; Mon, 23 Oct 2023 00:03:56 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=chromium.org; s=google; t=1698044635; x=1698649435; 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=8b4yhHi8HkVDVyxmZZ8a/B9oJfD95880A8O7ScnCUlA=; - b=aYxxWBdy/wJMQ/tjjK8Fxa3hq2jB+RQ/GZvaC5Z3WX/PHTfrcBBEncxnUjhKGVpRDX - W+KcG58tqawI84z5bFLFL0b9sW2fogOlQatvQajdAUe47BPNqB6QAhnJi9Kz7r/r9Gs6 - NNgvS1a0l6YIH9C//eL4UL+4CZAI3w/xuJglw= -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20230601; t=1698044635; x=1698649435; - 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=8b4yhHi8HkVDVyxmZZ8a/B9oJfD95880A8O7ScnCUlA=; - b=I5RQ7op3C0RGr709+nlAxagLQLSvqp2mbM2boS7Q037eSoibAVpk4mZ4eybB3mgH7s - CU7QPLmTk89Z+nypz02nbdWiiDUxCGGmjyWllc8F1lpiyjdILqp5njd+8mukVbhujjua - wbRX/7IaEywz0hp5/4jlTO+cz+b6t8VrLGXFFR8MJNzfchp2hHCRDypg8K/GlpfN9Vrh - SeZuMbw7X3R9vJf+qkLzCYC4bKuMUFgXrXnL/ZNgq+cmMfXFwT5f92+aIq8MvTuIIJMI - krBCjES1iIXXHLKw7aF3b1EC0+alfvtIAfIjK8UhAiTW019VbZ/uyxJbG+XG2ZLxkJPB - QhTQ== -X-Gm-Message-State: AOJu0YxXE6hDpzTCrR02q/+ia8kFUD/3VJLYeldwCaUAM/ZjNFiglRSk - N+4b2ozl4hRwo7qO57OeOxowm5MFBDGdy9h+8WGPjQ== -X-Google-Smtp-Source: - AGHT+IEjnpgei2u9GBHpMxAqISqdKlCrvD572cRfntnploYm1RPfc2ermsDOfWBp72z4zSgZo07dRw== -X-Received: by 2002:a05:6a00:1817:b0:68e:3616:604a with SMTP id - y23-20020a056a00181700b0068e3616604amr11976822pfa.8.1698044635168; - Mon, 23 Oct 2023 00:03:55 -0700 (PDT) -Received: from sjg1.roam.corp.google.com ([202.144.206.130]) - by smtp.gmail.com with ESMTPSA id - u187-20020a6279c4000000b006bde8e1f0adsm5910841pfc.98.2023.10.23.00.03.52 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Mon, 23 Oct 2023 00:03:54 -0700 (PDT) -From: Simon Glass -To: U-Boot Mailing List -Cc: Heinrich Schuchardt , - Guillaume Gardet , Tom Rini , - Simon Glass -Subject: [PATCH 3/4] bootstd: Correct logic for single uclass -Date: Mon, 23 Oct 2023 00:02:12 -0700 -Message-ID: - <20231023000211.3.Icefe7db8f3c1ddc3624f95ca5dc89b81ef97eab4@changeid> -X-Mailer: git-send-email 2.42.0.655.g421f12c284-goog -In-Reply-To: <20231023070216.394709-1-sjg@chromium.org> -References: <20231023070216.394709-1-sjg@chromium.org> -MIME-Version: 1.0 -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 current logic for "bootflow mmc" is flawed since it checks the -uclass of the bootdev instead of its parent, the media device. Correct -this and add a test that covers this scenario. - -Signed-off-by: Simon Glass ---- - - boot/bootflow.c | 24 ++++++++++++++++++++++-- - test/boot/bootdev.c | 13 +++++++++++++ - 2 files changed, 35 insertions(+), 2 deletions(-) - -diff --git a/boot/bootflow.c b/boot/bootflow.c -index 6ef62e1d1896..7f5b0e942078 100644 ---- a/boot/bootflow.c -+++ b/boot/bootflow.c -@@ -155,6 +155,27 @@ static void bootflow_iter_set_dev(struct bootflow_iter *iter, - } - } - -+/** -+ * scan_next_in_uclass() - Scan for the next bootdev in the same media uclass -+ * -+ * Move through the following bootdevs until we find another in this media -+ * uclass, or run out -+ * -+ * @devp: On entry, the device to check, on exit the new device, or NULL if -+ * there is none -+ */ -+static void scan_next_in_uclass(struct udevice **devp) -+{ -+ struct udevice *dev = *devp; -+ enum uclass_id cur_id = device_get_uclass_id(dev->parent); -+ -+ do { -+ uclass_find_next_device(&dev); -+ } while (dev && cur_id != device_get_uclass_id(dev->parent)); -+ -+ *devp = dev; -+} -+ - /** - * iter_incr() - Move to the next item (method, part, bootdev) - * -@@ -230,8 +251,7 @@ static int iter_incr(struct bootflow_iter *iter) - &method_flags); - } else if (IS_ENABLED(CONFIG_BOOTSTD_FULL) && - (iter->flags & BOOTFLOWIF_SINGLE_UCLASS)) { -- /* Move to the next bootdev in this uclass */ -- uclass_find_next_device(&dev); -+ scan_next_in_uclass(&dev); - if (!dev) { - log_debug("finished uclass %s\n", - dev_get_uclass_name(dev)); -diff --git a/test/boot/bootdev.c b/test/boot/bootdev.c -index 7228f545e9e6..637861748057 100644 ---- a/test/boot/bootdev.c -+++ b/test/boot/bootdev.c -@@ -232,6 +232,19 @@ static int bootdev_test_order(struct unit_test_state *uts) - iter.dev_used[2]->name); - bootflow_iter_uninit(&iter); - -+ /* Try a single uclass */ -+ ut_assertok(env_set("boot_targets", NULL)); -+ ut_assertok(bootflow_scan_first(NULL, "mmc", &iter, 0, &bflow)); -+ ut_asserteq(2, iter.num_devs); -+ -+ /* Now scan pass mmc1 and make sure that only mmc0 shows up */ -+ ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow)); -+ ut_asserteq(3, iter.num_devs); -+ ut_asserteq_str("mmc2.bootdev", iter.dev_used[0]->name); -+ ut_asserteq_str("mmc1.bootdev", iter.dev_used[1]->name); -+ ut_asserteq_str("mmc0.bootdev", iter.dev_used[2]->name); -+ bootflow_iter_uninit(&iter); -+ - return 0; - } - BOOTSTD_TEST(bootdev_test_order, UT_TESTF_DM | UT_TESTF_SCAN_FDT); - -From patchwork Mon Oct 23 07:02:13 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 8bit -X-Patchwork-Submitter: Simon Glass -X-Patchwork-Id: 1853516 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -Authentication-Results: legolas.ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 - header.s=google header.b=g7MVFEGd; - 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 4SDR5C2s5gz202k - for ; Mon, 23 Oct 2023 18:04:31 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 1A36A87880; - Mon, 23 Oct 2023 09:04:04 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=chromium.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=chromium.org header.i=@chromium.org - header.b="g7MVFEGd"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 2EC9687897; Mon, 23 Oct 2023 09:04:03 +0200 (CEST) -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,DKIMWL_WL_HIGH, - DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, - SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-oi1-x22d.google.com (mail-oi1-x22d.google.com - [IPv6:2607:f8b0:4864:20::22d]) - (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 F1B5887880 - for ; Mon, 23 Oct 2023 09:04:00 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=chromium.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=sjg@chromium.org -Received: by mail-oi1-x22d.google.com with SMTP id - 5614622812f47-3af604c3f8fso2266068b6e.1 - for ; Mon, 23 Oct 2023 00:04:00 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=chromium.org; s=google; t=1698044639; x=1698649439; 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=ZQHdVZoqu6vL//0Rc8e1SX1+2VK3djq3hW1NDOA/VUc=; - b=g7MVFEGdmwlVgYbQvsUlLUH8u5YdqRAZZ7IGvJkKw+t9TgR7CBLAz6FTbcUqCf7ix3 - ka6wz36z3I7e9+8Vu/XxtfjMh+FsE2MmR1pR8WtODlM2rNTfjAL7SzMzFwNNdBolnbaF - YEgrsCKckVERiDmY6ZcR1st7af2v4Zd3IMEjU= -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20230601; t=1698044639; x=1698649439; - 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=ZQHdVZoqu6vL//0Rc8e1SX1+2VK3djq3hW1NDOA/VUc=; - b=dmetYCxcqOdjG06nNcEgNsHTXN2i2yJe2yaTu9+igYWthZh3jBPskXE+lqfItnIeWl - 7Ti/qjE0EfHZfEfg2qVDuxSbj3zUqB8FRtcGV9rNXUn6NCsu3+zbWL03hsVUpc3vryFx - jWRyDrV2iQXJFbTcXuutCHCXNMwcCuHwGgN1nSfK/4Dxxw4T8y/c0y2O8gb1V3cURCB4 - iIUvgFjuI6Cr+EVLkWuTmm292mJryz7Wnj14Gvh1f3kgdWqfDOCJHBmSu2DImC0KGlsU - 5OwVzpagMZfWwuofbsHzRRvhzjEWAFhbwaIB7TeQMQBQfO+eAJ4ItsCll1m4KCusAJtm - fq2w== -X-Gm-Message-State: AOJu0YyL+7DxZXljBQhaS2gWBuhvR5uESsc040WsnLpteLMvL8txONvN - ASxmZ+0rltdSHxuUUw73ZNSNctboaLQkz2ygO4kSZg== -X-Google-Smtp-Source: - AGHT+IEn4DDw7VvfhcVhjZx6AfZZp+iDzM6s6RxSA4wM8oGRbEEwrJxjkMtDfxGtuPQjJkuiEWQW+w== -X-Received: by 2002:a05:6808:4d4:b0:3a7:44da:d5e6 with SMTP id - a20-20020a05680804d400b003a744dad5e6mr9586643oie.38.1698044639506; - Mon, 23 Oct 2023 00:03:59 -0700 (PDT) -Received: from sjg1.roam.corp.google.com ([202.144.206.130]) - by smtp.gmail.com with ESMTPSA id - u187-20020a6279c4000000b006bde8e1f0adsm5910841pfc.98.2023.10.23.00.03.55 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Mon, 23 Oct 2023 00:03:59 -0700 (PDT) -From: Simon Glass -To: U-Boot Mailing List -Cc: Heinrich Schuchardt , - Guillaume Gardet , Tom Rini , - Simon Glass , Date Huang , - =?utf-8?q?Vincent_Stehl=C3=A9?= , - Ivan Ivanov -Subject: [PATCH 4/4] bootstd: Scan all bootdevs in a boot_targets entry (take - 2) -Date: Mon, 23 Oct 2023 00:02:13 -0700 -Message-ID: - <20231023000211.4.Ie4e7ba290d4957a88bebf306ca39f46618d9c363@changeid> -X-Mailer: git-send-email 2.42.0.655.g421f12c284-goog -In-Reply-To: <20231023070216.394709-1-sjg@chromium.org> -References: <20231023070216.394709-1-sjg@chromium.org> -MIME-Version: 1.0 -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 - -When the boot_targets environment variable is used with the distro-boot -scripts, each device is included individually. For example, if there -are three mmc devices, then we will have something like: - - boot_targets="mmc0 mmc1 mmc2" - -In contrast, standard boot supports specifying just the uclass, i.e.: - - boot_targets="mmc" - -The intention is that this should scan all MMC devices, but in fact it -currently only scans the first. - -Update the logic to handle this case, without required BOOTSTD_FULL to -be enabled. - -Signed-off-by: Simon Glass -Reported-by: Date Huang -Reported-by: Vincent Stehlé -Reported-by: Ivan Ivanov ---- - - boot/bootdev-uclass.c | 3 ++- - boot/bootflow.c | 22 ++++++++++++++++++++-- - test/boot/bootdev.c | 32 ++++++++++++++++++++++++++++++-- - 3 files changed, 52 insertions(+), 5 deletions(-) - -diff --git a/boot/bootdev-uclass.c b/boot/bootdev-uclass.c -index 974ddee5d2fa..44ae98a9269c 100644 ---- a/boot/bootdev-uclass.c -+++ b/boot/bootdev-uclass.c -@@ -469,10 +469,11 @@ int bootdev_find_by_label(const char *label, struct udevice **devp, - * if no sequence number was provided, we must scan all - * bootdevs for this media uclass - */ -- if (IS_ENABLED(CONFIG_BOOTSTD_FULL) && seq == -1) -+ if (seq == -1) - method_flags |= BOOTFLOW_METHF_SINGLE_UCLASS; - if (method_flagsp) - *method_flagsp = method_flags; -+ log_debug("method flags %x\n", method_flags); - return 0; - } - log_debug("- no device in %s\n", media->name); -diff --git a/boot/bootflow.c b/boot/bootflow.c -index 7f5b0e942078..be543c8588cc 100644 ---- a/boot/bootflow.c -+++ b/boot/bootflow.c -@@ -280,8 +280,26 @@ static int iter_incr(struct bootflow_iter *iter) - } else { - log_debug("labels %p\n", iter->labels); - if (iter->labels) { -- ret = bootdev_next_label(iter, &dev, -- &method_flags); -+ /* -+ * when the label is "mmc" we want to scan all -+ * mmc bootdevs, not just the first. See -+ * bootdev_find_by_label() where this flag is -+ * set up -+ */ -+ if (iter->method_flags & -+ BOOTFLOW_METHF_SINGLE_UCLASS) { -+ scan_next_in_uclass(&dev); -+ log_debug("looking for next device %s: %s\n", -+ iter->dev->name, -+ dev ? dev->name : ""); -+ } else { -+ dev = NULL; -+ } -+ if (!dev) { -+ log_debug("looking at next label\n"); -+ ret = bootdev_next_label(iter, &dev, -+ &method_flags); -+ } - } else { - ret = bootdev_next_prio(iter, &dev); - method_flags = 0; -diff --git a/test/boot/bootdev.c b/test/boot/bootdev.c -index 637861748057..0702fccdae60 100644 ---- a/test/boot/bootdev.c -+++ b/test/boot/bootdev.c -@@ -225,7 +225,7 @@ static int bootdev_test_order(struct unit_test_state *uts) - ut_assertok(env_set("boot_targets", "mmc1 mmc2 usb")); - ut_assertok(bootflow_scan_first(NULL, NULL, &iter, 0, &bflow)); - ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow)); -- ut_asserteq(3, iter.num_devs); -+ ut_asserteq(5, iter.num_devs); - ut_asserteq_str("mmc1.bootdev", iter.dev_used[0]->name); - ut_asserteq_str("mmc2.bootdev", iter.dev_used[1]->name); - ut_asserteq_str("usb_mass_storage.lun0.bootdev", -@@ -237,7 +237,20 @@ static int bootdev_test_order(struct unit_test_state *uts) - ut_assertok(bootflow_scan_first(NULL, "mmc", &iter, 0, &bflow)); - ut_asserteq(2, iter.num_devs); - -- /* Now scan pass mmc1 and make sure that only mmc0 shows up */ -+ /* Now scan past mmc1 and make sure that only mmc0 shows up */ -+ ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow)); -+ ut_asserteq(3, iter.num_devs); -+ ut_asserteq_str("mmc2.bootdev", iter.dev_used[0]->name); -+ ut_asserteq_str("mmc1.bootdev", iter.dev_used[1]->name); -+ ut_asserteq_str("mmc0.bootdev", iter.dev_used[2]->name); -+ bootflow_iter_uninit(&iter); -+ -+ /* Try a single uclass with boot_targets */ -+ ut_assertok(env_set("boot_targets", "mmc")); -+ ut_assertok(bootflow_scan_first(NULL, NULL, &iter, 0, &bflow)); -+ ut_asserteq(2, iter.num_devs); -+ -+ /* Now scan past mmc1 and make sure that only mmc0 shows up */ - ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow)); - ut_asserteq(3, iter.num_devs); - ut_asserteq_str("mmc2.bootdev", iter.dev_used[0]->name); -@@ -245,6 +258,21 @@ static int bootdev_test_order(struct unit_test_state *uts) - ut_asserteq_str("mmc0.bootdev", iter.dev_used[2]->name); - bootflow_iter_uninit(&iter); - -+ /* Try a single uclass with boot_targets */ -+ ut_assertok(env_set("boot_targets", "mmc usb")); -+ ut_assertok(bootflow_scan_first(NULL, NULL, &iter, 0, &bflow)); -+ ut_asserteq(2, iter.num_devs); -+ -+ /* Now scan past mmc1 and make sure that the 3 USB devices show up */ -+ ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow)); -+ ut_asserteq(6, iter.num_devs); -+ ut_asserteq_str("mmc2.bootdev", iter.dev_used[0]->name); -+ ut_asserteq_str("mmc1.bootdev", iter.dev_used[1]->name); -+ ut_asserteq_str("mmc0.bootdev", iter.dev_used[2]->name); -+ ut_asserteq_str("usb_mass_storage.lun0.bootdev", -+ iter.dev_used[3]->name); -+ bootflow_iter_uninit(&iter); -+ - return 0; - } - BOOTSTD_TEST(bootdev_test_order, UT_TESTF_DM | UT_TESTF_SCAN_FDT); diff --git a/uboot-tools.spec b/uboot-tools.spec index 798f97d..6635f59 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -23,8 +23,7 @@ Patch3: 0001-smbios-Simplify-reporting-of-unknown-values.patch Patch4: 0002-smbios-Fallback-to-the-default-DT-if-sysinfo-nodes-a.patch Patch5: enable-bootmenu-by-default.patch Patch6: uefi-Boot-var-automatic-management-for-removable-medias.patch -#Patch6: Add-video-damage-tracking.patch -#Patch7: bootstd-Test-and-boot_targets-improvements.patch +Patch7: Add-video-damage-tracking.patch # Board fixes and enablement # RPi - uses RPI firmware device tree for HAT support From cb6dd9961d7608bf4072257cae7f536897f06808 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 7 Dec 2023 14:49:13 +0000 Subject: [PATCH 162/271] 2024.01 RC4 --- ...Simplify-reporting-of-unknown-values.patch | 115 --- ...to-the-default-DT-if-sysinfo-nodes-a.patch | 242 ------ Provide-a-fallback-to-smbios-tables.patch | 686 ++++++++++++++++++ sources | 2 +- uboot-tools.spec | 11 +- 5 files changed, 694 insertions(+), 362 deletions(-) delete mode 100644 0001-smbios-Simplify-reporting-of-unknown-values.patch delete mode 100644 0002-smbios-Fallback-to-the-default-DT-if-sysinfo-nodes-a.patch create mode 100644 Provide-a-fallback-to-smbios-tables.patch diff --git a/0001-smbios-Simplify-reporting-of-unknown-values.patch b/0001-smbios-Simplify-reporting-of-unknown-values.patch deleted file mode 100644 index 6fd5dde..0000000 --- a/0001-smbios-Simplify-reporting-of-unknown-values.patch +++ /dev/null @@ -1,115 +0,0 @@ -From 6eb1fce7ca692b211ca467040cfe25a750ecc0fe Mon Sep 17 00:00:00 2001 -From: Ilias Apalodimas -Date: Tue, 6 Sep 2022 16:44:25 +0300 -Subject: [PATCH 1/2] smbios: Simplify reporting of unknown values - -If a value is not valid during the DT or SYSINFO parsing, we explicitly -set that to "Unknown Product" and "Unknown" for the product and -manufacturer respectively. It's cleaner if we move the checks insisde -smbios_add_string() and always report "Unknown" regardless of the missing -field. - -pre-patch dmidecode - -Handle 0x0001, DMI type 1, 27 bytes -System Information - Manufacturer: Unknown - Product Name: Unknown Product - Version: Not Specified - Serial Number: Not Specified - UUID: Not Settable - Wake-up Type: Reserved - SKU Number: Not Specified - Family: Not Specified - -[...] - -post-patch dmidecode: - -Handle 0x0001, DMI type 1, 27 bytes -System Information - Manufacturer: Unknown - Product Name: Unknown - Version: Unknown - Serial Number: Unknown - UUID: Not Settable - Wake-up Type: Reserved - SKU Number: Unknown - Family: Unknown -[...] - -Signed-off-by: Ilias Apalodimas -Reviewed-by: Peter Robinson -Tested-by: Peter Robinson ---- - lib/smbios.c | 17 +++-------------- - 1 file changed, 3 insertions(+), 14 deletions(-) - -diff --git a/lib/smbios.c b/lib/smbios.c -index d7f4999e8b2a..fcc8686993ef 100644 ---- a/lib/smbios.c -+++ b/lib/smbios.c -@@ -102,7 +102,7 @@ static int smbios_add_string(struct smbios_ctx *ctx, const char *str) - int i = 1; - char *p = ctx->eos; - -- if (!*str) -+ if (!str || !*str) - str = "Unknown"; - - for (;;) { -@@ -151,8 +151,7 @@ static int smbios_add_prop_si(struct smbios_ctx *ctx, const char *prop, - const char *str; - - str = ofnode_read_string(ctx->node, prop); -- if (str) -- return smbios_add_string(ctx, str); -+ return smbios_add_string(ctx, str); - } - - return 0; -@@ -231,7 +230,7 @@ static int smbios_write_type0(ulong *current, int handle, - t->vendor = smbios_add_string(ctx, "U-Boot"); - - t->bios_ver = smbios_add_prop(ctx, "version"); -- if (!t->bios_ver) -+ if (!strcmp(ctx->last_str, "Unknown")) - t->bios_ver = smbios_add_string(ctx, PLAIN_VERSION); - if (t->bios_ver) - gd->smbios_version = ctx->last_str; -@@ -281,11 +280,7 @@ static int smbios_write_type1(ulong *current, int handle, - fill_smbios_header(t, SMBIOS_SYSTEM_INFORMATION, len, handle); - smbios_set_eos(ctx, t->eos); - t->manufacturer = smbios_add_prop(ctx, "manufacturer"); -- if (!t->manufacturer) -- t->manufacturer = smbios_add_string(ctx, "Unknown"); - t->product_name = smbios_add_prop(ctx, "product"); -- if (!t->product_name) -- t->product_name = smbios_add_string(ctx, "Unknown Product"); - t->version = smbios_add_prop_si(ctx, "version", - SYSINFO_ID_SMBIOS_SYSTEM_VERSION); - if (serial_str) { -@@ -315,11 +310,7 @@ static int smbios_write_type2(ulong *current, int handle, - fill_smbios_header(t, SMBIOS_BOARD_INFORMATION, len, handle); - smbios_set_eos(ctx, t->eos); - t->manufacturer = smbios_add_prop(ctx, "manufacturer"); -- if (!t->manufacturer) -- t->manufacturer = smbios_add_string(ctx, "Unknown"); - t->product_name = smbios_add_prop(ctx, "product"); -- if (!t->product_name) -- t->product_name = smbios_add_string(ctx, "Unknown Product"); - t->version = smbios_add_prop_si(ctx, "version", - SYSINFO_ID_SMBIOS_BASEBOARD_VERSION); - t->asset_tag_number = smbios_add_prop(ctx, "asset-tag"); -@@ -344,8 +335,6 @@ static int smbios_write_type3(ulong *current, int handle, - fill_smbios_header(t, SMBIOS_SYSTEM_ENCLOSURE, len, handle); - smbios_set_eos(ctx, t->eos); - t->manufacturer = smbios_add_prop(ctx, "manufacturer"); -- if (!t->manufacturer) -- t->manufacturer = smbios_add_string(ctx, "Unknown"); - t->chassis_type = SMBIOS_ENCLOSURE_DESKTOP; - t->bootup_state = SMBIOS_STATE_SAFE; - t->power_supply_state = SMBIOS_STATE_SAFE; --- -2.40.1 - diff --git a/0002-smbios-Fallback-to-the-default-DT-if-sysinfo-nodes-a.patch b/0002-smbios-Fallback-to-the-default-DT-if-sysinfo-nodes-a.patch deleted file mode 100644 index a256b9b..0000000 --- a/0002-smbios-Fallback-to-the-default-DT-if-sysinfo-nodes-a.patch +++ /dev/null @@ -1,242 +0,0 @@ -From ed67997890981fda4f859cb96e523a0ec5b58042 Mon Sep 17 00:00:00 2001 -From: Ilias Apalodimas -Date: Tue, 6 Sep 2022 16:44:26 +0300 -Subject: [PATCH 2/2] smbios: Fallback to the default DT if sysinfo nodes are - missing - -In order to fill in the SMBIOS tables U-Boot currently relies on a -"u-boot,sysinfo-smbios" compatible node. This is fine for the boards -that already include such nodes. However with some recent EFI changes, -the majority of boards can boot up distros, which usually rely on -things like dmidecode etc for their reporting. For boards that -lack this special node the SMBIOS output looks like: - -System Information - Manufacturer: Unknown - Product Name: Unknown - Version: Unknown - Serial Number: Unknown - UUID: Not Settable - Wake-up Type: Reserved - SKU Number: Unknown - Family: Unknown - -This looks problematic since most of the info are "Unknown". The DT spec -specifies standard properties containing relevant information like -'model' and 'compatible' for which the suggested format is -. So let's add a last resort to our current -smbios parsing. If none of the sysinfo properties are found, we can -scan the root node for 'model' and 'compatible'. - -pre-patch dmidecode: - -Handle 0x0001, DMI type 1, 27 bytes -System Information - Manufacturer: Unknown - Product Name: Unknown - Version: Unknown - Serial Number: Unknown - UUID: Not Settable - Wake-up Type: Reserved - SKU Number: Unknown - Family: Unknown - -Handle 0x0002, DMI type 2, 14 bytes -Base Board Information - Manufacturer: Unknown - Product Name: Unknown - Version: Unknown - Serial Number: Not Specified - Asset Tag: Unknown - Features: - Board is a hosting board - Location In Chassis: Not Specified - Chassis Handle: 0x0000 - Type: Motherboard - -Handle 0x0003, DMI type 3, 21 bytes -Chassis Information - Manufacturer: Unknown - Type: Desktop - Lock: Not Present - Version: Not Specified - Serial Number: Not Specified - Asset Tag: Not Specified - Boot-up State: Safe - Power Supply State: Safe - Thermal State: Safe - Security Status: None - OEM Information: 0x00000000 - Height: Unspecified - Number Of Power Cords: Unspecified - Contained Elements: 0 - - -post-pastch dmidecode: - -Handle 0x0001, DMI type 1, 27 bytes -System Information - Manufacturer: socionext,developer-box - Product Name: Socionext Developer Box - Version: Unknown - Serial Number: Unknown - UUID: Not Settable - Wake-up Type: Reserved - SKU Number: Unknown - Family: Unknown - -Handle 0x0002, DMI type 2, 14 bytes -Base Board Information - Manufacturer: socionext,developer-box - Product Name: Socionext Developer Box - Version: Unknown - Serial Number: Not Specified - Asset Tag: Unknown - Features: - Board is a hosting board - Location In Chassis: Not Specified - Chassis Handle: 0x0000 - Type: Motherboard - -Handle 0x0003, DMI type 3, 21 bytes -Chassis Information - Manufacturer: socionext,developer-box - Type: Desktop - Lock: Not Present - Version: Not Specified - Serial Number: Not Specified - Asset Tag: Not Specified - Boot-up State: Safe - Power Supply State: Safe - Thermal State: Safe - Security Status: None - OEM Information: 0x00000000 - Height: Unspecified - Number Of Power Cords: Unspecified - Contained Elements: 0 - - -Signed-off-by: Ilias Apalodimas -Reviewed-by: Peter Robinson -Tested-by: Peter Robinson ---- - lib/smbios.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++---- - 1 file changed, 64 insertions(+), 4 deletions(-) - -diff --git a/lib/smbios.c b/lib/smbios.c -index fcc8686993ef..9c8e34625e65 100644 ---- a/lib/smbios.c -+++ b/lib/smbios.c -@@ -9,11 +9,13 @@ - #include - #include - #include -+#include - #include - #include - #include - #include - #include -+#include - #ifdef CONFIG_CPU - #include - #include -@@ -43,6 +45,25 @@ - - DECLARE_GLOBAL_DATA_PTR; - -+/** -+ * struct map_sysinfo - Mapping of sysinfo strings to DT -+ * -+ * @sysinfo_str: sysinfo string -+ * @dt_str: DT string -+ * @max: Max index of the tokenized string to pick. First element is 0 -+ * -+ */ -+struct map_sysinfo { -+ const char *sysinfo_str; -+ const char *dt_str; -+ int max; -+}; -+ -+static const struct map_sysinfo sysinfo_to_dt[] = { -+ { .sysinfo_str = "product", .dt_str = "model", 1 }, -+ { .sysinfo_str = "manufacturer", .dt_str = "compatible", 0 }, -+}; -+ - /** - * struct smbios_ctx - context for writing SMBIOS tables - * -@@ -87,6 +108,18 @@ struct smbios_write_method { - const char *subnode_name; - }; - -+static const struct map_sysinfo *convert_sysinfo_to_dt(const char *sysinfo_str) -+{ -+ int i; -+ -+ for (i = 0; i < ARRAY_SIZE(sysinfo_to_dt); i++) { -+ if (!strcmp(sysinfo_str, sysinfo_to_dt[i].sysinfo_str)) -+ return &sysinfo_to_dt[i]; -+ } -+ -+ return NULL; -+} -+ - /** - * smbios_add_string() - add a string to the string area - * -@@ -139,19 +172,46 @@ static int smbios_add_string(struct smbios_ctx *ctx, const char *str) - static int smbios_add_prop_si(struct smbios_ctx *ctx, const char *prop, - int sysinfo_id) - { -+ int ret = 0; -+ - if (sysinfo_id && ctx->dev) { - char val[SMBIOS_STR_MAX]; -- int ret; - - ret = sysinfo_get_str(ctx->dev, sysinfo_id, sizeof(val), val); - if (!ret) - return smbios_add_string(ctx, val); - } -+ - if (IS_ENABLED(CONFIG_OF_CONTROL)) { -- const char *str; -+ const char *str = NULL; -+ char str_tmp[128]; -+ char *token; - -- str = ofnode_read_string(ctx->node, prop); -- return smbios_add_string(ctx, str); -+ /* -+ * If the node is not valid fallback and try the entire DT -+ * so we can at least fill in maufacturer and board type -+ */ -+ if (!ofnode_valid(ctx->node)) { -+ const struct map_sysinfo *nprop; -+ -+ nprop = convert_sysinfo_to_dt(prop); -+ if (nprop) { -+ int cnt = 0; -+ -+ str = ofnode_read_string(ofnode_root(), nprop->dt_str); -+ strncpy(str_tmp, str, sizeof(str_tmp)); -+ token = strtok(str_tmp, ","); -+ while (token != NULL && cnt <= nprop->max) { -+ str = token; -+ token = strtok(NULL, ","); -+ cnt++; -+ } -+ } -+ } else { -+ str = ofnode_read_string(ctx->node, prop); -+ } -+ ret = smbios_add_string(ctx, str); -+ return ret; - } - - return 0; --- -2.40.1 - diff --git a/Provide-a-fallback-to-smbios-tables.patch b/Provide-a-fallback-to-smbios-tables.patch new file mode 100644 index 0000000..4ff8ac5 --- /dev/null +++ b/Provide-a-fallback-to-smbios-tables.patch @@ -0,0 +1,686 @@ +From patchwork Thu Dec 7 09:18:49 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Ilias Apalodimas +X-Patchwork-Id: 1873089 +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=linaro.org header.i=@linaro.org header.a=rsa-sha256 + header.s=google header.b=SyQQL6ZG; + 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) server-digest SHA384) + (No client certificate requested) + by legolas.ozlabs.org (Postfix) with ESMTPS id 4Sm7xz1DLXz23nD + for ; Thu, 7 Dec 2023 20:19:19 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 83BF287243; + Thu, 7 Dec 2023 10:19:05 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=linaro.org +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=linaro.org header.i=@linaro.org header.b="SyQQL6ZG"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 46C3C87243; Thu, 7 Dec 2023 10:19:04 +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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com + [IPv6:2a00:1450:4864:20::330]) + (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 21B8586FFE + for ; Thu, 7 Dec 2023 10:19:02 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=linaro.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=ilias.apalodimas@linaro.org +Received: by mail-wm1-x330.google.com with SMTP id + 5b1f17b1804b1-40c2c65e6aaso1041145e9.2 + for ; Thu, 07 Dec 2023 01:19:02 -0800 (PST) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=linaro.org; s=google; t=1701940741; x=1702545541; 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=vcf8Uy8SIKdN9TXuCeQubka7IJIfrvGMGj1JoUebFs0=; + b=SyQQL6ZGyEFpFFqauSbHRSSNY+KOw9ohESTeXyy7RkWEEIFaK7yPwRRy9NZX+DJLAJ + ECaT3Bchk61s+E1ZsuxrqdlxEYWDULw+4O2hm22gVZjL5L6r4+NwNgCHwzYW/bcro87o + KEGRF7CXG50v6mvrjAOHoy2LbojZLR9d7fjO4gmGtihdnTMOW1cjtrX/3Seiy99QoTK6 + 5Hs119W/hO0/5AE1VVSiIxV1Xx+qYcAHvQqcEEkBCKR2MpHTauUEonUf1LC5LKK2gKG5 + UEzq7XLrPki8hih4EcWsoctpdPp4kBtvpVSSshji9yxDX3EXKzcfA8xyqrB+5qKJU100 + zZ7A== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20230601; t=1701940741; x=1702545541; + 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=vcf8Uy8SIKdN9TXuCeQubka7IJIfrvGMGj1JoUebFs0=; + b=L6Ejctx8u+W0IeEi5FfC1q0ah2NYKTScSheLqomwMY3Q4/BPiEUP7KUarxUKsRwI/3 + yP4rTVAXqlGbT6kFKq3jrxXlRS4HIRZxtFbgHZEKuBnXpkHCQpvQwKUcYY9QkbfdZEir + 5YYfONEv2yTHHfoiBZiVmcPARIQ5+2ra+k493og2Bm0Hk5dVWyaHn/YY6Y+FCWH7ZYn0 + Eq1M9Ng8YB3oMx63KwV9XHBURccH8UdCqwsNDvk2gWLKdSvrjlFD7ExiySd90+i9+6vN + CMLoNESSYj2K9qW/sxbIDgUv1JwYCWgJrDejTzilfagawcPlKY2XtTnOlUsRryYrsPoq + RbZg== +X-Gm-Message-State: AOJu0YxG7g4q8NdX+N/0Mp5YNkHEVHntPyakSqHCtdqDzgaRcQCbtF0q + 2APTVIQc7yNsT16/19bvkV1NRw3x7lZmC4YcT+s= +X-Google-Smtp-Source: + AGHT+IFwnHtGX5IWm5lG5rRTsz6nU13lqUMnEUb8xEq/mngZuRtpzcNdrO7fNaBiIDDQLuKd+Y07Tw== +X-Received: by 2002:a05:600c:2184:b0:40b:dd1f:6dd1 with SMTP id + e4-20020a05600c218400b0040bdd1f6dd1mr1312043wme.240.1701940741617; + Thu, 07 Dec 2023 01:19:01 -0800 (PST) +Received: from localhost.localdomain (ppp046103111243.access.hol.gr. + [46.103.111.243]) by smtp.gmail.com with ESMTPSA id + u21-20020a05600c139500b00405d9a950a2sm1299003wmf.28.2023.12.07.01.19.00 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Thu, 07 Dec 2023 01:19:01 -0800 (PST) +From: Ilias Apalodimas +To: trini@konsulko.com, + sjg@chromium.org +Cc: sean.anderson@seco.com, neil.armstrong@linaro.org, + heinrich.schuchardt@canonical.com, mark.kettenis@xs4all.nl, + Ilias Apalodimas , u-boot@lists.denx.de +Subject: [PATCH 1/2 v3] smbios: Simplify reporting of unknown values +Date: Thu, 7 Dec 2023 11:18:49 +0200 +Message-Id: <20231207091850.17776-2-ilias.apalodimas@linaro.org> +X-Mailer: git-send-email 2.40.1 +In-Reply-To: <20231207091850.17776-1-ilias.apalodimas@linaro.org> +References: <20231207091850.17776-1-ilias.apalodimas@linaro.org> +MIME-Version: 1.0 +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 + +If a value is not valid during the DT or SYSINFO parsing, we explicitly +set that to "Unknown Product" and "Unknown" for the product and +manufacturer respectively. It's cleaner if we move the checks insisde +smbios_add_prop_si() and provide an alternative string in case the +primary is NULL or empty + +pre-patch dmidecode + +Handle 0x0001, DMI type 1, 27 bytes +System Information + Manufacturer: Unknown + Product Name: Unknown Product + Version: Not Specified + Serial Number: Not Specified + UUID: Not Settable + Wake-up Type: Reserved + SKU Number: Not Specified + Family: Not Specified + +[...] + +post-patch dmidecode: + +Handle 0x0001, DMI type 1, 27 bytes +System Information + Manufacturer: Unknown + Product Name: Unknown + Version: Unknown + Serial Number: Unknown + UUID: Not Settable + Wake-up Type: Reserved + SKU Number: Unknown + Family: Unknown +[...] + +While at it make smbios_add_prop_si() add a string directly if the prop +node is NULL and replace smbios_add_string() calls with +smbios_add_prop_si(ctx, NULL, ....) + +Signed-off-by: Ilias Apalodimas +--- +Changes since v2: +- refactor even more code and remove the smbios_add_string calls from the + main code. Instead use smbios_add_prop() foir everything and add a + default value, in case the parsed one is NULL or emtpy +Changes since v1: +- None + + lib/smbios.c | 73 +++++++++++++++++++++++++--------------------------- + 1 file changed, 35 insertions(+), 38 deletions(-) + +-- +2.40.1 + +diff --git a/lib/smbios.c b/lib/smbios.c +index d7f4999e8b2a..444aa245a273 100644 +--- a/lib/smbios.c ++++ b/lib/smbios.c +@@ -102,9 +102,6 @@ static int smbios_add_string(struct smbios_ctx *ctx, const char *str) + int i = 1; + char *p = ctx->eos; + +- if (!*str) +- str = "Unknown"; +- + for (;;) { + if (!*p) { + ctx->last_str = p; +@@ -134,11 +131,18 @@ static int smbios_add_string(struct smbios_ctx *ctx, const char *str) + * + * @ctx: context for writing the tables + * @prop: property to write ++ * @dval: Default value to use if the string is not found or is empty + * Return: 0 if not found, else SMBIOS string number (1 or more) + */ + static int smbios_add_prop_si(struct smbios_ctx *ctx, const char *prop, +- int sysinfo_id) ++ int sysinfo_id, const char *dval) + { ++ if (!dval || !*dval) ++ dval = "Unknown"; ++ ++ if (!prop) ++ return smbios_add_string(ctx, dval); ++ + if (sysinfo_id && ctx->dev) { + char val[SMBIOS_STR_MAX]; + int ret; +@@ -151,8 +155,8 @@ static int smbios_add_prop_si(struct smbios_ctx *ctx, const char *prop, + const char *str; + + str = ofnode_read_string(ctx->node, prop); +- if (str) +- return smbios_add_string(ctx, str); ++ ++ return smbios_add_string(ctx, str ? str : dval); + } + + return 0; +@@ -161,12 +165,15 @@ static int smbios_add_prop_si(struct smbios_ctx *ctx, const char *prop, + /** + * smbios_add_prop() - Add a property from the devicetree + * +- * @prop: property to write ++ * @prop: property to write. The default string will be written if ++ * prop is NULL ++ * @dval: Default value to use if the string is not found or is empty + * Return: 0 if not found, else SMBIOS string number (1 or more) + */ +-static int smbios_add_prop(struct smbios_ctx *ctx, const char *prop) ++static int smbios_add_prop(struct smbios_ctx *ctx, const char *prop, ++ const char *dval) + { +- return smbios_add_prop_si(ctx, prop, SYSINFO_ID_NONE); ++ return smbios_add_prop_si(ctx, prop, SYSINFO_ID_NONE, dval); + } + + static void smbios_set_eos(struct smbios_ctx *ctx, char *eos) +@@ -228,11 +235,9 @@ static int smbios_write_type0(ulong *current, int handle, + memset(t, 0, sizeof(struct smbios_type0)); + fill_smbios_header(t, SMBIOS_BIOS_INFORMATION, len, handle); + smbios_set_eos(ctx, t->eos); +- t->vendor = smbios_add_string(ctx, "U-Boot"); ++ t->vendor = smbios_add_prop(ctx, NULL, "U-Boot"); + +- t->bios_ver = smbios_add_prop(ctx, "version"); +- if (!t->bios_ver) +- t->bios_ver = smbios_add_string(ctx, PLAIN_VERSION); ++ t->bios_ver = smbios_add_prop(ctx, "version", PLAIN_VERSION); + if (t->bios_ver) + gd->smbios_version = ctx->last_str; + log_debug("smbios_version = %p: '%s'\n", gd->smbios_version, +@@ -241,7 +246,7 @@ static int smbios_write_type0(ulong *current, int handle, + print_buffer((ulong)gd->smbios_version, gd->smbios_version, + 1, strlen(gd->smbios_version) + 1, 0); + #endif +- t->bios_release_date = smbios_add_string(ctx, U_BOOT_DMI_DATE); ++ t->bios_release_date = smbios_add_prop(ctx, NULL, U_BOOT_DMI_DATE); + #ifdef CONFIG_ROM_SIZE + t->bios_rom_size = (CONFIG_ROM_SIZE / 65536) - 1; + #endif +@@ -280,22 +285,19 @@ static int smbios_write_type1(ulong *current, int handle, + memset(t, 0, sizeof(struct smbios_type1)); + fill_smbios_header(t, SMBIOS_SYSTEM_INFORMATION, len, handle); + smbios_set_eos(ctx, t->eos); +- t->manufacturer = smbios_add_prop(ctx, "manufacturer"); +- if (!t->manufacturer) +- t->manufacturer = smbios_add_string(ctx, "Unknown"); +- t->product_name = smbios_add_prop(ctx, "product"); +- if (!t->product_name) +- t->product_name = smbios_add_string(ctx, "Unknown Product"); ++ t->manufacturer = smbios_add_prop(ctx, "manufacturer", "Unknown"); ++ t->product_name = smbios_add_prop(ctx, "product", "Unknown"); + t->version = smbios_add_prop_si(ctx, "version", +- SYSINFO_ID_SMBIOS_SYSTEM_VERSION); ++ SYSINFO_ID_SMBIOS_SYSTEM_VERSION, ++ "Unknown"); + if (serial_str) { +- t->serial_number = smbios_add_string(ctx, serial_str); ++ t->serial_number = smbios_add_prop(ctx, NULL, serial_str); + strncpy((char *)t->uuid, serial_str, sizeof(t->uuid)); + } else { +- t->serial_number = smbios_add_prop(ctx, "serial"); ++ t->serial_number = smbios_add_prop(ctx, "serial", "Unknown"); + } +- t->sku_number = smbios_add_prop(ctx, "sku"); +- t->family = smbios_add_prop(ctx, "family"); ++ t->sku_number = smbios_add_prop(ctx, "sku", "Unknown"); ++ t->family = smbios_add_prop(ctx, "family", "Unknown"); + + len = t->length + smbios_string_table_len(ctx); + *current += len; +@@ -314,15 +316,12 @@ static int smbios_write_type2(ulong *current, int handle, + memset(t, 0, sizeof(struct smbios_type2)); + fill_smbios_header(t, SMBIOS_BOARD_INFORMATION, len, handle); + smbios_set_eos(ctx, t->eos); +- t->manufacturer = smbios_add_prop(ctx, "manufacturer"); +- if (!t->manufacturer) +- t->manufacturer = smbios_add_string(ctx, "Unknown"); +- t->product_name = smbios_add_prop(ctx, "product"); +- if (!t->product_name) +- t->product_name = smbios_add_string(ctx, "Unknown Product"); ++ t->manufacturer = smbios_add_prop(ctx, "manufacturer", "Unknown"); ++ t->product_name = smbios_add_prop(ctx, "product", "Unknown"); + t->version = smbios_add_prop_si(ctx, "version", +- SYSINFO_ID_SMBIOS_BASEBOARD_VERSION); +- t->asset_tag_number = smbios_add_prop(ctx, "asset-tag"); ++ SYSINFO_ID_SMBIOS_BASEBOARD_VERSION, ++ "Unknown"); ++ t->asset_tag_number = smbios_add_prop(ctx, "asset-tag", "Unknown"); + t->feature_flags = SMBIOS_BOARD_FEATURE_HOSTING; + t->board_type = SMBIOS_BOARD_MOTHERBOARD; + +@@ -343,9 +342,7 @@ static int smbios_write_type3(ulong *current, int handle, + memset(t, 0, sizeof(struct smbios_type3)); + fill_smbios_header(t, SMBIOS_SYSTEM_ENCLOSURE, len, handle); + smbios_set_eos(ctx, t->eos); +- t->manufacturer = smbios_add_prop(ctx, "manufacturer"); +- if (!t->manufacturer) +- t->manufacturer = smbios_add_string(ctx, "Unknown"); ++ t->manufacturer = smbios_add_prop(ctx, "manufacturer", "Unknown"); + t->chassis_type = SMBIOS_ENCLOSURE_DESKTOP; + t->bootup_state = SMBIOS_STATE_SAFE; + t->power_supply_state = SMBIOS_STATE_SAFE; +@@ -388,8 +385,8 @@ static void smbios_write_type4_dm(struct smbios_type4 *t, + #endif + + t->processor_family = processor_family; +- t->processor_manufacturer = smbios_add_string(ctx, vendor); +- t->processor_version = smbios_add_string(ctx, name); ++ t->processor_manufacturer = smbios_add_prop(ctx, NULL, vendor); ++ t->processor_version = smbios_add_prop(ctx, NULL, name); + } + + static int smbios_write_type4(ulong *current, int handle, + +From patchwork Thu Dec 7 09:18:50 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Ilias Apalodimas +X-Patchwork-Id: 1873090 +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=linaro.org header.i=@linaro.org header.a=rsa-sha256 + header.s=google header.b=KcFhbOkM; + 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) server-digest SHA384) + (No client certificate requested) + by legolas.ozlabs.org (Postfix) with ESMTPS id 4Sm7yF71l9z23nD + for ; Thu, 7 Dec 2023 20:19:33 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 7D6CB87483; + Thu, 7 Dec 2023 10:19:07 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=linaro.org +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=linaro.org header.i=@linaro.org header.b="KcFhbOkM"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id B1E298745E; Thu, 7 Dec 2023 10:19:05 +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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com + [IPv6:2a00:1450:4864:20::433]) + (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 792A8871BB + for ; Thu, 7 Dec 2023 10:19:03 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=linaro.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=ilias.apalodimas@linaro.org +Received: by mail-wr1-x433.google.com with SMTP id + ffacd0b85a97d-3334a701cbbso717814f8f.0 + for ; Thu, 07 Dec 2023 01:19:03 -0800 (PST) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=linaro.org; s=google; t=1701940743; x=1702545543; 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=JIRbBgzEcdaHWJ7fVa5JIsDJda65F2tSuL1aji2tJ5U=; + b=KcFhbOkMkvXbThdeAeI92+uSdN5LvKdwae+36Z/jz0Hg0yPDs5v8UqeDt2d+NaSlh9 + GERy8kIMCopTcJ13FoUM8Ok4PBSMRSDxbJo4lLaGIbddw7hcit4uxhJfTAL8zKxnboMU + YBZPC/E2NjWklmJx6p4zmLeXS5IzncTaDE9z2XFMRGrJ/KLqpTvwOp/nf57jP/kdIxpe + Q7vWAhVY8gC19ogSD41RB4ixA0HefI6xKq6fAl2GwvRlOvCEGAcVdpbl8aj5R8qEOSVT + BsuqzbDXHlQI6L9Y++Yqe89LcKMRoAWqHrgOuO3eBwnEp2jjjzV8G24mTFD+4wso1ERo + mIkQ== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20230601; t=1701940743; x=1702545543; + 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=JIRbBgzEcdaHWJ7fVa5JIsDJda65F2tSuL1aji2tJ5U=; + b=pee1V3/z6lW4enMw0ueHvBJJXGhNLq7KccXmY4QkXfVRLXGBOedbBwQH1KXDxj/gJs + RZ/KhsEvPN4qeqrqpeOnQoDBQs3QarjlsMHmlhnlBZMpgPKTJyg5MEpZPAlnfqZJkd4A + vMMYc1fZ+alT5gfZjdzpLypC2sOj9yC3ktb8ZYXQGQzN7yCYrQnBHgiYn3vDDaHMaQNH + n73RxiQNWJs9Ekow2hxk4l2FDpvlwuiFr9y+dnuzo5TvpbgaDbj64tcqxalnusBw3jKC + fE6r5cob553rh/ZM/bVJD/PIXP+LOSUHyiqJG+7KpEpSAY984EIHkKFRRbLHSIuwBAK+ + wTIw== +X-Gm-Message-State: AOJu0YwQcpf2rvKZHAPWsPT7fH7x3sa+mhF5kDJ557Oe9zwmQc4v6NzO + ZFEgE8KlljYnqibJKd2JdRCP6A== +X-Google-Smtp-Source: + AGHT+IEfJolrJ5g6Qgn465DsdBpMZMW+cn6kVgLvehQIXNT7VcXYfkBvC8Hf5zXnl7Q5Yto7bS2tOg== +X-Received: by 2002:a05:600c:d5:b0:40b:5e59:99c6 with SMTP id + u21-20020a05600c00d500b0040b5e5999c6mr940484wmm.230.1701940742953; + Thu, 07 Dec 2023 01:19:02 -0800 (PST) +Received: from localhost.localdomain (ppp046103111243.access.hol.gr. + [46.103.111.243]) by smtp.gmail.com with ESMTPSA id + u21-20020a05600c139500b00405d9a950a2sm1299003wmf.28.2023.12.07.01.19.01 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Thu, 07 Dec 2023 01:19:02 -0800 (PST) +From: Ilias Apalodimas +To: trini@konsulko.com, + sjg@chromium.org +Cc: sean.anderson@seco.com, neil.armstrong@linaro.org, + heinrich.schuchardt@canonical.com, mark.kettenis@xs4all.nl, + Ilias Apalodimas , u-boot@lists.denx.de +Subject: [PATCH 2/2 v3] smbios: Fallback to the default DT if sysinfo nodes + are missing +Date: Thu, 7 Dec 2023 11:18:50 +0200 +Message-Id: <20231207091850.17776-3-ilias.apalodimas@linaro.org> +X-Mailer: git-send-email 2.40.1 +In-Reply-To: <20231207091850.17776-1-ilias.apalodimas@linaro.org> +References: <20231207091850.17776-1-ilias.apalodimas@linaro.org> +MIME-Version: 1.0 +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 + +In order to fill in the SMBIOS tables U-Boot currently relies on a +"u-boot,sysinfo-smbios" compatible node. This is fine for the boards +that already include such nodes. However with some recent EFI changes, +the majority of boards can boot up distros, which usually rely on +things like dmidecode etc for their reporting. For boards that +lack this special node the SMBIOS output looks like: + +System Information + Manufacturer: Unknown + Product Name: Unknown + Version: Unknown + Serial Number: Unknown + UUID: Not Settable + Wake-up Type: Reserved + SKU Number: Unknown + Family: Unknown + +This looks problematic since most of the info are "Unknown". The DT spec +specifies standard properties containing relevant information like +'model' and 'compatible' for which the suggested format is +. Unfortunately the 'model' string found in DTs is +usually lacking the manufacturer so we can't use it for both +'Manufacturer' and 'Product Name' SMBIOS entries reliably. + +So let's add a last resort to our current smbios parsing. If none of +the sysinfo properties are found, scan for those information in the +root node of the device tree. Use the 'model' to fill the 'Product +Name' and the first value of 'compatible' for the 'Manufacturer', since +that always contains one. + +pre-patch: +Handle 0x0001, DMI type 1, 27 bytes +System Information + Manufacturer: Unknown + Product Name: Unknown + Version: Unknown + Serial Number: 100000000bb24ceb + UUID: 30303031-3030-3030-3061-613234636435 + Wake-up Type: Reserved + SKU Number: Unknown + Family: Unknown +[...] + +and post patch: +Handle 0x0001, DMI type 1, 27 bytes +System Information + Manufacturer: raspberrypi + Product Name: Raspberry Pi 4 Model B Rev 1.1 + Version: Unknown + Serial Number: 100000000bb24ceb + UUID: 30303031-3030-3030-3061-613234636435 + Wake-up Type: Reserved + SKU Number: Unknown + Family: Unknown +[...] + +Signed-off-by: Ilias Apalodimas +--- +Simon, I'll work with tou on the refactoring you wanted and +remove the EFI requirement of SMBIOS in !x86 platforms. +Since this code has no tests, I'll add some once the refactoring +is done + +Changes since v2: +- Spelling mistakes +- rebase on top of patch #1 changes +Changes since v1: +- Tokenize the DT node entry and use the appropriate value instead of + the entire string +- Removed Peters tested/reviewed-by tags due to the above + lib/smbios.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 89 insertions(+), 5 deletions(-) + +-- +2.40.1 + +diff --git a/lib/smbios.c b/lib/smbios.c +index 444aa245a273..3f0e1d529537 100644 +--- a/lib/smbios.c ++++ b/lib/smbios.c +@@ -9,11 +9,14 @@ + #include + #include + #include ++#include + #include + #include + #include + #include + #include ++#include ++#include + #ifdef CONFIG_CPU + #include + #include +@@ -43,6 +46,25 @@ + + DECLARE_GLOBAL_DATA_PTR; + ++/** ++ * struct map_sysinfo - Mapping of sysinfo strings to DT ++ * ++ * @sysinfo_str: sysinfo string ++ * @dt_str: DT string ++ * @max: Max index of the tokenized string to pick. Counting starts from 0 ++ * ++ */ ++struct map_sysinfo { ++ const char *sysinfo_str; ++ const char *dt_str; ++ int max; ++}; ++ ++static const struct map_sysinfo sysinfo_to_dt[] = { ++ { .sysinfo_str = "product", .dt_str = "model", 2 }, ++ { .sysinfo_str = "manufacturer", .dt_str = "compatible", 1 }, ++}; ++ + /** + * struct smbios_ctx - context for writing SMBIOS tables + * +@@ -87,6 +109,18 @@ struct smbios_write_method { + const char *subnode_name; + }; + ++static const struct map_sysinfo *convert_sysinfo_to_dt(const char *sysinfo_str) ++{ ++ int i; ++ ++ for (i = 0; i < ARRAY_SIZE(sysinfo_to_dt); i++) { ++ if (!strcmp(sysinfo_str, sysinfo_to_dt[i].sysinfo_str)) ++ return &sysinfo_to_dt[i]; ++ } ++ ++ return NULL; ++} ++ + /** + * smbios_add_string() - add a string to the string area + * +@@ -124,6 +158,42 @@ static int smbios_add_string(struct smbios_ctx *ctx, const char *str) + } + } + ++/** ++ * get_str_from_dt - Get a substring from a DT property. ++ * After finding the property in the DT, the function ++ * will parse comma-separated values and return the value. ++ * If nprop->max exceeds the number of comma-separated ++ * elements, the last non NULL value will be returned. ++ * Counting starts from zero. ++ * ++ * @nprop: sysinfo property to use ++ * @str: pointer to fill with data ++ * @size: str buffer length ++ */ ++static ++void get_str_from_dt(const struct map_sysinfo *nprop, char *str, size_t size) ++{ ++ const char *dt_str; ++ int cnt = 0; ++ char *token; ++ ++ memset(str, 0, size); ++ if (!nprop || !nprop->max) ++ return; ++ ++ dt_str = ofnode_read_string(ofnode_root(), nprop->dt_str); ++ if (!dt_str) ++ return; ++ ++ memcpy(str, dt_str, size); ++ token = strtok(str, ","); ++ while (token && cnt < nprop->max) { ++ strlcpy(str, token, strlen(token) + 1); ++ token = strtok(NULL, ","); ++ cnt++; ++ } ++} ++ + /** + * smbios_add_prop_si() - Add a property from the devicetree or sysinfo + * +@@ -137,6 +207,8 @@ static int smbios_add_string(struct smbios_ctx *ctx, const char *str) + static int smbios_add_prop_si(struct smbios_ctx *ctx, const char *prop, + int sysinfo_id, const char *dval) + { ++ int ret; ++ + if (!dval || !*dval) + dval = "Unknown"; + +@@ -145,18 +217,30 @@ static int smbios_add_prop_si(struct smbios_ctx *ctx, const char *prop, + + if (sysinfo_id && ctx->dev) { + char val[SMBIOS_STR_MAX]; +- int ret; + + ret = sysinfo_get_str(ctx->dev, sysinfo_id, sizeof(val), val); + if (!ret) + return smbios_add_string(ctx, val); + } + if (IS_ENABLED(CONFIG_OF_CONTROL)) { +- const char *str; +- +- str = ofnode_read_string(ctx->node, prop); ++ const char *str = NULL; ++ char str_dt[128] = { 0 }; ++ /* ++ * If the node is not valid fallback and try the entire DT ++ * so we can at least fill in manufacturer and board type ++ */ ++ if (ofnode_valid(ctx->node)) { ++ str = ofnode_read_string(ctx->node, prop); ++ } else { ++ const struct map_sysinfo *nprop; ++ ++ nprop = convert_sysinfo_to_dt(prop); ++ get_str_from_dt(nprop, str_dt, sizeof(str_dt)); ++ str = (const char *)str_dt; ++ } + +- return smbios_add_string(ctx, str ? str : dval); ++ ret = smbios_add_string(ctx, str && *str ? str : dval); ++ return ret; + } + + return 0; diff --git a/sources b/sources index a04670b..baad200 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2024.01-rc3.tar.bz2) = 51a45e6a0008ef04570b6357518c85fd22604be0090ad5bf1dc7c821eb34ea33441314c49128dd0bd3084406b7138497044bb47f7e57d38a680768fb9f2f6577 +SHA512 (u-boot-2024.01-rc4.tar.bz2) = 02ad9abe2a0c34fb11e75f75b1d76a4dc2df2886ed00f0fbec090cfe87d586becfee7c1edce8e95d26d1e34ead26faf928d17fdc6f8dee158a73f93c0078ae0a diff --git a/uboot-tools.spec b/uboot-tools.spec index 6635f59..e77092e 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc3 +%global candidate rc4 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2024.01 -Release: 0.1%{?candidate:.%{candidate}}%{?dist} +Release: 0.2%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ @@ -19,8 +19,7 @@ Source1: aarch64-boards Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch Patch2: disable-VBE-by-default.patch -Patch3: 0001-smbios-Simplify-reporting-of-unknown-values.patch -Patch4: 0002-smbios-Fallback-to-the-default-DT-if-sysinfo-nodes-a.patch +Patch3: Provide-a-fallback-to-smbios-tables.patch Patch5: enable-bootmenu-by-default.patch Patch6: uefi-Boot-var-automatic-management-for-removable-medias.patch Patch7: Add-video-damage-tracking.patch @@ -215,6 +214,10 @@ cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand %endif %changelog +* Thu Dec 07 2023 Peter Robinson - 1:2024.01-0.2.rc4 +- Update to 2024.01 RC4 +- Rebase SMBIOS patch to latest rev + * Fri Nov 24 2023 Peter Robinson - 1:2024.01-0.1.rc3 - Update to 2024.01 RC3 From 6bcb24bf3d7addaee76c7d5925b4c2399847c1d8 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Fri, 8 Dec 2023 12:22:27 +0000 Subject: [PATCH 163/271] cleanup board specific docs --- uboot-tools.spec | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index e77092e..b7ab293 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -191,17 +191,9 @@ install -p -m 0644 doc/mkimage.1 %{buildroot}%{_mandir}/man1 install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} ( cd %{buildroot}%{_bindir}; ln -sf fw_printenv fw_setenv ) -# Copy some useful docs over -mkdir -p builds/docs -cp -p board/hisilicon/hikey/README builds/docs/README.hikey -cp -p board/rockchip/evb_rk3399/README builds/docs/README.evb_rk3399 -cp -p board/sunxi/README.sunxi64 builds/docs/README.sunxi64 -cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand - %files %doc README doc/develop/distro.rst doc/README.gpt -%doc doc/README.rockchip doc/develop/uefi doc/usage doc/arch/arm64.rst -%doc builds/docs/* doc/board/amlogic/ doc/board/rockchip/ +%doc doc/develop/uefi doc/usage doc/arch/arm64.rst %{_bindir}/* %{_mandir}/man1/mkimage.1* %dir %{_datadir}/uboot/ From eafba21345fc59c167f58ce881c01bb156d9bbcc Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Thu, 14 Dec 2023 14:28:34 +0100 Subject: [PATCH 164/271] Enable qemu aarch64 board Useful for testing aarch64 uboot stuff with qemu's aarch64 virt machine. --- aarch64-boards | 1 + 1 file changed, 1 insertion(+) diff --git a/aarch64-boards b/aarch64-boards index ac90276..39a556a 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -66,6 +66,7 @@ pinephone-pro-rk3399 pinetab poplar puma-rk3399 +qemu_arm64 roc-cc-rk3328 rock64-rk3328 rock960-rk3399 From 7b44a7f95beb2772dcf55939d801b05e6ab0a556 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 8 Jan 2024 22:18:37 +0000 Subject: [PATCH 165/271] 2024.01 --- ...-the-DT-provided-by-the-Raspberry-Pi.patch | 141 -- ...tch-to-OF_HAS_PRIOR_STAGE-by-default.patch | 154 ++ rpi5-initial-support.patch | 1910 +++++++++++++++++ sources | 2 +- uboot-tools.spec | 11 +- ...atic-management-for-removable-medias.patch | 154 +- 6 files changed, 2162 insertions(+), 210 deletions(-) delete mode 100644 rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch create mode 100644 rpi-Switch-to-OF_HAS_PRIOR_STAGE-by-default.patch create mode 100644 rpi5-initial-support.patch diff --git a/rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch b/rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch deleted file mode 100644 index fd032fe..0000000 --- a/rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch +++ /dev/null @@ -1,141 +0,0 @@ -From 52b75976133683dc9fe66e8ad35127125f938bed Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Tue, 28 Feb 2023 12:04:34 +0000 -Subject: [PATCH 2/2] rpi: Use OF_BOARD rather than OF_EMBED - -The use of OF_EMBED isn't recommended for standard use and the OF_BOARD -is actually a better fit for the Raspberry Pi as the prior firmware -provides a DT that can be used by U-Boot and the subsequent OS too, but -it still allows the loading of a DT from disk as well if users wish -to use the upstream kernel DT. - -Signed-off-by: Peter Robinson ---- - configs/rpi_0_w_defconfig | 2 +- - configs/rpi_2_defconfig | 2 +- - configs/rpi_3_32b_defconfig | 2 +- - configs/rpi_3_b_plus_defconfig | 2 +- - configs/rpi_3_defconfig | 2 +- - configs/rpi_4_32b_defconfig | 1 + - configs/rpi_4_defconfig | 1 + - configs/rpi_arm64_defconfig | 1 + - configs/rpi_defconfig | 2 +- - 9 files changed, 9 insertions(+), 6 deletions(-) - -diff --git a/configs/rpi_0_w_defconfig b/configs/rpi_0_w_defconfig -index 5249b29d76c..8c217848ca2 100644 ---- a/configs/rpi_0_w_defconfig -+++ b/configs/rpi_0_w_defconfig -@@ -23,7 +23,7 @@ CONFIG_CMD_GPIO=y - CONFIG_CMD_MMC=y - CONFIG_CMD_USB=y - CONFIG_CMD_FS_UUID=y --CONFIG_OF_EMBED=y -+CONFIG_OF_BOARD=y - CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" - CONFIG_SYS_RELOC_GD_ENV_ADDR=y - CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y -diff --git a/configs/rpi_2_defconfig b/configs/rpi_2_defconfig -index 154284765f4..bfc5679fb7e 100644 ---- a/configs/rpi_2_defconfig -+++ b/configs/rpi_2_defconfig -@@ -24,7 +24,7 @@ CONFIG_CMD_GPIO=y - CONFIG_CMD_MMC=y - CONFIG_CMD_USB=y - CONFIG_CMD_FS_UUID=y --CONFIG_OF_EMBED=y -+CONFIG_OF_BOARD=y - CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" - CONFIG_SYS_RELOC_GD_ENV_ADDR=y - CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y -diff --git a/configs/rpi_3_32b_defconfig b/configs/rpi_3_32b_defconfig -index ef1f25d2ad7..54cdcee980a 100644 ---- a/configs/rpi_3_32b_defconfig -+++ b/configs/rpi_3_32b_defconfig -@@ -23,7 +23,7 @@ CONFIG_CMD_GPIO=y - CONFIG_CMD_MMC=y - CONFIG_CMD_USB=y - CONFIG_CMD_FS_UUID=y --CONFIG_OF_EMBED=y -+CONFIG_OF_BOARD=y - CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" - CONFIG_SYS_RELOC_GD_ENV_ADDR=y - CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y -diff --git a/configs/rpi_3_b_plus_defconfig b/configs/rpi_3_b_plus_defconfig -index 154615d78a1..3008c7a1c18 100644 ---- a/configs/rpi_3_b_plus_defconfig -+++ b/configs/rpi_3_b_plus_defconfig -@@ -22,7 +22,7 @@ CONFIG_CMD_GPIO=y - CONFIG_CMD_MMC=y - CONFIG_CMD_USB=y - CONFIG_CMD_FS_UUID=y --CONFIG_OF_EMBED=y -+CONFIG_OF_BOARD=y - CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" - CONFIG_SYS_RELOC_GD_ENV_ADDR=y - CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y -diff --git a/configs/rpi_3_defconfig b/configs/rpi_3_defconfig -index f0cf7f8e236..f7b9108ba00 100644 ---- a/configs/rpi_3_defconfig -+++ b/configs/rpi_3_defconfig -@@ -22,7 +22,7 @@ CONFIG_CMD_GPIO=y - CONFIG_CMD_MMC=y - CONFIG_CMD_USB=y - CONFIG_CMD_FS_UUID=y --CONFIG_OF_EMBED=y -+CONFIG_OF_BOARD=y - CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" - CONFIG_SYS_RELOC_GD_ENV_ADDR=y - CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y -diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig -index 713b2ee231c..fa20ab767fe 100644 ---- a/configs/rpi_4_32b_defconfig -+++ b/configs/rpi_4_32b_defconfig -@@ -24,6 +24,7 @@ CONFIG_CMD_MMC=y - CONFIG_CMD_PCI=y - CONFIG_CMD_USB=y - CONFIG_CMD_FS_UUID=y -+CONFIG_OF_BOARD=y - CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" - CONFIG_SYS_RELOC_GD_ENV_ADDR=y - CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y -diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig -index 24f70b14fe8..741d4dbbbf4 100644 ---- a/configs/rpi_4_defconfig -+++ b/configs/rpi_4_defconfig -@@ -24,6 +24,7 @@ CONFIG_CMD_MMC=y - CONFIG_CMD_PCI=y - CONFIG_CMD_USB=y - CONFIG_CMD_FS_UUID=y -+CONFIG_OF_BOARD=y - CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" - CONFIG_SYS_RELOC_GD_ENV_ADDR=y - CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y -diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig -index 1d1ff12a58c..5e1195dd786 100644 ---- a/configs/rpi_arm64_defconfig -+++ b/configs/rpi_arm64_defconfig -@@ -23,6 +23,7 @@ CONFIG_CMD_MMC=y - CONFIG_CMD_PCI=y - CONFIG_CMD_USB=y - CONFIG_CMD_FS_UUID=y -+CONFIG_OF_BOARD=y - CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" - CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y - CONFIG_TFTP_TSIZE=y -diff --git a/configs/rpi_defconfig b/configs/rpi_defconfig -index 28b92b14456..1504093eddf 100644 ---- a/configs/rpi_defconfig -+++ b/configs/rpi_defconfig -@@ -23,7 +23,7 @@ CONFIG_CMD_GPIO=y - CONFIG_CMD_MMC=y - CONFIG_CMD_USB=y - CONFIG_CMD_FS_UUID=y --CONFIG_OF_EMBED=y -+CONFIG_OF_BOARD=y - CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" - CONFIG_SYS_RELOC_GD_ENV_ADDR=y - CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y --- -2.39.2 - diff --git a/rpi-Switch-to-OF_HAS_PRIOR_STAGE-by-default.patch b/rpi-Switch-to-OF_HAS_PRIOR_STAGE-by-default.patch new file mode 100644 index 0000000..9ac9512 --- /dev/null +++ b/rpi-Switch-to-OF_HAS_PRIOR_STAGE-by-default.patch @@ -0,0 +1,154 @@ +From 5aaa4c98be87eef370a0c50bf6d4ab7f9fcde886 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Mon, 8 Jan 2024 22:13:59 +0000 +Subject: [PATCH] rpi: Switch to OF_HAS_PRIOR_STAGE by default +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +On all Raspberry Pi platforms, we're loaded by a prior stage firmware +that has assembled and passed on a device tree binary for us to use. +Switch to using this tree by default. + +Signed-off-by: Peter Robinson +Cc: Matthias Brugger +Cc: Simon Glass +Cc: François Ozog +Signed-off-by: Tom Rini +Tested-by: Simon Glass +--- +To be clear, this is on top of current -next where I've applied v8 of +Simon's series that introduces OF_HAS_PRIOR_STAGE. + +I've only been able to test this on my Raspberry Pi 3 boards but this +should work everywhere. What may, or may not, be a problem is that +arch/arm/dts/bcm283x-u-boot.dtsi is never used now. On the other hand, +I believe this should stop the problems we have where changes made to +the device tree via config.txt or similar aren't reflected when booting +U-Boot or Linux since we will be using that tree for certain now. +--- + arch/arm/Kconfig | 1 + + arch/arm/mach-bcm283x/Kconfig | 3 --- + configs/rpi_0_w_defconfig | 1 - + configs/rpi_2_defconfig | 1 - + configs/rpi_3_32b_defconfig | 1 - + configs/rpi_3_b_plus_defconfig | 1 - + configs/rpi_3_defconfig | 1 - + configs/rpi_defconfig | 1 - + 8 files changed, 1 insertion(+), 9 deletions(-) + +diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig +index 1fd7aacc380..33bbe7b4898 100644 +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig +@@ -645,6 +645,7 @@ config ARCH_BCM283X + select SERIAL_SEARCH_ALL + imply CMD_DM + imply FAT_WRITE ++ imply OF_HAS_PRIOR_STAGE + + config ARCH_BCMSTB + bool "Broadcom BCM7XXX family" +diff --git a/arch/arm/mach-bcm283x/Kconfig b/arch/arm/mach-bcm283x/Kconfig +index 6ce278c6d29..b3287ce8bce 100644 +--- a/arch/arm/mach-bcm283x/Kconfig ++++ b/arch/arm/mach-bcm283x/Kconfig +@@ -163,7 +163,6 @@ config TARGET_RPI_4_32B + + This option creates a build targeting the ARMv7/AArch32 ISA. + select BCM2711_32B +- imply OF_HAS_PRIOR_STAGE + + config TARGET_RPI_4 + bool "Raspberry Pi 4 64-bit build" +@@ -189,7 +188,6 @@ config TARGET_RPI_4 + + This option creates a build targeting the ARMv8/AArch64 ISA. + select BCM2711_64B +- imply OF_HAS_PRIOR_STAGE + + config TARGET_RPI_ARM64 + bool "Raspberry Pi one binary 64-bit build" +@@ -197,7 +195,6 @@ config TARGET_RPI_ARM64 + Support for all armv8 based Raspberry Pi variants, such as + the RPi 4 model B, in AArch64 (64-bit) mode. + select ARM64 +- imply OF_HAS_PRIOR_STAGE + + endchoice + +diff --git a/configs/rpi_0_w_defconfig b/configs/rpi_0_w_defconfig +index bed143d64d6..98f8904c918 100644 +--- a/configs/rpi_0_w_defconfig ++++ b/configs/rpi_0_w_defconfig +@@ -24,7 +24,6 @@ CONFIG_CMD_GPIO=y + CONFIG_CMD_MMC=y + CONFIG_CMD_USB=y + CONFIG_CMD_FS_UUID=y +-CONFIG_OF_EMBED=y + CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" + CONFIG_SYS_RELOC_GD_ENV_ADDR=y + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y +diff --git a/configs/rpi_2_defconfig b/configs/rpi_2_defconfig +index e4e4843e8cd..1b8676e1d10 100644 +--- a/configs/rpi_2_defconfig ++++ b/configs/rpi_2_defconfig +@@ -25,7 +25,6 @@ CONFIG_CMD_GPIO=y + CONFIG_CMD_MMC=y + CONFIG_CMD_USB=y + CONFIG_CMD_FS_UUID=y +-CONFIG_OF_EMBED=y + CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" + CONFIG_SYS_RELOC_GD_ENV_ADDR=y + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y +diff --git a/configs/rpi_3_32b_defconfig b/configs/rpi_3_32b_defconfig +index 215396599e4..abc10a79ada 100644 +--- a/configs/rpi_3_32b_defconfig ++++ b/configs/rpi_3_32b_defconfig +@@ -24,7 +24,6 @@ CONFIG_CMD_GPIO=y + CONFIG_CMD_MMC=y + CONFIG_CMD_USB=y + CONFIG_CMD_FS_UUID=y +-CONFIG_OF_EMBED=y + CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" + CONFIG_SYS_RELOC_GD_ENV_ADDR=y + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y +diff --git a/configs/rpi_3_b_plus_defconfig b/configs/rpi_3_b_plus_defconfig +index d1ec55e558a..3c8f8fc1bb7 100644 +--- a/configs/rpi_3_b_plus_defconfig ++++ b/configs/rpi_3_b_plus_defconfig +@@ -23,7 +23,6 @@ CONFIG_CMD_GPIO=y + CONFIG_CMD_MMC=y + CONFIG_CMD_USB=y + CONFIG_CMD_FS_UUID=y +-CONFIG_OF_EMBED=y + CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" + CONFIG_SYS_RELOC_GD_ENV_ADDR=y + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y +diff --git a/configs/rpi_3_defconfig b/configs/rpi_3_defconfig +index 8e9c35b3cef..9853c448809 100644 +--- a/configs/rpi_3_defconfig ++++ b/configs/rpi_3_defconfig +@@ -23,7 +23,6 @@ CONFIG_CMD_GPIO=y + CONFIG_CMD_MMC=y + CONFIG_CMD_USB=y + CONFIG_CMD_FS_UUID=y +-CONFIG_OF_EMBED=y + CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" + CONFIG_SYS_RELOC_GD_ENV_ADDR=y + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y +diff --git a/configs/rpi_defconfig b/configs/rpi_defconfig +index 89d6372c1de..060a8809506 100644 +--- a/configs/rpi_defconfig ++++ b/configs/rpi_defconfig +@@ -24,7 +24,6 @@ CONFIG_CMD_GPIO=y + CONFIG_CMD_MMC=y + CONFIG_CMD_USB=y + CONFIG_CMD_FS_UUID=y +-CONFIG_OF_EMBED=y + CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" + CONFIG_SYS_RELOC_GD_ENV_ADDR=y + CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y +-- +2.43.0 + diff --git a/rpi5-initial-support.patch b/rpi5-initial-support.patch new file mode 100644 index 0000000..4a79f31 --- /dev/null +++ b/rpi5-initial-support.patch @@ -0,0 +1,1910 @@ +From patchwork Mon Dec 18 21:03:35 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Ivan T. Ivanov" +X-Patchwork-Id: 1877649 +X-Patchwork-Delegate: pbrobinson@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +Authentication-Results: legolas.ozlabs.org; + dkim=pass (1024-bit key; + unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 + header.s=susede2_rsa header.b=frMNX+46; + dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 + header.s=susede2_ed25519 header.b=IseK5QVE; + dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de + header.a=rsa-sha256 header.s=susede2_rsa header.b=1pz5pvm/; + dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 + header.s=susede2_ed25519 header.b=fIckdee4; + 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) server-digest SHA384) + (No client certificate requested) + by legolas.ozlabs.org (Postfix) with ESMTPS id 4SvC455lk9z1ydc + for ; Tue, 19 Dec 2023 08:04:05 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 92DDD8753C; + Mon, 18 Dec 2023 22:03:54 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; + dkim=pass (1024-bit key; + unprotected) header.d=suse.de header.i=@suse.de header.b="frMNX+46"; + dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de + header.b="IseK5QVE"; + dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de + header.b="1pz5pvm/"; + dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de + header.b="fIckdee4"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 95A7F87525; Mon, 18 Dec 2023 22:03: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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no + version=3.4.2 +Received: from smtp-out1.suse.de (smtp-out1.suse.de + [IPv6:2a07:de40:b251:101:10:150:64:1]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 0B37B87530 + for ; Mon, 18 Dec 2023 22:03:51 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=iivanov@suse.de +Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org + [10.150.64.97]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) + by smtp-out1.suse.de (Postfix) with ESMTPS id 6EE4F2228D; + Mon, 18 Dec 2023 21:03:49 +0000 (UTC) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_rsa; + t=1702933430; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=KH3AWH4E2OZnkKkgKspHqUQ687KHDd+TcmlhsjT4WMY=; + b=frMNX+46FgFSdyN24UT7Y4WdFDJKcOxcjH0HyyTrZsMcayuXoLtERkmRllSmLu8aRAoWOI + dzM9aX7eK9EHwuozUVijinsJ6wKpvqwxEx0Kdnj3wKPjAS3KTXGwfYiuZeO5wmbGRytEXd + p252vWhSG5L4UgaWil84yA4iM0KqiPs= +DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_ed25519; t=1702933430; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=KH3AWH4E2OZnkKkgKspHqUQ687KHDd+TcmlhsjT4WMY=; + b=IseK5QVEh+KCaimaGVOvt6lv9A9n/uQ/xO6kky5hugt4tubeSnhwGXuCjHTIEZhYi9auSr + Q6h6Mb/o4bd7u1CQ== +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_rsa; + t=1702933429; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=KH3AWH4E2OZnkKkgKspHqUQ687KHDd+TcmlhsjT4WMY=; + b=1pz5pvm/SI3fxjKAlUcM+pRnK+NKLVbl/0Kj+UUQ/R29Irq4CDjfgTyaU0/DIXgn3x7Ttl + 2U7+per0J38TYiYHjQSDlrdPq4CwSFX2IEFS6sA5jx41ySG3RgO51Hh5GXKFh/WDUjcsn6 + ZPLcQCP31JjxHhULkzjaYLVYE2rQuXE= +DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_ed25519; t=1702933429; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=KH3AWH4E2OZnkKkgKspHqUQ687KHDd+TcmlhsjT4WMY=; + b=fIckdee4Yc6Iut7CdcyZnDHxDW58F+dY46W7JLg6y7iXnfDkSc0DETyb97S3ngS7GdF3OQ + HPy/QFdHWA8p8cBw== +Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) + by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id D359F13C92; + Mon, 18 Dec 2023 21:03:48 +0000 (UTC) +Received: from dovecot-director2.suse.de ([10.150.64.162]) + by imap1.dmz-prg2.suse.org with ESMTPSA id 4CUUMbSzgGUtZAAAD6G6ig + (envelope-from ); Mon, 18 Dec 2023 21:03:48 +0000 +From: "Ivan T. Ivanov" +To: Matthias Brugger , + Peter Robinson +Cc: Dmitry Malkin , + Thomas Fitzsimmons , Peng Fan , + Jaehoon Chung , Anatolij Gustschin , + wahrenst@gmx.net, florian.fainelli@broadcom.com, u-boot@lists.denx.de, + "Ivan T . Ivanov" +Subject: [PATCH v3 1/7] rpi5: add initial memory map for bcm2712 +Date: Mon, 18 Dec 2023 23:03:35 +0200 +Message-ID: <20231218210341.30073-2-iivanov@suse.de> +X-Mailer: git-send-email 2.43.0 +In-Reply-To: <20231218210341.30073-1-iivanov@suse.de> +References: <20231218210341.30073-1-iivanov@suse.de> +MIME-Version: 1.0 +Authentication-Results: smtp-out1.suse.de; + none +X-Spamd-Result: default: False [0.70 / 50.00]; ARC_NA(0.00)[]; + RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; + TO_DN_SOME(0.00)[]; FREEMAIL_ENVRCPT(0.00)[gmail.com,gmx.net]; + R_MISSING_CHARSET(2.50)[]; MIME_GOOD(-0.10)[text/plain]; + TO_MATCH_ENVRCPT_ALL(0.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; + NEURAL_HAM_LONG(-1.00)[-1.000]; RCVD_COUNT_THREE(0.00)[3]; + DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; + NEURAL_HAM_SHORT(-0.20)[-1.000]; RCPT_COUNT_SEVEN(0.00)[11]; + MID_CONTAINS_FROM(1.00)[]; + DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:email,bedrocksystems.com:email]; + FREEMAIL_TO(0.00)[suse.com,gmail.com]; + FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; + MIME_TRACE(0.00)[0:+]; + FREEMAIL_CC(0.00)[bedrocksystems.com,fitzsim.org,nxp.com,samsung.com,denx.de,gmx.net,broadcom.com,lists.denx.de,suse.de]; + RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-3.00)[100.00%] +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 + +From: Dmitry Malkin + +includes: +* 1GB of RAM (from 4GB or 8GB total) +* VPU memory interface +* AXI ranges (main peripherals) + +Signed-off-by: Dmitry Malkin +Signed-off-by: Ivan T. Ivanov +--- + arch/arm/mach-bcm283x/init.c | 38 +++++++++++++++++++++++++++++++++++- + 1 file changed, 37 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c +index 7265faf6ce..af23b9711a 100644 +--- a/arch/arm/mach-bcm283x/init.c ++++ b/arch/arm/mach-bcm283x/init.c +@@ -19,7 +19,7 @@ + #ifdef CONFIG_ARM64 + #include + +-#define MEM_MAP_MAX_ENTRIES (4) ++#define MEM_MAP_MAX_ENTRIES (5) + + static struct mm_region bcm283x_mem_map[MEM_MAP_MAX_ENTRIES] = { + { +@@ -68,6 +68,41 @@ static struct mm_region bcm2711_mem_map[MEM_MAP_MAX_ENTRIES] = { + } + }; + ++static struct mm_region bcm2712_mem_map[MEM_MAP_MAX_ENTRIES] = { ++ { ++ .virt = 0x00000000UL, ++ .phys = 0x00000000UL, ++ .size = 0x3f800000UL, ++ .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | ++ PTE_BLOCK_INNER_SHARE ++ }, { ++ .virt = 0x3f800000UL, ++ .phys = 0x3f800000UL, ++ .size = 0x00800000UL, ++ .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | ++ PTE_BLOCK_NON_SHARE | ++ PTE_BLOCK_PXN | PTE_BLOCK_UXN ++ }, { ++ /* Beginning of AXI bus where uSD controller lives */ ++ .virt = 0x1000000000UL, ++ .phys = 0x1000000000UL, ++ .size = 0x0002000000UL, ++ .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | ++ PTE_BLOCK_NON_SHARE | ++ PTE_BLOCK_PXN | PTE_BLOCK_UXN ++ }, { ++ .virt = 0x107c000000UL, ++ .phys = 0x107c000000UL, ++ .size = 0x0004000000UL, ++ .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | ++ PTE_BLOCK_NON_SHARE | ++ PTE_BLOCK_PXN | PTE_BLOCK_UXN ++ }, { ++ /* List terminator */ ++ 0, ++ } ++}; ++ + struct mm_region *mem_map = bcm283x_mem_map; + + /* +@@ -78,6 +113,7 @@ static const struct udevice_id board_ids[] = { + { .compatible = "brcm,bcm2837", .data = (ulong)&bcm283x_mem_map}, + { .compatible = "brcm,bcm2838", .data = (ulong)&bcm2711_mem_map}, + { .compatible = "brcm,bcm2711", .data = (ulong)&bcm2711_mem_map}, ++ { .compatible = "brcm,bcm2712", .data = (ulong)&bcm2712_mem_map}, + { }, + }; + + +From patchwork Mon Dec 18 21:03:36 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Ivan T. Ivanov" +X-Patchwork-Id: 1877650 +X-Patchwork-Delegate: pbrobinson@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +Authentication-Results: legolas.ozlabs.org; + dkim=pass (1024-bit key; + unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 + header.s=susede2_rsa header.b=v1KGWKJg; + dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 + header.s=susede2_ed25519 header.b=fFiq02vw; + dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de + header.a=rsa-sha256 header.s=susede2_rsa header.b=v1KGWKJg; + dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 + header.s=susede2_ed25519 header.b=fFiq02vw; + 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 4SvC4H2hzjz1ydc + for ; Tue, 19 Dec 2023 08:04:15 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id C85A08758C; + Mon, 18 Dec 2023 22:03:57 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; + dkim=pass (1024-bit key; + unprotected) header.d=suse.de header.i=@suse.de header.b="v1KGWKJg"; + dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de + header.b="fFiq02vw"; + dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de + header.b="v1KGWKJg"; + dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de + header.b="fFiq02vw"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 6F50F87530; Mon, 18 Dec 2023 22:03:54 +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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no + version=3.4.2 +Received: from smtp-out2.suse.de (smtp-out2.suse.de + [IPv6:2a07:de40:b251:101:10:150:64:2]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 199488753C + for ; Mon, 18 Dec 2023 22:03:51 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=iivanov@suse.de +Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org + [10.150.64.97]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) + by smtp-out2.suse.de (Postfix) with ESMTPS id 1AC1A1F46E; + Mon, 18 Dec 2023 21:03:50 +0000 (UTC) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_rsa; + t=1702933430; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=sHJ8RNAoNPDg1bwvhFF8CpHTHHBRfcz53X69wMjqM8s=; + b=v1KGWKJgJttai7C79qIEMd/XpNIgzFqndAnylh2LCSBCYnAQmHcbTcoqWFl1mbR0bCIJ2B + nnbHB6CW+/Ja2oUD0wavAmzqzhQ+ANsN8FLZ+RC4p4W0fnMs6Yz9lMDf8ozKecEdna61Q6 + 2SnPjyXAogWLFBBDalRvdzUIOIWe3Tc= +DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_ed25519; t=1702933430; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=sHJ8RNAoNPDg1bwvhFF8CpHTHHBRfcz53X69wMjqM8s=; + b=fFiq02vw2EIwrIbp2ltl5amzeQZi9NS1k/nH07K65OVAZc8eRyKu/vHbdjX58887t//OZ/ + 6LuVBS0afgkEbWCg== +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_rsa; + t=1702933430; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=sHJ8RNAoNPDg1bwvhFF8CpHTHHBRfcz53X69wMjqM8s=; + b=v1KGWKJgJttai7C79qIEMd/XpNIgzFqndAnylh2LCSBCYnAQmHcbTcoqWFl1mbR0bCIJ2B + nnbHB6CW+/Ja2oUD0wavAmzqzhQ+ANsN8FLZ+RC4p4W0fnMs6Yz9lMDf8ozKecEdna61Q6 + 2SnPjyXAogWLFBBDalRvdzUIOIWe3Tc= +DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_ed25519; t=1702933430; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=sHJ8RNAoNPDg1bwvhFF8CpHTHHBRfcz53X69wMjqM8s=; + b=fFiq02vw2EIwrIbp2ltl5amzeQZi9NS1k/nH07K65OVAZc8eRyKu/vHbdjX58887t//OZ/ + 6LuVBS0afgkEbWCg== +Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) + by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 7FCBC133E5; + Mon, 18 Dec 2023 21:03:49 +0000 (UTC) +Received: from dovecot-director2.suse.de ([10.150.64.162]) + by imap1.dmz-prg2.suse.org with ESMTPSA id AH+lHLWzgGUtZAAAD6G6ig + (envelope-from ); Mon, 18 Dec 2023 21:03:49 +0000 +From: "Ivan T. Ivanov" +To: Matthias Brugger , + Peter Robinson +Cc: Dmitry Malkin , + Thomas Fitzsimmons , Peng Fan , + Jaehoon Chung , Anatolij Gustschin , + wahrenst@gmx.net, florian.fainelli@broadcom.com, u-boot@lists.denx.de, + "Ivan T . Ivanov" +Subject: [PATCH v3 2/7] rpi5: Use devicetree as alternative way to read IO + base addresses +Date: Mon, 18 Dec 2023 23:03:36 +0200 +Message-ID: <20231218210341.30073-3-iivanov@suse.de> +X-Mailer: git-send-email 2.43.0 +In-Reply-To: <20231218210341.30073-1-iivanov@suse.de> +References: <20231218210341.30073-1-iivanov@suse.de> +MIME-Version: 1.0 +X-Spamd-Result: default: False [10.00 / 50.00]; ARC_NA(0.00)[]; + RCVD_VIA_SMTP_AUTH(0.00)[]; BAYES_SPAM(5.10)[100.00%]; + FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; + FREEMAIL_ENVRCPT(0.00)[gmail.com,gmx.net]; + R_MISSING_CHARSET(2.50)[]; MIME_GOOD(-0.10)[text/plain]; + TO_MATCH_ENVRCPT_ALL(0.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; + RCVD_COUNT_THREE(0.00)[3]; + DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; + RCPT_COUNT_SEVEN(0.00)[11]; MID_CONTAINS_FROM(1.00)[]; + DBL_BLOCKED_OPENRESOLVER(0.00)[bedrocksystems.com:email,suse.de:email]; + FREEMAIL_TO(0.00)[suse.com,gmail.com]; + FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; + MIME_TRACE(0.00)[0:+]; + FREEMAIL_CC(0.00)[bedrocksystems.com,fitzsim.org,nxp.com,samsung.com,denx.de,gmx.net,broadcom.com,lists.denx.de,suse.de]; + RCVD_TLS_ALL(0.00)[] +Authentication-Results: smtp-out2.suse.de; + none +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 + +From: Dmitry Malkin + +MBOX and Watchdog on RPi5/bcm2712 has a different base IO offsets. +Find them via devicetree blob passed by bootloader. + +Signed-off-by: Dmitry Malkin +Signed-off-by: Ivan T. Ivanov +--- + arch/arm/mach-bcm283x/include/mach/base.h | 5 ++- + arch/arm/mach-bcm283x/include/mach/mbox.h | 3 +- + arch/arm/mach-bcm283x/include/mach/sdhci.h | 3 +- + arch/arm/mach-bcm283x/include/mach/timer.h | 3 +- + arch/arm/mach-bcm283x/include/mach/wdog.h | 3 +- + arch/arm/mach-bcm283x/init.c | 43 ++++++++++++++++++---- + 6 files changed, 43 insertions(+), 17 deletions(-) + +diff --git a/arch/arm/mach-bcm283x/include/mach/base.h b/arch/arm/mach-bcm283x/include/mach/base.h +index 4ccaf69693..6de99e7ea1 100644 +--- a/arch/arm/mach-bcm283x/include/mach/base.h ++++ b/arch/arm/mach-bcm283x/include/mach/base.h +@@ -6,7 +6,10 @@ + #ifndef _BCM283x_BASE_H_ + #define _BCM283x_BASE_H_ + +-extern unsigned long rpi_bcm283x_base; ++extern unsigned long rpi_mbox_base; ++extern unsigned long rpi_timer_base; ++extern unsigned long rpi_sdhci_base; ++extern unsigned long rpi_wdog_base; + + #ifdef CONFIG_ARMV7_LPAE + #ifdef CONFIG_TARGET_RPI_4_32B +diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h +index 490664f878..35d4e2f075 100644 +--- a/arch/arm/mach-bcm283x/include/mach/mbox.h ++++ b/arch/arm/mach-bcm283x/include/mach/mbox.h +@@ -38,8 +38,7 @@ + + /* Raw mailbox HW */ + +-#define BCM2835_MBOX_PHYSADDR ({ BUG_ON(!rpi_bcm283x_base); \ +- rpi_bcm283x_base + 0x0000b880; }) ++#define BCM2835_MBOX_PHYSADDR rpi_mbox_base + + struct bcm2835_mbox_regs { + u32 read; +diff --git a/arch/arm/mach-bcm283x/include/mach/sdhci.h b/arch/arm/mach-bcm283x/include/mach/sdhci.h +index 7323690687..e837c679c4 100644 +--- a/arch/arm/mach-bcm283x/include/mach/sdhci.h ++++ b/arch/arm/mach-bcm283x/include/mach/sdhci.h +@@ -8,8 +8,7 @@ + + #include + +-#define BCM2835_SDHCI_PHYSADDR ({ BUG_ON(!rpi_bcm283x_base); \ +- rpi_bcm283x_base + 0x00300000; }) ++#define BCM2835_SDHCI_PHYSADDR rpi_sdhci_base + + int bcm2835_sdhci_init(u32 regbase, u32 emmc_freq); + +diff --git a/arch/arm/mach-bcm283x/include/mach/timer.h b/arch/arm/mach-bcm283x/include/mach/timer.h +index 5567dbd7f3..60500a256d 100644 +--- a/arch/arm/mach-bcm283x/include/mach/timer.h ++++ b/arch/arm/mach-bcm283x/include/mach/timer.h +@@ -11,8 +11,7 @@ + #include + #endif + +-#define BCM2835_TIMER_PHYSADDR ({ BUG_ON(!rpi_bcm283x_base); \ +- rpi_bcm283x_base + 0x00003000; }) ++#define BCM2835_TIMER_PHYSADDR rpi_timer_base + + #define BCM2835_TIMER_CS_M3 (1 << 3) + #define BCM2835_TIMER_CS_M2 (1 << 2) +diff --git a/arch/arm/mach-bcm283x/include/mach/wdog.h b/arch/arm/mach-bcm283x/include/mach/wdog.h +index 9942666720..b950560674 100644 +--- a/arch/arm/mach-bcm283x/include/mach/wdog.h ++++ b/arch/arm/mach-bcm283x/include/mach/wdog.h +@@ -8,8 +8,7 @@ + + #include + +-#define BCM2835_WDOG_PHYSADDR ({ BUG_ON(!rpi_bcm283x_base); \ +- rpi_bcm283x_base + 0x00100000; }) ++#define BCM2835_WDOG_PHYSADDR rpi_wdog_base + + struct bcm2835_wdog_regs { + u32 unknown0[7]; +diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c +index af23b9711a..1c5c748484 100644 +--- a/arch/arm/mach-bcm283x/init.c ++++ b/arch/arm/mach-bcm283x/init.c +@@ -151,7 +151,11 @@ static void rpi_update_mem_map(void) + static void rpi_update_mem_map(void) {} + #endif + +-unsigned long rpi_bcm283x_base = 0x3f000000; ++/* Default bcm283x devices addresses */ ++unsigned long rpi_mbox_base = 0x3f00b880; ++unsigned long rpi_sdhci_base = 0x3f300000; ++unsigned long rpi_wdog_base = 0x3f100000; ++unsigned long rpi_timer_base = 0x3f003000; + + int arch_cpu_init(void) + { +@@ -162,22 +166,45 @@ int arch_cpu_init(void) + + int mach_cpu_init(void) + { +- int ret, soc_offset; ++ int ret, soc, offset; + u64 io_base, size; + + rpi_update_mem_map(); + + /* Get IO base from device tree */ +- soc_offset = fdt_path_offset(gd->fdt_blob, "/soc"); +- if (soc_offset < 0) +- return soc_offset; ++ soc = fdt_path_offset(gd->fdt_blob, "/soc"); ++ if (soc < 0) ++ return soc; + +- ret = fdt_read_range((void *)gd->fdt_blob, soc_offset, 0, NULL, +- &io_base, &size); ++ ret = fdt_read_range((void *)gd->fdt_blob, soc, 0, NULL, ++ &io_base, &size); + if (ret) + return ret; + +- rpi_bcm283x_base = io_base; ++ rpi_mbox_base = io_base + 0x00b880; ++ rpi_sdhci_base = io_base + 0x300000; ++ rpi_wdog_base = io_base + 0x100000; ++ rpi_timer_base = io_base + 0x003000; ++ ++ offset = fdt_node_offset_by_compatible(gd->fdt_blob, soc, ++ "brcm,bcm2835-mbox"); ++ if (offset > soc) ++ rpi_mbox_base = fdt_get_base_address(gd->fdt_blob, offset); ++ ++ offset = fdt_node_offset_by_compatible(gd->fdt_blob, soc, ++ "brcm,bcm2835-sdhci"); ++ if (offset > soc) ++ rpi_sdhci_base = fdt_get_base_address(gd->fdt_blob, offset); ++ ++ offset = fdt_node_offset_by_compatible(gd->fdt_blob, soc, ++ "brcm,bcm2835-system-timer"); ++ if (offset > soc) ++ rpi_timer_base = fdt_get_base_address(gd->fdt_blob, offset); ++ ++ offset = fdt_node_offset_by_compatible(gd->fdt_blob, soc, ++ "brcm,bcm2712-pm"); ++ if (offset > soc) ++ rpi_wdog_base = fdt_get_base_address(gd->fdt_blob, offset); + + return 0; + } + +From patchwork Mon Dec 18 21:03:37 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Ivan T. Ivanov" +X-Patchwork-Id: 1877652 +X-Patchwork-Delegate: pbrobinson@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +Authentication-Results: legolas.ozlabs.org; + dkim=pass (1024-bit key; + unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 + header.s=susede2_rsa header.b=MuifTv9w; + dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 + header.s=susede2_ed25519 header.b=J2WonmZQ; + dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de + header.a=rsa-sha256 header.s=susede2_rsa header.b=driIaEaW; + dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 + header.s=susede2_ed25519 header.b=ENBj4l6/; + 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 4SvC4h1PpHz1ydc + for ; Tue, 19 Dec 2023 08:04:36 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id BC5CE87656; + Mon, 18 Dec 2023 22:03:58 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; + dkim=pass (1024-bit key; + unprotected) header.d=suse.de header.i=@suse.de header.b="MuifTv9w"; + dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de + header.b="J2WonmZQ"; + dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de + header.b="driIaEaW"; + dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de + header.b="ENBj4l6/"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 24B3087578; Mon, 18 Dec 2023 22:03: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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 +Received: from smtp-out1.suse.de (smtp-out1.suse.de + [IPv6:2a07:de40:b251:101:10:150:64:1]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 34BC9875A0 + for ; Mon, 18 Dec 2023 22:03:52 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=iivanov@suse.de +Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org + [10.150.64.97]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) + by smtp-out1.suse.de (Postfix) with ESMTPS id B98772226F; + Mon, 18 Dec 2023 21:03:50 +0000 (UTC) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_rsa; + t=1702933431; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=fHScQy8dlQ4zBcmmXyg7xTO2N+HoZRyPs/mSsXUaidA=; + b=MuifTv9wBEOLgWscWoGcXg+RGB8+btC5sRFciLLURyCkDcUQuguKCF0MB5CUHbvIFDKQTs + 3cu6hcIxZ1sJPOhJYAQlW90dBLsORX0sI25Eq4VgPGCsldwfrQ6KFwJmGJHKAf1t3bAtsp + bXmOjkuzkGiYTERqgRtFHlM+jbjtULk= +DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_ed25519; t=1702933431; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=fHScQy8dlQ4zBcmmXyg7xTO2N+HoZRyPs/mSsXUaidA=; + b=J2WonmZQu47jTWrv+1hYLdw1tZ+mNBDcST4N3FHxlTW7EY6hSg3i0FkVDYqumfQMZdddMp + jagUtFA6k1hguwCQ== +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_rsa; + t=1702933430; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=fHScQy8dlQ4zBcmmXyg7xTO2N+HoZRyPs/mSsXUaidA=; + b=driIaEaWsaR+g9AcK8SGiaVWp2t8QtO7GFM918C1n2Mg0Ag01KOyoFkVXAvjXENou/caP6 + mszp+EvY1mp+ZR5gwQMkbkHBxQ10VWiFHcSdpA6ZicAD8PbXnb4DO5mEFRyVbxDu6b9fHp + mNp6oBcymc5k4gJFdfomnV1ubqgcp38= +DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_ed25519; t=1702933430; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=fHScQy8dlQ4zBcmmXyg7xTO2N+HoZRyPs/mSsXUaidA=; + b=ENBj4l6/3jkDUxi4yY5WR8ECQN9jENKPjLTTKM7yT4ET1rZJ3jbU297szl97aZN4oQ41A9 + z8StT2qNvcfjYQCA== +Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) + by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 2AC2D13C93; + Mon, 18 Dec 2023 21:03:50 +0000 (UTC) +Received: from dovecot-director2.suse.de ([10.150.64.162]) + by imap1.dmz-prg2.suse.org with ESMTPSA id EE/zB7azgGUtZAAAD6G6ig + (envelope-from ); Mon, 18 Dec 2023 21:03:50 +0000 +From: "Ivan T. Ivanov" +To: Matthias Brugger , + Peter Robinson +Cc: Dmitry Malkin , + Thomas Fitzsimmons , Peng Fan , + Jaehoon Chung , Anatolij Gustschin , + wahrenst@gmx.net, florian.fainelli@broadcom.com, u-boot@lists.denx.de, + "Ivan T. Ivanov" +Subject: [PATCH v3 3/7] rpi5: Use devicetree to retrieve board revision +Date: Mon, 18 Dec 2023 23:03:37 +0200 +Message-ID: <20231218210341.30073-4-iivanov@suse.de> +X-Mailer: git-send-email 2.43.0 +In-Reply-To: <20231218210341.30073-1-iivanov@suse.de> +References: <20231218210341.30073-1-iivanov@suse.de> +MIME-Version: 1.0 +Authentication-Results: smtp-out1.suse.de; + none +X-Spamd-Result: default: False [1.14 / 50.00]; ARC_NA(0.00)[]; + RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; + TO_DN_SOME(0.00)[]; FREEMAIL_ENVRCPT(0.00)[gmail.com,gmx.net]; + R_MISSING_CHARSET(2.50)[]; MIME_GOOD(-0.10)[text/plain]; + TO_MATCH_ENVRCPT_ALL(0.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; + NEURAL_HAM_LONG(-1.00)[-1.000]; + R_RATELIMIT(0.00)[to_ip_from(RL9dd9h8xg9qpm5f14t9e5w4zz)]; + RCVD_COUNT_THREE(0.00)[3]; + DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; + NEURAL_HAM_SHORT(-0.20)[-1.000]; RCPT_COUNT_SEVEN(0.00)[11]; + MID_CONTAINS_FROM(1.00)[]; + DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:email]; + FREEMAIL_TO(0.00)[suse.com,gmail.com]; + FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; + MIME_TRACE(0.00)[0:+]; + FREEMAIL_CC(0.00)[bedrocksystems.com,fitzsim.org,nxp.com,samsung.com,denx.de,gmx.net,broadcom.com,lists.denx.de,suse.de]; + RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-2.56)[98.03%] +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 + +Firmware on RPi5 return error on board revision query +through firmware interface, but on the other hand it fills +"linux,revision" in "system" node, so use it to detect board +revision. + + system { + linux,revision = <0xc04170>; + linux,serial = <0x6cf44e80 0x3c533ede>; + }; + +Signed-off-by: Ivan T. Ivanov +--- + board/raspberrypi/rpi/rpi.c | 22 +++++++++++++++++++--- + 1 file changed, 19 insertions(+), 3 deletions(-) + +diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c +index cd823ad746..2851ebc985 100644 +--- a/board/raspberrypi/rpi/rpi.c ++++ b/board/raspberrypi/rpi/rpi.c +@@ -171,6 +171,11 @@ static const struct rpi_model rpi_models_new_scheme[] = { + DTB_DIR "bcm2711-rpi-cm4.dtb", + true, + }, ++ [0x17] = { ++ "5 Model B", ++ DTB_DIR "bcm2712-rpi-5-b.dtb", ++ true, ++ }, + }; + + static const struct rpi_model rpi_models_old_scheme[] = { +@@ -429,15 +434,27 @@ static void get_board_revision(void) + int ret; + const struct rpi_model *models; + uint32_t models_count; ++ ofnode node; + + BCM2835_MBOX_INIT_HDR(msg); + BCM2835_MBOX_INIT_TAG(&msg->get_board_rev, GET_BOARD_REV); + + ret = bcm2835_mbox_call_prop(BCM2835_MBOX_PROP_CHAN, &msg->hdr); + if (ret) { +- printf("bcm2835: Could not query board revision\n"); + /* Ignore error; not critical */ +- return; ++ node = ofnode_path("/system"); ++ if (!ofnode_valid(node)) { ++ printf("bcm2835: Could not find /system node\n"); ++ return; ++ } ++ ++ ret = ofnode_read_u32(node, "linux,revision", &revision); ++ if (ret) { ++ printf("bcm2835: Could not find linux,revision\n"); ++ return; ++ } ++ } else { ++ revision = msg->get_board_rev.body.resp.rev; + } + + /* +@@ -451,7 +468,6 @@ static void get_board_revision(void) + * http://www.raspberrypi.org/forums/viewtopic.php?f=63&t=98367&start=250 + * http://www.raspberrypi.org/forums/viewtopic.php?f=31&t=20594 + */ +- revision = msg->get_board_rev.body.resp.rev; + if (revision & 0x800000) { + rev_scheme = 1; + rev_type = (revision >> 4) & 0xff; + +From patchwork Mon Dec 18 21:03:38 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Ivan T. Ivanov" +X-Patchwork-Id: 1877651 +X-Patchwork-Delegate: pbrobinson@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +Authentication-Results: legolas.ozlabs.org; + dkim=pass (1024-bit key; + unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 + header.s=susede2_rsa header.b=v2vbP3rz; + dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 + header.s=susede2_ed25519 header.b=DCEhbGvW; + dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de + header.a=rsa-sha256 header.s=susede2_rsa header.b=v2vbP3rz; + dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 + header.s=susede2_ed25519 header.b=DCEhbGvW; + 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) server-digest SHA384) + (No client certificate requested) + by legolas.ozlabs.org (Postfix) with ESMTPS id 4SvC4X1dxWz1ydc + for ; Tue, 19 Dec 2023 08:04:28 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 516EE875B6; + Mon, 18 Dec 2023 22:03:58 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; + dkim=pass (1024-bit key; + unprotected) header.d=suse.de header.i=@suse.de header.b="v2vbP3rz"; + dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de + header.b="DCEhbGvW"; + dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de + header.b="v2vbP3rz"; + dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de + header.b="DCEhbGvW"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id B3A6E87578; Mon, 18 Dec 2023 22:03: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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no + version=3.4.2 +Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id AF6918758C + for ; Mon, 18 Dec 2023 22:03:51 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=iivanov@suse.de +Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org + [10.150.64.97]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) + by smtp-out1.suse.de (Postfix) with ESMTPS id 601C222298; + Mon, 18 Dec 2023 21:03:51 +0000 (UTC) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_rsa; + t=1702933431; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=g18N3OoUCORUbBwvzPY0/IHAtBrY9++PtXkkmDrbHl4=; + b=v2vbP3rzM/o63ofFdDaxhtUv68QFa8UxlaWLBU0PN+7PKXtZUGyrKBSmhVzxTM42FyEF7w + 9fus9/ORTaMw41AMi4qeWNQkin7gz4BF2qAFQuYSksnSgsT4Jul8n1YBBmIDx1keXZtfAW + uJZcfMM7pykF11NRMTvI38ZkyYm3ueQ= +DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_ed25519; t=1702933431; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=g18N3OoUCORUbBwvzPY0/IHAtBrY9++PtXkkmDrbHl4=; + b=DCEhbGvWPmgWKvfaoSUDgZ/cuuHGUnp9FvtlFeMSL2WTlsc5F+jQrl+8kVn2Yr5wDXUi8w + yyGhdRc4ihbp3tAg== +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_rsa; + t=1702933431; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=g18N3OoUCORUbBwvzPY0/IHAtBrY9++PtXkkmDrbHl4=; + b=v2vbP3rzM/o63ofFdDaxhtUv68QFa8UxlaWLBU0PN+7PKXtZUGyrKBSmhVzxTM42FyEF7w + 9fus9/ORTaMw41AMi4qeWNQkin7gz4BF2qAFQuYSksnSgsT4Jul8n1YBBmIDx1keXZtfAW + uJZcfMM7pykF11NRMTvI38ZkyYm3ueQ= +DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_ed25519; t=1702933431; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=g18N3OoUCORUbBwvzPY0/IHAtBrY9++PtXkkmDrbHl4=; + b=DCEhbGvWPmgWKvfaoSUDgZ/cuuHGUnp9FvtlFeMSL2WTlsc5F+jQrl+8kVn2Yr5wDXUi8w + yyGhdRc4ihbp3tAg== +Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) + by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id C77BF133E5; + Mon, 18 Dec 2023 21:03:50 +0000 (UTC) +Received: from dovecot-director2.suse.de ([10.150.64.162]) + by imap1.dmz-prg2.suse.org with ESMTPSA id cKI3LrazgGUtZAAAD6G6ig + (envelope-from ); Mon, 18 Dec 2023 21:03:50 +0000 +From: "Ivan T. Ivanov" +To: Matthias Brugger , + Peter Robinson +Cc: Dmitry Malkin , + Thomas Fitzsimmons , Peng Fan , + Jaehoon Chung , Anatolij Gustschin , + wahrenst@gmx.net, florian.fainelli@broadcom.com, u-boot@lists.denx.de, + "Ivan T. Ivanov" +Subject: [PATCH v3 4/7] bcm2835: brcm, + bcm2708-fb device is using r5g6b5 format +Date: Mon, 18 Dec 2023 23:03:38 +0200 +Message-ID: <20231218210341.30073-5-iivanov@suse.de> +X-Mailer: git-send-email 2.43.0 +In-Reply-To: <20231218210341.30073-1-iivanov@suse.de> +References: <20231218210341.30073-1-iivanov@suse.de> +MIME-Version: 1.0 +X-Spamd-Result: default: False [4.90 / 50.00]; ARC_NA(0.00)[]; + RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; + TO_DN_SOME(0.00)[]; FREEMAIL_ENVRCPT(0.00)[gmail.com,gmx.net]; + R_MISSING_CHARSET(2.50)[]; MIME_GOOD(-0.10)[text/plain]; + TO_MATCH_ENVRCPT_ALL(0.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; + R_RATELIMIT(0.00)[to_ip_from(RL9dd9h8xg9qpm5f14t9e5w4zz)]; + RCVD_COUNT_THREE(0.00)[3]; + DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; + RCPT_COUNT_SEVEN(0.00)[11]; MID_CONTAINS_FROM(1.00)[]; + DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:email]; + FREEMAIL_TO(0.00)[suse.com,gmail.com]; + FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; + MIME_TRACE(0.00)[0:+]; + FREEMAIL_CC(0.00)[bedrocksystems.com,fitzsim.org,nxp.com,samsung.com,denx.de,gmx.net,broadcom.com,lists.denx.de,suse.de]; + RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-0.00)[34.66%] +Authentication-Results: smtp-out1.suse.de; + none +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 + +brcm,bcm2708-fb device provided by firmware on RPi5 uses +16 bits per pixel. Update driver to properly handle this. + +Signed-off-by: Ivan T. Ivanov +--- + drivers/video/bcm2835.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/drivers/video/bcm2835.c b/drivers/video/bcm2835.c +index 14942526f1..245c958b6e 100644 +--- a/drivers/video/bcm2835.c ++++ b/drivers/video/bcm2835.c +@@ -43,7 +43,7 @@ static int bcm2835_video_probe(struct udevice *dev) + + uc_priv->xsize = w; + uc_priv->ysize = h; +- uc_priv->bpix = VIDEO_BPP32; ++ uc_priv->bpix = dev_get_driver_data(dev); + plat->base = fb_base; + plat->size = fb_size; + +@@ -51,11 +51,11 @@ static int bcm2835_video_probe(struct udevice *dev) + } + + static const struct udevice_id bcm2835_video_ids[] = { +- { .compatible = "brcm,bcm2835-hdmi" }, +- { .compatible = "brcm,bcm2711-hdmi0" }, +- { .compatible = "brcm,bcm2708-fb" }, ++ { .compatible = "brcm,bcm2835-hdmi", .data = VIDEO_BPP32}, ++ { .compatible = "brcm,bcm2711-hdmi0", .data = VIDEO_BPP32}, ++ { .compatible = "brcm,bcm2708-fb", .data = VIDEO_BPP16 }, + #if !IS_ENABLED(CONFIG_VIDEO_DT_SIMPLEFB) +- { .compatible = "simple-framebuffer" }, ++ { .compatible = "simple-framebuffer", .data = VIDEO_BPP32}, + #endif + { } + }; + +From patchwork Mon Dec 18 21:03:39 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Ivan T. Ivanov" +X-Patchwork-Id: 1877653 +X-Patchwork-Delegate: pbrobinson@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +Authentication-Results: legolas.ozlabs.org; + dkim=pass (1024-bit key; + unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 + header.s=susede2_rsa header.b=NbGv/QjH; + dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 + header.s=susede2_ed25519 header.b=mv0vjv7/; + dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de + header.a=rsa-sha256 header.s=susede2_rsa header.b=NbGv/QjH; + dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 + header.s=susede2_ed25519 header.b=mv0vjv7/; + 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 4SvC4s5T6Bz1ydc + for ; Tue, 19 Dec 2023 08:04:45 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 3B87487227; + Mon, 18 Dec 2023 22:04:02 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; + dkim=pass (1024-bit key; + unprotected) header.d=suse.de header.i=@suse.de header.b="NbGv/QjH"; + dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de + header.b="mv0vjv7/"; + dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de + header.b="NbGv/QjH"; + dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de + header.b="mv0vjv7/"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id AC0FC874F3; Mon, 18 Dec 2023 22:03: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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 +Received: from smtp-out1.suse.de (smtp-out1.suse.de + [IPv6:2a07:de40:b251:101:10:150:64:1]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 8349D875DB + for ; Mon, 18 Dec 2023 22:03:52 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=iivanov@suse.de +Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org + [10.150.64.97]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) + by smtp-out1.suse.de (Postfix) with ESMTPS id 07C81222A0; + Mon, 18 Dec 2023 21:03:52 +0000 (UTC) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_rsa; + t=1702933432; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=uP1ZnUgZbbfrrj9GCsaBsy/nQj7H8r6do86LEnTV99Y=; + b=NbGv/QjHBl2RkJvR6nKp9uvf3bewa/Jp5ykWs/ULuKNb1e1kp0q0TCiM3d88QGrhaOkktM + ARQoLZXxNSqS1EXqsPA7VQyuJpg3iM74I+GTJfNdlIDDYeA4JLrY6MexUOxdVl1EgxjaPf + 8qkaGm9uEwoD2sactKTn0rgBg5C7Ej0= +DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_ed25519; t=1702933432; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=uP1ZnUgZbbfrrj9GCsaBsy/nQj7H8r6do86LEnTV99Y=; + b=mv0vjv7/43Gm9IJuOWZT6NQDNDmZdNrBoTyjx7Yu5AAnyTgKtyFYldUlt18PDNHm701rhG + AxUSg7hqv1qJTiDg== +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_rsa; + t=1702933432; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=uP1ZnUgZbbfrrj9GCsaBsy/nQj7H8r6do86LEnTV99Y=; + b=NbGv/QjHBl2RkJvR6nKp9uvf3bewa/Jp5ykWs/ULuKNb1e1kp0q0TCiM3d88QGrhaOkktM + ARQoLZXxNSqS1EXqsPA7VQyuJpg3iM74I+GTJfNdlIDDYeA4JLrY6MexUOxdVl1EgxjaPf + 8qkaGm9uEwoD2sactKTn0rgBg5C7Ej0= +DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_ed25519; t=1702933432; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=uP1ZnUgZbbfrrj9GCsaBsy/nQj7H8r6do86LEnTV99Y=; + b=mv0vjv7/43Gm9IJuOWZT6NQDNDmZdNrBoTyjx7Yu5AAnyTgKtyFYldUlt18PDNHm701rhG + AxUSg7hqv1qJTiDg== +Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) + by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 6FAB513C92; + Mon, 18 Dec 2023 21:03:51 +0000 (UTC) +Received: from dovecot-director2.suse.de ([10.150.64.162]) + by imap1.dmz-prg2.suse.org with ESMTPSA id YHTRGLezgGUtZAAAD6G6ig + (envelope-from ); Mon, 18 Dec 2023 21:03:51 +0000 +From: "Ivan T. Ivanov" +To: Matthias Brugger , + Peter Robinson +Cc: Dmitry Malkin , + Thomas Fitzsimmons , Peng Fan , + Jaehoon Chung , Anatolij Gustschin , + wahrenst@gmx.net, florian.fainelli@broadcom.com, u-boot@lists.denx.de, + "Ivan T. Ivanov" +Subject: [PATCH v3 5/7] mmc: bcmstb: Add support for bcm2712 SD controller +Date: Mon, 18 Dec 2023 23:03:39 +0200 +Message-ID: <20231218210341.30073-6-iivanov@suse.de> +X-Mailer: git-send-email 2.43.0 +In-Reply-To: <20231218210341.30073-1-iivanov@suse.de> +References: <20231218210341.30073-1-iivanov@suse.de> +MIME-Version: 1.0 +X-Spamd-Result: default: False [1.90 / 50.00]; ARC_NA(0.00)[]; + RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; + TO_DN_SOME(0.00)[]; FREEMAIL_ENVRCPT(0.00)[gmail.com,gmx.net]; + R_MISSING_CHARSET(2.50)[]; MIME_GOOD(-0.10)[text/plain]; + TO_MATCH_ENVRCPT_ALL(0.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; + R_RATELIMIT(0.00)[to_ip_from(RL9dd9h8xg9qpm5f14t9e5w4zz)]; + RCVD_COUNT_THREE(0.00)[3]; + DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; + RCPT_COUNT_SEVEN(0.00)[11]; MID_CONTAINS_FROM(1.00)[]; + DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:email]; + FREEMAIL_TO(0.00)[suse.com,gmail.com]; + FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; + MIME_TRACE(0.00)[0:+]; + FREEMAIL_CC(0.00)[bedrocksystems.com,fitzsim.org,nxp.com,samsung.com,denx.de,gmx.net,broadcom.com,lists.denx.de,suse.de]; + RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-3.00)[100.00%] +Authentication-Results: smtp-out1.suse.de; + none +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 + +Borrow SD quirks from vendor Linux driver. + +"BCM2712 unfortunately carries with it a perennial bug with the SD +controller register interface present on previous chips (2711/2709/2708). +Accesses must be dword-sized and a read-modify-write cycle to the 32-bit +registers containing the COMMAND, TRANSFER_MODE, BLOCK_SIZE and +BLOCK_COUNT registers tramples the upper/lower 16 bits of data written. +BCM2712 does not seem to need the extreme delay between each write as on +previous chips, just the serialisation of writes to these registers in a +single 32-bit operation." + +Signed-off-by: Ivan T. Ivanov +--- + drivers/mmc/bcmstb_sdhci.c | 173 ++++++++++++++++++++++++++++++++++++- + 1 file changed, 172 insertions(+), 1 deletion(-) + +diff --git a/drivers/mmc/bcmstb_sdhci.c b/drivers/mmc/bcmstb_sdhci.c +index dc96818cff..21489e66c0 100644 +--- a/drivers/mmc/bcmstb_sdhci.c ++++ b/drivers/mmc/bcmstb_sdhci.c +@@ -38,6 +38,16 @@ + */ + #define BCMSTB_SDHCI_MINIMUM_CLOCK_FREQUENCY 400000 + ++#define SDIO_CFG_CTRL 0x0 ++#define SDIO_CFG_CTRL_SDCD_N_TEST_EN BIT(31) ++#define SDIO_CFG_CTRL_SDCD_N_TEST_LEV BIT(30) ++ ++#define SDIO_CFG_SD_PIN_SEL 0x44 ++#define SDIO_CFG_SD_PIN_SEL_MASK 0x3 ++#define SDIO_CFG_SD_PIN_SEL_CARD BIT(1) ++ ++#define REG_OFFSET_IN_BITS(reg) ((reg) << 3 & 0x18) ++ + /* + * This driver has only been tested with eMMC devices; SD devices may + * not work. +@@ -47,6 +57,53 @@ struct sdhci_bcmstb_plat { + struct mmc mmc; + }; + ++struct sdhci_bcmstb_host { ++ struct sdhci_host host; ++ u32 shadow_cmd; ++ u32 shadow_blk; ++ bool is_cmd_shadowed; ++ bool is_blk_shadowed; ++}; ++ ++struct sdhci_brcmstb_dev_priv { ++ int (*init)(struct udevice *dev); ++ struct sdhci_ops *ops; ++}; ++ ++static inline struct sdhci_bcmstb_host *to_bcmstb_host(struct sdhci_host *host) ++{ ++ return container_of(host, struct sdhci_bcmstb_host, host); ++} ++ ++static int sdhci_brcmstb_init_2712(struct udevice *dev) ++{ ++ struct sdhci_host *host = dev_get_priv(dev); ++ void *cfg_regs; ++ u32 reg; ++ ++ /* Map in the non-standard CFG registers */ ++ cfg_regs = dev_remap_addr_name(dev, "cfg"); ++ if (!cfg_regs) ++ return -ENOENT; ++ ++ if ((host->mmc->host_caps & MMC_CAP_NONREMOVABLE) || ++ (host->mmc->host_caps & MMC_CAP_NEEDS_POLL)) { ++ /* Force presence */ ++ reg = readl(cfg_regs + SDIO_CFG_CTRL); ++ reg &= ~SDIO_CFG_CTRL_SDCD_N_TEST_LEV; ++ reg |= SDIO_CFG_CTRL_SDCD_N_TEST_EN; ++ writel(reg, cfg_regs + SDIO_CFG_CTRL); ++ } else { ++ /* Enable card detection line */ ++ reg = readl(cfg_regs + SDIO_CFG_SD_PIN_SEL); ++ reg &= ~SDIO_CFG_SD_PIN_SEL_MASK; ++ reg |= SDIO_CFG_SD_PIN_SEL_CARD; ++ writel(reg, cfg_regs + SDIO_CFG_SD_PIN_SEL); ++ } ++ ++ return 0; ++} ++ + static int sdhci_bcmstb_bind(struct udevice *dev) + { + struct sdhci_bcmstb_plat *plat = dev_get_plat(dev); +@@ -58,10 +115,14 @@ static int sdhci_bcmstb_probe(struct udevice *dev) + { + struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev); + struct sdhci_bcmstb_plat *plat = dev_get_plat(dev); +- struct sdhci_host *host = dev_get_priv(dev); ++ struct sdhci_bcmstb_host *bcmstb = dev_get_priv(dev); ++ struct sdhci_host *host = &bcmstb->host; ++ struct sdhci_brcmstb_dev_priv *dev_priv; + fdt_addr_t base; + int ret; + ++ dev_priv = (struct sdhci_brcmstb_dev_priv *)dev_get_driver_data(dev); ++ + base = dev_read_addr(dev); + if (base == FDT_ADDR_T_NONE) + return -EINVAL; +@@ -75,6 +136,10 @@ static int sdhci_bcmstb_probe(struct udevice *dev) + + host->mmc = &plat->mmc; + host->mmc->dev = dev; ++ ++ if (dev_priv && dev_priv->ops) ++ host->ops = dev_priv->ops; ++ + ret = sdhci_setup_cfg(&plat->cfg, host, + BCMSTB_SDHCI_MAXIMUM_CLOCK_FREQUENCY, + BCMSTB_SDHCI_MINIMUM_CLOCK_FREQUENCY); +@@ -84,10 +149,116 @@ static int sdhci_bcmstb_probe(struct udevice *dev) + upriv->mmc = &plat->mmc; + host->mmc->priv = host; + ++ if (dev_priv && dev_priv->init) { ++ ret = dev_priv->init(dev); ++ if (ret) ++ return ret; ++ } ++ + return sdhci_probe(dev); + } + ++static u16 sdhci_brcmstb_32bits_readw(struct sdhci_host *host, int reg) ++{ ++ struct sdhci_bcmstb_host *bcmstb = to_bcmstb_host(host); ++ u16 word; ++ u32 val; ++ ++ if (reg == SDHCI_TRANSFER_MODE && bcmstb->is_cmd_shadowed) { ++ /* Get the saved transfer mode */ ++ val = bcmstb->shadow_cmd; ++ } else if ((reg == SDHCI_BLOCK_SIZE || reg == SDHCI_BLOCK_COUNT) && ++ bcmstb->is_blk_shadowed) { ++ /* Get the saved block info */ ++ val = bcmstb->shadow_blk; ++ } else { ++ val = readl(host->ioaddr + (reg & ~3)); ++ } ++ ++ word = val >> REG_OFFSET_IN_BITS(reg) & 0xffff; ++ return word; ++} ++ ++static u8 sdhci_brcmstb_32bits_readb(struct sdhci_host *host, int reg) ++{ ++ u32 val = readl(host->ioaddr + (reg & ~3)); ++ u8 byte = val >> REG_OFFSET_IN_BITS(reg) & 0xff; ++ return byte; ++} ++ ++/* ++ * BCM2712 unfortunately carries with it a perennial bug with the SD ++ * controller register interface present on previous chips (2711/2709/2708). ++ * Accesses must be dword-sized and a read-modify-write cycle to the ++ * 32-bit registers containing the COMMAND, TRANSFER_MODE, BLOCK_SIZE and ++ * BLOCK_COUNT registers tramples the upper/lower 16 bits of data written. ++ * BCM2712 does not seem to need the extreme delay between each write as ++ * on previous chips, just the serialisation of writes to these registers ++ * in a single 32-bit operation. ++ */ ++static void sdhci_brcmstb_32bits_writew(struct sdhci_host *host, u16 val, int reg) ++{ ++ struct sdhci_bcmstb_host *bcmstb = to_bcmstb_host(host); ++ u32 word_shift = REG_OFFSET_IN_BITS(reg); ++ u32 mask = 0xffff << word_shift; ++ u32 oldval, newval; ++ ++ if (reg == SDHCI_COMMAND) { ++ /* Write the block now as we are issuing a command */ ++ if (bcmstb->is_blk_shadowed) { ++ writel(bcmstb->shadow_blk, host->ioaddr + SDHCI_BLOCK_SIZE); ++ bcmstb->is_blk_shadowed = false; ++ } ++ oldval = bcmstb->shadow_cmd; ++ bcmstb->is_cmd_shadowed = false; ++ } else if ((reg == SDHCI_BLOCK_SIZE || reg == SDHCI_BLOCK_COUNT) && ++ bcmstb->is_blk_shadowed) { ++ /* Block size and count are stored in shadow reg */ ++ oldval = bcmstb->shadow_blk; ++ } else { ++ /* Read reg, all other registers are not shadowed */ ++ oldval = readl(host->ioaddr + (reg & ~3)); ++ } ++ newval = (oldval & ~mask) | (val << word_shift); ++ ++ if (reg == SDHCI_TRANSFER_MODE) { ++ /* Save the transfer mode until the command is issued */ ++ bcmstb->shadow_cmd = newval; ++ bcmstb->is_cmd_shadowed = true; ++ } else if (reg == SDHCI_BLOCK_SIZE || reg == SDHCI_BLOCK_COUNT) { ++ /* Save the block info until the command is issued */ ++ bcmstb->shadow_blk = newval; ++ bcmstb->is_blk_shadowed = true; ++ } else { ++ /* Command or other regular 32-bit write */ ++ writel(newval, host->ioaddr + (reg & ~3)); ++ } ++} ++ ++static void sdhci_brcmstb_32bits_writeb(struct sdhci_host *host, u8 val, int reg) ++{ ++ u32 oldval = readl(host->ioaddr + (reg & ~3)); ++ u32 byte_shift = REG_OFFSET_IN_BITS(reg); ++ u32 mask = 0xff << byte_shift; ++ u32 newval = (oldval & ~mask) | (val << byte_shift); ++ ++ writel(newval, host->ioaddr + (reg & ~3)); ++} ++ ++static struct sdhci_ops sdhci_brcmstb_ops_2712 = { ++ .read_b = sdhci_brcmstb_32bits_readb, ++ .read_w = sdhci_brcmstb_32bits_readw, ++ .write_w = sdhci_brcmstb_32bits_writew, ++ .write_b = sdhci_brcmstb_32bits_writeb, ++}; ++ ++static const struct sdhci_brcmstb_dev_priv match_priv_2712 = { ++ .init = sdhci_brcmstb_init_2712, ++ .ops = &sdhci_brcmstb_ops_2712, ++}; ++ + static const struct udevice_id sdhci_bcmstb_match[] = { ++ { .compatible = "brcm,bcm2712-sdhci", .data = (ulong)&match_priv_2712 }, + { .compatible = "brcm,bcm7425-sdhci" }, + { .compatible = "brcm,sdhci-brcmstb" }, + { } + +From patchwork Mon Dec 18 21:03:40 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Ivan T. Ivanov" +X-Patchwork-Id: 1877654 +X-Patchwork-Delegate: pbrobinson@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +Authentication-Results: legolas.ozlabs.org; + dkim=pass (1024-bit key; + unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 + header.s=susede2_rsa header.b=f/19Tx1x; + dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 + header.s=susede2_ed25519 header.b=e0CvACbS; + dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de + header.a=rsa-sha256 header.s=susede2_rsa header.b=f/19Tx1x; + dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 + header.s=susede2_ed25519 header.b=e0CvACbS; + 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 4SvC5339Phz1ydc + for ; Tue, 19 Dec 2023 08:04:55 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id AEFAE87561; + Mon, 18 Dec 2023 22:04:02 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; + dkim=pass (1024-bit key; + unprotected) header.d=suse.de header.i=@suse.de header.b="f/19Tx1x"; + dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de + header.b="e0CvACbS"; + dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de + header.b="f/19Tx1x"; + dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de + header.b="e0CvACbS"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id E31C887661; Mon, 18 Dec 2023 22:03:58 +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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no + version=3.4.2 +Received: from smtp-out1.suse.de (smtp-out1.suse.de + [IPv6:2a07:de40:b251:101:10:150:64:1]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 23C28875FE + for ; Mon, 18 Dec 2023 22:03:53 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=iivanov@suse.de +Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org + [IPv6:2a07:de40:b281:104:10:150:64:97]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) + by smtp-out1.suse.de (Postfix) with ESMTPS id AA225222AF; + Mon, 18 Dec 2023 21:03:52 +0000 (UTC) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_rsa; + t=1702933432; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=cxWdlBZFlaQd53WSplsOaVVsDevGF2K3qZjhk+1T33g=; + b=f/19Tx1x7UFtAUz8rSw0xZAG55X0OP1hiHqEuhAMQ+G/qEfSEkg6v1FGZhP70gpNWDQQgk + sr6WvGWKDP0t+jOsv0jDi9ZDrTiDB2ge+exjUPFNEvQP3H5zrjgKVOaqBaoOeLHXs/ay0l + qSAackxgs89eelJL1qSI3XwtAjq2zlQ= +DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_ed25519; t=1702933432; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=cxWdlBZFlaQd53WSplsOaVVsDevGF2K3qZjhk+1T33g=; + b=e0CvACbSltQnSYuEyv3yxtn0hfVqkwt0KNf0fBLAfLwxlC3hb9ebDGcHvra3iPCHYB22X9 + ButpL853ceVzwdDA== +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_rsa; + t=1702933432; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=cxWdlBZFlaQd53WSplsOaVVsDevGF2K3qZjhk+1T33g=; + b=f/19Tx1x7UFtAUz8rSw0xZAG55X0OP1hiHqEuhAMQ+G/qEfSEkg6v1FGZhP70gpNWDQQgk + sr6WvGWKDP0t+jOsv0jDi9ZDrTiDB2ge+exjUPFNEvQP3H5zrjgKVOaqBaoOeLHXs/ay0l + qSAackxgs89eelJL1qSI3XwtAjq2zlQ= +DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_ed25519; t=1702933432; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=cxWdlBZFlaQd53WSplsOaVVsDevGF2K3qZjhk+1T33g=; + b=e0CvACbSltQnSYuEyv3yxtn0hfVqkwt0KNf0fBLAfLwxlC3hb9ebDGcHvra3iPCHYB22X9 + ButpL853ceVzwdDA== +Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) + by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 15B1C133E5; + Mon, 18 Dec 2023 21:03:52 +0000 (UTC) +Received: from dovecot-director2.suse.de ([10.150.64.162]) + by imap1.dmz-prg2.suse.org with ESMTPSA id 8OvVArizgGUtZAAAD6G6ig + (envelope-from ); Mon, 18 Dec 2023 21:03:52 +0000 +From: "Ivan T. Ivanov" +To: Matthias Brugger , + Peter Robinson +Cc: Dmitry Malkin , + Thomas Fitzsimmons , Peng Fan , + Jaehoon Chung , Anatolij Gustschin , + wahrenst@gmx.net, florian.fainelli@broadcom.com, u-boot@lists.denx.de, + "Ivan T. Ivanov" +Subject: [PATCH v3 6/7] configs: rpi_arm64: enable SDHCI BCMSTB driver +Date: Mon, 18 Dec 2023 23:03:40 +0200 +Message-ID: <20231218210341.30073-7-iivanov@suse.de> +X-Mailer: git-send-email 2.43.0 +In-Reply-To: <20231218210341.30073-1-iivanov@suse.de> +References: <20231218210341.30073-1-iivanov@suse.de> +MIME-Version: 1.0 +Authentication-Results: smtp-out1.suse.de; + dkim=pass header.d=suse.de header.s=susede2_rsa header.b="f/19Tx1x"; + dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=e0CvACbS +X-Rspamd-Server: rspamd2.dmz-prg2.suse.org +X-Spamd-Result: default: False [-1.62 / 50.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; + RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from]; + SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from]; + TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; + BROKEN_CONTENT_TYPE(1.50)[]; RCVD_COUNT_THREE(0.00)[3]; + DKIM_TRACE(0.00)[suse.de:+]; MX_GOOD(-0.01)[]; + RCPT_COUNT_SEVEN(0.00)[11]; NEURAL_HAM_SHORT(-0.20)[-1.000]; + FREEMAIL_TO(0.00)[suse.com,gmail.com]; FROM_EQ_ENVFROM(0.00)[]; + MIME_TRACE(0.00)[0:+]; BAYES_HAM(-0.11)[66.45%]; + ARC_NA(0.00)[]; + R_DKIM_ALLOW(-0.20)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; + RCVD_DKIM_ARC_DNSWL_HI(-1.00)[]; FROM_HAS_DN(0.00)[]; + FREEMAIL_ENVRCPT(0.00)[gmail.com,gmx.net]; + TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; + DWL_DNSWL_HI(-3.50)[suse.de:dkim]; + NEURAL_HAM_LONG(-1.00)[-1.000]; + DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; + MID_CONTAINS_FROM(1.00)[]; + DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:dkim,suse.de:email]; + FUZZY_BLOCKED(0.00)[rspamd.com]; + FREEMAIL_CC(0.00)[bedrocksystems.com,fitzsim.org,nxp.com,samsung.com,denx.de,gmx.net,broadcom.com,lists.denx.de,suse.de]; + RCVD_TLS_ALL(0.00)[]; + RCVD_IN_DNSWL_HI(-0.50)[2a07:de40:b281:104:10:150:64:97:from] +X-Rspamd-Queue-Id: AA225222AF +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 + +RPi5 have "brcm,bcm2712-sdhci" controller which is +handled by "sdhci-bcmstb" driver, so enable it. + +Signed-off-by: Ivan T. Ivanov +--- + configs/rpi_arm64_defconfig | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig +index f9dade18f6..1107fd11de 100644 +--- a/configs/rpi_arm64_defconfig ++++ b/configs/rpi_arm64_defconfig +@@ -33,6 +33,7 @@ CONFIG_BCM2835_GPIO=y + CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_SDMA=y + CONFIG_MMC_SDHCI_BCM2835=y ++CONFIG_MMC_SDHCI_BCMSTB=y + CONFIG_BCMGENET=y + CONFIG_PCI_BRCMSTB=y + CONFIG_PINCTRL=y + +From patchwork Mon Dec 18 21:03:41 2023 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: "Ivan T. Ivanov" +X-Patchwork-Id: 1877655 +X-Patchwork-Delegate: pbrobinson@gmail.com +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +Authentication-Results: legolas.ozlabs.org; + dkim=pass (1024-bit key; + unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 + header.s=susede2_rsa header.b=1by1WnE8; + dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 + header.s=susede2_ed25519 header.b=e64lBvSE; + dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de + header.a=rsa-sha256 header.s=susede2_rsa header.b=1by1WnE8; + dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 + header.s=susede2_ed25519 header.b=e64lBvSE; + 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 4SvC5H05zfz1ydc + for ; Tue, 19 Dec 2023 08:05:07 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 2FBDE87650; + Mon, 18 Dec 2023 22:04:03 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Authentication-Results: phobos.denx.de; + dkim=pass (1024-bit key; + unprotected) header.d=suse.de header.i=@suse.de header.b="1by1WnE8"; + dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de + header.b="e64lBvSE"; + dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de + header.b="1by1WnE8"; + dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de + header.b="e64lBvSE"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 5D01C876A4; Mon, 18 Dec 2023 22:03: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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no + version=3.4.2 +Received: from smtp-out2.suse.de (smtp-out2.suse.de + [IPv6:2a07:de40:b251:101:10:150:64:2]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id C279687509 + for ; Mon, 18 Dec 2023 22:03:53 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=suse.de +Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=iivanov@suse.de +Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org + [IPv6:2a07:de40:b281:104:10:150:64:97]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) + by smtp-out2.suse.de (Postfix) with ESMTPS id 5507C1F6E6; + Mon, 18 Dec 2023 21:03:53 +0000 (UTC) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_rsa; + t=1702933433; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=HvUCimMaJ6xrQSSzUxalPI2wxDMnSXJwzMxo+y9/IFo=; + b=1by1WnE818KeyiiUhS0PLD7P0c+SSwVEcIdSwLVDSj6t8vZK9vpPNROZRCB9WlZtgGyGUU + JlRP9h5PowjYnh5OWRH6KbjZ19MG+Fu3rWcMQ+gET5ljKGaRAtFv2t0gDAtmZGheOkf5pW + KEDUZYxYceI7JKlWcX6QlIjexymId9w= +DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_ed25519; t=1702933433; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=HvUCimMaJ6xrQSSzUxalPI2wxDMnSXJwzMxo+y9/IFo=; + b=e64lBvSEDRhrUCpOd2eVMasuXC6PFNm5B1yOGeNNS+E2HREmMMam1YM4RObadB2tdux/T3 + Galw853x9Gm0wpDA== +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_rsa; + t=1702933433; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=HvUCimMaJ6xrQSSzUxalPI2wxDMnSXJwzMxo+y9/IFo=; + b=1by1WnE818KeyiiUhS0PLD7P0c+SSwVEcIdSwLVDSj6t8vZK9vpPNROZRCB9WlZtgGyGUU + JlRP9h5PowjYnh5OWRH6KbjZ19MG+Fu3rWcMQ+gET5ljKGaRAtFv2t0gDAtmZGheOkf5pW + KEDUZYxYceI7JKlWcX6QlIjexymId9w= +DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; + s=susede2_ed25519; t=1702933433; + h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: + mime-version:mime-version: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references; + bh=HvUCimMaJ6xrQSSzUxalPI2wxDMnSXJwzMxo+y9/IFo=; + b=e64lBvSEDRhrUCpOd2eVMasuXC6PFNm5B1yOGeNNS+E2HREmMMam1YM4RObadB2tdux/T3 + Galw853x9Gm0wpDA== +Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) + by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id BB17413C92; + Mon, 18 Dec 2023 21:03:52 +0000 (UTC) +Received: from dovecot-director2.suse.de ([10.150.64.162]) + by imap1.dmz-prg2.suse.org with ESMTPSA id 0JQfK7izgGUtZAAAD6G6ig + (envelope-from ); Mon, 18 Dec 2023 21:03:52 +0000 +From: "Ivan T. Ivanov" +To: Matthias Brugger , + Peter Robinson +Cc: Dmitry Malkin , + Thomas Fitzsimmons , Peng Fan , + Jaehoon Chung , Anatolij Gustschin , + wahrenst@gmx.net, florian.fainelli@broadcom.com, u-boot@lists.denx.de, + "Ivan T. Ivanov" +Subject: [PATCH v3 7/7] pci: pcie-brcmstb: Add bcm2712 PCIe controller support +Date: Mon, 18 Dec 2023 23:03:41 +0200 +Message-ID: <20231218210341.30073-8-iivanov@suse.de> +X-Mailer: git-send-email 2.43.0 +In-Reply-To: <20231218210341.30073-1-iivanov@suse.de> +References: <20231218210341.30073-1-iivanov@suse.de> +MIME-Version: 1.0 +X-Rspamd-Server: rspamd1.dmz-prg2.suse.org +X-Spamd-Bar: / +X-Spamd-Result: default: False [-0.31 / 50.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; + RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from]; + TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; + BROKEN_CONTENT_TYPE(1.50)[]; + R_RATELIMIT(0.00)[to_ip_from(RLccgikja4sxqnupiwsfdm9q1r)]; + RCVD_COUNT_THREE(0.00)[3]; DKIM_TRACE(0.00)[suse.de:+]; + MX_GOOD(-0.01)[]; RCPT_COUNT_SEVEN(0.00)[11]; + FREEMAIL_TO(0.00)[suse.com,gmail.com]; FROM_EQ_ENVFROM(0.00)[]; + MIME_TRACE(0.00)[0:+]; BAYES_HAM(-0.00)[27.73%]; + ARC_NA(0.00)[]; + R_DKIM_ALLOW(-0.20)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; + RCVD_DKIM_ARC_DNSWL_HI(-1.00)[]; FROM_HAS_DN(0.00)[]; + FREEMAIL_ENVRCPT(0.00)[gmail.com,gmx.net]; + TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; + DWL_DNSWL_HI(-3.50)[suse.de:dkim]; + DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; + MID_CONTAINS_FROM(1.00)[]; + DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:dkim,suse.de:email]; + FUZZY_BLOCKED(0.00)[rspamd.com]; + FREEMAIL_CC(0.00)[bedrocksystems.com,fitzsim.org,nxp.com,samsung.com,denx.de,gmx.net,broadcom.com,lists.denx.de,suse.de]; + RCVD_TLS_ALL(0.00)[]; + RCVD_IN_DNSWL_HI(-0.50)[2a07:de40:b281:104:10:150:64:97:from] +Authentication-Results: smtp-out2.suse.de; + dkim=pass header.d=suse.de header.s=susede2_rsa header.b=1by1WnE8; + dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=e64lBvSE +X-Rspamd-Queue-Id: 5507C1F6E6 +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 + +PCIe controller have minor register map difference compared +to bcm2711 variant. Handle this using device specific register +offset. + +Signed-off-by: Ivan T. Ivanov +--- + drivers/pci/pcie_brcmstb.c | 23 +++++++++++++++++++---- + 1 file changed, 19 insertions(+), 4 deletions(-) + +diff --git a/drivers/pci/pcie_brcmstb.c b/drivers/pci/pcie_brcmstb.c +index cd45f0bee9..d63e715b2e 100644 +--- a/drivers/pci/pcie_brcmstb.c ++++ b/drivers/pci/pcie_brcmstb.c +@@ -90,7 +90,6 @@ + #define PCIE_MEM_WIN0_LIMIT_HI(win) \ + PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LIMIT_HI + ((win) * 8) + +-#define PCIE_MISC_HARD_PCIE_HARD_DEBUG 0x4204 + #define PCIE_HARD_DEBUG_SERDES_IDDQ_MASK 0x08000000 + + #define PCIE_MSI_INTR2_CLR 0x4508 +@@ -131,6 +130,10 @@ + #define SSC_STATUS_PLL_LOCK_MASK 0x800 + #define SSC_STATUS_PLL_LOCK_SHIFT 11 + ++struct pcie_cfg_data { ++ unsigned long hard_debug_offs; ++}; ++ + /** + * struct brcm_pcie - the PCIe controller state + * @base: Base address of memory mapped IO registers of the controller +@@ -141,6 +144,7 @@ + struct brcm_pcie { + void __iomem *base; + ++ struct pcie_cfg_data *cfg; + int gen; + bool ssc; + }; +@@ -458,7 +462,7 @@ static int brcm_pcie_probe(struct udevice *dev) + /* Take the bridge out of reset */ + clrbits_le32(base + PCIE_RGR1_SW_INIT_1, RGR1_SW_INIT_1_INIT_MASK); + +- clrbits_le32(base + PCIE_MISC_HARD_PCIE_HARD_DEBUG, ++ clrbits_le32(base + pcie->cfg->hard_debug_offs, + PCIE_HARD_DEBUG_SERDES_IDDQ_MASK); + + /* Wait for SerDes to be stable */ +@@ -599,7 +603,7 @@ static int brcm_pcie_remove(struct udevice *dev) + setbits_le32(base + PCIE_RGR1_SW_INIT_1, RGR1_SW_INIT_1_PERST_MASK); + + /* Turn off SerDes */ +- setbits_le32(base + PCIE_MISC_HARD_PCIE_HARD_DEBUG, ++ setbits_le32(base + pcie->cfg->hard_debug_offs, + PCIE_HARD_DEBUG_SERDES_IDDQ_MASK); + + /* Shutdown bridge */ +@@ -620,6 +624,8 @@ static int brcm_pcie_of_to_plat(struct udevice *dev) + if (!pcie->base) + return -EINVAL; + ++ pcie->cfg = (struct pcie_cfg_data *)dev_get_driver_data(dev); ++ + pcie->ssc = ofnode_read_bool(dn, "brcm,enable-ssc"); + + ret = ofnode_read_u32(dn, "max-link-speed", &max_link_speed); +@@ -636,8 +642,17 @@ static const struct dm_pci_ops brcm_pcie_ops = { + .write_config = brcm_pcie_write_config, + }; + ++static const struct pcie_cfg_data bcm2711_cfg = { ++ .hard_debug_offs = 0x4204 ++}; ++ ++static const struct pcie_cfg_data bcm2712_cfg = { ++ .hard_debug_offs = 0x4304 ++}; ++ + static const struct udevice_id brcm_pcie_ids[] = { +- { .compatible = "brcm,bcm2711-pcie" }, ++ { .compatible = "brcm,bcm2711-pcie", .data = (ulong)&bcm2711_cfg }, ++ { .compatible = "brcm,bcm2712-pcie", .data = (ulong)&bcm2712_cfg }, + { } + }; + diff --git a/sources b/sources index baad200..30e8529 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2024.01-rc4.tar.bz2) = 02ad9abe2a0c34fb11e75f75b1d76a4dc2df2886ed00f0fbec090cfe87d586becfee7c1edce8e95d26d1e34ead26faf928d17fdc6f8dee158a73f93c0078ae0a +SHA512 (u-boot-2024.01.tar.bz2) = 45bd093ba3bda23e43cdde83d8656c1ee1348ac2886ecff1fee475f101ac4965a5be6565408fa5b990c723f3fdc833edfca60a719f735a43040cd14a1b59a88b diff --git a/uboot-tools.spec b/uboot-tools.spec index b7ab293..8083a3c 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc4 +#global candidate rc0 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2024.01 -Release: 0.2%{?candidate:.%{candidate}}%{?dist} +Release: 1%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ @@ -26,9 +26,11 @@ Patch7: Add-video-damage-tracking.patch # Board fixes and enablement # RPi - uses RPI firmware device tree for HAT support -Patch10: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch +Patch10: rpi-Switch-to-OF_HAS_PRIOR_STAGE-by-default.patch # Rockchips improvements Patch11: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch +# Lots more to do, mostly untested, definitely unsupported +Patch12: rpi5-initial-support.patch #Patch12: 0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch BuildRequires: bc @@ -206,6 +208,9 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Mon Jan 08 2024 Peter Robinson - 1:2024.01-1 +- Update to 2024.01 + * Thu Dec 07 2023 Peter Robinson - 1:2024.01-0.2.rc4 - Update to 2024.01 RC4 - Rebase SMBIOS patch to latest rev diff --git a/uefi-Boot-var-automatic-management-for-removable-medias.patch b/uefi-Boot-var-automatic-management-for-removable-medias.patch index aa8db6c..48ae88e 100644 --- a/uefi-Boot-var-automatic-management-for-removable-medias.patch +++ b/uefi-Boot-var-automatic-management-for-removable-medias.patch @@ -1,17 +1,17 @@ -From patchwork Mon Oct 16 06:45:24 2023 +From patchwork Fri Nov 10 04:25:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Masahisa Kojima -X-Patchwork-Id: 1849182 -X-Patchwork-Delegate: trini@ti.com +X-Patchwork-Id: 1862317 +X-Patchwork-Delegate: apalos@gmail.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=linaro.org header.i=@linaro.org header.a=rsa-sha256 - header.s=google header.b=Ul1XEHOs; + header.s=google header.b=muA1rcXE; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de @@ -20,76 +20,76 @@ Authentication-Results: legolas.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)) + key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4S874K5Xxfz20Pd - for ; Mon, 16 Oct 2023 17:48:49 +1100 (AEDT) + by legolas.ozlabs.org (Postfix) with ESMTPS id 4SRQnL1SNCz1yRF + for ; Fri, 10 Nov 2023 15:28:54 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id CEAE986C65; - Mon, 16 Oct 2023 08:47:35 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTP id 4C150877A0; + Fri, 10 Nov 2023 05:27:39 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org 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=linaro.org header.i=@linaro.org header.b="Ul1XEHOs"; + unprotected) header.d=linaro.org header.i=@linaro.org header.b="muA1rcXE"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) - id 8D53786DB3; Mon, 16 Oct 2023 08:47:30 +0200 (CEST) + id 9DA4487796; Fri, 10 Nov 2023 05:27:28 +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,SPF_HELO_NONE,SPF_PASS - autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-pf1-x42e.google.com (mail-pf1-x42e.google.com - [IPv6:2607:f8b0:4864:20::42e]) + DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-qv1-xf30.google.com (mail-qv1-xf30.google.com + [IPv6:2607:f8b0:4864:20::f30]) (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 CDE3A86E17 - for ; Mon, 16 Oct 2023 08:47:09 +0200 (CEST) + by phobos.denx.de (Postfix) with ESMTPS id E1AE487795 + for ; Fri, 10 Nov 2023 05:27:22 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=masahisa.kojima@linaro.org -Received: by mail-pf1-x42e.google.com with SMTP id - d2e1a72fcca58-6b9af7d41d2so1095255b3a.0 - for ; Sun, 15 Oct 2023 23:47:09 -0700 (PDT) +Received: by mail-qv1-xf30.google.com with SMTP id + 6a1803df08f44-66d09b6d007so10800236d6.1 + for ; Thu, 09 Nov 2023 20:27:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=linaro.org; s=google; t=1697438827; x=1698043627; darn=lists.denx.de; + d=linaro.org; s=google; t=1699590441; x=1700195241; 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=a4zZ4HlSkK/oY3qfyV9r1nYVhNuROFuLhRstgf1Rv2c=; - b=Ul1XEHOsGM4s5ZXhl8izVuRgdzwBvimAZkXuoqhECUyzZ5Ez0xE4L1Hg3jaebkJtT4 - Obo7iWdiOztGGXAQsCc6aArrMkn5aWaxldZj3Pk7wiMXDQQwkaTGjRCvrTsNYEXGqaYa - lgGsDUHQY9XV9evUyGDM53AoPvEQpMUn6Ise6OpLox6UUZP1F50ibABAcCqCaWEz+1nq - 4lVN8G9iVN+cmBLHgyABIM/ySQviS1kOYG+YTltUb5HvVaMxir4vqsa4+x6vd/tTxXMk - 56wvCrB5HMNqfSgdipSasXwMLCFgHXkBq93i2kbuzMIQ7Ysvv3C8BVI0G+1f6oLwENLk - e/CQ== + bh=TMp02tF2/jn50c0fdB6OUXNmWJ9Af2C5T6zhn2D5BPI=; + b=muA1rcXEW1UV0ytByrk/oz/vuO7kL/M5Szuv8+JLohfHHFY3sZW5v5q4Tn1coMbMKW + 6+JvY0qla9DiPjvWA90QSopUCqBoggSNPTIlTn4YSs0zA/+Aa9ufsx25M+rq4pdYGAZq + ujAG9mRgWMuq7W+eZZWfQo6eFqEo14D6RbQL5NFW/G0Wkle6TwLwu7dp19DOw7hH/jPq + sq9/5/DA4FEI+4sRDsPBAQ48VTq05vuMv2PMU0t4d7SXPVCEk1lW+JFZB4wooN2XotQ+ + ni+S40bdTeGBscZ+sajQQgtDd49nxGSB518samtlg5SGdhDB9WKak39uPeWU4WFYc01J + R7BQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20230601; t=1697438827; x=1698043627; + d=1e100.net; s=20230601; t=1699590441; x=1700195241; 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=a4zZ4HlSkK/oY3qfyV9r1nYVhNuROFuLhRstgf1Rv2c=; - b=OcOEUqe358XOG7Zc6Hy+FF1rfaLYWmEF0A8OizdzAhGDLivYKjNd4BoOEHO4KvOACh - FZMZ1CB92hAiYJu1Ndf90dBBML5rNhQNU2W7UeXtS71umYvHozHLjFpF1yhECni/jQQU - 4oOX+5SMFsICbIbh7s4rTv7wQiw9WfipvTiPbJAhIlFiWT90CFt3hyN8/9KlKbl0Sclz - gllfdag+B/kpFHp53cH9u/zyihobAX9mjV7UWzK5LavAIv6z62RlsRMaICfqqhzWdiCQ - HVNQr2zZEmvsRXg8I0bE1n51DSkTLQ3tXeACm5nhLyxgtyqWwailoFeacOUsF7GMlCcD - qEbw== -X-Gm-Message-State: AOJu0YzjJEUEStoUb3N4IXyZxHifoMSiHxGU6B4mx7PQowC7gzvn1TnE - xTthn5FBg1s44Z9M4SsWxKIzkdvcmlpYkXlx7zA= + bh=TMp02tF2/jn50c0fdB6OUXNmWJ9Af2C5T6zhn2D5BPI=; + b=o5TY9c0iL/aKbWJtamq+fAKn5twYwIcXo5Z8lxIo1/WL8jhCu3973LiJ6l2rbP6I26 + wEUpA97eZRYjRnp6Pfb9nJ5+Ip11akGFqY+UNFjwNues+jYvCmrhtbzt3RIwwRMopasI + IvpvSU+Vk0opNS2b96ZRak7X34ZoUNZVcjTBCSqx3UgQcaMOxrP5u7LholG/3rTttkkF + gdIAWrm7wPUrREhnt8opfpTWbusAkgJ1lAa0uqcfb4TRE7fKsiX3du3TwgJNsvACBXxW + W4w5nDy5AXlY05IOsmMvxjIudLF0aDB3y/aUT1K7/NyAO77e5CPoGEIRF4JnpngLM7yx + RcEw== +X-Gm-Message-State: AOJu0YwKFnJ+XRzaRWdr9TK+didg99ZRC2gUKVvYvCLFFGqfG4yFbCXC + IsubnJ6RTNtZqmONUFojqVLmrQYm513MFxxhCLg= X-Google-Smtp-Source: - AGHT+IHbD6oyEamNHq3LhzVqk9GmlOVQEB1PUP0LTuRVh232jV1wx8mVR7sYKvotrVqHEVfJnRLFMA== -X-Received: by 2002:a05:6a00:1511:b0:690:4362:7011 with SMTP id - q17-20020a056a00151100b0069043627011mr35009133pfu.24.1697438827170; - Sun, 15 Oct 2023 23:47:07 -0700 (PDT) + AGHT+IE/39rKwHRMrxLkfDXIlyOXct/rRbXebKb2Lc3eaLeJaCt4Vmnxn7CrXnlXXLzUgocEmJUKcA== +X-Received: by 2002:a05:6214:d44:b0:675:667d:a1b6 with SMTP id + 4-20020a0562140d4400b00675667da1b6mr7212832qvr.0.1699590440388; + Thu, 09 Nov 2023 20:27:20 -0800 (PST) Received: from localhost ([164.70.16.189]) by smtp.gmail.com with ESMTPSA id - fa13-20020a056a002d0d00b006b1c14a493fsm5242447pfb.71.2023.10.15.23.47.06 + n18-20020a170902e55200b001c0bf60ba5csm4304818plf.272.2023.11.09.20.27.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Sun, 15 Oct 2023 23:47:06 -0700 (PDT) + Thu, 09 Nov 2023 20:27:19 -0800 (PST) From: Masahisa Kojima To: u-boot@lists.denx.de Cc: Heinrich Schuchardt , @@ -99,14 +99,15 @@ Cc: Heinrich Schuchardt , Michal Simek , Raymond Mao , Masahisa Kojima , Joao Marcos Costa , + Huang Jianan , Thomas Petazzoni , - Miquel Raynal -Subject: [PATCH v7 7/9] Boot var automatic management for removable medias -Date: Mon, 16 Oct 2023 15:45:24 +0900 -Message-Id: <20231016064526.2410856-8-masahisa.kojima@linaro.org> + Miquel Raynal , linux-erofs@lists.ozlabs.org +Subject: [PATCH v12 4/9] efi_loader: Boot var automatic management +Date: Fri, 10 Nov 2023 13:25:37 +0900 +Message-Id: <20231110042542.3797301-5-masahisa.kojima@linaro.org> X-Mailer: git-send-email 2.34.1 -In-Reply-To: <20231016064526.2410856-1-masahisa.kojima@linaro.org> -References: <20231016064526.2410856-1-masahisa.kojima@linaro.org> +In-Reply-To: <20231110042542.3797301-1-masahisa.kojima@linaro.org> +References: <20231110042542.3797301-1-masahisa.kojima@linaro.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 @@ -148,15 +149,14 @@ efi_secboot tests end up with unexpected failure. The efi_secboot tests need to be modified to explicitly set the BootOrder EFI variable. -squashfs ls test is also affected by this modification, need to -clear the previous state before squashfs ls test starts. +squashfs and erofs ls tests are also affected by this modification, +need to clear the previous state before squashfs ls test starts. Co-developed-by: Masahisa Kojima Signed-off-by: Masahisa Kojima Signed-off-by: Raymond Mao Reviewed-by: Heinrich Schuchardt Reviewed-by: Ilias Apalodimas -Signed-off-by: Joao Marcos Costa Reviewed-by: Joao Marcos Costa --- lib/efi_loader/efi_disk.c | 18 ++++++++ @@ -164,8 +164,9 @@ Reviewed-by: Joao Marcos Costa test/py/tests/test_efi_secboot/test_signed.py | 42 +++++++++---------- .../test_efi_secboot/test_signed_intca.py | 14 +++---- .../tests/test_efi_secboot/test_unsigned.py | 14 +++---- - .../test_fs/test_squashfs/test_sqfs_ls.py | 6 +++ - 6 files changed, 66 insertions(+), 35 deletions(-) + test/py/tests/test_fs/test_erofs.py | 9 ++++ + .../test_fs/test_squashfs/test_sqfs_ls.py | 9 ++++ + 7 files changed, 78 insertions(+), 35 deletions(-) diff --git a/lib/efi_loader/efi_disk.c b/lib/efi_loader/efi_disk.c index f0d76113b0..b808a7fe62 100644 @@ -204,7 +205,7 @@ index f0d76113b0..b808a7fe62 100644 /** diff --git a/lib/efi_loader/efi_setup.c b/lib/efi_loader/efi_setup.c -index e6de685e87..37359a77bb 100644 +index ad719afd63..c02569cb6d 100644 --- a/lib/efi_loader/efi_setup.c +++ b/lib/efi_loader/efi_setup.c @@ -245,6 +245,13 @@ efi_status_t efi_init_obj_list(void) @@ -531,18 +532,41 @@ index df63f0df08..7c078f220d 100644 'efidebug test bootmgr']) assert 'efi_start_image() returned: 26' in ''.join(output) assert 'Hello, world!' not in ''.join(output) -diff --git a/test/py/tests/test_fs/test_squashfs/test_sqfs_ls.py b/test/py/tests/test_fs/test_squashfs/test_sqfs_ls.py -index 527a556ed8..3b8118104f 100644 ---- a/test/py/tests/test_fs/test_squashfs/test_sqfs_ls.py -+++ b/test/py/tests/test_fs/test_squashfs/test_sqfs_ls.py -@@ -118,6 +118,12 @@ def test_sqfs_ls(u_boot_console): +diff --git a/test/py/tests/test_fs/test_erofs.py b/test/py/tests/test_fs/test_erofs.py +index 458a52ba79..87ad8f2d5f 100644 +--- a/test/py/tests/test_fs/test_erofs.py ++++ b/test/py/tests/test_fs/test_erofs.py +@@ -196,6 +196,15 @@ def test_erofs(u_boot_console): """ build_dir = u_boot_console.config.build_dir -+ # If the EFI subsystem is enabled, default file(e.g. EFI/BOOT/BOOTAA64.EFI) -+ # is scanned when the new disk is detected. This ends up with the unexpected -+ # output at the first 'sqfsls' command. -+ # Clear the previous state. ++ # If the EFI subsystem is enabled and initialized, EFI subsystem tries to ++ # add EFI boot option when the new disk is detected. If there is no EFI ++ # System Partition exists, EFI subsystem outputs error messages and ++ # it ends up with test failure. ++ # Restart U-Boot to clear the previous state. ++ # TODO: Ideally EFI test cases need to be fixed, but it will ++ # increase the number of system reset. ++ u_boot_console.restart_uboot() ++ + try: + # setup test environment + make_erofs_image(build_dir) +diff --git a/test/py/tests/test_fs/test_squashfs/test_sqfs_ls.py b/test/py/tests/test_fs/test_squashfs/test_sqfs_ls.py +index 527a556ed8..a20a7d1a66 100644 +--- a/test/py/tests/test_fs/test_squashfs/test_sqfs_ls.py ++++ b/test/py/tests/test_fs/test_squashfs/test_sqfs_ls.py +@@ -118,6 +118,15 @@ def test_sqfs_ls(u_boot_console): + """ + build_dir = u_boot_console.config.build_dir + ++ # If the EFI subsystem is enabled and initialized, EFI subsystem tries to ++ # add EFI boot option when the new disk is detected. If there is no EFI ++ # System Partition exists, EFI subsystem outputs error messages and ++ # it ends up with test failure. ++ # Restart U-Boot to clear the previous state. ++ # TODO: Ideally EFI test cases need to be fixed, but it will ++ # increase the number of system reset. + u_boot_console.restart_uboot() + # setup test environment From 2be69fdb803bf340aaf2bde7c8bafbb10c91e70a Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 27 Jan 2024 06:56:21 +0000 Subject: [PATCH 166/271] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- uboot-tools.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 8083a3c..dbaa093 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2024.01 -Release: 1%{?candidate:.%{candidate}}%{?dist} +Release: 2%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ @@ -208,6 +208,9 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Sat Jan 27 2024 Fedora Release Engineering - 1:2024.01-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Mon Jan 08 2024 Peter Robinson - 1:2024.01-1 - Update to 2024.01 From 6d54ac747cd8bf8f25bdc91d5688320b8faf361b Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 14 Feb 2024 15:10:30 +0000 Subject: [PATCH 167/271] 2024.04 RC2 --- Provide-a-fallback-to-smbios-tables.patch | 686 ------------------ sources | 2 +- uboot-tools.spec | 13 +- ...atic-management-for-removable-medias.patch | 574 --------------- 4 files changed, 7 insertions(+), 1268 deletions(-) delete mode 100644 Provide-a-fallback-to-smbios-tables.patch delete mode 100644 uefi-Boot-var-automatic-management-for-removable-medias.patch diff --git a/Provide-a-fallback-to-smbios-tables.patch b/Provide-a-fallback-to-smbios-tables.patch deleted file mode 100644 index 4ff8ac5..0000000 --- a/Provide-a-fallback-to-smbios-tables.patch +++ /dev/null @@ -1,686 +0,0 @@ -From patchwork Thu Dec 7 09:18:49 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Ilias Apalodimas -X-Patchwork-Id: 1873089 -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=linaro.org header.i=@linaro.org header.a=rsa-sha256 - header.s=google header.b=SyQQL6ZG; - 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) server-digest SHA384) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4Sm7xz1DLXz23nD - for ; Thu, 7 Dec 2023 20:19:19 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 83BF287243; - Thu, 7 Dec 2023 10:19:05 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -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=linaro.org header.i=@linaro.org header.b="SyQQL6ZG"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 46C3C87243; Thu, 7 Dec 2023 10:19:04 +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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com - [IPv6:2a00:1450:4864:20::330]) - (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 21B8586FFE - for ; Thu, 7 Dec 2023 10:19:02 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=ilias.apalodimas@linaro.org -Received: by mail-wm1-x330.google.com with SMTP id - 5b1f17b1804b1-40c2c65e6aaso1041145e9.2 - for ; Thu, 07 Dec 2023 01:19:02 -0800 (PST) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=linaro.org; s=google; t=1701940741; x=1702545541; 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=vcf8Uy8SIKdN9TXuCeQubka7IJIfrvGMGj1JoUebFs0=; - b=SyQQL6ZGyEFpFFqauSbHRSSNY+KOw9ohESTeXyy7RkWEEIFaK7yPwRRy9NZX+DJLAJ - ECaT3Bchk61s+E1ZsuxrqdlxEYWDULw+4O2hm22gVZjL5L6r4+NwNgCHwzYW/bcro87o - KEGRF7CXG50v6mvrjAOHoy2LbojZLR9d7fjO4gmGtihdnTMOW1cjtrX/3Seiy99QoTK6 - 5Hs119W/hO0/5AE1VVSiIxV1Xx+qYcAHvQqcEEkBCKR2MpHTauUEonUf1LC5LKK2gKG5 - UEzq7XLrPki8hih4EcWsoctpdPp4kBtvpVSSshji9yxDX3EXKzcfA8xyqrB+5qKJU100 - zZ7A== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20230601; t=1701940741; x=1702545541; - 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=vcf8Uy8SIKdN9TXuCeQubka7IJIfrvGMGj1JoUebFs0=; - b=L6Ejctx8u+W0IeEi5FfC1q0ah2NYKTScSheLqomwMY3Q4/BPiEUP7KUarxUKsRwI/3 - yP4rTVAXqlGbT6kFKq3jrxXlRS4HIRZxtFbgHZEKuBnXpkHCQpvQwKUcYY9QkbfdZEir - 5YYfONEv2yTHHfoiBZiVmcPARIQ5+2ra+k493og2Bm0Hk5dVWyaHn/YY6Y+FCWH7ZYn0 - Eq1M9Ng8YB3oMx63KwV9XHBURccH8UdCqwsNDvk2gWLKdSvrjlFD7ExiySd90+i9+6vN - CMLoNESSYj2K9qW/sxbIDgUv1JwYCWgJrDejTzilfagawcPlKY2XtTnOlUsRryYrsPoq - RbZg== -X-Gm-Message-State: AOJu0YxG7g4q8NdX+N/0Mp5YNkHEVHntPyakSqHCtdqDzgaRcQCbtF0q - 2APTVIQc7yNsT16/19bvkV1NRw3x7lZmC4YcT+s= -X-Google-Smtp-Source: - AGHT+IFwnHtGX5IWm5lG5rRTsz6nU13lqUMnEUb8xEq/mngZuRtpzcNdrO7fNaBiIDDQLuKd+Y07Tw== -X-Received: by 2002:a05:600c:2184:b0:40b:dd1f:6dd1 with SMTP id - e4-20020a05600c218400b0040bdd1f6dd1mr1312043wme.240.1701940741617; - Thu, 07 Dec 2023 01:19:01 -0800 (PST) -Received: from localhost.localdomain (ppp046103111243.access.hol.gr. - [46.103.111.243]) by smtp.gmail.com with ESMTPSA id - u21-20020a05600c139500b00405d9a950a2sm1299003wmf.28.2023.12.07.01.19.00 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Thu, 07 Dec 2023 01:19:01 -0800 (PST) -From: Ilias Apalodimas -To: trini@konsulko.com, - sjg@chromium.org -Cc: sean.anderson@seco.com, neil.armstrong@linaro.org, - heinrich.schuchardt@canonical.com, mark.kettenis@xs4all.nl, - Ilias Apalodimas , u-boot@lists.denx.de -Subject: [PATCH 1/2 v3] smbios: Simplify reporting of unknown values -Date: Thu, 7 Dec 2023 11:18:49 +0200 -Message-Id: <20231207091850.17776-2-ilias.apalodimas@linaro.org> -X-Mailer: git-send-email 2.40.1 -In-Reply-To: <20231207091850.17776-1-ilias.apalodimas@linaro.org> -References: <20231207091850.17776-1-ilias.apalodimas@linaro.org> -MIME-Version: 1.0 -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 - -If a value is not valid during the DT or SYSINFO parsing, we explicitly -set that to "Unknown Product" and "Unknown" for the product and -manufacturer respectively. It's cleaner if we move the checks insisde -smbios_add_prop_si() and provide an alternative string in case the -primary is NULL or empty - -pre-patch dmidecode - -Handle 0x0001, DMI type 1, 27 bytes -System Information - Manufacturer: Unknown - Product Name: Unknown Product - Version: Not Specified - Serial Number: Not Specified - UUID: Not Settable - Wake-up Type: Reserved - SKU Number: Not Specified - Family: Not Specified - -[...] - -post-patch dmidecode: - -Handle 0x0001, DMI type 1, 27 bytes -System Information - Manufacturer: Unknown - Product Name: Unknown - Version: Unknown - Serial Number: Unknown - UUID: Not Settable - Wake-up Type: Reserved - SKU Number: Unknown - Family: Unknown -[...] - -While at it make smbios_add_prop_si() add a string directly if the prop -node is NULL and replace smbios_add_string() calls with -smbios_add_prop_si(ctx, NULL, ....) - -Signed-off-by: Ilias Apalodimas ---- -Changes since v2: -- refactor even more code and remove the smbios_add_string calls from the - main code. Instead use smbios_add_prop() foir everything and add a - default value, in case the parsed one is NULL or emtpy -Changes since v1: -- None - - lib/smbios.c | 73 +++++++++++++++++++++++++--------------------------- - 1 file changed, 35 insertions(+), 38 deletions(-) - --- -2.40.1 - -diff --git a/lib/smbios.c b/lib/smbios.c -index d7f4999e8b2a..444aa245a273 100644 ---- a/lib/smbios.c -+++ b/lib/smbios.c -@@ -102,9 +102,6 @@ static int smbios_add_string(struct smbios_ctx *ctx, const char *str) - int i = 1; - char *p = ctx->eos; - -- if (!*str) -- str = "Unknown"; -- - for (;;) { - if (!*p) { - ctx->last_str = p; -@@ -134,11 +131,18 @@ static int smbios_add_string(struct smbios_ctx *ctx, const char *str) - * - * @ctx: context for writing the tables - * @prop: property to write -+ * @dval: Default value to use if the string is not found or is empty - * Return: 0 if not found, else SMBIOS string number (1 or more) - */ - static int smbios_add_prop_si(struct smbios_ctx *ctx, const char *prop, -- int sysinfo_id) -+ int sysinfo_id, const char *dval) - { -+ if (!dval || !*dval) -+ dval = "Unknown"; -+ -+ if (!prop) -+ return smbios_add_string(ctx, dval); -+ - if (sysinfo_id && ctx->dev) { - char val[SMBIOS_STR_MAX]; - int ret; -@@ -151,8 +155,8 @@ static int smbios_add_prop_si(struct smbios_ctx *ctx, const char *prop, - const char *str; - - str = ofnode_read_string(ctx->node, prop); -- if (str) -- return smbios_add_string(ctx, str); -+ -+ return smbios_add_string(ctx, str ? str : dval); - } - - return 0; -@@ -161,12 +165,15 @@ static int smbios_add_prop_si(struct smbios_ctx *ctx, const char *prop, - /** - * smbios_add_prop() - Add a property from the devicetree - * -- * @prop: property to write -+ * @prop: property to write. The default string will be written if -+ * prop is NULL -+ * @dval: Default value to use if the string is not found or is empty - * Return: 0 if not found, else SMBIOS string number (1 or more) - */ --static int smbios_add_prop(struct smbios_ctx *ctx, const char *prop) -+static int smbios_add_prop(struct smbios_ctx *ctx, const char *prop, -+ const char *dval) - { -- return smbios_add_prop_si(ctx, prop, SYSINFO_ID_NONE); -+ return smbios_add_prop_si(ctx, prop, SYSINFO_ID_NONE, dval); - } - - static void smbios_set_eos(struct smbios_ctx *ctx, char *eos) -@@ -228,11 +235,9 @@ static int smbios_write_type0(ulong *current, int handle, - memset(t, 0, sizeof(struct smbios_type0)); - fill_smbios_header(t, SMBIOS_BIOS_INFORMATION, len, handle); - smbios_set_eos(ctx, t->eos); -- t->vendor = smbios_add_string(ctx, "U-Boot"); -+ t->vendor = smbios_add_prop(ctx, NULL, "U-Boot"); - -- t->bios_ver = smbios_add_prop(ctx, "version"); -- if (!t->bios_ver) -- t->bios_ver = smbios_add_string(ctx, PLAIN_VERSION); -+ t->bios_ver = smbios_add_prop(ctx, "version", PLAIN_VERSION); - if (t->bios_ver) - gd->smbios_version = ctx->last_str; - log_debug("smbios_version = %p: '%s'\n", gd->smbios_version, -@@ -241,7 +246,7 @@ static int smbios_write_type0(ulong *current, int handle, - print_buffer((ulong)gd->smbios_version, gd->smbios_version, - 1, strlen(gd->smbios_version) + 1, 0); - #endif -- t->bios_release_date = smbios_add_string(ctx, U_BOOT_DMI_DATE); -+ t->bios_release_date = smbios_add_prop(ctx, NULL, U_BOOT_DMI_DATE); - #ifdef CONFIG_ROM_SIZE - t->bios_rom_size = (CONFIG_ROM_SIZE / 65536) - 1; - #endif -@@ -280,22 +285,19 @@ static int smbios_write_type1(ulong *current, int handle, - memset(t, 0, sizeof(struct smbios_type1)); - fill_smbios_header(t, SMBIOS_SYSTEM_INFORMATION, len, handle); - smbios_set_eos(ctx, t->eos); -- t->manufacturer = smbios_add_prop(ctx, "manufacturer"); -- if (!t->manufacturer) -- t->manufacturer = smbios_add_string(ctx, "Unknown"); -- t->product_name = smbios_add_prop(ctx, "product"); -- if (!t->product_name) -- t->product_name = smbios_add_string(ctx, "Unknown Product"); -+ t->manufacturer = smbios_add_prop(ctx, "manufacturer", "Unknown"); -+ t->product_name = smbios_add_prop(ctx, "product", "Unknown"); - t->version = smbios_add_prop_si(ctx, "version", -- SYSINFO_ID_SMBIOS_SYSTEM_VERSION); -+ SYSINFO_ID_SMBIOS_SYSTEM_VERSION, -+ "Unknown"); - if (serial_str) { -- t->serial_number = smbios_add_string(ctx, serial_str); -+ t->serial_number = smbios_add_prop(ctx, NULL, serial_str); - strncpy((char *)t->uuid, serial_str, sizeof(t->uuid)); - } else { -- t->serial_number = smbios_add_prop(ctx, "serial"); -+ t->serial_number = smbios_add_prop(ctx, "serial", "Unknown"); - } -- t->sku_number = smbios_add_prop(ctx, "sku"); -- t->family = smbios_add_prop(ctx, "family"); -+ t->sku_number = smbios_add_prop(ctx, "sku", "Unknown"); -+ t->family = smbios_add_prop(ctx, "family", "Unknown"); - - len = t->length + smbios_string_table_len(ctx); - *current += len; -@@ -314,15 +316,12 @@ static int smbios_write_type2(ulong *current, int handle, - memset(t, 0, sizeof(struct smbios_type2)); - fill_smbios_header(t, SMBIOS_BOARD_INFORMATION, len, handle); - smbios_set_eos(ctx, t->eos); -- t->manufacturer = smbios_add_prop(ctx, "manufacturer"); -- if (!t->manufacturer) -- t->manufacturer = smbios_add_string(ctx, "Unknown"); -- t->product_name = smbios_add_prop(ctx, "product"); -- if (!t->product_name) -- t->product_name = smbios_add_string(ctx, "Unknown Product"); -+ t->manufacturer = smbios_add_prop(ctx, "manufacturer", "Unknown"); -+ t->product_name = smbios_add_prop(ctx, "product", "Unknown"); - t->version = smbios_add_prop_si(ctx, "version", -- SYSINFO_ID_SMBIOS_BASEBOARD_VERSION); -- t->asset_tag_number = smbios_add_prop(ctx, "asset-tag"); -+ SYSINFO_ID_SMBIOS_BASEBOARD_VERSION, -+ "Unknown"); -+ t->asset_tag_number = smbios_add_prop(ctx, "asset-tag", "Unknown"); - t->feature_flags = SMBIOS_BOARD_FEATURE_HOSTING; - t->board_type = SMBIOS_BOARD_MOTHERBOARD; - -@@ -343,9 +342,7 @@ static int smbios_write_type3(ulong *current, int handle, - memset(t, 0, sizeof(struct smbios_type3)); - fill_smbios_header(t, SMBIOS_SYSTEM_ENCLOSURE, len, handle); - smbios_set_eos(ctx, t->eos); -- t->manufacturer = smbios_add_prop(ctx, "manufacturer"); -- if (!t->manufacturer) -- t->manufacturer = smbios_add_string(ctx, "Unknown"); -+ t->manufacturer = smbios_add_prop(ctx, "manufacturer", "Unknown"); - t->chassis_type = SMBIOS_ENCLOSURE_DESKTOP; - t->bootup_state = SMBIOS_STATE_SAFE; - t->power_supply_state = SMBIOS_STATE_SAFE; -@@ -388,8 +385,8 @@ static void smbios_write_type4_dm(struct smbios_type4 *t, - #endif - - t->processor_family = processor_family; -- t->processor_manufacturer = smbios_add_string(ctx, vendor); -- t->processor_version = smbios_add_string(ctx, name); -+ t->processor_manufacturer = smbios_add_prop(ctx, NULL, vendor); -+ t->processor_version = smbios_add_prop(ctx, NULL, name); - } - - static int smbios_write_type4(ulong *current, int handle, - -From patchwork Thu Dec 7 09:18:50 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Ilias Apalodimas -X-Patchwork-Id: 1873090 -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=linaro.org header.i=@linaro.org header.a=rsa-sha256 - header.s=google header.b=KcFhbOkM; - 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) server-digest SHA384) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4Sm7yF71l9z23nD - for ; Thu, 7 Dec 2023 20:19:33 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 7D6CB87483; - Thu, 7 Dec 2023 10:19:07 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -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=linaro.org header.i=@linaro.org header.b="KcFhbOkM"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id B1E298745E; Thu, 7 Dec 2023 10:19:05 +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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com - [IPv6:2a00:1450:4864:20::433]) - (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 792A8871BB - for ; Thu, 7 Dec 2023 10:19:03 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=ilias.apalodimas@linaro.org -Received: by mail-wr1-x433.google.com with SMTP id - ffacd0b85a97d-3334a701cbbso717814f8f.0 - for ; Thu, 07 Dec 2023 01:19:03 -0800 (PST) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=linaro.org; s=google; t=1701940743; x=1702545543; 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=JIRbBgzEcdaHWJ7fVa5JIsDJda65F2tSuL1aji2tJ5U=; - b=KcFhbOkMkvXbThdeAeI92+uSdN5LvKdwae+36Z/jz0Hg0yPDs5v8UqeDt2d+NaSlh9 - GERy8kIMCopTcJ13FoUM8Ok4PBSMRSDxbJo4lLaGIbddw7hcit4uxhJfTAL8zKxnboMU - YBZPC/E2NjWklmJx6p4zmLeXS5IzncTaDE9z2XFMRGrJ/KLqpTvwOp/nf57jP/kdIxpe - Q7vWAhVY8gC19ogSD41RB4ixA0HefI6xKq6fAl2GwvRlOvCEGAcVdpbl8aj5R8qEOSVT - BsuqzbDXHlQI6L9Y++Yqe89LcKMRoAWqHrgOuO3eBwnEp2jjjzV8G24mTFD+4wso1ERo - mIkQ== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20230601; t=1701940743; x=1702545543; - 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=JIRbBgzEcdaHWJ7fVa5JIsDJda65F2tSuL1aji2tJ5U=; - b=pee1V3/z6lW4enMw0ueHvBJJXGhNLq7KccXmY4QkXfVRLXGBOedbBwQH1KXDxj/gJs - RZ/KhsEvPN4qeqrqpeOnQoDBQs3QarjlsMHmlhnlBZMpgPKTJyg5MEpZPAlnfqZJkd4A - vMMYc1fZ+alT5gfZjdzpLypC2sOj9yC3ktb8ZYXQGQzN7yCYrQnBHgiYn3vDDaHMaQNH - n73RxiQNWJs9Ekow2hxk4l2FDpvlwuiFr9y+dnuzo5TvpbgaDbj64tcqxalnusBw3jKC - fE6r5cob553rh/ZM/bVJD/PIXP+LOSUHyiqJG+7KpEpSAY984EIHkKFRRbLHSIuwBAK+ - wTIw== -X-Gm-Message-State: AOJu0YwQcpf2rvKZHAPWsPT7fH7x3sa+mhF5kDJ557Oe9zwmQc4v6NzO - ZFEgE8KlljYnqibJKd2JdRCP6A== -X-Google-Smtp-Source: - AGHT+IEfJolrJ5g6Qgn465DsdBpMZMW+cn6kVgLvehQIXNT7VcXYfkBvC8Hf5zXnl7Q5Yto7bS2tOg== -X-Received: by 2002:a05:600c:d5:b0:40b:5e59:99c6 with SMTP id - u21-20020a05600c00d500b0040b5e5999c6mr940484wmm.230.1701940742953; - Thu, 07 Dec 2023 01:19:02 -0800 (PST) -Received: from localhost.localdomain (ppp046103111243.access.hol.gr. - [46.103.111.243]) by smtp.gmail.com with ESMTPSA id - u21-20020a05600c139500b00405d9a950a2sm1299003wmf.28.2023.12.07.01.19.01 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Thu, 07 Dec 2023 01:19:02 -0800 (PST) -From: Ilias Apalodimas -To: trini@konsulko.com, - sjg@chromium.org -Cc: sean.anderson@seco.com, neil.armstrong@linaro.org, - heinrich.schuchardt@canonical.com, mark.kettenis@xs4all.nl, - Ilias Apalodimas , u-boot@lists.denx.de -Subject: [PATCH 2/2 v3] smbios: Fallback to the default DT if sysinfo nodes - are missing -Date: Thu, 7 Dec 2023 11:18:50 +0200 -Message-Id: <20231207091850.17776-3-ilias.apalodimas@linaro.org> -X-Mailer: git-send-email 2.40.1 -In-Reply-To: <20231207091850.17776-1-ilias.apalodimas@linaro.org> -References: <20231207091850.17776-1-ilias.apalodimas@linaro.org> -MIME-Version: 1.0 -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 - -In order to fill in the SMBIOS tables U-Boot currently relies on a -"u-boot,sysinfo-smbios" compatible node. This is fine for the boards -that already include such nodes. However with some recent EFI changes, -the majority of boards can boot up distros, which usually rely on -things like dmidecode etc for their reporting. For boards that -lack this special node the SMBIOS output looks like: - -System Information - Manufacturer: Unknown - Product Name: Unknown - Version: Unknown - Serial Number: Unknown - UUID: Not Settable - Wake-up Type: Reserved - SKU Number: Unknown - Family: Unknown - -This looks problematic since most of the info are "Unknown". The DT spec -specifies standard properties containing relevant information like -'model' and 'compatible' for which the suggested format is -. Unfortunately the 'model' string found in DTs is -usually lacking the manufacturer so we can't use it for both -'Manufacturer' and 'Product Name' SMBIOS entries reliably. - -So let's add a last resort to our current smbios parsing. If none of -the sysinfo properties are found, scan for those information in the -root node of the device tree. Use the 'model' to fill the 'Product -Name' and the first value of 'compatible' for the 'Manufacturer', since -that always contains one. - -pre-patch: -Handle 0x0001, DMI type 1, 27 bytes -System Information - Manufacturer: Unknown - Product Name: Unknown - Version: Unknown - Serial Number: 100000000bb24ceb - UUID: 30303031-3030-3030-3061-613234636435 - Wake-up Type: Reserved - SKU Number: Unknown - Family: Unknown -[...] - -and post patch: -Handle 0x0001, DMI type 1, 27 bytes -System Information - Manufacturer: raspberrypi - Product Name: Raspberry Pi 4 Model B Rev 1.1 - Version: Unknown - Serial Number: 100000000bb24ceb - UUID: 30303031-3030-3030-3061-613234636435 - Wake-up Type: Reserved - SKU Number: Unknown - Family: Unknown -[...] - -Signed-off-by: Ilias Apalodimas ---- -Simon, I'll work with tou on the refactoring you wanted and -remove the EFI requirement of SMBIOS in !x86 platforms. -Since this code has no tests, I'll add some once the refactoring -is done - -Changes since v2: -- Spelling mistakes -- rebase on top of patch #1 changes -Changes since v1: -- Tokenize the DT node entry and use the appropriate value instead of - the entire string -- Removed Peters tested/reviewed-by tags due to the above - lib/smbios.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++++--- - 1 file changed, 89 insertions(+), 5 deletions(-) - --- -2.40.1 - -diff --git a/lib/smbios.c b/lib/smbios.c -index 444aa245a273..3f0e1d529537 100644 ---- a/lib/smbios.c -+++ b/lib/smbios.c -@@ -9,11 +9,14 @@ - #include - #include - #include -+#include - #include - #include - #include - #include - #include -+#include -+#include - #ifdef CONFIG_CPU - #include - #include -@@ -43,6 +46,25 @@ - - DECLARE_GLOBAL_DATA_PTR; - -+/** -+ * struct map_sysinfo - Mapping of sysinfo strings to DT -+ * -+ * @sysinfo_str: sysinfo string -+ * @dt_str: DT string -+ * @max: Max index of the tokenized string to pick. Counting starts from 0 -+ * -+ */ -+struct map_sysinfo { -+ const char *sysinfo_str; -+ const char *dt_str; -+ int max; -+}; -+ -+static const struct map_sysinfo sysinfo_to_dt[] = { -+ { .sysinfo_str = "product", .dt_str = "model", 2 }, -+ { .sysinfo_str = "manufacturer", .dt_str = "compatible", 1 }, -+}; -+ - /** - * struct smbios_ctx - context for writing SMBIOS tables - * -@@ -87,6 +109,18 @@ struct smbios_write_method { - const char *subnode_name; - }; - -+static const struct map_sysinfo *convert_sysinfo_to_dt(const char *sysinfo_str) -+{ -+ int i; -+ -+ for (i = 0; i < ARRAY_SIZE(sysinfo_to_dt); i++) { -+ if (!strcmp(sysinfo_str, sysinfo_to_dt[i].sysinfo_str)) -+ return &sysinfo_to_dt[i]; -+ } -+ -+ return NULL; -+} -+ - /** - * smbios_add_string() - add a string to the string area - * -@@ -124,6 +158,42 @@ static int smbios_add_string(struct smbios_ctx *ctx, const char *str) - } - } - -+/** -+ * get_str_from_dt - Get a substring from a DT property. -+ * After finding the property in the DT, the function -+ * will parse comma-separated values and return the value. -+ * If nprop->max exceeds the number of comma-separated -+ * elements, the last non NULL value will be returned. -+ * Counting starts from zero. -+ * -+ * @nprop: sysinfo property to use -+ * @str: pointer to fill with data -+ * @size: str buffer length -+ */ -+static -+void get_str_from_dt(const struct map_sysinfo *nprop, char *str, size_t size) -+{ -+ const char *dt_str; -+ int cnt = 0; -+ char *token; -+ -+ memset(str, 0, size); -+ if (!nprop || !nprop->max) -+ return; -+ -+ dt_str = ofnode_read_string(ofnode_root(), nprop->dt_str); -+ if (!dt_str) -+ return; -+ -+ memcpy(str, dt_str, size); -+ token = strtok(str, ","); -+ while (token && cnt < nprop->max) { -+ strlcpy(str, token, strlen(token) + 1); -+ token = strtok(NULL, ","); -+ cnt++; -+ } -+} -+ - /** - * smbios_add_prop_si() - Add a property from the devicetree or sysinfo - * -@@ -137,6 +207,8 @@ static int smbios_add_string(struct smbios_ctx *ctx, const char *str) - static int smbios_add_prop_si(struct smbios_ctx *ctx, const char *prop, - int sysinfo_id, const char *dval) - { -+ int ret; -+ - if (!dval || !*dval) - dval = "Unknown"; - -@@ -145,18 +217,30 @@ static int smbios_add_prop_si(struct smbios_ctx *ctx, const char *prop, - - if (sysinfo_id && ctx->dev) { - char val[SMBIOS_STR_MAX]; -- int ret; - - ret = sysinfo_get_str(ctx->dev, sysinfo_id, sizeof(val), val); - if (!ret) - return smbios_add_string(ctx, val); - } - if (IS_ENABLED(CONFIG_OF_CONTROL)) { -- const char *str; -- -- str = ofnode_read_string(ctx->node, prop); -+ const char *str = NULL; -+ char str_dt[128] = { 0 }; -+ /* -+ * If the node is not valid fallback and try the entire DT -+ * so we can at least fill in manufacturer and board type -+ */ -+ if (ofnode_valid(ctx->node)) { -+ str = ofnode_read_string(ctx->node, prop); -+ } else { -+ const struct map_sysinfo *nprop; -+ -+ nprop = convert_sysinfo_to_dt(prop); -+ get_str_from_dt(nprop, str_dt, sizeof(str_dt)); -+ str = (const char *)str_dt; -+ } - -- return smbios_add_string(ctx, str ? str : dval); -+ ret = smbios_add_string(ctx, str && *str ? str : dval); -+ return ret; - } - - return 0; diff --git a/sources b/sources index 30e8529..8f50a6d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2024.01.tar.bz2) = 45bd093ba3bda23e43cdde83d8656c1ee1348ac2886ecff1fee475f101ac4965a5be6565408fa5b990c723f3fdc833edfca60a719f735a43040cd14a1b59a88b +SHA512 (u-boot-2024.04-rc2.tar.bz2) = f5c6d6a37ce6b34bd1ab2cddd5d0cacddfd19b5345934731df3a7ed454a3895ad2d14acbdb2e1b922b9571778e50b54cb7612b1798a04dfb991365d3344cd865 diff --git a/uboot-tools.spec b/uboot-tools.spec index dbaa093..eb2f4a3 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -#global candidate rc0 +%global candidate rc2 %if 0%{?rhel} %bcond_with toolsonly %else @@ -6,8 +6,8 @@ %endif Name: uboot-tools -Version: 2024.01 -Release: 2%{?candidate:.%{candidate}}%{?dist} +Version: 2024.04 +Release: 0.2%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ @@ -19,9 +19,7 @@ Source1: aarch64-boards Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch Patch2: disable-VBE-by-default.patch -Patch3: Provide-a-fallback-to-smbios-tables.patch Patch5: enable-bootmenu-by-default.patch -Patch6: uefi-Boot-var-automatic-management-for-removable-medias.patch Patch7: Add-video-damage-tracking.patch # Board fixes and enablement @@ -29,8 +27,6 @@ Patch7: Add-video-damage-tracking.patch Patch10: rpi-Switch-to-OF_HAS_PRIOR_STAGE-by-default.patch # Rockchips improvements Patch11: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch -# Lots more to do, mostly untested, definitely unsupported -Patch12: rpi5-initial-support.patch #Patch12: 0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch BuildRequires: bc @@ -208,6 +204,9 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Wed Feb 14 2024 Peter Robinson - 1:2024.04-0.2.rc2 +- Update to 2024.04 RC2 + * Sat Jan 27 2024 Fedora Release Engineering - 1:2024.01-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild diff --git a/uefi-Boot-var-automatic-management-for-removable-medias.patch b/uefi-Boot-var-automatic-management-for-removable-medias.patch deleted file mode 100644 index 48ae88e..0000000 --- a/uefi-Boot-var-automatic-management-for-removable-medias.patch +++ /dev/null @@ -1,574 +0,0 @@ -From patchwork Fri Nov 10 04:25:37 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 8bit -X-Patchwork-Submitter: Masahisa Kojima -X-Patchwork-Id: 1862317 -X-Patchwork-Delegate: apalos@gmail.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=linaro.org header.i=@linaro.org header.a=rsa-sha256 - header.s=google header.b=muA1rcXE; - 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) server-digest SHA384) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4SRQnL1SNCz1yRF - for ; Fri, 10 Nov 2023 15:28:54 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 4C150877A0; - Fri, 10 Nov 2023 05:27:39 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -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=linaro.org header.i=@linaro.org header.b="muA1rcXE"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 9DA4487796; Fri, 10 Nov 2023 05:27:28 +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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-qv1-xf30.google.com (mail-qv1-xf30.google.com - [IPv6:2607:f8b0:4864:20::f30]) - (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 E1AE487795 - for ; Fri, 10 Nov 2023 05:27:22 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=masahisa.kojima@linaro.org -Received: by mail-qv1-xf30.google.com with SMTP id - 6a1803df08f44-66d09b6d007so10800236d6.1 - for ; Thu, 09 Nov 2023 20:27:22 -0800 (PST) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=linaro.org; s=google; t=1699590441; x=1700195241; 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=TMp02tF2/jn50c0fdB6OUXNmWJ9Af2C5T6zhn2D5BPI=; - b=muA1rcXEW1UV0ytByrk/oz/vuO7kL/M5Szuv8+JLohfHHFY3sZW5v5q4Tn1coMbMKW - 6+JvY0qla9DiPjvWA90QSopUCqBoggSNPTIlTn4YSs0zA/+Aa9ufsx25M+rq4pdYGAZq - ujAG9mRgWMuq7W+eZZWfQo6eFqEo14D6RbQL5NFW/G0Wkle6TwLwu7dp19DOw7hH/jPq - sq9/5/DA4FEI+4sRDsPBAQ48VTq05vuMv2PMU0t4d7SXPVCEk1lW+JFZB4wooN2XotQ+ - ni+S40bdTeGBscZ+sajQQgtDd49nxGSB518samtlg5SGdhDB9WKak39uPeWU4WFYc01J - R7BQ== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20230601; t=1699590441; x=1700195241; - 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=TMp02tF2/jn50c0fdB6OUXNmWJ9Af2C5T6zhn2D5BPI=; - b=o5TY9c0iL/aKbWJtamq+fAKn5twYwIcXo5Z8lxIo1/WL8jhCu3973LiJ6l2rbP6I26 - wEUpA97eZRYjRnp6Pfb9nJ5+Ip11akGFqY+UNFjwNues+jYvCmrhtbzt3RIwwRMopasI - IvpvSU+Vk0opNS2b96ZRak7X34ZoUNZVcjTBCSqx3UgQcaMOxrP5u7LholG/3rTttkkF - gdIAWrm7wPUrREhnt8opfpTWbusAkgJ1lAa0uqcfb4TRE7fKsiX3du3TwgJNsvACBXxW - W4w5nDy5AXlY05IOsmMvxjIudLF0aDB3y/aUT1K7/NyAO77e5CPoGEIRF4JnpngLM7yx - RcEw== -X-Gm-Message-State: AOJu0YwKFnJ+XRzaRWdr9TK+didg99ZRC2gUKVvYvCLFFGqfG4yFbCXC - IsubnJ6RTNtZqmONUFojqVLmrQYm513MFxxhCLg= -X-Google-Smtp-Source: - AGHT+IE/39rKwHRMrxLkfDXIlyOXct/rRbXebKb2Lc3eaLeJaCt4Vmnxn7CrXnlXXLzUgocEmJUKcA== -X-Received: by 2002:a05:6214:d44:b0:675:667d:a1b6 with SMTP id - 4-20020a0562140d4400b00675667da1b6mr7212832qvr.0.1699590440388; - Thu, 09 Nov 2023 20:27:20 -0800 (PST) -Received: from localhost ([164.70.16.189]) by smtp.gmail.com with ESMTPSA id - n18-20020a170902e55200b001c0bf60ba5csm4304818plf.272.2023.11.09.20.27.19 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Thu, 09 Nov 2023 20:27:19 -0800 (PST) -From: Masahisa Kojima -To: u-boot@lists.denx.de -Cc: Heinrich Schuchardt , - Ilias Apalodimas , - Simon Glass , - Takahiro Akashi , - Michal Simek , Raymond Mao , - Masahisa Kojima , - Joao Marcos Costa , - Huang Jianan , - Thomas Petazzoni , - Miquel Raynal , linux-erofs@lists.ozlabs.org -Subject: [PATCH v12 4/9] efi_loader: Boot var automatic management -Date: Fri, 10 Nov 2023 13:25:37 +0900 -Message-Id: <20231110042542.3797301-5-masahisa.kojima@linaro.org> -X-Mailer: git-send-email 2.34.1 -In-Reply-To: <20231110042542.3797301-1-masahisa.kojima@linaro.org> -References: <20231110042542.3797301-1-masahisa.kojima@linaro.org> -MIME-Version: 1.0 -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 - -From: Raymond Mao - -Changes for complying to EFI spec §3.5.1.1 -'Removable Media Boot Behavior'. -Boot variables can be automatically generated during a removable -media is probed. At the same time, unused boot variables will be -detected and removed. - -Please note that currently the function 'efi_disk_remove' has no -ability to distinguish below two scenarios -a) Unplugging of a removable media under U-Boot -b) U-Boot exiting and booting an OS -Thus currently the boot variables management is not added into -'efi_disk_remove' to avoid boot options being added/erased -repeatedly under scenario b) during power cycles -See TODO comments under function 'efi_disk_remove' for more details - -The original efi_secboot tests expect that BootOrder EFI variable -is not defined. With this commit, the BootOrder EFI variable is -automatically added when the disk is detected. The original -efi_secboot tests end up with unexpected failure. -The efi_secboot tests need to be modified to explicitly set -the BootOrder EFI variable. - -squashfs and erofs ls tests are also affected by this modification, -need to clear the previous state before squashfs ls test starts. - -Co-developed-by: Masahisa Kojima -Signed-off-by: Masahisa Kojima -Signed-off-by: Raymond Mao -Reviewed-by: Heinrich Schuchardt -Reviewed-by: Ilias Apalodimas -Reviewed-by: Joao Marcos Costa ---- - lib/efi_loader/efi_disk.c | 18 ++++++++ - lib/efi_loader/efi_setup.c | 7 ++++ - test/py/tests/test_efi_secboot/test_signed.py | 42 +++++++++---------- - .../test_efi_secboot/test_signed_intca.py | 14 +++---- - .../tests/test_efi_secboot/test_unsigned.py | 14 +++---- - test/py/tests/test_fs/test_erofs.py | 9 ++++ - .../test_fs/test_squashfs/test_sqfs_ls.py | 9 ++++ - 7 files changed, 78 insertions(+), 35 deletions(-) - -diff --git a/lib/efi_loader/efi_disk.c b/lib/efi_loader/efi_disk.c -index f0d76113b0..b808a7fe62 100644 ---- a/lib/efi_loader/efi_disk.c -+++ b/lib/efi_loader/efi_disk.c -@@ -690,6 +690,13 @@ int efi_disk_probe(void *ctx, struct event *event) - return -1; - } - -+ /* only do the boot option management when UEFI sub-system is initialized */ -+ if (IS_ENABLED(CONFIG_CMD_BOOTEFI_BOOTMGR) && efi_obj_list_initialized == EFI_SUCCESS) { -+ ret = efi_bootmgr_update_media_device_boot_option(); -+ if (ret != EFI_SUCCESS) -+ return -1; -+ } -+ - return 0; - } - -@@ -742,6 +749,17 @@ int efi_disk_remove(void *ctx, struct event *event) - dev_tag_del(dev, DM_TAG_EFI); - - return 0; -+ -+ /* -+ * TODO A flag to distinguish below 2 different scenarios of this -+ * function call is needed: -+ * a) Unplugging of a removable media under U-Boot -+ * b) U-Boot exiting and booting an OS -+ * In case of scenario a), efi_bootmgr_update_media_device_boot_option() -+ * needs to be invoked here to update the boot options and remove the -+ * unnecessary ones. -+ */ -+ - } - - /** -diff --git a/lib/efi_loader/efi_setup.c b/lib/efi_loader/efi_setup.c -index ad719afd63..c02569cb6d 100644 ---- a/lib/efi_loader/efi_setup.c -+++ b/lib/efi_loader/efi_setup.c -@@ -245,6 +245,13 @@ efi_status_t efi_init_obj_list(void) - if (ret != EFI_SUCCESS) - goto out; - -+ if (IS_ENABLED(CONFIG_CMD_BOOTEFI_BOOTMGR)) { -+ /* update boot option after variable service initialized */ -+ ret = efi_bootmgr_update_media_device_boot_option(); -+ if (ret != EFI_SUCCESS) -+ goto out; -+ } -+ - /* Define supported languages */ - ret = efi_init_platform_lang(); - if (ret != EFI_SUCCESS) -diff --git a/test/py/tests/test_efi_secboot/test_signed.py b/test/py/tests/test_efi_secboot/test_signed.py -index ca52e853d8..2f862a259a 100644 ---- a/test/py/tests/test_efi_secboot/test_signed.py -+++ b/test/py/tests/test_efi_secboot/test_signed.py -@@ -29,7 +29,7 @@ class TestEfiSignedImage(object): - output = u_boot_console.run_command_list([ - 'host bind 0 %s' % disk_img, - 'efidebug boot add -b 1 HELLO1 host 0:1 /helloworld.efi.signed -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'bootefi bootmgr']) - assert 'Hello, world!' in ''.join(output) - -@@ -37,7 +37,7 @@ class TestEfiSignedImage(object): - # Test Case 1b, run unsigned image if no PK - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 2 HELLO2 host 0:1 /helloworld.efi -s ""', -- 'efidebug boot next 2', -+ 'efidebug boot order 2', - 'bootefi bootmgr']) - assert 'Hello, world!' in ''.join(output) - -@@ -59,13 +59,13 @@ class TestEfiSignedImage(object): - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO1 host 0:1 /helloworld.efi.signed -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert('\'HELLO1\' failed' in ''.join(output)) - assert('efi_start_image() returned: 26' in ''.join(output)) - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 2 HELLO2 host 0:1 /helloworld.efi -s ""', -- 'efidebug boot next 2', -+ 'efidebug boot order 2', - 'efidebug test bootmgr']) - assert '\'HELLO2\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -77,12 +77,12 @@ class TestEfiSignedImage(object): - 'setenv -e -nv -bs -rt -at -i 4000000:$filesize db']) - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ -- 'efidebug boot next 2', -+ 'efidebug boot order 2', - 'efidebug test bootmgr']) - assert '\'HELLO2\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) - output = u_boot_console.run_command_list([ -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'bootefi bootmgr']) - assert 'Hello, world!' in ''.join(output) - -@@ -105,7 +105,7 @@ class TestEfiSignedImage(object): - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi.signed -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -117,7 +117,7 @@ class TestEfiSignedImage(object): - 'setenv -e -nv -bs -rt -at -i 4000000:$filesize db']) - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -143,7 +143,7 @@ class TestEfiSignedImage(object): - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi.signed -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -170,7 +170,7 @@ class TestEfiSignedImage(object): - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi.signed_2sigs -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert 'Hello, world!' in ''.join(output) - -@@ -181,7 +181,7 @@ class TestEfiSignedImage(object): - 'setenv -e -nv -bs -rt -at -a -i 4000000:$filesize db']) - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert 'Hello, world!' in ''.join(output) - -@@ -193,7 +193,7 @@ class TestEfiSignedImage(object): - 'setenv -e -nv -bs -rt -at -i 4000000:$filesize dbx']) - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -205,7 +205,7 @@ class TestEfiSignedImage(object): - 'setenv -e -nv -bs -rt -at -a -i 4000000:$filesize dbx']) - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -230,7 +230,7 @@ class TestEfiSignedImage(object): - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi.signed_2sigs -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -254,7 +254,7 @@ class TestEfiSignedImage(object): - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi.signed -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'bootefi bootmgr']) - assert 'Hello, world!' in ''.join(output) - -@@ -265,7 +265,7 @@ class TestEfiSignedImage(object): - 'setenv -e -nv -bs -rt -at -i 4000000:$filesize dbx']) - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -279,7 +279,7 @@ class TestEfiSignedImage(object): - 'setenv -e -nv -bs -rt -at -i 4000000:$filesize dbx']) - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -307,7 +307,7 @@ class TestEfiSignedImage(object): - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi.signed_2sigs -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -330,7 +330,7 @@ class TestEfiSignedImage(object): - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi.signed_2sigs -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -349,7 +349,7 @@ class TestEfiSignedImage(object): - output = u_boot_console.run_command_list([ - 'host bind 0 %s' % disk_img, - 'efidebug boot add -b 1 HELLO1 host 0:1 /helloworld_forged.efi.signed -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert('hELLO, world!' in ''.join(output)) - -@@ -364,7 +364,7 @@ class TestEfiSignedImage(object): - 'setenv -e -nv -bs -rt -at -i 4000000:$filesize PK']) - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert(not 'hELLO, world!' in ''.join(output)) - assert('\'HELLO1\' failed' in ''.join(output)) -diff --git a/test/py/tests/test_efi_secboot/test_signed_intca.py b/test/py/tests/test_efi_secboot/test_signed_intca.py -index d8d599d22f..8d9a5f3e7f 100644 ---- a/test/py/tests/test_efi_secboot/test_signed_intca.py -+++ b/test/py/tests/test_efi_secboot/test_signed_intca.py -@@ -40,7 +40,7 @@ class TestEfiSignedImageIntca(object): - - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO_a host 0:1 /helloworld.efi.signed_a -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO_a\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -49,7 +49,7 @@ class TestEfiSignedImageIntca(object): - # Test Case 1b, signed and authenticated by root CA - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 2 HELLO_ab host 0:1 /helloworld.efi.signed_ab -s ""', -- 'efidebug boot next 2', -+ 'efidebug boot order 2', - 'bootefi bootmgr']) - assert 'Hello, world!' in ''.join(output) - -@@ -71,7 +71,7 @@ class TestEfiSignedImageIntca(object): - - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO_abc host 0:1 /helloworld.efi.signed_abc -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO_abc\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -81,7 +81,7 @@ class TestEfiSignedImageIntca(object): - output = u_boot_console.run_command_list([ - 'fatload host 0:1 4000000 db_b.auth', - 'setenv -e -nv -bs -rt -at -i 4000000:$filesize db', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO_abc\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -91,7 +91,7 @@ class TestEfiSignedImageIntca(object): - output = u_boot_console.run_command_list([ - 'fatload host 0:1 4000000 db_c.auth', - 'setenv -e -nv -bs -rt -at -i 4000000:$filesize db', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert 'Hello, world!' in ''.join(output) - -@@ -117,7 +117,7 @@ class TestEfiSignedImageIntca(object): - - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO_abc host 0:1 /helloworld.efi.signed_abc -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert 'Hello, world!' in ''.join(output) - # Or, -@@ -129,7 +129,7 @@ class TestEfiSignedImageIntca(object): - output = u_boot_console.run_command_list([ - 'fatload host 0:1 4000000 dbx_c.auth', - 'setenv -e -nv -bs -rt -at -i 4000000:$filesize dbx', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO_abc\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -diff --git a/test/py/tests/test_efi_secboot/test_unsigned.py b/test/py/tests/test_efi_secboot/test_unsigned.py -index df63f0df08..7c078f220d 100644 ---- a/test/py/tests/test_efi_secboot/test_unsigned.py -+++ b/test/py/tests/test_efi_secboot/test_unsigned.py -@@ -36,11 +36,11 @@ class TestEfiUnsignedImage(object): - - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'bootefi bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - output = u_boot_console.run_command_list([ -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert 'efi_start_image() returned: 26' in ''.join(output) - assert 'Hello, world!' not in ''.join(output) -@@ -65,7 +65,7 @@ class TestEfiUnsignedImage(object): - - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'bootefi bootmgr']) - assert 'Hello, world!' in ''.join(output) - -@@ -89,11 +89,11 @@ class TestEfiUnsignedImage(object): - - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'bootefi bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - output = u_boot_console.run_command_list([ -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert 'efi_start_image() returned: 26' in ''.join(output) - assert 'Hello, world!' not in ''.join(output) -@@ -107,11 +107,11 @@ class TestEfiUnsignedImage(object): - - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'bootefi bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - output = u_boot_console.run_command_list([ -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert 'efi_start_image() returned: 26' in ''.join(output) - assert 'Hello, world!' not in ''.join(output) -diff --git a/test/py/tests/test_fs/test_erofs.py b/test/py/tests/test_fs/test_erofs.py -index 458a52ba79..87ad8f2d5f 100644 ---- a/test/py/tests/test_fs/test_erofs.py -+++ b/test/py/tests/test_fs/test_erofs.py -@@ -196,6 +196,15 @@ def test_erofs(u_boot_console): - """ - build_dir = u_boot_console.config.build_dir - -+ # If the EFI subsystem is enabled and initialized, EFI subsystem tries to -+ # add EFI boot option when the new disk is detected. If there is no EFI -+ # System Partition exists, EFI subsystem outputs error messages and -+ # it ends up with test failure. -+ # Restart U-Boot to clear the previous state. -+ # TODO: Ideally EFI test cases need to be fixed, but it will -+ # increase the number of system reset. -+ u_boot_console.restart_uboot() -+ - try: - # setup test environment - make_erofs_image(build_dir) -diff --git a/test/py/tests/test_fs/test_squashfs/test_sqfs_ls.py b/test/py/tests/test_fs/test_squashfs/test_sqfs_ls.py -index 527a556ed8..a20a7d1a66 100644 ---- a/test/py/tests/test_fs/test_squashfs/test_sqfs_ls.py -+++ b/test/py/tests/test_fs/test_squashfs/test_sqfs_ls.py -@@ -118,6 +118,15 @@ def test_sqfs_ls(u_boot_console): - """ - build_dir = u_boot_console.config.build_dir - -+ # If the EFI subsystem is enabled and initialized, EFI subsystem tries to -+ # add EFI boot option when the new disk is detected. If there is no EFI -+ # System Partition exists, EFI subsystem outputs error messages and -+ # it ends up with test failure. -+ # Restart U-Boot to clear the previous state. -+ # TODO: Ideally EFI test cases need to be fixed, but it will -+ # increase the number of system reset. -+ u_boot_console.restart_uboot() -+ - # setup test environment - check_mksquashfs_version() - generate_sqfs_src_dir(build_dir) From 0c3fb4e23d8f0b2036072bcfdf34bf9cbdbc42bd Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 15 Feb 2024 12:57:23 +0000 Subject: [PATCH 168/271] drop old patches --- rockchip-PinePhone-Pro-fixes.patch | 43 - rockchip-general-fixes.patch | 136 -- rpi5-initial-support.patch | 1910 ---------------------------- 3 files changed, 2089 deletions(-) delete mode 100644 rockchip-PinePhone-Pro-fixes.patch delete mode 100644 rockchip-general-fixes.patch delete mode 100644 rpi5-initial-support.patch diff --git a/rockchip-PinePhone-Pro-fixes.patch b/rockchip-PinePhone-Pro-fixes.patch deleted file mode 100644 index 5e07490..0000000 --- a/rockchip-PinePhone-Pro-fixes.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 1af5e42f170d2c4b944beeb875b80ec7f061038a Mon Sep 17 00:00:00 2001 -From: Ondrej Jirman -Date: Thu, 25 May 2023 15:27:08 +0200 -Subject: [PATCH] pinephone-pro: Fix I/O port voltage (GPIO3D4A is 1.8V) - -This fixes access to camera sensor over I2C during probe time in -the kernel. (Kernel will fix I/0 port voltage by itself, but the -timing depends on probe order of the drivers, so the fix can -come after the camera sensor driver already failed to probe.) - -Signed-off-by: Ondrej Jirman -Cc: Kever Yang -Reviewed-by: Kever Yang ---- - board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c b/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c -index eb639cd0d07..b6ccbb9c1c4 100644 ---- a/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c -+++ b/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c -@@ -15,7 +15,8 @@ - #include - #include - --#define GRF_IO_VSEL_BT565_SHIFT 0 -+#define GRF_IO_VSEL_BT565_GPIO2AB 1 -+#define GRF_IO_VSEL_AUDIO_GPIO3D4A 2 - #define PMUGRF_CON0_VSEL_SHIFT 8 - - #ifndef CONFIG_SPL_BUILD -@@ -48,7 +49,8 @@ static void setup_iodomain(void) - syscon_get_first_range(ROCKCHIP_SYSCON_PMUGRF); - - /* BT565 is in 1.8v domain */ -- rk_setreg(&grf->io_vsel, 1 << GRF_IO_VSEL_BT565_SHIFT); -+ rk_setreg(&grf->io_vsel, -+ GRF_IO_VSEL_BT565_GPIO2AB | GRF_IO_VSEL_AUDIO_GPIO3D4A); - - /* Set GPIO1 1.8v/3.0v source select to PMU1830_VOL */ - rk_setreg(&pmugrf->soc_con0, 1 << PMUGRF_CON0_VSEL_SHIFT); --- -2.41.0 diff --git a/rockchip-general-fixes.patch b/rockchip-general-fixes.patch deleted file mode 100644 index 00e78f5..0000000 --- a/rockchip-general-fixes.patch +++ /dev/null @@ -1,136 +0,0 @@ -From 2d9350c50a9659cc2a247cdea07f0eacffa3cb32 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Sun, 12 Jun 2022 14:44:44 +0100 -Subject: [PATCH] rockchip: pinebook-pro: minor SPI flash fixes - -Set a default offset for environment so it doesn't write it to -unexpected locations, drop unneeded mtd config option. - -Signed-off-by: Peter Robinson ---- - configs/pinebook-pro-rk3399_defconfig | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig -index 8ca1d0708f9..aaa52c6ea70 100644 ---- a/configs/pinebook-pro-rk3399_defconfig -+++ b/configs/pinebook-pro-rk3399_defconfig -@@ -5,6 +5,7 @@ CONFIG_ARCH_ROCKCHIP=y - CONFIG_SYS_TEXT_BASE=0x00200000 - CONFIG_NR_DRAM_BANKS=1 - CONFIG_ENV_SIZE=0x8000 -+CONFIG_ENV_OFFSET=0x3F8000 - CONFIG_DEFAULT_DEVICE_TREE="rk3399-pinebook-pro" - CONFIG_ROCKCHIP_RK3399=y - CONFIG_TARGET_PINEBOOK_PRO_RK3399=y -@@ -22,7 +23,6 @@ CONFIG_MISC_INIT_R=y - # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set - CONFIG_SPL_STACK_R=y - CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000 --CONFIG_SPL_MTD_SUPPORT=y - CONFIG_SPL_SPI_LOAD=y - CONFIG_TPL=y - CONFIG_CMD_BOOTZ=y --- -2.36.1 - -From 27ba8e2f904063aec5196f86dd0332bf58a60259 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Sun, 12 Jun 2022 14:50:42 +0100 -Subject: [PATCH] rockchip: rockpro64: enable leds - -The Rockpro64 has some GPIO leds so let's enable them so the -user gets some output in early boot. - -Signed-off-by: Peter Robinson ---- - configs/rockpro64-rk3399_defconfig | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig -index e6f7a8469a3..b0c3527fab0 100644 ---- a/configs/rockpro64-rk3399_defconfig -+++ b/configs/rockpro64-rk3399_defconfig -@@ -42,6 +42,8 @@ CONFIG_AHCI_PCI=y - CONFIG_SATA_SIL=y - CONFIG_ROCKCHIP_GPIO=y - CONFIG_SYS_I2C_ROCKCHIP=y -+CONFIG_LED=y -+CONFIG_LED_GPIO=y - CONFIG_MISC=y - CONFIG_ROCKCHIP_EFUSE=y - CONFIG_MMC_DW=y --- -2.36.1 - -From 8bca90472e0d71e5344711b6f5fe8dc95e19af5a Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Sun, 12 Jun 2022 15:12:47 +0100 -Subject: [PATCH] rockchip: pinebook-pro: sync PBP dtb to 5.18 - -Sync the pinebook pro to upstream 5.18, in particular this brings -brings in a fix so the DP is disabled so Linux will actually boot. - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/rk3399-pinebook-pro.dts | 11 +++-------- - 1 file changed, 3 insertions(+), 8 deletions(-) - -diff --git a/arch/arm/dts/rk3399-pinebook-pro.dts b/arch/arm/dts/rk3399-pinebook-pro.dts -index 2b5f001ff4a..d6b68d77d63 100644 ---- a/arch/arm/dts/rk3399-pinebook-pro.dts -+++ b/arch/arm/dts/rk3399-pinebook-pro.dts -@@ -17,6 +17,7 @@ - / { - model = "Pine64 Pinebook Pro"; - compatible = "pine64,pinebook-pro", "rockchip,rk3399"; -+ chassis-type = "laptop"; - - aliases { - mmc0 = &sdio0; -@@ -242,12 +243,12 @@ - vdd_log: vdd-log { - compatible = "pwm-regulator"; - pwms = <&pwm2 0 25000 1>; -+ pwm-supply = <&vcc_sysin>; - regulator-name = "vdd_log"; - regulator-always-on; - regulator-boot-on; - regulator-min-microvolt = <800000>; - regulator-max-microvolt = <1400000>; -- vin-supply = <&vcc_sysin>; - - regulator-state-mem { - regulator-on-in-suspend; -@@ -385,10 +386,6 @@ - }; - }; - --&cdn_dp { -- status = "okay"; --}; -- - &cpu_b0 { - cpu-supply = <&vdd_cpu_b>; - }; -@@ -475,8 +472,6 @@ - vcc10-supply = <&vcc_sysin>; - vcc11-supply = <&vcc_sysin>; - vcc12-supply = <&vcc3v3_sys>; -- vcc13-supply = <&vcc_sysin>; -- vcc14-supply = <&vcc_sysin>; - - regulators { - /* rk3399 center logic supply */ -@@ -711,7 +706,7 @@ - - connector { - compatible = "usb-c-connector"; -- data-role = "host"; -+ data-role = "dual"; - label = "USB-C"; - op-sink-microwatt = <1000000>; - power-role = "dual"; --- -2.36.1 - diff --git a/rpi5-initial-support.patch b/rpi5-initial-support.patch deleted file mode 100644 index 4a79f31..0000000 --- a/rpi5-initial-support.patch +++ /dev/null @@ -1,1910 +0,0 @@ -From patchwork Mon Dec 18 21:03:35 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Ivan T. Ivanov" -X-Patchwork-Id: 1877649 -X-Patchwork-Delegate: pbrobinson@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -Authentication-Results: legolas.ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 - header.s=susede2_rsa header.b=frMNX+46; - dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=IseK5QVE; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.a=rsa-sha256 header.s=susede2_rsa header.b=1pz5pvm/; - dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=fIckdee4; - 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) server-digest SHA384) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4SvC455lk9z1ydc - for ; Tue, 19 Dec 2023 08:04:05 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 92DDD8753C; - Mon, 18 Dec 2023 22:03:54 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.b="frMNX+46"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="IseK5QVE"; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.b="1pz5pvm/"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="fIckdee4"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 95A7F87525; Mon, 18 Dec 2023 22:03: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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no - version=3.4.2 -Received: from smtp-out1.suse.de (smtp-out1.suse.de - [IPv6:2a07:de40:b251:101:10:150:64:1]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 0B37B87530 - for ; Mon, 18 Dec 2023 22:03:51 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=iivanov@suse.de -Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org - [10.150.64.97]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by smtp-out1.suse.de (Postfix) with ESMTPS id 6EE4F2228D; - Mon, 18 Dec 2023 21:03:49 +0000 (UTC) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933430; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=KH3AWH4E2OZnkKkgKspHqUQ687KHDd+TcmlhsjT4WMY=; - b=frMNX+46FgFSdyN24UT7Y4WdFDJKcOxcjH0HyyTrZsMcayuXoLtERkmRllSmLu8aRAoWOI - dzM9aX7eK9EHwuozUVijinsJ6wKpvqwxEx0Kdnj3wKPjAS3KTXGwfYiuZeO5wmbGRytEXd - p252vWhSG5L4UgaWil84yA4iM0KqiPs= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933430; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=KH3AWH4E2OZnkKkgKspHqUQ687KHDd+TcmlhsjT4WMY=; - b=IseK5QVEh+KCaimaGVOvt6lv9A9n/uQ/xO6kky5hugt4tubeSnhwGXuCjHTIEZhYi9auSr - Q6h6Mb/o4bd7u1CQ== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933429; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=KH3AWH4E2OZnkKkgKspHqUQ687KHDd+TcmlhsjT4WMY=; - b=1pz5pvm/SI3fxjKAlUcM+pRnK+NKLVbl/0Kj+UUQ/R29Irq4CDjfgTyaU0/DIXgn3x7Ttl - 2U7+per0J38TYiYHjQSDlrdPq4CwSFX2IEFS6sA5jx41ySG3RgO51Hh5GXKFh/WDUjcsn6 - ZPLcQCP31JjxHhULkzjaYLVYE2rQuXE= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933429; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=KH3AWH4E2OZnkKkgKspHqUQ687KHDd+TcmlhsjT4WMY=; - b=fIckdee4Yc6Iut7CdcyZnDHxDW58F+dY46W7JLg6y7iXnfDkSc0DETyb97S3ngS7GdF3OQ - HPy/QFdHWA8p8cBw== -Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id D359F13C92; - Mon, 18 Dec 2023 21:03:48 +0000 (UTC) -Received: from dovecot-director2.suse.de ([10.150.64.162]) - by imap1.dmz-prg2.suse.org with ESMTPSA id 4CUUMbSzgGUtZAAAD6G6ig - (envelope-from ); Mon, 18 Dec 2023 21:03:48 +0000 -From: "Ivan T. Ivanov" -To: Matthias Brugger , - Peter Robinson -Cc: Dmitry Malkin , - Thomas Fitzsimmons , Peng Fan , - Jaehoon Chung , Anatolij Gustschin , - wahrenst@gmx.net, florian.fainelli@broadcom.com, u-boot@lists.denx.de, - "Ivan T . Ivanov" -Subject: [PATCH v3 1/7] rpi5: add initial memory map for bcm2712 -Date: Mon, 18 Dec 2023 23:03:35 +0200 -Message-ID: <20231218210341.30073-2-iivanov@suse.de> -X-Mailer: git-send-email 2.43.0 -In-Reply-To: <20231218210341.30073-1-iivanov@suse.de> -References: <20231218210341.30073-1-iivanov@suse.de> -MIME-Version: 1.0 -Authentication-Results: smtp-out1.suse.de; - none -X-Spamd-Result: default: False [0.70 / 50.00]; ARC_NA(0.00)[]; - RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; - TO_DN_SOME(0.00)[]; FREEMAIL_ENVRCPT(0.00)[gmail.com,gmx.net]; - R_MISSING_CHARSET(2.50)[]; MIME_GOOD(-0.10)[text/plain]; - TO_MATCH_ENVRCPT_ALL(0.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; - NEURAL_HAM_LONG(-1.00)[-1.000]; RCVD_COUNT_THREE(0.00)[3]; - DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; - NEURAL_HAM_SHORT(-0.20)[-1.000]; RCPT_COUNT_SEVEN(0.00)[11]; - MID_CONTAINS_FROM(1.00)[]; - DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:email,bedrocksystems.com:email]; - FREEMAIL_TO(0.00)[suse.com,gmail.com]; - FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; - MIME_TRACE(0.00)[0:+]; - FREEMAIL_CC(0.00)[bedrocksystems.com,fitzsim.org,nxp.com,samsung.com,denx.de,gmx.net,broadcom.com,lists.denx.de,suse.de]; - RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-3.00)[100.00%] -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 - -From: Dmitry Malkin - -includes: -* 1GB of RAM (from 4GB or 8GB total) -* VPU memory interface -* AXI ranges (main peripherals) - -Signed-off-by: Dmitry Malkin -Signed-off-by: Ivan T. Ivanov ---- - arch/arm/mach-bcm283x/init.c | 38 +++++++++++++++++++++++++++++++++++- - 1 file changed, 37 insertions(+), 1 deletion(-) - -diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c -index 7265faf6ce..af23b9711a 100644 ---- a/arch/arm/mach-bcm283x/init.c -+++ b/arch/arm/mach-bcm283x/init.c -@@ -19,7 +19,7 @@ - #ifdef CONFIG_ARM64 - #include - --#define MEM_MAP_MAX_ENTRIES (4) -+#define MEM_MAP_MAX_ENTRIES (5) - - static struct mm_region bcm283x_mem_map[MEM_MAP_MAX_ENTRIES] = { - { -@@ -68,6 +68,41 @@ static struct mm_region bcm2711_mem_map[MEM_MAP_MAX_ENTRIES] = { - } - }; - -+static struct mm_region bcm2712_mem_map[MEM_MAP_MAX_ENTRIES] = { -+ { -+ .virt = 0x00000000UL, -+ .phys = 0x00000000UL, -+ .size = 0x3f800000UL, -+ .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | -+ PTE_BLOCK_INNER_SHARE -+ }, { -+ .virt = 0x3f800000UL, -+ .phys = 0x3f800000UL, -+ .size = 0x00800000UL, -+ .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | -+ PTE_BLOCK_NON_SHARE | -+ PTE_BLOCK_PXN | PTE_BLOCK_UXN -+ }, { -+ /* Beginning of AXI bus where uSD controller lives */ -+ .virt = 0x1000000000UL, -+ .phys = 0x1000000000UL, -+ .size = 0x0002000000UL, -+ .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | -+ PTE_BLOCK_NON_SHARE | -+ PTE_BLOCK_PXN | PTE_BLOCK_UXN -+ }, { -+ .virt = 0x107c000000UL, -+ .phys = 0x107c000000UL, -+ .size = 0x0004000000UL, -+ .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | -+ PTE_BLOCK_NON_SHARE | -+ PTE_BLOCK_PXN | PTE_BLOCK_UXN -+ }, { -+ /* List terminator */ -+ 0, -+ } -+}; -+ - struct mm_region *mem_map = bcm283x_mem_map; - - /* -@@ -78,6 +113,7 @@ static const struct udevice_id board_ids[] = { - { .compatible = "brcm,bcm2837", .data = (ulong)&bcm283x_mem_map}, - { .compatible = "brcm,bcm2838", .data = (ulong)&bcm2711_mem_map}, - { .compatible = "brcm,bcm2711", .data = (ulong)&bcm2711_mem_map}, -+ { .compatible = "brcm,bcm2712", .data = (ulong)&bcm2712_mem_map}, - { }, - }; - - -From patchwork Mon Dec 18 21:03:36 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Ivan T. Ivanov" -X-Patchwork-Id: 1877650 -X-Patchwork-Delegate: pbrobinson@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -Authentication-Results: legolas.ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 - header.s=susede2_rsa header.b=v1KGWKJg; - dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=fFiq02vw; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.a=rsa-sha256 header.s=susede2_rsa header.b=v1KGWKJg; - dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=fFiq02vw; - 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 4SvC4H2hzjz1ydc - for ; Tue, 19 Dec 2023 08:04:15 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id C85A08758C; - Mon, 18 Dec 2023 22:03:57 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.b="v1KGWKJg"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="fFiq02vw"; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.b="v1KGWKJg"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="fFiq02vw"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 6F50F87530; Mon, 18 Dec 2023 22:03:54 +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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no - version=3.4.2 -Received: from smtp-out2.suse.de (smtp-out2.suse.de - [IPv6:2a07:de40:b251:101:10:150:64:2]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 199488753C - for ; Mon, 18 Dec 2023 22:03:51 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=iivanov@suse.de -Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org - [10.150.64.97]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by smtp-out2.suse.de (Postfix) with ESMTPS id 1AC1A1F46E; - Mon, 18 Dec 2023 21:03:50 +0000 (UTC) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933430; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=sHJ8RNAoNPDg1bwvhFF8CpHTHHBRfcz53X69wMjqM8s=; - b=v1KGWKJgJttai7C79qIEMd/XpNIgzFqndAnylh2LCSBCYnAQmHcbTcoqWFl1mbR0bCIJ2B - nnbHB6CW+/Ja2oUD0wavAmzqzhQ+ANsN8FLZ+RC4p4W0fnMs6Yz9lMDf8ozKecEdna61Q6 - 2SnPjyXAogWLFBBDalRvdzUIOIWe3Tc= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933430; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=sHJ8RNAoNPDg1bwvhFF8CpHTHHBRfcz53X69wMjqM8s=; - b=fFiq02vw2EIwrIbp2ltl5amzeQZi9NS1k/nH07K65OVAZc8eRyKu/vHbdjX58887t//OZ/ - 6LuVBS0afgkEbWCg== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933430; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=sHJ8RNAoNPDg1bwvhFF8CpHTHHBRfcz53X69wMjqM8s=; - b=v1KGWKJgJttai7C79qIEMd/XpNIgzFqndAnylh2LCSBCYnAQmHcbTcoqWFl1mbR0bCIJ2B - nnbHB6CW+/Ja2oUD0wavAmzqzhQ+ANsN8FLZ+RC4p4W0fnMs6Yz9lMDf8ozKecEdna61Q6 - 2SnPjyXAogWLFBBDalRvdzUIOIWe3Tc= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933430; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=sHJ8RNAoNPDg1bwvhFF8CpHTHHBRfcz53X69wMjqM8s=; - b=fFiq02vw2EIwrIbp2ltl5amzeQZi9NS1k/nH07K65OVAZc8eRyKu/vHbdjX58887t//OZ/ - 6LuVBS0afgkEbWCg== -Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 7FCBC133E5; - Mon, 18 Dec 2023 21:03:49 +0000 (UTC) -Received: from dovecot-director2.suse.de ([10.150.64.162]) - by imap1.dmz-prg2.suse.org with ESMTPSA id AH+lHLWzgGUtZAAAD6G6ig - (envelope-from ); Mon, 18 Dec 2023 21:03:49 +0000 -From: "Ivan T. Ivanov" -To: Matthias Brugger , - Peter Robinson -Cc: Dmitry Malkin , - Thomas Fitzsimmons , Peng Fan , - Jaehoon Chung , Anatolij Gustschin , - wahrenst@gmx.net, florian.fainelli@broadcom.com, u-boot@lists.denx.de, - "Ivan T . Ivanov" -Subject: [PATCH v3 2/7] rpi5: Use devicetree as alternative way to read IO - base addresses -Date: Mon, 18 Dec 2023 23:03:36 +0200 -Message-ID: <20231218210341.30073-3-iivanov@suse.de> -X-Mailer: git-send-email 2.43.0 -In-Reply-To: <20231218210341.30073-1-iivanov@suse.de> -References: <20231218210341.30073-1-iivanov@suse.de> -MIME-Version: 1.0 -X-Spamd-Result: default: False [10.00 / 50.00]; ARC_NA(0.00)[]; - RCVD_VIA_SMTP_AUTH(0.00)[]; BAYES_SPAM(5.10)[100.00%]; - FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; - FREEMAIL_ENVRCPT(0.00)[gmail.com,gmx.net]; - R_MISSING_CHARSET(2.50)[]; MIME_GOOD(-0.10)[text/plain]; - TO_MATCH_ENVRCPT_ALL(0.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; - RCVD_COUNT_THREE(0.00)[3]; - DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; - RCPT_COUNT_SEVEN(0.00)[11]; MID_CONTAINS_FROM(1.00)[]; - DBL_BLOCKED_OPENRESOLVER(0.00)[bedrocksystems.com:email,suse.de:email]; - FREEMAIL_TO(0.00)[suse.com,gmail.com]; - FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; - MIME_TRACE(0.00)[0:+]; - FREEMAIL_CC(0.00)[bedrocksystems.com,fitzsim.org,nxp.com,samsung.com,denx.de,gmx.net,broadcom.com,lists.denx.de,suse.de]; - RCVD_TLS_ALL(0.00)[] -Authentication-Results: smtp-out2.suse.de; - none -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 - -From: Dmitry Malkin - -MBOX and Watchdog on RPi5/bcm2712 has a different base IO offsets. -Find them via devicetree blob passed by bootloader. - -Signed-off-by: Dmitry Malkin -Signed-off-by: Ivan T. Ivanov ---- - arch/arm/mach-bcm283x/include/mach/base.h | 5 ++- - arch/arm/mach-bcm283x/include/mach/mbox.h | 3 +- - arch/arm/mach-bcm283x/include/mach/sdhci.h | 3 +- - arch/arm/mach-bcm283x/include/mach/timer.h | 3 +- - arch/arm/mach-bcm283x/include/mach/wdog.h | 3 +- - arch/arm/mach-bcm283x/init.c | 43 ++++++++++++++++++---- - 6 files changed, 43 insertions(+), 17 deletions(-) - -diff --git a/arch/arm/mach-bcm283x/include/mach/base.h b/arch/arm/mach-bcm283x/include/mach/base.h -index 4ccaf69693..6de99e7ea1 100644 ---- a/arch/arm/mach-bcm283x/include/mach/base.h -+++ b/arch/arm/mach-bcm283x/include/mach/base.h -@@ -6,7 +6,10 @@ - #ifndef _BCM283x_BASE_H_ - #define _BCM283x_BASE_H_ - --extern unsigned long rpi_bcm283x_base; -+extern unsigned long rpi_mbox_base; -+extern unsigned long rpi_timer_base; -+extern unsigned long rpi_sdhci_base; -+extern unsigned long rpi_wdog_base; - - #ifdef CONFIG_ARMV7_LPAE - #ifdef CONFIG_TARGET_RPI_4_32B -diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h -index 490664f878..35d4e2f075 100644 ---- a/arch/arm/mach-bcm283x/include/mach/mbox.h -+++ b/arch/arm/mach-bcm283x/include/mach/mbox.h -@@ -38,8 +38,7 @@ - - /* Raw mailbox HW */ - --#define BCM2835_MBOX_PHYSADDR ({ BUG_ON(!rpi_bcm283x_base); \ -- rpi_bcm283x_base + 0x0000b880; }) -+#define BCM2835_MBOX_PHYSADDR rpi_mbox_base - - struct bcm2835_mbox_regs { - u32 read; -diff --git a/arch/arm/mach-bcm283x/include/mach/sdhci.h b/arch/arm/mach-bcm283x/include/mach/sdhci.h -index 7323690687..e837c679c4 100644 ---- a/arch/arm/mach-bcm283x/include/mach/sdhci.h -+++ b/arch/arm/mach-bcm283x/include/mach/sdhci.h -@@ -8,8 +8,7 @@ - - #include - --#define BCM2835_SDHCI_PHYSADDR ({ BUG_ON(!rpi_bcm283x_base); \ -- rpi_bcm283x_base + 0x00300000; }) -+#define BCM2835_SDHCI_PHYSADDR rpi_sdhci_base - - int bcm2835_sdhci_init(u32 regbase, u32 emmc_freq); - -diff --git a/arch/arm/mach-bcm283x/include/mach/timer.h b/arch/arm/mach-bcm283x/include/mach/timer.h -index 5567dbd7f3..60500a256d 100644 ---- a/arch/arm/mach-bcm283x/include/mach/timer.h -+++ b/arch/arm/mach-bcm283x/include/mach/timer.h -@@ -11,8 +11,7 @@ - #include - #endif - --#define BCM2835_TIMER_PHYSADDR ({ BUG_ON(!rpi_bcm283x_base); \ -- rpi_bcm283x_base + 0x00003000; }) -+#define BCM2835_TIMER_PHYSADDR rpi_timer_base - - #define BCM2835_TIMER_CS_M3 (1 << 3) - #define BCM2835_TIMER_CS_M2 (1 << 2) -diff --git a/arch/arm/mach-bcm283x/include/mach/wdog.h b/arch/arm/mach-bcm283x/include/mach/wdog.h -index 9942666720..b950560674 100644 ---- a/arch/arm/mach-bcm283x/include/mach/wdog.h -+++ b/arch/arm/mach-bcm283x/include/mach/wdog.h -@@ -8,8 +8,7 @@ - - #include - --#define BCM2835_WDOG_PHYSADDR ({ BUG_ON(!rpi_bcm283x_base); \ -- rpi_bcm283x_base + 0x00100000; }) -+#define BCM2835_WDOG_PHYSADDR rpi_wdog_base - - struct bcm2835_wdog_regs { - u32 unknown0[7]; -diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c -index af23b9711a..1c5c748484 100644 ---- a/arch/arm/mach-bcm283x/init.c -+++ b/arch/arm/mach-bcm283x/init.c -@@ -151,7 +151,11 @@ static void rpi_update_mem_map(void) - static void rpi_update_mem_map(void) {} - #endif - --unsigned long rpi_bcm283x_base = 0x3f000000; -+/* Default bcm283x devices addresses */ -+unsigned long rpi_mbox_base = 0x3f00b880; -+unsigned long rpi_sdhci_base = 0x3f300000; -+unsigned long rpi_wdog_base = 0x3f100000; -+unsigned long rpi_timer_base = 0x3f003000; - - int arch_cpu_init(void) - { -@@ -162,22 +166,45 @@ int arch_cpu_init(void) - - int mach_cpu_init(void) - { -- int ret, soc_offset; -+ int ret, soc, offset; - u64 io_base, size; - - rpi_update_mem_map(); - - /* Get IO base from device tree */ -- soc_offset = fdt_path_offset(gd->fdt_blob, "/soc"); -- if (soc_offset < 0) -- return soc_offset; -+ soc = fdt_path_offset(gd->fdt_blob, "/soc"); -+ if (soc < 0) -+ return soc; - -- ret = fdt_read_range((void *)gd->fdt_blob, soc_offset, 0, NULL, -- &io_base, &size); -+ ret = fdt_read_range((void *)gd->fdt_blob, soc, 0, NULL, -+ &io_base, &size); - if (ret) - return ret; - -- rpi_bcm283x_base = io_base; -+ rpi_mbox_base = io_base + 0x00b880; -+ rpi_sdhci_base = io_base + 0x300000; -+ rpi_wdog_base = io_base + 0x100000; -+ rpi_timer_base = io_base + 0x003000; -+ -+ offset = fdt_node_offset_by_compatible(gd->fdt_blob, soc, -+ "brcm,bcm2835-mbox"); -+ if (offset > soc) -+ rpi_mbox_base = fdt_get_base_address(gd->fdt_blob, offset); -+ -+ offset = fdt_node_offset_by_compatible(gd->fdt_blob, soc, -+ "brcm,bcm2835-sdhci"); -+ if (offset > soc) -+ rpi_sdhci_base = fdt_get_base_address(gd->fdt_blob, offset); -+ -+ offset = fdt_node_offset_by_compatible(gd->fdt_blob, soc, -+ "brcm,bcm2835-system-timer"); -+ if (offset > soc) -+ rpi_timer_base = fdt_get_base_address(gd->fdt_blob, offset); -+ -+ offset = fdt_node_offset_by_compatible(gd->fdt_blob, soc, -+ "brcm,bcm2712-pm"); -+ if (offset > soc) -+ rpi_wdog_base = fdt_get_base_address(gd->fdt_blob, offset); - - return 0; - } - -From patchwork Mon Dec 18 21:03:37 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Ivan T. Ivanov" -X-Patchwork-Id: 1877652 -X-Patchwork-Delegate: pbrobinson@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -Authentication-Results: legolas.ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 - header.s=susede2_rsa header.b=MuifTv9w; - dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=J2WonmZQ; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.a=rsa-sha256 header.s=susede2_rsa header.b=driIaEaW; - dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=ENBj4l6/; - 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 4SvC4h1PpHz1ydc - for ; Tue, 19 Dec 2023 08:04:36 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id BC5CE87656; - Mon, 18 Dec 2023 22:03:58 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.b="MuifTv9w"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="J2WonmZQ"; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.b="driIaEaW"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="ENBj4l6/"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 24B3087578; Mon, 18 Dec 2023 22:03: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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 -Received: from smtp-out1.suse.de (smtp-out1.suse.de - [IPv6:2a07:de40:b251:101:10:150:64:1]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 34BC9875A0 - for ; Mon, 18 Dec 2023 22:03:52 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=iivanov@suse.de -Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org - [10.150.64.97]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by smtp-out1.suse.de (Postfix) with ESMTPS id B98772226F; - Mon, 18 Dec 2023 21:03:50 +0000 (UTC) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933431; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=fHScQy8dlQ4zBcmmXyg7xTO2N+HoZRyPs/mSsXUaidA=; - b=MuifTv9wBEOLgWscWoGcXg+RGB8+btC5sRFciLLURyCkDcUQuguKCF0MB5CUHbvIFDKQTs - 3cu6hcIxZ1sJPOhJYAQlW90dBLsORX0sI25Eq4VgPGCsldwfrQ6KFwJmGJHKAf1t3bAtsp - bXmOjkuzkGiYTERqgRtFHlM+jbjtULk= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933431; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=fHScQy8dlQ4zBcmmXyg7xTO2N+HoZRyPs/mSsXUaidA=; - b=J2WonmZQu47jTWrv+1hYLdw1tZ+mNBDcST4N3FHxlTW7EY6hSg3i0FkVDYqumfQMZdddMp - jagUtFA6k1hguwCQ== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933430; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=fHScQy8dlQ4zBcmmXyg7xTO2N+HoZRyPs/mSsXUaidA=; - b=driIaEaWsaR+g9AcK8SGiaVWp2t8QtO7GFM918C1n2Mg0Ag01KOyoFkVXAvjXENou/caP6 - mszp+EvY1mp+ZR5gwQMkbkHBxQ10VWiFHcSdpA6ZicAD8PbXnb4DO5mEFRyVbxDu6b9fHp - mNp6oBcymc5k4gJFdfomnV1ubqgcp38= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933430; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=fHScQy8dlQ4zBcmmXyg7xTO2N+HoZRyPs/mSsXUaidA=; - b=ENBj4l6/3jkDUxi4yY5WR8ECQN9jENKPjLTTKM7yT4ET1rZJ3jbU297szl97aZN4oQ41A9 - z8StT2qNvcfjYQCA== -Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 2AC2D13C93; - Mon, 18 Dec 2023 21:03:50 +0000 (UTC) -Received: from dovecot-director2.suse.de ([10.150.64.162]) - by imap1.dmz-prg2.suse.org with ESMTPSA id EE/zB7azgGUtZAAAD6G6ig - (envelope-from ); Mon, 18 Dec 2023 21:03:50 +0000 -From: "Ivan T. Ivanov" -To: Matthias Brugger , - Peter Robinson -Cc: Dmitry Malkin , - Thomas Fitzsimmons , Peng Fan , - Jaehoon Chung , Anatolij Gustschin , - wahrenst@gmx.net, florian.fainelli@broadcom.com, u-boot@lists.denx.de, - "Ivan T. Ivanov" -Subject: [PATCH v3 3/7] rpi5: Use devicetree to retrieve board revision -Date: Mon, 18 Dec 2023 23:03:37 +0200 -Message-ID: <20231218210341.30073-4-iivanov@suse.de> -X-Mailer: git-send-email 2.43.0 -In-Reply-To: <20231218210341.30073-1-iivanov@suse.de> -References: <20231218210341.30073-1-iivanov@suse.de> -MIME-Version: 1.0 -Authentication-Results: smtp-out1.suse.de; - none -X-Spamd-Result: default: False [1.14 / 50.00]; ARC_NA(0.00)[]; - RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; - TO_DN_SOME(0.00)[]; FREEMAIL_ENVRCPT(0.00)[gmail.com,gmx.net]; - R_MISSING_CHARSET(2.50)[]; MIME_GOOD(-0.10)[text/plain]; - TO_MATCH_ENVRCPT_ALL(0.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; - NEURAL_HAM_LONG(-1.00)[-1.000]; - R_RATELIMIT(0.00)[to_ip_from(RL9dd9h8xg9qpm5f14t9e5w4zz)]; - RCVD_COUNT_THREE(0.00)[3]; - DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; - NEURAL_HAM_SHORT(-0.20)[-1.000]; RCPT_COUNT_SEVEN(0.00)[11]; - MID_CONTAINS_FROM(1.00)[]; - DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:email]; - FREEMAIL_TO(0.00)[suse.com,gmail.com]; - FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; - MIME_TRACE(0.00)[0:+]; - FREEMAIL_CC(0.00)[bedrocksystems.com,fitzsim.org,nxp.com,samsung.com,denx.de,gmx.net,broadcom.com,lists.denx.de,suse.de]; - RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-2.56)[98.03%] -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 - -Firmware on RPi5 return error on board revision query -through firmware interface, but on the other hand it fills -"linux,revision" in "system" node, so use it to detect board -revision. - - system { - linux,revision = <0xc04170>; - linux,serial = <0x6cf44e80 0x3c533ede>; - }; - -Signed-off-by: Ivan T. Ivanov ---- - board/raspberrypi/rpi/rpi.c | 22 +++++++++++++++++++--- - 1 file changed, 19 insertions(+), 3 deletions(-) - -diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c -index cd823ad746..2851ebc985 100644 ---- a/board/raspberrypi/rpi/rpi.c -+++ b/board/raspberrypi/rpi/rpi.c -@@ -171,6 +171,11 @@ static const struct rpi_model rpi_models_new_scheme[] = { - DTB_DIR "bcm2711-rpi-cm4.dtb", - true, - }, -+ [0x17] = { -+ "5 Model B", -+ DTB_DIR "bcm2712-rpi-5-b.dtb", -+ true, -+ }, - }; - - static const struct rpi_model rpi_models_old_scheme[] = { -@@ -429,15 +434,27 @@ static void get_board_revision(void) - int ret; - const struct rpi_model *models; - uint32_t models_count; -+ ofnode node; - - BCM2835_MBOX_INIT_HDR(msg); - BCM2835_MBOX_INIT_TAG(&msg->get_board_rev, GET_BOARD_REV); - - ret = bcm2835_mbox_call_prop(BCM2835_MBOX_PROP_CHAN, &msg->hdr); - if (ret) { -- printf("bcm2835: Could not query board revision\n"); - /* Ignore error; not critical */ -- return; -+ node = ofnode_path("/system"); -+ if (!ofnode_valid(node)) { -+ printf("bcm2835: Could not find /system node\n"); -+ return; -+ } -+ -+ ret = ofnode_read_u32(node, "linux,revision", &revision); -+ if (ret) { -+ printf("bcm2835: Could not find linux,revision\n"); -+ return; -+ } -+ } else { -+ revision = msg->get_board_rev.body.resp.rev; - } - - /* -@@ -451,7 +468,6 @@ static void get_board_revision(void) - * http://www.raspberrypi.org/forums/viewtopic.php?f=63&t=98367&start=250 - * http://www.raspberrypi.org/forums/viewtopic.php?f=31&t=20594 - */ -- revision = msg->get_board_rev.body.resp.rev; - if (revision & 0x800000) { - rev_scheme = 1; - rev_type = (revision >> 4) & 0xff; - -From patchwork Mon Dec 18 21:03:38 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Ivan T. Ivanov" -X-Patchwork-Id: 1877651 -X-Patchwork-Delegate: pbrobinson@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -Authentication-Results: legolas.ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 - header.s=susede2_rsa header.b=v2vbP3rz; - dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=DCEhbGvW; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.a=rsa-sha256 header.s=susede2_rsa header.b=v2vbP3rz; - dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=DCEhbGvW; - 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) server-digest SHA384) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4SvC4X1dxWz1ydc - for ; Tue, 19 Dec 2023 08:04:28 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 516EE875B6; - Mon, 18 Dec 2023 22:03:58 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.b="v2vbP3rz"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="DCEhbGvW"; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.b="v2vbP3rz"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="DCEhbGvW"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id B3A6E87578; Mon, 18 Dec 2023 22:03: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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no - version=3.4.2 -Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id AF6918758C - for ; Mon, 18 Dec 2023 22:03:51 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=iivanov@suse.de -Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org - [10.150.64.97]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by smtp-out1.suse.de (Postfix) with ESMTPS id 601C222298; - Mon, 18 Dec 2023 21:03:51 +0000 (UTC) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933431; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=g18N3OoUCORUbBwvzPY0/IHAtBrY9++PtXkkmDrbHl4=; - b=v2vbP3rzM/o63ofFdDaxhtUv68QFa8UxlaWLBU0PN+7PKXtZUGyrKBSmhVzxTM42FyEF7w - 9fus9/ORTaMw41AMi4qeWNQkin7gz4BF2qAFQuYSksnSgsT4Jul8n1YBBmIDx1keXZtfAW - uJZcfMM7pykF11NRMTvI38ZkyYm3ueQ= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933431; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=g18N3OoUCORUbBwvzPY0/IHAtBrY9++PtXkkmDrbHl4=; - b=DCEhbGvWPmgWKvfaoSUDgZ/cuuHGUnp9FvtlFeMSL2WTlsc5F+jQrl+8kVn2Yr5wDXUi8w - yyGhdRc4ihbp3tAg== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933431; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=g18N3OoUCORUbBwvzPY0/IHAtBrY9++PtXkkmDrbHl4=; - b=v2vbP3rzM/o63ofFdDaxhtUv68QFa8UxlaWLBU0PN+7PKXtZUGyrKBSmhVzxTM42FyEF7w - 9fus9/ORTaMw41AMi4qeWNQkin7gz4BF2qAFQuYSksnSgsT4Jul8n1YBBmIDx1keXZtfAW - uJZcfMM7pykF11NRMTvI38ZkyYm3ueQ= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933431; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=g18N3OoUCORUbBwvzPY0/IHAtBrY9++PtXkkmDrbHl4=; - b=DCEhbGvWPmgWKvfaoSUDgZ/cuuHGUnp9FvtlFeMSL2WTlsc5F+jQrl+8kVn2Yr5wDXUi8w - yyGhdRc4ihbp3tAg== -Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id C77BF133E5; - Mon, 18 Dec 2023 21:03:50 +0000 (UTC) -Received: from dovecot-director2.suse.de ([10.150.64.162]) - by imap1.dmz-prg2.suse.org with ESMTPSA id cKI3LrazgGUtZAAAD6G6ig - (envelope-from ); Mon, 18 Dec 2023 21:03:50 +0000 -From: "Ivan T. Ivanov" -To: Matthias Brugger , - Peter Robinson -Cc: Dmitry Malkin , - Thomas Fitzsimmons , Peng Fan , - Jaehoon Chung , Anatolij Gustschin , - wahrenst@gmx.net, florian.fainelli@broadcom.com, u-boot@lists.denx.de, - "Ivan T. Ivanov" -Subject: [PATCH v3 4/7] bcm2835: brcm, - bcm2708-fb device is using r5g6b5 format -Date: Mon, 18 Dec 2023 23:03:38 +0200 -Message-ID: <20231218210341.30073-5-iivanov@suse.de> -X-Mailer: git-send-email 2.43.0 -In-Reply-To: <20231218210341.30073-1-iivanov@suse.de> -References: <20231218210341.30073-1-iivanov@suse.de> -MIME-Version: 1.0 -X-Spamd-Result: default: False [4.90 / 50.00]; ARC_NA(0.00)[]; - RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; - TO_DN_SOME(0.00)[]; FREEMAIL_ENVRCPT(0.00)[gmail.com,gmx.net]; - R_MISSING_CHARSET(2.50)[]; MIME_GOOD(-0.10)[text/plain]; - TO_MATCH_ENVRCPT_ALL(0.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; - R_RATELIMIT(0.00)[to_ip_from(RL9dd9h8xg9qpm5f14t9e5w4zz)]; - RCVD_COUNT_THREE(0.00)[3]; - DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; - RCPT_COUNT_SEVEN(0.00)[11]; MID_CONTAINS_FROM(1.00)[]; - DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:email]; - FREEMAIL_TO(0.00)[suse.com,gmail.com]; - FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; - MIME_TRACE(0.00)[0:+]; - FREEMAIL_CC(0.00)[bedrocksystems.com,fitzsim.org,nxp.com,samsung.com,denx.de,gmx.net,broadcom.com,lists.denx.de,suse.de]; - RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-0.00)[34.66%] -Authentication-Results: smtp-out1.suse.de; - none -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 - -brcm,bcm2708-fb device provided by firmware on RPi5 uses -16 bits per pixel. Update driver to properly handle this. - -Signed-off-by: Ivan T. Ivanov ---- - drivers/video/bcm2835.c | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/drivers/video/bcm2835.c b/drivers/video/bcm2835.c -index 14942526f1..245c958b6e 100644 ---- a/drivers/video/bcm2835.c -+++ b/drivers/video/bcm2835.c -@@ -43,7 +43,7 @@ static int bcm2835_video_probe(struct udevice *dev) - - uc_priv->xsize = w; - uc_priv->ysize = h; -- uc_priv->bpix = VIDEO_BPP32; -+ uc_priv->bpix = dev_get_driver_data(dev); - plat->base = fb_base; - plat->size = fb_size; - -@@ -51,11 +51,11 @@ static int bcm2835_video_probe(struct udevice *dev) - } - - static const struct udevice_id bcm2835_video_ids[] = { -- { .compatible = "brcm,bcm2835-hdmi" }, -- { .compatible = "brcm,bcm2711-hdmi0" }, -- { .compatible = "brcm,bcm2708-fb" }, -+ { .compatible = "brcm,bcm2835-hdmi", .data = VIDEO_BPP32}, -+ { .compatible = "brcm,bcm2711-hdmi0", .data = VIDEO_BPP32}, -+ { .compatible = "brcm,bcm2708-fb", .data = VIDEO_BPP16 }, - #if !IS_ENABLED(CONFIG_VIDEO_DT_SIMPLEFB) -- { .compatible = "simple-framebuffer" }, -+ { .compatible = "simple-framebuffer", .data = VIDEO_BPP32}, - #endif - { } - }; - -From patchwork Mon Dec 18 21:03:39 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Ivan T. Ivanov" -X-Patchwork-Id: 1877653 -X-Patchwork-Delegate: pbrobinson@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -Authentication-Results: legolas.ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 - header.s=susede2_rsa header.b=NbGv/QjH; - dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=mv0vjv7/; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.a=rsa-sha256 header.s=susede2_rsa header.b=NbGv/QjH; - dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=mv0vjv7/; - 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 4SvC4s5T6Bz1ydc - for ; Tue, 19 Dec 2023 08:04:45 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 3B87487227; - Mon, 18 Dec 2023 22:04:02 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.b="NbGv/QjH"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="mv0vjv7/"; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.b="NbGv/QjH"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="mv0vjv7/"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id AC0FC874F3; Mon, 18 Dec 2023 22:03: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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 -Received: from smtp-out1.suse.de (smtp-out1.suse.de - [IPv6:2a07:de40:b251:101:10:150:64:1]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 8349D875DB - for ; Mon, 18 Dec 2023 22:03:52 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=iivanov@suse.de -Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org - [10.150.64.97]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by smtp-out1.suse.de (Postfix) with ESMTPS id 07C81222A0; - Mon, 18 Dec 2023 21:03:52 +0000 (UTC) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933432; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=uP1ZnUgZbbfrrj9GCsaBsy/nQj7H8r6do86LEnTV99Y=; - b=NbGv/QjHBl2RkJvR6nKp9uvf3bewa/Jp5ykWs/ULuKNb1e1kp0q0TCiM3d88QGrhaOkktM - ARQoLZXxNSqS1EXqsPA7VQyuJpg3iM74I+GTJfNdlIDDYeA4JLrY6MexUOxdVl1EgxjaPf - 8qkaGm9uEwoD2sactKTn0rgBg5C7Ej0= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933432; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=uP1ZnUgZbbfrrj9GCsaBsy/nQj7H8r6do86LEnTV99Y=; - b=mv0vjv7/43Gm9IJuOWZT6NQDNDmZdNrBoTyjx7Yu5AAnyTgKtyFYldUlt18PDNHm701rhG - AxUSg7hqv1qJTiDg== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933432; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=uP1ZnUgZbbfrrj9GCsaBsy/nQj7H8r6do86LEnTV99Y=; - b=NbGv/QjHBl2RkJvR6nKp9uvf3bewa/Jp5ykWs/ULuKNb1e1kp0q0TCiM3d88QGrhaOkktM - ARQoLZXxNSqS1EXqsPA7VQyuJpg3iM74I+GTJfNdlIDDYeA4JLrY6MexUOxdVl1EgxjaPf - 8qkaGm9uEwoD2sactKTn0rgBg5C7Ej0= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933432; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=uP1ZnUgZbbfrrj9GCsaBsy/nQj7H8r6do86LEnTV99Y=; - b=mv0vjv7/43Gm9IJuOWZT6NQDNDmZdNrBoTyjx7Yu5AAnyTgKtyFYldUlt18PDNHm701rhG - AxUSg7hqv1qJTiDg== -Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 6FAB513C92; - Mon, 18 Dec 2023 21:03:51 +0000 (UTC) -Received: from dovecot-director2.suse.de ([10.150.64.162]) - by imap1.dmz-prg2.suse.org with ESMTPSA id YHTRGLezgGUtZAAAD6G6ig - (envelope-from ); Mon, 18 Dec 2023 21:03:51 +0000 -From: "Ivan T. Ivanov" -To: Matthias Brugger , - Peter Robinson -Cc: Dmitry Malkin , - Thomas Fitzsimmons , Peng Fan , - Jaehoon Chung , Anatolij Gustschin , - wahrenst@gmx.net, florian.fainelli@broadcom.com, u-boot@lists.denx.de, - "Ivan T. Ivanov" -Subject: [PATCH v3 5/7] mmc: bcmstb: Add support for bcm2712 SD controller -Date: Mon, 18 Dec 2023 23:03:39 +0200 -Message-ID: <20231218210341.30073-6-iivanov@suse.de> -X-Mailer: git-send-email 2.43.0 -In-Reply-To: <20231218210341.30073-1-iivanov@suse.de> -References: <20231218210341.30073-1-iivanov@suse.de> -MIME-Version: 1.0 -X-Spamd-Result: default: False [1.90 / 50.00]; ARC_NA(0.00)[]; - RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; - TO_DN_SOME(0.00)[]; FREEMAIL_ENVRCPT(0.00)[gmail.com,gmx.net]; - R_MISSING_CHARSET(2.50)[]; MIME_GOOD(-0.10)[text/plain]; - TO_MATCH_ENVRCPT_ALL(0.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; - R_RATELIMIT(0.00)[to_ip_from(RL9dd9h8xg9qpm5f14t9e5w4zz)]; - RCVD_COUNT_THREE(0.00)[3]; - DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; - RCPT_COUNT_SEVEN(0.00)[11]; MID_CONTAINS_FROM(1.00)[]; - DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:email]; - FREEMAIL_TO(0.00)[suse.com,gmail.com]; - FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; - MIME_TRACE(0.00)[0:+]; - FREEMAIL_CC(0.00)[bedrocksystems.com,fitzsim.org,nxp.com,samsung.com,denx.de,gmx.net,broadcom.com,lists.denx.de,suse.de]; - RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-3.00)[100.00%] -Authentication-Results: smtp-out1.suse.de; - none -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 - -Borrow SD quirks from vendor Linux driver. - -"BCM2712 unfortunately carries with it a perennial bug with the SD -controller register interface present on previous chips (2711/2709/2708). -Accesses must be dword-sized and a read-modify-write cycle to the 32-bit -registers containing the COMMAND, TRANSFER_MODE, BLOCK_SIZE and -BLOCK_COUNT registers tramples the upper/lower 16 bits of data written. -BCM2712 does not seem to need the extreme delay between each write as on -previous chips, just the serialisation of writes to these registers in a -single 32-bit operation." - -Signed-off-by: Ivan T. Ivanov ---- - drivers/mmc/bcmstb_sdhci.c | 173 ++++++++++++++++++++++++++++++++++++- - 1 file changed, 172 insertions(+), 1 deletion(-) - -diff --git a/drivers/mmc/bcmstb_sdhci.c b/drivers/mmc/bcmstb_sdhci.c -index dc96818cff..21489e66c0 100644 ---- a/drivers/mmc/bcmstb_sdhci.c -+++ b/drivers/mmc/bcmstb_sdhci.c -@@ -38,6 +38,16 @@ - */ - #define BCMSTB_SDHCI_MINIMUM_CLOCK_FREQUENCY 400000 - -+#define SDIO_CFG_CTRL 0x0 -+#define SDIO_CFG_CTRL_SDCD_N_TEST_EN BIT(31) -+#define SDIO_CFG_CTRL_SDCD_N_TEST_LEV BIT(30) -+ -+#define SDIO_CFG_SD_PIN_SEL 0x44 -+#define SDIO_CFG_SD_PIN_SEL_MASK 0x3 -+#define SDIO_CFG_SD_PIN_SEL_CARD BIT(1) -+ -+#define REG_OFFSET_IN_BITS(reg) ((reg) << 3 & 0x18) -+ - /* - * This driver has only been tested with eMMC devices; SD devices may - * not work. -@@ -47,6 +57,53 @@ struct sdhci_bcmstb_plat { - struct mmc mmc; - }; - -+struct sdhci_bcmstb_host { -+ struct sdhci_host host; -+ u32 shadow_cmd; -+ u32 shadow_blk; -+ bool is_cmd_shadowed; -+ bool is_blk_shadowed; -+}; -+ -+struct sdhci_brcmstb_dev_priv { -+ int (*init)(struct udevice *dev); -+ struct sdhci_ops *ops; -+}; -+ -+static inline struct sdhci_bcmstb_host *to_bcmstb_host(struct sdhci_host *host) -+{ -+ return container_of(host, struct sdhci_bcmstb_host, host); -+} -+ -+static int sdhci_brcmstb_init_2712(struct udevice *dev) -+{ -+ struct sdhci_host *host = dev_get_priv(dev); -+ void *cfg_regs; -+ u32 reg; -+ -+ /* Map in the non-standard CFG registers */ -+ cfg_regs = dev_remap_addr_name(dev, "cfg"); -+ if (!cfg_regs) -+ return -ENOENT; -+ -+ if ((host->mmc->host_caps & MMC_CAP_NONREMOVABLE) || -+ (host->mmc->host_caps & MMC_CAP_NEEDS_POLL)) { -+ /* Force presence */ -+ reg = readl(cfg_regs + SDIO_CFG_CTRL); -+ reg &= ~SDIO_CFG_CTRL_SDCD_N_TEST_LEV; -+ reg |= SDIO_CFG_CTRL_SDCD_N_TEST_EN; -+ writel(reg, cfg_regs + SDIO_CFG_CTRL); -+ } else { -+ /* Enable card detection line */ -+ reg = readl(cfg_regs + SDIO_CFG_SD_PIN_SEL); -+ reg &= ~SDIO_CFG_SD_PIN_SEL_MASK; -+ reg |= SDIO_CFG_SD_PIN_SEL_CARD; -+ writel(reg, cfg_regs + SDIO_CFG_SD_PIN_SEL); -+ } -+ -+ return 0; -+} -+ - static int sdhci_bcmstb_bind(struct udevice *dev) - { - struct sdhci_bcmstb_plat *plat = dev_get_plat(dev); -@@ -58,10 +115,14 @@ static int sdhci_bcmstb_probe(struct udevice *dev) - { - struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev); - struct sdhci_bcmstb_plat *plat = dev_get_plat(dev); -- struct sdhci_host *host = dev_get_priv(dev); -+ struct sdhci_bcmstb_host *bcmstb = dev_get_priv(dev); -+ struct sdhci_host *host = &bcmstb->host; -+ struct sdhci_brcmstb_dev_priv *dev_priv; - fdt_addr_t base; - int ret; - -+ dev_priv = (struct sdhci_brcmstb_dev_priv *)dev_get_driver_data(dev); -+ - base = dev_read_addr(dev); - if (base == FDT_ADDR_T_NONE) - return -EINVAL; -@@ -75,6 +136,10 @@ static int sdhci_bcmstb_probe(struct udevice *dev) - - host->mmc = &plat->mmc; - host->mmc->dev = dev; -+ -+ if (dev_priv && dev_priv->ops) -+ host->ops = dev_priv->ops; -+ - ret = sdhci_setup_cfg(&plat->cfg, host, - BCMSTB_SDHCI_MAXIMUM_CLOCK_FREQUENCY, - BCMSTB_SDHCI_MINIMUM_CLOCK_FREQUENCY); -@@ -84,10 +149,116 @@ static int sdhci_bcmstb_probe(struct udevice *dev) - upriv->mmc = &plat->mmc; - host->mmc->priv = host; - -+ if (dev_priv && dev_priv->init) { -+ ret = dev_priv->init(dev); -+ if (ret) -+ return ret; -+ } -+ - return sdhci_probe(dev); - } - -+static u16 sdhci_brcmstb_32bits_readw(struct sdhci_host *host, int reg) -+{ -+ struct sdhci_bcmstb_host *bcmstb = to_bcmstb_host(host); -+ u16 word; -+ u32 val; -+ -+ if (reg == SDHCI_TRANSFER_MODE && bcmstb->is_cmd_shadowed) { -+ /* Get the saved transfer mode */ -+ val = bcmstb->shadow_cmd; -+ } else if ((reg == SDHCI_BLOCK_SIZE || reg == SDHCI_BLOCK_COUNT) && -+ bcmstb->is_blk_shadowed) { -+ /* Get the saved block info */ -+ val = bcmstb->shadow_blk; -+ } else { -+ val = readl(host->ioaddr + (reg & ~3)); -+ } -+ -+ word = val >> REG_OFFSET_IN_BITS(reg) & 0xffff; -+ return word; -+} -+ -+static u8 sdhci_brcmstb_32bits_readb(struct sdhci_host *host, int reg) -+{ -+ u32 val = readl(host->ioaddr + (reg & ~3)); -+ u8 byte = val >> REG_OFFSET_IN_BITS(reg) & 0xff; -+ return byte; -+} -+ -+/* -+ * BCM2712 unfortunately carries with it a perennial bug with the SD -+ * controller register interface present on previous chips (2711/2709/2708). -+ * Accesses must be dword-sized and a read-modify-write cycle to the -+ * 32-bit registers containing the COMMAND, TRANSFER_MODE, BLOCK_SIZE and -+ * BLOCK_COUNT registers tramples the upper/lower 16 bits of data written. -+ * BCM2712 does not seem to need the extreme delay between each write as -+ * on previous chips, just the serialisation of writes to these registers -+ * in a single 32-bit operation. -+ */ -+static void sdhci_brcmstb_32bits_writew(struct sdhci_host *host, u16 val, int reg) -+{ -+ struct sdhci_bcmstb_host *bcmstb = to_bcmstb_host(host); -+ u32 word_shift = REG_OFFSET_IN_BITS(reg); -+ u32 mask = 0xffff << word_shift; -+ u32 oldval, newval; -+ -+ if (reg == SDHCI_COMMAND) { -+ /* Write the block now as we are issuing a command */ -+ if (bcmstb->is_blk_shadowed) { -+ writel(bcmstb->shadow_blk, host->ioaddr + SDHCI_BLOCK_SIZE); -+ bcmstb->is_blk_shadowed = false; -+ } -+ oldval = bcmstb->shadow_cmd; -+ bcmstb->is_cmd_shadowed = false; -+ } else if ((reg == SDHCI_BLOCK_SIZE || reg == SDHCI_BLOCK_COUNT) && -+ bcmstb->is_blk_shadowed) { -+ /* Block size and count are stored in shadow reg */ -+ oldval = bcmstb->shadow_blk; -+ } else { -+ /* Read reg, all other registers are not shadowed */ -+ oldval = readl(host->ioaddr + (reg & ~3)); -+ } -+ newval = (oldval & ~mask) | (val << word_shift); -+ -+ if (reg == SDHCI_TRANSFER_MODE) { -+ /* Save the transfer mode until the command is issued */ -+ bcmstb->shadow_cmd = newval; -+ bcmstb->is_cmd_shadowed = true; -+ } else if (reg == SDHCI_BLOCK_SIZE || reg == SDHCI_BLOCK_COUNT) { -+ /* Save the block info until the command is issued */ -+ bcmstb->shadow_blk = newval; -+ bcmstb->is_blk_shadowed = true; -+ } else { -+ /* Command or other regular 32-bit write */ -+ writel(newval, host->ioaddr + (reg & ~3)); -+ } -+} -+ -+static void sdhci_brcmstb_32bits_writeb(struct sdhci_host *host, u8 val, int reg) -+{ -+ u32 oldval = readl(host->ioaddr + (reg & ~3)); -+ u32 byte_shift = REG_OFFSET_IN_BITS(reg); -+ u32 mask = 0xff << byte_shift; -+ u32 newval = (oldval & ~mask) | (val << byte_shift); -+ -+ writel(newval, host->ioaddr + (reg & ~3)); -+} -+ -+static struct sdhci_ops sdhci_brcmstb_ops_2712 = { -+ .read_b = sdhci_brcmstb_32bits_readb, -+ .read_w = sdhci_brcmstb_32bits_readw, -+ .write_w = sdhci_brcmstb_32bits_writew, -+ .write_b = sdhci_brcmstb_32bits_writeb, -+}; -+ -+static const struct sdhci_brcmstb_dev_priv match_priv_2712 = { -+ .init = sdhci_brcmstb_init_2712, -+ .ops = &sdhci_brcmstb_ops_2712, -+}; -+ - static const struct udevice_id sdhci_bcmstb_match[] = { -+ { .compatible = "brcm,bcm2712-sdhci", .data = (ulong)&match_priv_2712 }, - { .compatible = "brcm,bcm7425-sdhci" }, - { .compatible = "brcm,sdhci-brcmstb" }, - { } - -From patchwork Mon Dec 18 21:03:40 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Ivan T. Ivanov" -X-Patchwork-Id: 1877654 -X-Patchwork-Delegate: pbrobinson@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -Authentication-Results: legolas.ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 - header.s=susede2_rsa header.b=f/19Tx1x; - dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=e0CvACbS; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.a=rsa-sha256 header.s=susede2_rsa header.b=f/19Tx1x; - dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=e0CvACbS; - 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 4SvC5339Phz1ydc - for ; Tue, 19 Dec 2023 08:04:55 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id AEFAE87561; - Mon, 18 Dec 2023 22:04:02 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.b="f/19Tx1x"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="e0CvACbS"; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.b="f/19Tx1x"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="e0CvACbS"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id E31C887661; Mon, 18 Dec 2023 22:03:58 +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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no - version=3.4.2 -Received: from smtp-out1.suse.de (smtp-out1.suse.de - [IPv6:2a07:de40:b251:101:10:150:64:1]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 23C28875FE - for ; Mon, 18 Dec 2023 22:03:53 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=iivanov@suse.de -Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org - [IPv6:2a07:de40:b281:104:10:150:64:97]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by smtp-out1.suse.de (Postfix) with ESMTPS id AA225222AF; - Mon, 18 Dec 2023 21:03:52 +0000 (UTC) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933432; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=cxWdlBZFlaQd53WSplsOaVVsDevGF2K3qZjhk+1T33g=; - b=f/19Tx1x7UFtAUz8rSw0xZAG55X0OP1hiHqEuhAMQ+G/qEfSEkg6v1FGZhP70gpNWDQQgk - sr6WvGWKDP0t+jOsv0jDi9ZDrTiDB2ge+exjUPFNEvQP3H5zrjgKVOaqBaoOeLHXs/ay0l - qSAackxgs89eelJL1qSI3XwtAjq2zlQ= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933432; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=cxWdlBZFlaQd53WSplsOaVVsDevGF2K3qZjhk+1T33g=; - b=e0CvACbSltQnSYuEyv3yxtn0hfVqkwt0KNf0fBLAfLwxlC3hb9ebDGcHvra3iPCHYB22X9 - ButpL853ceVzwdDA== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933432; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=cxWdlBZFlaQd53WSplsOaVVsDevGF2K3qZjhk+1T33g=; - b=f/19Tx1x7UFtAUz8rSw0xZAG55X0OP1hiHqEuhAMQ+G/qEfSEkg6v1FGZhP70gpNWDQQgk - sr6WvGWKDP0t+jOsv0jDi9ZDrTiDB2ge+exjUPFNEvQP3H5zrjgKVOaqBaoOeLHXs/ay0l - qSAackxgs89eelJL1qSI3XwtAjq2zlQ= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933432; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=cxWdlBZFlaQd53WSplsOaVVsDevGF2K3qZjhk+1T33g=; - b=e0CvACbSltQnSYuEyv3yxtn0hfVqkwt0KNf0fBLAfLwxlC3hb9ebDGcHvra3iPCHYB22X9 - ButpL853ceVzwdDA== -Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 15B1C133E5; - Mon, 18 Dec 2023 21:03:52 +0000 (UTC) -Received: from dovecot-director2.suse.de ([10.150.64.162]) - by imap1.dmz-prg2.suse.org with ESMTPSA id 8OvVArizgGUtZAAAD6G6ig - (envelope-from ); Mon, 18 Dec 2023 21:03:52 +0000 -From: "Ivan T. Ivanov" -To: Matthias Brugger , - Peter Robinson -Cc: Dmitry Malkin , - Thomas Fitzsimmons , Peng Fan , - Jaehoon Chung , Anatolij Gustschin , - wahrenst@gmx.net, florian.fainelli@broadcom.com, u-boot@lists.denx.de, - "Ivan T. Ivanov" -Subject: [PATCH v3 6/7] configs: rpi_arm64: enable SDHCI BCMSTB driver -Date: Mon, 18 Dec 2023 23:03:40 +0200 -Message-ID: <20231218210341.30073-7-iivanov@suse.de> -X-Mailer: git-send-email 2.43.0 -In-Reply-To: <20231218210341.30073-1-iivanov@suse.de> -References: <20231218210341.30073-1-iivanov@suse.de> -MIME-Version: 1.0 -Authentication-Results: smtp-out1.suse.de; - dkim=pass header.d=suse.de header.s=susede2_rsa header.b="f/19Tx1x"; - dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=e0CvACbS -X-Rspamd-Server: rspamd2.dmz-prg2.suse.org -X-Spamd-Result: default: False [-1.62 / 50.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; - RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from]; - SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from]; - TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; - BROKEN_CONTENT_TYPE(1.50)[]; RCVD_COUNT_THREE(0.00)[3]; - DKIM_TRACE(0.00)[suse.de:+]; MX_GOOD(-0.01)[]; - RCPT_COUNT_SEVEN(0.00)[11]; NEURAL_HAM_SHORT(-0.20)[-1.000]; - FREEMAIL_TO(0.00)[suse.com,gmail.com]; FROM_EQ_ENVFROM(0.00)[]; - MIME_TRACE(0.00)[0:+]; BAYES_HAM(-0.11)[66.45%]; - ARC_NA(0.00)[]; - R_DKIM_ALLOW(-0.20)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; - RCVD_DKIM_ARC_DNSWL_HI(-1.00)[]; FROM_HAS_DN(0.00)[]; - FREEMAIL_ENVRCPT(0.00)[gmail.com,gmx.net]; - TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; - DWL_DNSWL_HI(-3.50)[suse.de:dkim]; - NEURAL_HAM_LONG(-1.00)[-1.000]; - DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; - MID_CONTAINS_FROM(1.00)[]; - DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:dkim,suse.de:email]; - FUZZY_BLOCKED(0.00)[rspamd.com]; - FREEMAIL_CC(0.00)[bedrocksystems.com,fitzsim.org,nxp.com,samsung.com,denx.de,gmx.net,broadcom.com,lists.denx.de,suse.de]; - RCVD_TLS_ALL(0.00)[]; - RCVD_IN_DNSWL_HI(-0.50)[2a07:de40:b281:104:10:150:64:97:from] -X-Rspamd-Queue-Id: AA225222AF -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 - -RPi5 have "brcm,bcm2712-sdhci" controller which is -handled by "sdhci-bcmstb" driver, so enable it. - -Signed-off-by: Ivan T. Ivanov ---- - configs/rpi_arm64_defconfig | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig -index f9dade18f6..1107fd11de 100644 ---- a/configs/rpi_arm64_defconfig -+++ b/configs/rpi_arm64_defconfig -@@ -33,6 +33,7 @@ CONFIG_BCM2835_GPIO=y - CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_SDMA=y - CONFIG_MMC_SDHCI_BCM2835=y -+CONFIG_MMC_SDHCI_BCMSTB=y - CONFIG_BCMGENET=y - CONFIG_PCI_BRCMSTB=y - CONFIG_PINCTRL=y - -From patchwork Mon Dec 18 21:03:41 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Ivan T. Ivanov" -X-Patchwork-Id: 1877655 -X-Patchwork-Delegate: pbrobinson@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -Authentication-Results: legolas.ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 - header.s=susede2_rsa header.b=1by1WnE8; - dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=e64lBvSE; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.a=rsa-sha256 header.s=susede2_rsa header.b=1by1WnE8; - dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=e64lBvSE; - 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 4SvC5H05zfz1ydc - for ; Tue, 19 Dec 2023 08:05:07 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 2FBDE87650; - Mon, 18 Dec 2023 22:04:03 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.b="1by1WnE8"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="e64lBvSE"; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.b="1by1WnE8"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="e64lBvSE"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 5D01C876A4; Mon, 18 Dec 2023 22:03: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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no - version=3.4.2 -Received: from smtp-out2.suse.de (smtp-out2.suse.de - [IPv6:2a07:de40:b251:101:10:150:64:2]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id C279687509 - for ; Mon, 18 Dec 2023 22:03:53 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=iivanov@suse.de -Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org - [IPv6:2a07:de40:b281:104:10:150:64:97]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by smtp-out2.suse.de (Postfix) with ESMTPS id 5507C1F6E6; - Mon, 18 Dec 2023 21:03:53 +0000 (UTC) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933433; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=HvUCimMaJ6xrQSSzUxalPI2wxDMnSXJwzMxo+y9/IFo=; - b=1by1WnE818KeyiiUhS0PLD7P0c+SSwVEcIdSwLVDSj6t8vZK9vpPNROZRCB9WlZtgGyGUU - JlRP9h5PowjYnh5OWRH6KbjZ19MG+Fu3rWcMQ+gET5ljKGaRAtFv2t0gDAtmZGheOkf5pW - KEDUZYxYceI7JKlWcX6QlIjexymId9w= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933433; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=HvUCimMaJ6xrQSSzUxalPI2wxDMnSXJwzMxo+y9/IFo=; - b=e64lBvSEDRhrUCpOd2eVMasuXC6PFNm5B1yOGeNNS+E2HREmMMam1YM4RObadB2tdux/T3 - Galw853x9Gm0wpDA== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933433; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=HvUCimMaJ6xrQSSzUxalPI2wxDMnSXJwzMxo+y9/IFo=; - b=1by1WnE818KeyiiUhS0PLD7P0c+SSwVEcIdSwLVDSj6t8vZK9vpPNROZRCB9WlZtgGyGUU - JlRP9h5PowjYnh5OWRH6KbjZ19MG+Fu3rWcMQ+gET5ljKGaRAtFv2t0gDAtmZGheOkf5pW - KEDUZYxYceI7JKlWcX6QlIjexymId9w= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933433; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=HvUCimMaJ6xrQSSzUxalPI2wxDMnSXJwzMxo+y9/IFo=; - b=e64lBvSEDRhrUCpOd2eVMasuXC6PFNm5B1yOGeNNS+E2HREmMMam1YM4RObadB2tdux/T3 - Galw853x9Gm0wpDA== -Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id BB17413C92; - Mon, 18 Dec 2023 21:03:52 +0000 (UTC) -Received: from dovecot-director2.suse.de ([10.150.64.162]) - by imap1.dmz-prg2.suse.org with ESMTPSA id 0JQfK7izgGUtZAAAD6G6ig - (envelope-from ); Mon, 18 Dec 2023 21:03:52 +0000 -From: "Ivan T. Ivanov" -To: Matthias Brugger , - Peter Robinson -Cc: Dmitry Malkin , - Thomas Fitzsimmons , Peng Fan , - Jaehoon Chung , Anatolij Gustschin , - wahrenst@gmx.net, florian.fainelli@broadcom.com, u-boot@lists.denx.de, - "Ivan T. Ivanov" -Subject: [PATCH v3 7/7] pci: pcie-brcmstb: Add bcm2712 PCIe controller support -Date: Mon, 18 Dec 2023 23:03:41 +0200 -Message-ID: <20231218210341.30073-8-iivanov@suse.de> -X-Mailer: git-send-email 2.43.0 -In-Reply-To: <20231218210341.30073-1-iivanov@suse.de> -References: <20231218210341.30073-1-iivanov@suse.de> -MIME-Version: 1.0 -X-Rspamd-Server: rspamd1.dmz-prg2.suse.org -X-Spamd-Bar: / -X-Spamd-Result: default: False [-0.31 / 50.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; - RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from]; - TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; - BROKEN_CONTENT_TYPE(1.50)[]; - R_RATELIMIT(0.00)[to_ip_from(RLccgikja4sxqnupiwsfdm9q1r)]; - RCVD_COUNT_THREE(0.00)[3]; DKIM_TRACE(0.00)[suse.de:+]; - MX_GOOD(-0.01)[]; RCPT_COUNT_SEVEN(0.00)[11]; - FREEMAIL_TO(0.00)[suse.com,gmail.com]; FROM_EQ_ENVFROM(0.00)[]; - MIME_TRACE(0.00)[0:+]; BAYES_HAM(-0.00)[27.73%]; - ARC_NA(0.00)[]; - R_DKIM_ALLOW(-0.20)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; - RCVD_DKIM_ARC_DNSWL_HI(-1.00)[]; FROM_HAS_DN(0.00)[]; - FREEMAIL_ENVRCPT(0.00)[gmail.com,gmx.net]; - TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; - DWL_DNSWL_HI(-3.50)[suse.de:dkim]; - DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; - MID_CONTAINS_FROM(1.00)[]; - DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:dkim,suse.de:email]; - FUZZY_BLOCKED(0.00)[rspamd.com]; - FREEMAIL_CC(0.00)[bedrocksystems.com,fitzsim.org,nxp.com,samsung.com,denx.de,gmx.net,broadcom.com,lists.denx.de,suse.de]; - RCVD_TLS_ALL(0.00)[]; - RCVD_IN_DNSWL_HI(-0.50)[2a07:de40:b281:104:10:150:64:97:from] -Authentication-Results: smtp-out2.suse.de; - dkim=pass header.d=suse.de header.s=susede2_rsa header.b=1by1WnE8; - dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=e64lBvSE -X-Rspamd-Queue-Id: 5507C1F6E6 -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 - -PCIe controller have minor register map difference compared -to bcm2711 variant. Handle this using device specific register -offset. - -Signed-off-by: Ivan T. Ivanov ---- - drivers/pci/pcie_brcmstb.c | 23 +++++++++++++++++++---- - 1 file changed, 19 insertions(+), 4 deletions(-) - -diff --git a/drivers/pci/pcie_brcmstb.c b/drivers/pci/pcie_brcmstb.c -index cd45f0bee9..d63e715b2e 100644 ---- a/drivers/pci/pcie_brcmstb.c -+++ b/drivers/pci/pcie_brcmstb.c -@@ -90,7 +90,6 @@ - #define PCIE_MEM_WIN0_LIMIT_HI(win) \ - PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LIMIT_HI + ((win) * 8) - --#define PCIE_MISC_HARD_PCIE_HARD_DEBUG 0x4204 - #define PCIE_HARD_DEBUG_SERDES_IDDQ_MASK 0x08000000 - - #define PCIE_MSI_INTR2_CLR 0x4508 -@@ -131,6 +130,10 @@ - #define SSC_STATUS_PLL_LOCK_MASK 0x800 - #define SSC_STATUS_PLL_LOCK_SHIFT 11 - -+struct pcie_cfg_data { -+ unsigned long hard_debug_offs; -+}; -+ - /** - * struct brcm_pcie - the PCIe controller state - * @base: Base address of memory mapped IO registers of the controller -@@ -141,6 +144,7 @@ - struct brcm_pcie { - void __iomem *base; - -+ struct pcie_cfg_data *cfg; - int gen; - bool ssc; - }; -@@ -458,7 +462,7 @@ static int brcm_pcie_probe(struct udevice *dev) - /* Take the bridge out of reset */ - clrbits_le32(base + PCIE_RGR1_SW_INIT_1, RGR1_SW_INIT_1_INIT_MASK); - -- clrbits_le32(base + PCIE_MISC_HARD_PCIE_HARD_DEBUG, -+ clrbits_le32(base + pcie->cfg->hard_debug_offs, - PCIE_HARD_DEBUG_SERDES_IDDQ_MASK); - - /* Wait for SerDes to be stable */ -@@ -599,7 +603,7 @@ static int brcm_pcie_remove(struct udevice *dev) - setbits_le32(base + PCIE_RGR1_SW_INIT_1, RGR1_SW_INIT_1_PERST_MASK); - - /* Turn off SerDes */ -- setbits_le32(base + PCIE_MISC_HARD_PCIE_HARD_DEBUG, -+ setbits_le32(base + pcie->cfg->hard_debug_offs, - PCIE_HARD_DEBUG_SERDES_IDDQ_MASK); - - /* Shutdown bridge */ -@@ -620,6 +624,8 @@ static int brcm_pcie_of_to_plat(struct udevice *dev) - if (!pcie->base) - return -EINVAL; - -+ pcie->cfg = (struct pcie_cfg_data *)dev_get_driver_data(dev); -+ - pcie->ssc = ofnode_read_bool(dn, "brcm,enable-ssc"); - - ret = ofnode_read_u32(dn, "max-link-speed", &max_link_speed); -@@ -636,8 +642,17 @@ static const struct dm_pci_ops brcm_pcie_ops = { - .write_config = brcm_pcie_write_config, - }; - -+static const struct pcie_cfg_data bcm2711_cfg = { -+ .hard_debug_offs = 0x4204 -+}; -+ -+static const struct pcie_cfg_data bcm2712_cfg = { -+ .hard_debug_offs = 0x4304 -+}; -+ - static const struct udevice_id brcm_pcie_ids[] = { -- { .compatible = "brcm,bcm2711-pcie" }, -+ { .compatible = "brcm,bcm2711-pcie", .data = (ulong)&bcm2711_cfg }, -+ { .compatible = "brcm,bcm2712-pcie", .data = (ulong)&bcm2712_cfg }, - { } - }; - From 69b6819f2e49a15fe7dbdeb2b23616b0a09ba043 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 15 Feb 2024 13:05:33 +0000 Subject: [PATCH 169/271] drop another patch --- ...rockpro64-Build-u-boot-rockchip-spi..patch | 41 ------------------- uboot-tools.spec | 1 - 2 files changed, 42 deletions(-) delete mode 100644 0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch diff --git a/0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch b/0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch deleted file mode 100644 index 30e4ad8..0000000 --- a/0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch +++ /dev/null @@ -1,41 +0,0 @@ -From ed5ffb3b53690a47333b931301a3765b9588b5dc Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Sun, 11 Jun 2023 21:22:41 +0100 -Subject: [PATCH] Revert "rockchip: rockpro64: Build u-boot-rockchip-spi.bin" - -This reverts commit 5713135ecc75660684ff3eb6cfba7bc11eb6433c. ---- - configs/rockpro64-rk3399_defconfig | 3 --- - 1 file changed, 3 deletions(-) - -diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig -index f41c0306790..0ca2cecade2 100644 ---- a/configs/rockpro64-rk3399_defconfig -+++ b/configs/rockpro64-rk3399_defconfig -@@ -11,7 +11,6 @@ - CONFIG_DEFAULT_DEVICE_TREE="rk3399-rockpro64" - CONFIG_DM_RESET=y - CONFIG_ROCKCHIP_RK3399=y --CONFIG_ROCKCHIP_SPI_IMAGE=y - CONFIG_TARGET_ROCKPRO64_RK3399=y - CONFIG_SPL_STACK=0x400000 - CONFIG_DEBUG_UART_BASE=0xFF1A0000 -@@ -21,7 +20,6 @@ - CONFIG_SYS_LOAD_ADDR=0x800800 - CONFIG_PCI=y - CONFIG_DEBUG_UART=y --CONFIG_LTO=y - CONFIG_SPL_FIT_SIGNATURE=y - CONFIG_LEGACY_IMAGE_FORMAT=y - CONFIG_BOOTSTAGE=y -@@ -40,7 +38,6 @@ - CONFIG_SPL_STACK_R=y - CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000 - CONFIG_SPL_SPI_LOAD=y --CONFIG_SYS_SPI_U_BOOT_OFFS=0x60000 - CONFIG_TPL=y - CONFIG_CMD_BOOTZ=y - CONFIG_CMD_GPT=y --- -2.41.0 - diff --git a/uboot-tools.spec b/uboot-tools.spec index eb2f4a3..b17640e 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -27,7 +27,6 @@ Patch7: Add-video-damage-tracking.patch Patch10: rpi-Switch-to-OF_HAS_PRIOR_STAGE-by-default.patch # Rockchips improvements Patch11: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch -#Patch12: 0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch BuildRequires: bc BuildRequires: bison From 9dc8c9ae3c672f9d57b120e8bfaddb56aa0f0838 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 29 Feb 2024 19:51:50 +0000 Subject: [PATCH 170/271] Update to 2024.04 RC3 Enable a number of new upstream devices Upstream now builds Rockchip SPI artifacts Various cleanups Fix ESP partition detection to enable EFI vars --- ...rockpro64-Build-u-boot-rockchip-spi..patch | 41 - aarch64-boards | 13 + rockchip-PinePhone-Pro-fixes.patch | 43 - rockchip-general-fixes.patch | 136 -- rpi5-initial-support.patch | 1910 ----------------- sources | 2 +- uboot-tools.spec | 78 +- ...ll-options-for-EFI-System-Partitions.patch | 36 + 8 files changed, 85 insertions(+), 2174 deletions(-) delete mode 100644 0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch delete mode 100644 rockchip-PinePhone-Pro-fixes.patch delete mode 100644 rockchip-general-fixes.patch delete mode 100644 rpi5-initial-support.patch create mode 100644 uefi-Add-all-options-for-EFI-System-Partitions.patch diff --git a/0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch b/0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch deleted file mode 100644 index 30e4ad8..0000000 --- a/0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch +++ /dev/null @@ -1,41 +0,0 @@ -From ed5ffb3b53690a47333b931301a3765b9588b5dc Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Sun, 11 Jun 2023 21:22:41 +0100 -Subject: [PATCH] Revert "rockchip: rockpro64: Build u-boot-rockchip-spi.bin" - -This reverts commit 5713135ecc75660684ff3eb6cfba7bc11eb6433c. ---- - configs/rockpro64-rk3399_defconfig | 3 --- - 1 file changed, 3 deletions(-) - -diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig -index f41c0306790..0ca2cecade2 100644 ---- a/configs/rockpro64-rk3399_defconfig -+++ b/configs/rockpro64-rk3399_defconfig -@@ -11,7 +11,6 @@ - CONFIG_DEFAULT_DEVICE_TREE="rk3399-rockpro64" - CONFIG_DM_RESET=y - CONFIG_ROCKCHIP_RK3399=y --CONFIG_ROCKCHIP_SPI_IMAGE=y - CONFIG_TARGET_ROCKPRO64_RK3399=y - CONFIG_SPL_STACK=0x400000 - CONFIG_DEBUG_UART_BASE=0xFF1A0000 -@@ -21,7 +20,6 @@ - CONFIG_SYS_LOAD_ADDR=0x800800 - CONFIG_PCI=y - CONFIG_DEBUG_UART=y --CONFIG_LTO=y - CONFIG_SPL_FIT_SIGNATURE=y - CONFIG_LEGACY_IMAGE_FORMAT=y - CONFIG_BOOTSTAGE=y -@@ -40,7 +38,6 @@ - CONFIG_SPL_STACK_R=y - CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000 - CONFIG_SPL_SPI_LOAD=y --CONFIG_SYS_SPI_U_BOOT_OFFS=0x60000 - CONFIG_TPL=y - CONFIG_CMD_BOOTZ=y - CONFIG_CMD_GPT=y --- -2.41.0 - diff --git a/aarch64-boards b/aarch64-boards index 39a556a..07154e5 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -1,4 +1,5 @@ a64-olinuxino +a64-olinuxino-emmc amarula_a64_relic apple_m1 bananapi_m2_plus_h5 @@ -8,6 +9,8 @@ dragonboard410c dragonboard820c dragonboard845c eaidk-610-rk3399 +emlid_neutis_n5_devboard +evb-px5 evb-rk3328 evb-rk3399 ficus-rk3399 @@ -39,17 +42,23 @@ nanopi_neo2 nanopi-neo4-rk3399 nanopi_neo_plus2 nanopi_r1s_h5 +nanopi-r2c-plus-rk3328 +nanopi-r2c-rk3328 nanopi-r2s-rk3328 nanopi-r4s-rk3399 +oceanic_5205_5inmfd odroid-c2 orangepi_3 orangepi_lite2 orangepi_one_plus orangepi_pc2 orangepi_prime +orangepi-r1-plus-lts-rk3328 +orangepi-r1-plus-rk3328 orangepi-rk3399 orangepi_win orangepi_zero2 +orangepi_zero3 orangepi_zero_plus orangepi_zero_plus2 p212 @@ -68,6 +77,8 @@ poplar puma-rk3399 qemu_arm64 roc-cc-rk3328 +rock-4c-plus-rk3399 +rock-4se-rk3399 rock64-rk3328 rock960-rk3399 rock-pi-4c-rk3399 @@ -82,6 +93,8 @@ sopine_baseboard starqltechn tanix_tx6 teres_i +transpeed-8k618-t turris_mox vexpress_aemv8a_juno +x96_mate xilinx_zynqmp_virt diff --git a/rockchip-PinePhone-Pro-fixes.patch b/rockchip-PinePhone-Pro-fixes.patch deleted file mode 100644 index 5e07490..0000000 --- a/rockchip-PinePhone-Pro-fixes.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 1af5e42f170d2c4b944beeb875b80ec7f061038a Mon Sep 17 00:00:00 2001 -From: Ondrej Jirman -Date: Thu, 25 May 2023 15:27:08 +0200 -Subject: [PATCH] pinephone-pro: Fix I/O port voltage (GPIO3D4A is 1.8V) - -This fixes access to camera sensor over I2C during probe time in -the kernel. (Kernel will fix I/0 port voltage by itself, but the -timing depends on probe order of the drivers, so the fix can -come after the camera sensor driver already failed to probe.) - -Signed-off-by: Ondrej Jirman -Cc: Kever Yang -Reviewed-by: Kever Yang ---- - board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c b/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c -index eb639cd0d07..b6ccbb9c1c4 100644 ---- a/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c -+++ b/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c -@@ -15,7 +15,8 @@ - #include - #include - --#define GRF_IO_VSEL_BT565_SHIFT 0 -+#define GRF_IO_VSEL_BT565_GPIO2AB 1 -+#define GRF_IO_VSEL_AUDIO_GPIO3D4A 2 - #define PMUGRF_CON0_VSEL_SHIFT 8 - - #ifndef CONFIG_SPL_BUILD -@@ -48,7 +49,8 @@ static void setup_iodomain(void) - syscon_get_first_range(ROCKCHIP_SYSCON_PMUGRF); - - /* BT565 is in 1.8v domain */ -- rk_setreg(&grf->io_vsel, 1 << GRF_IO_VSEL_BT565_SHIFT); -+ rk_setreg(&grf->io_vsel, -+ GRF_IO_VSEL_BT565_GPIO2AB | GRF_IO_VSEL_AUDIO_GPIO3D4A); - - /* Set GPIO1 1.8v/3.0v source select to PMU1830_VOL */ - rk_setreg(&pmugrf->soc_con0, 1 << PMUGRF_CON0_VSEL_SHIFT); --- -2.41.0 diff --git a/rockchip-general-fixes.patch b/rockchip-general-fixes.patch deleted file mode 100644 index 00e78f5..0000000 --- a/rockchip-general-fixes.patch +++ /dev/null @@ -1,136 +0,0 @@ -From 2d9350c50a9659cc2a247cdea07f0eacffa3cb32 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Sun, 12 Jun 2022 14:44:44 +0100 -Subject: [PATCH] rockchip: pinebook-pro: minor SPI flash fixes - -Set a default offset for environment so it doesn't write it to -unexpected locations, drop unneeded mtd config option. - -Signed-off-by: Peter Robinson ---- - configs/pinebook-pro-rk3399_defconfig | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig -index 8ca1d0708f9..aaa52c6ea70 100644 ---- a/configs/pinebook-pro-rk3399_defconfig -+++ b/configs/pinebook-pro-rk3399_defconfig -@@ -5,6 +5,7 @@ CONFIG_ARCH_ROCKCHIP=y - CONFIG_SYS_TEXT_BASE=0x00200000 - CONFIG_NR_DRAM_BANKS=1 - CONFIG_ENV_SIZE=0x8000 -+CONFIG_ENV_OFFSET=0x3F8000 - CONFIG_DEFAULT_DEVICE_TREE="rk3399-pinebook-pro" - CONFIG_ROCKCHIP_RK3399=y - CONFIG_TARGET_PINEBOOK_PRO_RK3399=y -@@ -22,7 +23,6 @@ CONFIG_MISC_INIT_R=y - # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set - CONFIG_SPL_STACK_R=y - CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000 --CONFIG_SPL_MTD_SUPPORT=y - CONFIG_SPL_SPI_LOAD=y - CONFIG_TPL=y - CONFIG_CMD_BOOTZ=y --- -2.36.1 - -From 27ba8e2f904063aec5196f86dd0332bf58a60259 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Sun, 12 Jun 2022 14:50:42 +0100 -Subject: [PATCH] rockchip: rockpro64: enable leds - -The Rockpro64 has some GPIO leds so let's enable them so the -user gets some output in early boot. - -Signed-off-by: Peter Robinson ---- - configs/rockpro64-rk3399_defconfig | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig -index e6f7a8469a3..b0c3527fab0 100644 ---- a/configs/rockpro64-rk3399_defconfig -+++ b/configs/rockpro64-rk3399_defconfig -@@ -42,6 +42,8 @@ CONFIG_AHCI_PCI=y - CONFIG_SATA_SIL=y - CONFIG_ROCKCHIP_GPIO=y - CONFIG_SYS_I2C_ROCKCHIP=y -+CONFIG_LED=y -+CONFIG_LED_GPIO=y - CONFIG_MISC=y - CONFIG_ROCKCHIP_EFUSE=y - CONFIG_MMC_DW=y --- -2.36.1 - -From 8bca90472e0d71e5344711b6f5fe8dc95e19af5a Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Sun, 12 Jun 2022 15:12:47 +0100 -Subject: [PATCH] rockchip: pinebook-pro: sync PBP dtb to 5.18 - -Sync the pinebook pro to upstream 5.18, in particular this brings -brings in a fix so the DP is disabled so Linux will actually boot. - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/rk3399-pinebook-pro.dts | 11 +++-------- - 1 file changed, 3 insertions(+), 8 deletions(-) - -diff --git a/arch/arm/dts/rk3399-pinebook-pro.dts b/arch/arm/dts/rk3399-pinebook-pro.dts -index 2b5f001ff4a..d6b68d77d63 100644 ---- a/arch/arm/dts/rk3399-pinebook-pro.dts -+++ b/arch/arm/dts/rk3399-pinebook-pro.dts -@@ -17,6 +17,7 @@ - / { - model = "Pine64 Pinebook Pro"; - compatible = "pine64,pinebook-pro", "rockchip,rk3399"; -+ chassis-type = "laptop"; - - aliases { - mmc0 = &sdio0; -@@ -242,12 +243,12 @@ - vdd_log: vdd-log { - compatible = "pwm-regulator"; - pwms = <&pwm2 0 25000 1>; -+ pwm-supply = <&vcc_sysin>; - regulator-name = "vdd_log"; - regulator-always-on; - regulator-boot-on; - regulator-min-microvolt = <800000>; - regulator-max-microvolt = <1400000>; -- vin-supply = <&vcc_sysin>; - - regulator-state-mem { - regulator-on-in-suspend; -@@ -385,10 +386,6 @@ - }; - }; - --&cdn_dp { -- status = "okay"; --}; -- - &cpu_b0 { - cpu-supply = <&vdd_cpu_b>; - }; -@@ -475,8 +472,6 @@ - vcc10-supply = <&vcc_sysin>; - vcc11-supply = <&vcc_sysin>; - vcc12-supply = <&vcc3v3_sys>; -- vcc13-supply = <&vcc_sysin>; -- vcc14-supply = <&vcc_sysin>; - - regulators { - /* rk3399 center logic supply */ -@@ -711,7 +706,7 @@ - - connector { - compatible = "usb-c-connector"; -- data-role = "host"; -+ data-role = "dual"; - label = "USB-C"; - op-sink-microwatt = <1000000>; - power-role = "dual"; --- -2.36.1 - diff --git a/rpi5-initial-support.patch b/rpi5-initial-support.patch deleted file mode 100644 index 4a79f31..0000000 --- a/rpi5-initial-support.patch +++ /dev/null @@ -1,1910 +0,0 @@ -From patchwork Mon Dec 18 21:03:35 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Ivan T. Ivanov" -X-Patchwork-Id: 1877649 -X-Patchwork-Delegate: pbrobinson@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -Authentication-Results: legolas.ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 - header.s=susede2_rsa header.b=frMNX+46; - dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=IseK5QVE; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.a=rsa-sha256 header.s=susede2_rsa header.b=1pz5pvm/; - dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=fIckdee4; - 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) server-digest SHA384) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4SvC455lk9z1ydc - for ; Tue, 19 Dec 2023 08:04:05 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 92DDD8753C; - Mon, 18 Dec 2023 22:03:54 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.b="frMNX+46"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="IseK5QVE"; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.b="1pz5pvm/"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="fIckdee4"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 95A7F87525; Mon, 18 Dec 2023 22:03: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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no - version=3.4.2 -Received: from smtp-out1.suse.de (smtp-out1.suse.de - [IPv6:2a07:de40:b251:101:10:150:64:1]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 0B37B87530 - for ; Mon, 18 Dec 2023 22:03:51 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=iivanov@suse.de -Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org - [10.150.64.97]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by smtp-out1.suse.de (Postfix) with ESMTPS id 6EE4F2228D; - Mon, 18 Dec 2023 21:03:49 +0000 (UTC) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933430; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=KH3AWH4E2OZnkKkgKspHqUQ687KHDd+TcmlhsjT4WMY=; - b=frMNX+46FgFSdyN24UT7Y4WdFDJKcOxcjH0HyyTrZsMcayuXoLtERkmRllSmLu8aRAoWOI - dzM9aX7eK9EHwuozUVijinsJ6wKpvqwxEx0Kdnj3wKPjAS3KTXGwfYiuZeO5wmbGRytEXd - p252vWhSG5L4UgaWil84yA4iM0KqiPs= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933430; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=KH3AWH4E2OZnkKkgKspHqUQ687KHDd+TcmlhsjT4WMY=; - b=IseK5QVEh+KCaimaGVOvt6lv9A9n/uQ/xO6kky5hugt4tubeSnhwGXuCjHTIEZhYi9auSr - Q6h6Mb/o4bd7u1CQ== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933429; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=KH3AWH4E2OZnkKkgKspHqUQ687KHDd+TcmlhsjT4WMY=; - b=1pz5pvm/SI3fxjKAlUcM+pRnK+NKLVbl/0Kj+UUQ/R29Irq4CDjfgTyaU0/DIXgn3x7Ttl - 2U7+per0J38TYiYHjQSDlrdPq4CwSFX2IEFS6sA5jx41ySG3RgO51Hh5GXKFh/WDUjcsn6 - ZPLcQCP31JjxHhULkzjaYLVYE2rQuXE= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933429; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=KH3AWH4E2OZnkKkgKspHqUQ687KHDd+TcmlhsjT4WMY=; - b=fIckdee4Yc6Iut7CdcyZnDHxDW58F+dY46W7JLg6y7iXnfDkSc0DETyb97S3ngS7GdF3OQ - HPy/QFdHWA8p8cBw== -Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id D359F13C92; - Mon, 18 Dec 2023 21:03:48 +0000 (UTC) -Received: from dovecot-director2.suse.de ([10.150.64.162]) - by imap1.dmz-prg2.suse.org with ESMTPSA id 4CUUMbSzgGUtZAAAD6G6ig - (envelope-from ); Mon, 18 Dec 2023 21:03:48 +0000 -From: "Ivan T. Ivanov" -To: Matthias Brugger , - Peter Robinson -Cc: Dmitry Malkin , - Thomas Fitzsimmons , Peng Fan , - Jaehoon Chung , Anatolij Gustschin , - wahrenst@gmx.net, florian.fainelli@broadcom.com, u-boot@lists.denx.de, - "Ivan T . Ivanov" -Subject: [PATCH v3 1/7] rpi5: add initial memory map for bcm2712 -Date: Mon, 18 Dec 2023 23:03:35 +0200 -Message-ID: <20231218210341.30073-2-iivanov@suse.de> -X-Mailer: git-send-email 2.43.0 -In-Reply-To: <20231218210341.30073-1-iivanov@suse.de> -References: <20231218210341.30073-1-iivanov@suse.de> -MIME-Version: 1.0 -Authentication-Results: smtp-out1.suse.de; - none -X-Spamd-Result: default: False [0.70 / 50.00]; ARC_NA(0.00)[]; - RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; - TO_DN_SOME(0.00)[]; FREEMAIL_ENVRCPT(0.00)[gmail.com,gmx.net]; - R_MISSING_CHARSET(2.50)[]; MIME_GOOD(-0.10)[text/plain]; - TO_MATCH_ENVRCPT_ALL(0.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; - NEURAL_HAM_LONG(-1.00)[-1.000]; RCVD_COUNT_THREE(0.00)[3]; - DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; - NEURAL_HAM_SHORT(-0.20)[-1.000]; RCPT_COUNT_SEVEN(0.00)[11]; - MID_CONTAINS_FROM(1.00)[]; - DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:email,bedrocksystems.com:email]; - FREEMAIL_TO(0.00)[suse.com,gmail.com]; - FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; - MIME_TRACE(0.00)[0:+]; - FREEMAIL_CC(0.00)[bedrocksystems.com,fitzsim.org,nxp.com,samsung.com,denx.de,gmx.net,broadcom.com,lists.denx.de,suse.de]; - RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-3.00)[100.00%] -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 - -From: Dmitry Malkin - -includes: -* 1GB of RAM (from 4GB or 8GB total) -* VPU memory interface -* AXI ranges (main peripherals) - -Signed-off-by: Dmitry Malkin -Signed-off-by: Ivan T. Ivanov ---- - arch/arm/mach-bcm283x/init.c | 38 +++++++++++++++++++++++++++++++++++- - 1 file changed, 37 insertions(+), 1 deletion(-) - -diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c -index 7265faf6ce..af23b9711a 100644 ---- a/arch/arm/mach-bcm283x/init.c -+++ b/arch/arm/mach-bcm283x/init.c -@@ -19,7 +19,7 @@ - #ifdef CONFIG_ARM64 - #include - --#define MEM_MAP_MAX_ENTRIES (4) -+#define MEM_MAP_MAX_ENTRIES (5) - - static struct mm_region bcm283x_mem_map[MEM_MAP_MAX_ENTRIES] = { - { -@@ -68,6 +68,41 @@ static struct mm_region bcm2711_mem_map[MEM_MAP_MAX_ENTRIES] = { - } - }; - -+static struct mm_region bcm2712_mem_map[MEM_MAP_MAX_ENTRIES] = { -+ { -+ .virt = 0x00000000UL, -+ .phys = 0x00000000UL, -+ .size = 0x3f800000UL, -+ .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | -+ PTE_BLOCK_INNER_SHARE -+ }, { -+ .virt = 0x3f800000UL, -+ .phys = 0x3f800000UL, -+ .size = 0x00800000UL, -+ .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | -+ PTE_BLOCK_NON_SHARE | -+ PTE_BLOCK_PXN | PTE_BLOCK_UXN -+ }, { -+ /* Beginning of AXI bus where uSD controller lives */ -+ .virt = 0x1000000000UL, -+ .phys = 0x1000000000UL, -+ .size = 0x0002000000UL, -+ .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | -+ PTE_BLOCK_NON_SHARE | -+ PTE_BLOCK_PXN | PTE_BLOCK_UXN -+ }, { -+ .virt = 0x107c000000UL, -+ .phys = 0x107c000000UL, -+ .size = 0x0004000000UL, -+ .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | -+ PTE_BLOCK_NON_SHARE | -+ PTE_BLOCK_PXN | PTE_BLOCK_UXN -+ }, { -+ /* List terminator */ -+ 0, -+ } -+}; -+ - struct mm_region *mem_map = bcm283x_mem_map; - - /* -@@ -78,6 +113,7 @@ static const struct udevice_id board_ids[] = { - { .compatible = "brcm,bcm2837", .data = (ulong)&bcm283x_mem_map}, - { .compatible = "brcm,bcm2838", .data = (ulong)&bcm2711_mem_map}, - { .compatible = "brcm,bcm2711", .data = (ulong)&bcm2711_mem_map}, -+ { .compatible = "brcm,bcm2712", .data = (ulong)&bcm2712_mem_map}, - { }, - }; - - -From patchwork Mon Dec 18 21:03:36 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Ivan T. Ivanov" -X-Patchwork-Id: 1877650 -X-Patchwork-Delegate: pbrobinson@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -Authentication-Results: legolas.ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 - header.s=susede2_rsa header.b=v1KGWKJg; - dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=fFiq02vw; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.a=rsa-sha256 header.s=susede2_rsa header.b=v1KGWKJg; - dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=fFiq02vw; - 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 4SvC4H2hzjz1ydc - for ; Tue, 19 Dec 2023 08:04:15 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id C85A08758C; - Mon, 18 Dec 2023 22:03:57 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.b="v1KGWKJg"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="fFiq02vw"; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.b="v1KGWKJg"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="fFiq02vw"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 6F50F87530; Mon, 18 Dec 2023 22:03:54 +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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no - version=3.4.2 -Received: from smtp-out2.suse.de (smtp-out2.suse.de - [IPv6:2a07:de40:b251:101:10:150:64:2]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 199488753C - for ; Mon, 18 Dec 2023 22:03:51 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=iivanov@suse.de -Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org - [10.150.64.97]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by smtp-out2.suse.de (Postfix) with ESMTPS id 1AC1A1F46E; - Mon, 18 Dec 2023 21:03:50 +0000 (UTC) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933430; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=sHJ8RNAoNPDg1bwvhFF8CpHTHHBRfcz53X69wMjqM8s=; - b=v1KGWKJgJttai7C79qIEMd/XpNIgzFqndAnylh2LCSBCYnAQmHcbTcoqWFl1mbR0bCIJ2B - nnbHB6CW+/Ja2oUD0wavAmzqzhQ+ANsN8FLZ+RC4p4W0fnMs6Yz9lMDf8ozKecEdna61Q6 - 2SnPjyXAogWLFBBDalRvdzUIOIWe3Tc= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933430; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=sHJ8RNAoNPDg1bwvhFF8CpHTHHBRfcz53X69wMjqM8s=; - b=fFiq02vw2EIwrIbp2ltl5amzeQZi9NS1k/nH07K65OVAZc8eRyKu/vHbdjX58887t//OZ/ - 6LuVBS0afgkEbWCg== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933430; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=sHJ8RNAoNPDg1bwvhFF8CpHTHHBRfcz53X69wMjqM8s=; - b=v1KGWKJgJttai7C79qIEMd/XpNIgzFqndAnylh2LCSBCYnAQmHcbTcoqWFl1mbR0bCIJ2B - nnbHB6CW+/Ja2oUD0wavAmzqzhQ+ANsN8FLZ+RC4p4W0fnMs6Yz9lMDf8ozKecEdna61Q6 - 2SnPjyXAogWLFBBDalRvdzUIOIWe3Tc= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933430; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=sHJ8RNAoNPDg1bwvhFF8CpHTHHBRfcz53X69wMjqM8s=; - b=fFiq02vw2EIwrIbp2ltl5amzeQZi9NS1k/nH07K65OVAZc8eRyKu/vHbdjX58887t//OZ/ - 6LuVBS0afgkEbWCg== -Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 7FCBC133E5; - Mon, 18 Dec 2023 21:03:49 +0000 (UTC) -Received: from dovecot-director2.suse.de ([10.150.64.162]) - by imap1.dmz-prg2.suse.org with ESMTPSA id AH+lHLWzgGUtZAAAD6G6ig - (envelope-from ); Mon, 18 Dec 2023 21:03:49 +0000 -From: "Ivan T. Ivanov" -To: Matthias Brugger , - Peter Robinson -Cc: Dmitry Malkin , - Thomas Fitzsimmons , Peng Fan , - Jaehoon Chung , Anatolij Gustschin , - wahrenst@gmx.net, florian.fainelli@broadcom.com, u-boot@lists.denx.de, - "Ivan T . Ivanov" -Subject: [PATCH v3 2/7] rpi5: Use devicetree as alternative way to read IO - base addresses -Date: Mon, 18 Dec 2023 23:03:36 +0200 -Message-ID: <20231218210341.30073-3-iivanov@suse.de> -X-Mailer: git-send-email 2.43.0 -In-Reply-To: <20231218210341.30073-1-iivanov@suse.de> -References: <20231218210341.30073-1-iivanov@suse.de> -MIME-Version: 1.0 -X-Spamd-Result: default: False [10.00 / 50.00]; ARC_NA(0.00)[]; - RCVD_VIA_SMTP_AUTH(0.00)[]; BAYES_SPAM(5.10)[100.00%]; - FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; - FREEMAIL_ENVRCPT(0.00)[gmail.com,gmx.net]; - R_MISSING_CHARSET(2.50)[]; MIME_GOOD(-0.10)[text/plain]; - TO_MATCH_ENVRCPT_ALL(0.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; - RCVD_COUNT_THREE(0.00)[3]; - DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; - RCPT_COUNT_SEVEN(0.00)[11]; MID_CONTAINS_FROM(1.00)[]; - DBL_BLOCKED_OPENRESOLVER(0.00)[bedrocksystems.com:email,suse.de:email]; - FREEMAIL_TO(0.00)[suse.com,gmail.com]; - FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; - MIME_TRACE(0.00)[0:+]; - FREEMAIL_CC(0.00)[bedrocksystems.com,fitzsim.org,nxp.com,samsung.com,denx.de,gmx.net,broadcom.com,lists.denx.de,suse.de]; - RCVD_TLS_ALL(0.00)[] -Authentication-Results: smtp-out2.suse.de; - none -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 - -From: Dmitry Malkin - -MBOX and Watchdog on RPi5/bcm2712 has a different base IO offsets. -Find them via devicetree blob passed by bootloader. - -Signed-off-by: Dmitry Malkin -Signed-off-by: Ivan T. Ivanov ---- - arch/arm/mach-bcm283x/include/mach/base.h | 5 ++- - arch/arm/mach-bcm283x/include/mach/mbox.h | 3 +- - arch/arm/mach-bcm283x/include/mach/sdhci.h | 3 +- - arch/arm/mach-bcm283x/include/mach/timer.h | 3 +- - arch/arm/mach-bcm283x/include/mach/wdog.h | 3 +- - arch/arm/mach-bcm283x/init.c | 43 ++++++++++++++++++---- - 6 files changed, 43 insertions(+), 17 deletions(-) - -diff --git a/arch/arm/mach-bcm283x/include/mach/base.h b/arch/arm/mach-bcm283x/include/mach/base.h -index 4ccaf69693..6de99e7ea1 100644 ---- a/arch/arm/mach-bcm283x/include/mach/base.h -+++ b/arch/arm/mach-bcm283x/include/mach/base.h -@@ -6,7 +6,10 @@ - #ifndef _BCM283x_BASE_H_ - #define _BCM283x_BASE_H_ - --extern unsigned long rpi_bcm283x_base; -+extern unsigned long rpi_mbox_base; -+extern unsigned long rpi_timer_base; -+extern unsigned long rpi_sdhci_base; -+extern unsigned long rpi_wdog_base; - - #ifdef CONFIG_ARMV7_LPAE - #ifdef CONFIG_TARGET_RPI_4_32B -diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h -index 490664f878..35d4e2f075 100644 ---- a/arch/arm/mach-bcm283x/include/mach/mbox.h -+++ b/arch/arm/mach-bcm283x/include/mach/mbox.h -@@ -38,8 +38,7 @@ - - /* Raw mailbox HW */ - --#define BCM2835_MBOX_PHYSADDR ({ BUG_ON(!rpi_bcm283x_base); \ -- rpi_bcm283x_base + 0x0000b880; }) -+#define BCM2835_MBOX_PHYSADDR rpi_mbox_base - - struct bcm2835_mbox_regs { - u32 read; -diff --git a/arch/arm/mach-bcm283x/include/mach/sdhci.h b/arch/arm/mach-bcm283x/include/mach/sdhci.h -index 7323690687..e837c679c4 100644 ---- a/arch/arm/mach-bcm283x/include/mach/sdhci.h -+++ b/arch/arm/mach-bcm283x/include/mach/sdhci.h -@@ -8,8 +8,7 @@ - - #include - --#define BCM2835_SDHCI_PHYSADDR ({ BUG_ON(!rpi_bcm283x_base); \ -- rpi_bcm283x_base + 0x00300000; }) -+#define BCM2835_SDHCI_PHYSADDR rpi_sdhci_base - - int bcm2835_sdhci_init(u32 regbase, u32 emmc_freq); - -diff --git a/arch/arm/mach-bcm283x/include/mach/timer.h b/arch/arm/mach-bcm283x/include/mach/timer.h -index 5567dbd7f3..60500a256d 100644 ---- a/arch/arm/mach-bcm283x/include/mach/timer.h -+++ b/arch/arm/mach-bcm283x/include/mach/timer.h -@@ -11,8 +11,7 @@ - #include - #endif - --#define BCM2835_TIMER_PHYSADDR ({ BUG_ON(!rpi_bcm283x_base); \ -- rpi_bcm283x_base + 0x00003000; }) -+#define BCM2835_TIMER_PHYSADDR rpi_timer_base - - #define BCM2835_TIMER_CS_M3 (1 << 3) - #define BCM2835_TIMER_CS_M2 (1 << 2) -diff --git a/arch/arm/mach-bcm283x/include/mach/wdog.h b/arch/arm/mach-bcm283x/include/mach/wdog.h -index 9942666720..b950560674 100644 ---- a/arch/arm/mach-bcm283x/include/mach/wdog.h -+++ b/arch/arm/mach-bcm283x/include/mach/wdog.h -@@ -8,8 +8,7 @@ - - #include - --#define BCM2835_WDOG_PHYSADDR ({ BUG_ON(!rpi_bcm283x_base); \ -- rpi_bcm283x_base + 0x00100000; }) -+#define BCM2835_WDOG_PHYSADDR rpi_wdog_base - - struct bcm2835_wdog_regs { - u32 unknown0[7]; -diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c -index af23b9711a..1c5c748484 100644 ---- a/arch/arm/mach-bcm283x/init.c -+++ b/arch/arm/mach-bcm283x/init.c -@@ -151,7 +151,11 @@ static void rpi_update_mem_map(void) - static void rpi_update_mem_map(void) {} - #endif - --unsigned long rpi_bcm283x_base = 0x3f000000; -+/* Default bcm283x devices addresses */ -+unsigned long rpi_mbox_base = 0x3f00b880; -+unsigned long rpi_sdhci_base = 0x3f300000; -+unsigned long rpi_wdog_base = 0x3f100000; -+unsigned long rpi_timer_base = 0x3f003000; - - int arch_cpu_init(void) - { -@@ -162,22 +166,45 @@ int arch_cpu_init(void) - - int mach_cpu_init(void) - { -- int ret, soc_offset; -+ int ret, soc, offset; - u64 io_base, size; - - rpi_update_mem_map(); - - /* Get IO base from device tree */ -- soc_offset = fdt_path_offset(gd->fdt_blob, "/soc"); -- if (soc_offset < 0) -- return soc_offset; -+ soc = fdt_path_offset(gd->fdt_blob, "/soc"); -+ if (soc < 0) -+ return soc; - -- ret = fdt_read_range((void *)gd->fdt_blob, soc_offset, 0, NULL, -- &io_base, &size); -+ ret = fdt_read_range((void *)gd->fdt_blob, soc, 0, NULL, -+ &io_base, &size); - if (ret) - return ret; - -- rpi_bcm283x_base = io_base; -+ rpi_mbox_base = io_base + 0x00b880; -+ rpi_sdhci_base = io_base + 0x300000; -+ rpi_wdog_base = io_base + 0x100000; -+ rpi_timer_base = io_base + 0x003000; -+ -+ offset = fdt_node_offset_by_compatible(gd->fdt_blob, soc, -+ "brcm,bcm2835-mbox"); -+ if (offset > soc) -+ rpi_mbox_base = fdt_get_base_address(gd->fdt_blob, offset); -+ -+ offset = fdt_node_offset_by_compatible(gd->fdt_blob, soc, -+ "brcm,bcm2835-sdhci"); -+ if (offset > soc) -+ rpi_sdhci_base = fdt_get_base_address(gd->fdt_blob, offset); -+ -+ offset = fdt_node_offset_by_compatible(gd->fdt_blob, soc, -+ "brcm,bcm2835-system-timer"); -+ if (offset > soc) -+ rpi_timer_base = fdt_get_base_address(gd->fdt_blob, offset); -+ -+ offset = fdt_node_offset_by_compatible(gd->fdt_blob, soc, -+ "brcm,bcm2712-pm"); -+ if (offset > soc) -+ rpi_wdog_base = fdt_get_base_address(gd->fdt_blob, offset); - - return 0; - } - -From patchwork Mon Dec 18 21:03:37 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Ivan T. Ivanov" -X-Patchwork-Id: 1877652 -X-Patchwork-Delegate: pbrobinson@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -Authentication-Results: legolas.ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 - header.s=susede2_rsa header.b=MuifTv9w; - dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=J2WonmZQ; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.a=rsa-sha256 header.s=susede2_rsa header.b=driIaEaW; - dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=ENBj4l6/; - 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 4SvC4h1PpHz1ydc - for ; Tue, 19 Dec 2023 08:04:36 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id BC5CE87656; - Mon, 18 Dec 2023 22:03:58 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.b="MuifTv9w"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="J2WonmZQ"; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.b="driIaEaW"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="ENBj4l6/"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 24B3087578; Mon, 18 Dec 2023 22:03: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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 -Received: from smtp-out1.suse.de (smtp-out1.suse.de - [IPv6:2a07:de40:b251:101:10:150:64:1]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 34BC9875A0 - for ; Mon, 18 Dec 2023 22:03:52 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=iivanov@suse.de -Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org - [10.150.64.97]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by smtp-out1.suse.de (Postfix) with ESMTPS id B98772226F; - Mon, 18 Dec 2023 21:03:50 +0000 (UTC) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933431; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=fHScQy8dlQ4zBcmmXyg7xTO2N+HoZRyPs/mSsXUaidA=; - b=MuifTv9wBEOLgWscWoGcXg+RGB8+btC5sRFciLLURyCkDcUQuguKCF0MB5CUHbvIFDKQTs - 3cu6hcIxZ1sJPOhJYAQlW90dBLsORX0sI25Eq4VgPGCsldwfrQ6KFwJmGJHKAf1t3bAtsp - bXmOjkuzkGiYTERqgRtFHlM+jbjtULk= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933431; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=fHScQy8dlQ4zBcmmXyg7xTO2N+HoZRyPs/mSsXUaidA=; - b=J2WonmZQu47jTWrv+1hYLdw1tZ+mNBDcST4N3FHxlTW7EY6hSg3i0FkVDYqumfQMZdddMp - jagUtFA6k1hguwCQ== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933430; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=fHScQy8dlQ4zBcmmXyg7xTO2N+HoZRyPs/mSsXUaidA=; - b=driIaEaWsaR+g9AcK8SGiaVWp2t8QtO7GFM918C1n2Mg0Ag01KOyoFkVXAvjXENou/caP6 - mszp+EvY1mp+ZR5gwQMkbkHBxQ10VWiFHcSdpA6ZicAD8PbXnb4DO5mEFRyVbxDu6b9fHp - mNp6oBcymc5k4gJFdfomnV1ubqgcp38= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933430; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=fHScQy8dlQ4zBcmmXyg7xTO2N+HoZRyPs/mSsXUaidA=; - b=ENBj4l6/3jkDUxi4yY5WR8ECQN9jENKPjLTTKM7yT4ET1rZJ3jbU297szl97aZN4oQ41A9 - z8StT2qNvcfjYQCA== -Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 2AC2D13C93; - Mon, 18 Dec 2023 21:03:50 +0000 (UTC) -Received: from dovecot-director2.suse.de ([10.150.64.162]) - by imap1.dmz-prg2.suse.org with ESMTPSA id EE/zB7azgGUtZAAAD6G6ig - (envelope-from ); Mon, 18 Dec 2023 21:03:50 +0000 -From: "Ivan T. Ivanov" -To: Matthias Brugger , - Peter Robinson -Cc: Dmitry Malkin , - Thomas Fitzsimmons , Peng Fan , - Jaehoon Chung , Anatolij Gustschin , - wahrenst@gmx.net, florian.fainelli@broadcom.com, u-boot@lists.denx.de, - "Ivan T. Ivanov" -Subject: [PATCH v3 3/7] rpi5: Use devicetree to retrieve board revision -Date: Mon, 18 Dec 2023 23:03:37 +0200 -Message-ID: <20231218210341.30073-4-iivanov@suse.de> -X-Mailer: git-send-email 2.43.0 -In-Reply-To: <20231218210341.30073-1-iivanov@suse.de> -References: <20231218210341.30073-1-iivanov@suse.de> -MIME-Version: 1.0 -Authentication-Results: smtp-out1.suse.de; - none -X-Spamd-Result: default: False [1.14 / 50.00]; ARC_NA(0.00)[]; - RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; - TO_DN_SOME(0.00)[]; FREEMAIL_ENVRCPT(0.00)[gmail.com,gmx.net]; - R_MISSING_CHARSET(2.50)[]; MIME_GOOD(-0.10)[text/plain]; - TO_MATCH_ENVRCPT_ALL(0.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; - NEURAL_HAM_LONG(-1.00)[-1.000]; - R_RATELIMIT(0.00)[to_ip_from(RL9dd9h8xg9qpm5f14t9e5w4zz)]; - RCVD_COUNT_THREE(0.00)[3]; - DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; - NEURAL_HAM_SHORT(-0.20)[-1.000]; RCPT_COUNT_SEVEN(0.00)[11]; - MID_CONTAINS_FROM(1.00)[]; - DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:email]; - FREEMAIL_TO(0.00)[suse.com,gmail.com]; - FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; - MIME_TRACE(0.00)[0:+]; - FREEMAIL_CC(0.00)[bedrocksystems.com,fitzsim.org,nxp.com,samsung.com,denx.de,gmx.net,broadcom.com,lists.denx.de,suse.de]; - RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-2.56)[98.03%] -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 - -Firmware on RPi5 return error on board revision query -through firmware interface, but on the other hand it fills -"linux,revision" in "system" node, so use it to detect board -revision. - - system { - linux,revision = <0xc04170>; - linux,serial = <0x6cf44e80 0x3c533ede>; - }; - -Signed-off-by: Ivan T. Ivanov ---- - board/raspberrypi/rpi/rpi.c | 22 +++++++++++++++++++--- - 1 file changed, 19 insertions(+), 3 deletions(-) - -diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c -index cd823ad746..2851ebc985 100644 ---- a/board/raspberrypi/rpi/rpi.c -+++ b/board/raspberrypi/rpi/rpi.c -@@ -171,6 +171,11 @@ static const struct rpi_model rpi_models_new_scheme[] = { - DTB_DIR "bcm2711-rpi-cm4.dtb", - true, - }, -+ [0x17] = { -+ "5 Model B", -+ DTB_DIR "bcm2712-rpi-5-b.dtb", -+ true, -+ }, - }; - - static const struct rpi_model rpi_models_old_scheme[] = { -@@ -429,15 +434,27 @@ static void get_board_revision(void) - int ret; - const struct rpi_model *models; - uint32_t models_count; -+ ofnode node; - - BCM2835_MBOX_INIT_HDR(msg); - BCM2835_MBOX_INIT_TAG(&msg->get_board_rev, GET_BOARD_REV); - - ret = bcm2835_mbox_call_prop(BCM2835_MBOX_PROP_CHAN, &msg->hdr); - if (ret) { -- printf("bcm2835: Could not query board revision\n"); - /* Ignore error; not critical */ -- return; -+ node = ofnode_path("/system"); -+ if (!ofnode_valid(node)) { -+ printf("bcm2835: Could not find /system node\n"); -+ return; -+ } -+ -+ ret = ofnode_read_u32(node, "linux,revision", &revision); -+ if (ret) { -+ printf("bcm2835: Could not find linux,revision\n"); -+ return; -+ } -+ } else { -+ revision = msg->get_board_rev.body.resp.rev; - } - - /* -@@ -451,7 +468,6 @@ static void get_board_revision(void) - * http://www.raspberrypi.org/forums/viewtopic.php?f=63&t=98367&start=250 - * http://www.raspberrypi.org/forums/viewtopic.php?f=31&t=20594 - */ -- revision = msg->get_board_rev.body.resp.rev; - if (revision & 0x800000) { - rev_scheme = 1; - rev_type = (revision >> 4) & 0xff; - -From patchwork Mon Dec 18 21:03:38 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Ivan T. Ivanov" -X-Patchwork-Id: 1877651 -X-Patchwork-Delegate: pbrobinson@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -Authentication-Results: legolas.ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 - header.s=susede2_rsa header.b=v2vbP3rz; - dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=DCEhbGvW; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.a=rsa-sha256 header.s=susede2_rsa header.b=v2vbP3rz; - dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=DCEhbGvW; - 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) server-digest SHA384) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4SvC4X1dxWz1ydc - for ; Tue, 19 Dec 2023 08:04:28 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 516EE875B6; - Mon, 18 Dec 2023 22:03:58 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.b="v2vbP3rz"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="DCEhbGvW"; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.b="v2vbP3rz"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="DCEhbGvW"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id B3A6E87578; Mon, 18 Dec 2023 22:03: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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no - version=3.4.2 -Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id AF6918758C - for ; Mon, 18 Dec 2023 22:03:51 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=iivanov@suse.de -Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org - [10.150.64.97]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by smtp-out1.suse.de (Postfix) with ESMTPS id 601C222298; - Mon, 18 Dec 2023 21:03:51 +0000 (UTC) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933431; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=g18N3OoUCORUbBwvzPY0/IHAtBrY9++PtXkkmDrbHl4=; - b=v2vbP3rzM/o63ofFdDaxhtUv68QFa8UxlaWLBU0PN+7PKXtZUGyrKBSmhVzxTM42FyEF7w - 9fus9/ORTaMw41AMi4qeWNQkin7gz4BF2qAFQuYSksnSgsT4Jul8n1YBBmIDx1keXZtfAW - uJZcfMM7pykF11NRMTvI38ZkyYm3ueQ= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933431; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=g18N3OoUCORUbBwvzPY0/IHAtBrY9++PtXkkmDrbHl4=; - b=DCEhbGvWPmgWKvfaoSUDgZ/cuuHGUnp9FvtlFeMSL2WTlsc5F+jQrl+8kVn2Yr5wDXUi8w - yyGhdRc4ihbp3tAg== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933431; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=g18N3OoUCORUbBwvzPY0/IHAtBrY9++PtXkkmDrbHl4=; - b=v2vbP3rzM/o63ofFdDaxhtUv68QFa8UxlaWLBU0PN+7PKXtZUGyrKBSmhVzxTM42FyEF7w - 9fus9/ORTaMw41AMi4qeWNQkin7gz4BF2qAFQuYSksnSgsT4Jul8n1YBBmIDx1keXZtfAW - uJZcfMM7pykF11NRMTvI38ZkyYm3ueQ= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933431; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=g18N3OoUCORUbBwvzPY0/IHAtBrY9++PtXkkmDrbHl4=; - b=DCEhbGvWPmgWKvfaoSUDgZ/cuuHGUnp9FvtlFeMSL2WTlsc5F+jQrl+8kVn2Yr5wDXUi8w - yyGhdRc4ihbp3tAg== -Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id C77BF133E5; - Mon, 18 Dec 2023 21:03:50 +0000 (UTC) -Received: from dovecot-director2.suse.de ([10.150.64.162]) - by imap1.dmz-prg2.suse.org with ESMTPSA id cKI3LrazgGUtZAAAD6G6ig - (envelope-from ); Mon, 18 Dec 2023 21:03:50 +0000 -From: "Ivan T. Ivanov" -To: Matthias Brugger , - Peter Robinson -Cc: Dmitry Malkin , - Thomas Fitzsimmons , Peng Fan , - Jaehoon Chung , Anatolij Gustschin , - wahrenst@gmx.net, florian.fainelli@broadcom.com, u-boot@lists.denx.de, - "Ivan T. Ivanov" -Subject: [PATCH v3 4/7] bcm2835: brcm, - bcm2708-fb device is using r5g6b5 format -Date: Mon, 18 Dec 2023 23:03:38 +0200 -Message-ID: <20231218210341.30073-5-iivanov@suse.de> -X-Mailer: git-send-email 2.43.0 -In-Reply-To: <20231218210341.30073-1-iivanov@suse.de> -References: <20231218210341.30073-1-iivanov@suse.de> -MIME-Version: 1.0 -X-Spamd-Result: default: False [4.90 / 50.00]; ARC_NA(0.00)[]; - RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; - TO_DN_SOME(0.00)[]; FREEMAIL_ENVRCPT(0.00)[gmail.com,gmx.net]; - R_MISSING_CHARSET(2.50)[]; MIME_GOOD(-0.10)[text/plain]; - TO_MATCH_ENVRCPT_ALL(0.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; - R_RATELIMIT(0.00)[to_ip_from(RL9dd9h8xg9qpm5f14t9e5w4zz)]; - RCVD_COUNT_THREE(0.00)[3]; - DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; - RCPT_COUNT_SEVEN(0.00)[11]; MID_CONTAINS_FROM(1.00)[]; - DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:email]; - FREEMAIL_TO(0.00)[suse.com,gmail.com]; - FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; - MIME_TRACE(0.00)[0:+]; - FREEMAIL_CC(0.00)[bedrocksystems.com,fitzsim.org,nxp.com,samsung.com,denx.de,gmx.net,broadcom.com,lists.denx.de,suse.de]; - RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-0.00)[34.66%] -Authentication-Results: smtp-out1.suse.de; - none -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 - -brcm,bcm2708-fb device provided by firmware on RPi5 uses -16 bits per pixel. Update driver to properly handle this. - -Signed-off-by: Ivan T. Ivanov ---- - drivers/video/bcm2835.c | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/drivers/video/bcm2835.c b/drivers/video/bcm2835.c -index 14942526f1..245c958b6e 100644 ---- a/drivers/video/bcm2835.c -+++ b/drivers/video/bcm2835.c -@@ -43,7 +43,7 @@ static int bcm2835_video_probe(struct udevice *dev) - - uc_priv->xsize = w; - uc_priv->ysize = h; -- uc_priv->bpix = VIDEO_BPP32; -+ uc_priv->bpix = dev_get_driver_data(dev); - plat->base = fb_base; - plat->size = fb_size; - -@@ -51,11 +51,11 @@ static int bcm2835_video_probe(struct udevice *dev) - } - - static const struct udevice_id bcm2835_video_ids[] = { -- { .compatible = "brcm,bcm2835-hdmi" }, -- { .compatible = "brcm,bcm2711-hdmi0" }, -- { .compatible = "brcm,bcm2708-fb" }, -+ { .compatible = "brcm,bcm2835-hdmi", .data = VIDEO_BPP32}, -+ { .compatible = "brcm,bcm2711-hdmi0", .data = VIDEO_BPP32}, -+ { .compatible = "brcm,bcm2708-fb", .data = VIDEO_BPP16 }, - #if !IS_ENABLED(CONFIG_VIDEO_DT_SIMPLEFB) -- { .compatible = "simple-framebuffer" }, -+ { .compatible = "simple-framebuffer", .data = VIDEO_BPP32}, - #endif - { } - }; - -From patchwork Mon Dec 18 21:03:39 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Ivan T. Ivanov" -X-Patchwork-Id: 1877653 -X-Patchwork-Delegate: pbrobinson@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -Authentication-Results: legolas.ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 - header.s=susede2_rsa header.b=NbGv/QjH; - dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=mv0vjv7/; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.a=rsa-sha256 header.s=susede2_rsa header.b=NbGv/QjH; - dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=mv0vjv7/; - 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 4SvC4s5T6Bz1ydc - for ; Tue, 19 Dec 2023 08:04:45 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 3B87487227; - Mon, 18 Dec 2023 22:04:02 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.b="NbGv/QjH"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="mv0vjv7/"; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.b="NbGv/QjH"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="mv0vjv7/"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id AC0FC874F3; Mon, 18 Dec 2023 22:03: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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 -Received: from smtp-out1.suse.de (smtp-out1.suse.de - [IPv6:2a07:de40:b251:101:10:150:64:1]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 8349D875DB - for ; Mon, 18 Dec 2023 22:03:52 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=iivanov@suse.de -Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org - [10.150.64.97]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by smtp-out1.suse.de (Postfix) with ESMTPS id 07C81222A0; - Mon, 18 Dec 2023 21:03:52 +0000 (UTC) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933432; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=uP1ZnUgZbbfrrj9GCsaBsy/nQj7H8r6do86LEnTV99Y=; - b=NbGv/QjHBl2RkJvR6nKp9uvf3bewa/Jp5ykWs/ULuKNb1e1kp0q0TCiM3d88QGrhaOkktM - ARQoLZXxNSqS1EXqsPA7VQyuJpg3iM74I+GTJfNdlIDDYeA4JLrY6MexUOxdVl1EgxjaPf - 8qkaGm9uEwoD2sactKTn0rgBg5C7Ej0= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933432; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=uP1ZnUgZbbfrrj9GCsaBsy/nQj7H8r6do86LEnTV99Y=; - b=mv0vjv7/43Gm9IJuOWZT6NQDNDmZdNrBoTyjx7Yu5AAnyTgKtyFYldUlt18PDNHm701rhG - AxUSg7hqv1qJTiDg== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933432; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=uP1ZnUgZbbfrrj9GCsaBsy/nQj7H8r6do86LEnTV99Y=; - b=NbGv/QjHBl2RkJvR6nKp9uvf3bewa/Jp5ykWs/ULuKNb1e1kp0q0TCiM3d88QGrhaOkktM - ARQoLZXxNSqS1EXqsPA7VQyuJpg3iM74I+GTJfNdlIDDYeA4JLrY6MexUOxdVl1EgxjaPf - 8qkaGm9uEwoD2sactKTn0rgBg5C7Ej0= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933432; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=uP1ZnUgZbbfrrj9GCsaBsy/nQj7H8r6do86LEnTV99Y=; - b=mv0vjv7/43Gm9IJuOWZT6NQDNDmZdNrBoTyjx7Yu5AAnyTgKtyFYldUlt18PDNHm701rhG - AxUSg7hqv1qJTiDg== -Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 6FAB513C92; - Mon, 18 Dec 2023 21:03:51 +0000 (UTC) -Received: from dovecot-director2.suse.de ([10.150.64.162]) - by imap1.dmz-prg2.suse.org with ESMTPSA id YHTRGLezgGUtZAAAD6G6ig - (envelope-from ); Mon, 18 Dec 2023 21:03:51 +0000 -From: "Ivan T. Ivanov" -To: Matthias Brugger , - Peter Robinson -Cc: Dmitry Malkin , - Thomas Fitzsimmons , Peng Fan , - Jaehoon Chung , Anatolij Gustschin , - wahrenst@gmx.net, florian.fainelli@broadcom.com, u-boot@lists.denx.de, - "Ivan T. Ivanov" -Subject: [PATCH v3 5/7] mmc: bcmstb: Add support for bcm2712 SD controller -Date: Mon, 18 Dec 2023 23:03:39 +0200 -Message-ID: <20231218210341.30073-6-iivanov@suse.de> -X-Mailer: git-send-email 2.43.0 -In-Reply-To: <20231218210341.30073-1-iivanov@suse.de> -References: <20231218210341.30073-1-iivanov@suse.de> -MIME-Version: 1.0 -X-Spamd-Result: default: False [1.90 / 50.00]; ARC_NA(0.00)[]; - RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; - TO_DN_SOME(0.00)[]; FREEMAIL_ENVRCPT(0.00)[gmail.com,gmx.net]; - R_MISSING_CHARSET(2.50)[]; MIME_GOOD(-0.10)[text/plain]; - TO_MATCH_ENVRCPT_ALL(0.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; - R_RATELIMIT(0.00)[to_ip_from(RL9dd9h8xg9qpm5f14t9e5w4zz)]; - RCVD_COUNT_THREE(0.00)[3]; - DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; - RCPT_COUNT_SEVEN(0.00)[11]; MID_CONTAINS_FROM(1.00)[]; - DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:email]; - FREEMAIL_TO(0.00)[suse.com,gmail.com]; - FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; - MIME_TRACE(0.00)[0:+]; - FREEMAIL_CC(0.00)[bedrocksystems.com,fitzsim.org,nxp.com,samsung.com,denx.de,gmx.net,broadcom.com,lists.denx.de,suse.de]; - RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-3.00)[100.00%] -Authentication-Results: smtp-out1.suse.de; - none -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 - -Borrow SD quirks from vendor Linux driver. - -"BCM2712 unfortunately carries with it a perennial bug with the SD -controller register interface present on previous chips (2711/2709/2708). -Accesses must be dword-sized and a read-modify-write cycle to the 32-bit -registers containing the COMMAND, TRANSFER_MODE, BLOCK_SIZE and -BLOCK_COUNT registers tramples the upper/lower 16 bits of data written. -BCM2712 does not seem to need the extreme delay between each write as on -previous chips, just the serialisation of writes to these registers in a -single 32-bit operation." - -Signed-off-by: Ivan T. Ivanov ---- - drivers/mmc/bcmstb_sdhci.c | 173 ++++++++++++++++++++++++++++++++++++- - 1 file changed, 172 insertions(+), 1 deletion(-) - -diff --git a/drivers/mmc/bcmstb_sdhci.c b/drivers/mmc/bcmstb_sdhci.c -index dc96818cff..21489e66c0 100644 ---- a/drivers/mmc/bcmstb_sdhci.c -+++ b/drivers/mmc/bcmstb_sdhci.c -@@ -38,6 +38,16 @@ - */ - #define BCMSTB_SDHCI_MINIMUM_CLOCK_FREQUENCY 400000 - -+#define SDIO_CFG_CTRL 0x0 -+#define SDIO_CFG_CTRL_SDCD_N_TEST_EN BIT(31) -+#define SDIO_CFG_CTRL_SDCD_N_TEST_LEV BIT(30) -+ -+#define SDIO_CFG_SD_PIN_SEL 0x44 -+#define SDIO_CFG_SD_PIN_SEL_MASK 0x3 -+#define SDIO_CFG_SD_PIN_SEL_CARD BIT(1) -+ -+#define REG_OFFSET_IN_BITS(reg) ((reg) << 3 & 0x18) -+ - /* - * This driver has only been tested with eMMC devices; SD devices may - * not work. -@@ -47,6 +57,53 @@ struct sdhci_bcmstb_plat { - struct mmc mmc; - }; - -+struct sdhci_bcmstb_host { -+ struct sdhci_host host; -+ u32 shadow_cmd; -+ u32 shadow_blk; -+ bool is_cmd_shadowed; -+ bool is_blk_shadowed; -+}; -+ -+struct sdhci_brcmstb_dev_priv { -+ int (*init)(struct udevice *dev); -+ struct sdhci_ops *ops; -+}; -+ -+static inline struct sdhci_bcmstb_host *to_bcmstb_host(struct sdhci_host *host) -+{ -+ return container_of(host, struct sdhci_bcmstb_host, host); -+} -+ -+static int sdhci_brcmstb_init_2712(struct udevice *dev) -+{ -+ struct sdhci_host *host = dev_get_priv(dev); -+ void *cfg_regs; -+ u32 reg; -+ -+ /* Map in the non-standard CFG registers */ -+ cfg_regs = dev_remap_addr_name(dev, "cfg"); -+ if (!cfg_regs) -+ return -ENOENT; -+ -+ if ((host->mmc->host_caps & MMC_CAP_NONREMOVABLE) || -+ (host->mmc->host_caps & MMC_CAP_NEEDS_POLL)) { -+ /* Force presence */ -+ reg = readl(cfg_regs + SDIO_CFG_CTRL); -+ reg &= ~SDIO_CFG_CTRL_SDCD_N_TEST_LEV; -+ reg |= SDIO_CFG_CTRL_SDCD_N_TEST_EN; -+ writel(reg, cfg_regs + SDIO_CFG_CTRL); -+ } else { -+ /* Enable card detection line */ -+ reg = readl(cfg_regs + SDIO_CFG_SD_PIN_SEL); -+ reg &= ~SDIO_CFG_SD_PIN_SEL_MASK; -+ reg |= SDIO_CFG_SD_PIN_SEL_CARD; -+ writel(reg, cfg_regs + SDIO_CFG_SD_PIN_SEL); -+ } -+ -+ return 0; -+} -+ - static int sdhci_bcmstb_bind(struct udevice *dev) - { - struct sdhci_bcmstb_plat *plat = dev_get_plat(dev); -@@ -58,10 +115,14 @@ static int sdhci_bcmstb_probe(struct udevice *dev) - { - struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev); - struct sdhci_bcmstb_plat *plat = dev_get_plat(dev); -- struct sdhci_host *host = dev_get_priv(dev); -+ struct sdhci_bcmstb_host *bcmstb = dev_get_priv(dev); -+ struct sdhci_host *host = &bcmstb->host; -+ struct sdhci_brcmstb_dev_priv *dev_priv; - fdt_addr_t base; - int ret; - -+ dev_priv = (struct sdhci_brcmstb_dev_priv *)dev_get_driver_data(dev); -+ - base = dev_read_addr(dev); - if (base == FDT_ADDR_T_NONE) - return -EINVAL; -@@ -75,6 +136,10 @@ static int sdhci_bcmstb_probe(struct udevice *dev) - - host->mmc = &plat->mmc; - host->mmc->dev = dev; -+ -+ if (dev_priv && dev_priv->ops) -+ host->ops = dev_priv->ops; -+ - ret = sdhci_setup_cfg(&plat->cfg, host, - BCMSTB_SDHCI_MAXIMUM_CLOCK_FREQUENCY, - BCMSTB_SDHCI_MINIMUM_CLOCK_FREQUENCY); -@@ -84,10 +149,116 @@ static int sdhci_bcmstb_probe(struct udevice *dev) - upriv->mmc = &plat->mmc; - host->mmc->priv = host; - -+ if (dev_priv && dev_priv->init) { -+ ret = dev_priv->init(dev); -+ if (ret) -+ return ret; -+ } -+ - return sdhci_probe(dev); - } - -+static u16 sdhci_brcmstb_32bits_readw(struct sdhci_host *host, int reg) -+{ -+ struct sdhci_bcmstb_host *bcmstb = to_bcmstb_host(host); -+ u16 word; -+ u32 val; -+ -+ if (reg == SDHCI_TRANSFER_MODE && bcmstb->is_cmd_shadowed) { -+ /* Get the saved transfer mode */ -+ val = bcmstb->shadow_cmd; -+ } else if ((reg == SDHCI_BLOCK_SIZE || reg == SDHCI_BLOCK_COUNT) && -+ bcmstb->is_blk_shadowed) { -+ /* Get the saved block info */ -+ val = bcmstb->shadow_blk; -+ } else { -+ val = readl(host->ioaddr + (reg & ~3)); -+ } -+ -+ word = val >> REG_OFFSET_IN_BITS(reg) & 0xffff; -+ return word; -+} -+ -+static u8 sdhci_brcmstb_32bits_readb(struct sdhci_host *host, int reg) -+{ -+ u32 val = readl(host->ioaddr + (reg & ~3)); -+ u8 byte = val >> REG_OFFSET_IN_BITS(reg) & 0xff; -+ return byte; -+} -+ -+/* -+ * BCM2712 unfortunately carries with it a perennial bug with the SD -+ * controller register interface present on previous chips (2711/2709/2708). -+ * Accesses must be dword-sized and a read-modify-write cycle to the -+ * 32-bit registers containing the COMMAND, TRANSFER_MODE, BLOCK_SIZE and -+ * BLOCK_COUNT registers tramples the upper/lower 16 bits of data written. -+ * BCM2712 does not seem to need the extreme delay between each write as -+ * on previous chips, just the serialisation of writes to these registers -+ * in a single 32-bit operation. -+ */ -+static void sdhci_brcmstb_32bits_writew(struct sdhci_host *host, u16 val, int reg) -+{ -+ struct sdhci_bcmstb_host *bcmstb = to_bcmstb_host(host); -+ u32 word_shift = REG_OFFSET_IN_BITS(reg); -+ u32 mask = 0xffff << word_shift; -+ u32 oldval, newval; -+ -+ if (reg == SDHCI_COMMAND) { -+ /* Write the block now as we are issuing a command */ -+ if (bcmstb->is_blk_shadowed) { -+ writel(bcmstb->shadow_blk, host->ioaddr + SDHCI_BLOCK_SIZE); -+ bcmstb->is_blk_shadowed = false; -+ } -+ oldval = bcmstb->shadow_cmd; -+ bcmstb->is_cmd_shadowed = false; -+ } else if ((reg == SDHCI_BLOCK_SIZE || reg == SDHCI_BLOCK_COUNT) && -+ bcmstb->is_blk_shadowed) { -+ /* Block size and count are stored in shadow reg */ -+ oldval = bcmstb->shadow_blk; -+ } else { -+ /* Read reg, all other registers are not shadowed */ -+ oldval = readl(host->ioaddr + (reg & ~3)); -+ } -+ newval = (oldval & ~mask) | (val << word_shift); -+ -+ if (reg == SDHCI_TRANSFER_MODE) { -+ /* Save the transfer mode until the command is issued */ -+ bcmstb->shadow_cmd = newval; -+ bcmstb->is_cmd_shadowed = true; -+ } else if (reg == SDHCI_BLOCK_SIZE || reg == SDHCI_BLOCK_COUNT) { -+ /* Save the block info until the command is issued */ -+ bcmstb->shadow_blk = newval; -+ bcmstb->is_blk_shadowed = true; -+ } else { -+ /* Command or other regular 32-bit write */ -+ writel(newval, host->ioaddr + (reg & ~3)); -+ } -+} -+ -+static void sdhci_brcmstb_32bits_writeb(struct sdhci_host *host, u8 val, int reg) -+{ -+ u32 oldval = readl(host->ioaddr + (reg & ~3)); -+ u32 byte_shift = REG_OFFSET_IN_BITS(reg); -+ u32 mask = 0xff << byte_shift; -+ u32 newval = (oldval & ~mask) | (val << byte_shift); -+ -+ writel(newval, host->ioaddr + (reg & ~3)); -+} -+ -+static struct sdhci_ops sdhci_brcmstb_ops_2712 = { -+ .read_b = sdhci_brcmstb_32bits_readb, -+ .read_w = sdhci_brcmstb_32bits_readw, -+ .write_w = sdhci_brcmstb_32bits_writew, -+ .write_b = sdhci_brcmstb_32bits_writeb, -+}; -+ -+static const struct sdhci_brcmstb_dev_priv match_priv_2712 = { -+ .init = sdhci_brcmstb_init_2712, -+ .ops = &sdhci_brcmstb_ops_2712, -+}; -+ - static const struct udevice_id sdhci_bcmstb_match[] = { -+ { .compatible = "brcm,bcm2712-sdhci", .data = (ulong)&match_priv_2712 }, - { .compatible = "brcm,bcm7425-sdhci" }, - { .compatible = "brcm,sdhci-brcmstb" }, - { } - -From patchwork Mon Dec 18 21:03:40 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Ivan T. Ivanov" -X-Patchwork-Id: 1877654 -X-Patchwork-Delegate: pbrobinson@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -Authentication-Results: legolas.ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 - header.s=susede2_rsa header.b=f/19Tx1x; - dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=e0CvACbS; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.a=rsa-sha256 header.s=susede2_rsa header.b=f/19Tx1x; - dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=e0CvACbS; - 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 4SvC5339Phz1ydc - for ; Tue, 19 Dec 2023 08:04:55 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id AEFAE87561; - Mon, 18 Dec 2023 22:04:02 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.b="f/19Tx1x"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="e0CvACbS"; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.b="f/19Tx1x"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="e0CvACbS"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id E31C887661; Mon, 18 Dec 2023 22:03:58 +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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no - version=3.4.2 -Received: from smtp-out1.suse.de (smtp-out1.suse.de - [IPv6:2a07:de40:b251:101:10:150:64:1]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 23C28875FE - for ; Mon, 18 Dec 2023 22:03:53 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=iivanov@suse.de -Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org - [IPv6:2a07:de40:b281:104:10:150:64:97]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by smtp-out1.suse.de (Postfix) with ESMTPS id AA225222AF; - Mon, 18 Dec 2023 21:03:52 +0000 (UTC) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933432; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=cxWdlBZFlaQd53WSplsOaVVsDevGF2K3qZjhk+1T33g=; - b=f/19Tx1x7UFtAUz8rSw0xZAG55X0OP1hiHqEuhAMQ+G/qEfSEkg6v1FGZhP70gpNWDQQgk - sr6WvGWKDP0t+jOsv0jDi9ZDrTiDB2ge+exjUPFNEvQP3H5zrjgKVOaqBaoOeLHXs/ay0l - qSAackxgs89eelJL1qSI3XwtAjq2zlQ= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933432; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=cxWdlBZFlaQd53WSplsOaVVsDevGF2K3qZjhk+1T33g=; - b=e0CvACbSltQnSYuEyv3yxtn0hfVqkwt0KNf0fBLAfLwxlC3hb9ebDGcHvra3iPCHYB22X9 - ButpL853ceVzwdDA== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933432; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=cxWdlBZFlaQd53WSplsOaVVsDevGF2K3qZjhk+1T33g=; - b=f/19Tx1x7UFtAUz8rSw0xZAG55X0OP1hiHqEuhAMQ+G/qEfSEkg6v1FGZhP70gpNWDQQgk - sr6WvGWKDP0t+jOsv0jDi9ZDrTiDB2ge+exjUPFNEvQP3H5zrjgKVOaqBaoOeLHXs/ay0l - qSAackxgs89eelJL1qSI3XwtAjq2zlQ= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933432; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=cxWdlBZFlaQd53WSplsOaVVsDevGF2K3qZjhk+1T33g=; - b=e0CvACbSltQnSYuEyv3yxtn0hfVqkwt0KNf0fBLAfLwxlC3hb9ebDGcHvra3iPCHYB22X9 - ButpL853ceVzwdDA== -Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 15B1C133E5; - Mon, 18 Dec 2023 21:03:52 +0000 (UTC) -Received: from dovecot-director2.suse.de ([10.150.64.162]) - by imap1.dmz-prg2.suse.org with ESMTPSA id 8OvVArizgGUtZAAAD6G6ig - (envelope-from ); Mon, 18 Dec 2023 21:03:52 +0000 -From: "Ivan T. Ivanov" -To: Matthias Brugger , - Peter Robinson -Cc: Dmitry Malkin , - Thomas Fitzsimmons , Peng Fan , - Jaehoon Chung , Anatolij Gustschin , - wahrenst@gmx.net, florian.fainelli@broadcom.com, u-boot@lists.denx.de, - "Ivan T. Ivanov" -Subject: [PATCH v3 6/7] configs: rpi_arm64: enable SDHCI BCMSTB driver -Date: Mon, 18 Dec 2023 23:03:40 +0200 -Message-ID: <20231218210341.30073-7-iivanov@suse.de> -X-Mailer: git-send-email 2.43.0 -In-Reply-To: <20231218210341.30073-1-iivanov@suse.de> -References: <20231218210341.30073-1-iivanov@suse.de> -MIME-Version: 1.0 -Authentication-Results: smtp-out1.suse.de; - dkim=pass header.d=suse.de header.s=susede2_rsa header.b="f/19Tx1x"; - dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=e0CvACbS -X-Rspamd-Server: rspamd2.dmz-prg2.suse.org -X-Spamd-Result: default: False [-1.62 / 50.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; - RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from]; - SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from]; - TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; - BROKEN_CONTENT_TYPE(1.50)[]; RCVD_COUNT_THREE(0.00)[3]; - DKIM_TRACE(0.00)[suse.de:+]; MX_GOOD(-0.01)[]; - RCPT_COUNT_SEVEN(0.00)[11]; NEURAL_HAM_SHORT(-0.20)[-1.000]; - FREEMAIL_TO(0.00)[suse.com,gmail.com]; FROM_EQ_ENVFROM(0.00)[]; - MIME_TRACE(0.00)[0:+]; BAYES_HAM(-0.11)[66.45%]; - ARC_NA(0.00)[]; - R_DKIM_ALLOW(-0.20)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; - RCVD_DKIM_ARC_DNSWL_HI(-1.00)[]; FROM_HAS_DN(0.00)[]; - FREEMAIL_ENVRCPT(0.00)[gmail.com,gmx.net]; - TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; - DWL_DNSWL_HI(-3.50)[suse.de:dkim]; - NEURAL_HAM_LONG(-1.00)[-1.000]; - DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; - MID_CONTAINS_FROM(1.00)[]; - DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:dkim,suse.de:email]; - FUZZY_BLOCKED(0.00)[rspamd.com]; - FREEMAIL_CC(0.00)[bedrocksystems.com,fitzsim.org,nxp.com,samsung.com,denx.de,gmx.net,broadcom.com,lists.denx.de,suse.de]; - RCVD_TLS_ALL(0.00)[]; - RCVD_IN_DNSWL_HI(-0.50)[2a07:de40:b281:104:10:150:64:97:from] -X-Rspamd-Queue-Id: AA225222AF -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 - -RPi5 have "brcm,bcm2712-sdhci" controller which is -handled by "sdhci-bcmstb" driver, so enable it. - -Signed-off-by: Ivan T. Ivanov ---- - configs/rpi_arm64_defconfig | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig -index f9dade18f6..1107fd11de 100644 ---- a/configs/rpi_arm64_defconfig -+++ b/configs/rpi_arm64_defconfig -@@ -33,6 +33,7 @@ CONFIG_BCM2835_GPIO=y - CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_SDMA=y - CONFIG_MMC_SDHCI_BCM2835=y -+CONFIG_MMC_SDHCI_BCMSTB=y - CONFIG_BCMGENET=y - CONFIG_PCI_BRCMSTB=y - CONFIG_PINCTRL=y - -From patchwork Mon Dec 18 21:03:41 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: "Ivan T. Ivanov" -X-Patchwork-Id: 1877655 -X-Patchwork-Delegate: pbrobinson@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -Authentication-Results: legolas.ozlabs.org; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 - header.s=susede2_rsa header.b=1by1WnE8; - dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=e64lBvSE; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.a=rsa-sha256 header.s=susede2_rsa header.b=1by1WnE8; - dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 - header.s=susede2_ed25519 header.b=e64lBvSE; - 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 4SvC5H05zfz1ydc - for ; Tue, 19 Dec 2023 08:05:07 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 2FBDE87650; - Mon, 18 Dec 2023 22:04:03 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (1024-bit key; - unprotected) header.d=suse.de header.i=@suse.de header.b="1by1WnE8"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="e64lBvSE"; - dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de - header.b="1by1WnE8"; - dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de - header.b="e64lBvSE"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 5D01C876A4; Mon, 18 Dec 2023 22:03: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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no - version=3.4.2 -Received: from smtp-out2.suse.de (smtp-out2.suse.de - [IPv6:2a07:de40:b251:101:10:150:64:2]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id C279687509 - for ; Mon, 18 Dec 2023 22:03:53 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=suse.de -Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=iivanov@suse.de -Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org - [IPv6:2a07:de40:b281:104:10:150:64:97]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by smtp-out2.suse.de (Postfix) with ESMTPS id 5507C1F6E6; - Mon, 18 Dec 2023 21:03:53 +0000 (UTC) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933433; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=HvUCimMaJ6xrQSSzUxalPI2wxDMnSXJwzMxo+y9/IFo=; - b=1by1WnE818KeyiiUhS0PLD7P0c+SSwVEcIdSwLVDSj6t8vZK9vpPNROZRCB9WlZtgGyGUU - JlRP9h5PowjYnh5OWRH6KbjZ19MG+Fu3rWcMQ+gET5ljKGaRAtFv2t0gDAtmZGheOkf5pW - KEDUZYxYceI7JKlWcX6QlIjexymId9w= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933433; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=HvUCimMaJ6xrQSSzUxalPI2wxDMnSXJwzMxo+y9/IFo=; - b=e64lBvSEDRhrUCpOd2eVMasuXC6PFNm5B1yOGeNNS+E2HREmMMam1YM4RObadB2tdux/T3 - Galw853x9Gm0wpDA== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_rsa; - t=1702933433; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=HvUCimMaJ6xrQSSzUxalPI2wxDMnSXJwzMxo+y9/IFo=; - b=1by1WnE818KeyiiUhS0PLD7P0c+SSwVEcIdSwLVDSj6t8vZK9vpPNROZRCB9WlZtgGyGUU - JlRP9h5PowjYnh5OWRH6KbjZ19MG+Fu3rWcMQ+gET5ljKGaRAtFv2t0gDAtmZGheOkf5pW - KEDUZYxYceI7JKlWcX6QlIjexymId9w= -DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; - s=susede2_ed25519; t=1702933433; - h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: - mime-version:mime-version: - content-transfer-encoding:content-transfer-encoding: - in-reply-to:in-reply-to:references:references; - bh=HvUCimMaJ6xrQSSzUxalPI2wxDMnSXJwzMxo+y9/IFo=; - b=e64lBvSEDRhrUCpOd2eVMasuXC6PFNm5B1yOGeNNS+E2HREmMMam1YM4RObadB2tdux/T3 - Galw853x9Gm0wpDA== -Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) - by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id BB17413C92; - Mon, 18 Dec 2023 21:03:52 +0000 (UTC) -Received: from dovecot-director2.suse.de ([10.150.64.162]) - by imap1.dmz-prg2.suse.org with ESMTPSA id 0JQfK7izgGUtZAAAD6G6ig - (envelope-from ); Mon, 18 Dec 2023 21:03:52 +0000 -From: "Ivan T. Ivanov" -To: Matthias Brugger , - Peter Robinson -Cc: Dmitry Malkin , - Thomas Fitzsimmons , Peng Fan , - Jaehoon Chung , Anatolij Gustschin , - wahrenst@gmx.net, florian.fainelli@broadcom.com, u-boot@lists.denx.de, - "Ivan T. Ivanov" -Subject: [PATCH v3 7/7] pci: pcie-brcmstb: Add bcm2712 PCIe controller support -Date: Mon, 18 Dec 2023 23:03:41 +0200 -Message-ID: <20231218210341.30073-8-iivanov@suse.de> -X-Mailer: git-send-email 2.43.0 -In-Reply-To: <20231218210341.30073-1-iivanov@suse.de> -References: <20231218210341.30073-1-iivanov@suse.de> -MIME-Version: 1.0 -X-Rspamd-Server: rspamd1.dmz-prg2.suse.org -X-Spamd-Bar: / -X-Spamd-Result: default: False [-0.31 / 50.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; - RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from]; - TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; - BROKEN_CONTENT_TYPE(1.50)[]; - R_RATELIMIT(0.00)[to_ip_from(RLccgikja4sxqnupiwsfdm9q1r)]; - RCVD_COUNT_THREE(0.00)[3]; DKIM_TRACE(0.00)[suse.de:+]; - MX_GOOD(-0.01)[]; RCPT_COUNT_SEVEN(0.00)[11]; - FREEMAIL_TO(0.00)[suse.com,gmail.com]; FROM_EQ_ENVFROM(0.00)[]; - MIME_TRACE(0.00)[0:+]; BAYES_HAM(-0.00)[27.73%]; - ARC_NA(0.00)[]; - R_DKIM_ALLOW(-0.20)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; - RCVD_DKIM_ARC_DNSWL_HI(-1.00)[]; FROM_HAS_DN(0.00)[]; - FREEMAIL_ENVRCPT(0.00)[gmail.com,gmx.net]; - TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; - DWL_DNSWL_HI(-3.50)[suse.de:dkim]; - DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; - MID_CONTAINS_FROM(1.00)[]; - DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:dkim,suse.de:email]; - FUZZY_BLOCKED(0.00)[rspamd.com]; - FREEMAIL_CC(0.00)[bedrocksystems.com,fitzsim.org,nxp.com,samsung.com,denx.de,gmx.net,broadcom.com,lists.denx.de,suse.de]; - RCVD_TLS_ALL(0.00)[]; - RCVD_IN_DNSWL_HI(-0.50)[2a07:de40:b281:104:10:150:64:97:from] -Authentication-Results: smtp-out2.suse.de; - dkim=pass header.d=suse.de header.s=susede2_rsa header.b=1by1WnE8; - dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=e64lBvSE -X-Rspamd-Queue-Id: 5507C1F6E6 -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 - -PCIe controller have minor register map difference compared -to bcm2711 variant. Handle this using device specific register -offset. - -Signed-off-by: Ivan T. Ivanov ---- - drivers/pci/pcie_brcmstb.c | 23 +++++++++++++++++++---- - 1 file changed, 19 insertions(+), 4 deletions(-) - -diff --git a/drivers/pci/pcie_brcmstb.c b/drivers/pci/pcie_brcmstb.c -index cd45f0bee9..d63e715b2e 100644 ---- a/drivers/pci/pcie_brcmstb.c -+++ b/drivers/pci/pcie_brcmstb.c -@@ -90,7 +90,6 @@ - #define PCIE_MEM_WIN0_LIMIT_HI(win) \ - PCIE_MISC_CPU_2_PCIE_MEM_WIN0_LIMIT_HI + ((win) * 8) - --#define PCIE_MISC_HARD_PCIE_HARD_DEBUG 0x4204 - #define PCIE_HARD_DEBUG_SERDES_IDDQ_MASK 0x08000000 - - #define PCIE_MSI_INTR2_CLR 0x4508 -@@ -131,6 +130,10 @@ - #define SSC_STATUS_PLL_LOCK_MASK 0x800 - #define SSC_STATUS_PLL_LOCK_SHIFT 11 - -+struct pcie_cfg_data { -+ unsigned long hard_debug_offs; -+}; -+ - /** - * struct brcm_pcie - the PCIe controller state - * @base: Base address of memory mapped IO registers of the controller -@@ -141,6 +144,7 @@ - struct brcm_pcie { - void __iomem *base; - -+ struct pcie_cfg_data *cfg; - int gen; - bool ssc; - }; -@@ -458,7 +462,7 @@ static int brcm_pcie_probe(struct udevice *dev) - /* Take the bridge out of reset */ - clrbits_le32(base + PCIE_RGR1_SW_INIT_1, RGR1_SW_INIT_1_INIT_MASK); - -- clrbits_le32(base + PCIE_MISC_HARD_PCIE_HARD_DEBUG, -+ clrbits_le32(base + pcie->cfg->hard_debug_offs, - PCIE_HARD_DEBUG_SERDES_IDDQ_MASK); - - /* Wait for SerDes to be stable */ -@@ -599,7 +603,7 @@ static int brcm_pcie_remove(struct udevice *dev) - setbits_le32(base + PCIE_RGR1_SW_INIT_1, RGR1_SW_INIT_1_PERST_MASK); - - /* Turn off SerDes */ -- setbits_le32(base + PCIE_MISC_HARD_PCIE_HARD_DEBUG, -+ setbits_le32(base + pcie->cfg->hard_debug_offs, - PCIE_HARD_DEBUG_SERDES_IDDQ_MASK); - - /* Shutdown bridge */ -@@ -620,6 +624,8 @@ static int brcm_pcie_of_to_plat(struct udevice *dev) - if (!pcie->base) - return -EINVAL; - -+ pcie->cfg = (struct pcie_cfg_data *)dev_get_driver_data(dev); -+ - pcie->ssc = ofnode_read_bool(dn, "brcm,enable-ssc"); - - ret = ofnode_read_u32(dn, "max-link-speed", &max_link_speed); -@@ -636,8 +642,17 @@ static const struct dm_pci_ops brcm_pcie_ops = { - .write_config = brcm_pcie_write_config, - }; - -+static const struct pcie_cfg_data bcm2711_cfg = { -+ .hard_debug_offs = 0x4204 -+}; -+ -+static const struct pcie_cfg_data bcm2712_cfg = { -+ .hard_debug_offs = 0x4304 -+}; -+ - static const struct udevice_id brcm_pcie_ids[] = { -- { .compatible = "brcm,bcm2711-pcie" }, -+ { .compatible = "brcm,bcm2711-pcie", .data = (ulong)&bcm2711_cfg }, -+ { .compatible = "brcm,bcm2712-pcie", .data = (ulong)&bcm2712_cfg }, - { } - }; - diff --git a/sources b/sources index 8f50a6d..be81335 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2024.04-rc2.tar.bz2) = f5c6d6a37ce6b34bd1ab2cddd5d0cacddfd19b5345934731df3a7ed454a3895ad2d14acbdb2e1b922b9571778e50b54cb7612b1798a04dfb991365d3344cd865 +SHA512 (u-boot-2024.04-rc3.tar.bz2) = 75f36d57330e771dd3757c49d576b3a7f1c933dad9a102f22d2438286a763f0ec7deae863a97559cac48be8fc736b68a5292b4383d45178b111bd08134352e38 diff --git a/uboot-tools.spec b/uboot-tools.spec index eb2f4a3..4d006c4 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc2 +%global candidate rc3 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2024.04 -Release: 0.2%{?candidate:.%{candidate}}%{?dist} +Release: 0.3%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ @@ -17,17 +17,23 @@ ExcludeArch: s390x Source0: https://ftp.denx.de/pub/u-boot/u-boot-%{version}%{?candidate:-%{candidate}}.tar.bz2 Source1: aarch64-boards +# This is now legacy, most devices use bootflow, we keep this for the laggards Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch -Patch2: disable-VBE-by-default.patch +# Identify VFAT partitions as ESP, allows EFI setvar on our images +Patch2: uefi-Add-all-options-for-EFI-System-Partitions.patch +# New function to find fdt for loading from disk +#Patch3: +# Fedora patches to enable/disable features +Patch4: disable-VBE-by-default.patch Patch5: enable-bootmenu-by-default.patch -Patch7: Add-video-damage-tracking.patch +# Should be upstream but it's taking time +Patch6: Add-video-damage-tracking.patch # Board fixes and enablement # RPi - uses RPI firmware device tree for HAT support Patch10: rpi-Switch-to-OF_HAS_PRIOR_STAGE-by-default.patch # Rockchips improvements Patch11: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch -#Patch12: 0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch BuildRequires: bc BuildRequires: bison @@ -87,22 +93,27 @@ do mkdir builds/$(echo $board)/ # ATF selection, needs improving, suggestions of ATF SoC to Board matrix welcome - sun50i=(a64-olinuxino amarula_a64_relic bananapi_m2_plus_h5 bananapi_m64 libretech_all_h3_cc_h5 nanopi_a64 nanopi_neo2 nanopi_neo_plus2 orangepi_pc2 orangepi_prime orangepi_win orangepi_zero_plus orangepi_zero_plus2 pine64-lts pine64_plus pinebook pinephone pinetab sopine_baseboard teres_i) + sun50i=(a64-olinuxino a64-olinuxino-emmc amarula_a64_relic bananapi_m2_plus_h5 bananapi_m64 libretech_all_h3_cc_h5 nanopi_a64 nanopi_neo2 nanopi_neo_plus2 oceanic_5205_5inmfd orangepi_pc2 orangepi_prime orangepi_win orangepi_zero_plus orangepi_zero_plus2 pine64-lts pine64_plus pinebook pinephone pinetab sopine_baseboard teres_i) if [[ " ${sun50i[*]} " == *" $board "* ]]; then echo "Board: $board using sun50i_a64" - cp /usr/share/arm-trusted-firmware/sun50i_a64/* builds/$(echo $board)/ + cp /usr/share/arm-trusted-firmware/sun50i_a64/bl31.bin builds/$(echo $board)/atf-bl31 fi - sun50h6=(beelink_gs1 orangepi_3 orangepi_lite2 orangepi_one_plus orangepi_zero2 pine_h64 tanix_tx6) + sun50h6=(beelink_gs1 emlid_neutis_n5_devboard orangepi_3 orangepi_lite2 orangepi_one_plus pine_h64 tanix_tx6) if [[ " ${sun50h6[*]} " == *" $board "* ]]; then echo "Board: $board using sun50i_h6" - cp /usr/share/arm-trusted-firmware/sun50i_h6/* builds/$(echo $board)/ + cp /usr/share/arm-trusted-firmware/sun50i_h6/bl31.bin builds/$(echo $board)/atf-bl31 fi - rk3328=(evb-rk3328 nanopi-r2s-rk3328 rock64-rk3328 rock-pi-e-rk3328 roc-cc-rk3328) + sun50i_h616=(orangepi_zero2 orangepi_zero3 transpeed-8k618-t x96_mate) + if [[ " ${sun50i_h616[*]} " == *" $board "* ]]; then + echo "Board: $board using sun50i_h616" + cp /usr/share/arm-trusted-firmware/sun50i_h616/bl31.bin builds/$(echo $board)/atf-bl31 + fi + rk3328=(evb-rk3328 nanopi-r2c-plus-rk3328 nanopi-r2c-rk3328 nanopi-r2s-rk3328 orangepi-r1-plus-lts-rk3328 orangepi-r1-plus-rk3328 roc-cc-rk3328 rock64-rk3328 rock-pi-e-rk3328) if [[ " ${rk3328[*]} " == *" $board "* ]]; then echo "Board: $board using rk3328" cp /usr/share/arm-trusted-firmware/rk3328/bl31.elf builds/$(echo $board)/atf-bl31 fi - rk3399=(evb-rk3399 ficus-rk3399 firefly-rk3399 khadas-edge-captain-rk3399 khadas-edge-rk3399 khadas-edge-v-rk3399 leez-rk3399 nanopc-t4-rk3399 nanopi-m4-2gb-rk3399 nanopi-m4b-rk3399 nanopi-m4-rk3399 nanopi-neo4-rk3399 nanopi-r4s-rk3399 orangepi-rk3399 pinebook-pro-rk3399 pinephone-pro-rk3399 puma-rk3399 rock960-rk3399 rock-pi-4c-rk3399 rock-pi-4-rk3399 rock-pi-n10-rk3399pro rockpro64-rk3399 roc-pc-mezzanine-rk3399 roc-pc-rk3399 eaidk-610-rk3399) + rk3399=(eaidk-610-rk3399 evb-rk3399 ficus-rk3399 firefly-rk3399 khadas-edge-captain-rk3399 khadas-edge-rk3399 khadas-edge-v-rk3399 leez-rk3399 nanopc-t4-rk3399 nanopi-m4-2gb-rk3399 nanopi-m4b-rk3399 nanopi-m4-rk3399 nanopi-neo4-rk3399 nanopi-r4s-rk3399 orangepi-rk3399 pinebook-pro-rk3399 pinephone-pro-rk3399 puma-rk3399 rock960-rk3399 rock-pi-4c-rk3399 rock-pi-4-rk3399 rock-pi-n10-rk3399pro rockpro64-rk3399 roc-pc-mezzanine-rk3399 roc-pc-rk3399) if [[ " ${rk3399[*]} " == *" $board "* ]]; then echo "Board: $board using rk3399" cp /usr/share/arm-trusted-firmware/rk3399/* builds/$(echo $board)/ @@ -113,17 +124,6 @@ do BINMAN_ALLOW_MISSING=1 make $(echo $board)_defconfig O=builds/$(echo $board)/ BINMAN_ALLOW_MISSING=1 %make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" O=builds/$(echo $board)/ - # build spi images for rockchip boards with SPI flash - rkspi=(rock64-rk3328) - if [[ " ${rkspi[*]} " == *" $board "* ]]; then - echo "Board: $board with SPI flash" - builds/$(echo $board)/tools/mkimage -n rk3328 -T rkspi -d builds/$(echo $board)/tpl/u-boot-tpl.bin:builds/$(echo $board)/spl/u-boot-spl.bin builds/$(echo $board)/idbloader.spi - fi - rkspi=(evb-rk3399 khadas-edge-captain-rk3399 khadas-edge-rk3399 khadas-edge-v-rk3399 nanopc-t4-rk3399 pinebook-pro-rk3399 pinephone-pro-rk3399 rockpro64-rk3399 roc-pc-mezzanine-rk3399 roc-pc-rk3399) - if [[ " ${rkspi[*]} " == *" $board "* ]]; then - echo "Board: $board with SPI flash" - builds/$(echo $board)/tools/mkimage -n rk3399 -T rkspi -d builds/$(echo $board)/tpl/u-boot-tpl.bin:builds/$(echo $board)/spl/u-boot-spl.bin builds/$(echo $board)/idbloader.spi - fi done %endif @@ -138,39 +138,24 @@ mkdir -p %{buildroot}%{_datadir}/uboot/ %ifarch aarch64 for board in $(ls builds) do - mkdir -p %{buildroot}%{_datadir}/uboot/$(echo $board)/ - for file in u-boot.bin u-boot.dtb u-boot.img u-boot-dtb.img u-boot.itb u-boot-sunxi-with-spl.bin u-boot-rockchip.bin idbloader.img idbloader.spi spl/boot.bin spl/sunxi-spl.bin + for file in u-boot.bin u-boot.img u-boot-dtb.img u-boot.itb u-boot-sunxi-with-spl.bin u-boot-rockchip.bin idbloader.img idbloader-spi.img spl/boot.bin do if [ -f builds/$(echo $board)/$(echo $file) ]; then - install -p -m 0644 builds/$(echo $board)/$(echo $file) %{buildroot}%{_datadir}/uboot/$(echo $board)/ + install -pD -m 0644 builds/$(echo $board)/$(echo $file) %{buildroot}%{_datadir}/uboot/$(echo $board)/$(echo $file) fi done done -# For Apple M1 we also need the nodtb variant -install -p -m 0644 builds/apple_m1/u-boot-nodtb.bin %{buildroot}%{_datadir}/uboot/apple_m1/u-boot-nodtb.bin -%endif +# For Apple M-series we also need the nodtb variant +install -pD -m 0644 builds/apple_m1/u-boot-nodtb.bin %{buildroot}%{_datadir}/uboot/apple_m1/u-boot-nodtb.bin # Bit of a hack to remove binaries we don't use as they're large -%ifarch aarch64 for board in $(ls builds) do rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.dtb if [ -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot-sunxi-with-spl.bin ]; then rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot{,-dtb}.* - fi - if [ -f %{buildroot}%{_datadir}/uboot/$(echo $board)/MLO ]; then - rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.bin - fi - if [ -f %{buildroot}%{_datadir}/uboot/$(echo $board)/SPL ]; then - rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.bin - fi - if [ -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.imx ]; then - rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.bin - fi - if [ -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot-spl.kwb ]; then - rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.* - rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot-spl.bin + rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/sunxi-spl.bin fi if [ -f %{buildroot}%{_datadir}/uboot/$(echo $board)/idbloader.img ]; then rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.bin @@ -194,16 +179,23 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %doc doc/develop/uefi doc/usage doc/arch/arm64.rst %{_bindir}/* %{_mandir}/man1/mkimage.1* -%dir %{_datadir}/uboot/ %if %{with toolsonly} %ifarch aarch64 %files -n uboot-images-armv8 +%dir %{_datadir}/uboot/ %{_datadir}/uboot/* %endif %endif %changelog +* Thu Feb 29 2024 Peter Robinson - 1:2024.04-0.3.rc3 +- Update to 2024.04 RC3 +- Enable a number of new upstream devices +- Upstream now builds Rockchip SPI artifacts +- Various cleanups +- Fix ESP partition detection to enable EFI vars + * Wed Feb 14 2024 Peter Robinson - 1:2024.04-0.2.rc2 - Update to 2024.04 RC2 diff --git a/uefi-Add-all-options-for-EFI-System-Partitions.patch b/uefi-Add-all-options-for-EFI-System-Partitions.patch new file mode 100644 index 0000000..22c5bcc --- /dev/null +++ b/uefi-Add-all-options-for-EFI-System-Partitions.patch @@ -0,0 +1,36 @@ +From 7ce45304053f31afaea6b80305aaee164c2e260a Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Wed, 21 Feb 2024 14:43:16 +0000 +Subject: [PATCH] disk: dos: Add all options for EFI System Partitions + +The EFI spec states that the ESP can be any of FAT12/16/32 but for +compatibility doesn't necssarily require the partition to be the +EFI partition table ID of 0xef. A number of arm devices will not +find their firmware on a FAT partition with an ID of 0xef so also +allow the original FAT12/16/32 partition IDs as they are also +permissable for an ESP. + +Signed-off-by: Peter Robinson +--- + disk/part_dos.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/disk/part_dos.c b/disk/part_dos.c +index 567ead7511d..303eb1d13ee 100644 +--- a/disk/part_dos.c ++++ b/disk/part_dos.c +@@ -40,6 +40,12 @@ static int get_bootable(dos_partition_t *p) + { + int ret = 0; + ++ if (p->sys_ind == 0x1) ++ ret |= PART_EFI_SYSTEM_PARTITION; ++ if (p->sys_ind == 0x6) ++ ret |= PART_EFI_SYSTEM_PARTITION; ++ if (p->sys_ind == 0x0b) ++ ret |= PART_EFI_SYSTEM_PARTITION; + if (p->sys_ind == 0xef) + ret |= PART_EFI_SYSTEM_PARTITION; + if (p->boot_ind == 0x80) +-- +2.43.1 From 7f2aed2f989431930d981e2498685661e611eb99 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 12 Mar 2024 00:18:30 +0000 Subject: [PATCH 171/271] 2024.04 RC4, upstream fixes --- sources | 2 +- uboot-tools.spec | 10 +- ...ll-options-for-EFI-System-Partitions.patch | 51 +++-- ..._location-for-finding-the-DT-on-disk.patch | 180 ++++++++++++++++++ 4 files changed, 224 insertions(+), 19 deletions(-) create mode 100644 uefi-initial-find_fdt_location-for-finding-the-DT-on-disk.patch diff --git a/sources b/sources index be81335..0b96c52 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2024.04-rc3.tar.bz2) = 75f36d57330e771dd3757c49d576b3a7f1c933dad9a102f22d2438286a763f0ec7deae863a97559cac48be8fc736b68a5292b4383d45178b111bd08134352e38 +SHA512 (u-boot-2024.04-rc4.tar.bz2) = 4a546eb790d54c9aadd423888baa5c909249afeedfd71f85c8b424421c08463b0e65f3addfc2d00f4a38fb56d8051ed70c8368d49a89bd33ec69773474d4d62d diff --git a/uboot-tools.spec b/uboot-tools.spec index 4d006c4..de80725 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc3 +%global candidate rc4 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2024.04 -Release: 0.3%{?candidate:.%{candidate}}%{?dist} +Release: 0.4%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ @@ -22,7 +22,7 @@ Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch # Identify VFAT partitions as ESP, allows EFI setvar on our images Patch2: uefi-Add-all-options-for-EFI-System-Partitions.patch # New function to find fdt for loading from disk -#Patch3: +Patch3: uefi-initial-find_fdt_location-for-finding-the-DT-on-disk.patch # Fedora patches to enable/disable features Patch4: disable-VBE-by-default.patch Patch5: enable-bootmenu-by-default.patch @@ -189,6 +189,10 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Tue Mar 12 2024 Peter Robinson - 1:2024.04-0.4.rc4 +- Update to 2024.04 RC4 +- Initial fix for loading DT off /boot (rhbz 2247873) + * Thu Feb 29 2024 Peter Robinson - 1:2024.04-0.3.rc3 - Update to 2024.04 RC3 - Enable a number of new upstream devices diff --git a/uefi-Add-all-options-for-EFI-System-Partitions.patch b/uefi-Add-all-options-for-EFI-System-Partitions.patch index 22c5bcc..3bf1ec8 100644 --- a/uefi-Add-all-options-for-EFI-System-Partitions.patch +++ b/uefi-Add-all-options-for-EFI-System-Partitions.patch @@ -1,7 +1,7 @@ -From 7ce45304053f31afaea6b80305aaee164c2e260a Mon Sep 17 00:00:00 2001 +From 86782e882e9542f5f402e00cd87efb36ad0552d3 Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Wed, 21 Feb 2024 14:43:16 +0000 -Subject: [PATCH] disk: dos: Add all options for EFI System Partitions +Date: Sat, 2 Mar 2024 11:17:42 +0000 +Subject: [PATCH v4] disk: dos: Add all options for EFI System Partitions The EFI spec states that the ESP can be any of FAT12/16/32 but for compatibility doesn't necssarily require the partition to be the @@ -12,25 +12,46 @@ permissable for an ESP. Signed-off-by: Peter Robinson --- - disk/part_dos.c | 6 ++++++ - 1 file changed, 6 insertions(+) + +v2: +- Add 0x0c option +- Make hex constants consistent +- Move from if to switch statement +v3: +- Fix switch brain fart +v4: +- Drop boot_ind out of switch + + disk/part_dos.c | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/disk/part_dos.c b/disk/part_dos.c -index 567ead7511d..303eb1d13ee 100644 +index 567ead7511d..a35181dff4f 100644 --- a/disk/part_dos.c +++ b/disk/part_dos.c -@@ -40,6 +40,12 @@ static int get_bootable(dos_partition_t *p) +@@ -40,10 +40,21 @@ static int get_bootable(dos_partition_t *p) { int ret = 0; -+ if (p->sys_ind == 0x1) -+ ret |= PART_EFI_SYSTEM_PARTITION; -+ if (p->sys_ind == 0x6) -+ ret |= PART_EFI_SYSTEM_PARTITION; -+ if (p->sys_ind == 0x0b) -+ ret |= PART_EFI_SYSTEM_PARTITION; - if (p->sys_ind == 0xef) +- if (p->sys_ind == 0xef) ++ switch (p->sys_ind) { ++ case 0x01: ++ case 0x06: ++ case 0x0b: ++ case 0x0c: ++ case 0xef: ret |= PART_EFI_SYSTEM_PARTITION; ++ break; ++ default: ++ break; ++ } ++ if (p->boot_ind == 0x80) + ret |= PART_BOOTABLE; ++ + return ret; + } + -- -2.43.1 +2.44.0 + diff --git a/uefi-initial-find_fdt_location-for-finding-the-DT-on-disk.patch b/uefi-initial-find_fdt_location-for-finding-the-DT-on-disk.patch new file mode 100644 index 0000000..e1937f8 --- /dev/null +++ b/uefi-initial-find_fdt_location-for-finding-the-DT-on-disk.patch @@ -0,0 +1,180 @@ +From 47bf70fe95dd3883c08af3478f29564476f0950e Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Tue, 12 Mar 2024 00:05:23 +0000 +Subject: [PATCH] initial find_fdt_location for finding the DT on disk + +The old distro boot looked for a DT on the first boot partition +in the /dtb or /dtb/current directories, and Fedora extended this +to look not just on the boot partition but all the partitions on +that disk. + +The new ways of booting, both bootstd and bootefi bootmgr processes +don't properly look for those options. This provides a function +to search for the DTB on disk so that if the other DT mechanisms +don't work this will look for one on disk to provide a working DT +so that devices will continue to work as they did previously. + +Signed-off-by: Peter Robinson +--- + + cmd/bootefi.c | 1 + + cmd/bootmenu.c | 5 +++ + include/efi_loader.h | 2 + + lib/efi_loader/efi_helper.c | 82 ++++++++++++++++++++++++++++++++++++- + 4 files changed, 89 insertions(+), 1 deletion(-) + +diff --git a/cmd/bootefi.c b/cmd/bootefi.c +index 9cf9027bf40..8b6194a8702 100644 +--- a/cmd/bootefi.c ++++ b/cmd/bootefi.c +@@ -144,6 +144,7 @@ static int do_bootefi(struct cmd_tbl *cmdtp, int flag, int argc, + if (argc > 2) { + uintptr_t fdt_addr; + ++ /* Do we need to run find_fdt_location here?*/ + fdt_addr = hextoul(argv[2], NULL); + fdt = map_sysmem(fdt_addr, 0); + } else { +diff --git a/cmd/bootmenu.c b/cmd/bootmenu.c +index 78184fccab2..48368c8d42e 100644 +--- a/cmd/bootmenu.c ++++ b/cmd/bootmenu.c +@@ -448,6 +448,11 @@ static void handle_uefi_bootnext(void) + u16 bootnext; + efi_status_t ret; + efi_uintn_t size; ++ const char *fdt_opt; ++ ++ /* Find the DTB on disk */ ++ log_debug("We will load the DTB\n"); ++ fdt_opt = find_fdt_location(); + + /* Initialize EFI drivers */ + ret = efi_init_obj_list(); +diff --git a/include/efi_loader.h b/include/efi_loader.h +index 7daca0afba2..a969378ff2f 100644 +--- a/include/efi_loader.h ++++ b/include/efi_loader.h +@@ -524,6 +524,8 @@ struct efi_register_notify_event { + struct list_head handles; + }; + ++/* Find the FDT on any partition */ ++char *find_fdt_location(void); + /* called at pre-initialization */ + int efi_init_early(void); + /* Initialize efi execution environment */ +diff --git a/lib/efi_loader/efi_helper.c b/lib/efi_loader/efi_helper.c +index 5dd9cc876e4..59bdb2d030c 100644 +--- a/lib/efi_loader/efi_helper.c ++++ b/lib/efi_loader/efi_helper.c +@@ -12,6 +12,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -24,6 +25,76 @@ + const efi_guid_t efi_lf2_initrd_guid = EFI_INITRD_MEDIA_GUID; + #endif + ++/* We need to pass a blk device in and return a location, or a loaded DT */ ++char *find_fdt_location(void) ++{ ++ const char *fdt_filename; ++ /* FIXME: dynamic size */ ++ char fdt_fullpath[60]; ++ const char *prefix; ++ struct udevice *blk; ++ /* FIXME: Fedora really only cares about first 2*/ ++ int MAX_PART = 8; ++ int part; ++ struct disk_partition info; ++ int ret; ++ int retfdt; ++ int retload; ++ loff_t fdtsize; ++ ulong pbraddr; ++ loff_t len_read; ++ ++ /* step one logic: we have the DT name we're hunting for */ ++ fdt_filename = env_get("fdtfile"); ++ if (fdt_filename) { ++ log_debug("FFL: We're looking for the DTB now!: %s\n", fdt_filename); ++ ++ /* probe all block disks to search for fdt */ ++ uclass_foreach_dev_probe(UCLASS_BLK, blk) { ++ log_debug("FFL: dev name: %s\n", blk->name); ++ struct blk_desc *desc; ++ desc = dev_get_uclass_plat(blk); ++ /* we should get a partition count here for looping */ ++ /* For loop for each partition */ ++ /* Need to also deal with zero part whole disk - part_get_info_whole_disk */ ++ for (part = 1; part <= MAX_PART; part++) { ++ log_debug("FFL: part num: %d\n", part); ++ ret = part_get_info(desc, part, &info); ++ /* if we have partition check it for DT */ ++ if (ret) { ++ log_debug("FFL: we have a partition\n"); ++ /* we should have a case/for prefix in =/ /dtb/ /dtb/current/ */ ++ /* but for now we hard code if for Fedora */ ++ prefix = "/dtb"; ++ snprintf(fdt_fullpath, sizeof(fdt_fullpath), "%s/%s", prefix, fdt_filename); ++ log_debug("FFL: full name: %s\n", fdt_fullpath); ++ /* search for DT on partition and either find and exit or continue */ ++ retfdt = fs_size(fdt_fullpath, &fdtsize); ++ if (retfdt) { ++ /* we have a fdt!*/ ++ log_debug("FFL: we have found a DT on disk\n"); ++ retload = fs_read(fdt_fullpath, pbraddr, 0, 0, &len_read); ++ if (retload) { ++ log_debug("FFL: we have a loaded DT, size %ld we can return\n", sizeof(len_read)); ++ log_info("Found DTB: %s\n", fdt_filename); ++ const char *fdt_opt; ++ fdt_opt = env_get("fdt_addr"); ++ return fdt_opt; ++ } ++ } ++ } else { ++ log_debug("FFL: no partition\n"); ++ } ++ } ++ } ++ } else { ++ log_debug("FFL: fdt_filename not defined!!\n"); ++ } ++ ++ /* We didn't find a FDT */ ++ return NULL; ++} ++ + /** + * efi_create_current_boot_var() - Return Boot#### name were #### is replaced by + * the value of BootCurrent +@@ -432,11 +503,20 @@ efi_status_t efi_install_fdt(void *fdt) + /* Look for device tree that is already installed */ + if (efi_get_configuration_table(&efi_guid_fdt)) + return EFI_SUCCESS; ++ /* Check if there is device tree loaded from disk */ ++ fdt_opt = find_fdt_location(); ++ if (fdt_opt) ++ log_debug("Found DTB: insert file name here\n"); + /* Check if there is a hardware device tree */ +- fdt_opt = env_get("fdt_addr"); ++ if (!fdt_opt) { ++ fdt_opt = env_get("fdt_addr"); ++ if (fdt_opt) ++ log_info("Found DTB: Prior firmware\n"); ++ } + /* Use our own device tree as fallback */ + if (!fdt_opt) { + fdt_opt = env_get("fdtcontroladdr"); ++ log_debug("Using DT from U-Boot\n"); + if (!fdt_opt) { + log_err("ERROR: need device tree\n"); + return EFI_NOT_FOUND; +-- +2.44.0 + From 59b16b49885d6fb573d55f741df8ad7330b36361 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 13 Mar 2024 19:18:40 +0000 Subject: [PATCH 172/271] Fixes for Rockchip rk3399 autoboot --- ...hip-Enable-preboot-start-for-pci-usb.patch | 166 ++++++++++++++++++ uboot-tools.spec | 8 +- 2 files changed, 172 insertions(+), 2 deletions(-) create mode 100644 rockchip-Enable-preboot-start-for-pci-usb.patch diff --git a/rockchip-Enable-preboot-start-for-pci-usb.patch b/rockchip-Enable-preboot-start-for-pci-usb.patch new file mode 100644 index 0000000..408609e --- /dev/null +++ b/rockchip-Enable-preboot-start-for-pci-usb.patch @@ -0,0 +1,166 @@ +From 367b3afc360e6fc92bd4cdca643ed2e4d928472d Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Wed, 13 Mar 2024 19:14:50 +0000 +Subject: [PATCH] rockchip: Enable preboot start for pci/usb + +Enable the preboot so nvme works OOTB + +Signed-off-by: Peter Robinson +--- + configs/firefly-rk3399_defconfig | 2 ++ + configs/nanopc-t4-rk3399_defconfig | 2 ++ + configs/pinebook-pro-rk3399_defconfig | 1 + + configs/roc-pc-mezzanine-rk3399_defconfig | 2 ++ + configs/rock-4c-plus-rk3399_defconfig | 2 ++ + configs/rock-4se-rk3399_defconfig | 2 ++ + configs/rock-pi-4-rk3399_defconfig | 2 ++ + configs/rock-pi-4c-rk3399_defconfig | 2 ++ + configs/rock-pi-n10-rk3399pro_defconfig | 2 ++ + configs/rock960-rk3399_defconfig | 1 + + configs/rockpro64-rk3399_defconfig | 2 ++ + 11 files changed, 20 insertions(+) + +diff --git a/configs/firefly-rk3399_defconfig b/configs/firefly-rk3399_defconfig +index b7c8e95b7b8..1e33083c138 100644 +--- a/configs/firefly-rk3399_defconfig ++++ b/configs/firefly-rk3399_defconfig +@@ -18,6 +18,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0x800800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-firefly.dtb" + CONFIG_DISPLAY_BOARDINFO_LATE=y + CONFIG_MISC_INIT_R=y +diff --git a/configs/nanopc-t4-rk3399_defconfig b/configs/nanopc-t4-rk3399_defconfig +index c18e7b1bd16..e9a18eb3e9f 100644 +--- a/configs/nanopc-t4-rk3399_defconfig ++++ b/configs/nanopc-t4-rk3399_defconfig +@@ -17,6 +17,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0x800800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-nanopc-t4.dtb" + CONFIG_DISPLAY_BOARDINFO_LATE=y + CONFIG_SPL_MAX_SIZE=0x2e000 +diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig +index de357415fbe..4168adb1935 100644 +--- a/configs/pinebook-pro-rk3399_defconfig ++++ b/configs/pinebook-pro-rk3399_defconfig +@@ -24,6 +24,7 @@ CONFIG_PCI=y + CONFIG_DEBUG_UART=y + CONFIG_BOOTDELAY=3 + CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-pinebook-pro.dtb" + CONFIG_DISPLAY_BOARDINFO_LATE=y + CONFIG_MISC_INIT_R=y +diff --git a/configs/roc-pc-mezzanine-rk3399_defconfig b/configs/roc-pc-mezzanine-rk3399_defconfig +index de6539bedf4..61c6182d27e 100644 +--- a/configs/roc-pc-mezzanine-rk3399_defconfig ++++ b/configs/roc-pc-mezzanine-rk3399_defconfig +@@ -23,6 +23,8 @@ CONFIG_SPL_SPI=y + CONFIG_SYS_LOAD_ADDR=0x800800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + # CONFIG_ANDROID_BOOT_IMAGE is not set + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-roc-pc-mezzanine.dtb" + CONFIG_DISPLAY_BOARDINFO_LATE=y +diff --git a/configs/rock-4c-plus-rk3399_defconfig b/configs/rock-4c-plus-rk3399_defconfig +index 18525c8bf50..89e9f69eb63 100644 +--- a/configs/rock-4c-plus-rk3399_defconfig ++++ b/configs/rock-4c-plus-rk3399_defconfig +@@ -18,6 +18,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0x800800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + # CONFIG_ANDROID_BOOT_IMAGE is not set + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rock-4c-plus.dtb" + CONFIG_DISPLAY_BOARDINFO_LATE=y +diff --git a/configs/rock-4se-rk3399_defconfig b/configs/rock-4se-rk3399_defconfig +index 171de23ec8f..d2769a2f516 100644 +--- a/configs/rock-4se-rk3399_defconfig ++++ b/configs/rock-4se-rk3399_defconfig +@@ -18,6 +18,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0x800800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + # CONFIG_ANDROID_BOOT_IMAGE is not set + CONFIG_SPL_FIT_SIGNATURE=y + CONFIG_LEGACY_IMAGE_FORMAT=y +diff --git a/configs/rock-pi-4-rk3399_defconfig b/configs/rock-pi-4-rk3399_defconfig +index 83fc4ad7dab..24ca614fe5a 100644 +--- a/configs/rock-pi-4-rk3399_defconfig ++++ b/configs/rock-pi-4-rk3399_defconfig +@@ -18,6 +18,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0x800800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + # CONFIG_ANDROID_BOOT_IMAGE is not set + CONFIG_SPL_FIT_SIGNATURE=y + CONFIG_LEGACY_IMAGE_FORMAT=y +diff --git a/configs/rock-pi-4c-rk3399_defconfig b/configs/rock-pi-4c-rk3399_defconfig +index 089344097e0..83c2cfba157 100644 +--- a/configs/rock-pi-4c-rk3399_defconfig ++++ b/configs/rock-pi-4c-rk3399_defconfig +@@ -18,6 +18,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0x800800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + # CONFIG_ANDROID_BOOT_IMAGE is not set + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rock-pi-4c.dtb" + CONFIG_DISPLAY_BOARDINFO_LATE=y +diff --git a/configs/rock-pi-n10-rk3399pro_defconfig b/configs/rock-pi-n10-rk3399pro_defconfig +index dc4b3b40380..db34bc70a22 100644 +--- a/configs/rock-pi-n10-rk3399pro_defconfig ++++ b/configs/rock-pi-n10-rk3399pro_defconfig +@@ -18,6 +18,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0x800800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + # CONFIG_ANDROID_BOOT_IMAGE is not set + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399pro-rock-pi-n10.dtb" + # CONFIG_CONSOLE_MUX is not set +diff --git a/configs/rock960-rk3399_defconfig b/configs/rock960-rk3399_defconfig +index b93dda56593..6d1b352a855 100644 +--- a/configs/rock960-rk3399_defconfig ++++ b/configs/rock960-rk3399_defconfig +@@ -17,6 +17,7 @@ CONFIG_SYS_LOAD_ADDR=0x800800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y + CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rock960.dtb" + CONFIG_SYS_PBSIZE=1052 + CONFIG_DISPLAY_BOARDINFO_LATE=y +diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig +index 711541f8462..8c1ea1a0b63 100644 +--- a/configs/rockpro64-rk3399_defconfig ++++ b/configs/rockpro64-rk3399_defconfig +@@ -21,6 +21,8 @@ CONFIG_SPL_SPI=y + CONFIG_SYS_LOAD_ADDR=0x800800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_SPL_FIT_SIGNATURE=y + CONFIG_LEGACY_IMAGE_FORMAT=y + CONFIG_BOOTSTAGE=y +-- +2.44.0 + diff --git a/uboot-tools.spec b/uboot-tools.spec index de80725..adff3dd 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2024.04 -Release: 0.4%{?candidate:.%{candidate}}%{?dist} +Release: 0.5%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ @@ -34,6 +34,7 @@ Patch6: Add-video-damage-tracking.patch Patch10: rpi-Switch-to-OF_HAS_PRIOR_STAGE-by-default.patch # Rockchips improvements Patch11: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch +Patch12: rockchip-Enable-preboot-start-for-pci-usb.patch BuildRequires: bc BuildRequires: bison @@ -138,7 +139,7 @@ mkdir -p %{buildroot}%{_datadir}/uboot/ %ifarch aarch64 for board in $(ls builds) do - for file in u-boot.bin u-boot.img u-boot-dtb.img u-boot.itb u-boot-sunxi-with-spl.bin u-boot-rockchip.bin idbloader.img idbloader-spi.img spl/boot.bin + for file in u-boot.bin u-boot.img u-boot-dtb.img u-boot.itb u-boot-sunxi-with-spl.bin u-boot-rockchip-spi.bin u-boot-rockchip.bin idbloader.img idbloader-spi.img spl/boot.bin do if [ -f builds/$(echo $board)/$(echo $file) ]; then install -pD -m 0644 builds/$(echo $board)/$(echo $file) %{buildroot}%{_datadir}/uboot/$(echo $board)/$(echo $file) @@ -189,6 +190,9 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Wed Mar 13 2024 Peter Robinson - 1:2024.04-0.5.rc4 +- Fixes for Rockchip rk3399 autoboot + * Tue Mar 12 2024 Peter Robinson - 1:2024.04-0.4.rc4 - Update to 2024.04 RC4 - Initial fix for loading DT off /boot (rhbz 2247873) From bda7eb94be4cdeb796a997f2ba3b3c071480485a Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Fri, 15 Mar 2024 16:43:39 +0000 Subject: [PATCH 173/271] Updated fix for FDT load --- uboot-tools.spec | 5 ++++- ...fdt_location-for-finding-the-DT-on-disk.patch | 16 ++++++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index adff3dd..fa7c75d 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2024.04 -Release: 0.5%{?candidate:.%{candidate}}%{?dist} +Release: 0.6%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ @@ -190,6 +190,9 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Fri Mar 15 2024 Peter Robinson - 1:2024.04-0.6.rc4 +- Updated fix for FDT load + * Wed Mar 13 2024 Peter Robinson - 1:2024.04-0.5.rc4 - Fixes for Rockchip rk3399 autoboot diff --git a/uefi-initial-find_fdt_location-for-finding-the-DT-on-disk.patch b/uefi-initial-find_fdt_location-for-finding-the-DT-on-disk.patch index e1937f8..2b425f1 100644 --- a/uefi-initial-find_fdt_location-for-finding-the-DT-on-disk.patch +++ b/uefi-initial-find_fdt_location-for-finding-the-DT-on-disk.patch @@ -1,6 +1,6 @@ -From 47bf70fe95dd3883c08af3478f29564476f0950e Mon Sep 17 00:00:00 2001 +From 751b1c4ec581f3546c49e4d59485306601fe6e2d Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Tue, 12 Mar 2024 00:05:23 +0000 +Date: Fri, 15 Mar 2024 16:42:23 +0000 Subject: [PATCH] initial find_fdt_location for finding the DT on disk The old distro boot looked for a DT on the first boot partition @@ -16,12 +16,11 @@ so that devices will continue to work as they did previously. Signed-off-by: Peter Robinson --- - cmd/bootefi.c | 1 + cmd/bootmenu.c | 5 +++ include/efi_loader.h | 2 + - lib/efi_loader/efi_helper.c | 82 ++++++++++++++++++++++++++++++++++++- - 4 files changed, 89 insertions(+), 1 deletion(-) + lib/efi_loader/efi_helper.c | 83 ++++++++++++++++++++++++++++++++++++- + 4 files changed, 90 insertions(+), 1 deletion(-) diff --git a/cmd/bootefi.c b/cmd/bootefi.c index 9cf9027bf40..8b6194a8702 100644 @@ -65,7 +64,7 @@ index 7daca0afba2..a969378ff2f 100644 int efi_init_early(void); /* Initialize efi execution environment */ diff --git a/lib/efi_loader/efi_helper.c b/lib/efi_loader/efi_helper.c -index 5dd9cc876e4..59bdb2d030c 100644 +index 5dd9cc876e4..8d51c9570b7 100644 --- a/lib/efi_loader/efi_helper.c +++ b/lib/efi_loader/efi_helper.c @@ -12,6 +12,7 @@ @@ -76,7 +75,7 @@ index 5dd9cc876e4..59bdb2d030c 100644 #include #include #include -@@ -24,6 +25,76 @@ +@@ -24,6 +25,77 @@ const efi_guid_t efi_lf2_initrd_guid = EFI_INITRD_MEDIA_GUID; #endif @@ -128,6 +127,7 @@ index 5dd9cc876e4..59bdb2d030c 100644 + if (retfdt) { + /* we have a fdt!*/ + log_debug("FFL: we have found a DT on disk\n"); ++ pbraddr = (ulong)(env_get("fdt_addr")); + retload = fs_read(fdt_fullpath, pbraddr, 0, 0, &len_read); + if (retload) { + log_debug("FFL: we have a loaded DT, size %ld we can return\n", sizeof(len_read)); @@ -153,7 +153,7 @@ index 5dd9cc876e4..59bdb2d030c 100644 /** * efi_create_current_boot_var() - Return Boot#### name were #### is replaced by * the value of BootCurrent -@@ -432,11 +503,20 @@ efi_status_t efi_install_fdt(void *fdt) +@@ -432,11 +504,20 @@ efi_status_t efi_install_fdt(void *fdt) /* Look for device tree that is already installed */ if (efi_get_configuration_table(&efi_guid_fdt)) return EFI_SUCCESS; From d91245dd1ce4d8e65efd11c44cafdae90c9e70a5 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 21 Mar 2024 13:56:05 +0000 Subject: [PATCH 174/271] Updated patch for DTB loading --- uboot-tools.spec | 5 +- ..._location-for-finding-the-DT-on-disk.patch | 74 ++++++++++++------- 2 files changed, 52 insertions(+), 27 deletions(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index fa7c75d..d726634 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2024.04 -Release: 0.6%{?candidate:.%{candidate}}%{?dist} +Release: 0.7%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ @@ -190,6 +190,9 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Thu Mar 21 2024 Peter Robinson - 1:2024.04-0.7.rc4 +- Updated patch for DTB loading + * Fri Mar 15 2024 Peter Robinson - 1:2024.04-0.6.rc4 - Updated fix for FDT load diff --git a/uefi-initial-find_fdt_location-for-finding-the-DT-on-disk.patch b/uefi-initial-find_fdt_location-for-finding-the-DT-on-disk.patch index 2b425f1..232e121 100644 --- a/uefi-initial-find_fdt_location-for-finding-the-DT-on-disk.patch +++ b/uefi-initial-find_fdt_location-for-finding-the-DT-on-disk.patch @@ -1,6 +1,6 @@ -From 751b1c4ec581f3546c49e4d59485306601fe6e2d Mon Sep 17 00:00:00 2001 +From 8abb44f89aefd25cda27c54c08b68b3a60bea7c3 Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Fri, 15 Mar 2024 16:42:23 +0000 +Date: Thu, 21 Mar 2024 13:43:24 +0000 Subject: [PATCH] initial find_fdt_location for finding the DT on disk The old distro boot looked for a DT on the first boot partition @@ -16,11 +16,11 @@ so that devices will continue to work as they did previously. Signed-off-by: Peter Robinson --- - cmd/bootefi.c | 1 + - cmd/bootmenu.c | 5 +++ - include/efi_loader.h | 2 + - lib/efi_loader/efi_helper.c | 83 ++++++++++++++++++++++++++++++++++++- - 4 files changed, 90 insertions(+), 1 deletion(-) + cmd/bootefi.c | 1 + + cmd/bootmenu.c | 5 ++ + include/efi_loader.h | 2 + + lib/efi_loader/efi_helper.c | 105 +++++++++++++++++++++++++++++++++++- + 4 files changed, 112 insertions(+), 1 deletion(-) diff --git a/cmd/bootefi.c b/cmd/bootefi.c index 9cf9027bf40..8b6194a8702 100644 @@ -64,7 +64,7 @@ index 7daca0afba2..a969378ff2f 100644 int efi_init_early(void); /* Initialize efi execution environment */ diff --git a/lib/efi_loader/efi_helper.c b/lib/efi_loader/efi_helper.c -index 5dd9cc876e4..8d51c9570b7 100644 +index 5dd9cc876e4..a33ec39ff74 100644 --- a/lib/efi_loader/efi_helper.c +++ b/lib/efi_loader/efi_helper.c @@ -12,6 +12,7 @@ @@ -75,7 +75,7 @@ index 5dd9cc876e4..8d51c9570b7 100644 #include #include #include -@@ -24,6 +25,77 @@ +@@ -24,6 +25,99 @@ const efi_guid_t efi_lf2_initrd_guid = EFI_INITRD_MEDIA_GUID; #endif @@ -91,6 +91,7 @@ index 5dd9cc876e4..8d51c9570b7 100644 + int MAX_PART = 8; + int part; + struct disk_partition info; ++ int fdtext; + int ret; + int retfdt; + int retload; @@ -115,7 +116,9 @@ index 5dd9cc876e4..8d51c9570b7 100644 + log_debug("FFL: part num: %d\n", part); + ret = part_get_info(desc, part, &info); + /* if we have partition check it for DT */ -+ if (ret) { ++ if (ret < 0) { ++ log_debug("FFL: no partition\n"); ++ } else { + log_debug("FFL: we have a partition\n"); + /* we should have a case/for prefix in =/ /dtb/ /dtb/current/ */ + /* but for now we hard code if for Fedora */ @@ -123,22 +126,41 @@ index 5dd9cc876e4..8d51c9570b7 100644 + snprintf(fdt_fullpath, sizeof(fdt_fullpath), "%s/%s", prefix, fdt_filename); + log_debug("FFL: full name: %s\n", fdt_fullpath); + /* search for DT on partition and either find and exit or continue */ -+ retfdt = fs_size(fdt_fullpath, &fdtsize); -+ if (retfdt) { -+ /* we have a fdt!*/ -+ log_debug("FFL: we have found a DT on disk\n"); -+ pbraddr = (ulong)(env_get("fdt_addr")); -+ retload = fs_read(fdt_fullpath, pbraddr, 0, 0, &len_read); -+ if (retload) { -+ log_debug("FFL: we have a loaded DT, size %ld we can return\n", sizeof(len_read)); -+ log_info("Found DTB: %s\n", fdt_filename); -+ const char *fdt_opt; -+ fdt_opt = env_get("fdt_addr"); -+ return fdt_opt; ++ if (fs_set_blk_dev_with_part(desc, part) == 0){ ++ log_debug("FFL: set block part pass\n"); ++ fdtext = fs_exists(fdt_fullpath); ++ if (fdtext) { ++ /* we have a fdt!*/ ++ if (fs_set_blk_dev_with_part(desc, part) == 0){ ++ retfdt = fs_size(fdt_fullpath, &fdtsize); ++ if (retfdt == 0) { ++ log_debug("FFL: we have found a DT on disk, size %lld\n", fdtsize); ++ /* Get the main fdt and map it */ ++ const char *fdt_pbr; ++ fdt_pbr = env_get("fdt_addr_r"); ++ pbraddr = hextoul(fdt_pbr, NULL); ++ log_debug("FFL: fdr addr: %s\n", fdt_pbr); ++ if (fs_set_blk_dev_with_part(desc, part) == 0){ ++ retload = fs_read(fdt_fullpath, pbraddr, 0, fdtsize, &len_read); ++ if (retload == 0) { ++ log_debug("FFL: we have a loaded DT, size %lld we can return\n", fdtsize); ++ log_info("Found DTB: %s\n", fdt_filename); ++ return fdt_pbr; ++ } else { ++ log_debug("FFL: DT load failed\n"); ++ } ++ } ++ } else { ++ log_debug("FFL: we DON'T have a DT with size\n"); ++ } ++ } ++ } else { ++ /* we don't have a fdt!*/ ++ log_debug("FFL: we DON'T have a DT\n"); + } ++ } else { ++ log_debug("FFL: set block part FAIL\n"); + } -+ } else { -+ log_debug("FFL: no partition\n"); + } + } + } @@ -153,14 +175,14 @@ index 5dd9cc876e4..8d51c9570b7 100644 /** * efi_create_current_boot_var() - Return Boot#### name were #### is replaced by * the value of BootCurrent -@@ -432,11 +504,20 @@ efi_status_t efi_install_fdt(void *fdt) +@@ -432,11 +526,20 @@ efi_status_t efi_install_fdt(void *fdt) /* Look for device tree that is already installed */ if (efi_get_configuration_table(&efi_guid_fdt)) return EFI_SUCCESS; + /* Check if there is device tree loaded from disk */ + fdt_opt = find_fdt_location(); + if (fdt_opt) -+ log_debug("Found DTB: insert file name here\n"); ++ log_debug("Found DTB on disk\n"); /* Check if there is a hardware device tree */ - fdt_opt = env_get("fdt_addr"); + if (!fdt_opt) { From 2a31c9025b794a3101093aaa4a6911a834783bad Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 27 Mar 2024 04:44:15 +0000 Subject: [PATCH 175/271] 2024.04 RC5 --- sources | 2 +- uboot-tools.spec | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sources b/sources index 0b96c52..c146dd5 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2024.04-rc4.tar.bz2) = 4a546eb790d54c9aadd423888baa5c909249afeedfd71f85c8b424421c08463b0e65f3addfc2d00f4a38fb56d8051ed70c8368d49a89bd33ec69773474d4d62d +SHA512 (u-boot-2024.04-rc5.tar.bz2) = 1e985d9b9840b8ea9ed8f10f6e22d503ad87373b12c1a081c3d270f630d16a7881fd4ce072cbf08c20a2a038d458d6e161fa21494967d771d2494c378c7c2d6f diff --git a/uboot-tools.spec b/uboot-tools.spec index d726634..cd5dff5 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc4 +%global candidate rc5 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2024.04 -Release: 0.7%{?candidate:.%{candidate}}%{?dist} +Release: 0.8%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ @@ -190,6 +190,9 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Wed Mar 27 2024 Peter Robinson - 1:2024.04-0.8.rc5 +- Update to 2024.04 RC5 + * Thu Mar 21 2024 Peter Robinson - 1:2024.04-0.7.rc4 - Updated patch for DTB loading From dcafedfd49902c2105accbf779ff7690fbcc19da Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 3 Apr 2024 05:55:01 +0100 Subject: [PATCH 176/271] 2024.04 GA, rk3328 USB fixes --- ...kchip-inno-usb2-Write-to-correct-GRF.patch | 572 +++++++++++++++ ...grate-to-use-DM_USB_GADGET-on-RK3328.patch | 691 ++++++++++++++++++ sources | 2 +- uboot-tools.spec | 10 +- 4 files changed, 1272 insertions(+), 3 deletions(-) create mode 100644 phy-rockchip-inno-usb2-Write-to-correct-GRF.patch create mode 100644 rockchip-Migrate-to-use-DM_USB_GADGET-on-RK3328.patch diff --git a/phy-rockchip-inno-usb2-Write-to-correct-GRF.patch b/phy-rockchip-inno-usb2-Write-to-correct-GRF.patch new file mode 100644 index 0000000..b240ad6 --- /dev/null +++ b/phy-rockchip-inno-usb2-Write-to-correct-GRF.patch @@ -0,0 +1,572 @@ +From patchwork Sun Feb 25 22:10:19 2024 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Jonas Karlman +X-Patchwork-Id: 1903989 +X-Patchwork-Delegate: ykai007@gmail.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; + secure) header.d=kwiboo.se header.i=@kwiboo.se header.a=rsa-sha256 + header.s=fe-e1b5cab7be header.b=yOZt1tiR; + 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) server-digest SHA384) + (No client certificate requested) + by legolas.ozlabs.org (Postfix) with ESMTPS id 4TjdHl4wttz23cw + for ; Mon, 26 Feb 2024 09:11:15 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 91BCF87E23; + Sun, 25 Feb 2024 23:10:57 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=kwiboo.se +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; + secure) header.d=kwiboo.se header.i=@kwiboo.se header.b="yOZt1tiR"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id BFA6B87DA4; Sun, 25 Feb 2024 23:10: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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 +Received: from smtp.forwardemail.net (smtp.forwardemail.net [149.28.215.223]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 217BA87DFA + for ; Sun, 25 Feb 2024 23:10:49 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=kwiboo.se +Authentication-Results: phobos.denx.de; spf=pass + smtp.mailfrom=SRS0=31c0=KD=kwiboo.se=jonas@fe-bounces.kwiboo.se +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; + h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: + Message-ID: Date: Subject: Cc: To: From; q=dns/txt; s=fe-e1b5cab7be; + t=1708899036; bh=AzFTi2bcYYAtXfClfRKD6v/Yh+iTeLs39b0UoXgmBwI=; + b=yOZt1tiRwOXYRO3mwXmOiJo897JN79a+B1jEzPSXrDGT/XlOaEYuhCBCO4IIUTSOg1irZCZD0 + XierFKG1DECIT3JlIXV16mU6P9Dsg/amgtgJp8QQmuACEJ6JERBNINdt0i7+i0oUF0bmiYupJ+U + VY5LPHhscKquVc3LCEo/DcIMMX+gh3zOF15G4QPE6ldeQbs/Ys4bqYQ/cMe+X4ijANkou6hqNSw + VY/TylYiKqrMyUW8SKJ6oXRxluNhrYpWWde3hoCc0zjTEWW9dGzSbxX8NLmmhqTT0uGKH6/RrB0 + nNeuIgaMGTk7jCCUtbi4Vp99P9HYFnlfmTRXoVLEofxw== +From: Jonas Karlman +To: Kever Yang , Simon Glass , + Philipp Tomsich , Tom Rini , + Ren Jianing , Manoj Sai + , Jagan Teki + , Eugen Hristev , + Frank Wang , Xavier Drudis Ferran + +Cc: u-boot@lists.denx.de, Jonas Karlman +Subject: [PATCH 1/2] phy: rockchip-inno-usb2: Write to correct GRF +Date: Sun, 25 Feb 2024 22:10:19 +0000 +Message-ID: <20240225221024.1974853-2-jonas@kwiboo.se> +X-Mailer: git-send-email 2.43.0 +In-Reply-To: <20240225221024.1974853-1-jonas@kwiboo.se> +References: <20240225221024.1974853-1-jonas@kwiboo.se> +MIME-Version: 1.0 +X-Report-Abuse-To: abuse@forwardemail.net +X-Report-Abuse: abuse@forwardemail.net +X-Complaints-To: abuse@forwardemail.net +X-ForwardEmail-Version: 0.4.40 +X-ForwardEmail-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, + 149.28.215.223 +X-ForwardEmail-ID: 65dbbada46c899733a83b3ec +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 + +On RK3399 the USB2PHY regs are located in the common GRF, remaining SoCs +that is supported by this driver have the USB2PHY regs in a different +GRF. + +When support for RK356x, RK3588 and RK3328 was added this driver was +never updated to use correct GRF and have instead incorrectly written +to wrong GRF for these SoCs. + +The default reset values for the USB2PHY have made USB mostly working +even when wrong GRF was used, however, following have been observed: + + scanning bus usb@fd840000 for devices... + ERROR: USB-error: DEVICENOTRESPONDING: Device did not respond to token (IN) or did + not provide a handshake (OUT) (5) + ERROR: USB-error: DEVICENOTRESPONDING: Device did not respond to token (IN) or did + not provide a handshake (OUT) (5) + unable to get device descriptor (error=-1) + +Fix this by using a regmap from rockchip,usbgrf prop and fall back to +getting a regmap for parent udevice instead of always getting the +common GRF. + +Also protect against accidental clear of bit 0 in a reg with offset 0, +only bind driver to enabled otg/host-ports and remove unused headers. + +Fixes: 3da15f0b49a2 ("phy: rockchip-inno-usb2: Add USB2 PHY for rk3568") +Fixes: cdf9010f6e17 ("phy: rockchip-inno-usb2: add initial support for rk3588 PHY") +Fixes: 9aa93d84038b ("phy: rockchip-inno-usb2: Add USB2 PHY for RK3328") +Signed-off-by: Jonas Karlman +Reviewed-by: Kever Yang +--- + drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 41 ++++++++++--------- + 1 file changed, 22 insertions(+), 19 deletions(-) + +diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c +index 70e61eccb79a..7317128d135e 100644 +--- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c ++++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c +@@ -6,23 +6,16 @@ + * Copyright (C) 2020 Amarula Solutions(India) + */ + +-#include + #include + #include +-#include + #include + #include + #include + #include +-#include ++#include + #include +-#include +-#include +-#include + #include + +-DECLARE_GLOBAL_DATA_PTR; +- + #define usleep_range(a, b) udelay((b)) + #define BIT_WRITEABLE_SHIFT 16 + +@@ -61,30 +54,39 @@ struct rockchip_usb2phy_cfg { + }; + + struct rockchip_usb2phy { +- void *reg_base; ++ struct regmap *reg_base; + struct clk phyclk; + const struct rockchip_usb2phy_cfg *phy_cfg; + }; + +-static inline int property_enable(void *reg_base, ++static inline int property_enable(struct regmap *base, + const struct usb2phy_reg *reg, bool en) + { + unsigned int val, mask, tmp; + ++ if (!reg->offset && !reg->enable && !reg->disable) ++ return 0; ++ + tmp = en ? reg->enable : reg->disable; + mask = GENMASK(reg->bitend, reg->bitstart); + val = (tmp << reg->bitstart) | (mask << BIT_WRITEABLE_SHIFT); + +- return writel(val, reg_base + reg->offset); ++ return regmap_write(base, reg->offset, val); + } + +-static inline bool property_enabled(void *reg_base, ++static inline bool property_enabled(struct regmap *base, + const struct usb2phy_reg *reg) + { ++ int ret; + unsigned int tmp, orig; + unsigned int mask = GENMASK(reg->bitend, reg->bitstart); + +- orig = readl(reg_base + reg->offset); ++ if (!reg->offset && !reg->enable && !reg->disable) ++ return false; ++ ++ ret = regmap_read(base, reg->offset, &orig); ++ if (ret) ++ return false; + + tmp = (orig & mask) >> reg->bitstart; + return tmp != reg->disable; +@@ -248,7 +250,11 @@ static int rockchip_usb2phy_probe(struct udevice *dev) + unsigned int reg; + int index, ret; + +- priv->reg_base = syscon_get_first_range(ROCKCHIP_SYSCON_GRF); ++ if (dev_read_bool(dev, "rockchip,usbgrf")) ++ priv->reg_base = ++ syscon_regmap_lookup_by_phandle(dev, "rockchip,usbgrf"); ++ else ++ priv->reg_base = syscon_get_regmap(dev_get_parent(dev)); + if (IS_ERR(priv->reg_base)) + return PTR_ERR(priv->reg_base); + +@@ -305,11 +311,8 @@ static int rockchip_usb2phy_bind(struct udevice *dev) + int ret = 0; + + dev_for_each_subnode(node, dev) { +- if (!ofnode_valid(node)) { +- dev_info(dev, "subnode %s not found\n", dev->name); +- ret = -ENXIO; +- goto bind_fail; +- } ++ if (!ofnode_is_enabled(node)) ++ continue; + + name = ofnode_get_name(node); + dev_dbg(dev, "subnode %s\n", name); + +From patchwork Sun Feb 25 22:10:20 2024 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Jonas Karlman +X-Patchwork-Id: 1903988 +X-Patchwork-Delegate: ykai007@gmail.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; + secure) header.d=kwiboo.se header.i=@kwiboo.se header.a=rsa-sha256 + header.s=fe-e1b5cab7be header.b=Bv1sBawV; + 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) server-digest SHA384) + (No client certificate requested) + by legolas.ozlabs.org (Postfix) with ESMTPS id 4TjdHW2kk5z23cw + for ; Mon, 26 Feb 2024 09:11:03 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id EC90A87DF4; + Sun, 25 Feb 2024 23:10:54 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=kwiboo.se +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; + secure) header.d=kwiboo.se header.i=@kwiboo.se header.b="Bv1sBawV"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 445F387E21; Sun, 25 Feb 2024 23:10: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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 +Received: from smtp.forwardemail.net (smtp.forwardemail.net [149.28.215.223]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 9C54487DF4 + for ; Sun, 25 Feb 2024 23:10:48 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=kwiboo.se +Authentication-Results: phobos.denx.de; spf=pass + smtp.mailfrom=SRS0=31c0=KD=kwiboo.se=jonas@fe-bounces.kwiboo.se +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; + h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: + Message-ID: Date: Subject: Cc: To: From; q=dns/txt; s=fe-e1b5cab7be; + t=1708899040; bh=DyusC9ORAR+XZuJiPJ/3cQGjPsGAIRRpa763lcRm9QI=; + b=Bv1sBawVhXXIyoD7RTT7PpAz6+xCx17DjVExzdjGWsgUube7Xho69mue9hWqeTSU0bCFYYtv7 + HD7t7qbOmnYD+L0UVg+SHdibpC38eSbz+ucYsZrMhZL1IiRJNWWlFyb0IZacRz+AeagLdc75goJ + qTiFcN9xKXoHBJKpyqXiwsuJJMOXWwg9aOhGc9HZ91jwYEXSai2WfZYxtzx23bl5U4pDvpDuJd9 + ijrjK7DdsrJyRm4ALrkvjlr2/gZguEXEzOiHrFbbIZn+QIZjKhbbSdTQOScvPdvnFFKG8F3wZsX + rdxXOykD/CZU8ni3ZAYh20CBo6kwKIBdthaDsbYR18nw== +From: Jonas Karlman +To: Kever Yang , Simon Glass , + Philipp Tomsich , Tom Rini +Cc: u-boot@lists.denx.de, Jonas Karlman +Subject: [PATCH 2/2] phy: rockchip-inno-usb2: Limit changes made to regs +Date: Sun, 25 Feb 2024 22:10:20 +0000 +Message-ID: <20240225221024.1974853-3-jonas@kwiboo.se> +X-Mailer: git-send-email 2.43.0 +In-Reply-To: <20240225221024.1974853-1-jonas@kwiboo.se> +References: <20240225221024.1974853-1-jonas@kwiboo.se> +MIME-Version: 1.0 +X-Report-Abuse-To: abuse@forwardemail.net +X-Report-Abuse: abuse@forwardemail.net +X-Complaints-To: abuse@forwardemail.net +X-ForwardEmail-Version: 0.4.40 +X-ForwardEmail-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, + 149.28.215.223 +X-ForwardEmail-ID: 65dbbade46c899733a83b3fe +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 USB2PHY regs already contain working default reset values for RK3328 +and RK35xx as evidenced by the fact that this driver never has changed a +single value for these SoCs. + +Reduce to only configure utmi_suspend_n and utmi_sel bits similar to +what is currently done on RK3399. Also add missing clkout_ctl for RK3588. + +When enabled utmi_suspend_n is changed to normal mode and utmi_sel to +use otg/host controller utmi interface to phy. When disabled +utmi_suspend_n is changed to suspend mode and utmi_sel to use GRF utmi +interface to phy. + +Signed-off-by: Jonas Karlman +Reviewed-by: Kever Yang +--- + drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 117 +++--------------- + 1 file changed, 14 insertions(+), 103 deletions(-) + +diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c +index 7317128d135e..d392aed2d4de 100644 +--- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c ++++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c +@@ -35,16 +35,6 @@ struct usb2phy_reg { + + struct rockchip_usb2phy_port_cfg { + struct usb2phy_reg phy_sus; +- struct usb2phy_reg bvalid_det_en; +- struct usb2phy_reg bvalid_det_st; +- struct usb2phy_reg bvalid_det_clr; +- struct usb2phy_reg ls_det_en; +- struct usb2phy_reg ls_det_st; +- struct usb2phy_reg ls_det_clr; +- struct usb2phy_reg utmi_avalid; +- struct usb2phy_reg utmi_bvalid; +- struct usb2phy_reg utmi_ls; +- struct usb2phy_reg utmi_hstdet; + }; + + struct rockchip_usb2phy_cfg { +@@ -131,7 +121,6 @@ static int rockchip_usb2phy_init(struct phy *phy) + { + struct udevice *parent = dev_get_parent(phy->dev); + struct rockchip_usb2phy *priv = dev_get_priv(parent); +- const struct rockchip_usb2phy_port_cfg *port_cfg = us2phy_get_port(phy); + int ret; + + ret = clk_enable(&priv->phyclk); +@@ -140,14 +129,6 @@ static int rockchip_usb2phy_init(struct phy *phy) + return ret; + } + +- if (phy->id == USB2PHY_PORT_OTG) { +- property_enable(priv->reg_base, &port_cfg->bvalid_det_clr, true); +- property_enable(priv->reg_base, &port_cfg->bvalid_det_en, true); +- } else if (phy->id == USB2PHY_PORT_HOST) { +- property_enable(priv->reg_base, &port_cfg->bvalid_det_clr, true); +- property_enable(priv->reg_base, &port_cfg->bvalid_det_en, true); +- } +- + return 0; + } + +@@ -351,27 +332,13 @@ bind_fail: + static const struct rockchip_usb2phy_cfg rk3328_usb2phy_cfgs[] = { + { + .reg = 0x100, +- .clkout_ctl = { 0x108, 4, 4, 1, 0 }, ++ .clkout_ctl = { 0x0108, 4, 4, 1, 0 }, + .port_cfgs = { + [USB2PHY_PORT_OTG] = { +- .phy_sus = { 0x0100, 15, 0, 0, 0x1d1 }, +- .bvalid_det_en = { 0x0110, 3, 2, 0, 3 }, +- .bvalid_det_st = { 0x0114, 3, 2, 0, 3 }, +- .bvalid_det_clr = { 0x0118, 3, 2, 0, 3 }, +- .ls_det_en = { 0x0110, 0, 0, 0, 1 }, +- .ls_det_st = { 0x0114, 0, 0, 0, 1 }, +- .ls_det_clr = { 0x0118, 0, 0, 0, 1 }, +- .utmi_avalid = { 0x0120, 10, 10, 0, 1 }, +- .utmi_bvalid = { 0x0120, 9, 9, 0, 1 }, +- .utmi_ls = { 0x0120, 5, 4, 0, 1 }, ++ .phy_sus = { 0x0100, 1, 0, 2, 1 }, + }, + [USB2PHY_PORT_HOST] = { +- .phy_sus = { 0x104, 15, 0, 0, 0x1d1 }, +- .ls_det_en = { 0x110, 1, 1, 0, 1 }, +- .ls_det_st = { 0x114, 1, 1, 0, 1 }, +- .ls_det_clr = { 0x118, 1, 1, 0, 1 }, +- .utmi_ls = { 0x120, 17, 16, 0, 1 }, +- .utmi_hstdet = { 0x120, 19, 19, 0, 1 } ++ .phy_sus = { 0x0104, 1, 0, 2, 1 }, + } + }, + }, +@@ -385,19 +352,9 @@ static const struct rockchip_usb2phy_cfg rk3399_usb2phy_cfgs[] = { + .port_cfgs = { + [USB2PHY_PORT_OTG] = { + .phy_sus = { 0xe454, 1, 0, 2, 1 }, +- .bvalid_det_en = { 0xe3c0, 3, 3, 0, 1 }, +- .bvalid_det_st = { 0xe3e0, 3, 3, 0, 1 }, +- .bvalid_det_clr = { 0xe3d0, 3, 3, 0, 1 }, +- .utmi_avalid = { 0xe2ac, 7, 7, 0, 1 }, +- .utmi_bvalid = { 0xe2ac, 12, 12, 0, 1 }, + }, + [USB2PHY_PORT_HOST] = { +- .phy_sus = { 0xe458, 1, 0, 0x2, 0x1 }, +- .ls_det_en = { 0xe3c0, 6, 6, 0, 1 }, +- .ls_det_st = { 0xe3e0, 6, 6, 0, 1 }, +- .ls_det_clr = { 0xe3d0, 6, 6, 0, 1 }, +- .utmi_ls = { 0xe2ac, 22, 21, 0, 1 }, +- .utmi_hstdet = { 0xe2ac, 23, 23, 0, 1 } ++ .phy_sus = { 0xe458, 1, 0, 2, 1 }, + } + }, + }, +@@ -407,19 +364,9 @@ static const struct rockchip_usb2phy_cfg rk3399_usb2phy_cfgs[] = { + .port_cfgs = { + [USB2PHY_PORT_OTG] = { + .phy_sus = { 0xe464, 1, 0, 2, 1 }, +- .bvalid_det_en = { 0xe3c0, 8, 8, 0, 1 }, +- .bvalid_det_st = { 0xe3e0, 8, 8, 0, 1 }, +- .bvalid_det_clr = { 0xe3d0, 8, 8, 0, 1 }, +- .utmi_avalid = { 0xe2ac, 10, 10, 0, 1 }, +- .utmi_bvalid = { 0xe2ac, 16, 16, 0, 1 }, + }, + [USB2PHY_PORT_HOST] = { +- .phy_sus = { 0xe468, 1, 0, 0x2, 0x1 }, +- .ls_det_en = { 0xe3c0, 11, 11, 0, 1 }, +- .ls_det_st = { 0xe3e0, 11, 11, 0, 1 }, +- .ls_det_clr = { 0xe3d0, 11, 11, 0, 1 }, +- .utmi_ls = { 0xe2ac, 26, 25, 0, 1 }, +- .utmi_hstdet = { 0xe2ac, 27, 27, 0, 1 } ++ .phy_sus = { 0xe468, 1, 0, 2, 1 }, + } + }, + }, +@@ -432,24 +379,10 @@ static const struct rockchip_usb2phy_cfg rk3568_phy_cfgs[] = { + .clkout_ctl = { 0x0008, 4, 4, 1, 0 }, + .port_cfgs = { + [USB2PHY_PORT_OTG] = { +- .phy_sus = { 0x0000, 8, 0, 0x052, 0x1d1 }, +- .bvalid_det_en = { 0x0080, 2, 2, 0, 1 }, +- .bvalid_det_st = { 0x0084, 2, 2, 0, 1 }, +- .bvalid_det_clr = { 0x0088, 2, 2, 0, 1 }, +- .ls_det_en = { 0x0080, 0, 0, 0, 1 }, +- .ls_det_st = { 0x0084, 0, 0, 0, 1 }, +- .ls_det_clr = { 0x0088, 0, 0, 0, 1 }, +- .utmi_avalid = { 0x00c0, 10, 10, 0, 1 }, +- .utmi_bvalid = { 0x00c0, 9, 9, 0, 1 }, +- .utmi_ls = { 0x00c0, 5, 4, 0, 1 }, ++ .phy_sus = { 0x0000, 1, 0, 2, 1 }, + }, + [USB2PHY_PORT_HOST] = { +- .phy_sus = { 0x0004, 8, 0, 0x1d2, 0x1d1 }, +- .ls_det_en = { 0x0080, 1, 1, 0, 1 }, +- .ls_det_st = { 0x0084, 1, 1, 0, 1 }, +- .ls_det_clr = { 0x0088, 1, 1, 0, 1 }, +- .utmi_ls = { 0x00c0, 17, 16, 0, 1 }, +- .utmi_hstdet = { 0x00c0, 19, 19, 0, 1 } ++ .phy_sus = { 0x0004, 1, 0, 2, 1 }, + } + }, + }, +@@ -458,20 +391,10 @@ static const struct rockchip_usb2phy_cfg rk3568_phy_cfgs[] = { + .clkout_ctl = { 0x0008, 4, 4, 1, 0 }, + .port_cfgs = { + [USB2PHY_PORT_OTG] = { +- .phy_sus = { 0x0000, 8, 0, 0x1d2, 0x1d1 }, +- .ls_det_en = { 0x0080, 0, 0, 0, 1 }, +- .ls_det_st = { 0x0084, 0, 0, 0, 1 }, +- .ls_det_clr = { 0x0088, 0, 0, 0, 1 }, +- .utmi_ls = { 0x00c0, 5, 4, 0, 1 }, +- .utmi_hstdet = { 0x00c0, 7, 7, 0, 1 } ++ .phy_sus = { 0x0000, 1, 0, 2, 1 }, + }, + [USB2PHY_PORT_HOST] = { +- .phy_sus = { 0x0004, 8, 0, 0x1d2, 0x1d1 }, +- .ls_det_en = { 0x0080, 1, 1, 0, 1 }, +- .ls_det_st = { 0x0084, 1, 1, 0, 1 }, +- .ls_det_clr = { 0x0088, 1, 1, 0, 1 }, +- .utmi_ls = { 0x00c0, 17, 16, 0, 1 }, +- .utmi_hstdet = { 0x00c0, 19, 19, 0, 1 } ++ .phy_sus = { 0x0004, 1, 0, 2, 1 }, + } + }, + }, +@@ -481,49 +404,37 @@ static const struct rockchip_usb2phy_cfg rk3568_phy_cfgs[] = { + static const struct rockchip_usb2phy_cfg rk3588_phy_cfgs[] = { + { + .reg = 0x0000, ++ .clkout_ctl = { 0x0000, 0, 0, 1, 0 }, + .port_cfgs = { + [USB2PHY_PORT_OTG] = { + .phy_sus = { 0x000c, 11, 11, 0, 1 }, +- .ls_det_en = { 0x0080, 0, 0, 0, 1 }, +- .ls_det_st = { 0x0084, 0, 0, 0, 1 }, +- .ls_det_clr = { 0x0088, 0, 0, 0, 1 }, +- .utmi_ls = { 0x00c0, 10, 9, 0, 1 }, + } + }, + }, + { + .reg = 0x4000, ++ .clkout_ctl = { 0x0000, 0, 0, 1, 0 }, + .port_cfgs = { + [USB2PHY_PORT_OTG] = { +- .phy_sus = { 0x000c, 11, 11, 0, 0 }, +- .ls_det_en = { 0x0080, 0, 0, 0, 1 }, +- .ls_det_st = { 0x0084, 0, 0, 0, 1 }, +- .ls_det_clr = { 0x0088, 0, 0, 0, 1 }, +- .utmi_ls = { 0x00c0, 10, 9, 0, 1 }, ++ .phy_sus = { 0x000c, 11, 11, 0, 1 }, + } + }, + }, + { + .reg = 0x8000, ++ .clkout_ctl = { 0x0000, 0, 0, 1, 0 }, + .port_cfgs = { + [USB2PHY_PORT_HOST] = { + .phy_sus = { 0x0008, 2, 2, 0, 1 }, +- .ls_det_en = { 0x0080, 0, 0, 0, 1 }, +- .ls_det_st = { 0x0084, 0, 0, 0, 1 }, +- .ls_det_clr = { 0x0088, 0, 0, 0, 1 }, +- .utmi_ls = { 0x00c0, 10, 9, 0, 1 }, + } + }, + }, + { + .reg = 0xc000, ++ .clkout_ctl = { 0x0000, 0, 0, 1, 0 }, + .port_cfgs = { + [USB2PHY_PORT_HOST] = { + .phy_sus = { 0x0008, 2, 2, 0, 1 }, +- .ls_det_en = { 0x0080, 0, 0, 0, 1 }, +- .ls_det_st = { 0x0084, 0, 0, 0, 1 }, +- .ls_det_clr = { 0x0088, 0, 0, 0, 1 }, +- .utmi_ls = { 0x00c0, 10, 9, 0, 1 }, + } + }, + }, diff --git a/rockchip-Migrate-to-use-DM_USB_GADGET-on-RK3328.patch b/rockchip-Migrate-to-use-DM_USB_GADGET-on-RK3328.patch new file mode 100644 index 0000000..e2b54b4 --- /dev/null +++ b/rockchip-Migrate-to-use-DM_USB_GADGET-on-RK3328.patch @@ -0,0 +1,691 @@ +From 0149cf303734fad55f1d733628f76a6994d1436d Mon Sep 17 00:00:00 2001 +From: Jonas Karlman +Date: Sun, 10 Mar 2024 18:50:57 +0000 +Subject: [PATCH 1/4] rockchip: Update the default USB Product ID value + +RK3036 is using the USB product id normally used by RK3066B, and RK3328 +is using the product id normally used by RK3368. + +Fix this and update the default USB_GADGET_PRODUCT_NUM Kconfig option +for remaining supported Rockchip SoCs to match the product id used in +Maskrom mode. + +Also remove a reference to an undefined ROCKCHIP_RK3229 Kconfig symbol. + +Signed-off-by: Jonas Karlman +Reviewed-by: Kever Yang +--- + drivers/usb/gadget/Kconfig | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig +index c72a8047635..4621a6fd5e6 100644 +--- a/drivers/usb/gadget/Kconfig ++++ b/drivers/usb/gadget/Kconfig +@@ -70,12 +70,21 @@ config USB_GADGET_PRODUCT_NUM + hex "Product ID of the USB device" + default 0x701a if ARCH_TEGRA + default 0x1010 if ARCH_SUNXI +- default 0x310a if ROCKCHIP_RK3036 ++ default 0x110a if ROCKCHIP_RV1108 ++ default 0x110b if ROCKCHIP_RV1126 + default 0x300a if ROCKCHIP_RK3066 ++ default 0x301a if ROCKCHIP_RK3036 ++ default 0x310b if ROCKCHIP_RK3188 + default 0x310c if ROCKCHIP_RK3128 +- default 0x320a if ROCKCHIP_RK3229 || ROCKCHIP_RK3288 +- default 0x330a if ROCKCHIP_RK3328 ++ default 0x320a if ROCKCHIP_RK3288 ++ default 0x320b if ROCKCHIP_RK322X ++ default 0x320c if ROCKCHIP_RK3328 ++ default 0x330a if ROCKCHIP_RK3368 + default 0x330c if ROCKCHIP_RK3399 ++ default 0x330d if ROCKCHIP_PX30 ++ default 0x330e if ROCKCHIP_RK3308 ++ default 0x350a if ROCKCHIP_RK3568 ++ default 0x350b if ROCKCHIP_RK3588 + default 0x0 + help + Product ID of the USB device emulated, reported to the host device. +-- +2.44.0 + +From 3b4d52ef627bb3899c331ff24fe31cec5f445069 Mon Sep 17 00:00:00 2001 +From: Jonas Karlman +Date: Sun, 10 Mar 2024 18:50:58 +0000 +Subject: [PATCH 2/4] rockchip: board: Prepare for use of DM_USB_GADGET with + DWC2_OTG + +The board_usb_init() and board_usb_cleanup() functions is always +included when USB_GADGET and USB_GADGET_DWC2_OTG is enabled. + +Prepare for a change to use DM_USB_GADGET with DWC2_OTG by adding an +extra ifdef condition. The extra separate ifdef for USB_GADGET prepare +for next patch that adds a g_dnl_bind_fixup() function. + +Signed-off-by: Jonas Karlman +Reviewed-by: Kever Yang +--- + arch/arm/mach-rockchip/board.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/mach-rockchip/board.c b/arch/arm/mach-rockchip/board.c +index 2620530e03f..2ec670dde69 100644 +--- a/arch/arm/mach-rockchip/board.c ++++ b/arch/arm/mach-rockchip/board.c +@@ -205,7 +205,8 @@ void enable_caches(void) + } + #endif + +-#if defined(CONFIG_USB_GADGET) && defined(CONFIG_USB_GADGET_DWC2_OTG) ++#if IS_ENABLED(CONFIG_USB_GADGET) ++#if IS_ENABLED(CONFIG_USB_GADGET_DWC2_OTG) && !IS_ENABLED(CONFIG_DM_USB_GADGET) + #include + #include + #include +@@ -281,6 +282,7 @@ int board_usb_cleanup(int index, enum usb_init_type init) + return 0; + } + #endif /* CONFIG_USB_GADGET_DWC2_OTG */ ++#endif /* CONFIG_USB_GADGET */ + + #if IS_ENABLED(CONFIG_FASTBOOT) + int fastboot_set_reboot_flag(enum fastboot_reboot_reason reason) +-- +2.44.0 + +From 201da409a8c879482a00867010b772327aba6a51 Mon Sep 17 00:00:00 2001 +From: Jonas Karlman +Date: Sun, 10 Mar 2024 18:50:59 +0000 +Subject: [PATCH 3/4] rockchip: board: Use a common USB Product ID for UMS + +Change to use the common Product ID 0x0010 when the ums command is used. + +This matches downstream vendor U-Boot and is a Product ID that tools +such as rkdeveloptool and RKDevTool will identify as MSC mode. + +Signed-off-by: Jonas Karlman +Reviewed-by: Kever Yang +--- + arch/arm/mach-rockchip/board.c | 17 ++++++++++++++++- + 1 file changed, 16 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/mach-rockchip/board.c b/arch/arm/mach-rockchip/board.c +index 2ec670dde69..2db746b27fb 100644 +--- a/arch/arm/mach-rockchip/board.c ++++ b/arch/arm/mach-rockchip/board.c +@@ -206,8 +206,23 @@ void enable_caches(void) + #endif + + #if IS_ENABLED(CONFIG_USB_GADGET) +-#if IS_ENABLED(CONFIG_USB_GADGET_DWC2_OTG) && !IS_ENABLED(CONFIG_DM_USB_GADGET) + #include ++ ++#if IS_ENABLED(CONFIG_USB_GADGET_DOWNLOAD) ++#define ROCKCHIP_G_DNL_UMS_PRODUCT_NUM 0x0010 ++ ++int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name) ++{ ++ if (!strcmp(name, "usb_dnl_ums")) ++ put_unaligned(ROCKCHIP_G_DNL_UMS_PRODUCT_NUM, &dev->idProduct); ++ else ++ put_unaligned(CONFIG_USB_GADGET_PRODUCT_NUM, &dev->idProduct); ++ ++ return 0; ++} ++#endif /* CONFIG_USB_GADGET_DOWNLOAD */ ++ ++#if IS_ENABLED(CONFIG_USB_GADGET_DWC2_OTG) && !IS_ENABLED(CONFIG_DM_USB_GADGET) + #include + #include + +-- +2.44.0 + +From 2cb2428ae571956dfafb2eeed8b54857b12e17d0 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Wed, 3 Apr 2024 05:29:20 +0100 +Subject: [PATCH 4/4] rockchip: Migrate to use DM_USB_GADGET on RK3328 + +USB gadget is not working fully as expected on RK3328, it uses a +board_usb_init() function to initialize the DWC2 OTG port. + +The board_usb_init() function does not intgrate with the generic phy +framework and as a result the USB phy is not properly configured before +or after USB gadget use. + +Having both USB_DWC2 and DWC2_OTG enabled for the same board is also +causing some issues. + +Trying to use rockusb or ums command after usb stop result in a freeze +due to usb stop is putting the phy in a suspended state. + + => usb start + => usb stop + => ums 0 mmc 0 + --> freeze due to usb phy is suspended <-- + +Fix this by only using one of USB_DWC2 (host) or DWC2_OTG (peripheral) +depending on the most likely usage of the otg port and by migrating to +use DM_USB_GADGET instead of a board_usb_init() function. + +The nanopi-r2 and orangepi-r1-plus variants share OTG and power using a +Type-C connector, mark these boards dr_mode as peripheral, the most +likely usage is for recovery and image download. + +The rock64 and roc-cc currently use dr_mode as host, remove the DWC2_OTG +driver from these boards to ensure that the USB_DWC2 driver is used. + +The rock-pi-e board does not enable the usb20_otg node so both USB_DWC2 +and DWC2_OTG is removed from this board. + +Enable RockUSB and UMS on all boards with a otg port in peripheral mode. + +Also with the migration to DM_USB_GADGET completed the U-Boot specific +change to reorder usb nodes in the soc device tree can be reverted. + +Signed-off-by: Jonas Karlman +Reviewed-by: Kever Yang +Signed-off-by: Peter Robinson +--- + arch/arm/dts/rk3328-nanopi-r2s-u-boot.dtsi | 4 ++ + .../rk3328-orangepi-r1-plus-lts-u-boot.dtsi | 4 ++ + .../dts/rk3328-orangepi-r1-plus-u-boot.dtsi | 4 ++ + arch/arm/dts/rk3328-roc-cc-u-boot.dtsi | 4 ++ + arch/arm/dts/rk3328-rock-pi-e-u-boot.dtsi | 9 ++++ + arch/arm/dts/rk3328-rock64-u-boot.dtsi | 4 ++ + arch/arm/dts/rk3328-u-boot.dtsi | 4 -- + arch/arm/dts/rk3328.dtsi | 41 ++++++++----------- + configs/evb-rk3328_defconfig | 7 +++- + configs/nanopi-r2c-plus-rk3328_defconfig | 7 +++- + configs/nanopi-r2c-rk3328_defconfig | 7 +++- + configs/nanopi-r2s-rk3328_defconfig | 7 +++- + configs/orangepi-r1-plus-lts-rk3328_defconfig | 7 +++- + configs/orangepi-r1-plus-rk3328_defconfig | 7 +++- + configs/roc-cc-rk3328_defconfig | 7 ---- + configs/rock-pi-e-rk3328_defconfig | 7 ---- + configs/rock64-rk3328_defconfig | 6 --- + 17 files changed, 75 insertions(+), 61 deletions(-) + +diff --git a/arch/arm/dts/rk3328-nanopi-r2s-u-boot.dtsi b/arch/arm/dts/rk3328-nanopi-r2s-u-boot.dtsi +index 78d37ab4755..3a16f86c18a 100644 +--- a/arch/arm/dts/rk3328-nanopi-r2s-u-boot.dtsi ++++ b/arch/arm/dts/rk3328-nanopi-r2s-u-boot.dtsi +@@ -28,6 +28,10 @@ + bootph-pre-ram; + }; + ++&usb20_otg { ++ dr_mode = "peripheral"; ++}; ++ + /* Need this and all the pinctrl/gpio stuff above to set pinmux */ + &vcc_sd { + bootph-pre-ram; +diff --git a/arch/arm/dts/rk3328-orangepi-r1-plus-lts-u-boot.dtsi b/arch/arm/dts/rk3328-orangepi-r1-plus-lts-u-boot.dtsi +index ebe33e48cb9..2247daebc13 100644 +--- a/arch/arm/dts/rk3328-orangepi-r1-plus-lts-u-boot.dtsi ++++ b/arch/arm/dts/rk3328-orangepi-r1-plus-lts-u-boot.dtsi +@@ -28,6 +28,10 @@ + bootph-pre-ram; + }; + ++&usb20_otg { ++ dr_mode = "peripheral"; ++}; ++ + /* Need this and all the pinctrl/gpio stuff above to set pinmux */ + &vcc_sd { + bootph-pre-ram; +diff --git a/arch/arm/dts/rk3328-orangepi-r1-plus-u-boot.dtsi b/arch/arm/dts/rk3328-orangepi-r1-plus-u-boot.dtsi +index 637c70adf19..79942a49a29 100644 +--- a/arch/arm/dts/rk3328-orangepi-r1-plus-u-boot.dtsi ++++ b/arch/arm/dts/rk3328-orangepi-r1-plus-u-boot.dtsi +@@ -28,6 +28,10 @@ + bootph-pre-ram; + }; + ++&usb20_otg { ++ dr_mode = "peripheral"; ++}; ++ + /* Need this and all the pinctrl/gpio stuff above to set pinmux */ + &vcc_sd { + bootph-pre-ram; +diff --git a/arch/arm/dts/rk3328-roc-cc-u-boot.dtsi b/arch/arm/dts/rk3328-roc-cc-u-boot.dtsi +index 2062f34bf82..1aeb0083631 100644 +--- a/arch/arm/dts/rk3328-roc-cc-u-boot.dtsi ++++ b/arch/arm/dts/rk3328-roc-cc-u-boot.dtsi +@@ -48,6 +48,10 @@ + bootph-pre-ram; + }; + ++&usb20_otg { ++ hnp-srp-disable; ++}; ++ + /* Need this and all the pinctrl/gpio stuff above to set pinmux */ + &vcc_sd { + bootph-pre-ram; +diff --git a/arch/arm/dts/rk3328-rock-pi-e-u-boot.dtsi b/arch/arm/dts/rk3328-rock-pi-e-u-boot.dtsi +index 1f220c6dcd0..c2371fb1688 100644 +--- a/arch/arm/dts/rk3328-rock-pi-e-u-boot.dtsi ++++ b/arch/arm/dts/rk3328-rock-pi-e-u-boot.dtsi +@@ -45,6 +45,15 @@ + bootph-pre-ram; + }; + ++&u2phy_host { ++ phy-supply = <&vcc_host_5v>; ++}; ++ ++&vcc_host_5v { ++ /delete-property/ regulator-always-on; ++ /delete-property/ regulator-boot-on; ++}; ++ + /* Need this and all the pinctrl/gpio stuff above to set pinmux */ + &vcc_sd { + bootph-pre-ram; +diff --git a/arch/arm/dts/rk3328-rock64-u-boot.dtsi b/arch/arm/dts/rk3328-rock64-u-boot.dtsi +index 6904515b969..1e4649ae120 100644 +--- a/arch/arm/dts/rk3328-rock64-u-boot.dtsi ++++ b/arch/arm/dts/rk3328-rock64-u-boot.dtsi +@@ -48,6 +48,10 @@ + bootph-pre-ram; + }; + ++&usb20_otg { ++ hnp-srp-disable; ++}; ++ + /* Need this and all the pinctrl/gpio stuff above to set pinmux */ + &vcc_sd { + bootph-pre-ram; +diff --git a/arch/arm/dts/rk3328-u-boot.dtsi b/arch/arm/dts/rk3328-u-boot.dtsi +index a9f2536de2a..b5da4518ec9 100644 +--- a/arch/arm/dts/rk3328-u-boot.dtsi ++++ b/arch/arm/dts/rk3328-u-boot.dtsi +@@ -61,10 +61,6 @@ + u-boot,spl-fifo-mode; + }; + +-&usb20_otg { +- hnp-srp-disable; +-}; +- + &spi0 { + bootph-all; + }; +diff --git a/arch/arm/dts/rk3328.dtsi b/arch/arm/dts/rk3328.dtsi +index e8d8f00be8a..8c821acb21f 100644 +--- a/arch/arm/dts/rk3328.dtsi ++++ b/arch/arm/dts/rk3328.dtsi +@@ -944,6 +944,22 @@ + }; + }; + ++ usb20_otg: usb@ff580000 { ++ compatible = "rockchip,rk3328-usb", "rockchip,rk3066-usb", ++ "snps,dwc2"; ++ reg = <0x0 0xff580000 0x0 0x40000>; ++ interrupts = ; ++ clocks = <&cru HCLK_OTG>; ++ clock-names = "otg"; ++ dr_mode = "otg"; ++ g-np-tx-fifo-size = <16>; ++ g-rx-fifo-size = <280>; ++ g-tx-fifo-size = <256 128 128 64 32 16>; ++ phys = <&u2phy_otg>; ++ phy-names = "usb2-phy"; ++ status = "disabled"; ++ }; ++ + usb_host0_ehci: usb@ff5c0000 { + compatible = "generic-ehci"; + reg = <0x0 0xff5c0000 0x0 0x10000>; +@@ -983,31 +999,6 @@ + status = "disabled"; + }; + +- /* +- * U-Boot Specific Change +- * +- * The OTG controller must come after the USB host pair for it +- * to work. This is likely due to lack of support for the USB +- * PHYs. This must be manually changed after each device tree +- * sync. There is no clean way to handle this in -u-boot.dtsi +- * files. +- */ +- usb20_otg: usb@ff580000 { +- compatible = "rockchip,rk3328-usb", "rockchip,rk3066-usb", +- "snps,dwc2"; +- reg = <0x0 0xff580000 0x0 0x40000>; +- interrupts = ; +- clocks = <&cru HCLK_OTG>; +- clock-names = "otg"; +- dr_mode = "otg"; +- g-np-tx-fifo-size = <16>; +- g-rx-fifo-size = <280>; +- g-tx-fifo-size = <256 128 128 64 32 16>; +- phys = <&u2phy_otg>; +- phy-names = "usb2-phy"; +- status = "disabled"; +- }; +- + gic: interrupt-controller@ff811000 { + compatible = "arm,gic-400"; + #interrupt-cells = <3>; +diff --git a/configs/evb-rk3328_defconfig b/configs/evb-rk3328_defconfig +index b9c541a92a1..ed2e2b7aa6f 100644 +--- a/configs/evb-rk3328_defconfig ++++ b/configs/evb-rk3328_defconfig +@@ -46,6 +46,8 @@ CONFIG_CMD_BOOTZ=y + CONFIG_CMD_GPT=y + CONFIG_CMD_MMC=y + CONFIG_CMD_USB=y ++CONFIG_CMD_ROCKUSB=y ++CONFIG_CMD_USB_MASS_STORAGE=y + # CONFIG_CMD_SETEXPR is not set + CONFIG_CMD_TIME=y + CONFIG_SPL_OF_CONTROL=y +@@ -93,17 +95,18 @@ CONFIG_SYS_NS16550_MEM32=y + CONFIG_SYSRESET=y + # CONFIG_TPL_SYSRESET is not set + CONFIG_USB=y ++CONFIG_DM_USB_GADGET=y + CONFIG_USB_XHCI_HCD=y ++CONFIG_USB_XHCI_DWC3=y + CONFIG_USB_EHCI_HCD=y + CONFIG_USB_EHCI_GENERIC=y + CONFIG_USB_OHCI_HCD=y + CONFIG_USB_OHCI_GENERIC=y +-CONFIG_USB_DWC2=y + CONFIG_USB_DWC3=y + # CONFIG_USB_DWC3_GADGET is not set +-CONFIG_USB_DWC3_GENERIC=y + CONFIG_USB_GADGET=y + CONFIG_USB_GADGET_DWC2_OTG=y ++CONFIG_USB_FUNCTION_ROCKUSB=y + CONFIG_SPL_TINY_MEMSET=y + CONFIG_TPL_TINY_MEMSET=y + CONFIG_ERRNO_STR=y +diff --git a/configs/nanopi-r2c-plus-rk3328_defconfig b/configs/nanopi-r2c-plus-rk3328_defconfig +index 320ed8b434a..015bcfef369 100644 +--- a/configs/nanopi-r2c-plus-rk3328_defconfig ++++ b/configs/nanopi-r2c-plus-rk3328_defconfig +@@ -48,6 +48,8 @@ CONFIG_CMD_BOOTZ=y + CONFIG_CMD_GPT=y + CONFIG_CMD_MMC=y + CONFIG_CMD_USB=y ++CONFIG_CMD_ROCKUSB=y ++CONFIG_CMD_USB_MASS_STORAGE=y + # CONFIG_CMD_SETEXPR is not set + CONFIG_CMD_TIME=y + CONFIG_SPL_OF_CONTROL=y +@@ -98,17 +100,18 @@ CONFIG_SYSINFO=y + CONFIG_SYSRESET=y + # CONFIG_TPL_SYSRESET is not set + CONFIG_USB=y ++CONFIG_DM_USB_GADGET=y + CONFIG_USB_XHCI_HCD=y ++CONFIG_USB_XHCI_DWC3=y + CONFIG_USB_EHCI_HCD=y + CONFIG_USB_EHCI_GENERIC=y + CONFIG_USB_OHCI_HCD=y + CONFIG_USB_OHCI_GENERIC=y +-CONFIG_USB_DWC2=y + CONFIG_USB_DWC3=y + # CONFIG_USB_DWC3_GADGET is not set +-CONFIG_USB_DWC3_GENERIC=y + CONFIG_USB_GADGET=y + CONFIG_USB_GADGET_DWC2_OTG=y ++CONFIG_USB_FUNCTION_ROCKUSB=y + CONFIG_SPL_TINY_MEMSET=y + CONFIG_TPL_TINY_MEMSET=y + CONFIG_ERRNO_STR=y +diff --git a/configs/nanopi-r2c-rk3328_defconfig b/configs/nanopi-r2c-rk3328_defconfig +index 583179d7c54..5742567a3d4 100644 +--- a/configs/nanopi-r2c-rk3328_defconfig ++++ b/configs/nanopi-r2c-rk3328_defconfig +@@ -48,6 +48,8 @@ CONFIG_CMD_BOOTZ=y + CONFIG_CMD_GPT=y + CONFIG_CMD_MMC=y + CONFIG_CMD_USB=y ++CONFIG_CMD_ROCKUSB=y ++CONFIG_CMD_USB_MASS_STORAGE=y + # CONFIG_CMD_SETEXPR is not set + CONFIG_CMD_TIME=y + CONFIG_SPL_OF_CONTROL=y +@@ -98,17 +100,18 @@ CONFIG_SYSINFO=y + CONFIG_SYSRESET=y + # CONFIG_TPL_SYSRESET is not set + CONFIG_USB=y ++CONFIG_DM_USB_GADGET=y + CONFIG_USB_XHCI_HCD=y ++CONFIG_USB_XHCI_DWC3=y + CONFIG_USB_EHCI_HCD=y + CONFIG_USB_EHCI_GENERIC=y + CONFIG_USB_OHCI_HCD=y + CONFIG_USB_OHCI_GENERIC=y +-CONFIG_USB_DWC2=y + CONFIG_USB_DWC3=y + # CONFIG_USB_DWC3_GADGET is not set +-CONFIG_USB_DWC3_GENERIC=y + CONFIG_USB_GADGET=y + CONFIG_USB_GADGET_DWC2_OTG=y ++CONFIG_USB_FUNCTION_ROCKUSB=y + CONFIG_SPL_TINY_MEMSET=y + CONFIG_TPL_TINY_MEMSET=y + CONFIG_ERRNO_STR=y +diff --git a/configs/nanopi-r2s-rk3328_defconfig b/configs/nanopi-r2s-rk3328_defconfig +index f7ed71e4122..180a76e0eeb 100644 +--- a/configs/nanopi-r2s-rk3328_defconfig ++++ b/configs/nanopi-r2s-rk3328_defconfig +@@ -48,6 +48,8 @@ CONFIG_CMD_BOOTZ=y + CONFIG_CMD_GPT=y + CONFIG_CMD_MMC=y + CONFIG_CMD_USB=y ++CONFIG_CMD_ROCKUSB=y ++CONFIG_CMD_USB_MASS_STORAGE=y + # CONFIG_CMD_SETEXPR is not set + CONFIG_CMD_TIME=y + CONFIG_SPL_OF_CONTROL=y +@@ -98,17 +100,18 @@ CONFIG_SYSINFO=y + CONFIG_SYSRESET=y + # CONFIG_TPL_SYSRESET is not set + CONFIG_USB=y ++CONFIG_DM_USB_GADGET=y + CONFIG_USB_XHCI_HCD=y ++CONFIG_USB_XHCI_DWC3=y + CONFIG_USB_EHCI_HCD=y + CONFIG_USB_EHCI_GENERIC=y + CONFIG_USB_OHCI_HCD=y + CONFIG_USB_OHCI_GENERIC=y +-CONFIG_USB_DWC2=y + CONFIG_USB_DWC3=y + # CONFIG_USB_DWC3_GADGET is not set +-CONFIG_USB_DWC3_GENERIC=y + CONFIG_USB_GADGET=y + CONFIG_USB_GADGET_DWC2_OTG=y ++CONFIG_USB_FUNCTION_ROCKUSB=y + CONFIG_SPL_TINY_MEMSET=y + CONFIG_TPL_TINY_MEMSET=y + CONFIG_ERRNO_STR=y +diff --git a/configs/orangepi-r1-plus-lts-rk3328_defconfig b/configs/orangepi-r1-plus-lts-rk3328_defconfig +index d3d9417509e..a1a96bf2f28 100644 +--- a/configs/orangepi-r1-plus-lts-rk3328_defconfig ++++ b/configs/orangepi-r1-plus-lts-rk3328_defconfig +@@ -48,6 +48,8 @@ CONFIG_CMD_BOOTZ=y + CONFIG_CMD_GPT=y + CONFIG_CMD_MMC=y + CONFIG_CMD_USB=y ++CONFIG_CMD_ROCKUSB=y ++CONFIG_CMD_USB_MASS_STORAGE=y + # CONFIG_CMD_SETEXPR is not set + CONFIG_CMD_TIME=y + CONFIG_SPL_OF_CONTROL=y +@@ -99,17 +101,18 @@ CONFIG_SYSINFO=y + CONFIG_SYSRESET=y + # CONFIG_TPL_SYSRESET is not set + CONFIG_USB=y ++CONFIG_DM_USB_GADGET=y + CONFIG_USB_XHCI_HCD=y ++CONFIG_USB_XHCI_DWC3=y + CONFIG_USB_EHCI_HCD=y + CONFIG_USB_EHCI_GENERIC=y + CONFIG_USB_OHCI_HCD=y + CONFIG_USB_OHCI_GENERIC=y +-CONFIG_USB_DWC2=y + CONFIG_USB_DWC3=y + # CONFIG_USB_DWC3_GADGET is not set +-CONFIG_USB_DWC3_GENERIC=y + CONFIG_USB_GADGET=y + CONFIG_USB_GADGET_DWC2_OTG=y ++CONFIG_USB_FUNCTION_ROCKUSB=y + CONFIG_SPL_TINY_MEMSET=y + CONFIG_TPL_TINY_MEMSET=y + CONFIG_ERRNO_STR=y +diff --git a/configs/orangepi-r1-plus-rk3328_defconfig b/configs/orangepi-r1-plus-rk3328_defconfig +index 9356e87132e..04273a0491c 100644 +--- a/configs/orangepi-r1-plus-rk3328_defconfig ++++ b/configs/orangepi-r1-plus-rk3328_defconfig +@@ -48,6 +48,8 @@ CONFIG_CMD_BOOTZ=y + CONFIG_CMD_GPT=y + CONFIG_CMD_MMC=y + CONFIG_CMD_USB=y ++CONFIG_CMD_ROCKUSB=y ++CONFIG_CMD_USB_MASS_STORAGE=y + # CONFIG_CMD_SETEXPR is not set + CONFIG_CMD_TIME=y + CONFIG_SPL_OF_CONTROL=y +@@ -99,17 +101,18 @@ CONFIG_SYSINFO=y + CONFIG_SYSRESET=y + # CONFIG_TPL_SYSRESET is not set + CONFIG_USB=y ++CONFIG_DM_USB_GADGET=y + CONFIG_USB_XHCI_HCD=y ++CONFIG_USB_XHCI_DWC3=y + CONFIG_USB_EHCI_HCD=y + CONFIG_USB_EHCI_GENERIC=y + CONFIG_USB_OHCI_HCD=y + CONFIG_USB_OHCI_GENERIC=y +-CONFIG_USB_DWC2=y + CONFIG_USB_DWC3=y + # CONFIG_USB_DWC3_GADGET is not set +-CONFIG_USB_DWC3_GENERIC=y + CONFIG_USB_GADGET=y + CONFIG_USB_GADGET_DWC2_OTG=y ++CONFIG_USB_FUNCTION_ROCKUSB=y + CONFIG_SPL_TINY_MEMSET=y + CONFIG_TPL_TINY_MEMSET=y + CONFIG_ERRNO_STR=y +diff --git a/configs/roc-cc-rk3328_defconfig b/configs/roc-cc-rk3328_defconfig +index 4ac3c9403b0..0e4edcc999d 100644 +--- a/configs/roc-cc-rk3328_defconfig ++++ b/configs/roc-cc-rk3328_defconfig +@@ -23,7 +23,6 @@ CONFIG_DEBUG_UART_BASE=0xFF130000 + CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0x800800 + CONFIG_DEBUG_UART=y +-# CONFIG_ANDROID_BOOT_IMAGE is not set + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_LOAD_FIT=y +@@ -48,7 +47,6 @@ CONFIG_CMD_BOOTZ=y + CONFIG_CMD_GPT=y + CONFIG_CMD_MMC=y + CONFIG_CMD_USB=y +-CONFIG_CMD_USB_MASS_STORAGE=y + # CONFIG_CMD_SETEXPR is not set + CONFIG_CMD_TIME=y + CONFIG_SPL_OF_CONTROL=y +@@ -68,8 +66,6 @@ CONFIG_SPL_SYSCON=y + CONFIG_TPL_SYSCON=y + CONFIG_CLK=y + CONFIG_SPL_CLK=y +-CONFIG_FASTBOOT_BUF_ADDR=0x800800 +-CONFIG_FASTBOOT_CMD_OEM_FORMAT=y + CONFIG_ROCKCHIP_GPIO=y + CONFIG_SYS_I2C_ROCKCHIP=y + CONFIG_MISC=y +@@ -110,10 +106,7 @@ CONFIG_USB_OHCI_HCD=y + CONFIG_USB_OHCI_GENERIC=y + CONFIG_USB_DWC2=y + CONFIG_USB_DWC3=y +-# CONFIG_USB_DWC3_GADGET is not set + CONFIG_USB_DWC3_GENERIC=y +-CONFIG_USB_GADGET=y +-CONFIG_USB_GADGET_DWC2_OTG=y + CONFIG_SPL_TINY_MEMSET=y + CONFIG_TPL_TINY_MEMSET=y + CONFIG_ERRNO_STR=y +diff --git a/configs/rock-pi-e-rk3328_defconfig b/configs/rock-pi-e-rk3328_defconfig +index 6dda900a9b4..6a4284120d2 100644 +--- a/configs/rock-pi-e-rk3328_defconfig ++++ b/configs/rock-pi-e-rk3328_defconfig +@@ -24,7 +24,6 @@ CONFIG_DEBUG_UART_BASE=0xFF130000 + CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0x800800 + CONFIG_DEBUG_UART=y +-# CONFIG_ANDROID_BOOT_IMAGE is not set + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_LOAD_FIT=y +@@ -69,8 +68,6 @@ CONFIG_SPL_SYSCON=y + CONFIG_TPL_SYSCON=y + CONFIG_CLK=y + CONFIG_SPL_CLK=y +-CONFIG_FASTBOOT_BUF_ADDR=0x800800 +-CONFIG_FASTBOOT_CMD_OEM_FORMAT=y + CONFIG_ROCKCHIP_GPIO=y + CONFIG_SYS_I2C_ROCKCHIP=y + CONFIG_MISC=y +@@ -109,12 +106,8 @@ CONFIG_USB_EHCI_HCD=y + CONFIG_USB_EHCI_GENERIC=y + CONFIG_USB_OHCI_HCD=y + CONFIG_USB_OHCI_GENERIC=y +-CONFIG_USB_DWC2=y + CONFIG_USB_DWC3=y +-# CONFIG_USB_DWC3_GADGET is not set + CONFIG_USB_DWC3_GENERIC=y +-CONFIG_USB_GADGET=y +-CONFIG_USB_GADGET_DWC2_OTG=y + CONFIG_SPL_TINY_MEMSET=y + CONFIG_TPL_TINY_MEMSET=y + CONFIG_ERRNO_STR=y +diff --git a/configs/rock64-rk3328_defconfig b/configs/rock64-rk3328_defconfig +index 0297d098761..fd42059565a 100644 +--- a/configs/rock64-rk3328_defconfig ++++ b/configs/rock64-rk3328_defconfig +@@ -23,7 +23,6 @@ CONFIG_DEBUG_UART_BASE=0xFF130000 + CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0x800800 + CONFIG_DEBUG_UART=y +-# CONFIG_ANDROID_BOOT_IMAGE is not set + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_LOAD_FIT=y +@@ -67,8 +66,6 @@ CONFIG_SPL_SYSCON=y + CONFIG_TPL_SYSCON=y + CONFIG_CLK=y + CONFIG_SPL_CLK=y +-CONFIG_FASTBOOT_BUF_ADDR=0x800800 +-CONFIG_FASTBOOT_CMD_OEM_FORMAT=y + CONFIG_ROCKCHIP_GPIO=y + CONFIG_SYS_I2C_ROCKCHIP=y + CONFIG_MISC=y +@@ -111,10 +108,7 @@ CONFIG_USB_OHCI_HCD=y + CONFIG_USB_OHCI_GENERIC=y + CONFIG_USB_DWC2=y + CONFIG_USB_DWC3=y +-# CONFIG_USB_DWC3_GADGET is not set + CONFIG_USB_DWC3_GENERIC=y +-CONFIG_USB_GADGET=y +-CONFIG_USB_GADGET_DWC2_OTG=y + CONFIG_SPL_TINY_MEMSET=y + CONFIG_TPL_TINY_MEMSET=y + CONFIG_ERRNO_STR=y +-- +2.44.0 + diff --git a/sources b/sources index c146dd5..6013800 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2024.04-rc5.tar.bz2) = 1e985d9b9840b8ea9ed8f10f6e22d503ad87373b12c1a081c3d270f630d16a7881fd4ce072cbf08c20a2a038d458d6e161fa21494967d771d2494c378c7c2d6f +SHA512 (u-boot-2024.04.tar.bz2) = a71270302b38e9e68a83b3acdf8f7635f72d9fa75169e3c2241cdfa21eab834b8f25dfd35c281191bccb2fcec1e86d6b64afcf1d2ed5cd4fdc02258cd75fc236 diff --git a/uboot-tools.spec b/uboot-tools.spec index cd5dff5..aefeb8b 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc5 +#global candidate rc5 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2024.04 -Release: 0.8%{?candidate:.%{candidate}}%{?dist} +Release: 1%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ @@ -35,6 +35,8 @@ Patch10: rpi-Switch-to-OF_HAS_PRIOR_STAGE-by-default.patch # Rockchips improvements Patch11: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch Patch12: rockchip-Enable-preboot-start-for-pci-usb.patch +Patch13: phy-rockchip-inno-usb2-Write-to-correct-GRF.patch +Patch14: rockchip-Migrate-to-use-DM_USB_GADGET-on-RK3328.patch BuildRequires: bc BuildRequires: bison @@ -190,6 +192,10 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Wed Apr 03 2024 Peter Robinson - 1:2024.04-1 +- Update to 2024.04 GA +- Rockchip rk3328 USB fixes + * Wed Mar 27 2024 Peter Robinson - 1:2024.04-0.8.rc5 - Update to 2024.04 RC5 From 69c93ea5d0cd3de940cd335514d81eb4f0717cf0 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sat, 25 May 2024 12:30:42 +0100 Subject: [PATCH 177/271] Update to 2024.07-rc3 --- Add-video-damage-tracking.patch | 248 +++---- aarch64-boards | 2 +- ...kchip-inno-usb2-Write-to-correct-GRF.patch | 572 --------------- ...nitial-support-for-the-PinePhone-Pro.patch | 236 ------ ...hip-Enable-preboot-start-for-pci-usb.patch | 79 +- ...grate-to-use-DM_USB_GADGET-on-RK3328.patch | 691 ------------------ ...tch-to-OF_HAS_PRIOR_STAGE-by-default.patch | 154 ---- sources | 2 +- uboot-tools.spec | 17 +- 9 files changed, 175 insertions(+), 1826 deletions(-) delete mode 100644 phy-rockchip-inno-usb2-Write-to-correct-GRF.patch delete mode 100644 rockchip-Add-initial-support-for-the-PinePhone-Pro.patch delete mode 100644 rockchip-Migrate-to-use-DM_USB_GADGET-on-RK3328.patch delete mode 100644 rpi-Switch-to-OF_HAS_PRIOR_STAGE-by-default.patch diff --git a/Add-video-damage-tracking.patch b/Add-video-damage-tracking.patch index 7ba10f6..1aea71e 100644 --- a/Add-video-damage-tracking.patch +++ b/Add-video-damage-tracking.patch @@ -1,4 +1,4 @@ -From 79c2ed100ee9b901d676567e73ea4ebde84f15bc Mon Sep 17 00:00:00 2001 +From 26fad18312fe9cb0ed97ed8550b1c704d0985ebe Mon Sep 17 00:00:00 2001 From: Alper Nebi Yasak Date: Mon, 21 Aug 2023 16:50:58 +0300 Subject: [PATCH 01/13] video: test: Split copy frame buffer check into a @@ -300,9 +300,9 @@ index d907f681600..641a6250100 100644 return 0; } -- -2.43.0 +2.45.1 -From eb6a5cd225f0818e5dec2253e0c676142c3835a1 Mon Sep 17 00:00:00 2001 +From 6c7cff43f374242ed4d585f7359fa5c334332a0a Mon Sep 17 00:00:00 2001 From: Alper Nebi Yasak Date: Mon, 21 Aug 2023 16:50:59 +0300 Subject: [PATCH 02/13] video: test: Support checking copy frame buffer @@ -611,9 +611,9 @@ index 641a6250100..b9ff3da10c1 100644 return 0; -- -2.43.0 +2.45.1 -From 4c80b655e5c82acd1573e80668747d8ef25deb83 Mon Sep 17 00:00:00 2001 +From 1020e92b30457fa042a78395dabce0f50d07de8e Mon Sep 17 00:00:00 2001 From: Alper Nebi Yasak Date: Mon, 21 Aug 2023 16:51:00 +0300 Subject: [PATCH 03/13] video: test: Test partial updates of hardware frame @@ -694,9 +694,9 @@ index b9ff3da10c1..e4bd27a6b76 100644 +} +DM_TEST(dm_test_video_copy, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); -- -2.43.0 +2.45.1 -From 40f4addde7e05ce94fb74cd7d6795265ad282de6 Mon Sep 17 00:00:00 2001 +From 57b3429b596c7ed89c1858663c87865e11d965e2 Mon Sep 17 00:00:00 2001 From: Alexander Graf Date: Mon, 21 Aug 2023 16:51:01 +0300 Subject: [PATCH 04/13] dm: video: Add damage tracking API @@ -721,7 +721,7 @@ Reviewed-by: Simon Glass 3 files changed, 81 insertions(+), 5 deletions(-) diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig -index ab927641bb7..ac3edbfdb54 100644 +index 7808ae7919e..7815b590481 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig @@ -92,6 +92,19 @@ config VIDEO_COPY @@ -745,10 +745,10 @@ index ab927641bb7..ac3edbfdb54 100644 bool "Generic PWM based Backlight Driver" depends on BACKLIGHT && DM_PWM diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c -index f743ed74c81..9888a580bfd 100644 +index 7b5d1dfbb3b..99a8458199a 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c -@@ -351,9 +351,39 @@ void video_set_default_colors(struct udevice *dev, bool invert) +@@ -347,9 +347,39 @@ void video_set_default_colors(struct udevice *dev, bool invert) priv->colour_bg = video_index_to_colour(priv, back); } @@ -788,7 +788,7 @@ index f743ed74c81..9888a580bfd 100644 struct video_ops *ops = video_get_ops(vid); int ret; -@@ -369,15 +399,12 @@ int video_sync(struct udevice *vid, bool force) +@@ -365,15 +395,12 @@ int video_sync(struct udevice *vid, bool force) * out whether it exists? For now, ARM is safe. */ #if defined(CONFIG_ARM) && !CONFIG_IS_ENABLED(SYS_DCACHE_OFF) @@ -804,7 +804,7 @@ index f743ed74c81..9888a580bfd 100644 static ulong last_sync; if (force || get_timer(last_sync) > 100) { -@@ -385,6 +412,14 @@ int video_sync(struct udevice *vid, bool force) +@@ -381,6 +408,14 @@ int video_sync(struct udevice *vid, bool force) last_sync = get_timer(0); } #endif @@ -884,9 +884,9 @@ index 4d8df9baaad..1310195f307 100644 * video_is_active() - Test if one video device it active * -- -2.43.0 +2.45.1 -From 38f85c1620b99691bc0bd06a18c7173386a0a846 Mon Sep 17 00:00:00 2001 +From 6677746b0fc8b653af608513bdef54b379b4ee7d Mon Sep 17 00:00:00 2001 From: Alexander Graf Date: Mon, 21 Aug 2023 16:51:02 +0300 Subject: [PATCH 05/13] dm: video: Add damage notification on display fills @@ -904,10 +904,10 @@ Reviewed-by: Simon Glass 1 file changed, 4 insertions(+) diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c -index 9888a580bfd..09172f1f7f4 100644 +index 99a8458199a..96b8962b8de 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c -@@ -203,6 +203,8 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, +@@ -196,6 +196,8 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, if (ret) return ret; @@ -916,7 +916,7 @@ index 9888a580bfd..09172f1f7f4 100644 return 0; } -@@ -249,6 +251,8 @@ int video_fill(struct udevice *dev, u32 colour) +@@ -245,6 +247,8 @@ int video_fill(struct udevice *dev, u32 colour) if (ret) return ret; @@ -926,9 +926,9 @@ index 9888a580bfd..09172f1f7f4 100644 } -- -2.43.0 +2.45.1 -From 77425d7aca92bf734e51cf36fad658adc53cb57d Mon Sep 17 00:00:00 2001 +From 96ee787a7966c0357e5f028317b85a8593757883 Mon Sep 17 00:00:00 2001 From: Alexander Graf Date: Mon, 21 Aug 2023 16:51:03 +0300 Subject: [PATCH 06/13] vidconsole: Add damage notifications to all vidconsole @@ -953,10 +953,10 @@ Reviewed-by: Simon Glass 4 files changed, 94 insertions(+) diff --git a/drivers/video/console_normal.c b/drivers/video/console_normal.c -index a0231293f31..ad7ce860e9d 100644 +index 34ef5a52294..6634d3f27da 100644 --- a/drivers/video/console_normal.c +++ b/drivers/video/console_normal.c -@@ -39,6 +39,12 @@ static int console_set_row(struct udevice *dev, uint row, int clr) +@@ -40,6 +40,12 @@ static int console_set_row(struct udevice *dev, uint row, int clr) if (ret) return ret; @@ -969,7 +969,7 @@ index a0231293f31..ad7ce860e9d 100644 return 0; } -@@ -60,6 +66,12 @@ static int console_move_rows(struct udevice *dev, uint rowdst, +@@ -61,6 +67,12 @@ static int console_move_rows(struct udevice *dev, uint rowdst, if (ret) return ret; @@ -982,7 +982,7 @@ index a0231293f31..ad7ce860e9d 100644 return 0; } -@@ -90,6 +102,12 @@ static int console_putc_xy(struct udevice *dev, uint x_frac, uint y, char ch) +@@ -92,6 +104,12 @@ static int console_putc_xy(struct udevice *dev, uint x_frac, uint y, int cp) if (ret) return ret; @@ -996,10 +996,10 @@ index a0231293f31..ad7ce860e9d 100644 if (ret) return ret; diff --git a/drivers/video/console_rotate.c b/drivers/video/console_rotate.c -index 65358a1c6e7..6c3e7c1bb8d 100644 +index e4303dfb364..8129c7b2aa7 100644 --- a/drivers/video/console_rotate.c +++ b/drivers/video/console_rotate.c -@@ -36,6 +36,12 @@ static int console_set_row_1(struct udevice *dev, uint row, int clr) +@@ -37,6 +37,12 @@ static int console_set_row_1(struct udevice *dev, uint row, int clr) if (ret) return ret; @@ -1012,7 +1012,7 @@ index 65358a1c6e7..6c3e7c1bb8d 100644 return 0; } -@@ -64,6 +70,12 @@ static int console_move_rows_1(struct udevice *dev, uint rowdst, uint rowsrc, +@@ -65,6 +71,12 @@ static int console_move_rows_1(struct udevice *dev, uint rowdst, uint rowsrc, dst += vid_priv->line_length; } @@ -1025,7 +1025,7 @@ index 65358a1c6e7..6c3e7c1bb8d 100644 return 0; } -@@ -96,6 +108,12 @@ static int console_putc_xy_1(struct udevice *dev, uint x_frac, uint y, char ch) +@@ -98,6 +110,12 @@ static int console_putc_xy_1(struct udevice *dev, uint x_frac, uint y, int cp) if (ret) return ret; @@ -1038,7 +1038,7 @@ index 65358a1c6e7..6c3e7c1bb8d 100644 return VID_TO_POS(fontdata->width); } -@@ -121,6 +139,12 @@ static int console_set_row_2(struct udevice *dev, uint row, int clr) +@@ -123,6 +141,12 @@ static int console_set_row_2(struct udevice *dev, uint row, int clr) if (ret) return ret; @@ -1051,7 +1051,7 @@ index 65358a1c6e7..6c3e7c1bb8d 100644 return 0; } -@@ -142,6 +166,12 @@ static int console_move_rows_2(struct udevice *dev, uint rowdst, uint rowsrc, +@@ -144,6 +168,12 @@ static int console_move_rows_2(struct udevice *dev, uint rowdst, uint rowsrc, vidconsole_memmove(dev, dst, src, fontdata->height * vid_priv->line_length * count); @@ -1064,7 +1064,7 @@ index 65358a1c6e7..6c3e7c1bb8d 100644 return 0; } -@@ -174,6 +204,12 @@ static int console_putc_xy_2(struct udevice *dev, uint x_frac, uint y, char ch) +@@ -177,6 +207,12 @@ static int console_putc_xy_2(struct udevice *dev, uint x_frac, uint y, int cp) if (ret) return ret; @@ -1077,7 +1077,7 @@ index 65358a1c6e7..6c3e7c1bb8d 100644 return VID_TO_POS(fontdata->width); } -@@ -198,6 +234,12 @@ static int console_set_row_3(struct udevice *dev, uint row, int clr) +@@ -201,6 +237,12 @@ static int console_set_row_3(struct udevice *dev, uint row, int clr) if (ret) return ret; @@ -1090,7 +1090,7 @@ index 65358a1c6e7..6c3e7c1bb8d 100644 return 0; } -@@ -224,6 +266,12 @@ static int console_move_rows_3(struct udevice *dev, uint rowdst, uint rowsrc, +@@ -227,6 +269,12 @@ static int console_move_rows_3(struct udevice *dev, uint rowdst, uint rowsrc, dst += vid_priv->line_length; } @@ -1103,7 +1103,7 @@ index 65358a1c6e7..6c3e7c1bb8d 100644 return 0; } -@@ -255,6 +303,12 @@ static int console_putc_xy_3(struct udevice *dev, uint x_frac, uint y, char ch) +@@ -259,6 +307,12 @@ static int console_putc_xy_3(struct udevice *dev, uint x_frac, uint y, int cp) if (ret) return ret; @@ -1117,10 +1117,10 @@ index 65358a1c6e7..6c3e7c1bb8d 100644 } diff --git a/drivers/video/console_truetype.c b/drivers/video/console_truetype.c -index 14fb81e9563..c0a5ad1a51e 100644 +index 28665a32757..ed6c9cbb4f4 100644 --- a/drivers/video/console_truetype.c +++ b/drivers/video/console_truetype.c -@@ -190,6 +190,7 @@ struct console_tt_store { +@@ -191,6 +191,7 @@ struct console_tt_store { static int console_truetype_set_row(struct udevice *dev, uint row, int clr) { struct video_priv *vid_priv = dev_get_uclass_priv(dev->parent); @@ -1128,7 +1128,7 @@ index 14fb81e9563..c0a5ad1a51e 100644 struct console_tt_priv *priv = dev_get_priv(dev); struct console_tt_metrics *met = priv->cur_met; void *end, *line; -@@ -233,6 +234,12 @@ static int console_truetype_set_row(struct udevice *dev, uint row, int clr) +@@ -234,6 +235,12 @@ static int console_truetype_set_row(struct udevice *dev, uint row, int clr) if (ret) return ret; @@ -1141,7 +1141,7 @@ index 14fb81e9563..c0a5ad1a51e 100644 return 0; } -@@ -240,6 +247,7 @@ static int console_truetype_move_rows(struct udevice *dev, uint rowdst, +@@ -241,6 +248,7 @@ static int console_truetype_move_rows(struct udevice *dev, uint rowdst, uint rowsrc, uint count) { struct video_priv *vid_priv = dev_get_uclass_priv(dev->parent); @@ -1149,7 +1149,7 @@ index 14fb81e9563..c0a5ad1a51e 100644 struct console_tt_priv *priv = dev_get_priv(dev); struct console_tt_metrics *met = priv->cur_met; void *dst; -@@ -258,6 +266,12 @@ static int console_truetype_move_rows(struct udevice *dev, uint rowdst, +@@ -259,6 +267,12 @@ static int console_truetype_move_rows(struct udevice *dev, uint rowdst, for (i = 0; i < priv->pos_ptr; i++) priv->pos[i].ypos -= diff; @@ -1162,7 +1162,7 @@ index 14fb81e9563..c0a5ad1a51e 100644 return 0; } -@@ -415,6 +429,13 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y, +@@ -419,6 +433,13 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y, line += vid_priv->line_length; } @@ -1177,10 +1177,10 @@ index 14fb81e9563..c0a5ad1a51e 100644 if (ret) return ret; diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c -index 09172f1f7f4..06e344f415c 100644 +index 96b8962b8de..cbdda274f2d 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c -@@ -199,6 +199,7 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, +@@ -192,6 +192,7 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, } line += priv->line_length; } @@ -1189,9 +1189,9 @@ index 09172f1f7f4..06e344f415c 100644 if (ret) return ret; -- -2.43.0 +2.45.1 -From b44368015bdea3e71cb1c392afa124e6d26ab798 Mon Sep 17 00:00:00 2001 +From 077a499a8fc2ccad28114264c8792d342bf8536c Mon Sep 17 00:00:00 2001 From: Alper Nebi Yasak Date: Mon, 21 Aug 2023 16:51:04 +0300 Subject: [PATCH 07/13] video: test: Test video damage tracking via vidconsole @@ -1209,10 +1209,10 @@ Reviewed-by: Simon Glass 2 files changed, 57 insertions(+) diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig -index bc5bcb2a623..fa6b23f365c 100644 +index 93b52f2de5c..2051f0a3d7a 100644 --- a/configs/sandbox_defconfig +++ b/configs/sandbox_defconfig -@@ -311,6 +311,7 @@ CONFIG_USB_ETH_CDC=y +@@ -319,6 +319,7 @@ CONFIG_USB_ETH_CDC=y CONFIG_VIDEO=y CONFIG_VIDEO_FONT_SUN12X22=y CONFIG_VIDEO_COPY=y @@ -1285,9 +1285,9 @@ index e4bd27a6b76..8c7d9800a42 100644 +} +DM_TEST(dm_test_video_damage, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); -- -2.43.0 +2.45.1 -From 9278f6c9492b0a7960a6ee2294a524ef150bf1cb Mon Sep 17 00:00:00 2001 +From e5b927255d0375408a5ff14403a978aca09fa68f Mon Sep 17 00:00:00 2001 From: Alexander Graf Date: Mon, 21 Aug 2023 16:51:05 +0300 Subject: [PATCH 08/13] video: Add damage notification on bmp display @@ -1317,9 +1317,9 @@ index 45f003c8251..10943b9ca19 100644 fb = (uchar *)(priv->fb + y * priv->line_length + x * bpix / 8); ret = video_sync_copy(dev, start, fb); -- -2.43.0 +2.45.1 -From b56b97ef176a2753a9827d761760a829eece00d0 Mon Sep 17 00:00:00 2001 +From d31ef2b17c98d0b7b1040e5abda99bb1720eb8c0 Mon Sep 17 00:00:00 2001 From: Alexander Graf Date: Mon, 21 Aug 2023 16:51:06 +0300 Subject: [PATCH 09/13] efi_loader: GOP: Add damage notification on BLT @@ -1338,10 +1338,10 @@ Reviewed-by: Simon Glass 1 file changed, 7 insertions(+) diff --git a/lib/efi_loader/efi_gop.c b/lib/efi_loader/efi_gop.c -index a09db31eb46..ede77af1fe4 100644 +index 41e12fa7246..1694e23dcc6 100644 --- a/lib/efi_loader/efi_gop.c +++ b/lib/efi_loader/efi_gop.c -@@ -25,6 +25,7 @@ static const efi_guid_t efi_gop_guid = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID; +@@ -24,6 +24,7 @@ static const efi_guid_t efi_gop_guid = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID; * @ops: graphical output protocol interface * @info: graphical output mode information * @mode: graphical output mode @@ -1349,7 +1349,7 @@ index a09db31eb46..ede77af1fe4 100644 * @bpix: bits per pixel * @fb: frame buffer */ -@@ -33,6 +34,7 @@ struct efi_gop_obj { +@@ -32,6 +33,7 @@ struct efi_gop_obj { struct efi_gop ops; struct efi_gop_mode_info info; struct efi_gop_mode mode; @@ -1357,7 +1357,7 @@ index a09db31eb46..ede77af1fe4 100644 /* Fields we only have access to during init */ u32 bpix; void *fb; -@@ -121,6 +123,7 @@ static __always_inline efi_status_t gop_blt_int(struct efi_gop *this, +@@ -120,6 +122,7 @@ static __always_inline efi_status_t gop_blt_int(struct efi_gop *this, u32 *fb32 = gopobj->fb; u16 *fb16 = gopobj->fb; struct efi_gop_pixel *buffer = __builtin_assume_aligned(bufferp, 4); @@ -1365,7 +1365,7 @@ index a09db31eb46..ede77af1fe4 100644 if (delta) { /* Check for 4 byte alignment */ -@@ -244,6 +247,9 @@ static __always_inline efi_status_t gop_blt_int(struct efi_gop *this, +@@ -243,6 +246,9 @@ static __always_inline efi_status_t gop_blt_int(struct efi_gop *this, dlineoff += dwidth; } @@ -1375,7 +1375,7 @@ index a09db31eb46..ede77af1fe4 100644 return EFI_SUCCESS; } -@@ -550,6 +556,7 @@ efi_status_t efi_gop_register(void) +@@ -549,6 +555,7 @@ efi_status_t efi_gop_register(void) gopobj->info.pixels_per_scanline = col; gopobj->bpix = bpix; gopobj->fb = map_sysmem(fb_base, fb_size); @@ -1384,9 +1384,9 @@ index a09db31eb46..ede77af1fe4 100644 return EFI_SUCCESS; } -- -2.43.0 +2.45.1 -From e77793c6320f827b4f8efc06bd55d38037b6373e Mon Sep 17 00:00:00 2001 +From 63e4c90e38c476d89148f4328778af0adcbe7adf Mon Sep 17 00:00:00 2001 From: Alexander Graf Date: Mon, 21 Aug 2023 16:51:07 +0300 Subject: [PATCH 10/13] video: Only dcache flush damaged lines @@ -1406,10 +1406,10 @@ Signed-off-by: Alper Nebi Yasak 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c -index 06e344f415c..ac2141892bf 100644 +index cbdda274f2d..e009be4f55d 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c -@@ -385,6 +385,41 @@ void video_damage(struct udevice *vid, int x, int y, int width, int height) +@@ -381,6 +381,41 @@ void video_damage(struct udevice *vid, int x, int y, int width, int height) priv->damage.yend = max(yend, priv->damage.yend); } @@ -1451,7 +1451,7 @@ index 06e344f415c..ac2141892bf 100644 /* Flush video activity to the caches */ int video_sync(struct udevice *vid, bool force) { -@@ -404,11 +439,7 @@ int video_sync(struct udevice *vid, bool force) +@@ -400,11 +435,7 @@ int video_sync(struct udevice *vid, bool force) * out whether it exists? For now, ARM is safe. */ #if defined(CONFIG_ARM) && !CONFIG_IS_ENABLED(SYS_DCACHE_OFF) @@ -1465,12 +1465,15 @@ index 06e344f415c..ac2141892bf 100644 static ulong last_sync; -- -2.43.0 +2.45.1 -From e9d51b4dcbfa43aa0e4d2b4f285bf94c295603e4 Mon Sep 17 00:00:00 2001 -From: Alexander Graf -Date: Mon, 21 Aug 2023 16:51:08 +0300 -Subject: [PATCH 11/13] video: Use VIDEO_DAMAGE for VIDEO_COPY +From 09e504af253b3f3062891d59ad17c4fb8193dcc7 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Sat, 25 May 2024 12:18:41 +0100 +Subject: [PATCH 11/13] From e9d51b4dcbfa43aa0e4d2b4f285bf94c295603e4 Mon Sep + 17 00:00:00 2001 From: Alexander Graf Date: Mon, 21 Aug + 2023 16:51:08 +0300 Subject: [PATCH 11/13] video: Use VIDEO_DAMAGE for + VIDEO_COPY CONFIG_VIDEO_COPY implemented a range-based copying mechanism: If we print a single character, it will always copy the full range of bytes @@ -1494,6 +1497,7 @@ Signed-off-by: Alexander Graf call video_sync() before copy_fb check, update video_copy test] Co-developed-by: Alper Nebi Yasak Signed-off-by: Alper Nebi Yasak +Signed-off-by: Peter Robinson --- configs/sandbox_defconfig | 1 - drivers/video/Kconfig | 5 ++ @@ -1509,10 +1513,10 @@ Signed-off-by: Alper Nebi Yasak 11 files changed, 43 insertions(+), 248 deletions(-) diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig -index fa6b23f365c..bc5bcb2a623 100644 +index 2051f0a3d7a..93b52f2de5c 100644 --- a/configs/sandbox_defconfig +++ b/configs/sandbox_defconfig -@@ -311,7 +311,6 @@ CONFIG_USB_ETH_CDC=y +@@ -319,7 +319,6 @@ CONFIG_USB_ETH_CDC=y CONFIG_VIDEO=y CONFIG_VIDEO_FONT_SUN12X22=y CONFIG_VIDEO_COPY=y @@ -1521,7 +1525,7 @@ index fa6b23f365c..bc5bcb2a623 100644 CONFIG_CONSOLE_TRUETYPE=y CONFIG_CONSOLE_TRUETYPE_CANTORAONE=y diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig -index ac3edbfdb54..438cf3d4899 100644 +index 7815b590481..88c6f8e6897 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig @@ -83,11 +83,14 @@ config VIDEO_PCI_DEFAULT_FB_SIZE @@ -1549,10 +1553,10 @@ index ac3edbfdb54..438cf3d4899 100644 bool "Generic PWM based Backlight Driver" depends on BACKLIGHT && DM_PWM diff --git a/drivers/video/console_normal.c b/drivers/video/console_normal.c -index ad7ce860e9d..5625dbb8d08 100644 +index 6634d3f27da..fbfd2caabc6 100644 --- a/drivers/video/console_normal.c +++ b/drivers/video/console_normal.c -@@ -35,10 +35,6 @@ static int console_set_row(struct udevice *dev, uint row, int clr) +@@ -36,10 +36,6 @@ static int console_set_row(struct udevice *dev, uint row, int clr) fill_pixel_and_goto_next(&dst, clr, pbytes, pbytes); end = dst; @@ -1563,7 +1567,7 @@ index ad7ce860e9d..5625dbb8d08 100644 video_damage(dev->parent, 0, fontdata->height * row, -@@ -57,14 +53,11 @@ static int console_move_rows(struct udevice *dev, uint rowdst, +@@ -58,14 +54,11 @@ static int console_move_rows(struct udevice *dev, uint rowdst, void *dst; void *src; int size; @@ -1579,7 +1583,7 @@ index ad7ce860e9d..5625dbb8d08 100644 video_damage(dev->parent, 0, -@@ -108,10 +101,6 @@ static int console_putc_xy(struct udevice *dev, uint x_frac, uint y, char ch) +@@ -110,10 +103,6 @@ static int console_putc_xy(struct udevice *dev, uint x_frac, uint y, int cp) fontdata->width, fontdata->height); @@ -1591,10 +1595,10 @@ index ad7ce860e9d..5625dbb8d08 100644 } diff --git a/drivers/video/console_rotate.c b/drivers/video/console_rotate.c -index 6c3e7c1bb8d..6e9067d1c7f 100644 +index 8129c7b2aa7..fa0b4faf63b 100644 --- a/drivers/video/console_rotate.c +++ b/drivers/video/console_rotate.c -@@ -21,7 +21,6 @@ static int console_set_row_1(struct udevice *dev, uint row, int clr) +@@ -22,7 +22,6 @@ static int console_set_row_1(struct udevice *dev, uint row, int clr) int pbytes = VNBYTES(vid_priv->bpix); void *start, *dst, *line; int i, j; @@ -1602,7 +1606,7 @@ index 6c3e7c1bb8d..6e9067d1c7f 100644 start = vid_priv->fb + vid_priv->line_length - (row + 1) * fontdata->height * pbytes; -@@ -32,9 +31,6 @@ static int console_set_row_1(struct udevice *dev, uint row, int clr) +@@ -33,9 +32,6 @@ static int console_set_row_1(struct udevice *dev, uint row, int clr) fill_pixel_and_goto_next(&dst, clr, pbytes, pbytes); line += vid_priv->line_length; } @@ -1612,7 +1616,7 @@ index 6c3e7c1bb8d..6e9067d1c7f 100644 video_damage(dev->parent, vid_priv->xsize - ((row + 1) * fontdata->height), -@@ -54,7 +50,7 @@ static int console_move_rows_1(struct udevice *dev, uint rowdst, uint rowsrc, +@@ -55,7 +51,7 @@ static int console_move_rows_1(struct udevice *dev, uint rowdst, uint rowsrc, int pbytes = VNBYTES(vid_priv->bpix); void *dst; void *src; @@ -1621,7 +1625,7 @@ index 6c3e7c1bb8d..6e9067d1c7f 100644 dst = vid_priv->fb + vid_priv->line_length - (rowdst + count) * fontdata->height * pbytes; -@@ -62,10 +58,7 @@ static int console_move_rows_1(struct udevice *dev, uint rowdst, uint rowsrc, +@@ -63,10 +59,7 @@ static int console_move_rows_1(struct udevice *dev, uint rowdst, uint rowsrc, (rowsrc + count) * fontdata->height * pbytes; for (j = 0; j < vid_priv->ysize; j++) { @@ -1633,7 +1637,7 @@ index 6c3e7c1bb8d..6e9067d1c7f 100644 src += vid_priv->line_length; dst += vid_priv->line_length; } -@@ -104,10 +97,6 @@ static int console_putc_xy_1(struct udevice *dev, uint x_frac, uint y, char ch) +@@ -106,10 +99,6 @@ static int console_putc_xy_1(struct udevice *dev, uint x_frac, uint y, int cp) return ret; /* We draw backwards from 'start, so account for the first line */ @@ -1644,7 +1648,7 @@ index 6c3e7c1bb8d..6e9067d1c7f 100644 video_damage(dev->parent, vid_priv->xsize - y - fontdata->height, linenum - 1, -@@ -125,7 +114,7 @@ static int console_set_row_2(struct udevice *dev, uint row, int clr) +@@ -127,7 +116,7 @@ static int console_set_row_2(struct udevice *dev, uint row, int clr) struct video_fontdata *fontdata = priv->fontdata; void *start, *line, *dst, *end; int pixels = fontdata->height * vid_priv->xsize; @@ -1653,7 +1657,7 @@ index 6c3e7c1bb8d..6e9067d1c7f 100644 int pbytes = VNBYTES(vid_priv->bpix); start = vid_priv->fb + vid_priv->ysize * vid_priv->line_length - -@@ -135,9 +124,6 @@ static int console_set_row_2(struct udevice *dev, uint row, int clr) +@@ -137,9 +126,6 @@ static int console_set_row_2(struct udevice *dev, uint row, int clr) for (i = 0; i < pixels; i++) fill_pixel_and_goto_next(&dst, clr, pbytes, pbytes); end = dst; @@ -1663,7 +1667,7 @@ index 6c3e7c1bb8d..6e9067d1c7f 100644 video_damage(dev->parent, 0, -@@ -163,8 +149,7 @@ static int console_move_rows_2(struct udevice *dev, uint rowdst, uint rowsrc, +@@ -165,8 +151,7 @@ static int console_move_rows_2(struct udevice *dev, uint rowdst, uint rowsrc, vid_priv->line_length; src = end - (rowsrc + count) * fontdata->height * vid_priv->line_length; @@ -1673,7 +1677,7 @@ index 6c3e7c1bb8d..6e9067d1c7f 100644 video_damage(dev->parent, 0, -@@ -199,11 +184,6 @@ static int console_putc_xy_2(struct udevice *dev, uint x_frac, uint y, char ch) +@@ -202,11 +187,6 @@ static int console_putc_xy_2(struct udevice *dev, uint x_frac, uint y, int cp) if (ret) return ret; @@ -1685,7 +1689,7 @@ index 6c3e7c1bb8d..6e9067d1c7f 100644 video_damage(dev->parent, x - fontdata->width + 1, linenum - fontdata->height + 1, -@@ -220,7 +200,7 @@ static int console_set_row_3(struct udevice *dev, uint row, int clr) +@@ -223,7 +203,7 @@ static int console_set_row_3(struct udevice *dev, uint row, int clr) struct video_fontdata *fontdata = priv->fontdata; int pbytes = VNBYTES(vid_priv->bpix); void *start, *dst, *line; @@ -1694,7 +1698,7 @@ index 6c3e7c1bb8d..6e9067d1c7f 100644 start = vid_priv->fb + row * fontdata->height * pbytes; line = start; -@@ -230,9 +210,6 @@ static int console_set_row_3(struct udevice *dev, uint row, int clr) +@@ -233,9 +213,6 @@ static int console_set_row_3(struct udevice *dev, uint row, int clr) fill_pixel_and_goto_next(&dst, clr, pbytes, pbytes); line += vid_priv->line_length; } @@ -1704,7 +1708,7 @@ index 6c3e7c1bb8d..6e9067d1c7f 100644 video_damage(dev->parent, row * fontdata->height, -@@ -252,16 +229,13 @@ static int console_move_rows_3(struct udevice *dev, uint rowdst, uint rowsrc, +@@ -255,16 +232,13 @@ static int console_move_rows_3(struct udevice *dev, uint rowdst, uint rowsrc, int pbytes = VNBYTES(vid_priv->bpix); void *dst; void *src; @@ -1723,7 +1727,7 @@ index 6c3e7c1bb8d..6e9067d1c7f 100644 src += vid_priv->line_length; dst += vid_priv->line_length; } -@@ -296,10 +270,6 @@ static int console_putc_xy_3(struct udevice *dev, uint x_frac, uint y, char ch) +@@ -300,10 +274,6 @@ static int console_putc_xy_3(struct udevice *dev, uint x_frac, uint y, int cp) line = start; ret = fill_char_horizontally(pfont, &line, vid_priv, fontdata, NORMAL_DIRECTION); @@ -1735,10 +1739,10 @@ index 6c3e7c1bb8d..6e9067d1c7f 100644 return ret; diff --git a/drivers/video/console_truetype.c b/drivers/video/console_truetype.c -index c0a5ad1a51e..7aa1cdaef88 100644 +index ed6c9cbb4f4..4cf9b013293 100644 --- a/drivers/video/console_truetype.c +++ b/drivers/video/console_truetype.c -@@ -194,7 +194,6 @@ static int console_truetype_set_row(struct udevice *dev, uint row, int clr) +@@ -195,7 +195,6 @@ static int console_truetype_set_row(struct udevice *dev, uint row, int clr) struct console_tt_priv *priv = dev_get_priv(dev); struct console_tt_metrics *met = priv->cur_met; void *end, *line; @@ -1746,7 +1750,7 @@ index c0a5ad1a51e..7aa1cdaef88 100644 line = vid_priv->fb + row * met->font_size * vid_priv->line_length; end = line + met->font_size * vid_priv->line_length; -@@ -230,9 +229,6 @@ static int console_truetype_set_row(struct udevice *dev, uint row, int clr) +@@ -231,9 +230,6 @@ static int console_truetype_set_row(struct udevice *dev, uint row, int clr) default: return -ENOSYS; } @@ -1756,7 +1760,7 @@ index c0a5ad1a51e..7aa1cdaef88 100644 video_damage(dev->parent, 0, -@@ -252,14 +248,11 @@ static int console_truetype_move_rows(struct udevice *dev, uint rowdst, +@@ -253,14 +249,11 @@ static int console_truetype_move_rows(struct udevice *dev, uint rowdst, struct console_tt_metrics *met = priv->cur_met; void *dst; void *src; @@ -1773,7 +1777,7 @@ index c0a5ad1a51e..7aa1cdaef88 100644 /* Scroll up our position history */ diff = (rowsrc - rowdst) * met->font_size; -@@ -292,7 +285,7 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y, +@@ -293,7 +286,7 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y, u8 *bits, *data; int advance; void *start, *end, *line; @@ -1781,8 +1785,8 @@ index c0a5ad1a51e..7aa1cdaef88 100644 + int row; /* First get some basic metrics about this character */ - stbtt_GetCodepointHMetrics(font, ch, &advance, &lsb); -@@ -436,9 +429,6 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y, + stbtt_GetCodepointHMetrics(font, cp, &advance, &lsb); +@@ -440,9 +433,6 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y, width, height); @@ -1793,10 +1797,10 @@ index c0a5ad1a51e..7aa1cdaef88 100644 return width_frac; diff --git a/drivers/video/vidconsole-uclass.c b/drivers/video/vidconsole-uclass.c -index 22d55df71f6..16b38a27d39 100644 +index 5d06e51ff23..5f1dd0aaa41 100644 --- a/drivers/video/vidconsole-uclass.c +++ b/drivers/video/vidconsole-uclass.c -@@ -751,22 +751,6 @@ UCLASS_DRIVER(vidconsole) = { +@@ -760,22 +760,6 @@ UCLASS_DRIVER(vidconsole) = { .per_device_auto = sizeof(struct vidconsole_priv), }; @@ -1820,10 +1824,10 @@ index 22d55df71f6..16b38a27d39 100644 { int ret; diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c -index ac2141892bf..afbd4670240 100644 +index e009be4f55d..b3eeccb996d 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c -@@ -160,7 +160,7 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, +@@ -153,7 +153,7 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, struct video_priv *priv = dev_get_uclass_priv(dev); void *start, *line; int pixels = xend - xstart; @@ -1832,7 +1836,7 @@ index ac2141892bf..afbd4670240 100644 start = priv->fb + ystart * priv->line_length; start += xstart * VNBYTES(priv->bpix); -@@ -200,10 +200,6 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, +@@ -193,10 +193,6 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, line += priv->line_length; } @@ -1843,7 +1847,7 @@ index ac2141892bf..afbd4670240 100644 video_damage(dev, xstart, ystart, xend - xstart, yend - ystart); return 0; -@@ -223,7 +219,6 @@ int video_reserve_from_bloblist(struct video_handoff *ho) +@@ -219,7 +215,6 @@ int video_reserve_from_bloblist(struct video_handoff *ho) int video_fill(struct udevice *dev, u32 colour) { struct video_priv *priv = dev_get_uclass_priv(dev); @@ -1851,7 +1855,7 @@ index ac2141892bf..afbd4670240 100644 switch (priv->bpix) { case VIDEO_BPP16: -@@ -248,9 +243,6 @@ int video_fill(struct udevice *dev, u32 colour) +@@ -244,9 +239,6 @@ int video_fill(struct udevice *dev, u32 colour) memset(priv->fb, colour, priv->fb_size); break; } @@ -1861,7 +1865,7 @@ index ac2141892bf..afbd4670240 100644 video_damage(dev, 0, 0, priv->xsize, priv->ysize); -@@ -420,6 +412,27 @@ static void video_flush_dcache(struct udevice *vid) +@@ -416,6 +408,27 @@ static void video_flush_dcache(struct udevice *vid) } #endif @@ -1889,7 +1893,7 @@ index ac2141892bf..afbd4670240 100644 /* Flush video activity to the caches */ int video_sync(struct udevice *vid, bool force) { -@@ -427,6 +440,9 @@ int video_sync(struct udevice *vid, bool force) +@@ -423,6 +436,9 @@ int video_sync(struct udevice *vid, bool force) struct video_ops *ops = video_get_ops(vid); int ret; @@ -2042,10 +2046,10 @@ index 1310195f307..29eff3c0900 100644 * video_damage() - Notify the video subsystem about screen updates. * diff --git a/include/video_console.h b/include/video_console.h -index bde67fa9a5a..43bc7db489a 100644 +index 8b5928dc5eb..8806d10f946 100644 --- a/include/video_console.h +++ b/include/video_console.h -@@ -527,56 +527,4 @@ void vidconsole_list_fonts(struct udevice *dev); +@@ -529,56 +529,4 @@ void vidconsole_list_fonts(struct udevice *dev); */ int vidconsole_get_font_size(struct udevice *dev, const char **name, uint *sizep); @@ -2124,9 +2128,9 @@ index 8c7d9800a42..4c3bcd26e94 100644 return 0; } -- -2.43.0 +2.45.1 -From 8831933fcc6cf60308e6ede438409717ab1a94a6 Mon Sep 17 00:00:00 2001 +From 6b90fed4745a705c1ca660a346a3563f0da8def5 Mon Sep 17 00:00:00 2001 From: Alexander Graf Date: Mon, 21 Aug 2023 16:51:09 +0300 Subject: [PATCH 12/13] video: Always compile cache flushing code @@ -2151,10 +2155,10 @@ Signed-off-by: Alper Nebi Yasak 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c -index afbd4670240..2c7777261ad 100644 +index b3eeccb996d..33ad9ff3fab 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c -@@ -377,11 +377,13 @@ void video_damage(struct udevice *vid, int x, int y, int width, int height) +@@ -373,11 +373,13 @@ void video_damage(struct udevice *vid, int x, int y, int width, int height) priv->damage.yend = max(yend, priv->damage.yend); } @@ -2169,7 +2173,7 @@ index afbd4670240..2c7777261ad 100644 if (!priv->flush_dcache) return; -@@ -410,7 +412,6 @@ static void video_flush_dcache(struct udevice *vid) +@@ -406,7 +408,6 @@ static void video_flush_dcache(struct udevice *vid) } } } @@ -2177,7 +2181,7 @@ index afbd4670240..2c7777261ad 100644 static void video_flush_copy(struct udevice *vid) { -@@ -449,14 +450,9 @@ int video_sync(struct udevice *vid, bool force) +@@ -445,14 +446,9 @@ int video_sync(struct udevice *vid, bool force) return ret; } @@ -2195,9 +2199,9 @@ index afbd4670240..2c7777261ad 100644 if (force || get_timer(last_sync) > 100) { -- -2.43.0 +2.45.1 -From 676104d8420152c97321c4fa22bb925fb139dd66 Mon Sep 17 00:00:00 2001 +From 7cfa667a11f245596e4b31842b0d646929be24e9 Mon Sep 17 00:00:00 2001 From: Alexander Graf Date: Mon, 21 Aug 2023 16:51:10 +0300 Subject: [PATCH 13/13] video: Enable VIDEO_DAMAGE for drivers that need it @@ -2228,10 +2232,10 @@ Reviewed-by: Simon Glass 9 files changed, 16 insertions(+) diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig -index a4a8d8e9445..1d32a3140bf 100644 +index ddf9414b08e..3c9745065ba 100644 --- a/arch/arm/mach-sunxi/Kconfig +++ b/arch/arm/mach-sunxi/Kconfig -@@ -846,6 +846,7 @@ config VIDEO_SUNXI +@@ -863,6 +863,7 @@ config VIDEO_SUNXI depends on !SUNXI_GEN_NCAT2 select VIDEO select DISPLAY @@ -2240,7 +2244,7 @@ index a4a8d8e9445..1d32a3140bf 100644 default y ---help--- diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig -index 438cf3d4899..a736ee6724c 100644 +index 88c6f8e6897..06d3ed8a736 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig @@ -499,6 +499,7 @@ config VIDEO_LCD_ANX9804 @@ -2259,7 +2263,7 @@ index 438cf3d4899..a736ee6724c 100644 help The graphics processor already sets up the display so this driver simply checks the resolution and then sets up the frame buffer with -@@ -654,6 +656,7 @@ source "drivers/video/meson/Kconfig" +@@ -671,6 +673,7 @@ source "drivers/video/meson/Kconfig" config VIDEO_MVEBU bool "Armada XP LCD controller" @@ -2267,7 +2271,7 @@ index 438cf3d4899..a736ee6724c 100644 ---help--- Support for the LCD controller integrated in the Marvell Armada XP SoC. -@@ -688,6 +691,7 @@ config NXP_TDA19988 +@@ -705,6 +708,7 @@ config NXP_TDA19988 config ATMEL_HLCD bool "Enable ATMEL video support using HLCDC" @@ -2275,7 +2279,7 @@ index 438cf3d4899..a736ee6724c 100644 help HLCDC supports video output to an attached LCD panel. -@@ -764,6 +768,7 @@ source "drivers/video/tidss/Kconfig" +@@ -781,6 +785,7 @@ source "drivers/video/tidss/Kconfig" config VIDEO_TEGRA124 bool "Enable video support on Tegra124" @@ -2283,7 +2287,7 @@ index 438cf3d4899..a736ee6724c 100644 help Tegra124 supports many video output options including eDP and HDMI. At present only eDP is supported by U-Boot. This option -@@ -778,6 +783,7 @@ source "drivers/video/imx/Kconfig" +@@ -795,6 +800,7 @@ source "drivers/video/imx/Kconfig" config VIDEO_MXS bool "Enable video support on i.MX28/i.MX6UL/i.MX7 SoCs" @@ -2291,7 +2295,7 @@ index 438cf3d4899..a736ee6724c 100644 help Enable framebuffer driver for i.MX28/i.MX6UL/i.MX7 processors -@@ -840,6 +846,7 @@ config VIDEO_DW_MIPI_DSI +@@ -857,6 +863,7 @@ config VIDEO_DW_MIPI_DSI config VIDEO_SIMPLE bool "Simple display driver for preconfigured display" @@ -2299,7 +2303,7 @@ index 438cf3d4899..a736ee6724c 100644 help Enables a simple generic display driver which utilizes the simple-framebuffer devicetree bindings. -@@ -858,6 +865,7 @@ config VIDEO_DT_SIMPLEFB +@@ -875,6 +882,7 @@ config VIDEO_DT_SIMPLEFB config VIDEO_MCDE_SIMPLE bool "Simple driver for ST-Ericsson MCDE with preconfigured display" @@ -2391,5 +2395,5 @@ index 95086f3a5d6..3291b3ceb8d 100644 TIDSS supports video output options LVDS and DPI . This option enables these supports which can be used on -- -2.43.0 +2.45.1 diff --git a/aarch64-boards b/aarch64-boards index 07154e5..f88eb85 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -7,7 +7,6 @@ bananapi_m64 beelink_gs1 dragonboard410c dragonboard820c -dragonboard845c eaidk-610-rk3399 emlid_neutis_n5_devboard evb-px5 @@ -75,6 +74,7 @@ pinephone-pro-rk3399 pinetab poplar puma-rk3399 +qcom_defconfig qemu_arm64 roc-cc-rk3328 rock-4c-plus-rk3399 diff --git a/phy-rockchip-inno-usb2-Write-to-correct-GRF.patch b/phy-rockchip-inno-usb2-Write-to-correct-GRF.patch deleted file mode 100644 index b240ad6..0000000 --- a/phy-rockchip-inno-usb2-Write-to-correct-GRF.patch +++ /dev/null @@ -1,572 +0,0 @@ -From patchwork Sun Feb 25 22:10:19 2024 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Jonas Karlman -X-Patchwork-Id: 1903989 -X-Patchwork-Delegate: ykai007@gmail.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; - secure) header.d=kwiboo.se header.i=@kwiboo.se header.a=rsa-sha256 - header.s=fe-e1b5cab7be header.b=yOZt1tiR; - 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) server-digest SHA384) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4TjdHl4wttz23cw - for ; Mon, 26 Feb 2024 09:11:15 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 91BCF87E23; - Sun, 25 Feb 2024 23:10:57 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=kwiboo.se -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; - secure) header.d=kwiboo.se header.i=@kwiboo.se header.b="yOZt1tiR"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id BFA6B87DA4; Sun, 25 Feb 2024 23:10: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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 -Received: from smtp.forwardemail.net (smtp.forwardemail.net [149.28.215.223]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 217BA87DFA - for ; Sun, 25 Feb 2024 23:10:49 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=kwiboo.se -Authentication-Results: phobos.denx.de; spf=pass - smtp.mailfrom=SRS0=31c0=KD=kwiboo.se=jonas@fe-bounces.kwiboo.se -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; - h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: - Message-ID: Date: Subject: Cc: To: From; q=dns/txt; s=fe-e1b5cab7be; - t=1708899036; bh=AzFTi2bcYYAtXfClfRKD6v/Yh+iTeLs39b0UoXgmBwI=; - b=yOZt1tiRwOXYRO3mwXmOiJo897JN79a+B1jEzPSXrDGT/XlOaEYuhCBCO4IIUTSOg1irZCZD0 - XierFKG1DECIT3JlIXV16mU6P9Dsg/amgtgJp8QQmuACEJ6JERBNINdt0i7+i0oUF0bmiYupJ+U - VY5LPHhscKquVc3LCEo/DcIMMX+gh3zOF15G4QPE6ldeQbs/Ys4bqYQ/cMe+X4ijANkou6hqNSw - VY/TylYiKqrMyUW8SKJ6oXRxluNhrYpWWde3hoCc0zjTEWW9dGzSbxX8NLmmhqTT0uGKH6/RrB0 - nNeuIgaMGTk7jCCUtbi4Vp99P9HYFnlfmTRXoVLEofxw== -From: Jonas Karlman -To: Kever Yang , Simon Glass , - Philipp Tomsich , Tom Rini , - Ren Jianing , Manoj Sai - , Jagan Teki - , Eugen Hristev , - Frank Wang , Xavier Drudis Ferran - -Cc: u-boot@lists.denx.de, Jonas Karlman -Subject: [PATCH 1/2] phy: rockchip-inno-usb2: Write to correct GRF -Date: Sun, 25 Feb 2024 22:10:19 +0000 -Message-ID: <20240225221024.1974853-2-jonas@kwiboo.se> -X-Mailer: git-send-email 2.43.0 -In-Reply-To: <20240225221024.1974853-1-jonas@kwiboo.se> -References: <20240225221024.1974853-1-jonas@kwiboo.se> -MIME-Version: 1.0 -X-Report-Abuse-To: abuse@forwardemail.net -X-Report-Abuse: abuse@forwardemail.net -X-Complaints-To: abuse@forwardemail.net -X-ForwardEmail-Version: 0.4.40 -X-ForwardEmail-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, - 149.28.215.223 -X-ForwardEmail-ID: 65dbbada46c899733a83b3ec -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 - -On RK3399 the USB2PHY regs are located in the common GRF, remaining SoCs -that is supported by this driver have the USB2PHY regs in a different -GRF. - -When support for RK356x, RK3588 and RK3328 was added this driver was -never updated to use correct GRF and have instead incorrectly written -to wrong GRF for these SoCs. - -The default reset values for the USB2PHY have made USB mostly working -even when wrong GRF was used, however, following have been observed: - - scanning bus usb@fd840000 for devices... - ERROR: USB-error: DEVICENOTRESPONDING: Device did not respond to token (IN) or did - not provide a handshake (OUT) (5) - ERROR: USB-error: DEVICENOTRESPONDING: Device did not respond to token (IN) or did - not provide a handshake (OUT) (5) - unable to get device descriptor (error=-1) - -Fix this by using a regmap from rockchip,usbgrf prop and fall back to -getting a regmap for parent udevice instead of always getting the -common GRF. - -Also protect against accidental clear of bit 0 in a reg with offset 0, -only bind driver to enabled otg/host-ports and remove unused headers. - -Fixes: 3da15f0b49a2 ("phy: rockchip-inno-usb2: Add USB2 PHY for rk3568") -Fixes: cdf9010f6e17 ("phy: rockchip-inno-usb2: add initial support for rk3588 PHY") -Fixes: 9aa93d84038b ("phy: rockchip-inno-usb2: Add USB2 PHY for RK3328") -Signed-off-by: Jonas Karlman -Reviewed-by: Kever Yang ---- - drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 41 ++++++++++--------- - 1 file changed, 22 insertions(+), 19 deletions(-) - -diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c -index 70e61eccb79a..7317128d135e 100644 ---- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c -+++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c -@@ -6,23 +6,16 @@ - * Copyright (C) 2020 Amarula Solutions(India) - */ - --#include - #include - #include --#include - #include - #include - #include - #include --#include -+#include - #include --#include --#include --#include - #include - --DECLARE_GLOBAL_DATA_PTR; -- - #define usleep_range(a, b) udelay((b)) - #define BIT_WRITEABLE_SHIFT 16 - -@@ -61,30 +54,39 @@ struct rockchip_usb2phy_cfg { - }; - - struct rockchip_usb2phy { -- void *reg_base; -+ struct regmap *reg_base; - struct clk phyclk; - const struct rockchip_usb2phy_cfg *phy_cfg; - }; - --static inline int property_enable(void *reg_base, -+static inline int property_enable(struct regmap *base, - const struct usb2phy_reg *reg, bool en) - { - unsigned int val, mask, tmp; - -+ if (!reg->offset && !reg->enable && !reg->disable) -+ return 0; -+ - tmp = en ? reg->enable : reg->disable; - mask = GENMASK(reg->bitend, reg->bitstart); - val = (tmp << reg->bitstart) | (mask << BIT_WRITEABLE_SHIFT); - -- return writel(val, reg_base + reg->offset); -+ return regmap_write(base, reg->offset, val); - } - --static inline bool property_enabled(void *reg_base, -+static inline bool property_enabled(struct regmap *base, - const struct usb2phy_reg *reg) - { -+ int ret; - unsigned int tmp, orig; - unsigned int mask = GENMASK(reg->bitend, reg->bitstart); - -- orig = readl(reg_base + reg->offset); -+ if (!reg->offset && !reg->enable && !reg->disable) -+ return false; -+ -+ ret = regmap_read(base, reg->offset, &orig); -+ if (ret) -+ return false; - - tmp = (orig & mask) >> reg->bitstart; - return tmp != reg->disable; -@@ -248,7 +250,11 @@ static int rockchip_usb2phy_probe(struct udevice *dev) - unsigned int reg; - int index, ret; - -- priv->reg_base = syscon_get_first_range(ROCKCHIP_SYSCON_GRF); -+ if (dev_read_bool(dev, "rockchip,usbgrf")) -+ priv->reg_base = -+ syscon_regmap_lookup_by_phandle(dev, "rockchip,usbgrf"); -+ else -+ priv->reg_base = syscon_get_regmap(dev_get_parent(dev)); - if (IS_ERR(priv->reg_base)) - return PTR_ERR(priv->reg_base); - -@@ -305,11 +311,8 @@ static int rockchip_usb2phy_bind(struct udevice *dev) - int ret = 0; - - dev_for_each_subnode(node, dev) { -- if (!ofnode_valid(node)) { -- dev_info(dev, "subnode %s not found\n", dev->name); -- ret = -ENXIO; -- goto bind_fail; -- } -+ if (!ofnode_is_enabled(node)) -+ continue; - - name = ofnode_get_name(node); - dev_dbg(dev, "subnode %s\n", name); - -From patchwork Sun Feb 25 22:10:20 2024 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Jonas Karlman -X-Patchwork-Id: 1903988 -X-Patchwork-Delegate: ykai007@gmail.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; - secure) header.d=kwiboo.se header.i=@kwiboo.se header.a=rsa-sha256 - header.s=fe-e1b5cab7be header.b=Bv1sBawV; - 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) server-digest SHA384) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4TjdHW2kk5z23cw - for ; Mon, 26 Feb 2024 09:11:03 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id EC90A87DF4; - Sun, 25 Feb 2024 23:10:54 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=kwiboo.se -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; - secure) header.d=kwiboo.se header.i=@kwiboo.se header.b="Bv1sBawV"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 445F387E21; Sun, 25 Feb 2024 23:10: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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 -Received: from smtp.forwardemail.net (smtp.forwardemail.net [149.28.215.223]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 9C54487DF4 - for ; Sun, 25 Feb 2024 23:10:48 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=kwiboo.se -Authentication-Results: phobos.denx.de; spf=pass - smtp.mailfrom=SRS0=31c0=KD=kwiboo.se=jonas@fe-bounces.kwiboo.se -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; - h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: - Message-ID: Date: Subject: Cc: To: From; q=dns/txt; s=fe-e1b5cab7be; - t=1708899040; bh=DyusC9ORAR+XZuJiPJ/3cQGjPsGAIRRpa763lcRm9QI=; - b=Bv1sBawVhXXIyoD7RTT7PpAz6+xCx17DjVExzdjGWsgUube7Xho69mue9hWqeTSU0bCFYYtv7 - HD7t7qbOmnYD+L0UVg+SHdibpC38eSbz+ucYsZrMhZL1IiRJNWWlFyb0IZacRz+AeagLdc75goJ - qTiFcN9xKXoHBJKpyqXiwsuJJMOXWwg9aOhGc9HZ91jwYEXSai2WfZYxtzx23bl5U4pDvpDuJd9 - ijrjK7DdsrJyRm4ALrkvjlr2/gZguEXEzOiHrFbbIZn+QIZjKhbbSdTQOScvPdvnFFKG8F3wZsX - rdxXOykD/CZU8ni3ZAYh20CBo6kwKIBdthaDsbYR18nw== -From: Jonas Karlman -To: Kever Yang , Simon Glass , - Philipp Tomsich , Tom Rini -Cc: u-boot@lists.denx.de, Jonas Karlman -Subject: [PATCH 2/2] phy: rockchip-inno-usb2: Limit changes made to regs -Date: Sun, 25 Feb 2024 22:10:20 +0000 -Message-ID: <20240225221024.1974853-3-jonas@kwiboo.se> -X-Mailer: git-send-email 2.43.0 -In-Reply-To: <20240225221024.1974853-1-jonas@kwiboo.se> -References: <20240225221024.1974853-1-jonas@kwiboo.se> -MIME-Version: 1.0 -X-Report-Abuse-To: abuse@forwardemail.net -X-Report-Abuse: abuse@forwardemail.net -X-Complaints-To: abuse@forwardemail.net -X-ForwardEmail-Version: 0.4.40 -X-ForwardEmail-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, - 149.28.215.223 -X-ForwardEmail-ID: 65dbbade46c899733a83b3fe -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 USB2PHY regs already contain working default reset values for RK3328 -and RK35xx as evidenced by the fact that this driver never has changed a -single value for these SoCs. - -Reduce to only configure utmi_suspend_n and utmi_sel bits similar to -what is currently done on RK3399. Also add missing clkout_ctl for RK3588. - -When enabled utmi_suspend_n is changed to normal mode and utmi_sel to -use otg/host controller utmi interface to phy. When disabled -utmi_suspend_n is changed to suspend mode and utmi_sel to use GRF utmi -interface to phy. - -Signed-off-by: Jonas Karlman -Reviewed-by: Kever Yang ---- - drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 117 +++--------------- - 1 file changed, 14 insertions(+), 103 deletions(-) - -diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c -index 7317128d135e..d392aed2d4de 100644 ---- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c -+++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c -@@ -35,16 +35,6 @@ struct usb2phy_reg { - - struct rockchip_usb2phy_port_cfg { - struct usb2phy_reg phy_sus; -- struct usb2phy_reg bvalid_det_en; -- struct usb2phy_reg bvalid_det_st; -- struct usb2phy_reg bvalid_det_clr; -- struct usb2phy_reg ls_det_en; -- struct usb2phy_reg ls_det_st; -- struct usb2phy_reg ls_det_clr; -- struct usb2phy_reg utmi_avalid; -- struct usb2phy_reg utmi_bvalid; -- struct usb2phy_reg utmi_ls; -- struct usb2phy_reg utmi_hstdet; - }; - - struct rockchip_usb2phy_cfg { -@@ -131,7 +121,6 @@ static int rockchip_usb2phy_init(struct phy *phy) - { - struct udevice *parent = dev_get_parent(phy->dev); - struct rockchip_usb2phy *priv = dev_get_priv(parent); -- const struct rockchip_usb2phy_port_cfg *port_cfg = us2phy_get_port(phy); - int ret; - - ret = clk_enable(&priv->phyclk); -@@ -140,14 +129,6 @@ static int rockchip_usb2phy_init(struct phy *phy) - return ret; - } - -- if (phy->id == USB2PHY_PORT_OTG) { -- property_enable(priv->reg_base, &port_cfg->bvalid_det_clr, true); -- property_enable(priv->reg_base, &port_cfg->bvalid_det_en, true); -- } else if (phy->id == USB2PHY_PORT_HOST) { -- property_enable(priv->reg_base, &port_cfg->bvalid_det_clr, true); -- property_enable(priv->reg_base, &port_cfg->bvalid_det_en, true); -- } -- - return 0; - } - -@@ -351,27 +332,13 @@ bind_fail: - static const struct rockchip_usb2phy_cfg rk3328_usb2phy_cfgs[] = { - { - .reg = 0x100, -- .clkout_ctl = { 0x108, 4, 4, 1, 0 }, -+ .clkout_ctl = { 0x0108, 4, 4, 1, 0 }, - .port_cfgs = { - [USB2PHY_PORT_OTG] = { -- .phy_sus = { 0x0100, 15, 0, 0, 0x1d1 }, -- .bvalid_det_en = { 0x0110, 3, 2, 0, 3 }, -- .bvalid_det_st = { 0x0114, 3, 2, 0, 3 }, -- .bvalid_det_clr = { 0x0118, 3, 2, 0, 3 }, -- .ls_det_en = { 0x0110, 0, 0, 0, 1 }, -- .ls_det_st = { 0x0114, 0, 0, 0, 1 }, -- .ls_det_clr = { 0x0118, 0, 0, 0, 1 }, -- .utmi_avalid = { 0x0120, 10, 10, 0, 1 }, -- .utmi_bvalid = { 0x0120, 9, 9, 0, 1 }, -- .utmi_ls = { 0x0120, 5, 4, 0, 1 }, -+ .phy_sus = { 0x0100, 1, 0, 2, 1 }, - }, - [USB2PHY_PORT_HOST] = { -- .phy_sus = { 0x104, 15, 0, 0, 0x1d1 }, -- .ls_det_en = { 0x110, 1, 1, 0, 1 }, -- .ls_det_st = { 0x114, 1, 1, 0, 1 }, -- .ls_det_clr = { 0x118, 1, 1, 0, 1 }, -- .utmi_ls = { 0x120, 17, 16, 0, 1 }, -- .utmi_hstdet = { 0x120, 19, 19, 0, 1 } -+ .phy_sus = { 0x0104, 1, 0, 2, 1 }, - } - }, - }, -@@ -385,19 +352,9 @@ static const struct rockchip_usb2phy_cfg rk3399_usb2phy_cfgs[] = { - .port_cfgs = { - [USB2PHY_PORT_OTG] = { - .phy_sus = { 0xe454, 1, 0, 2, 1 }, -- .bvalid_det_en = { 0xe3c0, 3, 3, 0, 1 }, -- .bvalid_det_st = { 0xe3e0, 3, 3, 0, 1 }, -- .bvalid_det_clr = { 0xe3d0, 3, 3, 0, 1 }, -- .utmi_avalid = { 0xe2ac, 7, 7, 0, 1 }, -- .utmi_bvalid = { 0xe2ac, 12, 12, 0, 1 }, - }, - [USB2PHY_PORT_HOST] = { -- .phy_sus = { 0xe458, 1, 0, 0x2, 0x1 }, -- .ls_det_en = { 0xe3c0, 6, 6, 0, 1 }, -- .ls_det_st = { 0xe3e0, 6, 6, 0, 1 }, -- .ls_det_clr = { 0xe3d0, 6, 6, 0, 1 }, -- .utmi_ls = { 0xe2ac, 22, 21, 0, 1 }, -- .utmi_hstdet = { 0xe2ac, 23, 23, 0, 1 } -+ .phy_sus = { 0xe458, 1, 0, 2, 1 }, - } - }, - }, -@@ -407,19 +364,9 @@ static const struct rockchip_usb2phy_cfg rk3399_usb2phy_cfgs[] = { - .port_cfgs = { - [USB2PHY_PORT_OTG] = { - .phy_sus = { 0xe464, 1, 0, 2, 1 }, -- .bvalid_det_en = { 0xe3c0, 8, 8, 0, 1 }, -- .bvalid_det_st = { 0xe3e0, 8, 8, 0, 1 }, -- .bvalid_det_clr = { 0xe3d0, 8, 8, 0, 1 }, -- .utmi_avalid = { 0xe2ac, 10, 10, 0, 1 }, -- .utmi_bvalid = { 0xe2ac, 16, 16, 0, 1 }, - }, - [USB2PHY_PORT_HOST] = { -- .phy_sus = { 0xe468, 1, 0, 0x2, 0x1 }, -- .ls_det_en = { 0xe3c0, 11, 11, 0, 1 }, -- .ls_det_st = { 0xe3e0, 11, 11, 0, 1 }, -- .ls_det_clr = { 0xe3d0, 11, 11, 0, 1 }, -- .utmi_ls = { 0xe2ac, 26, 25, 0, 1 }, -- .utmi_hstdet = { 0xe2ac, 27, 27, 0, 1 } -+ .phy_sus = { 0xe468, 1, 0, 2, 1 }, - } - }, - }, -@@ -432,24 +379,10 @@ static const struct rockchip_usb2phy_cfg rk3568_phy_cfgs[] = { - .clkout_ctl = { 0x0008, 4, 4, 1, 0 }, - .port_cfgs = { - [USB2PHY_PORT_OTG] = { -- .phy_sus = { 0x0000, 8, 0, 0x052, 0x1d1 }, -- .bvalid_det_en = { 0x0080, 2, 2, 0, 1 }, -- .bvalid_det_st = { 0x0084, 2, 2, 0, 1 }, -- .bvalid_det_clr = { 0x0088, 2, 2, 0, 1 }, -- .ls_det_en = { 0x0080, 0, 0, 0, 1 }, -- .ls_det_st = { 0x0084, 0, 0, 0, 1 }, -- .ls_det_clr = { 0x0088, 0, 0, 0, 1 }, -- .utmi_avalid = { 0x00c0, 10, 10, 0, 1 }, -- .utmi_bvalid = { 0x00c0, 9, 9, 0, 1 }, -- .utmi_ls = { 0x00c0, 5, 4, 0, 1 }, -+ .phy_sus = { 0x0000, 1, 0, 2, 1 }, - }, - [USB2PHY_PORT_HOST] = { -- .phy_sus = { 0x0004, 8, 0, 0x1d2, 0x1d1 }, -- .ls_det_en = { 0x0080, 1, 1, 0, 1 }, -- .ls_det_st = { 0x0084, 1, 1, 0, 1 }, -- .ls_det_clr = { 0x0088, 1, 1, 0, 1 }, -- .utmi_ls = { 0x00c0, 17, 16, 0, 1 }, -- .utmi_hstdet = { 0x00c0, 19, 19, 0, 1 } -+ .phy_sus = { 0x0004, 1, 0, 2, 1 }, - } - }, - }, -@@ -458,20 +391,10 @@ static const struct rockchip_usb2phy_cfg rk3568_phy_cfgs[] = { - .clkout_ctl = { 0x0008, 4, 4, 1, 0 }, - .port_cfgs = { - [USB2PHY_PORT_OTG] = { -- .phy_sus = { 0x0000, 8, 0, 0x1d2, 0x1d1 }, -- .ls_det_en = { 0x0080, 0, 0, 0, 1 }, -- .ls_det_st = { 0x0084, 0, 0, 0, 1 }, -- .ls_det_clr = { 0x0088, 0, 0, 0, 1 }, -- .utmi_ls = { 0x00c0, 5, 4, 0, 1 }, -- .utmi_hstdet = { 0x00c0, 7, 7, 0, 1 } -+ .phy_sus = { 0x0000, 1, 0, 2, 1 }, - }, - [USB2PHY_PORT_HOST] = { -- .phy_sus = { 0x0004, 8, 0, 0x1d2, 0x1d1 }, -- .ls_det_en = { 0x0080, 1, 1, 0, 1 }, -- .ls_det_st = { 0x0084, 1, 1, 0, 1 }, -- .ls_det_clr = { 0x0088, 1, 1, 0, 1 }, -- .utmi_ls = { 0x00c0, 17, 16, 0, 1 }, -- .utmi_hstdet = { 0x00c0, 19, 19, 0, 1 } -+ .phy_sus = { 0x0004, 1, 0, 2, 1 }, - } - }, - }, -@@ -481,49 +404,37 @@ static const struct rockchip_usb2phy_cfg rk3568_phy_cfgs[] = { - static const struct rockchip_usb2phy_cfg rk3588_phy_cfgs[] = { - { - .reg = 0x0000, -+ .clkout_ctl = { 0x0000, 0, 0, 1, 0 }, - .port_cfgs = { - [USB2PHY_PORT_OTG] = { - .phy_sus = { 0x000c, 11, 11, 0, 1 }, -- .ls_det_en = { 0x0080, 0, 0, 0, 1 }, -- .ls_det_st = { 0x0084, 0, 0, 0, 1 }, -- .ls_det_clr = { 0x0088, 0, 0, 0, 1 }, -- .utmi_ls = { 0x00c0, 10, 9, 0, 1 }, - } - }, - }, - { - .reg = 0x4000, -+ .clkout_ctl = { 0x0000, 0, 0, 1, 0 }, - .port_cfgs = { - [USB2PHY_PORT_OTG] = { -- .phy_sus = { 0x000c, 11, 11, 0, 0 }, -- .ls_det_en = { 0x0080, 0, 0, 0, 1 }, -- .ls_det_st = { 0x0084, 0, 0, 0, 1 }, -- .ls_det_clr = { 0x0088, 0, 0, 0, 1 }, -- .utmi_ls = { 0x00c0, 10, 9, 0, 1 }, -+ .phy_sus = { 0x000c, 11, 11, 0, 1 }, - } - }, - }, - { - .reg = 0x8000, -+ .clkout_ctl = { 0x0000, 0, 0, 1, 0 }, - .port_cfgs = { - [USB2PHY_PORT_HOST] = { - .phy_sus = { 0x0008, 2, 2, 0, 1 }, -- .ls_det_en = { 0x0080, 0, 0, 0, 1 }, -- .ls_det_st = { 0x0084, 0, 0, 0, 1 }, -- .ls_det_clr = { 0x0088, 0, 0, 0, 1 }, -- .utmi_ls = { 0x00c0, 10, 9, 0, 1 }, - } - }, - }, - { - .reg = 0xc000, -+ .clkout_ctl = { 0x0000, 0, 0, 1, 0 }, - .port_cfgs = { - [USB2PHY_PORT_HOST] = { - .phy_sus = { 0x0008, 2, 2, 0, 1 }, -- .ls_det_en = { 0x0080, 0, 0, 0, 1 }, -- .ls_det_st = { 0x0084, 0, 0, 0, 1 }, -- .ls_det_clr = { 0x0088, 0, 0, 0, 1 }, -- .utmi_ls = { 0x00c0, 10, 9, 0, 1 }, - } - }, - }, diff --git a/rockchip-Add-initial-support-for-the-PinePhone-Pro.patch b/rockchip-Add-initial-support-for-the-PinePhone-Pro.patch deleted file mode 100644 index 337ea8c..0000000 --- a/rockchip-Add-initial-support-for-the-PinePhone-Pro.patch +++ /dev/null @@ -1,236 +0,0 @@ -From 72400858605c085cf94a6cf5599269c8c39e3e72 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Tue, 14 Mar 2023 12:30:36 +0000 -Subject: [PATCH] rockchip: pinephone pro: add initial display support - -Add proposed upstream DT patches for display, disable edp, -enable mipi and backlight, add required clocks. - -Clocks may not be required based on upstream review. Still -need to add panel pieces, the rk3288-evb has an example for -panel DT for u-boot, or may need to do a mipi addition to -simple-panel, or something else. - -Signed-off-by: Peter Robinson ---- - arch/arm/dts/rk3399-pinephone-pro.dts | 123 +++++++++++++++++++++++++ - configs/pinephone-pro-rk3399_defconfig | 3 +- - include/dt-bindings/clock/rk3399-cru.h | 2 + - 3 files changed, 127 insertions(+), 1 deletion(-) - -diff --git a/arch/arm/dts/rk3399-pinephone-pro.dts b/arch/arm/dts/rk3399-pinephone-pro.dts -index 04403a76238..d0609d1b534 100644 ---- a/arch/arm/dts/rk3399-pinephone-pro.dts -+++ b/arch/arm/dts/rk3399-pinephone-pro.dts -@@ -29,6 +29,12 @@ - stdout-path = "serial2:115200n8"; - }; - -+ backlight: backlight { -+ compatible = "pwm-backlight"; -+ pwms = <&pwm0 0 1000000 0>; -+ pwm-delay-us = <10000>; -+ }; -+ - gpio-keys { - compatible = "gpio-keys"; - pinctrl-names = "default"; -@@ -102,6 +108,32 @@ - /* WL_REG_ON on module */ - reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>; - }; -+ -+ /* MIPI DSI panel 1.8v supply */ -+ vcc1v8_lcd: vcc1v8-lcd-regulator { -+ compatible = "regulator-fixed"; -+ enable-active-high; -+ regulator-name = "vcc1v8_lcd"; -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ vin-supply = <&vcc3v3_sys>; -+ gpio = <&gpio3 RK_PA5 GPIO_ACTIVE_HIGH>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&display_pwren1>; -+ }; -+ -+ /* MIPI DSI panel 2.8v supply */ -+ vcc2v8_lcd: vcc2v8-lcd-regulator { -+ compatible = "regulator-fixed"; -+ enable-active-high; -+ regulator-name = "vcc2v8_lcd"; -+ regulator-min-microvolt = <2800000>; -+ regulator-max-microvolt = <2800000>; -+ vin-supply = <&vcc3v3_sys>; -+ gpio = <&gpio3 RK_PA1 GPIO_ACTIVE_HIGH>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&display_pwren>; -+ }; - }; - - &cpu_l0 { -@@ -132,6 +164,11 @@ - status = "okay"; - }; - -+&gpu { -+ mali-supply = <&vdd_gpu>; -+ status = "okay"; -+}; -+ - &i2c0 { - clock-frequency = <400000>; - i2c-scl-rising-time-ns = <168>; -@@ -214,6 +251,9 @@ - regulator-name = "vcc3v0_touch"; - regulator-min-microvolt = <3000000>; - regulator-max-microvolt = <3000000>; -+ regulator-state-mem { -+ regulator-off-in-suspend; -+ }; - }; - - vcca1v8_codec: LDO_REG3 { -@@ -347,6 +387,25 @@ - }; - }; - -+&i2c3 { -+ i2c-scl-rising-time-ns = <450>; -+ i2c-scl-falling-time-ns = <15>; -+ status = "okay"; -+ -+ touchscreen@14 { -+ compatible = "goodix,gt917s"; -+ reg = <0x14>; -+ interrupt-parent = <&gpio3>; -+ interrupts = ; -+ irq-gpios = <&gpio3 RK_PB5 GPIO_ACTIVE_HIGH>; -+ reset-gpios = <&gpio3 RK_PB4 GPIO_ACTIVE_HIGH>; -+ AVDD28-supply = <&vcc3v0_touch>; -+ VDDIO-supply = <&vcc3v0_touch>; -+ touchscreen-size-x = <720>; -+ touchscreen-size-y = <1440>; -+ }; -+}; -+ - &io_domains { - bt656-supply = <&vcc1v8_dvp>; - audio-supply = <&vcca1v8_codec>; -@@ -355,6 +414,40 @@ - status = "okay"; - }; - -+&mipi_dsi { -+ status = "okay"; -+ clock-master; -+ -+ ports { -+ mipi_out: port@1 { -+ #address-cells = <0>; -+ #size-cells = <0>; -+ reg = <1>; -+ -+ mipi_out_panel: endpoint { -+ remote-endpoint = <&mipi_in_panel>; -+ }; -+ }; -+ }; -+ -+ panel@0 { -+ compatible = "hannstar,hsd060bhw4"; -+ reg = <0>; -+ backlight = <&backlight>; -+ reset-gpios = <&gpio4 RK_PD1 GPIO_ACTIVE_LOW>; -+ vcc-supply = <&vcc2v8_lcd>; -+ iovcc-supply = <&vcc1v8_lcd>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&display_rst_l>; -+ -+ port { -+ mipi_in_panel: endpoint { -+ remote-endpoint = <&mipi_out_panel>; -+ }; -+ }; -+ }; -+}; -+ - &pmu_io_domains { - pmu1830-supply = <&vcc_1v8>; - status = "okay"; -@@ -387,6 +480,20 @@ - }; - }; - -+ dsi { -+ display_rst_l: display-rst-l { -+ rockchip,pins = <4 RK_PD1 RK_FUNC_GPIO &pcfg_pull_down>; -+ }; -+ -+ display_pwren: display-pwren { -+ rockchip,pins = <3 RK_PA1 RK_FUNC_GPIO &pcfg_pull_down>; -+ }; -+ -+ display_pwren1: display-pwren1 { -+ rockchip,pins = <3 RK_PA5 RK_FUNC_GPIO &pcfg_pull_down>; -+ }; -+ }; -+ - sound { - vcc1v8_codec_en: vcc1v8-codec-en { - rockchip,pins = <3 RK_PA4 RK_FUNC_GPIO &pcfg_pull_down>; -@@ -422,6 +529,10 @@ - status = "okay"; - }; - -+&pwm0 { -+ status = "okay"; -+}; -+ - &sdmmc { - bus-width = <4>; - cap-sd-highspeed; -@@ -472,3 +583,15 @@ - &uart2 { - status = "okay"; - }; -+ -+&vopb { -+ status = "okay"; -+ assigned-clocks = <&cru DCLK_VOP0_DIV>, <&cru DCLK_VOP0>, -+ <&cru ACLK_VOP0>, <&cru HCLK_VOP0>; -+ assigned-clock-rates = <0>, <0>, <400000000>, <100000000>; -+ assigned-clock-parents = <&cru PLL_CPLL>, <&cru DCLK_VOP0_FRAC>; -+}; -+ -+&vopb_mmu { -+ status = "okay"; -+}; -diff --git a/configs/pinephone-pro-rk3399_defconfig b/configs/pinephone-pro-rk3399_defconfig -index 54f9b90536c..1982131c805 100644 ---- a/configs/pinephone-pro-rk3399_defconfig -+++ b/configs/pinephone-pro-rk3399_defconfig -@@ -96,6 +96,7 @@ CONFIG_USB_ETHER_RTL8152=y - CONFIG_VIDEO=y - CONFIG_DISPLAY=y - CONFIG_VIDEO_ROCKCHIP=y --CONFIG_DISPLAY_ROCKCHIP_EDP=y -+CONFIG_DISPLAY_ROCKCHIP_MIPI=y -+CONFIG_BACKLIGHT_PWM=y - CONFIG_SPL_TINY_MEMSET=y - CONFIG_ERRNO_STR=y -diff --git a/include/dt-bindings/clock/rk3399-cru.h b/include/dt-bindings/clock/rk3399-cru.h -index 211faf8fa89..7866e5266d2 100644 ---- a/include/dt-bindings/clock/rk3399-cru.h -+++ b/include/dt-bindings/clock/rk3399-cru.h -@@ -131,6 +131,8 @@ - #define DCLK_VOP0_DIV 182 - #define DCLK_VOP1_DIV 183 - #define DCLK_M0_PERILP 184 -+#define DCLK_VOP0_FRAC 185 -+#define DCLK_VOP1_FRAC 186 - - #define FCLK_CM0S 190 - --- -2.39.2 - diff --git a/rockchip-Enable-preboot-start-for-pci-usb.patch b/rockchip-Enable-preboot-start-for-pci-usb.patch index 408609e..56756bc 100644 --- a/rockchip-Enable-preboot-start-for-pci-usb.patch +++ b/rockchip-Enable-preboot-start-for-pci-usb.patch @@ -1,6 +1,6 @@ -From 367b3afc360e6fc92bd4cdca643ed2e4d928472d Mon Sep 17 00:00:00 2001 +From 3665ff79304fcb47427651125ccc2cfac01cb9f1 Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Wed, 13 Mar 2024 19:14:50 +0000 +Date: Sat, 25 May 2024 12:23:42 +0100 Subject: [PATCH] rockchip: Enable preboot start for pci/usb Enable the preboot so nvme works OOTB @@ -16,15 +16,15 @@ Signed-off-by: Peter Robinson configs/rock-pi-4-rk3399_defconfig | 2 ++ configs/rock-pi-4c-rk3399_defconfig | 2 ++ configs/rock-pi-n10-rk3399pro_defconfig | 2 ++ - configs/rock960-rk3399_defconfig | 1 + + configs/rock960-rk3399_defconfig | 2 ++ configs/rockpro64-rk3399_defconfig | 2 ++ - 11 files changed, 20 insertions(+) + 11 files changed, 21 insertions(+) diff --git a/configs/firefly-rk3399_defconfig b/configs/firefly-rk3399_defconfig -index b7c8e95b7b8..1e33083c138 100644 +index edacef29edf..71db7b7834e 100644 --- a/configs/firefly-rk3399_defconfig +++ b/configs/firefly-rk3399_defconfig -@@ -18,6 +18,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 +@@ -14,6 +14,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 CONFIG_SYS_LOAD_ADDR=0x800800 CONFIG_PCI=y CONFIG_DEBUG_UART=y @@ -32,12 +32,12 @@ index b7c8e95b7b8..1e33083c138 100644 +CONFIG_PREBOOT="pci enum; usb start; nvme scan;" CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-firefly.dtb" CONFIG_DISPLAY_BOARDINFO_LATE=y - CONFIG_MISC_INIT_R=y + CONFIG_SPL_MAX_SIZE=0x40000 diff --git a/configs/nanopc-t4-rk3399_defconfig b/configs/nanopc-t4-rk3399_defconfig -index c18e7b1bd16..e9a18eb3e9f 100644 +index c63f4c076d5..7174b82cfa4 100644 --- a/configs/nanopc-t4-rk3399_defconfig +++ b/configs/nanopc-t4-rk3399_defconfig -@@ -17,6 +17,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 +@@ -14,6 +14,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 CONFIG_SYS_LOAD_ADDR=0x800800 CONFIG_PCI=y CONFIG_DEBUG_UART=y @@ -45,24 +45,24 @@ index c18e7b1bd16..e9a18eb3e9f 100644 +CONFIG_PREBOOT="pci enum; usb start; nvme scan;" CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-nanopc-t4.dtb" CONFIG_DISPLAY_BOARDINFO_LATE=y - CONFIG_SPL_MAX_SIZE=0x2e000 + CONFIG_SPL_MAX_SIZE=0x40000 diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig -index de357415fbe..4168adb1935 100644 +index 5d3e32f9108..c9b3615f2ff 100644 --- a/configs/pinebook-pro-rk3399_defconfig +++ b/configs/pinebook-pro-rk3399_defconfig -@@ -24,6 +24,7 @@ CONFIG_PCI=y +@@ -21,6 +21,7 @@ CONFIG_PCI=y CONFIG_DEBUG_UART=y CONFIG_BOOTDELAY=3 CONFIG_USE_PREBOOT=y +CONFIG_PREBOOT="pci enum; usb start; nvme scan;" CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-pinebook-pro.dtb" CONFIG_DISPLAY_BOARDINFO_LATE=y - CONFIG_MISC_INIT_R=y + CONFIG_SPL_MAX_SIZE=0x40000 diff --git a/configs/roc-pc-mezzanine-rk3399_defconfig b/configs/roc-pc-mezzanine-rk3399_defconfig -index de6539bedf4..61c6182d27e 100644 +index a57899bfdfa..bd7030b237c 100644 --- a/configs/roc-pc-mezzanine-rk3399_defconfig +++ b/configs/roc-pc-mezzanine-rk3399_defconfig -@@ -23,6 +23,8 @@ CONFIG_SPL_SPI=y +@@ -20,6 +20,8 @@ CONFIG_SPL_SPI=y CONFIG_SYS_LOAD_ADDR=0x800800 CONFIG_PCI=y CONFIG_DEBUG_UART=y @@ -72,12 +72,12 @@ index de6539bedf4..61c6182d27e 100644 CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-roc-pc-mezzanine.dtb" CONFIG_DISPLAY_BOARDINFO_LATE=y diff --git a/configs/rock-4c-plus-rk3399_defconfig b/configs/rock-4c-plus-rk3399_defconfig -index 18525c8bf50..89e9f69eb63 100644 +index 80dc44986e7..0ff8afe8e1e 100644 --- a/configs/rock-4c-plus-rk3399_defconfig +++ b/configs/rock-4c-plus-rk3399_defconfig -@@ -18,6 +18,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 +@@ -16,6 +16,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y + CONFIG_SPL_SPI=y CONFIG_SYS_LOAD_ADDR=0x800800 - CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y +CONFIG_PREBOOT="pci enum; usb start; nvme scan;" @@ -85,49 +85,49 @@ index 18525c8bf50..89e9f69eb63 100644 CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rock-4c-plus.dtb" CONFIG_DISPLAY_BOARDINFO_LATE=y diff --git a/configs/rock-4se-rk3399_defconfig b/configs/rock-4se-rk3399_defconfig -index 171de23ec8f..d2769a2f516 100644 +index f52d4bf9913..72ff304cff7 100644 --- a/configs/rock-4se-rk3399_defconfig +++ b/configs/rock-4se-rk3399_defconfig -@@ -18,6 +18,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 +@@ -17,6 +17,8 @@ CONFIG_SPL_SPI=y CONFIG_SYS_LOAD_ADDR=0x800800 CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y +CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y # CONFIG_ANDROID_BOOT_IMAGE is not set - CONFIG_SPL_FIT_SIGNATURE=y - CONFIG_LEGACY_IMAGE_FORMAT=y + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rock-4se.dtb" diff --git a/configs/rock-pi-4-rk3399_defconfig b/configs/rock-pi-4-rk3399_defconfig -index 83fc4ad7dab..24ca614fe5a 100644 +index e71c4588b94..387dbf83be3 100644 --- a/configs/rock-pi-4-rk3399_defconfig +++ b/configs/rock-pi-4-rk3399_defconfig -@@ -18,6 +18,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 +@@ -17,6 +17,8 @@ CONFIG_SPL_SPI=y CONFIG_SYS_LOAD_ADDR=0x800800 CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y +CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y # CONFIG_ANDROID_BOOT_IMAGE is not set - CONFIG_SPL_FIT_SIGNATURE=y - CONFIG_LEGACY_IMAGE_FORMAT=y + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rock-pi-4a.dtb" diff --git a/configs/rock-pi-4c-rk3399_defconfig b/configs/rock-pi-4c-rk3399_defconfig -index 089344097e0..83c2cfba157 100644 +index 14373933a34..34e09eeccd2 100644 --- a/configs/rock-pi-4c-rk3399_defconfig +++ b/configs/rock-pi-4c-rk3399_defconfig -@@ -18,6 +18,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 +@@ -17,6 +17,8 @@ CONFIG_SPL_SPI=y CONFIG_SYS_LOAD_ADDR=0x800800 CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y +CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y # CONFIG_ANDROID_BOOT_IMAGE is not set CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rock-pi-4c.dtb" - CONFIG_DISPLAY_BOARDINFO_LATE=y diff --git a/configs/rock-pi-n10-rk3399pro_defconfig b/configs/rock-pi-n10-rk3399pro_defconfig -index dc4b3b40380..db34bc70a22 100644 +index ec995a54a0e..1a973ea2c97 100644 --- a/configs/rock-pi-n10-rk3399pro_defconfig +++ b/configs/rock-pi-n10-rk3399pro_defconfig -@@ -18,6 +18,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 +@@ -13,6 +13,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 CONFIG_SYS_LOAD_ADDR=0x800800 CONFIG_PCI=y CONFIG_DEBUG_UART=y @@ -137,30 +137,31 @@ index dc4b3b40380..db34bc70a22 100644 CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399pro-rock-pi-n10.dtb" # CONFIG_CONSOLE_MUX is not set diff --git a/configs/rock960-rk3399_defconfig b/configs/rock960-rk3399_defconfig -index b93dda56593..6d1b352a855 100644 +index 8fff3ed17c2..ea6d6d4a319 100644 --- a/configs/rock960-rk3399_defconfig +++ b/configs/rock960-rk3399_defconfig -@@ -17,6 +17,7 @@ CONFIG_SYS_LOAD_ADDR=0x800800 +@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0x800800 CONFIG_PCI=y CONFIG_DEBUG_UART=y - CONFIG_USE_PREBOOT=y ++CONFIG_USE_PREBOOT=y +CONFIG_PREBOOT="pci enum; usb start; nvme scan;" CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rock960.dtb" CONFIG_SYS_PBSIZE=1052 CONFIG_DISPLAY_BOARDINFO_LATE=y diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig -index 711541f8462..8c1ea1a0b63 100644 +index fc0804a0b80..9a94d96b148 100644 --- a/configs/rockpro64-rk3399_defconfig +++ b/configs/rockpro64-rk3399_defconfig -@@ -21,6 +21,8 @@ CONFIG_SPL_SPI=y +@@ -19,6 +19,8 @@ CONFIG_SPL_SPI=y CONFIG_SYS_LOAD_ADDR=0x800800 CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y +CONFIG_PREBOOT="pci enum; usb start; nvme scan;" - CONFIG_SPL_FIT_SIGNATURE=y - CONFIG_LEGACY_IMAGE_FORMAT=y CONFIG_BOOTSTAGE=y + CONFIG_BOOTSTAGE_REPORT=y + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rockpro64.dtb" -- -2.44.0 +2.45.1 diff --git a/rockchip-Migrate-to-use-DM_USB_GADGET-on-RK3328.patch b/rockchip-Migrate-to-use-DM_USB_GADGET-on-RK3328.patch deleted file mode 100644 index e2b54b4..0000000 --- a/rockchip-Migrate-to-use-DM_USB_GADGET-on-RK3328.patch +++ /dev/null @@ -1,691 +0,0 @@ -From 0149cf303734fad55f1d733628f76a6994d1436d Mon Sep 17 00:00:00 2001 -From: Jonas Karlman -Date: Sun, 10 Mar 2024 18:50:57 +0000 -Subject: [PATCH 1/4] rockchip: Update the default USB Product ID value - -RK3036 is using the USB product id normally used by RK3066B, and RK3328 -is using the product id normally used by RK3368. - -Fix this and update the default USB_GADGET_PRODUCT_NUM Kconfig option -for remaining supported Rockchip SoCs to match the product id used in -Maskrom mode. - -Also remove a reference to an undefined ROCKCHIP_RK3229 Kconfig symbol. - -Signed-off-by: Jonas Karlman -Reviewed-by: Kever Yang ---- - drivers/usb/gadget/Kconfig | 15 ++++++++++++--- - 1 file changed, 12 insertions(+), 3 deletions(-) - -diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig -index c72a8047635..4621a6fd5e6 100644 ---- a/drivers/usb/gadget/Kconfig -+++ b/drivers/usb/gadget/Kconfig -@@ -70,12 +70,21 @@ config USB_GADGET_PRODUCT_NUM - hex "Product ID of the USB device" - default 0x701a if ARCH_TEGRA - default 0x1010 if ARCH_SUNXI -- default 0x310a if ROCKCHIP_RK3036 -+ default 0x110a if ROCKCHIP_RV1108 -+ default 0x110b if ROCKCHIP_RV1126 - default 0x300a if ROCKCHIP_RK3066 -+ default 0x301a if ROCKCHIP_RK3036 -+ default 0x310b if ROCKCHIP_RK3188 - default 0x310c if ROCKCHIP_RK3128 -- default 0x320a if ROCKCHIP_RK3229 || ROCKCHIP_RK3288 -- default 0x330a if ROCKCHIP_RK3328 -+ default 0x320a if ROCKCHIP_RK3288 -+ default 0x320b if ROCKCHIP_RK322X -+ default 0x320c if ROCKCHIP_RK3328 -+ default 0x330a if ROCKCHIP_RK3368 - default 0x330c if ROCKCHIP_RK3399 -+ default 0x330d if ROCKCHIP_PX30 -+ default 0x330e if ROCKCHIP_RK3308 -+ default 0x350a if ROCKCHIP_RK3568 -+ default 0x350b if ROCKCHIP_RK3588 - default 0x0 - help - Product ID of the USB device emulated, reported to the host device. --- -2.44.0 - -From 3b4d52ef627bb3899c331ff24fe31cec5f445069 Mon Sep 17 00:00:00 2001 -From: Jonas Karlman -Date: Sun, 10 Mar 2024 18:50:58 +0000 -Subject: [PATCH 2/4] rockchip: board: Prepare for use of DM_USB_GADGET with - DWC2_OTG - -The board_usb_init() and board_usb_cleanup() functions is always -included when USB_GADGET and USB_GADGET_DWC2_OTG is enabled. - -Prepare for a change to use DM_USB_GADGET with DWC2_OTG by adding an -extra ifdef condition. The extra separate ifdef for USB_GADGET prepare -for next patch that adds a g_dnl_bind_fixup() function. - -Signed-off-by: Jonas Karlman -Reviewed-by: Kever Yang ---- - arch/arm/mach-rockchip/board.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/arch/arm/mach-rockchip/board.c b/arch/arm/mach-rockchip/board.c -index 2620530e03f..2ec670dde69 100644 ---- a/arch/arm/mach-rockchip/board.c -+++ b/arch/arm/mach-rockchip/board.c -@@ -205,7 +205,8 @@ void enable_caches(void) - } - #endif - --#if defined(CONFIG_USB_GADGET) && defined(CONFIG_USB_GADGET_DWC2_OTG) -+#if IS_ENABLED(CONFIG_USB_GADGET) -+#if IS_ENABLED(CONFIG_USB_GADGET_DWC2_OTG) && !IS_ENABLED(CONFIG_DM_USB_GADGET) - #include - #include - #include -@@ -281,6 +282,7 @@ int board_usb_cleanup(int index, enum usb_init_type init) - return 0; - } - #endif /* CONFIG_USB_GADGET_DWC2_OTG */ -+#endif /* CONFIG_USB_GADGET */ - - #if IS_ENABLED(CONFIG_FASTBOOT) - int fastboot_set_reboot_flag(enum fastboot_reboot_reason reason) --- -2.44.0 - -From 201da409a8c879482a00867010b772327aba6a51 Mon Sep 17 00:00:00 2001 -From: Jonas Karlman -Date: Sun, 10 Mar 2024 18:50:59 +0000 -Subject: [PATCH 3/4] rockchip: board: Use a common USB Product ID for UMS - -Change to use the common Product ID 0x0010 when the ums command is used. - -This matches downstream vendor U-Boot and is a Product ID that tools -such as rkdeveloptool and RKDevTool will identify as MSC mode. - -Signed-off-by: Jonas Karlman -Reviewed-by: Kever Yang ---- - arch/arm/mach-rockchip/board.c | 17 ++++++++++++++++- - 1 file changed, 16 insertions(+), 1 deletion(-) - -diff --git a/arch/arm/mach-rockchip/board.c b/arch/arm/mach-rockchip/board.c -index 2ec670dde69..2db746b27fb 100644 ---- a/arch/arm/mach-rockchip/board.c -+++ b/arch/arm/mach-rockchip/board.c -@@ -206,8 +206,23 @@ void enable_caches(void) - #endif - - #if IS_ENABLED(CONFIG_USB_GADGET) --#if IS_ENABLED(CONFIG_USB_GADGET_DWC2_OTG) && !IS_ENABLED(CONFIG_DM_USB_GADGET) - #include -+ -+#if IS_ENABLED(CONFIG_USB_GADGET_DOWNLOAD) -+#define ROCKCHIP_G_DNL_UMS_PRODUCT_NUM 0x0010 -+ -+int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name) -+{ -+ if (!strcmp(name, "usb_dnl_ums")) -+ put_unaligned(ROCKCHIP_G_DNL_UMS_PRODUCT_NUM, &dev->idProduct); -+ else -+ put_unaligned(CONFIG_USB_GADGET_PRODUCT_NUM, &dev->idProduct); -+ -+ return 0; -+} -+#endif /* CONFIG_USB_GADGET_DOWNLOAD */ -+ -+#if IS_ENABLED(CONFIG_USB_GADGET_DWC2_OTG) && !IS_ENABLED(CONFIG_DM_USB_GADGET) - #include - #include - --- -2.44.0 - -From 2cb2428ae571956dfafb2eeed8b54857b12e17d0 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Wed, 3 Apr 2024 05:29:20 +0100 -Subject: [PATCH 4/4] rockchip: Migrate to use DM_USB_GADGET on RK3328 - -USB gadget is not working fully as expected on RK3328, it uses a -board_usb_init() function to initialize the DWC2 OTG port. - -The board_usb_init() function does not intgrate with the generic phy -framework and as a result the USB phy is not properly configured before -or after USB gadget use. - -Having both USB_DWC2 and DWC2_OTG enabled for the same board is also -causing some issues. - -Trying to use rockusb or ums command after usb stop result in a freeze -due to usb stop is putting the phy in a suspended state. - - => usb start - => usb stop - => ums 0 mmc 0 - --> freeze due to usb phy is suspended <-- - -Fix this by only using one of USB_DWC2 (host) or DWC2_OTG (peripheral) -depending on the most likely usage of the otg port and by migrating to -use DM_USB_GADGET instead of a board_usb_init() function. - -The nanopi-r2 and orangepi-r1-plus variants share OTG and power using a -Type-C connector, mark these boards dr_mode as peripheral, the most -likely usage is for recovery and image download. - -The rock64 and roc-cc currently use dr_mode as host, remove the DWC2_OTG -driver from these boards to ensure that the USB_DWC2 driver is used. - -The rock-pi-e board does not enable the usb20_otg node so both USB_DWC2 -and DWC2_OTG is removed from this board. - -Enable RockUSB and UMS on all boards with a otg port in peripheral mode. - -Also with the migration to DM_USB_GADGET completed the U-Boot specific -change to reorder usb nodes in the soc device tree can be reverted. - -Signed-off-by: Jonas Karlman -Reviewed-by: Kever Yang -Signed-off-by: Peter Robinson ---- - arch/arm/dts/rk3328-nanopi-r2s-u-boot.dtsi | 4 ++ - .../rk3328-orangepi-r1-plus-lts-u-boot.dtsi | 4 ++ - .../dts/rk3328-orangepi-r1-plus-u-boot.dtsi | 4 ++ - arch/arm/dts/rk3328-roc-cc-u-boot.dtsi | 4 ++ - arch/arm/dts/rk3328-rock-pi-e-u-boot.dtsi | 9 ++++ - arch/arm/dts/rk3328-rock64-u-boot.dtsi | 4 ++ - arch/arm/dts/rk3328-u-boot.dtsi | 4 -- - arch/arm/dts/rk3328.dtsi | 41 ++++++++----------- - configs/evb-rk3328_defconfig | 7 +++- - configs/nanopi-r2c-plus-rk3328_defconfig | 7 +++- - configs/nanopi-r2c-rk3328_defconfig | 7 +++- - configs/nanopi-r2s-rk3328_defconfig | 7 +++- - configs/orangepi-r1-plus-lts-rk3328_defconfig | 7 +++- - configs/orangepi-r1-plus-rk3328_defconfig | 7 +++- - configs/roc-cc-rk3328_defconfig | 7 ---- - configs/rock-pi-e-rk3328_defconfig | 7 ---- - configs/rock64-rk3328_defconfig | 6 --- - 17 files changed, 75 insertions(+), 61 deletions(-) - -diff --git a/arch/arm/dts/rk3328-nanopi-r2s-u-boot.dtsi b/arch/arm/dts/rk3328-nanopi-r2s-u-boot.dtsi -index 78d37ab4755..3a16f86c18a 100644 ---- a/arch/arm/dts/rk3328-nanopi-r2s-u-boot.dtsi -+++ b/arch/arm/dts/rk3328-nanopi-r2s-u-boot.dtsi -@@ -28,6 +28,10 @@ - bootph-pre-ram; - }; - -+&usb20_otg { -+ dr_mode = "peripheral"; -+}; -+ - /* Need this and all the pinctrl/gpio stuff above to set pinmux */ - &vcc_sd { - bootph-pre-ram; -diff --git a/arch/arm/dts/rk3328-orangepi-r1-plus-lts-u-boot.dtsi b/arch/arm/dts/rk3328-orangepi-r1-plus-lts-u-boot.dtsi -index ebe33e48cb9..2247daebc13 100644 ---- a/arch/arm/dts/rk3328-orangepi-r1-plus-lts-u-boot.dtsi -+++ b/arch/arm/dts/rk3328-orangepi-r1-plus-lts-u-boot.dtsi -@@ -28,6 +28,10 @@ - bootph-pre-ram; - }; - -+&usb20_otg { -+ dr_mode = "peripheral"; -+}; -+ - /* Need this and all the pinctrl/gpio stuff above to set pinmux */ - &vcc_sd { - bootph-pre-ram; -diff --git a/arch/arm/dts/rk3328-orangepi-r1-plus-u-boot.dtsi b/arch/arm/dts/rk3328-orangepi-r1-plus-u-boot.dtsi -index 637c70adf19..79942a49a29 100644 ---- a/arch/arm/dts/rk3328-orangepi-r1-plus-u-boot.dtsi -+++ b/arch/arm/dts/rk3328-orangepi-r1-plus-u-boot.dtsi -@@ -28,6 +28,10 @@ - bootph-pre-ram; - }; - -+&usb20_otg { -+ dr_mode = "peripheral"; -+}; -+ - /* Need this and all the pinctrl/gpio stuff above to set pinmux */ - &vcc_sd { - bootph-pre-ram; -diff --git a/arch/arm/dts/rk3328-roc-cc-u-boot.dtsi b/arch/arm/dts/rk3328-roc-cc-u-boot.dtsi -index 2062f34bf82..1aeb0083631 100644 ---- a/arch/arm/dts/rk3328-roc-cc-u-boot.dtsi -+++ b/arch/arm/dts/rk3328-roc-cc-u-boot.dtsi -@@ -48,6 +48,10 @@ - bootph-pre-ram; - }; - -+&usb20_otg { -+ hnp-srp-disable; -+}; -+ - /* Need this and all the pinctrl/gpio stuff above to set pinmux */ - &vcc_sd { - bootph-pre-ram; -diff --git a/arch/arm/dts/rk3328-rock-pi-e-u-boot.dtsi b/arch/arm/dts/rk3328-rock-pi-e-u-boot.dtsi -index 1f220c6dcd0..c2371fb1688 100644 ---- a/arch/arm/dts/rk3328-rock-pi-e-u-boot.dtsi -+++ b/arch/arm/dts/rk3328-rock-pi-e-u-boot.dtsi -@@ -45,6 +45,15 @@ - bootph-pre-ram; - }; - -+&u2phy_host { -+ phy-supply = <&vcc_host_5v>; -+}; -+ -+&vcc_host_5v { -+ /delete-property/ regulator-always-on; -+ /delete-property/ regulator-boot-on; -+}; -+ - /* Need this and all the pinctrl/gpio stuff above to set pinmux */ - &vcc_sd { - bootph-pre-ram; -diff --git a/arch/arm/dts/rk3328-rock64-u-boot.dtsi b/arch/arm/dts/rk3328-rock64-u-boot.dtsi -index 6904515b969..1e4649ae120 100644 ---- a/arch/arm/dts/rk3328-rock64-u-boot.dtsi -+++ b/arch/arm/dts/rk3328-rock64-u-boot.dtsi -@@ -48,6 +48,10 @@ - bootph-pre-ram; - }; - -+&usb20_otg { -+ hnp-srp-disable; -+}; -+ - /* Need this and all the pinctrl/gpio stuff above to set pinmux */ - &vcc_sd { - bootph-pre-ram; -diff --git a/arch/arm/dts/rk3328-u-boot.dtsi b/arch/arm/dts/rk3328-u-boot.dtsi -index a9f2536de2a..b5da4518ec9 100644 ---- a/arch/arm/dts/rk3328-u-boot.dtsi -+++ b/arch/arm/dts/rk3328-u-boot.dtsi -@@ -61,10 +61,6 @@ - u-boot,spl-fifo-mode; - }; - --&usb20_otg { -- hnp-srp-disable; --}; -- - &spi0 { - bootph-all; - }; -diff --git a/arch/arm/dts/rk3328.dtsi b/arch/arm/dts/rk3328.dtsi -index e8d8f00be8a..8c821acb21f 100644 ---- a/arch/arm/dts/rk3328.dtsi -+++ b/arch/arm/dts/rk3328.dtsi -@@ -944,6 +944,22 @@ - }; - }; - -+ usb20_otg: usb@ff580000 { -+ compatible = "rockchip,rk3328-usb", "rockchip,rk3066-usb", -+ "snps,dwc2"; -+ reg = <0x0 0xff580000 0x0 0x40000>; -+ interrupts = ; -+ clocks = <&cru HCLK_OTG>; -+ clock-names = "otg"; -+ dr_mode = "otg"; -+ g-np-tx-fifo-size = <16>; -+ g-rx-fifo-size = <280>; -+ g-tx-fifo-size = <256 128 128 64 32 16>; -+ phys = <&u2phy_otg>; -+ phy-names = "usb2-phy"; -+ status = "disabled"; -+ }; -+ - usb_host0_ehci: usb@ff5c0000 { - compatible = "generic-ehci"; - reg = <0x0 0xff5c0000 0x0 0x10000>; -@@ -983,31 +999,6 @@ - status = "disabled"; - }; - -- /* -- * U-Boot Specific Change -- * -- * The OTG controller must come after the USB host pair for it -- * to work. This is likely due to lack of support for the USB -- * PHYs. This must be manually changed after each device tree -- * sync. There is no clean way to handle this in -u-boot.dtsi -- * files. -- */ -- usb20_otg: usb@ff580000 { -- compatible = "rockchip,rk3328-usb", "rockchip,rk3066-usb", -- "snps,dwc2"; -- reg = <0x0 0xff580000 0x0 0x40000>; -- interrupts = ; -- clocks = <&cru HCLK_OTG>; -- clock-names = "otg"; -- dr_mode = "otg"; -- g-np-tx-fifo-size = <16>; -- g-rx-fifo-size = <280>; -- g-tx-fifo-size = <256 128 128 64 32 16>; -- phys = <&u2phy_otg>; -- phy-names = "usb2-phy"; -- status = "disabled"; -- }; -- - gic: interrupt-controller@ff811000 { - compatible = "arm,gic-400"; - #interrupt-cells = <3>; -diff --git a/configs/evb-rk3328_defconfig b/configs/evb-rk3328_defconfig -index b9c541a92a1..ed2e2b7aa6f 100644 ---- a/configs/evb-rk3328_defconfig -+++ b/configs/evb-rk3328_defconfig -@@ -46,6 +46,8 @@ CONFIG_CMD_BOOTZ=y - CONFIG_CMD_GPT=y - CONFIG_CMD_MMC=y - CONFIG_CMD_USB=y -+CONFIG_CMD_ROCKUSB=y -+CONFIG_CMD_USB_MASS_STORAGE=y - # CONFIG_CMD_SETEXPR is not set - CONFIG_CMD_TIME=y - CONFIG_SPL_OF_CONTROL=y -@@ -93,17 +95,18 @@ CONFIG_SYS_NS16550_MEM32=y - CONFIG_SYSRESET=y - # CONFIG_TPL_SYSRESET is not set - CONFIG_USB=y -+CONFIG_DM_USB_GADGET=y - CONFIG_USB_XHCI_HCD=y -+CONFIG_USB_XHCI_DWC3=y - CONFIG_USB_EHCI_HCD=y - CONFIG_USB_EHCI_GENERIC=y - CONFIG_USB_OHCI_HCD=y - CONFIG_USB_OHCI_GENERIC=y --CONFIG_USB_DWC2=y - CONFIG_USB_DWC3=y - # CONFIG_USB_DWC3_GADGET is not set --CONFIG_USB_DWC3_GENERIC=y - CONFIG_USB_GADGET=y - CONFIG_USB_GADGET_DWC2_OTG=y -+CONFIG_USB_FUNCTION_ROCKUSB=y - CONFIG_SPL_TINY_MEMSET=y - CONFIG_TPL_TINY_MEMSET=y - CONFIG_ERRNO_STR=y -diff --git a/configs/nanopi-r2c-plus-rk3328_defconfig b/configs/nanopi-r2c-plus-rk3328_defconfig -index 320ed8b434a..015bcfef369 100644 ---- a/configs/nanopi-r2c-plus-rk3328_defconfig -+++ b/configs/nanopi-r2c-plus-rk3328_defconfig -@@ -48,6 +48,8 @@ CONFIG_CMD_BOOTZ=y - CONFIG_CMD_GPT=y - CONFIG_CMD_MMC=y - CONFIG_CMD_USB=y -+CONFIG_CMD_ROCKUSB=y -+CONFIG_CMD_USB_MASS_STORAGE=y - # CONFIG_CMD_SETEXPR is not set - CONFIG_CMD_TIME=y - CONFIG_SPL_OF_CONTROL=y -@@ -98,17 +100,18 @@ CONFIG_SYSINFO=y - CONFIG_SYSRESET=y - # CONFIG_TPL_SYSRESET is not set - CONFIG_USB=y -+CONFIG_DM_USB_GADGET=y - CONFIG_USB_XHCI_HCD=y -+CONFIG_USB_XHCI_DWC3=y - CONFIG_USB_EHCI_HCD=y - CONFIG_USB_EHCI_GENERIC=y - CONFIG_USB_OHCI_HCD=y - CONFIG_USB_OHCI_GENERIC=y --CONFIG_USB_DWC2=y - CONFIG_USB_DWC3=y - # CONFIG_USB_DWC3_GADGET is not set --CONFIG_USB_DWC3_GENERIC=y - CONFIG_USB_GADGET=y - CONFIG_USB_GADGET_DWC2_OTG=y -+CONFIG_USB_FUNCTION_ROCKUSB=y - CONFIG_SPL_TINY_MEMSET=y - CONFIG_TPL_TINY_MEMSET=y - CONFIG_ERRNO_STR=y -diff --git a/configs/nanopi-r2c-rk3328_defconfig b/configs/nanopi-r2c-rk3328_defconfig -index 583179d7c54..5742567a3d4 100644 ---- a/configs/nanopi-r2c-rk3328_defconfig -+++ b/configs/nanopi-r2c-rk3328_defconfig -@@ -48,6 +48,8 @@ CONFIG_CMD_BOOTZ=y - CONFIG_CMD_GPT=y - CONFIG_CMD_MMC=y - CONFIG_CMD_USB=y -+CONFIG_CMD_ROCKUSB=y -+CONFIG_CMD_USB_MASS_STORAGE=y - # CONFIG_CMD_SETEXPR is not set - CONFIG_CMD_TIME=y - CONFIG_SPL_OF_CONTROL=y -@@ -98,17 +100,18 @@ CONFIG_SYSINFO=y - CONFIG_SYSRESET=y - # CONFIG_TPL_SYSRESET is not set - CONFIG_USB=y -+CONFIG_DM_USB_GADGET=y - CONFIG_USB_XHCI_HCD=y -+CONFIG_USB_XHCI_DWC3=y - CONFIG_USB_EHCI_HCD=y - CONFIG_USB_EHCI_GENERIC=y - CONFIG_USB_OHCI_HCD=y - CONFIG_USB_OHCI_GENERIC=y --CONFIG_USB_DWC2=y - CONFIG_USB_DWC3=y - # CONFIG_USB_DWC3_GADGET is not set --CONFIG_USB_DWC3_GENERIC=y - CONFIG_USB_GADGET=y - CONFIG_USB_GADGET_DWC2_OTG=y -+CONFIG_USB_FUNCTION_ROCKUSB=y - CONFIG_SPL_TINY_MEMSET=y - CONFIG_TPL_TINY_MEMSET=y - CONFIG_ERRNO_STR=y -diff --git a/configs/nanopi-r2s-rk3328_defconfig b/configs/nanopi-r2s-rk3328_defconfig -index f7ed71e4122..180a76e0eeb 100644 ---- a/configs/nanopi-r2s-rk3328_defconfig -+++ b/configs/nanopi-r2s-rk3328_defconfig -@@ -48,6 +48,8 @@ CONFIG_CMD_BOOTZ=y - CONFIG_CMD_GPT=y - CONFIG_CMD_MMC=y - CONFIG_CMD_USB=y -+CONFIG_CMD_ROCKUSB=y -+CONFIG_CMD_USB_MASS_STORAGE=y - # CONFIG_CMD_SETEXPR is not set - CONFIG_CMD_TIME=y - CONFIG_SPL_OF_CONTROL=y -@@ -98,17 +100,18 @@ CONFIG_SYSINFO=y - CONFIG_SYSRESET=y - # CONFIG_TPL_SYSRESET is not set - CONFIG_USB=y -+CONFIG_DM_USB_GADGET=y - CONFIG_USB_XHCI_HCD=y -+CONFIG_USB_XHCI_DWC3=y - CONFIG_USB_EHCI_HCD=y - CONFIG_USB_EHCI_GENERIC=y - CONFIG_USB_OHCI_HCD=y - CONFIG_USB_OHCI_GENERIC=y --CONFIG_USB_DWC2=y - CONFIG_USB_DWC3=y - # CONFIG_USB_DWC3_GADGET is not set --CONFIG_USB_DWC3_GENERIC=y - CONFIG_USB_GADGET=y - CONFIG_USB_GADGET_DWC2_OTG=y -+CONFIG_USB_FUNCTION_ROCKUSB=y - CONFIG_SPL_TINY_MEMSET=y - CONFIG_TPL_TINY_MEMSET=y - CONFIG_ERRNO_STR=y -diff --git a/configs/orangepi-r1-plus-lts-rk3328_defconfig b/configs/orangepi-r1-plus-lts-rk3328_defconfig -index d3d9417509e..a1a96bf2f28 100644 ---- a/configs/orangepi-r1-plus-lts-rk3328_defconfig -+++ b/configs/orangepi-r1-plus-lts-rk3328_defconfig -@@ -48,6 +48,8 @@ CONFIG_CMD_BOOTZ=y - CONFIG_CMD_GPT=y - CONFIG_CMD_MMC=y - CONFIG_CMD_USB=y -+CONFIG_CMD_ROCKUSB=y -+CONFIG_CMD_USB_MASS_STORAGE=y - # CONFIG_CMD_SETEXPR is not set - CONFIG_CMD_TIME=y - CONFIG_SPL_OF_CONTROL=y -@@ -99,17 +101,18 @@ CONFIG_SYSINFO=y - CONFIG_SYSRESET=y - # CONFIG_TPL_SYSRESET is not set - CONFIG_USB=y -+CONFIG_DM_USB_GADGET=y - CONFIG_USB_XHCI_HCD=y -+CONFIG_USB_XHCI_DWC3=y - CONFIG_USB_EHCI_HCD=y - CONFIG_USB_EHCI_GENERIC=y - CONFIG_USB_OHCI_HCD=y - CONFIG_USB_OHCI_GENERIC=y --CONFIG_USB_DWC2=y - CONFIG_USB_DWC3=y - # CONFIG_USB_DWC3_GADGET is not set --CONFIG_USB_DWC3_GENERIC=y - CONFIG_USB_GADGET=y - CONFIG_USB_GADGET_DWC2_OTG=y -+CONFIG_USB_FUNCTION_ROCKUSB=y - CONFIG_SPL_TINY_MEMSET=y - CONFIG_TPL_TINY_MEMSET=y - CONFIG_ERRNO_STR=y -diff --git a/configs/orangepi-r1-plus-rk3328_defconfig b/configs/orangepi-r1-plus-rk3328_defconfig -index 9356e87132e..04273a0491c 100644 ---- a/configs/orangepi-r1-plus-rk3328_defconfig -+++ b/configs/orangepi-r1-plus-rk3328_defconfig -@@ -48,6 +48,8 @@ CONFIG_CMD_BOOTZ=y - CONFIG_CMD_GPT=y - CONFIG_CMD_MMC=y - CONFIG_CMD_USB=y -+CONFIG_CMD_ROCKUSB=y -+CONFIG_CMD_USB_MASS_STORAGE=y - # CONFIG_CMD_SETEXPR is not set - CONFIG_CMD_TIME=y - CONFIG_SPL_OF_CONTROL=y -@@ -99,17 +101,18 @@ CONFIG_SYSINFO=y - CONFIG_SYSRESET=y - # CONFIG_TPL_SYSRESET is not set - CONFIG_USB=y -+CONFIG_DM_USB_GADGET=y - CONFIG_USB_XHCI_HCD=y -+CONFIG_USB_XHCI_DWC3=y - CONFIG_USB_EHCI_HCD=y - CONFIG_USB_EHCI_GENERIC=y - CONFIG_USB_OHCI_HCD=y - CONFIG_USB_OHCI_GENERIC=y --CONFIG_USB_DWC2=y - CONFIG_USB_DWC3=y - # CONFIG_USB_DWC3_GADGET is not set --CONFIG_USB_DWC3_GENERIC=y - CONFIG_USB_GADGET=y - CONFIG_USB_GADGET_DWC2_OTG=y -+CONFIG_USB_FUNCTION_ROCKUSB=y - CONFIG_SPL_TINY_MEMSET=y - CONFIG_TPL_TINY_MEMSET=y - CONFIG_ERRNO_STR=y -diff --git a/configs/roc-cc-rk3328_defconfig b/configs/roc-cc-rk3328_defconfig -index 4ac3c9403b0..0e4edcc999d 100644 ---- a/configs/roc-cc-rk3328_defconfig -+++ b/configs/roc-cc-rk3328_defconfig -@@ -23,7 +23,6 @@ CONFIG_DEBUG_UART_BASE=0xFF130000 - CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0x800800 - CONFIG_DEBUG_UART=y --# CONFIG_ANDROID_BOOT_IMAGE is not set - CONFIG_FIT=y - CONFIG_FIT_VERBOSE=y - CONFIG_SPL_LOAD_FIT=y -@@ -48,7 +47,6 @@ CONFIG_CMD_BOOTZ=y - CONFIG_CMD_GPT=y - CONFIG_CMD_MMC=y - CONFIG_CMD_USB=y --CONFIG_CMD_USB_MASS_STORAGE=y - # CONFIG_CMD_SETEXPR is not set - CONFIG_CMD_TIME=y - CONFIG_SPL_OF_CONTROL=y -@@ -68,8 +66,6 @@ CONFIG_SPL_SYSCON=y - CONFIG_TPL_SYSCON=y - CONFIG_CLK=y - CONFIG_SPL_CLK=y --CONFIG_FASTBOOT_BUF_ADDR=0x800800 --CONFIG_FASTBOOT_CMD_OEM_FORMAT=y - CONFIG_ROCKCHIP_GPIO=y - CONFIG_SYS_I2C_ROCKCHIP=y - CONFIG_MISC=y -@@ -110,10 +106,7 @@ CONFIG_USB_OHCI_HCD=y - CONFIG_USB_OHCI_GENERIC=y - CONFIG_USB_DWC2=y - CONFIG_USB_DWC3=y --# CONFIG_USB_DWC3_GADGET is not set - CONFIG_USB_DWC3_GENERIC=y --CONFIG_USB_GADGET=y --CONFIG_USB_GADGET_DWC2_OTG=y - CONFIG_SPL_TINY_MEMSET=y - CONFIG_TPL_TINY_MEMSET=y - CONFIG_ERRNO_STR=y -diff --git a/configs/rock-pi-e-rk3328_defconfig b/configs/rock-pi-e-rk3328_defconfig -index 6dda900a9b4..6a4284120d2 100644 ---- a/configs/rock-pi-e-rk3328_defconfig -+++ b/configs/rock-pi-e-rk3328_defconfig -@@ -24,7 +24,6 @@ CONFIG_DEBUG_UART_BASE=0xFF130000 - CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0x800800 - CONFIG_DEBUG_UART=y --# CONFIG_ANDROID_BOOT_IMAGE is not set - CONFIG_FIT=y - CONFIG_FIT_VERBOSE=y - CONFIG_SPL_LOAD_FIT=y -@@ -69,8 +68,6 @@ CONFIG_SPL_SYSCON=y - CONFIG_TPL_SYSCON=y - CONFIG_CLK=y - CONFIG_SPL_CLK=y --CONFIG_FASTBOOT_BUF_ADDR=0x800800 --CONFIG_FASTBOOT_CMD_OEM_FORMAT=y - CONFIG_ROCKCHIP_GPIO=y - CONFIG_SYS_I2C_ROCKCHIP=y - CONFIG_MISC=y -@@ -109,12 +106,8 @@ CONFIG_USB_EHCI_HCD=y - CONFIG_USB_EHCI_GENERIC=y - CONFIG_USB_OHCI_HCD=y - CONFIG_USB_OHCI_GENERIC=y --CONFIG_USB_DWC2=y - CONFIG_USB_DWC3=y --# CONFIG_USB_DWC3_GADGET is not set - CONFIG_USB_DWC3_GENERIC=y --CONFIG_USB_GADGET=y --CONFIG_USB_GADGET_DWC2_OTG=y - CONFIG_SPL_TINY_MEMSET=y - CONFIG_TPL_TINY_MEMSET=y - CONFIG_ERRNO_STR=y -diff --git a/configs/rock64-rk3328_defconfig b/configs/rock64-rk3328_defconfig -index 0297d098761..fd42059565a 100644 ---- a/configs/rock64-rk3328_defconfig -+++ b/configs/rock64-rk3328_defconfig -@@ -23,7 +23,6 @@ CONFIG_DEBUG_UART_BASE=0xFF130000 - CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0x800800 - CONFIG_DEBUG_UART=y --# CONFIG_ANDROID_BOOT_IMAGE is not set - CONFIG_FIT=y - CONFIG_FIT_VERBOSE=y - CONFIG_SPL_LOAD_FIT=y -@@ -67,8 +66,6 @@ CONFIG_SPL_SYSCON=y - CONFIG_TPL_SYSCON=y - CONFIG_CLK=y - CONFIG_SPL_CLK=y --CONFIG_FASTBOOT_BUF_ADDR=0x800800 --CONFIG_FASTBOOT_CMD_OEM_FORMAT=y - CONFIG_ROCKCHIP_GPIO=y - CONFIG_SYS_I2C_ROCKCHIP=y - CONFIG_MISC=y -@@ -111,10 +108,7 @@ CONFIG_USB_OHCI_HCD=y - CONFIG_USB_OHCI_GENERIC=y - CONFIG_USB_DWC2=y - CONFIG_USB_DWC3=y --# CONFIG_USB_DWC3_GADGET is not set - CONFIG_USB_DWC3_GENERIC=y --CONFIG_USB_GADGET=y --CONFIG_USB_GADGET_DWC2_OTG=y - CONFIG_SPL_TINY_MEMSET=y - CONFIG_TPL_TINY_MEMSET=y - CONFIG_ERRNO_STR=y --- -2.44.0 - diff --git a/rpi-Switch-to-OF_HAS_PRIOR_STAGE-by-default.patch b/rpi-Switch-to-OF_HAS_PRIOR_STAGE-by-default.patch deleted file mode 100644 index 9ac9512..0000000 --- a/rpi-Switch-to-OF_HAS_PRIOR_STAGE-by-default.patch +++ /dev/null @@ -1,154 +0,0 @@ -From 5aaa4c98be87eef370a0c50bf6d4ab7f9fcde886 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Mon, 8 Jan 2024 22:13:59 +0000 -Subject: [PATCH] rpi: Switch to OF_HAS_PRIOR_STAGE by default -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -On all Raspberry Pi platforms, we're loaded by a prior stage firmware -that has assembled and passed on a device tree binary for us to use. -Switch to using this tree by default. - -Signed-off-by: Peter Robinson -Cc: Matthias Brugger -Cc: Simon Glass -Cc: François Ozog -Signed-off-by: Tom Rini -Tested-by: Simon Glass ---- -To be clear, this is on top of current -next where I've applied v8 of -Simon's series that introduces OF_HAS_PRIOR_STAGE. - -I've only been able to test this on my Raspberry Pi 3 boards but this -should work everywhere. What may, or may not, be a problem is that -arch/arm/dts/bcm283x-u-boot.dtsi is never used now. On the other hand, -I believe this should stop the problems we have where changes made to -the device tree via config.txt or similar aren't reflected when booting -U-Boot or Linux since we will be using that tree for certain now. ---- - arch/arm/Kconfig | 1 + - arch/arm/mach-bcm283x/Kconfig | 3 --- - configs/rpi_0_w_defconfig | 1 - - configs/rpi_2_defconfig | 1 - - configs/rpi_3_32b_defconfig | 1 - - configs/rpi_3_b_plus_defconfig | 1 - - configs/rpi_3_defconfig | 1 - - configs/rpi_defconfig | 1 - - 8 files changed, 1 insertion(+), 9 deletions(-) - -diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig -index 1fd7aacc380..33bbe7b4898 100644 ---- a/arch/arm/Kconfig -+++ b/arch/arm/Kconfig -@@ -645,6 +645,7 @@ config ARCH_BCM283X - select SERIAL_SEARCH_ALL - imply CMD_DM - imply FAT_WRITE -+ imply OF_HAS_PRIOR_STAGE - - config ARCH_BCMSTB - bool "Broadcom BCM7XXX family" -diff --git a/arch/arm/mach-bcm283x/Kconfig b/arch/arm/mach-bcm283x/Kconfig -index 6ce278c6d29..b3287ce8bce 100644 ---- a/arch/arm/mach-bcm283x/Kconfig -+++ b/arch/arm/mach-bcm283x/Kconfig -@@ -163,7 +163,6 @@ config TARGET_RPI_4_32B - - This option creates a build targeting the ARMv7/AArch32 ISA. - select BCM2711_32B -- imply OF_HAS_PRIOR_STAGE - - config TARGET_RPI_4 - bool "Raspberry Pi 4 64-bit build" -@@ -189,7 +188,6 @@ config TARGET_RPI_4 - - This option creates a build targeting the ARMv8/AArch64 ISA. - select BCM2711_64B -- imply OF_HAS_PRIOR_STAGE - - config TARGET_RPI_ARM64 - bool "Raspberry Pi one binary 64-bit build" -@@ -197,7 +195,6 @@ config TARGET_RPI_ARM64 - Support for all armv8 based Raspberry Pi variants, such as - the RPi 4 model B, in AArch64 (64-bit) mode. - select ARM64 -- imply OF_HAS_PRIOR_STAGE - - endchoice - -diff --git a/configs/rpi_0_w_defconfig b/configs/rpi_0_w_defconfig -index bed143d64d6..98f8904c918 100644 ---- a/configs/rpi_0_w_defconfig -+++ b/configs/rpi_0_w_defconfig -@@ -24,7 +24,6 @@ CONFIG_CMD_GPIO=y - CONFIG_CMD_MMC=y - CONFIG_CMD_USB=y - CONFIG_CMD_FS_UUID=y --CONFIG_OF_EMBED=y - CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" - CONFIG_SYS_RELOC_GD_ENV_ADDR=y - CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y -diff --git a/configs/rpi_2_defconfig b/configs/rpi_2_defconfig -index e4e4843e8cd..1b8676e1d10 100644 ---- a/configs/rpi_2_defconfig -+++ b/configs/rpi_2_defconfig -@@ -25,7 +25,6 @@ CONFIG_CMD_GPIO=y - CONFIG_CMD_MMC=y - CONFIG_CMD_USB=y - CONFIG_CMD_FS_UUID=y --CONFIG_OF_EMBED=y - CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" - CONFIG_SYS_RELOC_GD_ENV_ADDR=y - CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y -diff --git a/configs/rpi_3_32b_defconfig b/configs/rpi_3_32b_defconfig -index 215396599e4..abc10a79ada 100644 ---- a/configs/rpi_3_32b_defconfig -+++ b/configs/rpi_3_32b_defconfig -@@ -24,7 +24,6 @@ CONFIG_CMD_GPIO=y - CONFIG_CMD_MMC=y - CONFIG_CMD_USB=y - CONFIG_CMD_FS_UUID=y --CONFIG_OF_EMBED=y - CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" - CONFIG_SYS_RELOC_GD_ENV_ADDR=y - CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y -diff --git a/configs/rpi_3_b_plus_defconfig b/configs/rpi_3_b_plus_defconfig -index d1ec55e558a..3c8f8fc1bb7 100644 ---- a/configs/rpi_3_b_plus_defconfig -+++ b/configs/rpi_3_b_plus_defconfig -@@ -23,7 +23,6 @@ CONFIG_CMD_GPIO=y - CONFIG_CMD_MMC=y - CONFIG_CMD_USB=y - CONFIG_CMD_FS_UUID=y --CONFIG_OF_EMBED=y - CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" - CONFIG_SYS_RELOC_GD_ENV_ADDR=y - CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y -diff --git a/configs/rpi_3_defconfig b/configs/rpi_3_defconfig -index 8e9c35b3cef..9853c448809 100644 ---- a/configs/rpi_3_defconfig -+++ b/configs/rpi_3_defconfig -@@ -23,7 +23,6 @@ CONFIG_CMD_GPIO=y - CONFIG_CMD_MMC=y - CONFIG_CMD_USB=y - CONFIG_CMD_FS_UUID=y --CONFIG_OF_EMBED=y - CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" - CONFIG_SYS_RELOC_GD_ENV_ADDR=y - CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y -diff --git a/configs/rpi_defconfig b/configs/rpi_defconfig -index 89d6372c1de..060a8809506 100644 ---- a/configs/rpi_defconfig -+++ b/configs/rpi_defconfig -@@ -24,7 +24,6 @@ CONFIG_CMD_GPIO=y - CONFIG_CMD_MMC=y - CONFIG_CMD_USB=y - CONFIG_CMD_FS_UUID=y --CONFIG_OF_EMBED=y - CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" - CONFIG_SYS_RELOC_GD_ENV_ADDR=y - CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y --- -2.43.0 - diff --git a/sources b/sources index 6013800..555d633 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2024.04.tar.bz2) = a71270302b38e9e68a83b3acdf8f7635f72d9fa75169e3c2241cdfa21eab834b8f25dfd35c281191bccb2fcec1e86d6b64afcf1d2ed5cd4fdc02258cd75fc236 +SHA512 (u-boot-2024.07-rc3.tar.bz2) = 6b86ef1739fce647f5d44b7f6e659500d922c1bd4b591d8d31d2007d15e305e5b3b09bef72cb8b466ca611269102dead0e9b9aac1e0f67f711201c342828514c diff --git a/uboot-tools.spec b/uboot-tools.spec index aefeb8b..2e1743b 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -#global candidate rc5 +%global candidate rc3 %if 0%{?rhel} %bcond_with toolsonly %else @@ -6,8 +6,8 @@ %endif Name: uboot-tools -Version: 2024.04 -Release: 1%{?candidate:.%{candidate}}%{?dist} +Version: 2024.07 +Release: 0.1%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ @@ -29,14 +29,8 @@ Patch5: enable-bootmenu-by-default.patch # Should be upstream but it's taking time Patch6: Add-video-damage-tracking.patch -# Board fixes and enablement -# RPi - uses RPI firmware device tree for HAT support -Patch10: rpi-Switch-to-OF_HAS_PRIOR_STAGE-by-default.patch # Rockchips improvements -Patch11: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch -Patch12: rockchip-Enable-preboot-start-for-pci-usb.patch -Patch13: phy-rockchip-inno-usb2-Write-to-correct-GRF.patch -Patch14: rockchip-Migrate-to-use-DM_USB_GADGET-on-RK3328.patch +Patch10: rockchip-Enable-preboot-start-for-pci-usb.patch BuildRequires: bc BuildRequires: bison @@ -192,6 +186,9 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Sat May 25 2024 Peter Robinson - 1:2024.07-0.1.rc3 +- Update to 2024.07 RC3 + * Wed Apr 03 2024 Peter Robinson - 1:2024.04-1 - Update to 2024.04 GA - Rockchip rk3328 USB fixes From 3711935a69028d14fe557cd8fa5d9e7b9b8d4da7 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sat, 25 May 2024 16:03:03 +0100 Subject: [PATCH 178/271] Fix qcom config name --- aarch64-boards | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aarch64-boards b/aarch64-boards index f88eb85..d831619 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -74,7 +74,7 @@ pinephone-pro-rk3399 pinetab poplar puma-rk3399 -qcom_defconfig +qcom qemu_arm64 roc-cc-rk3328 rock-4c-plus-rk3399 From f00b318695c8aa0e4ed61cd8c13853bf752b7a54 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sat, 25 May 2024 17:32:32 +0100 Subject: [PATCH 179/271] drop starqltechn --- aarch64-boards | 1 - 1 file changed, 1 deletion(-) diff --git a/aarch64-boards b/aarch64-boards index d831619..2087102 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -90,7 +90,6 @@ roc-pc-mezzanine-rk3399 roc-pc-rk3399 rpi_arm64 sopine_baseboard -starqltechn tanix_tx6 teres_i transpeed-8k618-t From 1c674170ad51371d94bf187592fb64f174c35510 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 18 Jun 2024 11:57:00 +0100 Subject: [PATCH 180/271] 2024.07 RC4 --- sources | 2 +- uboot-tools.spec | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sources b/sources index 555d633..92b8e44 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2024.07-rc3.tar.bz2) = 6b86ef1739fce647f5d44b7f6e659500d922c1bd4b591d8d31d2007d15e305e5b3b09bef72cb8b466ca611269102dead0e9b9aac1e0f67f711201c342828514c +SHA512 (u-boot-2024.07-rc4.tar.bz2) = 2fa73c48ab4f6e60cee11ebac79a35e1b15d95eba5d8bb3612bd354e6b6153bfc17fcf1783b6b410a8b78505535152eab9f2cfbb35a6f19af7f7af7b2741e2a6 diff --git a/uboot-tools.spec b/uboot-tools.spec index 2e1743b..6afa5c4 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc3 +%global candidate rc4 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2024.07 -Release: 0.1%{?candidate:.%{candidate}}%{?dist} +Release: 0.2%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ @@ -186,6 +186,9 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Tue Jun 18 2024 Peter Robinson - 1:2024.07-0.2.rc4 +- Update to 2024.07 RC4 + * Sat May 25 2024 Peter Robinson - 1:2024.07-0.1.rc3 - Update to 2024.07 RC3 From 5dceaa60eb0c412b35f3df43473d4460503ea193 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 20 Jul 2024 08:05:43 +0000 Subject: [PATCH 181/271] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild --- uboot-tools.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 6afa5c4..e573122 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2024.07 -Release: 0.2%{?candidate:.%{candidate}}%{?dist} +Release: 0.3%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ @@ -186,6 +186,9 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Sat Jul 20 2024 Fedora Release Engineering - 1:2024.07-0.3.rc4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Tue Jun 18 2024 Peter Robinson - 1:2024.07-0.2.rc4 - Update to 2024.07 RC4 From 90b2ec4c3ddfc85d05dc272c724b97c36250f883 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Hor=C3=A1k?= Date: Tue, 23 Jul 2024 13:48:55 +0200 Subject: [PATCH 182/271] explicitly enable OpenSSL engine support --- uboot-tools.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/uboot-tools.spec b/uboot-tools.spec index e573122..1c94acd 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -42,6 +42,7 @@ BuildRequires: libuuid-devel BuildRequires: make BuildRequires: ncurses-devel BuildRequires: openssl-devel +BuildRequires: openssl-devel-engine BuildRequires: perl-interpreter BuildRequires: python3-devel BuildRequires: python3-setuptools From d68e991d5c06c853a8984046887b070253594cb4 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 23 Jul 2024 14:15:09 +0100 Subject: [PATCH 183/271] 2024.07 --- sources | 2 +- uboot-tools.spec | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sources b/sources index 92b8e44..09f870f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2024.07-rc4.tar.bz2) = 2fa73c48ab4f6e60cee11ebac79a35e1b15d95eba5d8bb3612bd354e6b6153bfc17fcf1783b6b410a8b78505535152eab9f2cfbb35a6f19af7f7af7b2741e2a6 +SHA512 (u-boot-2024.07.tar.bz2) = 678f44e2b9132140f0bf05c637e57e638c73c278611037a41824b3ebff2131af4dec0163da4664bb2e5c4fd8034ba8c95b93b57f7aa9f4c045da322d87c3b5e9 diff --git a/uboot-tools.spec b/uboot-tools.spec index 1c94acd..ee24ef7 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc4 +#global candidate rc0 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2024.07 -Release: 0.3%{?candidate:.%{candidate}}%{?dist} +Release: 1%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ @@ -187,6 +187,9 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Tue Jul 23 2024 Peter Robinson - 1:2024.07-1 +- Update to 2024.07 + * Sat Jul 20 2024 Fedora Release Engineering - 1:2024.07-0.3.rc4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild From 480feaf12cf59a7a03d83c86aa8e4a1e908088ca Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 15 Aug 2024 13:26:54 +0100 Subject: [PATCH 184/271] 2024.10 RC2 --- uboot-tools.spec | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index ee24ef7..47f8333 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -#global candidate rc0 +%global candidate rc2 %if 0%{?rhel} %bcond_with toolsonly %else @@ -6,8 +6,8 @@ %endif Name: uboot-tools -Version: 2024.07 -Release: 1%{?candidate:.%{candidate}}%{?dist} +Version: 2024.10 +Release: 0.1%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ @@ -27,7 +27,7 @@ Patch3: uefi-initial-find_fdt_location-for-finding-the-DT-on-disk.patch Patch4: disable-VBE-by-default.patch Patch5: enable-bootmenu-by-default.patch # Should be upstream but it's taking time -Patch6: Add-video-damage-tracking.patch +#Patch6: Add-video-damage-tracking.patch # Rockchips improvements Patch10: rockchip-Enable-preboot-start-for-pci-usb.patch @@ -187,6 +187,9 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Thu Aug 15 2024 Peter Robinson - 1:2024.10-0.1.rc2 +- Update to 2024.10 RC2 + * Tue Jul 23 2024 Peter Robinson - 1:2024.07-1 - Update to 2024.07 From e4c7f912206cacc62b5c8b77275f107a857e8452 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 15 Aug 2024 18:55:21 +0100 Subject: [PATCH 185/271] upload source --- sources | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources b/sources index 09f870f..4d7803b 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2024.07.tar.bz2) = 678f44e2b9132140f0bf05c637e57e638c73c278611037a41824b3ebff2131af4dec0163da4664bb2e5c4fd8034ba8c95b93b57f7aa9f4c045da322d87c3b5e9 +SHA512 (u-boot-2024.10-rc2.tar.bz2) = 606b48ef1fbd67fcd686b68540eb6db9453f9a02af16fc244add9fd5b75743bd776e2a3806192345b8d6eaa0f6ba3a1322623e3254c1d511d8ee524f7515e8b3 From d4601d22550dffe75d725465661a7c7cd73e11b9 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 15 Aug 2024 20:12:14 +0100 Subject: [PATCH 186/271] add xxd --- uboot-tools.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/uboot-tools.spec b/uboot-tools.spec index 47f8333..5f2aaa7 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -53,6 +53,7 @@ BuildRequires: swig %ifarch aarch64 BuildRequires: arm-trusted-firmware-armv8 BuildRequires: python3-pyelftools +BuildRequires: xxd %endif %endif Requires: dtc From ddf286405650610596a91c2ebec620ba1fb17cb2 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 27 Aug 2024 15:57:40 +0100 Subject: [PATCH 187/271] 2024.10 RC3, initial QCM6490 support --- ...support-for-SC7280-and-the-RB3-Gen-2.patch | 1414 +++++++++++++++++ aarch64-boards | 1 + sources | 2 +- uboot-tools.spec | 10 +- 4 files changed, 1424 insertions(+), 3 deletions(-) create mode 100644 Qualcomm-add-support-for-SC7280-and-the-RB3-Gen-2.patch diff --git a/Qualcomm-add-support-for-SC7280-and-the-RB3-Gen-2.patch b/Qualcomm-add-support-for-SC7280-and-the-RB3-Gen-2.patch new file mode 100644 index 0000000..0dec1ea --- /dev/null +++ b/Qualcomm-add-support-for-SC7280-and-the-RB3-Gen-2.patch @@ -0,0 +1,1414 @@ +From patchwork Wed Aug 21 13:41:46 2024 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Caleb Connolly +X-Patchwork-Id: 1974970 +X-Patchwork-Delegate: caleb.connolly@linaro.org +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=linaro.org header.i=@linaro.org header.a=rsa-sha256 + header.s=google header.b=BpF9pRLA; + 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 4WpnZD73RJz1yXf + for ; Wed, 21 Aug 2024 23:42:12 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 99F6188D9B; + Wed, 21 Aug 2024 15:42:00 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=linaro.org +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=linaro.org header.i=@linaro.org header.b="BpF9pRLA"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 86A7E88D9B; Wed, 21 Aug 2024 15:41:58 +0200 (CEST) +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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-lf1-x133.google.com (mail-lf1-x133.google.com + [IPv6:2a00:1450:4864:20::133]) + (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 896B7887D4 + for ; Wed, 21 Aug 2024 15:41:55 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=linaro.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=caleb.connolly@linaro.org +Received: by mail-lf1-x133.google.com with SMTP id + 2adb3069b0e04-5333b2fbedaso4381657e87.0 + for ; Wed, 21 Aug 2024 06:41:55 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=linaro.org; s=google; t=1724247715; x=1724852515; darn=lists.denx.de; + h=cc:to:in-reply-to:references:message-id:content-transfer-encoding + :mime-version:subject:date:from:from:to:cc:subject:date:message-id + :reply-to; bh=vYpvXZhAM0wjWc6QeTnHyYsF2xjKAb2Bg/9VNGJ7oC4=; + b=BpF9pRLArbhamTTSvF+LPOjqIaruq3137+Td+Y4qA32sBPKjZN2zyabjh/Rafnr5O1 + 9d/0nOcXmbKi3CTtdUN3qV19169r8d2lAuPiUwXoxGf4v9wPlXv1TnQilC0/IpdephxJ + oRj9+5DwMh1C/THNGdn6N9M7PrZ33uVwOawlqlGPGaBUlZzEtdpeQt8mGBT72vsWTwEc + g9XIuP7GYNy3Ztzy8JMYfvFT0MCUQmkDb9anAIfRkARVMxMTI3X0lz9nXqhgNHGXF/vc + tw9UbbFQc5bsonufEXl0cg3x4yHX3dzV2NcPvnGJWBUgHbNoQ1dUvmUD8ivz8xpCGh95 + /uLg== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20230601; t=1724247715; x=1724852515; + h=cc:to:in-reply-to:references:message-id:content-transfer-encoding + :mime-version:subject:date:from:x-gm-message-state:from:to:cc + :subject:date:message-id:reply-to; + bh=vYpvXZhAM0wjWc6QeTnHyYsF2xjKAb2Bg/9VNGJ7oC4=; + b=F/jmt2BY3txUp2Xo6ouNkmlNd7uQWuOBEkIGKUIwLL3jKl7uBJ/Ptt5k5n2REXJ3RX + qQv2x7FQlJXgvIfdnyr82QJx4EA7lV3SciLcJsTQMrrE0URCNMdIzUgMi0Su+QUw2rkH + 3F6BNFc2AUknW7ohrfLBnJWKHecIEJy7NbLcVve5RxNTga9md5WoIqlyL0PMo+pbTH/P + t4upinI57g3mt/aAFxlETKF7TY9fUiDnKfmp6NNkTAYVemvziHPE4LO78hHLLRggdYJE + li/V+pZa6jdmhd9c2wPO7Qlhlw3i48ti0LmA6PBMgebLO+YTAXf2pUpLQl4gdayX4WJr + 21qA== +X-Gm-Message-State: AOJu0YzCxBg0ApyZrMj/flKnSEzT/WdNXsTISMZEYTB2A2c9+9pYoTt8 + Y4o4D/Wn7JKEhGJS9pejsVJGp3BVDAbME2fz2uL63aeV9h8aeA7aQIfST443wEE= +X-Google-Smtp-Source: + AGHT+IHwtmpvp1KyCpCFrQ9m8b9mZocGdoGZKOOBbCOdWXgPOOaJpvIzD+wO9cPMXI0xJJ299Vb3aw== +X-Received: by 2002:a05:6512:2526:b0:533:4b07:a8dc with SMTP id + 2adb3069b0e04-5334b07a924mr853860e87.35.1724247714485; + Wed, 21 Aug 2024 06:41:54 -0700 (PDT) +Received: from [192.168.0.113] ([2a02:8109:aa0d:be00::676e]) + by smtp.gmail.com with ESMTPSA id + a640c23a62f3a-a83839342f6sm904164066b.137.2024.08.21.06.41.53 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Wed, 21 Aug 2024 06:41:53 -0700 (PDT) +From: Caleb Connolly +Date: Wed, 21 Aug 2024 15:41:46 +0200 +Subject: [PATCH v2 1/7] clk/qcom: add initial clock driver for sc7280 +MIME-Version: 1.0 +Message-Id: <20240821-b4-rb3gen2-v2-1-49b07633f3a8@linaro.org> +References: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> +In-Reply-To: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> +To: Tom Rini , Lukasz Majewski , + Sean Anderson , + Caleb Connolly , + Neil Armstrong , + Sumit Garg +Cc: u-boot@lists.denx.de, u-boot-qcom@groups.io +X-Mailer: b4 0.14-dev +X-Developer-Signature: v=1; a=openpgp-sha256; l=6610; + i=caleb.connolly@linaro.org; h=from:subject:message-id; + bh=Ml3U758Os52kpw+GNgmPmB5Bs0weI+7Cu8LeGmVUjJs=; + b=owEBbQKS/ZANAwAIAQWDMSsZX2S2AcsmYgBmxe6dj9dkbc0E3zPhQL/6lm1ahALcexDRPoBcO + ng26jm+QUiJAjMEAAEIAB0WIQS2UaFGPGq+0GkMVc0FgzErGV9ktgUCZsXunQAKCRAFgzErGV9k + ttaKD/9DtqMqfY7Do5CxJU3qRYk5ZmdeMIF9JTXN0APLu1fGGMznfgoUn93safNuzgw/exm5CNI + rSoCXHGtBpKM+SWjYe9ir4C7PQqdJt0J5vgdUOHVqfy87jgC4RQkE6HUDCtd9s1HitZNCtiZGrs + BeJ7SVOrAakL3QgXCssgvhDmNmQoMDd5l1lTXL9p5RQTVAZuQuihQJ1fcVtXVH9DlYidlvNdwKZ + wLXps20Hc7uStWohI/+MtDq5OzwxfEXVLBOktJ8cR26UZ1N5pFItdarRZpmJCJFtWU4ORyamCKW + EcPSjaDo7r2GT7CbiILoXpsQLGX5SNrEWFAFQJKUjAyHe0x2H0394aVGd4Yt9kFBG8KSvhzwsVq + tVzpKmy0oe/2CCcVsRHhT4b1j7H+MiudmxYpUByqcljtWKm/0Nd6C42oqHSs4NP+DRHHPzDGpxm + Bzaex1Y5tkwivXqgISlHEX99R605X8KWM3LJnKMPBU5qdHN7x1/8tdcpsnCHd/+AobL+Ty7gaH4 + CXqmB2zZY/1VAhboMRJnDaOooBlBlGfaiMu9/sOpQJo0xWPYtANjyli/9TIsBSBkctEAa4rv0WN + ruiueb3HXdDqzPGpcaVMnApPjkNEUGiMlhaJKTJPcBuIDaC0uNwquaRv7fmLRE5oqWlX1uQ7Seu + fUzYzzESEzLWSGg== +X-Developer-Key: i=caleb.connolly@linaro.org; a=openpgp; + fpr=83B24DA7FE145076BC38BB250CD904EB673A7C47 +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 + +We don't actually need any clocks to get UFS up and running, resets are +useful though. + +Reviewed-by: Neil Armstrong +Signed-off-by: Caleb Connolly +--- + drivers/clk/qcom/Kconfig | 8 +++ + drivers/clk/qcom/Makefile | 1 + + drivers/clk/qcom/clock-qcom.h | 1 + + drivers/clk/qcom/clock-sc7280.c | 132 ++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 142 insertions(+) + +diff --git a/drivers/clk/qcom/Kconfig b/drivers/clk/qcom/Kconfig +index 45d63c6d6dbf..0d2c0ac225c5 100644 +--- a/drivers/clk/qcom/Kconfig ++++ b/drivers/clk/qcom/Kconfig +@@ -85,7 +85,15 @@ config CLK_QCOM_SM8650 + Say Y here to enable support for the Global Clock Controller + on the Snapdragon SM8650 SoC. This driver supports the clocks + and resets exposed by the GCC hardware block. + ++config CLK_QCOM_SC7280 ++ bool "Qualcomm SC7280 GCC" ++ select CLK_QCOM ++ help ++ Say Y here to enable support for the Global Clock Controller ++ on the Snapdragon SC7280 SoC. This driver supports the clocks ++ and resets exposed by the GCC hardware block. ++ + endmenu + + endif +diff --git a/drivers/clk/qcom/Makefile b/drivers/clk/qcom/Makefile +index dec20e4b5943..e223c131ee4d 100644 +--- a/drivers/clk/qcom/Makefile ++++ b/drivers/clk/qcom/Makefile +@@ -8,8 +8,9 @@ obj-$(CONFIG_CLK_QCOM_APQ8016) += clock-apq8016.o + obj-$(CONFIG_CLK_QCOM_APQ8096) += clock-apq8096.o + obj-$(CONFIG_CLK_QCOM_IPQ4019) += clock-ipq4019.o + obj-$(CONFIG_CLK_QCOM_QCM2290) += clock-qcm2290.o + obj-$(CONFIG_CLK_QCOM_QCS404) += clock-qcs404.o ++obj-$(CONFIG_CLK_QCOM_SC7280) += clock-sc7280.o + obj-$(CONFIG_CLK_QCOM_SM6115) += clock-sm6115.o + obj-$(CONFIG_CLK_QCOM_SM8250) += clock-sm8250.o + obj-$(CONFIG_CLK_QCOM_SM8550) += clock-sm8550.o + obj-$(CONFIG_CLK_QCOM_SM8650) += clock-sm8650.o +diff --git a/drivers/clk/qcom/clock-qcom.h b/drivers/clk/qcom/clock-qcom.h +index f6445c8f566f..7aa6ca59aad5 100644 +--- a/drivers/clk/qcom/clock-qcom.h ++++ b/drivers/clk/qcom/clock-qcom.h +@@ -10,8 +10,9 @@ + #define CFG_CLK_SRC_CXO (0 << 8) + #define CFG_CLK_SRC_GPLL0 (1 << 8) + #define CFG_CLK_SRC_GPLL0_AUX2 (2 << 8) + #define CFG_CLK_SRC_GPLL9 (2 << 8) ++#define CFG_CLK_SRC_GPLL0_ODD (3 << 8) + #define CFG_CLK_SRC_GPLL6 (4 << 8) + #define CFG_CLK_SRC_GPLL7 (3 << 8) + #define CFG_CLK_SRC_GPLL4 (5 << 8) + #define CFG_CLK_SRC_GPLL0_EVEN (6 << 8) +diff --git a/drivers/clk/qcom/clock-sc7280.c b/drivers/clk/qcom/clock-sc7280.c +new file mode 100644 +index 000000000000..5d343f120519 +--- /dev/null ++++ b/drivers/clk/qcom/clock-sc7280.c +@@ -0,0 +1,132 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Clock drivers for Qualcomm sc7280 ++ * ++ * (C) Copyright 2024 Linaro Ltd. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "clock-qcom.h" ++ ++#define USB30_PRIM_MOCK_UTMI_CLK_CMD_RCGR 0xf038 ++#define USB30_PRIM_MASTER_CLK_CMD_RCGR 0xf020 ++ ++static ulong sc7280_set_rate(struct clk *clk, ulong rate) ++{ ++ struct msm_clk_priv *priv = dev_get_priv(clk->dev); ++ ++ if (clk->id < priv->data->num_clks) ++ debug("%s: %s, requested rate=%ld\n", __func__, priv->data->clks[clk->id].name, rate); ++ ++ switch (clk->id) { ++ case GCC_USB30_PRIM_MOCK_UTMI_CLK: ++ WARN(rate != 19200000, "Unexpected rate for USB30_PRIM_MOCK_UTMI_CLK: %lu\n", rate); ++ clk_rcg_set_rate(priv->base, USB30_PRIM_MASTER_CLK_CMD_RCGR, 0, CFG_CLK_SRC_CXO); ++ return rate; ++ case GCC_USB30_PRIM_MASTER_CLK: ++ WARN(rate != 200000000, "Unexpected rate for USB30_PRIM_MASTER_CLK: %lu\n", rate); ++ clk_rcg_set_rate_mnd(priv->base, USB30_PRIM_MASTER_CLK_CMD_RCGR, ++ 1, 0, 0, CFG_CLK_SRC_GPLL0_ODD, 8); ++ clk_rcg_set_rate(priv->base, 0xf064, 0, 0); ++ return rate; ++ default: ++ return 0; ++ } ++} ++ ++static const struct gate_clk sc7280_clks[] = { ++ GATE_CLK(GCC_CFG_NOC_USB3_PRIM_AXI_CLK, 0xf07c, 1), ++ GATE_CLK(GCC_USB30_PRIM_MASTER_CLK, 0xf010, 1), ++ GATE_CLK(GCC_AGGRE_USB3_PRIM_AXI_CLK, 0xf080, 1), ++ GATE_CLK(GCC_USB30_PRIM_SLEEP_CLK, 0xf018, 1), ++ GATE_CLK(GCC_USB30_PRIM_MOCK_UTMI_CLK, 0xf01c, 1), ++ GATE_CLK(GCC_USB3_PRIM_PHY_AUX_CLK, 0xf054, 1), ++ GATE_CLK(GCC_USB3_PRIM_PHY_COM_AUX_CLK, 0xf058, 1), ++}; ++ ++static int sc7280_enable(struct clk *clk) ++{ ++ struct msm_clk_priv *priv = dev_get_priv(clk->dev); ++ ++ if (priv->data->num_clks < clk->id) { ++ debug("%s: unknown clk id %lu\n", __func__, clk->id); ++ return 0; ++ } ++ ++ debug("%s: clk %ld: %s\n", __func__, clk->id, sc7280_clks[clk->id].name); ++ ++ switch (clk->id) { ++ case GCC_AGGRE_USB3_PRIM_AXI_CLK: ++ qcom_gate_clk_en(priv, GCC_USB30_PRIM_MASTER_CLK); ++ fallthrough; ++ case GCC_USB30_PRIM_MASTER_CLK: ++ qcom_gate_clk_en(priv, GCC_USB3_PRIM_PHY_AUX_CLK); ++ qcom_gate_clk_en(priv, GCC_USB3_PRIM_PHY_COM_AUX_CLK); ++ break; ++ } ++ ++ qcom_gate_clk_en(priv, clk->id); ++ ++ return 0; ++} ++ ++static const struct qcom_reset_map sc7280_gcc_resets[] = { ++ [GCC_PCIE_0_BCR] = { 0x6b000 }, ++ [GCC_PCIE_0_PHY_BCR] = { 0x6c01c }, ++ [GCC_PCIE_1_BCR] = { 0x8d000 }, ++ [GCC_PCIE_1_PHY_BCR] = { 0x8e01c }, ++ [GCC_QUSB2PHY_PRIM_BCR] = { 0x12000 }, ++ [GCC_QUSB2PHY_SEC_BCR] = { 0x12004 }, ++ [GCC_SDCC1_BCR] = { 0x75000 }, ++ [GCC_SDCC2_BCR] = { 0x14000 }, ++ [GCC_SDCC4_BCR] = { 0x16000 }, ++ [GCC_UFS_PHY_BCR] = { 0x77000 }, ++ [GCC_USB30_PRIM_BCR] = { 0xf000 }, ++ [GCC_USB30_SEC_BCR] = { 0x9e000 }, ++ [GCC_USB3_DP_PHY_PRIM_BCR] = { 0x50008 }, ++ [GCC_USB3_PHY_PRIM_BCR] = { 0x50000 }, ++ [GCC_USB3PHY_PHY_PRIM_BCR] = { 0x50004 }, ++ [GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x6a000 }, ++}; ++ ++static const struct qcom_power_map sc7280_gdscs[] = { ++ [GCC_UFS_PHY_GDSC] = { 0x77004 }, ++ [GCC_USB30_PRIM_GDSC] = { 0xf004 }, ++}; ++ ++static struct msm_clk_data qcs404_gcc_data = { ++ .resets = sc7280_gcc_resets, ++ .num_resets = ARRAY_SIZE(sc7280_gcc_resets), ++ .clks = sc7280_clks, ++ .num_clks = ARRAY_SIZE(sc7280_clks), ++ ++ .power_domains = sc7280_gdscs, ++ .num_power_domains = ARRAY_SIZE(sc7280_gdscs), ++ ++ .enable = sc7280_enable, ++ .set_rate = sc7280_set_rate, ++}; ++ ++static const struct udevice_id gcc_sc7280_of_match[] = { ++ { ++ .compatible = "qcom,gcc-sc7280", ++ .data = (ulong)&qcs404_gcc_data, ++ }, ++ { } ++}; ++ ++U_BOOT_DRIVER(gcc_sc7280) = { ++ .name = "gcc_sc7280", ++ .id = UCLASS_NOP, ++ .of_match = gcc_sc7280_of_match, ++ .bind = qcom_cc_bind, ++ .flags = DM_FLAG_PRE_RELOC | DM_FLAG_DEFAULT_PD_CTRL_OFF, ++}; + +From patchwork Wed Aug 21 13:41:47 2024 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Caleb Connolly +X-Patchwork-Id: 1974971 +X-Patchwork-Delegate: caleb.connolly@linaro.org +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=linaro.org header.i=@linaro.org header.a=rsa-sha256 + header.s=google header.b=D8cipZN8; + 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 4WpnZS1lFqz1yXf + for ; Wed, 21 Aug 2024 23:42:24 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 2404B88DB7; + Wed, 21 Aug 2024 15:42:01 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=linaro.org +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=linaro.org header.i=@linaro.org header.b="D8cipZN8"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id CF84288B3C; Wed, 21 Aug 2024 15:41:58 +0200 (CEST) +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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com + [IPv6:2a00:1450:4864:20::22f]) + (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 BC82A88AC0 + for ; Wed, 21 Aug 2024 15:41:56 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=linaro.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=caleb.connolly@linaro.org +Received: by mail-lj1-x22f.google.com with SMTP id + 38308e7fff4ca-2f136e23229so67636651fa.1 + for ; Wed, 21 Aug 2024 06:41:56 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=linaro.org; s=google; t=1724247716; x=1724852516; darn=lists.denx.de; + h=cc:to:in-reply-to:references:message-id:content-transfer-encoding + :mime-version:subject:date:from:from:to:cc:subject:date:message-id + :reply-to; bh=BtQqdiFk/5BGUCz4O21vl/84vcKElfs3QSU/TjahAhA=; + b=D8cipZN8vnM60gNnxvkm4MeJi0YUs2ejIG0MSF/WWYvpmyESE3mh38i9CQho0bxU6i + iX63Dsb/6xtE1YF26oNdy6430/ePndpn9VXSnZ4+c+0j1Er/qSEXlX7/BzwYSxhKFXP2 + /F6RsyF3R5s2HPndcU3OSppiLYNDSZZFa5XBwBVgNsjEoAOmVBZspDGJXberoFWSw1Xd + jvCW7H8KY4DgeuHAJAF1udHYqYfpDTGmijGk1cl6yddFZ4BX5AHEetjJMm6/Sfs0rYEE + D0REEYmHiwa1dm8mN6J+XMp2tgzg/8RPlQ5p4k9lcZlrCuZ7TnFF+HgnR7TLnMaOY5WI + DeWw== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20230601; t=1724247716; x=1724852516; + h=cc:to:in-reply-to:references:message-id:content-transfer-encoding + :mime-version:subject:date:from:x-gm-message-state:from:to:cc + :subject:date:message-id:reply-to; + bh=BtQqdiFk/5BGUCz4O21vl/84vcKElfs3QSU/TjahAhA=; + b=P16tCzEGlwXh2HUe2zkd2EwD+lVsUJ2nv3xZT1gSdJfgv9uFCy5uHQOHx+GfyeFiFB + ZTZeGSznoCm+BqR4Rw1gx+Pw4M5rk38MOzZj6eb1PVfM7DKBk1C0g3ddxLBWvXwGky/P + /PMojneROHfJG+HpIjemGUIP4Cnbl+J0M1VqM1cJazIQocK+IpbqphhjI7IDKfPwZz0O + Cxn70edXPpLuZvBwbSJEk5zEyh+2b0oiyPP8VwzVfimOrP0nSJ/TkZiKVgEAVBmiRq1c + hpW2xFrDixDe+Ioa2hCXcbsIoDf8EyCdmxWVIiA8h4xsXfXpSbgDCAgBz0wi9Uw3Jy/h + LRZg== +X-Gm-Message-State: AOJu0Yz5oP45hJMUwyK8DU9sBL6vYfuGjHAeVLt3bxXXNCuBLvCzIx7F + gF97feq0wgpXLIEQ7uqwcBXQ46wbHQs8IEvoNGTarDCXSFeggfCqEC7oDzM4U48= +X-Google-Smtp-Source: + AGHT+IFRfsXmk97RBDrPRNGuRiWGpZ4udOpM/gdavhIAP7Vw5jIX1oJ1BZ6+tqyctFDutWKn/+6X5g== +X-Received: by 2002:ac2:4e09:0:b0:52f:2ea:499f with SMTP id + 2adb3069b0e04-5334855d512mr1561479e87.24.1724247715821; + Wed, 21 Aug 2024 06:41:55 -0700 (PDT) +Received: from [192.168.0.113] ([2a02:8109:aa0d:be00::676e]) + by smtp.gmail.com with ESMTPSA id + a640c23a62f3a-a83839342f6sm904164066b.137.2024.08.21.06.41.54 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Wed, 21 Aug 2024 06:41:55 -0700 (PDT) +From: Caleb Connolly +Date: Wed, 21 Aug 2024 15:41:47 +0200 +Subject: [PATCH v2 2/7] dts: qcs6490-rb3gen2-u-boot: add override dtsi +MIME-Version: 1.0 +Message-Id: <20240821-b4-rb3gen2-v2-2-49b07633f3a8@linaro.org> +References: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> +In-Reply-To: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> +To: Tom Rini , Lukasz Majewski , + Sean Anderson , + Caleb Connolly , + Neil Armstrong , + Sumit Garg +Cc: u-boot@lists.denx.de, u-boot-qcom@groups.io +X-Mailer: b4 0.14-dev +X-Developer-Signature: v=1; a=openpgp-sha256; l=1273; + i=caleb.connolly@linaro.org; h=from:subject:message-id; + bh=WycUvGIX1Vb2Dt9TSRhlFTIc8lgmewYYBQWg2kxs6NI=; + b=owEBbQKS/ZANAwAIAQWDMSsZX2S2AcsmYgBmxe6djNLXRIVPQZZW1FVYvOn/tPtr3vGLbnTcN + EIiqQUfY2uJAjMEAAEIAB0WIQS2UaFGPGq+0GkMVc0FgzErGV9ktgUCZsXunQAKCRAFgzErGV9k + tnN7D/0d90bQBLWvZQ8d0lHinZ/3zwe3FEdaLK31OGRD7VJd7Q8ckuOxOF/eO8TLmksQovgvrTY + 68llyxkNZe/nnmY9UX+DJ+i5pzqINuLlGRqANukMePwwJxJZilb6dRXB9sR+hSBHC+YTyfY67xk + 78ILyZhMmZqmi/ya6lBqxLieP+CnHq1V9n07s3jljhE1oSp4NucQzFXpv48MGEpOt/sIyjtzQ5w + aw7r1Wsay9w+xmNly+kBT+05q5dp/CTnqMp1koKGG/fWWkSZUgo5yODYeRAiieb7ZQ5JaVmxJkf + G3K0BPkFJ+kaPyU6Mbe0d573tY+oZsWDWEBFP/diduz8lw27tIDOmpTIyT8lMsu1vL7dcj38NsS + 50a7smXimMWcKwJsEQV32Tw0QYv4kfJyqjxXVj6kJ+DWL1bm15LZ6fZpXy3tbTHzJvWRr2Lx/AZ + mWXbylc+uUx4tQkb+7+OhSN376NPfWUNlGHMdHSfQHgzcFuGbMmf9v58sPXa7ZKb3UFkKk2MAzA + 8kiDEMgp/6k55lHxdc4ndxK/vXTKxiU59H2k+okeAQ2iMnA39r/M7yOe6a8vyXDyeuCmJHncNAX + /Uy4yr757EQpUKygo3DjdfRcZQ/h5hQ2TFiWm3BlU87k8MlQl5JEGwxqpkM+9JXFjRwiGcR2ZSO + fOkmL+X6FXNHw3A== +X-Developer-Key: i=caleb.connolly@linaro.org; a=openpgp; + fpr=83B24DA7FE145076BC38BB250CD904EB673A7C47 +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 + +For running U-Boot as primary bootloader we must define the memory +layout statically. + +Signed-off-by: Caleb Connolly +--- + arch/arm/dts/qcs6490-rb3gen2-u-boot.dtsi | 23 +++++++++++++++++++++++ + 1 file changed, 23 insertions(+) + +diff --git a/arch/arm/dts/qcs6490-rb3gen2-u-boot.dtsi b/arch/arm/dts/qcs6490-rb3gen2-u-boot.dtsi +new file mode 100644 +index 000000000000..c3ec4a317f7c +--- /dev/null ++++ b/arch/arm/dts/qcs6490-rb3gen2-u-boot.dtsi +@@ -0,0 +1,23 @@ ++// SPDX-License-Identifier: BSD-3-Clause ++/* ++ * Copyright (c) 2024 Linaro Ltd. ++ */ ++/ { ++ /* When running as the primary bootloader there is no prior ++ * stage to populate the memory layout for us. We *should* ++ * have two nodes here, but ABL does NOT like that. ++ * sooo we're stuck with this. ++ */ ++ memory@80000000 { ++ device_type = "memory"; ++ reg = <0 0x80000000 0 0x3A800000>, ++ <0 0xC0000000 0 0x01800000>, ++ <0 0xC3400000 0 0x3CC00000>, ++ <1 0x00000000 1 0x00000000>; ++ }; ++}; ++ ++// RAM Entry 0 : Base 0x0080000000 Size 0x003A800000 ++// RAM Entry 1 : Base 0x00C0000000 Size 0x0001800000 ++// RAM Entry 2 : Base 0x00C3400000 Size 0x003CC00000 ++// RAM Entry 3 : Base 0x0100000000 Size 0x0100000000 + +From patchwork Wed Aug 21 13:41:48 2024 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Caleb Connolly +X-Patchwork-Id: 1974972 +X-Patchwork-Delegate: caleb.connolly@linaro.org +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=linaro.org header.i=@linaro.org header.a=rsa-sha256 + header.s=google header.b=W/enKPtj; + 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 4WpnZg6XLXz1yXf + for ; Wed, 21 Aug 2024 23:42:35 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 8FCF188DD8; + Wed, 21 Aug 2024 15:42:03 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=linaro.org +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=linaro.org header.i=@linaro.org header.b="W/enKPtj"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 7430788BF6; Wed, 21 Aug 2024 15:42:00 +0200 (CEST) +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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com + [IPv6:2a00:1450:4864:20::436]) + (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 BB78388C7E + for ; Wed, 21 Aug 2024 15:41:57 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=linaro.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=caleb.connolly@linaro.org +Received: by mail-wr1-x436.google.com with SMTP id + ffacd0b85a97d-3718706cf8aso4087426f8f.3 + for ; Wed, 21 Aug 2024 06:41:57 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=linaro.org; s=google; t=1724247717; x=1724852517; darn=lists.denx.de; + h=cc:to:in-reply-to:references:message-id:content-transfer-encoding + :mime-version:subject:date:from:from:to:cc:subject:date:message-id + :reply-to; bh=zLolcdfhpnv2Sr4+jU2o0ZvxpFWa2r7z1o+vmKY3kNM=; + b=W/enKPtjbLPpOfXBJ95XWpBN74SHMzSf7YfqzclhQ8DglD54/Ubm8hmtMAJr3dU4oc + 7QSmg2IojIWCgmF7ZVpPpPipkl0d0NJdhrbZgltHWn6DI5oa5z8H/oPL2qgfxOvi1mol + GkNDzmOd9DogYJbDxazFLX/yuyObHE0Frbk1+5S+dUC9Mk6TEn/kAnphDP0/pIcoFqNS + MHhPWfxQj8qNWFF683e2CNpiiQmhvIyxMnx2XDqHqr0sARkmDhEdmDt6/J2uDEpAXIqS + gfb2ryOgrf0ymsrNXXmgtPBlJ1Nk+WvqQNZ+fFud6rDTMI7k3T6vg9LtuKRk5l0ZeW9z + 9ukA== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20230601; t=1724247717; x=1724852517; + h=cc:to:in-reply-to:references:message-id:content-transfer-encoding + :mime-version:subject:date:from:x-gm-message-state:from:to:cc + :subject:date:message-id:reply-to; + bh=zLolcdfhpnv2Sr4+jU2o0ZvxpFWa2r7z1o+vmKY3kNM=; + b=Bk58APruZpAfRV6OKvJFR/r6nSOZTRk1lGotJZ/7Ps1APRn4QEUIEES/nAymFAlsZK + IuAn5ixOz3aQip+GhlTd5ZX/4G2D90T9SLGu+jKI2zHbc9HfYsLUaLImDouZanKiy3DN + rSF/DzczN7mNahfl++0WXyuhXE1l5coIb99U116QJ4etTFEC+YvBD2zWg7RpfxE6F2MA + tu2L+KZX2xor/7JzMfyV/FeFyAo5X53e7JPAVpvXa6vGTXfyZa8kzv4oIa1vTbwsuxLK + D4AcwfMHj4eyGTilDPHRn292bg79eS+R3MX3EpFEW6J/Zr5fKhsyDSDcjBuR2TYJ7Gcv + BDrw== +X-Gm-Message-State: AOJu0YxuxBBsFKKWph/SGz+J1lDRx2i4hMnvb9KUEI3p7sCb122LZSOU + lTiuOgJUeGU0ryXFmDTRlVFUVDC+WlMh98BjXmGjDc74hcUPn0EuM1QELuQYSNk= +X-Google-Smtp-Source: + AGHT+IFF8AJ5Hu9iRBb/BV7cCxp9j5UJEcpMy4SVnJcq2ijih+8KFAvBMsil1LfJlPGBheg9LAatHw== +X-Received: by 2002:adf:cc82:0:b0:368:6633:c550 with SMTP id + ffacd0b85a97d-372fd82f325mr1509038f8f.52.1724247717163; + Wed, 21 Aug 2024 06:41:57 -0700 (PDT) +Received: from [192.168.0.113] ([2a02:8109:aa0d:be00::676e]) + by smtp.gmail.com with ESMTPSA id + a640c23a62f3a-a83839342f6sm904164066b.137.2024.08.21.06.41.56 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Wed, 21 Aug 2024 06:41:56 -0700 (PDT) +From: Caleb Connolly +Date: Wed, 21 Aug 2024 15:41:48 +0200 +Subject: [PATCH v2 3/7] dts: qcs6490-rb3gen2-u-boot: USB host mode +MIME-Version: 1.0 +Message-Id: <20240821-b4-rb3gen2-v2-3-49b07633f3a8@linaro.org> +References: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> +In-Reply-To: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> +To: Tom Rini , Lukasz Majewski , + Sean Anderson , + Caleb Connolly , + Neil Armstrong , + Sumit Garg +Cc: u-boot@lists.denx.de, u-boot-qcom@groups.io +X-Mailer: b4 0.14-dev +X-Developer-Signature: v=1; a=openpgp-sha256; l=955; + i=caleb.connolly@linaro.org; h=from:subject:message-id; + bh=HTbXxsrMd17GClJdrUxqmv1t42K8cKHfbuWdCzpCB0M=; + b=owEBbQKS/ZANAwAIAQWDMSsZX2S2AcsmYgBmxe6djkazDSIeIn+UGkfv2WCzgyN2+Nv9IFp8u + /7f/kVTNzKJAjMEAAEIAB0WIQS2UaFGPGq+0GkMVc0FgzErGV9ktgUCZsXunQAKCRAFgzErGV9k + tt0qEACLN54DQLVEpmwhpZIBzCPjtaeMTHKNrVejy201O3Ts9I8BmKyuCQmcJReF8E1oTvhVE2p + RRdEnopYd86hGyIc6pZZ1tNwmwCxeADAERIygNKEAGK6f6v29CJZt0OMSVRx7emdUn6wDP0/6FQ + W7zfmxJKZMNp1gEMS80FJSa+PkI148T6WzfmKEfNbENYTwwIwC/e8yqlKXp+joiPv269f/nYbtY + ZR6mW3re0fvIoCbUjHcIRmu5ZWB92qqfwAiSCLLlajpzIF8iDrDyOYOdb7/TxM5eWZloPwDYHaK + 0eJde2EIysMA1TJFP8ynVnUe1c4sZxDLB+ZnVUpbvGTvHjguamxfazEZlUmd1kV6m+ilTqAIlUP + 2v5eY2KUjx+MD8qm5FLgpj6JHDE9jszg3LSETAPwJDk0MICXQoY9HMu03kO8KE62j2HrRwVn7/G + i1agSOBRJyNDHqTiUh2vYQnwwBPANZPjipnQgPkZ6Ebd98KbzzHr9Dh+kR7eC/caSf0V82YK4G8 + mPCaznXAPS+VNfT+JZQxQz7Axm1O7bWfIuSdLGqVGBRj4+4W3k1PzFWI7S46Vj4qWbpJXuWKl6I + UlE67yw71FwYzQt6B7xLMSCr2O8bFmlv42AVl6bNjG53CZ8HmBo5AuKrhbdhpLv5HfjWK1j58tW + Ci+WPJUvj2lPPfg== +X-Developer-Key: i=caleb.connolly@linaro.org; a=openpgp; + fpr=83B24DA7FE145076BC38BB250CD904EB673A7C47 +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 + +Adjust DTS so USB runs in host mode. The type-c port is the only +supported port (since the others need PCIe). Booting from USB is +possible with a powered type-c dock. + +Signed-off-by: Caleb Connolly +--- + arch/arm/dts/qcs6490-rb3gen2-u-boot.dtsi | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/arch/arm/dts/qcs6490-rb3gen2-u-boot.dtsi b/arch/arm/dts/qcs6490-rb3gen2-u-boot.dtsi +index c3ec4a317f7c..fbe72595f5ac 100644 +--- a/arch/arm/dts/qcs6490-rb3gen2-u-boot.dtsi ++++ b/arch/arm/dts/qcs6490-rb3gen2-u-boot.dtsi +@@ -16,8 +16,13 @@ + <1 0x00000000 1 0x00000000>; + }; + }; + ++&usb_1_dwc3 { ++ dr_mode = "host"; ++ /delete-property/ usb-role-switch; ++}; ++ + // RAM Entry 0 : Base 0x0080000000 Size 0x003A800000 + // RAM Entry 1 : Base 0x00C0000000 Size 0x0001800000 + // RAM Entry 2 : Base 0x00C3400000 Size 0x003CC00000 + // RAM Entry 3 : Base 0x0100000000 Size 0x0100000000 + +From patchwork Wed Aug 21 13:41:49 2024 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Caleb Connolly +X-Patchwork-Id: 1974973 +X-Patchwork-Delegate: caleb.connolly@linaro.org +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=linaro.org header.i=@linaro.org header.a=rsa-sha256 + header.s=google header.b=fxhzRRWP; + 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 4WpnZv2VSTz1yXf + for ; Wed, 21 Aug 2024 23:42:47 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id F1A1E88DBB; + Wed, 21 Aug 2024 15:42:03 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=linaro.org +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=linaro.org header.i=@linaro.org header.b="fxhzRRWP"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 5F28288DBF; Wed, 21 Aug 2024 15:42:01 +0200 (CEST) +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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-lf1-x12c.google.com (mail-lf1-x12c.google.com + [IPv6:2a00:1450:4864:20::12c]) + (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 5838488AC0 + for ; Wed, 21 Aug 2024 15:41:59 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=linaro.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=caleb.connolly@linaro.org +Received: by mail-lf1-x12c.google.com with SMTP id + 2adb3069b0e04-52efc60a6e6so9447535e87.1 + for ; Wed, 21 Aug 2024 06:41:59 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=linaro.org; s=google; t=1724247718; x=1724852518; darn=lists.denx.de; + h=cc:to:in-reply-to:references:message-id:content-transfer-encoding + :mime-version:subject:date:from:from:to:cc:subject:date:message-id + :reply-to; bh=cqF2st4G7Whhok3VZo6aDGC//+kV3J+exZKhkiiSLFQ=; + b=fxhzRRWPt+qpJciGSAITWCo8l8X60UfTDq85wh8FY7dCx3uklUdpEcoF9mZQvZEARc + JdrCoNahI2M7n7uxXFkWNU8HAYP8adAfEIdzL9A74GE5HVYfUWU28+jLirmyAHbts2I/ + SdPX01laMMuUBZNO1+eQTpYWK/pAO7J5BnazS9JOOedrSlBLeiX74zICTx9l/ogHIvar + oyR9/w28as1z3kdFFAACkxGoDrWsz0kGqhEBXGOOnKRQeXi16Wyq/ZOkZwrDs+ZaOCj0 + Np0K2VryzXH+5acK/T8VFyaO/kiwyVE+oBQ9+t4QRslHCVoK+vniJFjWJmyiLbcrR+VF + Ug3g== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20230601; t=1724247718; x=1724852518; + h=cc:to:in-reply-to:references:message-id:content-transfer-encoding + :mime-version:subject:date:from:x-gm-message-state:from:to:cc + :subject:date:message-id:reply-to; + bh=cqF2st4G7Whhok3VZo6aDGC//+kV3J+exZKhkiiSLFQ=; + b=luGrCmqihUFezhJWv4e5vJ9xNHo14vlaEyeUAxelx59D64ZJJ1t0Wp71nzKQ4MjeF1 + +a5ZoV7GeqYCdriLcYtSAm+mGfHYq6wqLK7MUxTJJXQiQ+8YNOE8O5jZPRQOnykhrHyv + SGgBu95T4t2+iops0PoEG1WJgUFfQdguMeIxCF/3egeF2vbuiLdkag3f/P1oZ+WId9d8 + CdjoDP22VLYkI737XGw5dPYXjw8n5aElyW4w8a8+s/+LSHr2DqhP6jBRBHoEr96u9caD + MD/ZJMxHUIF5HVF49slrJCvxOVaE1BLLfvGg6DsgTGbiJ1R04nnqmP4eIiihjxGfokAz + ayDA== +X-Gm-Message-State: AOJu0YyYd+xZ/CF0vx8K/xUigIplSGcNj9+ZYg92++5jyNrmeP/Dw2mb + YdY8603ttFOxzF77F9uZemMCCMk9Yqe06DIg4zk9AmmXVSdjOM16xI4mPU3kNko= +X-Google-Smtp-Source: + AGHT+IEiWiQ2+rnq9ygkkGwKWRO1l7vPXtE6nv9tq+GTkhXNeXOlV9Q+YJri22fWRmcjXR32eVPTAg== +X-Received: by 2002:a05:6512:696:b0:52e:f77b:bb58 with SMTP id + 2adb3069b0e04-5334858e2dbmr1246801e87.36.1724247718271; + Wed, 21 Aug 2024 06:41:58 -0700 (PDT) +Received: from [192.168.0.113] ([2a02:8109:aa0d:be00::676e]) + by smtp.gmail.com with ESMTPSA id + a640c23a62f3a-a83839342f6sm904164066b.137.2024.08.21.06.41.57 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Wed, 21 Aug 2024 06:41:57 -0700 (PDT) +From: Caleb Connolly +Date: Wed, 21 Aug 2024 15:41:49 +0200 +Subject: [PATCH v2 4/7] iommu: qcom-smmu: add sc7280-smmu-500 compatible +MIME-Version: 1.0 +Message-Id: <20240821-b4-rb3gen2-v2-4-49b07633f3a8@linaro.org> +References: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> +In-Reply-To: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> +To: Tom Rini , Lukasz Majewski , + Sean Anderson , + Caleb Connolly , + Neil Armstrong , + Sumit Garg +Cc: u-boot@lists.denx.de, u-boot-qcom@groups.io +X-Mailer: b4 0.14-dev +X-Developer-Signature: v=1; a=openpgp-sha256; l=735; + i=caleb.connolly@linaro.org; h=from:subject:message-id; + bh=kxKBScKaYeuETfEZtkdyvgk1CIJk9dkzDtE1GYwaPOI=; + b=owEBbQKS/ZANAwAIAQWDMSsZX2S2AcsmYgBmxe6dVYUKBuKYzxniyjNVxYEoPmLImzpJJVKSN + fZ8OGllgq+JAjMEAAEIAB0WIQS2UaFGPGq+0GkMVc0FgzErGV9ktgUCZsXunQAKCRAFgzErGV9k + thhHD/sEX0G2aVw1Y8dD02U8Fg111EK/PNvDyUlifhchP/sTDJHxyzWJc0zxsb1FtSosTWlnv1i + tgFSLVCLklzMwrcUCZb5Fe/9bWGRL6Uz0dEbDXZohGWagR4SC9MoM/shyb6R7Xm2ywwaR1dBkHM + alh2af0YAoJi0TljeQz70GlUCBAyLiLhLD9/V7JDfkdAgUj1R7tGibGbz7plVk1ySD/JUbXLyRD + Oj3l66FUGleJAA+KrvbPR5sVcA8Zt+Mak0xp5xyjQ0T8TUNfwJF0VUgWEpiVHWZGPgOgw2OnE5U + Iv4mBGteHGHC0WjCdjt/thyn2+QCx/LjPwrBDrsyw6FFyg43yWEmDkEgfCiTDSHMtTMSPLvYbXM + b00Egv5OZrrhIGahpHxdd2Ui/6zicLanexZopGSaMu4DnMnhfm7GGdRxNphtP9VMWwgy+vePa+a + ghVuG+oIgtIOoEwE/SN2zBpMIxLNuzTi3c80xsxh6uA+5VH9X937eNFlB0fouXJjG27Jo4NSbKL + oeSE2rLXYtJ2bCV0ee7E5InyvUsdzHynjewLM0usEvnFHn433yCibXdQ1VjAZJVOJlFwxt85evc + Y/3ckT+iau+N7Z8un7Vhsp2FKf/IR5/QGd1NrfOyZuZ4V3ojqtD71Hymz1874HoW492BdpUytut + 5WHbOvM4jWAm5dQ== +X-Developer-Key: i=caleb.connolly@linaro.org; a=openpgp; + fpr=83B24DA7FE145076BC38BB250CD904EB673A7C47 +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 + +This soc doesn't have the generic compatible. + +Reviewed-by: Neil Armstrong +Signed-off-by: Caleb Connolly +Reviewed-by: Simon Glass +--- + drivers/iommu/qcom-hyp-smmu.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/iommu/qcom-hyp-smmu.c b/drivers/iommu/qcom-hyp-smmu.c +index 7b646d840dd4..1b5a09bb7b39 100644 +--- a/drivers/iommu/qcom-hyp-smmu.c ++++ b/drivers/iommu/qcom-hyp-smmu.c +@@ -380,8 +380,9 @@ static struct iommu_ops qcom_smmu_ops = { + }; + + static const struct udevice_id qcom_smmu500_ids[] = { + { .compatible = "qcom,sdm845-smmu-500" }, ++ { .compatible = "qcom,sc7280-smmu-500" }, + { .compatible = "qcom,smmu-500", }, + { /* sentinel */ } + }; + + +From patchwork Wed Aug 21 13:41:50 2024 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Caleb Connolly +X-Patchwork-Id: 1974974 +X-Patchwork-Delegate: caleb.connolly@linaro.org +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=linaro.org header.i=@linaro.org header.a=rsa-sha256 + header.s=google header.b=yOMaz64l; + 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) server-digest SHA384) + (No client certificate requested) + by legolas.ozlabs.org (Postfix) with ESMTPS id 4Wpnb85tThz1yXf + for ; Wed, 21 Aug 2024 23:43:00 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 6572A88DE5; + Wed, 21 Aug 2024 15:42:04 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=linaro.org +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=linaro.org header.i=@linaro.org header.b="yOMaz64l"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 47E5388AFF; Wed, 21 Aug 2024 15:42:02 +0200 (CEST) +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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com + [IPv6:2a00:1450:4864:20::62b]) + (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 2E9D188C36 + for ; Wed, 21 Aug 2024 15:42:00 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=linaro.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=caleb.connolly@linaro.org +Received: by mail-ej1-x62b.google.com with SMTP id + a640c23a62f3a-a7a81bd549eso556008566b.3 + for ; Wed, 21 Aug 2024 06:42:00 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=linaro.org; s=google; t=1724247719; x=1724852519; darn=lists.denx.de; + h=cc:to:in-reply-to:references:message-id:content-transfer-encoding + :mime-version:subject:date:from:from:to:cc:subject:date:message-id + :reply-to; bh=VGpHi3k7vxgehhynkHpyKJwxi4oKfB4A2A00OXKPkFQ=; + b=yOMaz64lma1hQ0+Gt5CgMdElox51jZtnVyBitVGl6NvVmTuRWyklxImOrmwqsD3xYC + LGVcaLqh6/Q1W84/a/VQjQXnjBnf7rwjs1wqMs2mxBSvIXqX84EaEYJsYQK255NuFmeY + NXA0Iw/mLc/lgHAufmAUkAE02OVXH7AAyOjuEUceM/a6s9P5xPF82ucP7uH1adqOkAZQ + MTmKJK30kZjuhrZasD0UafyDCfMinXHhHFqlIcrhxmitRK4qDTzbktP/Atn3wfIJpVyh + Zbfra3N7AwxLidGI4lgrZSdfJWx7xo7f78GLzrxxtf9EQNN97axpLHFCTql16lK6z8qx + 3Psg== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20230601; t=1724247719; x=1724852519; + h=cc:to:in-reply-to:references:message-id:content-transfer-encoding + :mime-version:subject:date:from:x-gm-message-state:from:to:cc + :subject:date:message-id:reply-to; + bh=VGpHi3k7vxgehhynkHpyKJwxi4oKfB4A2A00OXKPkFQ=; + b=wjTgODezMYlCn5sKcCnnp1Vd0OLBd5uCD0eBpdaJdRReSR2EsRO7RyUqvKoOvz7NPc + O7v24bEyP8vKrldHxpNvN9R6RqnobFMDUq1urWi4ObeXiFLrgH/iVa6h8fQXs239YyyD + x2v2ZGzHy5LuWMQItcPDAfgV1NMl9e9Whd1LOS9mJBgHAuX64ve4uf3jQhpIAG52PGNG + PqZklpeuYNZrK/gG7RZSuSUlrHkd3f3UF6b7jqC16TpwDc+4RuW5vF35uLCqnjMjHRPK + jxAj6zbq1QxznhNSLn6wMt4SHd44YvPRET9SWyLNJ69jL8f3LA+/2vyrgQdg3UYIUTaf + WunQ== +X-Gm-Message-State: AOJu0YyYxzvh/Kq2TnmE45KUz4jNc/HfUkc2DCE5IqW05whgtX84/Uou + QvsSOrpkiSoyoRX00nQTJ6PEghMnyz/il1CvQOq6oIHOYo7ZMLMN86AVf2+SA9g= +X-Google-Smtp-Source: + AGHT+IF2/DupIr7S3Tf/n9l6fXvTAbuD5E3nSTqZnLUH17vrwUpiB2tHgdlyQp8XysNBhZpXN+tPXA== +X-Received: by 2002:a17:907:d864:b0:a86:6cb1:4d49 with SMTP id + a640c23a62f3a-a866f0fd56emr197816466b.13.1724247719583; + Wed, 21 Aug 2024 06:41:59 -0700 (PDT) +Received: from [192.168.0.113] ([2a02:8109:aa0d:be00::676e]) + by smtp.gmail.com with ESMTPSA id + a640c23a62f3a-a83839342f6sm904164066b.137.2024.08.21.06.41.58 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Wed, 21 Aug 2024 06:41:58 -0700 (PDT) +From: Caleb Connolly +Date: Wed, 21 Aug 2024 15:41:50 +0200 +Subject: [PATCH v2 5/7] qcom_defconfig: enable SC7280 clocks +MIME-Version: 1.0 +Message-Id: <20240821-b4-rb3gen2-v2-5-49b07633f3a8@linaro.org> +References: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> +In-Reply-To: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> +To: Tom Rini , Lukasz Majewski , + Sean Anderson , + Caleb Connolly , + Neil Armstrong , + Sumit Garg +Cc: u-boot@lists.denx.de, u-boot-qcom@groups.io +X-Mailer: b4 0.14-dev +X-Developer-Signature: v=1; a=openpgp-sha256; l=670; + i=caleb.connolly@linaro.org; h=from:subject:message-id; + bh=yS4s6QOgfiWQfzfc4REiZuaFQ3cRc+UaGAPzZhg/0tY=; + b=owEBbQKS/ZANAwAIAQWDMSsZX2S2AcsmYgBmxe6dlBkL0sqAHkV82+rSk3ED8IQyQvi4gHZz1 + YfE45yCF8SJAjMEAAEIAB0WIQS2UaFGPGq+0GkMVc0FgzErGV9ktgUCZsXunQAKCRAFgzErGV9k + trAoD/9/6KH2Cobld2UEMHFj+Lh80HJIGWdNHdhodfzYtlvCFU8pC/pmYwgBd9Opd24rU+Xh7dU + 8f+9HBKcRKgLmbuUy1fAn84B+kgl/IJtVeHpaP6LRp12NuJudZYl+woPx3mAgz9Wqv/+74nKYok + lVr1q9hbq4ZuMItcuzU5fWoyh7iC3th7KYUhh6939F1PQ8FFeF/5+9jJpRBMpuNZPFETxhlBTwY + YDXZL75cWg6ImurwaM4Hj1zQpHnR8V8HDa5GTTDNMxHOBFYCL+cJ3Bfd0FjqXFsL2/zjefqsewa + 0rWWQPMC8az8WvyczZAvB5JTq+M3VbP7kEWemCdedXmHiJ33dO6+jabm0ikvLooz1z7G6rlwZxZ + P7Rgc3ewW+RHOYbVYFLRKCdFVOFtiwOcEke50gPqQr/sbz0p39olzaE+D8WdNvgjW2uBRzLJDnR + EqyAYWncrWyAANXM3RSiICge87zZ/l4iUb8t8qm/8dYAs8KgPk6YNYVgLxtQqfVFNqnkHlmyy43 + 82JCgSSVggB9phNSVn/poUjlMlaImqGWB+zHDgf968J0a7mz/uFRgVgb8cjuG/Y5oX0xhNMkfqW + 2VymGoOrNlNvBNHyYEoEWgOMRiPvB/lL7PwbM9FFXmNyMMkx6FkzFgyopVkSWvCzKZQfgwBaUev + z00CkhnUndrSe5w== +X-Developer-Key: i=caleb.connolly@linaro.org; a=openpgp; + fpr=83B24DA7FE145076BC38BB250CD904EB673A7C47 +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 + +Enable clocks on SC7280 + +Reviewed-by: Neil Armstrong +Signed-off-by: Caleb Connolly +Reviewed-by: Simon Glass +--- + configs/qcom_defconfig | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/configs/qcom_defconfig b/configs/qcom_defconfig +index 24b71ba7be29..1a079264a554 100644 +--- a/configs/qcom_defconfig ++++ b/configs/qcom_defconfig +@@ -44,8 +44,9 @@ CONFIG_CLK=y + CONFIG_CLK_QCOM_APQ8016=y + CONFIG_CLK_QCOM_APQ8096=y + CONFIG_CLK_QCOM_QCM2290=y + CONFIG_CLK_QCOM_QCS404=y ++CONFIG_CLK_QCOM_SC7280=y + CONFIG_CLK_QCOM_SDM845=y + CONFIG_CLK_QCOM_SM6115=y + CONFIG_CLK_QCOM_SM8250=y + CONFIG_CLK_QCOM_SM8550=y + +From patchwork Wed Aug 21 13:41:51 2024 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Caleb Connolly +X-Patchwork-Id: 1974975 +X-Patchwork-Delegate: caleb.connolly@linaro.org +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=linaro.org header.i=@linaro.org header.a=rsa-sha256 + header.s=google header.b=K30ji2S3; + 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 4WpnbM59VXz1yXf + for ; Wed, 21 Aug 2024 23:43:11 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id D2D6288C25; + Wed, 21 Aug 2024 15:42:06 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=linaro.org +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=linaro.org header.i=@linaro.org header.b="K30ji2S3"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 9300088DD4; Wed, 21 Aug 2024 15:42:03 +0200 (CEST) +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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com + [IPv6:2a00:1450:4864:20::62f]) + (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 3E8D188DBE + for ; Wed, 21 Aug 2024 15:42:01 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=linaro.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=caleb.connolly@linaro.org +Received: by mail-ej1-x62f.google.com with SMTP id + a640c23a62f3a-a7a94478a4eso147841366b.1 + for ; Wed, 21 Aug 2024 06:42:01 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=linaro.org; s=google; t=1724247721; x=1724852521; darn=lists.denx.de; + h=cc:to:in-reply-to:references:message-id:content-transfer-encoding + :mime-version:subject:date:from:from:to:cc:subject:date:message-id + :reply-to; bh=yPrDPgQU7/bvZow9laSNg4WMEx5CRzVugf/oAUblCT4=; + b=K30ji2S3yioeE5/M0vSF0qrx1STvg5+c45nG5Kg+dcjyT1GMIsiX0GbpHc8+aTeWpp + Bd16xS5DE9TAuA1s2WmMq1TNdKHCyyx3MSSHMP9S9SctgsZSxIypHfGf7m6duOmEf5I8 + HBAumCuGiHTW3NkqIl8H2yZjkAbajsM1Q98+NyYJskO8owlNVyczk44QEbJ16Jtmntq6 + u+v7SADVhB3LrWu30OOWnwu/Z/9TVapcDx+ZAGflSfCy5P54TgqYIRYrBtjn9huobmaJ + XJED4Ak8A7iJHUQ5Savv+T4lTPHHfD+J+1NZDr1ciKMujXdnFUuZYcUZLoAn0PHLVsDD + +S6A== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20230601; t=1724247721; x=1724852521; + h=cc:to:in-reply-to:references:message-id:content-transfer-encoding + :mime-version:subject:date:from:x-gm-message-state:from:to:cc + :subject:date:message-id:reply-to; + bh=yPrDPgQU7/bvZow9laSNg4WMEx5CRzVugf/oAUblCT4=; + b=RTxkaBLhQgRZeSdTWakNQdltrcGw4Cw+6Jge9dwNM3Q/YJMSuM1z7N2JGOntXjHxD2 + NZzz61S7FHFOOjYJoubSodORxK53ddoKFuwUvxurdOy+9Y67fPtAweqdd8NJnDdvBrEh + 35wnkzs6ItOpaYe1StAVW06cFPwhqK7ajV3yVdoyKwzCfp8oTYHC5QFJUhi0EM4KnF97 + HepCXvJdv+Qm1/hOVJu19Y6L2RKwXEWztyS53XVwtLOeyKO5x4Qk4PuhnZEAcGkT5lBB + 0kaoF4zSuIX8CVYMJ4oa/4TJg/epJPEtpdDjPDJ2KEWVWbay4/E7PLlgi/tDNndUgOGI + 5vvw== +X-Gm-Message-State: AOJu0Ywpr+aZcIll1/M3ZGdzXawgIEMgRfu4GacRerzZeNne6pIDfvz0 + FBjk4XnDaPXHLxU60pO20RaUjuXG+96oqxwOdmGkP/6Hf3yiMbOJc/ikC/obqxQ= +X-Google-Smtp-Source: + AGHT+IFBBHXs1fwWXLXlqsclsjPN/CITy3andQbbeClu6l28M7g0bUERMexbKgeMqQwwLkcBMwvMRA== +X-Received: by 2002:a17:907:1b2a:b0:a86:668a:8b28 with SMTP id + a640c23a62f3a-a8670182bd0mr296134266b.30.1724247720548; + Wed, 21 Aug 2024 06:42:00 -0700 (PDT) +Received: from [192.168.0.113] ([2a02:8109:aa0d:be00::676e]) + by smtp.gmail.com with ESMTPSA id + a640c23a62f3a-a83839342f6sm904164066b.137.2024.08.21.06.41.59 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Wed, 21 Aug 2024 06:42:00 -0700 (PDT) +From: Caleb Connolly +Date: Wed, 21 Aug 2024 15:41:51 +0200 +Subject: [PATCH v2 6/7] configs: add qcm6490_defconfig +MIME-Version: 1.0 +Message-Id: <20240821-b4-rb3gen2-v2-6-49b07633f3a8@linaro.org> +References: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> +In-Reply-To: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> +To: Tom Rini , Lukasz Majewski , + Sean Anderson , + Caleb Connolly , + Neil Armstrong , + Sumit Garg +Cc: u-boot@lists.denx.de, u-boot-qcom@groups.io +X-Mailer: b4 0.14-dev +X-Developer-Signature: v=1; a=openpgp-sha256; l=1579; + i=caleb.connolly@linaro.org; h=from:subject:message-id; + bh=ACfbGsu6Qfhpulh7cWGr4R2PHD6f1xBOaMcu/oMTV/k=; + b=owEBbQKS/ZANAwAIAQWDMSsZX2S2AcsmYgBmxe6eltJAuAi418HOLC6BvAwvNrE6K+OD4tmaU + 8Agtuwf3TuJAjMEAAEIAB0WIQS2UaFGPGq+0GkMVc0FgzErGV9ktgUCZsXungAKCRAFgzErGV9k + tp2fD/4izqkO8vl46KJDMg5exEAzqayxPJyZcBnhIQyekkEfHowP0Hnr0xDZqbYbl6BAapt+ZBA + 237lBMrvuWc45PJO228GrtQw+7AcU8UqYXvy0mhiS+xUJHhirFotdPZX8jly9sRdw54SUINx7vl + HThC3BXeYgmzugZXoSGA3Dw/d8NZXgf5aCjqXW/pIMBWK4RB/4r84gPQG3dgNT12yTVuNtN81ng + 7UMKgDHnK5kaXNh630td4ZmmJQ2jhUU/DShNLmKJnpe67xiK6DjHJiQqgqqj2ZZ38qvlRRpNYgx + 0iwUSyvlnNrB6dHAyzgUjMFaqxReb+rJKvr7+k9YB1dbmysbh9MM3WlWKmf9P39qLjJp1zBwd5z + 9lolc/k+9FT0hziFLDd1sMPQ0oBSZQQNFxZCEtncn387cDFCvJb/nUZnyt6XVzimfnSfssBGQ/g + A04MCaVXei5UeDZHc2kuv4yi7bWWnN3hZVdkoSHMe5esd0cYlVmz2tBkPzTDWIckquNRo/2dWyE + k5yQoqRVqg/V1GTE0f3B9aL/diPmJdYp+Z2FAAihFEUEOAKSPr+BfGIm2bNoMHUUQRGecjNoitg + qLmRTfs21gQs6x1ZivJ1tm3WGl2u+FUm9uuyYwB0bGnXasAzIBB+F4K2AL3dcULGf3Au2Q4w7Y1 + ULXtGjABlmE9Z5w== +X-Developer-Key: i=caleb.connolly@linaro.org; a=openpgp; + fpr=83B24DA7FE145076BC38BB250CD904EB673A7C47 +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 a defconfig for the RB3 Gen 2 and other QCM6490 boards with a +dedicated uefi partition. These can replace EDK2 entirely with U-Boot. + +Signed-off-by: Caleb Connolly +Reviewed-by: Simon Glass +--- + MAINTAINERS | 1 + + configs/qcm6490_defconfig | 18 ++++++++++++++++++ + 2 files changed, 19 insertions(+) + +diff --git a/MAINTAINERS b/MAINTAINERS +index daaf0345d0e8..7ab39d91a553 100644 +--- a/MAINTAINERS ++++ b/MAINTAINERS +@@ -616,8 +616,9 @@ M: Neil Armstrong + R: Sumit Garg + L: u-boot-qcom@groups.io + S: Maintained + T: git https://source.denx.de/u-boot/custodians/u-boot-snapdragon.git ++F: configs/qcm6490_defconfig + F: drivers/*/*/pm8???-* + F: drivers/gpio/msm_gpio.c + F: drivers/mmc/msm_sdhci.c + F: drivers/phy/msm8916-usbh-phy.c +diff --git a/configs/qcm6490_defconfig b/configs/qcm6490_defconfig +new file mode 100644 +index 000000000000..25413ac9ed5a +--- /dev/null ++++ b/configs/qcm6490_defconfig +@@ -0,0 +1,18 @@ ++# Configuration for building U-Boot to be flashed ++# to the uefi partition of QCM6490 dev boards with ++# the "Linux Embedded" partition layout (which have ++# a dedicated "uefi" partition for edk2/U-Boot) ++ ++#include "qcom_defconfig" ++ ++CONFIG_DEBUG_UART=y ++CONFIG_DEBUG_UART_ANNOUNCE=y ++CONFIG_DEBUG_UART_BASE=0x994000 ++CONFIG_DEBUG_UART_MSM_GENI=y ++CONFIG_DEBUG_UART_CLOCK=14745600 ++ ++# Address where U-Boot will be loaded ++CONFIG_TEXT_BASE=0x9fc00000 ++CONFIG_REMAKE_ELF=y ++ ++CONFIG_DEFAULT_DEVICE_TREE="qcom/qcs6490-rb3gen2" + +From patchwork Wed Aug 21 13:41:52 2024 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Caleb Connolly +X-Patchwork-Id: 1974976 +X-Patchwork-Delegate: caleb.connolly@linaro.org +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=linaro.org header.i=@linaro.org header.a=rsa-sha256 + header.s=google header.b=N7ncWeh3; + 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 4Wpnbc6Cbtz1yXf + for ; Wed, 21 Aug 2024 23:43:24 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 3D6FC88C7E; + Wed, 21 Aug 2024 15:42:07 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=linaro.org +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=linaro.org header.i=@linaro.org header.b="N7ncWeh3"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 78A2D88BF6; Wed, 21 Aug 2024 15:42:05 +0200 (CEST) +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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 +Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com + [IPv6:2a00:1450:4864:20::22a]) + (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 0804988BBC + for ; Wed, 21 Aug 2024 15:42:02 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=linaro.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=caleb.connolly@linaro.org +Received: by mail-lj1-x22a.google.com with SMTP id + 38308e7fff4ca-2f3bfcc2727so47717401fa.0 + for ; Wed, 21 Aug 2024 06:42:02 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=linaro.org; s=google; t=1724247722; x=1724852522; darn=lists.denx.de; + h=cc:to:in-reply-to:references:message-id:content-transfer-encoding + :mime-version:subject:date:from:from:to:cc:subject:date:message-id + :reply-to; bh=IvOluZPLzD78/HF1gfteCSftNGDnvO7+RNQKT4a8rSE=; + b=N7ncWeh3cbNIFm16gC0ycocqUu7FjIH/X5KUs3ng3VOMDiDB9bx6yqvhqYvjQxyBc0 + NtX/AEn+6kLdyYda7FlKDaCMV9zQy5kNC993I5rZ4A9iW9QyJTuwBSzH7qa4sO6gQ1ol + 8Lo1+ZJhhBum9Ni+61giewvGR09iEusCmwVImeU5GAZaibju4E3OPBByXLzP8iW1CXee + Td0YEp/5GqF/suNSfz0LIe3u7qAf4ym1XGfXSuoSZTlAKYusX8Hr8p7r6eeQe98FId8k + K8EtjvWCpjafWWcaMyS2hMQJ9qVg2oN+O0BWIVzab1rmcZfKqTsdCdRmT5zJ8/UuskiJ + ovww== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20230601; t=1724247722; x=1724852522; + h=cc:to:in-reply-to:references:message-id:content-transfer-encoding + :mime-version:subject:date:from:x-gm-message-state:from:to:cc + :subject:date:message-id:reply-to; + bh=IvOluZPLzD78/HF1gfteCSftNGDnvO7+RNQKT4a8rSE=; + b=irJmZUIlQ9YqUetM6kgCgWcp0L2t2cRcBdc7BANQ6GSkyblKM0IhcjmShs/YQLTvfD + kcy+qKFJUBLqwl/GS2t28MNGXs5+jyhkJJtmlWXg0jksArLnCgxQNWggqkJHxHr4QXWm + yQUR1tfzoSdEPgisANBnh6pIR2x4I+INopwPke0bJOnMgq6gauZ6e7Sb5DK8+XfB+ub7 + 4BwZrBRNSgdQL4GZy7yJ7/tDy+Rb77CKeC82GlbeYSYWjhnyNHiApHXii7b3P9K1dIpH + TuIXX+CoDUWK9SpsTDPZQ9TKah8sMs4lll+6bxADx28pav2gXGoDzIq8+8njC4mnAW8D + QRKA== +X-Gm-Message-State: AOJu0YxQDsjOdfe21vx3pm9NQzQM6F9uuV8kmavTQJuc2Dc6UIFEBXIw + Yp6RPVVelZ9sExmiTtDcpYm6jM3fkV9MKKhMmd5jCa8HvsIjbjln6JXyuICIMFA= +X-Google-Smtp-Source: + AGHT+IFOXObF674O6U9t5YWoWgiOsh1cr3c2B3a47ilhjVWpLEAWrw7hptc9n6o8T5A7NFea+26OwA== +X-Received: by 2002:a05:6512:118f:b0:52f:d17e:46b with SMTP id + 2adb3069b0e04-533485eff58mr1798728e87.54.1724247721704; + Wed, 21 Aug 2024 06:42:01 -0700 (PDT) +Received: from [192.168.0.113] ([2a02:8109:aa0d:be00::676e]) + by smtp.gmail.com with ESMTPSA id + a640c23a62f3a-a83839342f6sm904164066b.137.2024.08.21.06.42.00 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Wed, 21 Aug 2024 06:42:01 -0700 (PDT) +From: Caleb Connolly +Date: Wed, 21 Aug 2024 15:41:52 +0200 +Subject: [PATCH v2 7/7] doc: board/qualcomm: document rb3gen2 + building/flashing +MIME-Version: 1.0 +Message-Id: <20240821-b4-rb3gen2-v2-7-49b07633f3a8@linaro.org> +References: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> +In-Reply-To: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> +To: Tom Rini , Lukasz Majewski , + Sean Anderson , + Caleb Connolly , + Neil Armstrong , + Sumit Garg +Cc: u-boot@lists.denx.de, u-boot-qcom@groups.io +X-Mailer: b4 0.14-dev +X-Developer-Signature: v=1; a=openpgp-sha256; l=3002; + i=caleb.connolly@linaro.org; h=from:subject:message-id; + bh=Zfbm5IKZooOMQaYWVdjsboSGnZBH9tpLor1DsgqeCLA=; + b=owEBbQKS/ZANAwAIAQWDMSsZX2S2AcsmYgBmxe6eOpavbRRq/Mmd1u2iOzwt3wx46uoOvpDbB + SjdW6jqdcuJAjMEAAEIAB0WIQS2UaFGPGq+0GkMVc0FgzErGV9ktgUCZsXungAKCRAFgzErGV9k + th2IEACXQhOGwtEPSr0Jpv9CdMJZvP6O7/us/hUgF9Bir4ETF1KQoReZ18goCIPH2bfLWQIT4eN + CS7gQ46J/jZfFKYl2ORIB7BUUfe58/nB4VvbfGfmskbHi4sdVSemgHxu04xNtj1ttCaiVKX58D5 + GLThMjr4w80H1RLlEnlJmDf8RC/bp6PPHv1a9f0mDH3y00HDTJInV1+p8Bp5T/foomvjYfdcB86 + okdAJzhvNDYeA+xQxp5zTAzDoGI1K/5NYiLyqYoNzpb2sVBTjEBl6fiQqZ6q9b6TWoP5H64s3VC + OsD4ZgATKSXgEYuNYGx5XwDd66lN31jnu4BRhav643sBpOwpN/UN3cLVeqHbD5K3QiI6j+afC7w + o1QNNxNE9pBp3ZBWWWWFbbOv+rwy5npvZHZKWUSNC21l2/4hI6XwAFLDlu5nm+yQ+fYdb4HnMc0 + 1kGJhpGz0/guwKXxpSVxijQT5lFbr81ADvFLzoRD33x8EnbG4aFGa6PhIU+H/9TNpDOaDWHQdIb + 18rqauYLxwejAvFKDC8EIWM9n+6Qkn8caR37H11EnKkNX15ZRKn3Oiv7n8Wy6CukVoFquvjL4IU + t/2E8nV32ksuehndbsDXnpRpSAefggkQ9TjkuGaV29j0nvSrlJiCud0Dzj0lTdjxBvJKpaXG7XN + YCCZ/x5nTtnxdyg== +X-Developer-Key: i=caleb.connolly@linaro.org; a=openpgp; + fpr=83B24DA7FE145076BC38BB250CD904EB673A7C47 +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 process here is almost identical to the Dragonboard 410c, we've come +full circle! + +Signed-off-by: Caleb Connolly +Reviewed-by: Simon Glass +--- + doc/board/qualcomm/index.rst | 1 + + doc/board/qualcomm/rb3gen2.rst | 53 ++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 54 insertions(+) + +diff --git a/doc/board/qualcomm/index.rst b/doc/board/qualcomm/index.rst +index 4955274a39bc..8c7969987a97 100644 +--- a/doc/board/qualcomm/index.rst ++++ b/doc/board/qualcomm/index.rst +@@ -6,6 +6,7 @@ Qualcomm + .. toctree:: + :maxdepth: 2 + + dragonboard410c ++ rb3gen2 + board + debugging +diff --git a/doc/board/qualcomm/rb3gen2.rst b/doc/board/qualcomm/rb3gen2.rst +new file mode 100644 +index 000000000000..4240606224f5 +--- /dev/null ++++ b/doc/board/qualcomm/rb3gen2.rst +@@ -0,0 +1,53 @@ ++.. SPDX-License-Identifier: GPL-2.0+ ++.. sectionauthor:: Caleb Connolly ++ ++Qualcomm Robotics RB3 Gen 2 ++=========================== ++ ++The RB3 Gen 2 is a development board based on the Qualcomm QCM6490 SoC (a derivative ++of SC7280). More information can be found on `Qualcomm's product page`_. ++ ++U-Boot can be used as a replacement for Qualcomm's original EDK2 bootloader by ++flashing it directly to the uefi_a (or _b) partition. ++ ++.. _Qualcomm's product page: https://www.qualcomm.com/developer/hardware/rb3-gen-2-development-kit ++ ++Installation ++------------ ++First, setup ``CROSS_COMPILE`` for aarch64. Then, build U-Boot for ``qcm6490``:: ++ ++ $ export CROSS_COMPILE= ++ $ make qcm6490_defconfig ++ $ make -j8 ++ ++This will build ``u-boot.elf`` in the configured output directory. ++ ++Although the RB3 Gen 2 does not have secure boot set up by default, ++the firmware still expects firmware ELF images to be "signed". The signature ++does not provide any security in this case, but it provides the firmware with ++some required metadata. ++ ++To "sign" ``u-boot.elf`` you can use e.g. `qtestsign`_:: ++ ++ $ qtestsign -v6 aboot -o u-boot.mbn u-boot.elf ++ ++Then install the resulting ``u-boot.mbn`` to the ``uefi_a`` partition ++on your device with ``fastboot flash uefi_a u-boot.mbn``. ++ ++U-Boot should be running after a reboot (``fastboot reboot``). ++ ++Note that fastboot is not yet supported in U-Boot on this board, as a result, ++to flash back the original firmware, or new versoins of the U-Boot, EDL mode ++must be used. This can be accessed by pressing the EDL mode button as described ++in the Qualcomm Linux documentation. A tool like bkerler's `edl`_ can be used ++for flashing with the firehose loader binary appropriate for the board. ++ ++.. _qtestsign: https://github.com/msm8916-mainline/qtestsign ++.. _edl: https://github.com/bkerler/edl ++ ++Usage ++----- ++ ++The USB Type-A ports are connected via a PCIe USB hub, which is not supported yet. ++However, the Type-C port can be used with a powered USB dock to connect peripherals ++like a USB stick. diff --git a/aarch64-boards b/aarch64-boards index 2087102..9cdccef 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -75,6 +75,7 @@ pinetab poplar puma-rk3399 qcom +qcm6490 qemu_arm64 roc-cc-rk3328 rock-4c-plus-rk3399 diff --git a/sources b/sources index 4d7803b..a81cb70 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2024.10-rc2.tar.bz2) = 606b48ef1fbd67fcd686b68540eb6db9453f9a02af16fc244add9fd5b75743bd776e2a3806192345b8d6eaa0f6ba3a1322623e3254c1d511d8ee524f7515e8b3 +SHA512 (u-boot-2024.10-rc3.tar.bz2) = 3787a2b7333881c66fe1d1e5de2a83914bef9b00a584a9cbbdb791ca2f4ae0398f24acb2e8c4df8aa8a396f2c4a9005b590c928890a3bdf996ed0ed3f9a16330 diff --git a/uboot-tools.spec b/uboot-tools.spec index 5f2aaa7..9682fbd 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc2 +%global candidate rc3 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2024.10 -Release: 0.1%{?candidate:.%{candidate}}%{?dist} +Release: 0.2%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ @@ -31,6 +31,8 @@ Patch5: enable-bootmenu-by-default.patch # Rockchips improvements Patch10: rockchip-Enable-preboot-start-for-pci-usb.patch +# QCom +Patch11: Qualcomm-add-support-for-SC7280-and-the-RB3-Gen-2.patch BuildRequires: bc BuildRequires: bison @@ -188,6 +190,10 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Tue Aug 27 2024 Peter Robinson - 1:2024.10-0.2.rc3 +- Update to 2024.10 RC3 +- Enable initial QCM6490 SoC support + * Thu Aug 15 2024 Peter Robinson - 1:2024.10-0.1.rc2 - Update to 2024.10 RC2 From 9767fcde4a18cd56a753dbf20b4dc167443fd2f0 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 2 Sep 2024 16:38:20 +0100 Subject: [PATCH 188/271] A number of fixes - Fix Allwinner firmware chainloading (rhbz#2309138) - Fix ATF firmware selection on a number of devices - Support Allwinner SCP firmware (fixes suspend/resume) --- aarch64-boards | 5 ++++- uboot-tools.spec | 33 ++++++++++++++++++++++++++------- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/aarch64-boards b/aarch64-boards index 9cdccef..0530e42 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -16,6 +16,7 @@ ficus-rk3399 firefly-rk3399 geekbox hikey +hmibsc khadas-edge-captain-rk3399 khadas-edge-rk3399 khadas-edge-v-rk3399 @@ -57,6 +58,7 @@ orangepi-r1-plus-rk3328 orangepi-rk3399 orangepi_win orangepi_zero2 +orangepi_zero2w orangepi_zero3 orangepi_zero_plus orangepi_zero_plus2 @@ -74,8 +76,8 @@ pinephone-pro-rk3399 pinetab poplar puma-rk3399 -qcom qcm6490 +qcom qemu_arm64 roc-cc-rk3328 rock-4c-plus-rk3399 @@ -85,6 +87,7 @@ rock960-rk3399 rock-pi-4c-rk3399 rock-pi-4-rk3399 rock-pi-e-rk3328 +rock-pi-e-v3-rk3328 rock-pi-n10-rk3399pro rockpro64-rk3399 roc-pc-mezzanine-rk3399 diff --git a/uboot-tools.spec b/uboot-tools.spec index 9682fbd..4c8fb22 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2024.10 -Release: 0.2%{?candidate:.%{candidate}}%{?dist} +Release: 0.3%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ @@ -54,6 +54,7 @@ BuildRequires: swig %if %{with toolsonly} %ifarch aarch64 BuildRequires: arm-trusted-firmware-armv8 +BuildRequires: crust-firmware BuildRequires: python3-pyelftools BuildRequires: xxd %endif @@ -94,27 +95,40 @@ do mkdir builds/$(echo $board)/ # ATF selection, needs improving, suggestions of ATF SoC to Board matrix welcome - sun50i=(a64-olinuxino a64-olinuxino-emmc amarula_a64_relic bananapi_m2_plus_h5 bananapi_m64 libretech_all_h3_cc_h5 nanopi_a64 nanopi_neo2 nanopi_neo_plus2 oceanic_5205_5inmfd orangepi_pc2 orangepi_prime orangepi_win orangepi_zero_plus orangepi_zero_plus2 pine64-lts pine64_plus pinebook pinephone pinetab sopine_baseboard teres_i) + sun50i=(a64-olinuxino a64-olinuxino-emmc amarula_a64_relic bananapi_m64 nanopi_a64 oceanic_5205_5inmfd orangepi_win pine64-lts pine64_plus pine64_plus pinebook pinephone pinephone pinetab sopine_baseboard teres_i) if [[ " ${sun50i[*]} " == *" $board "* ]]; then echo "Board: $board using sun50i_a64" cp /usr/share/arm-trusted-firmware/sun50i_a64/bl31.bin builds/$(echo $board)/atf-bl31 + cp /usr/share/crust-firmware/a64/scp.bin builds/$(echo $board)/ + fi + sun50h5=(bananapi_m2_plus_h5 emlid_neutis_n5_devboard libretech_all_h3_cc_h5 libretech_all_h3_it_h5 libretech_all_h5_cc_h5 nanopi_neo2 nanopi_neo_plus2 nanopi_r1s_h5 orangepi_pc2 orangepi_prime orangepi_zero_plus2 orangepi_zero_plus) + if [[ " ${sun50h5[*]} " == *" $board "* ]]; then + echo "Board: $board using sun50i_h6" + cp /usr/share/arm-trusted-firmware/sun50i_a64/bl31.bin builds/$(echo $board)/atf-bl31 + cp /usr/share/crust-firmware/h5/scp.bin builds/$(echo $board)/ fi sun50h6=(beelink_gs1 emlid_neutis_n5_devboard orangepi_3 orangepi_lite2 orangepi_one_plus pine_h64 tanix_tx6) if [[ " ${sun50h6[*]} " == *" $board "* ]]; then echo "Board: $board using sun50i_h6" cp /usr/share/arm-trusted-firmware/sun50i_h6/bl31.bin builds/$(echo $board)/atf-bl31 + cp /usr/share/crust-firmware/h6/scp.bin builds/$(echo $board)/ fi - sun50i_h616=(orangepi_zero2 orangepi_zero3 transpeed-8k618-t x96_mate) + sun50i_h616=(orangepi_zero2 orangepi_zero2w orangepi_zero3 transpeed-8k618-t x96_mate) if [[ " ${sun50i_h616[*]} " == *" $board "* ]]; then echo "Board: $board using sun50i_h616" cp /usr/share/arm-trusted-firmware/sun50i_h616/bl31.bin builds/$(echo $board)/atf-bl31 fi - rk3328=(evb-rk3328 nanopi-r2c-plus-rk3328 nanopi-r2c-rk3328 nanopi-r2s-rk3328 orangepi-r1-plus-lts-rk3328 orangepi-r1-plus-rk3328 roc-cc-rk3328 rock64-rk3328 rock-pi-e-rk3328) + rk3328=(evb-rk3328 nanopi-r2c-plus-rk3328 nanopi-r2c-rk3328 nanopi-r2s-rk3328 orangepi-r1-plus-lts-rk3328 orangepi-r1-plus-rk3328 roc-cc-rk3328 rock64-rk3328 rock-pi-e-rk3328 rock-pi-e-v3-rk3328) if [[ " ${rk3328[*]} " == *" $board "* ]]; then echo "Board: $board using rk3328" cp /usr/share/arm-trusted-firmware/rk3328/bl31.elf builds/$(echo $board)/atf-bl31 fi - rk3399=(eaidk-610-rk3399 evb-rk3399 ficus-rk3399 firefly-rk3399 khadas-edge-captain-rk3399 khadas-edge-rk3399 khadas-edge-v-rk3399 leez-rk3399 nanopc-t4-rk3399 nanopi-m4-2gb-rk3399 nanopi-m4b-rk3399 nanopi-m4-rk3399 nanopi-neo4-rk3399 nanopi-r4s-rk3399 orangepi-rk3399 pinebook-pro-rk3399 pinephone-pro-rk3399 puma-rk3399 rock960-rk3399 rock-pi-4c-rk3399 rock-pi-4-rk3399 rock-pi-n10-rk3399pro rockpro64-rk3399 roc-pc-mezzanine-rk3399 roc-pc-rk3399) + rk3368=(evb-px5 geekbox) + if [[ " ${rk3368[*]} " == *" $board "* ]]; then + echo "Board: $board using rk3368" + cp /usr/share/arm-trusted-firmware/rk3368/bl31.elf builds/$(echo $board)/atf-bl31 + fi + rk3399=(eaidk-610-rk3399 evb-rk3399 ficus-rk3399 firefly-rk3399 khadas-edge-captain-rk3399 khadas-edge-rk3399 khadas-edge-v-rk3399 leez-rk3399 nanopc-t4-rk3399 nanopi-m4-2gb-rk3399 nanopi-m4b-rk3399 nanopi-m4-rk3399 nanopi-neo4-rk3399 nanopi-r4s-rk3399 orangepi-rk3399 pinebook-pro-rk3399 pinephone-pro-rk3399 puma-rk3399 rock-4c-plus-rk3399 rock-4se-rk3399 rock960-rk3399 rock-pi-4c-rk3399 rock-pi-4-rk3399 rock-pi-n10-rk3399pro rockpro64-rk3399 roc-pc-mezzanine-rk3399 roc-pc-rk3399) if [[ " ${rk3399[*]} " == *" $board "* ]]; then echo "Board: $board using rk3399" cp /usr/share/arm-trusted-firmware/rk3399/* builds/$(echo $board)/ @@ -122,8 +136,8 @@ do fi # End ATF - BINMAN_ALLOW_MISSING=1 make $(echo $board)_defconfig O=builds/$(echo $board)/ - BINMAN_ALLOW_MISSING=1 %make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" O=builds/$(echo $board)/ + make $(echo $board)_defconfig O=builds/$(echo $board)/ + BL31=builds/$(echo $board)/atf-bl31 %make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" O=builds/$(echo $board)/ done @@ -190,6 +204,11 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Mon Sep 02 2024 Peter Robinson - 1:2024.10-0.3.rc3 +- Fix Allwinner firmware chainloading (rhbz#2309138) +- Fix ATF firmware selection on a number of devices +- Support Allwinner SCP firmware (fixes suspend/resume) + * Tue Aug 27 2024 Peter Robinson - 1:2024.10-0.2.rc3 - Update to 2024.10 RC3 - Enable initial QCM6490 SoC support From 53b4b4d5397ad2c1f8b34cc53321c10cb565cc1e Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 5 Sep 2024 20:18:57 +0100 Subject: [PATCH 189/271] 2024.10 RC4 --- sources | 2 +- uboot-tools.spec | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sources b/sources index a81cb70..3c6cf70 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2024.10-rc3.tar.bz2) = 3787a2b7333881c66fe1d1e5de2a83914bef9b00a584a9cbbdb791ca2f4ae0398f24acb2e8c4df8aa8a396f2c4a9005b590c928890a3bdf996ed0ed3f9a16330 +SHA512 (u-boot-2024.10-rc4.tar.bz2) = 31869a7a6c6592ffe73b2f71c4985ace8beee33b232f4e8cbb8d2ebcee9b08d7bedeb57ca7e36cbadf42df44283b0ba79e87b55b1b2f94f2cc4a01cbce747cf7 diff --git a/uboot-tools.spec b/uboot-tools.spec index 4c8fb22..195029d 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc3 +%global candidate rc4 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2024.10 -Release: 0.3%{?candidate:.%{candidate}}%{?dist} +Release: 0.4%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ @@ -204,6 +204,9 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Tue Sep 03 2024 Peter Robinson - 1:2024.10-0.4.rc4 +- Update to 2024.10 RC4 + * Mon Sep 02 2024 Peter Robinson - 1:2024.10-0.3.rc3 - Fix Allwinner firmware chainloading (rhbz#2309138) - Fix ATF firmware selection on a number of devices From 92653178449939bea35dab846ab09ee61e8f6728 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Fri, 20 Sep 2024 09:44:17 +0100 Subject: [PATCH 190/271] Add missing licenses directory --- uboot-tools.spec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 195029d..02850f0 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2024.10 -Release: 0.4%{?candidate:.%{candidate}}%{?dist} +Release: 0.5%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ @@ -190,6 +190,7 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} ( cd %{buildroot}%{_bindir}; ln -sf fw_printenv fw_setenv ) %files +%license Licenses/* %doc README doc/develop/distro.rst doc/README.gpt %doc doc/develop/uefi doc/usage doc/arch/arm64.rst %{_bindir}/* @@ -198,12 +199,16 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %if %{with toolsonly} %ifarch aarch64 %files -n uboot-images-armv8 +%license Licenses/* %dir %{_datadir}/uboot/ %{_datadir}/uboot/* %endif %endif %changelog +* Fri Sep 20 2024 Peter Robinson - 1:2024.10-0.5.rc4 +- Add missing licenses directory + * Tue Sep 03 2024 Peter Robinson - 1:2024.10-0.4.rc4 - Update to 2024.10 RC4 From 3cce66678269ec8a7f4b7404fd8cc3a032d812c3 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 9 Sep 2024 05:42:54 +0100 Subject: [PATCH 191/271] trim changelog --- uboot-tools.spec | 386 ----------------------------------------------- 1 file changed, 386 deletions(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 02850f0..09f67c6 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -271,389 +271,3 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} * Mon Jan 08 2024 Peter Robinson - 1:2024.01-1 - Update to 2024.01 - -* Thu Dec 07 2023 Peter Robinson - 1:2024.01-0.2.rc4 -- Update to 2024.01 RC4 -- Rebase SMBIOS patch to latest rev - -* Fri Nov 24 2023 Peter Robinson - 1:2024.01-0.1.rc3 -- Update to 2024.01 RC3 - -* Tue Oct 31 2023 Peter Robinson - 1:2023.10-0.9 -- Rebuild - -* Mon Oct 23 2023 Peter Robinson - 2023.10-0.8 -- Further potential upstream fixes - -* Mon Oct 02 2023 Peter Robinson - 2023.10-0.7 -- Update to 2023.10 GA -- Some upstream fixes - -* Mon Aug 21 2023 Peter Robinson - 2023.10-0.4.rc3 -- Update to 2023.10 RC3 - -* Mon Aug 21 2023 Peter Robinson - 2023.10-0.3.rc2 -- Add patch to speed up firmware UEFI video output - -* Sat Aug 19 2023 Peter Robinson - 2023.10-0.2.rc2 -- Add patch for Raspberry Pi boot - -* Fri Aug 18 2023 Peter Robinson - 2023.10-0.1.rc2 -- Update to 2023.10 RC2 - -* Sat Jul 22 2023 Fedora Release Engineering - 2023.07-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Tue Jul 11 2023 Peter Robinson - 2023.07-1 -- Update to 2023.07 GA - -* Fri Jun 16 2023 Peter Robinson - 2023.07-0.4.rc4 -- Disable NFS by default - -* Mon Jun 12 2023 Peter Robinson - 2023.07-0.3.rc4 -- Update to 2023.07 RC4 - -* Sun Jun 11 2023 Peter Robinson - 2023.07-0.2.rc3 -- Update to 2023.07 RC3 -- Fixes for the Pinephone Pro, RockPro64 - -* Wed May 17 2023 Peter Robinson - 2023.07-0.1.rc2 -- Update to 2023.07 RC2 - -* Tue Apr 04 2023 Peter Robinson - 2023.04-1 -- Update to 2023.04 GA - -* Tue Mar 28 2023 Peter Robinson - 2023.04-0.4.rc5 -- Update to 2023.04 RC5 -- Drop upstreamed patches -- Rockchip boot fixes - -* Tue Mar 14 2023 Peter Robinson - 2023.04-0.3.rc4 -- Update to 2023.04 RC4 - -* Fri Feb 17 2023 Peter Robinson - 2023.04-0.2.rc2 -- Update to 2023.04 RC2 - -* Tue Jan 31 2023 Peter Robinson - 2023.04-0.1.rc1 -- Update to 2023.04 RC1 -- Drop bmp_logo tool - -* Sat Jan 21 2023 Fedora Release Engineering - 2023.01-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Wed Jan 18 2023 Peter Robinson - 2023.01-1 -- Update to 2023.01 GA - -* Sat Dec 31 2022 Peter Robinson - 2023.01-0.4.rc4 -- Update PinePhone Pro to latest rev - -* Tue Dec 20 2022 Peter Robinson - 2023.01-0.3.rc4 -- Update to 2023.01 RC4 - -* Mon Dec 05 2022 Peter Robinson - 2023.01-0.2.rc3 -- Update to 2023.01 RC3 - -* Thu Nov 24 2022 Peter Robinson - 2023.01-0.1.rc2 -- Update to U-Boot 2023.01 RC2 -- Update Pinephone Pro patches - -* Mon Oct 10 2022 Peter Robinson - 2022.10-1 -- Update to 2022.10 GA - -* Tue Sep 06 2022 Peter Robinson - 2022.10-0.6.rc4 -- Update SMBIOS patch - -* Tue Sep 06 2022 Peter Robinson - 2022.10-0.5.rc4 -- Update to 2022.10 RC4 -- Fix for booting Rockchip devices from NVME - -* Tue Aug 23 2022 Peter Robinson - 2022.10-0.4.rc3 -- Update to 2022.10 RC3 - -* Mon Aug 22 2022 Davide Cavalca - 2022.10-0.3.rc1 -- Install nodtb variant for Apple M1 (rhbz#2068958) - -* Tue Aug 16 2022 Peter Robinson - 2022.10-0.2.rc1 -- Fix for DT property propogation via firmware - -* Thu Jul 28 2022 Peter Robinson - 2022.10-0.1.rc1 -- Update to 2022.10 RC1 -- Enable LTO for firmware builds - -* Sat Jul 23 2022 Fedora Release Engineering - 2022.07-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Sun Jul 17 2022 Peter Robinson - 2022.07-1 -- Update to 2022.07 GA - -* Mon Jul 04 2022 Peter Robinson - 2022.07-0.6.rc6 -- Update to 2022.07 RC6 - -* Mon Jun 20 2022 Peter Robinson - 2022.07-0.5.rc5 -- Update to 2022.07 RC5 - -* Sun Jun 12 2022 Peter Robinson - 2022.07-0.4.rc4 -- Update to 2022.07 RC4 -- Some minor Rockchips device fixes - -* Wed May 25 2022 Peter Robinson - 2022.07-0.3.rc3 -- Update to 2022.07 RC3 - -* Sat May 14 2022 Peter Robinson - 2022.07-0.2.rc2 -- Update to 2022.07 RC2 - -* Tue Apr 26 2022 Peter Robinson - 2022.07-0.1.rc1 -- Update to 2022.07 RC1 - -* Mon Apr 04 2022 Peter Robinson - 2022.04-1 -- Update to 2022.04 GA - -* Mon Mar 28 2022 Peter Robinson - 2022.04-0.4.rc5 -- Update to 2022.04 RC5 - -* Tue Mar 08 2022 Peter Robinson - 2022.04-0.3.rc3 -- Update to 2022.04 RC3 -- Enable new Rockchip devices - -* Tue Feb 15 2022 Peter Robinson - 2022.04-0.2.rc2 -- Update to 2022.04 RC2 - -* Wed Feb 02 2022 Peter Robinson - 2022.04-0.1.rc1 -- Update to 2022.04 RC1 - -* Sat Jan 22 2022 Fedora Release Engineering - 2022.01-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Mon Jan 10 2022 Peter Robinson - 2022.01-1 -- Update to 2022.01 - -* Wed Jan 05 2022 Peter Robinson - 2022.01-0.3.rc4 -- Upstream fixes for PHY and UEFI - -* Mon Dec 20 2021 Peter Robinson - 2022.01-0.2.rc4 -- Update to 2022.01 RC4 - -* Mon Nov 15 2021 Peter Robinson - 2022.01-0.1.rc2 -- Update to 2022.01 RC2 - -* Mon Nov 15 2021 Peter Robinson - 2021.10-3 -- Fixes for rk3399 devices - -* Thu Oct 14 2021 Peter Robinson - 2021.10-2 -- Fix booting from MMC for Rockchip 3399 (rhbz #2014182) -- Enable new rk3399 devices (Leez, NanoPi-M4B, NanoPi-4S, NanoPi-T4) (rhbz #2009126) - -* Mon Oct 04 2021 Peter Robinson - 2021.10-1 -- Update to 2021.10 - -* Mon Sep 27 2021 Peter Robinson - 2021.10-0.7.rc5 -- Update to 2021.10 RC5 - -* Wed Sep 15 2021 Peter Robinson - 2021.10-0.6.rc4 -- Update to 2021.10 RC4 -- Proposed fix for RPi MMC clock issue - -* Tue Sep 14 2021 Sahana Prasad - 2021.10-0.6.rc3 -- Rebuilt with OpenSSL 3.0.0 - -* Mon Aug 30 2021 Peter Robinson - 2021.10-0.5.rc3 -- Update to 2021.10 RC3 - -* Tue Aug 24 2021 Peter Robinson - 2021.10-0.4.rc2 -- Fix for Raspberry Pi firmware properties - -* Mon Aug 23 2021 Peter Robinson - 2021.10-0.3.rc2 -- Fix for rockchip SPI - -* Mon Aug 16 2021 Peter Robinson - 2021.10-0.2.rc2 -- Update to 2021.10 RC2 - -* Sun Aug 08 2021 Peter Robinson - 2021.10-0.1.rc1 -- Update to 2021.10 RC1 - -* Thu Jul 22 2021 Peter Robinson - 2021.07-2 -- Fix regression for Rockchip devices running firmware from SPI flash - -* Mon Jul 05 2021 Peter Robinson - 2021.07-1 -- Update to 2021.07 GA - -* Mon Jun 28 2021 Peter Robinson - 2021.07-0.6.rc5 -- Update to 2021.07 RC5 -- Build SPI fash images for ROC-PC-RK3399 - -* Mon Jun 07 2021 Peter Robinson - 2021.07-0.5.rc4 -- Update to 2021.07 RC4 - -* Sat Jun 05 2021 Peter Robinson - 2021.07-0.4.rc3 -- Fix AllWinner devices booting from mSD/MMC - -* Tue May 25 2021 Peter Robinson - 2021.07-0.3.rc3 -- Update to 2021.07 RC3 -- Build against ATF 2.5 GA - -* Thu May 13 2021 Peter Robinson - 2021.07-0.2.rc2 -- Build against new ATF 2.5-rc1 - -* Mon May 10 2021 Peter Robinson - 2021.07-0.1.rc2 -- Update to 2021.07 RC2 - -* Wed Apr 28 2021 Peter Robinson - 2021.04-3 -- Upstream fix for console regression (rhbz 1946278) -- Fix for fallback.efi crash (rhbz 1733817) - -* Wed Apr 21 2021 Peter Robinson - 2021.04-2 -- Revert keyboard console regression change (rhbz 1946278) - -* Sun Apr 18 2021 Peter Robinson - 2021.04-1 -- Update to 2021.04 GA -- Fix DTB load check (rhbz 1946278) -- Build Rockchip SPI support as idbloader.spi -- Fixes for Rockchip devices -- Build Turris Omnia for MMC/SPI/UART - -* Wed Mar 17 2021 Peter Robinson - 2021.04-0.6.rc4 -- Update to 2021.04 RC4 -- Move to upstream fix for SMP on RPi3B and RPi3B+ - -* Sat Mar 13 2021 Peter Robinson - 2021.04-0.5.rc3 -- Fix for SMP on RPi3B and RPi3B+ -- Initial support for Pinephone 3Gb edition - -* Mon Mar 08 2021 Peter Robinson - 2021.04-0.4.rc3 -- Update to 2021.04 RC3 - -* Tue Feb 16 2021 Peter Robinson - 2021.04-0.3.rc2 -- Update to 2021.04 RC2 - -* Mon Feb 15 2021 Dennis Gilmore -- build spi and uart images in addition to mmc for helios4 and clearfog - -* Wed Feb 10 2021 Peter Robinson - 2021.04-0.2.rc1 -- Fixes for network issues on some Allwinner devices - -* Mon Feb 01 2021 Peter Robinson - 2021.04-0.1.rc1 -- Update to 2021.04 RC1 -- Add new upstream devices - -* Wed Jan 27 2021 Fedora Release Engineering - 2021.01-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Mon Jan 11 2021 Peter Robinson - 2021.01-1 -- Update to 2021.01 GA -- Updates for Raspberry Pi 4 Series of devices - -* Tue Jan 5 2021 Peter Robinson - 2021.01-0.5.rc5 -- Update to 2021.01 RC5 - -* Sun Dec 27 2020 Peter Robinson - 2021.01-0.4.rc4 -- Update to 2021.01 RC4 -- Latest RPi-400/CM4 support patch - -* Tue Dec 15 2020 Peter Robinson - 2021.01-0.3.rc3 -- Update to 2021.01 RC3 -- Latest RPi-400/CM4 support patch -- Re-enable previously disabled device support - -* Mon Dec 14 2020 Javier Martinez Canillas - 2021.01-0.2.rc2 -- Fix a "scan_dev_for_efi" not defined error - -* Sun Nov 22 2020 Peter Robinson - 2021.01-0.1.rc2 -- Update to 2021.01 RC2 -- Latest Pinebook Pro display patches -- Initial RPi-400 support patch -- Update Fedora specific patches - -* Sun Nov 8 2020 Peter Robinson - 2020.10-3 -- Fix SPI on Rockchip devices -- Latest Pinebook Pro display patches -- Fix Keyboard and USB-A ports on Pinebook Pro - -* Wed Oct 28 2020 Peter Robinson - 2020.10-2 -- Fix kernel installs for non EBBR systems -- Fix for wired networks on some Allwinner devices - -* Tue Oct 06 2020 Peter Robinson - 2020.10-1 -- Update to 2020.10 - -* Sun Sep 27 2020 Peter Robinson - 2020.10-0.6.rc5 -- Initial support for display output on Pinebook Pro - -* Tue Sep 22 2020 Peter Robinson - 2020.10-0.5.rc5 -- Update to 2020.10 RC5 - -* Wed Sep 09 2020 Peter Robinson - 2020.10-0.4.rc4 -- Update to 2020.10 RC4 - -* Wed Aug 19 2020 Peter Robinson - 2020.10-0.3.rc2 -- Enable a number of new Rockchip devices - -* Mon Aug 10 2020 Peter Robinson - 2020.10-0.2.rc2 -- Update to 2020.10 RC2 - -* Tue Jul 28 2020 Peter Robinson - 2020.10-0.1.rc1 -- 2020.10 RC1 - -* Tue Jul 14 2020 Tom Stellard - 2020.07-2 -- Use make macros -- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro - -* Mon Jul 06 2020 Peter Robinson - 2020.07-1 -- 2020.07 GA - -* Tue Jun 23 2020 Peter Robinson - 2020.07-0.5.rc5 -- 2020.07 RC5 - -* Thu Jun 18 2020 Peter Robinson - 2020.07-0.4.rc4 -- Update various patches to latest upstream - -* Wed Jun 10 2020 Peter Robinson - 2020.07-0.3.rc4 -- 2020.07 RC4 -- Minor updates and other fixes - -* Tue May 12 2020 Peter Robinson - 2020.07-0.2.rc2 -- 2020.07 RC2 -- Minor device updates - -* Wed Apr 29 2020 Peter Robinson - 2020.07-0.1.rc1 -- 2020.07 RC1 - -* Tue Apr 21 2020 Peter Robinson - 2020.04-4 -- Initial support for USB on Rasperry Pi 4 - -* Tue Apr 21 2020 Peter Robinson - 2020.04-3 -- Ship u-boot-rockchip.bin for SPI flash - -* Mon Apr 20 2020 Peter Robinson - 2020.04-2 -- Fix ATF for new aarch64 devices -- Fix Wandboard board detection (rhbz 1825247) -- Fix mSD card on RockPro64 -- Enable (inital) Pinebook Pro - -* Tue Apr 14 2020 Peter Robinson - 2020.04-1 -- 2020.04 - -* Tue Apr 7 2020 Peter Robinson 2020.04-0.7-rc5 -- 2020.04 RC5 - -* Tue Mar 31 2020 Peter Robinson 2020.04-0.6-rc4 -- 2020.04 RC4 -- Updates for NVIDIA Jetson platforms -- Support RNG for random seed for KASLR on some Rockchip devices - -* Thu Mar 26 2020 Peter Robinson 2020.04-0.5-rc3 -- Fix ext4 alignment issue seen on some NXP i.MX devices - -* Wed Feb 26 2020 Peter Robinson 2020.04-0.4-rc3 -- 2020.04 RC3 - -* Thu Feb 13 2020 Peter Robinson 2020.04-0.3-rc2 -- 2020.04 RC2 - -* Sun Feb 2 2020 Peter Robinson 2020.04-0.2-rc1 -- Update genet NIC driver - -* Wed Jan 29 2020 Peter Robinson 2020.04-0.1-rc1 -- 2020.04 RC1 - -* Tue Jan 7 2020 Peter Robinson 2020.01-1 -- 2020.01 From 09ab1870db8190fa69b72e789165433cc9571a7a Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 16 Sep 2024 22:18:24 +0100 Subject: [PATCH 192/271] 2024.10 RC5 --- FUSB302-USB-C-controller-support.patch | 6018 ++++++++++++++++++++++++ sources | 2 +- uboot-tools.spec | 10 +- 3 files changed, 6026 insertions(+), 4 deletions(-) create mode 100644 FUSB302-USB-C-controller-support.patch diff --git a/FUSB302-USB-C-controller-support.patch b/FUSB302-USB-C-controller-support.patch new file mode 100644 index 0000000..a25f8dd --- /dev/null +++ b/FUSB302-USB-C-controller-support.patch @@ -0,0 +1,6018 @@ +From patchwork Thu Sep 5 15:08:37 2024 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sebastian Reichel +X-Patchwork-Id: 1981315 +X-Patchwork-Delegate: ykai007@gmail.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=collabora.com header.i=@collabora.com + header.a=rsa-sha256 header.s=mail header.b=VOvjn+x1; + 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 4X02zx1gZpz1yXY + for ; Fri, 6 Sep 2024 01:18:05 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id E002A88CD2; + Thu, 5 Sep 2024 17:17:16 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=collabora.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=collabora.com header.i=@collabora.com + header.b="VOvjn+x1"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 9ED9788CD2; Thu, 5 Sep 2024 17:17:16 +0200 (CEST) +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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no + version=3.4.2 +Received: from bali.collaboradmins.com (bali.collaboradmins.com + [IPv6:2a01:4f8:201:9162::2]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 8F95B88CC0 + for ; Thu, 5 Sep 2024 17:17:08 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=collabora.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=sebastian.reichel@collabora.com +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; + s=mail; t=1725549428; + bh=GUi0ELUr54qxRL+zUYIh2cpnf8aAbxP3km5z9ihBLiA=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=VOvjn+x1YAGL8uuX8oe/eA1AShGOQ+65YCdPN4UIul65K52PZGC4Rh30foWYR3GYv + ksyxZc+jsHQcN72mVdV3njT/SIGekJFu683r6aomMjm3Mrc+uUUF7QcQdx2QgObWXW + 3RmaT4So9PLApr20wdqN8mqL3PND0cpUJiGoZG18Nu+sX+XJYGTtQ3qo+p00ZjT6TY + TXhYMaIJeqISS7ocTqHwKpWZQ/5uXBBLOuLnlKRVhjHEVg6Ds0DFB8/XFwU24CB0VM + Xutwxqot6qKBLUt/yDrX8upercY5M0tia9Ymno4ezs/mVrRI6ztNPgNmjPUzaBq/T2 + 9q+TUcwqV3v1A== +Received: from jupiter.universe (dyndsl-091-248-189-231.ewe-ip-backbone.de + [91.248.189.231]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) (Authenticated sender: sre) + by bali.collaboradmins.com (Postfix) with ESMTPSA id EC7AC17E1167; + Thu, 5 Sep 2024 17:17:07 +0200 (CEST) +Received: by jupiter.universe (Postfix, from userid 1000) + id 9F52C4800EB; Thu, 05 Sep 2024 17:17:07 +0200 (CEST) +From: Sebastian Reichel +To: Marek Vasut , u-boot@lists.denx.de, + Jonas Karlman , Soeren Moch +Cc: Eugen Hristev , + Tim Harvey , Kever Yang , + Philipp Tomsich , Simon Glass , + Sebastian Reichel +Subject: [PATCH v6 1/6] usb: tcpm: add core framework +Date: Thu, 5 Sep 2024 17:08:37 +0200 +Message-ID: <20240905151707.59101-2-sebastian.reichel@collabora.com> +X-Mailer: git-send-email 2.45.2 +In-Reply-To: <20240905151707.59101-1-sebastian.reichel@collabora.com> +References: <20240905151707.59101-1-sebastian.reichel@collabora.com> +MIME-Version: 1.0 +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 + +This adds TCPM framework in preparation for fusb302 support, which can +handle USB power delivery messages. This is needed to solve issues with +devices, that are running from a USB-C port supporting USB-PD, but not +having a battery. + +Such a device currently boots to the kernel without interacting with +the power-supply at all. If there are no USB-PD message replies within +5 seconds, the power-supply assumes the peripheral is not capable of +USB-PD. It usually takes more than 5 seconds for the system to reach +the kernel and probe the I2C based fusb302 chip driver. Thus the +system always runs into this state. The power-supply's solution to +fix this error state is a hard reset, which involves removing the +power from VBUS. Boards without a battery (or huge capacitors) will +reset at this point resulting in a boot loop. + +This imports the TCPM framework from the kernel. The porting has +originally been done by Rockchip using hardware timers and the Linux +kernel's TCPM code from some years ago. + +I had a look at upgrading to the latest TCPM kernel code, but that +beast became a lot more complex due to adding more USB-C features. +I believe these features are not needed in U-Boot and with multiple +kthreads and hrtimers being involved it is non-trivial to port them. +Instead I worked on stripping down features from the Rockchip port +to an even more basic level. Also the TCPM code has been reworked +to avoid complete use of any timers (Rockchip used SoC specific +hardware timers + IRQ to implement delayed work mechanism). Instead +the delayed state changes are handled directly from the poll loop. + +Note, that (in contrast to the original Rockchip port) the state +machine has the same hard reset quirk, that the kernel has - i.e. +it avoids disabling the CC pin resistors for devices that are not +self-powered. Without that quirk, the Radxa Rock 5B will not just +end up doing a machine reset when a hard reset is triggered, but will +not even recover, because the CPU will loose power and the FUSB302 +will keep this state because of leak voltage arriving through the RX +serial pin (assuming a serial adapter is connected). + +This also includes a 'tcpm' command, which can be used to get +information about the current state and the negotiated voltage +and current. + +Co-developed-by: Wang Jie +Signed-off-by: Wang Jie +Tested-by: Soeren Moch +Signed-off-by: Sebastian Reichel +--- + Makefile | 1 + + cmd/Kconfig | 7 + + cmd/Makefile | 1 + + cmd/tcpm.c | 136 ++ + doc/usage/cmd/tcpm.rst | 66 + + doc/usage/index.rst | 1 + + drivers/usb/Kconfig | 2 + + drivers/usb/tcpm/Kconfig | 8 + + drivers/usb/tcpm/Makefile | 3 + + drivers/usb/tcpm/tcpm-internal.h | 173 +++ + drivers/usb/tcpm/tcpm-uclass.c | 149 ++ + drivers/usb/tcpm/tcpm.c | 2288 ++++++++++++++++++++++++++++++ + include/dm/uclass-id.h | 1 + + include/usb/pd.h | 516 +++++++ + include/usb/tcpm.h | 99 ++ + 15 files changed, 3451 insertions(+) + create mode 100644 cmd/tcpm.c + create mode 100644 doc/usage/cmd/tcpm.rst + create mode 100644 drivers/usb/tcpm/Kconfig + create mode 100644 drivers/usb/tcpm/Makefile + create mode 100644 drivers/usb/tcpm/tcpm-internal.h + create mode 100644 drivers/usb/tcpm/tcpm-uclass.c + create mode 100644 drivers/usb/tcpm/tcpm.c + create mode 100644 include/usb/pd.h + create mode 100644 include/usb/tcpm.h + +diff --git a/Makefile b/Makefile +index 74df5d177c1f..5a581199c170 100644 +--- a/Makefile ++++ b/Makefile +@@ -879,6 +879,7 @@ libs-y += drivers/usb/musb/ + libs-y += drivers/usb/musb-new/ + libs-y += drivers/usb/isp1760/ + libs-y += drivers/usb/phy/ ++libs-y += drivers/usb/tcpm/ + libs-y += drivers/usb/ulpi/ + ifdef CONFIG_POST + libs-y += post/ +diff --git a/cmd/Kconfig b/cmd/Kconfig +index 978f44eda426..7710bee22ace 100644 +--- a/cmd/Kconfig ++++ b/cmd/Kconfig +@@ -221,6 +221,13 @@ config CMD_REGINFO + help + Register dump + ++config CMD_TCPM ++ bool "tcpm" ++ depends on TYPEC_TCPM ++ help ++ Show voltage and current negotiated via USB PD as well as the ++ current state of the Type C Port Manager (TCPM) state machine. ++ + config CMD_TLV_EEPROM + bool "tlv_eeprom" + depends on I2C_EEPROM +diff --git a/cmd/Makefile b/cmd/Makefile +index 87133cc27a8a..bd0b23ef1013 100644 +--- a/cmd/Makefile ++++ b/cmd/Makefile +@@ -172,6 +172,7 @@ obj-$(CONFIG_CMD_SMBIOS) += smbios.o + obj-$(CONFIG_CMD_SMC) += smccc.o + obj-$(CONFIG_CMD_SYSBOOT) += sysboot.o + obj-$(CONFIG_CMD_STACKPROTECTOR_TEST) += stackprot_test.o ++obj-$(CONFIG_CMD_TCPM) += tcpm.o + obj-$(CONFIG_CMD_TEMPERATURE) += temperature.o + obj-$(CONFIG_CMD_TERMINAL) += terminal.o + obj-$(CONFIG_CMD_TIME) += time.o +diff --git a/cmd/tcpm.c b/cmd/tcpm.c +new file mode 100644 +index 000000000000..962cd234a869 +--- /dev/null ++++ b/cmd/tcpm.c +@@ -0,0 +1,136 @@ ++// SPDX-License-Identifier: GPL-2.0+ ++/* ++ * (C) Copyright 2024 Collabora ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#define LIMIT_DEV 32 ++#define LIMIT_PARENT 20 ++ ++static struct udevice *currdev; ++ ++static int do_dev(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) ++{ ++ char *name; ++ int ret = -ENODEV; ++ ++ switch (argc) { ++ case 2: ++ name = argv[1]; ++ ret = tcpm_get(name, &currdev); ++ if (ret) { ++ log_err("Can't get TCPM %s: %d (%s)!\n", name, ret, errno_str(ret)); ++ return CMD_RET_FAILURE; ++ } ++ case 1: ++ if (!currdev) { ++ log_err("TCPM device is not set!\n\n"); ++ return CMD_RET_USAGE; ++ } ++ ++ printf("dev: %d @ %s\n", dev_seq(currdev), currdev->name); ++ } ++ ++ return CMD_RET_SUCCESS; ++} ++ ++static int do_list(struct cmd_tbl *cmdtp, int flag, int argc, ++ char *const argv[]) ++{ ++ struct udevice *dev; ++ int ret, err = 0; ++ ++ printf("| %-*.*s| %-*.*s| %s @ %s\n", ++ LIMIT_DEV, LIMIT_DEV, "Name", ++ LIMIT_PARENT, LIMIT_PARENT, "Parent name", ++ "Parent uclass", "seq"); ++ ++ for (ret = uclass_first_device_check(UCLASS_TCPM, &dev); dev; ++ ret = uclass_next_device_check(&dev)) { ++ if (ret) ++ err = ret; ++ ++ printf("| %-*.*s| %-*.*s| %s @ %d | status: %i\n", ++ LIMIT_DEV, LIMIT_DEV, dev->name, ++ LIMIT_PARENT, LIMIT_PARENT, dev->parent->name, ++ dev_get_uclass_name(dev->parent), dev_seq(dev->parent), ++ ret); ++ } ++ ++ if (err) ++ return CMD_RET_FAILURE; ++ ++ return CMD_RET_SUCCESS; ++} ++ ++int do_print_info(struct udevice *dev) ++{ ++ enum typec_orientation orientation = tcpm_get_orientation(dev); ++ const char *state = tcpm_get_state(dev); ++ int pd_rev = tcpm_get_pd_rev(dev); ++ int mv = tcpm_get_voltage(dev); ++ int ma = tcpm_get_current(dev); ++ enum typec_role pwr_role = tcpm_get_pwr_role(dev); ++ enum typec_data_role data_role = tcpm_get_data_role(dev); ++ bool connected = tcpm_is_connected(dev); ++ ++ if (!connected) { ++ printf("TCPM State: %s\n", state); ++ return 0; ++ } ++ ++ printf("Orientation: %s\n", typec_orientation_name[orientation]); ++ printf("PD Revision: %s\n", typec_pd_rev_name[pd_rev]); ++ printf("Power Role: %s\n", typec_role_name[pwr_role]); ++ printf("Data Role: %s\n", typec_data_role_name[data_role]); ++ printf("Voltage: %2d.%03d V\n", mv / 1000, mv % 1000); ++ printf("Current: %2d.%03d A\n", ma / 1000, ma % 1000); ++ ++ return 0; ++} ++ ++static int do_info(struct cmd_tbl *cmdtp, int flag, int argc, ++ char *const argv[]) ++{ ++ if (!currdev) { ++ printf("First, set the TCPM device!\n"); ++ return CMD_RET_USAGE; ++ } ++ ++ return do_print_info(currdev); ++} ++ ++static struct cmd_tbl subcmd[] = { ++ U_BOOT_CMD_MKENT(dev, 2, 1, do_dev, "", ""), ++ U_BOOT_CMD_MKENT(list, 1, 1, do_list, "", ""), ++ U_BOOT_CMD_MKENT(info, 1, 1, do_info, "", ""), ++}; ++ ++static int do_tcpm(struct cmd_tbl *cmdtp, int flag, int argc, ++ char *const argv[]) ++{ ++ struct cmd_tbl *cmd; ++ ++ argc--; ++ argv++; ++ ++ cmd = find_cmd_tbl(argv[0], subcmd, ARRAY_SIZE(subcmd)); ++ if (!cmd || argc > cmd->maxargs) ++ return CMD_RET_USAGE; ++ ++ return cmd->cmd(cmdtp, flag, argc, argv); ++} ++ ++ /**************************************************/ ++ ++U_BOOT_CMD(tcpm, CONFIG_SYS_MAXARGS, 1, do_tcpm, ++ "TCPM sub-system", ++ "list - list TCPM devices\n" ++ "tcpm dev [name] - show or [set] operating TCPM device\n" ++ "tcpm info - dump information\n" ++); +diff --git a/doc/usage/cmd/tcpm.rst b/doc/usage/cmd/tcpm.rst +new file mode 100644 +index 000000000000..1e8199c0f89c +--- /dev/null ++++ b/doc/usage/cmd/tcpm.rst +@@ -0,0 +1,66 @@ ++.. SPDX-License-Identifier: GPL-2.0+: ++ ++.. index:: ++ single: tcpm (command) ++ ++tcpm command ++============ ++ ++Synopsis ++-------- ++ ++:: ++ ++ tcpm dev [devname] ++ tcpm info ++ tcpm list ++ ++Description ++----------- ++ ++The tcpm command is used to control USB-PD controllers, also known as TypeC Port Manager (TCPM). ++ ++The 'tcpm dev' command shows or set current TCPM device. ++ ++ devname ++ device name to change ++ ++The 'tcpm info' command displays the current state of the device ++ ++The 'tcpm list' command displays the list available devices. ++ ++Examples ++-------- ++ ++The 'tcpm info' command displays device's status: ++:: ++ ++ => tcpm info ++ Orientation: normal ++ PD Revision: rev3 ++ Power Role: sink ++ Data Role: device ++ Voltage: 20.000 V ++ Current: 2.250 A ++ ++The current device can be shown or set via 'tcpm dev' command: ++:: ++ ++ => tcpm dev ++ TCPM device is not set! ++ => tcpm dev usb-typec@22 ++ dev: 0 @ usb-typec@22 ++ => tcpm dev ++ dev: 0 @ usb-typec@22 ++ ++The list of available devices can be shown via 'tcpm list' command: ++:: ++ ++ => tcpm list ++ | Name | Parent name | Parent uclass @ seq ++ | usb-typec@22 | i2c@feac0000 | i2c @ 4 | status: 0 ++ ++Configuration ++------------- ++ ++The tcpm command is only available if CONFIG_CMD_TCPM=y. +diff --git a/doc/usage/index.rst b/doc/usage/index.rst +index 6a218c46b4e4..b4be42f59119 100644 +--- a/doc/usage/index.rst ++++ b/doc/usage/index.rst +@@ -111,6 +111,7 @@ Shell commands + cmd/smbios + cmd/sound + cmd/source ++ cmd/tcpm + cmd/temperature + cmd/tftpput + cmd/trace +diff --git a/drivers/usb/Kconfig b/drivers/usb/Kconfig +index a972d87c7ad4..985d3a9ef7e6 100644 +--- a/drivers/usb/Kconfig ++++ b/drivers/usb/Kconfig +@@ -85,6 +85,8 @@ source "drivers/usb/emul/Kconfig" + + source "drivers/usb/phy/Kconfig" + ++source "drivers/usb/tcpm/Kconfig" ++ + source "drivers/usb/ulpi/Kconfig" + + if USB_HOST +diff --git a/drivers/usb/tcpm/Kconfig b/drivers/usb/tcpm/Kconfig +new file mode 100644 +index 000000000000..55bf8e202b90 +--- /dev/null ++++ b/drivers/usb/tcpm/Kconfig +@@ -0,0 +1,8 @@ ++# SPDX-License-Identifier: GPL-2.0 ++ ++config TYPEC_TCPM ++ tristate "USB Type-C Port Controller Manager" ++ depends on DM ++ help ++ The Type-C Port Controller Manager provides a USB PD and USB Type-C ++ state machine for use with Type-C Port Controllers. +diff --git a/drivers/usb/tcpm/Makefile b/drivers/usb/tcpm/Makefile +new file mode 100644 +index 000000000000..a0f76436f3fd +--- /dev/null ++++ b/drivers/usb/tcpm/Makefile +@@ -0,0 +1,3 @@ ++# SPDX-License-Identifier: GPL-2.0 ++ ++obj-$(CONFIG_TYPEC_TCPM) += tcpm.o tcpm-uclass.o +diff --git a/drivers/usb/tcpm/tcpm-internal.h b/drivers/usb/tcpm/tcpm-internal.h +new file mode 100644 +index 000000000000..561442090027 +--- /dev/null ++++ b/drivers/usb/tcpm/tcpm-internal.h +@@ -0,0 +1,173 @@ ++/* SPDX-License-Identifier: GPL-2.0-or-later */ ++/* ++ * Copyright 2015-2017 Google, Inc ++ * Copyright 2024 Collabora ++ */ ++ ++#ifndef __LINUX_USB_TCPM_INTERNAL_H ++#define __LINUX_USB_TCPM_INTERNAL_H ++ ++#define FOREACH_TCPM_STATE(S) \ ++ S(INVALID_STATE), \ ++ S(TOGGLING), \ ++ S(SRC_UNATTACHED), \ ++ S(SRC_ATTACH_WAIT), \ ++ S(SRC_ATTACHED), \ ++ S(SRC_STARTUP), \ ++ S(SRC_SEND_CAPABILITIES), \ ++ S(SRC_SEND_CAPABILITIES_TIMEOUT), \ ++ S(SRC_NEGOTIATE_CAPABILITIES), \ ++ S(SRC_TRANSITION_SUPPLY), \ ++ S(SRC_READY), \ ++ S(SRC_WAIT_NEW_CAPABILITIES), \ ++ \ ++ S(SNK_UNATTACHED), \ ++ S(SNK_ATTACH_WAIT), \ ++ S(SNK_DEBOUNCED), \ ++ S(SNK_ATTACHED), \ ++ S(SNK_STARTUP), \ ++ S(SNK_DISCOVERY), \ ++ S(SNK_DISCOVERY_DEBOUNCE), \ ++ S(SNK_DISCOVERY_DEBOUNCE_DONE), \ ++ S(SNK_WAIT_CAPABILITIES), \ ++ S(SNK_NEGOTIATE_CAPABILITIES), \ ++ S(SNK_TRANSITION_SINK), \ ++ S(SNK_TRANSITION_SINK_VBUS), \ ++ S(SNK_READY), \ ++ \ ++ S(HARD_RESET_SEND), \ ++ S(HARD_RESET_START), \ ++ S(SRC_HARD_RESET_VBUS_OFF), \ ++ S(SRC_HARD_RESET_VBUS_ON), \ ++ S(SNK_HARD_RESET_SINK_OFF), \ ++ S(SNK_HARD_RESET_WAIT_VBUS), \ ++ S(SNK_HARD_RESET_SINK_ON), \ ++ \ ++ S(SOFT_RESET), \ ++ S(SOFT_RESET_SEND), \ ++ \ ++ S(DR_SWAP_ACCEPT), \ ++ S(DR_SWAP_CHANGE_DR), \ ++ \ ++ S(ERROR_RECOVERY), \ ++ S(PORT_RESET), \ ++ S(PORT_RESET_WAIT_OFF) ++ ++#define GENERATE_TCPM_ENUM(e) e ++#define GENERATE_TCPM_STRING(s) #s ++#define TCPM_POLL_EVENT_TIME_OUT 2000 ++ ++enum tcpm_state { ++ FOREACH_TCPM_STATE(GENERATE_TCPM_ENUM) ++}; ++ ++enum pd_msg_request { ++ PD_MSG_NONE = 0, ++ PD_MSG_CTRL_REJECT, ++ PD_MSG_CTRL_WAIT, ++ PD_MSG_CTRL_NOT_SUPP, ++ PD_MSG_DATA_SINK_CAP, ++ PD_MSG_DATA_SOURCE_CAP, ++}; ++ ++struct tcpm_port { ++ enum typec_port_type typec_type; ++ int typec_prefer_role; ++ ++ enum typec_role vconn_role; ++ enum typec_role pwr_role; ++ enum typec_data_role data_role; ++ ++ struct typec_partner *partner; ++ ++ enum typec_cc_status cc_req; ++ enum typec_cc_status cc1; ++ enum typec_cc_status cc2; ++ enum typec_cc_polarity polarity; ++ ++ bool attached; ++ bool connected; ++ int poll_event_cnt; ++ enum typec_port_type port_type; ++ ++ /* ++ * Set to true when vbus is greater than VSAFE5V min. ++ * Set to false when vbus falls below vSinkDisconnect max threshold. ++ */ ++ bool vbus_present; ++ ++ /* ++ * Set to true when vbus is less than VSAFE0V max. ++ * Set to false when vbus is greater than VSAFE0V max. ++ */ ++ bool vbus_vsafe0v; ++ ++ bool vbus_never_low; ++ bool vbus_source; ++ bool vbus_charge; ++ ++ int try_role; ++ ++ enum pd_msg_request queued_message; ++ ++ enum tcpm_state enter_state; ++ enum tcpm_state prev_state; ++ enum tcpm_state state; ++ enum tcpm_state delayed_state; ++ unsigned long delay_ms; ++ ++ bool state_machine_running; ++ ++ bool tx_complete; ++ enum tcpm_transmit_status tx_status; ++ ++ unsigned int negotiated_rev; ++ unsigned int message_id; ++ unsigned int caps_count; ++ unsigned int hard_reset_count; ++ bool pd_capable; ++ bool explicit_contract; ++ unsigned int rx_msgid; ++ ++ /* Partner capabilities/requests */ ++ u32 sink_request; ++ u32 source_caps[PDO_MAX_OBJECTS]; ++ unsigned int nr_source_caps; ++ u32 sink_caps[PDO_MAX_OBJECTS]; ++ unsigned int nr_sink_caps; ++ ++ /* ++ * whether to wait for the Type-C device to send the DR_SWAP Message flag ++ * For Type-C device with Dual-Role Power and Dual-Role Data, the port side ++ * is used as sink + ufp, then the tcpm framework needs to wait for Type-C ++ * device to initiate DR_swap Message. ++ */ ++ bool wait_dr_swap_message; ++ ++ /* Local capabilities */ ++ u32 src_pdo[PDO_MAX_OBJECTS]; ++ unsigned int nr_src_pdo; ++ u32 snk_pdo[PDO_MAX_OBJECTS]; ++ unsigned int nr_snk_pdo; ++ ++ unsigned int operating_snk_mw; ++ bool update_sink_caps; ++ ++ /* Requested current / voltage to the port partner */ ++ u32 req_current_limit; ++ u32 req_supply_voltage; ++ /* Actual current / voltage limit of the local port */ ++ u32 current_limit; ++ u32 supply_voltage; ++ ++ /* port belongs to a self powered device */ ++ bool self_powered; ++ ++ unsigned long delay_target; ++}; ++ ++extern const char * const tcpm_states[]; ++ ++int tcpm_post_probe(struct udevice *dev); ++ ++#endif +diff --git a/drivers/usb/tcpm/tcpm-uclass.c b/drivers/usb/tcpm/tcpm-uclass.c +new file mode 100644 +index 000000000000..92f9eff1ada6 +--- /dev/null ++++ b/drivers/usb/tcpm/tcpm-uclass.c +@@ -0,0 +1,149 @@ ++// SPDX-License-Identifier: GPL-2.0+ ++/* ++ * Copyright 2024 Collabora Ltd. ++ * ++ * USB Power Delivery protocol stack. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include "tcpm-internal.h" ++ ++int tcpm_get_voltage(struct udevice *dev) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ ++ return port->supply_voltage; ++} ++ ++int tcpm_get_current(struct udevice *dev) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ ++ return port->current_limit; ++} ++ ++enum typec_orientation tcpm_get_orientation(struct udevice *dev) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ ++ switch (port->polarity) { ++ case TYPEC_POLARITY_CC1: ++ return TYPEC_ORIENTATION_NORMAL; ++ case TYPEC_POLARITY_CC2: ++ return TYPEC_ORIENTATION_REVERSE; ++ default: ++ return TYPEC_ORIENTATION_NONE; ++ } ++} ++ ++const char *tcpm_get_state(struct udevice *dev) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ ++ return tcpm_states[port->state]; ++} ++ ++int tcpm_get_pd_rev(struct udevice *dev) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ ++ return port->negotiated_rev; ++} ++ ++enum typec_role tcpm_get_pwr_role(struct udevice *dev) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ ++ return port->pwr_role; ++} ++ ++enum typec_data_role tcpm_get_data_role(struct udevice *dev) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ ++ return port->data_role; ++} ++ ++bool tcpm_is_connected(struct udevice *dev) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ ++ return port->connected; ++} ++ ++int tcpm_get(const char *name, struct udevice **devp) ++{ ++ return uclass_get_device_by_name(UCLASS_TCPM, name, devp); ++} ++ ++static int tcpm_post_bind(struct udevice *dev) ++{ ++ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); ++ const char *cap_str; ++ ofnode node; ++ int ret; ++ ++ /* ++ * USB Power Delivery (USB PD) specification requires, that communication ++ * with a sink happens within roughly 5 seconds. Otherwise the source ++ * might assume that the sink does not support USB PD. Starting to do ++ * USB PD communication after that results in a hard reset, which briefly ++ * removes any power from the USB-C port. ++ * ++ * On systems with alternative power supplies this is not an issue, but ++ * systems, which get soleley powered through their USB-C port will end ++ * up losing their power supply and doing a board level reset. The hard ++ * reset will also restart the 5 second timeout. That means a operating ++ * system initializing USB PD will put the system into a boot loop when ++ * it takes more than 5 seconds from cold boot to the operating system ++ * starting to transmit USB PD messages. ++ * ++ * The issue can be avoided by doing the initial USB PD communication ++ * in U-Boot. The operating system can then re-negotiate by doing a ++ * soft reset, which does not trigger removal of the supply voltage. ++ * ++ * Since the TCPM state machine is quite complex and depending on the ++ * remote side can take quite some time to finish, this tries to limit ++ * the automatic probing to systems probably relying on power being ++ * provided by the USB-C port(s): ++ * ++ * 1. self-powered devices won't reset when the USB-C port looses power ++ * 2. if the power is allowed to go into anything else than sink mode ++ * it is not the only power source ++ */ ++ ret = drvops->get_connector_node(dev, &node); ++ if (ret) ++ return ret; ++ ++ if (ofnode_read_bool(node, "self-powered")) ++ return 0; ++ ++ cap_str = ofnode_read_string(node, "power-role"); ++ if (!cap_str) ++ return -EINVAL; ++ ++ if (strcmp("sink", cap_str)) ++ return 0; ++ ++ /* Do not auto-probe PD controller when PD is disabled */ ++ if (ofnode_read_bool(node, "pd-disable")) ++ return 0; ++ ++ dev_info(dev, "probing Type-C port manager..."); ++ ++ dev_or_flags(dev, DM_FLAG_PROBE_AFTER_BIND); ++ ++ return 0; ++} ++ ++UCLASS_DRIVER(tcpm) = { ++ .id = UCLASS_TCPM, ++ .name = "tcpm", ++ .per_device_plat_auto = sizeof(struct tcpm_port), ++ .post_bind = tcpm_post_bind, ++ .post_probe = tcpm_post_probe, ++}; +diff --git a/drivers/usb/tcpm/tcpm.c b/drivers/usb/tcpm/tcpm.c +new file mode 100644 +index 000000000000..0aee57cb2f4a +--- /dev/null ++++ b/drivers/usb/tcpm/tcpm.c +@@ -0,0 +1,2288 @@ ++// SPDX-License-Identifier: GPL-2.0+ ++/* ++ * Copyright 2015-2017 Google, Inc ++ * ++ * USB Power Delivery protocol stack. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include "tcpm-internal.h" ++ ++DECLARE_GLOBAL_DATA_PTR; ++ ++const char * const tcpm_states[] = { ++ FOREACH_TCPM_STATE(GENERATE_TCPM_STRING) ++}; ++ ++const char * const typec_pd_rev_name[] = { ++ [PD_REV10] = "rev1", ++ [PD_REV20] = "rev2", ++ [PD_REV30] = "rev3", ++}; ++ ++const char * const typec_role_name[] = { ++ [TYPEC_SINK] = "sink", ++ [TYPEC_SOURCE] = "source", ++}; ++ ++const char * const typec_data_role_name[] = { ++ [TYPEC_DEVICE] = "device", ++ [TYPEC_HOST] = "host", ++}; ++ ++const char * const typec_orientation_name[] = { ++ [TYPEC_ORIENTATION_NONE] = "none", ++ [TYPEC_ORIENTATION_NORMAL] = "normal", ++ [TYPEC_ORIENTATION_REVERSE] = "reverse", ++}; ++ ++const char * const typec_cc_status_name[] = { ++ [TYPEC_CC_OPEN] = "open", ++ [TYPEC_CC_RA] = "ra", ++ [TYPEC_CC_RD] = "rd", ++ [TYPEC_CC_RP_DEF] = "rp-def", ++ [TYPEC_CC_RP_1_5] = "rp-1.5", ++ [TYPEC_CC_RP_3_0] = "rp-3.0", ++}; ++ ++static inline bool tcpm_cc_is_sink(enum typec_cc_status cc) ++{ ++ return cc == TYPEC_CC_RP_DEF || ++ cc == TYPEC_CC_RP_1_5 || ++ cc == TYPEC_CC_RP_3_0; ++} ++ ++static inline bool tcpm_port_is_sink(struct tcpm_port *port) ++{ ++ bool cc1_is_snk = tcpm_cc_is_sink(port->cc1); ++ bool cc2_is_snk = tcpm_cc_is_sink(port->cc2); ++ ++ return (cc1_is_snk && !cc2_is_snk) || ++ (cc2_is_snk && !cc1_is_snk); ++} ++ ++static inline bool tcpm_cc_is_source(enum typec_cc_status cc) ++{ ++ return cc == TYPEC_CC_RD; ++} ++ ++static inline bool tcpm_port_is_source(struct tcpm_port *port) ++{ ++ bool cc1_is_src = tcpm_cc_is_source(port->cc1); ++ bool cc2_is_src = tcpm_cc_is_source(port->cc2); ++ ++ return (cc1_is_src && !cc2_is_src) || ++ (cc2_is_src && !cc1_is_src); ++} ++ ++static inline bool tcpm_try_src(struct tcpm_port *port) ++{ ++ return port->try_role == TYPEC_SOURCE && ++ port->port_type == TYPEC_PORT_DRP; ++} ++ ++static inline void tcpm_reset_event_cnt(struct udevice *dev) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ ++ port->poll_event_cnt = 0; ++} ++ ++static enum tcpm_state tcpm_default_state(struct tcpm_port *port) ++{ ++ if (port->port_type == TYPEC_PORT_DRP) { ++ if (port->try_role == TYPEC_SINK) ++ return SNK_UNATTACHED; ++ else if (port->try_role == TYPEC_SOURCE) ++ return SRC_UNATTACHED; ++ } else if (port->port_type == TYPEC_PORT_SNK) { ++ return SNK_UNATTACHED; ++ } ++ return SRC_UNATTACHED; ++} ++ ++static bool tcpm_port_is_disconnected(struct tcpm_port *port) ++{ ++ return (!port->attached && port->cc1 == TYPEC_CC_OPEN && ++ port->cc2 == TYPEC_CC_OPEN) || ++ (port->attached && ((port->polarity == TYPEC_POLARITY_CC1 && ++ port->cc1 == TYPEC_CC_OPEN) || ++ (port->polarity == TYPEC_POLARITY_CC2 && ++ port->cc2 == TYPEC_CC_OPEN))); ++} ++ ++static void tcpm_set_cc(struct udevice *dev, enum typec_cc_status cc) ++{ ++ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ ++ dev_dbg(dev, "TCPM: set cc = %d\n", cc); ++ port->cc_req = cc; ++ drvops->set_cc(dev, cc); ++} ++ ++/* ++ * Determine RP value to set based on maximum current supported ++ * by a port if configured as source. ++ * Returns CC value to report to link partner. ++ */ ++static enum typec_cc_status tcpm_rp_cc(struct tcpm_port *port) ++{ ++ const u32 *src_pdo = port->src_pdo; ++ int nr_pdo = port->nr_src_pdo; ++ int i; ++ ++ /* ++ * Search for first entry with matching voltage. ++ * It should report the maximum supported current. ++ */ ++ for (i = 0; i < nr_pdo; i++) { ++ const u32 pdo = src_pdo[i]; ++ ++ if (pdo_type(pdo) == PDO_TYPE_FIXED && ++ pdo_fixed_voltage(pdo) == 5000) { ++ unsigned int curr = pdo_max_current(pdo); ++ ++ if (curr >= 3000) ++ return TYPEC_CC_RP_3_0; ++ else if (curr >= 1500) ++ return TYPEC_CC_RP_1_5; ++ return TYPEC_CC_RP_DEF; ++ } ++ } ++ ++ return TYPEC_CC_RP_DEF; ++} ++ ++static void tcpm_check_and_run_delayed_work(struct udevice *dev); ++ ++static bool tcpm_transmit_helper(struct udevice *dev) ++{ ++ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ ++ drvops->poll_event(dev); ++ udelay(500); ++ tcpm_check_and_run_delayed_work(dev); ++ return port->tx_complete; ++} ++ ++static int tcpm_pd_transmit(struct udevice *dev, ++ enum tcpm_transmit_type type, ++ const struct pd_message *msg) ++{ ++ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ u32 timeout_us = PD_T_TCPC_TX_TIMEOUT * 1000; ++ bool tx_complete; ++ int ret; ++ ++ if (msg) ++ dev_dbg(dev, "TCPM: PD TX, header: %#x\n", ++ le16_to_cpu(msg->header)); ++ else ++ dev_dbg(dev, "TCPM: PD TX, type: %#x\n", type); ++ ++ port->tx_complete = false; ++ ret = drvops->pd_transmit(dev, type, msg, port->negotiated_rev); ++ if (ret < 0) ++ return ret; ++ ++ /* ++ * At this point we basically need to block until the TCPM controller ++ * returns successful transmission. Since this is usually done using ++ * the generic interrupt status bits, we poll for any events. That ++ * will clear the interrupt status, so we also need to process any ++ * of the incoming events. This means we will do more processing and ++ * thus let's give everything a bit more time. ++ */ ++ timeout_us *= 5; ++ ret = read_poll_timeout(tcpm_transmit_helper, tx_complete, ++ !tx_complete, false, timeout_us, dev); ++ if (ret < 0) { ++ dev_err(dev, "TCPM: PD transmit data failed: %d\n", ret); ++ return ret; ++ } ++ ++ switch (port->tx_status) { ++ case TCPC_TX_SUCCESS: ++ port->message_id = (port->message_id + 1) & PD_HEADER_ID_MASK; ++ break; ++ case TCPC_TX_DISCARDED: ++ ret = -EAGAIN; ++ break; ++ case TCPC_TX_FAILED: ++ default: ++ ret = -EIO; ++ break; ++ } ++ ++ return ret; ++} ++ ++void tcpm_pd_transmit_complete(struct udevice *dev, ++ enum tcpm_transmit_status status) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ ++ dev_dbg(dev, "TCPM: PD TX complete, status: %u\n", status); ++ tcpm_reset_event_cnt(dev); ++ port->tx_status = status; ++ port->tx_complete = true; ++} ++ ++static int tcpm_set_polarity(struct udevice *dev, ++ enum typec_cc_polarity polarity) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); ++ int ret; ++ ++ dev_dbg(dev, "TCPM: set polarity = %d\n", polarity); ++ ++ if (drvops->set_polarity) { ++ ret = drvops->set_polarity(dev, polarity); ++ if (ret < 0) ++ return ret; ++ } ++ ++ port->polarity = polarity; ++ ++ return 0; ++} ++ ++static int tcpm_set_vconn(struct udevice *dev, bool enable) ++{ ++ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ int ret; ++ ++ dev_dbg(dev, "TCPM: set vconn = %d\n", enable); ++ ++ ret = drvops->set_vconn(dev, enable); ++ if (!ret) ++ port->vconn_role = enable ? TYPEC_SOURCE : TYPEC_SINK; ++ ++ return ret; ++} ++ ++static inline u32 tcpm_get_current_limit(struct tcpm_port *port) ++{ ++ switch (port->polarity ? port->cc2 : port->cc1) { ++ case TYPEC_CC_RP_1_5: ++ return 1500; ++ case TYPEC_CC_RP_3_0: ++ return 3000; ++ case TYPEC_CC_RP_DEF: ++ default: ++ return 0; ++ } ++} ++ ++static int tcpm_set_current_limit(struct udevice *dev, u32 max_ma, u32 mv) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ int ret = -EOPNOTSUPP; ++ ++ dev_info(dev, "TCPM: set voltage limit = %u mV\n", mv); ++ dev_info(dev, "TCPM: set current limit = %u mA\n", max_ma); ++ ++ port->supply_voltage = mv; ++ port->current_limit = max_ma; ++ ++ return ret; ++} ++ ++static int tcpm_set_attached_state(struct udevice *dev, bool attached) ++{ ++ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ ++ return drvops->set_roles(dev, attached, port->pwr_role, ++ port->data_role); ++} ++ ++static int tcpm_set_roles(struct udevice *dev, bool attached, ++ enum typec_role role, enum typec_data_role data) ++{ ++ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ int ret; ++ ++ ret = drvops->set_roles(dev, attached, role, data); ++ if (ret < 0) ++ return ret; ++ ++ port->pwr_role = role; ++ port->data_role = data; ++ ++ return 0; ++} ++ ++static int tcpm_pd_send_source_caps(struct udevice *dev) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ struct pd_message msg; ++ int i; ++ ++ memset(&msg, 0, sizeof(msg)); ++ ++ if (!port->nr_src_pdo) { ++ /* No source capabilities defined, sink only */ ++ msg.header = PD_HEADER_LE(PD_CTRL_REJECT, ++ port->pwr_role, ++ port->data_role, ++ port->negotiated_rev, ++ port->message_id, 0); ++ } else { ++ msg.header = PD_HEADER_LE(PD_DATA_SOURCE_CAP, ++ port->pwr_role, ++ port->data_role, ++ port->negotiated_rev, ++ port->message_id, ++ port->nr_src_pdo); ++ } ++ ++ for (i = 0; i < port->nr_src_pdo; i++) ++ msg.payload[i] = cpu_to_le32(port->src_pdo[i]); ++ ++ return tcpm_pd_transmit(dev, TCPC_TX_SOP, &msg); ++} ++ ++static int tcpm_pd_send_sink_caps(struct udevice *dev) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ struct pd_message msg; ++ unsigned int i; ++ ++ memset(&msg, 0, sizeof(msg)); ++ ++ if (!port->nr_snk_pdo) { ++ /* No sink capabilities defined, source only */ ++ msg.header = PD_HEADER_LE(PD_CTRL_REJECT, ++ port->pwr_role, ++ port->data_role, ++ port->negotiated_rev, ++ port->message_id, 0); ++ } else { ++ msg.header = PD_HEADER_LE(PD_DATA_SINK_CAP, ++ port->pwr_role, ++ port->data_role, ++ port->negotiated_rev, ++ port->message_id, ++ port->nr_snk_pdo); ++ } ++ ++ for (i = 0; i < port->nr_snk_pdo; i++) ++ msg.payload[i] = cpu_to_le32(port->snk_pdo[i]); ++ ++ return tcpm_pd_transmit(dev, TCPC_TX_SOP, &msg); ++} ++ ++static void tcpm_state_machine(struct udevice *dev); ++ ++static inline void tcpm_timer_uninit(struct udevice *dev) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ ++ port->delay_target = 0; ++} ++ ++static void tcpm_timer_init(struct udevice *dev, uint32_t ms) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ unsigned long time_us = ms * 1000; ++ ++ port->delay_target = timer_get_us() + time_us; ++} ++ ++static void tcpm_check_and_run_delayed_work(struct udevice *dev) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ ++ /* no delayed state changes scheduled */ ++ if (port->delay_target == 0) ++ return; ++ ++ /* it's not yet time */ ++ if (timer_get_us() < port->delay_target) ++ return; ++ ++ tcpm_timer_uninit(dev); ++ tcpm_state_machine(dev); ++} ++ ++static void mod_tcpm_delayed_work(struct udevice *dev, unsigned int delay_ms) ++{ ++ if (delay_ms) { ++ tcpm_timer_init(dev, delay_ms); ++ } else { ++ tcpm_timer_uninit(dev); ++ tcpm_state_machine(dev); ++ } ++} ++ ++static void tcpm_set_state(struct udevice *dev, enum tcpm_state state, ++ unsigned int delay_ms) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ ++ if (delay_ms) { ++ dev_dbg(dev, "TCPM: pending state change %s -> %s @ %u ms [%s]\n", ++ tcpm_states[port->state], tcpm_states[state], delay_ms, ++ typec_pd_rev_name[port->negotiated_rev]); ++ port->delayed_state = state; ++ mod_tcpm_delayed_work(dev, delay_ms); ++ port->delay_ms = delay_ms; ++ } else { ++ dev_dbg(dev, "TCPM: state change %s -> %s\n", ++ tcpm_states[port->state], tcpm_states[state]); ++ port->delayed_state = INVALID_STATE; ++ port->prev_state = port->state; ++ port->state = state; ++ /* ++ * Don't re-queue the state machine work item if we're currently ++ * in the state machine and we're immediately changing states. ++ * tcpm_state_machine_work() will continue running the state ++ * machine. ++ */ ++ if (!port->state_machine_running) ++ mod_tcpm_delayed_work(dev, 0); ++ } ++} ++ ++static void tcpm_set_state_cond(struct udevice *dev, enum tcpm_state state, ++ unsigned int delay_ms) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ ++ if (port->enter_state == port->state) ++ tcpm_set_state(dev, state, delay_ms); ++ else ++ dev_dbg(dev, "TCPM: skipped %sstate change %s -> %s [%u ms], context state %s [%s]\n", ++ delay_ms ? "delayed " : "", ++ tcpm_states[port->state], tcpm_states[state], ++ delay_ms, tcpm_states[port->enter_state], ++ typec_pd_rev_name[port->negotiated_rev]); ++} ++ ++static void tcpm_queue_message(struct udevice *dev, ++ enum pd_msg_request message) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ ++ port->queued_message = message; ++ mod_tcpm_delayed_work(dev, 0); ++} ++ ++enum pdo_err { ++ PDO_NO_ERR, ++ PDO_ERR_NO_VSAFE5V, ++ PDO_ERR_VSAFE5V_NOT_FIRST, ++ PDO_ERR_PDO_TYPE_NOT_IN_ORDER, ++ PDO_ERR_FIXED_NOT_SORTED, ++ PDO_ERR_VARIABLE_BATT_NOT_SORTED, ++ PDO_ERR_DUPE_PDO, ++ PDO_ERR_PPS_APDO_NOT_SORTED, ++ PDO_ERR_DUPE_PPS_APDO, ++}; ++ ++static const char * const pdo_err_msg[] = { ++ [PDO_ERR_NO_VSAFE5V] = ++ " err: source/sink caps should at least have vSafe5V", ++ [PDO_ERR_VSAFE5V_NOT_FIRST] = ++ " err: vSafe5V Fixed Supply Object Shall always be the first object", ++ [PDO_ERR_PDO_TYPE_NOT_IN_ORDER] = ++ " err: PDOs should be in the following order: Fixed; Battery; Variable", ++ [PDO_ERR_FIXED_NOT_SORTED] = ++ " err: Fixed supply pdos should be in increasing order of their fixed voltage", ++ [PDO_ERR_VARIABLE_BATT_NOT_SORTED] = ++ " err: Variable/Battery supply pdos should be in increasing order of their minimum voltage", ++ [PDO_ERR_DUPE_PDO] = ++ " err: Variable/Batt supply pdos cannot have same min/max voltage", ++ [PDO_ERR_PPS_APDO_NOT_SORTED] = ++ " err: Programmable power supply apdos should be in increasing order of their maximum voltage", ++ [PDO_ERR_DUPE_PPS_APDO] = ++ " err: Programmable power supply apdos cannot have same min/max voltage and max current", ++}; ++ ++static enum pdo_err tcpm_caps_err(struct udevice *dev, const u32 *pdo, ++ unsigned int nr_pdo) ++{ ++ unsigned int i; ++ ++ /* Should at least contain vSafe5v */ ++ if (nr_pdo < 1) ++ return PDO_ERR_NO_VSAFE5V; ++ ++ /* The vSafe5V Fixed Supply Object Shall always be the first object */ ++ if (pdo_type(pdo[0]) != PDO_TYPE_FIXED || ++ pdo_fixed_voltage(pdo[0]) != VSAFE5V) ++ return PDO_ERR_VSAFE5V_NOT_FIRST; ++ ++ for (i = 1; i < nr_pdo; i++) { ++ if (pdo_type(pdo[i]) < pdo_type(pdo[i - 1])) { ++ return PDO_ERR_PDO_TYPE_NOT_IN_ORDER; ++ } else if (pdo_type(pdo[i]) == pdo_type(pdo[i - 1])) { ++ enum pd_pdo_type type = pdo_type(pdo[i]); ++ ++ switch (type) { ++ /* ++ * The remaining Fixed Supply Objects, if ++ * present, shall be sent in voltage order; ++ * lowest to highest. ++ */ ++ case PDO_TYPE_FIXED: ++ if (pdo_fixed_voltage(pdo[i]) <= ++ pdo_fixed_voltage(pdo[i - 1])) ++ return PDO_ERR_FIXED_NOT_SORTED; ++ break; ++ /* ++ * The Battery Supply Objects and Variable ++ * supply, if present shall be sent in Minimum ++ * Voltage order; lowest to highest. ++ */ ++ case PDO_TYPE_VAR: ++ case PDO_TYPE_BATT: ++ if (pdo_min_voltage(pdo[i]) < ++ pdo_min_voltage(pdo[i - 1])) ++ return PDO_ERR_VARIABLE_BATT_NOT_SORTED; ++ else if ((pdo_min_voltage(pdo[i]) == ++ pdo_min_voltage(pdo[i - 1])) && ++ (pdo_max_voltage(pdo[i]) == ++ pdo_max_voltage(pdo[i - 1]))) ++ return PDO_ERR_DUPE_PDO; ++ break; ++ /* ++ * The Programmable Power Supply APDOs, if present, ++ * shall be sent in Maximum Voltage order; ++ * lowest to highest. ++ */ ++ case PDO_TYPE_APDO: ++ if (pdo_apdo_type(pdo[i]) != APDO_TYPE_PPS) ++ break; ++ ++ if (pdo_pps_apdo_max_voltage(pdo[i]) < ++ pdo_pps_apdo_max_voltage(pdo[i - 1])) ++ return PDO_ERR_PPS_APDO_NOT_SORTED; ++ else if (pdo_pps_apdo_min_voltage(pdo[i]) == ++ pdo_pps_apdo_min_voltage(pdo[i - 1]) && ++ pdo_pps_apdo_max_voltage(pdo[i]) == ++ pdo_pps_apdo_max_voltage(pdo[i - 1]) && ++ pdo_pps_apdo_max_current(pdo[i]) == ++ pdo_pps_apdo_max_current(pdo[i - 1])) ++ return PDO_ERR_DUPE_PPS_APDO; ++ break; ++ default: ++ dev_err(dev, "TCPM: Unknown pdo type\n"); ++ } ++ } ++ } ++ ++ return PDO_NO_ERR; ++} ++ ++static int tcpm_validate_caps(struct udevice *dev, const u32 *pdo, ++ unsigned int nr_pdo) ++{ ++ enum pdo_err err_index = tcpm_caps_err(dev, pdo, nr_pdo); ++ ++ if (err_index != PDO_NO_ERR) { ++ dev_err(dev, "TCPM:%s\n", pdo_err_msg[err_index]); ++ return -EINVAL; ++ } ++ ++ return 0; ++} ++ ++/* ++ * PD (data, control) command handling functions ++ */ ++static inline enum tcpm_state ready_state(struct tcpm_port *port) ++{ ++ if (port->pwr_role == TYPEC_SOURCE) ++ return SRC_READY; ++ else ++ return SNK_READY; ++} ++ ++static void tcpm_pd_data_request(struct udevice *dev, ++ const struct pd_message *msg) ++{ ++ enum pd_data_msg_type type = pd_header_type_le(msg->header); ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ unsigned int cnt = pd_header_cnt_le(msg->header); ++ unsigned int rev = pd_header_rev_le(msg->header); ++ unsigned int i; ++ ++ switch (type) { ++ case PD_DATA_SOURCE_CAP: ++ for (i = 0; i < cnt; i++) ++ port->source_caps[i] = le32_to_cpu(msg->payload[i]); ++ ++ port->nr_source_caps = cnt; ++ ++ tcpm_validate_caps(dev, port->source_caps, ++ port->nr_source_caps); ++ ++ /* ++ * Adjust revision in subsequent message headers, as required, ++ * to comply with 6.2.1.1.5 of the USB PD 3.0 spec. We don't ++ * support Rev 1.0 so just do nothing in that scenario. ++ */ ++ if (rev == PD_REV10) ++ break; ++ ++ if (rev < PD_MAX_REV) ++ port->negotiated_rev = rev; ++ ++ if ((pdo_type(port->source_caps[0]) == PDO_TYPE_FIXED) && ++ (port->source_caps[0] & PDO_FIXED_DUAL_ROLE) && ++ (port->source_caps[0] & PDO_FIXED_DATA_SWAP)) { ++ /* Dual role power and data, eg: self-powered Type-C */ ++ port->wait_dr_swap_message = true; ++ } else { ++ /* Non-Dual role power, eg: adapter */ ++ port->wait_dr_swap_message = false; ++ } ++ ++ /* ++ * This message may be received even if VBUS is not ++ * present. This is quite unexpected; see USB PD ++ * specification, sections 8.3.3.6.3.1 and 8.3.3.6.3.2. ++ * However, at the same time, we must be ready to ++ * receive this message and respond to it 15ms after ++ * receiving PS_RDY during power swap operations, no matter ++ * if VBUS is available or not (USB PD specification, ++ * section 6.5.9.2). ++ * So we need to accept the message either way, ++ * but be prepared to keep waiting for VBUS after it was ++ * handled. ++ */ ++ tcpm_set_state(dev, SNK_NEGOTIATE_CAPABILITIES, 0); ++ break; ++ case PD_DATA_REQUEST: ++ /* ++ * Adjust revision in subsequent message headers, as required, ++ * to comply with 6.2.1.1.5 of the USB PD 3.0 spec. We don't ++ * support Rev 1.0 so just reject in that scenario. ++ */ ++ if (rev == PD_REV10) { ++ tcpm_queue_message(dev, PD_MSG_CTRL_REJECT); ++ break; ++ } ++ ++ if (rev < PD_MAX_REV) ++ port->negotiated_rev = rev; ++ ++ port->sink_request = le32_to_cpu(msg->payload[0]); ++ ++ tcpm_set_state(dev, SRC_NEGOTIATE_CAPABILITIES, 0); ++ break; ++ case PD_DATA_SINK_CAP: ++ /* We don't do anything with this at the moment... */ ++ for (i = 0; i < cnt; i++) ++ port->sink_caps[i] = le32_to_cpu(msg->payload[i]); ++ ++ port->nr_sink_caps = cnt; ++ break; ++ default: ++ break; ++ } ++} ++ ++static void tcpm_pd_ctrl_request(struct udevice *dev, ++ const struct pd_message *msg) ++{ ++ enum pd_ctrl_msg_type type = pd_header_type_le(msg->header); ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ enum tcpm_state next_state; ++ ++ switch (type) { ++ case PD_CTRL_GOOD_CRC: ++ case PD_CTRL_PING: ++ break; ++ case PD_CTRL_GET_SOURCE_CAP: ++ switch (port->state) { ++ case SRC_READY: ++ case SNK_READY: ++ tcpm_queue_message(dev, PD_MSG_DATA_SOURCE_CAP); ++ break; ++ default: ++ tcpm_queue_message(dev, PD_MSG_CTRL_REJECT); ++ break; ++ } ++ break; ++ case PD_CTRL_GET_SINK_CAP: ++ switch (port->state) { ++ case SRC_READY: ++ case SNK_READY: ++ tcpm_queue_message(dev, PD_MSG_DATA_SINK_CAP); ++ break; ++ default: ++ tcpm_queue_message(dev, PD_MSG_CTRL_REJECT); ++ break; ++ } ++ break; ++ case PD_CTRL_GOTO_MIN: ++ break; ++ case PD_CTRL_PS_RDY: ++ switch (port->state) { ++ case SNK_TRANSITION_SINK: ++ if (port->vbus_present) { ++ tcpm_set_current_limit(dev, ++ port->req_current_limit, ++ port->req_supply_voltage); ++ port->explicit_contract = true; ++ tcpm_set_state(dev, SNK_READY, 0); ++ } else { ++ /* ++ * Seen after power swap. Keep waiting for VBUS ++ * in a transitional state. ++ */ ++ tcpm_set_state(dev, ++ SNK_TRANSITION_SINK_VBUS, 0); ++ } ++ break; ++ default: ++ break; ++ } ++ break; ++ case PD_CTRL_REJECT: ++ case PD_CTRL_WAIT: ++ case PD_CTRL_NOT_SUPP: ++ switch (port->state) { ++ case SNK_NEGOTIATE_CAPABILITIES: ++ /* USB PD specification, Figure 8-43 */ ++ if (port->explicit_contract) ++ next_state = SNK_READY; ++ else ++ next_state = SNK_WAIT_CAPABILITIES; ++ ++ tcpm_set_state(dev, next_state, 0); ++ break; ++ default: ++ break; ++ } ++ break; ++ case PD_CTRL_ACCEPT: ++ switch (port->state) { ++ case SNK_NEGOTIATE_CAPABILITIES: ++ tcpm_set_state(dev, SNK_TRANSITION_SINK, 0); ++ break; ++ case SOFT_RESET_SEND: ++ port->message_id = 0; ++ port->rx_msgid = -1; ++ if (port->pwr_role == TYPEC_SOURCE) ++ next_state = SRC_SEND_CAPABILITIES; ++ else ++ next_state = SNK_WAIT_CAPABILITIES; ++ tcpm_set_state(dev, next_state, 0); ++ break; ++ default: ++ break; ++ } ++ break; ++ case PD_CTRL_SOFT_RESET: ++ tcpm_set_state(dev, SOFT_RESET, 0); ++ break; ++ case PD_CTRL_DR_SWAP: ++ if (port->port_type != TYPEC_PORT_DRP) { ++ tcpm_queue_message(dev, PD_MSG_CTRL_REJECT); ++ break; ++ } ++ /* ++ * 6.3.9: If an alternate mode is active, a request to swap ++ * alternate modes shall trigger a port reset. ++ */ ++ switch (port->state) { ++ case SRC_READY: ++ case SNK_READY: ++ tcpm_set_state(dev, DR_SWAP_ACCEPT, 0); ++ break; ++ default: ++ tcpm_queue_message(dev, PD_MSG_CTRL_WAIT); ++ break; ++ } ++ break; ++ case PD_CTRL_PR_SWAP: ++ case PD_CTRL_VCONN_SWAP: ++ case PD_CTRL_GET_SOURCE_CAP_EXT: ++ case PD_CTRL_GET_STATUS: ++ case PD_CTRL_FR_SWAP: ++ case PD_CTRL_GET_PPS_STATUS: ++ case PD_CTRL_GET_COUNTRY_CODES: ++ /* Currently not supported */ ++ dev_err(dev, "TCPM: Currently not supported type %#x\n", type); ++ tcpm_queue_message(dev, PD_MSG_CTRL_NOT_SUPP); ++ break; ++ default: ++ dev_err(dev, "TCPM: Unrecognized ctrl message type %#x\n", type); ++ break; ++ } ++} ++ ++static void tcpm_pd_rx_handler(struct udevice *dev, ++ const struct pd_message *msg) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ unsigned int cnt = pd_header_cnt_le(msg->header); ++ bool remote_is_host, local_is_host; ++ ++ dev_dbg(dev, "TCPM: PD RX, header: %#x [%d]\n", ++ le16_to_cpu(msg->header), port->attached); ++ ++ if (port->attached) { ++ enum pd_ctrl_msg_type type = pd_header_type_le(msg->header); ++ unsigned int msgid = pd_header_msgid_le(msg->header); ++ ++ /* ++ * USB PD standard, 6.6.1.2: ++ * "... if MessageID value in a received Message is the ++ * same as the stored value, the receiver shall return a ++ * GoodCRC Message with that MessageID value and drop ++ * the Message (this is a retry of an already received ++ * Message). Note: this shall not apply to the Soft_Reset ++ * Message which always has a MessageID value of zero." ++ */ ++ if (msgid == port->rx_msgid && type != PD_CTRL_SOFT_RESET) ++ return; ++ port->rx_msgid = msgid; ++ ++ /* ++ * If both ends believe to be DFP/host, we have a data role ++ * mismatch. ++ */ ++ remote_is_host = !!(le16_to_cpu(msg->header) & PD_HEADER_DATA_ROLE); ++ local_is_host = port->data_role == TYPEC_HOST; ++ if (remote_is_host == local_is_host) { ++ dev_err(dev, "TCPM: data role mismatch, initiating error recovery\n"); ++ tcpm_set_state(dev, ERROR_RECOVERY, 0); ++ } else { ++ if (cnt) ++ tcpm_pd_data_request(dev, msg); ++ else ++ tcpm_pd_ctrl_request(dev, msg); ++ } ++ } ++} ++ ++void tcpm_pd_receive(struct udevice *dev, const struct pd_message *msg) ++{ ++ tcpm_reset_event_cnt(dev); ++ tcpm_pd_rx_handler(dev, msg); ++} ++ ++static int tcpm_pd_send_control(struct udevice *dev, ++ enum pd_ctrl_msg_type type) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ struct pd_message msg; ++ ++ memset(&msg, 0, sizeof(msg)); ++ msg.header = PD_HEADER_LE(type, port->pwr_role, ++ port->data_role, ++ port->negotiated_rev, ++ port->message_id, 0); ++ ++ return tcpm_pd_transmit(dev, TCPC_TX_SOP, &msg); ++} ++ ++/* ++ * Send queued message without affecting state. ++ * Return true if state machine should go back to sleep, ++ * false otherwise. ++ */ ++static bool tcpm_send_queued_message(struct udevice *dev) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ enum pd_msg_request queued_message; ++ int max_messages = 100; ++ ++ do { ++ queued_message = port->queued_message; ++ port->queued_message = PD_MSG_NONE; ++ max_messages--; ++ ++ switch (queued_message) { ++ case PD_MSG_CTRL_WAIT: ++ tcpm_pd_send_control(dev, PD_CTRL_WAIT); ++ break; ++ case PD_MSG_CTRL_REJECT: ++ tcpm_pd_send_control(dev, PD_CTRL_REJECT); ++ break; ++ case PD_MSG_CTRL_NOT_SUPP: ++ tcpm_pd_send_control(dev, PD_CTRL_NOT_SUPP); ++ break; ++ case PD_MSG_DATA_SINK_CAP: ++ tcpm_pd_send_sink_caps(dev); ++ break; ++ case PD_MSG_DATA_SOURCE_CAP: ++ tcpm_pd_send_source_caps(dev); ++ break; ++ default: ++ break; ++ } ++ } while (max_messages > 0 && port->queued_message != PD_MSG_NONE); ++ ++ if (!max_messages) ++ dev_err(dev, "Aborted sending of too many queued messages\n"); ++ ++ return false; ++} ++ ++static int tcpm_pd_check_request(struct udevice *dev) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ u32 pdo, rdo = port->sink_request; ++ unsigned int max, op, pdo_max, index; ++ enum pd_pdo_type type; ++ ++ index = rdo_index(rdo); ++ if (!index || index > port->nr_src_pdo) ++ return -EINVAL; ++ ++ pdo = port->src_pdo[index - 1]; ++ type = pdo_type(pdo); ++ switch (type) { ++ case PDO_TYPE_FIXED: ++ case PDO_TYPE_VAR: ++ max = rdo_max_current(rdo); ++ op = rdo_op_current(rdo); ++ pdo_max = pdo_max_current(pdo); ++ ++ if (op > pdo_max) ++ return -EINVAL; ++ if (max > pdo_max && !(rdo & RDO_CAP_MISMATCH)) ++ return -EINVAL; ++ ++ if (type == PDO_TYPE_FIXED) ++ dev_dbg(dev, "TCPM: Requested %u mV, %u mA for %u / %u mA\n", ++ pdo_fixed_voltage(pdo), pdo_max, op, max); ++ else ++ dev_dbg(dev, "TCPM: Requested %u -> %u mV, %u mA for %u / %u mA\n", ++ pdo_min_voltage(pdo), pdo_max_voltage(pdo), ++ pdo_max, op, max); ++ break; ++ case PDO_TYPE_BATT: ++ max = rdo_max_power(rdo); ++ op = rdo_op_power(rdo); ++ pdo_max = pdo_max_power(pdo); ++ ++ if (op > pdo_max) ++ return -EINVAL; ++ if (max > pdo_max && !(rdo & RDO_CAP_MISMATCH)) ++ return -EINVAL; ++ dev_info(dev, "TCPM: Requested %u -> %u mV, %u mW for %u / %u mW\n", ++ pdo_min_voltage(pdo), pdo_max_voltage(pdo), ++ pdo_max, op, max); ++ break; ++ default: ++ return -EINVAL; ++ } ++ ++ return 0; ++} ++ ++#define min_power(x, y) min(pdo_max_power(x), pdo_max_power(y)) ++#define min_current(x, y) min(pdo_max_current(x), pdo_max_current(y)) ++ ++static int tcpm_pd_select_pdo(struct udevice *dev, int *sink_pdo, ++ int *src_pdo) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ unsigned int i, j, max_src_mv = 0, min_src_mv = 0, max_mw = 0, ++ max_mv = 0, src_mw = 0, src_ma = 0, max_snk_mv = 0, ++ min_snk_mv = 0; ++ int ret = -EINVAL; ++ ++ /* ++ * Select the source PDO providing the most power which has a ++ * matchig sink cap. ++ */ ++ for (i = 0; i < port->nr_source_caps; i++) { ++ u32 pdo = port->source_caps[i]; ++ enum pd_pdo_type type = pdo_type(pdo); ++ ++ switch (type) { ++ case PDO_TYPE_FIXED: ++ max_src_mv = pdo_fixed_voltage(pdo); ++ min_src_mv = max_src_mv; ++ break; ++ case PDO_TYPE_BATT: ++ case PDO_TYPE_VAR: ++ max_src_mv = pdo_max_voltage(pdo); ++ min_src_mv = pdo_min_voltage(pdo); ++ break; ++ case PDO_TYPE_APDO: ++ continue; ++ default: ++ dev_err(dev, "TCPM: Invalid source PDO type, ignoring\n"); ++ continue; ++ } ++ ++ switch (type) { ++ case PDO_TYPE_FIXED: ++ case PDO_TYPE_VAR: ++ src_ma = pdo_max_current(pdo); ++ src_mw = src_ma * min_src_mv / 1000; ++ break; ++ case PDO_TYPE_BATT: ++ src_mw = pdo_max_power(pdo); ++ break; ++ case PDO_TYPE_APDO: ++ continue; ++ default: ++ dev_err(dev, "TCPM: Invalid source PDO type, ignoring\n"); ++ continue; ++ } ++ ++ for (j = 0; j < port->nr_snk_pdo; j++) { ++ pdo = port->snk_pdo[j]; ++ ++ switch (pdo_type(pdo)) { ++ case PDO_TYPE_FIXED: ++ max_snk_mv = pdo_fixed_voltage(pdo); ++ min_snk_mv = max_snk_mv; ++ break; ++ case PDO_TYPE_BATT: ++ case PDO_TYPE_VAR: ++ max_snk_mv = pdo_max_voltage(pdo); ++ min_snk_mv = pdo_min_voltage(pdo); ++ break; ++ case PDO_TYPE_APDO: ++ continue; ++ default: ++ dev_err(dev, "TCPM: Invalid sink PDO type, ignoring\n"); ++ continue; ++ } ++ ++ if (max_src_mv <= max_snk_mv && min_src_mv >= min_snk_mv) { ++ /* Prefer higher voltages if available */ ++ if ((src_mw == max_mw && min_src_mv > max_mv) || ++ src_mw > max_mw) { ++ *src_pdo = i; ++ *sink_pdo = j; ++ max_mw = src_mw; ++ max_mv = min_src_mv; ++ ret = 0; ++ } ++ } ++ } ++ } ++ ++ return ret; ++} ++ ++static int tcpm_pd_build_request(struct udevice *dev, u32 *rdo) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ unsigned int mv, ma, mw, flags; ++ unsigned int max_ma, max_mw; ++ enum pd_pdo_type type; ++ u32 pdo, matching_snk_pdo; ++ int src_pdo_index = 0; ++ int snk_pdo_index = 0; ++ int ret; ++ ++ ret = tcpm_pd_select_pdo(dev, &snk_pdo_index, &src_pdo_index); ++ if (ret < 0) ++ return ret; ++ ++ pdo = port->source_caps[src_pdo_index]; ++ matching_snk_pdo = port->snk_pdo[snk_pdo_index]; ++ type = pdo_type(pdo); ++ ++ switch (type) { ++ case PDO_TYPE_FIXED: ++ mv = pdo_fixed_voltage(pdo); ++ break; ++ case PDO_TYPE_BATT: ++ case PDO_TYPE_VAR: ++ mv = pdo_min_voltage(pdo); ++ break; ++ default: ++ dev_err(dev, "TCPM: Invalid PDO selected!\n"); ++ return -EINVAL; ++ } ++ ++ /* Select maximum available current within the sink pdo's limit */ ++ if (type == PDO_TYPE_BATT) { ++ mw = min_power(pdo, matching_snk_pdo); ++ ma = 1000 * mw / mv; ++ } else { ++ ma = min_current(pdo, matching_snk_pdo); ++ mw = ma * mv / 1000; ++ } ++ ++ flags = RDO_USB_COMM | RDO_NO_SUSPEND; ++ ++ /* Set mismatch bit if offered power is less than operating power */ ++ max_ma = ma; ++ max_mw = mw; ++ if (mw < port->operating_snk_mw) { ++ flags |= RDO_CAP_MISMATCH; ++ if (type == PDO_TYPE_BATT && ++ (pdo_max_power(matching_snk_pdo) > pdo_max_power(pdo))) ++ max_mw = pdo_max_power(matching_snk_pdo); ++ else if (pdo_max_current(matching_snk_pdo) > ++ pdo_max_current(pdo)) ++ max_ma = pdo_max_current(matching_snk_pdo); ++ } ++ ++ dev_dbg(dev, "TCPM: cc=%d cc1=%d cc2=%d vbus=%d vconn=%s polarity=%d\n", ++ port->cc_req, port->cc1, port->cc2, port->vbus_source, ++ port->vconn_role == TYPEC_SOURCE ? "source" : "sink", ++ port->polarity); ++ ++ if (type == PDO_TYPE_BATT) { ++ *rdo = RDO_BATT(src_pdo_index + 1, mw, max_mw, flags); ++ ++ dev_info(dev, "TCPM: requesting PDO %d: %u mV, %u mW%s\n", ++ src_pdo_index, mv, mw, ++ flags & RDO_CAP_MISMATCH ? " [mismatch]" : ""); ++ } else { ++ *rdo = RDO_FIXED(src_pdo_index + 1, ma, max_ma, flags); ++ ++ dev_info(dev, "TCPM: requesting PDO %d: %u mV, %u mA%s\n", ++ src_pdo_index, mv, ma, ++ flags & RDO_CAP_MISMATCH ? " [mismatch]" : ""); ++ } ++ ++ port->req_current_limit = ma; ++ port->req_supply_voltage = mv; ++ ++ return 0; ++} ++ ++static int tcpm_pd_send_request(struct udevice *dev) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ struct pd_message msg; ++ int ret; ++ u32 rdo; ++ ++ ret = tcpm_pd_build_request(dev, &rdo); ++ if (ret < 0) ++ return ret; ++ ++ memset(&msg, 0, sizeof(msg)); ++ msg.header = PD_HEADER_LE(PD_DATA_REQUEST, ++ port->pwr_role, ++ port->data_role, ++ port->negotiated_rev, ++ port->message_id, 1); ++ msg.payload[0] = cpu_to_le32(rdo); ++ ++ return tcpm_pd_transmit(dev, TCPC_TX_SOP, &msg); ++} ++ ++static int tcpm_set_vbus(struct udevice *dev, bool enable) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); ++ int ret; ++ ++ if (enable && port->vbus_charge) ++ return -EINVAL; ++ ++ dev_dbg(dev, "TCPM: set vbus = %d charge = %d\n", ++ enable, port->vbus_charge); ++ ++ ret = drvops->set_vbus(dev, enable, port->vbus_charge); ++ if (ret < 0) ++ return ret; ++ ++ port->vbus_source = enable; ++ return 0; ++} ++ ++static int tcpm_set_charge(struct udevice *dev, bool charge) ++{ ++ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ int ret; ++ ++ if (charge && port->vbus_source) ++ return -EINVAL; ++ ++ if (charge != port->vbus_charge) { ++ dev_dbg(dev, "TCPM: set vbus = %d charge = %d\n", ++ port->vbus_source, charge); ++ ret = drvops->set_vbus(dev, port->vbus_source, ++ charge); ++ if (ret < 0) ++ return ret; ++ } ++ port->vbus_charge = charge; ++ return 0; ++} ++ ++static bool tcpm_start_toggling(struct udevice *dev, enum typec_cc_status cc) ++{ ++ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ int ret; ++ ++ if (!drvops->start_toggling) ++ return false; ++ ++ dev_dbg(dev, "TCPM: Start toggling\n"); ++ ret = drvops->start_toggling(dev, port->port_type, cc); ++ return ret == 0; ++} ++ ++static int tcpm_init_vbus(struct udevice *dev) ++{ ++ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ int ret; ++ ++ ret = drvops->set_vbus(dev, false, false); ++ port->vbus_source = false; ++ port->vbus_charge = false; ++ return ret; ++} ++ ++static int tcpm_init_vconn(struct udevice *dev) ++{ ++ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ int ret; ++ ++ ret = drvops->set_vconn(dev, false); ++ port->vconn_role = TYPEC_SINK; ++ return ret; ++} ++ ++static inline void tcpm_typec_connect(struct tcpm_port *port) ++{ ++ if (!port->connected) ++ port->connected = true; ++} ++ ++static int tcpm_src_attach(struct udevice *dev) ++{ ++ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ enum typec_cc_polarity polarity = ++ port->cc2 == TYPEC_CC_RD ? TYPEC_POLARITY_CC2 ++ : TYPEC_POLARITY_CC1; ++ int ret; ++ ++ if (port->attached) ++ return 0; ++ ++ ret = tcpm_set_polarity(dev, polarity); ++ if (ret < 0) ++ return ret; ++ ++ ret = tcpm_set_roles(dev, true, TYPEC_SOURCE, TYPEC_HOST); ++ if (ret < 0) ++ return ret; ++ ++ ret = drvops->set_pd_rx(dev, true); ++ if (ret < 0) ++ goto out_disable_mux; ++ ++ /* ++ * USB Type-C specification, version 1.2, ++ * chapter 4.5.2.2.8.1 (Attached.SRC Requirements) ++ * Enable VCONN only if the non-RD port is set to RA. ++ */ ++ if ((polarity == TYPEC_POLARITY_CC1 && port->cc2 == TYPEC_CC_RA) || ++ (polarity == TYPEC_POLARITY_CC2 && port->cc1 == TYPEC_CC_RA)) { ++ ret = tcpm_set_vconn(dev, true); ++ if (ret < 0) ++ goto out_disable_pd; ++ } ++ ++ ret = tcpm_set_vbus(dev, true); ++ if (ret < 0) ++ goto out_disable_vconn; ++ ++ port->pd_capable = false; ++ ++ port->partner = NULL; ++ ++ port->attached = true; ++ ++ return 0; ++ ++out_disable_vconn: ++ tcpm_set_vconn(dev, false); ++out_disable_pd: ++ drvops->set_pd_rx(dev, false); ++out_disable_mux: ++ dev_err(dev, "TCPM: CC connected in %s as DFP\n", ++ polarity ? "CC2" : "CC1"); ++ return 0; ++} ++ ++static inline void tcpm_typec_disconnect(struct tcpm_port *port) ++{ ++ if (port->connected) { ++ port->partner = NULL; ++ port->connected = false; ++ } ++} ++ ++static void tcpm_reset_port(struct udevice *dev) ++{ ++ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ ++ tcpm_timer_uninit(dev); ++ tcpm_typec_disconnect(port); ++ tcpm_reset_event_cnt(dev); ++ port->wait_dr_swap_message = false; ++ port->attached = false; ++ port->pd_capable = false; ++ ++ /* ++ * First Rx ID should be 0; set this to a sentinel of -1 so that ++ * we can check tcpm_pd_rx_handler() if we had seen it before. ++ */ ++ port->rx_msgid = -1; ++ ++ drvops->set_pd_rx(dev, false); ++ tcpm_init_vbus(dev); /* also disables charging */ ++ tcpm_init_vconn(dev); ++ tcpm_set_current_limit(dev, 0, 0); ++ tcpm_set_polarity(dev, TYPEC_POLARITY_CC1); ++ tcpm_set_attached_state(dev, false); ++ port->nr_sink_caps = 0; ++} ++ ++static void tcpm_detach(struct udevice *dev) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ ++ if (tcpm_port_is_disconnected(port)) ++ port->hard_reset_count = 0; ++ ++ if (!port->attached) ++ return; ++ ++ tcpm_reset_port(dev); ++} ++ ++static void tcpm_src_detach(struct udevice *dev) ++{ ++ tcpm_detach(dev); ++} ++ ++static int tcpm_snk_attach(struct udevice *dev) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ int ret; ++ ++ if (port->attached) ++ return 0; ++ ++ ret = tcpm_set_polarity(dev, port->cc2 != TYPEC_CC_OPEN ? ++ TYPEC_POLARITY_CC2 : TYPEC_POLARITY_CC1); ++ if (ret < 0) ++ return ret; ++ ++ ret = tcpm_set_roles(dev, true, TYPEC_SINK, TYPEC_DEVICE); ++ if (ret < 0) ++ return ret; ++ ++ port->pd_capable = false; ++ ++ port->partner = NULL; ++ ++ port->attached = true; ++ dev_info(dev, "TCPM: CC connected in %s as UFP\n", ++ port->cc1 != TYPEC_CC_OPEN ? "CC1" : "CC2"); ++ ++ return 0; ++} ++ ++static void tcpm_snk_detach(struct udevice *dev) ++{ ++ tcpm_detach(dev); ++} ++ ++static inline enum tcpm_state hard_reset_state(struct tcpm_port *port) ++{ ++ if (port->hard_reset_count < PD_N_HARD_RESET_COUNT) ++ return HARD_RESET_SEND; ++ if (port->pd_capable) ++ return ERROR_RECOVERY; ++ if (port->pwr_role == TYPEC_SOURCE) ++ return SRC_UNATTACHED; ++ if (port->state == SNK_WAIT_CAPABILITIES) ++ return SNK_READY; ++ return SNK_UNATTACHED; ++} ++ ++static inline enum tcpm_state unattached_state(struct tcpm_port *port) ++{ ++ if (port->port_type == TYPEC_PORT_DRP) { ++ if (port->pwr_role == TYPEC_SOURCE) ++ return SRC_UNATTACHED; ++ else ++ return SNK_UNATTACHED; ++ } else if (port->port_type == TYPEC_PORT_SRC) { ++ return SRC_UNATTACHED; ++ } ++ ++ return SNK_UNATTACHED; ++} ++ ++static void run_state_machine(struct udevice *dev) ++{ ++ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ int ret; ++ ++ port->enter_state = port->state; ++ switch (port->state) { ++ case TOGGLING: ++ break; ++ /* SRC states */ ++ case SRC_UNATTACHED: ++ tcpm_src_detach(dev); ++ if (tcpm_start_toggling(dev, tcpm_rp_cc(port))) { ++ tcpm_set_state(dev, TOGGLING, 0); ++ break; ++ } ++ tcpm_set_cc(dev, tcpm_rp_cc(port)); ++ if (port->port_type == TYPEC_PORT_DRP) ++ tcpm_set_state(dev, SNK_UNATTACHED, PD_T_DRP_SNK); ++ break; ++ case SRC_ATTACH_WAIT: ++ if (tcpm_port_is_source(port)) ++ tcpm_set_state(dev, SRC_ATTACHED, PD_T_CC_DEBOUNCE); ++ break; ++ ++ case SRC_ATTACHED: ++ ret = tcpm_src_attach(dev); ++ /* ++ * Currently, vbus control is not implemented, ++ * and the SRC detection process cannot be fully implemented. ++ */ ++ tcpm_set_state(dev, SRC_READY, 0); ++ break; ++ case SRC_STARTUP: ++ port->caps_count = 0; ++ port->negotiated_rev = PD_MAX_REV; ++ port->message_id = 0; ++ port->rx_msgid = -1; ++ port->explicit_contract = false; ++ tcpm_set_state(dev, SRC_SEND_CAPABILITIES, 0); ++ break; ++ case SRC_SEND_CAPABILITIES: ++ port->caps_count++; ++ if (port->caps_count > PD_N_CAPS_COUNT) { ++ tcpm_set_state(dev, SRC_READY, 0); ++ break; ++ } ++ ret = tcpm_pd_send_source_caps(dev); ++ if (ret < 0) { ++ tcpm_set_state(dev, SRC_SEND_CAPABILITIES, ++ PD_T_SEND_SOURCE_CAP); ++ } else { ++ /* ++ * Per standard, we should clear the reset counter here. ++ * However, that can result in state machine hang-ups. ++ * Reset it only in READY state to improve stability. ++ */ ++ /* port->hard_reset_count = 0; */ ++ port->caps_count = 0; ++ port->pd_capable = true; ++ tcpm_set_state_cond(dev, SRC_SEND_CAPABILITIES_TIMEOUT, ++ PD_T_SEND_SOURCE_CAP); ++ } ++ break; ++ case SRC_SEND_CAPABILITIES_TIMEOUT: ++ /* ++ * Error recovery for a PD_DATA_SOURCE_CAP reply timeout. ++ * ++ * PD 2.0 sinks are supposed to accept src-capabilities with a ++ * 3.0 header and simply ignore any src PDOs which the sink does ++ * not understand such as PPS but some 2.0 sinks instead ignore ++ * the entire PD_DATA_SOURCE_CAP message, causing contract ++ * negotiation to fail. ++ * ++ * After PD_N_HARD_RESET_COUNT hard-reset attempts, we try ++ * sending src-capabilities with a lower PD revision to ++ * make these broken sinks work. ++ */ ++ if (port->hard_reset_count < PD_N_HARD_RESET_COUNT) { ++ tcpm_set_state(dev, HARD_RESET_SEND, 0); ++ } else if (port->negotiated_rev > PD_REV20) { ++ port->negotiated_rev--; ++ port->hard_reset_count = 0; ++ tcpm_set_state(dev, SRC_SEND_CAPABILITIES, 0); ++ } else { ++ tcpm_set_state(dev, hard_reset_state(port), 0); ++ } ++ break; ++ case SRC_NEGOTIATE_CAPABILITIES: ++ ret = tcpm_pd_check_request(dev); ++ if (ret < 0) { ++ tcpm_pd_send_control(dev, PD_CTRL_REJECT); ++ if (!port->explicit_contract) { ++ tcpm_set_state(dev, ++ SRC_WAIT_NEW_CAPABILITIES, 0); ++ } else { ++ tcpm_set_state(dev, SRC_READY, 0); ++ } ++ } else { ++ tcpm_pd_send_control(dev, PD_CTRL_ACCEPT); ++ tcpm_set_state(dev, SRC_TRANSITION_SUPPLY, ++ PD_T_SRC_TRANSITION); ++ } ++ break; ++ case SRC_TRANSITION_SUPPLY: ++ /* XXX: regulator_set_voltage(vbus, ...) */ ++ tcpm_pd_send_control(dev, PD_CTRL_PS_RDY); ++ port->explicit_contract = true; ++ tcpm_set_state_cond(dev, SRC_READY, 0); ++ break; ++ case SRC_READY: ++ port->hard_reset_count = 0; ++ ++ tcpm_typec_connect(port); ++ break; ++ case SRC_WAIT_NEW_CAPABILITIES: ++ /* Nothing to do... */ ++ break; ++ ++ /* SNK states */ ++ case SNK_UNATTACHED: ++ tcpm_snk_detach(dev); ++ if (tcpm_start_toggling(dev, TYPEC_CC_RD)) { ++ tcpm_set_state(dev, TOGGLING, 0); ++ break; ++ } ++ tcpm_set_cc(dev, TYPEC_CC_RD); ++ if (port->port_type == TYPEC_PORT_DRP) ++ tcpm_set_state(dev, SRC_UNATTACHED, PD_T_DRP_SRC); ++ break; ++ case SNK_ATTACH_WAIT: ++ if ((port->cc1 == TYPEC_CC_OPEN && ++ port->cc2 != TYPEC_CC_OPEN) || ++ (port->cc1 != TYPEC_CC_OPEN && ++ port->cc2 == TYPEC_CC_OPEN)) ++ tcpm_set_state(dev, SNK_DEBOUNCED, ++ PD_T_CC_DEBOUNCE); ++ else if (tcpm_port_is_disconnected(port)) ++ tcpm_set_state(dev, SNK_UNATTACHED, ++ PD_T_CC_DEBOUNCE); ++ break; ++ case SNK_DEBOUNCED: ++ if (tcpm_port_is_disconnected(port)) ++ tcpm_set_state(dev, SNK_UNATTACHED, PD_T_PD_DEBOUNCE); ++ else if (port->vbus_present) ++ tcpm_set_state(dev, SNK_ATTACHED, 0); ++ else ++ /* Wait for VBUS, but not forever */ ++ tcpm_set_state(dev, PORT_RESET, PD_T_PS_SOURCE_ON); ++ break; ++ case SNK_ATTACHED: ++ ret = tcpm_snk_attach(dev); ++ if (ret < 0) ++ tcpm_set_state(dev, SNK_UNATTACHED, 0); ++ else ++ tcpm_set_state(dev, SNK_STARTUP, 0); ++ break; ++ case SNK_STARTUP: ++ port->negotiated_rev = PD_MAX_REV; ++ port->message_id = 0; ++ port->rx_msgid = -1; ++ port->explicit_contract = false; ++ tcpm_set_state(dev, SNK_DISCOVERY, 0); ++ break; ++ case SNK_DISCOVERY: ++ if (port->vbus_present) { ++ tcpm_set_current_limit(dev, ++ tcpm_get_current_limit(port), ++ 5000); ++ tcpm_set_charge(dev, true); ++ tcpm_set_state(dev, SNK_WAIT_CAPABILITIES, 0); ++ break; ++ } ++ /* ++ * For DRP, timeouts differ. Also, handling is supposed to be ++ * different and much more complex (dead battery detection; ++ * see USB power delivery specification, section 8.3.3.6.1.5.1). ++ */ ++ tcpm_set_state(dev, hard_reset_state(port), ++ port->port_type == TYPEC_PORT_DRP ? ++ PD_T_DB_DETECT : PD_T_NO_RESPONSE); ++ break; ++ case SNK_DISCOVERY_DEBOUNCE: ++ tcpm_set_state(dev, SNK_DISCOVERY_DEBOUNCE_DONE, ++ PD_T_CC_DEBOUNCE); ++ break; ++ case SNK_DISCOVERY_DEBOUNCE_DONE: ++ tcpm_set_state(dev, unattached_state(port), 0); ++ break; ++ case SNK_WAIT_CAPABILITIES: ++ ret = drvops->set_pd_rx(dev, true); ++ if (ret < 0) { ++ tcpm_set_state(dev, SNK_READY, 0); ++ break; ++ } ++ /* ++ * If VBUS has never been low, and we time out waiting ++ * for source cap, try a soft reset first, in case we ++ * were already in a stable contract before this boot. ++ * Do this only once. ++ */ ++ if (port->vbus_never_low) { ++ port->vbus_never_low = false; ++ tcpm_set_state(dev, SOFT_RESET_SEND, ++ PD_T_SINK_WAIT_CAP); ++ } else { ++ tcpm_set_state(dev, hard_reset_state(port), ++ PD_T_SINK_WAIT_CAP); ++ } ++ break; ++ case SNK_NEGOTIATE_CAPABILITIES: ++ port->pd_capable = true; ++ port->hard_reset_count = 0; ++ ret = tcpm_pd_send_request(dev); ++ if (ret < 0) { ++ /* Let the Source send capabilities again. */ ++ tcpm_set_state(dev, SNK_WAIT_CAPABILITIES, 0); ++ } else { ++ tcpm_set_state_cond(dev, hard_reset_state(port), ++ PD_T_SENDER_RESPONSE); ++ } ++ break; ++ case SNK_TRANSITION_SINK: ++ case SNK_TRANSITION_SINK_VBUS: ++ tcpm_set_state(dev, hard_reset_state(port), ++ PD_T_PS_TRANSITION); ++ break; ++ case SNK_READY: ++ port->update_sink_caps = false; ++ tcpm_typec_connect(port); ++ /* ++ * Here poll_event_cnt is cleared, waiting for self-powered Type-C devices ++ * to send DR_swap Messge until 1s (TCPM_POLL_EVENT_TIME_OUT * 500us)timeout ++ */ ++ if (port->wait_dr_swap_message) ++ tcpm_reset_event_cnt(dev); ++ ++ break; ++ ++ /* Hard_Reset states */ ++ case HARD_RESET_SEND: ++ tcpm_pd_transmit(dev, TCPC_TX_HARD_RESET, NULL); ++ tcpm_set_state(dev, HARD_RESET_START, 0); ++ port->wait_dr_swap_message = false; ++ break; ++ case HARD_RESET_START: ++ port->hard_reset_count++; ++ drvops->set_pd_rx(dev, false); ++ port->nr_sink_caps = 0; ++ if (port->pwr_role == TYPEC_SOURCE) ++ tcpm_set_state(dev, SRC_HARD_RESET_VBUS_OFF, ++ PD_T_PS_HARD_RESET); ++ else ++ tcpm_set_state(dev, SNK_HARD_RESET_SINK_OFF, 0); ++ break; ++ case SRC_HARD_RESET_VBUS_OFF: ++ tcpm_set_vconn(dev, true); ++ tcpm_set_vbus(dev, false); ++ tcpm_set_roles(dev, port->self_powered, TYPEC_SOURCE, ++ TYPEC_HOST); ++ tcpm_set_state(dev, SRC_HARD_RESET_VBUS_ON, PD_T_SRC_RECOVER); ++ break; ++ case SRC_HARD_RESET_VBUS_ON: ++ tcpm_set_vconn(dev, true); ++ tcpm_set_vbus(dev, true); ++ drvops->set_pd_rx(dev, true); ++ tcpm_set_attached_state(dev, true); ++ tcpm_set_state(dev, SRC_UNATTACHED, PD_T_PS_SOURCE_ON); ++ break; ++ case SNK_HARD_RESET_SINK_OFF: ++ tcpm_set_vconn(dev, false); ++ if (port->pd_capable) ++ tcpm_set_charge(dev, false); ++ tcpm_set_roles(dev, port->self_powered, TYPEC_SINK, ++ TYPEC_DEVICE); ++ /* ++ * VBUS may or may not toggle, depending on the adapter. ++ * If it doesn't toggle, transition to SNK_HARD_RESET_SINK_ON ++ * directly after timeout. ++ */ ++ tcpm_set_state(dev, SNK_HARD_RESET_SINK_ON, PD_T_SAFE_0V); ++ break; ++ case SNK_HARD_RESET_WAIT_VBUS: ++ /* Assume we're disconnected if VBUS doesn't come back. */ ++ tcpm_set_state(dev, SNK_UNATTACHED, ++ PD_T_SRC_RECOVER_MAX + PD_T_SRC_TURN_ON); ++ break; ++ case SNK_HARD_RESET_SINK_ON: ++ /* Note: There is no guarantee that VBUS is on in this state */ ++ /* ++ * XXX: ++ * The specification suggests that dual mode ports in sink ++ * mode should transition to state PE_SRC_Transition_to_default. ++ * See USB power delivery specification chapter 8.3.3.6.1.3. ++ * This would mean to ++ * - turn off VCONN, reset power supply ++ * - request hardware reset ++ * - turn on VCONN ++ * - Transition to state PE_Src_Startup ++ * SNK only ports shall transition to state Snk_Startup ++ * (see chapter 8.3.3.3.8). ++ * Similar, dual-mode ports in source mode should transition ++ * to PE_SNK_Transition_to_default. ++ */ ++ if (port->pd_capable) { ++ tcpm_set_current_limit(dev, ++ tcpm_get_current_limit(port), ++ 5000); ++ tcpm_set_charge(dev, true); ++ } ++ tcpm_set_attached_state(dev, true); ++ tcpm_set_state(dev, SNK_STARTUP, 0); ++ break; ++ ++ /* Soft_Reset states */ ++ case SOFT_RESET: ++ port->message_id = 0; ++ port->rx_msgid = -1; ++ tcpm_pd_send_control(dev, PD_CTRL_ACCEPT); ++ if (port->pwr_role == TYPEC_SOURCE) ++ tcpm_set_state(dev, SRC_SEND_CAPABILITIES, 0); ++ else ++ tcpm_set_state(dev, SNK_WAIT_CAPABILITIES, 0); ++ break; ++ case SOFT_RESET_SEND: ++ port->message_id = 0; ++ port->rx_msgid = -1; ++ if (tcpm_pd_send_control(dev, PD_CTRL_SOFT_RESET)) ++ tcpm_set_state_cond(dev, hard_reset_state(port), 0); ++ else ++ tcpm_set_state_cond(dev, hard_reset_state(port), ++ PD_T_SENDER_RESPONSE); ++ break; ++ ++ /* DR_Swap states */ ++ case DR_SWAP_ACCEPT: ++ tcpm_pd_send_control(dev, PD_CTRL_ACCEPT); ++ tcpm_set_state_cond(dev, DR_SWAP_CHANGE_DR, 0); ++ break; ++ case DR_SWAP_CHANGE_DR: ++ if (port->data_role == TYPEC_HOST) { ++ tcpm_set_roles(dev, true, port->pwr_role, ++ TYPEC_DEVICE); ++ } else { ++ tcpm_set_roles(dev, true, port->pwr_role, ++ TYPEC_HOST); ++ } ++ /* DR_swap process complete, wait_dr_swap_message is cleared */ ++ port->wait_dr_swap_message = false; ++ tcpm_set_state(dev, ready_state(port), 0); ++ break; ++ case ERROR_RECOVERY: ++ tcpm_set_state(dev, PORT_RESET, 0); ++ break; ++ case PORT_RESET: ++ tcpm_reset_port(dev); ++ if (port->self_powered) ++ tcpm_set_cc(dev, TYPEC_CC_OPEN); ++ else ++ tcpm_set_cc(dev, tcpm_default_state(port) == SNK_UNATTACHED ? ++ TYPEC_CC_RD : tcpm_rp_cc(port)); ++ tcpm_set_state(dev, PORT_RESET_WAIT_OFF, ++ PD_T_ERROR_RECOVERY); ++ break; ++ case PORT_RESET_WAIT_OFF: ++ tcpm_set_state(dev, ++ tcpm_default_state(port), ++ port->vbus_present ? PD_T_PS_SOURCE_OFF : 0); ++ break; ++ default: ++ dev_err(dev, "TCPM: Unexpected port state %d\n", port->state); ++ break; ++ } ++} ++ ++static void tcpm_state_machine(struct udevice *dev) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ enum tcpm_state prev_state; ++ ++ mutex_lock(&port->lock); ++ port->state_machine_running = true; ++ ++ if (port->queued_message && tcpm_send_queued_message(dev)) ++ goto done; ++ ++ /* If we were queued due to a delayed state change, update it now */ ++ if (port->delayed_state) { ++ dev_dbg(dev, "TCPM: state change %s -> %s [delayed %ld ms]\n", ++ tcpm_states[port->state], ++ tcpm_states[port->delayed_state], port->delay_ms); ++ port->prev_state = port->state; ++ port->state = port->delayed_state; ++ port->delayed_state = INVALID_STATE; ++ } ++ ++ /* ++ * Continue running as long as we have (non-delayed) state changes ++ * to make. ++ */ ++ do { ++ prev_state = port->state; ++ run_state_machine(dev); ++ if (port->queued_message) ++ tcpm_send_queued_message(dev); ++ } while (port->state != prev_state && !port->delayed_state); ++ ++done: ++ port->state_machine_running = false; ++ mutex_unlock(&port->lock); ++} ++ ++static void _tcpm_cc_change(struct udevice *dev, enum typec_cc_status cc1, ++ enum typec_cc_status cc2) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ enum typec_cc_status old_cc1, old_cc2; ++ enum tcpm_state new_state; ++ ++ old_cc1 = port->cc1; ++ old_cc2 = port->cc2; ++ port->cc1 = cc1; ++ port->cc2 = cc2; ++ ++ dev_dbg(dev, "TCPM: CC1: %u -> %u, CC2: %u -> %u [state %s, polarity %d, %s]\n", ++ old_cc1, cc1, old_cc2, cc2, tcpm_states[port->state], ++ port->polarity, ++ tcpm_port_is_disconnected(port) ? "disconnected" : "connected"); ++ ++ switch (port->state) { ++ case TOGGLING: ++ if (tcpm_port_is_source(port)) ++ tcpm_set_state(dev, SRC_ATTACH_WAIT, 0); ++ else if (tcpm_port_is_sink(port)) ++ tcpm_set_state(dev, SNK_ATTACH_WAIT, 0); ++ break; ++ case SRC_UNATTACHED: ++ case SRC_ATTACH_WAIT: ++ if (tcpm_port_is_disconnected(port)) ++ tcpm_set_state(dev, SRC_UNATTACHED, 0); ++ else if (cc1 != old_cc1 || cc2 != old_cc2) ++ tcpm_set_state(dev, SRC_ATTACH_WAIT, 0); ++ break; ++ case SRC_ATTACHED: ++ case SRC_SEND_CAPABILITIES: ++ case SRC_READY: ++ if (tcpm_port_is_disconnected(port) || ++ !tcpm_port_is_source(port)) ++ tcpm_set_state(dev, SRC_UNATTACHED, 0); ++ break; ++ case SNK_UNATTACHED: ++ if (tcpm_port_is_sink(port)) ++ tcpm_set_state(dev, SNK_ATTACH_WAIT, 0); ++ break; ++ case SNK_ATTACH_WAIT: ++ if ((port->cc1 == TYPEC_CC_OPEN && ++ port->cc2 != TYPEC_CC_OPEN) || ++ (port->cc1 != TYPEC_CC_OPEN && ++ port->cc2 == TYPEC_CC_OPEN)) ++ new_state = SNK_DEBOUNCED; ++ else if (tcpm_port_is_disconnected(port)) ++ new_state = SNK_UNATTACHED; ++ else ++ break; ++ if (new_state != port->delayed_state) ++ tcpm_set_state(dev, SNK_ATTACH_WAIT, 0); ++ break; ++ case SNK_DEBOUNCED: ++ if (tcpm_port_is_disconnected(port)) ++ new_state = SNK_UNATTACHED; ++ else if (port->vbus_present) ++ new_state = tcpm_try_src(port) ? INVALID_STATE : SNK_ATTACHED; ++ else ++ new_state = SNK_UNATTACHED; ++ if (new_state != port->delayed_state) ++ tcpm_set_state(dev, SNK_DEBOUNCED, 0); ++ break; ++ case SNK_READY: ++ if (tcpm_port_is_disconnected(port)) ++ tcpm_set_state(dev, unattached_state(port), 0); ++ else if (!port->pd_capable && ++ (cc1 != old_cc1 || cc2 != old_cc2)) ++ tcpm_set_current_limit(dev, ++ tcpm_get_current_limit(port), ++ 5000); ++ break; ++ ++ case SNK_DISCOVERY: ++ /* CC line is unstable, wait for debounce */ ++ if (tcpm_port_is_disconnected(port)) ++ tcpm_set_state(dev, SNK_DISCOVERY_DEBOUNCE, 0); ++ break; ++ case SNK_DISCOVERY_DEBOUNCE: ++ break; ++ ++ case PORT_RESET: ++ case PORT_RESET_WAIT_OFF: ++ /* ++ * State set back to default mode once the timer completes. ++ * Ignore CC changes here. ++ */ ++ break; ++ default: ++ /* ++ * While acting as sink and auto vbus discharge is enabled, Allow disconnect ++ * to be driven by vbus disconnect. ++ */ ++ if (tcpm_port_is_disconnected(port)) ++ tcpm_set_state(dev, unattached_state(port), 0); ++ break; ++ } ++} ++ ++static void _tcpm_pd_vbus_on(struct udevice *dev) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ ++ dev_dbg(dev, "TCPM: VBUS on event\n"); ++ port->vbus_present = true; ++ /* ++ * When vbus_present is true i.e. Voltage at VBUS is greater than VSAFE5V implicitly ++ * states that vbus is not at VSAFE0V, hence clear the vbus_vsafe0v flag here. ++ */ ++ port->vbus_vsafe0v = false; ++ ++ switch (port->state) { ++ case SNK_TRANSITION_SINK_VBUS: ++ port->explicit_contract = true; ++ tcpm_set_state(dev, SNK_READY, 0); ++ break; ++ case SNK_DISCOVERY: ++ tcpm_set_state(dev, SNK_DISCOVERY, 0); ++ break; ++ case SNK_DEBOUNCED: ++ tcpm_set_state(dev, SNK_ATTACHED, 0); ++ break; ++ case SNK_HARD_RESET_WAIT_VBUS: ++ tcpm_set_state(dev, SNK_HARD_RESET_SINK_ON, 0); ++ break; ++ case SRC_ATTACHED: ++ tcpm_set_state(dev, SRC_STARTUP, 0); ++ break; ++ case SRC_HARD_RESET_VBUS_ON: ++ tcpm_set_state(dev, SRC_STARTUP, 0); ++ break; ++ ++ case PORT_RESET: ++ case PORT_RESET_WAIT_OFF: ++ /* ++ * State set back to default mode once the timer completes. ++ * Ignore vbus changes here. ++ */ ++ break; ++ ++ default: ++ break; ++ } ++} ++ ++static void _tcpm_pd_vbus_off(struct udevice *dev) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ ++ dev_dbg(dev, "TCPM: VBUS off event\n"); ++ port->vbus_present = false; ++ port->vbus_never_low = false; ++ switch (port->state) { ++ case SNK_HARD_RESET_SINK_OFF: ++ tcpm_set_state(dev, SNK_HARD_RESET_WAIT_VBUS, 0); ++ break; ++ case HARD_RESET_SEND: ++ break; ++ case SNK_ATTACH_WAIT: ++ tcpm_set_state(dev, SNK_UNATTACHED, 0); ++ break; ++ ++ case SNK_NEGOTIATE_CAPABILITIES: ++ break; ++ ++ case PORT_RESET_WAIT_OFF: ++ tcpm_set_state(dev, tcpm_default_state(port), 0); ++ break; ++ ++ case PORT_RESET: ++ /* ++ * State set back to default mode once the timer completes. ++ * Ignore vbus changes here. ++ */ ++ break; ++ ++ default: ++ if (port->pwr_role == TYPEC_SINK && port->attached) ++ tcpm_set_state(dev, SNK_UNATTACHED, 0); ++ break; ++ } ++} ++ ++void tcpm_cc_change(struct udevice *dev) ++{ ++ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); ++ enum typec_cc_status cc1, cc2; ++ ++ tcpm_reset_event_cnt(dev); ++ if (drvops->get_cc(dev, &cc1, &cc2) == 0) ++ _tcpm_cc_change(dev, cc1, cc2); ++} ++ ++void tcpm_vbus_change(struct udevice *dev) ++{ ++ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); ++ bool vbus; ++ ++ tcpm_reset_event_cnt(dev); ++ vbus = drvops->get_vbus(dev); ++ if (vbus) ++ _tcpm_pd_vbus_on(dev); ++ else ++ _tcpm_pd_vbus_off(dev); ++} ++ ++void tcpm_pd_hard_reset(struct udevice *dev) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ ++ tcpm_reset_event_cnt(dev); ++ dev_dbg(dev, "TCPM: Received hard reset\n"); ++ ++ /* If a hard reset message is received during the port reset process, ++ * we should ignore it, that is, do not set port->state to HARD_RESET_START. ++ */ ++ if (port->state == PORT_RESET || port->state == PORT_RESET_WAIT_OFF) ++ return; ++ ++ /* ++ * If we keep receiving hard reset requests, executing the hard reset ++ * must have failed. Revert to error recovery if that happens. ++ */ ++ tcpm_set_state(dev, ++ port->hard_reset_count < PD_N_HARD_RESET_COUNT ? ++ HARD_RESET_START : ERROR_RECOVERY, ++ 0); ++} ++ ++static void tcpm_init(struct udevice *dev) ++{ ++ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ enum typec_cc_status cc1, cc2; ++ ++ drvops->init(dev); ++ ++ tcpm_reset_port(dev); ++ ++ /* ++ * XXX ++ * Should possibly wait for VBUS to settle if it was enabled locally ++ * since tcpm_reset_port() will disable VBUS. ++ */ ++ port->vbus_present = drvops->get_vbus(dev); ++ if (port->vbus_present) ++ port->vbus_never_low = true; ++ ++ /* ++ * 1. When vbus_present is true, voltage on VBUS is already at VSAFE5V. ++ * So implicitly vbus_vsafe0v = false. ++ * ++ * 2. When vbus_present is false and TCPC does NOT support querying ++ * vsafe0v status, then, it's best to assume vbus is at VSAFE0V i.e. ++ * vbus_vsafe0v is true. ++ * ++ * 3. When vbus_present is false and TCPC does support querying vsafe0v, ++ * then, query tcpc for vsafe0v status. ++ */ ++ if (port->vbus_present) ++ port->vbus_vsafe0v = false; ++ else ++ port->vbus_vsafe0v = true; ++ ++ tcpm_set_state(dev, tcpm_default_state(port), 0); ++ ++ if (drvops->get_cc(dev, &cc1, &cc2) == 0) ++ _tcpm_cc_change(dev, cc1, cc2); ++} ++ ++static int tcpm_fw_get_caps(struct udevice *dev) ++{ ++ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ ofnode node; ++ const char *cap_str; ++ int ret; ++ u32 mw; ++ ++ ret = drvops->get_connector_node(dev, &node); ++ if (ret) ++ return ret; ++ ++ cap_str = ofnode_read_string(node, "power-role"); ++ if (!cap_str) ++ return -EINVAL; ++ ++ if (!strcmp("dual", cap_str)) ++ port->typec_type = TYPEC_PORT_DRP; ++ else if (!strcmp("source", cap_str)) ++ port->typec_type = TYPEC_PORT_SRC; ++ else if (!strcmp("sink", cap_str)) ++ port->typec_type = TYPEC_PORT_SNK; ++ else ++ return -EINVAL; ++ ++ port->port_type = port->typec_type; ++ ++ if (port->port_type == TYPEC_PORT_SNK) ++ goto sink; ++ ++ /* Get source pdos */ ++ ret = ofnode_read_size(node, "source-pdos") / sizeof(u32); ++ if (ret <= 0) ++ return -EINVAL; ++ ++ port->nr_src_pdo = min(ret, PDO_MAX_OBJECTS); ++ ret = ofnode_read_u32_array(node, "source-pdos", ++ port->src_pdo, port->nr_src_pdo); ++ if (ret || tcpm_validate_caps(dev, port->src_pdo, port->nr_src_pdo)) ++ return -EINVAL; ++ ++ if (port->port_type == TYPEC_PORT_SRC) ++ return 0; ++ ++ /* Get the preferred power role for DRP */ ++ cap_str = ofnode_read_string(node, "try-power-role"); ++ if (!cap_str) ++ return -EINVAL; ++ ++ if (!strcmp("sink", cap_str)) ++ port->typec_prefer_role = TYPEC_SINK; ++ else if (!strcmp("source", cap_str)) ++ port->typec_prefer_role = TYPEC_SOURCE; ++ else ++ return -EINVAL; ++ ++ if (port->typec_prefer_role < 0) ++ return -EINVAL; ++sink: ++ /* Get sink pdos */ ++ ret = ofnode_read_size(node, "sink-pdos") / sizeof(u32); ++ if (ret <= 0) ++ return -EINVAL; ++ ++ port->nr_snk_pdo = min(ret, PDO_MAX_OBJECTS); ++ ret = ofnode_read_u32_array(node, "sink-pdos", ++ port->snk_pdo, port->nr_snk_pdo); ++ if (ret || tcpm_validate_caps(dev, port->snk_pdo, port->nr_snk_pdo)) ++ return -EINVAL; ++ ++ if (ofnode_read_u32_array(node, "op-sink-microwatt", &mw, 1)) ++ return -EINVAL; ++ port->operating_snk_mw = mw / 1000; ++ ++ port->self_powered = ofnode_read_bool(node, "self-powered"); ++ ++ return 0; ++} ++ ++static int tcpm_port_init(struct udevice *dev) ++{ ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ int err; ++ ++ err = tcpm_fw_get_caps(dev); ++ if (err < 0) { ++ dev_err(dev, "TCPM: please check the dts config: %d\n", err); ++ return err; ++ } ++ ++ port->try_role = port->typec_prefer_role; ++ port->port_type = port->typec_type; ++ ++ tcpm_init(dev); ++ ++ dev_info(dev, "TCPM: init finished\n"); ++ ++ return 0; ++} ++ ++static void tcpm_poll_event(struct udevice *dev) ++{ ++ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); ++ struct tcpm_port *port = dev_get_uclass_plat(dev); ++ ++ if (!drvops->get_vbus(dev)) ++ return; ++ ++ while (port->poll_event_cnt < TCPM_POLL_EVENT_TIME_OUT) { ++ if (!port->wait_dr_swap_message && ++ (port->state == SNK_READY || port->state == SRC_READY)) ++ break; ++ ++ drvops->poll_event(dev); ++ port->poll_event_cnt++; ++ udelay(500); ++ tcpm_check_and_run_delayed_work(dev); ++ } ++ ++ if (port->state != SNK_READY && port->state != SRC_READY) ++ dev_warn(dev, "TCPM: exit in state %s\n", ++ tcpm_states[port->state]); ++ ++ /* ++ * At this time, call the callback function of the respective pd chip ++ * to enter the low-power mode. In order to reduce the time spent on ++ * the PD chip driver as much as possible, the tcpm framework does not ++ * fully process the communication initiated by the device,so it should ++ * be noted that we can disable the internal oscillator, etc., but do ++ * not turn off the power of the transceiver module, otherwise the ++ * self-powered Type-C device will initiate a Message(eg: self-powered ++ * Type-C hub initiates a SINK capability request(PD_CTRL_GET_SINK_CAP)) ++ * and the pd chip cannot reply to GoodCRC, causing the self-powered Type-C ++ * device to switch vbus to vSafe5v, or even turn off vbus. ++ */ ++ if (!drvops->enter_low_power_mode) ++ return; ++ ++ if (drvops->enter_low_power_mode(dev, port->attached, port->pd_capable)) ++ dev_err(dev, "TCPM: failed to enter low power\n"); ++ else ++ dev_info(dev, "TCPM: PD chip enter low power mode\n"); ++} ++ ++int tcpm_post_probe(struct udevice *dev) ++{ ++ int ret = tcpm_port_init(dev); ++ ++ if (ret < 0) { ++ dev_err(dev, "failed to tcpm port init\n"); ++ return ret; ++ } ++ ++ tcpm_poll_event(dev); ++ ++ return 0; ++} +diff --git a/include/dm/uclass-id.h b/include/dm/uclass-id.h +index 5271e646bb16..270088ad94f7 100644 +--- a/include/dm/uclass-id.h ++++ b/include/dm/uclass-id.h +@@ -139,6 +139,7 @@ enum uclass_id { + UCLASS_SYSCON, /* System configuration device */ + UCLASS_SYSINFO, /* Device information from hardware */ + UCLASS_SYSRESET, /* System reset device */ ++ UCLASS_TCPM, /* TypeC port manager */ + UCLASS_TEE, /* Trusted Execution Environment device */ + UCLASS_THERMAL, /* Thermal sensor */ + UCLASS_TIMER, /* Timer device */ +diff --git a/include/usb/pd.h b/include/usb/pd.h +new file mode 100644 +index 000000000000..cacda322d7c6 +--- /dev/null ++++ b/include/usb/pd.h +@@ -0,0 +1,516 @@ ++/* SPDX-License-Identifier: GPL-2.0-or-later */ ++/* ++ * Copyright 2015-2017 Google, Inc ++ */ ++ ++#ifndef __LINUX_USB_PD_H ++#define __LINUX_USB_PD_H ++ ++#include ++#include ++ ++enum typec_port_type { ++ TYPEC_PORT_SRC, ++ TYPEC_PORT_SNK, ++ TYPEC_PORT_DRP, ++}; ++ ++enum typec_data_role { ++ TYPEC_DEVICE, ++ TYPEC_HOST, ++}; ++ ++enum typec_role { ++ TYPEC_SINK, ++ TYPEC_SOURCE, ++}; ++ ++/* USB PD Messages */ ++enum pd_ctrl_msg_type { ++ /* 0 Reserved */ ++ PD_CTRL_GOOD_CRC = 1, ++ PD_CTRL_GOTO_MIN = 2, ++ PD_CTRL_ACCEPT = 3, ++ PD_CTRL_REJECT = 4, ++ PD_CTRL_PING = 5, ++ PD_CTRL_PS_RDY = 6, ++ PD_CTRL_GET_SOURCE_CAP = 7, ++ PD_CTRL_GET_SINK_CAP = 8, ++ PD_CTRL_DR_SWAP = 9, ++ PD_CTRL_PR_SWAP = 10, ++ PD_CTRL_VCONN_SWAP = 11, ++ PD_CTRL_WAIT = 12, ++ PD_CTRL_SOFT_RESET = 13, ++ /* 14-15 Reserved */ ++ PD_CTRL_NOT_SUPP = 16, ++ PD_CTRL_GET_SOURCE_CAP_EXT = 17, ++ PD_CTRL_GET_STATUS = 18, ++ PD_CTRL_FR_SWAP = 19, ++ PD_CTRL_GET_PPS_STATUS = 20, ++ PD_CTRL_GET_COUNTRY_CODES = 21, ++ /* 22-31 Reserved */ ++}; ++ ++enum pd_data_msg_type { ++ /* 0 Reserved */ ++ PD_DATA_SOURCE_CAP = 1, ++ PD_DATA_REQUEST = 2, ++ PD_DATA_BIST = 3, ++ PD_DATA_SINK_CAP = 4, ++ PD_DATA_BATT_STATUS = 5, ++ PD_DATA_ALERT = 6, ++ PD_DATA_GET_COUNTRY_INFO = 7, ++ PD_DATA_ENTER_USB = 8, ++ /* 9-14 Reserved */ ++ PD_DATA_VENDOR_DEF = 15, ++ /* 16-31 Reserved */ ++}; ++ ++enum pd_ext_msg_type { ++ /* 0 Reserved */ ++ PD_EXT_SOURCE_CAP_EXT = 1, ++ PD_EXT_STATUS = 2, ++ PD_EXT_GET_BATT_CAP = 3, ++ PD_EXT_GET_BATT_STATUS = 4, ++ PD_EXT_BATT_CAP = 5, ++ PD_EXT_GET_MANUFACTURER_INFO = 6, ++ PD_EXT_MANUFACTURER_INFO = 7, ++ PD_EXT_SECURITY_REQUEST = 8, ++ PD_EXT_SECURITY_RESPONSE = 9, ++ PD_EXT_FW_UPDATE_REQUEST = 10, ++ PD_EXT_FW_UPDATE_RESPONSE = 11, ++ PD_EXT_PPS_STATUS = 12, ++ PD_EXT_COUNTRY_INFO = 13, ++ PD_EXT_COUNTRY_CODES = 14, ++ /* 15-31 Reserved */ ++}; ++ ++#define PD_REV10 0x0 ++#define PD_REV20 0x1 ++#define PD_REV30 0x2 ++#define PD_MAX_REV PD_REV30 ++ ++#define PD_HEADER_EXT_HDR BIT(15) ++#define PD_HEADER_CNT_SHIFT 12 ++#define PD_HEADER_CNT_MASK 0x7 ++#define PD_HEADER_ID_SHIFT 9 ++#define PD_HEADER_ID_MASK 0x7 ++#define PD_HEADER_PWR_ROLE BIT(8) ++#define PD_HEADER_REV_SHIFT 6 ++#define PD_HEADER_REV_MASK 0x3 ++#define PD_HEADER_DATA_ROLE BIT(5) ++#define PD_HEADER_TYPE_SHIFT 0 ++#define PD_HEADER_TYPE_MASK 0x1f ++ ++#define PD_HEADER(type, pwr, data, rev, id, cnt, ext_hdr) \ ++ ((((type) & PD_HEADER_TYPE_MASK) << PD_HEADER_TYPE_SHIFT) | \ ++ ((pwr) == TYPEC_SOURCE ? PD_HEADER_PWR_ROLE : 0) | \ ++ ((data) == TYPEC_HOST ? PD_HEADER_DATA_ROLE : 0) | \ ++ ((rev) << PD_HEADER_REV_SHIFT) | \ ++ (((id) & PD_HEADER_ID_MASK) << PD_HEADER_ID_SHIFT) | \ ++ (((cnt) & PD_HEADER_CNT_MASK) << PD_HEADER_CNT_SHIFT) | \ ++ ((ext_hdr) ? PD_HEADER_EXT_HDR : 0)) ++ ++#define PD_HEADER_LE(type, pwr, data, rev, id, cnt) \ ++ cpu_to_le16(PD_HEADER((type), (pwr), (data), (rev), (id), (cnt), (0))) ++ ++static inline unsigned int pd_header_cnt(u16 header) ++{ ++ return (header >> PD_HEADER_CNT_SHIFT) & PD_HEADER_CNT_MASK; ++} ++ ++static inline unsigned int pd_header_cnt_le(__le16 header) ++{ ++ return pd_header_cnt(le16_to_cpu(header)); ++} ++ ++static inline unsigned int pd_header_type(u16 header) ++{ ++ return (header >> PD_HEADER_TYPE_SHIFT) & PD_HEADER_TYPE_MASK; ++} ++ ++static inline unsigned int pd_header_type_le(__le16 header) ++{ ++ return pd_header_type(le16_to_cpu(header)); ++} ++ ++static inline unsigned int pd_header_msgid(u16 header) ++{ ++ return (header >> PD_HEADER_ID_SHIFT) & PD_HEADER_ID_MASK; ++} ++ ++static inline unsigned int pd_header_msgid_le(__le16 header) ++{ ++ return pd_header_msgid(le16_to_cpu(header)); ++} ++ ++static inline unsigned int pd_header_rev(u16 header) ++{ ++ return (header >> PD_HEADER_REV_SHIFT) & PD_HEADER_REV_MASK; ++} ++ ++static inline unsigned int pd_header_rev_le(__le16 header) ++{ ++ return pd_header_rev(le16_to_cpu(header)); ++} ++ ++#define PD_EXT_HDR_CHUNKED BIT(15) ++#define PD_EXT_HDR_CHUNK_NUM_SHIFT 11 ++#define PD_EXT_HDR_CHUNK_NUM_MASK 0xf ++#define PD_EXT_HDR_REQ_CHUNK BIT(10) ++#define PD_EXT_HDR_DATA_SIZE_SHIFT 0 ++#define PD_EXT_HDR_DATA_SIZE_MASK 0x1ff ++ ++#define PD_EXT_HDR(data_size, req_chunk, chunk_num, chunked) \ ++ ((((data_size) & PD_EXT_HDR_DATA_SIZE_MASK) << PD_EXT_HDR_DATA_SIZE_SHIFT) | \ ++ ((req_chunk) ? PD_EXT_HDR_REQ_CHUNK : 0) | \ ++ (((chunk_num) & PD_EXT_HDR_CHUNK_NUM_MASK) << PD_EXT_HDR_CHUNK_NUM_SHIFT) | \ ++ ((chunked) ? PD_EXT_HDR_CHUNKED : 0)) ++ ++#define PD_EXT_HDR_LE(data_size, req_chunk, chunk_num, chunked) \ ++ cpu_to_le16(PD_EXT_HDR((data_size), (req_chunk), (chunk_num), (chunked))) ++ ++static inline unsigned int pd_ext_header_chunk_num(u16 ext_header) ++{ ++ return (ext_header >> PD_EXT_HDR_CHUNK_NUM_SHIFT) & ++ PD_EXT_HDR_CHUNK_NUM_MASK; ++} ++ ++static inline unsigned int pd_ext_header_data_size(u16 ext_header) ++{ ++ return (ext_header >> PD_EXT_HDR_DATA_SIZE_SHIFT) & ++ PD_EXT_HDR_DATA_SIZE_MASK; ++} ++ ++static inline unsigned int pd_ext_header_data_size_le(__le16 ext_header) ++{ ++ return pd_ext_header_data_size(le16_to_cpu(ext_header)); ++} ++ ++#define PD_MAX_PAYLOAD 7 ++#define PD_EXT_MAX_CHUNK_DATA 26 ++ ++/* ++ * struct pd_chunked_ext_message_data - PD chunked extended message data as ++ * seen on wire ++ * @header: PD extended message header ++ * @data: PD extended message data ++ */ ++struct pd_chunked_ext_message_data { ++ __le16 header; ++ u8 data[PD_EXT_MAX_CHUNK_DATA]; ++} __packed; ++ ++/* ++ * struct pd_message - PD message as seen on wire ++ * @header: PD message header ++ * @payload: PD message payload ++ * @ext_msg: PD message chunked extended message data ++ */ ++struct pd_message { ++ __le16 header; ++ union { ++ __le32 payload[PD_MAX_PAYLOAD]; ++ struct pd_chunked_ext_message_data ext_msg; ++ }; ++} __packed; ++ ++/* PDO: Power Data Object */ ++#define PDO_MAX_OBJECTS 7 ++ ++enum pd_pdo_type { ++ PDO_TYPE_FIXED = 0, ++ PDO_TYPE_BATT = 1, ++ PDO_TYPE_VAR = 2, ++ PDO_TYPE_APDO = 3, ++}; ++ ++#define PDO_TYPE_SHIFT 30 ++#define PDO_TYPE_MASK 0x3 ++ ++#define PDO_TYPE(t) ((t) << PDO_TYPE_SHIFT) ++ ++#define PDO_VOLT_MASK 0x3ff ++#define PDO_CURR_MASK 0x3ff ++#define PDO_PWR_MASK 0x3ff ++ ++#define PDO_FIXED_DUAL_ROLE BIT(29) /* Power role swap supported */ ++#define PDO_FIXED_SUSPEND BIT(28) /* USB Suspend supported (Source) */ ++#define PDO_FIXED_HIGHER_CAP BIT(28) /* Requires more than vSafe5V (Sink) */ ++#define PDO_FIXED_EXTPOWER BIT(27) /* Externally powered */ ++#define PDO_FIXED_USB_COMM BIT(26) /* USB communications capable */ ++#define PDO_FIXED_DATA_SWAP BIT(25) /* Data role swap supported */ ++#define PDO_FIXED_UNCHUNK_EXT BIT(24) /* Unchunked Extended Message supported (Source) */ ++#define PDO_FIXED_FRS_CURR_MASK (BIT(24) | BIT(23)) /* FR_Swap Current (Sink) */ ++#define PDO_FIXED_FRS_CURR_SHIFT 23 ++#define PDO_FIXED_VOLT_SHIFT 10 /* 50mV units */ ++#define PDO_FIXED_CURR_SHIFT 0 /* 10mA units */ ++ ++#define PDO_FIXED_VOLT(mv) ((((mv) / 50) & PDO_VOLT_MASK) << PDO_FIXED_VOLT_SHIFT) ++#define PDO_FIXED_CURR(ma) ((((ma) / 10) & PDO_CURR_MASK) << PDO_FIXED_CURR_SHIFT) ++ ++#define PDO_FIXED(mv, ma, flags) \ ++ (PDO_TYPE(PDO_TYPE_FIXED) | (flags) | \ ++ PDO_FIXED_VOLT(mv) | PDO_FIXED_CURR(ma)) ++ ++#define VSAFE5V 5000 /* mv units */ ++ ++#define PDO_BATT_MAX_VOLT_SHIFT 20 /* 50mV units */ ++#define PDO_BATT_MIN_VOLT_SHIFT 10 /* 50mV units */ ++#define PDO_BATT_MAX_PWR_SHIFT 0 /* 250mW units */ ++ ++#define PDO_BATT_MIN_VOLT(mv) ((((mv) / 50) & PDO_VOLT_MASK) << PDO_BATT_MIN_VOLT_SHIFT) ++#define PDO_BATT_MAX_VOLT(mv) ((((mv) / 50) & PDO_VOLT_MASK) << PDO_BATT_MAX_VOLT_SHIFT) ++#define PDO_BATT_MAX_POWER(mw) ((((mw) / 250) & PDO_PWR_MASK) << PDO_BATT_MAX_PWR_SHIFT) ++ ++#define PDO_BATT(min_mv, max_mv, max_mw) \ ++ (PDO_TYPE(PDO_TYPE_BATT) | PDO_BATT_MIN_VOLT(min_mv) | \ ++ PDO_BATT_MAX_VOLT(max_mv) | PDO_BATT_MAX_POWER(max_mw)) ++ ++#define PDO_VAR_MAX_VOLT_SHIFT 20 /* 50mV units */ ++#define PDO_VAR_MIN_VOLT_SHIFT 10 /* 50mV units */ ++#define PDO_VAR_MAX_CURR_SHIFT 0 /* 10mA units */ ++ ++#define PDO_VAR_MIN_VOLT(mv) ((((mv) / 50) & PDO_VOLT_MASK) << PDO_VAR_MIN_VOLT_SHIFT) ++#define PDO_VAR_MAX_VOLT(mv) ((((mv) / 50) & PDO_VOLT_MASK) << PDO_VAR_MAX_VOLT_SHIFT) ++#define PDO_VAR_MAX_CURR(ma) ((((ma) / 10) & PDO_CURR_MASK) << PDO_VAR_MAX_CURR_SHIFT) ++ ++#define PDO_VAR(min_mv, max_mv, max_ma) \ ++ (PDO_TYPE(PDO_TYPE_VAR) | PDO_VAR_MIN_VOLT(min_mv) | \ ++ PDO_VAR_MAX_VOLT(max_mv) | PDO_VAR_MAX_CURR(max_ma)) ++ ++enum pd_apdo_type { ++ APDO_TYPE_PPS = 0, ++}; ++ ++#define PDO_APDO_TYPE_SHIFT 28 /* Only valid value currently is 0x0 - PPS */ ++#define PDO_APDO_TYPE_MASK 0x3 ++ ++#define PDO_APDO_TYPE(t) ((t) << PDO_APDO_TYPE_SHIFT) ++ ++#define PDO_PPS_APDO_MAX_VOLT_SHIFT 17 /* 100mV units */ ++#define PDO_PPS_APDO_MIN_VOLT_SHIFT 8 /* 100mV units */ ++#define PDO_PPS_APDO_MAX_CURR_SHIFT 0 /* 50mA units */ ++ ++#define PDO_PPS_APDO_VOLT_MASK 0xff ++#define PDO_PPS_APDO_CURR_MASK 0x7f ++ ++#define PDO_PPS_APDO_MIN_VOLT(mv) \ ++ ((((mv) / 100) & PDO_PPS_APDO_VOLT_MASK) << PDO_PPS_APDO_MIN_VOLT_SHIFT) ++#define PDO_PPS_APDO_MAX_VOLT(mv) \ ++ ((((mv) / 100) & PDO_PPS_APDO_VOLT_MASK) << PDO_PPS_APDO_MAX_VOLT_SHIFT) ++#define PDO_PPS_APDO_MAX_CURR(ma) \ ++ ((((ma) / 50) & PDO_PPS_APDO_CURR_MASK) << PDO_PPS_APDO_MAX_CURR_SHIFT) ++ ++#define PDO_PPS_APDO(min_mv, max_mv, max_ma) \ ++ (PDO_TYPE(PDO_TYPE_APDO) | PDO_APDO_TYPE(APDO_TYPE_PPS) | \ ++ PDO_PPS_APDO_MIN_VOLT(min_mv) | PDO_PPS_APDO_MAX_VOLT(max_mv) | \ ++ PDO_PPS_APDO_MAX_CURR(max_ma)) ++ ++static inline enum pd_pdo_type pdo_type(u32 pdo) ++{ ++ return (pdo >> PDO_TYPE_SHIFT) & PDO_TYPE_MASK; ++} ++ ++static inline unsigned int pdo_fixed_voltage(u32 pdo) ++{ ++ return ((pdo >> PDO_FIXED_VOLT_SHIFT) & PDO_VOLT_MASK) * 50; ++} ++ ++static inline unsigned int pdo_min_voltage(u32 pdo) ++{ ++ return ((pdo >> PDO_VAR_MIN_VOLT_SHIFT) & PDO_VOLT_MASK) * 50; ++} ++ ++static inline unsigned int pdo_max_voltage(u32 pdo) ++{ ++ return ((pdo >> PDO_VAR_MAX_VOLT_SHIFT) & PDO_VOLT_MASK) * 50; ++} ++ ++static inline unsigned int pdo_max_current(u32 pdo) ++{ ++ return ((pdo >> PDO_VAR_MAX_CURR_SHIFT) & PDO_CURR_MASK) * 10; ++} ++ ++static inline unsigned int pdo_max_power(u32 pdo) ++{ ++ return ((pdo >> PDO_BATT_MAX_PWR_SHIFT) & PDO_PWR_MASK) * 250; ++} ++ ++static inline enum pd_apdo_type pdo_apdo_type(u32 pdo) ++{ ++ return (pdo >> PDO_APDO_TYPE_SHIFT) & PDO_APDO_TYPE_MASK; ++} ++ ++static inline unsigned int pdo_pps_apdo_min_voltage(u32 pdo) ++{ ++ return ((pdo >> PDO_PPS_APDO_MIN_VOLT_SHIFT) & ++ PDO_PPS_APDO_VOLT_MASK) * 100; ++} ++ ++static inline unsigned int pdo_pps_apdo_max_voltage(u32 pdo) ++{ ++ return ((pdo >> PDO_PPS_APDO_MAX_VOLT_SHIFT) & ++ PDO_PPS_APDO_VOLT_MASK) * 100; ++} ++ ++static inline unsigned int pdo_pps_apdo_max_current(u32 pdo) ++{ ++ return ((pdo >> PDO_PPS_APDO_MAX_CURR_SHIFT) & ++ PDO_PPS_APDO_CURR_MASK) * 50; ++} ++ ++/* RDO: Request Data Object */ ++#define RDO_OBJ_POS_SHIFT 28 ++#define RDO_OBJ_POS_MASK 0x7 ++#define RDO_GIVE_BACK BIT(27) /* Supports reduced operating current */ ++#define RDO_CAP_MISMATCH BIT(26) /* Not satisfied by source caps */ ++#define RDO_USB_COMM BIT(25) /* USB communications capable */ ++#define RDO_NO_SUSPEND BIT(24) /* USB Suspend not supported */ ++ ++#define RDO_PWR_MASK 0x3ff ++#define RDO_CURR_MASK 0x3ff ++ ++#define RDO_FIXED_OP_CURR_SHIFT 10 ++#define RDO_FIXED_MAX_CURR_SHIFT 0 ++ ++#define RDO_OBJ(idx) (((idx) & RDO_OBJ_POS_MASK) << RDO_OBJ_POS_SHIFT) ++ ++#define PDO_FIXED_OP_CURR(ma) ((((ma) / 10) & RDO_CURR_MASK) << RDO_FIXED_OP_CURR_SHIFT) ++#define PDO_FIXED_MAX_CURR(ma) ((((ma) / 10) & RDO_CURR_MASK) << RDO_FIXED_MAX_CURR_SHIFT) ++ ++#define RDO_FIXED(idx, op_ma, max_ma, flags) \ ++ (RDO_OBJ(idx) | (flags) | \ ++ PDO_FIXED_OP_CURR(op_ma) | PDO_FIXED_MAX_CURR(max_ma)) ++ ++#define RDO_BATT_OP_PWR_SHIFT 10 /* 250mW units */ ++#define RDO_BATT_MAX_PWR_SHIFT 0 /* 250mW units */ ++ ++#define RDO_BATT_OP_PWR(mw) ((((mw) / 250) & RDO_PWR_MASK) << RDO_BATT_OP_PWR_SHIFT) ++#define RDO_BATT_MAX_PWR(mw) ((((mw) / 250) & RDO_PWR_MASK) << RDO_BATT_MAX_PWR_SHIFT) ++ ++#define RDO_BATT(idx, op_mw, max_mw, flags) \ ++ (RDO_OBJ(idx) | (flags) | \ ++ RDO_BATT_OP_PWR(op_mw) | RDO_BATT_MAX_PWR(max_mw)) ++ ++#define RDO_PROG_VOLT_MASK 0x7ff ++#define RDO_PROG_CURR_MASK 0x7f ++ ++#define RDO_PROG_VOLT_SHIFT 9 ++#define RDO_PROG_CURR_SHIFT 0 ++ ++#define RDO_PROG_VOLT_MV_STEP 20 ++#define RDO_PROG_CURR_MA_STEP 50 ++ ++#define PDO_PROG_OUT_VOLT(mv) \ ++ ((((mv) / RDO_PROG_VOLT_MV_STEP) & RDO_PROG_VOLT_MASK) << RDO_PROG_VOLT_SHIFT) ++#define PDO_PROG_OP_CURR(ma) \ ++ ((((ma) / RDO_PROG_CURR_MA_STEP) & RDO_PROG_CURR_MASK) << RDO_PROG_CURR_SHIFT) ++ ++#define RDO_PROG(idx, out_mv, op_ma, flags) \ ++ (RDO_OBJ(idx) | (flags) | \ ++ PDO_PROG_OUT_VOLT(out_mv) | PDO_PROG_OP_CURR(op_ma)) ++ ++static inline unsigned int rdo_index(u32 rdo) ++{ ++ return (rdo >> RDO_OBJ_POS_SHIFT) & RDO_OBJ_POS_MASK; ++} ++ ++static inline unsigned int rdo_op_current(u32 rdo) ++{ ++ return ((rdo >> RDO_FIXED_OP_CURR_SHIFT) & RDO_CURR_MASK) * 10; ++} ++ ++static inline unsigned int rdo_max_current(u32 rdo) ++{ ++ return ((rdo >> RDO_FIXED_MAX_CURR_SHIFT) & ++ RDO_CURR_MASK) * 10; ++} ++ ++static inline unsigned int rdo_op_power(u32 rdo) ++{ ++ return ((rdo >> RDO_BATT_OP_PWR_SHIFT) & RDO_PWR_MASK) * 250; ++} ++ ++static inline unsigned int rdo_max_power(u32 rdo) ++{ ++ return ((rdo >> RDO_BATT_MAX_PWR_SHIFT) & RDO_PWR_MASK) * 250; ++} ++ ++/* Enter_USB Data Object */ ++#define EUDO_USB_MODE_MASK GENMASK(30, 28) ++#define EUDO_USB_MODE_SHIFT 28 ++#define EUDO_USB_MODE_USB2 0 ++#define EUDO_USB_MODE_USB3 1 ++#define EUDO_USB_MODE_USB4 2 ++#define EUDO_USB4_DRD BIT(26) ++#define EUDO_USB3_DRD BIT(25) ++#define EUDO_CABLE_SPEED_MASK GENMASK(23, 21) ++#define EUDO_CABLE_SPEED_SHIFT 21 ++#define EUDO_CABLE_SPEED_USB2 0 ++#define EUDO_CABLE_SPEED_USB3_GEN1 1 ++#define EUDO_CABLE_SPEED_USB4_GEN2 2 ++#define EUDO_CABLE_SPEED_USB4_GEN3 3 ++#define EUDO_CABLE_TYPE_MASK GENMASK(20, 19) ++#define EUDO_CABLE_TYPE_SHIFT 19 ++#define EUDO_CABLE_TYPE_PASSIVE 0 ++#define EUDO_CABLE_TYPE_RE_TIMER 1 ++#define EUDO_CABLE_TYPE_RE_DRIVER 2 ++#define EUDO_CABLE_TYPE_OPTICAL 3 ++#define EUDO_CABLE_CURRENT_MASK GENMASK(18, 17) ++#define EUDO_CABLE_CURRENT_SHIFT 17 ++#define EUDO_CABLE_CURRENT_NOTSUPP 0 ++#define EUDO_CABLE_CURRENT_3A 2 ++#define EUDO_CABLE_CURRENT_5A 3 ++#define EUDO_PCIE_SUPPORT BIT(16) ++#define EUDO_DP_SUPPORT BIT(15) ++#define EUDO_TBT_SUPPORT BIT(14) ++#define EUDO_HOST_PRESENT BIT(13) ++ ++/* USB PD timers and counters */ ++#define PD_T_NO_RESPONSE 5000 /* 4.5 - 5.5 seconds */ ++#define PD_T_DB_DETECT 10000 /* 10 - 15 seconds */ ++#define PD_T_SEND_SOURCE_CAP 150 /* 100 - 200 ms */ ++#define PD_T_SENDER_RESPONSE 60 /* 24 - 30 ms, relaxed */ ++#define PD_T_RECEIVER_RESPONSE 15 /* 15ms max */ ++#define PD_T_SOURCE_ACTIVITY 45 ++#define PD_T_SINK_ACTIVITY 135 ++#define PD_T_SINK_WAIT_CAP 310 /* 310 - 620 ms */ ++#define PD_T_PS_TRANSITION 500 ++#define PD_T_SRC_TRANSITION 35 ++#define PD_T_DRP_SNK 40 ++#define PD_T_DRP_SRC 30 ++#define PD_T_PS_SOURCE_OFF 920 ++#define PD_T_PS_SOURCE_ON 480 ++#define PD_T_PS_SOURCE_ON_PRS 450 /* 390 - 480ms */ ++#define PD_T_PS_HARD_RESET 30 ++#define PD_T_SRC_RECOVER 760 ++#define PD_T_SRC_RECOVER_MAX 1000 ++#define PD_T_SRC_TURN_ON 275 ++#define PD_T_SAFE_0V 650 ++#define PD_T_VCONN_SOURCE_ON 100 ++#define PD_T_SINK_REQUEST 100 /* 100 ms minimum */ ++#define PD_T_ERROR_RECOVERY 100 /* minimum 25 is insufficient */ ++#define PD_T_SRCSWAPSTDBY 625 /* Maximum of 650ms */ ++#define PD_T_NEWSRC 250 /* Maximum of 275ms */ ++#define PD_T_SWAP_SRC_START 20 /* Minimum of 20ms */ ++#define PD_T_BIST_CONT_MODE 50 /* 30 - 60 ms */ ++#define PD_T_SINK_TX 16 /* 16 - 20 ms */ ++#define PD_T_CHUNK_NOT_SUPP 42 /* 40 - 50 ms */ ++ ++#define PD_T_DRP_TRY 100 /* 75 - 150 ms */ ++#define PD_T_DRP_TRYWAIT 600 /* 400 - 800 ms */ ++ ++#define PD_T_CC_DEBOUNCE 200 /* 100 - 200 ms */ ++#define PD_T_PD_DEBOUNCE 20 /* 10 - 20 ms */ ++#define PD_T_TRY_CC_DEBOUNCE 15 /* 10 - 20 ms */ ++ ++#define PD_N_CAPS_COUNT (PD_T_NO_RESPONSE / PD_T_SEND_SOURCE_CAP) ++#define PD_N_HARD_RESET_COUNT 1 ++ ++#define PD_P_SNK_STDBY_MW 2500 /* 2500 mW */ ++ ++/* Time to wait for TCPC to complete transmit */ ++#define PD_T_TCPC_TX_TIMEOUT 100 /* in ms */ ++ ++#endif /* __LINUX_USB_PD_H */ +diff --git a/include/usb/tcpm.h b/include/usb/tcpm.h +new file mode 100644 +index 000000000000..4574a5175ddb +--- /dev/null ++++ b/include/usb/tcpm.h +@@ -0,0 +1,99 @@ ++/* SPDX-License-Identifier: GPL-2.0-or-later */ ++/* ++ * Copyright 2015-2017 Google, Inc ++ * Copyright 2024 Collabora ++ */ ++ ++#ifndef __LINUX_USB_TCPM_H ++#define __LINUX_USB_TCPM_H ++ ++#include ++#include ++#include "pd.h" ++ ++enum typec_orientation { ++ TYPEC_ORIENTATION_NONE, ++ TYPEC_ORIENTATION_NORMAL, ++ TYPEC_ORIENTATION_REVERSE, ++}; ++ ++enum typec_cc_status { ++ TYPEC_CC_OPEN, ++ TYPEC_CC_RA, ++ TYPEC_CC_RD, ++ TYPEC_CC_RP_DEF, ++ TYPEC_CC_RP_1_5, ++ TYPEC_CC_RP_3_0, ++}; ++ ++enum typec_cc_polarity { ++ TYPEC_POLARITY_CC1, ++ TYPEC_POLARITY_CC2, ++}; ++ ++enum tcpm_transmit_status { ++ TCPC_TX_SUCCESS = 0, ++ TCPC_TX_DISCARDED = 1, ++ TCPC_TX_FAILED = 2, ++}; ++ ++enum tcpm_transmit_type { ++ TCPC_TX_SOP = 0, ++ TCPC_TX_SOP_PRIME = 1, ++ TCPC_TX_SOP_PRIME_PRIME = 2, ++ TCPC_TX_SOP_DEBUG_PRIME = 3, ++ TCPC_TX_SOP_DEBUG_PRIME_PRIME = 4, ++ TCPC_TX_HARD_RESET = 5, ++ TCPC_TX_CABLE_RESET = 6, ++ TCPC_TX_BIST_MODE_2 = 7 ++}; ++ ++struct dm_tcpm_ops { ++ int (*get_connector_node)(struct udevice *dev, ofnode *connector_node); ++ int (*init)(struct udevice *dev); ++ int (*get_vbus)(struct udevice *dev); ++ int (*set_cc)(struct udevice *dev, enum typec_cc_status cc); ++ int (*get_cc)(struct udevice *dev, enum typec_cc_status *cc1, ++ enum typec_cc_status *cc2); ++ int (*set_polarity)(struct udevice *dev, ++ enum typec_cc_polarity polarity); ++ int (*set_vconn)(struct udevice *dev, bool on); ++ int (*set_vbus)(struct udevice *dev, bool on, bool charge); ++ int (*set_pd_rx)(struct udevice *dev, bool on); ++ int (*set_roles)(struct udevice *dev, bool attached, ++ enum typec_role role, enum typec_data_role data); ++ int (*start_toggling)(struct udevice *dev, ++ enum typec_port_type port_type, ++ enum typec_cc_status cc); ++ int (*pd_transmit)(struct udevice *dev, enum tcpm_transmit_type type, ++ const struct pd_message *msg, unsigned int negotiated_rev); ++ void (*poll_event)(struct udevice *dev); ++ int (*enter_low_power_mode)(struct udevice *dev, bool attached, bool pd_capable); ++}; ++ ++/* API for drivers */ ++void tcpm_vbus_change(struct udevice *dev); ++void tcpm_cc_change(struct udevice *dev); ++void tcpm_pd_receive(struct udevice *dev, const struct pd_message *msg); ++void tcpm_pd_transmit_complete(struct udevice *dev, ++ enum tcpm_transmit_status status); ++void tcpm_pd_hard_reset(struct udevice *dev); ++ ++/* API for boards */ ++extern const char * const typec_pd_rev_name[]; ++extern const char * const typec_orientation_name[]; ++extern const char * const typec_role_name[]; ++extern const char * const typec_data_role_name[]; ++extern const char * const typec_cc_status_name[]; ++ ++int tcpm_get(const char *name, struct udevice **devp); ++int tcpm_get_pd_rev(struct udevice *dev); ++int tcpm_get_current(struct udevice *dev); ++int tcpm_get_voltage(struct udevice *dev); ++enum typec_orientation tcpm_get_orientation(struct udevice *dev); ++enum typec_role tcpm_get_pwr_role(struct udevice *dev); ++enum typec_data_role tcpm_get_data_role(struct udevice *dev); ++bool tcpm_is_connected(struct udevice *dev); ++const char *tcpm_get_state(struct udevice *dev); ++ ++#endif /* __LINUX_USB_TCPM_H */ + +From patchwork Thu Sep 5 15:08:38 2024 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sebastian Reichel +X-Patchwork-Id: 1981316 +X-Patchwork-Delegate: ykai007@gmail.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=collabora.com header.i=@collabora.com + header.a=rsa-sha256 header.s=mail header.b=d3aozlfW; + 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 4X030913Sdz1yXY + for ; Fri, 6 Sep 2024 01:18:17 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 4C12888CC2; + Thu, 5 Sep 2024 17:17:19 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=collabora.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=collabora.com header.i=@collabora.com + header.b="d3aozlfW"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id F400788CC2; Thu, 5 Sep 2024 17:17:17 +0200 (CEST) +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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no + version=3.4.2 +Received: from bali.collaboradmins.com (bali.collaboradmins.com + [IPv6:2a01:4f8:201:9162::2]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 4C6CB88CB8 + for ; Thu, 5 Sep 2024 17:17:13 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=collabora.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=sebastian.reichel@collabora.com +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; + s=mail; t=1725549433; + bh=fuHT4MalSjyQfKUjWdVq0nVnduu/AbWGeUChYJaCIeY=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=d3aozlfWwAG+KQBk/EM6vpvcIoIEEksahdSc+LhMi76PX8NNsu3zOQomQcug5dlmD + kqV/SDj3yszJBox46C1h2pfHNNLn7CD/u95G6BwH0A4cv33ZsWN3fEhJQKbkS9sUOB + hFzSWoKr7kCx/KDvBcjoS9Q5063JFZ6CJ1MF7XGgxT3H7WOMEybvC26Mp+j1/c1HNn + vWSjbh5lkW/dpx1unm3PUgMYNy2yrfANnaSFG7vKNtHyq0xHhs2qgOb4fATE80nKVY + RAY1F8b1JTYImazFA3NryRuA50InmvmHjpu9pyx8OQjy05tbnuScyau9SuyjO7usip + Q4lcqzzIB8AlQ== +Received: from jupiter.universe (dyndsl-091-248-189-231.ewe-ip-backbone.de + [91.248.189.231]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) (Authenticated sender: sre) + by bali.collaboradmins.com (Postfix) with ESMTPSA id ED3E617E0FD9; + Thu, 5 Sep 2024 17:17:12 +0200 (CEST) +Received: by jupiter.universe (Postfix, from userid 1000) + id A19EE4800F4; Thu, 05 Sep 2024 17:17:07 +0200 (CEST) +From: Sebastian Reichel +To: Marek Vasut , u-boot@lists.denx.de, + Jonas Karlman , Soeren Moch +Cc: Eugen Hristev , + Tim Harvey , Kever Yang , + Philipp Tomsich , Simon Glass , + Sebastian Reichel +Subject: [PATCH v6 2/6] usb: tcpm: fusb302: add driver +Date: Thu, 5 Sep 2024 17:08:38 +0200 +Message-ID: <20240905151707.59101-3-sebastian.reichel@collabora.com> +X-Mailer: git-send-email 2.45.2 +In-Reply-To: <20240905151707.59101-1-sebastian.reichel@collabora.com> +References: <20240905151707.59101-1-sebastian.reichel@collabora.com> +MIME-Version: 1.0 +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 + +Now that the TCPM framework exists we can introduce fusb302 +driver using it. This chip is a very common USB-C controller +chip with PD support, which can be found in the Radxa Rock 5B +among many other boards. Apart from Power Delivery, it also +handles detection of the cable orientation. That can be used +to control a mux for connecting the right USB3 lane pair to +the USB3 controller. + +The driver is originally from the Linux kernel, but has been +adapted to the requirements of U-Boot and its TCPM framework. + +Co-developed-by: Wang Jie +Signed-off-by: Wang Jie +Tested-by: Soeren Moch +Signed-off-by: Sebastian Reichel +--- + drivers/usb/tcpm/Kconfig | 8 + + drivers/usb/tcpm/Makefile | 1 + + drivers/usb/tcpm/fusb302.c | 1323 ++++++++++++++++++++++++++++++++ + drivers/usb/tcpm/fusb302_reg.h | 177 +++++ + 4 files changed, 1509 insertions(+) + create mode 100644 drivers/usb/tcpm/fusb302.c + create mode 100644 drivers/usb/tcpm/fusb302_reg.h + +diff --git a/drivers/usb/tcpm/Kconfig b/drivers/usb/tcpm/Kconfig +index 55bf8e202b90..9be4b496e82f 100644 +--- a/drivers/usb/tcpm/Kconfig ++++ b/drivers/usb/tcpm/Kconfig +@@ -6,3 +6,11 @@ config TYPEC_TCPM + help + The Type-C Port Controller Manager provides a USB PD and USB Type-C + state machine for use with Type-C Port Controllers. ++ ++config TYPEC_FUSB302 ++ tristate "Fairchild FUSB302 Type-C chip driver" ++ depends on DM && DM_I2C && TYPEC_TCPM ++ help ++ The Fairchild FUSB302 Type-C chip driver that works with ++ Type-C Port Controller Manager to provide USB PD and USB ++ Type-C functionalities. +diff --git a/drivers/usb/tcpm/Makefile b/drivers/usb/tcpm/Makefile +index a0f76436f3fd..668d33155bf1 100644 +--- a/drivers/usb/tcpm/Makefile ++++ b/drivers/usb/tcpm/Makefile +@@ -1,3 +1,4 @@ + # SPDX-License-Identifier: GPL-2.0 + + obj-$(CONFIG_TYPEC_TCPM) += tcpm.o tcpm-uclass.o ++obj-$(CONFIG_TYPEC_FUSB302) += fusb302.o +diff --git a/drivers/usb/tcpm/fusb302.c b/drivers/usb/tcpm/fusb302.c +new file mode 100644 +index 000000000000..fe93ff3d3397 +--- /dev/null ++++ b/drivers/usb/tcpm/fusb302.c +@@ -0,0 +1,1323 @@ ++// SPDX-License-Identifier: GPL-2.0+ ++/* ++ * Copyright 2016-2017 Google, Inc ++ * ++ * Fairchild FUSB302 Type-C Chip Driver ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include "fusb302_reg.h" ++ ++#define FUSB302_MAX_MSG_LEN 0x1F ++ ++enum toggling_mode { ++ TOGGLING_MODE_OFF, ++ TOGGLING_MODE_DRP, ++ TOGGLING_MODE_SNK, ++ TOGGLING_MODE_SRC, ++}; ++ ++enum src_current_status { ++ SRC_CURRENT_DEFAULT, ++ SRC_CURRENT_MEDIUM, ++ SRC_CURRENT_HIGH, ++}; ++ ++static const u8 ra_mda_value[] = { ++ [SRC_CURRENT_DEFAULT] = 4, /* 210mV */ ++ [SRC_CURRENT_MEDIUM] = 9, /* 420mV */ ++ [SRC_CURRENT_HIGH] = 18, /* 798mV */ ++}; ++ ++static const u8 rd_mda_value[] = { ++ [SRC_CURRENT_DEFAULT] = 38, /* 1638mV */ ++ [SRC_CURRENT_MEDIUM] = 38, /* 1638mV */ ++ [SRC_CURRENT_HIGH] = 61, /* 2604mV */ ++}; ++ ++struct fusb302_chip { ++ enum toggling_mode toggling_mode; ++ enum src_current_status src_current_status; ++ bool intr_togdone; ++ bool intr_bc_lvl; ++ bool intr_comp_chng; ++ ++ /* port status */ ++ bool vconn_on; ++ bool vbus_present; ++ enum typec_cc_polarity cc_polarity; ++ enum typec_cc_status cc1; ++ enum typec_cc_status cc2; ++}; ++ ++static int fusb302_i2c_write(struct udevice *dev, u8 address, u8 data) ++{ ++ int ret; ++ ++ ret = dm_i2c_write(dev, address, &data, 1); ++ if (ret) ++ dev_err(dev, "cannot write 0x%02x to 0x%02x, ret=%d\n", ++ data, address, ret); ++ ++ return ret; ++} ++ ++static int fusb302_i2c_block_write(struct udevice *dev, u8 address, ++ u8 length, const u8 *data) ++{ ++ int ret; ++ ++ if (!length) ++ return 0; ++ ++ ret = dm_i2c_write(dev, address, data, length); ++ if (ret) ++ dev_err(dev, "cannot block write 0x%02x, len=%d, ret=%d\n", ++ address, length, ret); ++ ++ return ret; ++} ++ ++static int fusb302_i2c_read(struct udevice *dev, u8 address, u8 *data) ++{ ++ int ret, retries; ++ ++ for (retries = 0; retries < 3; retries++) { ++ ret = dm_i2c_read(dev, address, data, 1); ++ if (ret == 0) ++ return ret; ++ dev_err(dev, "cannot read %02x, ret=%d\n", address, ret); ++ } ++ ++ return ret; ++} ++ ++static int fusb302_i2c_block_read(struct udevice *dev, u8 address, ++ u8 length, u8 *data) ++{ ++ int ret; ++ ++ if (!length) ++ return 0; ++ ++ ret = dm_i2c_read(dev, address, data, length); ++ if (ret) ++ dev_err(dev, "cannot block read 0x%02x, len=%d, ret=%d\n", ++ address, length, ret); ++ return ret; ++} ++ ++static int fusb302_i2c_mask_write(struct udevice *dev, u8 address, ++ u8 mask, u8 value) ++{ ++ int ret; ++ u8 data; ++ ++ ret = fusb302_i2c_read(dev, address, &data); ++ if (ret) ++ return ret; ++ data &= ~mask; ++ data |= value; ++ ret = fusb302_i2c_write(dev, address, data); ++ if (ret) ++ return ret; ++ ++ return ret; ++} ++ ++static int fusb302_i2c_set_bits(struct udevice *dev, u8 address, u8 set_bits) ++{ ++ return fusb302_i2c_mask_write(dev, address, 0x00, set_bits); ++} ++ ++static int fusb302_i2c_clear_bits(struct udevice *dev, u8 address, u8 clear_bits) ++{ ++ return fusb302_i2c_mask_write(dev, address, clear_bits, 0x00); ++} ++ ++static int fusb302_sw_reset(struct udevice *dev) ++{ ++ int ret = fusb302_i2c_write(dev, FUSB_REG_RESET, FUSB_REG_RESET_SW_RESET); ++ ++ if (ret) ++ dev_err(dev, "cannot sw reset the fusb302: %d\n", ret); ++ ++ return ret; ++} ++ ++static int fusb302_enable_tx_auto_retries(struct udevice *dev, u8 retry_count) ++{ ++ int ret; ++ ++ ret = fusb302_i2c_set_bits(dev, FUSB_REG_CONTROL3, retry_count | ++ FUSB_REG_CONTROL3_AUTO_RETRY); ++ ++ return ret; ++} ++ ++/* ++ * mask all interrupt on the chip ++ */ ++static int fusb302_mask_interrupt(struct udevice *dev) ++{ ++ int ret; ++ ++ ret = fusb302_i2c_write(dev, FUSB_REG_MASK, 0xFF); ++ if (ret) ++ return ret; ++ ret = fusb302_i2c_write(dev, FUSB_REG_MASKA, 0xFF); ++ if (ret) ++ return ret; ++ ret = fusb302_i2c_write(dev, FUSB_REG_MASKB, 0xFF); ++ if (ret) ++ return ret; ++ ret = fusb302_i2c_set_bits(dev, FUSB_REG_CONTROL0, ++ FUSB_REG_CONTROL0_INT_MASK); ++ return ret; ++} ++ ++/* ++ * initialize interrupt on the chip ++ * - unmasked interrupt: VBUS_OK ++ */ ++static int fusb302_init_interrupt(struct udevice *dev) ++{ ++ int ret; ++ ++ ret = fusb302_i2c_write(dev, FUSB_REG_MASK, ++ 0xFF & ~FUSB_REG_MASK_VBUSOK); ++ if (ret) ++ return ret; ++ ret = fusb302_i2c_write(dev, FUSB_REG_MASKA, 0xFF); ++ if (ret) ++ return ret; ++ ret = fusb302_i2c_write(dev, FUSB_REG_MASKB, 0xFF); ++ if (ret) ++ return ret; ++ ret = fusb302_i2c_clear_bits(dev, FUSB_REG_CONTROL0, ++ FUSB_REG_CONTROL0_INT_MASK); ++ return ret; ++} ++ ++static int fusb302_set_power_mode(struct udevice *dev, u8 power_mode) ++{ ++ int ret; ++ ++ ret = fusb302_i2c_write(dev, FUSB_REG_POWER, power_mode); ++ ++ return ret; ++} ++ ++static int fusb302_init(struct udevice *dev) ++{ ++ struct fusb302_chip *chip = dev_get_priv(dev); ++ int ret; ++ u8 data; ++ ++ ret = fusb302_sw_reset(dev); ++ if (ret) ++ return ret; ++ ret = fusb302_enable_tx_auto_retries(dev, FUSB_REG_CONTROL3_N_RETRIES_3); ++ if (ret) ++ return ret; ++ ret = fusb302_init_interrupt(dev); ++ if (ret) ++ return ret; ++ ret = fusb302_set_power_mode(dev, FUSB_REG_POWER_PWR_ALL); ++ if (ret) ++ return ret; ++ ret = fusb302_i2c_read(dev, FUSB_REG_STATUS0, &data); ++ if (ret) ++ return ret; ++ chip->vbus_present = !!(data & FUSB_REG_STATUS0_VBUSOK); ++ ret = fusb302_i2c_read(dev, FUSB_REG_DEVICE_ID, &data); ++ if (ret) ++ return ret; ++ dev_info(dev, "fusb302 device ID: 0x%02x\n", data); ++ ++ return ret; ++} ++ ++static int fusb302_get_vbus(struct udevice *dev) ++{ ++ struct fusb302_chip *chip = dev_get_priv(dev); ++ ++ return chip->vbus_present ? 1 : 0; ++} ++ ++static int fusb302_set_src_current(struct udevice *dev, ++ enum src_current_status status) ++{ ++ struct fusb302_chip *chip = dev_get_priv(dev); ++ int ret; ++ ++ chip->src_current_status = status; ++ switch (status) { ++ case SRC_CURRENT_DEFAULT: ++ ret = fusb302_i2c_mask_write(dev, FUSB_REG_CONTROL0, ++ FUSB_REG_CONTROL0_HOST_CUR_MASK, ++ FUSB_REG_CONTROL0_HOST_CUR_DEF); ++ break; ++ case SRC_CURRENT_MEDIUM: ++ ret = fusb302_i2c_mask_write(dev, FUSB_REG_CONTROL0, ++ FUSB_REG_CONTROL0_HOST_CUR_MASK, ++ FUSB_REG_CONTROL0_HOST_CUR_MED); ++ break; ++ case SRC_CURRENT_HIGH: ++ ret = fusb302_i2c_mask_write(dev, FUSB_REG_CONTROL0, ++ FUSB_REG_CONTROL0_HOST_CUR_MASK, ++ FUSB_REG_CONTROL0_HOST_CUR_HIGH); ++ break; ++ default: ++ ret = -EINVAL; ++ break; ++ } ++ ++ return ret; ++} ++ ++static int fusb302_set_toggling(struct udevice *dev, ++ enum toggling_mode mode) ++{ ++ struct fusb302_chip *chip = dev_get_priv(dev); ++ int ret; ++ ++ /* first disable toggling */ ++ ret = fusb302_i2c_clear_bits(dev, FUSB_REG_CONTROL2, ++ FUSB_REG_CONTROL2_TOGGLE); ++ if (ret) ++ return ret; ++ /* mask interrupts for SRC or SNK */ ++ ret = fusb302_i2c_set_bits(dev, FUSB_REG_MASK, ++ FUSB_REG_MASK_BC_LVL | ++ FUSB_REG_MASK_COMP_CHNG); ++ if (ret) ++ return ret; ++ chip->intr_bc_lvl = false; ++ chip->intr_comp_chng = false; ++ /* configure toggling mode: none/snk/src/drp */ ++ switch (mode) { ++ case TOGGLING_MODE_OFF: ++ ret = fusb302_i2c_mask_write(dev, FUSB_REG_CONTROL2, ++ FUSB_REG_CONTROL2_MODE_MASK, ++ FUSB_REG_CONTROL2_MODE_NONE); ++ break; ++ case TOGGLING_MODE_SNK: ++ ret = fusb302_i2c_mask_write(dev, FUSB_REG_CONTROL2, ++ FUSB_REG_CONTROL2_MODE_MASK, ++ FUSB_REG_CONTROL2_MODE_UFP); ++ break; ++ case TOGGLING_MODE_SRC: ++ ret = fusb302_i2c_mask_write(dev, FUSB_REG_CONTROL2, ++ FUSB_REG_CONTROL2_MODE_MASK, ++ FUSB_REG_CONTROL2_MODE_DFP); ++ break; ++ case TOGGLING_MODE_DRP: ++ ret = fusb302_i2c_mask_write(dev, FUSB_REG_CONTROL2, ++ FUSB_REG_CONTROL2_MODE_MASK, ++ FUSB_REG_CONTROL2_MODE_DRP); ++ break; ++ default: ++ break; ++ } ++ ++ if (ret) ++ return ret; ++ ++ if (mode == TOGGLING_MODE_OFF) { ++ /* mask TOGDONE interrupt */ ++ ret = fusb302_i2c_set_bits(dev, FUSB_REG_MASKA, ++ FUSB_REG_MASKA_TOGDONE); ++ if (ret) ++ return ret; ++ chip->intr_togdone = false; ++ } else { ++ /* Datasheet says vconn MUST be off when toggling */ ++ if (chip->vconn_on) ++ dev_warn(dev, "Vconn is on during toggle start\n"); ++ /* unmask TOGDONE interrupt */ ++ ret = fusb302_i2c_clear_bits(dev, FUSB_REG_MASKA, ++ FUSB_REG_MASKA_TOGDONE); ++ if (ret) ++ return ret; ++ chip->intr_togdone = true; ++ /* start toggling */ ++ ret = fusb302_i2c_set_bits(dev, FUSB_REG_CONTROL2, ++ FUSB_REG_CONTROL2_TOGGLE); ++ if (ret) ++ return ret; ++ /* during toggling, consider cc as Open */ ++ chip->cc1 = TYPEC_CC_OPEN; ++ chip->cc2 = TYPEC_CC_OPEN; ++ } ++ chip->toggling_mode = mode; ++ ++ return ret; ++} ++ ++static const enum src_current_status cc_src_current[] = { ++ [TYPEC_CC_OPEN] = SRC_CURRENT_DEFAULT, ++ [TYPEC_CC_RA] = SRC_CURRENT_DEFAULT, ++ [TYPEC_CC_RD] = SRC_CURRENT_DEFAULT, ++ [TYPEC_CC_RP_DEF] = SRC_CURRENT_DEFAULT, ++ [TYPEC_CC_RP_1_5] = SRC_CURRENT_MEDIUM, ++ [TYPEC_CC_RP_3_0] = SRC_CURRENT_HIGH, ++}; ++ ++static int fusb302_set_cc(struct udevice *dev, enum typec_cc_status cc) ++{ ++ struct fusb302_chip *chip = dev_get_priv(dev); ++ const u8 switches0_mask = FUSB_REG_SWITCHES0_CC1_PU_EN | ++ FUSB_REG_SWITCHES0_CC2_PU_EN | ++ FUSB_REG_SWITCHES0_CC1_PD_EN | ++ FUSB_REG_SWITCHES0_CC2_PD_EN; ++ u8 rd_mda, switches0_data = 0x00; ++ int ret; ++ ++ switch (cc) { ++ case TYPEC_CC_OPEN: ++ break; ++ case TYPEC_CC_RD: ++ switches0_data |= FUSB_REG_SWITCHES0_CC1_PD_EN | ++ FUSB_REG_SWITCHES0_CC2_PD_EN; ++ break; ++ case TYPEC_CC_RP_DEF: ++ case TYPEC_CC_RP_1_5: ++ case TYPEC_CC_RP_3_0: ++ switches0_data |= (chip->cc_polarity == TYPEC_POLARITY_CC1) ? ++ FUSB_REG_SWITCHES0_CC1_PU_EN : ++ FUSB_REG_SWITCHES0_CC2_PU_EN; ++ break; ++ default: ++ dev_err(dev, "unsupported CC value: %s\n", ++ typec_cc_status_name[cc]); ++ ret = -EINVAL; ++ goto done; ++ } ++ ++ ret = fusb302_set_toggling(dev, TOGGLING_MODE_OFF); ++ if (ret) { ++ dev_err(dev, "cannot set toggling mode: %d\n", ret); ++ goto done; ++ } ++ ++ ret = fusb302_i2c_mask_write(dev, FUSB_REG_SWITCHES0, ++ switches0_mask, switches0_data); ++ if (ret) { ++ dev_err(dev, "cannot set pull-up/-down: %d\n", ret); ++ goto done; ++ } ++ /* reset the cc status */ ++ chip->cc1 = TYPEC_CC_OPEN; ++ chip->cc2 = TYPEC_CC_OPEN; ++ ++ /* adjust current for SRC */ ++ ret = fusb302_set_src_current(dev, cc_src_current[cc]); ++ if (ret) { ++ dev_err(dev, "cannot set src current %s: %d\n", ++ typec_cc_status_name[cc], ret); ++ goto done; ++ } ++ ++ /* enable/disable interrupts, BC_LVL for SNK and COMP_CHNG for SRC */ ++ switch (cc) { ++ case TYPEC_CC_RP_DEF: ++ case TYPEC_CC_RP_1_5: ++ case TYPEC_CC_RP_3_0: ++ rd_mda = rd_mda_value[cc_src_current[cc]]; ++ ret = fusb302_i2c_write(dev, FUSB_REG_MEASURE, rd_mda); ++ if (ret) { ++ dev_err(dev, "cannot set SRC measure value: %d\n", ret); ++ goto done; ++ } ++ ret = fusb302_i2c_mask_write(dev, FUSB_REG_MASK, ++ FUSB_REG_MASK_BC_LVL | ++ FUSB_REG_MASK_COMP_CHNG, ++ FUSB_REG_MASK_BC_LVL); ++ if (ret) { ++ dev_err(dev, "cannot set SRC irq: %d\n", ret); ++ goto done; ++ } ++ chip->intr_comp_chng = true; ++ break; ++ case TYPEC_CC_RD: ++ ret = fusb302_i2c_mask_write(dev, FUSB_REG_MASK, ++ FUSB_REG_MASK_BC_LVL | ++ FUSB_REG_MASK_COMP_CHNG, ++ FUSB_REG_MASK_COMP_CHNG); ++ if (ret) { ++ dev_err(dev, "cannot set SRC irq: %d\n", ret); ++ goto done; ++ } ++ chip->intr_bc_lvl = true; ++ break; ++ default: ++ break; ++ } ++done: ++ return ret; ++} ++ ++static int fusb302_get_cc(struct udevice *dev, enum typec_cc_status *cc1, ++ enum typec_cc_status *cc2) ++{ ++ struct fusb302_chip *chip = dev_get_priv(dev); ++ ++ *cc1 = chip->cc1; ++ *cc2 = chip->cc2; ++ dev_dbg(dev, "get cc1 = %s, cc2 = %s\n", typec_cc_status_name[*cc1], ++ typec_cc_status_name[*cc2]); ++ ++ return 0; ++} ++ ++static int fusb302_set_vconn(struct udevice *dev, bool on) ++{ ++ struct fusb302_chip *chip = dev_get_priv(dev); ++ int ret; ++ u8 switches0_data = 0x00; ++ u8 switches0_mask = FUSB_REG_SWITCHES0_VCONN_CC1 | ++ FUSB_REG_SWITCHES0_VCONN_CC2; ++ ++ if (chip->vconn_on == on) { ++ ret = 0; ++ dev_dbg(dev, "vconn is already %s\n", on ? "on" : "off"); ++ goto done; ++ } ++ if (on) { ++ switches0_data = (chip->cc_polarity == TYPEC_POLARITY_CC1) ? ++ FUSB_REG_SWITCHES0_VCONN_CC2 : ++ FUSB_REG_SWITCHES0_VCONN_CC1; ++ } ++ ret = fusb302_i2c_mask_write(dev, FUSB_REG_SWITCHES0, ++ switches0_mask, switches0_data); ++ if (ret) ++ goto done; ++ dev_dbg(dev, "set vconn = %s\n", on ? "on" : "off"); ++done: ++ return ret; ++} ++ ++static int fusb302_set_vbus(struct udevice *dev, bool on, bool charge) ++{ ++ return 0; ++} ++ ++static int fusb302_pd_tx_flush(struct udevice *dev) ++{ ++ return fusb302_i2c_set_bits(dev, FUSB_REG_CONTROL0, ++ FUSB_REG_CONTROL0_TX_FLUSH); ++} ++ ++static int fusb302_pd_rx_flush(struct udevice *dev) ++{ ++ return fusb302_i2c_set_bits(dev, FUSB_REG_CONTROL1, ++ FUSB_REG_CONTROL1_RX_FLUSH); ++} ++ ++static int fusb302_pd_set_auto_goodcrc(struct udevice *dev, bool on) ++{ ++ if (on) ++ return fusb302_i2c_set_bits(dev, FUSB_REG_SWITCHES1, ++ FUSB_REG_SWITCHES1_AUTO_GCRC); ++ return fusb302_i2c_clear_bits(dev, FUSB_REG_SWITCHES1, ++ FUSB_REG_SWITCHES1_AUTO_GCRC); ++} ++ ++static int fusb302_pd_set_interrupts(struct udevice *dev, bool on) ++{ ++ int ret; ++ u8 mask_interrupts = FUSB_REG_MASK_COLLISION; ++ u8 maska_interrupts = FUSB_REG_MASKA_RETRYFAIL | ++ FUSB_REG_MASKA_HARDSENT | ++ FUSB_REG_MASKA_TX_SUCCESS | ++ FUSB_REG_MASKA_HARDRESET; ++ u8 maskb_interrupts = FUSB_REG_MASKB_GCRCSENT; ++ ++ ret = on ? ++ fusb302_i2c_clear_bits(dev, FUSB_REG_MASK, mask_interrupts) : ++ fusb302_i2c_set_bits(dev, FUSB_REG_MASK, mask_interrupts); ++ if (ret) ++ return ret; ++ ret = on ? ++ fusb302_i2c_clear_bits(dev, FUSB_REG_MASKA, maska_interrupts) : ++ fusb302_i2c_set_bits(dev, FUSB_REG_MASKA, maska_interrupts); ++ if (ret) ++ return ret; ++ ret = on ? ++ fusb302_i2c_clear_bits(dev, FUSB_REG_MASKB, maskb_interrupts) : ++ fusb302_i2c_set_bits(dev, FUSB_REG_MASKB, maskb_interrupts); ++ return ret; ++} ++ ++static int fusb302_set_pd_rx(struct udevice *dev, bool on) ++{ ++ int ret; ++ ++ ret = fusb302_pd_rx_flush(dev); ++ if (ret) { ++ dev_err(dev, "cannot flush pd rx buffer: %d\n", ret); ++ goto done; ++ } ++ ret = fusb302_pd_tx_flush(dev); ++ if (ret) { ++ dev_err(dev, "cannot flush pd tx buffer: %d\n", ret); ++ goto done; ++ } ++ ret = fusb302_pd_set_auto_goodcrc(dev, on); ++ if (ret) { ++ dev_err(dev, "cannot turn %s auto GoodCRC: %d\n", ++ on ? "on" : "off", ret); ++ goto done; ++ } ++ ret = fusb302_pd_set_interrupts(dev, on); ++ if (ret) { ++ dev_err(dev, "cannot turn %s pd interrupts: %d\n", ++ on ? "on" : "off", ret); ++ goto done; ++ } ++ dev_dbg(dev, "set pd RX %s\n", on ? "on" : "off"); ++done: ++ return ret; ++} ++ ++static int fusb302_set_roles(struct udevice *dev, bool attached, ++ enum typec_role pwr, enum typec_data_role data) ++{ ++ int ret; ++ u8 switches1_mask = FUSB_REG_SWITCHES1_POWERROLE | ++ FUSB_REG_SWITCHES1_DATAROLE; ++ u8 switches1_data = 0x00; ++ ++ if (pwr == TYPEC_SOURCE) ++ switches1_data |= FUSB_REG_SWITCHES1_POWERROLE; ++ if (data == TYPEC_HOST) ++ switches1_data |= FUSB_REG_SWITCHES1_DATAROLE; ++ ret = fusb302_i2c_mask_write(dev, FUSB_REG_SWITCHES1, ++ switches1_mask, switches1_data); ++ if (ret) { ++ dev_err(dev, "unable to set pd header %s, %s, ret=%d\n", ++ typec_role_name[pwr], typec_data_role_name[data], ret); ++ goto done; ++ } ++ dev_dbg(dev, "pd header : %s, %s\n", typec_role_name[pwr], ++ typec_data_role_name[data]); ++done: ++ ++ return ret; ++} ++ ++static int fusb302_start_toggling(struct udevice *dev, ++ enum typec_port_type port_type, ++ enum typec_cc_status cc) ++{ ++ enum toggling_mode mode = TOGGLING_MODE_OFF; ++ int ret; ++ ++ switch (port_type) { ++ case TYPEC_PORT_SRC: ++ mode = TOGGLING_MODE_SRC; ++ break; ++ case TYPEC_PORT_SNK: ++ mode = TOGGLING_MODE_SNK; ++ break; ++ case TYPEC_PORT_DRP: ++ mode = TOGGLING_MODE_DRP; ++ break; ++ } ++ ++ ret = fusb302_set_src_current(dev, cc_src_current[cc]); ++ if (ret) { ++ dev_err(dev, "unable to set src current %s, ret=%d", ++ typec_cc_status_name[cc], ret); ++ goto done; ++ } ++ ret = fusb302_set_toggling(dev, mode); ++ if (ret) { ++ dev_err(dev, "unable to start drp toggling: %d\n", ret); ++ goto done; ++ } ++ dev_info(dev, "fusb302 start drp toggling\n"); ++done: ++ ++ return ret; ++} ++ ++static int fusb302_pd_send_message(struct udevice *dev, ++ const struct pd_message *msg) ++{ ++ int ret; ++ /* SOP tokens */ ++ u8 buf[40] = {FUSB302_TKN_SYNC1, FUSB302_TKN_SYNC1, FUSB302_TKN_SYNC1, ++ FUSB302_TKN_SYNC2}; ++ u8 pos = 4; ++ int len; ++ ++ len = pd_header_cnt_le(msg->header) * 4; ++ /* plug 2 for header */ ++ len += 2; ++ if (len > FUSB302_MAX_MSG_LEN) { ++ dev_err(dev, "PD message too long %d (incl. header)", len); ++ return -EINVAL; ++ } ++ /* packsym tells the FUSB302 chip that the next X bytes are payload */ ++ buf[pos++] = FUSB302_TKN_PACKSYM | (len & FUSB302_MAX_MSG_LEN); ++ memcpy(&buf[pos], &msg->header, sizeof(msg->header)); ++ pos += sizeof(msg->header); ++ ++ len -= 2; ++ memcpy(&buf[pos], msg->payload, len); ++ pos += len; ++ ++ /* CRC */ ++ buf[pos++] = FUSB302_TKN_JAMCRC; ++ /* EOP */ ++ buf[pos++] = FUSB302_TKN_EOP; ++ /* turn tx off after sending message */ ++ buf[pos++] = FUSB302_TKN_TXOFF; ++ /* start transmission */ ++ buf[pos++] = FUSB302_TKN_TXON; ++ ++ ret = fusb302_i2c_block_write(dev, FUSB_REG_FIFOS, pos, buf); ++ if (ret) ++ return ret; ++ dev_dbg(dev, "Send PD message (header=0x%x len=%d)\n", msg->header, len); ++ ++ return ret; ++} ++ ++static int fusb302_pd_send_hardreset(struct udevice *dev) ++{ ++ return fusb302_i2c_set_bits(dev, FUSB_REG_CONTROL3, ++ FUSB_REG_CONTROL3_SEND_HARDRESET); ++} ++ ++static const char * const transmit_type_name[] = { ++ [TCPC_TX_SOP] = "SOP", ++ [TCPC_TX_SOP_PRIME] = "SOP'", ++ [TCPC_TX_SOP_PRIME_PRIME] = "SOP''", ++ [TCPC_TX_SOP_DEBUG_PRIME] = "DEBUG'", ++ [TCPC_TX_SOP_DEBUG_PRIME_PRIME] = "DEBUG''", ++ [TCPC_TX_HARD_RESET] = "HARD_RESET", ++ [TCPC_TX_CABLE_RESET] = "CABLE_RESET", ++ [TCPC_TX_BIST_MODE_2] = "BIST_MODE_2", ++}; ++ ++static int fusb302_pd_transmit(struct udevice *dev, enum tcpm_transmit_type type, ++ const struct pd_message *msg, unsigned int negotiated_rev) ++{ ++ int ret; ++ ++ switch (type) { ++ case TCPC_TX_SOP: ++ /* nRetryCount 3 in P2.0 spec, whereas 2 in PD3.0 spec */ ++ ret = fusb302_enable_tx_auto_retries(dev, negotiated_rev > PD_REV20 ? ++ FUSB_REG_CONTROL3_N_RETRIES_2 : ++ FUSB_REG_CONTROL3_N_RETRIES_3); ++ if (ret) ++ dev_err(dev, "cannot update retry count: %d\n", ret); ++ ++ ret = fusb302_pd_send_message(dev, msg); ++ if (ret) ++ dev_err(dev, "cannot send PD message: %d\n", ret); ++ break; ++ case TCPC_TX_HARD_RESET: ++ ret = fusb302_pd_send_hardreset(dev); ++ if (ret) ++ dev_err(dev, "cannot send hardreset: %d\n", ret); ++ break; ++ default: ++ dev_err(dev, "type %s not supported", transmit_type_name[type]); ++ ret = -EINVAL; ++ } ++ ++ return ret; ++} ++ ++static enum typec_cc_status fusb302_bc_lvl_to_cc(u8 bc_lvl) ++{ ++ if (bc_lvl == FUSB_REG_STATUS0_BC_LVL_1230_MAX) ++ return TYPEC_CC_RP_3_0; ++ if (bc_lvl == FUSB_REG_STATUS0_BC_LVL_600_1230) ++ return TYPEC_CC_RP_1_5; ++ if (bc_lvl == FUSB_REG_STATUS0_BC_LVL_200_600) ++ return TYPEC_CC_RP_DEF; ++ return TYPEC_CC_OPEN; ++} ++ ++static void fusb302_bc_lvl_handler(struct udevice *dev) ++{ ++ struct fusb302_chip *chip = dev_get_priv(dev); ++ enum typec_cc_status cc_status; ++ u8 status0, bc_lvl; ++ int ret; ++ ++ if (!chip->intr_bc_lvl) { ++ dev_err(dev, "BC_LVL interrupt is turned off, abort\n"); ++ goto done; ++ } ++ ret = fusb302_i2c_read(dev, FUSB_REG_STATUS0, &status0); ++ if (ret) ++ goto done; ++ ++ dev_dbg(dev, "BC_LVL handler, status0 = 0x%02x\n", status0); ++ if (status0 & FUSB_REG_STATUS0_ACTIVITY) ++ dev_info(dev, "CC activities detected, delay handling\n"); ++ bc_lvl = status0 & FUSB_REG_STATUS0_BC_LVL_MASK; ++ cc_status = fusb302_bc_lvl_to_cc(bc_lvl); ++ if (chip->cc_polarity == TYPEC_POLARITY_CC1) { ++ if (chip->cc1 != cc_status) { ++ dev_dbg(dev, "cc1: %s -> %s\n", ++ typec_cc_status_name[chip->cc1], ++ typec_cc_status_name[cc_status]); ++ chip->cc1 = cc_status; ++ tcpm_cc_change(dev); ++ } ++ } else { ++ if (chip->cc2 != cc_status) { ++ dev_dbg(dev, "cc2: %s -> %s\n", ++ typec_cc_status_name[chip->cc2], ++ typec_cc_status_name[cc_status]); ++ chip->cc2 = cc_status; ++ tcpm_cc_change(dev); ++ } ++ } ++ ++done: ++ return; ++} ++ ++static int fusb302_enter_low_power_mode(struct udevice *dev, ++ bool attached, bool pd_capable) ++{ ++ unsigned int reg; ++ int ret; ++ ++ ret = fusb302_mask_interrupt(dev); ++ if (ret) ++ return ret; ++ if (attached && pd_capable) ++ reg = FUSB_REG_POWER_PWR_MEDIUM; ++ else if (attached) ++ reg = FUSB_REG_POWER_PWR_LOW; ++ else ++ reg = 0; ++ ++ return fusb302_set_power_mode(dev, reg); ++} ++ ++static const char * const cc_polarity_name[] = { ++ [TYPEC_POLARITY_CC1] = "Polarity_CC1", ++ [TYPEC_POLARITY_CC2] = "Polarity_CC2", ++}; ++ ++static int fusb302_set_cc_polarity_and_pull(struct udevice *dev, ++ enum typec_cc_polarity cc_polarity, ++ bool pull_up, bool pull_down) ++{ ++ struct fusb302_chip *chip = dev_get_priv(dev); ++ int ret; ++ u8 switches0_data = 0x00; ++ u8 switches1_mask = FUSB_REG_SWITCHES1_TXCC1_EN | ++ FUSB_REG_SWITCHES1_TXCC2_EN; ++ u8 switches1_data = 0x00; ++ ++ if (pull_down) ++ switches0_data |= FUSB_REG_SWITCHES0_CC1_PD_EN | ++ FUSB_REG_SWITCHES0_CC2_PD_EN; ++ ++ if (cc_polarity == TYPEC_POLARITY_CC1) { ++ switches0_data |= FUSB_REG_SWITCHES0_MEAS_CC1; ++ if (chip->vconn_on) ++ switches0_data |= FUSB_REG_SWITCHES0_VCONN_CC2; ++ if (pull_up) ++ switches0_data |= FUSB_REG_SWITCHES0_CC1_PU_EN; ++ switches1_data = FUSB_REG_SWITCHES1_TXCC1_EN; ++ } else { ++ switches0_data |= FUSB_REG_SWITCHES0_MEAS_CC2; ++ if (chip->vconn_on) ++ switches0_data |= FUSB_REG_SWITCHES0_VCONN_CC1; ++ if (pull_up) ++ switches0_data |= FUSB_REG_SWITCHES0_CC2_PU_EN; ++ switches1_data = FUSB_REG_SWITCHES1_TXCC2_EN; ++ } ++ ret = fusb302_i2c_write(dev, FUSB_REG_SWITCHES0, switches0_data); ++ if (ret) ++ return ret; ++ ret = fusb302_i2c_mask_write(dev, FUSB_REG_SWITCHES1, ++ switches1_mask, switches1_data); ++ if (ret) ++ return ret; ++ chip->cc_polarity = cc_polarity; ++ ++ return ret; ++} ++ ++static int fusb302_handle_togdone_snk(struct udevice *dev, ++ u8 togdone_result) ++{ ++ struct fusb302_chip *chip = dev_get_priv(dev); ++ int ret; ++ u8 status0; ++ u8 bc_lvl; ++ enum typec_cc_polarity cc_polarity; ++ enum typec_cc_status cc_status_active, cc1, cc2; ++ ++ /* set polarity and pull_up, pull_down */ ++ cc_polarity = (togdone_result == FUSB_REG_STATUS1A_TOGSS_SNK1) ? ++ TYPEC_POLARITY_CC1 : TYPEC_POLARITY_CC2; ++ ret = fusb302_set_cc_polarity_and_pull(dev, cc_polarity, false, true); ++ if (ret) { ++ dev_err(dev, "cannot set cc polarity %s, ret = %d\n", ++ cc_polarity_name[cc_polarity], ret); ++ return ret; ++ } ++ /* fusb302_set_cc_polarity() has set the correct measure block */ ++ ret = fusb302_i2c_read(dev, FUSB_REG_STATUS0, &status0); ++ if (ret < 0) ++ return ret; ++ bc_lvl = status0 & FUSB_REG_STATUS0_BC_LVL_MASK; ++ cc_status_active = fusb302_bc_lvl_to_cc(bc_lvl); ++ /* restart toggling if the cc status on the active line is OPEN */ ++ if (cc_status_active == TYPEC_CC_OPEN) { ++ dev_info(dev, "restart toggling as CC_OPEN detected\n"); ++ ret = fusb302_set_toggling(dev, chip->toggling_mode); ++ return ret; ++ } ++ /* update tcpm with the new cc value */ ++ cc1 = (cc_polarity == TYPEC_POLARITY_CC1) ? ++ cc_status_active : TYPEC_CC_OPEN; ++ cc2 = (cc_polarity == TYPEC_POLARITY_CC2) ? ++ cc_status_active : TYPEC_CC_OPEN; ++ if (chip->cc1 != cc1 || chip->cc2 != cc2) { ++ chip->cc1 = cc1; ++ chip->cc2 = cc2; ++ tcpm_cc_change(dev); ++ } ++ /* turn off toggling */ ++ ret = fusb302_set_toggling(dev, TOGGLING_MODE_OFF); ++ if (ret) { ++ dev_err(dev, "cannot set toggling mode off, ret=%d\n", ret); ++ return ret; ++ } ++ /* unmask bc_lvl interrupt */ ++ ret = fusb302_i2c_clear_bits(dev, FUSB_REG_MASK, FUSB_REG_MASK_BC_LVL); ++ if (ret) { ++ dev_err(dev, "cannot unmask bc_lcl irq, ret=%d\n", ret); ++ return ret; ++ } ++ chip->intr_bc_lvl = true; ++ dev_dbg(dev, "detected cc1=%s, cc2=%s\n", ++ typec_cc_status_name[cc1], ++ typec_cc_status_name[cc2]); ++ ++ return ret; ++} ++ ++/* On error returns < 0, otherwise a typec_cc_status value */ ++static int fusb302_get_src_cc_status(struct udevice *dev, ++ enum typec_cc_polarity cc_polarity, ++ enum typec_cc_status *cc) ++{ ++ struct fusb302_chip *chip = dev_get_priv(dev); ++ u8 ra_mda = ra_mda_value[chip->src_current_status]; ++ u8 rd_mda = rd_mda_value[chip->src_current_status]; ++ u8 switches0_data, status0; ++ int ret; ++ ++ /* Step 1: Set switches so that we measure the right CC pin */ ++ switches0_data = (cc_polarity == TYPEC_POLARITY_CC1) ? ++ FUSB_REG_SWITCHES0_CC1_PU_EN | FUSB_REG_SWITCHES0_MEAS_CC1 : ++ FUSB_REG_SWITCHES0_CC2_PU_EN | FUSB_REG_SWITCHES0_MEAS_CC2; ++ ret = fusb302_i2c_write(dev, FUSB_REG_SWITCHES0, switches0_data); ++ if (ret < 0) ++ return ret; ++ ++ fusb302_i2c_read(dev, FUSB_REG_SWITCHES0, &status0); ++ dev_dbg(dev, "get_src_cc_status switches: 0x%0x", status0); ++ ++ /* Step 2: Set compararator volt to differentiate between Open and Rd */ ++ ret = fusb302_i2c_write(dev, FUSB_REG_MEASURE, rd_mda); ++ if (ret) ++ return ret; ++ ++ udelay(100); ++ ret = fusb302_i2c_read(dev, FUSB_REG_STATUS0, &status0); ++ if (ret) ++ return ret; ++ ++ dev_dbg(dev, "get_src_cc_status rd_mda status0: 0x%0x", status0); ++ if (status0 & FUSB_REG_STATUS0_COMP) { ++ *cc = TYPEC_CC_OPEN; ++ return 0; ++ } ++ ++ /* Step 3: Set compararator input to differentiate between Rd and Ra. */ ++ ret = fusb302_i2c_write(dev, FUSB_REG_MEASURE, ra_mda); ++ if (ret) ++ return ret; ++ ++ udelay(100); ++ ret = fusb302_i2c_read(dev, FUSB_REG_STATUS0, &status0); ++ if (ret) ++ return ret; ++ ++ dev_dbg(dev, "get_src_cc_status ra_mda status0: 0x%0x", status0); ++ if (status0 & FUSB_REG_STATUS0_COMP) ++ *cc = TYPEC_CC_RD; ++ else ++ *cc = TYPEC_CC_RA; ++ ++ return 0; ++} ++ ++static int fusb302_handle_togdone_src(struct udevice *dev, ++ u8 togdone_result) ++{ ++ /* ++ * - set polarity (measure cc, vconn, tx) ++ * - set pull_up, pull_down ++ * - set cc1, cc2, and update to tcpm state machine ++ * - set I_COMP interrupt on ++ */ ++ struct fusb302_chip *chip = dev_get_priv(dev); ++ u8 rd_mda = rd_mda_value[chip->src_current_status]; ++ enum toggling_mode toggling_mode = chip->toggling_mode; ++ enum typec_cc_polarity cc_polarity; ++ enum typec_cc_status cc1, cc2; ++ int ret; ++ ++ /* ++ * The toggle-engine will stop in a src state if it sees either Ra or ++ * Rd. Determine the status for both CC pins, starting with the one ++ * where toggling stopped, as that is where the switches point now. ++ */ ++ if (togdone_result == FUSB_REG_STATUS1A_TOGSS_SRC1) ++ ret = fusb302_get_src_cc_status(dev, TYPEC_POLARITY_CC1, &cc1); ++ else ++ ret = fusb302_get_src_cc_status(dev, TYPEC_POLARITY_CC2, &cc2); ++ if (ret) ++ return ret; ++ /* we must turn off toggling before we can measure the other pin */ ++ ret = fusb302_set_toggling(dev, TOGGLING_MODE_OFF); ++ if (ret) { ++ dev_err(dev, "cannot set toggling mode off, ret=%d\n", ret); ++ return ret; ++ } ++ /* get the status of the other pin */ ++ if (togdone_result == FUSB_REG_STATUS1A_TOGSS_SRC1) ++ ret = fusb302_get_src_cc_status(dev, TYPEC_POLARITY_CC2, &cc2); ++ else ++ ret = fusb302_get_src_cc_status(dev, TYPEC_POLARITY_CC1, &cc1); ++ if (ret) ++ return ret; ++ ++ /* determine polarity based on the status of both pins */ ++ if (cc1 == TYPEC_CC_RD && (cc2 == TYPEC_CC_OPEN || cc2 == TYPEC_CC_RA)) { ++ cc_polarity = TYPEC_POLARITY_CC1; ++ } else if (cc2 == TYPEC_CC_RD && ++ (cc1 == TYPEC_CC_OPEN || cc1 == TYPEC_CC_RA)) { ++ cc_polarity = TYPEC_POLARITY_CC2; ++ } else { ++ dev_err(dev, "unexpected CC status cc1=%s, cc2=%s, restarting toggling\n", ++ typec_cc_status_name[cc1], ++ typec_cc_status_name[cc2]); ++ return fusb302_set_toggling(dev, toggling_mode); ++ } ++ /* set polarity and pull_up, pull_down */ ++ ret = fusb302_set_cc_polarity_and_pull(dev, cc_polarity, true, false); ++ if (ret < 0) { ++ dev_err(dev, "cannot set cc polarity %s, ret=%d\n", ++ cc_polarity_name[cc_polarity], ret); ++ return ret; ++ } ++ /* update tcpm with the new cc value */ ++ if (chip->cc1 != cc1 || chip->cc2 != cc2) { ++ chip->cc1 = cc1; ++ chip->cc2 = cc2; ++ tcpm_cc_change(dev); ++ } ++ /* set MDAC to Rd threshold, and unmask I_COMP for unplug detection */ ++ ret = fusb302_i2c_write(dev, FUSB_REG_MEASURE, rd_mda); ++ if (ret) ++ return ret; ++ /* unmask comp_chng interrupt */ ++ ret = fusb302_i2c_clear_bits(dev, FUSB_REG_MASK, ++ FUSB_REG_MASK_COMP_CHNG); ++ if (ret) { ++ dev_err(dev, "cannot unmask comp_chng irq, ret=%d\n", ret); ++ return ret; ++ } ++ chip->intr_comp_chng = true; ++ dev_dbg(dev, "detected cc1=%s, cc2=%s\n", ++ typec_cc_status_name[cc1], ++ typec_cc_status_name[cc2]); ++ ++ return ret; ++} ++ ++static int fusb302_handle_togdone(struct udevice *dev) ++{ ++ struct fusb302_chip *chip = dev_get_priv(dev); ++ u8 togdone_result, status1a; ++ int ret; ++ ++ ret = fusb302_i2c_read(dev, FUSB_REG_STATUS1A, &status1a); ++ if (ret < 0) ++ return ret; ++ togdone_result = (status1a >> FUSB_REG_STATUS1A_TOGSS_POS) & ++ FUSB_REG_STATUS1A_TOGSS_MASK; ++ switch (togdone_result) { ++ case FUSB_REG_STATUS1A_TOGSS_SNK1: ++ case FUSB_REG_STATUS1A_TOGSS_SNK2: ++ return fusb302_handle_togdone_snk(dev, togdone_result); ++ case FUSB_REG_STATUS1A_TOGSS_SRC1: ++ case FUSB_REG_STATUS1A_TOGSS_SRC2: ++ return fusb302_handle_togdone_src(dev, togdone_result); ++ case FUSB_REG_STATUS1A_TOGSS_AA: ++ /* doesn't support */ ++ dev_err(dev, "AudioAccessory not supported\n"); ++ fusb302_set_toggling(dev, chip->toggling_mode); ++ break; ++ default: ++ dev_err(dev, "TOGDONE with an invalid state: %d\n", ++ togdone_result); ++ fusb302_set_toggling(dev, chip->toggling_mode); ++ break; ++ } ++ return ret; ++} ++ ++static int fusb302_pd_reset(struct udevice *dev) ++{ ++ return fusb302_i2c_set_bits(dev, FUSB_REG_RESET, ++ FUSB_REG_RESET_PD_RESET); ++} ++ ++static int fusb302_pd_read_message(struct udevice *dev, ++ struct pd_message *msg) ++{ ++ int len, ret; ++ u8 crc[4]; ++ u8 token; ++ ++ /* first SOP token */ ++ ret = fusb302_i2c_read(dev, FUSB_REG_FIFOS, &token); ++ if (ret) ++ return ret; ++ ret = fusb302_i2c_block_read(dev, FUSB_REG_FIFOS, 2, ++ (u8 *)&msg->header); ++ if (ret) ++ return ret; ++ len = pd_header_cnt_le(msg->header) * 4; ++ /* add 4 to length to include the CRC */ ++ if (len > PD_MAX_PAYLOAD * 4) { ++ dev_err(dev, "PD message too long %d\n", len); ++ return -EINVAL; ++ } ++ if (len > 0) { ++ ret = fusb302_i2c_block_read(dev, FUSB_REG_FIFOS, len, ++ (u8 *)msg->payload); ++ if (ret) ++ return ret; ++ } ++ /* another 4 bytes to read CRC out */ ++ ret = fusb302_i2c_block_read(dev, FUSB_REG_FIFOS, 4, crc); ++ if (ret) ++ return ret; ++ dev_dbg(dev, "Received PD message (header=0x%x len=%d)\n", msg->header, len); ++ ++ /* ++ * Check if we've read off a GoodCRC message. If so then indicate to ++ * TCPM that the previous transmission has completed. Otherwise we pass ++ * the received message over to TCPM for processing. ++ * ++ * We make this check here instead of basing the reporting decision on ++ * the IRQ event type, as it's possible for the chip to report the ++ * TX_SUCCESS and GCRCSENT events out of order on occasion, so we need ++ * to check the message type to ensure correct reporting to TCPM. ++ */ ++ if (!len && (pd_header_type_le(msg->header) == PD_CTRL_GOOD_CRC)) ++ tcpm_pd_transmit_complete(dev, TCPC_TX_SUCCESS); ++ else ++ tcpm_pd_receive(dev, msg); ++ ++ return ret; ++} ++ ++static void fusb302_interrupt_handle(struct udevice *dev) ++{ ++ struct fusb302_chip *chip = dev_get_priv(dev); ++ u8 interrupt; ++ u8 interrupta; ++ u8 interruptb; ++ u8 status0; ++ bool vbus_present; ++ bool comp_result; ++ bool intr_togdone; ++ bool intr_bc_lvl; ++ bool intr_comp_chng; ++ struct pd_message pd_msg; ++ int ret; ++ ++ /* grab a snapshot of intr flags */ ++ intr_togdone = chip->intr_togdone; ++ intr_bc_lvl = chip->intr_bc_lvl; ++ intr_comp_chng = chip->intr_comp_chng; ++ ++ ret = fusb302_i2c_read(dev, FUSB_REG_INTERRUPT, &interrupt); ++ if (ret) ++ return; ++ ret = fusb302_i2c_read(dev, FUSB_REG_INTERRUPTA, &interrupta); ++ if (ret) ++ return; ++ ret = fusb302_i2c_read(dev, FUSB_REG_INTERRUPTB, &interruptb); ++ if (ret) ++ return; ++ ret = fusb302_i2c_read(dev, FUSB_REG_STATUS0, &status0); ++ if (ret) ++ return; ++ ++ /* ++ * Since we are polling the IRQs, avoid printing messages when there ++ * no interrupts at all to avoid spamming the log. ++ */ ++ if (interrupt != 0 || interrupta != 0 || interruptb != 0) ++ dev_dbg(dev, "IRQ: 0x%02x, a: 0x%02x, b: 0x%02x, status0: 0x%02x\n", ++ interrupt, interrupta, interruptb, status0); ++ ++ if (interrupt & FUSB_REG_INTERRUPT_VBUSOK) { ++ vbus_present = !!(status0 & FUSB_REG_STATUS0_VBUSOK); ++ dev_dbg(dev, "IRQ: VBUS_OK, vbus=%s\n", ++ vbus_present ? "On" : "Off"); ++ if (vbus_present != chip->vbus_present) { ++ chip->vbus_present = vbus_present; ++ tcpm_vbus_change(dev); ++ } ++ } ++ ++ if ((interrupta & FUSB_REG_INTERRUPTA_TOGDONE) && intr_togdone) { ++ dev_dbg(dev, "IRQ: TOGDONE\n"); ++ ret = fusb302_handle_togdone(dev); ++ if (ret) { ++ dev_err(dev, "handle togdone error: %d\n", ret); ++ return; ++ } ++ } ++ ++ if ((interrupt & FUSB_REG_INTERRUPT_BC_LVL) && intr_bc_lvl) { ++ dev_dbg(dev, "IRQ: BC_LVL, handler pending\n"); ++ fusb302_bc_lvl_handler(dev); ++ } ++ ++ if ((interrupt & FUSB_REG_INTERRUPT_COMP_CHNG) && intr_comp_chng) { ++ comp_result = !!(status0 & FUSB_REG_STATUS0_COMP); ++ dev_dbg(dev, "IRQ: COMP_CHNG, comp=%s\n", ++ comp_result ? "true" : "false"); ++ if (comp_result) { ++ /* cc level > Rd_threshold, detach */ ++ chip->cc1 = TYPEC_CC_OPEN; ++ chip->cc2 = TYPEC_CC_OPEN; ++ tcpm_cc_change(dev); ++ } ++ } ++ ++ if (interrupt & FUSB_REG_INTERRUPT_COLLISION) { ++ dev_dbg(dev, "IRQ: PD collision\n"); ++ tcpm_pd_transmit_complete(dev, TCPC_TX_FAILED); ++ } ++ ++ if (interrupta & FUSB_REG_INTERRUPTA_RETRYFAIL) { ++ dev_dbg(dev, "IRQ: PD retry failed\n"); ++ tcpm_pd_transmit_complete(dev, TCPC_TX_FAILED); ++ } ++ ++ if (interrupta & FUSB_REG_INTERRUPTA_HARDSENT) { ++ dev_dbg(dev, "IRQ: PD hardreset sent\n"); ++ ret = fusb302_pd_reset(dev); ++ if (ret) { ++ dev_err(dev, "cannot PD reset, ret=%d\n", ret); ++ return; ++ } ++ tcpm_pd_transmit_complete(dev, TCPC_TX_SUCCESS); ++ } ++ ++ if (interrupta & FUSB_REG_INTERRUPTA_TX_SUCCESS) { ++ dev_dbg(dev, "IRQ: PD tx success\n"); ++ ret = fusb302_pd_read_message(dev, &pd_msg); ++ if (ret) { ++ dev_err(dev, "cannot read in PD message, ret=%d\n", ret); ++ return; ++ } ++ } ++ ++ if (interrupta & FUSB_REG_INTERRUPTA_HARDRESET) { ++ dev_dbg(dev, "IRQ: PD received hardreset\n"); ++ ret = fusb302_pd_reset(dev); ++ if (ret) { ++ dev_err(dev, "cannot PD reset, ret=%d\n", ret); ++ return; ++ } ++ tcpm_pd_hard_reset(dev); ++ } ++ ++ if (interruptb & FUSB_REG_INTERRUPTB_GCRCSENT) { ++ dev_dbg(dev, "IRQ: PD sent good CRC\n"); ++ ret = fusb302_pd_read_message(dev, &pd_msg); ++ if (ret) { ++ dev_err(dev, "cannot read in PD message, ret=%d\n", ret); ++ return; ++ } ++ } ++} ++ ++static void fusb302_poll_event(struct udevice *dev) ++{ ++ fusb302_interrupt_handle(dev); ++} ++ ++static int fusb302_get_connector_node(struct udevice *dev, ofnode *connector_node) ++{ ++ *connector_node = dev_read_subnode(dev, "connector"); ++ if (!ofnode_valid(*connector_node)) { ++ dev_err(dev, "'connector' node is not found\n"); ++ return -ENODEV; ++ } ++ ++ return 0; ++} ++ ++static struct dm_tcpm_ops fusb302_ops = { ++ .get_connector_node = fusb302_get_connector_node, ++ .init = fusb302_init, ++ .get_vbus = fusb302_get_vbus, ++ .set_cc = fusb302_set_cc, ++ .get_cc = fusb302_get_cc, ++ .set_vconn = fusb302_set_vconn, ++ .set_vbus = fusb302_set_vbus, ++ .set_pd_rx = fusb302_set_pd_rx, ++ .set_roles = fusb302_set_roles, ++ .start_toggling = fusb302_start_toggling, ++ .pd_transmit = fusb302_pd_transmit, ++ .poll_event = fusb302_poll_event, ++ .enter_low_power_mode = fusb302_enter_low_power_mode, ++}; ++ ++static const struct udevice_id fusb302_ids[] = { ++ { .compatible = "fcs,fusb302" }, ++ { } ++}; ++ ++U_BOOT_DRIVER(fusb302) = { ++ .name = "fusb302", ++ .id = UCLASS_TCPM, ++ .of_match = fusb302_ids, ++ .ops = &fusb302_ops, ++ .priv_auto = sizeof(struct fusb302_chip), ++}; +diff --git a/drivers/usb/tcpm/fusb302_reg.h b/drivers/usb/tcpm/fusb302_reg.h +new file mode 100644 +index 000000000000..edc0e4b0f1e6 +--- /dev/null ++++ b/drivers/usb/tcpm/fusb302_reg.h +@@ -0,0 +1,177 @@ ++/* SPDX-License-Identifier: GPL-2.0+ */ ++/* ++ * Copyright 2016-2017 Google, Inc ++ * ++ * Fairchild FUSB302 Type-C Chip Driver ++ */ ++ ++#ifndef FUSB302_REG_H ++#define FUSB302_REG_H ++ ++#define FUSB_REG_DEVICE_ID 0x01 ++#define FUSB_REG_SWITCHES0 0x02 ++#define FUSB_REG_SWITCHES0_CC2_PU_EN BIT(7) ++#define FUSB_REG_SWITCHES0_CC1_PU_EN BIT(6) ++#define FUSB_REG_SWITCHES0_VCONN_CC2 BIT(5) ++#define FUSB_REG_SWITCHES0_VCONN_CC1 BIT(4) ++#define FUSB_REG_SWITCHES0_MEAS_CC2 BIT(3) ++#define FUSB_REG_SWITCHES0_MEAS_CC1 BIT(2) ++#define FUSB_REG_SWITCHES0_CC2_PD_EN BIT(1) ++#define FUSB_REG_SWITCHES0_CC1_PD_EN BIT(0) ++#define FUSB_REG_SWITCHES1 0x03 ++#define FUSB_REG_SWITCHES1_POWERROLE BIT(7) ++#define FUSB_REG_SWITCHES1_SPECREV1 BIT(6) ++#define FUSB_REG_SWITCHES1_SPECREV0 BIT(5) ++#define FUSB_REG_SWITCHES1_DATAROLE BIT(4) ++#define FUSB_REG_SWITCHES1_AUTO_GCRC BIT(2) ++#define FUSB_REG_SWITCHES1_TXCC2_EN BIT(1) ++#define FUSB_REG_SWITCHES1_TXCC1_EN BIT(0) ++#define FUSB_REG_MEASURE 0x04 ++#define FUSB_REG_MEASURE_MDAC5 BIT(7) ++#define FUSB_REG_MEASURE_MDAC4 BIT(6) ++#define FUSB_REG_MEASURE_MDAC3 BIT(5) ++#define FUSB_REG_MEASURE_MDAC2 BIT(4) ++#define FUSB_REG_MEASURE_MDAC1 BIT(3) ++#define FUSB_REG_MEASURE_MDAC0 BIT(2) ++#define FUSB_REG_MEASURE_VBUS BIT(1) ++#define FUSB_REG_MEASURE_XXXX5 BIT(0) ++#define FUSB_REG_CONTROL0 0x06 ++#define FUSB_REG_CONTROL0_TX_FLUSH BIT(6) ++#define FUSB_REG_CONTROL0_INT_MASK BIT(5) ++#define FUSB_REG_CONTROL0_HOST_CUR_MASK (0xC) ++#define FUSB_REG_CONTROL0_HOST_CUR_HIGH (0xC) ++#define FUSB_REG_CONTROL0_HOST_CUR_MED (0x8) ++#define FUSB_REG_CONTROL0_HOST_CUR_DEF (0x4) ++#define FUSB_REG_CONTROL0_TX_START BIT(0) ++#define FUSB_REG_CONTROL1 0x07 ++#define FUSB_REG_CONTROL1_ENSOP2DB BIT(6) ++#define FUSB_REG_CONTROL1_ENSOP1DB BIT(5) ++#define FUSB_REG_CONTROL1_BIST_MODE2 BIT(4) ++#define FUSB_REG_CONTROL1_RX_FLUSH BIT(2) ++#define FUSB_REG_CONTROL1_ENSOP2 BIT(1) ++#define FUSB_REG_CONTROL1_ENSOP1 BIT(0) ++#define FUSB_REG_CONTROL2 0x08 ++#define FUSB_REG_CONTROL2_MODE BIT(1) ++#define FUSB_REG_CONTROL2_MODE_MASK (0x6) ++#define FUSB_REG_CONTROL2_MODE_DFP (0x6) ++#define FUSB_REG_CONTROL2_MODE_UFP (0x4) ++#define FUSB_REG_CONTROL2_MODE_DRP (0x2) ++#define FUSB_REG_CONTROL2_MODE_NONE (0x0) ++#define FUSB_REG_CONTROL2_TOGGLE BIT(0) ++#define FUSB_REG_CONTROL3 0x09 ++#define FUSB_REG_CONTROL3_SEND_HARDRESET BIT(6) ++#define FUSB_REG_CONTROL3_BIST_TMODE BIT(5) /* 302B Only */ ++#define FUSB_REG_CONTROL3_AUTO_HARDRESET BIT(4) ++#define FUSB_REG_CONTROL3_AUTO_SOFTRESET BIT(3) ++#define FUSB_REG_CONTROL3_N_RETRIES BIT(1) ++#define FUSB_REG_CONTROL3_N_RETRIES_MASK (0x6) ++#define FUSB_REG_CONTROL3_N_RETRIES_3 (0x6) ++#define FUSB_REG_CONTROL3_N_RETRIES_2 (0x4) ++#define FUSB_REG_CONTROL3_N_RETRIES_1 (0x2) ++#define FUSB_REG_CONTROL3_AUTO_RETRY BIT(0) ++#define FUSB_REG_MASK 0x0A ++#define FUSB_REG_MASK_VBUSOK BIT(7) ++#define FUSB_REG_MASK_ACTIVITY BIT(6) ++#define FUSB_REG_MASK_COMP_CHNG BIT(5) ++#define FUSB_REG_MASK_CRC_CHK BIT(4) ++#define FUSB_REG_MASK_ALERT BIT(3) ++#define FUSB_REG_MASK_WAKE BIT(2) ++#define FUSB_REG_MASK_COLLISION BIT(1) ++#define FUSB_REG_MASK_BC_LVL BIT(0) ++#define FUSB_REG_POWER 0x0B ++#define FUSB_REG_POWER_PWR BIT(0) ++#define FUSB_REG_POWER_PWR_LOW 0x1 ++#define FUSB_REG_POWER_PWR_MEDIUM 0x3 ++#define FUSB_REG_POWER_PWR_HIGH 0x7 ++#define FUSB_REG_POWER_PWR_ALL 0xF ++#define FUSB_REG_RESET 0x0C ++#define FUSB_REG_RESET_PD_RESET BIT(1) ++#define FUSB_REG_RESET_SW_RESET BIT(0) ++#define FUSB_REG_MASKA 0x0E ++#define FUSB_REG_MASKA_OCP_TEMP BIT(7) ++#define FUSB_REG_MASKA_TOGDONE BIT(6) ++#define FUSB_REG_MASKA_SOFTFAIL BIT(5) ++#define FUSB_REG_MASKA_RETRYFAIL BIT(4) ++#define FUSB_REG_MASKA_HARDSENT BIT(3) ++#define FUSB_REG_MASKA_TX_SUCCESS BIT(2) ++#define FUSB_REG_MASKA_SOFTRESET BIT(1) ++#define FUSB_REG_MASKA_HARDRESET BIT(0) ++#define FUSB_REG_MASKB 0x0F ++#define FUSB_REG_MASKB_GCRCSENT BIT(0) ++#define FUSB_REG_STATUS0A 0x3C ++#define FUSB_REG_STATUS0A_SOFTFAIL BIT(5) ++#define FUSB_REG_STATUS0A_RETRYFAIL BIT(4) ++#define FUSB_REG_STATUS0A_POWER BIT(2) ++#define FUSB_REG_STATUS0A_RX_SOFT_RESET BIT(1) ++#define FUSB_REG_STATUS0A_RX_HARD_RESET BIT(0) ++#define FUSB_REG_STATUS1A 0x3D ++#define FUSB_REG_STATUS1A_TOGSS BIT(3) ++#define FUSB_REG_STATUS1A_TOGSS_RUNNING 0x0 ++#define FUSB_REG_STATUS1A_TOGSS_SRC1 0x1 ++#define FUSB_REG_STATUS1A_TOGSS_SRC2 0x2 ++#define FUSB_REG_STATUS1A_TOGSS_SNK1 0x5 ++#define FUSB_REG_STATUS1A_TOGSS_SNK2 0x6 ++#define FUSB_REG_STATUS1A_TOGSS_AA 0x7 ++#define FUSB_REG_STATUS1A_TOGSS_POS (3) ++#define FUSB_REG_STATUS1A_TOGSS_MASK (0x7) ++#define FUSB_REG_STATUS1A_RXSOP2DB BIT(2) ++#define FUSB_REG_STATUS1A_RXSOP1DB BIT(1) ++#define FUSB_REG_STATUS1A_RXSOP BIT(0) ++#define FUSB_REG_INTERRUPTA 0x3E ++#define FUSB_REG_INTERRUPTA_OCP_TEMP BIT(7) ++#define FUSB_REG_INTERRUPTA_TOGDONE BIT(6) ++#define FUSB_REG_INTERRUPTA_SOFTFAIL BIT(5) ++#define FUSB_REG_INTERRUPTA_RETRYFAIL BIT(4) ++#define FUSB_REG_INTERRUPTA_HARDSENT BIT(3) ++#define FUSB_REG_INTERRUPTA_TX_SUCCESS BIT(2) ++#define FUSB_REG_INTERRUPTA_SOFTRESET BIT(1) ++#define FUSB_REG_INTERRUPTA_HARDRESET BIT(0) ++#define FUSB_REG_INTERRUPTB 0x3F ++#define FUSB_REG_INTERRUPTB_GCRCSENT BIT(0) ++#define FUSB_REG_STATUS0 0x40 ++#define FUSB_REG_STATUS0_VBUSOK BIT(7) ++#define FUSB_REG_STATUS0_ACTIVITY BIT(6) ++#define FUSB_REG_STATUS0_COMP BIT(5) ++#define FUSB_REG_STATUS0_CRC_CHK BIT(4) ++#define FUSB_REG_STATUS0_ALERT BIT(3) ++#define FUSB_REG_STATUS0_WAKE BIT(2) ++#define FUSB_REG_STATUS0_BC_LVL_MASK 0x03 ++#define FUSB_REG_STATUS0_BC_LVL_0_200 0x0 ++#define FUSB_REG_STATUS0_BC_LVL_200_600 0x1 ++#define FUSB_REG_STATUS0_BC_LVL_600_1230 0x2 ++#define FUSB_REG_STATUS0_BC_LVL_1230_MAX 0x3 ++#define FUSB_REG_STATUS0_BC_LVL1 BIT(1) ++#define FUSB_REG_STATUS0_BC_LVL0 BIT(0) ++#define FUSB_REG_STATUS1 0x41 ++#define FUSB_REG_STATUS1_RXSOP2 BIT(7) ++#define FUSB_REG_STATUS1_RXSOP1 BIT(6) ++#define FUSB_REG_STATUS1_RX_EMPTY BIT(5) ++#define FUSB_REG_STATUS1_RX_FULL BIT(4) ++#define FUSB_REG_STATUS1_TX_EMPTY BIT(3) ++#define FUSB_REG_STATUS1_TX_FULL BIT(2) ++#define FUSB_REG_INTERRUPT 0x42 ++#define FUSB_REG_INTERRUPT_VBUSOK BIT(7) ++#define FUSB_REG_INTERRUPT_ACTIVITY BIT(6) ++#define FUSB_REG_INTERRUPT_COMP_CHNG BIT(5) ++#define FUSB_REG_INTERRUPT_CRC_CHK BIT(4) ++#define FUSB_REG_INTERRUPT_ALERT BIT(3) ++#define FUSB_REG_INTERRUPT_WAKE BIT(2) ++#define FUSB_REG_INTERRUPT_COLLISION BIT(1) ++#define FUSB_REG_INTERRUPT_BC_LVL BIT(0) ++#define FUSB_REG_FIFOS 0x43 ++ ++/* Tokens defined for the FUSB302 TX FIFO */ ++enum fusb302_txfifo_tokens { ++ FUSB302_TKN_TXON = 0xA1, ++ FUSB302_TKN_SYNC1 = 0x12, ++ FUSB302_TKN_SYNC2 = 0x13, ++ FUSB302_TKN_SYNC3 = 0x1B, ++ FUSB302_TKN_RST1 = 0x15, ++ FUSB302_TKN_RST2 = 0x16, ++ FUSB302_TKN_PACKSYM = 0x80, ++ FUSB302_TKN_JAMCRC = 0xFF, ++ FUSB302_TKN_EOP = 0x14, ++ FUSB302_TKN_TXOFF = 0xFE, ++}; ++ ++#endif + +From patchwork Thu Sep 5 15:08:39 2024 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sebastian Reichel +X-Patchwork-Id: 1981310 +X-Patchwork-Delegate: ykai007@gmail.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=collabora.com header.i=@collabora.com + header.a=rsa-sha256 header.s=mail header.b=OlVGM1CY; + 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) server-digest SHA384) + (No client certificate requested) + by legolas.ozlabs.org (Postfix) with ESMTPS id 4X02yx4Yhtz1yXY + for ; Fri, 6 Sep 2024 01:17:13 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id DA19F88CC4; + Thu, 5 Sep 2024 17:17:10 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=collabora.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=collabora.com header.i=@collabora.com + header.b="OlVGM1CY"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 818FF88CD1; Thu, 5 Sep 2024 17:17:10 +0200 (CEST) +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,RCVD_IN_VALIDITY_RPBL_BLOCKED, + RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 +Received: from bali.collaboradmins.com (bali.collaboradmins.com + [148.251.105.195]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 6EA7A88C91 + for ; Thu, 5 Sep 2024 17:17:08 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=collabora.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=sebastian.reichel@collabora.com +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; + s=mail; t=1725549428; + bh=MaX9knvNNlkcoU7y63UAKlXcI2FWJjBx6Z541dTO9i4=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=OlVGM1CYARH8jR7hX1JCyzjLoOvYonq4dVpddV7tqHKv1GFwV9kFs0BQ4idvjHy/T + 8dmf8Dp7LkEStFeQOeVF3FgD3kjcRIYq3a5QWQFKwba/sLcp1VQ7mycHrCP+uN1RoX + /uKEccUu41G7R4ERpXHJ6QrLVyWLcW1x86YZPE/mq17AETdmUfj2OUO/vCeoZ4lpvg + zTniAnbJTy/4BLPaDtK760efy5eYghMStjR8BfjQNKUWA1h2UAW5anloE/cgSsgWjT + m9wxvIxG3UqPf1YKEMUUgxOAyu/gjKrdK4rCKEY/ox+UAyg1Q2EQaHWm50UFUlNLjj + q0jLt7uyLlMvg== +Received: from jupiter.universe (dyndsl-091-248-189-231.ewe-ip-backbone.de + [91.248.189.231]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) (Authenticated sender: sre) + by bali.collaboradmins.com (Postfix) with ESMTPSA id EDB4F17E145D; + Thu, 5 Sep 2024 17:17:07 +0200 (CEST) +Received: by jupiter.universe (Postfix, from userid 1000) + id A34D14800F6; Thu, 05 Sep 2024 17:17:07 +0200 (CEST) +From: Sebastian Reichel +To: Marek Vasut , u-boot@lists.denx.de, + Jonas Karlman , Soeren Moch +Cc: Eugen Hristev , + Tim Harvey , Kever Yang , + Philipp Tomsich , Simon Glass , + Sebastian Reichel +Subject: [PATCH v6 3/6] board: rock5b-rk3588: enable USB-C in operating system +Date: Thu, 5 Sep 2024 17:08:39 +0200 +Message-ID: <20240905151707.59101-4-sebastian.reichel@collabora.com> +X-Mailer: git-send-email 2.45.2 +In-Reply-To: <20240905151707.59101-1-sebastian.reichel@collabora.com> +References: <20240905151707.59101-1-sebastian.reichel@collabora.com> +MIME-Version: 1.0 +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 + +Since older U-Boot releases do not negotiate USB PD, the kernel +DT may not enable the USB-C controller by default to avoid a +regression. The plan is to upstream it with 'status = "fail";' +instead. U-Boot should then mark it as 'status = "okay";' if +it negotiated USB PD. Currently existing upstream kernel DTs do +not yet have the USB-C controller at all, so we ignore any +failures. + +Reviewed-by: Kever Yang +Tested-by: Soeren Moch +Signed-off-by: Sebastian Reichel +--- + board/radxa/rock5b-rk3588/Makefile | 6 ++++++ + board/radxa/rock5b-rk3588/rock5b-rk3588.c | 16 ++++++++++++++++ + 2 files changed, 22 insertions(+) + create mode 100644 board/radxa/rock5b-rk3588/Makefile + create mode 100644 board/radxa/rock5b-rk3588/rock5b-rk3588.c + +diff --git a/board/radxa/rock5b-rk3588/Makefile b/board/radxa/rock5b-rk3588/Makefile +new file mode 100644 +index 000000000000..95d813596da4 +--- /dev/null ++++ b/board/radxa/rock5b-rk3588/Makefile +@@ -0,0 +1,6 @@ ++# SPDX-License-Identifier: GPL-2.0+ ++# ++# Copyright (c) 2022 Collabora Ltd. ++# ++ ++obj-y += rock5b-rk3588.o +diff --git a/board/radxa/rock5b-rk3588/rock5b-rk3588.c b/board/radxa/rock5b-rk3588/rock5b-rk3588.c +new file mode 100644 +index 000000000000..fc2f69db2241 +--- /dev/null ++++ b/board/radxa/rock5b-rk3588/rock5b-rk3588.c +@@ -0,0 +1,16 @@ ++// SPDX-License-Identifier: GPL-2.0+ ++/* ++ * Copyright (c) 2023-2024 Collabora Ltd. ++ */ ++ ++#include ++#include ++ ++#ifdef CONFIG_OF_BOARD_SETUP ++int ft_board_setup(void *blob, struct bd_info *bd) ++{ ++ if (IS_ENABLED(CONFIG_TYPEC_FUSB302)) ++ fdt_status_okay_by_compatible(blob, "fcs,fusb302"); ++ return 0; ++} ++#endif + +From patchwork Thu Sep 5 15:08:40 2024 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sebastian Reichel +X-Patchwork-Id: 1981311 +X-Patchwork-Delegate: ykai007@gmail.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=collabora.com header.i=@collabora.com + header.a=rsa-sha256 header.s=mail header.b=Hn8Z4MVu; + 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) server-digest SHA384) + (No client certificate requested) + by legolas.ozlabs.org (Postfix) with ESMTPS id 4X02z82c6zz1yXY + for ; Fri, 6 Sep 2024 01:17:24 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 3EDBD88CA2; + Thu, 5 Sep 2024 17:17:13 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=collabora.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=collabora.com header.i=@collabora.com + header.b="Hn8Z4MVu"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 710CF88CA2; Thu, 5 Sep 2024 17:17:12 +0200 (CEST) +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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no + version=3.4.2 +Received: from bali.collaboradmins.com (bali.collaboradmins.com + [IPv6:2a01:4f8:201:9162::2]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id 7D4DC88CAC + for ; Thu, 5 Sep 2024 17:17:08 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=collabora.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=sebastian.reichel@collabora.com +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; + s=mail; t=1725549428; + bh=kRtQV3aUzqRixo2bcjF9nXzgL+cYAS6B3o857NdybTM=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=Hn8Z4MVuPomOScWvWRuPJHT3m84jMoUdUdcI4V6fC8w0zfN0PSB22YMSaMxRDqiQR + D1gyzQpG0bCWuGp89DNtLngEOXCfXPqQh98ArUJFVvn5FVbYDlml9cXwVW02zXglIb + KP92KXxaQTgjWDb6QntmbJHNZVhAMNOCCqIknf4YFMc4/7yGTUsOxI5VD/oY5bbwVJ + aTVCT3SuwJvmXu7Dj150fFYeT0furN5MZT1P/MPFXd1/bnC9Dj+YTT6lm3kw6waCZN + OcRx6P7sRha82dm44zV4xjWnpHPDGGYqTyWNSD72Xj7/CASin5aosS6NbZFpndvcfx + 30yLrCrJPsm3g== +Received: from jupiter.universe (dyndsl-091-248-189-231.ewe-ip-backbone.de + [91.248.189.231]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest + SHA256) + (No client certificate requested) (Authenticated sender: sre) + by bali.collaboradmins.com (Postfix) with ESMTPSA id EF4D117E14D6; + Thu, 5 Sep 2024 17:17:07 +0200 (CEST) +Received: by jupiter.universe (Postfix, from userid 1000) + id A518D4800F8; Thu, 05 Sep 2024 17:17:07 +0200 (CEST) +From: Sebastian Reichel +To: Marek Vasut , u-boot@lists.denx.de, + Jonas Karlman , Soeren Moch +Cc: Eugen Hristev , + Tim Harvey , Kever Yang , + Philipp Tomsich , Simon Glass , + Sebastian Reichel +Subject: [PATCH v6 4/6] rockchip: rk3588-rock-5b: Add USB-C controller to + u-boot.dtsi +Date: Thu, 5 Sep 2024 17:08:40 +0200 +Message-ID: <20240905151707.59101-5-sebastian.reichel@collabora.com> +X-Mailer: git-send-email 2.45.2 +In-Reply-To: <20240905151707.59101-1-sebastian.reichel@collabora.com> +References: <20240905151707.59101-1-sebastian.reichel@collabora.com> +MIME-Version: 1.0 +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 USB-C controller (fusb302), which will be used by U-Boot to +initialize USB-PD. This is needed, because USB-PD communication +must happen within 5 seconds after the USB-C connector got plugged. +On my Rock 5B it often takes 5 seconds to jump to the Linux binary, +so it must happen before Linux is initialized. + +This adds the DT node to the U-Boot specific file, since the Linux +kernel DT currently does not describe it to avoid a system reset. +The plan is to add it to the Linux DT with status = 'fail' and then +let U-Boot mark it as status = 'okay' if it properly dealt with +early USB-PD initialization. Until the Kernel DT has the node, let's +add it in U-Boot to get things going. + +Reviewed-by: Kever Yang +Tested-by: Soeren Moch +Signed-off-by: Sebastian Reichel +--- + arch/arm/dts/rk3588-rock-5b-u-boot.dtsi | 28 +++++++++++++++++++++++++ + 1 file changed, 28 insertions(+) + +diff --git a/arch/arm/dts/rk3588-rock-5b-u-boot.dtsi b/arch/arm/dts/rk3588-rock-5b-u-boot.dtsi +index 4dd17ff408cb..b0ad1158854c 100644 +--- a/arch/arm/dts/rk3588-rock-5b-u-boot.dtsi ++++ b/arch/arm/dts/rk3588-rock-5b-u-boot.dtsi +@@ -3,6 +3,7 @@ + * Copyright (c) 2023 Collabora Ltd. + */ + ++#include + #include "rk3588-u-boot.dtsi" + + &fspim2_pins { +@@ -10,6 +11,33 @@ + bootph-some-ram; + }; + ++&i2c4 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2c4m1_xfer>; ++ status = "okay"; ++ ++ usbc0: usb-typec@22 { ++ compatible = "fcs,fusb302"; ++ reg = <0x22>; ++ interrupt-parent = <&gpio3>; ++ interrupts = ; ++ pinctrl-names = "default"; ++ status = "okay"; ++ ++ usb_con: connector { ++ compatible = "usb-c-connector"; ++ label = "USB-C"; ++ data-role = "dual"; ++ power-role = "sink"; ++ try-power-role = "sink"; ++ op-sink-microwatt = <1000000>; ++ sink-pdos = ++ , ++ ; ++ }; ++ }; ++}; ++ + &sdhci { + cap-mmc-highspeed; + mmc-hs200-1_8v; + +From patchwork Thu Sep 5 15:08:41 2024 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sebastian Reichel +X-Patchwork-Id: 1981313 +X-Patchwork-Delegate: ykai007@gmail.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=collabora.com header.i=@collabora.com + header.a=rsa-sha256 header.s=mail header.b=q3YksfJp; + 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 4X02zX1GHQz1yXY + for ; Fri, 6 Sep 2024 01:17:44 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 23B9E88C91; + Thu, 5 Sep 2024 17:17:15 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=collabora.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=collabora.com header.i=@collabora.com + header.b="q3YksfJp"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 4A27388CC2; Thu, 5 Sep 2024 17:17:14 +0200 (CEST) +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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no + version=3.4.2 +Received: from bali.collaboradmins.com (bali.collaboradmins.com + [IPv6:2a01:4f8:201:9162::2]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id AA9CC88CCA + for ; Thu, 5 Sep 2024 17:17:08 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=collabora.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=sebastian.reichel@collabora.com +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; + s=mail; t=1725549428; + bh=2Lc5Z/YfVP+p0ckRM3rvfdY5jCUdmYScP+mrStWhXgc=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=q3YksfJpB4KE3b6jOT8upI79aMX8TsaVAMMBCfHQfd81c94VAOjQE0sKeQG7MZhks + 8MtawvxDPZLokcfL/SI5h7MM+BY3PUAHRF0055L3SENSD8jyNOgSjkmmOOLY27PFGF + LNYyTuhYLE7uZyVOevaq9skCiKVRhV7HtSQcv1ac6YuIyinwrpCN42yaHFG/m6SpO+ + lTxi9/43YenBpHkbZHxt8llNxRKcPbDdXMQcwZE6f0ksz92jfSioU5dJEMwJnFYvLm + XSuzTPYuERV+/O82eUGYarkAczW2F0SfMOKWdb6C85FiS1hNj2Wqo6bM4G+GNyDUWz + ORIxUtmwVAgwg== +Received: from jupiter.universe (dyndsl-091-248-189-231.ewe-ip-backbone.de + [91.248.189.231]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) (Authenticated sender: sre) + by bali.collaboradmins.com (Postfix) with ESMTPSA id 3C7D917E14D7; + Thu, 5 Sep 2024 17:17:08 +0200 (CEST) +Received: by jupiter.universe (Postfix, from userid 1000) + id A72CD4800FF; Thu, 05 Sep 2024 17:17:07 +0200 (CEST) +From: Sebastian Reichel +To: Marek Vasut , u-boot@lists.denx.de, + Jonas Karlman , Soeren Moch +Cc: Eugen Hristev , + Tim Harvey , Kever Yang , + Philipp Tomsich , Simon Glass , + Sebastian Reichel +Subject: [PATCH v6 5/6] rockchip: rock5b-rk3588: Enable USB-C PD support +Date: Thu, 5 Sep 2024 17:08:41 +0200 +Message-ID: <20240905151707.59101-6-sebastian.reichel@collabora.com> +X-Mailer: git-send-email 2.45.2 +In-Reply-To: <20240905151707.59101-1-sebastian.reichel@collabora.com> +References: <20240905151707.59101-1-sebastian.reichel@collabora.com> +MIME-Version: 1.0 +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 + +Now that all code has been prepared update the default configuration to +make use of it. + +Reviewed-by: Kever Yang +Tested-by: Soeren Moch +Signed-off-by: Sebastian Reichel +--- + configs/rock5b-rk3588_defconfig | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/configs/rock5b-rk3588_defconfig b/configs/rock5b-rk3588_defconfig +index 80a2f2fed586..82c942a52d62 100644 +--- a/configs/rock5b-rk3588_defconfig ++++ b/configs/rock5b-rk3588_defconfig +@@ -23,6 +23,7 @@ CONFIG_FIT_VERBOSE=y + CONFIG_SPL_FIT_SIGNATURE=y + CONFIG_SPL_LOAD_FIT=y + CONFIG_LEGACY_IMAGE_FORMAT=y ++CONFIG_OF_BOARD_SETUP=y + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3588-rock-5b.dtb" + # CONFIG_DISPLAY_CPUINFO is not set + CONFIG_DISPLAY_BOARDINFO_LATE=y +@@ -103,3 +104,6 @@ CONFIG_USB_GADGET=y + CONFIG_USB_GADGET_DOWNLOAD=y + CONFIG_USB_FUNCTION_ROCKUSB=y + CONFIG_ERRNO_STR=y ++CONFIG_TYPEC_TCPM=y ++CONFIG_TYPEC_FUSB302=y ++CONFIG_CMD_TCPM=y + +From patchwork Thu Sep 5 15:08:42 2024 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sebastian Reichel +X-Patchwork-Id: 1981314 +X-Patchwork-Delegate: ykai007@gmail.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=collabora.com header.i=@collabora.com + header.a=rsa-sha256 header.s=mail header.b=Ci2PO1GU; + 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 4X02zk6YyNz1yXY + for ; Fri, 6 Sep 2024 01:17:54 +1000 (AEST) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 7F41A88CE5; + Thu, 5 Sep 2024 17:17:15 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=collabora.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=collabora.com header.i=@collabora.com + header.b="Ci2PO1GU"; + dkim-atps=neutral +Received: by phobos.denx.de (Postfix, from userid 109) + id 6ED1888CC2; Thu, 5 Sep 2024 17:17:14 +0200 (CEST) +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,SPF_HELO_NONE,SPF_PASS, + T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 +Received: from bali.collaboradmins.com (bali.collaboradmins.com + [IPv6:2a01:4f8:201:9162::2]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) + (No client certificate requested) + by phobos.denx.de (Postfix) with ESMTPS id CD5F888CD0 + for ; Thu, 5 Sep 2024 17:17:08 +0200 (CEST) +Authentication-Results: phobos.denx.de; + dmarc=pass (p=none dis=none) header.from=collabora.com +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=sebastian.reichel@collabora.com +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; + s=mail; t=1725549428; + bh=l4Xv+BpciSynhuTx8UEne0BTouVROBqh6qBZSM+vxDg=; + h=From:To:Cc:Subject:Date:In-Reply-To:References:From; + b=Ci2PO1GUFnjJQSAIA8bOSaKduXeFJwF8D+1yGRBAT9+M+oNdtaLQKmdPE/XuBAMBF + hEDngnCgvcZdH4Q3uiLUEDi1jZqjU3+VPGTR6fECGe8zriHIja8R6NQR3NCHsfcQMr + E74ZH8bkjhX6S3MYLjZMLTrFBjTAGvshUtI7gKh7Xyet03KYD1xZlvJV71d196Ygty + pr1imuqccIOh7cUE8V2YsSoaibrkiiA9uEpvNr0u9JxE2dvd5HrVR+Uftjzh21ATyo + RERAB90Lf6rr4hdtA1KaFrpuFgWMWKwVL2OKtE8wxPHaUo23Cq36LXmMeeho8nL73T + 5XslHm2u6aESA== +Received: from jupiter.universe (dyndsl-091-248-189-231.ewe-ip-backbone.de + [91.248.189.231]) + (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) + key-exchange X25519 server-signature RSA-PSS (4096 bits)) + (No client certificate requested) (Authenticated sender: sre) + by bali.collaboradmins.com (Postfix) with ESMTPSA id 3F1DD17E14D8; + Thu, 5 Sep 2024 17:17:08 +0200 (CEST) +Received: by jupiter.universe (Postfix, from userid 1000) + id A909F480100; Thu, 05 Sep 2024 17:17:07 +0200 (CEST) +From: Sebastian Reichel +To: Marek Vasut , u-boot@lists.denx.de, + Jonas Karlman , Soeren Moch +Cc: Eugen Hristev , + Tim Harvey , Kever Yang , + Philipp Tomsich , Simon Glass , + Sebastian Reichel +Subject: [PATCH v6 6/6] MAINTAINERS: add TCPM section +Date: Thu, 5 Sep 2024 17:08:42 +0200 +Message-ID: <20240905151707.59101-7-sebastian.reichel@collabora.com> +X-Mailer: git-send-email 2.45.2 +In-Reply-To: <20240905151707.59101-1-sebastian.reichel@collabora.com> +References: <20240905151707.59101-1-sebastian.reichel@collabora.com> +MIME-Version: 1.0 +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 new section for USB TypeC Port Manager (TCPM) support, which +is needed to figure out cable orientation of USB-C plus and to do +USB PD communication. + +Signed-off-by: Sebastian Reichel +--- + MAINTAINERS | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/MAINTAINERS b/MAINTAINERS +index 2050ae24df82..f3cf84d20dbd 100644 +--- a/MAINTAINERS ++++ b/MAINTAINERS +@@ -1721,6 +1721,15 @@ F: common/usb_kbd.c + F: common/usb_storage.c + F: include/usb.h + ++USB TCPM ++M: Sebastian Reichel ++S: Maintained ++F: cmd/tcpm.c ++F: doc/usage/cmd/tcpm.rst ++F: drivers/usb/tcpm/ ++F: include/usb/pd.h ++F: include/usb/tcpm.h ++ + USB xHCI + M: Bin Meng + S: Maintained diff --git a/sources b/sources index 3c6cf70..f50fe43 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2024.10-rc4.tar.bz2) = 31869a7a6c6592ffe73b2f71c4985ace8beee33b232f4e8cbb8d2ebcee9b08d7bedeb57ca7e36cbadf42df44283b0ba79e87b55b1b2f94f2cc4a01cbce747cf7 +SHA512 (u-boot-2024.10-rc5.tar.bz2) = bd86b6cc780ac79fef2abca1e6b27a97312105e6a8d809d8a7f93e3665342f90352124786ec075b5a64cf6705a91ae507dff127d2062c64ecdb325e395a7b0d9 diff --git a/uboot-tools.spec b/uboot-tools.spec index 09f67c6..2098d1e 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc4 +%global candidate rc5 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2024.10 -Release: 0.5%{?candidate:.%{candidate}}%{?dist} +Release: 0.6%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ @@ -31,8 +31,9 @@ Patch5: enable-bootmenu-by-default.patch # Rockchips improvements Patch10: rockchip-Enable-preboot-start-for-pci-usb.patch +Patch11: FUSB302-USB-C-controller-support.patch # QCom -Patch11: Qualcomm-add-support-for-SC7280-and-the-RB3-Gen-2.patch +Patch15: Qualcomm-add-support-for-SC7280-and-the-RB3-Gen-2.patch BuildRequires: bc BuildRequires: bison @@ -206,6 +207,9 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Mon Sep 16 2024 Peter Robinson - 1:2024.10-0.6.rc5 +- Update to 2024.10 RC5 + * Fri Sep 20 2024 Peter Robinson - 1:2024.10-0.5.rc4 - Add missing licenses directory From ebdce54175b30a10f2777cb358a7a5386ba46061 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 17 Sep 2024 07:53:12 +0100 Subject: [PATCH 193/271] fix changelog date --- uboot-tools.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 2098d1e..a7cc4bf 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -210,7 +210,7 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} * Mon Sep 16 2024 Peter Robinson - 1:2024.10-0.6.rc5 - Update to 2024.10 RC5 -* Fri Sep 20 2024 Peter Robinson - 1:2024.10-0.5.rc4 +* Fri Sep 6 2024 Peter Robinson - 1:2024.10-0.5.rc4 - Add missing licenses directory * Tue Sep 03 2024 Peter Robinson - 1:2024.10-0.4.rc4 From 511682db4a42872dc47378a5863a87fdbbaebbd6 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 23 Sep 2024 19:52:54 +0100 Subject: [PATCH 194/271] Add rk35xx for pci/usb enum --- ...hip-Enable-preboot-start-for-pci-usb.patch | 630 ++++++++++++++++++ 1 file changed, 630 insertions(+) diff --git a/rockchip-Enable-preboot-start-for-pci-usb.patch b/rockchip-Enable-preboot-start-for-pci-usb.patch index 56756bc..0542ab0 100644 --- a/rockchip-Enable-preboot-start-for-pci-usb.patch +++ b/rockchip-Enable-preboot-start-for-pci-usb.patch @@ -165,3 +165,633 @@ index fc0804a0b80..9a94d96b148 100644 -- 2.45.1 +From 5116720be74a92417c69229fc45a97502869ff9b Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Mon, 23 Sep 2024 19:51:00 +0100 +Subject: [PATCH] rockchip: rk35xx: Enable preboot start for pci/usb + +Enable the preboot so nvme works OOTB + +Signed-off-by: Peter Robinson +--- + configs/anbernic-rgxx3-rk3566_defconfig | 2 ++ + configs/bpi-r2-pro-rk3568_defconfig | 2 ++ + configs/cm3588-nas-rk3588_defconfig | 2 ++ + configs/coolpi-4b-rk3588s_defconfig | 2 ++ + configs/coolpi-cm5-evb-rk3588_defconfig | 2 ++ + configs/evb-rk3568_defconfig | 2 ++ + configs/evb-rk3588_defconfig | 2 ++ + configs/generic-rk3568_defconfig | 2 ++ + configs/generic-rk3588_defconfig | 2 ++ + configs/jaguar-rk3588_defconfig | 2 ++ + configs/lubancat-2-rk3568_defconfig | 2 ++ + configs/nanopc-t6-rk3588_defconfig | 2 ++ + configs/nanopi-r5c-rk3568_defconfig | 2 ++ + configs/nanopi-r5s-rk3568_defconfig | 2 ++ + configs/nanopi-r6c-rk3588s_defconfig | 2 ++ + configs/nanopi-r6s-rk3588s_defconfig | 2 ++ + configs/neu6a-io-rk3588_defconfig | 2 ++ + configs/neu6b-io-rk3588_defconfig | 2 ++ + configs/nova-rk3588s_defconfig | 2 ++ + configs/odroid-m1-rk3568_defconfig | 2 ++ + configs/orangepi-3b-rk3566_defconfig | 2 ++ + configs/orangepi-5-plus-rk3588_defconfig | 2 ++ + configs/orangepi-5-rk3588s_defconfig | 2 ++ + configs/pinetab2-rk3566_defconfig | 2 ++ + configs/powkiddy-x55-rk3566_defconfig | 2 ++ + configs/quartz64-a-rk3566_defconfig | 2 ++ + configs/quartz64-b-rk3566_defconfig | 2 ++ + configs/quartzpro64-rk3588_defconfig | 2 ++ + configs/radxa-cm3-io-rk3566_defconfig | 2 ++ + configs/radxa-e25-rk3568_defconfig | 2 ++ + configs/radxa-zero-3-rk3566_defconfig | 2 ++ + configs/rock-3a-rk3568_defconfig | 2 ++ + configs/rock-3b-rk3568_defconfig | 2 ++ + configs/rock-3c-rk3566_defconfig | 2 ++ + configs/rock-5-itx-rk3588_defconfig | 2 ++ + configs/rock5a-rk3588s_defconfig | 2 ++ + configs/rock5b-rk3588_defconfig | 2 ++ + configs/sige7-rk3588_defconfig | 2 ++ + configs/soquartz-blade-rk3566_defconfig | 2 ++ + configs/soquartz-cm4-rk3566_defconfig | 2 ++ + configs/soquartz-model-a-rk3566_defconfig | 2 ++ + configs/tiger-rk3588_defconfig | 2 ++ + configs/toybrick-rk3588_defconfig | 2 ++ + configs/turing-rk1-rk3588_defconfig | 2 ++ + 44 files changed, 88 insertions(+) + +diff --git a/configs/anbernic-rgxx3-rk3566_defconfig b/configs/anbernic-rgxx3-rk3566_defconfig +index a03509bf467..45cfaf5deb7 100644 +--- a/configs/anbernic-rgxx3-rk3566_defconfig ++++ b/configs/anbernic-rgxx3-rk3566_defconfig +@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000 + CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/bpi-r2-pro-rk3568_defconfig b/configs/bpi-r2-pro-rk3568_defconfig +index eccc15a0ae5..57d4fafbef4 100644 +--- a/configs/bpi-r2-pro-rk3568_defconfig ++++ b/configs/bpi-r2-pro-rk3568_defconfig +@@ -9,6 +9,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000 + CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y +diff --git a/configs/cm3588-nas-rk3588_defconfig b/configs/cm3588-nas-rk3588_defconfig +index d6d82757a2d..7ef75dfedeb 100644 +--- a/configs/cm3588-nas-rk3588_defconfig ++++ b/configs/cm3588-nas-rk3588_defconfig +@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/coolpi-4b-rk3588s_defconfig b/configs/coolpi-4b-rk3588s_defconfig +index 3d45d939abb..6005d0b556b 100644 +--- a/configs/coolpi-4b-rk3588s_defconfig ++++ b/configs/coolpi-4b-rk3588s_defconfig +@@ -16,6 +16,8 @@ CONFIG_SPL_SPI=y + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y +diff --git a/configs/coolpi-cm5-evb-rk3588_defconfig b/configs/coolpi-cm5-evb-rk3588_defconfig +index 5190d69c1c5..30f1690fe4d 100644 +--- a/configs/coolpi-cm5-evb-rk3588_defconfig ++++ b/configs/coolpi-cm5-evb-rk3588_defconfig +@@ -16,6 +16,8 @@ CONFIG_SPL_SPI=y + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y +diff --git a/configs/evb-rk3568_defconfig b/configs/evb-rk3568_defconfig +index 2076f55122b..543c1a7d6ba 100644 +--- a/configs/evb-rk3568_defconfig ++++ b/configs/evb-rk3568_defconfig +@@ -9,6 +9,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000 + CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/evb-rk3588_defconfig b/configs/evb-rk3588_defconfig +index 1d5585677a4..44ef0fd0f54 100644 +--- a/configs/evb-rk3588_defconfig ++++ b/configs/evb-rk3588_defconfig +@@ -10,6 +10,8 @@ CONFIG_DEBUG_UART_BASE=0xFEB50000 + CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/generic-rk3568_defconfig b/configs/generic-rk3568_defconfig +index 66a33afbbaf..b1bfb831aa5 100644 +--- a/configs/generic-rk3568_defconfig ++++ b/configs/generic-rk3568_defconfig +@@ -13,6 +13,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y + CONFIG_SPL_SPI=y + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/generic-rk3588_defconfig b/configs/generic-rk3588_defconfig +index 42bc2c9a765..6c713094bf0 100644 +--- a/configs/generic-rk3588_defconfig ++++ b/configs/generic-rk3588_defconfig +@@ -10,6 +10,8 @@ CONFIG_DEBUG_UART_BASE=0xFEB50000 + CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/jaguar-rk3588_defconfig b/configs/jaguar-rk3588_defconfig +index 18006467dde..a5d7612d9a5 100644 +--- a/configs/jaguar-rk3588_defconfig ++++ b/configs/jaguar-rk3588_defconfig +@@ -15,6 +15,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/lubancat-2-rk3568_defconfig b/configs/lubancat-2-rk3568_defconfig +index 88593bfa705..870d8f72317 100644 +--- a/configs/lubancat-2-rk3568_defconfig ++++ b/configs/lubancat-2-rk3568_defconfig +@@ -9,6 +9,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000 + CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/nanopc-t6-rk3588_defconfig b/configs/nanopc-t6-rk3588_defconfig +index 926267f93ad..7b0ac43d8c1 100644 +--- a/configs/nanopc-t6-rk3588_defconfig ++++ b/configs/nanopc-t6-rk3588_defconfig +@@ -17,6 +17,8 @@ CONFIG_SPL_SPI=y + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/nanopi-r5c-rk3568_defconfig b/configs/nanopi-r5c-rk3568_defconfig +index 8e30093ed9d..2c1d7b7435b 100644 +--- a/configs/nanopi-r5c-rk3568_defconfig ++++ b/configs/nanopi-r5c-rk3568_defconfig +@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/nanopi-r5s-rk3568_defconfig b/configs/nanopi-r5s-rk3568_defconfig +index e1865b2e171..1afce812b22 100644 +--- a/configs/nanopi-r5s-rk3568_defconfig ++++ b/configs/nanopi-r5s-rk3568_defconfig +@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/nanopi-r6c-rk3588s_defconfig b/configs/nanopi-r6c-rk3588s_defconfig +index f8d2d67bd35..e6e9cf1101a 100644 +--- a/configs/nanopi-r6c-rk3588s_defconfig ++++ b/configs/nanopi-r6c-rk3588s_defconfig +@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/nanopi-r6s-rk3588s_defconfig b/configs/nanopi-r6s-rk3588s_defconfig +index f7b364655ff..fd28485db93 100644 +--- a/configs/nanopi-r6s-rk3588s_defconfig ++++ b/configs/nanopi-r6s-rk3588s_defconfig +@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/neu6a-io-rk3588_defconfig b/configs/neu6a-io-rk3588_defconfig +index ac281e65392..3338f0a3160 100644 +--- a/configs/neu6a-io-rk3588_defconfig ++++ b/configs/neu6a-io-rk3588_defconfig +@@ -10,6 +10,8 @@ CONFIG_DEBUG_UART_BASE=0xFEB50000 + CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/neu6b-io-rk3588_defconfig b/configs/neu6b-io-rk3588_defconfig +index c01e5fb0d04..73cc8e6d0ff 100644 +--- a/configs/neu6b-io-rk3588_defconfig ++++ b/configs/neu6b-io-rk3588_defconfig +@@ -10,6 +10,8 @@ CONFIG_DEBUG_UART_BASE=0xFEB50000 + CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/nova-rk3588s_defconfig b/configs/nova-rk3588s_defconfig +index a2e2440359c..45862f403fb 100644 +--- a/configs/nova-rk3588s_defconfig ++++ b/configs/nova-rk3588s_defconfig +@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/odroid-m1-rk3568_defconfig b/configs/odroid-m1-rk3568_defconfig +index b5263caff6d..a2217b530d1 100644 +--- a/configs/odroid-m1-rk3568_defconfig ++++ b/configs/odroid-m1-rk3568_defconfig +@@ -16,6 +16,8 @@ CONFIG_SPL_SPI=y + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y +diff --git a/configs/orangepi-3b-rk3566_defconfig b/configs/orangepi-3b-rk3566_defconfig +index 575dc4340d3..817de7b69e6 100644 +--- a/configs/orangepi-3b-rk3566_defconfig ++++ b/configs/orangepi-3b-rk3566_defconfig +@@ -17,6 +17,8 @@ CONFIG_SPL_SPI=y + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y +diff --git a/configs/orangepi-5-plus-rk3588_defconfig b/configs/orangepi-5-plus-rk3588_defconfig +index 138a633f320..e0aaa8dfb15 100644 +--- a/configs/orangepi-5-plus-rk3588_defconfig ++++ b/configs/orangepi-5-plus-rk3588_defconfig +@@ -17,6 +17,8 @@ CONFIG_SPL_SPI=y + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y +diff --git a/configs/orangepi-5-rk3588s_defconfig b/configs/orangepi-5-rk3588s_defconfig +index 33529d4cac3..09d8475d051 100644 +--- a/configs/orangepi-5-rk3588s_defconfig ++++ b/configs/orangepi-5-rk3588s_defconfig +@@ -16,6 +16,8 @@ CONFIG_SPL_SPI=y + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y +diff --git a/configs/pinetab2-rk3566_defconfig b/configs/pinetab2-rk3566_defconfig +index 2d075d12174..fcb3c474044 100644 +--- a/configs/pinetab2-rk3566_defconfig ++++ b/configs/pinetab2-rk3566_defconfig +@@ -17,6 +17,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y + CONFIG_SPL_SPI=y + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/powkiddy-x55-rk3566_defconfig b/configs/powkiddy-x55-rk3566_defconfig +index 2360bdbe84b..afb7f3ffafb 100644 +--- a/configs/powkiddy-x55-rk3566_defconfig ++++ b/configs/powkiddy-x55-rk3566_defconfig +@@ -9,6 +9,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000 + CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/quartz64-a-rk3566_defconfig b/configs/quartz64-a-rk3566_defconfig +index 1ea8e0f40cc..a4211afb6a9 100644 +--- a/configs/quartz64-a-rk3566_defconfig ++++ b/configs/quartz64-a-rk3566_defconfig +@@ -17,6 +17,8 @@ CONFIG_SPL_SPI=y + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y +diff --git a/configs/quartz64-b-rk3566_defconfig b/configs/quartz64-b-rk3566_defconfig +index f61b2c181a1..408b63dbb08 100644 +--- a/configs/quartz64-b-rk3566_defconfig ++++ b/configs/quartz64-b-rk3566_defconfig +@@ -16,6 +16,8 @@ CONFIG_SPL_SPI=y + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y +diff --git a/configs/quartzpro64-rk3588_defconfig b/configs/quartzpro64-rk3588_defconfig +index 06c5cff3ca5..dccc550d4ef 100644 +--- a/configs/quartzpro64-rk3588_defconfig ++++ b/configs/quartzpro64-rk3588_defconfig +@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y +diff --git a/configs/radxa-cm3-io-rk3566_defconfig b/configs/radxa-cm3-io-rk3566_defconfig +index 48c8fcf5a66..65198e4a507 100644 +--- a/configs/radxa-cm3-io-rk3566_defconfig ++++ b/configs/radxa-cm3-io-rk3566_defconfig +@@ -9,6 +9,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000 + CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/radxa-e25-rk3568_defconfig b/configs/radxa-e25-rk3568_defconfig +index 496fee0e0a4..b726e47c3e0 100644 +--- a/configs/radxa-e25-rk3568_defconfig ++++ b/configs/radxa-e25-rk3568_defconfig +@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y +diff --git a/configs/radxa-zero-3-rk3566_defconfig b/configs/radxa-zero-3-rk3566_defconfig +index 7606edf393e..d1611a638ae 100644 +--- a/configs/radxa-zero-3-rk3566_defconfig ++++ b/configs/radxa-zero-3-rk3566_defconfig +@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000 + CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/rock-3a-rk3568_defconfig b/configs/rock-3a-rk3568_defconfig +index 66ac2f6d7aa..1500691419d 100644 +--- a/configs/rock-3a-rk3568_defconfig ++++ b/configs/rock-3a-rk3568_defconfig +@@ -15,6 +15,8 @@ CONFIG_SPL_SPI=y + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y +diff --git a/configs/rock-3b-rk3568_defconfig b/configs/rock-3b-rk3568_defconfig +index 937796811a9..38d048439ed 100644 +--- a/configs/rock-3b-rk3568_defconfig ++++ b/configs/rock-3b-rk3568_defconfig +@@ -15,6 +15,8 @@ CONFIG_SPL_SPI=y + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y +diff --git a/configs/rock-3c-rk3566_defconfig b/configs/rock-3c-rk3566_defconfig +index f44b202c8c3..488b1c4e0c3 100644 +--- a/configs/rock-3c-rk3566_defconfig ++++ b/configs/rock-3c-rk3566_defconfig +@@ -15,6 +15,8 @@ CONFIG_SPL_SPI=y + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y +diff --git a/configs/rock-5-itx-rk3588_defconfig b/configs/rock-5-itx-rk3588_defconfig +index bb9f148692a..1d6a9e9465b 100644 +--- a/configs/rock-5-itx-rk3588_defconfig ++++ b/configs/rock-5-itx-rk3588_defconfig +@@ -17,6 +17,8 @@ CONFIG_SPL_SPI=y + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y +diff --git a/configs/rock5a-rk3588s_defconfig b/configs/rock5a-rk3588s_defconfig +index c09e6655f02..39602d86845 100644 +--- a/configs/rock5a-rk3588s_defconfig ++++ b/configs/rock5a-rk3588s_defconfig +@@ -10,6 +10,8 @@ CONFIG_DEBUG_UART_BASE=0xFEB50000 + CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/rock5b-rk3588_defconfig b/configs/rock5b-rk3588_defconfig +index 80a2f2fed58..d3cc8a19cfd 100644 +--- a/configs/rock5b-rk3588_defconfig ++++ b/configs/rock5b-rk3588_defconfig +@@ -17,6 +17,8 @@ CONFIG_SPL_SPI=y + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y +diff --git a/configs/sige7-rk3588_defconfig b/configs/sige7-rk3588_defconfig +index d15fc09fc8d..c77919cac79 100644 +--- a/configs/sige7-rk3588_defconfig ++++ b/configs/sige7-rk3588_defconfig +@@ -13,6 +13,8 @@ CONFIG_SPL_SPI=y + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y +diff --git a/configs/soquartz-blade-rk3566_defconfig b/configs/soquartz-blade-rk3566_defconfig +index 82910daf7cc..09fc6b6b6e5 100644 +--- a/configs/soquartz-blade-rk3566_defconfig ++++ b/configs/soquartz-blade-rk3566_defconfig +@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y +diff --git a/configs/soquartz-cm4-rk3566_defconfig b/configs/soquartz-cm4-rk3566_defconfig +index 5744f1baa81..e5a9ee1938b 100644 +--- a/configs/soquartz-cm4-rk3566_defconfig ++++ b/configs/soquartz-cm4-rk3566_defconfig +@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y +diff --git a/configs/soquartz-model-a-rk3566_defconfig b/configs/soquartz-model-a-rk3566_defconfig +index 920df9b622d..efcd3f5bc77 100644 +--- a/configs/soquartz-model-a-rk3566_defconfig ++++ b/configs/soquartz-model-a-rk3566_defconfig +@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y +diff --git a/configs/tiger-rk3588_defconfig b/configs/tiger-rk3588_defconfig +index 8eb1027e449..39e4946b0bf 100644 +--- a/configs/tiger-rk3588_defconfig ++++ b/configs/tiger-rk3588_defconfig +@@ -16,6 +16,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/toybrick-rk3588_defconfig b/configs/toybrick-rk3588_defconfig +index 12a076aeeae..c70210c0dee 100644 +--- a/configs/toybrick-rk3588_defconfig ++++ b/configs/toybrick-rk3588_defconfig +@@ -10,6 +10,8 @@ CONFIG_DEBUG_UART_BASE=0xFEB50000 + CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y + CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/turing-rk1-rk3588_defconfig b/configs/turing-rk1-rk3588_defconfig +index e6e1bda7ec1..e1bf365edc8 100644 +--- a/configs/turing-rk1-rk3588_defconfig ++++ b/configs/turing-rk1-rk3588_defconfig +@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y + CONFIG_FIT=y + CONFIG_FIT_VERBOSE=y +-- +2.46.1 + From 950f8e0de649f2a61bdd937a00fc67380c187f17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Such=C3=BD?= Date: Wed, 11 Sep 2024 04:33:22 +0000 Subject: [PATCH 195/271] Migrate to SPDX license (temporary ids) This is part of https://fedoraproject.org/wiki/Changes/SPDX_Licenses_Phase_4 Note that this is an SPDX identifier, but it still needs to be migrated to the proper identifiers in the fedora-license-data set. If there will be no comments in two weeks, I will merge this. --- uboot-tools.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index a7cc4bf..acb6f58 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -10,9 +10,9 @@ Version: 2024.10 Release: 0.6%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities -License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ +# Automatically converted from old format: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ - review is highly recommended. +License: GPL-2.0-or-later AND LicenseRef-Callaway-BSD AND LGPL-2.1-or-later AND LGPL-2.0-or-later URL: http://www.denx.de/wiki/U-Boot - ExcludeArch: s390x Source0: https://ftp.denx.de/pub/u-boot/u-boot-%{version}%{?candidate:-%{candidate}}.tar.bz2 Source1: aarch64-boards From 2605ac3cdc5da7e3d1fb3508929b9df553f5703f Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 2 Oct 2024 10:30:23 +0100 Subject: [PATCH 196/271] 2024.10 RC6 --- sources | 2 +- uboot-tools.spec | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sources b/sources index f50fe43..3a48403 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2024.10-rc5.tar.bz2) = bd86b6cc780ac79fef2abca1e6b27a97312105e6a8d809d8a7f93e3665342f90352124786ec075b5a64cf6705a91ae507dff127d2062c64ecdb325e395a7b0d9 +SHA512 (u-boot-2024.10-rc6.tar.bz2) = df569020757f330dc9f25f05712f02f4f8f1e3f5219223a439519050e684bee93971d85c2eb6a014e92e6ae6a2e59dac35b91c4f8e2cfa7884a5cf0083e8a023 diff --git a/uboot-tools.spec b/uboot-tools.spec index acb6f58..4a3fae8 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc5 +%global candidate rc6 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2024.10 -Release: 0.6%{?candidate:.%{candidate}}%{?dist} +Release: 0.7%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities # Automatically converted from old format: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ - review is highly recommended. @@ -207,6 +207,9 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Tue Oct 01 2024 Peter Robinson - 1:2024.10-0.7.rc6 +- Update to 2024.10 RC6 + * Mon Sep 16 2024 Peter Robinson - 1:2024.10-0.6.rc5 - Update to 2024.10 RC5 From 33cdd961f3534e474899fc4f1d4f3e13f29aea83 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 3 Oct 2024 18:33:04 +0100 Subject: [PATCH 197/271] Pass CMA FW setting through to kernel DT for Raspberry Pi --- ...pi-Pass-CMA-through-from-firmware-DT.patch | 32 +++++++++++++++++++ uboot-tools.spec | 7 +++- 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 0001-board-rpi-Pass-CMA-through-from-firmware-DT.patch diff --git a/0001-board-rpi-Pass-CMA-through-from-firmware-DT.patch b/0001-board-rpi-Pass-CMA-through-from-firmware-DT.patch new file mode 100644 index 0000000..aa19adf --- /dev/null +++ b/0001-board-rpi-Pass-CMA-through-from-firmware-DT.patch @@ -0,0 +1,32 @@ +From 81a2ddb6c44ff87be51201372f8ca0d84aaef6c9 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Thu, 3 Oct 2024 18:25:51 +0100 +Subject: [PATCH] board: rpi: Pass CMA through from firmware DT + +For a lot of usecases, such as display, camera, media +the Raspberry Pi needs a lot more CMA than distros +configure as default so we should pass this parameter +through so things work as expected. + +Signed-off-by: Peter Robinson +--- + board/raspberrypi/rpi/rpi.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c +index ab5ea85cf9f..c50eb884074 100644 +--- a/board/raspberrypi/rpi/rpi.c ++++ b/board/raspberrypi/rpi/rpi.c +@@ -561,6 +561,9 @@ void update_fdt_from_fw(void *fdt, void *fw_fdt) + + /* address of the PHY device as provided by the firmware */ + copy_property(fdt, fw_fdt, "ethernet0/mdio@e14/ethernet-phy@1", "reg"); ++ ++ /* copy the CMA set from the firmware DT to linux */ ++ copy_property(fdt, fw_fdt, "cma", "size"); + } + + int ft_board_setup(void *blob, struct bd_info *bd) +-- +2.46.2 + diff --git a/uboot-tools.spec b/uboot-tools.spec index 4a3fae8..8fad7dc 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2024.10 -Release: 0.7%{?candidate:.%{candidate}}%{?dist} +Release: 0.8%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities # Automatically converted from old format: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ - review is highly recommended. @@ -34,6 +34,8 @@ Patch10: rockchip-Enable-preboot-start-for-pci-usb.patch Patch11: FUSB302-USB-C-controller-support.patch # QCom Patch15: Qualcomm-add-support-for-SC7280-and-the-RB3-Gen-2.patch +# RPi +Patch20: 0001-board-rpi-Pass-CMA-through-from-firmware-DT.patch BuildRequires: bc BuildRequires: bison @@ -207,6 +209,9 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Thu Oct 03 2024 Peter Robinson - 1:2024.10-0.8.rc6 +- Pass CMA FW setting through to kernel DT for Raspberry Pi + * Tue Oct 01 2024 Peter Robinson - 1:2024.10-0.7.rc6 - Update to 2024.10 RC6 From 53f4c13a16c04c4c85189c94a11367a42009e554 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Fri, 11 Oct 2024 17:03:55 +0100 Subject: [PATCH 198/271] Update to 2024.10 GA Fix passing RPi firmware CMA setting to kernel DT Update Geekbox --- ...pi-Pass-CMA-through-from-firmware-DT.patch | 32 --- rockchip-Modernise-Geekbox-config.patch | 189 ++++++++++++++++++ rpi-Pass-CMA-through-from-firmware-DT.patch | 40 ++++ sources | 2 +- uboot-tools.spec | 12 +- 5 files changed, 239 insertions(+), 36 deletions(-) delete mode 100644 0001-board-rpi-Pass-CMA-through-from-firmware-DT.patch create mode 100644 rockchip-Modernise-Geekbox-config.patch create mode 100644 rpi-Pass-CMA-through-from-firmware-DT.patch diff --git a/0001-board-rpi-Pass-CMA-through-from-firmware-DT.patch b/0001-board-rpi-Pass-CMA-through-from-firmware-DT.patch deleted file mode 100644 index aa19adf..0000000 --- a/0001-board-rpi-Pass-CMA-through-from-firmware-DT.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 81a2ddb6c44ff87be51201372f8ca0d84aaef6c9 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Thu, 3 Oct 2024 18:25:51 +0100 -Subject: [PATCH] board: rpi: Pass CMA through from firmware DT - -For a lot of usecases, such as display, camera, media -the Raspberry Pi needs a lot more CMA than distros -configure as default so we should pass this parameter -through so things work as expected. - -Signed-off-by: Peter Robinson ---- - board/raspberrypi/rpi/rpi.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c -index ab5ea85cf9f..c50eb884074 100644 ---- a/board/raspberrypi/rpi/rpi.c -+++ b/board/raspberrypi/rpi/rpi.c -@@ -561,6 +561,9 @@ void update_fdt_from_fw(void *fdt, void *fw_fdt) - - /* address of the PHY device as provided by the firmware */ - copy_property(fdt, fw_fdt, "ethernet0/mdio@e14/ethernet-phy@1", "reg"); -+ -+ /* copy the CMA set from the firmware DT to linux */ -+ copy_property(fdt, fw_fdt, "cma", "size"); - } - - int ft_board_setup(void *blob, struct bd_info *bd) --- -2.46.2 - diff --git a/rockchip-Modernise-Geekbox-config.patch b/rockchip-Modernise-Geekbox-config.patch new file mode 100644 index 0000000..ee49fcf --- /dev/null +++ b/rockchip-Modernise-Geekbox-config.patch @@ -0,0 +1,189 @@ +From 45d8808e95ddf0702ed78acde7678291ae52abdb Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Fri, 11 Oct 2024 17:14:26 +0100 +Subject: [PATCH] configs: rockchip: Modernise Geekbox config + +Modernise and move the Geekbox config to use SPL/TPL with +upstream TF-A, enable MMC/USB/Eth to make the device more +useful and work like other Rockchip devices. Update the +readme to reflect the changes to the build process. + +Signed-off-by: Peter Robinson +--- + arch/arm/dts/rk3368-geekbox-u-boot.dtsi | 10 ++++ + board/geekbuying/geekbox/README | 40 +++++++++++++- + configs/geekbox_defconfig | 71 ++++++++++++++++++++++++- + 3 files changed, 118 insertions(+), 3 deletions(-) + +diff --git a/arch/arm/dts/rk3368-geekbox-u-boot.dtsi b/arch/arm/dts/rk3368-geekbox-u-boot.dtsi +index cfc8b9340a8..55d007f7ab8 100644 +--- a/arch/arm/dts/rk3368-geekbox-u-boot.dtsi ++++ b/arch/arm/dts/rk3368-geekbox-u-boot.dtsi +@@ -26,6 +26,16 @@ + bootph-all; + }; + ++&dmc { ++ bootph-all; ++ ++ rockchip,memory-schedule = ; ++ rockchip,ddr-frequency = <800000000>; ++ rockchip,ddr-speed-bin = ; ++ ++ status = "okay"; ++}; ++ + &grf { + bootph-all; + }; +diff --git a/board/geekbuying/geekbox/README b/board/geekbuying/geekbox/README +index de980f2f233..bd4d8cdd084 100644 +--- a/board/geekbuying/geekbox/README ++++ b/board/geekbuying/geekbox/README +@@ -1 +1,39 @@ +-see board/rockchip/sheep_rk3368/README ++Here is the step-by-step to boot to U-Boot on the Geekbox ++ ++Get the Source and build ATF ++============================ ++ ++ > git clone https://github.com/TrustedFirmware-A/trusted-firmware-a.git ++ > cd arm-trusted-firmware ++ > make CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3368 bl31 ++ ++Configure U-Boot ++================ ++ ++ > cd ../u-boot ++ > export BL31=../arm-trusted-firmware/build/rk3368/release/bl31.bin ++ > make geekbox_defconfig ++ ++Build the full U-Boot/ATF firmware stack ++======================================== ++ ++ > make CROSS_COMPILE=aarch64-unknown-elf- ++ ++Flash the image ++=============== ++ ++Copy the SPL to offset 32k and the FIT image containing the payloads ++(U-Boot proper, ATF, devicetree) to offset 256k card. ++ ++eMMC ++---- ++ ++rkdeveloptool allows to flash the on-board eMMC via the USB OTG interface with ++help of the Rockchip loader binary. ++ ++ > git clone https://github.com/rockchip-linux/rkdeveloptool ++ > cd rkdeveloptool ++ > autoreconf -i && && ./configure && make ++ > git clone https://github.com/rockchip-linux/rkbin.git ++ > ./rkdeveloptool db rkbin/rk33/rk3368_loader_v2.00.256.bin ++ > ./rkdeveloptool wl 64 ../u-boot-rockchip.bin +diff --git a/configs/geekbox_defconfig b/configs/geekbox_defconfig +index 8f4be79831a..1b116fa8602 100644 +--- a/configs/geekbox_defconfig ++++ b/configs/geekbox_defconfig +@@ -3,29 +3,96 @@ CONFIG_SKIP_LOWLEVEL_INIT=y + CONFIG_COUNTER_FREQUENCY=24000000 + CONFIG_ARCH_ROCKCHIP=y + CONFIG_TEXT_BASE=0x00200000 +-CONFIG_SYS_MALLOC_F_LEN=0x1000 + CONFIG_NR_DRAM_BANKS=1 + CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y + CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x300000 + CONFIG_DEFAULT_DEVICE_TREE="rk3368-geekbox" ++CONFIG_SPL_TEXT_BASE=0x00000000 + CONFIG_ROCKCHIP_RK3368=y ++CONFIG_TPL_LIBCOMMON_SUPPORT=y ++CONFIG_TPL_LIBGENERIC_SUPPORT=y ++CONFIG_SPL_DRIVERS_MISC=y ++CONFIG_SPL_STACK=0x188000 ++CONFIG_SPL_HAS_BSS_LINKER_SECTION=y ++CONFIG_SPL_BSS_START_ADDR=0x400000 ++CONFIG_SPL_BSS_MAX_SIZE=0x20000 ++CONFIG_SPL_STACK_R=y ++CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x4000 ++CONFIG_SPL=y + CONFIG_TARGET_GEEKBOX=y + CONFIG_DEBUG_UART_BASE=0xFF690000 + CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SYS_LOAD_ADDR=0x800800 + CONFIG_DEBUG_UART=y ++CONFIG_FIT=y ++CONFIG_FIT_VERBOSE=y ++CONFIG_SPL_LOAD_FIT=y + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3368-geekbox.dtb" + # CONFIG_DISPLAY_CPUINFO is not set + CONFIG_DISPLAY_BOARDINFO_LATE=y ++CONFIG_SPL_MAX_SIZE=0x40000 ++CONFIG_SPL_PAD_TO=0x7f8000 ++CONFIG_SPL_BOOTROM_SUPPORT=y ++# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set ++# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set ++CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x200 ++CONFIG_SPL_ATF=y ++CONFIG_TPL=y ++CONFIG_TPL_SYS_MALLOC_SIMPLE=y ++CONFIG_TPL_DRIVERS_MISC=y ++CONFIG_CMD_GPIO=y ++CONFIG_CMD_MMC=y ++CONFIG_CMD_REGULATOR=y ++CONFIG_CMD_USB=y ++CONFIG_SPL_OF_CONTROL=y ++CONFIG_TPL_OF_CONTROL=y ++CONFIG_OF_LIVE=y ++CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names interrupt-parent" ++CONFIG_TPL_OF_PLATDATA=y ++CONFIG_ENV_IS_IN_MMC=y + CONFIG_SYS_RELOC_GD_ENV_ADDR=y ++CONFIG_NET_RANDOM_ETHADDR=y ++CONFIG_TPL_DM=y + CONFIG_REGMAP=y ++CONFIG_SPL_REGMAP=y ++CONFIG_TPL_REGMAP=y + CONFIG_SYSCON=y +-CONFIG_BOUNCE_BUFFER=y ++CONFIG_SPL_SYSCON=y ++CONFIG_TPL_SYSCON=y + CONFIG_CLK=y ++CONFIG_SPL_CLK=y ++CONFIG_TPL_CLK=y ++CONFIG_ROCKCHIP_GPIO=y ++CONFIG_SYS_I2C_ROCKCHIP=y ++CONFIG_MMC_DW=y ++CONFIG_MMC_DW_ROCKCHIP=y + CONFIG_PINCTRL=y ++CONFIG_PHY_REALTEK=y ++CONFIG_DM_ETH_PHY=y ++CONFIG_ETH_DESIGNWARE=y ++CONFIG_RGMII=y ++CONFIG_GMAC_ROCKCHIP=y ++CONFIG_PINCTRL=y ++CONFIG_SPL_PINCTRL=y ++CONFIG_DM_PMIC=y ++CONFIG_PMIC_RK8XX=y ++CONFIG_DM_REGULATOR_FIXED=y ++CONFIG_REGULATOR_RK8XX=y + CONFIG_RAM=y ++CONFIG_SPL_RAM=y ++CONFIG_TPL_RAM=y + CONFIG_DEBUG_UART_SHIFT=2 + CONFIG_DEBUG_UART_ANNOUNCE=y + CONFIG_SYS_NS16550_MEM32=y ++CONFIG_SYSINFO=y ++CONFIG_SYSINFO_SMBIOS=y + CONFIG_SYSRESET=y ++CONFIG_USB=y ++CONFIG_USB_EHCI_HCD=y ++CONFIG_USB_EHCI_GENERIC=y ++CONFIG_USB_DWC2=y ++CONFIG_USB_GADGET=y ++CONFIG_USB_GADGET_DWC2_OTG=y ++CONFIG_SPL_TINY_MEMSET=y ++CONFIG_LZO=y + CONFIG_ERRNO_STR=y +-- +2.47.0 + diff --git a/rpi-Pass-CMA-through-from-firmware-DT.patch b/rpi-Pass-CMA-through-from-firmware-DT.patch new file mode 100644 index 0000000..1185095 --- /dev/null +++ b/rpi-Pass-CMA-through-from-firmware-DT.patch @@ -0,0 +1,40 @@ +From c449955f6aece3148ccf67890df1083fb3a41884 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Fri, 11 Oct 2024 12:04:10 +0100 +Subject: [PATCH] board: rpi: Pass CMA through from firmware DT + +For a lot of usecases, such as display, camera, media +the Raspberry Pi needs a lot more CMA than distros +configure as default so we should pass this parameter +through so things work as expected. Fix a spelling +mistake while we're at it. + +Signed-off-by: Peter Robinson +--- + board/raspberrypi/rpi/rpi.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c +index ab5ea85cf9f..dd5a318d239 100644 +--- a/board/raspberrypi/rpi/rpi.c ++++ b/board/raspberrypi/rpi/rpi.c +@@ -540,12 +540,15 @@ void update_fdt_from_fw(void *fdt, void *fw_fdt) + if (fdt == fw_fdt) + return; + +- /* The firmware provides a more precie model; so copy that */ ++ /* The firmware provides a more precise model; so copy that */ + copy_property(fdt, fw_fdt, "/", "model"); + + /* memory reserve as suggested by the firmware */ + copy_property(fdt, fw_fdt, "/", "memreserve"); + ++ /* copy the CMA memory setting from the firmware DT to linux */ ++ copy_property(fdt, fw_fdt, "/reserved-memory/linux,cma", "size"); ++ + /* Adjust dma-ranges for the SD card and PCI bus as they can depend on + * the SoC revision + */ +-- +2.47.0 + diff --git a/sources b/sources index 3a48403..82c8edc 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2024.10-rc6.tar.bz2) = df569020757f330dc9f25f05712f02f4f8f1e3f5219223a439519050e684bee93971d85c2eb6a014e92e6ae6a2e59dac35b91c4f8e2cfa7884a5cf0083e8a023 +SHA512 (u-boot-2024.10.tar.bz2) = ef817c9b5ae8dc6cd9e3f57811e90acc6a4d4394f0356aa5923e3e3c8559168f977bd5bf82824cd3650aa8e5e3c3d1b00e20818d21368151748682f1fc51152c diff --git a/uboot-tools.spec b/uboot-tools.spec index 8fad7dc..9eeb08e 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc6 +#global candidate rc0 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2024.10 -Release: 0.8%{?candidate:.%{candidate}}%{?dist} +Release: 1%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities # Automatically converted from old format: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ - review is highly recommended. @@ -32,10 +32,11 @@ Patch5: enable-bootmenu-by-default.patch # Rockchips improvements Patch10: rockchip-Enable-preboot-start-for-pci-usb.patch Patch11: FUSB302-USB-C-controller-support.patch +Patch12: rockchip-Modernise-Geekbox-config.patch # QCom Patch15: Qualcomm-add-support-for-SC7280-and-the-RB3-Gen-2.patch # RPi -Patch20: 0001-board-rpi-Pass-CMA-through-from-firmware-DT.patch +Patch20: rpi-Pass-CMA-through-from-firmware-DT.patch BuildRequires: bc BuildRequires: bison @@ -209,6 +210,11 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Fri Oct 11 2024 Peter Robinson - 1:2024.10-1 +- Update to 2024.10 GA +- Fix passing RPi firmware CMA setting to kernel DT +- Update Geekbox + * Thu Oct 03 2024 Peter Robinson - 1:2024.10-0.8.rc6 - Pass CMA FW setting through to kernel DT for Raspberry Pi From 9fb9e1ac57ec5784ff52eed70aa506f3d67cff95 Mon Sep 17 00:00:00 2001 From: Andrew Gunnerson Date: Mon, 4 Nov 2024 19:00:36 -0500 Subject: [PATCH 199/271] Install manpages for dumpimage, kwboot, and mkeficapsule Signed-off-by: Andrew Gunnerson --- uboot-tools.spec | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 9eeb08e..a63daa3 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -188,7 +188,10 @@ for tool in dumpimage env/fw_printenv fit_check_sign fit_info gdb/gdbcont gdb/gd do install -p -m 0755 builds/tools/$tool %{buildroot}%{_bindir} done -install -p -m 0644 doc/mkimage.1 %{buildroot}%{_mandir}/man1 +for tool in dumpimage kwboot mkeficapsule mkimage +do +install -p -m 0644 doc/$tool.1 %{buildroot}%{_mandir}/man1 +done install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} ( cd %{buildroot}%{_bindir}; ln -sf fw_printenv fw_setenv ) @@ -198,6 +201,9 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %doc README doc/develop/distro.rst doc/README.gpt %doc doc/develop/uefi doc/usage doc/arch/arm64.rst %{_bindir}/* +%{_mandir}/man1/dumpimage.1* +%{_mandir}/man1/kwboot.1* +%{_mandir}/man1/mkeficapsule.1* %{_mandir}/man1/mkimage.1* %if %{with toolsonly} From 139751f49cb6ae7547df1a1a4eff29e0ba0b2ffc Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 15 Oct 2024 22:33:40 +0100 Subject: [PATCH 200/271] drop unused duplicate firmwares --- uboot-tools.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index a63daa3..3ebc11a 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -157,7 +157,7 @@ mkdir -p %{buildroot}%{_datadir}/uboot/ %ifarch aarch64 for board in $(ls builds) do - for file in u-boot.bin u-boot.img u-boot-dtb.img u-boot.itb u-boot-sunxi-with-spl.bin u-boot-rockchip-spi.bin u-boot-rockchip.bin idbloader.img idbloader-spi.img spl/boot.bin + for file in u-boot.bin u-boot.img u-boot-dtb.img u-boot-sunxi-with-spl.bin u-boot-rockchip-spi.bin u-boot-rockchip.bin do if [ -f builds/$(echo $board)/$(echo $file) ]; then install -pD -m 0644 builds/$(echo $board)/$(echo $file) %{buildroot}%{_datadir}/uboot/$(echo $board)/$(echo $file) @@ -165,6 +165,10 @@ do done done +# Just for xilinx_zynqmp_virt +install -pD -m 0644 builds/xilinx_zynqmp_virt/u-boot.itb %{buildroot}%{_datadir}/uboot/xilinx_zynqmp_virt/u-boot.itb +install -pD -m 0644 builds/xilinx_zynqmp_virt/spl/boot.bin %{buildroot}%{_datadir}/uboot/xilinx_zynqmp_virt/boot.bin + # For Apple M-series we also need the nodtb variant install -pD -m 0644 builds/apple_m1/u-boot-nodtb.bin %{buildroot}%{_datadir}/uboot/apple_m1/u-boot-nodtb.bin From 357edb992292e9e396ed885a288dc42b1b72c763 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 31 Dec 2024 15:12:02 +0000 Subject: [PATCH 201/271] 2025.01 RC6 --- FUSB302-USB-C-controller-support.patch | 6018 ----------------- ...support-for-SC7280-and-the-RB3-Gen-2.patch | 1414 ---- aarch64-boards | 2 + ...hip-Enable-preboot-start-for-pci-usb.patch | 596 +- ...identifiers-for-the-new-RPi-5-series.patch | 43 + rpi-Pass-CMA-through-from-firmware-DT.patch | 40 - sources | 2 +- uboot-tools.spec | 23 +- ..._location-for-finding-the-DT-on-disk.patch | 32 +- 9 files changed, 365 insertions(+), 7805 deletions(-) delete mode 100644 FUSB302-USB-C-controller-support.patch delete mode 100644 Qualcomm-add-support-for-SC7280-and-the-RB3-Gen-2.patch create mode 100644 rpi-Add-identifiers-for-the-new-RPi-5-series.patch delete mode 100644 rpi-Pass-CMA-through-from-firmware-DT.patch diff --git a/FUSB302-USB-C-controller-support.patch b/FUSB302-USB-C-controller-support.patch deleted file mode 100644 index a25f8dd..0000000 --- a/FUSB302-USB-C-controller-support.patch +++ /dev/null @@ -1,6018 +0,0 @@ -From patchwork Thu Sep 5 15:08:37 2024 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Sebastian Reichel -X-Patchwork-Id: 1981315 -X-Patchwork-Delegate: ykai007@gmail.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=collabora.com header.i=@collabora.com - header.a=rsa-sha256 header.s=mail header.b=VOvjn+x1; - 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 4X02zx1gZpz1yXY - for ; Fri, 6 Sep 2024 01:18:05 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id E002A88CD2; - Thu, 5 Sep 2024 17:17:16 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=collabora.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=collabora.com header.i=@collabora.com - header.b="VOvjn+x1"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 9ED9788CD2; Thu, 5 Sep 2024 17:17:16 +0200 (CEST) -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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no - version=3.4.2 -Received: from bali.collaboradmins.com (bali.collaboradmins.com - [IPv6:2a01:4f8:201:9162::2]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 8F95B88CC0 - for ; Thu, 5 Sep 2024 17:17:08 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=collabora.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=sebastian.reichel@collabora.com -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; - s=mail; t=1725549428; - bh=GUi0ELUr54qxRL+zUYIh2cpnf8aAbxP3km5z9ihBLiA=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=VOvjn+x1YAGL8uuX8oe/eA1AShGOQ+65YCdPN4UIul65K52PZGC4Rh30foWYR3GYv - ksyxZc+jsHQcN72mVdV3njT/SIGekJFu683r6aomMjm3Mrc+uUUF7QcQdx2QgObWXW - 3RmaT4So9PLApr20wdqN8mqL3PND0cpUJiGoZG18Nu+sX+XJYGTtQ3qo+p00ZjT6TY - TXhYMaIJeqISS7ocTqHwKpWZQ/5uXBBLOuLnlKRVhjHEVg6Ds0DFB8/XFwU24CB0VM - Xutwxqot6qKBLUt/yDrX8upercY5M0tia9Ymno4ezs/mVrRI6ztNPgNmjPUzaBq/T2 - 9q+TUcwqV3v1A== -Received: from jupiter.universe (dyndsl-091-248-189-231.ewe-ip-backbone.de - [91.248.189.231]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) (Authenticated sender: sre) - by bali.collaboradmins.com (Postfix) with ESMTPSA id EC7AC17E1167; - Thu, 5 Sep 2024 17:17:07 +0200 (CEST) -Received: by jupiter.universe (Postfix, from userid 1000) - id 9F52C4800EB; Thu, 05 Sep 2024 17:17:07 +0200 (CEST) -From: Sebastian Reichel -To: Marek Vasut , u-boot@lists.denx.de, - Jonas Karlman , Soeren Moch -Cc: Eugen Hristev , - Tim Harvey , Kever Yang , - Philipp Tomsich , Simon Glass , - Sebastian Reichel -Subject: [PATCH v6 1/6] usb: tcpm: add core framework -Date: Thu, 5 Sep 2024 17:08:37 +0200 -Message-ID: <20240905151707.59101-2-sebastian.reichel@collabora.com> -X-Mailer: git-send-email 2.45.2 -In-Reply-To: <20240905151707.59101-1-sebastian.reichel@collabora.com> -References: <20240905151707.59101-1-sebastian.reichel@collabora.com> -MIME-Version: 1.0 -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 - -This adds TCPM framework in preparation for fusb302 support, which can -handle USB power delivery messages. This is needed to solve issues with -devices, that are running from a USB-C port supporting USB-PD, but not -having a battery. - -Such a device currently boots to the kernel without interacting with -the power-supply at all. If there are no USB-PD message replies within -5 seconds, the power-supply assumes the peripheral is not capable of -USB-PD. It usually takes more than 5 seconds for the system to reach -the kernel and probe the I2C based fusb302 chip driver. Thus the -system always runs into this state. The power-supply's solution to -fix this error state is a hard reset, which involves removing the -power from VBUS. Boards without a battery (or huge capacitors) will -reset at this point resulting in a boot loop. - -This imports the TCPM framework from the kernel. The porting has -originally been done by Rockchip using hardware timers and the Linux -kernel's TCPM code from some years ago. - -I had a look at upgrading to the latest TCPM kernel code, but that -beast became a lot more complex due to adding more USB-C features. -I believe these features are not needed in U-Boot and with multiple -kthreads and hrtimers being involved it is non-trivial to port them. -Instead I worked on stripping down features from the Rockchip port -to an even more basic level. Also the TCPM code has been reworked -to avoid complete use of any timers (Rockchip used SoC specific -hardware timers + IRQ to implement delayed work mechanism). Instead -the delayed state changes are handled directly from the poll loop. - -Note, that (in contrast to the original Rockchip port) the state -machine has the same hard reset quirk, that the kernel has - i.e. -it avoids disabling the CC pin resistors for devices that are not -self-powered. Without that quirk, the Radxa Rock 5B will not just -end up doing a machine reset when a hard reset is triggered, but will -not even recover, because the CPU will loose power and the FUSB302 -will keep this state because of leak voltage arriving through the RX -serial pin (assuming a serial adapter is connected). - -This also includes a 'tcpm' command, which can be used to get -information about the current state and the negotiated voltage -and current. - -Co-developed-by: Wang Jie -Signed-off-by: Wang Jie -Tested-by: Soeren Moch -Signed-off-by: Sebastian Reichel ---- - Makefile | 1 + - cmd/Kconfig | 7 + - cmd/Makefile | 1 + - cmd/tcpm.c | 136 ++ - doc/usage/cmd/tcpm.rst | 66 + - doc/usage/index.rst | 1 + - drivers/usb/Kconfig | 2 + - drivers/usb/tcpm/Kconfig | 8 + - drivers/usb/tcpm/Makefile | 3 + - drivers/usb/tcpm/tcpm-internal.h | 173 +++ - drivers/usb/tcpm/tcpm-uclass.c | 149 ++ - drivers/usb/tcpm/tcpm.c | 2288 ++++++++++++++++++++++++++++++ - include/dm/uclass-id.h | 1 + - include/usb/pd.h | 516 +++++++ - include/usb/tcpm.h | 99 ++ - 15 files changed, 3451 insertions(+) - create mode 100644 cmd/tcpm.c - create mode 100644 doc/usage/cmd/tcpm.rst - create mode 100644 drivers/usb/tcpm/Kconfig - create mode 100644 drivers/usb/tcpm/Makefile - create mode 100644 drivers/usb/tcpm/tcpm-internal.h - create mode 100644 drivers/usb/tcpm/tcpm-uclass.c - create mode 100644 drivers/usb/tcpm/tcpm.c - create mode 100644 include/usb/pd.h - create mode 100644 include/usb/tcpm.h - -diff --git a/Makefile b/Makefile -index 74df5d177c1f..5a581199c170 100644 ---- a/Makefile -+++ b/Makefile -@@ -879,6 +879,7 @@ libs-y += drivers/usb/musb/ - libs-y += drivers/usb/musb-new/ - libs-y += drivers/usb/isp1760/ - libs-y += drivers/usb/phy/ -+libs-y += drivers/usb/tcpm/ - libs-y += drivers/usb/ulpi/ - ifdef CONFIG_POST - libs-y += post/ -diff --git a/cmd/Kconfig b/cmd/Kconfig -index 978f44eda426..7710bee22ace 100644 ---- a/cmd/Kconfig -+++ b/cmd/Kconfig -@@ -221,6 +221,13 @@ config CMD_REGINFO - help - Register dump - -+config CMD_TCPM -+ bool "tcpm" -+ depends on TYPEC_TCPM -+ help -+ Show voltage and current negotiated via USB PD as well as the -+ current state of the Type C Port Manager (TCPM) state machine. -+ - config CMD_TLV_EEPROM - bool "tlv_eeprom" - depends on I2C_EEPROM -diff --git a/cmd/Makefile b/cmd/Makefile -index 87133cc27a8a..bd0b23ef1013 100644 ---- a/cmd/Makefile -+++ b/cmd/Makefile -@@ -172,6 +172,7 @@ obj-$(CONFIG_CMD_SMBIOS) += smbios.o - obj-$(CONFIG_CMD_SMC) += smccc.o - obj-$(CONFIG_CMD_SYSBOOT) += sysboot.o - obj-$(CONFIG_CMD_STACKPROTECTOR_TEST) += stackprot_test.o -+obj-$(CONFIG_CMD_TCPM) += tcpm.o - obj-$(CONFIG_CMD_TEMPERATURE) += temperature.o - obj-$(CONFIG_CMD_TERMINAL) += terminal.o - obj-$(CONFIG_CMD_TIME) += time.o -diff --git a/cmd/tcpm.c b/cmd/tcpm.c -new file mode 100644 -index 000000000000..962cd234a869 ---- /dev/null -+++ b/cmd/tcpm.c -@@ -0,0 +1,136 @@ -+// SPDX-License-Identifier: GPL-2.0+ -+/* -+ * (C) Copyright 2024 Collabora -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+ -+#define LIMIT_DEV 32 -+#define LIMIT_PARENT 20 -+ -+static struct udevice *currdev; -+ -+static int do_dev(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) -+{ -+ char *name; -+ int ret = -ENODEV; -+ -+ switch (argc) { -+ case 2: -+ name = argv[1]; -+ ret = tcpm_get(name, &currdev); -+ if (ret) { -+ log_err("Can't get TCPM %s: %d (%s)!\n", name, ret, errno_str(ret)); -+ return CMD_RET_FAILURE; -+ } -+ case 1: -+ if (!currdev) { -+ log_err("TCPM device is not set!\n\n"); -+ return CMD_RET_USAGE; -+ } -+ -+ printf("dev: %d @ %s\n", dev_seq(currdev), currdev->name); -+ } -+ -+ return CMD_RET_SUCCESS; -+} -+ -+static int do_list(struct cmd_tbl *cmdtp, int flag, int argc, -+ char *const argv[]) -+{ -+ struct udevice *dev; -+ int ret, err = 0; -+ -+ printf("| %-*.*s| %-*.*s| %s @ %s\n", -+ LIMIT_DEV, LIMIT_DEV, "Name", -+ LIMIT_PARENT, LIMIT_PARENT, "Parent name", -+ "Parent uclass", "seq"); -+ -+ for (ret = uclass_first_device_check(UCLASS_TCPM, &dev); dev; -+ ret = uclass_next_device_check(&dev)) { -+ if (ret) -+ err = ret; -+ -+ printf("| %-*.*s| %-*.*s| %s @ %d | status: %i\n", -+ LIMIT_DEV, LIMIT_DEV, dev->name, -+ LIMIT_PARENT, LIMIT_PARENT, dev->parent->name, -+ dev_get_uclass_name(dev->parent), dev_seq(dev->parent), -+ ret); -+ } -+ -+ if (err) -+ return CMD_RET_FAILURE; -+ -+ return CMD_RET_SUCCESS; -+} -+ -+int do_print_info(struct udevice *dev) -+{ -+ enum typec_orientation orientation = tcpm_get_orientation(dev); -+ const char *state = tcpm_get_state(dev); -+ int pd_rev = tcpm_get_pd_rev(dev); -+ int mv = tcpm_get_voltage(dev); -+ int ma = tcpm_get_current(dev); -+ enum typec_role pwr_role = tcpm_get_pwr_role(dev); -+ enum typec_data_role data_role = tcpm_get_data_role(dev); -+ bool connected = tcpm_is_connected(dev); -+ -+ if (!connected) { -+ printf("TCPM State: %s\n", state); -+ return 0; -+ } -+ -+ printf("Orientation: %s\n", typec_orientation_name[orientation]); -+ printf("PD Revision: %s\n", typec_pd_rev_name[pd_rev]); -+ printf("Power Role: %s\n", typec_role_name[pwr_role]); -+ printf("Data Role: %s\n", typec_data_role_name[data_role]); -+ printf("Voltage: %2d.%03d V\n", mv / 1000, mv % 1000); -+ printf("Current: %2d.%03d A\n", ma / 1000, ma % 1000); -+ -+ return 0; -+} -+ -+static int do_info(struct cmd_tbl *cmdtp, int flag, int argc, -+ char *const argv[]) -+{ -+ if (!currdev) { -+ printf("First, set the TCPM device!\n"); -+ return CMD_RET_USAGE; -+ } -+ -+ return do_print_info(currdev); -+} -+ -+static struct cmd_tbl subcmd[] = { -+ U_BOOT_CMD_MKENT(dev, 2, 1, do_dev, "", ""), -+ U_BOOT_CMD_MKENT(list, 1, 1, do_list, "", ""), -+ U_BOOT_CMD_MKENT(info, 1, 1, do_info, "", ""), -+}; -+ -+static int do_tcpm(struct cmd_tbl *cmdtp, int flag, int argc, -+ char *const argv[]) -+{ -+ struct cmd_tbl *cmd; -+ -+ argc--; -+ argv++; -+ -+ cmd = find_cmd_tbl(argv[0], subcmd, ARRAY_SIZE(subcmd)); -+ if (!cmd || argc > cmd->maxargs) -+ return CMD_RET_USAGE; -+ -+ return cmd->cmd(cmdtp, flag, argc, argv); -+} -+ -+ /**************************************************/ -+ -+U_BOOT_CMD(tcpm, CONFIG_SYS_MAXARGS, 1, do_tcpm, -+ "TCPM sub-system", -+ "list - list TCPM devices\n" -+ "tcpm dev [name] - show or [set] operating TCPM device\n" -+ "tcpm info - dump information\n" -+); -diff --git a/doc/usage/cmd/tcpm.rst b/doc/usage/cmd/tcpm.rst -new file mode 100644 -index 000000000000..1e8199c0f89c ---- /dev/null -+++ b/doc/usage/cmd/tcpm.rst -@@ -0,0 +1,66 @@ -+.. SPDX-License-Identifier: GPL-2.0+: -+ -+.. index:: -+ single: tcpm (command) -+ -+tcpm command -+============ -+ -+Synopsis -+-------- -+ -+:: -+ -+ tcpm dev [devname] -+ tcpm info -+ tcpm list -+ -+Description -+----------- -+ -+The tcpm command is used to control USB-PD controllers, also known as TypeC Port Manager (TCPM). -+ -+The 'tcpm dev' command shows or set current TCPM device. -+ -+ devname -+ device name to change -+ -+The 'tcpm info' command displays the current state of the device -+ -+The 'tcpm list' command displays the list available devices. -+ -+Examples -+-------- -+ -+The 'tcpm info' command displays device's status: -+:: -+ -+ => tcpm info -+ Orientation: normal -+ PD Revision: rev3 -+ Power Role: sink -+ Data Role: device -+ Voltage: 20.000 V -+ Current: 2.250 A -+ -+The current device can be shown or set via 'tcpm dev' command: -+:: -+ -+ => tcpm dev -+ TCPM device is not set! -+ => tcpm dev usb-typec@22 -+ dev: 0 @ usb-typec@22 -+ => tcpm dev -+ dev: 0 @ usb-typec@22 -+ -+The list of available devices can be shown via 'tcpm list' command: -+:: -+ -+ => tcpm list -+ | Name | Parent name | Parent uclass @ seq -+ | usb-typec@22 | i2c@feac0000 | i2c @ 4 | status: 0 -+ -+Configuration -+------------- -+ -+The tcpm command is only available if CONFIG_CMD_TCPM=y. -diff --git a/doc/usage/index.rst b/doc/usage/index.rst -index 6a218c46b4e4..b4be42f59119 100644 ---- a/doc/usage/index.rst -+++ b/doc/usage/index.rst -@@ -111,6 +111,7 @@ Shell commands - cmd/smbios - cmd/sound - cmd/source -+ cmd/tcpm - cmd/temperature - cmd/tftpput - cmd/trace -diff --git a/drivers/usb/Kconfig b/drivers/usb/Kconfig -index a972d87c7ad4..985d3a9ef7e6 100644 ---- a/drivers/usb/Kconfig -+++ b/drivers/usb/Kconfig -@@ -85,6 +85,8 @@ source "drivers/usb/emul/Kconfig" - - source "drivers/usb/phy/Kconfig" - -+source "drivers/usb/tcpm/Kconfig" -+ - source "drivers/usb/ulpi/Kconfig" - - if USB_HOST -diff --git a/drivers/usb/tcpm/Kconfig b/drivers/usb/tcpm/Kconfig -new file mode 100644 -index 000000000000..55bf8e202b90 ---- /dev/null -+++ b/drivers/usb/tcpm/Kconfig -@@ -0,0 +1,8 @@ -+# SPDX-License-Identifier: GPL-2.0 -+ -+config TYPEC_TCPM -+ tristate "USB Type-C Port Controller Manager" -+ depends on DM -+ help -+ The Type-C Port Controller Manager provides a USB PD and USB Type-C -+ state machine for use with Type-C Port Controllers. -diff --git a/drivers/usb/tcpm/Makefile b/drivers/usb/tcpm/Makefile -new file mode 100644 -index 000000000000..a0f76436f3fd ---- /dev/null -+++ b/drivers/usb/tcpm/Makefile -@@ -0,0 +1,3 @@ -+# SPDX-License-Identifier: GPL-2.0 -+ -+obj-$(CONFIG_TYPEC_TCPM) += tcpm.o tcpm-uclass.o -diff --git a/drivers/usb/tcpm/tcpm-internal.h b/drivers/usb/tcpm/tcpm-internal.h -new file mode 100644 -index 000000000000..561442090027 ---- /dev/null -+++ b/drivers/usb/tcpm/tcpm-internal.h -@@ -0,0 +1,173 @@ -+/* SPDX-License-Identifier: GPL-2.0-or-later */ -+/* -+ * Copyright 2015-2017 Google, Inc -+ * Copyright 2024 Collabora -+ */ -+ -+#ifndef __LINUX_USB_TCPM_INTERNAL_H -+#define __LINUX_USB_TCPM_INTERNAL_H -+ -+#define FOREACH_TCPM_STATE(S) \ -+ S(INVALID_STATE), \ -+ S(TOGGLING), \ -+ S(SRC_UNATTACHED), \ -+ S(SRC_ATTACH_WAIT), \ -+ S(SRC_ATTACHED), \ -+ S(SRC_STARTUP), \ -+ S(SRC_SEND_CAPABILITIES), \ -+ S(SRC_SEND_CAPABILITIES_TIMEOUT), \ -+ S(SRC_NEGOTIATE_CAPABILITIES), \ -+ S(SRC_TRANSITION_SUPPLY), \ -+ S(SRC_READY), \ -+ S(SRC_WAIT_NEW_CAPABILITIES), \ -+ \ -+ S(SNK_UNATTACHED), \ -+ S(SNK_ATTACH_WAIT), \ -+ S(SNK_DEBOUNCED), \ -+ S(SNK_ATTACHED), \ -+ S(SNK_STARTUP), \ -+ S(SNK_DISCOVERY), \ -+ S(SNK_DISCOVERY_DEBOUNCE), \ -+ S(SNK_DISCOVERY_DEBOUNCE_DONE), \ -+ S(SNK_WAIT_CAPABILITIES), \ -+ S(SNK_NEGOTIATE_CAPABILITIES), \ -+ S(SNK_TRANSITION_SINK), \ -+ S(SNK_TRANSITION_SINK_VBUS), \ -+ S(SNK_READY), \ -+ \ -+ S(HARD_RESET_SEND), \ -+ S(HARD_RESET_START), \ -+ S(SRC_HARD_RESET_VBUS_OFF), \ -+ S(SRC_HARD_RESET_VBUS_ON), \ -+ S(SNK_HARD_RESET_SINK_OFF), \ -+ S(SNK_HARD_RESET_WAIT_VBUS), \ -+ S(SNK_HARD_RESET_SINK_ON), \ -+ \ -+ S(SOFT_RESET), \ -+ S(SOFT_RESET_SEND), \ -+ \ -+ S(DR_SWAP_ACCEPT), \ -+ S(DR_SWAP_CHANGE_DR), \ -+ \ -+ S(ERROR_RECOVERY), \ -+ S(PORT_RESET), \ -+ S(PORT_RESET_WAIT_OFF) -+ -+#define GENERATE_TCPM_ENUM(e) e -+#define GENERATE_TCPM_STRING(s) #s -+#define TCPM_POLL_EVENT_TIME_OUT 2000 -+ -+enum tcpm_state { -+ FOREACH_TCPM_STATE(GENERATE_TCPM_ENUM) -+}; -+ -+enum pd_msg_request { -+ PD_MSG_NONE = 0, -+ PD_MSG_CTRL_REJECT, -+ PD_MSG_CTRL_WAIT, -+ PD_MSG_CTRL_NOT_SUPP, -+ PD_MSG_DATA_SINK_CAP, -+ PD_MSG_DATA_SOURCE_CAP, -+}; -+ -+struct tcpm_port { -+ enum typec_port_type typec_type; -+ int typec_prefer_role; -+ -+ enum typec_role vconn_role; -+ enum typec_role pwr_role; -+ enum typec_data_role data_role; -+ -+ struct typec_partner *partner; -+ -+ enum typec_cc_status cc_req; -+ enum typec_cc_status cc1; -+ enum typec_cc_status cc2; -+ enum typec_cc_polarity polarity; -+ -+ bool attached; -+ bool connected; -+ int poll_event_cnt; -+ enum typec_port_type port_type; -+ -+ /* -+ * Set to true when vbus is greater than VSAFE5V min. -+ * Set to false when vbus falls below vSinkDisconnect max threshold. -+ */ -+ bool vbus_present; -+ -+ /* -+ * Set to true when vbus is less than VSAFE0V max. -+ * Set to false when vbus is greater than VSAFE0V max. -+ */ -+ bool vbus_vsafe0v; -+ -+ bool vbus_never_low; -+ bool vbus_source; -+ bool vbus_charge; -+ -+ int try_role; -+ -+ enum pd_msg_request queued_message; -+ -+ enum tcpm_state enter_state; -+ enum tcpm_state prev_state; -+ enum tcpm_state state; -+ enum tcpm_state delayed_state; -+ unsigned long delay_ms; -+ -+ bool state_machine_running; -+ -+ bool tx_complete; -+ enum tcpm_transmit_status tx_status; -+ -+ unsigned int negotiated_rev; -+ unsigned int message_id; -+ unsigned int caps_count; -+ unsigned int hard_reset_count; -+ bool pd_capable; -+ bool explicit_contract; -+ unsigned int rx_msgid; -+ -+ /* Partner capabilities/requests */ -+ u32 sink_request; -+ u32 source_caps[PDO_MAX_OBJECTS]; -+ unsigned int nr_source_caps; -+ u32 sink_caps[PDO_MAX_OBJECTS]; -+ unsigned int nr_sink_caps; -+ -+ /* -+ * whether to wait for the Type-C device to send the DR_SWAP Message flag -+ * For Type-C device with Dual-Role Power and Dual-Role Data, the port side -+ * is used as sink + ufp, then the tcpm framework needs to wait for Type-C -+ * device to initiate DR_swap Message. -+ */ -+ bool wait_dr_swap_message; -+ -+ /* Local capabilities */ -+ u32 src_pdo[PDO_MAX_OBJECTS]; -+ unsigned int nr_src_pdo; -+ u32 snk_pdo[PDO_MAX_OBJECTS]; -+ unsigned int nr_snk_pdo; -+ -+ unsigned int operating_snk_mw; -+ bool update_sink_caps; -+ -+ /* Requested current / voltage to the port partner */ -+ u32 req_current_limit; -+ u32 req_supply_voltage; -+ /* Actual current / voltage limit of the local port */ -+ u32 current_limit; -+ u32 supply_voltage; -+ -+ /* port belongs to a self powered device */ -+ bool self_powered; -+ -+ unsigned long delay_target; -+}; -+ -+extern const char * const tcpm_states[]; -+ -+int tcpm_post_probe(struct udevice *dev); -+ -+#endif -diff --git a/drivers/usb/tcpm/tcpm-uclass.c b/drivers/usb/tcpm/tcpm-uclass.c -new file mode 100644 -index 000000000000..92f9eff1ada6 ---- /dev/null -+++ b/drivers/usb/tcpm/tcpm-uclass.c -@@ -0,0 +1,149 @@ -+// SPDX-License-Identifier: GPL-2.0+ -+/* -+ * Copyright 2024 Collabora Ltd. -+ * -+ * USB Power Delivery protocol stack. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include "tcpm-internal.h" -+ -+int tcpm_get_voltage(struct udevice *dev) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ -+ return port->supply_voltage; -+} -+ -+int tcpm_get_current(struct udevice *dev) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ -+ return port->current_limit; -+} -+ -+enum typec_orientation tcpm_get_orientation(struct udevice *dev) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ -+ switch (port->polarity) { -+ case TYPEC_POLARITY_CC1: -+ return TYPEC_ORIENTATION_NORMAL; -+ case TYPEC_POLARITY_CC2: -+ return TYPEC_ORIENTATION_REVERSE; -+ default: -+ return TYPEC_ORIENTATION_NONE; -+ } -+} -+ -+const char *tcpm_get_state(struct udevice *dev) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ -+ return tcpm_states[port->state]; -+} -+ -+int tcpm_get_pd_rev(struct udevice *dev) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ -+ return port->negotiated_rev; -+} -+ -+enum typec_role tcpm_get_pwr_role(struct udevice *dev) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ -+ return port->pwr_role; -+} -+ -+enum typec_data_role tcpm_get_data_role(struct udevice *dev) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ -+ return port->data_role; -+} -+ -+bool tcpm_is_connected(struct udevice *dev) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ -+ return port->connected; -+} -+ -+int tcpm_get(const char *name, struct udevice **devp) -+{ -+ return uclass_get_device_by_name(UCLASS_TCPM, name, devp); -+} -+ -+static int tcpm_post_bind(struct udevice *dev) -+{ -+ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); -+ const char *cap_str; -+ ofnode node; -+ int ret; -+ -+ /* -+ * USB Power Delivery (USB PD) specification requires, that communication -+ * with a sink happens within roughly 5 seconds. Otherwise the source -+ * might assume that the sink does not support USB PD. Starting to do -+ * USB PD communication after that results in a hard reset, which briefly -+ * removes any power from the USB-C port. -+ * -+ * On systems with alternative power supplies this is not an issue, but -+ * systems, which get soleley powered through their USB-C port will end -+ * up losing their power supply and doing a board level reset. The hard -+ * reset will also restart the 5 second timeout. That means a operating -+ * system initializing USB PD will put the system into a boot loop when -+ * it takes more than 5 seconds from cold boot to the operating system -+ * starting to transmit USB PD messages. -+ * -+ * The issue can be avoided by doing the initial USB PD communication -+ * in U-Boot. The operating system can then re-negotiate by doing a -+ * soft reset, which does not trigger removal of the supply voltage. -+ * -+ * Since the TCPM state machine is quite complex and depending on the -+ * remote side can take quite some time to finish, this tries to limit -+ * the automatic probing to systems probably relying on power being -+ * provided by the USB-C port(s): -+ * -+ * 1. self-powered devices won't reset when the USB-C port looses power -+ * 2. if the power is allowed to go into anything else than sink mode -+ * it is not the only power source -+ */ -+ ret = drvops->get_connector_node(dev, &node); -+ if (ret) -+ return ret; -+ -+ if (ofnode_read_bool(node, "self-powered")) -+ return 0; -+ -+ cap_str = ofnode_read_string(node, "power-role"); -+ if (!cap_str) -+ return -EINVAL; -+ -+ if (strcmp("sink", cap_str)) -+ return 0; -+ -+ /* Do not auto-probe PD controller when PD is disabled */ -+ if (ofnode_read_bool(node, "pd-disable")) -+ return 0; -+ -+ dev_info(dev, "probing Type-C port manager..."); -+ -+ dev_or_flags(dev, DM_FLAG_PROBE_AFTER_BIND); -+ -+ return 0; -+} -+ -+UCLASS_DRIVER(tcpm) = { -+ .id = UCLASS_TCPM, -+ .name = "tcpm", -+ .per_device_plat_auto = sizeof(struct tcpm_port), -+ .post_bind = tcpm_post_bind, -+ .post_probe = tcpm_post_probe, -+}; -diff --git a/drivers/usb/tcpm/tcpm.c b/drivers/usb/tcpm/tcpm.c -new file mode 100644 -index 000000000000..0aee57cb2f4a ---- /dev/null -+++ b/drivers/usb/tcpm/tcpm.c -@@ -0,0 +1,2288 @@ -+// SPDX-License-Identifier: GPL-2.0+ -+/* -+ * Copyright 2015-2017 Google, Inc -+ * -+ * USB Power Delivery protocol stack. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include "tcpm-internal.h" -+ -+DECLARE_GLOBAL_DATA_PTR; -+ -+const char * const tcpm_states[] = { -+ FOREACH_TCPM_STATE(GENERATE_TCPM_STRING) -+}; -+ -+const char * const typec_pd_rev_name[] = { -+ [PD_REV10] = "rev1", -+ [PD_REV20] = "rev2", -+ [PD_REV30] = "rev3", -+}; -+ -+const char * const typec_role_name[] = { -+ [TYPEC_SINK] = "sink", -+ [TYPEC_SOURCE] = "source", -+}; -+ -+const char * const typec_data_role_name[] = { -+ [TYPEC_DEVICE] = "device", -+ [TYPEC_HOST] = "host", -+}; -+ -+const char * const typec_orientation_name[] = { -+ [TYPEC_ORIENTATION_NONE] = "none", -+ [TYPEC_ORIENTATION_NORMAL] = "normal", -+ [TYPEC_ORIENTATION_REVERSE] = "reverse", -+}; -+ -+const char * const typec_cc_status_name[] = { -+ [TYPEC_CC_OPEN] = "open", -+ [TYPEC_CC_RA] = "ra", -+ [TYPEC_CC_RD] = "rd", -+ [TYPEC_CC_RP_DEF] = "rp-def", -+ [TYPEC_CC_RP_1_5] = "rp-1.5", -+ [TYPEC_CC_RP_3_0] = "rp-3.0", -+}; -+ -+static inline bool tcpm_cc_is_sink(enum typec_cc_status cc) -+{ -+ return cc == TYPEC_CC_RP_DEF || -+ cc == TYPEC_CC_RP_1_5 || -+ cc == TYPEC_CC_RP_3_0; -+} -+ -+static inline bool tcpm_port_is_sink(struct tcpm_port *port) -+{ -+ bool cc1_is_snk = tcpm_cc_is_sink(port->cc1); -+ bool cc2_is_snk = tcpm_cc_is_sink(port->cc2); -+ -+ return (cc1_is_snk && !cc2_is_snk) || -+ (cc2_is_snk && !cc1_is_snk); -+} -+ -+static inline bool tcpm_cc_is_source(enum typec_cc_status cc) -+{ -+ return cc == TYPEC_CC_RD; -+} -+ -+static inline bool tcpm_port_is_source(struct tcpm_port *port) -+{ -+ bool cc1_is_src = tcpm_cc_is_source(port->cc1); -+ bool cc2_is_src = tcpm_cc_is_source(port->cc2); -+ -+ return (cc1_is_src && !cc2_is_src) || -+ (cc2_is_src && !cc1_is_src); -+} -+ -+static inline bool tcpm_try_src(struct tcpm_port *port) -+{ -+ return port->try_role == TYPEC_SOURCE && -+ port->port_type == TYPEC_PORT_DRP; -+} -+ -+static inline void tcpm_reset_event_cnt(struct udevice *dev) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ -+ port->poll_event_cnt = 0; -+} -+ -+static enum tcpm_state tcpm_default_state(struct tcpm_port *port) -+{ -+ if (port->port_type == TYPEC_PORT_DRP) { -+ if (port->try_role == TYPEC_SINK) -+ return SNK_UNATTACHED; -+ else if (port->try_role == TYPEC_SOURCE) -+ return SRC_UNATTACHED; -+ } else if (port->port_type == TYPEC_PORT_SNK) { -+ return SNK_UNATTACHED; -+ } -+ return SRC_UNATTACHED; -+} -+ -+static bool tcpm_port_is_disconnected(struct tcpm_port *port) -+{ -+ return (!port->attached && port->cc1 == TYPEC_CC_OPEN && -+ port->cc2 == TYPEC_CC_OPEN) || -+ (port->attached && ((port->polarity == TYPEC_POLARITY_CC1 && -+ port->cc1 == TYPEC_CC_OPEN) || -+ (port->polarity == TYPEC_POLARITY_CC2 && -+ port->cc2 == TYPEC_CC_OPEN))); -+} -+ -+static void tcpm_set_cc(struct udevice *dev, enum typec_cc_status cc) -+{ -+ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ -+ dev_dbg(dev, "TCPM: set cc = %d\n", cc); -+ port->cc_req = cc; -+ drvops->set_cc(dev, cc); -+} -+ -+/* -+ * Determine RP value to set based on maximum current supported -+ * by a port if configured as source. -+ * Returns CC value to report to link partner. -+ */ -+static enum typec_cc_status tcpm_rp_cc(struct tcpm_port *port) -+{ -+ const u32 *src_pdo = port->src_pdo; -+ int nr_pdo = port->nr_src_pdo; -+ int i; -+ -+ /* -+ * Search for first entry with matching voltage. -+ * It should report the maximum supported current. -+ */ -+ for (i = 0; i < nr_pdo; i++) { -+ const u32 pdo = src_pdo[i]; -+ -+ if (pdo_type(pdo) == PDO_TYPE_FIXED && -+ pdo_fixed_voltage(pdo) == 5000) { -+ unsigned int curr = pdo_max_current(pdo); -+ -+ if (curr >= 3000) -+ return TYPEC_CC_RP_3_0; -+ else if (curr >= 1500) -+ return TYPEC_CC_RP_1_5; -+ return TYPEC_CC_RP_DEF; -+ } -+ } -+ -+ return TYPEC_CC_RP_DEF; -+} -+ -+static void tcpm_check_and_run_delayed_work(struct udevice *dev); -+ -+static bool tcpm_transmit_helper(struct udevice *dev) -+{ -+ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ -+ drvops->poll_event(dev); -+ udelay(500); -+ tcpm_check_and_run_delayed_work(dev); -+ return port->tx_complete; -+} -+ -+static int tcpm_pd_transmit(struct udevice *dev, -+ enum tcpm_transmit_type type, -+ const struct pd_message *msg) -+{ -+ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ u32 timeout_us = PD_T_TCPC_TX_TIMEOUT * 1000; -+ bool tx_complete; -+ int ret; -+ -+ if (msg) -+ dev_dbg(dev, "TCPM: PD TX, header: %#x\n", -+ le16_to_cpu(msg->header)); -+ else -+ dev_dbg(dev, "TCPM: PD TX, type: %#x\n", type); -+ -+ port->tx_complete = false; -+ ret = drvops->pd_transmit(dev, type, msg, port->negotiated_rev); -+ if (ret < 0) -+ return ret; -+ -+ /* -+ * At this point we basically need to block until the TCPM controller -+ * returns successful transmission. Since this is usually done using -+ * the generic interrupt status bits, we poll for any events. That -+ * will clear the interrupt status, so we also need to process any -+ * of the incoming events. This means we will do more processing and -+ * thus let's give everything a bit more time. -+ */ -+ timeout_us *= 5; -+ ret = read_poll_timeout(tcpm_transmit_helper, tx_complete, -+ !tx_complete, false, timeout_us, dev); -+ if (ret < 0) { -+ dev_err(dev, "TCPM: PD transmit data failed: %d\n", ret); -+ return ret; -+ } -+ -+ switch (port->tx_status) { -+ case TCPC_TX_SUCCESS: -+ port->message_id = (port->message_id + 1) & PD_HEADER_ID_MASK; -+ break; -+ case TCPC_TX_DISCARDED: -+ ret = -EAGAIN; -+ break; -+ case TCPC_TX_FAILED: -+ default: -+ ret = -EIO; -+ break; -+ } -+ -+ return ret; -+} -+ -+void tcpm_pd_transmit_complete(struct udevice *dev, -+ enum tcpm_transmit_status status) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ -+ dev_dbg(dev, "TCPM: PD TX complete, status: %u\n", status); -+ tcpm_reset_event_cnt(dev); -+ port->tx_status = status; -+ port->tx_complete = true; -+} -+ -+static int tcpm_set_polarity(struct udevice *dev, -+ enum typec_cc_polarity polarity) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); -+ int ret; -+ -+ dev_dbg(dev, "TCPM: set polarity = %d\n", polarity); -+ -+ if (drvops->set_polarity) { -+ ret = drvops->set_polarity(dev, polarity); -+ if (ret < 0) -+ return ret; -+ } -+ -+ port->polarity = polarity; -+ -+ return 0; -+} -+ -+static int tcpm_set_vconn(struct udevice *dev, bool enable) -+{ -+ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ int ret; -+ -+ dev_dbg(dev, "TCPM: set vconn = %d\n", enable); -+ -+ ret = drvops->set_vconn(dev, enable); -+ if (!ret) -+ port->vconn_role = enable ? TYPEC_SOURCE : TYPEC_SINK; -+ -+ return ret; -+} -+ -+static inline u32 tcpm_get_current_limit(struct tcpm_port *port) -+{ -+ switch (port->polarity ? port->cc2 : port->cc1) { -+ case TYPEC_CC_RP_1_5: -+ return 1500; -+ case TYPEC_CC_RP_3_0: -+ return 3000; -+ case TYPEC_CC_RP_DEF: -+ default: -+ return 0; -+ } -+} -+ -+static int tcpm_set_current_limit(struct udevice *dev, u32 max_ma, u32 mv) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ int ret = -EOPNOTSUPP; -+ -+ dev_info(dev, "TCPM: set voltage limit = %u mV\n", mv); -+ dev_info(dev, "TCPM: set current limit = %u mA\n", max_ma); -+ -+ port->supply_voltage = mv; -+ port->current_limit = max_ma; -+ -+ return ret; -+} -+ -+static int tcpm_set_attached_state(struct udevice *dev, bool attached) -+{ -+ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ -+ return drvops->set_roles(dev, attached, port->pwr_role, -+ port->data_role); -+} -+ -+static int tcpm_set_roles(struct udevice *dev, bool attached, -+ enum typec_role role, enum typec_data_role data) -+{ -+ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ int ret; -+ -+ ret = drvops->set_roles(dev, attached, role, data); -+ if (ret < 0) -+ return ret; -+ -+ port->pwr_role = role; -+ port->data_role = data; -+ -+ return 0; -+} -+ -+static int tcpm_pd_send_source_caps(struct udevice *dev) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ struct pd_message msg; -+ int i; -+ -+ memset(&msg, 0, sizeof(msg)); -+ -+ if (!port->nr_src_pdo) { -+ /* No source capabilities defined, sink only */ -+ msg.header = PD_HEADER_LE(PD_CTRL_REJECT, -+ port->pwr_role, -+ port->data_role, -+ port->negotiated_rev, -+ port->message_id, 0); -+ } else { -+ msg.header = PD_HEADER_LE(PD_DATA_SOURCE_CAP, -+ port->pwr_role, -+ port->data_role, -+ port->negotiated_rev, -+ port->message_id, -+ port->nr_src_pdo); -+ } -+ -+ for (i = 0; i < port->nr_src_pdo; i++) -+ msg.payload[i] = cpu_to_le32(port->src_pdo[i]); -+ -+ return tcpm_pd_transmit(dev, TCPC_TX_SOP, &msg); -+} -+ -+static int tcpm_pd_send_sink_caps(struct udevice *dev) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ struct pd_message msg; -+ unsigned int i; -+ -+ memset(&msg, 0, sizeof(msg)); -+ -+ if (!port->nr_snk_pdo) { -+ /* No sink capabilities defined, source only */ -+ msg.header = PD_HEADER_LE(PD_CTRL_REJECT, -+ port->pwr_role, -+ port->data_role, -+ port->negotiated_rev, -+ port->message_id, 0); -+ } else { -+ msg.header = PD_HEADER_LE(PD_DATA_SINK_CAP, -+ port->pwr_role, -+ port->data_role, -+ port->negotiated_rev, -+ port->message_id, -+ port->nr_snk_pdo); -+ } -+ -+ for (i = 0; i < port->nr_snk_pdo; i++) -+ msg.payload[i] = cpu_to_le32(port->snk_pdo[i]); -+ -+ return tcpm_pd_transmit(dev, TCPC_TX_SOP, &msg); -+} -+ -+static void tcpm_state_machine(struct udevice *dev); -+ -+static inline void tcpm_timer_uninit(struct udevice *dev) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ -+ port->delay_target = 0; -+} -+ -+static void tcpm_timer_init(struct udevice *dev, uint32_t ms) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ unsigned long time_us = ms * 1000; -+ -+ port->delay_target = timer_get_us() + time_us; -+} -+ -+static void tcpm_check_and_run_delayed_work(struct udevice *dev) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ -+ /* no delayed state changes scheduled */ -+ if (port->delay_target == 0) -+ return; -+ -+ /* it's not yet time */ -+ if (timer_get_us() < port->delay_target) -+ return; -+ -+ tcpm_timer_uninit(dev); -+ tcpm_state_machine(dev); -+} -+ -+static void mod_tcpm_delayed_work(struct udevice *dev, unsigned int delay_ms) -+{ -+ if (delay_ms) { -+ tcpm_timer_init(dev, delay_ms); -+ } else { -+ tcpm_timer_uninit(dev); -+ tcpm_state_machine(dev); -+ } -+} -+ -+static void tcpm_set_state(struct udevice *dev, enum tcpm_state state, -+ unsigned int delay_ms) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ -+ if (delay_ms) { -+ dev_dbg(dev, "TCPM: pending state change %s -> %s @ %u ms [%s]\n", -+ tcpm_states[port->state], tcpm_states[state], delay_ms, -+ typec_pd_rev_name[port->negotiated_rev]); -+ port->delayed_state = state; -+ mod_tcpm_delayed_work(dev, delay_ms); -+ port->delay_ms = delay_ms; -+ } else { -+ dev_dbg(dev, "TCPM: state change %s -> %s\n", -+ tcpm_states[port->state], tcpm_states[state]); -+ port->delayed_state = INVALID_STATE; -+ port->prev_state = port->state; -+ port->state = state; -+ /* -+ * Don't re-queue the state machine work item if we're currently -+ * in the state machine and we're immediately changing states. -+ * tcpm_state_machine_work() will continue running the state -+ * machine. -+ */ -+ if (!port->state_machine_running) -+ mod_tcpm_delayed_work(dev, 0); -+ } -+} -+ -+static void tcpm_set_state_cond(struct udevice *dev, enum tcpm_state state, -+ unsigned int delay_ms) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ -+ if (port->enter_state == port->state) -+ tcpm_set_state(dev, state, delay_ms); -+ else -+ dev_dbg(dev, "TCPM: skipped %sstate change %s -> %s [%u ms], context state %s [%s]\n", -+ delay_ms ? "delayed " : "", -+ tcpm_states[port->state], tcpm_states[state], -+ delay_ms, tcpm_states[port->enter_state], -+ typec_pd_rev_name[port->negotiated_rev]); -+} -+ -+static void tcpm_queue_message(struct udevice *dev, -+ enum pd_msg_request message) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ -+ port->queued_message = message; -+ mod_tcpm_delayed_work(dev, 0); -+} -+ -+enum pdo_err { -+ PDO_NO_ERR, -+ PDO_ERR_NO_VSAFE5V, -+ PDO_ERR_VSAFE5V_NOT_FIRST, -+ PDO_ERR_PDO_TYPE_NOT_IN_ORDER, -+ PDO_ERR_FIXED_NOT_SORTED, -+ PDO_ERR_VARIABLE_BATT_NOT_SORTED, -+ PDO_ERR_DUPE_PDO, -+ PDO_ERR_PPS_APDO_NOT_SORTED, -+ PDO_ERR_DUPE_PPS_APDO, -+}; -+ -+static const char * const pdo_err_msg[] = { -+ [PDO_ERR_NO_VSAFE5V] = -+ " err: source/sink caps should at least have vSafe5V", -+ [PDO_ERR_VSAFE5V_NOT_FIRST] = -+ " err: vSafe5V Fixed Supply Object Shall always be the first object", -+ [PDO_ERR_PDO_TYPE_NOT_IN_ORDER] = -+ " err: PDOs should be in the following order: Fixed; Battery; Variable", -+ [PDO_ERR_FIXED_NOT_SORTED] = -+ " err: Fixed supply pdos should be in increasing order of their fixed voltage", -+ [PDO_ERR_VARIABLE_BATT_NOT_SORTED] = -+ " err: Variable/Battery supply pdos should be in increasing order of their minimum voltage", -+ [PDO_ERR_DUPE_PDO] = -+ " err: Variable/Batt supply pdos cannot have same min/max voltage", -+ [PDO_ERR_PPS_APDO_NOT_SORTED] = -+ " err: Programmable power supply apdos should be in increasing order of their maximum voltage", -+ [PDO_ERR_DUPE_PPS_APDO] = -+ " err: Programmable power supply apdos cannot have same min/max voltage and max current", -+}; -+ -+static enum pdo_err tcpm_caps_err(struct udevice *dev, const u32 *pdo, -+ unsigned int nr_pdo) -+{ -+ unsigned int i; -+ -+ /* Should at least contain vSafe5v */ -+ if (nr_pdo < 1) -+ return PDO_ERR_NO_VSAFE5V; -+ -+ /* The vSafe5V Fixed Supply Object Shall always be the first object */ -+ if (pdo_type(pdo[0]) != PDO_TYPE_FIXED || -+ pdo_fixed_voltage(pdo[0]) != VSAFE5V) -+ return PDO_ERR_VSAFE5V_NOT_FIRST; -+ -+ for (i = 1; i < nr_pdo; i++) { -+ if (pdo_type(pdo[i]) < pdo_type(pdo[i - 1])) { -+ return PDO_ERR_PDO_TYPE_NOT_IN_ORDER; -+ } else if (pdo_type(pdo[i]) == pdo_type(pdo[i - 1])) { -+ enum pd_pdo_type type = pdo_type(pdo[i]); -+ -+ switch (type) { -+ /* -+ * The remaining Fixed Supply Objects, if -+ * present, shall be sent in voltage order; -+ * lowest to highest. -+ */ -+ case PDO_TYPE_FIXED: -+ if (pdo_fixed_voltage(pdo[i]) <= -+ pdo_fixed_voltage(pdo[i - 1])) -+ return PDO_ERR_FIXED_NOT_SORTED; -+ break; -+ /* -+ * The Battery Supply Objects and Variable -+ * supply, if present shall be sent in Minimum -+ * Voltage order; lowest to highest. -+ */ -+ case PDO_TYPE_VAR: -+ case PDO_TYPE_BATT: -+ if (pdo_min_voltage(pdo[i]) < -+ pdo_min_voltage(pdo[i - 1])) -+ return PDO_ERR_VARIABLE_BATT_NOT_SORTED; -+ else if ((pdo_min_voltage(pdo[i]) == -+ pdo_min_voltage(pdo[i - 1])) && -+ (pdo_max_voltage(pdo[i]) == -+ pdo_max_voltage(pdo[i - 1]))) -+ return PDO_ERR_DUPE_PDO; -+ break; -+ /* -+ * The Programmable Power Supply APDOs, if present, -+ * shall be sent in Maximum Voltage order; -+ * lowest to highest. -+ */ -+ case PDO_TYPE_APDO: -+ if (pdo_apdo_type(pdo[i]) != APDO_TYPE_PPS) -+ break; -+ -+ if (pdo_pps_apdo_max_voltage(pdo[i]) < -+ pdo_pps_apdo_max_voltage(pdo[i - 1])) -+ return PDO_ERR_PPS_APDO_NOT_SORTED; -+ else if (pdo_pps_apdo_min_voltage(pdo[i]) == -+ pdo_pps_apdo_min_voltage(pdo[i - 1]) && -+ pdo_pps_apdo_max_voltage(pdo[i]) == -+ pdo_pps_apdo_max_voltage(pdo[i - 1]) && -+ pdo_pps_apdo_max_current(pdo[i]) == -+ pdo_pps_apdo_max_current(pdo[i - 1])) -+ return PDO_ERR_DUPE_PPS_APDO; -+ break; -+ default: -+ dev_err(dev, "TCPM: Unknown pdo type\n"); -+ } -+ } -+ } -+ -+ return PDO_NO_ERR; -+} -+ -+static int tcpm_validate_caps(struct udevice *dev, const u32 *pdo, -+ unsigned int nr_pdo) -+{ -+ enum pdo_err err_index = tcpm_caps_err(dev, pdo, nr_pdo); -+ -+ if (err_index != PDO_NO_ERR) { -+ dev_err(dev, "TCPM:%s\n", pdo_err_msg[err_index]); -+ return -EINVAL; -+ } -+ -+ return 0; -+} -+ -+/* -+ * PD (data, control) command handling functions -+ */ -+static inline enum tcpm_state ready_state(struct tcpm_port *port) -+{ -+ if (port->pwr_role == TYPEC_SOURCE) -+ return SRC_READY; -+ else -+ return SNK_READY; -+} -+ -+static void tcpm_pd_data_request(struct udevice *dev, -+ const struct pd_message *msg) -+{ -+ enum pd_data_msg_type type = pd_header_type_le(msg->header); -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ unsigned int cnt = pd_header_cnt_le(msg->header); -+ unsigned int rev = pd_header_rev_le(msg->header); -+ unsigned int i; -+ -+ switch (type) { -+ case PD_DATA_SOURCE_CAP: -+ for (i = 0; i < cnt; i++) -+ port->source_caps[i] = le32_to_cpu(msg->payload[i]); -+ -+ port->nr_source_caps = cnt; -+ -+ tcpm_validate_caps(dev, port->source_caps, -+ port->nr_source_caps); -+ -+ /* -+ * Adjust revision in subsequent message headers, as required, -+ * to comply with 6.2.1.1.5 of the USB PD 3.0 spec. We don't -+ * support Rev 1.0 so just do nothing in that scenario. -+ */ -+ if (rev == PD_REV10) -+ break; -+ -+ if (rev < PD_MAX_REV) -+ port->negotiated_rev = rev; -+ -+ if ((pdo_type(port->source_caps[0]) == PDO_TYPE_FIXED) && -+ (port->source_caps[0] & PDO_FIXED_DUAL_ROLE) && -+ (port->source_caps[0] & PDO_FIXED_DATA_SWAP)) { -+ /* Dual role power and data, eg: self-powered Type-C */ -+ port->wait_dr_swap_message = true; -+ } else { -+ /* Non-Dual role power, eg: adapter */ -+ port->wait_dr_swap_message = false; -+ } -+ -+ /* -+ * This message may be received even if VBUS is not -+ * present. This is quite unexpected; see USB PD -+ * specification, sections 8.3.3.6.3.1 and 8.3.3.6.3.2. -+ * However, at the same time, we must be ready to -+ * receive this message and respond to it 15ms after -+ * receiving PS_RDY during power swap operations, no matter -+ * if VBUS is available or not (USB PD specification, -+ * section 6.5.9.2). -+ * So we need to accept the message either way, -+ * but be prepared to keep waiting for VBUS after it was -+ * handled. -+ */ -+ tcpm_set_state(dev, SNK_NEGOTIATE_CAPABILITIES, 0); -+ break; -+ case PD_DATA_REQUEST: -+ /* -+ * Adjust revision in subsequent message headers, as required, -+ * to comply with 6.2.1.1.5 of the USB PD 3.0 spec. We don't -+ * support Rev 1.0 so just reject in that scenario. -+ */ -+ if (rev == PD_REV10) { -+ tcpm_queue_message(dev, PD_MSG_CTRL_REJECT); -+ break; -+ } -+ -+ if (rev < PD_MAX_REV) -+ port->negotiated_rev = rev; -+ -+ port->sink_request = le32_to_cpu(msg->payload[0]); -+ -+ tcpm_set_state(dev, SRC_NEGOTIATE_CAPABILITIES, 0); -+ break; -+ case PD_DATA_SINK_CAP: -+ /* We don't do anything with this at the moment... */ -+ for (i = 0; i < cnt; i++) -+ port->sink_caps[i] = le32_to_cpu(msg->payload[i]); -+ -+ port->nr_sink_caps = cnt; -+ break; -+ default: -+ break; -+ } -+} -+ -+static void tcpm_pd_ctrl_request(struct udevice *dev, -+ const struct pd_message *msg) -+{ -+ enum pd_ctrl_msg_type type = pd_header_type_le(msg->header); -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ enum tcpm_state next_state; -+ -+ switch (type) { -+ case PD_CTRL_GOOD_CRC: -+ case PD_CTRL_PING: -+ break; -+ case PD_CTRL_GET_SOURCE_CAP: -+ switch (port->state) { -+ case SRC_READY: -+ case SNK_READY: -+ tcpm_queue_message(dev, PD_MSG_DATA_SOURCE_CAP); -+ break; -+ default: -+ tcpm_queue_message(dev, PD_MSG_CTRL_REJECT); -+ break; -+ } -+ break; -+ case PD_CTRL_GET_SINK_CAP: -+ switch (port->state) { -+ case SRC_READY: -+ case SNK_READY: -+ tcpm_queue_message(dev, PD_MSG_DATA_SINK_CAP); -+ break; -+ default: -+ tcpm_queue_message(dev, PD_MSG_CTRL_REJECT); -+ break; -+ } -+ break; -+ case PD_CTRL_GOTO_MIN: -+ break; -+ case PD_CTRL_PS_RDY: -+ switch (port->state) { -+ case SNK_TRANSITION_SINK: -+ if (port->vbus_present) { -+ tcpm_set_current_limit(dev, -+ port->req_current_limit, -+ port->req_supply_voltage); -+ port->explicit_contract = true; -+ tcpm_set_state(dev, SNK_READY, 0); -+ } else { -+ /* -+ * Seen after power swap. Keep waiting for VBUS -+ * in a transitional state. -+ */ -+ tcpm_set_state(dev, -+ SNK_TRANSITION_SINK_VBUS, 0); -+ } -+ break; -+ default: -+ break; -+ } -+ break; -+ case PD_CTRL_REJECT: -+ case PD_CTRL_WAIT: -+ case PD_CTRL_NOT_SUPP: -+ switch (port->state) { -+ case SNK_NEGOTIATE_CAPABILITIES: -+ /* USB PD specification, Figure 8-43 */ -+ if (port->explicit_contract) -+ next_state = SNK_READY; -+ else -+ next_state = SNK_WAIT_CAPABILITIES; -+ -+ tcpm_set_state(dev, next_state, 0); -+ break; -+ default: -+ break; -+ } -+ break; -+ case PD_CTRL_ACCEPT: -+ switch (port->state) { -+ case SNK_NEGOTIATE_CAPABILITIES: -+ tcpm_set_state(dev, SNK_TRANSITION_SINK, 0); -+ break; -+ case SOFT_RESET_SEND: -+ port->message_id = 0; -+ port->rx_msgid = -1; -+ if (port->pwr_role == TYPEC_SOURCE) -+ next_state = SRC_SEND_CAPABILITIES; -+ else -+ next_state = SNK_WAIT_CAPABILITIES; -+ tcpm_set_state(dev, next_state, 0); -+ break; -+ default: -+ break; -+ } -+ break; -+ case PD_CTRL_SOFT_RESET: -+ tcpm_set_state(dev, SOFT_RESET, 0); -+ break; -+ case PD_CTRL_DR_SWAP: -+ if (port->port_type != TYPEC_PORT_DRP) { -+ tcpm_queue_message(dev, PD_MSG_CTRL_REJECT); -+ break; -+ } -+ /* -+ * 6.3.9: If an alternate mode is active, a request to swap -+ * alternate modes shall trigger a port reset. -+ */ -+ switch (port->state) { -+ case SRC_READY: -+ case SNK_READY: -+ tcpm_set_state(dev, DR_SWAP_ACCEPT, 0); -+ break; -+ default: -+ tcpm_queue_message(dev, PD_MSG_CTRL_WAIT); -+ break; -+ } -+ break; -+ case PD_CTRL_PR_SWAP: -+ case PD_CTRL_VCONN_SWAP: -+ case PD_CTRL_GET_SOURCE_CAP_EXT: -+ case PD_CTRL_GET_STATUS: -+ case PD_CTRL_FR_SWAP: -+ case PD_CTRL_GET_PPS_STATUS: -+ case PD_CTRL_GET_COUNTRY_CODES: -+ /* Currently not supported */ -+ dev_err(dev, "TCPM: Currently not supported type %#x\n", type); -+ tcpm_queue_message(dev, PD_MSG_CTRL_NOT_SUPP); -+ break; -+ default: -+ dev_err(dev, "TCPM: Unrecognized ctrl message type %#x\n", type); -+ break; -+ } -+} -+ -+static void tcpm_pd_rx_handler(struct udevice *dev, -+ const struct pd_message *msg) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ unsigned int cnt = pd_header_cnt_le(msg->header); -+ bool remote_is_host, local_is_host; -+ -+ dev_dbg(dev, "TCPM: PD RX, header: %#x [%d]\n", -+ le16_to_cpu(msg->header), port->attached); -+ -+ if (port->attached) { -+ enum pd_ctrl_msg_type type = pd_header_type_le(msg->header); -+ unsigned int msgid = pd_header_msgid_le(msg->header); -+ -+ /* -+ * USB PD standard, 6.6.1.2: -+ * "... if MessageID value in a received Message is the -+ * same as the stored value, the receiver shall return a -+ * GoodCRC Message with that MessageID value and drop -+ * the Message (this is a retry of an already received -+ * Message). Note: this shall not apply to the Soft_Reset -+ * Message which always has a MessageID value of zero." -+ */ -+ if (msgid == port->rx_msgid && type != PD_CTRL_SOFT_RESET) -+ return; -+ port->rx_msgid = msgid; -+ -+ /* -+ * If both ends believe to be DFP/host, we have a data role -+ * mismatch. -+ */ -+ remote_is_host = !!(le16_to_cpu(msg->header) & PD_HEADER_DATA_ROLE); -+ local_is_host = port->data_role == TYPEC_HOST; -+ if (remote_is_host == local_is_host) { -+ dev_err(dev, "TCPM: data role mismatch, initiating error recovery\n"); -+ tcpm_set_state(dev, ERROR_RECOVERY, 0); -+ } else { -+ if (cnt) -+ tcpm_pd_data_request(dev, msg); -+ else -+ tcpm_pd_ctrl_request(dev, msg); -+ } -+ } -+} -+ -+void tcpm_pd_receive(struct udevice *dev, const struct pd_message *msg) -+{ -+ tcpm_reset_event_cnt(dev); -+ tcpm_pd_rx_handler(dev, msg); -+} -+ -+static int tcpm_pd_send_control(struct udevice *dev, -+ enum pd_ctrl_msg_type type) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ struct pd_message msg; -+ -+ memset(&msg, 0, sizeof(msg)); -+ msg.header = PD_HEADER_LE(type, port->pwr_role, -+ port->data_role, -+ port->negotiated_rev, -+ port->message_id, 0); -+ -+ return tcpm_pd_transmit(dev, TCPC_TX_SOP, &msg); -+} -+ -+/* -+ * Send queued message without affecting state. -+ * Return true if state machine should go back to sleep, -+ * false otherwise. -+ */ -+static bool tcpm_send_queued_message(struct udevice *dev) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ enum pd_msg_request queued_message; -+ int max_messages = 100; -+ -+ do { -+ queued_message = port->queued_message; -+ port->queued_message = PD_MSG_NONE; -+ max_messages--; -+ -+ switch (queued_message) { -+ case PD_MSG_CTRL_WAIT: -+ tcpm_pd_send_control(dev, PD_CTRL_WAIT); -+ break; -+ case PD_MSG_CTRL_REJECT: -+ tcpm_pd_send_control(dev, PD_CTRL_REJECT); -+ break; -+ case PD_MSG_CTRL_NOT_SUPP: -+ tcpm_pd_send_control(dev, PD_CTRL_NOT_SUPP); -+ break; -+ case PD_MSG_DATA_SINK_CAP: -+ tcpm_pd_send_sink_caps(dev); -+ break; -+ case PD_MSG_DATA_SOURCE_CAP: -+ tcpm_pd_send_source_caps(dev); -+ break; -+ default: -+ break; -+ } -+ } while (max_messages > 0 && port->queued_message != PD_MSG_NONE); -+ -+ if (!max_messages) -+ dev_err(dev, "Aborted sending of too many queued messages\n"); -+ -+ return false; -+} -+ -+static int tcpm_pd_check_request(struct udevice *dev) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ u32 pdo, rdo = port->sink_request; -+ unsigned int max, op, pdo_max, index; -+ enum pd_pdo_type type; -+ -+ index = rdo_index(rdo); -+ if (!index || index > port->nr_src_pdo) -+ return -EINVAL; -+ -+ pdo = port->src_pdo[index - 1]; -+ type = pdo_type(pdo); -+ switch (type) { -+ case PDO_TYPE_FIXED: -+ case PDO_TYPE_VAR: -+ max = rdo_max_current(rdo); -+ op = rdo_op_current(rdo); -+ pdo_max = pdo_max_current(pdo); -+ -+ if (op > pdo_max) -+ return -EINVAL; -+ if (max > pdo_max && !(rdo & RDO_CAP_MISMATCH)) -+ return -EINVAL; -+ -+ if (type == PDO_TYPE_FIXED) -+ dev_dbg(dev, "TCPM: Requested %u mV, %u mA for %u / %u mA\n", -+ pdo_fixed_voltage(pdo), pdo_max, op, max); -+ else -+ dev_dbg(dev, "TCPM: Requested %u -> %u mV, %u mA for %u / %u mA\n", -+ pdo_min_voltage(pdo), pdo_max_voltage(pdo), -+ pdo_max, op, max); -+ break; -+ case PDO_TYPE_BATT: -+ max = rdo_max_power(rdo); -+ op = rdo_op_power(rdo); -+ pdo_max = pdo_max_power(pdo); -+ -+ if (op > pdo_max) -+ return -EINVAL; -+ if (max > pdo_max && !(rdo & RDO_CAP_MISMATCH)) -+ return -EINVAL; -+ dev_info(dev, "TCPM: Requested %u -> %u mV, %u mW for %u / %u mW\n", -+ pdo_min_voltage(pdo), pdo_max_voltage(pdo), -+ pdo_max, op, max); -+ break; -+ default: -+ return -EINVAL; -+ } -+ -+ return 0; -+} -+ -+#define min_power(x, y) min(pdo_max_power(x), pdo_max_power(y)) -+#define min_current(x, y) min(pdo_max_current(x), pdo_max_current(y)) -+ -+static int tcpm_pd_select_pdo(struct udevice *dev, int *sink_pdo, -+ int *src_pdo) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ unsigned int i, j, max_src_mv = 0, min_src_mv = 0, max_mw = 0, -+ max_mv = 0, src_mw = 0, src_ma = 0, max_snk_mv = 0, -+ min_snk_mv = 0; -+ int ret = -EINVAL; -+ -+ /* -+ * Select the source PDO providing the most power which has a -+ * matchig sink cap. -+ */ -+ for (i = 0; i < port->nr_source_caps; i++) { -+ u32 pdo = port->source_caps[i]; -+ enum pd_pdo_type type = pdo_type(pdo); -+ -+ switch (type) { -+ case PDO_TYPE_FIXED: -+ max_src_mv = pdo_fixed_voltage(pdo); -+ min_src_mv = max_src_mv; -+ break; -+ case PDO_TYPE_BATT: -+ case PDO_TYPE_VAR: -+ max_src_mv = pdo_max_voltage(pdo); -+ min_src_mv = pdo_min_voltage(pdo); -+ break; -+ case PDO_TYPE_APDO: -+ continue; -+ default: -+ dev_err(dev, "TCPM: Invalid source PDO type, ignoring\n"); -+ continue; -+ } -+ -+ switch (type) { -+ case PDO_TYPE_FIXED: -+ case PDO_TYPE_VAR: -+ src_ma = pdo_max_current(pdo); -+ src_mw = src_ma * min_src_mv / 1000; -+ break; -+ case PDO_TYPE_BATT: -+ src_mw = pdo_max_power(pdo); -+ break; -+ case PDO_TYPE_APDO: -+ continue; -+ default: -+ dev_err(dev, "TCPM: Invalid source PDO type, ignoring\n"); -+ continue; -+ } -+ -+ for (j = 0; j < port->nr_snk_pdo; j++) { -+ pdo = port->snk_pdo[j]; -+ -+ switch (pdo_type(pdo)) { -+ case PDO_TYPE_FIXED: -+ max_snk_mv = pdo_fixed_voltage(pdo); -+ min_snk_mv = max_snk_mv; -+ break; -+ case PDO_TYPE_BATT: -+ case PDO_TYPE_VAR: -+ max_snk_mv = pdo_max_voltage(pdo); -+ min_snk_mv = pdo_min_voltage(pdo); -+ break; -+ case PDO_TYPE_APDO: -+ continue; -+ default: -+ dev_err(dev, "TCPM: Invalid sink PDO type, ignoring\n"); -+ continue; -+ } -+ -+ if (max_src_mv <= max_snk_mv && min_src_mv >= min_snk_mv) { -+ /* Prefer higher voltages if available */ -+ if ((src_mw == max_mw && min_src_mv > max_mv) || -+ src_mw > max_mw) { -+ *src_pdo = i; -+ *sink_pdo = j; -+ max_mw = src_mw; -+ max_mv = min_src_mv; -+ ret = 0; -+ } -+ } -+ } -+ } -+ -+ return ret; -+} -+ -+static int tcpm_pd_build_request(struct udevice *dev, u32 *rdo) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ unsigned int mv, ma, mw, flags; -+ unsigned int max_ma, max_mw; -+ enum pd_pdo_type type; -+ u32 pdo, matching_snk_pdo; -+ int src_pdo_index = 0; -+ int snk_pdo_index = 0; -+ int ret; -+ -+ ret = tcpm_pd_select_pdo(dev, &snk_pdo_index, &src_pdo_index); -+ if (ret < 0) -+ return ret; -+ -+ pdo = port->source_caps[src_pdo_index]; -+ matching_snk_pdo = port->snk_pdo[snk_pdo_index]; -+ type = pdo_type(pdo); -+ -+ switch (type) { -+ case PDO_TYPE_FIXED: -+ mv = pdo_fixed_voltage(pdo); -+ break; -+ case PDO_TYPE_BATT: -+ case PDO_TYPE_VAR: -+ mv = pdo_min_voltage(pdo); -+ break; -+ default: -+ dev_err(dev, "TCPM: Invalid PDO selected!\n"); -+ return -EINVAL; -+ } -+ -+ /* Select maximum available current within the sink pdo's limit */ -+ if (type == PDO_TYPE_BATT) { -+ mw = min_power(pdo, matching_snk_pdo); -+ ma = 1000 * mw / mv; -+ } else { -+ ma = min_current(pdo, matching_snk_pdo); -+ mw = ma * mv / 1000; -+ } -+ -+ flags = RDO_USB_COMM | RDO_NO_SUSPEND; -+ -+ /* Set mismatch bit if offered power is less than operating power */ -+ max_ma = ma; -+ max_mw = mw; -+ if (mw < port->operating_snk_mw) { -+ flags |= RDO_CAP_MISMATCH; -+ if (type == PDO_TYPE_BATT && -+ (pdo_max_power(matching_snk_pdo) > pdo_max_power(pdo))) -+ max_mw = pdo_max_power(matching_snk_pdo); -+ else if (pdo_max_current(matching_snk_pdo) > -+ pdo_max_current(pdo)) -+ max_ma = pdo_max_current(matching_snk_pdo); -+ } -+ -+ dev_dbg(dev, "TCPM: cc=%d cc1=%d cc2=%d vbus=%d vconn=%s polarity=%d\n", -+ port->cc_req, port->cc1, port->cc2, port->vbus_source, -+ port->vconn_role == TYPEC_SOURCE ? "source" : "sink", -+ port->polarity); -+ -+ if (type == PDO_TYPE_BATT) { -+ *rdo = RDO_BATT(src_pdo_index + 1, mw, max_mw, flags); -+ -+ dev_info(dev, "TCPM: requesting PDO %d: %u mV, %u mW%s\n", -+ src_pdo_index, mv, mw, -+ flags & RDO_CAP_MISMATCH ? " [mismatch]" : ""); -+ } else { -+ *rdo = RDO_FIXED(src_pdo_index + 1, ma, max_ma, flags); -+ -+ dev_info(dev, "TCPM: requesting PDO %d: %u mV, %u mA%s\n", -+ src_pdo_index, mv, ma, -+ flags & RDO_CAP_MISMATCH ? " [mismatch]" : ""); -+ } -+ -+ port->req_current_limit = ma; -+ port->req_supply_voltage = mv; -+ -+ return 0; -+} -+ -+static int tcpm_pd_send_request(struct udevice *dev) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ struct pd_message msg; -+ int ret; -+ u32 rdo; -+ -+ ret = tcpm_pd_build_request(dev, &rdo); -+ if (ret < 0) -+ return ret; -+ -+ memset(&msg, 0, sizeof(msg)); -+ msg.header = PD_HEADER_LE(PD_DATA_REQUEST, -+ port->pwr_role, -+ port->data_role, -+ port->negotiated_rev, -+ port->message_id, 1); -+ msg.payload[0] = cpu_to_le32(rdo); -+ -+ return tcpm_pd_transmit(dev, TCPC_TX_SOP, &msg); -+} -+ -+static int tcpm_set_vbus(struct udevice *dev, bool enable) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); -+ int ret; -+ -+ if (enable && port->vbus_charge) -+ return -EINVAL; -+ -+ dev_dbg(dev, "TCPM: set vbus = %d charge = %d\n", -+ enable, port->vbus_charge); -+ -+ ret = drvops->set_vbus(dev, enable, port->vbus_charge); -+ if (ret < 0) -+ return ret; -+ -+ port->vbus_source = enable; -+ return 0; -+} -+ -+static int tcpm_set_charge(struct udevice *dev, bool charge) -+{ -+ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ int ret; -+ -+ if (charge && port->vbus_source) -+ return -EINVAL; -+ -+ if (charge != port->vbus_charge) { -+ dev_dbg(dev, "TCPM: set vbus = %d charge = %d\n", -+ port->vbus_source, charge); -+ ret = drvops->set_vbus(dev, port->vbus_source, -+ charge); -+ if (ret < 0) -+ return ret; -+ } -+ port->vbus_charge = charge; -+ return 0; -+} -+ -+static bool tcpm_start_toggling(struct udevice *dev, enum typec_cc_status cc) -+{ -+ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ int ret; -+ -+ if (!drvops->start_toggling) -+ return false; -+ -+ dev_dbg(dev, "TCPM: Start toggling\n"); -+ ret = drvops->start_toggling(dev, port->port_type, cc); -+ return ret == 0; -+} -+ -+static int tcpm_init_vbus(struct udevice *dev) -+{ -+ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ int ret; -+ -+ ret = drvops->set_vbus(dev, false, false); -+ port->vbus_source = false; -+ port->vbus_charge = false; -+ return ret; -+} -+ -+static int tcpm_init_vconn(struct udevice *dev) -+{ -+ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ int ret; -+ -+ ret = drvops->set_vconn(dev, false); -+ port->vconn_role = TYPEC_SINK; -+ return ret; -+} -+ -+static inline void tcpm_typec_connect(struct tcpm_port *port) -+{ -+ if (!port->connected) -+ port->connected = true; -+} -+ -+static int tcpm_src_attach(struct udevice *dev) -+{ -+ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ enum typec_cc_polarity polarity = -+ port->cc2 == TYPEC_CC_RD ? TYPEC_POLARITY_CC2 -+ : TYPEC_POLARITY_CC1; -+ int ret; -+ -+ if (port->attached) -+ return 0; -+ -+ ret = tcpm_set_polarity(dev, polarity); -+ if (ret < 0) -+ return ret; -+ -+ ret = tcpm_set_roles(dev, true, TYPEC_SOURCE, TYPEC_HOST); -+ if (ret < 0) -+ return ret; -+ -+ ret = drvops->set_pd_rx(dev, true); -+ if (ret < 0) -+ goto out_disable_mux; -+ -+ /* -+ * USB Type-C specification, version 1.2, -+ * chapter 4.5.2.2.8.1 (Attached.SRC Requirements) -+ * Enable VCONN only if the non-RD port is set to RA. -+ */ -+ if ((polarity == TYPEC_POLARITY_CC1 && port->cc2 == TYPEC_CC_RA) || -+ (polarity == TYPEC_POLARITY_CC2 && port->cc1 == TYPEC_CC_RA)) { -+ ret = tcpm_set_vconn(dev, true); -+ if (ret < 0) -+ goto out_disable_pd; -+ } -+ -+ ret = tcpm_set_vbus(dev, true); -+ if (ret < 0) -+ goto out_disable_vconn; -+ -+ port->pd_capable = false; -+ -+ port->partner = NULL; -+ -+ port->attached = true; -+ -+ return 0; -+ -+out_disable_vconn: -+ tcpm_set_vconn(dev, false); -+out_disable_pd: -+ drvops->set_pd_rx(dev, false); -+out_disable_mux: -+ dev_err(dev, "TCPM: CC connected in %s as DFP\n", -+ polarity ? "CC2" : "CC1"); -+ return 0; -+} -+ -+static inline void tcpm_typec_disconnect(struct tcpm_port *port) -+{ -+ if (port->connected) { -+ port->partner = NULL; -+ port->connected = false; -+ } -+} -+ -+static void tcpm_reset_port(struct udevice *dev) -+{ -+ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ -+ tcpm_timer_uninit(dev); -+ tcpm_typec_disconnect(port); -+ tcpm_reset_event_cnt(dev); -+ port->wait_dr_swap_message = false; -+ port->attached = false; -+ port->pd_capable = false; -+ -+ /* -+ * First Rx ID should be 0; set this to a sentinel of -1 so that -+ * we can check tcpm_pd_rx_handler() if we had seen it before. -+ */ -+ port->rx_msgid = -1; -+ -+ drvops->set_pd_rx(dev, false); -+ tcpm_init_vbus(dev); /* also disables charging */ -+ tcpm_init_vconn(dev); -+ tcpm_set_current_limit(dev, 0, 0); -+ tcpm_set_polarity(dev, TYPEC_POLARITY_CC1); -+ tcpm_set_attached_state(dev, false); -+ port->nr_sink_caps = 0; -+} -+ -+static void tcpm_detach(struct udevice *dev) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ -+ if (tcpm_port_is_disconnected(port)) -+ port->hard_reset_count = 0; -+ -+ if (!port->attached) -+ return; -+ -+ tcpm_reset_port(dev); -+} -+ -+static void tcpm_src_detach(struct udevice *dev) -+{ -+ tcpm_detach(dev); -+} -+ -+static int tcpm_snk_attach(struct udevice *dev) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ int ret; -+ -+ if (port->attached) -+ return 0; -+ -+ ret = tcpm_set_polarity(dev, port->cc2 != TYPEC_CC_OPEN ? -+ TYPEC_POLARITY_CC2 : TYPEC_POLARITY_CC1); -+ if (ret < 0) -+ return ret; -+ -+ ret = tcpm_set_roles(dev, true, TYPEC_SINK, TYPEC_DEVICE); -+ if (ret < 0) -+ return ret; -+ -+ port->pd_capable = false; -+ -+ port->partner = NULL; -+ -+ port->attached = true; -+ dev_info(dev, "TCPM: CC connected in %s as UFP\n", -+ port->cc1 != TYPEC_CC_OPEN ? "CC1" : "CC2"); -+ -+ return 0; -+} -+ -+static void tcpm_snk_detach(struct udevice *dev) -+{ -+ tcpm_detach(dev); -+} -+ -+static inline enum tcpm_state hard_reset_state(struct tcpm_port *port) -+{ -+ if (port->hard_reset_count < PD_N_HARD_RESET_COUNT) -+ return HARD_RESET_SEND; -+ if (port->pd_capable) -+ return ERROR_RECOVERY; -+ if (port->pwr_role == TYPEC_SOURCE) -+ return SRC_UNATTACHED; -+ if (port->state == SNK_WAIT_CAPABILITIES) -+ return SNK_READY; -+ return SNK_UNATTACHED; -+} -+ -+static inline enum tcpm_state unattached_state(struct tcpm_port *port) -+{ -+ if (port->port_type == TYPEC_PORT_DRP) { -+ if (port->pwr_role == TYPEC_SOURCE) -+ return SRC_UNATTACHED; -+ else -+ return SNK_UNATTACHED; -+ } else if (port->port_type == TYPEC_PORT_SRC) { -+ return SRC_UNATTACHED; -+ } -+ -+ return SNK_UNATTACHED; -+} -+ -+static void run_state_machine(struct udevice *dev) -+{ -+ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ int ret; -+ -+ port->enter_state = port->state; -+ switch (port->state) { -+ case TOGGLING: -+ break; -+ /* SRC states */ -+ case SRC_UNATTACHED: -+ tcpm_src_detach(dev); -+ if (tcpm_start_toggling(dev, tcpm_rp_cc(port))) { -+ tcpm_set_state(dev, TOGGLING, 0); -+ break; -+ } -+ tcpm_set_cc(dev, tcpm_rp_cc(port)); -+ if (port->port_type == TYPEC_PORT_DRP) -+ tcpm_set_state(dev, SNK_UNATTACHED, PD_T_DRP_SNK); -+ break; -+ case SRC_ATTACH_WAIT: -+ if (tcpm_port_is_source(port)) -+ tcpm_set_state(dev, SRC_ATTACHED, PD_T_CC_DEBOUNCE); -+ break; -+ -+ case SRC_ATTACHED: -+ ret = tcpm_src_attach(dev); -+ /* -+ * Currently, vbus control is not implemented, -+ * and the SRC detection process cannot be fully implemented. -+ */ -+ tcpm_set_state(dev, SRC_READY, 0); -+ break; -+ case SRC_STARTUP: -+ port->caps_count = 0; -+ port->negotiated_rev = PD_MAX_REV; -+ port->message_id = 0; -+ port->rx_msgid = -1; -+ port->explicit_contract = false; -+ tcpm_set_state(dev, SRC_SEND_CAPABILITIES, 0); -+ break; -+ case SRC_SEND_CAPABILITIES: -+ port->caps_count++; -+ if (port->caps_count > PD_N_CAPS_COUNT) { -+ tcpm_set_state(dev, SRC_READY, 0); -+ break; -+ } -+ ret = tcpm_pd_send_source_caps(dev); -+ if (ret < 0) { -+ tcpm_set_state(dev, SRC_SEND_CAPABILITIES, -+ PD_T_SEND_SOURCE_CAP); -+ } else { -+ /* -+ * Per standard, we should clear the reset counter here. -+ * However, that can result in state machine hang-ups. -+ * Reset it only in READY state to improve stability. -+ */ -+ /* port->hard_reset_count = 0; */ -+ port->caps_count = 0; -+ port->pd_capable = true; -+ tcpm_set_state_cond(dev, SRC_SEND_CAPABILITIES_TIMEOUT, -+ PD_T_SEND_SOURCE_CAP); -+ } -+ break; -+ case SRC_SEND_CAPABILITIES_TIMEOUT: -+ /* -+ * Error recovery for a PD_DATA_SOURCE_CAP reply timeout. -+ * -+ * PD 2.0 sinks are supposed to accept src-capabilities with a -+ * 3.0 header and simply ignore any src PDOs which the sink does -+ * not understand such as PPS but some 2.0 sinks instead ignore -+ * the entire PD_DATA_SOURCE_CAP message, causing contract -+ * negotiation to fail. -+ * -+ * After PD_N_HARD_RESET_COUNT hard-reset attempts, we try -+ * sending src-capabilities with a lower PD revision to -+ * make these broken sinks work. -+ */ -+ if (port->hard_reset_count < PD_N_HARD_RESET_COUNT) { -+ tcpm_set_state(dev, HARD_RESET_SEND, 0); -+ } else if (port->negotiated_rev > PD_REV20) { -+ port->negotiated_rev--; -+ port->hard_reset_count = 0; -+ tcpm_set_state(dev, SRC_SEND_CAPABILITIES, 0); -+ } else { -+ tcpm_set_state(dev, hard_reset_state(port), 0); -+ } -+ break; -+ case SRC_NEGOTIATE_CAPABILITIES: -+ ret = tcpm_pd_check_request(dev); -+ if (ret < 0) { -+ tcpm_pd_send_control(dev, PD_CTRL_REJECT); -+ if (!port->explicit_contract) { -+ tcpm_set_state(dev, -+ SRC_WAIT_NEW_CAPABILITIES, 0); -+ } else { -+ tcpm_set_state(dev, SRC_READY, 0); -+ } -+ } else { -+ tcpm_pd_send_control(dev, PD_CTRL_ACCEPT); -+ tcpm_set_state(dev, SRC_TRANSITION_SUPPLY, -+ PD_T_SRC_TRANSITION); -+ } -+ break; -+ case SRC_TRANSITION_SUPPLY: -+ /* XXX: regulator_set_voltage(vbus, ...) */ -+ tcpm_pd_send_control(dev, PD_CTRL_PS_RDY); -+ port->explicit_contract = true; -+ tcpm_set_state_cond(dev, SRC_READY, 0); -+ break; -+ case SRC_READY: -+ port->hard_reset_count = 0; -+ -+ tcpm_typec_connect(port); -+ break; -+ case SRC_WAIT_NEW_CAPABILITIES: -+ /* Nothing to do... */ -+ break; -+ -+ /* SNK states */ -+ case SNK_UNATTACHED: -+ tcpm_snk_detach(dev); -+ if (tcpm_start_toggling(dev, TYPEC_CC_RD)) { -+ tcpm_set_state(dev, TOGGLING, 0); -+ break; -+ } -+ tcpm_set_cc(dev, TYPEC_CC_RD); -+ if (port->port_type == TYPEC_PORT_DRP) -+ tcpm_set_state(dev, SRC_UNATTACHED, PD_T_DRP_SRC); -+ break; -+ case SNK_ATTACH_WAIT: -+ if ((port->cc1 == TYPEC_CC_OPEN && -+ port->cc2 != TYPEC_CC_OPEN) || -+ (port->cc1 != TYPEC_CC_OPEN && -+ port->cc2 == TYPEC_CC_OPEN)) -+ tcpm_set_state(dev, SNK_DEBOUNCED, -+ PD_T_CC_DEBOUNCE); -+ else if (tcpm_port_is_disconnected(port)) -+ tcpm_set_state(dev, SNK_UNATTACHED, -+ PD_T_CC_DEBOUNCE); -+ break; -+ case SNK_DEBOUNCED: -+ if (tcpm_port_is_disconnected(port)) -+ tcpm_set_state(dev, SNK_UNATTACHED, PD_T_PD_DEBOUNCE); -+ else if (port->vbus_present) -+ tcpm_set_state(dev, SNK_ATTACHED, 0); -+ else -+ /* Wait for VBUS, but not forever */ -+ tcpm_set_state(dev, PORT_RESET, PD_T_PS_SOURCE_ON); -+ break; -+ case SNK_ATTACHED: -+ ret = tcpm_snk_attach(dev); -+ if (ret < 0) -+ tcpm_set_state(dev, SNK_UNATTACHED, 0); -+ else -+ tcpm_set_state(dev, SNK_STARTUP, 0); -+ break; -+ case SNK_STARTUP: -+ port->negotiated_rev = PD_MAX_REV; -+ port->message_id = 0; -+ port->rx_msgid = -1; -+ port->explicit_contract = false; -+ tcpm_set_state(dev, SNK_DISCOVERY, 0); -+ break; -+ case SNK_DISCOVERY: -+ if (port->vbus_present) { -+ tcpm_set_current_limit(dev, -+ tcpm_get_current_limit(port), -+ 5000); -+ tcpm_set_charge(dev, true); -+ tcpm_set_state(dev, SNK_WAIT_CAPABILITIES, 0); -+ break; -+ } -+ /* -+ * For DRP, timeouts differ. Also, handling is supposed to be -+ * different and much more complex (dead battery detection; -+ * see USB power delivery specification, section 8.3.3.6.1.5.1). -+ */ -+ tcpm_set_state(dev, hard_reset_state(port), -+ port->port_type == TYPEC_PORT_DRP ? -+ PD_T_DB_DETECT : PD_T_NO_RESPONSE); -+ break; -+ case SNK_DISCOVERY_DEBOUNCE: -+ tcpm_set_state(dev, SNK_DISCOVERY_DEBOUNCE_DONE, -+ PD_T_CC_DEBOUNCE); -+ break; -+ case SNK_DISCOVERY_DEBOUNCE_DONE: -+ tcpm_set_state(dev, unattached_state(port), 0); -+ break; -+ case SNK_WAIT_CAPABILITIES: -+ ret = drvops->set_pd_rx(dev, true); -+ if (ret < 0) { -+ tcpm_set_state(dev, SNK_READY, 0); -+ break; -+ } -+ /* -+ * If VBUS has never been low, and we time out waiting -+ * for source cap, try a soft reset first, in case we -+ * were already in a stable contract before this boot. -+ * Do this only once. -+ */ -+ if (port->vbus_never_low) { -+ port->vbus_never_low = false; -+ tcpm_set_state(dev, SOFT_RESET_SEND, -+ PD_T_SINK_WAIT_CAP); -+ } else { -+ tcpm_set_state(dev, hard_reset_state(port), -+ PD_T_SINK_WAIT_CAP); -+ } -+ break; -+ case SNK_NEGOTIATE_CAPABILITIES: -+ port->pd_capable = true; -+ port->hard_reset_count = 0; -+ ret = tcpm_pd_send_request(dev); -+ if (ret < 0) { -+ /* Let the Source send capabilities again. */ -+ tcpm_set_state(dev, SNK_WAIT_CAPABILITIES, 0); -+ } else { -+ tcpm_set_state_cond(dev, hard_reset_state(port), -+ PD_T_SENDER_RESPONSE); -+ } -+ break; -+ case SNK_TRANSITION_SINK: -+ case SNK_TRANSITION_SINK_VBUS: -+ tcpm_set_state(dev, hard_reset_state(port), -+ PD_T_PS_TRANSITION); -+ break; -+ case SNK_READY: -+ port->update_sink_caps = false; -+ tcpm_typec_connect(port); -+ /* -+ * Here poll_event_cnt is cleared, waiting for self-powered Type-C devices -+ * to send DR_swap Messge until 1s (TCPM_POLL_EVENT_TIME_OUT * 500us)timeout -+ */ -+ if (port->wait_dr_swap_message) -+ tcpm_reset_event_cnt(dev); -+ -+ break; -+ -+ /* Hard_Reset states */ -+ case HARD_RESET_SEND: -+ tcpm_pd_transmit(dev, TCPC_TX_HARD_RESET, NULL); -+ tcpm_set_state(dev, HARD_RESET_START, 0); -+ port->wait_dr_swap_message = false; -+ break; -+ case HARD_RESET_START: -+ port->hard_reset_count++; -+ drvops->set_pd_rx(dev, false); -+ port->nr_sink_caps = 0; -+ if (port->pwr_role == TYPEC_SOURCE) -+ tcpm_set_state(dev, SRC_HARD_RESET_VBUS_OFF, -+ PD_T_PS_HARD_RESET); -+ else -+ tcpm_set_state(dev, SNK_HARD_RESET_SINK_OFF, 0); -+ break; -+ case SRC_HARD_RESET_VBUS_OFF: -+ tcpm_set_vconn(dev, true); -+ tcpm_set_vbus(dev, false); -+ tcpm_set_roles(dev, port->self_powered, TYPEC_SOURCE, -+ TYPEC_HOST); -+ tcpm_set_state(dev, SRC_HARD_RESET_VBUS_ON, PD_T_SRC_RECOVER); -+ break; -+ case SRC_HARD_RESET_VBUS_ON: -+ tcpm_set_vconn(dev, true); -+ tcpm_set_vbus(dev, true); -+ drvops->set_pd_rx(dev, true); -+ tcpm_set_attached_state(dev, true); -+ tcpm_set_state(dev, SRC_UNATTACHED, PD_T_PS_SOURCE_ON); -+ break; -+ case SNK_HARD_RESET_SINK_OFF: -+ tcpm_set_vconn(dev, false); -+ if (port->pd_capable) -+ tcpm_set_charge(dev, false); -+ tcpm_set_roles(dev, port->self_powered, TYPEC_SINK, -+ TYPEC_DEVICE); -+ /* -+ * VBUS may or may not toggle, depending on the adapter. -+ * If it doesn't toggle, transition to SNK_HARD_RESET_SINK_ON -+ * directly after timeout. -+ */ -+ tcpm_set_state(dev, SNK_HARD_RESET_SINK_ON, PD_T_SAFE_0V); -+ break; -+ case SNK_HARD_RESET_WAIT_VBUS: -+ /* Assume we're disconnected if VBUS doesn't come back. */ -+ tcpm_set_state(dev, SNK_UNATTACHED, -+ PD_T_SRC_RECOVER_MAX + PD_T_SRC_TURN_ON); -+ break; -+ case SNK_HARD_RESET_SINK_ON: -+ /* Note: There is no guarantee that VBUS is on in this state */ -+ /* -+ * XXX: -+ * The specification suggests that dual mode ports in sink -+ * mode should transition to state PE_SRC_Transition_to_default. -+ * See USB power delivery specification chapter 8.3.3.6.1.3. -+ * This would mean to -+ * - turn off VCONN, reset power supply -+ * - request hardware reset -+ * - turn on VCONN -+ * - Transition to state PE_Src_Startup -+ * SNK only ports shall transition to state Snk_Startup -+ * (see chapter 8.3.3.3.8). -+ * Similar, dual-mode ports in source mode should transition -+ * to PE_SNK_Transition_to_default. -+ */ -+ if (port->pd_capable) { -+ tcpm_set_current_limit(dev, -+ tcpm_get_current_limit(port), -+ 5000); -+ tcpm_set_charge(dev, true); -+ } -+ tcpm_set_attached_state(dev, true); -+ tcpm_set_state(dev, SNK_STARTUP, 0); -+ break; -+ -+ /* Soft_Reset states */ -+ case SOFT_RESET: -+ port->message_id = 0; -+ port->rx_msgid = -1; -+ tcpm_pd_send_control(dev, PD_CTRL_ACCEPT); -+ if (port->pwr_role == TYPEC_SOURCE) -+ tcpm_set_state(dev, SRC_SEND_CAPABILITIES, 0); -+ else -+ tcpm_set_state(dev, SNK_WAIT_CAPABILITIES, 0); -+ break; -+ case SOFT_RESET_SEND: -+ port->message_id = 0; -+ port->rx_msgid = -1; -+ if (tcpm_pd_send_control(dev, PD_CTRL_SOFT_RESET)) -+ tcpm_set_state_cond(dev, hard_reset_state(port), 0); -+ else -+ tcpm_set_state_cond(dev, hard_reset_state(port), -+ PD_T_SENDER_RESPONSE); -+ break; -+ -+ /* DR_Swap states */ -+ case DR_SWAP_ACCEPT: -+ tcpm_pd_send_control(dev, PD_CTRL_ACCEPT); -+ tcpm_set_state_cond(dev, DR_SWAP_CHANGE_DR, 0); -+ break; -+ case DR_SWAP_CHANGE_DR: -+ if (port->data_role == TYPEC_HOST) { -+ tcpm_set_roles(dev, true, port->pwr_role, -+ TYPEC_DEVICE); -+ } else { -+ tcpm_set_roles(dev, true, port->pwr_role, -+ TYPEC_HOST); -+ } -+ /* DR_swap process complete, wait_dr_swap_message is cleared */ -+ port->wait_dr_swap_message = false; -+ tcpm_set_state(dev, ready_state(port), 0); -+ break; -+ case ERROR_RECOVERY: -+ tcpm_set_state(dev, PORT_RESET, 0); -+ break; -+ case PORT_RESET: -+ tcpm_reset_port(dev); -+ if (port->self_powered) -+ tcpm_set_cc(dev, TYPEC_CC_OPEN); -+ else -+ tcpm_set_cc(dev, tcpm_default_state(port) == SNK_UNATTACHED ? -+ TYPEC_CC_RD : tcpm_rp_cc(port)); -+ tcpm_set_state(dev, PORT_RESET_WAIT_OFF, -+ PD_T_ERROR_RECOVERY); -+ break; -+ case PORT_RESET_WAIT_OFF: -+ tcpm_set_state(dev, -+ tcpm_default_state(port), -+ port->vbus_present ? PD_T_PS_SOURCE_OFF : 0); -+ break; -+ default: -+ dev_err(dev, "TCPM: Unexpected port state %d\n", port->state); -+ break; -+ } -+} -+ -+static void tcpm_state_machine(struct udevice *dev) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ enum tcpm_state prev_state; -+ -+ mutex_lock(&port->lock); -+ port->state_machine_running = true; -+ -+ if (port->queued_message && tcpm_send_queued_message(dev)) -+ goto done; -+ -+ /* If we were queued due to a delayed state change, update it now */ -+ if (port->delayed_state) { -+ dev_dbg(dev, "TCPM: state change %s -> %s [delayed %ld ms]\n", -+ tcpm_states[port->state], -+ tcpm_states[port->delayed_state], port->delay_ms); -+ port->prev_state = port->state; -+ port->state = port->delayed_state; -+ port->delayed_state = INVALID_STATE; -+ } -+ -+ /* -+ * Continue running as long as we have (non-delayed) state changes -+ * to make. -+ */ -+ do { -+ prev_state = port->state; -+ run_state_machine(dev); -+ if (port->queued_message) -+ tcpm_send_queued_message(dev); -+ } while (port->state != prev_state && !port->delayed_state); -+ -+done: -+ port->state_machine_running = false; -+ mutex_unlock(&port->lock); -+} -+ -+static void _tcpm_cc_change(struct udevice *dev, enum typec_cc_status cc1, -+ enum typec_cc_status cc2) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ enum typec_cc_status old_cc1, old_cc2; -+ enum tcpm_state new_state; -+ -+ old_cc1 = port->cc1; -+ old_cc2 = port->cc2; -+ port->cc1 = cc1; -+ port->cc2 = cc2; -+ -+ dev_dbg(dev, "TCPM: CC1: %u -> %u, CC2: %u -> %u [state %s, polarity %d, %s]\n", -+ old_cc1, cc1, old_cc2, cc2, tcpm_states[port->state], -+ port->polarity, -+ tcpm_port_is_disconnected(port) ? "disconnected" : "connected"); -+ -+ switch (port->state) { -+ case TOGGLING: -+ if (tcpm_port_is_source(port)) -+ tcpm_set_state(dev, SRC_ATTACH_WAIT, 0); -+ else if (tcpm_port_is_sink(port)) -+ tcpm_set_state(dev, SNK_ATTACH_WAIT, 0); -+ break; -+ case SRC_UNATTACHED: -+ case SRC_ATTACH_WAIT: -+ if (tcpm_port_is_disconnected(port)) -+ tcpm_set_state(dev, SRC_UNATTACHED, 0); -+ else if (cc1 != old_cc1 || cc2 != old_cc2) -+ tcpm_set_state(dev, SRC_ATTACH_WAIT, 0); -+ break; -+ case SRC_ATTACHED: -+ case SRC_SEND_CAPABILITIES: -+ case SRC_READY: -+ if (tcpm_port_is_disconnected(port) || -+ !tcpm_port_is_source(port)) -+ tcpm_set_state(dev, SRC_UNATTACHED, 0); -+ break; -+ case SNK_UNATTACHED: -+ if (tcpm_port_is_sink(port)) -+ tcpm_set_state(dev, SNK_ATTACH_WAIT, 0); -+ break; -+ case SNK_ATTACH_WAIT: -+ if ((port->cc1 == TYPEC_CC_OPEN && -+ port->cc2 != TYPEC_CC_OPEN) || -+ (port->cc1 != TYPEC_CC_OPEN && -+ port->cc2 == TYPEC_CC_OPEN)) -+ new_state = SNK_DEBOUNCED; -+ else if (tcpm_port_is_disconnected(port)) -+ new_state = SNK_UNATTACHED; -+ else -+ break; -+ if (new_state != port->delayed_state) -+ tcpm_set_state(dev, SNK_ATTACH_WAIT, 0); -+ break; -+ case SNK_DEBOUNCED: -+ if (tcpm_port_is_disconnected(port)) -+ new_state = SNK_UNATTACHED; -+ else if (port->vbus_present) -+ new_state = tcpm_try_src(port) ? INVALID_STATE : SNK_ATTACHED; -+ else -+ new_state = SNK_UNATTACHED; -+ if (new_state != port->delayed_state) -+ tcpm_set_state(dev, SNK_DEBOUNCED, 0); -+ break; -+ case SNK_READY: -+ if (tcpm_port_is_disconnected(port)) -+ tcpm_set_state(dev, unattached_state(port), 0); -+ else if (!port->pd_capable && -+ (cc1 != old_cc1 || cc2 != old_cc2)) -+ tcpm_set_current_limit(dev, -+ tcpm_get_current_limit(port), -+ 5000); -+ break; -+ -+ case SNK_DISCOVERY: -+ /* CC line is unstable, wait for debounce */ -+ if (tcpm_port_is_disconnected(port)) -+ tcpm_set_state(dev, SNK_DISCOVERY_DEBOUNCE, 0); -+ break; -+ case SNK_DISCOVERY_DEBOUNCE: -+ break; -+ -+ case PORT_RESET: -+ case PORT_RESET_WAIT_OFF: -+ /* -+ * State set back to default mode once the timer completes. -+ * Ignore CC changes here. -+ */ -+ break; -+ default: -+ /* -+ * While acting as sink and auto vbus discharge is enabled, Allow disconnect -+ * to be driven by vbus disconnect. -+ */ -+ if (tcpm_port_is_disconnected(port)) -+ tcpm_set_state(dev, unattached_state(port), 0); -+ break; -+ } -+} -+ -+static void _tcpm_pd_vbus_on(struct udevice *dev) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ -+ dev_dbg(dev, "TCPM: VBUS on event\n"); -+ port->vbus_present = true; -+ /* -+ * When vbus_present is true i.e. Voltage at VBUS is greater than VSAFE5V implicitly -+ * states that vbus is not at VSAFE0V, hence clear the vbus_vsafe0v flag here. -+ */ -+ port->vbus_vsafe0v = false; -+ -+ switch (port->state) { -+ case SNK_TRANSITION_SINK_VBUS: -+ port->explicit_contract = true; -+ tcpm_set_state(dev, SNK_READY, 0); -+ break; -+ case SNK_DISCOVERY: -+ tcpm_set_state(dev, SNK_DISCOVERY, 0); -+ break; -+ case SNK_DEBOUNCED: -+ tcpm_set_state(dev, SNK_ATTACHED, 0); -+ break; -+ case SNK_HARD_RESET_WAIT_VBUS: -+ tcpm_set_state(dev, SNK_HARD_RESET_SINK_ON, 0); -+ break; -+ case SRC_ATTACHED: -+ tcpm_set_state(dev, SRC_STARTUP, 0); -+ break; -+ case SRC_HARD_RESET_VBUS_ON: -+ tcpm_set_state(dev, SRC_STARTUP, 0); -+ break; -+ -+ case PORT_RESET: -+ case PORT_RESET_WAIT_OFF: -+ /* -+ * State set back to default mode once the timer completes. -+ * Ignore vbus changes here. -+ */ -+ break; -+ -+ default: -+ break; -+ } -+} -+ -+static void _tcpm_pd_vbus_off(struct udevice *dev) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ -+ dev_dbg(dev, "TCPM: VBUS off event\n"); -+ port->vbus_present = false; -+ port->vbus_never_low = false; -+ switch (port->state) { -+ case SNK_HARD_RESET_SINK_OFF: -+ tcpm_set_state(dev, SNK_HARD_RESET_WAIT_VBUS, 0); -+ break; -+ case HARD_RESET_SEND: -+ break; -+ case SNK_ATTACH_WAIT: -+ tcpm_set_state(dev, SNK_UNATTACHED, 0); -+ break; -+ -+ case SNK_NEGOTIATE_CAPABILITIES: -+ break; -+ -+ case PORT_RESET_WAIT_OFF: -+ tcpm_set_state(dev, tcpm_default_state(port), 0); -+ break; -+ -+ case PORT_RESET: -+ /* -+ * State set back to default mode once the timer completes. -+ * Ignore vbus changes here. -+ */ -+ break; -+ -+ default: -+ if (port->pwr_role == TYPEC_SINK && port->attached) -+ tcpm_set_state(dev, SNK_UNATTACHED, 0); -+ break; -+ } -+} -+ -+void tcpm_cc_change(struct udevice *dev) -+{ -+ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); -+ enum typec_cc_status cc1, cc2; -+ -+ tcpm_reset_event_cnt(dev); -+ if (drvops->get_cc(dev, &cc1, &cc2) == 0) -+ _tcpm_cc_change(dev, cc1, cc2); -+} -+ -+void tcpm_vbus_change(struct udevice *dev) -+{ -+ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); -+ bool vbus; -+ -+ tcpm_reset_event_cnt(dev); -+ vbus = drvops->get_vbus(dev); -+ if (vbus) -+ _tcpm_pd_vbus_on(dev); -+ else -+ _tcpm_pd_vbus_off(dev); -+} -+ -+void tcpm_pd_hard_reset(struct udevice *dev) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ -+ tcpm_reset_event_cnt(dev); -+ dev_dbg(dev, "TCPM: Received hard reset\n"); -+ -+ /* If a hard reset message is received during the port reset process, -+ * we should ignore it, that is, do not set port->state to HARD_RESET_START. -+ */ -+ if (port->state == PORT_RESET || port->state == PORT_RESET_WAIT_OFF) -+ return; -+ -+ /* -+ * If we keep receiving hard reset requests, executing the hard reset -+ * must have failed. Revert to error recovery if that happens. -+ */ -+ tcpm_set_state(dev, -+ port->hard_reset_count < PD_N_HARD_RESET_COUNT ? -+ HARD_RESET_START : ERROR_RECOVERY, -+ 0); -+} -+ -+static void tcpm_init(struct udevice *dev) -+{ -+ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ enum typec_cc_status cc1, cc2; -+ -+ drvops->init(dev); -+ -+ tcpm_reset_port(dev); -+ -+ /* -+ * XXX -+ * Should possibly wait for VBUS to settle if it was enabled locally -+ * since tcpm_reset_port() will disable VBUS. -+ */ -+ port->vbus_present = drvops->get_vbus(dev); -+ if (port->vbus_present) -+ port->vbus_never_low = true; -+ -+ /* -+ * 1. When vbus_present is true, voltage on VBUS is already at VSAFE5V. -+ * So implicitly vbus_vsafe0v = false. -+ * -+ * 2. When vbus_present is false and TCPC does NOT support querying -+ * vsafe0v status, then, it's best to assume vbus is at VSAFE0V i.e. -+ * vbus_vsafe0v is true. -+ * -+ * 3. When vbus_present is false and TCPC does support querying vsafe0v, -+ * then, query tcpc for vsafe0v status. -+ */ -+ if (port->vbus_present) -+ port->vbus_vsafe0v = false; -+ else -+ port->vbus_vsafe0v = true; -+ -+ tcpm_set_state(dev, tcpm_default_state(port), 0); -+ -+ if (drvops->get_cc(dev, &cc1, &cc2) == 0) -+ _tcpm_cc_change(dev, cc1, cc2); -+} -+ -+static int tcpm_fw_get_caps(struct udevice *dev) -+{ -+ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ ofnode node; -+ const char *cap_str; -+ int ret; -+ u32 mw; -+ -+ ret = drvops->get_connector_node(dev, &node); -+ if (ret) -+ return ret; -+ -+ cap_str = ofnode_read_string(node, "power-role"); -+ if (!cap_str) -+ return -EINVAL; -+ -+ if (!strcmp("dual", cap_str)) -+ port->typec_type = TYPEC_PORT_DRP; -+ else if (!strcmp("source", cap_str)) -+ port->typec_type = TYPEC_PORT_SRC; -+ else if (!strcmp("sink", cap_str)) -+ port->typec_type = TYPEC_PORT_SNK; -+ else -+ return -EINVAL; -+ -+ port->port_type = port->typec_type; -+ -+ if (port->port_type == TYPEC_PORT_SNK) -+ goto sink; -+ -+ /* Get source pdos */ -+ ret = ofnode_read_size(node, "source-pdos") / sizeof(u32); -+ if (ret <= 0) -+ return -EINVAL; -+ -+ port->nr_src_pdo = min(ret, PDO_MAX_OBJECTS); -+ ret = ofnode_read_u32_array(node, "source-pdos", -+ port->src_pdo, port->nr_src_pdo); -+ if (ret || tcpm_validate_caps(dev, port->src_pdo, port->nr_src_pdo)) -+ return -EINVAL; -+ -+ if (port->port_type == TYPEC_PORT_SRC) -+ return 0; -+ -+ /* Get the preferred power role for DRP */ -+ cap_str = ofnode_read_string(node, "try-power-role"); -+ if (!cap_str) -+ return -EINVAL; -+ -+ if (!strcmp("sink", cap_str)) -+ port->typec_prefer_role = TYPEC_SINK; -+ else if (!strcmp("source", cap_str)) -+ port->typec_prefer_role = TYPEC_SOURCE; -+ else -+ return -EINVAL; -+ -+ if (port->typec_prefer_role < 0) -+ return -EINVAL; -+sink: -+ /* Get sink pdos */ -+ ret = ofnode_read_size(node, "sink-pdos") / sizeof(u32); -+ if (ret <= 0) -+ return -EINVAL; -+ -+ port->nr_snk_pdo = min(ret, PDO_MAX_OBJECTS); -+ ret = ofnode_read_u32_array(node, "sink-pdos", -+ port->snk_pdo, port->nr_snk_pdo); -+ if (ret || tcpm_validate_caps(dev, port->snk_pdo, port->nr_snk_pdo)) -+ return -EINVAL; -+ -+ if (ofnode_read_u32_array(node, "op-sink-microwatt", &mw, 1)) -+ return -EINVAL; -+ port->operating_snk_mw = mw / 1000; -+ -+ port->self_powered = ofnode_read_bool(node, "self-powered"); -+ -+ return 0; -+} -+ -+static int tcpm_port_init(struct udevice *dev) -+{ -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ int err; -+ -+ err = tcpm_fw_get_caps(dev); -+ if (err < 0) { -+ dev_err(dev, "TCPM: please check the dts config: %d\n", err); -+ return err; -+ } -+ -+ port->try_role = port->typec_prefer_role; -+ port->port_type = port->typec_type; -+ -+ tcpm_init(dev); -+ -+ dev_info(dev, "TCPM: init finished\n"); -+ -+ return 0; -+} -+ -+static void tcpm_poll_event(struct udevice *dev) -+{ -+ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev); -+ struct tcpm_port *port = dev_get_uclass_plat(dev); -+ -+ if (!drvops->get_vbus(dev)) -+ return; -+ -+ while (port->poll_event_cnt < TCPM_POLL_EVENT_TIME_OUT) { -+ if (!port->wait_dr_swap_message && -+ (port->state == SNK_READY || port->state == SRC_READY)) -+ break; -+ -+ drvops->poll_event(dev); -+ port->poll_event_cnt++; -+ udelay(500); -+ tcpm_check_and_run_delayed_work(dev); -+ } -+ -+ if (port->state != SNK_READY && port->state != SRC_READY) -+ dev_warn(dev, "TCPM: exit in state %s\n", -+ tcpm_states[port->state]); -+ -+ /* -+ * At this time, call the callback function of the respective pd chip -+ * to enter the low-power mode. In order to reduce the time spent on -+ * the PD chip driver as much as possible, the tcpm framework does not -+ * fully process the communication initiated by the device,so it should -+ * be noted that we can disable the internal oscillator, etc., but do -+ * not turn off the power of the transceiver module, otherwise the -+ * self-powered Type-C device will initiate a Message(eg: self-powered -+ * Type-C hub initiates a SINK capability request(PD_CTRL_GET_SINK_CAP)) -+ * and the pd chip cannot reply to GoodCRC, causing the self-powered Type-C -+ * device to switch vbus to vSafe5v, or even turn off vbus. -+ */ -+ if (!drvops->enter_low_power_mode) -+ return; -+ -+ if (drvops->enter_low_power_mode(dev, port->attached, port->pd_capable)) -+ dev_err(dev, "TCPM: failed to enter low power\n"); -+ else -+ dev_info(dev, "TCPM: PD chip enter low power mode\n"); -+} -+ -+int tcpm_post_probe(struct udevice *dev) -+{ -+ int ret = tcpm_port_init(dev); -+ -+ if (ret < 0) { -+ dev_err(dev, "failed to tcpm port init\n"); -+ return ret; -+ } -+ -+ tcpm_poll_event(dev); -+ -+ return 0; -+} -diff --git a/include/dm/uclass-id.h b/include/dm/uclass-id.h -index 5271e646bb16..270088ad94f7 100644 ---- a/include/dm/uclass-id.h -+++ b/include/dm/uclass-id.h -@@ -139,6 +139,7 @@ enum uclass_id { - UCLASS_SYSCON, /* System configuration device */ - UCLASS_SYSINFO, /* Device information from hardware */ - UCLASS_SYSRESET, /* System reset device */ -+ UCLASS_TCPM, /* TypeC port manager */ - UCLASS_TEE, /* Trusted Execution Environment device */ - UCLASS_THERMAL, /* Thermal sensor */ - UCLASS_TIMER, /* Timer device */ -diff --git a/include/usb/pd.h b/include/usb/pd.h -new file mode 100644 -index 000000000000..cacda322d7c6 ---- /dev/null -+++ b/include/usb/pd.h -@@ -0,0 +1,516 @@ -+/* SPDX-License-Identifier: GPL-2.0-or-later */ -+/* -+ * Copyright 2015-2017 Google, Inc -+ */ -+ -+#ifndef __LINUX_USB_PD_H -+#define __LINUX_USB_PD_H -+ -+#include -+#include -+ -+enum typec_port_type { -+ TYPEC_PORT_SRC, -+ TYPEC_PORT_SNK, -+ TYPEC_PORT_DRP, -+}; -+ -+enum typec_data_role { -+ TYPEC_DEVICE, -+ TYPEC_HOST, -+}; -+ -+enum typec_role { -+ TYPEC_SINK, -+ TYPEC_SOURCE, -+}; -+ -+/* USB PD Messages */ -+enum pd_ctrl_msg_type { -+ /* 0 Reserved */ -+ PD_CTRL_GOOD_CRC = 1, -+ PD_CTRL_GOTO_MIN = 2, -+ PD_CTRL_ACCEPT = 3, -+ PD_CTRL_REJECT = 4, -+ PD_CTRL_PING = 5, -+ PD_CTRL_PS_RDY = 6, -+ PD_CTRL_GET_SOURCE_CAP = 7, -+ PD_CTRL_GET_SINK_CAP = 8, -+ PD_CTRL_DR_SWAP = 9, -+ PD_CTRL_PR_SWAP = 10, -+ PD_CTRL_VCONN_SWAP = 11, -+ PD_CTRL_WAIT = 12, -+ PD_CTRL_SOFT_RESET = 13, -+ /* 14-15 Reserved */ -+ PD_CTRL_NOT_SUPP = 16, -+ PD_CTRL_GET_SOURCE_CAP_EXT = 17, -+ PD_CTRL_GET_STATUS = 18, -+ PD_CTRL_FR_SWAP = 19, -+ PD_CTRL_GET_PPS_STATUS = 20, -+ PD_CTRL_GET_COUNTRY_CODES = 21, -+ /* 22-31 Reserved */ -+}; -+ -+enum pd_data_msg_type { -+ /* 0 Reserved */ -+ PD_DATA_SOURCE_CAP = 1, -+ PD_DATA_REQUEST = 2, -+ PD_DATA_BIST = 3, -+ PD_DATA_SINK_CAP = 4, -+ PD_DATA_BATT_STATUS = 5, -+ PD_DATA_ALERT = 6, -+ PD_DATA_GET_COUNTRY_INFO = 7, -+ PD_DATA_ENTER_USB = 8, -+ /* 9-14 Reserved */ -+ PD_DATA_VENDOR_DEF = 15, -+ /* 16-31 Reserved */ -+}; -+ -+enum pd_ext_msg_type { -+ /* 0 Reserved */ -+ PD_EXT_SOURCE_CAP_EXT = 1, -+ PD_EXT_STATUS = 2, -+ PD_EXT_GET_BATT_CAP = 3, -+ PD_EXT_GET_BATT_STATUS = 4, -+ PD_EXT_BATT_CAP = 5, -+ PD_EXT_GET_MANUFACTURER_INFO = 6, -+ PD_EXT_MANUFACTURER_INFO = 7, -+ PD_EXT_SECURITY_REQUEST = 8, -+ PD_EXT_SECURITY_RESPONSE = 9, -+ PD_EXT_FW_UPDATE_REQUEST = 10, -+ PD_EXT_FW_UPDATE_RESPONSE = 11, -+ PD_EXT_PPS_STATUS = 12, -+ PD_EXT_COUNTRY_INFO = 13, -+ PD_EXT_COUNTRY_CODES = 14, -+ /* 15-31 Reserved */ -+}; -+ -+#define PD_REV10 0x0 -+#define PD_REV20 0x1 -+#define PD_REV30 0x2 -+#define PD_MAX_REV PD_REV30 -+ -+#define PD_HEADER_EXT_HDR BIT(15) -+#define PD_HEADER_CNT_SHIFT 12 -+#define PD_HEADER_CNT_MASK 0x7 -+#define PD_HEADER_ID_SHIFT 9 -+#define PD_HEADER_ID_MASK 0x7 -+#define PD_HEADER_PWR_ROLE BIT(8) -+#define PD_HEADER_REV_SHIFT 6 -+#define PD_HEADER_REV_MASK 0x3 -+#define PD_HEADER_DATA_ROLE BIT(5) -+#define PD_HEADER_TYPE_SHIFT 0 -+#define PD_HEADER_TYPE_MASK 0x1f -+ -+#define PD_HEADER(type, pwr, data, rev, id, cnt, ext_hdr) \ -+ ((((type) & PD_HEADER_TYPE_MASK) << PD_HEADER_TYPE_SHIFT) | \ -+ ((pwr) == TYPEC_SOURCE ? PD_HEADER_PWR_ROLE : 0) | \ -+ ((data) == TYPEC_HOST ? PD_HEADER_DATA_ROLE : 0) | \ -+ ((rev) << PD_HEADER_REV_SHIFT) | \ -+ (((id) & PD_HEADER_ID_MASK) << PD_HEADER_ID_SHIFT) | \ -+ (((cnt) & PD_HEADER_CNT_MASK) << PD_HEADER_CNT_SHIFT) | \ -+ ((ext_hdr) ? PD_HEADER_EXT_HDR : 0)) -+ -+#define PD_HEADER_LE(type, pwr, data, rev, id, cnt) \ -+ cpu_to_le16(PD_HEADER((type), (pwr), (data), (rev), (id), (cnt), (0))) -+ -+static inline unsigned int pd_header_cnt(u16 header) -+{ -+ return (header >> PD_HEADER_CNT_SHIFT) & PD_HEADER_CNT_MASK; -+} -+ -+static inline unsigned int pd_header_cnt_le(__le16 header) -+{ -+ return pd_header_cnt(le16_to_cpu(header)); -+} -+ -+static inline unsigned int pd_header_type(u16 header) -+{ -+ return (header >> PD_HEADER_TYPE_SHIFT) & PD_HEADER_TYPE_MASK; -+} -+ -+static inline unsigned int pd_header_type_le(__le16 header) -+{ -+ return pd_header_type(le16_to_cpu(header)); -+} -+ -+static inline unsigned int pd_header_msgid(u16 header) -+{ -+ return (header >> PD_HEADER_ID_SHIFT) & PD_HEADER_ID_MASK; -+} -+ -+static inline unsigned int pd_header_msgid_le(__le16 header) -+{ -+ return pd_header_msgid(le16_to_cpu(header)); -+} -+ -+static inline unsigned int pd_header_rev(u16 header) -+{ -+ return (header >> PD_HEADER_REV_SHIFT) & PD_HEADER_REV_MASK; -+} -+ -+static inline unsigned int pd_header_rev_le(__le16 header) -+{ -+ return pd_header_rev(le16_to_cpu(header)); -+} -+ -+#define PD_EXT_HDR_CHUNKED BIT(15) -+#define PD_EXT_HDR_CHUNK_NUM_SHIFT 11 -+#define PD_EXT_HDR_CHUNK_NUM_MASK 0xf -+#define PD_EXT_HDR_REQ_CHUNK BIT(10) -+#define PD_EXT_HDR_DATA_SIZE_SHIFT 0 -+#define PD_EXT_HDR_DATA_SIZE_MASK 0x1ff -+ -+#define PD_EXT_HDR(data_size, req_chunk, chunk_num, chunked) \ -+ ((((data_size) & PD_EXT_HDR_DATA_SIZE_MASK) << PD_EXT_HDR_DATA_SIZE_SHIFT) | \ -+ ((req_chunk) ? PD_EXT_HDR_REQ_CHUNK : 0) | \ -+ (((chunk_num) & PD_EXT_HDR_CHUNK_NUM_MASK) << PD_EXT_HDR_CHUNK_NUM_SHIFT) | \ -+ ((chunked) ? PD_EXT_HDR_CHUNKED : 0)) -+ -+#define PD_EXT_HDR_LE(data_size, req_chunk, chunk_num, chunked) \ -+ cpu_to_le16(PD_EXT_HDR((data_size), (req_chunk), (chunk_num), (chunked))) -+ -+static inline unsigned int pd_ext_header_chunk_num(u16 ext_header) -+{ -+ return (ext_header >> PD_EXT_HDR_CHUNK_NUM_SHIFT) & -+ PD_EXT_HDR_CHUNK_NUM_MASK; -+} -+ -+static inline unsigned int pd_ext_header_data_size(u16 ext_header) -+{ -+ return (ext_header >> PD_EXT_HDR_DATA_SIZE_SHIFT) & -+ PD_EXT_HDR_DATA_SIZE_MASK; -+} -+ -+static inline unsigned int pd_ext_header_data_size_le(__le16 ext_header) -+{ -+ return pd_ext_header_data_size(le16_to_cpu(ext_header)); -+} -+ -+#define PD_MAX_PAYLOAD 7 -+#define PD_EXT_MAX_CHUNK_DATA 26 -+ -+/* -+ * struct pd_chunked_ext_message_data - PD chunked extended message data as -+ * seen on wire -+ * @header: PD extended message header -+ * @data: PD extended message data -+ */ -+struct pd_chunked_ext_message_data { -+ __le16 header; -+ u8 data[PD_EXT_MAX_CHUNK_DATA]; -+} __packed; -+ -+/* -+ * struct pd_message - PD message as seen on wire -+ * @header: PD message header -+ * @payload: PD message payload -+ * @ext_msg: PD message chunked extended message data -+ */ -+struct pd_message { -+ __le16 header; -+ union { -+ __le32 payload[PD_MAX_PAYLOAD]; -+ struct pd_chunked_ext_message_data ext_msg; -+ }; -+} __packed; -+ -+/* PDO: Power Data Object */ -+#define PDO_MAX_OBJECTS 7 -+ -+enum pd_pdo_type { -+ PDO_TYPE_FIXED = 0, -+ PDO_TYPE_BATT = 1, -+ PDO_TYPE_VAR = 2, -+ PDO_TYPE_APDO = 3, -+}; -+ -+#define PDO_TYPE_SHIFT 30 -+#define PDO_TYPE_MASK 0x3 -+ -+#define PDO_TYPE(t) ((t) << PDO_TYPE_SHIFT) -+ -+#define PDO_VOLT_MASK 0x3ff -+#define PDO_CURR_MASK 0x3ff -+#define PDO_PWR_MASK 0x3ff -+ -+#define PDO_FIXED_DUAL_ROLE BIT(29) /* Power role swap supported */ -+#define PDO_FIXED_SUSPEND BIT(28) /* USB Suspend supported (Source) */ -+#define PDO_FIXED_HIGHER_CAP BIT(28) /* Requires more than vSafe5V (Sink) */ -+#define PDO_FIXED_EXTPOWER BIT(27) /* Externally powered */ -+#define PDO_FIXED_USB_COMM BIT(26) /* USB communications capable */ -+#define PDO_FIXED_DATA_SWAP BIT(25) /* Data role swap supported */ -+#define PDO_FIXED_UNCHUNK_EXT BIT(24) /* Unchunked Extended Message supported (Source) */ -+#define PDO_FIXED_FRS_CURR_MASK (BIT(24) | BIT(23)) /* FR_Swap Current (Sink) */ -+#define PDO_FIXED_FRS_CURR_SHIFT 23 -+#define PDO_FIXED_VOLT_SHIFT 10 /* 50mV units */ -+#define PDO_FIXED_CURR_SHIFT 0 /* 10mA units */ -+ -+#define PDO_FIXED_VOLT(mv) ((((mv) / 50) & PDO_VOLT_MASK) << PDO_FIXED_VOLT_SHIFT) -+#define PDO_FIXED_CURR(ma) ((((ma) / 10) & PDO_CURR_MASK) << PDO_FIXED_CURR_SHIFT) -+ -+#define PDO_FIXED(mv, ma, flags) \ -+ (PDO_TYPE(PDO_TYPE_FIXED) | (flags) | \ -+ PDO_FIXED_VOLT(mv) | PDO_FIXED_CURR(ma)) -+ -+#define VSAFE5V 5000 /* mv units */ -+ -+#define PDO_BATT_MAX_VOLT_SHIFT 20 /* 50mV units */ -+#define PDO_BATT_MIN_VOLT_SHIFT 10 /* 50mV units */ -+#define PDO_BATT_MAX_PWR_SHIFT 0 /* 250mW units */ -+ -+#define PDO_BATT_MIN_VOLT(mv) ((((mv) / 50) & PDO_VOLT_MASK) << PDO_BATT_MIN_VOLT_SHIFT) -+#define PDO_BATT_MAX_VOLT(mv) ((((mv) / 50) & PDO_VOLT_MASK) << PDO_BATT_MAX_VOLT_SHIFT) -+#define PDO_BATT_MAX_POWER(mw) ((((mw) / 250) & PDO_PWR_MASK) << PDO_BATT_MAX_PWR_SHIFT) -+ -+#define PDO_BATT(min_mv, max_mv, max_mw) \ -+ (PDO_TYPE(PDO_TYPE_BATT) | PDO_BATT_MIN_VOLT(min_mv) | \ -+ PDO_BATT_MAX_VOLT(max_mv) | PDO_BATT_MAX_POWER(max_mw)) -+ -+#define PDO_VAR_MAX_VOLT_SHIFT 20 /* 50mV units */ -+#define PDO_VAR_MIN_VOLT_SHIFT 10 /* 50mV units */ -+#define PDO_VAR_MAX_CURR_SHIFT 0 /* 10mA units */ -+ -+#define PDO_VAR_MIN_VOLT(mv) ((((mv) / 50) & PDO_VOLT_MASK) << PDO_VAR_MIN_VOLT_SHIFT) -+#define PDO_VAR_MAX_VOLT(mv) ((((mv) / 50) & PDO_VOLT_MASK) << PDO_VAR_MAX_VOLT_SHIFT) -+#define PDO_VAR_MAX_CURR(ma) ((((ma) / 10) & PDO_CURR_MASK) << PDO_VAR_MAX_CURR_SHIFT) -+ -+#define PDO_VAR(min_mv, max_mv, max_ma) \ -+ (PDO_TYPE(PDO_TYPE_VAR) | PDO_VAR_MIN_VOLT(min_mv) | \ -+ PDO_VAR_MAX_VOLT(max_mv) | PDO_VAR_MAX_CURR(max_ma)) -+ -+enum pd_apdo_type { -+ APDO_TYPE_PPS = 0, -+}; -+ -+#define PDO_APDO_TYPE_SHIFT 28 /* Only valid value currently is 0x0 - PPS */ -+#define PDO_APDO_TYPE_MASK 0x3 -+ -+#define PDO_APDO_TYPE(t) ((t) << PDO_APDO_TYPE_SHIFT) -+ -+#define PDO_PPS_APDO_MAX_VOLT_SHIFT 17 /* 100mV units */ -+#define PDO_PPS_APDO_MIN_VOLT_SHIFT 8 /* 100mV units */ -+#define PDO_PPS_APDO_MAX_CURR_SHIFT 0 /* 50mA units */ -+ -+#define PDO_PPS_APDO_VOLT_MASK 0xff -+#define PDO_PPS_APDO_CURR_MASK 0x7f -+ -+#define PDO_PPS_APDO_MIN_VOLT(mv) \ -+ ((((mv) / 100) & PDO_PPS_APDO_VOLT_MASK) << PDO_PPS_APDO_MIN_VOLT_SHIFT) -+#define PDO_PPS_APDO_MAX_VOLT(mv) \ -+ ((((mv) / 100) & PDO_PPS_APDO_VOLT_MASK) << PDO_PPS_APDO_MAX_VOLT_SHIFT) -+#define PDO_PPS_APDO_MAX_CURR(ma) \ -+ ((((ma) / 50) & PDO_PPS_APDO_CURR_MASK) << PDO_PPS_APDO_MAX_CURR_SHIFT) -+ -+#define PDO_PPS_APDO(min_mv, max_mv, max_ma) \ -+ (PDO_TYPE(PDO_TYPE_APDO) | PDO_APDO_TYPE(APDO_TYPE_PPS) | \ -+ PDO_PPS_APDO_MIN_VOLT(min_mv) | PDO_PPS_APDO_MAX_VOLT(max_mv) | \ -+ PDO_PPS_APDO_MAX_CURR(max_ma)) -+ -+static inline enum pd_pdo_type pdo_type(u32 pdo) -+{ -+ return (pdo >> PDO_TYPE_SHIFT) & PDO_TYPE_MASK; -+} -+ -+static inline unsigned int pdo_fixed_voltage(u32 pdo) -+{ -+ return ((pdo >> PDO_FIXED_VOLT_SHIFT) & PDO_VOLT_MASK) * 50; -+} -+ -+static inline unsigned int pdo_min_voltage(u32 pdo) -+{ -+ return ((pdo >> PDO_VAR_MIN_VOLT_SHIFT) & PDO_VOLT_MASK) * 50; -+} -+ -+static inline unsigned int pdo_max_voltage(u32 pdo) -+{ -+ return ((pdo >> PDO_VAR_MAX_VOLT_SHIFT) & PDO_VOLT_MASK) * 50; -+} -+ -+static inline unsigned int pdo_max_current(u32 pdo) -+{ -+ return ((pdo >> PDO_VAR_MAX_CURR_SHIFT) & PDO_CURR_MASK) * 10; -+} -+ -+static inline unsigned int pdo_max_power(u32 pdo) -+{ -+ return ((pdo >> PDO_BATT_MAX_PWR_SHIFT) & PDO_PWR_MASK) * 250; -+} -+ -+static inline enum pd_apdo_type pdo_apdo_type(u32 pdo) -+{ -+ return (pdo >> PDO_APDO_TYPE_SHIFT) & PDO_APDO_TYPE_MASK; -+} -+ -+static inline unsigned int pdo_pps_apdo_min_voltage(u32 pdo) -+{ -+ return ((pdo >> PDO_PPS_APDO_MIN_VOLT_SHIFT) & -+ PDO_PPS_APDO_VOLT_MASK) * 100; -+} -+ -+static inline unsigned int pdo_pps_apdo_max_voltage(u32 pdo) -+{ -+ return ((pdo >> PDO_PPS_APDO_MAX_VOLT_SHIFT) & -+ PDO_PPS_APDO_VOLT_MASK) * 100; -+} -+ -+static inline unsigned int pdo_pps_apdo_max_current(u32 pdo) -+{ -+ return ((pdo >> PDO_PPS_APDO_MAX_CURR_SHIFT) & -+ PDO_PPS_APDO_CURR_MASK) * 50; -+} -+ -+/* RDO: Request Data Object */ -+#define RDO_OBJ_POS_SHIFT 28 -+#define RDO_OBJ_POS_MASK 0x7 -+#define RDO_GIVE_BACK BIT(27) /* Supports reduced operating current */ -+#define RDO_CAP_MISMATCH BIT(26) /* Not satisfied by source caps */ -+#define RDO_USB_COMM BIT(25) /* USB communications capable */ -+#define RDO_NO_SUSPEND BIT(24) /* USB Suspend not supported */ -+ -+#define RDO_PWR_MASK 0x3ff -+#define RDO_CURR_MASK 0x3ff -+ -+#define RDO_FIXED_OP_CURR_SHIFT 10 -+#define RDO_FIXED_MAX_CURR_SHIFT 0 -+ -+#define RDO_OBJ(idx) (((idx) & RDO_OBJ_POS_MASK) << RDO_OBJ_POS_SHIFT) -+ -+#define PDO_FIXED_OP_CURR(ma) ((((ma) / 10) & RDO_CURR_MASK) << RDO_FIXED_OP_CURR_SHIFT) -+#define PDO_FIXED_MAX_CURR(ma) ((((ma) / 10) & RDO_CURR_MASK) << RDO_FIXED_MAX_CURR_SHIFT) -+ -+#define RDO_FIXED(idx, op_ma, max_ma, flags) \ -+ (RDO_OBJ(idx) | (flags) | \ -+ PDO_FIXED_OP_CURR(op_ma) | PDO_FIXED_MAX_CURR(max_ma)) -+ -+#define RDO_BATT_OP_PWR_SHIFT 10 /* 250mW units */ -+#define RDO_BATT_MAX_PWR_SHIFT 0 /* 250mW units */ -+ -+#define RDO_BATT_OP_PWR(mw) ((((mw) / 250) & RDO_PWR_MASK) << RDO_BATT_OP_PWR_SHIFT) -+#define RDO_BATT_MAX_PWR(mw) ((((mw) / 250) & RDO_PWR_MASK) << RDO_BATT_MAX_PWR_SHIFT) -+ -+#define RDO_BATT(idx, op_mw, max_mw, flags) \ -+ (RDO_OBJ(idx) | (flags) | \ -+ RDO_BATT_OP_PWR(op_mw) | RDO_BATT_MAX_PWR(max_mw)) -+ -+#define RDO_PROG_VOLT_MASK 0x7ff -+#define RDO_PROG_CURR_MASK 0x7f -+ -+#define RDO_PROG_VOLT_SHIFT 9 -+#define RDO_PROG_CURR_SHIFT 0 -+ -+#define RDO_PROG_VOLT_MV_STEP 20 -+#define RDO_PROG_CURR_MA_STEP 50 -+ -+#define PDO_PROG_OUT_VOLT(mv) \ -+ ((((mv) / RDO_PROG_VOLT_MV_STEP) & RDO_PROG_VOLT_MASK) << RDO_PROG_VOLT_SHIFT) -+#define PDO_PROG_OP_CURR(ma) \ -+ ((((ma) / RDO_PROG_CURR_MA_STEP) & RDO_PROG_CURR_MASK) << RDO_PROG_CURR_SHIFT) -+ -+#define RDO_PROG(idx, out_mv, op_ma, flags) \ -+ (RDO_OBJ(idx) | (flags) | \ -+ PDO_PROG_OUT_VOLT(out_mv) | PDO_PROG_OP_CURR(op_ma)) -+ -+static inline unsigned int rdo_index(u32 rdo) -+{ -+ return (rdo >> RDO_OBJ_POS_SHIFT) & RDO_OBJ_POS_MASK; -+} -+ -+static inline unsigned int rdo_op_current(u32 rdo) -+{ -+ return ((rdo >> RDO_FIXED_OP_CURR_SHIFT) & RDO_CURR_MASK) * 10; -+} -+ -+static inline unsigned int rdo_max_current(u32 rdo) -+{ -+ return ((rdo >> RDO_FIXED_MAX_CURR_SHIFT) & -+ RDO_CURR_MASK) * 10; -+} -+ -+static inline unsigned int rdo_op_power(u32 rdo) -+{ -+ return ((rdo >> RDO_BATT_OP_PWR_SHIFT) & RDO_PWR_MASK) * 250; -+} -+ -+static inline unsigned int rdo_max_power(u32 rdo) -+{ -+ return ((rdo >> RDO_BATT_MAX_PWR_SHIFT) & RDO_PWR_MASK) * 250; -+} -+ -+/* Enter_USB Data Object */ -+#define EUDO_USB_MODE_MASK GENMASK(30, 28) -+#define EUDO_USB_MODE_SHIFT 28 -+#define EUDO_USB_MODE_USB2 0 -+#define EUDO_USB_MODE_USB3 1 -+#define EUDO_USB_MODE_USB4 2 -+#define EUDO_USB4_DRD BIT(26) -+#define EUDO_USB3_DRD BIT(25) -+#define EUDO_CABLE_SPEED_MASK GENMASK(23, 21) -+#define EUDO_CABLE_SPEED_SHIFT 21 -+#define EUDO_CABLE_SPEED_USB2 0 -+#define EUDO_CABLE_SPEED_USB3_GEN1 1 -+#define EUDO_CABLE_SPEED_USB4_GEN2 2 -+#define EUDO_CABLE_SPEED_USB4_GEN3 3 -+#define EUDO_CABLE_TYPE_MASK GENMASK(20, 19) -+#define EUDO_CABLE_TYPE_SHIFT 19 -+#define EUDO_CABLE_TYPE_PASSIVE 0 -+#define EUDO_CABLE_TYPE_RE_TIMER 1 -+#define EUDO_CABLE_TYPE_RE_DRIVER 2 -+#define EUDO_CABLE_TYPE_OPTICAL 3 -+#define EUDO_CABLE_CURRENT_MASK GENMASK(18, 17) -+#define EUDO_CABLE_CURRENT_SHIFT 17 -+#define EUDO_CABLE_CURRENT_NOTSUPP 0 -+#define EUDO_CABLE_CURRENT_3A 2 -+#define EUDO_CABLE_CURRENT_5A 3 -+#define EUDO_PCIE_SUPPORT BIT(16) -+#define EUDO_DP_SUPPORT BIT(15) -+#define EUDO_TBT_SUPPORT BIT(14) -+#define EUDO_HOST_PRESENT BIT(13) -+ -+/* USB PD timers and counters */ -+#define PD_T_NO_RESPONSE 5000 /* 4.5 - 5.5 seconds */ -+#define PD_T_DB_DETECT 10000 /* 10 - 15 seconds */ -+#define PD_T_SEND_SOURCE_CAP 150 /* 100 - 200 ms */ -+#define PD_T_SENDER_RESPONSE 60 /* 24 - 30 ms, relaxed */ -+#define PD_T_RECEIVER_RESPONSE 15 /* 15ms max */ -+#define PD_T_SOURCE_ACTIVITY 45 -+#define PD_T_SINK_ACTIVITY 135 -+#define PD_T_SINK_WAIT_CAP 310 /* 310 - 620 ms */ -+#define PD_T_PS_TRANSITION 500 -+#define PD_T_SRC_TRANSITION 35 -+#define PD_T_DRP_SNK 40 -+#define PD_T_DRP_SRC 30 -+#define PD_T_PS_SOURCE_OFF 920 -+#define PD_T_PS_SOURCE_ON 480 -+#define PD_T_PS_SOURCE_ON_PRS 450 /* 390 - 480ms */ -+#define PD_T_PS_HARD_RESET 30 -+#define PD_T_SRC_RECOVER 760 -+#define PD_T_SRC_RECOVER_MAX 1000 -+#define PD_T_SRC_TURN_ON 275 -+#define PD_T_SAFE_0V 650 -+#define PD_T_VCONN_SOURCE_ON 100 -+#define PD_T_SINK_REQUEST 100 /* 100 ms minimum */ -+#define PD_T_ERROR_RECOVERY 100 /* minimum 25 is insufficient */ -+#define PD_T_SRCSWAPSTDBY 625 /* Maximum of 650ms */ -+#define PD_T_NEWSRC 250 /* Maximum of 275ms */ -+#define PD_T_SWAP_SRC_START 20 /* Minimum of 20ms */ -+#define PD_T_BIST_CONT_MODE 50 /* 30 - 60 ms */ -+#define PD_T_SINK_TX 16 /* 16 - 20 ms */ -+#define PD_T_CHUNK_NOT_SUPP 42 /* 40 - 50 ms */ -+ -+#define PD_T_DRP_TRY 100 /* 75 - 150 ms */ -+#define PD_T_DRP_TRYWAIT 600 /* 400 - 800 ms */ -+ -+#define PD_T_CC_DEBOUNCE 200 /* 100 - 200 ms */ -+#define PD_T_PD_DEBOUNCE 20 /* 10 - 20 ms */ -+#define PD_T_TRY_CC_DEBOUNCE 15 /* 10 - 20 ms */ -+ -+#define PD_N_CAPS_COUNT (PD_T_NO_RESPONSE / PD_T_SEND_SOURCE_CAP) -+#define PD_N_HARD_RESET_COUNT 1 -+ -+#define PD_P_SNK_STDBY_MW 2500 /* 2500 mW */ -+ -+/* Time to wait for TCPC to complete transmit */ -+#define PD_T_TCPC_TX_TIMEOUT 100 /* in ms */ -+ -+#endif /* __LINUX_USB_PD_H */ -diff --git a/include/usb/tcpm.h b/include/usb/tcpm.h -new file mode 100644 -index 000000000000..4574a5175ddb ---- /dev/null -+++ b/include/usb/tcpm.h -@@ -0,0 +1,99 @@ -+/* SPDX-License-Identifier: GPL-2.0-or-later */ -+/* -+ * Copyright 2015-2017 Google, Inc -+ * Copyright 2024 Collabora -+ */ -+ -+#ifndef __LINUX_USB_TCPM_H -+#define __LINUX_USB_TCPM_H -+ -+#include -+#include -+#include "pd.h" -+ -+enum typec_orientation { -+ TYPEC_ORIENTATION_NONE, -+ TYPEC_ORIENTATION_NORMAL, -+ TYPEC_ORIENTATION_REVERSE, -+}; -+ -+enum typec_cc_status { -+ TYPEC_CC_OPEN, -+ TYPEC_CC_RA, -+ TYPEC_CC_RD, -+ TYPEC_CC_RP_DEF, -+ TYPEC_CC_RP_1_5, -+ TYPEC_CC_RP_3_0, -+}; -+ -+enum typec_cc_polarity { -+ TYPEC_POLARITY_CC1, -+ TYPEC_POLARITY_CC2, -+}; -+ -+enum tcpm_transmit_status { -+ TCPC_TX_SUCCESS = 0, -+ TCPC_TX_DISCARDED = 1, -+ TCPC_TX_FAILED = 2, -+}; -+ -+enum tcpm_transmit_type { -+ TCPC_TX_SOP = 0, -+ TCPC_TX_SOP_PRIME = 1, -+ TCPC_TX_SOP_PRIME_PRIME = 2, -+ TCPC_TX_SOP_DEBUG_PRIME = 3, -+ TCPC_TX_SOP_DEBUG_PRIME_PRIME = 4, -+ TCPC_TX_HARD_RESET = 5, -+ TCPC_TX_CABLE_RESET = 6, -+ TCPC_TX_BIST_MODE_2 = 7 -+}; -+ -+struct dm_tcpm_ops { -+ int (*get_connector_node)(struct udevice *dev, ofnode *connector_node); -+ int (*init)(struct udevice *dev); -+ int (*get_vbus)(struct udevice *dev); -+ int (*set_cc)(struct udevice *dev, enum typec_cc_status cc); -+ int (*get_cc)(struct udevice *dev, enum typec_cc_status *cc1, -+ enum typec_cc_status *cc2); -+ int (*set_polarity)(struct udevice *dev, -+ enum typec_cc_polarity polarity); -+ int (*set_vconn)(struct udevice *dev, bool on); -+ int (*set_vbus)(struct udevice *dev, bool on, bool charge); -+ int (*set_pd_rx)(struct udevice *dev, bool on); -+ int (*set_roles)(struct udevice *dev, bool attached, -+ enum typec_role role, enum typec_data_role data); -+ int (*start_toggling)(struct udevice *dev, -+ enum typec_port_type port_type, -+ enum typec_cc_status cc); -+ int (*pd_transmit)(struct udevice *dev, enum tcpm_transmit_type type, -+ const struct pd_message *msg, unsigned int negotiated_rev); -+ void (*poll_event)(struct udevice *dev); -+ int (*enter_low_power_mode)(struct udevice *dev, bool attached, bool pd_capable); -+}; -+ -+/* API for drivers */ -+void tcpm_vbus_change(struct udevice *dev); -+void tcpm_cc_change(struct udevice *dev); -+void tcpm_pd_receive(struct udevice *dev, const struct pd_message *msg); -+void tcpm_pd_transmit_complete(struct udevice *dev, -+ enum tcpm_transmit_status status); -+void tcpm_pd_hard_reset(struct udevice *dev); -+ -+/* API for boards */ -+extern const char * const typec_pd_rev_name[]; -+extern const char * const typec_orientation_name[]; -+extern const char * const typec_role_name[]; -+extern const char * const typec_data_role_name[]; -+extern const char * const typec_cc_status_name[]; -+ -+int tcpm_get(const char *name, struct udevice **devp); -+int tcpm_get_pd_rev(struct udevice *dev); -+int tcpm_get_current(struct udevice *dev); -+int tcpm_get_voltage(struct udevice *dev); -+enum typec_orientation tcpm_get_orientation(struct udevice *dev); -+enum typec_role tcpm_get_pwr_role(struct udevice *dev); -+enum typec_data_role tcpm_get_data_role(struct udevice *dev); -+bool tcpm_is_connected(struct udevice *dev); -+const char *tcpm_get_state(struct udevice *dev); -+ -+#endif /* __LINUX_USB_TCPM_H */ - -From patchwork Thu Sep 5 15:08:38 2024 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Sebastian Reichel -X-Patchwork-Id: 1981316 -X-Patchwork-Delegate: ykai007@gmail.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=collabora.com header.i=@collabora.com - header.a=rsa-sha256 header.s=mail header.b=d3aozlfW; - 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 4X030913Sdz1yXY - for ; Fri, 6 Sep 2024 01:18:17 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 4C12888CC2; - Thu, 5 Sep 2024 17:17:19 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=collabora.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=collabora.com header.i=@collabora.com - header.b="d3aozlfW"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id F400788CC2; Thu, 5 Sep 2024 17:17:17 +0200 (CEST) -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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no - version=3.4.2 -Received: from bali.collaboradmins.com (bali.collaboradmins.com - [IPv6:2a01:4f8:201:9162::2]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 4C6CB88CB8 - for ; Thu, 5 Sep 2024 17:17:13 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=collabora.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=sebastian.reichel@collabora.com -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; - s=mail; t=1725549433; - bh=fuHT4MalSjyQfKUjWdVq0nVnduu/AbWGeUChYJaCIeY=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=d3aozlfWwAG+KQBk/EM6vpvcIoIEEksahdSc+LhMi76PX8NNsu3zOQomQcug5dlmD - kqV/SDj3yszJBox46C1h2pfHNNLn7CD/u95G6BwH0A4cv33ZsWN3fEhJQKbkS9sUOB - hFzSWoKr7kCx/KDvBcjoS9Q5063JFZ6CJ1MF7XGgxT3H7WOMEybvC26Mp+j1/c1HNn - vWSjbh5lkW/dpx1unm3PUgMYNy2yrfANnaSFG7vKNtHyq0xHhs2qgOb4fATE80nKVY - RAY1F8b1JTYImazFA3NryRuA50InmvmHjpu9pyx8OQjy05tbnuScyau9SuyjO7usip - Q4lcqzzIB8AlQ== -Received: from jupiter.universe (dyndsl-091-248-189-231.ewe-ip-backbone.de - [91.248.189.231]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) (Authenticated sender: sre) - by bali.collaboradmins.com (Postfix) with ESMTPSA id ED3E617E0FD9; - Thu, 5 Sep 2024 17:17:12 +0200 (CEST) -Received: by jupiter.universe (Postfix, from userid 1000) - id A19EE4800F4; Thu, 05 Sep 2024 17:17:07 +0200 (CEST) -From: Sebastian Reichel -To: Marek Vasut , u-boot@lists.denx.de, - Jonas Karlman , Soeren Moch -Cc: Eugen Hristev , - Tim Harvey , Kever Yang , - Philipp Tomsich , Simon Glass , - Sebastian Reichel -Subject: [PATCH v6 2/6] usb: tcpm: fusb302: add driver -Date: Thu, 5 Sep 2024 17:08:38 +0200 -Message-ID: <20240905151707.59101-3-sebastian.reichel@collabora.com> -X-Mailer: git-send-email 2.45.2 -In-Reply-To: <20240905151707.59101-1-sebastian.reichel@collabora.com> -References: <20240905151707.59101-1-sebastian.reichel@collabora.com> -MIME-Version: 1.0 -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 - -Now that the TCPM framework exists we can introduce fusb302 -driver using it. This chip is a very common USB-C controller -chip with PD support, which can be found in the Radxa Rock 5B -among many other boards. Apart from Power Delivery, it also -handles detection of the cable orientation. That can be used -to control a mux for connecting the right USB3 lane pair to -the USB3 controller. - -The driver is originally from the Linux kernel, but has been -adapted to the requirements of U-Boot and its TCPM framework. - -Co-developed-by: Wang Jie -Signed-off-by: Wang Jie -Tested-by: Soeren Moch -Signed-off-by: Sebastian Reichel ---- - drivers/usb/tcpm/Kconfig | 8 + - drivers/usb/tcpm/Makefile | 1 + - drivers/usb/tcpm/fusb302.c | 1323 ++++++++++++++++++++++++++++++++ - drivers/usb/tcpm/fusb302_reg.h | 177 +++++ - 4 files changed, 1509 insertions(+) - create mode 100644 drivers/usb/tcpm/fusb302.c - create mode 100644 drivers/usb/tcpm/fusb302_reg.h - -diff --git a/drivers/usb/tcpm/Kconfig b/drivers/usb/tcpm/Kconfig -index 55bf8e202b90..9be4b496e82f 100644 ---- a/drivers/usb/tcpm/Kconfig -+++ b/drivers/usb/tcpm/Kconfig -@@ -6,3 +6,11 @@ config TYPEC_TCPM - help - The Type-C Port Controller Manager provides a USB PD and USB Type-C - state machine for use with Type-C Port Controllers. -+ -+config TYPEC_FUSB302 -+ tristate "Fairchild FUSB302 Type-C chip driver" -+ depends on DM && DM_I2C && TYPEC_TCPM -+ help -+ The Fairchild FUSB302 Type-C chip driver that works with -+ Type-C Port Controller Manager to provide USB PD and USB -+ Type-C functionalities. -diff --git a/drivers/usb/tcpm/Makefile b/drivers/usb/tcpm/Makefile -index a0f76436f3fd..668d33155bf1 100644 ---- a/drivers/usb/tcpm/Makefile -+++ b/drivers/usb/tcpm/Makefile -@@ -1,3 +1,4 @@ - # SPDX-License-Identifier: GPL-2.0 - - obj-$(CONFIG_TYPEC_TCPM) += tcpm.o tcpm-uclass.o -+obj-$(CONFIG_TYPEC_FUSB302) += fusb302.o -diff --git a/drivers/usb/tcpm/fusb302.c b/drivers/usb/tcpm/fusb302.c -new file mode 100644 -index 000000000000..fe93ff3d3397 ---- /dev/null -+++ b/drivers/usb/tcpm/fusb302.c -@@ -0,0 +1,1323 @@ -+// SPDX-License-Identifier: GPL-2.0+ -+/* -+ * Copyright 2016-2017 Google, Inc -+ * -+ * Fairchild FUSB302 Type-C Chip Driver -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include "fusb302_reg.h" -+ -+#define FUSB302_MAX_MSG_LEN 0x1F -+ -+enum toggling_mode { -+ TOGGLING_MODE_OFF, -+ TOGGLING_MODE_DRP, -+ TOGGLING_MODE_SNK, -+ TOGGLING_MODE_SRC, -+}; -+ -+enum src_current_status { -+ SRC_CURRENT_DEFAULT, -+ SRC_CURRENT_MEDIUM, -+ SRC_CURRENT_HIGH, -+}; -+ -+static const u8 ra_mda_value[] = { -+ [SRC_CURRENT_DEFAULT] = 4, /* 210mV */ -+ [SRC_CURRENT_MEDIUM] = 9, /* 420mV */ -+ [SRC_CURRENT_HIGH] = 18, /* 798mV */ -+}; -+ -+static const u8 rd_mda_value[] = { -+ [SRC_CURRENT_DEFAULT] = 38, /* 1638mV */ -+ [SRC_CURRENT_MEDIUM] = 38, /* 1638mV */ -+ [SRC_CURRENT_HIGH] = 61, /* 2604mV */ -+}; -+ -+struct fusb302_chip { -+ enum toggling_mode toggling_mode; -+ enum src_current_status src_current_status; -+ bool intr_togdone; -+ bool intr_bc_lvl; -+ bool intr_comp_chng; -+ -+ /* port status */ -+ bool vconn_on; -+ bool vbus_present; -+ enum typec_cc_polarity cc_polarity; -+ enum typec_cc_status cc1; -+ enum typec_cc_status cc2; -+}; -+ -+static int fusb302_i2c_write(struct udevice *dev, u8 address, u8 data) -+{ -+ int ret; -+ -+ ret = dm_i2c_write(dev, address, &data, 1); -+ if (ret) -+ dev_err(dev, "cannot write 0x%02x to 0x%02x, ret=%d\n", -+ data, address, ret); -+ -+ return ret; -+} -+ -+static int fusb302_i2c_block_write(struct udevice *dev, u8 address, -+ u8 length, const u8 *data) -+{ -+ int ret; -+ -+ if (!length) -+ return 0; -+ -+ ret = dm_i2c_write(dev, address, data, length); -+ if (ret) -+ dev_err(dev, "cannot block write 0x%02x, len=%d, ret=%d\n", -+ address, length, ret); -+ -+ return ret; -+} -+ -+static int fusb302_i2c_read(struct udevice *dev, u8 address, u8 *data) -+{ -+ int ret, retries; -+ -+ for (retries = 0; retries < 3; retries++) { -+ ret = dm_i2c_read(dev, address, data, 1); -+ if (ret == 0) -+ return ret; -+ dev_err(dev, "cannot read %02x, ret=%d\n", address, ret); -+ } -+ -+ return ret; -+} -+ -+static int fusb302_i2c_block_read(struct udevice *dev, u8 address, -+ u8 length, u8 *data) -+{ -+ int ret; -+ -+ if (!length) -+ return 0; -+ -+ ret = dm_i2c_read(dev, address, data, length); -+ if (ret) -+ dev_err(dev, "cannot block read 0x%02x, len=%d, ret=%d\n", -+ address, length, ret); -+ return ret; -+} -+ -+static int fusb302_i2c_mask_write(struct udevice *dev, u8 address, -+ u8 mask, u8 value) -+{ -+ int ret; -+ u8 data; -+ -+ ret = fusb302_i2c_read(dev, address, &data); -+ if (ret) -+ return ret; -+ data &= ~mask; -+ data |= value; -+ ret = fusb302_i2c_write(dev, address, data); -+ if (ret) -+ return ret; -+ -+ return ret; -+} -+ -+static int fusb302_i2c_set_bits(struct udevice *dev, u8 address, u8 set_bits) -+{ -+ return fusb302_i2c_mask_write(dev, address, 0x00, set_bits); -+} -+ -+static int fusb302_i2c_clear_bits(struct udevice *dev, u8 address, u8 clear_bits) -+{ -+ return fusb302_i2c_mask_write(dev, address, clear_bits, 0x00); -+} -+ -+static int fusb302_sw_reset(struct udevice *dev) -+{ -+ int ret = fusb302_i2c_write(dev, FUSB_REG_RESET, FUSB_REG_RESET_SW_RESET); -+ -+ if (ret) -+ dev_err(dev, "cannot sw reset the fusb302: %d\n", ret); -+ -+ return ret; -+} -+ -+static int fusb302_enable_tx_auto_retries(struct udevice *dev, u8 retry_count) -+{ -+ int ret; -+ -+ ret = fusb302_i2c_set_bits(dev, FUSB_REG_CONTROL3, retry_count | -+ FUSB_REG_CONTROL3_AUTO_RETRY); -+ -+ return ret; -+} -+ -+/* -+ * mask all interrupt on the chip -+ */ -+static int fusb302_mask_interrupt(struct udevice *dev) -+{ -+ int ret; -+ -+ ret = fusb302_i2c_write(dev, FUSB_REG_MASK, 0xFF); -+ if (ret) -+ return ret; -+ ret = fusb302_i2c_write(dev, FUSB_REG_MASKA, 0xFF); -+ if (ret) -+ return ret; -+ ret = fusb302_i2c_write(dev, FUSB_REG_MASKB, 0xFF); -+ if (ret) -+ return ret; -+ ret = fusb302_i2c_set_bits(dev, FUSB_REG_CONTROL0, -+ FUSB_REG_CONTROL0_INT_MASK); -+ return ret; -+} -+ -+/* -+ * initialize interrupt on the chip -+ * - unmasked interrupt: VBUS_OK -+ */ -+static int fusb302_init_interrupt(struct udevice *dev) -+{ -+ int ret; -+ -+ ret = fusb302_i2c_write(dev, FUSB_REG_MASK, -+ 0xFF & ~FUSB_REG_MASK_VBUSOK); -+ if (ret) -+ return ret; -+ ret = fusb302_i2c_write(dev, FUSB_REG_MASKA, 0xFF); -+ if (ret) -+ return ret; -+ ret = fusb302_i2c_write(dev, FUSB_REG_MASKB, 0xFF); -+ if (ret) -+ return ret; -+ ret = fusb302_i2c_clear_bits(dev, FUSB_REG_CONTROL0, -+ FUSB_REG_CONTROL0_INT_MASK); -+ return ret; -+} -+ -+static int fusb302_set_power_mode(struct udevice *dev, u8 power_mode) -+{ -+ int ret; -+ -+ ret = fusb302_i2c_write(dev, FUSB_REG_POWER, power_mode); -+ -+ return ret; -+} -+ -+static int fusb302_init(struct udevice *dev) -+{ -+ struct fusb302_chip *chip = dev_get_priv(dev); -+ int ret; -+ u8 data; -+ -+ ret = fusb302_sw_reset(dev); -+ if (ret) -+ return ret; -+ ret = fusb302_enable_tx_auto_retries(dev, FUSB_REG_CONTROL3_N_RETRIES_3); -+ if (ret) -+ return ret; -+ ret = fusb302_init_interrupt(dev); -+ if (ret) -+ return ret; -+ ret = fusb302_set_power_mode(dev, FUSB_REG_POWER_PWR_ALL); -+ if (ret) -+ return ret; -+ ret = fusb302_i2c_read(dev, FUSB_REG_STATUS0, &data); -+ if (ret) -+ return ret; -+ chip->vbus_present = !!(data & FUSB_REG_STATUS0_VBUSOK); -+ ret = fusb302_i2c_read(dev, FUSB_REG_DEVICE_ID, &data); -+ if (ret) -+ return ret; -+ dev_info(dev, "fusb302 device ID: 0x%02x\n", data); -+ -+ return ret; -+} -+ -+static int fusb302_get_vbus(struct udevice *dev) -+{ -+ struct fusb302_chip *chip = dev_get_priv(dev); -+ -+ return chip->vbus_present ? 1 : 0; -+} -+ -+static int fusb302_set_src_current(struct udevice *dev, -+ enum src_current_status status) -+{ -+ struct fusb302_chip *chip = dev_get_priv(dev); -+ int ret; -+ -+ chip->src_current_status = status; -+ switch (status) { -+ case SRC_CURRENT_DEFAULT: -+ ret = fusb302_i2c_mask_write(dev, FUSB_REG_CONTROL0, -+ FUSB_REG_CONTROL0_HOST_CUR_MASK, -+ FUSB_REG_CONTROL0_HOST_CUR_DEF); -+ break; -+ case SRC_CURRENT_MEDIUM: -+ ret = fusb302_i2c_mask_write(dev, FUSB_REG_CONTROL0, -+ FUSB_REG_CONTROL0_HOST_CUR_MASK, -+ FUSB_REG_CONTROL0_HOST_CUR_MED); -+ break; -+ case SRC_CURRENT_HIGH: -+ ret = fusb302_i2c_mask_write(dev, FUSB_REG_CONTROL0, -+ FUSB_REG_CONTROL0_HOST_CUR_MASK, -+ FUSB_REG_CONTROL0_HOST_CUR_HIGH); -+ break; -+ default: -+ ret = -EINVAL; -+ break; -+ } -+ -+ return ret; -+} -+ -+static int fusb302_set_toggling(struct udevice *dev, -+ enum toggling_mode mode) -+{ -+ struct fusb302_chip *chip = dev_get_priv(dev); -+ int ret; -+ -+ /* first disable toggling */ -+ ret = fusb302_i2c_clear_bits(dev, FUSB_REG_CONTROL2, -+ FUSB_REG_CONTROL2_TOGGLE); -+ if (ret) -+ return ret; -+ /* mask interrupts for SRC or SNK */ -+ ret = fusb302_i2c_set_bits(dev, FUSB_REG_MASK, -+ FUSB_REG_MASK_BC_LVL | -+ FUSB_REG_MASK_COMP_CHNG); -+ if (ret) -+ return ret; -+ chip->intr_bc_lvl = false; -+ chip->intr_comp_chng = false; -+ /* configure toggling mode: none/snk/src/drp */ -+ switch (mode) { -+ case TOGGLING_MODE_OFF: -+ ret = fusb302_i2c_mask_write(dev, FUSB_REG_CONTROL2, -+ FUSB_REG_CONTROL2_MODE_MASK, -+ FUSB_REG_CONTROL2_MODE_NONE); -+ break; -+ case TOGGLING_MODE_SNK: -+ ret = fusb302_i2c_mask_write(dev, FUSB_REG_CONTROL2, -+ FUSB_REG_CONTROL2_MODE_MASK, -+ FUSB_REG_CONTROL2_MODE_UFP); -+ break; -+ case TOGGLING_MODE_SRC: -+ ret = fusb302_i2c_mask_write(dev, FUSB_REG_CONTROL2, -+ FUSB_REG_CONTROL2_MODE_MASK, -+ FUSB_REG_CONTROL2_MODE_DFP); -+ break; -+ case TOGGLING_MODE_DRP: -+ ret = fusb302_i2c_mask_write(dev, FUSB_REG_CONTROL2, -+ FUSB_REG_CONTROL2_MODE_MASK, -+ FUSB_REG_CONTROL2_MODE_DRP); -+ break; -+ default: -+ break; -+ } -+ -+ if (ret) -+ return ret; -+ -+ if (mode == TOGGLING_MODE_OFF) { -+ /* mask TOGDONE interrupt */ -+ ret = fusb302_i2c_set_bits(dev, FUSB_REG_MASKA, -+ FUSB_REG_MASKA_TOGDONE); -+ if (ret) -+ return ret; -+ chip->intr_togdone = false; -+ } else { -+ /* Datasheet says vconn MUST be off when toggling */ -+ if (chip->vconn_on) -+ dev_warn(dev, "Vconn is on during toggle start\n"); -+ /* unmask TOGDONE interrupt */ -+ ret = fusb302_i2c_clear_bits(dev, FUSB_REG_MASKA, -+ FUSB_REG_MASKA_TOGDONE); -+ if (ret) -+ return ret; -+ chip->intr_togdone = true; -+ /* start toggling */ -+ ret = fusb302_i2c_set_bits(dev, FUSB_REG_CONTROL2, -+ FUSB_REG_CONTROL2_TOGGLE); -+ if (ret) -+ return ret; -+ /* during toggling, consider cc as Open */ -+ chip->cc1 = TYPEC_CC_OPEN; -+ chip->cc2 = TYPEC_CC_OPEN; -+ } -+ chip->toggling_mode = mode; -+ -+ return ret; -+} -+ -+static const enum src_current_status cc_src_current[] = { -+ [TYPEC_CC_OPEN] = SRC_CURRENT_DEFAULT, -+ [TYPEC_CC_RA] = SRC_CURRENT_DEFAULT, -+ [TYPEC_CC_RD] = SRC_CURRENT_DEFAULT, -+ [TYPEC_CC_RP_DEF] = SRC_CURRENT_DEFAULT, -+ [TYPEC_CC_RP_1_5] = SRC_CURRENT_MEDIUM, -+ [TYPEC_CC_RP_3_0] = SRC_CURRENT_HIGH, -+}; -+ -+static int fusb302_set_cc(struct udevice *dev, enum typec_cc_status cc) -+{ -+ struct fusb302_chip *chip = dev_get_priv(dev); -+ const u8 switches0_mask = FUSB_REG_SWITCHES0_CC1_PU_EN | -+ FUSB_REG_SWITCHES0_CC2_PU_EN | -+ FUSB_REG_SWITCHES0_CC1_PD_EN | -+ FUSB_REG_SWITCHES0_CC2_PD_EN; -+ u8 rd_mda, switches0_data = 0x00; -+ int ret; -+ -+ switch (cc) { -+ case TYPEC_CC_OPEN: -+ break; -+ case TYPEC_CC_RD: -+ switches0_data |= FUSB_REG_SWITCHES0_CC1_PD_EN | -+ FUSB_REG_SWITCHES0_CC2_PD_EN; -+ break; -+ case TYPEC_CC_RP_DEF: -+ case TYPEC_CC_RP_1_5: -+ case TYPEC_CC_RP_3_0: -+ switches0_data |= (chip->cc_polarity == TYPEC_POLARITY_CC1) ? -+ FUSB_REG_SWITCHES0_CC1_PU_EN : -+ FUSB_REG_SWITCHES0_CC2_PU_EN; -+ break; -+ default: -+ dev_err(dev, "unsupported CC value: %s\n", -+ typec_cc_status_name[cc]); -+ ret = -EINVAL; -+ goto done; -+ } -+ -+ ret = fusb302_set_toggling(dev, TOGGLING_MODE_OFF); -+ if (ret) { -+ dev_err(dev, "cannot set toggling mode: %d\n", ret); -+ goto done; -+ } -+ -+ ret = fusb302_i2c_mask_write(dev, FUSB_REG_SWITCHES0, -+ switches0_mask, switches0_data); -+ if (ret) { -+ dev_err(dev, "cannot set pull-up/-down: %d\n", ret); -+ goto done; -+ } -+ /* reset the cc status */ -+ chip->cc1 = TYPEC_CC_OPEN; -+ chip->cc2 = TYPEC_CC_OPEN; -+ -+ /* adjust current for SRC */ -+ ret = fusb302_set_src_current(dev, cc_src_current[cc]); -+ if (ret) { -+ dev_err(dev, "cannot set src current %s: %d\n", -+ typec_cc_status_name[cc], ret); -+ goto done; -+ } -+ -+ /* enable/disable interrupts, BC_LVL for SNK and COMP_CHNG for SRC */ -+ switch (cc) { -+ case TYPEC_CC_RP_DEF: -+ case TYPEC_CC_RP_1_5: -+ case TYPEC_CC_RP_3_0: -+ rd_mda = rd_mda_value[cc_src_current[cc]]; -+ ret = fusb302_i2c_write(dev, FUSB_REG_MEASURE, rd_mda); -+ if (ret) { -+ dev_err(dev, "cannot set SRC measure value: %d\n", ret); -+ goto done; -+ } -+ ret = fusb302_i2c_mask_write(dev, FUSB_REG_MASK, -+ FUSB_REG_MASK_BC_LVL | -+ FUSB_REG_MASK_COMP_CHNG, -+ FUSB_REG_MASK_BC_LVL); -+ if (ret) { -+ dev_err(dev, "cannot set SRC irq: %d\n", ret); -+ goto done; -+ } -+ chip->intr_comp_chng = true; -+ break; -+ case TYPEC_CC_RD: -+ ret = fusb302_i2c_mask_write(dev, FUSB_REG_MASK, -+ FUSB_REG_MASK_BC_LVL | -+ FUSB_REG_MASK_COMP_CHNG, -+ FUSB_REG_MASK_COMP_CHNG); -+ if (ret) { -+ dev_err(dev, "cannot set SRC irq: %d\n", ret); -+ goto done; -+ } -+ chip->intr_bc_lvl = true; -+ break; -+ default: -+ break; -+ } -+done: -+ return ret; -+} -+ -+static int fusb302_get_cc(struct udevice *dev, enum typec_cc_status *cc1, -+ enum typec_cc_status *cc2) -+{ -+ struct fusb302_chip *chip = dev_get_priv(dev); -+ -+ *cc1 = chip->cc1; -+ *cc2 = chip->cc2; -+ dev_dbg(dev, "get cc1 = %s, cc2 = %s\n", typec_cc_status_name[*cc1], -+ typec_cc_status_name[*cc2]); -+ -+ return 0; -+} -+ -+static int fusb302_set_vconn(struct udevice *dev, bool on) -+{ -+ struct fusb302_chip *chip = dev_get_priv(dev); -+ int ret; -+ u8 switches0_data = 0x00; -+ u8 switches0_mask = FUSB_REG_SWITCHES0_VCONN_CC1 | -+ FUSB_REG_SWITCHES0_VCONN_CC2; -+ -+ if (chip->vconn_on == on) { -+ ret = 0; -+ dev_dbg(dev, "vconn is already %s\n", on ? "on" : "off"); -+ goto done; -+ } -+ if (on) { -+ switches0_data = (chip->cc_polarity == TYPEC_POLARITY_CC1) ? -+ FUSB_REG_SWITCHES0_VCONN_CC2 : -+ FUSB_REG_SWITCHES0_VCONN_CC1; -+ } -+ ret = fusb302_i2c_mask_write(dev, FUSB_REG_SWITCHES0, -+ switches0_mask, switches0_data); -+ if (ret) -+ goto done; -+ dev_dbg(dev, "set vconn = %s\n", on ? "on" : "off"); -+done: -+ return ret; -+} -+ -+static int fusb302_set_vbus(struct udevice *dev, bool on, bool charge) -+{ -+ return 0; -+} -+ -+static int fusb302_pd_tx_flush(struct udevice *dev) -+{ -+ return fusb302_i2c_set_bits(dev, FUSB_REG_CONTROL0, -+ FUSB_REG_CONTROL0_TX_FLUSH); -+} -+ -+static int fusb302_pd_rx_flush(struct udevice *dev) -+{ -+ return fusb302_i2c_set_bits(dev, FUSB_REG_CONTROL1, -+ FUSB_REG_CONTROL1_RX_FLUSH); -+} -+ -+static int fusb302_pd_set_auto_goodcrc(struct udevice *dev, bool on) -+{ -+ if (on) -+ return fusb302_i2c_set_bits(dev, FUSB_REG_SWITCHES1, -+ FUSB_REG_SWITCHES1_AUTO_GCRC); -+ return fusb302_i2c_clear_bits(dev, FUSB_REG_SWITCHES1, -+ FUSB_REG_SWITCHES1_AUTO_GCRC); -+} -+ -+static int fusb302_pd_set_interrupts(struct udevice *dev, bool on) -+{ -+ int ret; -+ u8 mask_interrupts = FUSB_REG_MASK_COLLISION; -+ u8 maska_interrupts = FUSB_REG_MASKA_RETRYFAIL | -+ FUSB_REG_MASKA_HARDSENT | -+ FUSB_REG_MASKA_TX_SUCCESS | -+ FUSB_REG_MASKA_HARDRESET; -+ u8 maskb_interrupts = FUSB_REG_MASKB_GCRCSENT; -+ -+ ret = on ? -+ fusb302_i2c_clear_bits(dev, FUSB_REG_MASK, mask_interrupts) : -+ fusb302_i2c_set_bits(dev, FUSB_REG_MASK, mask_interrupts); -+ if (ret) -+ return ret; -+ ret = on ? -+ fusb302_i2c_clear_bits(dev, FUSB_REG_MASKA, maska_interrupts) : -+ fusb302_i2c_set_bits(dev, FUSB_REG_MASKA, maska_interrupts); -+ if (ret) -+ return ret; -+ ret = on ? -+ fusb302_i2c_clear_bits(dev, FUSB_REG_MASKB, maskb_interrupts) : -+ fusb302_i2c_set_bits(dev, FUSB_REG_MASKB, maskb_interrupts); -+ return ret; -+} -+ -+static int fusb302_set_pd_rx(struct udevice *dev, bool on) -+{ -+ int ret; -+ -+ ret = fusb302_pd_rx_flush(dev); -+ if (ret) { -+ dev_err(dev, "cannot flush pd rx buffer: %d\n", ret); -+ goto done; -+ } -+ ret = fusb302_pd_tx_flush(dev); -+ if (ret) { -+ dev_err(dev, "cannot flush pd tx buffer: %d\n", ret); -+ goto done; -+ } -+ ret = fusb302_pd_set_auto_goodcrc(dev, on); -+ if (ret) { -+ dev_err(dev, "cannot turn %s auto GoodCRC: %d\n", -+ on ? "on" : "off", ret); -+ goto done; -+ } -+ ret = fusb302_pd_set_interrupts(dev, on); -+ if (ret) { -+ dev_err(dev, "cannot turn %s pd interrupts: %d\n", -+ on ? "on" : "off", ret); -+ goto done; -+ } -+ dev_dbg(dev, "set pd RX %s\n", on ? "on" : "off"); -+done: -+ return ret; -+} -+ -+static int fusb302_set_roles(struct udevice *dev, bool attached, -+ enum typec_role pwr, enum typec_data_role data) -+{ -+ int ret; -+ u8 switches1_mask = FUSB_REG_SWITCHES1_POWERROLE | -+ FUSB_REG_SWITCHES1_DATAROLE; -+ u8 switches1_data = 0x00; -+ -+ if (pwr == TYPEC_SOURCE) -+ switches1_data |= FUSB_REG_SWITCHES1_POWERROLE; -+ if (data == TYPEC_HOST) -+ switches1_data |= FUSB_REG_SWITCHES1_DATAROLE; -+ ret = fusb302_i2c_mask_write(dev, FUSB_REG_SWITCHES1, -+ switches1_mask, switches1_data); -+ if (ret) { -+ dev_err(dev, "unable to set pd header %s, %s, ret=%d\n", -+ typec_role_name[pwr], typec_data_role_name[data], ret); -+ goto done; -+ } -+ dev_dbg(dev, "pd header : %s, %s\n", typec_role_name[pwr], -+ typec_data_role_name[data]); -+done: -+ -+ return ret; -+} -+ -+static int fusb302_start_toggling(struct udevice *dev, -+ enum typec_port_type port_type, -+ enum typec_cc_status cc) -+{ -+ enum toggling_mode mode = TOGGLING_MODE_OFF; -+ int ret; -+ -+ switch (port_type) { -+ case TYPEC_PORT_SRC: -+ mode = TOGGLING_MODE_SRC; -+ break; -+ case TYPEC_PORT_SNK: -+ mode = TOGGLING_MODE_SNK; -+ break; -+ case TYPEC_PORT_DRP: -+ mode = TOGGLING_MODE_DRP; -+ break; -+ } -+ -+ ret = fusb302_set_src_current(dev, cc_src_current[cc]); -+ if (ret) { -+ dev_err(dev, "unable to set src current %s, ret=%d", -+ typec_cc_status_name[cc], ret); -+ goto done; -+ } -+ ret = fusb302_set_toggling(dev, mode); -+ if (ret) { -+ dev_err(dev, "unable to start drp toggling: %d\n", ret); -+ goto done; -+ } -+ dev_info(dev, "fusb302 start drp toggling\n"); -+done: -+ -+ return ret; -+} -+ -+static int fusb302_pd_send_message(struct udevice *dev, -+ const struct pd_message *msg) -+{ -+ int ret; -+ /* SOP tokens */ -+ u8 buf[40] = {FUSB302_TKN_SYNC1, FUSB302_TKN_SYNC1, FUSB302_TKN_SYNC1, -+ FUSB302_TKN_SYNC2}; -+ u8 pos = 4; -+ int len; -+ -+ len = pd_header_cnt_le(msg->header) * 4; -+ /* plug 2 for header */ -+ len += 2; -+ if (len > FUSB302_MAX_MSG_LEN) { -+ dev_err(dev, "PD message too long %d (incl. header)", len); -+ return -EINVAL; -+ } -+ /* packsym tells the FUSB302 chip that the next X bytes are payload */ -+ buf[pos++] = FUSB302_TKN_PACKSYM | (len & FUSB302_MAX_MSG_LEN); -+ memcpy(&buf[pos], &msg->header, sizeof(msg->header)); -+ pos += sizeof(msg->header); -+ -+ len -= 2; -+ memcpy(&buf[pos], msg->payload, len); -+ pos += len; -+ -+ /* CRC */ -+ buf[pos++] = FUSB302_TKN_JAMCRC; -+ /* EOP */ -+ buf[pos++] = FUSB302_TKN_EOP; -+ /* turn tx off after sending message */ -+ buf[pos++] = FUSB302_TKN_TXOFF; -+ /* start transmission */ -+ buf[pos++] = FUSB302_TKN_TXON; -+ -+ ret = fusb302_i2c_block_write(dev, FUSB_REG_FIFOS, pos, buf); -+ if (ret) -+ return ret; -+ dev_dbg(dev, "Send PD message (header=0x%x len=%d)\n", msg->header, len); -+ -+ return ret; -+} -+ -+static int fusb302_pd_send_hardreset(struct udevice *dev) -+{ -+ return fusb302_i2c_set_bits(dev, FUSB_REG_CONTROL3, -+ FUSB_REG_CONTROL3_SEND_HARDRESET); -+} -+ -+static const char * const transmit_type_name[] = { -+ [TCPC_TX_SOP] = "SOP", -+ [TCPC_TX_SOP_PRIME] = "SOP'", -+ [TCPC_TX_SOP_PRIME_PRIME] = "SOP''", -+ [TCPC_TX_SOP_DEBUG_PRIME] = "DEBUG'", -+ [TCPC_TX_SOP_DEBUG_PRIME_PRIME] = "DEBUG''", -+ [TCPC_TX_HARD_RESET] = "HARD_RESET", -+ [TCPC_TX_CABLE_RESET] = "CABLE_RESET", -+ [TCPC_TX_BIST_MODE_2] = "BIST_MODE_2", -+}; -+ -+static int fusb302_pd_transmit(struct udevice *dev, enum tcpm_transmit_type type, -+ const struct pd_message *msg, unsigned int negotiated_rev) -+{ -+ int ret; -+ -+ switch (type) { -+ case TCPC_TX_SOP: -+ /* nRetryCount 3 in P2.0 spec, whereas 2 in PD3.0 spec */ -+ ret = fusb302_enable_tx_auto_retries(dev, negotiated_rev > PD_REV20 ? -+ FUSB_REG_CONTROL3_N_RETRIES_2 : -+ FUSB_REG_CONTROL3_N_RETRIES_3); -+ if (ret) -+ dev_err(dev, "cannot update retry count: %d\n", ret); -+ -+ ret = fusb302_pd_send_message(dev, msg); -+ if (ret) -+ dev_err(dev, "cannot send PD message: %d\n", ret); -+ break; -+ case TCPC_TX_HARD_RESET: -+ ret = fusb302_pd_send_hardreset(dev); -+ if (ret) -+ dev_err(dev, "cannot send hardreset: %d\n", ret); -+ break; -+ default: -+ dev_err(dev, "type %s not supported", transmit_type_name[type]); -+ ret = -EINVAL; -+ } -+ -+ return ret; -+} -+ -+static enum typec_cc_status fusb302_bc_lvl_to_cc(u8 bc_lvl) -+{ -+ if (bc_lvl == FUSB_REG_STATUS0_BC_LVL_1230_MAX) -+ return TYPEC_CC_RP_3_0; -+ if (bc_lvl == FUSB_REG_STATUS0_BC_LVL_600_1230) -+ return TYPEC_CC_RP_1_5; -+ if (bc_lvl == FUSB_REG_STATUS0_BC_LVL_200_600) -+ return TYPEC_CC_RP_DEF; -+ return TYPEC_CC_OPEN; -+} -+ -+static void fusb302_bc_lvl_handler(struct udevice *dev) -+{ -+ struct fusb302_chip *chip = dev_get_priv(dev); -+ enum typec_cc_status cc_status; -+ u8 status0, bc_lvl; -+ int ret; -+ -+ if (!chip->intr_bc_lvl) { -+ dev_err(dev, "BC_LVL interrupt is turned off, abort\n"); -+ goto done; -+ } -+ ret = fusb302_i2c_read(dev, FUSB_REG_STATUS0, &status0); -+ if (ret) -+ goto done; -+ -+ dev_dbg(dev, "BC_LVL handler, status0 = 0x%02x\n", status0); -+ if (status0 & FUSB_REG_STATUS0_ACTIVITY) -+ dev_info(dev, "CC activities detected, delay handling\n"); -+ bc_lvl = status0 & FUSB_REG_STATUS0_BC_LVL_MASK; -+ cc_status = fusb302_bc_lvl_to_cc(bc_lvl); -+ if (chip->cc_polarity == TYPEC_POLARITY_CC1) { -+ if (chip->cc1 != cc_status) { -+ dev_dbg(dev, "cc1: %s -> %s\n", -+ typec_cc_status_name[chip->cc1], -+ typec_cc_status_name[cc_status]); -+ chip->cc1 = cc_status; -+ tcpm_cc_change(dev); -+ } -+ } else { -+ if (chip->cc2 != cc_status) { -+ dev_dbg(dev, "cc2: %s -> %s\n", -+ typec_cc_status_name[chip->cc2], -+ typec_cc_status_name[cc_status]); -+ chip->cc2 = cc_status; -+ tcpm_cc_change(dev); -+ } -+ } -+ -+done: -+ return; -+} -+ -+static int fusb302_enter_low_power_mode(struct udevice *dev, -+ bool attached, bool pd_capable) -+{ -+ unsigned int reg; -+ int ret; -+ -+ ret = fusb302_mask_interrupt(dev); -+ if (ret) -+ return ret; -+ if (attached && pd_capable) -+ reg = FUSB_REG_POWER_PWR_MEDIUM; -+ else if (attached) -+ reg = FUSB_REG_POWER_PWR_LOW; -+ else -+ reg = 0; -+ -+ return fusb302_set_power_mode(dev, reg); -+} -+ -+static const char * const cc_polarity_name[] = { -+ [TYPEC_POLARITY_CC1] = "Polarity_CC1", -+ [TYPEC_POLARITY_CC2] = "Polarity_CC2", -+}; -+ -+static int fusb302_set_cc_polarity_and_pull(struct udevice *dev, -+ enum typec_cc_polarity cc_polarity, -+ bool pull_up, bool pull_down) -+{ -+ struct fusb302_chip *chip = dev_get_priv(dev); -+ int ret; -+ u8 switches0_data = 0x00; -+ u8 switches1_mask = FUSB_REG_SWITCHES1_TXCC1_EN | -+ FUSB_REG_SWITCHES1_TXCC2_EN; -+ u8 switches1_data = 0x00; -+ -+ if (pull_down) -+ switches0_data |= FUSB_REG_SWITCHES0_CC1_PD_EN | -+ FUSB_REG_SWITCHES0_CC2_PD_EN; -+ -+ if (cc_polarity == TYPEC_POLARITY_CC1) { -+ switches0_data |= FUSB_REG_SWITCHES0_MEAS_CC1; -+ if (chip->vconn_on) -+ switches0_data |= FUSB_REG_SWITCHES0_VCONN_CC2; -+ if (pull_up) -+ switches0_data |= FUSB_REG_SWITCHES0_CC1_PU_EN; -+ switches1_data = FUSB_REG_SWITCHES1_TXCC1_EN; -+ } else { -+ switches0_data |= FUSB_REG_SWITCHES0_MEAS_CC2; -+ if (chip->vconn_on) -+ switches0_data |= FUSB_REG_SWITCHES0_VCONN_CC1; -+ if (pull_up) -+ switches0_data |= FUSB_REG_SWITCHES0_CC2_PU_EN; -+ switches1_data = FUSB_REG_SWITCHES1_TXCC2_EN; -+ } -+ ret = fusb302_i2c_write(dev, FUSB_REG_SWITCHES0, switches0_data); -+ if (ret) -+ return ret; -+ ret = fusb302_i2c_mask_write(dev, FUSB_REG_SWITCHES1, -+ switches1_mask, switches1_data); -+ if (ret) -+ return ret; -+ chip->cc_polarity = cc_polarity; -+ -+ return ret; -+} -+ -+static int fusb302_handle_togdone_snk(struct udevice *dev, -+ u8 togdone_result) -+{ -+ struct fusb302_chip *chip = dev_get_priv(dev); -+ int ret; -+ u8 status0; -+ u8 bc_lvl; -+ enum typec_cc_polarity cc_polarity; -+ enum typec_cc_status cc_status_active, cc1, cc2; -+ -+ /* set polarity and pull_up, pull_down */ -+ cc_polarity = (togdone_result == FUSB_REG_STATUS1A_TOGSS_SNK1) ? -+ TYPEC_POLARITY_CC1 : TYPEC_POLARITY_CC2; -+ ret = fusb302_set_cc_polarity_and_pull(dev, cc_polarity, false, true); -+ if (ret) { -+ dev_err(dev, "cannot set cc polarity %s, ret = %d\n", -+ cc_polarity_name[cc_polarity], ret); -+ return ret; -+ } -+ /* fusb302_set_cc_polarity() has set the correct measure block */ -+ ret = fusb302_i2c_read(dev, FUSB_REG_STATUS0, &status0); -+ if (ret < 0) -+ return ret; -+ bc_lvl = status0 & FUSB_REG_STATUS0_BC_LVL_MASK; -+ cc_status_active = fusb302_bc_lvl_to_cc(bc_lvl); -+ /* restart toggling if the cc status on the active line is OPEN */ -+ if (cc_status_active == TYPEC_CC_OPEN) { -+ dev_info(dev, "restart toggling as CC_OPEN detected\n"); -+ ret = fusb302_set_toggling(dev, chip->toggling_mode); -+ return ret; -+ } -+ /* update tcpm with the new cc value */ -+ cc1 = (cc_polarity == TYPEC_POLARITY_CC1) ? -+ cc_status_active : TYPEC_CC_OPEN; -+ cc2 = (cc_polarity == TYPEC_POLARITY_CC2) ? -+ cc_status_active : TYPEC_CC_OPEN; -+ if (chip->cc1 != cc1 || chip->cc2 != cc2) { -+ chip->cc1 = cc1; -+ chip->cc2 = cc2; -+ tcpm_cc_change(dev); -+ } -+ /* turn off toggling */ -+ ret = fusb302_set_toggling(dev, TOGGLING_MODE_OFF); -+ if (ret) { -+ dev_err(dev, "cannot set toggling mode off, ret=%d\n", ret); -+ return ret; -+ } -+ /* unmask bc_lvl interrupt */ -+ ret = fusb302_i2c_clear_bits(dev, FUSB_REG_MASK, FUSB_REG_MASK_BC_LVL); -+ if (ret) { -+ dev_err(dev, "cannot unmask bc_lcl irq, ret=%d\n", ret); -+ return ret; -+ } -+ chip->intr_bc_lvl = true; -+ dev_dbg(dev, "detected cc1=%s, cc2=%s\n", -+ typec_cc_status_name[cc1], -+ typec_cc_status_name[cc2]); -+ -+ return ret; -+} -+ -+/* On error returns < 0, otherwise a typec_cc_status value */ -+static int fusb302_get_src_cc_status(struct udevice *dev, -+ enum typec_cc_polarity cc_polarity, -+ enum typec_cc_status *cc) -+{ -+ struct fusb302_chip *chip = dev_get_priv(dev); -+ u8 ra_mda = ra_mda_value[chip->src_current_status]; -+ u8 rd_mda = rd_mda_value[chip->src_current_status]; -+ u8 switches0_data, status0; -+ int ret; -+ -+ /* Step 1: Set switches so that we measure the right CC pin */ -+ switches0_data = (cc_polarity == TYPEC_POLARITY_CC1) ? -+ FUSB_REG_SWITCHES0_CC1_PU_EN | FUSB_REG_SWITCHES0_MEAS_CC1 : -+ FUSB_REG_SWITCHES0_CC2_PU_EN | FUSB_REG_SWITCHES0_MEAS_CC2; -+ ret = fusb302_i2c_write(dev, FUSB_REG_SWITCHES0, switches0_data); -+ if (ret < 0) -+ return ret; -+ -+ fusb302_i2c_read(dev, FUSB_REG_SWITCHES0, &status0); -+ dev_dbg(dev, "get_src_cc_status switches: 0x%0x", status0); -+ -+ /* Step 2: Set compararator volt to differentiate between Open and Rd */ -+ ret = fusb302_i2c_write(dev, FUSB_REG_MEASURE, rd_mda); -+ if (ret) -+ return ret; -+ -+ udelay(100); -+ ret = fusb302_i2c_read(dev, FUSB_REG_STATUS0, &status0); -+ if (ret) -+ return ret; -+ -+ dev_dbg(dev, "get_src_cc_status rd_mda status0: 0x%0x", status0); -+ if (status0 & FUSB_REG_STATUS0_COMP) { -+ *cc = TYPEC_CC_OPEN; -+ return 0; -+ } -+ -+ /* Step 3: Set compararator input to differentiate between Rd and Ra. */ -+ ret = fusb302_i2c_write(dev, FUSB_REG_MEASURE, ra_mda); -+ if (ret) -+ return ret; -+ -+ udelay(100); -+ ret = fusb302_i2c_read(dev, FUSB_REG_STATUS0, &status0); -+ if (ret) -+ return ret; -+ -+ dev_dbg(dev, "get_src_cc_status ra_mda status0: 0x%0x", status0); -+ if (status0 & FUSB_REG_STATUS0_COMP) -+ *cc = TYPEC_CC_RD; -+ else -+ *cc = TYPEC_CC_RA; -+ -+ return 0; -+} -+ -+static int fusb302_handle_togdone_src(struct udevice *dev, -+ u8 togdone_result) -+{ -+ /* -+ * - set polarity (measure cc, vconn, tx) -+ * - set pull_up, pull_down -+ * - set cc1, cc2, and update to tcpm state machine -+ * - set I_COMP interrupt on -+ */ -+ struct fusb302_chip *chip = dev_get_priv(dev); -+ u8 rd_mda = rd_mda_value[chip->src_current_status]; -+ enum toggling_mode toggling_mode = chip->toggling_mode; -+ enum typec_cc_polarity cc_polarity; -+ enum typec_cc_status cc1, cc2; -+ int ret; -+ -+ /* -+ * The toggle-engine will stop in a src state if it sees either Ra or -+ * Rd. Determine the status for both CC pins, starting with the one -+ * where toggling stopped, as that is where the switches point now. -+ */ -+ if (togdone_result == FUSB_REG_STATUS1A_TOGSS_SRC1) -+ ret = fusb302_get_src_cc_status(dev, TYPEC_POLARITY_CC1, &cc1); -+ else -+ ret = fusb302_get_src_cc_status(dev, TYPEC_POLARITY_CC2, &cc2); -+ if (ret) -+ return ret; -+ /* we must turn off toggling before we can measure the other pin */ -+ ret = fusb302_set_toggling(dev, TOGGLING_MODE_OFF); -+ if (ret) { -+ dev_err(dev, "cannot set toggling mode off, ret=%d\n", ret); -+ return ret; -+ } -+ /* get the status of the other pin */ -+ if (togdone_result == FUSB_REG_STATUS1A_TOGSS_SRC1) -+ ret = fusb302_get_src_cc_status(dev, TYPEC_POLARITY_CC2, &cc2); -+ else -+ ret = fusb302_get_src_cc_status(dev, TYPEC_POLARITY_CC1, &cc1); -+ if (ret) -+ return ret; -+ -+ /* determine polarity based on the status of both pins */ -+ if (cc1 == TYPEC_CC_RD && (cc2 == TYPEC_CC_OPEN || cc2 == TYPEC_CC_RA)) { -+ cc_polarity = TYPEC_POLARITY_CC1; -+ } else if (cc2 == TYPEC_CC_RD && -+ (cc1 == TYPEC_CC_OPEN || cc1 == TYPEC_CC_RA)) { -+ cc_polarity = TYPEC_POLARITY_CC2; -+ } else { -+ dev_err(dev, "unexpected CC status cc1=%s, cc2=%s, restarting toggling\n", -+ typec_cc_status_name[cc1], -+ typec_cc_status_name[cc2]); -+ return fusb302_set_toggling(dev, toggling_mode); -+ } -+ /* set polarity and pull_up, pull_down */ -+ ret = fusb302_set_cc_polarity_and_pull(dev, cc_polarity, true, false); -+ if (ret < 0) { -+ dev_err(dev, "cannot set cc polarity %s, ret=%d\n", -+ cc_polarity_name[cc_polarity], ret); -+ return ret; -+ } -+ /* update tcpm with the new cc value */ -+ if (chip->cc1 != cc1 || chip->cc2 != cc2) { -+ chip->cc1 = cc1; -+ chip->cc2 = cc2; -+ tcpm_cc_change(dev); -+ } -+ /* set MDAC to Rd threshold, and unmask I_COMP for unplug detection */ -+ ret = fusb302_i2c_write(dev, FUSB_REG_MEASURE, rd_mda); -+ if (ret) -+ return ret; -+ /* unmask comp_chng interrupt */ -+ ret = fusb302_i2c_clear_bits(dev, FUSB_REG_MASK, -+ FUSB_REG_MASK_COMP_CHNG); -+ if (ret) { -+ dev_err(dev, "cannot unmask comp_chng irq, ret=%d\n", ret); -+ return ret; -+ } -+ chip->intr_comp_chng = true; -+ dev_dbg(dev, "detected cc1=%s, cc2=%s\n", -+ typec_cc_status_name[cc1], -+ typec_cc_status_name[cc2]); -+ -+ return ret; -+} -+ -+static int fusb302_handle_togdone(struct udevice *dev) -+{ -+ struct fusb302_chip *chip = dev_get_priv(dev); -+ u8 togdone_result, status1a; -+ int ret; -+ -+ ret = fusb302_i2c_read(dev, FUSB_REG_STATUS1A, &status1a); -+ if (ret < 0) -+ return ret; -+ togdone_result = (status1a >> FUSB_REG_STATUS1A_TOGSS_POS) & -+ FUSB_REG_STATUS1A_TOGSS_MASK; -+ switch (togdone_result) { -+ case FUSB_REG_STATUS1A_TOGSS_SNK1: -+ case FUSB_REG_STATUS1A_TOGSS_SNK2: -+ return fusb302_handle_togdone_snk(dev, togdone_result); -+ case FUSB_REG_STATUS1A_TOGSS_SRC1: -+ case FUSB_REG_STATUS1A_TOGSS_SRC2: -+ return fusb302_handle_togdone_src(dev, togdone_result); -+ case FUSB_REG_STATUS1A_TOGSS_AA: -+ /* doesn't support */ -+ dev_err(dev, "AudioAccessory not supported\n"); -+ fusb302_set_toggling(dev, chip->toggling_mode); -+ break; -+ default: -+ dev_err(dev, "TOGDONE with an invalid state: %d\n", -+ togdone_result); -+ fusb302_set_toggling(dev, chip->toggling_mode); -+ break; -+ } -+ return ret; -+} -+ -+static int fusb302_pd_reset(struct udevice *dev) -+{ -+ return fusb302_i2c_set_bits(dev, FUSB_REG_RESET, -+ FUSB_REG_RESET_PD_RESET); -+} -+ -+static int fusb302_pd_read_message(struct udevice *dev, -+ struct pd_message *msg) -+{ -+ int len, ret; -+ u8 crc[4]; -+ u8 token; -+ -+ /* first SOP token */ -+ ret = fusb302_i2c_read(dev, FUSB_REG_FIFOS, &token); -+ if (ret) -+ return ret; -+ ret = fusb302_i2c_block_read(dev, FUSB_REG_FIFOS, 2, -+ (u8 *)&msg->header); -+ if (ret) -+ return ret; -+ len = pd_header_cnt_le(msg->header) * 4; -+ /* add 4 to length to include the CRC */ -+ if (len > PD_MAX_PAYLOAD * 4) { -+ dev_err(dev, "PD message too long %d\n", len); -+ return -EINVAL; -+ } -+ if (len > 0) { -+ ret = fusb302_i2c_block_read(dev, FUSB_REG_FIFOS, len, -+ (u8 *)msg->payload); -+ if (ret) -+ return ret; -+ } -+ /* another 4 bytes to read CRC out */ -+ ret = fusb302_i2c_block_read(dev, FUSB_REG_FIFOS, 4, crc); -+ if (ret) -+ return ret; -+ dev_dbg(dev, "Received PD message (header=0x%x len=%d)\n", msg->header, len); -+ -+ /* -+ * Check if we've read off a GoodCRC message. If so then indicate to -+ * TCPM that the previous transmission has completed. Otherwise we pass -+ * the received message over to TCPM for processing. -+ * -+ * We make this check here instead of basing the reporting decision on -+ * the IRQ event type, as it's possible for the chip to report the -+ * TX_SUCCESS and GCRCSENT events out of order on occasion, so we need -+ * to check the message type to ensure correct reporting to TCPM. -+ */ -+ if (!len && (pd_header_type_le(msg->header) == PD_CTRL_GOOD_CRC)) -+ tcpm_pd_transmit_complete(dev, TCPC_TX_SUCCESS); -+ else -+ tcpm_pd_receive(dev, msg); -+ -+ return ret; -+} -+ -+static void fusb302_interrupt_handle(struct udevice *dev) -+{ -+ struct fusb302_chip *chip = dev_get_priv(dev); -+ u8 interrupt; -+ u8 interrupta; -+ u8 interruptb; -+ u8 status0; -+ bool vbus_present; -+ bool comp_result; -+ bool intr_togdone; -+ bool intr_bc_lvl; -+ bool intr_comp_chng; -+ struct pd_message pd_msg; -+ int ret; -+ -+ /* grab a snapshot of intr flags */ -+ intr_togdone = chip->intr_togdone; -+ intr_bc_lvl = chip->intr_bc_lvl; -+ intr_comp_chng = chip->intr_comp_chng; -+ -+ ret = fusb302_i2c_read(dev, FUSB_REG_INTERRUPT, &interrupt); -+ if (ret) -+ return; -+ ret = fusb302_i2c_read(dev, FUSB_REG_INTERRUPTA, &interrupta); -+ if (ret) -+ return; -+ ret = fusb302_i2c_read(dev, FUSB_REG_INTERRUPTB, &interruptb); -+ if (ret) -+ return; -+ ret = fusb302_i2c_read(dev, FUSB_REG_STATUS0, &status0); -+ if (ret) -+ return; -+ -+ /* -+ * Since we are polling the IRQs, avoid printing messages when there -+ * no interrupts at all to avoid spamming the log. -+ */ -+ if (interrupt != 0 || interrupta != 0 || interruptb != 0) -+ dev_dbg(dev, "IRQ: 0x%02x, a: 0x%02x, b: 0x%02x, status0: 0x%02x\n", -+ interrupt, interrupta, interruptb, status0); -+ -+ if (interrupt & FUSB_REG_INTERRUPT_VBUSOK) { -+ vbus_present = !!(status0 & FUSB_REG_STATUS0_VBUSOK); -+ dev_dbg(dev, "IRQ: VBUS_OK, vbus=%s\n", -+ vbus_present ? "On" : "Off"); -+ if (vbus_present != chip->vbus_present) { -+ chip->vbus_present = vbus_present; -+ tcpm_vbus_change(dev); -+ } -+ } -+ -+ if ((interrupta & FUSB_REG_INTERRUPTA_TOGDONE) && intr_togdone) { -+ dev_dbg(dev, "IRQ: TOGDONE\n"); -+ ret = fusb302_handle_togdone(dev); -+ if (ret) { -+ dev_err(dev, "handle togdone error: %d\n", ret); -+ return; -+ } -+ } -+ -+ if ((interrupt & FUSB_REG_INTERRUPT_BC_LVL) && intr_bc_lvl) { -+ dev_dbg(dev, "IRQ: BC_LVL, handler pending\n"); -+ fusb302_bc_lvl_handler(dev); -+ } -+ -+ if ((interrupt & FUSB_REG_INTERRUPT_COMP_CHNG) && intr_comp_chng) { -+ comp_result = !!(status0 & FUSB_REG_STATUS0_COMP); -+ dev_dbg(dev, "IRQ: COMP_CHNG, comp=%s\n", -+ comp_result ? "true" : "false"); -+ if (comp_result) { -+ /* cc level > Rd_threshold, detach */ -+ chip->cc1 = TYPEC_CC_OPEN; -+ chip->cc2 = TYPEC_CC_OPEN; -+ tcpm_cc_change(dev); -+ } -+ } -+ -+ if (interrupt & FUSB_REG_INTERRUPT_COLLISION) { -+ dev_dbg(dev, "IRQ: PD collision\n"); -+ tcpm_pd_transmit_complete(dev, TCPC_TX_FAILED); -+ } -+ -+ if (interrupta & FUSB_REG_INTERRUPTA_RETRYFAIL) { -+ dev_dbg(dev, "IRQ: PD retry failed\n"); -+ tcpm_pd_transmit_complete(dev, TCPC_TX_FAILED); -+ } -+ -+ if (interrupta & FUSB_REG_INTERRUPTA_HARDSENT) { -+ dev_dbg(dev, "IRQ: PD hardreset sent\n"); -+ ret = fusb302_pd_reset(dev); -+ if (ret) { -+ dev_err(dev, "cannot PD reset, ret=%d\n", ret); -+ return; -+ } -+ tcpm_pd_transmit_complete(dev, TCPC_TX_SUCCESS); -+ } -+ -+ if (interrupta & FUSB_REG_INTERRUPTA_TX_SUCCESS) { -+ dev_dbg(dev, "IRQ: PD tx success\n"); -+ ret = fusb302_pd_read_message(dev, &pd_msg); -+ if (ret) { -+ dev_err(dev, "cannot read in PD message, ret=%d\n", ret); -+ return; -+ } -+ } -+ -+ if (interrupta & FUSB_REG_INTERRUPTA_HARDRESET) { -+ dev_dbg(dev, "IRQ: PD received hardreset\n"); -+ ret = fusb302_pd_reset(dev); -+ if (ret) { -+ dev_err(dev, "cannot PD reset, ret=%d\n", ret); -+ return; -+ } -+ tcpm_pd_hard_reset(dev); -+ } -+ -+ if (interruptb & FUSB_REG_INTERRUPTB_GCRCSENT) { -+ dev_dbg(dev, "IRQ: PD sent good CRC\n"); -+ ret = fusb302_pd_read_message(dev, &pd_msg); -+ if (ret) { -+ dev_err(dev, "cannot read in PD message, ret=%d\n", ret); -+ return; -+ } -+ } -+} -+ -+static void fusb302_poll_event(struct udevice *dev) -+{ -+ fusb302_interrupt_handle(dev); -+} -+ -+static int fusb302_get_connector_node(struct udevice *dev, ofnode *connector_node) -+{ -+ *connector_node = dev_read_subnode(dev, "connector"); -+ if (!ofnode_valid(*connector_node)) { -+ dev_err(dev, "'connector' node is not found\n"); -+ return -ENODEV; -+ } -+ -+ return 0; -+} -+ -+static struct dm_tcpm_ops fusb302_ops = { -+ .get_connector_node = fusb302_get_connector_node, -+ .init = fusb302_init, -+ .get_vbus = fusb302_get_vbus, -+ .set_cc = fusb302_set_cc, -+ .get_cc = fusb302_get_cc, -+ .set_vconn = fusb302_set_vconn, -+ .set_vbus = fusb302_set_vbus, -+ .set_pd_rx = fusb302_set_pd_rx, -+ .set_roles = fusb302_set_roles, -+ .start_toggling = fusb302_start_toggling, -+ .pd_transmit = fusb302_pd_transmit, -+ .poll_event = fusb302_poll_event, -+ .enter_low_power_mode = fusb302_enter_low_power_mode, -+}; -+ -+static const struct udevice_id fusb302_ids[] = { -+ { .compatible = "fcs,fusb302" }, -+ { } -+}; -+ -+U_BOOT_DRIVER(fusb302) = { -+ .name = "fusb302", -+ .id = UCLASS_TCPM, -+ .of_match = fusb302_ids, -+ .ops = &fusb302_ops, -+ .priv_auto = sizeof(struct fusb302_chip), -+}; -diff --git a/drivers/usb/tcpm/fusb302_reg.h b/drivers/usb/tcpm/fusb302_reg.h -new file mode 100644 -index 000000000000..edc0e4b0f1e6 ---- /dev/null -+++ b/drivers/usb/tcpm/fusb302_reg.h -@@ -0,0 +1,177 @@ -+/* SPDX-License-Identifier: GPL-2.0+ */ -+/* -+ * Copyright 2016-2017 Google, Inc -+ * -+ * Fairchild FUSB302 Type-C Chip Driver -+ */ -+ -+#ifndef FUSB302_REG_H -+#define FUSB302_REG_H -+ -+#define FUSB_REG_DEVICE_ID 0x01 -+#define FUSB_REG_SWITCHES0 0x02 -+#define FUSB_REG_SWITCHES0_CC2_PU_EN BIT(7) -+#define FUSB_REG_SWITCHES0_CC1_PU_EN BIT(6) -+#define FUSB_REG_SWITCHES0_VCONN_CC2 BIT(5) -+#define FUSB_REG_SWITCHES0_VCONN_CC1 BIT(4) -+#define FUSB_REG_SWITCHES0_MEAS_CC2 BIT(3) -+#define FUSB_REG_SWITCHES0_MEAS_CC1 BIT(2) -+#define FUSB_REG_SWITCHES0_CC2_PD_EN BIT(1) -+#define FUSB_REG_SWITCHES0_CC1_PD_EN BIT(0) -+#define FUSB_REG_SWITCHES1 0x03 -+#define FUSB_REG_SWITCHES1_POWERROLE BIT(7) -+#define FUSB_REG_SWITCHES1_SPECREV1 BIT(6) -+#define FUSB_REG_SWITCHES1_SPECREV0 BIT(5) -+#define FUSB_REG_SWITCHES1_DATAROLE BIT(4) -+#define FUSB_REG_SWITCHES1_AUTO_GCRC BIT(2) -+#define FUSB_REG_SWITCHES1_TXCC2_EN BIT(1) -+#define FUSB_REG_SWITCHES1_TXCC1_EN BIT(0) -+#define FUSB_REG_MEASURE 0x04 -+#define FUSB_REG_MEASURE_MDAC5 BIT(7) -+#define FUSB_REG_MEASURE_MDAC4 BIT(6) -+#define FUSB_REG_MEASURE_MDAC3 BIT(5) -+#define FUSB_REG_MEASURE_MDAC2 BIT(4) -+#define FUSB_REG_MEASURE_MDAC1 BIT(3) -+#define FUSB_REG_MEASURE_MDAC0 BIT(2) -+#define FUSB_REG_MEASURE_VBUS BIT(1) -+#define FUSB_REG_MEASURE_XXXX5 BIT(0) -+#define FUSB_REG_CONTROL0 0x06 -+#define FUSB_REG_CONTROL0_TX_FLUSH BIT(6) -+#define FUSB_REG_CONTROL0_INT_MASK BIT(5) -+#define FUSB_REG_CONTROL0_HOST_CUR_MASK (0xC) -+#define FUSB_REG_CONTROL0_HOST_CUR_HIGH (0xC) -+#define FUSB_REG_CONTROL0_HOST_CUR_MED (0x8) -+#define FUSB_REG_CONTROL0_HOST_CUR_DEF (0x4) -+#define FUSB_REG_CONTROL0_TX_START BIT(0) -+#define FUSB_REG_CONTROL1 0x07 -+#define FUSB_REG_CONTROL1_ENSOP2DB BIT(6) -+#define FUSB_REG_CONTROL1_ENSOP1DB BIT(5) -+#define FUSB_REG_CONTROL1_BIST_MODE2 BIT(4) -+#define FUSB_REG_CONTROL1_RX_FLUSH BIT(2) -+#define FUSB_REG_CONTROL1_ENSOP2 BIT(1) -+#define FUSB_REG_CONTROL1_ENSOP1 BIT(0) -+#define FUSB_REG_CONTROL2 0x08 -+#define FUSB_REG_CONTROL2_MODE BIT(1) -+#define FUSB_REG_CONTROL2_MODE_MASK (0x6) -+#define FUSB_REG_CONTROL2_MODE_DFP (0x6) -+#define FUSB_REG_CONTROL2_MODE_UFP (0x4) -+#define FUSB_REG_CONTROL2_MODE_DRP (0x2) -+#define FUSB_REG_CONTROL2_MODE_NONE (0x0) -+#define FUSB_REG_CONTROL2_TOGGLE BIT(0) -+#define FUSB_REG_CONTROL3 0x09 -+#define FUSB_REG_CONTROL3_SEND_HARDRESET BIT(6) -+#define FUSB_REG_CONTROL3_BIST_TMODE BIT(5) /* 302B Only */ -+#define FUSB_REG_CONTROL3_AUTO_HARDRESET BIT(4) -+#define FUSB_REG_CONTROL3_AUTO_SOFTRESET BIT(3) -+#define FUSB_REG_CONTROL3_N_RETRIES BIT(1) -+#define FUSB_REG_CONTROL3_N_RETRIES_MASK (0x6) -+#define FUSB_REG_CONTROL3_N_RETRIES_3 (0x6) -+#define FUSB_REG_CONTROL3_N_RETRIES_2 (0x4) -+#define FUSB_REG_CONTROL3_N_RETRIES_1 (0x2) -+#define FUSB_REG_CONTROL3_AUTO_RETRY BIT(0) -+#define FUSB_REG_MASK 0x0A -+#define FUSB_REG_MASK_VBUSOK BIT(7) -+#define FUSB_REG_MASK_ACTIVITY BIT(6) -+#define FUSB_REG_MASK_COMP_CHNG BIT(5) -+#define FUSB_REG_MASK_CRC_CHK BIT(4) -+#define FUSB_REG_MASK_ALERT BIT(3) -+#define FUSB_REG_MASK_WAKE BIT(2) -+#define FUSB_REG_MASK_COLLISION BIT(1) -+#define FUSB_REG_MASK_BC_LVL BIT(0) -+#define FUSB_REG_POWER 0x0B -+#define FUSB_REG_POWER_PWR BIT(0) -+#define FUSB_REG_POWER_PWR_LOW 0x1 -+#define FUSB_REG_POWER_PWR_MEDIUM 0x3 -+#define FUSB_REG_POWER_PWR_HIGH 0x7 -+#define FUSB_REG_POWER_PWR_ALL 0xF -+#define FUSB_REG_RESET 0x0C -+#define FUSB_REG_RESET_PD_RESET BIT(1) -+#define FUSB_REG_RESET_SW_RESET BIT(0) -+#define FUSB_REG_MASKA 0x0E -+#define FUSB_REG_MASKA_OCP_TEMP BIT(7) -+#define FUSB_REG_MASKA_TOGDONE BIT(6) -+#define FUSB_REG_MASKA_SOFTFAIL BIT(5) -+#define FUSB_REG_MASKA_RETRYFAIL BIT(4) -+#define FUSB_REG_MASKA_HARDSENT BIT(3) -+#define FUSB_REG_MASKA_TX_SUCCESS BIT(2) -+#define FUSB_REG_MASKA_SOFTRESET BIT(1) -+#define FUSB_REG_MASKA_HARDRESET BIT(0) -+#define FUSB_REG_MASKB 0x0F -+#define FUSB_REG_MASKB_GCRCSENT BIT(0) -+#define FUSB_REG_STATUS0A 0x3C -+#define FUSB_REG_STATUS0A_SOFTFAIL BIT(5) -+#define FUSB_REG_STATUS0A_RETRYFAIL BIT(4) -+#define FUSB_REG_STATUS0A_POWER BIT(2) -+#define FUSB_REG_STATUS0A_RX_SOFT_RESET BIT(1) -+#define FUSB_REG_STATUS0A_RX_HARD_RESET BIT(0) -+#define FUSB_REG_STATUS1A 0x3D -+#define FUSB_REG_STATUS1A_TOGSS BIT(3) -+#define FUSB_REG_STATUS1A_TOGSS_RUNNING 0x0 -+#define FUSB_REG_STATUS1A_TOGSS_SRC1 0x1 -+#define FUSB_REG_STATUS1A_TOGSS_SRC2 0x2 -+#define FUSB_REG_STATUS1A_TOGSS_SNK1 0x5 -+#define FUSB_REG_STATUS1A_TOGSS_SNK2 0x6 -+#define FUSB_REG_STATUS1A_TOGSS_AA 0x7 -+#define FUSB_REG_STATUS1A_TOGSS_POS (3) -+#define FUSB_REG_STATUS1A_TOGSS_MASK (0x7) -+#define FUSB_REG_STATUS1A_RXSOP2DB BIT(2) -+#define FUSB_REG_STATUS1A_RXSOP1DB BIT(1) -+#define FUSB_REG_STATUS1A_RXSOP BIT(0) -+#define FUSB_REG_INTERRUPTA 0x3E -+#define FUSB_REG_INTERRUPTA_OCP_TEMP BIT(7) -+#define FUSB_REG_INTERRUPTA_TOGDONE BIT(6) -+#define FUSB_REG_INTERRUPTA_SOFTFAIL BIT(5) -+#define FUSB_REG_INTERRUPTA_RETRYFAIL BIT(4) -+#define FUSB_REG_INTERRUPTA_HARDSENT BIT(3) -+#define FUSB_REG_INTERRUPTA_TX_SUCCESS BIT(2) -+#define FUSB_REG_INTERRUPTA_SOFTRESET BIT(1) -+#define FUSB_REG_INTERRUPTA_HARDRESET BIT(0) -+#define FUSB_REG_INTERRUPTB 0x3F -+#define FUSB_REG_INTERRUPTB_GCRCSENT BIT(0) -+#define FUSB_REG_STATUS0 0x40 -+#define FUSB_REG_STATUS0_VBUSOK BIT(7) -+#define FUSB_REG_STATUS0_ACTIVITY BIT(6) -+#define FUSB_REG_STATUS0_COMP BIT(5) -+#define FUSB_REG_STATUS0_CRC_CHK BIT(4) -+#define FUSB_REG_STATUS0_ALERT BIT(3) -+#define FUSB_REG_STATUS0_WAKE BIT(2) -+#define FUSB_REG_STATUS0_BC_LVL_MASK 0x03 -+#define FUSB_REG_STATUS0_BC_LVL_0_200 0x0 -+#define FUSB_REG_STATUS0_BC_LVL_200_600 0x1 -+#define FUSB_REG_STATUS0_BC_LVL_600_1230 0x2 -+#define FUSB_REG_STATUS0_BC_LVL_1230_MAX 0x3 -+#define FUSB_REG_STATUS0_BC_LVL1 BIT(1) -+#define FUSB_REG_STATUS0_BC_LVL0 BIT(0) -+#define FUSB_REG_STATUS1 0x41 -+#define FUSB_REG_STATUS1_RXSOP2 BIT(7) -+#define FUSB_REG_STATUS1_RXSOP1 BIT(6) -+#define FUSB_REG_STATUS1_RX_EMPTY BIT(5) -+#define FUSB_REG_STATUS1_RX_FULL BIT(4) -+#define FUSB_REG_STATUS1_TX_EMPTY BIT(3) -+#define FUSB_REG_STATUS1_TX_FULL BIT(2) -+#define FUSB_REG_INTERRUPT 0x42 -+#define FUSB_REG_INTERRUPT_VBUSOK BIT(7) -+#define FUSB_REG_INTERRUPT_ACTIVITY BIT(6) -+#define FUSB_REG_INTERRUPT_COMP_CHNG BIT(5) -+#define FUSB_REG_INTERRUPT_CRC_CHK BIT(4) -+#define FUSB_REG_INTERRUPT_ALERT BIT(3) -+#define FUSB_REG_INTERRUPT_WAKE BIT(2) -+#define FUSB_REG_INTERRUPT_COLLISION BIT(1) -+#define FUSB_REG_INTERRUPT_BC_LVL BIT(0) -+#define FUSB_REG_FIFOS 0x43 -+ -+/* Tokens defined for the FUSB302 TX FIFO */ -+enum fusb302_txfifo_tokens { -+ FUSB302_TKN_TXON = 0xA1, -+ FUSB302_TKN_SYNC1 = 0x12, -+ FUSB302_TKN_SYNC2 = 0x13, -+ FUSB302_TKN_SYNC3 = 0x1B, -+ FUSB302_TKN_RST1 = 0x15, -+ FUSB302_TKN_RST2 = 0x16, -+ FUSB302_TKN_PACKSYM = 0x80, -+ FUSB302_TKN_JAMCRC = 0xFF, -+ FUSB302_TKN_EOP = 0x14, -+ FUSB302_TKN_TXOFF = 0xFE, -+}; -+ -+#endif - -From patchwork Thu Sep 5 15:08:39 2024 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Sebastian Reichel -X-Patchwork-Id: 1981310 -X-Patchwork-Delegate: ykai007@gmail.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=collabora.com header.i=@collabora.com - header.a=rsa-sha256 header.s=mail header.b=OlVGM1CY; - 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) server-digest SHA384) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4X02yx4Yhtz1yXY - for ; Fri, 6 Sep 2024 01:17:13 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id DA19F88CC4; - Thu, 5 Sep 2024 17:17:10 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=collabora.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=collabora.com header.i=@collabora.com - header.b="OlVGM1CY"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 818FF88CD1; Thu, 5 Sep 2024 17:17:10 +0200 (CEST) -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,RCVD_IN_VALIDITY_RPBL_BLOCKED, - RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 -Received: from bali.collaboradmins.com (bali.collaboradmins.com - [148.251.105.195]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 6EA7A88C91 - for ; Thu, 5 Sep 2024 17:17:08 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=collabora.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=sebastian.reichel@collabora.com -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; - s=mail; t=1725549428; - bh=MaX9knvNNlkcoU7y63UAKlXcI2FWJjBx6Z541dTO9i4=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=OlVGM1CYARH8jR7hX1JCyzjLoOvYonq4dVpddV7tqHKv1GFwV9kFs0BQ4idvjHy/T - 8dmf8Dp7LkEStFeQOeVF3FgD3kjcRIYq3a5QWQFKwba/sLcp1VQ7mycHrCP+uN1RoX - /uKEccUu41G7R4ERpXHJ6QrLVyWLcW1x86YZPE/mq17AETdmUfj2OUO/vCeoZ4lpvg - zTniAnbJTy/4BLPaDtK760efy5eYghMStjR8BfjQNKUWA1h2UAW5anloE/cgSsgWjT - m9wxvIxG3UqPf1YKEMUUgxOAyu/gjKrdK4rCKEY/ox+UAyg1Q2EQaHWm50UFUlNLjj - q0jLt7uyLlMvg== -Received: from jupiter.universe (dyndsl-091-248-189-231.ewe-ip-backbone.de - [91.248.189.231]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) (Authenticated sender: sre) - by bali.collaboradmins.com (Postfix) with ESMTPSA id EDB4F17E145D; - Thu, 5 Sep 2024 17:17:07 +0200 (CEST) -Received: by jupiter.universe (Postfix, from userid 1000) - id A34D14800F6; Thu, 05 Sep 2024 17:17:07 +0200 (CEST) -From: Sebastian Reichel -To: Marek Vasut , u-boot@lists.denx.de, - Jonas Karlman , Soeren Moch -Cc: Eugen Hristev , - Tim Harvey , Kever Yang , - Philipp Tomsich , Simon Glass , - Sebastian Reichel -Subject: [PATCH v6 3/6] board: rock5b-rk3588: enable USB-C in operating system -Date: Thu, 5 Sep 2024 17:08:39 +0200 -Message-ID: <20240905151707.59101-4-sebastian.reichel@collabora.com> -X-Mailer: git-send-email 2.45.2 -In-Reply-To: <20240905151707.59101-1-sebastian.reichel@collabora.com> -References: <20240905151707.59101-1-sebastian.reichel@collabora.com> -MIME-Version: 1.0 -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 - -Since older U-Boot releases do not negotiate USB PD, the kernel -DT may not enable the USB-C controller by default to avoid a -regression. The plan is to upstream it with 'status = "fail";' -instead. U-Boot should then mark it as 'status = "okay";' if -it negotiated USB PD. Currently existing upstream kernel DTs do -not yet have the USB-C controller at all, so we ignore any -failures. - -Reviewed-by: Kever Yang -Tested-by: Soeren Moch -Signed-off-by: Sebastian Reichel ---- - board/radxa/rock5b-rk3588/Makefile | 6 ++++++ - board/radxa/rock5b-rk3588/rock5b-rk3588.c | 16 ++++++++++++++++ - 2 files changed, 22 insertions(+) - create mode 100644 board/radxa/rock5b-rk3588/Makefile - create mode 100644 board/radxa/rock5b-rk3588/rock5b-rk3588.c - -diff --git a/board/radxa/rock5b-rk3588/Makefile b/board/radxa/rock5b-rk3588/Makefile -new file mode 100644 -index 000000000000..95d813596da4 ---- /dev/null -+++ b/board/radxa/rock5b-rk3588/Makefile -@@ -0,0 +1,6 @@ -+# SPDX-License-Identifier: GPL-2.0+ -+# -+# Copyright (c) 2022 Collabora Ltd. -+# -+ -+obj-y += rock5b-rk3588.o -diff --git a/board/radxa/rock5b-rk3588/rock5b-rk3588.c b/board/radxa/rock5b-rk3588/rock5b-rk3588.c -new file mode 100644 -index 000000000000..fc2f69db2241 ---- /dev/null -+++ b/board/radxa/rock5b-rk3588/rock5b-rk3588.c -@@ -0,0 +1,16 @@ -+// SPDX-License-Identifier: GPL-2.0+ -+/* -+ * Copyright (c) 2023-2024 Collabora Ltd. -+ */ -+ -+#include -+#include -+ -+#ifdef CONFIG_OF_BOARD_SETUP -+int ft_board_setup(void *blob, struct bd_info *bd) -+{ -+ if (IS_ENABLED(CONFIG_TYPEC_FUSB302)) -+ fdt_status_okay_by_compatible(blob, "fcs,fusb302"); -+ return 0; -+} -+#endif - -From patchwork Thu Sep 5 15:08:40 2024 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Sebastian Reichel -X-Patchwork-Id: 1981311 -X-Patchwork-Delegate: ykai007@gmail.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=collabora.com header.i=@collabora.com - header.a=rsa-sha256 header.s=mail header.b=Hn8Z4MVu; - 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) server-digest SHA384) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4X02z82c6zz1yXY - for ; Fri, 6 Sep 2024 01:17:24 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 3EDBD88CA2; - Thu, 5 Sep 2024 17:17:13 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=collabora.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=collabora.com header.i=@collabora.com - header.b="Hn8Z4MVu"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 710CF88CA2; Thu, 5 Sep 2024 17:17:12 +0200 (CEST) -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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no - version=3.4.2 -Received: from bali.collaboradmins.com (bali.collaboradmins.com - [IPv6:2a01:4f8:201:9162::2]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 7D4DC88CAC - for ; Thu, 5 Sep 2024 17:17:08 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=collabora.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=sebastian.reichel@collabora.com -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; - s=mail; t=1725549428; - bh=kRtQV3aUzqRixo2bcjF9nXzgL+cYAS6B3o857NdybTM=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=Hn8Z4MVuPomOScWvWRuPJHT3m84jMoUdUdcI4V6fC8w0zfN0PSB22YMSaMxRDqiQR - D1gyzQpG0bCWuGp89DNtLngEOXCfXPqQh98ArUJFVvn5FVbYDlml9cXwVW02zXglIb - KP92KXxaQTgjWDb6QntmbJHNZVhAMNOCCqIknf4YFMc4/7yGTUsOxI5VD/oY5bbwVJ - aTVCT3SuwJvmXu7Dj150fFYeT0furN5MZT1P/MPFXd1/bnC9Dj+YTT6lm3kw6waCZN - OcRx6P7sRha82dm44zV4xjWnpHPDGGYqTyWNSD72Xj7/CASin5aosS6NbZFpndvcfx - 30yLrCrJPsm3g== -Received: from jupiter.universe (dyndsl-091-248-189-231.ewe-ip-backbone.de - [91.248.189.231]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest - SHA256) - (No client certificate requested) (Authenticated sender: sre) - by bali.collaboradmins.com (Postfix) with ESMTPSA id EF4D117E14D6; - Thu, 5 Sep 2024 17:17:07 +0200 (CEST) -Received: by jupiter.universe (Postfix, from userid 1000) - id A518D4800F8; Thu, 05 Sep 2024 17:17:07 +0200 (CEST) -From: Sebastian Reichel -To: Marek Vasut , u-boot@lists.denx.de, - Jonas Karlman , Soeren Moch -Cc: Eugen Hristev , - Tim Harvey , Kever Yang , - Philipp Tomsich , Simon Glass , - Sebastian Reichel -Subject: [PATCH v6 4/6] rockchip: rk3588-rock-5b: Add USB-C controller to - u-boot.dtsi -Date: Thu, 5 Sep 2024 17:08:40 +0200 -Message-ID: <20240905151707.59101-5-sebastian.reichel@collabora.com> -X-Mailer: git-send-email 2.45.2 -In-Reply-To: <20240905151707.59101-1-sebastian.reichel@collabora.com> -References: <20240905151707.59101-1-sebastian.reichel@collabora.com> -MIME-Version: 1.0 -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 USB-C controller (fusb302), which will be used by U-Boot to -initialize USB-PD. This is needed, because USB-PD communication -must happen within 5 seconds after the USB-C connector got plugged. -On my Rock 5B it often takes 5 seconds to jump to the Linux binary, -so it must happen before Linux is initialized. - -This adds the DT node to the U-Boot specific file, since the Linux -kernel DT currently does not describe it to avoid a system reset. -The plan is to add it to the Linux DT with status = 'fail' and then -let U-Boot mark it as status = 'okay' if it properly dealt with -early USB-PD initialization. Until the Kernel DT has the node, let's -add it in U-Boot to get things going. - -Reviewed-by: Kever Yang -Tested-by: Soeren Moch -Signed-off-by: Sebastian Reichel ---- - arch/arm/dts/rk3588-rock-5b-u-boot.dtsi | 28 +++++++++++++++++++++++++ - 1 file changed, 28 insertions(+) - -diff --git a/arch/arm/dts/rk3588-rock-5b-u-boot.dtsi b/arch/arm/dts/rk3588-rock-5b-u-boot.dtsi -index 4dd17ff408cb..b0ad1158854c 100644 ---- a/arch/arm/dts/rk3588-rock-5b-u-boot.dtsi -+++ b/arch/arm/dts/rk3588-rock-5b-u-boot.dtsi -@@ -3,6 +3,7 @@ - * Copyright (c) 2023 Collabora Ltd. - */ - -+#include - #include "rk3588-u-boot.dtsi" - - &fspim2_pins { -@@ -10,6 +11,33 @@ - bootph-some-ram; - }; - -+&i2c4 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c4m1_xfer>; -+ status = "okay"; -+ -+ usbc0: usb-typec@22 { -+ compatible = "fcs,fusb302"; -+ reg = <0x22>; -+ interrupt-parent = <&gpio3>; -+ interrupts = ; -+ pinctrl-names = "default"; -+ status = "okay"; -+ -+ usb_con: connector { -+ compatible = "usb-c-connector"; -+ label = "USB-C"; -+ data-role = "dual"; -+ power-role = "sink"; -+ try-power-role = "sink"; -+ op-sink-microwatt = <1000000>; -+ sink-pdos = -+ , -+ ; -+ }; -+ }; -+}; -+ - &sdhci { - cap-mmc-highspeed; - mmc-hs200-1_8v; - -From patchwork Thu Sep 5 15:08:41 2024 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Sebastian Reichel -X-Patchwork-Id: 1981313 -X-Patchwork-Delegate: ykai007@gmail.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=collabora.com header.i=@collabora.com - header.a=rsa-sha256 header.s=mail header.b=q3YksfJp; - 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 4X02zX1GHQz1yXY - for ; Fri, 6 Sep 2024 01:17:44 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 23B9E88C91; - Thu, 5 Sep 2024 17:17:15 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=collabora.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=collabora.com header.i=@collabora.com - header.b="q3YksfJp"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 4A27388CC2; Thu, 5 Sep 2024 17:17:14 +0200 (CEST) -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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no - version=3.4.2 -Received: from bali.collaboradmins.com (bali.collaboradmins.com - [IPv6:2a01:4f8:201:9162::2]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id AA9CC88CCA - for ; Thu, 5 Sep 2024 17:17:08 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=collabora.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=sebastian.reichel@collabora.com -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; - s=mail; t=1725549428; - bh=2Lc5Z/YfVP+p0ckRM3rvfdY5jCUdmYScP+mrStWhXgc=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=q3YksfJpB4KE3b6jOT8upI79aMX8TsaVAMMBCfHQfd81c94VAOjQE0sKeQG7MZhks - 8MtawvxDPZLokcfL/SI5h7MM+BY3PUAHRF0055L3SENSD8jyNOgSjkmmOOLY27PFGF - LNYyTuhYLE7uZyVOevaq9skCiKVRhV7HtSQcv1ac6YuIyinwrpCN42yaHFG/m6SpO+ - lTxi9/43YenBpHkbZHxt8llNxRKcPbDdXMQcwZE6f0ksz92jfSioU5dJEMwJnFYvLm - XSuzTPYuERV+/O82eUGYarkAczW2F0SfMOKWdb6C85FiS1hNj2Wqo6bM4G+GNyDUWz - ORIxUtmwVAgwg== -Received: from jupiter.universe (dyndsl-091-248-189-231.ewe-ip-backbone.de - [91.248.189.231]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) (Authenticated sender: sre) - by bali.collaboradmins.com (Postfix) with ESMTPSA id 3C7D917E14D7; - Thu, 5 Sep 2024 17:17:08 +0200 (CEST) -Received: by jupiter.universe (Postfix, from userid 1000) - id A72CD4800FF; Thu, 05 Sep 2024 17:17:07 +0200 (CEST) -From: Sebastian Reichel -To: Marek Vasut , u-boot@lists.denx.de, - Jonas Karlman , Soeren Moch -Cc: Eugen Hristev , - Tim Harvey , Kever Yang , - Philipp Tomsich , Simon Glass , - Sebastian Reichel -Subject: [PATCH v6 5/6] rockchip: rock5b-rk3588: Enable USB-C PD support -Date: Thu, 5 Sep 2024 17:08:41 +0200 -Message-ID: <20240905151707.59101-6-sebastian.reichel@collabora.com> -X-Mailer: git-send-email 2.45.2 -In-Reply-To: <20240905151707.59101-1-sebastian.reichel@collabora.com> -References: <20240905151707.59101-1-sebastian.reichel@collabora.com> -MIME-Version: 1.0 -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 - -Now that all code has been prepared update the default configuration to -make use of it. - -Reviewed-by: Kever Yang -Tested-by: Soeren Moch -Signed-off-by: Sebastian Reichel ---- - configs/rock5b-rk3588_defconfig | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/configs/rock5b-rk3588_defconfig b/configs/rock5b-rk3588_defconfig -index 80a2f2fed586..82c942a52d62 100644 ---- a/configs/rock5b-rk3588_defconfig -+++ b/configs/rock5b-rk3588_defconfig -@@ -23,6 +23,7 @@ CONFIG_FIT_VERBOSE=y - CONFIG_SPL_FIT_SIGNATURE=y - CONFIG_SPL_LOAD_FIT=y - CONFIG_LEGACY_IMAGE_FORMAT=y -+CONFIG_OF_BOARD_SETUP=y - CONFIG_DEFAULT_FDT_FILE="rockchip/rk3588-rock-5b.dtb" - # CONFIG_DISPLAY_CPUINFO is not set - CONFIG_DISPLAY_BOARDINFO_LATE=y -@@ -103,3 +104,6 @@ CONFIG_USB_GADGET=y - CONFIG_USB_GADGET_DOWNLOAD=y - CONFIG_USB_FUNCTION_ROCKUSB=y - CONFIG_ERRNO_STR=y -+CONFIG_TYPEC_TCPM=y -+CONFIG_TYPEC_FUSB302=y -+CONFIG_CMD_TCPM=y - -From patchwork Thu Sep 5 15:08:42 2024 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Sebastian Reichel -X-Patchwork-Id: 1981314 -X-Patchwork-Delegate: ykai007@gmail.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=collabora.com header.i=@collabora.com - header.a=rsa-sha256 header.s=mail header.b=Ci2PO1GU; - 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 4X02zk6YyNz1yXY - for ; Fri, 6 Sep 2024 01:17:54 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 7F41A88CE5; - Thu, 5 Sep 2024 17:17:15 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=collabora.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=collabora.com header.i=@collabora.com - header.b="Ci2PO1GU"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 6ED1888CC2; Thu, 5 Sep 2024 17:17:14 +0200 (CEST) -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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 -Received: from bali.collaboradmins.com (bali.collaboradmins.com - [IPv6:2a01:4f8:201:9162::2]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id CD5F888CD0 - for ; Thu, 5 Sep 2024 17:17:08 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=collabora.com -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=sebastian.reichel@collabora.com -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; - s=mail; t=1725549428; - bh=l4Xv+BpciSynhuTx8UEne0BTouVROBqh6qBZSM+vxDg=; - h=From:To:Cc:Subject:Date:In-Reply-To:References:From; - b=Ci2PO1GUFnjJQSAIA8bOSaKduXeFJwF8D+1yGRBAT9+M+oNdtaLQKmdPE/XuBAMBF - hEDngnCgvcZdH4Q3uiLUEDi1jZqjU3+VPGTR6fECGe8zriHIja8R6NQR3NCHsfcQMr - E74ZH8bkjhX6S3MYLjZMLTrFBjTAGvshUtI7gKh7Xyet03KYD1xZlvJV71d196Ygty - pr1imuqccIOh7cUE8V2YsSoaibrkiiA9uEpvNr0u9JxE2dvd5HrVR+Uftjzh21ATyo - RERAB90Lf6rr4hdtA1KaFrpuFgWMWKwVL2OKtE8wxPHaUo23Cq36LXmMeeho8nL73T - 5XslHm2u6aESA== -Received: from jupiter.universe (dyndsl-091-248-189-231.ewe-ip-backbone.de - [91.248.189.231]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature RSA-PSS (4096 bits)) - (No client certificate requested) (Authenticated sender: sre) - by bali.collaboradmins.com (Postfix) with ESMTPSA id 3F1DD17E14D8; - Thu, 5 Sep 2024 17:17:08 +0200 (CEST) -Received: by jupiter.universe (Postfix, from userid 1000) - id A909F480100; Thu, 05 Sep 2024 17:17:07 +0200 (CEST) -From: Sebastian Reichel -To: Marek Vasut , u-boot@lists.denx.de, - Jonas Karlman , Soeren Moch -Cc: Eugen Hristev , - Tim Harvey , Kever Yang , - Philipp Tomsich , Simon Glass , - Sebastian Reichel -Subject: [PATCH v6 6/6] MAINTAINERS: add TCPM section -Date: Thu, 5 Sep 2024 17:08:42 +0200 -Message-ID: <20240905151707.59101-7-sebastian.reichel@collabora.com> -X-Mailer: git-send-email 2.45.2 -In-Reply-To: <20240905151707.59101-1-sebastian.reichel@collabora.com> -References: <20240905151707.59101-1-sebastian.reichel@collabora.com> -MIME-Version: 1.0 -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 new section for USB TypeC Port Manager (TCPM) support, which -is needed to figure out cable orientation of USB-C plus and to do -USB PD communication. - -Signed-off-by: Sebastian Reichel ---- - MAINTAINERS | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/MAINTAINERS b/MAINTAINERS -index 2050ae24df82..f3cf84d20dbd 100644 ---- a/MAINTAINERS -+++ b/MAINTAINERS -@@ -1721,6 +1721,15 @@ F: common/usb_kbd.c - F: common/usb_storage.c - F: include/usb.h - -+USB TCPM -+M: Sebastian Reichel -+S: Maintained -+F: cmd/tcpm.c -+F: doc/usage/cmd/tcpm.rst -+F: drivers/usb/tcpm/ -+F: include/usb/pd.h -+F: include/usb/tcpm.h -+ - USB xHCI - M: Bin Meng - S: Maintained diff --git a/Qualcomm-add-support-for-SC7280-and-the-RB3-Gen-2.patch b/Qualcomm-add-support-for-SC7280-and-the-RB3-Gen-2.patch deleted file mode 100644 index 0dec1ea..0000000 --- a/Qualcomm-add-support-for-SC7280-and-the-RB3-Gen-2.patch +++ /dev/null @@ -1,1414 +0,0 @@ -From patchwork Wed Aug 21 13:41:46 2024 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Caleb Connolly -X-Patchwork-Id: 1974970 -X-Patchwork-Delegate: caleb.connolly@linaro.org -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=linaro.org header.i=@linaro.org header.a=rsa-sha256 - header.s=google header.b=BpF9pRLA; - 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 4WpnZD73RJz1yXf - for ; Wed, 21 Aug 2024 23:42:12 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 99F6188D9B; - Wed, 21 Aug 2024 15:42:00 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -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=linaro.org header.i=@linaro.org header.b="BpF9pRLA"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 86A7E88D9B; Wed, 21 Aug 2024 15:41:58 +0200 (CEST) -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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-lf1-x133.google.com (mail-lf1-x133.google.com - [IPv6:2a00:1450:4864:20::133]) - (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 896B7887D4 - for ; Wed, 21 Aug 2024 15:41:55 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=caleb.connolly@linaro.org -Received: by mail-lf1-x133.google.com with SMTP id - 2adb3069b0e04-5333b2fbedaso4381657e87.0 - for ; Wed, 21 Aug 2024 06:41:55 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=linaro.org; s=google; t=1724247715; x=1724852515; darn=lists.denx.de; - h=cc:to:in-reply-to:references:message-id:content-transfer-encoding - :mime-version:subject:date:from:from:to:cc:subject:date:message-id - :reply-to; bh=vYpvXZhAM0wjWc6QeTnHyYsF2xjKAb2Bg/9VNGJ7oC4=; - b=BpF9pRLArbhamTTSvF+LPOjqIaruq3137+Td+Y4qA32sBPKjZN2zyabjh/Rafnr5O1 - 9d/0nOcXmbKi3CTtdUN3qV19169r8d2lAuPiUwXoxGf4v9wPlXv1TnQilC0/IpdephxJ - oRj9+5DwMh1C/THNGdn6N9M7PrZ33uVwOawlqlGPGaBUlZzEtdpeQt8mGBT72vsWTwEc - g9XIuP7GYNy3Ztzy8JMYfvFT0MCUQmkDb9anAIfRkARVMxMTI3X0lz9nXqhgNHGXF/vc - tw9UbbFQc5bsonufEXl0cg3x4yHX3dzV2NcPvnGJWBUgHbNoQ1dUvmUD8ivz8xpCGh95 - /uLg== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20230601; t=1724247715; x=1724852515; - h=cc:to:in-reply-to:references:message-id:content-transfer-encoding - :mime-version:subject:date:from:x-gm-message-state:from:to:cc - :subject:date:message-id:reply-to; - bh=vYpvXZhAM0wjWc6QeTnHyYsF2xjKAb2Bg/9VNGJ7oC4=; - b=F/jmt2BY3txUp2Xo6ouNkmlNd7uQWuOBEkIGKUIwLL3jKl7uBJ/Ptt5k5n2REXJ3RX - qQv2x7FQlJXgvIfdnyr82QJx4EA7lV3SciLcJsTQMrrE0URCNMdIzUgMi0Su+QUw2rkH - 3F6BNFc2AUknW7ohrfLBnJWKHecIEJy7NbLcVve5RxNTga9md5WoIqlyL0PMo+pbTH/P - t4upinI57g3mt/aAFxlETKF7TY9fUiDnKfmp6NNkTAYVemvziHPE4LO78hHLLRggdYJE - li/V+pZa6jdmhd9c2wPO7Qlhlw3i48ti0LmA6PBMgebLO+YTAXf2pUpLQl4gdayX4WJr - 21qA== -X-Gm-Message-State: AOJu0YzCxBg0ApyZrMj/flKnSEzT/WdNXsTISMZEYTB2A2c9+9pYoTt8 - Y4o4D/Wn7JKEhGJS9pejsVJGp3BVDAbME2fz2uL63aeV9h8aeA7aQIfST443wEE= -X-Google-Smtp-Source: - AGHT+IHwtmpvp1KyCpCFrQ9m8b9mZocGdoGZKOOBbCOdWXgPOOaJpvIzD+wO9cPMXI0xJJ299Vb3aw== -X-Received: by 2002:a05:6512:2526:b0:533:4b07:a8dc with SMTP id - 2adb3069b0e04-5334b07a924mr853860e87.35.1724247714485; - Wed, 21 Aug 2024 06:41:54 -0700 (PDT) -Received: from [192.168.0.113] ([2a02:8109:aa0d:be00::676e]) - by smtp.gmail.com with ESMTPSA id - a640c23a62f3a-a83839342f6sm904164066b.137.2024.08.21.06.41.53 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Wed, 21 Aug 2024 06:41:53 -0700 (PDT) -From: Caleb Connolly -Date: Wed, 21 Aug 2024 15:41:46 +0200 -Subject: [PATCH v2 1/7] clk/qcom: add initial clock driver for sc7280 -MIME-Version: 1.0 -Message-Id: <20240821-b4-rb3gen2-v2-1-49b07633f3a8@linaro.org> -References: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> -In-Reply-To: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> -To: Tom Rini , Lukasz Majewski , - Sean Anderson , - Caleb Connolly , - Neil Armstrong , - Sumit Garg -Cc: u-boot@lists.denx.de, u-boot-qcom@groups.io -X-Mailer: b4 0.14-dev -X-Developer-Signature: v=1; a=openpgp-sha256; l=6610; - i=caleb.connolly@linaro.org; h=from:subject:message-id; - bh=Ml3U758Os52kpw+GNgmPmB5Bs0weI+7Cu8LeGmVUjJs=; - b=owEBbQKS/ZANAwAIAQWDMSsZX2S2AcsmYgBmxe6dj9dkbc0E3zPhQL/6lm1ahALcexDRPoBcO - ng26jm+QUiJAjMEAAEIAB0WIQS2UaFGPGq+0GkMVc0FgzErGV9ktgUCZsXunQAKCRAFgzErGV9k - ttaKD/9DtqMqfY7Do5CxJU3qRYk5ZmdeMIF9JTXN0APLu1fGGMznfgoUn93safNuzgw/exm5CNI - rSoCXHGtBpKM+SWjYe9ir4C7PQqdJt0J5vgdUOHVqfy87jgC4RQkE6HUDCtd9s1HitZNCtiZGrs - BeJ7SVOrAakL3QgXCssgvhDmNmQoMDd5l1lTXL9p5RQTVAZuQuihQJ1fcVtXVH9DlYidlvNdwKZ - wLXps20Hc7uStWohI/+MtDq5OzwxfEXVLBOktJ8cR26UZ1N5pFItdarRZpmJCJFtWU4ORyamCKW - EcPSjaDo7r2GT7CbiILoXpsQLGX5SNrEWFAFQJKUjAyHe0x2H0394aVGd4Yt9kFBG8KSvhzwsVq - tVzpKmy0oe/2CCcVsRHhT4b1j7H+MiudmxYpUByqcljtWKm/0Nd6C42oqHSs4NP+DRHHPzDGpxm - Bzaex1Y5tkwivXqgISlHEX99R605X8KWM3LJnKMPBU5qdHN7x1/8tdcpsnCHd/+AobL+Ty7gaH4 - CXqmB2zZY/1VAhboMRJnDaOooBlBlGfaiMu9/sOpQJo0xWPYtANjyli/9TIsBSBkctEAa4rv0WN - ruiueb3HXdDqzPGpcaVMnApPjkNEUGiMlhaJKTJPcBuIDaC0uNwquaRv7fmLRE5oqWlX1uQ7Seu - fUzYzzESEzLWSGg== -X-Developer-Key: i=caleb.connolly@linaro.org; a=openpgp; - fpr=83B24DA7FE145076BC38BB250CD904EB673A7C47 -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 - -We don't actually need any clocks to get UFS up and running, resets are -useful though. - -Reviewed-by: Neil Armstrong -Signed-off-by: Caleb Connolly ---- - drivers/clk/qcom/Kconfig | 8 +++ - drivers/clk/qcom/Makefile | 1 + - drivers/clk/qcom/clock-qcom.h | 1 + - drivers/clk/qcom/clock-sc7280.c | 132 ++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 142 insertions(+) - -diff --git a/drivers/clk/qcom/Kconfig b/drivers/clk/qcom/Kconfig -index 45d63c6d6dbf..0d2c0ac225c5 100644 ---- a/drivers/clk/qcom/Kconfig -+++ b/drivers/clk/qcom/Kconfig -@@ -85,7 +85,15 @@ config CLK_QCOM_SM8650 - Say Y here to enable support for the Global Clock Controller - on the Snapdragon SM8650 SoC. This driver supports the clocks - and resets exposed by the GCC hardware block. - -+config CLK_QCOM_SC7280 -+ bool "Qualcomm SC7280 GCC" -+ select CLK_QCOM -+ help -+ Say Y here to enable support for the Global Clock Controller -+ on the Snapdragon SC7280 SoC. This driver supports the clocks -+ and resets exposed by the GCC hardware block. -+ - endmenu - - endif -diff --git a/drivers/clk/qcom/Makefile b/drivers/clk/qcom/Makefile -index dec20e4b5943..e223c131ee4d 100644 ---- a/drivers/clk/qcom/Makefile -+++ b/drivers/clk/qcom/Makefile -@@ -8,8 +8,9 @@ obj-$(CONFIG_CLK_QCOM_APQ8016) += clock-apq8016.o - obj-$(CONFIG_CLK_QCOM_APQ8096) += clock-apq8096.o - obj-$(CONFIG_CLK_QCOM_IPQ4019) += clock-ipq4019.o - obj-$(CONFIG_CLK_QCOM_QCM2290) += clock-qcm2290.o - obj-$(CONFIG_CLK_QCOM_QCS404) += clock-qcs404.o -+obj-$(CONFIG_CLK_QCOM_SC7280) += clock-sc7280.o - obj-$(CONFIG_CLK_QCOM_SM6115) += clock-sm6115.o - obj-$(CONFIG_CLK_QCOM_SM8250) += clock-sm8250.o - obj-$(CONFIG_CLK_QCOM_SM8550) += clock-sm8550.o - obj-$(CONFIG_CLK_QCOM_SM8650) += clock-sm8650.o -diff --git a/drivers/clk/qcom/clock-qcom.h b/drivers/clk/qcom/clock-qcom.h -index f6445c8f566f..7aa6ca59aad5 100644 ---- a/drivers/clk/qcom/clock-qcom.h -+++ b/drivers/clk/qcom/clock-qcom.h -@@ -10,8 +10,9 @@ - #define CFG_CLK_SRC_CXO (0 << 8) - #define CFG_CLK_SRC_GPLL0 (1 << 8) - #define CFG_CLK_SRC_GPLL0_AUX2 (2 << 8) - #define CFG_CLK_SRC_GPLL9 (2 << 8) -+#define CFG_CLK_SRC_GPLL0_ODD (3 << 8) - #define CFG_CLK_SRC_GPLL6 (4 << 8) - #define CFG_CLK_SRC_GPLL7 (3 << 8) - #define CFG_CLK_SRC_GPLL4 (5 << 8) - #define CFG_CLK_SRC_GPLL0_EVEN (6 << 8) -diff --git a/drivers/clk/qcom/clock-sc7280.c b/drivers/clk/qcom/clock-sc7280.c -new file mode 100644 -index 000000000000..5d343f120519 ---- /dev/null -+++ b/drivers/clk/qcom/clock-sc7280.c -@@ -0,0 +1,132 @@ -+// SPDX-License-Identifier: GPL-2.0 -+/* -+ * Clock drivers for Qualcomm sc7280 -+ * -+ * (C) Copyright 2024 Linaro Ltd. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "clock-qcom.h" -+ -+#define USB30_PRIM_MOCK_UTMI_CLK_CMD_RCGR 0xf038 -+#define USB30_PRIM_MASTER_CLK_CMD_RCGR 0xf020 -+ -+static ulong sc7280_set_rate(struct clk *clk, ulong rate) -+{ -+ struct msm_clk_priv *priv = dev_get_priv(clk->dev); -+ -+ if (clk->id < priv->data->num_clks) -+ debug("%s: %s, requested rate=%ld\n", __func__, priv->data->clks[clk->id].name, rate); -+ -+ switch (clk->id) { -+ case GCC_USB30_PRIM_MOCK_UTMI_CLK: -+ WARN(rate != 19200000, "Unexpected rate for USB30_PRIM_MOCK_UTMI_CLK: %lu\n", rate); -+ clk_rcg_set_rate(priv->base, USB30_PRIM_MASTER_CLK_CMD_RCGR, 0, CFG_CLK_SRC_CXO); -+ return rate; -+ case GCC_USB30_PRIM_MASTER_CLK: -+ WARN(rate != 200000000, "Unexpected rate for USB30_PRIM_MASTER_CLK: %lu\n", rate); -+ clk_rcg_set_rate_mnd(priv->base, USB30_PRIM_MASTER_CLK_CMD_RCGR, -+ 1, 0, 0, CFG_CLK_SRC_GPLL0_ODD, 8); -+ clk_rcg_set_rate(priv->base, 0xf064, 0, 0); -+ return rate; -+ default: -+ return 0; -+ } -+} -+ -+static const struct gate_clk sc7280_clks[] = { -+ GATE_CLK(GCC_CFG_NOC_USB3_PRIM_AXI_CLK, 0xf07c, 1), -+ GATE_CLK(GCC_USB30_PRIM_MASTER_CLK, 0xf010, 1), -+ GATE_CLK(GCC_AGGRE_USB3_PRIM_AXI_CLK, 0xf080, 1), -+ GATE_CLK(GCC_USB30_PRIM_SLEEP_CLK, 0xf018, 1), -+ GATE_CLK(GCC_USB30_PRIM_MOCK_UTMI_CLK, 0xf01c, 1), -+ GATE_CLK(GCC_USB3_PRIM_PHY_AUX_CLK, 0xf054, 1), -+ GATE_CLK(GCC_USB3_PRIM_PHY_COM_AUX_CLK, 0xf058, 1), -+}; -+ -+static int sc7280_enable(struct clk *clk) -+{ -+ struct msm_clk_priv *priv = dev_get_priv(clk->dev); -+ -+ if (priv->data->num_clks < clk->id) { -+ debug("%s: unknown clk id %lu\n", __func__, clk->id); -+ return 0; -+ } -+ -+ debug("%s: clk %ld: %s\n", __func__, clk->id, sc7280_clks[clk->id].name); -+ -+ switch (clk->id) { -+ case GCC_AGGRE_USB3_PRIM_AXI_CLK: -+ qcom_gate_clk_en(priv, GCC_USB30_PRIM_MASTER_CLK); -+ fallthrough; -+ case GCC_USB30_PRIM_MASTER_CLK: -+ qcom_gate_clk_en(priv, GCC_USB3_PRIM_PHY_AUX_CLK); -+ qcom_gate_clk_en(priv, GCC_USB3_PRIM_PHY_COM_AUX_CLK); -+ break; -+ } -+ -+ qcom_gate_clk_en(priv, clk->id); -+ -+ return 0; -+} -+ -+static const struct qcom_reset_map sc7280_gcc_resets[] = { -+ [GCC_PCIE_0_BCR] = { 0x6b000 }, -+ [GCC_PCIE_0_PHY_BCR] = { 0x6c01c }, -+ [GCC_PCIE_1_BCR] = { 0x8d000 }, -+ [GCC_PCIE_1_PHY_BCR] = { 0x8e01c }, -+ [GCC_QUSB2PHY_PRIM_BCR] = { 0x12000 }, -+ [GCC_QUSB2PHY_SEC_BCR] = { 0x12004 }, -+ [GCC_SDCC1_BCR] = { 0x75000 }, -+ [GCC_SDCC2_BCR] = { 0x14000 }, -+ [GCC_SDCC4_BCR] = { 0x16000 }, -+ [GCC_UFS_PHY_BCR] = { 0x77000 }, -+ [GCC_USB30_PRIM_BCR] = { 0xf000 }, -+ [GCC_USB30_SEC_BCR] = { 0x9e000 }, -+ [GCC_USB3_DP_PHY_PRIM_BCR] = { 0x50008 }, -+ [GCC_USB3_PHY_PRIM_BCR] = { 0x50000 }, -+ [GCC_USB3PHY_PHY_PRIM_BCR] = { 0x50004 }, -+ [GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x6a000 }, -+}; -+ -+static const struct qcom_power_map sc7280_gdscs[] = { -+ [GCC_UFS_PHY_GDSC] = { 0x77004 }, -+ [GCC_USB30_PRIM_GDSC] = { 0xf004 }, -+}; -+ -+static struct msm_clk_data qcs404_gcc_data = { -+ .resets = sc7280_gcc_resets, -+ .num_resets = ARRAY_SIZE(sc7280_gcc_resets), -+ .clks = sc7280_clks, -+ .num_clks = ARRAY_SIZE(sc7280_clks), -+ -+ .power_domains = sc7280_gdscs, -+ .num_power_domains = ARRAY_SIZE(sc7280_gdscs), -+ -+ .enable = sc7280_enable, -+ .set_rate = sc7280_set_rate, -+}; -+ -+static const struct udevice_id gcc_sc7280_of_match[] = { -+ { -+ .compatible = "qcom,gcc-sc7280", -+ .data = (ulong)&qcs404_gcc_data, -+ }, -+ { } -+}; -+ -+U_BOOT_DRIVER(gcc_sc7280) = { -+ .name = "gcc_sc7280", -+ .id = UCLASS_NOP, -+ .of_match = gcc_sc7280_of_match, -+ .bind = qcom_cc_bind, -+ .flags = DM_FLAG_PRE_RELOC | DM_FLAG_DEFAULT_PD_CTRL_OFF, -+}; - -From patchwork Wed Aug 21 13:41:47 2024 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Caleb Connolly -X-Patchwork-Id: 1974971 -X-Patchwork-Delegate: caleb.connolly@linaro.org -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=linaro.org header.i=@linaro.org header.a=rsa-sha256 - header.s=google header.b=D8cipZN8; - 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 4WpnZS1lFqz1yXf - for ; Wed, 21 Aug 2024 23:42:24 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 2404B88DB7; - Wed, 21 Aug 2024 15:42:01 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -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=linaro.org header.i=@linaro.org header.b="D8cipZN8"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id CF84288B3C; Wed, 21 Aug 2024 15:41:58 +0200 (CEST) -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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com - [IPv6:2a00:1450:4864:20::22f]) - (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 BC82A88AC0 - for ; Wed, 21 Aug 2024 15:41:56 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=caleb.connolly@linaro.org -Received: by mail-lj1-x22f.google.com with SMTP id - 38308e7fff4ca-2f136e23229so67636651fa.1 - for ; Wed, 21 Aug 2024 06:41:56 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=linaro.org; s=google; t=1724247716; x=1724852516; darn=lists.denx.de; - h=cc:to:in-reply-to:references:message-id:content-transfer-encoding - :mime-version:subject:date:from:from:to:cc:subject:date:message-id - :reply-to; bh=BtQqdiFk/5BGUCz4O21vl/84vcKElfs3QSU/TjahAhA=; - b=D8cipZN8vnM60gNnxvkm4MeJi0YUs2ejIG0MSF/WWYvpmyESE3mh38i9CQho0bxU6i - iX63Dsb/6xtE1YF26oNdy6430/ePndpn9VXSnZ4+c+0j1Er/qSEXlX7/BzwYSxhKFXP2 - /F6RsyF3R5s2HPndcU3OSppiLYNDSZZFa5XBwBVgNsjEoAOmVBZspDGJXberoFWSw1Xd - jvCW7H8KY4DgeuHAJAF1udHYqYfpDTGmijGk1cl6yddFZ4BX5AHEetjJMm6/Sfs0rYEE - D0REEYmHiwa1dm8mN6J+XMp2tgzg/8RPlQ5p4k9lcZlrCuZ7TnFF+HgnR7TLnMaOY5WI - DeWw== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20230601; t=1724247716; x=1724852516; - h=cc:to:in-reply-to:references:message-id:content-transfer-encoding - :mime-version:subject:date:from:x-gm-message-state:from:to:cc - :subject:date:message-id:reply-to; - bh=BtQqdiFk/5BGUCz4O21vl/84vcKElfs3QSU/TjahAhA=; - b=P16tCzEGlwXh2HUe2zkd2EwD+lVsUJ2nv3xZT1gSdJfgv9uFCy5uHQOHx+GfyeFiFB - ZTZeGSznoCm+BqR4Rw1gx+Pw4M5rk38MOzZj6eb1PVfM7DKBk1C0g3ddxLBWvXwGky/P - /PMojneROHfJG+HpIjemGUIP4Cnbl+J0M1VqM1cJazIQocK+IpbqphhjI7IDKfPwZz0O - Cxn70edXPpLuZvBwbSJEk5zEyh+2b0oiyPP8VwzVfimOrP0nSJ/TkZiKVgEAVBmiRq1c - hpW2xFrDixDe+Ioa2hCXcbsIoDf8EyCdmxWVIiA8h4xsXfXpSbgDCAgBz0wi9Uw3Jy/h - LRZg== -X-Gm-Message-State: AOJu0Yz5oP45hJMUwyK8DU9sBL6vYfuGjHAeVLt3bxXXNCuBLvCzIx7F - gF97feq0wgpXLIEQ7uqwcBXQ46wbHQs8IEvoNGTarDCXSFeggfCqEC7oDzM4U48= -X-Google-Smtp-Source: - AGHT+IFRfsXmk97RBDrPRNGuRiWGpZ4udOpM/gdavhIAP7Vw5jIX1oJ1BZ6+tqyctFDutWKn/+6X5g== -X-Received: by 2002:ac2:4e09:0:b0:52f:2ea:499f with SMTP id - 2adb3069b0e04-5334855d512mr1561479e87.24.1724247715821; - Wed, 21 Aug 2024 06:41:55 -0700 (PDT) -Received: from [192.168.0.113] ([2a02:8109:aa0d:be00::676e]) - by smtp.gmail.com with ESMTPSA id - a640c23a62f3a-a83839342f6sm904164066b.137.2024.08.21.06.41.54 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Wed, 21 Aug 2024 06:41:55 -0700 (PDT) -From: Caleb Connolly -Date: Wed, 21 Aug 2024 15:41:47 +0200 -Subject: [PATCH v2 2/7] dts: qcs6490-rb3gen2-u-boot: add override dtsi -MIME-Version: 1.0 -Message-Id: <20240821-b4-rb3gen2-v2-2-49b07633f3a8@linaro.org> -References: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> -In-Reply-To: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> -To: Tom Rini , Lukasz Majewski , - Sean Anderson , - Caleb Connolly , - Neil Armstrong , - Sumit Garg -Cc: u-boot@lists.denx.de, u-boot-qcom@groups.io -X-Mailer: b4 0.14-dev -X-Developer-Signature: v=1; a=openpgp-sha256; l=1273; - i=caleb.connolly@linaro.org; h=from:subject:message-id; - bh=WycUvGIX1Vb2Dt9TSRhlFTIc8lgmewYYBQWg2kxs6NI=; - b=owEBbQKS/ZANAwAIAQWDMSsZX2S2AcsmYgBmxe6djNLXRIVPQZZW1FVYvOn/tPtr3vGLbnTcN - EIiqQUfY2uJAjMEAAEIAB0WIQS2UaFGPGq+0GkMVc0FgzErGV9ktgUCZsXunQAKCRAFgzErGV9k - tnN7D/0d90bQBLWvZQ8d0lHinZ/3zwe3FEdaLK31OGRD7VJd7Q8ckuOxOF/eO8TLmksQovgvrTY - 68llyxkNZe/nnmY9UX+DJ+i5pzqINuLlGRqANukMePwwJxJZilb6dRXB9sR+hSBHC+YTyfY67xk - 78ILyZhMmZqmi/ya6lBqxLieP+CnHq1V9n07s3jljhE1oSp4NucQzFXpv48MGEpOt/sIyjtzQ5w - aw7r1Wsay9w+xmNly+kBT+05q5dp/CTnqMp1koKGG/fWWkSZUgo5yODYeRAiieb7ZQ5JaVmxJkf - G3K0BPkFJ+kaPyU6Mbe0d573tY+oZsWDWEBFP/diduz8lw27tIDOmpTIyT8lMsu1vL7dcj38NsS - 50a7smXimMWcKwJsEQV32Tw0QYv4kfJyqjxXVj6kJ+DWL1bm15LZ6fZpXy3tbTHzJvWRr2Lx/AZ - mWXbylc+uUx4tQkb+7+OhSN376NPfWUNlGHMdHSfQHgzcFuGbMmf9v58sPXa7ZKb3UFkKk2MAzA - 8kiDEMgp/6k55lHxdc4ndxK/vXTKxiU59H2k+okeAQ2iMnA39r/M7yOe6a8vyXDyeuCmJHncNAX - /Uy4yr757EQpUKygo3DjdfRcZQ/h5hQ2TFiWm3BlU87k8MlQl5JEGwxqpkM+9JXFjRwiGcR2ZSO - fOkmL+X6FXNHw3A== -X-Developer-Key: i=caleb.connolly@linaro.org; a=openpgp; - fpr=83B24DA7FE145076BC38BB250CD904EB673A7C47 -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 - -For running U-Boot as primary bootloader we must define the memory -layout statically. - -Signed-off-by: Caleb Connolly ---- - arch/arm/dts/qcs6490-rb3gen2-u-boot.dtsi | 23 +++++++++++++++++++++++ - 1 file changed, 23 insertions(+) - -diff --git a/arch/arm/dts/qcs6490-rb3gen2-u-boot.dtsi b/arch/arm/dts/qcs6490-rb3gen2-u-boot.dtsi -new file mode 100644 -index 000000000000..c3ec4a317f7c ---- /dev/null -+++ b/arch/arm/dts/qcs6490-rb3gen2-u-boot.dtsi -@@ -0,0 +1,23 @@ -+// SPDX-License-Identifier: BSD-3-Clause -+/* -+ * Copyright (c) 2024 Linaro Ltd. -+ */ -+/ { -+ /* When running as the primary bootloader there is no prior -+ * stage to populate the memory layout for us. We *should* -+ * have two nodes here, but ABL does NOT like that. -+ * sooo we're stuck with this. -+ */ -+ memory@80000000 { -+ device_type = "memory"; -+ reg = <0 0x80000000 0 0x3A800000>, -+ <0 0xC0000000 0 0x01800000>, -+ <0 0xC3400000 0 0x3CC00000>, -+ <1 0x00000000 1 0x00000000>; -+ }; -+}; -+ -+// RAM Entry 0 : Base 0x0080000000 Size 0x003A800000 -+// RAM Entry 1 : Base 0x00C0000000 Size 0x0001800000 -+// RAM Entry 2 : Base 0x00C3400000 Size 0x003CC00000 -+// RAM Entry 3 : Base 0x0100000000 Size 0x0100000000 - -From patchwork Wed Aug 21 13:41:48 2024 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Caleb Connolly -X-Patchwork-Id: 1974972 -X-Patchwork-Delegate: caleb.connolly@linaro.org -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=linaro.org header.i=@linaro.org header.a=rsa-sha256 - header.s=google header.b=W/enKPtj; - 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 4WpnZg6XLXz1yXf - for ; Wed, 21 Aug 2024 23:42:35 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 8FCF188DD8; - Wed, 21 Aug 2024 15:42:03 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -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=linaro.org header.i=@linaro.org header.b="W/enKPtj"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 7430788BF6; Wed, 21 Aug 2024 15:42:00 +0200 (CEST) -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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com - [IPv6:2a00:1450:4864:20::436]) - (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 BB78388C7E - for ; Wed, 21 Aug 2024 15:41:57 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=caleb.connolly@linaro.org -Received: by mail-wr1-x436.google.com with SMTP id - ffacd0b85a97d-3718706cf8aso4087426f8f.3 - for ; Wed, 21 Aug 2024 06:41:57 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=linaro.org; s=google; t=1724247717; x=1724852517; darn=lists.denx.de; - h=cc:to:in-reply-to:references:message-id:content-transfer-encoding - :mime-version:subject:date:from:from:to:cc:subject:date:message-id - :reply-to; bh=zLolcdfhpnv2Sr4+jU2o0ZvxpFWa2r7z1o+vmKY3kNM=; - b=W/enKPtjbLPpOfXBJ95XWpBN74SHMzSf7YfqzclhQ8DglD54/Ubm8hmtMAJr3dU4oc - 7QSmg2IojIWCgmF7ZVpPpPipkl0d0NJdhrbZgltHWn6DI5oa5z8H/oPL2qgfxOvi1mol - GkNDzmOd9DogYJbDxazFLX/yuyObHE0Frbk1+5S+dUC9Mk6TEn/kAnphDP0/pIcoFqNS - MHhPWfxQj8qNWFF683e2CNpiiQmhvIyxMnx2XDqHqr0sARkmDhEdmDt6/J2uDEpAXIqS - gfb2ryOgrf0ymsrNXXmgtPBlJ1Nk+WvqQNZ+fFud6rDTMI7k3T6vg9LtuKRk5l0ZeW9z - 9ukA== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20230601; t=1724247717; x=1724852517; - h=cc:to:in-reply-to:references:message-id:content-transfer-encoding - :mime-version:subject:date:from:x-gm-message-state:from:to:cc - :subject:date:message-id:reply-to; - bh=zLolcdfhpnv2Sr4+jU2o0ZvxpFWa2r7z1o+vmKY3kNM=; - b=Bk58APruZpAfRV6OKvJFR/r6nSOZTRk1lGotJZ/7Ps1APRn4QEUIEES/nAymFAlsZK - IuAn5ixOz3aQip+GhlTd5ZX/4G2D90T9SLGu+jKI2zHbc9HfYsLUaLImDouZanKiy3DN - rSF/DzczN7mNahfl++0WXyuhXE1l5coIb99U116QJ4etTFEC+YvBD2zWg7RpfxE6F2MA - tu2L+KZX2xor/7JzMfyV/FeFyAo5X53e7JPAVpvXa6vGTXfyZa8kzv4oIa1vTbwsuxLK - D4AcwfMHj4eyGTilDPHRn292bg79eS+R3MX3EpFEW6J/Zr5fKhsyDSDcjBuR2TYJ7Gcv - BDrw== -X-Gm-Message-State: AOJu0YxuxBBsFKKWph/SGz+J1lDRx2i4hMnvb9KUEI3p7sCb122LZSOU - lTiuOgJUeGU0ryXFmDTRlVFUVDC+WlMh98BjXmGjDc74hcUPn0EuM1QELuQYSNk= -X-Google-Smtp-Source: - AGHT+IFF8AJ5Hu9iRBb/BV7cCxp9j5UJEcpMy4SVnJcq2ijih+8KFAvBMsil1LfJlPGBheg9LAatHw== -X-Received: by 2002:adf:cc82:0:b0:368:6633:c550 with SMTP id - ffacd0b85a97d-372fd82f325mr1509038f8f.52.1724247717163; - Wed, 21 Aug 2024 06:41:57 -0700 (PDT) -Received: from [192.168.0.113] ([2a02:8109:aa0d:be00::676e]) - by smtp.gmail.com with ESMTPSA id - a640c23a62f3a-a83839342f6sm904164066b.137.2024.08.21.06.41.56 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Wed, 21 Aug 2024 06:41:56 -0700 (PDT) -From: Caleb Connolly -Date: Wed, 21 Aug 2024 15:41:48 +0200 -Subject: [PATCH v2 3/7] dts: qcs6490-rb3gen2-u-boot: USB host mode -MIME-Version: 1.0 -Message-Id: <20240821-b4-rb3gen2-v2-3-49b07633f3a8@linaro.org> -References: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> -In-Reply-To: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> -To: Tom Rini , Lukasz Majewski , - Sean Anderson , - Caleb Connolly , - Neil Armstrong , - Sumit Garg -Cc: u-boot@lists.denx.de, u-boot-qcom@groups.io -X-Mailer: b4 0.14-dev -X-Developer-Signature: v=1; a=openpgp-sha256; l=955; - i=caleb.connolly@linaro.org; h=from:subject:message-id; - bh=HTbXxsrMd17GClJdrUxqmv1t42K8cKHfbuWdCzpCB0M=; - b=owEBbQKS/ZANAwAIAQWDMSsZX2S2AcsmYgBmxe6djkazDSIeIn+UGkfv2WCzgyN2+Nv9IFp8u - /7f/kVTNzKJAjMEAAEIAB0WIQS2UaFGPGq+0GkMVc0FgzErGV9ktgUCZsXunQAKCRAFgzErGV9k - tt0qEACLN54DQLVEpmwhpZIBzCPjtaeMTHKNrVejy201O3Ts9I8BmKyuCQmcJReF8E1oTvhVE2p - RRdEnopYd86hGyIc6pZZ1tNwmwCxeADAERIygNKEAGK6f6v29CJZt0OMSVRx7emdUn6wDP0/6FQ - W7zfmxJKZMNp1gEMS80FJSa+PkI148T6WzfmKEfNbENYTwwIwC/e8yqlKXp+joiPv269f/nYbtY - ZR6mW3re0fvIoCbUjHcIRmu5ZWB92qqfwAiSCLLlajpzIF8iDrDyOYOdb7/TxM5eWZloPwDYHaK - 0eJde2EIysMA1TJFP8ynVnUe1c4sZxDLB+ZnVUpbvGTvHjguamxfazEZlUmd1kV6m+ilTqAIlUP - 2v5eY2KUjx+MD8qm5FLgpj6JHDE9jszg3LSETAPwJDk0MICXQoY9HMu03kO8KE62j2HrRwVn7/G - i1agSOBRJyNDHqTiUh2vYQnwwBPANZPjipnQgPkZ6Ebd98KbzzHr9Dh+kR7eC/caSf0V82YK4G8 - mPCaznXAPS+VNfT+JZQxQz7Axm1O7bWfIuSdLGqVGBRj4+4W3k1PzFWI7S46Vj4qWbpJXuWKl6I - UlE67yw71FwYzQt6B7xLMSCr2O8bFmlv42AVl6bNjG53CZ8HmBo5AuKrhbdhpLv5HfjWK1j58tW - Ci+WPJUvj2lPPfg== -X-Developer-Key: i=caleb.connolly@linaro.org; a=openpgp; - fpr=83B24DA7FE145076BC38BB250CD904EB673A7C47 -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 - -Adjust DTS so USB runs in host mode. The type-c port is the only -supported port (since the others need PCIe). Booting from USB is -possible with a powered type-c dock. - -Signed-off-by: Caleb Connolly ---- - arch/arm/dts/qcs6490-rb3gen2-u-boot.dtsi | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/arch/arm/dts/qcs6490-rb3gen2-u-boot.dtsi b/arch/arm/dts/qcs6490-rb3gen2-u-boot.dtsi -index c3ec4a317f7c..fbe72595f5ac 100644 ---- a/arch/arm/dts/qcs6490-rb3gen2-u-boot.dtsi -+++ b/arch/arm/dts/qcs6490-rb3gen2-u-boot.dtsi -@@ -16,8 +16,13 @@ - <1 0x00000000 1 0x00000000>; - }; - }; - -+&usb_1_dwc3 { -+ dr_mode = "host"; -+ /delete-property/ usb-role-switch; -+}; -+ - // RAM Entry 0 : Base 0x0080000000 Size 0x003A800000 - // RAM Entry 1 : Base 0x00C0000000 Size 0x0001800000 - // RAM Entry 2 : Base 0x00C3400000 Size 0x003CC00000 - // RAM Entry 3 : Base 0x0100000000 Size 0x0100000000 - -From patchwork Wed Aug 21 13:41:49 2024 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Caleb Connolly -X-Patchwork-Id: 1974973 -X-Patchwork-Delegate: caleb.connolly@linaro.org -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=linaro.org header.i=@linaro.org header.a=rsa-sha256 - header.s=google header.b=fxhzRRWP; - 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 4WpnZv2VSTz1yXf - for ; Wed, 21 Aug 2024 23:42:47 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id F1A1E88DBB; - Wed, 21 Aug 2024 15:42:03 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -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=linaro.org header.i=@linaro.org header.b="fxhzRRWP"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 5F28288DBF; Wed, 21 Aug 2024 15:42:01 +0200 (CEST) -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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-lf1-x12c.google.com (mail-lf1-x12c.google.com - [IPv6:2a00:1450:4864:20::12c]) - (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 5838488AC0 - for ; Wed, 21 Aug 2024 15:41:59 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=caleb.connolly@linaro.org -Received: by mail-lf1-x12c.google.com with SMTP id - 2adb3069b0e04-52efc60a6e6so9447535e87.1 - for ; Wed, 21 Aug 2024 06:41:59 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=linaro.org; s=google; t=1724247718; x=1724852518; darn=lists.denx.de; - h=cc:to:in-reply-to:references:message-id:content-transfer-encoding - :mime-version:subject:date:from:from:to:cc:subject:date:message-id - :reply-to; bh=cqF2st4G7Whhok3VZo6aDGC//+kV3J+exZKhkiiSLFQ=; - b=fxhzRRWPt+qpJciGSAITWCo8l8X60UfTDq85wh8FY7dCx3uklUdpEcoF9mZQvZEARc - JdrCoNahI2M7n7uxXFkWNU8HAYP8adAfEIdzL9A74GE5HVYfUWU28+jLirmyAHbts2I/ - SdPX01laMMuUBZNO1+eQTpYWK/pAO7J5BnazS9JOOedrSlBLeiX74zICTx9l/ogHIvar - oyR9/w28as1z3kdFFAACkxGoDrWsz0kGqhEBXGOOnKRQeXi16Wyq/ZOkZwrDs+ZaOCj0 - Np0K2VryzXH+5acK/T8VFyaO/kiwyVE+oBQ9+t4QRslHCVoK+vniJFjWJmyiLbcrR+VF - Ug3g== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20230601; t=1724247718; x=1724852518; - h=cc:to:in-reply-to:references:message-id:content-transfer-encoding - :mime-version:subject:date:from:x-gm-message-state:from:to:cc - :subject:date:message-id:reply-to; - bh=cqF2st4G7Whhok3VZo6aDGC//+kV3J+exZKhkiiSLFQ=; - b=luGrCmqihUFezhJWv4e5vJ9xNHo14vlaEyeUAxelx59D64ZJJ1t0Wp71nzKQ4MjeF1 - +a5ZoV7GeqYCdriLcYtSAm+mGfHYq6wqLK7MUxTJJXQiQ+8YNOE8O5jZPRQOnykhrHyv - SGgBu95T4t2+iops0PoEG1WJgUFfQdguMeIxCF/3egeF2vbuiLdkag3f/P1oZ+WId9d8 - CdjoDP22VLYkI737XGw5dPYXjw8n5aElyW4w8a8+s/+LSHr2DqhP6jBRBHoEr96u9caD - MD/ZJMxHUIF5HVF49slrJCvxOVaE1BLLfvGg6DsgTGbiJ1R04nnqmP4eIiihjxGfokAz - ayDA== -X-Gm-Message-State: AOJu0YyYd+xZ/CF0vx8K/xUigIplSGcNj9+ZYg92++5jyNrmeP/Dw2mb - YdY8603ttFOxzF77F9uZemMCCMk9Yqe06DIg4zk9AmmXVSdjOM16xI4mPU3kNko= -X-Google-Smtp-Source: - AGHT+IEiWiQ2+rnq9ygkkGwKWRO1l7vPXtE6nv9tq+GTkhXNeXOlV9Q+YJri22fWRmcjXR32eVPTAg== -X-Received: by 2002:a05:6512:696:b0:52e:f77b:bb58 with SMTP id - 2adb3069b0e04-5334858e2dbmr1246801e87.36.1724247718271; - Wed, 21 Aug 2024 06:41:58 -0700 (PDT) -Received: from [192.168.0.113] ([2a02:8109:aa0d:be00::676e]) - by smtp.gmail.com with ESMTPSA id - a640c23a62f3a-a83839342f6sm904164066b.137.2024.08.21.06.41.57 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Wed, 21 Aug 2024 06:41:57 -0700 (PDT) -From: Caleb Connolly -Date: Wed, 21 Aug 2024 15:41:49 +0200 -Subject: [PATCH v2 4/7] iommu: qcom-smmu: add sc7280-smmu-500 compatible -MIME-Version: 1.0 -Message-Id: <20240821-b4-rb3gen2-v2-4-49b07633f3a8@linaro.org> -References: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> -In-Reply-To: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> -To: Tom Rini , Lukasz Majewski , - Sean Anderson , - Caleb Connolly , - Neil Armstrong , - Sumit Garg -Cc: u-boot@lists.denx.de, u-boot-qcom@groups.io -X-Mailer: b4 0.14-dev -X-Developer-Signature: v=1; a=openpgp-sha256; l=735; - i=caleb.connolly@linaro.org; h=from:subject:message-id; - bh=kxKBScKaYeuETfEZtkdyvgk1CIJk9dkzDtE1GYwaPOI=; - b=owEBbQKS/ZANAwAIAQWDMSsZX2S2AcsmYgBmxe6dVYUKBuKYzxniyjNVxYEoPmLImzpJJVKSN - fZ8OGllgq+JAjMEAAEIAB0WIQS2UaFGPGq+0GkMVc0FgzErGV9ktgUCZsXunQAKCRAFgzErGV9k - thhHD/sEX0G2aVw1Y8dD02U8Fg111EK/PNvDyUlifhchP/sTDJHxyzWJc0zxsb1FtSosTWlnv1i - tgFSLVCLklzMwrcUCZb5Fe/9bWGRL6Uz0dEbDXZohGWagR4SC9MoM/shyb6R7Xm2ywwaR1dBkHM - alh2af0YAoJi0TljeQz70GlUCBAyLiLhLD9/V7JDfkdAgUj1R7tGibGbz7plVk1ySD/JUbXLyRD - Oj3l66FUGleJAA+KrvbPR5sVcA8Zt+Mak0xp5xyjQ0T8TUNfwJF0VUgWEpiVHWZGPgOgw2OnE5U - Iv4mBGteHGHC0WjCdjt/thyn2+QCx/LjPwrBDrsyw6FFyg43yWEmDkEgfCiTDSHMtTMSPLvYbXM - b00Egv5OZrrhIGahpHxdd2Ui/6zicLanexZopGSaMu4DnMnhfm7GGdRxNphtP9VMWwgy+vePa+a - ghVuG+oIgtIOoEwE/SN2zBpMIxLNuzTi3c80xsxh6uA+5VH9X937eNFlB0fouXJjG27Jo4NSbKL - oeSE2rLXYtJ2bCV0ee7E5InyvUsdzHynjewLM0usEvnFHn433yCibXdQ1VjAZJVOJlFwxt85evc - Y/3ckT+iau+N7Z8un7Vhsp2FKf/IR5/QGd1NrfOyZuZ4V3ojqtD71Hymz1874HoW492BdpUytut - 5WHbOvM4jWAm5dQ== -X-Developer-Key: i=caleb.connolly@linaro.org; a=openpgp; - fpr=83B24DA7FE145076BC38BB250CD904EB673A7C47 -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 - -This soc doesn't have the generic compatible. - -Reviewed-by: Neil Armstrong -Signed-off-by: Caleb Connolly -Reviewed-by: Simon Glass ---- - drivers/iommu/qcom-hyp-smmu.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/drivers/iommu/qcom-hyp-smmu.c b/drivers/iommu/qcom-hyp-smmu.c -index 7b646d840dd4..1b5a09bb7b39 100644 ---- a/drivers/iommu/qcom-hyp-smmu.c -+++ b/drivers/iommu/qcom-hyp-smmu.c -@@ -380,8 +380,9 @@ static struct iommu_ops qcom_smmu_ops = { - }; - - static const struct udevice_id qcom_smmu500_ids[] = { - { .compatible = "qcom,sdm845-smmu-500" }, -+ { .compatible = "qcom,sc7280-smmu-500" }, - { .compatible = "qcom,smmu-500", }, - { /* sentinel */ } - }; - - -From patchwork Wed Aug 21 13:41:50 2024 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Caleb Connolly -X-Patchwork-Id: 1974974 -X-Patchwork-Delegate: caleb.connolly@linaro.org -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=linaro.org header.i=@linaro.org header.a=rsa-sha256 - header.s=google header.b=yOMaz64l; - 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) server-digest SHA384) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4Wpnb85tThz1yXf - for ; Wed, 21 Aug 2024 23:43:00 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 6572A88DE5; - Wed, 21 Aug 2024 15:42:04 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -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=linaro.org header.i=@linaro.org header.b="yOMaz64l"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 47E5388AFF; Wed, 21 Aug 2024 15:42:02 +0200 (CEST) -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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com - [IPv6:2a00:1450:4864:20::62b]) - (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 2E9D188C36 - for ; Wed, 21 Aug 2024 15:42:00 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=caleb.connolly@linaro.org -Received: by mail-ej1-x62b.google.com with SMTP id - a640c23a62f3a-a7a81bd549eso556008566b.3 - for ; Wed, 21 Aug 2024 06:42:00 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=linaro.org; s=google; t=1724247719; x=1724852519; darn=lists.denx.de; - h=cc:to:in-reply-to:references:message-id:content-transfer-encoding - :mime-version:subject:date:from:from:to:cc:subject:date:message-id - :reply-to; bh=VGpHi3k7vxgehhynkHpyKJwxi4oKfB4A2A00OXKPkFQ=; - b=yOMaz64lma1hQ0+Gt5CgMdElox51jZtnVyBitVGl6NvVmTuRWyklxImOrmwqsD3xYC - LGVcaLqh6/Q1W84/a/VQjQXnjBnf7rwjs1wqMs2mxBSvIXqX84EaEYJsYQK255NuFmeY - NXA0Iw/mLc/lgHAufmAUkAE02OVXH7AAyOjuEUceM/a6s9P5xPF82ucP7uH1adqOkAZQ - MTmKJK30kZjuhrZasD0UafyDCfMinXHhHFqlIcrhxmitRK4qDTzbktP/Atn3wfIJpVyh - Zbfra3N7AwxLidGI4lgrZSdfJWx7xo7f78GLzrxxtf9EQNN97axpLHFCTql16lK6z8qx - 3Psg== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20230601; t=1724247719; x=1724852519; - h=cc:to:in-reply-to:references:message-id:content-transfer-encoding - :mime-version:subject:date:from:x-gm-message-state:from:to:cc - :subject:date:message-id:reply-to; - bh=VGpHi3k7vxgehhynkHpyKJwxi4oKfB4A2A00OXKPkFQ=; - b=wjTgODezMYlCn5sKcCnnp1Vd0OLBd5uCD0eBpdaJdRReSR2EsRO7RyUqvKoOvz7NPc - O7v24bEyP8vKrldHxpNvN9R6RqnobFMDUq1urWi4ObeXiFLrgH/iVa6h8fQXs239YyyD - x2v2ZGzHy5LuWMQItcPDAfgV1NMl9e9Whd1LOS9mJBgHAuX64ve4uf3jQhpIAG52PGNG - PqZklpeuYNZrK/gG7RZSuSUlrHkd3f3UF6b7jqC16TpwDc+4RuW5vF35uLCqnjMjHRPK - jxAj6zbq1QxznhNSLn6wMt4SHd44YvPRET9SWyLNJ69jL8f3LA+/2vyrgQdg3UYIUTaf - WunQ== -X-Gm-Message-State: AOJu0YyYxzvh/Kq2TnmE45KUz4jNc/HfUkc2DCE5IqW05whgtX84/Uou - QvsSOrpkiSoyoRX00nQTJ6PEghMnyz/il1CvQOq6oIHOYo7ZMLMN86AVf2+SA9g= -X-Google-Smtp-Source: - AGHT+IF2/DupIr7S3Tf/n9l6fXvTAbuD5E3nSTqZnLUH17vrwUpiB2tHgdlyQp8XysNBhZpXN+tPXA== -X-Received: by 2002:a17:907:d864:b0:a86:6cb1:4d49 with SMTP id - a640c23a62f3a-a866f0fd56emr197816466b.13.1724247719583; - Wed, 21 Aug 2024 06:41:59 -0700 (PDT) -Received: from [192.168.0.113] ([2a02:8109:aa0d:be00::676e]) - by smtp.gmail.com with ESMTPSA id - a640c23a62f3a-a83839342f6sm904164066b.137.2024.08.21.06.41.58 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Wed, 21 Aug 2024 06:41:58 -0700 (PDT) -From: Caleb Connolly -Date: Wed, 21 Aug 2024 15:41:50 +0200 -Subject: [PATCH v2 5/7] qcom_defconfig: enable SC7280 clocks -MIME-Version: 1.0 -Message-Id: <20240821-b4-rb3gen2-v2-5-49b07633f3a8@linaro.org> -References: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> -In-Reply-To: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> -To: Tom Rini , Lukasz Majewski , - Sean Anderson , - Caleb Connolly , - Neil Armstrong , - Sumit Garg -Cc: u-boot@lists.denx.de, u-boot-qcom@groups.io -X-Mailer: b4 0.14-dev -X-Developer-Signature: v=1; a=openpgp-sha256; l=670; - i=caleb.connolly@linaro.org; h=from:subject:message-id; - bh=yS4s6QOgfiWQfzfc4REiZuaFQ3cRc+UaGAPzZhg/0tY=; - b=owEBbQKS/ZANAwAIAQWDMSsZX2S2AcsmYgBmxe6dlBkL0sqAHkV82+rSk3ED8IQyQvi4gHZz1 - YfE45yCF8SJAjMEAAEIAB0WIQS2UaFGPGq+0GkMVc0FgzErGV9ktgUCZsXunQAKCRAFgzErGV9k - trAoD/9/6KH2Cobld2UEMHFj+Lh80HJIGWdNHdhodfzYtlvCFU8pC/pmYwgBd9Opd24rU+Xh7dU - 8f+9HBKcRKgLmbuUy1fAn84B+kgl/IJtVeHpaP6LRp12NuJudZYl+woPx3mAgz9Wqv/+74nKYok - lVr1q9hbq4ZuMItcuzU5fWoyh7iC3th7KYUhh6939F1PQ8FFeF/5+9jJpRBMpuNZPFETxhlBTwY - YDXZL75cWg6ImurwaM4Hj1zQpHnR8V8HDa5GTTDNMxHOBFYCL+cJ3Bfd0FjqXFsL2/zjefqsewa - 0rWWQPMC8az8WvyczZAvB5JTq+M3VbP7kEWemCdedXmHiJ33dO6+jabm0ikvLooz1z7G6rlwZxZ - P7Rgc3ewW+RHOYbVYFLRKCdFVOFtiwOcEke50gPqQr/sbz0p39olzaE+D8WdNvgjW2uBRzLJDnR - EqyAYWncrWyAANXM3RSiICge87zZ/l4iUb8t8qm/8dYAs8KgPk6YNYVgLxtQqfVFNqnkHlmyy43 - 82JCgSSVggB9phNSVn/poUjlMlaImqGWB+zHDgf968J0a7mz/uFRgVgb8cjuG/Y5oX0xhNMkfqW - 2VymGoOrNlNvBNHyYEoEWgOMRiPvB/lL7PwbM9FFXmNyMMkx6FkzFgyopVkSWvCzKZQfgwBaUev - z00CkhnUndrSe5w== -X-Developer-Key: i=caleb.connolly@linaro.org; a=openpgp; - fpr=83B24DA7FE145076BC38BB250CD904EB673A7C47 -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 - -Enable clocks on SC7280 - -Reviewed-by: Neil Armstrong -Signed-off-by: Caleb Connolly -Reviewed-by: Simon Glass ---- - configs/qcom_defconfig | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/configs/qcom_defconfig b/configs/qcom_defconfig -index 24b71ba7be29..1a079264a554 100644 ---- a/configs/qcom_defconfig -+++ b/configs/qcom_defconfig -@@ -44,8 +44,9 @@ CONFIG_CLK=y - CONFIG_CLK_QCOM_APQ8016=y - CONFIG_CLK_QCOM_APQ8096=y - CONFIG_CLK_QCOM_QCM2290=y - CONFIG_CLK_QCOM_QCS404=y -+CONFIG_CLK_QCOM_SC7280=y - CONFIG_CLK_QCOM_SDM845=y - CONFIG_CLK_QCOM_SM6115=y - CONFIG_CLK_QCOM_SM8250=y - CONFIG_CLK_QCOM_SM8550=y - -From patchwork Wed Aug 21 13:41:51 2024 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Caleb Connolly -X-Patchwork-Id: 1974975 -X-Patchwork-Delegate: caleb.connolly@linaro.org -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=linaro.org header.i=@linaro.org header.a=rsa-sha256 - header.s=google header.b=K30ji2S3; - 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 4WpnbM59VXz1yXf - for ; Wed, 21 Aug 2024 23:43:11 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id D2D6288C25; - Wed, 21 Aug 2024 15:42:06 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -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=linaro.org header.i=@linaro.org header.b="K30ji2S3"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 9300088DD4; Wed, 21 Aug 2024 15:42:03 +0200 (CEST) -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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com - [IPv6:2a00:1450:4864:20::62f]) - (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 3E8D188DBE - for ; Wed, 21 Aug 2024 15:42:01 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=caleb.connolly@linaro.org -Received: by mail-ej1-x62f.google.com with SMTP id - a640c23a62f3a-a7a94478a4eso147841366b.1 - for ; Wed, 21 Aug 2024 06:42:01 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=linaro.org; s=google; t=1724247721; x=1724852521; darn=lists.denx.de; - h=cc:to:in-reply-to:references:message-id:content-transfer-encoding - :mime-version:subject:date:from:from:to:cc:subject:date:message-id - :reply-to; bh=yPrDPgQU7/bvZow9laSNg4WMEx5CRzVugf/oAUblCT4=; - b=K30ji2S3yioeE5/M0vSF0qrx1STvg5+c45nG5Kg+dcjyT1GMIsiX0GbpHc8+aTeWpp - Bd16xS5DE9TAuA1s2WmMq1TNdKHCyyx3MSSHMP9S9SctgsZSxIypHfGf7m6duOmEf5I8 - HBAumCuGiHTW3NkqIl8H2yZjkAbajsM1Q98+NyYJskO8owlNVyczk44QEbJ16Jtmntq6 - u+v7SADVhB3LrWu30OOWnwu/Z/9TVapcDx+ZAGflSfCy5P54TgqYIRYrBtjn9huobmaJ - XJED4Ak8A7iJHUQ5Savv+T4lTPHHfD+J+1NZDr1ciKMujXdnFUuZYcUZLoAn0PHLVsDD - +S6A== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20230601; t=1724247721; x=1724852521; - h=cc:to:in-reply-to:references:message-id:content-transfer-encoding - :mime-version:subject:date:from:x-gm-message-state:from:to:cc - :subject:date:message-id:reply-to; - bh=yPrDPgQU7/bvZow9laSNg4WMEx5CRzVugf/oAUblCT4=; - b=RTxkaBLhQgRZeSdTWakNQdltrcGw4Cw+6Jge9dwNM3Q/YJMSuM1z7N2JGOntXjHxD2 - NZzz61S7FHFOOjYJoubSodORxK53ddoKFuwUvxurdOy+9Y67fPtAweqdd8NJnDdvBrEh - 35wnkzs6ItOpaYe1StAVW06cFPwhqK7ajV3yVdoyKwzCfp8oTYHC5QFJUhi0EM4KnF97 - HepCXvJdv+Qm1/hOVJu19Y6L2RKwXEWztyS53XVwtLOeyKO5x4Qk4PuhnZEAcGkT5lBB - 0kaoF4zSuIX8CVYMJ4oa/4TJg/epJPEtpdDjPDJ2KEWVWbay4/E7PLlgi/tDNndUgOGI - 5vvw== -X-Gm-Message-State: AOJu0Ywpr+aZcIll1/M3ZGdzXawgIEMgRfu4GacRerzZeNne6pIDfvz0 - FBjk4XnDaPXHLxU60pO20RaUjuXG+96oqxwOdmGkP/6Hf3yiMbOJc/ikC/obqxQ= -X-Google-Smtp-Source: - AGHT+IFBBHXs1fwWXLXlqsclsjPN/CITy3andQbbeClu6l28M7g0bUERMexbKgeMqQwwLkcBMwvMRA== -X-Received: by 2002:a17:907:1b2a:b0:a86:668a:8b28 with SMTP id - a640c23a62f3a-a8670182bd0mr296134266b.30.1724247720548; - Wed, 21 Aug 2024 06:42:00 -0700 (PDT) -Received: from [192.168.0.113] ([2a02:8109:aa0d:be00::676e]) - by smtp.gmail.com with ESMTPSA id - a640c23a62f3a-a83839342f6sm904164066b.137.2024.08.21.06.41.59 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Wed, 21 Aug 2024 06:42:00 -0700 (PDT) -From: Caleb Connolly -Date: Wed, 21 Aug 2024 15:41:51 +0200 -Subject: [PATCH v2 6/7] configs: add qcm6490_defconfig -MIME-Version: 1.0 -Message-Id: <20240821-b4-rb3gen2-v2-6-49b07633f3a8@linaro.org> -References: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> -In-Reply-To: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> -To: Tom Rini , Lukasz Majewski , - Sean Anderson , - Caleb Connolly , - Neil Armstrong , - Sumit Garg -Cc: u-boot@lists.denx.de, u-boot-qcom@groups.io -X-Mailer: b4 0.14-dev -X-Developer-Signature: v=1; a=openpgp-sha256; l=1579; - i=caleb.connolly@linaro.org; h=from:subject:message-id; - bh=ACfbGsu6Qfhpulh7cWGr4R2PHD6f1xBOaMcu/oMTV/k=; - b=owEBbQKS/ZANAwAIAQWDMSsZX2S2AcsmYgBmxe6eltJAuAi418HOLC6BvAwvNrE6K+OD4tmaU - 8Agtuwf3TuJAjMEAAEIAB0WIQS2UaFGPGq+0GkMVc0FgzErGV9ktgUCZsXungAKCRAFgzErGV9k - tp2fD/4izqkO8vl46KJDMg5exEAzqayxPJyZcBnhIQyekkEfHowP0Hnr0xDZqbYbl6BAapt+ZBA - 237lBMrvuWc45PJO228GrtQw+7AcU8UqYXvy0mhiS+xUJHhirFotdPZX8jly9sRdw54SUINx7vl - HThC3BXeYgmzugZXoSGA3Dw/d8NZXgf5aCjqXW/pIMBWK4RB/4r84gPQG3dgNT12yTVuNtN81ng - 7UMKgDHnK5kaXNh630td4ZmmJQ2jhUU/DShNLmKJnpe67xiK6DjHJiQqgqqj2ZZ38qvlRRpNYgx - 0iwUSyvlnNrB6dHAyzgUjMFaqxReb+rJKvr7+k9YB1dbmysbh9MM3WlWKmf9P39qLjJp1zBwd5z - 9lolc/k+9FT0hziFLDd1sMPQ0oBSZQQNFxZCEtncn387cDFCvJb/nUZnyt6XVzimfnSfssBGQ/g - A04MCaVXei5UeDZHc2kuv4yi7bWWnN3hZVdkoSHMe5esd0cYlVmz2tBkPzTDWIckquNRo/2dWyE - k5yQoqRVqg/V1GTE0f3B9aL/diPmJdYp+Z2FAAihFEUEOAKSPr+BfGIm2bNoMHUUQRGecjNoitg - qLmRTfs21gQs6x1ZivJ1tm3WGl2u+FUm9uuyYwB0bGnXasAzIBB+F4K2AL3dcULGf3Au2Q4w7Y1 - ULXtGjABlmE9Z5w== -X-Developer-Key: i=caleb.connolly@linaro.org; a=openpgp; - fpr=83B24DA7FE145076BC38BB250CD904EB673A7C47 -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 a defconfig for the RB3 Gen 2 and other QCM6490 boards with a -dedicated uefi partition. These can replace EDK2 entirely with U-Boot. - -Signed-off-by: Caleb Connolly -Reviewed-by: Simon Glass ---- - MAINTAINERS | 1 + - configs/qcm6490_defconfig | 18 ++++++++++++++++++ - 2 files changed, 19 insertions(+) - -diff --git a/MAINTAINERS b/MAINTAINERS -index daaf0345d0e8..7ab39d91a553 100644 ---- a/MAINTAINERS -+++ b/MAINTAINERS -@@ -616,8 +616,9 @@ M: Neil Armstrong - R: Sumit Garg - L: u-boot-qcom@groups.io - S: Maintained - T: git https://source.denx.de/u-boot/custodians/u-boot-snapdragon.git -+F: configs/qcm6490_defconfig - F: drivers/*/*/pm8???-* - F: drivers/gpio/msm_gpio.c - F: drivers/mmc/msm_sdhci.c - F: drivers/phy/msm8916-usbh-phy.c -diff --git a/configs/qcm6490_defconfig b/configs/qcm6490_defconfig -new file mode 100644 -index 000000000000..25413ac9ed5a ---- /dev/null -+++ b/configs/qcm6490_defconfig -@@ -0,0 +1,18 @@ -+# Configuration for building U-Boot to be flashed -+# to the uefi partition of QCM6490 dev boards with -+# the "Linux Embedded" partition layout (which have -+# a dedicated "uefi" partition for edk2/U-Boot) -+ -+#include "qcom_defconfig" -+ -+CONFIG_DEBUG_UART=y -+CONFIG_DEBUG_UART_ANNOUNCE=y -+CONFIG_DEBUG_UART_BASE=0x994000 -+CONFIG_DEBUG_UART_MSM_GENI=y -+CONFIG_DEBUG_UART_CLOCK=14745600 -+ -+# Address where U-Boot will be loaded -+CONFIG_TEXT_BASE=0x9fc00000 -+CONFIG_REMAKE_ELF=y -+ -+CONFIG_DEFAULT_DEVICE_TREE="qcom/qcs6490-rb3gen2" - -From patchwork Wed Aug 21 13:41:52 2024 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Caleb Connolly -X-Patchwork-Id: 1974976 -X-Patchwork-Delegate: caleb.connolly@linaro.org -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=linaro.org header.i=@linaro.org header.a=rsa-sha256 - header.s=google header.b=N7ncWeh3; - 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 4Wpnbc6Cbtz1yXf - for ; Wed, 21 Aug 2024 23:43:24 +1000 (AEST) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 3D6FC88C7E; - Wed, 21 Aug 2024 15:42:07 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -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=linaro.org header.i=@linaro.org header.b="N7ncWeh3"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 78A2D88BF6; Wed, 21 Aug 2024 15:42:05 +0200 (CEST) -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,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com - [IPv6:2a00:1450:4864:20::22a]) - (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 0804988BBC - for ; Wed, 21 Aug 2024 15:42:02 +0200 (CEST) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=caleb.connolly@linaro.org -Received: by mail-lj1-x22a.google.com with SMTP id - 38308e7fff4ca-2f3bfcc2727so47717401fa.0 - for ; Wed, 21 Aug 2024 06:42:02 -0700 (PDT) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=linaro.org; s=google; t=1724247722; x=1724852522; darn=lists.denx.de; - h=cc:to:in-reply-to:references:message-id:content-transfer-encoding - :mime-version:subject:date:from:from:to:cc:subject:date:message-id - :reply-to; bh=IvOluZPLzD78/HF1gfteCSftNGDnvO7+RNQKT4a8rSE=; - b=N7ncWeh3cbNIFm16gC0ycocqUu7FjIH/X5KUs3ng3VOMDiDB9bx6yqvhqYvjQxyBc0 - NtX/AEn+6kLdyYda7FlKDaCMV9zQy5kNC993I5rZ4A9iW9QyJTuwBSzH7qa4sO6gQ1ol - 8Lo1+ZJhhBum9Ni+61giewvGR09iEusCmwVImeU5GAZaibju4E3OPBByXLzP8iW1CXee - Td0YEp/5GqF/suNSfz0LIe3u7qAf4ym1XGfXSuoSZTlAKYusX8Hr8p7r6eeQe98FId8k - K8EtjvWCpjafWWcaMyS2hMQJ9qVg2oN+O0BWIVzab1rmcZfKqTsdCdRmT5zJ8/UuskiJ - ovww== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20230601; t=1724247722; x=1724852522; - h=cc:to:in-reply-to:references:message-id:content-transfer-encoding - :mime-version:subject:date:from:x-gm-message-state:from:to:cc - :subject:date:message-id:reply-to; - bh=IvOluZPLzD78/HF1gfteCSftNGDnvO7+RNQKT4a8rSE=; - b=irJmZUIlQ9YqUetM6kgCgWcp0L2t2cRcBdc7BANQ6GSkyblKM0IhcjmShs/YQLTvfD - kcy+qKFJUBLqwl/GS2t28MNGXs5+jyhkJJtmlWXg0jksArLnCgxQNWggqkJHxHr4QXWm - yQUR1tfzoSdEPgisANBnh6pIR2x4I+INopwPke0bJOnMgq6gauZ6e7Sb5DK8+XfB+ub7 - 4BwZrBRNSgdQL4GZy7yJ7/tDy+Rb77CKeC82GlbeYSYWjhnyNHiApHXii7b3P9K1dIpH - TuIXX+CoDUWK9SpsTDPZQ9TKah8sMs4lll+6bxADx28pav2gXGoDzIq8+8njC4mnAW8D - QRKA== -X-Gm-Message-State: AOJu0YxQDsjOdfe21vx3pm9NQzQM6F9uuV8kmavTQJuc2Dc6UIFEBXIw - Yp6RPVVelZ9sExmiTtDcpYm6jM3fkV9MKKhMmd5jCa8HvsIjbjln6JXyuICIMFA= -X-Google-Smtp-Source: - AGHT+IFOXObF674O6U9t5YWoWgiOsh1cr3c2B3a47ilhjVWpLEAWrw7hptc9n6o8T5A7NFea+26OwA== -X-Received: by 2002:a05:6512:118f:b0:52f:d17e:46b with SMTP id - 2adb3069b0e04-533485eff58mr1798728e87.54.1724247721704; - Wed, 21 Aug 2024 06:42:01 -0700 (PDT) -Received: from [192.168.0.113] ([2a02:8109:aa0d:be00::676e]) - by smtp.gmail.com with ESMTPSA id - a640c23a62f3a-a83839342f6sm904164066b.137.2024.08.21.06.42.00 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Wed, 21 Aug 2024 06:42:01 -0700 (PDT) -From: Caleb Connolly -Date: Wed, 21 Aug 2024 15:41:52 +0200 -Subject: [PATCH v2 7/7] doc: board/qualcomm: document rb3gen2 - building/flashing -MIME-Version: 1.0 -Message-Id: <20240821-b4-rb3gen2-v2-7-49b07633f3a8@linaro.org> -References: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> -In-Reply-To: <20240821-b4-rb3gen2-v2-0-49b07633f3a8@linaro.org> -To: Tom Rini , Lukasz Majewski , - Sean Anderson , - Caleb Connolly , - Neil Armstrong , - Sumit Garg -Cc: u-boot@lists.denx.de, u-boot-qcom@groups.io -X-Mailer: b4 0.14-dev -X-Developer-Signature: v=1; a=openpgp-sha256; l=3002; - i=caleb.connolly@linaro.org; h=from:subject:message-id; - bh=Zfbm5IKZooOMQaYWVdjsboSGnZBH9tpLor1DsgqeCLA=; - b=owEBbQKS/ZANAwAIAQWDMSsZX2S2AcsmYgBmxe6eOpavbRRq/Mmd1u2iOzwt3wx46uoOvpDbB - SjdW6jqdcuJAjMEAAEIAB0WIQS2UaFGPGq+0GkMVc0FgzErGV9ktgUCZsXungAKCRAFgzErGV9k - th2IEACXQhOGwtEPSr0Jpv9CdMJZvP6O7/us/hUgF9Bir4ETF1KQoReZ18goCIPH2bfLWQIT4eN - CS7gQ46J/jZfFKYl2ORIB7BUUfe58/nB4VvbfGfmskbHi4sdVSemgHxu04xNtj1ttCaiVKX58D5 - GLThMjr4w80H1RLlEnlJmDf8RC/bp6PPHv1a9f0mDH3y00HDTJInV1+p8Bp5T/foomvjYfdcB86 - okdAJzhvNDYeA+xQxp5zTAzDoGI1K/5NYiLyqYoNzpb2sVBTjEBl6fiQqZ6q9b6TWoP5H64s3VC - OsD4ZgATKSXgEYuNYGx5XwDd66lN31jnu4BRhav643sBpOwpN/UN3cLVeqHbD5K3QiI6j+afC7w - o1QNNxNE9pBp3ZBWWWWFbbOv+rwy5npvZHZKWUSNC21l2/4hI6XwAFLDlu5nm+yQ+fYdb4HnMc0 - 1kGJhpGz0/guwKXxpSVxijQT5lFbr81ADvFLzoRD33x8EnbG4aFGa6PhIU+H/9TNpDOaDWHQdIb - 18rqauYLxwejAvFKDC8EIWM9n+6Qkn8caR37H11EnKkNX15ZRKn3Oiv7n8Wy6CukVoFquvjL4IU - t/2E8nV32ksuehndbsDXnpRpSAefggkQ9TjkuGaV29j0nvSrlJiCud0Dzj0lTdjxBvJKpaXG7XN - YCCZ/x5nTtnxdyg== -X-Developer-Key: i=caleb.connolly@linaro.org; a=openpgp; - fpr=83B24DA7FE145076BC38BB250CD904EB673A7C47 -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 process here is almost identical to the Dragonboard 410c, we've come -full circle! - -Signed-off-by: Caleb Connolly -Reviewed-by: Simon Glass ---- - doc/board/qualcomm/index.rst | 1 + - doc/board/qualcomm/rb3gen2.rst | 53 ++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 54 insertions(+) - -diff --git a/doc/board/qualcomm/index.rst b/doc/board/qualcomm/index.rst -index 4955274a39bc..8c7969987a97 100644 ---- a/doc/board/qualcomm/index.rst -+++ b/doc/board/qualcomm/index.rst -@@ -6,6 +6,7 @@ Qualcomm - .. toctree:: - :maxdepth: 2 - - dragonboard410c -+ rb3gen2 - board - debugging -diff --git a/doc/board/qualcomm/rb3gen2.rst b/doc/board/qualcomm/rb3gen2.rst -new file mode 100644 -index 000000000000..4240606224f5 ---- /dev/null -+++ b/doc/board/qualcomm/rb3gen2.rst -@@ -0,0 +1,53 @@ -+.. SPDX-License-Identifier: GPL-2.0+ -+.. sectionauthor:: Caleb Connolly -+ -+Qualcomm Robotics RB3 Gen 2 -+=========================== -+ -+The RB3 Gen 2 is a development board based on the Qualcomm QCM6490 SoC (a derivative -+of SC7280). More information can be found on `Qualcomm's product page`_. -+ -+U-Boot can be used as a replacement for Qualcomm's original EDK2 bootloader by -+flashing it directly to the uefi_a (or _b) partition. -+ -+.. _Qualcomm's product page: https://www.qualcomm.com/developer/hardware/rb3-gen-2-development-kit -+ -+Installation -+------------ -+First, setup ``CROSS_COMPILE`` for aarch64. Then, build U-Boot for ``qcm6490``:: -+ -+ $ export CROSS_COMPILE= -+ $ make qcm6490_defconfig -+ $ make -j8 -+ -+This will build ``u-boot.elf`` in the configured output directory. -+ -+Although the RB3 Gen 2 does not have secure boot set up by default, -+the firmware still expects firmware ELF images to be "signed". The signature -+does not provide any security in this case, but it provides the firmware with -+some required metadata. -+ -+To "sign" ``u-boot.elf`` you can use e.g. `qtestsign`_:: -+ -+ $ qtestsign -v6 aboot -o u-boot.mbn u-boot.elf -+ -+Then install the resulting ``u-boot.mbn`` to the ``uefi_a`` partition -+on your device with ``fastboot flash uefi_a u-boot.mbn``. -+ -+U-Boot should be running after a reboot (``fastboot reboot``). -+ -+Note that fastboot is not yet supported in U-Boot on this board, as a result, -+to flash back the original firmware, or new versoins of the U-Boot, EDL mode -+must be used. This can be accessed by pressing the EDL mode button as described -+in the Qualcomm Linux documentation. A tool like bkerler's `edl`_ can be used -+for flashing with the firehose loader binary appropriate for the board. -+ -+.. _qtestsign: https://github.com/msm8916-mainline/qtestsign -+.. _edl: https://github.com/bkerler/edl -+ -+Usage -+----- -+ -+The USB Type-A ports are connected via a PCIe USB hub, which is not supported yet. -+However, the Type-C port can be used with a powered USB dock to connect peripherals -+like a USB stick. diff --git a/aarch64-boards b/aarch64-boards index 0530e42..b66a8a6 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -44,6 +44,7 @@ nanopi_neo_plus2 nanopi_r1s_h5 nanopi-r2c-plus-rk3328 nanopi-r2c-rk3328 +nanopi-r2s-plus-rk3328 nanopi-r2s-rk3328 nanopi-r4s-rk3399 oceanic_5205_5inmfd @@ -79,6 +80,7 @@ puma-rk3399 qcm6490 qcom qemu_arm64 +qemu_arm64_lwip roc-cc-rk3328 rock-4c-plus-rk3399 rock-4se-rk3399 diff --git a/rockchip-Enable-preboot-start-for-pci-usb.patch b/rockchip-Enable-preboot-start-for-pci-usb.patch index 0542ab0..64e6883 100644 --- a/rockchip-Enable-preboot-start-for-pci-usb.patch +++ b/rockchip-Enable-preboot-start-for-pci-usb.patch @@ -1,177 +1,10 @@ -From 3665ff79304fcb47427651125ccc2cfac01cb9f1 Mon Sep 17 00:00:00 2001 +From 020f67a37342b091c74dab93a133253401d4d899 Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Sat, 25 May 2024 12:23:42 +0100 +Date: Tue, 31 Dec 2024 14:15:41 +0000 Subject: [PATCH] rockchip: Enable preboot start for pci/usb Enable the preboot so nvme works OOTB -Signed-off-by: Peter Robinson ---- - configs/firefly-rk3399_defconfig | 2 ++ - configs/nanopc-t4-rk3399_defconfig | 2 ++ - configs/pinebook-pro-rk3399_defconfig | 1 + - configs/roc-pc-mezzanine-rk3399_defconfig | 2 ++ - configs/rock-4c-plus-rk3399_defconfig | 2 ++ - configs/rock-4se-rk3399_defconfig | 2 ++ - configs/rock-pi-4-rk3399_defconfig | 2 ++ - configs/rock-pi-4c-rk3399_defconfig | 2 ++ - configs/rock-pi-n10-rk3399pro_defconfig | 2 ++ - configs/rock960-rk3399_defconfig | 2 ++ - configs/rockpro64-rk3399_defconfig | 2 ++ - 11 files changed, 21 insertions(+) - -diff --git a/configs/firefly-rk3399_defconfig b/configs/firefly-rk3399_defconfig -index edacef29edf..71db7b7834e 100644 ---- a/configs/firefly-rk3399_defconfig -+++ b/configs/firefly-rk3399_defconfig -@@ -14,6 +14,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0x800800 - CONFIG_PCI=y - CONFIG_DEBUG_UART=y -+CONFIG_USE_PREBOOT=y -+CONFIG_PREBOOT="pci enum; usb start; nvme scan;" - CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-firefly.dtb" - CONFIG_DISPLAY_BOARDINFO_LATE=y - CONFIG_SPL_MAX_SIZE=0x40000 -diff --git a/configs/nanopc-t4-rk3399_defconfig b/configs/nanopc-t4-rk3399_defconfig -index c63f4c076d5..7174b82cfa4 100644 ---- a/configs/nanopc-t4-rk3399_defconfig -+++ b/configs/nanopc-t4-rk3399_defconfig -@@ -14,6 +14,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0x800800 - CONFIG_PCI=y - CONFIG_DEBUG_UART=y -+CONFIG_USE_PREBOOT=y -+CONFIG_PREBOOT="pci enum; usb start; nvme scan;" - CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-nanopc-t4.dtb" - CONFIG_DISPLAY_BOARDINFO_LATE=y - CONFIG_SPL_MAX_SIZE=0x40000 -diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig -index 5d3e32f9108..c9b3615f2ff 100644 ---- a/configs/pinebook-pro-rk3399_defconfig -+++ b/configs/pinebook-pro-rk3399_defconfig -@@ -21,6 +21,7 @@ CONFIG_PCI=y - CONFIG_DEBUG_UART=y - CONFIG_BOOTDELAY=3 - CONFIG_USE_PREBOOT=y -+CONFIG_PREBOOT="pci enum; usb start; nvme scan;" - CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-pinebook-pro.dtb" - CONFIG_DISPLAY_BOARDINFO_LATE=y - CONFIG_SPL_MAX_SIZE=0x40000 -diff --git a/configs/roc-pc-mezzanine-rk3399_defconfig b/configs/roc-pc-mezzanine-rk3399_defconfig -index a57899bfdfa..bd7030b237c 100644 ---- a/configs/roc-pc-mezzanine-rk3399_defconfig -+++ b/configs/roc-pc-mezzanine-rk3399_defconfig -@@ -20,6 +20,8 @@ CONFIG_SPL_SPI=y - CONFIG_SYS_LOAD_ADDR=0x800800 - CONFIG_PCI=y - CONFIG_DEBUG_UART=y -+CONFIG_USE_PREBOOT=y -+CONFIG_PREBOOT="pci enum; usb start; nvme scan;" - # CONFIG_ANDROID_BOOT_IMAGE is not set - CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-roc-pc-mezzanine.dtb" - CONFIG_DISPLAY_BOARDINFO_LATE=y -diff --git a/configs/rock-4c-plus-rk3399_defconfig b/configs/rock-4c-plus-rk3399_defconfig -index 80dc44986e7..0ff8afe8e1e 100644 ---- a/configs/rock-4c-plus-rk3399_defconfig -+++ b/configs/rock-4c-plus-rk3399_defconfig -@@ -16,6 +16,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y - CONFIG_SPL_SPI=y - CONFIG_SYS_LOAD_ADDR=0x800800 - CONFIG_DEBUG_UART=y -+CONFIG_USE_PREBOOT=y -+CONFIG_PREBOOT="pci enum; usb start; nvme scan;" - # CONFIG_ANDROID_BOOT_IMAGE is not set - CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rock-4c-plus.dtb" - CONFIG_DISPLAY_BOARDINFO_LATE=y -diff --git a/configs/rock-4se-rk3399_defconfig b/configs/rock-4se-rk3399_defconfig -index f52d4bf9913..72ff304cff7 100644 ---- a/configs/rock-4se-rk3399_defconfig -+++ b/configs/rock-4se-rk3399_defconfig -@@ -17,6 +17,8 @@ CONFIG_SPL_SPI=y - CONFIG_SYS_LOAD_ADDR=0x800800 - CONFIG_PCI=y - CONFIG_DEBUG_UART=y -+CONFIG_USE_PREBOOT=y -+CONFIG_PREBOOT="pci enum; usb start; nvme scan;" - CONFIG_AHCI=y - # CONFIG_ANDROID_BOOT_IMAGE is not set - CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rock-4se.dtb" -diff --git a/configs/rock-pi-4-rk3399_defconfig b/configs/rock-pi-4-rk3399_defconfig -index e71c4588b94..387dbf83be3 100644 ---- a/configs/rock-pi-4-rk3399_defconfig -+++ b/configs/rock-pi-4-rk3399_defconfig -@@ -17,6 +17,8 @@ CONFIG_SPL_SPI=y - CONFIG_SYS_LOAD_ADDR=0x800800 - CONFIG_PCI=y - CONFIG_DEBUG_UART=y -+CONFIG_USE_PREBOOT=y -+CONFIG_PREBOOT="pci enum; usb start; nvme scan;" - CONFIG_AHCI=y - # CONFIG_ANDROID_BOOT_IMAGE is not set - CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rock-pi-4a.dtb" -diff --git a/configs/rock-pi-4c-rk3399_defconfig b/configs/rock-pi-4c-rk3399_defconfig -index 14373933a34..34e09eeccd2 100644 ---- a/configs/rock-pi-4c-rk3399_defconfig -+++ b/configs/rock-pi-4c-rk3399_defconfig -@@ -17,6 +17,8 @@ CONFIG_SPL_SPI=y - CONFIG_SYS_LOAD_ADDR=0x800800 - CONFIG_PCI=y - CONFIG_DEBUG_UART=y -+CONFIG_USE_PREBOOT=y -+CONFIG_PREBOOT="pci enum; usb start; nvme scan;" - CONFIG_AHCI=y - # CONFIG_ANDROID_BOOT_IMAGE is not set - CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rock-pi-4c.dtb" -diff --git a/configs/rock-pi-n10-rk3399pro_defconfig b/configs/rock-pi-n10-rk3399pro_defconfig -index ec995a54a0e..1a973ea2c97 100644 ---- a/configs/rock-pi-n10-rk3399pro_defconfig -+++ b/configs/rock-pi-n10-rk3399pro_defconfig -@@ -13,6 +13,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0x800800 - CONFIG_PCI=y - CONFIG_DEBUG_UART=y -+CONFIG_USE_PREBOOT=y -+CONFIG_PREBOOT="pci enum; usb start; nvme scan;" - # CONFIG_ANDROID_BOOT_IMAGE is not set - CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399pro-rock-pi-n10.dtb" - # CONFIG_CONSOLE_MUX is not set -diff --git a/configs/rock960-rk3399_defconfig b/configs/rock960-rk3399_defconfig -index 8fff3ed17c2..ea6d6d4a319 100644 ---- a/configs/rock960-rk3399_defconfig -+++ b/configs/rock960-rk3399_defconfig -@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0x800800 - CONFIG_PCI=y - CONFIG_DEBUG_UART=y -+CONFIG_USE_PREBOOT=y -+CONFIG_PREBOOT="pci enum; usb start; nvme scan;" - CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rock960.dtb" - CONFIG_SYS_PBSIZE=1052 - CONFIG_DISPLAY_BOARDINFO_LATE=y -diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig -index fc0804a0b80..9a94d96b148 100644 ---- a/configs/rockpro64-rk3399_defconfig -+++ b/configs/rockpro64-rk3399_defconfig -@@ -19,6 +19,8 @@ CONFIG_SPL_SPI=y - CONFIG_SYS_LOAD_ADDR=0x800800 - CONFIG_PCI=y - CONFIG_DEBUG_UART=y -+CONFIG_USE_PREBOOT=y -+CONFIG_PREBOOT="pci enum; usb start; nvme scan;" - CONFIG_BOOTSTAGE=y - CONFIG_BOOTSTAGE_REPORT=y - CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rockpro64.dtb" --- -2.45.1 - -From 5116720be74a92417c69229fc45a97502869ff9b Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Mon, 23 Sep 2024 19:51:00 +0100 -Subject: [PATCH] rockchip: rk35xx: Enable preboot start for pci/usb - -Enable the preboot so nvme works OOTB - Signed-off-by: Peter Robinson --- configs/anbernic-rgxx3-rk3566_defconfig | 2 ++ @@ -181,10 +14,12 @@ Signed-off-by: Peter Robinson configs/coolpi-cm5-evb-rk3588_defconfig | 2 ++ configs/evb-rk3568_defconfig | 2 ++ configs/evb-rk3588_defconfig | 2 ++ + configs/firefly-rk3399_defconfig | 2 ++ configs/generic-rk3568_defconfig | 2 ++ configs/generic-rk3588_defconfig | 2 ++ configs/jaguar-rk3588_defconfig | 2 ++ configs/lubancat-2-rk3568_defconfig | 2 ++ + configs/nanopc-t4-rk3399_defconfig | 2 ++ configs/nanopc-t6-rk3588_defconfig | 2 ++ configs/nanopi-r5c-rk3568_defconfig | 2 ++ configs/nanopi-r5s-rk3568_defconfig | 2 ++ @@ -197,6 +32,7 @@ Signed-off-by: Peter Robinson configs/orangepi-3b-rk3566_defconfig | 2 ++ configs/orangepi-5-plus-rk3588_defconfig | 2 ++ configs/orangepi-5-rk3588s_defconfig | 2 ++ + configs/pinebook-pro-rk3399_defconfig | 1 + configs/pinetab2-rk3566_defconfig | 2 ++ configs/powkiddy-x55-rk3566_defconfig | 2 ++ configs/quartz64-a-rk3566_defconfig | 2 ++ @@ -205,12 +41,20 @@ Signed-off-by: Peter Robinson configs/radxa-cm3-io-rk3566_defconfig | 2 ++ configs/radxa-e25-rk3568_defconfig | 2 ++ configs/radxa-zero-3-rk3566_defconfig | 2 ++ + configs/roc-pc-mezzanine-rk3399_defconfig | 2 ++ configs/rock-3a-rk3568_defconfig | 2 ++ configs/rock-3b-rk3568_defconfig | 2 ++ configs/rock-3c-rk3566_defconfig | 2 ++ + configs/rock-4c-plus-rk3399_defconfig | 2 ++ + configs/rock-4se-rk3399_defconfig | 2 ++ configs/rock-5-itx-rk3588_defconfig | 2 ++ + configs/rock-pi-4-rk3399_defconfig | 2 ++ + configs/rock-pi-4c-rk3399_defconfig | 2 ++ + configs/rock-pi-n10-rk3399pro_defconfig | 2 ++ configs/rock5a-rk3588s_defconfig | 2 ++ configs/rock5b-rk3588_defconfig | 2 ++ + configs/rock960-rk3399_defconfig | 2 ++ + configs/rockpro64-rk3399_defconfig | 2 ++ configs/sige7-rk3588_defconfig | 2 ++ configs/soquartz-blade-rk3566_defconfig | 2 ++ configs/soquartz-cm4-rk3566_defconfig | 2 ++ @@ -218,28 +62,28 @@ Signed-off-by: Peter Robinson configs/tiger-rk3588_defconfig | 2 ++ configs/toybrick-rk3588_defconfig | 2 ++ configs/turing-rk1-rk3588_defconfig | 2 ++ - 44 files changed, 88 insertions(+) + 55 files changed, 109 insertions(+) diff --git a/configs/anbernic-rgxx3-rk3566_defconfig b/configs/anbernic-rgxx3-rk3566_defconfig -index a03509bf467..45cfaf5deb7 100644 +index 14c97b4c5bf..de92e1b4141 100644 --- a/configs/anbernic-rgxx3-rk3566_defconfig +++ b/configs/anbernic-rgxx3-rk3566_defconfig -@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000 +@@ -12,6 +12,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART_BASE=0xFE660000 CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y +CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + # CONFIG_EFI_LOADER is not set CONFIG_FIT=y CONFIG_FIT_VERBOSE=y - CONFIG_SPL_FIT_SIGNATURE=y diff --git a/configs/bpi-r2-pro-rk3568_defconfig b/configs/bpi-r2-pro-rk3568_defconfig -index eccc15a0ae5..57d4fafbef4 100644 +index d84ea2f955f..de777817c37 100644 --- a/configs/bpi-r2-pro-rk3568_defconfig +++ b/configs/bpi-r2-pro-rk3568_defconfig -@@ -9,6 +9,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000 +@@ -9,6 +9,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART_BASE=0xFE660000 CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y +CONFIG_PREBOOT="pci enum; usb start; nvme scan;" @@ -247,11 +91,11 @@ index eccc15a0ae5..57d4fafbef4 100644 CONFIG_FIT=y CONFIG_FIT_VERBOSE=y diff --git a/configs/cm3588-nas-rk3588_defconfig b/configs/cm3588-nas-rk3588_defconfig -index d6d82757a2d..7ef75dfedeb 100644 +index fd0a32d6d79..e561be511d4 100644 --- a/configs/cm3588-nas-rk3588_defconfig +++ b/configs/cm3588-nas-rk3588_defconfig -@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_BASE=0xFEB50000 + CONFIG_DEBUG_UART_CLOCK=24000000 CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -260,11 +104,11 @@ index d6d82757a2d..7ef75dfedeb 100644 CONFIG_FIT_VERBOSE=y CONFIG_SPL_FIT_SIGNATURE=y diff --git a/configs/coolpi-4b-rk3588s_defconfig b/configs/coolpi-4b-rk3588s_defconfig -index 3d45d939abb..6005d0b556b 100644 +index ea985b81670..96d7cffb075 100644 --- a/configs/coolpi-4b-rk3588s_defconfig +++ b/configs/coolpi-4b-rk3588s_defconfig -@@ -16,6 +16,8 @@ CONFIG_SPL_SPI=y - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -17,6 +17,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y + CONFIG_SPL_SPI=y CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -273,11 +117,11 @@ index 3d45d939abb..6005d0b556b 100644 CONFIG_FIT=y CONFIG_FIT_VERBOSE=y diff --git a/configs/coolpi-cm5-evb-rk3588_defconfig b/configs/coolpi-cm5-evb-rk3588_defconfig -index 5190d69c1c5..30f1690fe4d 100644 +index 58ffe7baf5f..5eadc091242 100644 --- a/configs/coolpi-cm5-evb-rk3588_defconfig +++ b/configs/coolpi-cm5-evb-rk3588_defconfig -@@ -16,6 +16,8 @@ CONFIG_SPL_SPI=y - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -17,6 +17,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y + CONFIG_SPL_SPI=y CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -286,12 +130,12 @@ index 5190d69c1c5..30f1690fe4d 100644 CONFIG_FIT=y CONFIG_FIT_VERBOSE=y diff --git a/configs/evb-rk3568_defconfig b/configs/evb-rk3568_defconfig -index 2076f55122b..543c1a7d6ba 100644 +index a068bc6846c..8c94f7b21bc 100644 --- a/configs/evb-rk3568_defconfig +++ b/configs/evb-rk3568_defconfig -@@ -9,6 +9,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000 +@@ -9,6 +9,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART_BASE=0xFE660000 CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y +CONFIG_PREBOOT="pci enum; usb start; nvme scan;" @@ -299,25 +143,38 @@ index 2076f55122b..543c1a7d6ba 100644 CONFIG_FIT_VERBOSE=y CONFIG_SPL_FIT_SIGNATURE=y diff --git a/configs/evb-rk3588_defconfig b/configs/evb-rk3588_defconfig -index 1d5585677a4..44ef0fd0f54 100644 +index 3d4d2747145..051015fd811 100644 --- a/configs/evb-rk3588_defconfig +++ b/configs/evb-rk3588_defconfig -@@ -10,6 +10,8 @@ CONFIG_DEBUG_UART_BASE=0xFEB50000 +@@ -10,6 +10,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART_BASE=0xFEB50000 CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y +CONFIG_PREBOOT="pci enum; usb start; nvme scan;" CONFIG_FIT=y CONFIG_FIT_VERBOSE=y CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/firefly-rk3399_defconfig b/configs/firefly-rk3399_defconfig +index 3871627318b..b96aadc78eb 100644 +--- a/configs/firefly-rk3399_defconfig ++++ b/configs/firefly-rk3399_defconfig +@@ -14,6 +14,8 @@ CONFIG_DEBUG_UART_BASE=0xFF1A0000 + CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-firefly.dtb" + CONFIG_DISPLAY_BOARDINFO_LATE=y + CONFIG_SPL_MAX_SIZE=0x40000 diff --git a/configs/generic-rk3568_defconfig b/configs/generic-rk3568_defconfig -index 66a33afbbaf..b1bfb831aa5 100644 +index f79f0e84400..ba5339a004f 100644 --- a/configs/generic-rk3568_defconfig +++ b/configs/generic-rk3568_defconfig -@@ -13,6 +13,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y +@@ -14,6 +14,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SPL_SPI_FLASH_SUPPORT=y CONFIG_SPL_SPI=y - CONFIG_SYS_LOAD_ADDR=0xc00800 CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y +CONFIG_PREBOOT="pci enum; usb start; nvme scan;" @@ -325,12 +182,12 @@ index 66a33afbbaf..b1bfb831aa5 100644 CONFIG_FIT_VERBOSE=y CONFIG_SPL_FIT_SIGNATURE=y diff --git a/configs/generic-rk3588_defconfig b/configs/generic-rk3588_defconfig -index 42bc2c9a765..6c713094bf0 100644 +index 51e31dce3a9..1c767caa06a 100644 --- a/configs/generic-rk3588_defconfig +++ b/configs/generic-rk3588_defconfig -@@ -10,6 +10,8 @@ CONFIG_DEBUG_UART_BASE=0xFEB50000 +@@ -10,6 +10,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART_BASE=0xFEB50000 CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y +CONFIG_PREBOOT="pci enum; usb start; nvme scan;" @@ -338,11 +195,11 @@ index 42bc2c9a765..6c713094bf0 100644 CONFIG_FIT_VERBOSE=y CONFIG_SPL_FIT_SIGNATURE=y diff --git a/configs/jaguar-rk3588_defconfig b/configs/jaguar-rk3588_defconfig -index 18006467dde..a5d7612d9a5 100644 +index 6e853991d1d..a5a56a33d09 100644 --- a/configs/jaguar-rk3588_defconfig +++ b/configs/jaguar-rk3588_defconfig -@@ -15,6 +15,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -16,6 +16,8 @@ CONFIG_DEBUG_UART_BASE=0xfeb50000 + CONFIG_DEBUG_UART_CLOCK=24000000 CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -351,24 +208,37 @@ index 18006467dde..a5d7612d9a5 100644 CONFIG_FIT_VERBOSE=y CONFIG_SPL_FIT_SIGNATURE=y diff --git a/configs/lubancat-2-rk3568_defconfig b/configs/lubancat-2-rk3568_defconfig -index 88593bfa705..870d8f72317 100644 +index 46cc3c03fff..8915d5bfba9 100644 --- a/configs/lubancat-2-rk3568_defconfig +++ b/configs/lubancat-2-rk3568_defconfig -@@ -9,6 +9,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000 +@@ -9,6 +9,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART_BASE=0xFE660000 CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y +CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_EFI_VAR_BUF_SIZE=16384 CONFIG_FIT=y CONFIG_FIT_VERBOSE=y - CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/nanopc-t4-rk3399_defconfig b/configs/nanopc-t4-rk3399_defconfig +index 26c12c51078..33f7e838c2c 100644 +--- a/configs/nanopc-t4-rk3399_defconfig ++++ b/configs/nanopc-t4-rk3399_defconfig +@@ -14,6 +14,8 @@ CONFIG_DEBUG_UART_BASE=0xFF1A0000 + CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-nanopc-t4.dtb" + CONFIG_DISPLAY_BOARDINFO_LATE=y + CONFIG_SPL_MAX_SIZE=0x40000 diff --git a/configs/nanopc-t6-rk3588_defconfig b/configs/nanopc-t6-rk3588_defconfig -index 926267f93ad..7b0ac43d8c1 100644 +index 772b7df1555..ba6cf48308c 100644 --- a/configs/nanopc-t6-rk3588_defconfig +++ b/configs/nanopc-t6-rk3588_defconfig -@@ -17,6 +17,8 @@ CONFIG_SPL_SPI=y - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -18,6 +18,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y + CONFIG_SPL_SPI=y CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -377,11 +247,11 @@ index 926267f93ad..7b0ac43d8c1 100644 CONFIG_FIT_VERBOSE=y CONFIG_SPL_FIT_SIGNATURE=y diff --git a/configs/nanopi-r5c-rk3568_defconfig b/configs/nanopi-r5c-rk3568_defconfig -index 8e30093ed9d..2c1d7b7435b 100644 +index 4a43b17ccb1..91c95b491d5 100644 --- a/configs/nanopi-r5c-rk3568_defconfig +++ b/configs/nanopi-r5c-rk3568_defconfig -@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000 + CONFIG_DEBUG_UART_CLOCK=24000000 CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -390,11 +260,11 @@ index 8e30093ed9d..2c1d7b7435b 100644 CONFIG_FIT_VERBOSE=y CONFIG_SPL_FIT_SIGNATURE=y diff --git a/configs/nanopi-r5s-rk3568_defconfig b/configs/nanopi-r5s-rk3568_defconfig -index e1865b2e171..1afce812b22 100644 +index a60d229fbbf..355d8114a9b 100644 --- a/configs/nanopi-r5s-rk3568_defconfig +++ b/configs/nanopi-r5s-rk3568_defconfig -@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000 + CONFIG_DEBUG_UART_CLOCK=24000000 CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -403,11 +273,11 @@ index e1865b2e171..1afce812b22 100644 CONFIG_FIT_VERBOSE=y CONFIG_SPL_FIT_SIGNATURE=y diff --git a/configs/nanopi-r6c-rk3588s_defconfig b/configs/nanopi-r6c-rk3588s_defconfig -index f8d2d67bd35..e6e9cf1101a 100644 +index c4de5518a72..92697c536d9 100644 --- a/configs/nanopi-r6c-rk3588s_defconfig +++ b/configs/nanopi-r6c-rk3588s_defconfig -@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_BASE=0xFEB50000 + CONFIG_DEBUG_UART_CLOCK=24000000 CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -416,11 +286,11 @@ index f8d2d67bd35..e6e9cf1101a 100644 CONFIG_FIT_VERBOSE=y CONFIG_SPL_FIT_SIGNATURE=y diff --git a/configs/nanopi-r6s-rk3588s_defconfig b/configs/nanopi-r6s-rk3588s_defconfig -index f7b364655ff..fd28485db93 100644 +index 2726729b9ac..63a3690db8e 100644 --- a/configs/nanopi-r6s-rk3588s_defconfig +++ b/configs/nanopi-r6s-rk3588s_defconfig -@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_BASE=0xFEB50000 + CONFIG_DEBUG_UART_CLOCK=24000000 CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -429,12 +299,12 @@ index f7b364655ff..fd28485db93 100644 CONFIG_FIT_VERBOSE=y CONFIG_SPL_FIT_SIGNATURE=y diff --git a/configs/neu6a-io-rk3588_defconfig b/configs/neu6a-io-rk3588_defconfig -index ac281e65392..3338f0a3160 100644 +index 291e0d26d42..e385aba7bc4 100644 --- a/configs/neu6a-io-rk3588_defconfig +++ b/configs/neu6a-io-rk3588_defconfig -@@ -10,6 +10,8 @@ CONFIG_DEBUG_UART_BASE=0xFEB50000 +@@ -10,6 +10,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART_BASE=0xFEB50000 CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y +CONFIG_PREBOOT="pci enum; usb start; nvme scan;" @@ -442,12 +312,12 @@ index ac281e65392..3338f0a3160 100644 CONFIG_FIT_VERBOSE=y CONFIG_SPL_FIT_SIGNATURE=y diff --git a/configs/neu6b-io-rk3588_defconfig b/configs/neu6b-io-rk3588_defconfig -index c01e5fb0d04..73cc8e6d0ff 100644 +index 4e22852f23c..79f4e66cb9b 100644 --- a/configs/neu6b-io-rk3588_defconfig +++ b/configs/neu6b-io-rk3588_defconfig -@@ -10,6 +10,8 @@ CONFIG_DEBUG_UART_BASE=0xFEB50000 +@@ -10,6 +10,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART_BASE=0xFEB50000 CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y +CONFIG_PREBOOT="pci enum; usb start; nvme scan;" @@ -455,11 +325,11 @@ index c01e5fb0d04..73cc8e6d0ff 100644 CONFIG_FIT_VERBOSE=y CONFIG_SPL_FIT_SIGNATURE=y diff --git a/configs/nova-rk3588s_defconfig b/configs/nova-rk3588s_defconfig -index a2e2440359c..45862f403fb 100644 +index fb30dfd1db8..e99898355e1 100644 --- a/configs/nova-rk3588s_defconfig +++ b/configs/nova-rk3588s_defconfig -@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_BASE=0xFEB50000 + CONFIG_DEBUG_UART_CLOCK=24000000 CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -468,11 +338,11 @@ index a2e2440359c..45862f403fb 100644 CONFIG_FIT_VERBOSE=y CONFIG_SPL_FIT_SIGNATURE=y diff --git a/configs/odroid-m1-rk3568_defconfig b/configs/odroid-m1-rk3568_defconfig -index b5263caff6d..a2217b530d1 100644 +index a8e8a8781e1..a3ea2e592b9 100644 --- a/configs/odroid-m1-rk3568_defconfig +++ b/configs/odroid-m1-rk3568_defconfig -@@ -16,6 +16,8 @@ CONFIG_SPL_SPI=y - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -17,6 +17,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y + CONFIG_SPL_SPI=y CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -481,11 +351,11 @@ index b5263caff6d..a2217b530d1 100644 CONFIG_FIT=y CONFIG_FIT_VERBOSE=y diff --git a/configs/orangepi-3b-rk3566_defconfig b/configs/orangepi-3b-rk3566_defconfig -index 575dc4340d3..817de7b69e6 100644 +index 2181c9caf58..fee0c719f25 100644 --- a/configs/orangepi-3b-rk3566_defconfig +++ b/configs/orangepi-3b-rk3566_defconfig -@@ -17,6 +17,8 @@ CONFIG_SPL_SPI=y - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -18,6 +18,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y + CONFIG_SPL_SPI=y CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -494,11 +364,11 @@ index 575dc4340d3..817de7b69e6 100644 CONFIG_FIT=y CONFIG_FIT_VERBOSE=y diff --git a/configs/orangepi-5-plus-rk3588_defconfig b/configs/orangepi-5-plus-rk3588_defconfig -index 138a633f320..e0aaa8dfb15 100644 +index 9050fceda45..2e1fe2c6dc5 100644 --- a/configs/orangepi-5-plus-rk3588_defconfig +++ b/configs/orangepi-5-plus-rk3588_defconfig -@@ -17,6 +17,8 @@ CONFIG_SPL_SPI=y - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -18,6 +18,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y + CONFIG_SPL_SPI=y CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -507,11 +377,11 @@ index 138a633f320..e0aaa8dfb15 100644 CONFIG_FIT=y CONFIG_FIT_VERBOSE=y diff --git a/configs/orangepi-5-rk3588s_defconfig b/configs/orangepi-5-rk3588s_defconfig -index 33529d4cac3..09d8475d051 100644 +index 6e2ff7d338a..7ec7d13e1f9 100644 --- a/configs/orangepi-5-rk3588s_defconfig +++ b/configs/orangepi-5-rk3588s_defconfig -@@ -16,6 +16,8 @@ CONFIG_SPL_SPI=y - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -17,6 +17,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y + CONFIG_SPL_SPI=y CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -519,13 +389,25 @@ index 33529d4cac3..09d8475d051 100644 CONFIG_AHCI=y CONFIG_FIT=y CONFIG_FIT_VERBOSE=y +diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig +index dfa927ccb17..acc2a0a9fcd 100644 +--- a/configs/pinebook-pro-rk3399_defconfig ++++ b/configs/pinebook-pro-rk3399_defconfig +@@ -22,6 +22,7 @@ CONFIG_PCI=y + CONFIG_DEBUG_UART=y + CONFIG_BOOTDELAY=3 + CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-pinebook-pro.dtb" + CONFIG_DISPLAY_BOARDINFO_LATE=y + CONFIG_SPL_MAX_SIZE=0x40000 diff --git a/configs/pinetab2-rk3566_defconfig b/configs/pinetab2-rk3566_defconfig -index 2d075d12174..fcb3c474044 100644 +index 45e63b42d19..3ef0ddbbe31 100644 --- a/configs/pinetab2-rk3566_defconfig +++ b/configs/pinetab2-rk3566_defconfig -@@ -17,6 +17,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y +@@ -18,6 +18,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SPL_SPI_FLASH_SUPPORT=y CONFIG_SPL_SPI=y - CONFIG_SYS_LOAD_ADDR=0xc00800 CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y +CONFIG_PREBOOT="pci enum; usb start; nvme scan;" @@ -533,12 +415,12 @@ index 2d075d12174..fcb3c474044 100644 CONFIG_FIT_VERBOSE=y CONFIG_SPL_FIT_SIGNATURE=y diff --git a/configs/powkiddy-x55-rk3566_defconfig b/configs/powkiddy-x55-rk3566_defconfig -index 2360bdbe84b..afb7f3ffafb 100644 +index 85280839889..f93a463087b 100644 --- a/configs/powkiddy-x55-rk3566_defconfig +++ b/configs/powkiddy-x55-rk3566_defconfig -@@ -9,6 +9,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000 +@@ -9,6 +9,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART_BASE=0xFE660000 CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y +CONFIG_PREBOOT="pci enum; usb start; nvme scan;" @@ -546,11 +428,11 @@ index 2360bdbe84b..afb7f3ffafb 100644 CONFIG_FIT_VERBOSE=y CONFIG_SPL_FIT_SIGNATURE=y diff --git a/configs/quartz64-a-rk3566_defconfig b/configs/quartz64-a-rk3566_defconfig -index 1ea8e0f40cc..a4211afb6a9 100644 +index fe3fa37611a..60b1f8f1784 100644 --- a/configs/quartz64-a-rk3566_defconfig +++ b/configs/quartz64-a-rk3566_defconfig -@@ -17,6 +17,8 @@ CONFIG_SPL_SPI=y - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -18,6 +18,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y + CONFIG_SPL_SPI=y CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -559,11 +441,11 @@ index 1ea8e0f40cc..a4211afb6a9 100644 CONFIG_FIT=y CONFIG_FIT_VERBOSE=y diff --git a/configs/quartz64-b-rk3566_defconfig b/configs/quartz64-b-rk3566_defconfig -index f61b2c181a1..408b63dbb08 100644 +index 929736f76af..c3155d9b835 100644 --- a/configs/quartz64-b-rk3566_defconfig +++ b/configs/quartz64-b-rk3566_defconfig -@@ -16,6 +16,8 @@ CONFIG_SPL_SPI=y - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -17,6 +17,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y + CONFIG_SPL_SPI=y CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -572,11 +454,11 @@ index f61b2c181a1..408b63dbb08 100644 CONFIG_FIT=y CONFIG_FIT_VERBOSE=y diff --git a/configs/quartzpro64-rk3588_defconfig b/configs/quartzpro64-rk3588_defconfig -index 06c5cff3ca5..dccc550d4ef 100644 +index ade7be27e92..263d21bee8b 100644 --- a/configs/quartzpro64-rk3588_defconfig +++ b/configs/quartzpro64-rk3588_defconfig -@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_BASE=0xFEB50000 + CONFIG_DEBUG_UART_CLOCK=24000000 CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -585,12 +467,12 @@ index 06c5cff3ca5..dccc550d4ef 100644 CONFIG_FIT=y CONFIG_FIT_VERBOSE=y diff --git a/configs/radxa-cm3-io-rk3566_defconfig b/configs/radxa-cm3-io-rk3566_defconfig -index 48c8fcf5a66..65198e4a507 100644 +index 2655fdc3170..c1a27f6e310 100644 --- a/configs/radxa-cm3-io-rk3566_defconfig +++ b/configs/radxa-cm3-io-rk3566_defconfig -@@ -9,6 +9,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000 +@@ -9,6 +9,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART_BASE=0xFE660000 CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y +CONFIG_PREBOOT="pci enum; usb start; nvme scan;" @@ -598,11 +480,11 @@ index 48c8fcf5a66..65198e4a507 100644 CONFIG_FIT_VERBOSE=y CONFIG_SPL_FIT_SIGNATURE=y diff --git a/configs/radxa-e25-rk3568_defconfig b/configs/radxa-e25-rk3568_defconfig -index 496fee0e0a4..b726e47c3e0 100644 +index 4df594ddc01..3830d27b264 100644 --- a/configs/radxa-e25-rk3568_defconfig +++ b/configs/radxa-e25-rk3568_defconfig -@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000 + CONFIG_DEBUG_UART_CLOCK=24000000 CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -611,24 +493,37 @@ index 496fee0e0a4..b726e47c3e0 100644 CONFIG_FIT=y CONFIG_FIT_VERBOSE=y diff --git a/configs/radxa-zero-3-rk3566_defconfig b/configs/radxa-zero-3-rk3566_defconfig -index 7606edf393e..d1611a638ae 100644 +index 5989b07ad79..1b571ec3847 100644 --- a/configs/radxa-zero-3-rk3566_defconfig +++ b/configs/radxa-zero-3-rk3566_defconfig -@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000 +@@ -11,6 +11,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART_BASE=0xFE660000 CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y +CONFIG_PREBOOT="pci enum; usb start; nvme scan;" CONFIG_FIT=y CONFIG_FIT_VERBOSE=y CONFIG_SPL_FIT_SIGNATURE=y +diff --git a/configs/roc-pc-mezzanine-rk3399_defconfig b/configs/roc-pc-mezzanine-rk3399_defconfig +index 3ab5fd69c62..ba254d8f6c0 100644 +--- a/configs/roc-pc-mezzanine-rk3399_defconfig ++++ b/configs/roc-pc-mezzanine-rk3399_defconfig +@@ -21,6 +21,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y + CONFIG_SPL_SPI=y + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + # CONFIG_ANDROID_BOOT_IMAGE is not set + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-roc-pc-mezzanine.dtb" + CONFIG_DISPLAY_BOARDINFO_LATE=y diff --git a/configs/rock-3a-rk3568_defconfig b/configs/rock-3a-rk3568_defconfig -index 66ac2f6d7aa..1500691419d 100644 +index 733ce631457..3387796a0c5 100644 --- a/configs/rock-3a-rk3568_defconfig +++ b/configs/rock-3a-rk3568_defconfig -@@ -15,6 +15,8 @@ CONFIG_SPL_SPI=y - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -16,6 +16,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y + CONFIG_SPL_SPI=y CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -637,11 +532,11 @@ index 66ac2f6d7aa..1500691419d 100644 CONFIG_FIT=y CONFIG_FIT_VERBOSE=y diff --git a/configs/rock-3b-rk3568_defconfig b/configs/rock-3b-rk3568_defconfig -index 937796811a9..38d048439ed 100644 +index 2023feb36c2..84c6aab6b33 100644 --- a/configs/rock-3b-rk3568_defconfig +++ b/configs/rock-3b-rk3568_defconfig -@@ -15,6 +15,8 @@ CONFIG_SPL_SPI=y - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -16,6 +16,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y + CONFIG_SPL_SPI=y CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -650,11 +545,11 @@ index 937796811a9..38d048439ed 100644 CONFIG_FIT=y CONFIG_FIT_VERBOSE=y diff --git a/configs/rock-3c-rk3566_defconfig b/configs/rock-3c-rk3566_defconfig -index f44b202c8c3..488b1c4e0c3 100644 +index 2528c7c639c..0a0010b1268 100644 --- a/configs/rock-3c-rk3566_defconfig +++ b/configs/rock-3c-rk3566_defconfig -@@ -15,6 +15,8 @@ CONFIG_SPL_SPI=y - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -16,6 +16,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y + CONFIG_SPL_SPI=y CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -662,12 +557,38 @@ index f44b202c8c3..488b1c4e0c3 100644 CONFIG_AHCI=y CONFIG_FIT=y CONFIG_FIT_VERBOSE=y +diff --git a/configs/rock-4c-plus-rk3399_defconfig b/configs/rock-4c-plus-rk3399_defconfig +index 0c73a212ea1..2ae2eff39e2 100644 +--- a/configs/rock-4c-plus-rk3399_defconfig ++++ b/configs/rock-4c-plus-rk3399_defconfig +@@ -17,6 +17,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SPL_SPI_FLASH_SUPPORT=y + CONFIG_SPL_SPI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_EFI_CAPSULE_ON_DISK=y + CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y + # CONFIG_ANDROID_BOOT_IMAGE is not set +diff --git a/configs/rock-4se-rk3399_defconfig b/configs/rock-4se-rk3399_defconfig +index 3ae19692155..12621b8a41b 100644 +--- a/configs/rock-4se-rk3399_defconfig ++++ b/configs/rock-4se-rk3399_defconfig +@@ -18,6 +18,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y + CONFIG_SPL_SPI=y + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y + CONFIG_EFI_CAPSULE_ON_DISK=y + CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y diff --git a/configs/rock-5-itx-rk3588_defconfig b/configs/rock-5-itx-rk3588_defconfig -index bb9f148692a..1d6a9e9465b 100644 +index d0dd1c20ece..b3a778907c8 100644 --- a/configs/rock-5-itx-rk3588_defconfig +++ b/configs/rock-5-itx-rk3588_defconfig -@@ -17,6 +17,8 @@ CONFIG_SPL_SPI=y - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -18,6 +18,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y + CONFIG_SPL_SPI=y CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -675,13 +596,52 @@ index bb9f148692a..1d6a9e9465b 100644 CONFIG_AHCI=y CONFIG_FIT=y CONFIG_FIT_VERBOSE=y +diff --git a/configs/rock-pi-4-rk3399_defconfig b/configs/rock-pi-4-rk3399_defconfig +index f3a5c2c45f3..d95576e804a 100644 +--- a/configs/rock-pi-4-rk3399_defconfig ++++ b/configs/rock-pi-4-rk3399_defconfig +@@ -18,6 +18,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y + CONFIG_SPL_SPI=y + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y + CONFIG_EFI_CAPSULE_ON_DISK=y + CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y +diff --git a/configs/rock-pi-4c-rk3399_defconfig b/configs/rock-pi-4c-rk3399_defconfig +index 9bda50c8c77..d26eb3dcb44 100644 +--- a/configs/rock-pi-4c-rk3399_defconfig ++++ b/configs/rock-pi-4c-rk3399_defconfig +@@ -18,6 +18,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y + CONFIG_SPL_SPI=y + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_AHCI=y + CONFIG_EFI_CAPSULE_ON_DISK=y + CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y +diff --git a/configs/rock-pi-n10-rk3399pro_defconfig b/configs/rock-pi-n10-rk3399pro_defconfig +index a9c6d8a907a..1cde3859eef 100644 +--- a/configs/rock-pi-n10-rk3399pro_defconfig ++++ b/configs/rock-pi-n10-rk3399pro_defconfig +@@ -13,6 +13,8 @@ CONFIG_DEBUG_UART_BASE=0xFF1A0000 + CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + # CONFIG_ANDROID_BOOT_IMAGE is not set + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399pro-rock-pi-n10.dtb" + # CONFIG_CONSOLE_MUX is not set diff --git a/configs/rock5a-rk3588s_defconfig b/configs/rock5a-rk3588s_defconfig -index c09e6655f02..39602d86845 100644 +index 9618d590009..9608f7e7e4c 100644 --- a/configs/rock5a-rk3588s_defconfig +++ b/configs/rock5a-rk3588s_defconfig -@@ -10,6 +10,8 @@ CONFIG_DEBUG_UART_BASE=0xFEB50000 +@@ -10,6 +10,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART_BASE=0xFEB50000 CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y +CONFIG_PREBOOT="pci enum; usb start; nvme scan;" @@ -689,11 +649,11 @@ index c09e6655f02..39602d86845 100644 CONFIG_FIT_VERBOSE=y CONFIG_SPL_FIT_SIGNATURE=y diff --git a/configs/rock5b-rk3588_defconfig b/configs/rock5b-rk3588_defconfig -index 80a2f2fed58..d3cc8a19cfd 100644 +index 47ee2109f8e..e1c6961a3ab 100644 --- a/configs/rock5b-rk3588_defconfig +++ b/configs/rock5b-rk3588_defconfig -@@ -17,6 +17,8 @@ CONFIG_SPL_SPI=y - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -18,6 +18,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y + CONFIG_SPL_SPI=y CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -701,12 +661,38 @@ index 80a2f2fed58..d3cc8a19cfd 100644 CONFIG_AHCI=y CONFIG_FIT=y CONFIG_FIT_VERBOSE=y +diff --git a/configs/rock960-rk3399_defconfig b/configs/rock960-rk3399_defconfig +index aebfa73459c..8b60ad3bf00 100644 +--- a/configs/rock960-rk3399_defconfig ++++ b/configs/rock960-rk3399_defconfig +@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_BASE=0xFF1A0000 + CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rock960.dtb" + CONFIG_SYS_PBSIZE=1052 + CONFIG_DISPLAY_BOARDINFO_LATE=y +diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig +index 08b7e2784e9..d80e120c66f 100644 +--- a/configs/rockpro64-rk3399_defconfig ++++ b/configs/rockpro64-rk3399_defconfig +@@ -20,6 +20,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y + CONFIG_SPL_SPI=y + CONFIG_PCI=y + CONFIG_DEBUG_UART=y ++CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="pci enum; usb start; nvme scan;" + CONFIG_BOOTSTAGE=y + CONFIG_BOOTSTAGE_REPORT=y + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rockpro64.dtb" diff --git a/configs/sige7-rk3588_defconfig b/configs/sige7-rk3588_defconfig -index d15fc09fc8d..c77919cac79 100644 +index 8b033e22b84..978df10442c 100644 --- a/configs/sige7-rk3588_defconfig +++ b/configs/sige7-rk3588_defconfig -@@ -13,6 +13,8 @@ CONFIG_SPL_SPI=y - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -13,6 +13,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + CONFIG_SPL_SPI=y CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -715,11 +701,11 @@ index d15fc09fc8d..c77919cac79 100644 CONFIG_FIT=y CONFIG_FIT_VERBOSE=y diff --git a/configs/soquartz-blade-rk3566_defconfig b/configs/soquartz-blade-rk3566_defconfig -index 82910daf7cc..09fc6b6b6e5 100644 +index a1a51b2c657..4083f217c0b 100644 --- a/configs/soquartz-blade-rk3566_defconfig +++ b/configs/soquartz-blade-rk3566_defconfig -@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000 + CONFIG_DEBUG_UART_CLOCK=24000000 CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -728,11 +714,11 @@ index 82910daf7cc..09fc6b6b6e5 100644 CONFIG_FIT=y CONFIG_FIT_VERBOSE=y diff --git a/configs/soquartz-cm4-rk3566_defconfig b/configs/soquartz-cm4-rk3566_defconfig -index 5744f1baa81..e5a9ee1938b 100644 +index a8bca0eaccc..c3dd48d9dc1 100644 --- a/configs/soquartz-cm4-rk3566_defconfig +++ b/configs/soquartz-cm4-rk3566_defconfig -@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000 + CONFIG_DEBUG_UART_CLOCK=24000000 CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -741,11 +727,11 @@ index 5744f1baa81..e5a9ee1938b 100644 CONFIG_FIT=y CONFIG_FIT_VERBOSE=y diff --git a/configs/soquartz-model-a-rk3566_defconfig b/configs/soquartz-model-a-rk3566_defconfig -index 920df9b622d..efcd3f5bc77 100644 +index f080d2e36d2..f6f2f67b0a6 100644 --- a/configs/soquartz-model-a-rk3566_defconfig +++ b/configs/soquartz-model-a-rk3566_defconfig -@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000 + CONFIG_DEBUG_UART_CLOCK=24000000 CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -754,11 +740,11 @@ index 920df9b622d..efcd3f5bc77 100644 CONFIG_FIT=y CONFIG_FIT_VERBOSE=y diff --git a/configs/tiger-rk3588_defconfig b/configs/tiger-rk3588_defconfig -index 8eb1027e449..39e4946b0bf 100644 +index f962ac416f3..1fc7301f6ae 100644 --- a/configs/tiger-rk3588_defconfig +++ b/configs/tiger-rk3588_defconfig -@@ -16,6 +16,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -17,6 +17,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 + # CONFIG_DEBUG_UART_BOARD_INIT is not set CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -767,12 +753,12 @@ index 8eb1027e449..39e4946b0bf 100644 CONFIG_FIT_VERBOSE=y CONFIG_SPL_FIT_SIGNATURE=y diff --git a/configs/toybrick-rk3588_defconfig b/configs/toybrick-rk3588_defconfig -index 12a076aeeae..c70210c0dee 100644 +index 5e70341c987..fd7e842f9e5 100644 --- a/configs/toybrick-rk3588_defconfig +++ b/configs/toybrick-rk3588_defconfig -@@ -10,6 +10,8 @@ CONFIG_DEBUG_UART_BASE=0xFEB50000 +@@ -10,6 +10,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800 + CONFIG_DEBUG_UART_BASE=0xFEB50000 CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y +CONFIG_PREBOOT="pci enum; usb start; nvme scan;" @@ -780,11 +766,11 @@ index 12a076aeeae..c70210c0dee 100644 CONFIG_FIT_VERBOSE=y CONFIG_SPL_FIT_SIGNATURE=y diff --git a/configs/turing-rk1-rk3588_defconfig b/configs/turing-rk1-rk3588_defconfig -index e6e1bda7ec1..e1bf365edc8 100644 +index 0eddf15833c..1a9aacc7b5d 100644 --- a/configs/turing-rk1-rk3588_defconfig +++ b/configs/turing-rk1-rk3588_defconfig -@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000 - CONFIG_SYS_LOAD_ADDR=0xc00800 +@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_BASE=0xFEBC0000 + CONFIG_DEBUG_UART_CLOCK=24000000 CONFIG_PCI=y CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y @@ -793,5 +779,5 @@ index e6e1bda7ec1..e1bf365edc8 100644 CONFIG_FIT=y CONFIG_FIT_VERBOSE=y -- -2.46.1 +2.47.1 diff --git a/rpi-Add-identifiers-for-the-new-RPi-5-series.patch b/rpi-Add-identifiers-for-the-new-RPi-5-series.patch new file mode 100644 index 0000000..66db2ca --- /dev/null +++ b/rpi-Add-identifiers-for-the-new-RPi-5-series.patch @@ -0,0 +1,43 @@ +From 49423505898eef1baefa2823408dad8321571353 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Sun, 29 Dec 2024 14:43:33 +0000 +Subject: [PATCH] rpi: Add identifiers for the new RPi 5 series + +The Raspberry Pi foundation have released the Raspberry +Pi 500, CM5 an CM5 lite devices so add the assoicated +revision identifers so we can detect them. + +Signed-off-by: Peter Robinson +--- + board/raspberrypi/rpi/rpi.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c +index 18be244aa79..1e43c631898 100644 +--- a/board/raspberrypi/rpi/rpi.c ++++ b/board/raspberrypi/rpi/rpi.c +@@ -193,6 +193,21 @@ static const struct rpi_model rpi_models_new_scheme[] = { + DTB_DIR "bcm2712-rpi-5-b.dtb", + true, + }, ++ [0x18] = { ++ "Compute Module 5", ++ DTB_DIR "bcm2712-rpi-cm5-cm5io.dtb", ++ true, ++ }, ++ [0x19] = { ++ "500", ++ DTB_DIR "bcm2712-rpi-500.dtb", ++ true, ++ }, ++ [0x1A] = { ++ "Compute Module 5 Lite", ++ DTB_DIR "bcm2712-rpi-cm5l-cm5io.dtb", ++ true, ++ }, + }; + + static const struct rpi_model rpi_models_old_scheme[] = { +-- +2.47.1 + diff --git a/rpi-Pass-CMA-through-from-firmware-DT.patch b/rpi-Pass-CMA-through-from-firmware-DT.patch deleted file mode 100644 index 1185095..0000000 --- a/rpi-Pass-CMA-through-from-firmware-DT.patch +++ /dev/null @@ -1,40 +0,0 @@ -From c449955f6aece3148ccf67890df1083fb3a41884 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Fri, 11 Oct 2024 12:04:10 +0100 -Subject: [PATCH] board: rpi: Pass CMA through from firmware DT - -For a lot of usecases, such as display, camera, media -the Raspberry Pi needs a lot more CMA than distros -configure as default so we should pass this parameter -through so things work as expected. Fix a spelling -mistake while we're at it. - -Signed-off-by: Peter Robinson ---- - board/raspberrypi/rpi/rpi.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c -index ab5ea85cf9f..dd5a318d239 100644 ---- a/board/raspberrypi/rpi/rpi.c -+++ b/board/raspberrypi/rpi/rpi.c -@@ -540,12 +540,15 @@ void update_fdt_from_fw(void *fdt, void *fw_fdt) - if (fdt == fw_fdt) - return; - -- /* The firmware provides a more precie model; so copy that */ -+ /* The firmware provides a more precise model; so copy that */ - copy_property(fdt, fw_fdt, "/", "model"); - - /* memory reserve as suggested by the firmware */ - copy_property(fdt, fw_fdt, "/", "memreserve"); - -+ /* copy the CMA memory setting from the firmware DT to linux */ -+ copy_property(fdt, fw_fdt, "/reserved-memory/linux,cma", "size"); -+ - /* Adjust dma-ranges for the SD card and PCI bus as they can depend on - * the SoC revision - */ --- -2.47.0 - diff --git a/sources b/sources index 82c8edc..467430d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2024.10.tar.bz2) = ef817c9b5ae8dc6cd9e3f57811e90acc6a4d4394f0356aa5923e3e3c8559168f977bd5bf82824cd3650aa8e5e3c3d1b00e20818d21368151748682f1fc51152c +SHA512 (u-boot-2025.01-rc4.tar.bz2) = d088cee1947ede1f1db6eb1dc5e5e583aa44e9c8508eae4420a91b2f83826767e1978c8e85e9c76aaf84921a64c69248386d7ab117b82563ae0daad1443d7ad4 diff --git a/uboot-tools.spec b/uboot-tools.spec index 3ebc11a..a4b1e4e 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -#global candidate rc0 +%global candidate rc6 %if 0%{?rhel} %bcond_with toolsonly %else @@ -6,8 +6,8 @@ %endif Name: uboot-tools -Version: 2024.10 -Release: 1%{?candidate:.%{candidate}}%{?dist} +Version: 2025.01 +Release: 0.1%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities # Automatically converted from old format: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ - review is highly recommended. @@ -29,14 +29,12 @@ Patch5: enable-bootmenu-by-default.patch # Should be upstream but it's taking time #Patch6: Add-video-damage-tracking.patch -# Rockchips improvements -Patch10: rockchip-Enable-preboot-start-for-pci-usb.patch -Patch11: FUSB302-USB-C-controller-support.patch -Patch12: rockchip-Modernise-Geekbox-config.patch -# QCom -Patch15: Qualcomm-add-support-for-SC7280-and-the-RB3-Gen-2.patch +# Device improvments # RPi -Patch20: rpi-Pass-CMA-through-from-firmware-DT.patch +Patch10: rpi-Add-identifiers-for-the-new-RPi-5-series.patch +# Rockchips improvements +Patch11: rockchip-Enable-preboot-start-for-pci-usb.patch +#Patch12: rockchip-Modernise-Geekbox-config.patch BuildRequires: bc BuildRequires: bison @@ -122,7 +120,7 @@ do echo "Board: $board using sun50i_h616" cp /usr/share/arm-trusted-firmware/sun50i_h616/bl31.bin builds/$(echo $board)/atf-bl31 fi - rk3328=(evb-rk3328 nanopi-r2c-plus-rk3328 nanopi-r2c-rk3328 nanopi-r2s-rk3328 orangepi-r1-plus-lts-rk3328 orangepi-r1-plus-rk3328 roc-cc-rk3328 rock64-rk3328 rock-pi-e-rk3328 rock-pi-e-v3-rk3328) + rk3328=(evb-rk3328 nanopi-r2c-plus-rk3328 nanopi-r2c-rk3328 nanopi-r2s-rk3328 nanopi-r2s-plus-rk3328 orangepi-r1-plus-lts-rk3328 orangepi-r1-plus-rk3328 roc-cc-rk3328 rock64-rk3328 rock-pi-e-rk3328 rock-pi-e-v3-rk3328) if [[ " ${rk3328[*]} " == *" $board "* ]]; then echo "Board: $board using rk3328" cp /usr/share/arm-trusted-firmware/rk3328/bl31.elf builds/$(echo $board)/atf-bl31 @@ -220,6 +218,9 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Tue Dec 31 2024 Peter Robinson - 1:2025.01-0.1.rc6 +- Update to 2025.01 RC6 + * Fri Oct 11 2024 Peter Robinson - 1:2024.10-1 - Update to 2024.10 GA - Fix passing RPi firmware CMA setting to kernel DT diff --git a/uefi-initial-find_fdt_location-for-finding-the-DT-on-disk.patch b/uefi-initial-find_fdt_location-for-finding-the-DT-on-disk.patch index 232e121..c45924d 100644 --- a/uefi-initial-find_fdt_location-for-finding-the-DT-on-disk.patch +++ b/uefi-initial-find_fdt_location-for-finding-the-DT-on-disk.patch @@ -1,6 +1,6 @@ -From 8abb44f89aefd25cda27c54c08b68b3a60bea7c3 Mon Sep 17 00:00:00 2001 +From 121fd475757e183428ca78f43420c42b9973aa33 Mon Sep 17 00:00:00 2001 From: Peter Robinson -Date: Thu, 21 Mar 2024 13:43:24 +0000 +Date: Tue, 31 Dec 2024 14:11:12 +0000 Subject: [PATCH] initial find_fdt_location for finding the DT on disk The old distro boot looked for a DT on the first boot partition @@ -23,10 +23,10 @@ Signed-off-by: Peter Robinson 4 files changed, 112 insertions(+), 1 deletion(-) diff --git a/cmd/bootefi.c b/cmd/bootefi.c -index 9cf9027bf40..8b6194a8702 100644 +index c1454ffb948..ec869047f05 100644 --- a/cmd/bootefi.c +++ b/cmd/bootefi.c -@@ -144,6 +144,7 @@ static int do_bootefi(struct cmd_tbl *cmdtp, int flag, int argc, +@@ -143,6 +143,7 @@ static int do_bootefi(struct cmd_tbl *cmdtp, int flag, int argc, if (argc > 2) { uintptr_t fdt_addr; @@ -35,10 +35,10 @@ index 9cf9027bf40..8b6194a8702 100644 fdt = map_sysmem(fdt_addr, 0); } else { diff --git a/cmd/bootmenu.c b/cmd/bootmenu.c -index 78184fccab2..48368c8d42e 100644 +index b633aedf011..96a71a96820 100644 --- a/cmd/bootmenu.c +++ b/cmd/bootmenu.c -@@ -448,6 +448,11 @@ static void handle_uefi_bootnext(void) +@@ -461,6 +461,11 @@ static void handle_uefi_bootnext(void) u16 bootnext; efi_status_t ret; efi_uintn_t size; @@ -51,10 +51,10 @@ index 78184fccab2..48368c8d42e 100644 /* Initialize EFI drivers */ ret = efi_init_obj_list(); diff --git a/include/efi_loader.h b/include/efi_loader.h -index 7daca0afba2..a969378ff2f 100644 +index 39809eac1bc..511eba655e7 100644 --- a/include/efi_loader.h +++ b/include/efi_loader.h -@@ -524,6 +524,8 @@ struct efi_register_notify_event { +@@ -514,6 +514,8 @@ struct efi_register_notify_event { struct list_head handles; }; @@ -64,7 +64,7 @@ index 7daca0afba2..a969378ff2f 100644 int efi_init_early(void); /* Initialize efi execution environment */ diff --git a/lib/efi_loader/efi_helper.c b/lib/efi_loader/efi_helper.c -index 5dd9cc876e4..a33ec39ff74 100644 +index bf96f61d3d0..3f496cc0dfb 100644 --- a/lib/efi_loader/efi_helper.c +++ b/lib/efi_loader/efi_helper.c @@ -12,6 +12,7 @@ @@ -72,12 +72,12 @@ index 5dd9cc876e4..a33ec39ff74 100644 #include #include +#include + #include #include #include - #include -@@ -24,6 +25,99 @@ - const efi_guid_t efi_lf2_initrd_guid = EFI_INITRD_MEDIA_GUID; - #endif +@@ -95,6 +96,99 @@ int efi_get_pxe_arch(void) + return -EINVAL; + } +/* We need to pass a blk device in and return a location, or a loaded DT */ +char *find_fdt_location(void) @@ -175,7 +175,7 @@ index 5dd9cc876e4..a33ec39ff74 100644 /** * efi_create_current_boot_var() - Return Boot#### name were #### is replaced by * the value of BootCurrent -@@ -432,11 +526,20 @@ efi_status_t efi_install_fdt(void *fdt) +@@ -548,11 +642,20 @@ efi_status_t efi_install_fdt(void *fdt) /* Look for device tree that is already installed */ if (efi_get_configuration_table(&efi_guid_fdt)) return EFI_SUCCESS; @@ -195,8 +195,8 @@ index 5dd9cc876e4..a33ec39ff74 100644 fdt_opt = env_get("fdtcontroladdr"); + log_debug("Using DT from U-Boot\n"); if (!fdt_opt) { - log_err("ERROR: need device tree\n"); + log_err("need device tree\n"); return EFI_NOT_FOUND; -- -2.44.0 +2.47.1 From f7a78315e4c2c70e8ba1990fedf4f9e0be27ac19 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Thu, 2 Jan 2025 10:08:31 +0000 Subject: [PATCH 202/271] Upload RC6 source --- sources | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources b/sources index 467430d..ed581bf 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2025.01-rc4.tar.bz2) = d088cee1947ede1f1db6eb1dc5e5e583aa44e9c8508eae4420a91b2f83826767e1978c8e85e9c76aaf84921a64c69248386d7ab117b82563ae0daad1443d7ad4 +SHA512 (u-boot-2025.01-rc6.tar.bz2) = 17860d15410b2d8c88611b3040082869a9a21596c705f0137d46a28a107c3cad3f482e992fd9a5fb101488e8691ce9dd16ca8ef38d8a74b0514c26d32afca700 From eb2323f190918283f861e718f7b1ca7f26625ecf Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 6 Jan 2025 15:25:03 +0000 Subject: [PATCH 203/271] Rebuild for TF-A 2.12 --- uboot-tools.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index a4b1e4e..1d5efa6 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2025.01 -Release: 0.1%{?candidate:.%{candidate}}%{?dist} +Release: 0.2%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities # Automatically converted from old format: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ - review is highly recommended. @@ -218,6 +218,9 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Mon Jan 06 2025 Peter Robinson - 1:2025.01-0.2.rc6 +- Rebuild for TF-A 2.12 + * Tue Dec 31 2024 Peter Robinson - 1:2025.01-0.1.rc6 - Update to 2025.01 RC6 From d3e7f7d440edf713d7a54e9a0759a08b866de930 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 7 Jan 2025 09:49:48 +0000 Subject: [PATCH 204/271] 2025.01 GA --- sources | 2 +- uboot-tools.spec | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sources b/sources index ed581bf..da1e0e7 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2025.01-rc6.tar.bz2) = 17860d15410b2d8c88611b3040082869a9a21596c705f0137d46a28a107c3cad3f482e992fd9a5fb101488e8691ce9dd16ca8ef38d8a74b0514c26d32afca700 +SHA512 (u-boot-2025.01.tar.bz2) = e22202b568f90de15e4e20317e13d68ce106256eadeeae5017241cdd4a1d133cdfd14297b403c7391bf65d022061ad4e1cbe862c480fddbd13f97b756305f188 diff --git a/uboot-tools.spec b/uboot-tools.spec index 1d5efa6..06ba9bf 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc6 +#global candidate rc0 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2025.01 -Release: 0.2%{?candidate:.%{candidate}}%{?dist} +Release: 1%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities # Automatically converted from old format: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ - review is highly recommended. @@ -218,6 +218,9 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Tue Jan 07 2025 Peter Robinson - 1:2025.01-1 +- Update to 2025.01 GA + * Mon Jan 06 2025 Peter Robinson - 1:2025.01-0.2.rc6 - Rebuild for TF-A 2.12 From 3cc9ea7c96406873fe8a37a959fe0b1a30503677 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sun, 19 Jan 2025 13:33:58 +0000 Subject: [PATCH 205/271] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- uboot-tools.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 06ba9bf..657db17 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2025.01 -Release: 1%{?candidate:.%{candidate}}%{?dist} +Release: 2%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities # Automatically converted from old format: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ - review is highly recommended. @@ -218,6 +218,9 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Sun Jan 19 2025 Fedora Release Engineering - 1:2025.01-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + * Tue Jan 07 2025 Peter Robinson - 1:2025.01-1 - Update to 2025.01 GA From 8c6f3ce53a5cd2785e05b126ce17dafff11e3408 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 28 Jan 2025 06:22:57 +0000 Subject: [PATCH 206/271] Add new fdt_add_pubkey tool --- uboot-tools.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/uboot-tools.spec b/uboot-tools.spec index 657db17..cd060f9 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2025.01 -Release: 2%{?candidate:.%{candidate}}%{?dist} +Release: 3%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities # Automatically converted from old format: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ - review is highly recommended. @@ -186,7 +186,7 @@ done %endif %endif -for tool in dumpimage env/fw_printenv fit_check_sign fit_info gdb/gdbcont gdb/gdbsend gen_eth_addr gen_ethaddr_crc ifwitool img2srec kwboot mkeficapsule mkenvimage mkimage mksunxiboot ncb proftool sunxi-spl-image-builder +for tool in dumpimage env/fw_printenv fdt_add_pubkey fit_check_sign fit_info gdb/gdbcont gdb/gdbsend gen_eth_addr gen_ethaddr_crc ifwitool img2srec kwboot mkeficapsule mkenvimage mkimage mksunxiboot ncb proftool sunxi-spl-image-builder do install -p -m 0755 builds/tools/$tool %{buildroot}%{_bindir} done @@ -218,6 +218,9 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Tue Jan 28 2025 Peter Robinson - 1:2025.01-3 +- Add new fdt_add_pubkey tool + * Sun Jan 19 2025 Fedora Release Engineering - 1:2025.01-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild From f713a0fe6af55f09f7c302fc5a684bf19930da66 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 11 Feb 2025 09:34:06 +0000 Subject: [PATCH 207/271] 2025.05 RC1 --- aarch64-boards | 3 +- ...hip-Enable-preboot-start-for-pci-usb.patch | 4 +-- sources | 2 +- uboot-tools.spec | 34 ++++++++++++------- 4 files changed, 27 insertions(+), 16 deletions(-) diff --git a/aarch64-boards b/aarch64-boards index b66a8a6..bb4c9fd 100644 --- a/aarch64-boards +++ b/aarch64-boards @@ -1,6 +1,7 @@ a64-olinuxino a64-olinuxino-emmc amarula_a64_relic +anbernic_rg35xx_h700 apple_m1 bananapi_m2_plus_h5 bananapi_m64 @@ -78,6 +79,7 @@ pinetab poplar puma-rk3399 qcm6490 +qcs9100 qcom qemu_arm64 qemu_arm64_lwip @@ -102,4 +104,3 @@ transpeed-8k618-t turris_mox vexpress_aemv8a_juno x96_mate -xilinx_zynqmp_virt diff --git a/rockchip-Enable-preboot-start-for-pci-usb.patch b/rockchip-Enable-preboot-start-for-pci-usb.patch index 64e6883..177b44c 100644 --- a/rockchip-Enable-preboot-start-for-pci-usb.patch +++ b/rockchip-Enable-preboot-start-for-pci-usb.patch @@ -684,9 +684,9 @@ index 08b7e2784e9..d80e120c66f 100644 CONFIG_DEBUG_UART=y +CONFIG_USE_PREBOOT=y +CONFIG_PREBOOT="pci enum; usb start; nvme scan;" - CONFIG_BOOTSTAGE=y - CONFIG_BOOTSTAGE_REPORT=y CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rockpro64.dtb" + CONFIG_DISPLAY_BOARDINFO_LATE=y + CONFIG_SPL_MAX_SIZE=0x40000 diff --git a/configs/sige7-rk3588_defconfig b/configs/sige7-rk3588_defconfig index 8b033e22b84..978df10442c 100644 --- a/configs/sige7-rk3588_defconfig diff --git a/sources b/sources index da1e0e7..180c13e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2025.01.tar.bz2) = e22202b568f90de15e4e20317e13d68ce106256eadeeae5017241cdd4a1d133cdfd14297b403c7391bf65d022061ad4e1cbe862c480fddbd13f97b756305f188 +SHA512 (u-boot-2025.04-rc1.tar.bz2) = b973b39c2665d30ab1a9b96fb1eaae70bbdd29dabb68e4cdcf84a11174482e8861ccd8984ca17f594ca6af15bf0517c5263574385836676413e16f911b5bbb4e diff --git a/uboot-tools.spec b/uboot-tools.spec index cd060f9..5c55822 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -#global candidate rc0 +%global candidate rc1 %if 0%{?rhel} %bcond_with toolsonly %else @@ -6,8 +6,8 @@ %endif Name: uboot-tools -Version: 2025.01 -Release: 3%{?candidate:.%{candidate}}%{?dist} +Version: 2025.04 +Release: 0.2%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities # Automatically converted from old format: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ - review is highly recommended. @@ -115,7 +115,7 @@ do cp /usr/share/arm-trusted-firmware/sun50i_h6/bl31.bin builds/$(echo $board)/atf-bl31 cp /usr/share/crust-firmware/h6/scp.bin builds/$(echo $board)/ fi - sun50i_h616=(orangepi_zero2 orangepi_zero2w orangepi_zero3 transpeed-8k618-t x96_mate) + sun50i_h616=(anbernic_rg35xx_h700 orangepi_zero2 orangepi_zero2w orangepi_zero3 transpeed-8k618-t x96_mate) if [[ " ${sun50i_h616[*]} " == *" $board "* ]]; then echo "Board: $board using sun50i_h616" cp /usr/share/arm-trusted-firmware/sun50i_h616/bl31.bin builds/$(echo $board)/atf-bl31 @@ -136,6 +136,11 @@ do cp /usr/share/arm-trusted-firmware/rk3399/* builds/$(echo $board)/ cp builds/$(echo $board)/bl31.elf builds/$(echo $board)/atf-bl31 fi + zynqmp=(xilinx_zynqmp_kria xilinx_zynqmp_virt) + if [[ " ${zynqmp[*]} " == *" $board "* ]]; then + echo "Board: $board using zynqmp" + cp /usr/share/arm-trusted-firmware/zynqmp/bl31.bin builds/$(echo $board)/atf-bl31 + fi # End ATF make $(echo $board)_defconfig O=builds/$(echo $board)/ @@ -163,9 +168,16 @@ do done done -# Just for xilinx_zynqmp_virt -install -pD -m 0644 builds/xilinx_zynqmp_virt/u-boot.itb %{buildroot}%{_datadir}/uboot/xilinx_zynqmp_virt/u-boot.itb -install -pD -m 0644 builds/xilinx_zynqmp_virt/spl/boot.bin %{buildroot}%{_datadir}/uboot/xilinx_zynqmp_virt/boot.bin +# Just for xilinx_zynqmp +for board in "xilinx_zynqmp_kria xilinx_zynqmp_virt" +do + for file in u-boot.itb spl/boot.bin + do + if [ -f builds/$(echo $board)/$(echo $file) ]; then + install -pD -m 0644 builds/$(echo $board)/$(echo $file) %{buildroot}%{_datadir}/uboot/$(echo $board)/$(echo $file) + fi + done +done # For Apple M-series we also need the nodtb variant install -pD -m 0644 builds/apple_m1/u-boot-nodtb.bin %{buildroot}%{_datadir}/uboot/apple_m1/u-boot-nodtb.bin @@ -176,11 +188,6 @@ do rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.dtb if [ -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot-sunxi-with-spl.bin ]; then rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot{,-dtb}.* - rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/sunxi-spl.bin - fi - if [ -f %{buildroot}%{_datadir}/uboot/$(echo $board)/idbloader.img ]; then - rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.bin - rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot{,-dtb}.img fi done %endif @@ -218,6 +225,9 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Tue Feb 11 2025 Peter Robinson - 1:2025.04-0.2.rc1 +- Update to 2025.05 RC1 + * Tue Jan 28 2025 Peter Robinson - 1:2025.01-3 - Add new fdt_add_pubkey tool From 630e77de009a1286f9559467581543f4fcd6bfa6 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 18 Feb 2025 22:28:52 +0000 Subject: [PATCH 208/271] 2025.05 RC2 --- Add-video-damage-tracking.patch | 439 +++++++++++++++----------------- sources | 2 +- uboot-tools.spec | 9 +- 3 files changed, 218 insertions(+), 232 deletions(-) diff --git a/Add-video-damage-tracking.patch b/Add-video-damage-tracking.patch index 1aea71e..72475de 100644 --- a/Add-video-damage-tracking.patch +++ b/Add-video-damage-tracking.patch @@ -1,4 +1,4 @@ -From 26fad18312fe9cb0ed97ed8550b1c704d0985ebe Mon Sep 17 00:00:00 2001 +From a05aeec18576ddce60c2fbd797245b5eeaddee25 Mon Sep 17 00:00:00 2001 From: Alper Nebi Yasak Date: Mon, 21 Aug 2023 16:50:58 +0300 Subject: [PATCH 01/13] video: test: Split copy frame buffer check into a @@ -18,10 +18,10 @@ Reviewed-by: Simon Glass 1 file changed, 58 insertions(+), 11 deletions(-) diff --git a/test/dm/video.c b/test/dm/video.c -index d907f681600..641a6250100 100644 +index e347c1403fd..01fa9e1b241 100644 --- a/test/dm/video.c +++ b/test/dm/video.c -@@ -55,9 +55,6 @@ DM_TEST(dm_test_video_base, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); +@@ -54,9 +54,6 @@ DM_TEST(dm_test_video_base, UTF_SCAN_PDATA | UTF_SCAN_FDT); * size of the compressed data. This provides a pretty good level of * certainty and the resulting tests need only check a single value. * @@ -31,7 +31,7 @@ index d907f681600..641a6250100 100644 * @uts: Test state * @dev: Video device * Return: compressed size of the frame buffer, or -ve on error -@@ -66,7 +63,6 @@ static int compress_frame_buffer(struct unit_test_state *uts, +@@ -65,7 +62,6 @@ static int compress_frame_buffer(struct unit_test_state *uts, struct udevice *dev) { struct video_priv *priv = dev_get_uclass_priv(dev); @@ -39,7 +39,7 @@ index d907f681600..641a6250100 100644 uint destlen; void *dest; int ret; -@@ -82,16 +78,34 @@ static int compress_frame_buffer(struct unit_test_state *uts, +@@ -81,16 +77,34 @@ static int compress_frame_buffer(struct unit_test_state *uts, if (ret) return ret; @@ -81,7 +81,7 @@ index d907f681600..641a6250100 100644 /* * Call this function at any point to halt and show the current display. Be * sure to run the test with the -l flag. -@@ -155,24 +169,30 @@ static int dm_test_video_text(struct unit_test_state *uts) +@@ -154,24 +168,30 @@ static int dm_test_video_text(struct unit_test_state *uts) ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); ut_assertok(vidconsole_select_font(con, "8x16", 0)); ut_asserteq(46, compress_frame_buffer(uts, dev)); @@ -112,7 +112,7 @@ index d907f681600..641a6250100 100644 return 0; } -@@ -191,24 +211,30 @@ static int dm_test_video_text_12x22(struct unit_test_state *uts) +@@ -190,24 +210,30 @@ static int dm_test_video_text_12x22(struct unit_test_state *uts) ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); ut_assertok(vidconsole_select_font(con, "12x22", 0)); ut_asserteq(46, compress_frame_buffer(uts, dev)); @@ -143,7 +143,7 @@ index d907f681600..641a6250100 100644 return 0; } -@@ -226,6 +252,7 @@ static int dm_test_video_chars(struct unit_test_state *uts) +@@ -225,6 +251,7 @@ static int dm_test_video_chars(struct unit_test_state *uts) ut_assertok(vidconsole_select_font(con, "8x16", 0)); vidconsole_put_string(con, test_string); ut_asserteq(466, compress_frame_buffer(uts, dev)); @@ -151,7 +151,7 @@ index d907f681600..641a6250100 100644 return 0; } -@@ -247,19 +274,23 @@ static int dm_test_video_ansi(struct unit_test_state *uts) +@@ -246,19 +273,23 @@ static int dm_test_video_ansi(struct unit_test_state *uts) video_clear(con->parent); video_sync(con->parent, false); ut_asserteq(46, compress_frame_buffer(uts, dev)); @@ -175,7 +175,7 @@ index d907f681600..641a6250100 100644 return 0; } -@@ -292,11 +323,13 @@ static int check_vidconsole_output(struct unit_test_state *uts, int rot, +@@ -291,11 +322,13 @@ static int check_vidconsole_output(struct unit_test_state *uts, int rot, ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); ut_assertok(vidconsole_select_font(con, "8x16", 0)); ut_asserteq(46, compress_frame_buffer(uts, dev)); @@ -189,7 +189,7 @@ index d907f681600..641a6250100 100644 /* Check display scrolling */ for (i = 0; i < SCROLL_LINES; i++) { -@@ -304,11 +337,13 @@ static int check_vidconsole_output(struct unit_test_state *uts, int rot, +@@ -303,11 +336,13 @@ static int check_vidconsole_output(struct unit_test_state *uts, int rot, vidconsole_put_char(con, '\n'); } ut_asserteq(scroll_size, compress_frame_buffer(uts, dev)); @@ -203,7 +203,7 @@ index d907f681600..641a6250100 100644 return 0; } -@@ -383,6 +418,7 @@ static int dm_test_video_bmp(struct unit_test_state *uts) +@@ -382,6 +417,7 @@ static int dm_test_video_bmp(struct unit_test_state *uts) ut_assertok(video_bmp_display(dev, addr, 0, 0, false)); ut_asserteq(1368, compress_frame_buffer(uts, dev)); @@ -211,7 +211,7 @@ index d907f681600..641a6250100 100644 return 0; } -@@ -402,6 +438,7 @@ static int dm_test_video_bmp8(struct unit_test_state *uts) +@@ -401,6 +437,7 @@ static int dm_test_video_bmp8(struct unit_test_state *uts) ut_assertok(video_bmp_display(dev, addr, 0, 0, false)); ut_asserteq(1247, compress_frame_buffer(uts, dev)); @@ -219,7 +219,7 @@ index d907f681600..641a6250100 100644 return 0; } -@@ -425,6 +462,7 @@ static int dm_test_video_bmp16(struct unit_test_state *uts) +@@ -424,6 +461,7 @@ static int dm_test_video_bmp16(struct unit_test_state *uts) ut_assertok(video_bmp_display(dev, dst, 0, 0, false)); ut_asserteq(3700, compress_frame_buffer(uts, dev)); @@ -227,7 +227,7 @@ index d907f681600..641a6250100 100644 return 0; } -@@ -448,6 +486,7 @@ static int dm_test_video_bmp24(struct unit_test_state *uts) +@@ -447,6 +485,7 @@ static int dm_test_video_bmp24(struct unit_test_state *uts) ut_assertok(video_bmp_display(dev, dst, 0, 0, false)); ut_asserteq(3656, compress_frame_buffer(uts, dev)); @@ -235,7 +235,7 @@ index d907f681600..641a6250100 100644 return 0; } -@@ -471,6 +510,7 @@ static int dm_test_video_bmp24_32(struct unit_test_state *uts) +@@ -470,6 +509,7 @@ static int dm_test_video_bmp24_32(struct unit_test_state *uts) ut_assertok(video_bmp_display(dev, dst, 0, 0, false)); ut_asserteq(6827, compress_frame_buffer(uts, dev)); @@ -243,7 +243,7 @@ index d907f681600..641a6250100 100644 return 0; } -@@ -489,6 +529,7 @@ static int dm_test_video_bmp32(struct unit_test_state *uts) +@@ -488,6 +528,7 @@ static int dm_test_video_bmp32(struct unit_test_state *uts) ut_assertok(video_bmp_display(dev, addr, 0, 0, false)); ut_asserteq(2024, compress_frame_buffer(uts, dev)); @@ -251,7 +251,7 @@ index d907f681600..641a6250100 100644 return 0; } -@@ -505,6 +546,7 @@ static int dm_test_video_bmp_comp(struct unit_test_state *uts) +@@ -504,6 +545,7 @@ static int dm_test_video_bmp_comp(struct unit_test_state *uts) ut_assertok(video_bmp_display(dev, addr, 0, 0, false)); ut_asserteq(1368, compress_frame_buffer(uts, dev)); @@ -259,7 +259,7 @@ index d907f681600..641a6250100 100644 return 0; } -@@ -524,6 +566,7 @@ static int dm_test_video_comp_bmp32(struct unit_test_state *uts) +@@ -523,6 +565,7 @@ static int dm_test_video_comp_bmp32(struct unit_test_state *uts) ut_assertok(video_bmp_display(dev, addr, 0, 0, false)); ut_asserteq(2024, compress_frame_buffer(uts, dev)); @@ -267,7 +267,7 @@ index d907f681600..641a6250100 100644 return 0; } -@@ -543,6 +586,7 @@ static int dm_test_video_comp_bmp8(struct unit_test_state *uts) +@@ -542,6 +585,7 @@ static int dm_test_video_comp_bmp8(struct unit_test_state *uts) ut_assertok(video_bmp_display(dev, addr, 0, 0, false)); ut_asserteq(1247, compress_frame_buffer(uts, dev)); @@ -275,7 +275,7 @@ index d907f681600..641a6250100 100644 return 0; } -@@ -558,6 +602,7 @@ static int dm_test_video_truetype(struct unit_test_state *uts) +@@ -557,6 +601,7 @@ static int dm_test_video_truetype(struct unit_test_state *uts) ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); vidconsole_put_string(con, test_string); ut_asserteq(12174, compress_frame_buffer(uts, dev)); @@ -283,7 +283,7 @@ index d907f681600..641a6250100 100644 return 0; } -@@ -579,6 +624,7 @@ static int dm_test_video_truetype_scroll(struct unit_test_state *uts) +@@ -578,6 +623,7 @@ static int dm_test_video_truetype_scroll(struct unit_test_state *uts) ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); vidconsole_put_string(con, test_string); ut_asserteq(34287, compress_frame_buffer(uts, dev)); @@ -291,7 +291,7 @@ index d907f681600..641a6250100 100644 return 0; } -@@ -600,6 +646,7 @@ static int dm_test_video_truetype_bs(struct unit_test_state *uts) +@@ -599,6 +645,7 @@ static int dm_test_video_truetype_bs(struct unit_test_state *uts) ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); vidconsole_put_string(con, test_string); ut_asserteq(29471, compress_frame_buffer(uts, dev)); @@ -300,9 +300,9 @@ index d907f681600..641a6250100 100644 return 0; } -- -2.45.1 +2.48.1 -From 6c7cff43f374242ed4d585f7359fa5c334332a0a Mon Sep 17 00:00:00 2001 +From 37f92f0ac721bc300659d166d8a19f6b18b2bbcb Mon Sep 17 00:00:00 2001 From: Alper Nebi Yasak Date: Mon, 21 Aug 2023 16:50:59 +0300 Subject: [PATCH 02/13] video: test: Support checking copy frame buffer @@ -325,10 +325,10 @@ Reviewed-by: Simon Glass 1 file changed, 41 insertions(+), 35 deletions(-) diff --git a/test/dm/video.c b/test/dm/video.c -index 641a6250100..b9ff3da10c1 100644 +index 01fa9e1b241..edb1b4ede8c 100644 --- a/test/dm/video.c +++ b/test/dm/video.c -@@ -57,22 +57,28 @@ DM_TEST(dm_test_video_base, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); +@@ -56,22 +56,28 @@ DM_TEST(dm_test_video_base, UTF_SCAN_PDATA | UTF_SCAN_FDT); * * @uts: Test state * @dev: Video device @@ -359,7 +359,7 @@ index 641a6250100..b9ff3da10c1 100644 3, 0, 0); free(dest); if (ret) -@@ -168,30 +174,30 @@ static int dm_test_video_text(struct unit_test_state *uts) +@@ -167,30 +173,30 @@ static int dm_test_video_text(struct unit_test_state *uts) ut_assertok(video_get_nologo(uts, &dev)); ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); ut_assertok(vidconsole_select_font(con, "8x16", 0)); @@ -396,7 +396,7 @@ index 641a6250100..b9ff3da10c1 100644 ut_assertok(check_copy_frame_buffer(uts, dev)); return 0; -@@ -210,30 +216,30 @@ static int dm_test_video_text_12x22(struct unit_test_state *uts) +@@ -209,30 +215,30 @@ static int dm_test_video_text_12x22(struct unit_test_state *uts) ut_assertok(video_get_nologo(uts, &dev)); ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); ut_assertok(vidconsole_select_font(con, "12x22", 0)); @@ -433,7 +433,7 @@ index 641a6250100..b9ff3da10c1 100644 ut_assertok(check_copy_frame_buffer(uts, dev)); return 0; -@@ -251,7 +257,7 @@ static int dm_test_video_chars(struct unit_test_state *uts) +@@ -250,7 +256,7 @@ static int dm_test_video_chars(struct unit_test_state *uts) ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); ut_assertok(vidconsole_select_font(con, "8x16", 0)); vidconsole_put_string(con, test_string); @@ -442,7 +442,7 @@ index 641a6250100..b9ff3da10c1 100644 ut_assertok(check_copy_frame_buffer(uts, dev)); return 0; -@@ -273,23 +279,23 @@ static int dm_test_video_ansi(struct unit_test_state *uts) +@@ -272,23 +278,23 @@ static int dm_test_video_ansi(struct unit_test_state *uts) /* reference clear: */ video_clear(con->parent); video_sync(con->parent, false); @@ -470,7 +470,7 @@ index 641a6250100..b9ff3da10c1 100644 ut_assertok(check_copy_frame_buffer(uts, dev)); return 0; -@@ -322,13 +328,13 @@ static int check_vidconsole_output(struct unit_test_state *uts, int rot, +@@ -321,13 +327,13 @@ static int check_vidconsole_output(struct unit_test_state *uts, int rot, ut_assertok(video_get_nologo(uts, &dev)); ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); ut_assertok(vidconsole_select_font(con, "8x16", 0)); @@ -486,7 +486,7 @@ index 641a6250100..b9ff3da10c1 100644 ut_assertok(check_copy_frame_buffer(uts, dev)); /* Check display scrolling */ -@@ -336,13 +342,13 @@ static int check_vidconsole_output(struct unit_test_state *uts, int rot, +@@ -335,13 +341,13 @@ static int check_vidconsole_output(struct unit_test_state *uts, int rot, vidconsole_put_char(con, 'A' + i % 50); vidconsole_put_char(con, '\n'); } @@ -502,7 +502,7 @@ index 641a6250100..b9ff3da10c1 100644 ut_assertok(check_copy_frame_buffer(uts, dev)); return 0; -@@ -417,7 +423,7 @@ static int dm_test_video_bmp(struct unit_test_state *uts) +@@ -416,7 +422,7 @@ static int dm_test_video_bmp(struct unit_test_state *uts) ut_assertok(read_file(uts, "tools/logos/denx.bmp", &addr)); ut_assertok(video_bmp_display(dev, addr, 0, 0, false)); @@ -511,7 +511,7 @@ index 641a6250100..b9ff3da10c1 100644 ut_assertok(check_copy_frame_buffer(uts, dev)); return 0; -@@ -437,7 +443,7 @@ static int dm_test_video_bmp8(struct unit_test_state *uts) +@@ -436,7 +442,7 @@ static int dm_test_video_bmp8(struct unit_test_state *uts) ut_assertok(read_file(uts, "tools/logos/denx.bmp", &addr)); ut_assertok(video_bmp_display(dev, addr, 0, 0, false)); @@ -520,7 +520,7 @@ index 641a6250100..b9ff3da10c1 100644 ut_assertok(check_copy_frame_buffer(uts, dev)); return 0; -@@ -461,7 +467,7 @@ static int dm_test_video_bmp16(struct unit_test_state *uts) +@@ -460,7 +466,7 @@ static int dm_test_video_bmp16(struct unit_test_state *uts) &src_len)); ut_assertok(video_bmp_display(dev, dst, 0, 0, false)); @@ -529,7 +529,7 @@ index 641a6250100..b9ff3da10c1 100644 ut_assertok(check_copy_frame_buffer(uts, dev)); return 0; -@@ -485,7 +491,7 @@ static int dm_test_video_bmp24(struct unit_test_state *uts) +@@ -484,7 +490,7 @@ static int dm_test_video_bmp24(struct unit_test_state *uts) &src_len)); ut_assertok(video_bmp_display(dev, dst, 0, 0, false)); @@ -538,7 +538,7 @@ index 641a6250100..b9ff3da10c1 100644 ut_assertok(check_copy_frame_buffer(uts, dev)); return 0; -@@ -509,7 +515,7 @@ static int dm_test_video_bmp24_32(struct unit_test_state *uts) +@@ -508,7 +514,7 @@ static int dm_test_video_bmp24_32(struct unit_test_state *uts) &src_len)); ut_assertok(video_bmp_display(dev, dst, 0, 0, false)); @@ -547,7 +547,7 @@ index 641a6250100..b9ff3da10c1 100644 ut_assertok(check_copy_frame_buffer(uts, dev)); return 0; -@@ -528,7 +534,7 @@ static int dm_test_video_bmp32(struct unit_test_state *uts) +@@ -527,7 +533,7 @@ static int dm_test_video_bmp32(struct unit_test_state *uts) ut_assertok(read_file(uts, "tools/logos/denx.bmp", &addr)); ut_assertok(video_bmp_display(dev, addr, 0, 0, false)); @@ -556,7 +556,7 @@ index 641a6250100..b9ff3da10c1 100644 ut_assertok(check_copy_frame_buffer(uts, dev)); return 0; -@@ -545,7 +551,7 @@ static int dm_test_video_bmp_comp(struct unit_test_state *uts) +@@ -544,7 +550,7 @@ static int dm_test_video_bmp_comp(struct unit_test_state *uts) ut_assertok(read_file(uts, "tools/logos/denx-comp.bmp", &addr)); ut_assertok(video_bmp_display(dev, addr, 0, 0, false)); @@ -565,7 +565,7 @@ index 641a6250100..b9ff3da10c1 100644 ut_assertok(check_copy_frame_buffer(uts, dev)); return 0; -@@ -565,7 +571,7 @@ static int dm_test_video_comp_bmp32(struct unit_test_state *uts) +@@ -564,7 +570,7 @@ static int dm_test_video_comp_bmp32(struct unit_test_state *uts) ut_assertok(read_file(uts, "tools/logos/denx.bmp", &addr)); ut_assertok(video_bmp_display(dev, addr, 0, 0, false)); @@ -574,7 +574,7 @@ index 641a6250100..b9ff3da10c1 100644 ut_assertok(check_copy_frame_buffer(uts, dev)); return 0; -@@ -585,7 +591,7 @@ static int dm_test_video_comp_bmp8(struct unit_test_state *uts) +@@ -584,7 +590,7 @@ static int dm_test_video_comp_bmp8(struct unit_test_state *uts) ut_assertok(read_file(uts, "tools/logos/denx.bmp", &addr)); ut_assertok(video_bmp_display(dev, addr, 0, 0, false)); @@ -583,7 +583,7 @@ index 641a6250100..b9ff3da10c1 100644 ut_assertok(check_copy_frame_buffer(uts, dev)); return 0; -@@ -601,7 +607,7 @@ static int dm_test_video_truetype(struct unit_test_state *uts) +@@ -600,7 +606,7 @@ static int dm_test_video_truetype(struct unit_test_state *uts) ut_assertok(video_get_nologo(uts, &dev)); ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); vidconsole_put_string(con, test_string); @@ -592,7 +592,7 @@ index 641a6250100..b9ff3da10c1 100644 ut_assertok(check_copy_frame_buffer(uts, dev)); return 0; -@@ -623,7 +629,7 @@ static int dm_test_video_truetype_scroll(struct unit_test_state *uts) +@@ -622,7 +628,7 @@ static int dm_test_video_truetype_scroll(struct unit_test_state *uts) ut_assertok(video_get_nologo(uts, &dev)); ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); vidconsole_put_string(con, test_string); @@ -601,7 +601,7 @@ index 641a6250100..b9ff3da10c1 100644 ut_assertok(check_copy_frame_buffer(uts, dev)); return 0; -@@ -645,7 +651,7 @@ static int dm_test_video_truetype_bs(struct unit_test_state *uts) +@@ -644,7 +650,7 @@ static int dm_test_video_truetype_bs(struct unit_test_state *uts) ut_assertok(video_get_nologo(uts, &dev)); ut_assertok(uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con)); vidconsole_put_string(con, test_string); @@ -611,11 +611,11 @@ index 641a6250100..b9ff3da10c1 100644 return 0; -- -2.45.1 +2.48.1 -From 1020e92b30457fa042a78395dabce0f50d07de8e Mon Sep 17 00:00:00 2001 -From: Alper Nebi Yasak -Date: Mon, 21 Aug 2023 16:51:00 +0300 +From eb739214f97a59e2d902b965f9990eab9b243658 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Tue, 18 Feb 2025 21:42:26 +0000 Subject: [PATCH 03/13] video: test: Test partial updates of hardware frame buffer @@ -627,18 +627,19 @@ sync. Signed-off-by: Alper Nebi Yasak Reviewed-by: Simon Glass +Signed-off-by: Peter Robinson --- test/dm/video.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/test/dm/video.c b/test/dm/video.c -index b9ff3da10c1..e4bd27a6b76 100644 +index edb1b4ede8c..d520938d1b2 100644 --- a/test/dm/video.c +++ b/test/dm/video.c -@@ -657,3 +657,57 @@ static int dm_test_video_truetype_bs(struct unit_test_state *uts) +@@ -656,3 +656,57 @@ static int dm_test_video_truetype_bs(struct unit_test_state *uts) return 0; } - DM_TEST(dm_test_video_truetype_bs, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); + DM_TEST(dm_test_video_truetype_bs, UTF_SCAN_PDATA | UTF_SCAN_FDT); + +/* Test partial rendering onto hardware frame buffer */ +static int dm_test_video_copy(struct unit_test_state *uts) @@ -694,11 +695,11 @@ index b9ff3da10c1..e4bd27a6b76 100644 +} +DM_TEST(dm_test_video_copy, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); -- -2.45.1 +2.48.1 -From 57b3429b596c7ed89c1858663c87865e11d965e2 Mon Sep 17 00:00:00 2001 -From: Alexander Graf -Date: Mon, 21 Aug 2023 16:51:01 +0300 +From 60e428bb54f2f7ee922f53ec3d3e0976a37bd47d Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Tue, 18 Feb 2025 21:51:29 +0000 Subject: [PATCH 04/13] dm: video: Add damage tracking API We are going to introduce image damage tracking to fasten up screen @@ -714,17 +715,18 @@ Reported-by: Da Xue Co-developed-by: Alper Nebi Yasak Signed-off-by: Alper Nebi Yasak Reviewed-by: Simon Glass +Signed-off-by: Peter Robinson --- - drivers/video/Kconfig | 13 ++++++++++++ - drivers/video/video-uclass.c | 41 +++++++++++++++++++++++++++++++++--- - include/video.h | 32 ++++++++++++++++++++++++++-- - 3 files changed, 81 insertions(+), 5 deletions(-) + drivers/video/Kconfig | 13 +++++++++++++ + drivers/video/video-uclass.c | 37 ++++++++++++++++++++++++++++++++++++ + include/video.h | 32 +++++++++++++++++++++++++++++-- + 3 files changed, 80 insertions(+), 2 deletions(-) diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig -index 7808ae7919e..7815b590481 100644 +index 3c3cebaacd0..5d67067891b 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig -@@ -92,6 +92,19 @@ config VIDEO_COPY +@@ -98,6 +98,19 @@ config VIDEO_COPY To use this, your video driver must set @copy_base in struct video_uc_plat. @@ -745,10 +747,10 @@ index 7808ae7919e..7815b590481 100644 bool "Generic PWM based Backlight Driver" depends on BACKLIGHT && DM_PWM diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c -index 7b5d1dfbb3b..99a8458199a 100644 +index ff4f2199585..ad20af760b8 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c -@@ -347,9 +347,39 @@ void video_set_default_colors(struct udevice *dev, bool invert) +@@ -367,6 +367,35 @@ void video_set_default_colors(struct udevice *dev, bool invert) priv->colour_bg = video_index_to_colour(priv, back); } @@ -784,31 +786,13 @@ index 7b5d1dfbb3b..99a8458199a 100644 /* Flush video activity to the caches */ int video_sync(struct udevice *vid, bool force) { -+ struct video_priv *priv = dev_get_uclass_priv(vid); - struct video_ops *ops = video_get_ops(vid); - int ret; - -@@ -365,15 +395,12 @@ int video_sync(struct udevice *vid, bool force) - * out whether it exists? For now, ARM is safe. - */ - #if defined(CONFIG_ARM) && !CONFIG_IS_ENABLED(SYS_DCACHE_OFF) -- struct video_priv *priv = dev_get_uclass_priv(vid); -- - if (priv->flush_dcache) { - flush_dcache_range((ulong)priv->fb, - ALIGN((ulong)priv->fb + priv->fb_size, - CONFIG_SYS_CACHELINE_SIZE)); - } +@@ -398,8 +427,16 @@ int video_sync(struct udevice *vid, bool force) #elif defined(CONFIG_VIDEO_SANDBOX_SDL) -- struct video_priv *priv = dev_get_uclass_priv(vid); - static ulong last_sync; - - if (force || get_timer(last_sync) > 100) { -@@ -381,6 +408,14 @@ int video_sync(struct udevice *vid, bool force) - last_sync = get_timer(0); - } + sandbox_sdl_sync(priv->fb); #endif + + priv->last_sync = get_timer(0); + + if (IS_ENABLED(CONFIG_VIDEO_DAMAGE)) { + priv->damage.xstart = priv->xsize; + priv->damage.ystart = priv->ysize; @@ -820,10 +804,10 @@ index 7b5d1dfbb3b..99a8458199a 100644 } diff --git a/include/video.h b/include/video.h -index 4d8df9baaad..1310195f307 100644 +index a1f7fd7e839..92aa5da4ff3 100644 --- a/include/video.h +++ b/include/video.h -@@ -88,6 +88,11 @@ enum video_format { +@@ -85,6 +85,11 @@ enum video_format { * @fb_size: Frame buffer size * @copy_fb: Copy of the frame buffer to keep up to date; see struct * video_uc_plat @@ -835,7 +819,7 @@ index 4d8df9baaad..1310195f307 100644 * @line_length: Length of each frame buffer line, in bytes. This can be * set by the driver, but if not, the uclass will set it after * probing -@@ -115,6 +120,12 @@ struct video_priv { +@@ -113,6 +118,12 @@ struct video_priv { void *fb; int fb_size; void *copy_fb; @@ -848,7 +832,7 @@ index 4d8df9baaad..1310195f307 100644 int line_length; u32 colour_fg; u32 colour_bg; -@@ -257,8 +268,9 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, +@@ -259,8 +270,9 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, * @return: 0 on success, error code otherwise * * Some frame buffers are cached or have a secondary frame buffer. This @@ -860,7 +844,7 @@ index 4d8df9baaad..1310195f307 100644 */ int video_sync(struct udevice *vid, bool force); -@@ -378,6 +390,22 @@ static inline int video_sync_copy_all(struct udevice *dev) +@@ -380,6 +392,22 @@ static inline int video_sync_copy_all(struct udevice *dev) #endif @@ -884,9 +868,9 @@ index 4d8df9baaad..1310195f307 100644 * video_is_active() - Test if one video device it active * -- -2.45.1 +2.48.1 -From 6677746b0fc8b653af608513bdef54b379b4ee7d Mon Sep 17 00:00:00 2001 +From 8c180ab43a35b355a4f1612d813ec2e655bc7b37 Mon Sep 17 00:00:00 2001 From: Alexander Graf Date: Mon, 21 Aug 2023 16:51:02 +0300 Subject: [PATCH 05/13] dm: video: Add damage notification on display fills @@ -904,10 +888,10 @@ Reviewed-by: Simon Glass 1 file changed, 4 insertions(+) diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c -index 99a8458199a..96b8962b8de 100644 +index ad20af760b8..43b714085a7 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c -@@ -196,6 +196,8 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, +@@ -214,6 +214,8 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, if (ret) return ret; @@ -916,7 +900,7 @@ index 99a8458199a..96b8962b8de 100644 return 0; } -@@ -245,6 +247,8 @@ int video_fill(struct udevice *dev, u32 colour) +@@ -262,6 +264,8 @@ int video_fill(struct udevice *dev, u32 colour) if (ret) return ret; @@ -926,9 +910,9 @@ index 99a8458199a..96b8962b8de 100644 } -- -2.45.1 +2.48.1 -From 96ee787a7966c0357e5f028317b85a8593757883 Mon Sep 17 00:00:00 2001 +From 8047ae54ddde0b5ac6aa7503710e7c3d9c56bc67 Mon Sep 17 00:00:00 2001 From: Alexander Graf Date: Mon, 21 Aug 2023 16:51:03 +0300 Subject: [PATCH 06/13] vidconsole: Add damage notifications to all vidconsole @@ -953,10 +937,10 @@ Reviewed-by: Simon Glass 4 files changed, 94 insertions(+) diff --git a/drivers/video/console_normal.c b/drivers/video/console_normal.c -index 34ef5a52294..6634d3f27da 100644 +index 6f4194a1814..51ac8cc78e9 100644 --- a/drivers/video/console_normal.c +++ b/drivers/video/console_normal.c -@@ -40,6 +40,12 @@ static int console_set_row(struct udevice *dev, uint row, int clr) +@@ -39,6 +39,12 @@ static int console_set_row(struct udevice *dev, uint row, int clr) if (ret) return ret; @@ -969,7 +953,7 @@ index 34ef5a52294..6634d3f27da 100644 return 0; } -@@ -61,6 +67,12 @@ static int console_move_rows(struct udevice *dev, uint rowdst, +@@ -60,6 +66,12 @@ static int console_move_rows(struct udevice *dev, uint rowdst, if (ret) return ret; @@ -982,7 +966,7 @@ index 34ef5a52294..6634d3f27da 100644 return 0; } -@@ -92,6 +104,12 @@ static int console_putc_xy(struct udevice *dev, uint x_frac, uint y, int cp) +@@ -91,6 +103,12 @@ static int console_putc_xy(struct udevice *dev, uint x_frac, uint y, int cp) if (ret) return ret; @@ -996,10 +980,10 @@ index 34ef5a52294..6634d3f27da 100644 if (ret) return ret; diff --git a/drivers/video/console_rotate.c b/drivers/video/console_rotate.c -index e4303dfb364..8129c7b2aa7 100644 +index a3f8c6352f8..f11dc3a0b07 100644 --- a/drivers/video/console_rotate.c +++ b/drivers/video/console_rotate.c -@@ -37,6 +37,12 @@ static int console_set_row_1(struct udevice *dev, uint row, int clr) +@@ -36,6 +36,12 @@ static int console_set_row_1(struct udevice *dev, uint row, int clr) if (ret) return ret; @@ -1012,7 +996,7 @@ index e4303dfb364..8129c7b2aa7 100644 return 0; } -@@ -65,6 +71,12 @@ static int console_move_rows_1(struct udevice *dev, uint rowdst, uint rowsrc, +@@ -64,6 +70,12 @@ static int console_move_rows_1(struct udevice *dev, uint rowdst, uint rowsrc, dst += vid_priv->line_length; } @@ -1025,7 +1009,7 @@ index e4303dfb364..8129c7b2aa7 100644 return 0; } -@@ -98,6 +110,12 @@ static int console_putc_xy_1(struct udevice *dev, uint x_frac, uint y, int cp) +@@ -97,6 +109,12 @@ static int console_putc_xy_1(struct udevice *dev, uint x_frac, uint y, int cp) if (ret) return ret; @@ -1038,7 +1022,7 @@ index e4303dfb364..8129c7b2aa7 100644 return VID_TO_POS(fontdata->width); } -@@ -123,6 +141,12 @@ static int console_set_row_2(struct udevice *dev, uint row, int clr) +@@ -121,6 +139,12 @@ static int console_set_row_2(struct udevice *dev, uint row, int clr) if (ret) return ret; @@ -1051,7 +1035,7 @@ index e4303dfb364..8129c7b2aa7 100644 return 0; } -@@ -144,6 +168,12 @@ static int console_move_rows_2(struct udevice *dev, uint rowdst, uint rowsrc, +@@ -142,6 +166,12 @@ static int console_move_rows_2(struct udevice *dev, uint rowdst, uint rowsrc, vidconsole_memmove(dev, dst, src, fontdata->height * vid_priv->line_length * count); @@ -1064,7 +1048,7 @@ index e4303dfb364..8129c7b2aa7 100644 return 0; } -@@ -177,6 +207,12 @@ static int console_putc_xy_2(struct udevice *dev, uint x_frac, uint y, int cp) +@@ -175,6 +205,12 @@ static int console_putc_xy_2(struct udevice *dev, uint x_frac, uint y, int cp) if (ret) return ret; @@ -1077,7 +1061,7 @@ index e4303dfb364..8129c7b2aa7 100644 return VID_TO_POS(fontdata->width); } -@@ -201,6 +237,12 @@ static int console_set_row_3(struct udevice *dev, uint row, int clr) +@@ -199,6 +235,12 @@ static int console_set_row_3(struct udevice *dev, uint row, int clr) if (ret) return ret; @@ -1090,7 +1074,7 @@ index e4303dfb364..8129c7b2aa7 100644 return 0; } -@@ -227,6 +269,12 @@ static int console_move_rows_3(struct udevice *dev, uint rowdst, uint rowsrc, +@@ -225,6 +267,12 @@ static int console_move_rows_3(struct udevice *dev, uint rowdst, uint rowsrc, dst += vid_priv->line_length; } @@ -1103,7 +1087,7 @@ index e4303dfb364..8129c7b2aa7 100644 return 0; } -@@ -259,6 +307,12 @@ static int console_putc_xy_3(struct udevice *dev, uint x_frac, uint y, int cp) +@@ -257,6 +305,12 @@ static int console_putc_xy_3(struct udevice *dev, uint x_frac, uint y, int cp) if (ret) return ret; @@ -1117,10 +1101,10 @@ index e4303dfb364..8129c7b2aa7 100644 } diff --git a/drivers/video/console_truetype.c b/drivers/video/console_truetype.c -index 28665a32757..ed6c9cbb4f4 100644 +index 17a29817664..073ddcfb695 100644 --- a/drivers/video/console_truetype.c +++ b/drivers/video/console_truetype.c -@@ -191,6 +191,7 @@ struct console_tt_store { +@@ -190,6 +190,7 @@ struct console_tt_store { static int console_truetype_set_row(struct udevice *dev, uint row, int clr) { struct video_priv *vid_priv = dev_get_uclass_priv(dev->parent); @@ -1128,7 +1112,7 @@ index 28665a32757..ed6c9cbb4f4 100644 struct console_tt_priv *priv = dev_get_priv(dev); struct console_tt_metrics *met = priv->cur_met; void *end, *line; -@@ -234,6 +235,12 @@ static int console_truetype_set_row(struct udevice *dev, uint row, int clr) +@@ -233,6 +234,12 @@ static int console_truetype_set_row(struct udevice *dev, uint row, int clr) if (ret) return ret; @@ -1141,7 +1125,7 @@ index 28665a32757..ed6c9cbb4f4 100644 return 0; } -@@ -241,6 +248,7 @@ static int console_truetype_move_rows(struct udevice *dev, uint rowdst, +@@ -240,6 +247,7 @@ static int console_truetype_move_rows(struct udevice *dev, uint rowdst, uint rowsrc, uint count) { struct video_priv *vid_priv = dev_get_uclass_priv(dev->parent); @@ -1149,7 +1133,7 @@ index 28665a32757..ed6c9cbb4f4 100644 struct console_tt_priv *priv = dev_get_priv(dev); struct console_tt_metrics *met = priv->cur_met; void *dst; -@@ -259,6 +267,12 @@ static int console_truetype_move_rows(struct udevice *dev, uint rowdst, +@@ -258,6 +266,12 @@ static int console_truetype_move_rows(struct udevice *dev, uint rowdst, for (i = 0; i < priv->pos_ptr; i++) priv->pos[i].ypos -= diff; @@ -1162,7 +1146,7 @@ index 28665a32757..ed6c9cbb4f4 100644 return 0; } -@@ -419,6 +433,13 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y, +@@ -418,6 +432,13 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y, line += vid_priv->line_length; } @@ -1177,10 +1161,10 @@ index 28665a32757..ed6c9cbb4f4 100644 if (ret) return ret; diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c -index 96b8962b8de..cbdda274f2d 100644 +index 43b714085a7..d175ed61ac8 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c -@@ -192,6 +192,7 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, +@@ -210,6 +210,7 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, } line += priv->line_length; } @@ -1189,9 +1173,9 @@ index 96b8962b8de..cbdda274f2d 100644 if (ret) return ret; -- -2.45.1 +2.48.1 -From 077a499a8fc2ccad28114264c8792d342bf8536c Mon Sep 17 00:00:00 2001 +From f701195fca932fda3b08ddfe6317fb2ca01f0fcf Mon Sep 17 00:00:00 2001 From: Alper Nebi Yasak Date: Mon, 21 Aug 2023 16:51:04 +0300 Subject: [PATCH 07/13] video: test: Test video damage tracking via vidconsole @@ -1209,10 +1193,10 @@ Reviewed-by: Simon Glass 2 files changed, 57 insertions(+) diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig -index 93b52f2de5c..2051f0a3d7a 100644 +index 7b35ad8a88f..d9e5ac6af48 100644 --- a/configs/sandbox_defconfig +++ b/configs/sandbox_defconfig -@@ -319,6 +319,7 @@ CONFIG_USB_ETH_CDC=y +@@ -328,6 +328,7 @@ CONFIG_USB_ETH_CDC=y CONFIG_VIDEO=y CONFIG_VIDEO_FONT_SUN12X22=y CONFIG_VIDEO_COPY=y @@ -1221,10 +1205,10 @@ index 93b52f2de5c..2051f0a3d7a 100644 CONFIG_CONSOLE_TRUETYPE=y CONFIG_CONSOLE_TRUETYPE_CANTORAONE=y diff --git a/test/dm/video.c b/test/dm/video.c -index e4bd27a6b76..8c7d9800a42 100644 +index d520938d1b2..9da00be5479 100644 --- a/test/dm/video.c +++ b/test/dm/video.c -@@ -711,3 +711,59 @@ static int dm_test_video_copy(struct unit_test_state *uts) +@@ -710,3 +710,59 @@ static int dm_test_video_copy(struct unit_test_state *uts) return 0; } DM_TEST(dm_test_video_copy, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); @@ -1285,9 +1269,9 @@ index e4bd27a6b76..8c7d9800a42 100644 +} +DM_TEST(dm_test_video_damage, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); -- -2.45.1 +2.48.1 -From e5b927255d0375408a5ff14403a978aca09fa68f Mon Sep 17 00:00:00 2001 +From 88bc7e2c640a504bbd7de27b28a3ad2b05d43163 Mon Sep 17 00:00:00 2001 From: Alexander Graf Date: Mon, 21 Aug 2023 16:51:05 +0300 Subject: [PATCH 08/13] video: Add damage notification on bmp display @@ -1304,10 +1288,10 @@ Signed-off-by: Alper Nebi Yasak 1 file changed, 2 insertions(+) diff --git a/drivers/video/video_bmp.c b/drivers/video/video_bmp.c -index 45f003c8251..10943b9ca19 100644 +index ad512d99a1b..78de9560792 100644 --- a/drivers/video/video_bmp.c +++ b/drivers/video/video_bmp.c -@@ -460,6 +460,8 @@ int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y, +@@ -459,6 +459,8 @@ int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y, break; }; @@ -1317,9 +1301,9 @@ index 45f003c8251..10943b9ca19 100644 fb = (uchar *)(priv->fb + y * priv->line_length + x * bpix / 8); ret = video_sync_copy(dev, start, fb); -- -2.45.1 +2.48.1 -From d31ef2b17c98d0b7b1040e5abda99bb1720eb8c0 Mon Sep 17 00:00:00 2001 +From a3680479d62d38637fc26750756a8cddac380aaf Mon Sep 17 00:00:00 2001 From: Alexander Graf Date: Mon, 21 Aug 2023 16:51:06 +0300 Subject: [PATCH 09/13] efi_loader: GOP: Add damage notification on BLT @@ -1338,10 +1322,10 @@ Reviewed-by: Simon Glass 1 file changed, 7 insertions(+) diff --git a/lib/efi_loader/efi_gop.c b/lib/efi_loader/efi_gop.c -index 41e12fa7246..1694e23dcc6 100644 +index 4593975be5a..3abb47d610e 100644 --- a/lib/efi_loader/efi_gop.c +++ b/lib/efi_loader/efi_gop.c -@@ -24,6 +24,7 @@ static const efi_guid_t efi_gop_guid = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID; +@@ -26,6 +26,7 @@ static const efi_guid_t efi_gop_guid = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID; * @ops: graphical output protocol interface * @info: graphical output mode information * @mode: graphical output mode @@ -1349,7 +1333,7 @@ index 41e12fa7246..1694e23dcc6 100644 * @bpix: bits per pixel * @fb: frame buffer */ -@@ -32,6 +33,7 @@ struct efi_gop_obj { +@@ -34,6 +35,7 @@ struct efi_gop_obj { struct efi_gop ops; struct efi_gop_mode_info info; struct efi_gop_mode mode; @@ -1357,7 +1341,7 @@ index 41e12fa7246..1694e23dcc6 100644 /* Fields we only have access to during init */ u32 bpix; void *fb; -@@ -120,6 +122,7 @@ static __always_inline efi_status_t gop_blt_int(struct efi_gop *this, +@@ -122,6 +124,7 @@ static __always_inline efi_status_t gop_blt_int(struct efi_gop *this, u32 *fb32 = gopobj->fb; u16 *fb16 = gopobj->fb; struct efi_gop_pixel *buffer = __builtin_assume_aligned(bufferp, 4); @@ -1365,7 +1349,7 @@ index 41e12fa7246..1694e23dcc6 100644 if (delta) { /* Check for 4 byte alignment */ -@@ -243,6 +246,9 @@ static __always_inline efi_status_t gop_blt_int(struct efi_gop *this, +@@ -245,6 +248,9 @@ static __always_inline efi_status_t gop_blt_int(struct efi_gop *this, dlineoff += dwidth; } @@ -1375,7 +1359,7 @@ index 41e12fa7246..1694e23dcc6 100644 return EFI_SUCCESS; } -@@ -549,6 +555,7 @@ efi_status_t efi_gop_register(void) +@@ -551,6 +557,7 @@ efi_status_t efi_gop_register(void) gopobj->info.pixels_per_scanline = col; gopobj->bpix = bpix; gopobj->fb = map_sysmem(fb_base, fb_size); @@ -1384,11 +1368,11 @@ index 41e12fa7246..1694e23dcc6 100644 return EFI_SUCCESS; } -- -2.45.1 +2.48.1 -From 63e4c90e38c476d89148f4328778af0adcbe7adf Mon Sep 17 00:00:00 2001 -From: Alexander Graf -Date: Mon, 21 Aug 2023 16:51:07 +0300 +From cbbd24764c84943078d07728e3c0f4b55268b0dc Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Tue, 18 Feb 2025 21:53:28 +0000 Subject: [PATCH 10/13] video: Only dcache flush damaged lines Now that we have a damage area tells us which parts of the frame buffer @@ -1401,15 +1385,16 @@ Reported-by: Da Xue [Alper: Use damage.xstart/yend, IS_ENABLED()] Co-developed-by: Alper Nebi Yasak Signed-off-by: Alper Nebi Yasak +Signed-off-by: Peter Robinson --- drivers/video/video-uclass.c | 41 +++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c -index cbdda274f2d..e009be4f55d 100644 +index d175ed61ac8..6452ff5039e 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c -@@ -381,6 +381,41 @@ void video_damage(struct udevice *vid, int x, int y, int width, int height) +@@ -401,6 +401,41 @@ void video_damage(struct udevice *vid, int x, int y, int width, int height) priv->damage.yend = max(yend, priv->damage.yend); } @@ -1451,7 +1436,7 @@ index cbdda274f2d..e009be4f55d 100644 /* Flush video activity to the caches */ int video_sync(struct udevice *vid, bool force) { -@@ -400,11 +435,7 @@ int video_sync(struct udevice *vid, bool force) +@@ -424,11 +459,7 @@ int video_sync(struct udevice *vid, bool force) * out whether it exists? For now, ARM is safe. */ #if defined(CONFIG_ARM) && !CONFIG_IS_ENABLED(SYS_DCACHE_OFF) @@ -1462,18 +1447,15 @@ index cbdda274f2d..e009be4f55d 100644 - } + video_flush_dcache(vid); #elif defined(CONFIG_VIDEO_SANDBOX_SDL) - static ulong last_sync; - + sandbox_sdl_sync(priv->fb); + #endif -- -2.45.1 +2.48.1 -From 09e504af253b3f3062891d59ad17c4fb8193dcc7 Mon Sep 17 00:00:00 2001 +From d0c47756db0fbd0c50d4cbc377a35af7133493f3 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sat, 25 May 2024 12:18:41 +0100 -Subject: [PATCH 11/13] From e9d51b4dcbfa43aa0e4d2b4f285bf94c295603e4 Mon Sep - 17 00:00:00 2001 From: Alexander Graf Date: Mon, 21 Aug - 2023 16:51:08 +0300 Subject: [PATCH 11/13] video: Use VIDEO_DAMAGE for - VIDEO_COPY +Subject: [PATCH 11/13] video: Use VIDEO_DAMAGE for VIDEO_COPY CONFIG_VIDEO_COPY implemented a range-based copying mechanism: If we print a single character, it will always copy the full range of bytes @@ -1513,10 +1495,10 @@ Signed-off-by: Peter Robinson 11 files changed, 43 insertions(+), 248 deletions(-) diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig -index 2051f0a3d7a..93b52f2de5c 100644 +index d9e5ac6af48..7b35ad8a88f 100644 --- a/configs/sandbox_defconfig +++ b/configs/sandbox_defconfig -@@ -319,7 +319,6 @@ CONFIG_USB_ETH_CDC=y +@@ -328,7 +328,6 @@ CONFIG_USB_ETH_CDC=y CONFIG_VIDEO=y CONFIG_VIDEO_FONT_SUN12X22=y CONFIG_VIDEO_COPY=y @@ -1525,10 +1507,10 @@ index 2051f0a3d7a..93b52f2de5c 100644 CONFIG_CONSOLE_TRUETYPE=y CONFIG_CONSOLE_TRUETYPE_CANTORAONE=y diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig -index 7815b590481..88c6f8e6897 100644 +index 5d67067891b..964174b01ac 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig -@@ -83,11 +83,14 @@ config VIDEO_PCI_DEFAULT_FB_SIZE +@@ -89,11 +89,14 @@ config VIDEO_PCI_DEFAULT_FB_SIZE config VIDEO_COPY bool "Enable copying the frame buffer to a hardware copy" @@ -1543,7 +1525,7 @@ index 7815b590481..88c6f8e6897 100644 To use this, your video driver must set @copy_base in struct video_uc_plat. -@@ -105,6 +108,8 @@ config VIDEO_DAMAGE +@@ -111,6 +114,8 @@ config VIDEO_DAMAGE regions of the frame buffer that were modified before, speeding up screen refreshes significantly. @@ -1553,10 +1535,10 @@ index 7815b590481..88c6f8e6897 100644 bool "Generic PWM based Backlight Driver" depends on BACKLIGHT && DM_PWM diff --git a/drivers/video/console_normal.c b/drivers/video/console_normal.c -index 6634d3f27da..fbfd2caabc6 100644 +index 51ac8cc78e9..07db613ac53 100644 --- a/drivers/video/console_normal.c +++ b/drivers/video/console_normal.c -@@ -36,10 +36,6 @@ static int console_set_row(struct udevice *dev, uint row, int clr) +@@ -35,10 +35,6 @@ static int console_set_row(struct udevice *dev, uint row, int clr) fill_pixel_and_goto_next(&dst, clr, pbytes, pbytes); end = dst; @@ -1567,7 +1549,7 @@ index 6634d3f27da..fbfd2caabc6 100644 video_damage(dev->parent, 0, fontdata->height * row, -@@ -58,14 +54,11 @@ static int console_move_rows(struct udevice *dev, uint rowdst, +@@ -57,14 +53,11 @@ static int console_move_rows(struct udevice *dev, uint rowdst, void *dst; void *src; int size; @@ -1583,7 +1565,7 @@ index 6634d3f27da..fbfd2caabc6 100644 video_damage(dev->parent, 0, -@@ -110,10 +103,6 @@ static int console_putc_xy(struct udevice *dev, uint x_frac, uint y, int cp) +@@ -109,10 +102,6 @@ static int console_putc_xy(struct udevice *dev, uint x_frac, uint y, int cp) fontdata->width, fontdata->height); @@ -1595,10 +1577,10 @@ index 6634d3f27da..fbfd2caabc6 100644 } diff --git a/drivers/video/console_rotate.c b/drivers/video/console_rotate.c -index 8129c7b2aa7..fa0b4faf63b 100644 +index f11dc3a0b07..886b25dcfaf 100644 --- a/drivers/video/console_rotate.c +++ b/drivers/video/console_rotate.c -@@ -22,7 +22,6 @@ static int console_set_row_1(struct udevice *dev, uint row, int clr) +@@ -21,7 +21,6 @@ static int console_set_row_1(struct udevice *dev, uint row, int clr) int pbytes = VNBYTES(vid_priv->bpix); void *start, *dst, *line; int i, j; @@ -1606,7 +1588,7 @@ index 8129c7b2aa7..fa0b4faf63b 100644 start = vid_priv->fb + vid_priv->line_length - (row + 1) * fontdata->height * pbytes; -@@ -33,9 +32,6 @@ static int console_set_row_1(struct udevice *dev, uint row, int clr) +@@ -32,9 +31,6 @@ static int console_set_row_1(struct udevice *dev, uint row, int clr) fill_pixel_and_goto_next(&dst, clr, pbytes, pbytes); line += vid_priv->line_length; } @@ -1616,7 +1598,7 @@ index 8129c7b2aa7..fa0b4faf63b 100644 video_damage(dev->parent, vid_priv->xsize - ((row + 1) * fontdata->height), -@@ -55,7 +51,7 @@ static int console_move_rows_1(struct udevice *dev, uint rowdst, uint rowsrc, +@@ -54,7 +50,7 @@ static int console_move_rows_1(struct udevice *dev, uint rowdst, uint rowsrc, int pbytes = VNBYTES(vid_priv->bpix); void *dst; void *src; @@ -1625,7 +1607,7 @@ index 8129c7b2aa7..fa0b4faf63b 100644 dst = vid_priv->fb + vid_priv->line_length - (rowdst + count) * fontdata->height * pbytes; -@@ -63,10 +59,7 @@ static int console_move_rows_1(struct udevice *dev, uint rowdst, uint rowsrc, +@@ -62,10 +58,7 @@ static int console_move_rows_1(struct udevice *dev, uint rowdst, uint rowsrc, (rowsrc + count) * fontdata->height * pbytes; for (j = 0; j < vid_priv->ysize; j++) { @@ -1637,7 +1619,7 @@ index 8129c7b2aa7..fa0b4faf63b 100644 src += vid_priv->line_length; dst += vid_priv->line_length; } -@@ -106,10 +99,6 @@ static int console_putc_xy_1(struct udevice *dev, uint x_frac, uint y, int cp) +@@ -105,10 +98,6 @@ static int console_putc_xy_1(struct udevice *dev, uint x_frac, uint y, int cp) return ret; /* We draw backwards from 'start, so account for the first line */ @@ -1648,7 +1630,7 @@ index 8129c7b2aa7..fa0b4faf63b 100644 video_damage(dev->parent, vid_priv->xsize - y - fontdata->height, linenum - 1, -@@ -127,7 +116,7 @@ static int console_set_row_2(struct udevice *dev, uint row, int clr) +@@ -125,7 +114,7 @@ static int console_set_row_2(struct udevice *dev, uint row, int clr) struct video_fontdata *fontdata = priv->fontdata; void *start, *line, *dst, *end; int pixels = fontdata->height * vid_priv->xsize; @@ -1657,7 +1639,7 @@ index 8129c7b2aa7..fa0b4faf63b 100644 int pbytes = VNBYTES(vid_priv->bpix); start = vid_priv->fb + vid_priv->ysize * vid_priv->line_length - -@@ -137,9 +126,6 @@ static int console_set_row_2(struct udevice *dev, uint row, int clr) +@@ -135,9 +124,6 @@ static int console_set_row_2(struct udevice *dev, uint row, int clr) for (i = 0; i < pixels; i++) fill_pixel_and_goto_next(&dst, clr, pbytes, pbytes); end = dst; @@ -1667,7 +1649,7 @@ index 8129c7b2aa7..fa0b4faf63b 100644 video_damage(dev->parent, 0, -@@ -165,8 +151,7 @@ static int console_move_rows_2(struct udevice *dev, uint rowdst, uint rowsrc, +@@ -163,8 +149,7 @@ static int console_move_rows_2(struct udevice *dev, uint rowdst, uint rowsrc, vid_priv->line_length; src = end - (rowsrc + count) * fontdata->height * vid_priv->line_length; @@ -1677,7 +1659,7 @@ index 8129c7b2aa7..fa0b4faf63b 100644 video_damage(dev->parent, 0, -@@ -202,11 +187,6 @@ static int console_putc_xy_2(struct udevice *dev, uint x_frac, uint y, int cp) +@@ -200,11 +185,6 @@ static int console_putc_xy_2(struct udevice *dev, uint x_frac, uint y, int cp) if (ret) return ret; @@ -1689,7 +1671,7 @@ index 8129c7b2aa7..fa0b4faf63b 100644 video_damage(dev->parent, x - fontdata->width + 1, linenum - fontdata->height + 1, -@@ -223,7 +203,7 @@ static int console_set_row_3(struct udevice *dev, uint row, int clr) +@@ -221,7 +201,7 @@ static int console_set_row_3(struct udevice *dev, uint row, int clr) struct video_fontdata *fontdata = priv->fontdata; int pbytes = VNBYTES(vid_priv->bpix); void *start, *dst, *line; @@ -1698,7 +1680,7 @@ index 8129c7b2aa7..fa0b4faf63b 100644 start = vid_priv->fb + row * fontdata->height * pbytes; line = start; -@@ -233,9 +213,6 @@ static int console_set_row_3(struct udevice *dev, uint row, int clr) +@@ -231,9 +211,6 @@ static int console_set_row_3(struct udevice *dev, uint row, int clr) fill_pixel_and_goto_next(&dst, clr, pbytes, pbytes); line += vid_priv->line_length; } @@ -1708,7 +1690,7 @@ index 8129c7b2aa7..fa0b4faf63b 100644 video_damage(dev->parent, row * fontdata->height, -@@ -255,16 +232,13 @@ static int console_move_rows_3(struct udevice *dev, uint rowdst, uint rowsrc, +@@ -253,16 +230,13 @@ static int console_move_rows_3(struct udevice *dev, uint rowdst, uint rowsrc, int pbytes = VNBYTES(vid_priv->bpix); void *dst; void *src; @@ -1727,7 +1709,7 @@ index 8129c7b2aa7..fa0b4faf63b 100644 src += vid_priv->line_length; dst += vid_priv->line_length; } -@@ -300,10 +274,6 @@ static int console_putc_xy_3(struct udevice *dev, uint x_frac, uint y, int cp) +@@ -298,10 +272,6 @@ static int console_putc_xy_3(struct udevice *dev, uint x_frac, uint y, int cp) line = start; ret = fill_char_horizontally(pfont, &line, vid_priv, fontdata, NORMAL_DIRECTION); @@ -1739,10 +1721,10 @@ index 8129c7b2aa7..fa0b4faf63b 100644 return ret; diff --git a/drivers/video/console_truetype.c b/drivers/video/console_truetype.c -index ed6c9cbb4f4..4cf9b013293 100644 +index 073ddcfb695..0dfd7914dc1 100644 --- a/drivers/video/console_truetype.c +++ b/drivers/video/console_truetype.c -@@ -195,7 +195,6 @@ static int console_truetype_set_row(struct udevice *dev, uint row, int clr) +@@ -194,7 +194,6 @@ static int console_truetype_set_row(struct udevice *dev, uint row, int clr) struct console_tt_priv *priv = dev_get_priv(dev); struct console_tt_metrics *met = priv->cur_met; void *end, *line; @@ -1750,7 +1732,7 @@ index ed6c9cbb4f4..4cf9b013293 100644 line = vid_priv->fb + row * met->font_size * vid_priv->line_length; end = line + met->font_size * vid_priv->line_length; -@@ -231,9 +230,6 @@ static int console_truetype_set_row(struct udevice *dev, uint row, int clr) +@@ -230,9 +229,6 @@ static int console_truetype_set_row(struct udevice *dev, uint row, int clr) default: return -ENOSYS; } @@ -1760,7 +1742,7 @@ index ed6c9cbb4f4..4cf9b013293 100644 video_damage(dev->parent, 0, -@@ -253,14 +249,11 @@ static int console_truetype_move_rows(struct udevice *dev, uint rowdst, +@@ -252,14 +248,11 @@ static int console_truetype_move_rows(struct udevice *dev, uint rowdst, struct console_tt_metrics *met = priv->cur_met; void *dst; void *src; @@ -1777,7 +1759,7 @@ index ed6c9cbb4f4..4cf9b013293 100644 /* Scroll up our position history */ diff = (rowsrc - rowdst) * met->font_size; -@@ -293,7 +286,7 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y, +@@ -292,7 +285,7 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y, u8 *bits, *data; int advance; void *start, *end, *line; @@ -1786,7 +1768,7 @@ index ed6c9cbb4f4..4cf9b013293 100644 /* First get some basic metrics about this character */ stbtt_GetCodepointHMetrics(font, cp, &advance, &lsb); -@@ -440,9 +433,6 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y, +@@ -439,9 +432,6 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y, width, height); @@ -1797,10 +1779,10 @@ index ed6c9cbb4f4..4cf9b013293 100644 return width_frac; diff --git a/drivers/video/vidconsole-uclass.c b/drivers/video/vidconsole-uclass.c -index 5d06e51ff23..5f1dd0aaa41 100644 +index ebe96bf0c2f..a1dfd35b7b8 100644 --- a/drivers/video/vidconsole-uclass.c +++ b/drivers/video/vidconsole-uclass.c -@@ -760,22 +760,6 @@ UCLASS_DRIVER(vidconsole) = { +@@ -761,22 +761,6 @@ UCLASS_DRIVER(vidconsole) = { .per_device_auto = sizeof(struct vidconsole_priv), }; @@ -1824,10 +1806,10 @@ index 5d06e51ff23..5f1dd0aaa41 100644 { int ret; diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c -index e009be4f55d..b3eeccb996d 100644 +index 6452ff5039e..a828e67341b 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c -@@ -153,7 +153,7 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, +@@ -171,7 +171,7 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, struct video_priv *priv = dev_get_uclass_priv(dev); void *start, *line; int pixels = xend - xstart; @@ -1836,7 +1818,7 @@ index e009be4f55d..b3eeccb996d 100644 start = priv->fb + ystart * priv->line_length; start += xstart * VNBYTES(priv->bpix); -@@ -193,10 +193,6 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, +@@ -211,10 +211,6 @@ int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, line += priv->line_length; } @@ -1847,7 +1829,7 @@ index e009be4f55d..b3eeccb996d 100644 video_damage(dev, xstart, ystart, xend - xstart, yend - ystart); return 0; -@@ -219,7 +215,6 @@ int video_reserve_from_bloblist(struct video_handoff *ho) +@@ -236,7 +232,6 @@ int video_reserve_from_bloblist(struct video_handoff *ho) int video_fill(struct udevice *dev, u32 colour) { struct video_priv *priv = dev_get_uclass_priv(dev); @@ -1855,7 +1837,7 @@ index e009be4f55d..b3eeccb996d 100644 switch (priv->bpix) { case VIDEO_BPP16: -@@ -244,9 +239,6 @@ int video_fill(struct udevice *dev, u32 colour) +@@ -261,9 +256,6 @@ int video_fill(struct udevice *dev, u32 colour) memset(priv->fb, colour, priv->fb_size); break; } @@ -1865,7 +1847,7 @@ index e009be4f55d..b3eeccb996d 100644 video_damage(dev, 0, 0, priv->xsize, priv->ysize); -@@ -416,6 +408,27 @@ static void video_flush_dcache(struct udevice *vid) +@@ -436,6 +428,27 @@ static void video_flush_dcache(struct udevice *vid) } #endif @@ -1893,7 +1875,7 @@ index e009be4f55d..b3eeccb996d 100644 /* Flush video activity to the caches */ int video_sync(struct udevice *vid, bool force) { -@@ -423,6 +436,9 @@ int video_sync(struct udevice *vid, bool force) +@@ -443,6 +456,9 @@ int video_sync(struct udevice *vid, bool force) struct video_ops *ops = video_get_ops(vid); int ret; @@ -1903,7 +1885,7 @@ index e009be4f55d..b3eeccb996d 100644 if (ops && ops->video_sync) { ret = ops->video_sync(vid); if (ret) -@@ -503,69 +519,6 @@ int video_get_ysize(struct udevice *dev) +@@ -524,69 +540,6 @@ int video_get_ysize(struct udevice *dev) return priv->ysize; } @@ -1974,10 +1956,10 @@ index e009be4f55d..b3eeccb996d 100644 extern u8 __splash_ ## _name ## _begin[]; \ extern u8 __splash_ ## _name ## _end[] diff --git a/drivers/video/video_bmp.c b/drivers/video/video_bmp.c -index 10943b9ca19..da2bbe864a0 100644 +index 78de9560792..1f267d45812 100644 --- a/drivers/video/video_bmp.c +++ b/drivers/video/video_bmp.c -@@ -268,7 +268,6 @@ int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y, +@@ -267,7 +267,6 @@ int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y, enum video_format eformat; struct bmp_color_table_entry *palette; int hdr_size; @@ -1985,7 +1967,7 @@ index 10943b9ca19..da2bbe864a0 100644 if (!bmp || !(bmp->header.signature[0] == 'B' && bmp->header.signature[1] == 'M')) { -@@ -462,11 +461,5 @@ int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y, +@@ -461,11 +460,5 @@ int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y, video_damage(dev, x, y, width, height); @@ -1998,10 +1980,10 @@ index 10943b9ca19..da2bbe864a0 100644 return video_sync(dev, false); } diff --git a/include/video.h b/include/video.h -index 1310195f307..29eff3c0900 100644 +index 92aa5da4ff3..26327473738 100644 --- a/include/video.h +++ b/include/video.h -@@ -353,43 +353,6 @@ void video_set_default_colors(struct udevice *dev, bool invert); +@@ -355,43 +355,6 @@ void video_set_default_colors(struct udevice *dev, bool invert); */ int video_default_font_height(struct udevice *dev); @@ -2046,10 +2028,10 @@ index 1310195f307..29eff3c0900 100644 * video_damage() - Notify the video subsystem about screen updates. * diff --git a/include/video_console.h b/include/video_console.h -index 8b5928dc5eb..8806d10f946 100644 +index 723d2315606..13197fa4518 100644 --- a/include/video_console.h +++ b/include/video_console.h -@@ -529,56 +529,4 @@ void vidconsole_list_fonts(struct udevice *dev); +@@ -537,56 +537,4 @@ void vidconsole_list_fonts(struct udevice *dev); */ int vidconsole_get_font_size(struct udevice *dev, const char **name, uint *sizep); @@ -2107,10 +2089,10 @@ index 8b5928dc5eb..8806d10f946 100644 - #endif diff --git a/test/dm/video.c b/test/dm/video.c -index 8c7d9800a42..4c3bcd26e94 100644 +index 9da00be5479..eda1195d3b9 100644 --- a/test/dm/video.c +++ b/test/dm/video.c -@@ -106,6 +106,7 @@ static int check_copy_frame_buffer(struct unit_test_state *uts, +@@ -105,6 +105,7 @@ static int check_copy_frame_buffer(struct unit_test_state *uts, if (!IS_ENABLED(CONFIG_VIDEO_COPY)) return 0; @@ -2118,7 +2100,7 @@ index 8c7d9800a42..4c3bcd26e94 100644 ut_assertf(!memcmp(priv->fb, priv->copy_fb, priv->fb_size), "Copy framebuffer does not match fb"); -@@ -706,7 +707,7 @@ static int dm_test_video_copy(struct unit_test_state *uts) +@@ -705,7 +706,7 @@ static int dm_test_video_copy(struct unit_test_state *uts) vidconsole_put_string(con, test_string); vidconsole_put_string(con, test_string); ut_asserteq(7589, compress_frame_buffer(uts, dev, false)); @@ -2128,11 +2110,11 @@ index 8c7d9800a42..4c3bcd26e94 100644 return 0; } -- -2.45.1 +2.48.1 -From 6b90fed4745a705c1ca660a346a3563f0da8def5 Mon Sep 17 00:00:00 2001 -From: Alexander Graf -Date: Mon, 21 Aug 2023 16:51:09 +0300 +From 3fb044255ec50a026195586ced9e53499d701254 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Tue, 18 Feb 2025 21:57:38 +0000 Subject: [PATCH 12/13] video: Always compile cache flushing code The dcache flushing code path was conditional on ARM && !DCACHE config @@ -2150,15 +2132,16 @@ Reported-by: Heinrich Schuchardt Signed-off-by: Alexander Graf Reviewed-by: Simon Glass Signed-off-by: Alper Nebi Yasak +Signed-off-by: Peter Robinson --- drivers/video/video-uclass.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c -index b3eeccb996d..33ad9ff3fab 100644 +index a828e67341b..c566931a050 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c -@@ -373,11 +373,13 @@ void video_damage(struct udevice *vid, int x, int y, int width, int height) +@@ -393,11 +393,13 @@ void video_damage(struct udevice *vid, int x, int y, int width, int height) priv->damage.yend = max(yend, priv->damage.yend); } @@ -2173,7 +2156,7 @@ index b3eeccb996d..33ad9ff3fab 100644 if (!priv->flush_dcache) return; -@@ -406,7 +408,6 @@ static void video_flush_dcache(struct udevice *vid) +@@ -426,7 +428,6 @@ static void video_flush_dcache(struct udevice *vid) } } } @@ -2181,9 +2164,9 @@ index b3eeccb996d..33ad9ff3fab 100644 static void video_flush_copy(struct udevice *vid) { -@@ -445,14 +446,9 @@ int video_sync(struct udevice *vid, bool force) - return ret; - } +@@ -469,14 +470,9 @@ int video_sync(struct udevice *vid, bool force) + get_timer(priv->last_sync) < CONFIG_VIDEO_SYNC_MS) + return 0; - /* - * flush_dcache_range() is declared in common.h but it seems that some @@ -2195,13 +2178,13 @@ index b3eeccb996d..33ad9ff3fab 100644 -#elif defined(CONFIG_VIDEO_SANDBOX_SDL) + +#if defined(CONFIG_VIDEO_SANDBOX_SDL) - static ulong last_sync; + sandbox_sdl_sync(priv->fb); + #endif - if (force || get_timer(last_sync) > 100) { -- -2.45.1 +2.48.1 -From 7cfa667a11f245596e4b31842b0d646929be24e9 Mon Sep 17 00:00:00 2001 +From 7d1ef5a8dafc5e95d5db753010f53880f49e979e Mon Sep 17 00:00:00 2001 From: Alexander Graf Date: Mon, 21 Aug 2023 16:51:10 +0300 Subject: [PATCH 13/13] video: Enable VIDEO_DAMAGE for drivers that need it @@ -2232,10 +2215,10 @@ Reviewed-by: Simon Glass 9 files changed, 16 insertions(+) diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig -index ddf9414b08e..3c9745065ba 100644 +index ba1b1541437..bb1ea961704 100644 --- a/arch/arm/mach-sunxi/Kconfig +++ b/arch/arm/mach-sunxi/Kconfig -@@ -863,6 +863,7 @@ config VIDEO_SUNXI +@@ -882,6 +882,7 @@ config VIDEO_SUNXI depends on !SUNXI_GEN_NCAT2 select VIDEO select DISPLAY @@ -2244,10 +2227,10 @@ index ddf9414b08e..3c9745065ba 100644 default y ---help--- diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig -index 88c6f8e6897..06d3ed8a736 100644 +index 964174b01ac..6e1577ae687 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig -@@ -499,6 +499,7 @@ config VIDEO_LCD_ANX9804 +@@ -534,6 +534,7 @@ config VIDEO_LCD_ANX9804 config ATMEL_LCD bool "Atmel LCD panel support" @@ -2255,7 +2238,7 @@ index 88c6f8e6897..06d3ed8a736 100644 depends on ARCH_AT91 config ATMEL_LCD_BGR555 -@@ -508,6 +509,7 @@ config ATMEL_LCD_BGR555 +@@ -543,6 +544,7 @@ config ATMEL_LCD_BGR555 config VIDEO_BCM2835 bool "Display support for BCM2835" @@ -2263,7 +2246,7 @@ index 88c6f8e6897..06d3ed8a736 100644 help The graphics processor already sets up the display so this driver simply checks the resolution and then sets up the frame buffer with -@@ -671,6 +673,7 @@ source "drivers/video/meson/Kconfig" +@@ -715,6 +717,7 @@ source "drivers/video/meson/Kconfig" config VIDEO_MVEBU bool "Armada XP LCD controller" @@ -2271,7 +2254,7 @@ index 88c6f8e6897..06d3ed8a736 100644 ---help--- Support for the LCD controller integrated in the Marvell Armada XP SoC. -@@ -705,6 +708,7 @@ config NXP_TDA19988 +@@ -749,6 +752,7 @@ config NXP_TDA19988 config ATMEL_HLCD bool "Enable ATMEL video support using HLCDC" @@ -2279,7 +2262,7 @@ index 88c6f8e6897..06d3ed8a736 100644 help HLCDC supports video output to an attached LCD panel. -@@ -781,6 +785,7 @@ source "drivers/video/tidss/Kconfig" +@@ -825,6 +829,7 @@ source "drivers/video/tidss/Kconfig" config VIDEO_TEGRA124 bool "Enable video support on Tegra124" @@ -2287,7 +2270,7 @@ index 88c6f8e6897..06d3ed8a736 100644 help Tegra124 supports many video output options including eDP and HDMI. At present only eDP is supported by U-Boot. This option -@@ -795,6 +800,7 @@ source "drivers/video/imx/Kconfig" +@@ -839,6 +844,7 @@ source "drivers/video/imx/Kconfig" config VIDEO_MXS bool "Enable video support on i.MX28/i.MX6UL/i.MX7 SoCs" @@ -2295,7 +2278,7 @@ index 88c6f8e6897..06d3ed8a736 100644 help Enable framebuffer driver for i.MX28/i.MX6UL/i.MX7 processors -@@ -857,6 +863,7 @@ config VIDEO_DW_MIPI_DSI +@@ -901,6 +907,7 @@ config VIDEO_DW_MIPI_DSI config VIDEO_SIMPLE bool "Simple display driver for preconfigured display" @@ -2303,7 +2286,7 @@ index 88c6f8e6897..06d3ed8a736 100644 help Enables a simple generic display driver which utilizes the simple-framebuffer devicetree bindings. -@@ -875,6 +882,7 @@ config VIDEO_DT_SIMPLEFB +@@ -919,6 +926,7 @@ config VIDEO_DT_SIMPLEFB config VIDEO_MCDE_SIMPLE bool "Simple driver for ST-Ericsson MCDE with preconfigured display" @@ -2395,5 +2378,5 @@ index 95086f3a5d6..3291b3ceb8d 100644 TIDSS supports video output options LVDS and DPI . This option enables these supports which can be used on -- -2.45.1 +2.48.1 diff --git a/sources b/sources index 180c13e..f13eabc 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2025.04-rc1.tar.bz2) = b973b39c2665d30ab1a9b96fb1eaae70bbdd29dabb68e4cdcf84a11174482e8861ccd8984ca17f594ca6af15bf0517c5263574385836676413e16f911b5bbb4e +SHA512 (u-boot-2025.04-rc2.tar.bz2) = 1f86359009f69899c9310bf2cde21cede48541a5985f4d7dc4d4e4eddfb247ea6e778ca648e21df3d79231eb6b0d9f45646f09e972d5fb60a6fbfca013cecd57 diff --git a/uboot-tools.spec b/uboot-tools.spec index 5c55822..b655b95 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -%global candidate rc1 +%global candidate rc2 %if 0%{?rhel} %bcond_with toolsonly %else @@ -7,7 +7,7 @@ Name: uboot-tools Version: 2025.04 -Release: 0.2%{?candidate:.%{candidate}}%{?dist} +Release: 0.3%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities # Automatically converted from old format: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ - review is highly recommended. @@ -27,7 +27,7 @@ Patch3: uefi-initial-find_fdt_location-for-finding-the-DT-on-disk.patch Patch4: disable-VBE-by-default.patch Patch5: enable-bootmenu-by-default.patch # Should be upstream but it's taking time -#Patch6: Add-video-damage-tracking.patch +Patch6: Add-video-damage-tracking.patch # Device improvments # RPi @@ -225,6 +225,9 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Tue Feb 11 2025 Peter Robinson - 1:2025.04-0.3.rc2 +- Update to 2025.05 RC2 + * Tue Feb 11 2025 Peter Robinson - 1:2025.04-0.2.rc1 - Update to 2025.05 RC1 From df50b5d41bf91308089c9548d2955963ee4d7eba Mon Sep 17 00:00:00 2001 From: David Abdurachmanov Date: Tue, 20 Aug 2024 11:16:49 +0300 Subject: [PATCH 209/271] Add support for riscv64 Signed-off-by: David Abdurachmanov --- riscv64-boards | 4 ++++ uboot-tools.spec | 51 ++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 riscv64-boards diff --git a/riscv64-boards b/riscv64-boards new file mode 100644 index 0000000..f96e775 --- /dev/null +++ b/riscv64-boards @@ -0,0 +1,4 @@ +qemu-riscv64_spl +sifive_unleashed +sifive_unmatched +starfive_visionfive2 diff --git a/uboot-tools.spec b/uboot-tools.spec index b655b95..90aae1f 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -5,9 +5,12 @@ %bcond_without toolsonly %endif +# Set it to "opensbi" (stable) or "opensbi-unstable" (unstable, git) +%global opensbi opensbi + Name: uboot-tools Version: 2025.04 -Release: 0.3%{?candidate:.%{candidate}}%{?dist} +Release: 0.4%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities # Automatically converted from old format: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ - review is highly recommended. @@ -16,6 +19,7 @@ URL: http://www.denx.de/wiki/U-Boot ExcludeArch: s390x Source0: https://ftp.denx.de/pub/u-boot/u-boot-%{version}%{?candidate:-%{candidate}}.tar.bz2 Source1: aarch64-boards +Source2: riscv64-boards # This is now legacy, most devices use bootflow, we keep this for the laggards Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch @@ -62,6 +66,9 @@ BuildRequires: xxd %endif %endif Requires: dtc +%ifarch riscv64 +BuildRequires: %{opensbi} +%endif %description This package contains a few U-Boot utilities - mkimage for creating boot images @@ -76,12 +83,21 @@ BuildArch: noarch %description -n uboot-images-armv8 U-Boot firmware binaries for aarch64 boards %endif + +%ifarch riscv64 +%package -n uboot-images-riscv64 +Summary: U-Boot firmware images for riscv64 boards +BuildArch: noarch + +%description -n uboot-images-riscv64 +U-Boot firmware binaries for riscv64 boards +%endif %endif %prep %autosetup -p1 -n u-boot-%{version}%{?candidate:-%{candidate}} -cp %SOURCE1 . +cp %SOURCE1 %SOURCE2 . %build mkdir builds @@ -90,7 +106,12 @@ mkdir builds %make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" tools-all O=builds/ %if %{with toolsonly} -%ifarch aarch64 +# OpenSBI firmware is distributed in U-Boot SPL images +%ifarch riscv64 +export OPENSBI=%{_datadir}/%{opensbi}/generic/firmware/fw_dynamic.bin +%endif + +%ifarch aarch64 riscv64 for board in $(cat %{_arch}-boards) do echo "Building board: $board" @@ -181,6 +202,19 @@ done # For Apple M-series we also need the nodtb variant install -pD -m 0644 builds/apple_m1/u-boot-nodtb.bin %{buildroot}%{_datadir}/uboot/apple_m1/u-boot-nodtb.bin +%endif + +%ifarch riscv64 +for board in $(ls builds) +do + for file in u-boot.itb spl/u-boot-spl.bin spl/u-boot-spl.bin.normal.out + do + if [ -f builds/$(echo $board)/$(echo $file) ]; then + install -pD -m 0644 builds/$(echo $board)/$(echo $file) %{buildroot}%{_datadir}/uboot/$(echo $board)/$(echo $file) + fi + done +done +%endif # Bit of a hack to remove binaries we don't use as they're large for board in $(ls builds) @@ -191,7 +225,6 @@ do fi done %endif -%endif for tool in dumpimage env/fw_printenv fdt_add_pubkey fit_check_sign fit_info gdb/gdbcont gdb/gdbsend gen_eth_addr gen_ethaddr_crc ifwitool img2srec kwboot mkeficapsule mkenvimage mkimage mksunxiboot ncb proftool sunxi-spl-image-builder do @@ -222,9 +255,19 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %dir %{_datadir}/uboot/ %{_datadir}/uboot/* %endif + +%ifarch riscv64 +%files -n uboot-images-riscv64 +%license Licenses/* +%dir %{_datadir}/uboot/ +%{_datadir}/uboot/* +%endif %endif %changelog +* Tue Feb 18 2025 David Abdurachmanov - 1:2025.04-0.4.rc2 +- Add support for riscv64 + * Tue Feb 11 2025 Peter Robinson - 1:2025.04-0.3.rc2 - Update to 2025.05 RC2 From 4aaac8b6b212340fc9b92daacbcd33c9d09c930f Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Fri, 7 Mar 2025 12:45:32 +0000 Subject: [PATCH 210/271] 2025.04 RC3 --- ...mem-node-for-preserving-distro-ISO-s.patch | 1288 +++++++++++++++++ USB-PD-TCPM-improvements.patch | 717 +++++++++ sources | 2 +- uboot-tools.spec | 11 +- 4 files changed, 2015 insertions(+), 3 deletions(-) create mode 100644 Add-pmem-node-for-preserving-distro-ISO-s.patch create mode 100644 USB-PD-TCPM-improvements.patch diff --git a/Add-pmem-node-for-preserving-distro-ISO-s.patch b/Add-pmem-node-for-preserving-distro-ISO-s.patch new file mode 100644 index 0000000..bc8620b --- /dev/null +++ b/Add-pmem-node-for-preserving-distro-ISO-s.patch @@ -0,0 +1,1288 @@ +From patchwork Fri Feb 28 08:45:24 2025 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sughosh Ganu +X-Patchwork-Id: 2053441 +X-Patchwork-Delegate: xypron.glpk@gmx.de +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +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 4Z41yQ5Fkdz1yKH + for ; Fri, 28 Feb 2025 19:46:06 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 2504E81100; + Fri, 28 Feb 2025 09:46:02 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=linaro.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id B0BC2807D7; Fri, 28 Feb 2025 09:46:00 +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=-1.2 required=5.0 tests=BAYES_00, + RCVD_IN_DNSWL_BLOCKED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, + RCVD_IN_VALIDITY_RPBL_BLOCKED,SPF_HELO_NONE,SPF_SOFTFAIL autolearn=no + autolearn_force=no version=3.4.2 +Received: from foss.arm.com (foss.arm.com [217.140.110.172]) + by phobos.denx.de (Postfix) with ESMTP id E55D680BA4 + for ; Fri, 28 Feb 2025 09:45:57 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=linaro.org +Authentication-Results: phobos.denx.de; + spf=fail smtp.mailfrom=sughosh.ganu@linaro.org +Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) + by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 99830150C; + Fri, 28 Feb 2025 00:46:12 -0800 (PST) +Received: from a079122.blr.arm.com (a079122.arm.com [10.162.17.48]) + by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 2C1F13F673; + Fri, 28 Feb 2025 00:45:53 -0800 (PST) +From: Sughosh Ganu +To: u-boot@lists.denx.de +Cc: Ilias Apalodimas , + Simon Glass , Tom Rini , + Heinrich Schuchardt , + Anton Antonov , + Tobias Waldekranz , Bin Meng , + Masahisa Kojima , + Sughosh Ganu +Subject: [PATCH v6 1/6] fdt: add support for adding pmem nodes +Date: Fri, 28 Feb 2025 14:15:24 +0530 +Message-Id: <20250228084529.127823-2-sughosh.ganu@linaro.org> +X-Mailer: git-send-email 2.34.1 +In-Reply-To: <20250228084529.127823-1-sughosh.ganu@linaro.org> +References: <20250228084529.127823-1-sughosh.ganu@linaro.org> +MIME-Version: 1.0 +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 + +From: Masahisa Kojima + +One of the problems OS installers face, when running in EFI, is that +the mounted ISO after calling ExitBootServices goes away. For some +distros this is a problem since they rely on finding some core packages +before continuing the installation. Distros have works around this -- +e.g Fedora has a special kernel command line parameter called +inst.stage2 [0]. + +ACPI has NFIT and NVDIMM support to provide ramdisks to the OS, but we +don't have anything in place for DTs. Linux and device trees have support +for persistent memory devices. So add a function that can inject a pmem +node in a DT, so we can use it when launhing OS installers with EFI. + +[0] +https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/7/html/installation_guide/chap-anaconda-boot-options#sect-boot-options-installer + +Signed-off-by: Masahisa Kojima +Signed-off-by: Sughosh Ganu +--- +Changes since V5: None + + boot/fdt_support.c | 41 ++++++++++++++++++++++++++++++++++++++++- + include/fdt_support.h | 14 ++++++++++++++ + 2 files changed, 54 insertions(+), 1 deletion(-) + +diff --git a/boot/fdt_support.c b/boot/fdt_support.c +index 49efeec3681..e20b9759138 100644 +--- a/boot/fdt_support.c ++++ b/boot/fdt_support.c +@@ -18,6 +18,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -464,7 +465,6 @@ void do_fixup_by_compat_u32(void *fdt, const char *compat, + do_fixup_by_compat(fdt, compat, prop, &tmp, 4, create); + } + +-#ifdef CONFIG_ARCH_FIXUP_FDT_MEMORY + /* + * fdt_pack_reg - pack address and size array into the "reg"-suitable stream + */ +@@ -493,6 +493,7 @@ static int fdt_pack_reg(const void *fdt, void *buf, u64 *address, u64 *size, + return p - (char *)buf; + } + ++#ifdef CONFIG_ARCH_FIXUP_FDT_MEMORY + #if CONFIG_NR_DRAM_BANKS > 4 + #define MEMORY_BANKS_MAX CONFIG_NR_DRAM_BANKS + #else +@@ -2222,3 +2223,41 @@ int fdt_valid(struct fdt_header **blobp) + } + return 1; + } ++ ++int fdt_fixup_pmem_region(void *blob, ulong addr, u32 size) ++{ ++ u64 pmem_start[2] = { 0 }; ++ u64 pmem_size[2] = { 0 }; ++ char pmem_node[32] = {0}; ++ int nodeoffset, len; ++ int err; ++ u8 tmp[4 * 16]; /* Up to 64-bit address + 64-bit size */ ++ ++ if (!IS_ALIGNED(addr, SZ_2M) || !IS_ALIGNED(addr + size, SZ_2M)) { ++ printf("Start and end address must be 2MiB aligned\n"); ++ return -1; ++ } ++ ++ snprintf(pmem_node, sizeof(pmem_node), "pmem@%lx", addr); ++ nodeoffset = fdt_find_or_add_subnode(blob, 0, pmem_node); ++ if (nodeoffset < 0) ++ return nodeoffset; ++ ++ err = fdt_setprop_string(blob, nodeoffset, "compatible", "pmem-region"); ++ if (err) ++ return err; ++ err = fdt_setprop_empty(blob, nodeoffset, "volatile"); ++ if (err) ++ return err; ++ pmem_start[0] = addr; ++ pmem_size[0] = size; ++ len = fdt_pack_reg(blob, tmp, pmem_start, pmem_size, 1); ++ err = fdt_setprop(blob, nodeoffset, "reg", tmp, len); ++ if (err < 0) { ++ printf("WARNING: could not set pmem %s %s.\n", "reg", ++ fdt_strerror(err)); ++ return err; ++ } ++ ++ return 0; ++} +diff --git a/include/fdt_support.h b/include/fdt_support.h +index f0ad2e6b365..b72cd2920de 100644 +--- a/include/fdt_support.h ++++ b/include/fdt_support.h +@@ -507,4 +507,18 @@ void fdt_fixup_pstore(void *blob); + */ + int fdt_kaslrseed(void *blob, bool overwrite); + ++/** ++ * fdt_fixup_pmem_region() - add a pmem node on the device tree ++ * ++ * This functions adds/updates a pmem node to the device tree. ++ * Usually used with EFI installers to preserve installer ++ * images ++ * ++ * @blob: device tree provided by caller ++ * @addr: start address of the pmem node ++ * @size: size of the memory of the pmem node ++ * Return: 0 on success or < 0 on failure ++ */ ++int fdt_fixup_pmem_region(void *blob, ulong addr, u32 size); ++ + #endif /* ifndef __FDT_SUPPORT_H */ + +From patchwork Fri Feb 28 08:45:25 2025 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sughosh Ganu +X-Patchwork-Id: 2053442 +X-Patchwork-Delegate: xypron.glpk@gmx.de +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +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 4Z41yc0t0Hz1yKH + for ; Fri, 28 Feb 2025 19:46:16 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 70EA880BA4; + Fri, 28 Feb 2025 09:46:06 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=linaro.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 7E3C9810ED; Fri, 28 Feb 2025 09:46:05 +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=-1.2 required=5.0 tests=BAYES_00, + RCVD_IN_DNSWL_BLOCKED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, + RCVD_IN_VALIDITY_RPBL_BLOCKED,SPF_HELO_NONE,SPF_SOFTFAIL autolearn=no + autolearn_force=no version=3.4.2 +Received: from foss.arm.com (foss.arm.com [217.140.110.172]) + by phobos.denx.de (Postfix) with ESMTP id A11D3810EB + for ; Fri, 28 Feb 2025 09:46:01 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=linaro.org +Authentication-Results: phobos.denx.de; + spf=fail smtp.mailfrom=sughosh.ganu@linaro.org +Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) + by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 58EBF113E; + Fri, 28 Feb 2025 00:46:16 -0800 (PST) +Received: from a079122.blr.arm.com (a079122.arm.com [10.162.17.48]) + by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id E0A503F673; + Fri, 28 Feb 2025 00:45:57 -0800 (PST) +From: Sughosh Ganu +To: u-boot@lists.denx.de +Cc: Ilias Apalodimas , + Simon Glass , Tom Rini , + Heinrich Schuchardt , + Anton Antonov , + Tobias Waldekranz , Bin Meng , + Sughosh Ganu , + Heinrich Schuchardt +Subject: [PATCH v6 2/6] efi_loader: add a function to remove memory from the + EFI map +Date: Fri, 28 Feb 2025 14:15:25 +0530 +Message-Id: <20250228084529.127823-3-sughosh.ganu@linaro.org> +X-Mailer: git-send-email 2.34.1 +In-Reply-To: <20250228084529.127823-1-sughosh.ganu@linaro.org> +References: <20250228084529.127823-1-sughosh.ganu@linaro.org> +MIME-Version: 1.0 +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 + +From: Ilias Apalodimas + +With upcoming changes supporting pmem nodes, we need to remove the +pmem area from the EFI memory map. Add a function to do that. + +Signed-off-by: Ilias Apalodimas +Signed-off-by: Sughosh Ganu +Reviewed-by: Heinrich Schuchardt +--- +Changes since V5: None + + include/efi_loader.h | 18 ++++++++++++ + lib/efi_loader/efi_memory.c | 56 ++++++++++++++++++++++++++----------- + 2 files changed, 58 insertions(+), 16 deletions(-) + +diff --git a/include/efi_loader.h b/include/efi_loader.h +index 1d75d97ebbc..0ac00911598 100644 +--- a/include/efi_loader.h ++++ b/include/efi_loader.h +@@ -852,6 +852,24 @@ efi_status_t efi_get_memory_map(efi_uintn_t *memory_map_size, + /* Adds a range into the EFI memory map */ + efi_status_t efi_add_memory_map(u64 start, u64 size, int memory_type); + ++/** ++ * efi_update_memory_map() - update the memory map by adding/removing pages ++ * ++ * @start: start address, must be a multiple of ++ * EFI_PAGE_SIZE ++ * @pages: number of pages to add ++ * @memory_type: type of memory added ++ * @overlap_conventional: region may only overlap free(conventional) ++ * memory ++ * @remove: remove memory map ++ * Return: status code ++ */ ++efi_status_t efi_update_memory_map(u64 start, u64 pages, int memory_type, ++ bool overlap_conventional, bool remove); ++ ++/* Remove memory from the EFI memory map */ ++efi_status_t efi_remove_memory_map(u64 start, u64 size, int memory_type); ++ + /* Called by board init to initialize the EFI drivers */ + efi_status_t efi_driver_init(void); + /* Called when a block device is added */ +diff --git a/lib/efi_loader/efi_memory.c b/lib/efi_loader/efi_memory.c +index 6d00b186250..3fec40b6de5 100644 +--- a/lib/efi_loader/efi_memory.c ++++ b/lib/efi_loader/efi_memory.c +@@ -258,7 +258,7 @@ static s64 efi_mem_carve_out(struct efi_mem_list *map, + } + + /** +- * efi_add_memory_map_pg() - add pages to the memory map ++ * efi_update_memory_map() - update the memory map by adding/removing pages + * + * @start: start address, must be a multiple of + * EFI_PAGE_SIZE +@@ -266,12 +266,11 @@ static s64 efi_mem_carve_out(struct efi_mem_list *map, + * @memory_type: type of memory added + * @overlap_conventional: region may only overlap free(conventional) + * memory ++ * @remove: remove memory map + * Return: status code + */ +-static +-efi_status_t efi_add_memory_map_pg(u64 start, u64 pages, +- int memory_type, +- bool overlap_conventional) ++efi_status_t efi_update_memory_map(u64 start, u64 pages, int memory_type, ++ bool overlap_conventional, bool remove) + { + struct efi_mem_list *lmem; + struct efi_mem_list *newlist; +@@ -279,9 +278,9 @@ efi_status_t efi_add_memory_map_pg(u64 start, u64 pages, + uint64_t carved_pages = 0; + struct efi_event *evt; + +- EFI_PRINT("%s: 0x%llx 0x%llx %d %s\n", __func__, ++ EFI_PRINT("%s: 0x%llx 0x%llx %d %s %s\n", __func__, + start, pages, memory_type, overlap_conventional ? +- "yes" : "no"); ++ "yes" : "no", remove ? "remove" : "add"); + + if (memory_type >= EFI_MAX_MEMORY_TYPE) + return EFI_INVALID_PARAMETER; +@@ -364,7 +363,10 @@ efi_status_t efi_add_memory_map_pg(u64 start, u64 pages, + } + + /* Add our new map */ +- list_add_tail(&newlist->link, &efi_mem); ++ if (!remove) ++ list_add_tail(&newlist->link, &efi_mem); ++ else ++ free(newlist); + + /* And make sure memory is listed in descending order */ + efi_mem_sort(); +@@ -401,7 +403,29 @@ efi_status_t efi_add_memory_map(u64 start, u64 size, int memory_type) + pages = efi_size_in_pages(size + (start & EFI_PAGE_MASK)); + start &= ~EFI_PAGE_MASK; + +- return efi_add_memory_map_pg(start, pages, memory_type, false); ++ return efi_update_memory_map(start, pages, memory_type, false, false); ++} ++ ++/** ++ * efi_remove_memory_map() - remove memory area to the memory map ++ * ++ * @start: start address of the memory area ++ * @size: length in bytes of the memory area ++ * @memory_type: type of memory removed ++ * ++ * Return: status code ++ * ++ * This function automatically aligns the start and size of the memory area ++ * to EFI_PAGE_SIZE. ++ */ ++efi_status_t efi_remove_memory_map(u64 start, u64 size, int memory_type) ++{ ++ u64 pages; ++ ++ pages = efi_size_in_pages(size + (start & EFI_PAGE_MASK)); ++ start &= ~EFI_PAGE_MASK; ++ ++ return efi_update_memory_map(start, pages, memory_type, false, true); + } + + /** +@@ -502,7 +526,7 @@ efi_status_t efi_allocate_pages(enum efi_allocate_type type, + + efi_addr = (u64)(uintptr_t)map_sysmem(addr, 0); + /* Reserve that map in our memory maps */ +- ret = efi_add_memory_map_pg(efi_addr, pages, memory_type, true); ++ ret = efi_update_memory_map(efi_addr, pages, memory_type, true, false); + if (ret != EFI_SUCCESS) { + /* Map would overlap, bail out */ + lmb_free_flags(addr, (u64)pages << EFI_PAGE_SHIFT, flags); +@@ -823,8 +847,8 @@ static void add_u_boot_and_runtime(void) + uboot_stack_size) & ~EFI_PAGE_MASK; + uboot_pages = ((uintptr_t)map_sysmem(gd->ram_top - 1, 0) - + uboot_start + EFI_PAGE_MASK) >> EFI_PAGE_SHIFT; +- efi_add_memory_map_pg(uboot_start, uboot_pages, EFI_BOOT_SERVICES_CODE, +- false); ++ efi_update_memory_map(uboot_start, uboot_pages, EFI_BOOT_SERVICES_CODE, ++ false, false); + #if defined(__aarch64__) + /* + * Runtime Services must be 64KiB aligned according to the +@@ -842,8 +866,8 @@ static void add_u_boot_and_runtime(void) + runtime_end = (uintptr_t)__efi_runtime_stop; + runtime_end = (runtime_end + runtime_mask) & ~runtime_mask; + runtime_pages = (runtime_end - runtime_start) >> EFI_PAGE_SHIFT; +- efi_add_memory_map_pg(runtime_start, runtime_pages, +- EFI_RUNTIME_SERVICES_CODE, false); ++ efi_update_memory_map(runtime_start, runtime_pages, ++ EFI_RUNTIME_SERVICES_CODE, false, false); + } + + int efi_memory_init(void) +@@ -878,11 +902,11 @@ int efi_map_update_notify(phys_addr_t addr, phys_size_t size, + pages = efi_size_in_pages(size + (efi_addr & EFI_PAGE_MASK)); + efi_addr &= ~EFI_PAGE_MASK; + +- status = efi_add_memory_map_pg(efi_addr, pages, ++ status = efi_update_memory_map(efi_addr, pages, + op == LMB_MAP_OP_RESERVE ? + EFI_BOOT_SERVICES_DATA : + EFI_CONVENTIONAL_MEMORY, +- false); ++ false, false); + if (status != EFI_SUCCESS) { + log_err("LMB Map notify failure %lu\n", + status & ~EFI_ERROR_MASK); + +From patchwork Fri Feb 28 08:45:26 2025 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sughosh Ganu +X-Patchwork-Id: 2053443 +X-Patchwork-Delegate: xypron.glpk@gmx.de +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +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 4Z41ym1cNCz1yKH + for ; Fri, 28 Feb 2025 19:46:24 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id BD37E810F1; + Fri, 28 Feb 2025 09:46:08 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=linaro.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 4D257810F1; Fri, 28 Feb 2025 09:46:07 +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=-1.2 required=5.0 tests=BAYES_00, + RCVD_IN_DNSWL_BLOCKED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, + RCVD_IN_VALIDITY_RPBL_BLOCKED,SPF_HELO_NONE,SPF_SOFTFAIL autolearn=no + autolearn_force=no version=3.4.2 +Received: from foss.arm.com (foss.arm.com [217.140.110.172]) + by phobos.denx.de (Postfix) with ESMTP id 23B3B80FE1 + for ; Fri, 28 Feb 2025 09:46:05 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=linaro.org +Authentication-Results: phobos.denx.de; + spf=fail smtp.mailfrom=sughosh.ganu@linaro.org +Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) + by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id CB084113E; + Fri, 28 Feb 2025 00:46:19 -0800 (PST) +Received: from a079122.blr.arm.com (a079122.arm.com [10.162.17.48]) + by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id A01053F673; + Fri, 28 Feb 2025 00:46:01 -0800 (PST) +From: Sughosh Ganu +To: u-boot@lists.denx.de +Cc: Ilias Apalodimas , + Simon Glass , Tom Rini , + Heinrich Schuchardt , + Anton Antonov , + Tobias Waldekranz , Bin Meng , + Sughosh Ganu +Subject: [PATCH v6 3/6] efi_loader: preserve installer images in pmem +Date: Fri, 28 Feb 2025 14:15:26 +0530 +Message-Id: <20250228084529.127823-4-sughosh.ganu@linaro.org> +X-Mailer: git-send-email 2.34.1 +In-Reply-To: <20250228084529.127823-1-sughosh.ganu@linaro.org> +References: <20250228084529.127823-1-sughosh.ganu@linaro.org> +MIME-Version: 1.0 +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 + +From: Ilias Apalodimas + +One of the problems OS installers face, when running in EFI, is that +the mounted ISO after calling ExitBootServices goes away. For some +distros this is a problem since they rely on finding some core packages +before continuing the installation. Distros have works around this -- +e.g Fedora has a special kernel command line parameter called +inst.stage2 [0]. + +ACPI has NFIT and NVDIMM support to provide ramdisks to the OS, but we +don't have anything in place for DTs. Linux and device trees have support +for persistent memory devices. + +It's worth noting that for linux to instantiate the /dev/pmemX device, +the memory described in the pmem node has to be omitted from the EFI +memory map we hand over to the OS if ZONE_DEVICES and SPARSEMEM is +enabled. With those enabled the pmem driver ends up calling +devm_memremap_pages() instead of devm_memremap(). The latter works +whether the memory is omitted or marked as reserved, but mapping pages +only works if the memory is omitted. + +On top of that, depending on how the kernel is configured, that memory +area must be page aligned or 2MB aligned. PowerPC is an exception here +and requires 16MB alignment, but since we don't have EFI support for +it, limit the alignment to 2MB. + +Ensure that the ISO image is 2MB aligned and remove the region +occupied by the image from the EFI memory map. + +Signed-off-by: Ilias Apalodimas +Signed-off-by: Sughosh Ganu +--- +Changes since V5: None + + lib/efi_loader/efi_bootmgr.c | 22 +++++++++++++++++----- + 1 file changed, 17 insertions(+), 5 deletions(-) + +diff --git a/lib/efi_loader/efi_bootmgr.c b/lib/efi_loader/efi_bootmgr.c +index c6124c590d9..081eff057f4 100644 +--- a/lib/efi_loader/efi_bootmgr.c ++++ b/lib/efi_loader/efi_bootmgr.c +@@ -18,6 +18,8 @@ + #include + #include + #include ++#include ++#include + + static const struct efi_boot_services *bs; + static const struct efi_runtime_services *rs; +@@ -362,13 +364,16 @@ static efi_status_t prepare_loaded_image(u16 *label, ulong addr, ulong size, + } + + /* +- * TODO: expose the ramdisk to OS. +- * Need to pass the ramdisk information by the architecture-specific +- * methods such as 'pmem' device-tree node. ++ * Linux supports 'pmem' which allows OS installers to find, reclaim ++ * the mounted images and continue the installation since the contents ++ * of the pmem region are treated as local media. ++ * ++ * The memory regions used for it needs to be carved out of the EFI ++ * memory map. + */ +- ret = efi_add_memory_map(addr, size, EFI_RESERVED_MEMORY_TYPE); ++ ret = efi_remove_memory_map(addr, size, EFI_CONVENTIONAL_MEMORY); + if (ret != EFI_SUCCESS) { +- log_err("Memory reservation failed\n"); ++ log_err("Failed to reserve memory\n"); + goto err; + } + +@@ -490,6 +495,13 @@ static efi_status_t try_load_from_uri_path(struct efi_device_path_uri *uridp, + ret = EFI_INVALID_PARAMETER; + goto err; + } ++ /* ++ * Depending on the kernel configuration, pmem memory area must be page ++ * aligned or 2MB aligned. PowerPC is an exception here and requires ++ * 16MB alignment, but since we don't have EFI support for it, limit ++ * the alignment to 2MB. ++ */ ++ image_size = ALIGN(image_size, SZ_2M); + + /* + * If the file extension is ".iso" or ".img", mount it and try to load + +From patchwork Fri Feb 28 08:45:27 2025 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sughosh Ganu +X-Patchwork-Id: 2053444 +X-Patchwork-Delegate: xypron.glpk@gmx.de +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +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 4Z41z21cqkz1yKH + for ; Fri, 28 Feb 2025 19:46:38 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id B7A2B810FE; + Fri, 28 Feb 2025 09:46:11 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=linaro.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id 9A8D9811C5; Fri, 28 Feb 2025 09:46:10 +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=-1.2 required=5.0 tests=BAYES_00, + RCVD_IN_DNSWL_BLOCKED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, + RCVD_IN_VALIDITY_RPBL_BLOCKED,SPF_HELO_NONE,SPF_SOFTFAIL autolearn=no + autolearn_force=no version=3.4.2 +Received: from foss.arm.com (foss.arm.com [217.140.110.172]) + by phobos.denx.de (Postfix) with ESMTP id A52C180FE1 + for ; Fri, 28 Feb 2025 09:46:08 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=linaro.org +Authentication-Results: phobos.denx.de; + spf=fail smtp.mailfrom=sughosh.ganu@linaro.org +Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) + by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 48F081688; + Fri, 28 Feb 2025 00:46:23 -0800 (PST) +Received: from a079122.blr.arm.com (a079122.arm.com [10.162.17.48]) + by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 1E23D3F673; + Fri, 28 Feb 2025 00:46:04 -0800 (PST) +From: Sughosh Ganu +To: u-boot@lists.denx.de +Cc: Ilias Apalodimas , + Simon Glass , Tom Rini , + Heinrich Schuchardt , + Anton Antonov , + Tobias Waldekranz , Bin Meng , + Sughosh Ganu +Subject: [PATCH v6 4/6] blkmap: store type of blkmap slice in corresponding + structure +Date: Fri, 28 Feb 2025 14:15:27 +0530 +Message-Id: <20250228084529.127823-5-sughosh.ganu@linaro.org> +X-Mailer: git-send-email 2.34.1 +In-Reply-To: <20250228084529.127823-1-sughosh.ganu@linaro.org> +References: <20250228084529.127823-1-sughosh.ganu@linaro.org> +MIME-Version: 1.0 +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 information about the type of blkmap slice as an attribute in the +corresponding slice structure. Put information in the blkmap slice +structure to identify if it is associated with a memory or linear +mapped device. Which can then be used to take specific action based on +the type of the blkmap slice. + +Signed-off-by: Sughosh Ganu +Reviewed-by: Tobias Waldekranz +Reviewed-by: Ilias Apalodimas +--- +Changes since V5: None + + drivers/block/blkmap.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/drivers/block/blkmap.c b/drivers/block/blkmap.c +index 34eed1380dc..453510cca62 100644 +--- a/drivers/block/blkmap.c ++++ b/drivers/block/blkmap.c +@@ -16,6 +16,10 @@ + + struct blkmap; + ++/* Attributes of blkmap slice */ ++#define BLKMAP_SLICE_LINEAR BIT(0) ++#define BLKMAP_SLICE_MEM BIT(1) ++ + /** + * struct blkmap_slice - Region mapped to a blkmap + * +@@ -25,12 +29,14 @@ struct blkmap; + * @node: List node used to associate this slice with a blkmap + * @blknr: Start block number of the mapping + * @blkcnt: Number of blocks covered by this mapping ++ * @attr: Attributes of blkmap slice + */ + struct blkmap_slice { + struct list_head node; + + lbaint_t blknr; + lbaint_t blkcnt; ++ uint attr; + + /** + * @read: - Read from slice +@@ -169,6 +175,7 @@ int blkmap_map_linear(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt, + .slice = { + .blknr = blknr, + .blkcnt = blkcnt, ++ .attr = BLKMAP_SLICE_LINEAR, + + .read = blkmap_linear_read, + .write = blkmap_linear_write, +@@ -248,6 +255,7 @@ int __blkmap_map_mem(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt, + .slice = { + .blknr = blknr, + .blkcnt = blkcnt, ++ .attr = BLKMAP_SLICE_MEM, + + .read = blkmap_mem_read, + .write = blkmap_mem_write, + +From patchwork Fri Feb 28 08:45:28 2025 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Sughosh Ganu +X-Patchwork-Id: 2053445 +X-Patchwork-Delegate: xypron.glpk@gmx.de +Return-Path: +X-Original-To: incoming@patchwork.ozlabs.org +Delivered-To: patchwork-incoming@legolas.ozlabs.org +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) server-digest SHA384) + (No client certificate requested) + by legolas.ozlabs.org (Postfix) with ESMTPS id 4Z41zB6lfpz1yKH + for ; Fri, 28 Feb 2025 19:46:46 +1100 (AEDT) +Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) + by phobos.denx.de (Postfix) with ESMTP id 1822281111; + Fri, 28 Feb 2025 09:46:15 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=linaro.org +Authentication-Results: phobos.denx.de; + spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de +Received: by phobos.denx.de (Postfix, from userid 109) + id A6651807D7; Fri, 28 Feb 2025 09:46:14 +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=-1.2 required=5.0 tests=BAYES_00, + RCVD_IN_DNSWL_BLOCKED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, + RCVD_IN_VALIDITY_RPBL_BLOCKED,SPF_HELO_NONE,SPF_SOFTFAIL autolearn=no + autolearn_force=no version=3.4.2 +Received: from foss.arm.com (foss.arm.com [217.140.110.172]) + by phobos.denx.de (Postfix) with ESMTP id 7B487811C5 + for ; Fri, 28 Feb 2025 09:46:12 +0100 (CET) +Authentication-Results: phobos.denx.de; + dmarc=fail (p=none dis=none) header.from=linaro.org +Authentication-Results: phobos.denx.de; + spf=fail smtp.mailfrom=sughosh.ganu@linaro.org +Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) + by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 3B092113E; + Fri, 28 Feb 2025 00:46:27 -0800 (PST) +Received: from a079122.blr.arm.com (a079122.arm.com [10.162.17.48]) + by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 103233F673; + Fri, 28 Feb 2025 00:46:08 -0800 (PST) +From: Sughosh Ganu +To: u-boot@lists.denx.de +Cc: Ilias Apalodimas , + Simon Glass , Tom Rini , + Heinrich Schuchardt , + Anton Antonov , + Tobias Waldekranz , Bin Meng , + Sughosh Ganu +Subject: [PATCH v6 5/6] blkmap: add an attribute to preserve the mem mapping +Date: Fri, 28 Feb 2025 14:15:28 +0530 +Message-Id: <20250228084529.127823-6-sughosh.ganu@linaro.org> +X-Mailer: git-send-email 2.34.1 +In-Reply-To: <20250228084529.127823-1-sughosh.ganu@linaro.org> +References: <20250228084529.127823-1-sughosh.ganu@linaro.org> +MIME-Version: 1.0 +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 blkmap memory mapped devices might have to be be relevant even +after U-Boot passes control to the next image as part of the platform +boot. An example of such a mapping would be an OS installer ISO image, +information for which has to be provided to the OS kernel. Use the +'preserve' attribute for such mappings. The code for adding a pmem +node to the device-tree then checks if this attribute is set, and adds +a node only for mappings which have this attribute. + +Signed-off-by: Sughosh Ganu +Reviewed-by: Tobias Waldekranz +Reviewed-by: Ilias Apalodimas +--- +Changes since V5: None + + cmd/blkmap.c | 9 +++++++-- + drivers/block/blkmap.c | 12 ++++++++---- + drivers/block/blkmap_helper.c | 2 +- + include/blkmap.h | 4 +++- + 4 files changed, 19 insertions(+), 8 deletions(-) + +diff --git a/cmd/blkmap.c b/cmd/blkmap.c +index 164f80f1387..86a123b1cd3 100644 +--- a/cmd/blkmap.c ++++ b/cmd/blkmap.c +@@ -62,13 +62,18 @@ static int do_blkmap_map_mem(struct map_ctx *ctx, int argc, char *const argv[]) + { + phys_addr_t addr; + int err; ++ bool preserve = false; + + if (argc < 2) + return CMD_RET_USAGE; + + addr = hextoul(argv[1], NULL); + +- err = blkmap_map_pmem(ctx->dev, ctx->blknr, ctx->blkcnt, addr); ++ if (argc == 3 && !strcmp(argv[2], "preserve")) ++ preserve = true; ++ ++ err = blkmap_map_pmem(ctx->dev, ctx->blknr, ctx->blkcnt, addr, ++ preserve); + if (err) { + printf("Unable to map %#llx at block 0x" LBAF ": %d\n", + (unsigned long long)addr, ctx->blknr, err); +@@ -221,7 +226,7 @@ U_BOOT_CMD_WITH_SUBCMDS( + "blkmap create