From patchwork Fri Aug 31 13:26:43 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145610 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp783105ljw; Fri, 31 Aug 2018 06:27:26 -0700 (PDT) X-Google-Smtp-Source: ANB0Vdb+/hmgeyTX9LA4tQj0VOfEX/rND16WyTUIsGDX/0a+lyyQhUwKl1DdaIBWJc8MZ19SJ5TJ X-Received: by 2002:a62:5b85:: with SMTP id p127-v6mr15983374pfb.33.1535722046520; Fri, 31 Aug 2018 06:27:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722046; cv=none; d=google.com; s=arc-20160816; b=sAqgqDG41ENbUBy8QDAA71KVuSxVEOTPXLpKmkuxFxkIf73F0c1wjLFWVCdTyJqdiv dhvCuJTKyqPLswsCZDOtqyqxYod6Pv/EcKfX60yKw/OdZA4Yp2SvzFIgtkVWNYfmeZB+ 0ykehUQPi6IPKv6qlFdX5bGPlQJZ1KrkCbchQHj/+KIJukhhEPj7cGefbb+Z21dFCrWT MMrn0NpDEvhh9MdFA3nPw5CTFhkxfJxsUViiDzTqa5MwtLm1cCx6TMGSWjT/k68l2woL 4lfi92/HEwvGDhHNrYJAr/mlC5dIPTKF0R4ztqE1tLFCp0xs35b/EZNjyLTLZ2Vp2Tl3 48xQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=ED84NpG56thmNrhehRnwI3qCe9vFdlxCpsfH3Kiz6CU=; b=AWtbCvMtpImGvE6y5/GCAGhb1k5jCZpglYEgqM18x51x9PicbLVEqgNIIl9cpLIuI6 rWBzW5UuCB43cYBhCDKzNtaHa7GC28YEn36JbCuCtJ9dzYuLzGy0phoBbv8sAWAOc9CG 6Pl8326vvAV5WMQcutSXF9+6b4ZqM4+yDpKlkx2/xdmgH62glvJbdU9rzFFuLLMg13Pk hqwGIApeCkGFh8fpcRH8wVOV/Z9SkpyvsI5zrO9/Qq+gv5CZo5wGDneswQW0IlawDlPb vEJl9zJXznUz4kNVR+q6rmhnqoRf8ULEcYXogxMSqqeYUh5lxXPaBUe5w7dJzYzZIxzq wC7g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=hvCM5WF3; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id e4-v6si9095772pfn.340.2018.08.31.06.27.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:27:26 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=hvCM5WF3; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 287F22110BD53; Fri, 31 Aug 2018 06:27:26 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::441; helo=mail-pf1-x441.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pf1-x441.google.com (mail-pf1-x441.google.com [IPv6:2607:f8b0:4864:20::441]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 502082110BD45 for ; Fri, 31 Aug 2018 06:27:25 -0700 (PDT) Received: by mail-pf1-x441.google.com with SMTP id u24-v6so5517945pfn.13 for ; Fri, 31 Aug 2018 06:27:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=3C/CkrtxkauPjTOun4yfepflBJaGdNaTUT0I+o2L8q8=; b=hvCM5WF3Ho/lxGsuSc9nFlcDqx9E4Ib9EvmxBVkHSd8cXAyZ9JtGXfZKnVXmZf9NDv VDt3x/PzuYnNxtlodDLexWNfeb2QD6sFRGlT+exEoKDRHDa3wW3VP//pNxeuUmzsuo9v ISdLWNE4BWgZTKuNK2EgEhuQjMbt0WKM7iyls= 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=3C/CkrtxkauPjTOun4yfepflBJaGdNaTUT0I+o2L8q8=; b=MxsW19/nV6l2wbZmw0LoIKR5LZU1UX3N3FvxP6U+6qgnLklryCxF24RWjJnnCXF5Dz ZnN89Mobkbhzg1diLedAZI5aYVBYDcBiI7Ub40rufc9ehzxu20BzU/ExZvuRdmD6BKaR niHv5kuv6BTYxPS4pVP22JUUjsDhKY1bF3CeaybER4v2szQTulZnHMKdOYLN/I6ClEWa 8KeFVe/zfWqZsCsHXHBuBTQiPuhtEwSmH9Z3ajWKV7QRDRFNGKlQ+Og9HIxjYuE1PbPT tP/wtXu2kD3iBU+a6WGVgeLaZskRF9tKOF4KGPBwLfe2oQyXrFow+Uy3MEGstE/v7edJ /YUA== X-Gm-Message-State: APzg51C8DgRwlboNjcM4KfRqX+3IGrorA5SDDnzUCjy9h/P3WZjI6tF2 YtzqddojrhjaY4+FlDZGh7Uljw== X-Received: by 2002:a62:90d4:: with SMTP id q81-v6mr15886693pfk.37.1535722044980; Fri, 31 Aug 2018 06:27:24 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.27.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:27:24 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:26:43 +0800 Message-Id: <20180831132710.23055-2-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 01/28] Hisilicon/D0x: Modify PcdBootManagerMenuFile for build X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" The tail "|VOID*|0x0001006b" is no need for PcdBootManagerMenuFile, and build failed with that, so remove it. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang --- Platform/Hisilicon/D03/D03.dsc | 2 +- Platform/Hisilicon/D05/D05.dsc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Platform/Hisilicon/D03/D03.dsc b/Platform/Hisilicon/D03/D03.dsc index f64c53be09..910a9f2177 100644 --- a/Platform/Hisilicon/D03/D03.dsc +++ b/Platform/Hisilicon/D03/D03.dsc @@ -205,7 +205,7 @@ gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|FALSE - gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile|{ 0x21, 0xaa, 0x2c, 0x46, 0x14, 0x76, 0x03, 0x45, 0x83, 0x6e, 0x8a, 0xb6, 0xf4, 0x66, 0x23, 0x31 }|VOID*|0x0001006b + gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile|{ 0x21, 0xaa, 0x2c, 0x46, 0x14, 0x76, 0x03, 0x45, 0x83, 0x6e, 0x8a, 0xb6, 0xf4, 0x66, 0x23, 0x31 } gHisiTokenSpaceGuid.PcdSysControlBaseAddress|0x40010000 gHisiTokenSpaceGuid.PcdMailBoxAddress|0x0000FFF8 diff --git a/Platform/Hisilicon/D05/D05.dsc b/Platform/Hisilicon/D05/D05.dsc index a4f99e1105..a89e7f2b09 100644 --- a/Platform/Hisilicon/D05/D05.dsc +++ b/Platform/Hisilicon/D05/D05.dsc @@ -220,7 +220,7 @@ gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|FALSE - gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile|{ 0x21, 0xaa, 0x2c, 0x46, 0x14, 0x76, 0x03, 0x45, 0x83, 0x6e, 0x8a, 0xb6, 0xf4, 0x66, 0x23, 0x31 }|VOID*|0x0001006b + gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile|{ 0x21, 0xaa, 0x2c, 0x46, 0x14, 0x76, 0x03, 0x45, 0x83, 0x6e, 0x8a, 0xb6, 0xf4, 0x66, 0x23, 0x31 } gHisiTokenSpaceGuid.PcdSysControlBaseAddress|0x40010000 gHisiTokenSpaceGuid.PcdMailBoxAddress|0x0000FFF8 From patchwork Fri Aug 31 13:26:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145611 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp783172ljw; Fri, 31 Aug 2018 06:27:30 -0700 (PDT) X-Google-Smtp-Source: ANB0VdYHjW41l84EHTLU0LJdnf2Yi7x6wGUhV/Eju7UagXJDnb04xf5qoudcLPLjP9vNSSk6pUSl X-Received: by 2002:a63:1948:: with SMTP id 8-v6mr14450013pgz.192.1535722050827; Fri, 31 Aug 2018 06:27:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722050; cv=none; d=google.com; s=arc-20160816; b=FOObH2jDsWF202JfrwOiGNLrpy34elG5OLdHma3RJoxpp1/6B5ZcXyNb3EVd46CL/m RILJp6wig6cStHd165axHnbYE0JP3TbGPwSngiTL5y9wJcTJK7ghoKfjcW7HoZ8kDpYr PSbYkjTafR+ybwCyj9TiOSZhGvovZxRbqaU5Fbn1cJnKiyPonl1G2XwLM+M3tiZhO1Cb MGU07adKXGHeBqr2Uz3k08WjTcw/osxpvgM1d6Ss+11cy/dqs0HwALGLeDNwr5u6u5Gw bc8SUN36h2Vg72iBZ8meXq/nRJ5Vu0dbb6fQ6Q/MCR19n4qkUoS03km2/VFCowx8qQW/ NWjw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=0tKs8ztvBrML8AriytvRniPLI4VsQc9iMT9P7XB4GME=; b=VEOb9daoak1zOZ37mq6EctLn724rDqUM3K6uj9TUZJ3D0bBLUOmD50FBEUgEQYbQzF g2lmkAe8eFypxyc8CezHFWVCAfcxvXsqWLIrMFA57ATvMRaggpwoYW1m4Cm2z9RLUR6X hBaXR2tjq82AMcfsNotpQ5eTFSs8xmlrBxePkasEtI9LWXerSPqAS1AQxEVHwKn6GG5V vsGtQhI+IWAWMVO3+fYspStMVZ7mwzl7lu0kW/jmUnr95qch7sqgeRIhF1vtTZmvhRH6 hXLm2sjoKRT3SLyq7AtarT5I5UYEvEDz0AQctUVAhpSldp42tV/ijoIfVyLWEnlBYhm+ MeGA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=fp93cBF7; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id j124-v6si10292619pfg.157.2018.08.31.06.27.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:27:30 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=fp93cBF7; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 59CA62110BD56; Fri, 31 Aug 2018 06:27:30 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::644; helo=mail-pl1-x644.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pl1-x644.google.com (mail-pl1-x644.google.com [IPv6:2607:f8b0:4864:20::644]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id F1D242110BD4E for ; Fri, 31 Aug 2018 06:27:28 -0700 (PDT) Received: by mail-pl1-x644.google.com with SMTP id b92-v6so458307plb.0 for ; Fri, 31 Aug 2018 06:27:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=PWtiTXCBKUIkw2KT4pAS7siS+h5xkuJINHB0tLZPi5g=; b=fp93cBF7MtwMuyhuepLJSxIaviJ64wVp05KT+99zmOKKdf+ICw9eZIetQJUiDYjjSf nSMctBYe6t/AnF5CMDJPpZIzdvTHQWyIFpPa+U2s7ZqWRip5/HnTkwfFHiBVtN0p8xUO NgbowwSpp5O/HRw+26q81yZQY7cCuWSdprNGw= 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=PWtiTXCBKUIkw2KT4pAS7siS+h5xkuJINHB0tLZPi5g=; b=GBy3SWM06qK1VxZeJ7nxB0Rk5qbLOfDFV82urOnJoQv+R+kJFSmiTnPgLzUJgC8xdk KjFEQuU5kZ2Q5UZ8mxFjftPuse5xJ723vQjiFNtEUVWW93TGFccsQE16Lz2f0NFTHDgx zj3hOsmF+6BoYEeKlfq9ZqjWPb5XtsCVDF7Z4Hy69iNHFLksOz6l8m+eRFcR9cyMd3iH kJtapafokbTPqo1cE2idC+Cjx/Etiu0uByFisArebiCecXRGqg1Un8zZZ6/Xm5numc1b W3zKmsTbnm2/4jRK8BYWvvZUo8hu2ZTEEaxcAIEnu7yHXGnPBng8gdrwZMXe8PfdZN+9 ceaA== X-Gm-Message-State: APzg51AFep9fWtw6bIyHaC2mFt8g5Y+qHfwlyiyx4xv6euexYf4vYfaH w5hCH1r6qm6+lJfcLkOp4jrxwQ== X-Received: by 2002:a17:902:b283:: with SMTP id u3-v6mr15180962plr.2.1535722048669; Fri, 31 Aug 2018 06:27:28 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.27.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:27:28 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:26:44 +0800 Message-Id: <20180831132710.23055-3-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 02/28] Silicon/Hisilicon/D0x: Move RAS macro to PlatformArch.h X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, Sun Yuanchen , guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" From: Sun Yuanchen Move some RAS macros definition to PlatformArch.h for unifying D0x Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang Reviewed-by: Leif Lindholm --- Silicon/Hisilicon/Hi1610/Include/PlatformArch.h | 9 +++++++-- Silicon/Hisilicon/Hi1616/Include/PlatformArch.h | 12 ++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Silicon/Hisilicon/Hi1610/Include/PlatformArch.h b/Silicon/Hisilicon/Hi1610/Include/PlatformArch.h index 2ff076901e..f39ae0748c 100644 --- a/Silicon/Hisilicon/Hi1610/Include/PlatformArch.h +++ b/Silicon/Hisilicon/Hi1610/Include/PlatformArch.h @@ -1,7 +1,7 @@ /** @file * -* Copyright (c) 2015, Hisilicon Limited. All rights reserved. -* Copyright (c) 2015, Linaro Limited. All rights reserved. +* Copyright (c) 2015 - 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2015 - 2018, Linaro Limited. All rights reserved. * * This program and the accompanying materials * are licensed and made available under the terms and conditions of the BSD License @@ -32,6 +32,11 @@ #define S1_BASE 0x40000000000 +#define RASC_BASE (0x5000) +/* configuration register for Rank statistical information */ +#define RASC_CFG_INFOIDX_REG (RASC_BASE + 0x5C) +/* configuration register for Sparing level */ +#define RASC_CFG_SPLVL_REG (RASC_BASE + 0xB8) // // ACPI table information used to initialize tables. diff --git a/Silicon/Hisilicon/Hi1616/Include/PlatformArch.h b/Silicon/Hisilicon/Hi1616/Include/PlatformArch.h index 60a60593be..e02e4bdabd 100644 --- a/Silicon/Hisilicon/Hi1616/Include/PlatformArch.h +++ b/Silicon/Hisilicon/Hi1616/Include/PlatformArch.h @@ -30,6 +30,18 @@ // Max NUMA node number for each node type #define MAX_NUM_PER_TYPE 8 +#define RASC_BASE (0x5000) +/* configuration register for Rank statistical information */ +#define RASC_CFG_INFOIDX_REG (RASC_BASE + 0x5C) +/* configuration register for Sparing level */ +#define RASC_CFG_SPLVL_REG (RASC_BASE + 0xB8) + +// for acpi +#define NODE_IN_SOCKET 2 +#define CORE_NUM_PER_SOCKET 32 +#define EFI_ACPI_MEMORY_AFFINITY_STRUCTURE_COUNT 10 +#define EFI_ACPI_6_2_ITS_AFFINITY_STRUCTURE_COUNT 8 + #define S1_BASE 0x40000000000 // From patchwork Fri Aug 31 13:26:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145612 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp783249ljw; Fri, 31 Aug 2018 06:27:34 -0700 (PDT) X-Google-Smtp-Source: ANB0Vdbk3wAOfB3CEiltvusr+2FwO84qb92xd7OtDYzaZSutX9A2qdYhv/uS982c0/pLAQ3noLeB X-Received: by 2002:a63:8f05:: with SMTP id n5-v6mr14418617pgd.131.1535722054393; Fri, 31 Aug 2018 06:27:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722054; cv=none; d=google.com; s=arc-20160816; b=oA0xzn2HlKUj5K98+JL9mGr5iDiVt775NJyzlCtzpZIbakCZkuVJym5C2IhTWzyHQD IFwFi2P3vtkoZ+ur/Pe76m34nQSUhaZVL/dNyO/oyomPzfhF0yacSRYU1XjfIqbdU3eT +lkzgp0ILXBfCQdcu8FTxpgOJCmVI7enrYJtgDAJpsDqwE0+gDWwGMxPns2oTv7gSqkq 7kh8AcnVuEUU/M+DWZDaCHoDtnvHlZlV2igie0mmiqE90C/7rp1HmC2EaeftvqEyH/jO kXCrG8fMcaRlxB5n6ReldWpJofaP9TQGFOIZ8mCl/EDL17Q+HeEtGlF4ZMM5Uqp3zjjj xhRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=IRRdgQC0JJ0bLPjkchfvylbcZls8qq0AsJ0b1PiPQn8=; b=yc4gMz2iWWNT2Ojd2evoCr4sSwmHZFAQHq3UPoHveDHMy3KeHpPQXtE4DNIhwimJNg 7gvvVklFJi4ddXiVRVjfXcnZmpD/bfd2qAQWZ7hCOCmcg61Fqt4S+kLGht4MdyrTwaZx /m2mM3q5jr/HCRF9wJlv1n3HkThpLLfAtMYF76PZsrvleCnzJIEsLWTKi+ILFTV67U16 /PduZ1nYMhZHStkrUKi2dtALTEHqOFxYCivLpGe83zu2VxnicgUvc8iom2XRHGtceoU6 eMp25Ae87gDSry0dPvvkTJ5wARb06k2c5aABlorZGvJdzVnBzVh+bWr9Pt3A6v+OBoDh GVBA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=JnXADVjH; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id 90-v6si9948905pla.466.2018.08.31.06.27.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:27:34 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=JnXADVjH; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id A783B2110BD5F; Fri, 31 Aug 2018 06:27:33 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::642; helo=mail-pl1-x642.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pl1-x642.google.com (mail-pl1-x642.google.com [IPv6:2607:f8b0:4864:20::642]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 8D2DE2110BD4E for ; Fri, 31 Aug 2018 06:27:32 -0700 (PDT) Received: by mail-pl1-x642.google.com with SMTP id b12-v6so5480409plr.8 for ; Fri, 31 Aug 2018 06:27:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=EB01Qng3PYAvWzKpJfihQonCOpMeybVIW54TXr8B6I0=; b=JnXADVjHlLuh5IAE0E9GtPnqSOhT7YNnxFRdqbsgPyLCz++ESwRsH3YSC3ez58kuJm LzVf3vZOmtDOOaehD0m7pq6fDo7rRBD50lS7u5gs2iirWPftV5kNawx8nKiMHJ+DnA+T nRIlTQwMaThf3tnN8VdOobWRFQwYhh1i4QBqU= 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=EB01Qng3PYAvWzKpJfihQonCOpMeybVIW54TXr8B6I0=; b=tbL7ai5BIEiC1aSSZk3k8zgSEsU9wNk47ICzDSYuZgYfe0MhSbtTlupo4xTwUSHrNl 4R/sLrukTIfVZkcmGy1njYcTXwcF4Y3yepABSoeDSfiWv4HorUl43DqxxsQMvKexDPS9 DjvjyW5JzPNhaTbChZLvgYNDptPWnK7P81pyvqvTo4V3J2/r2LxfpXWY0RIJ1eJS8UJt TZMSNg7euCB7EHAj4rrxVzBRceO/igjBOGu7ebEhsnLcAsZ9LZ6c6dZU7G80LYpHRSCm tpeu+DWqyPxuEwTTCqdmR42TvNKFzhXg7ZClbRPuSgND9hmf5GtNPYo9rEe9QDMTyytG koIg== X-Gm-Message-State: APzg51Cpm4nlOD/98uq2QzwDl+Hr2bINhndGhDDxRdZd27Tf8DElEPnl l49CGCPddeG1d6Ms7HwtcL6HQA== X-Received: by 2002:a17:902:5acc:: with SMTP id g12-v6mr15590083plm.90.1535722052234; Fri, 31 Aug 2018 06:27:32 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.27.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:27:31 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:26:45 +0800 Message-Id: <20180831132710.23055-4-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 03/28] Silicon/Hisilicon/Acpi: Unify HisiAcpiPlatformDxe X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" The EFI_ACPI_STATIC_RESOURCE_AFFINITY_TABLE struct is used by UpdateAcpiTable.c and Srat aslc. The struct may be different according to chips, so move some macro to PlatformArch.h. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang Reviewed-by: Leif Lindholm --- Silicon/Hisilicon/Hi1610/Include/PlatformArch.h | 6 ++++ Silicon/Hisilicon/Include/Library/AcpiNextLib.h | 31 ++++++++++++++------ Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/UpdateAcpiTable.c | 2 -- 3 files changed, 28 insertions(+), 11 deletions(-) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Silicon/Hisilicon/Hi1610/Include/PlatformArch.h b/Silicon/Hisilicon/Hi1610/Include/PlatformArch.h index f39ae0748c..1ebddca4e5 100644 --- a/Silicon/Hisilicon/Hi1610/Include/PlatformArch.h +++ b/Silicon/Hisilicon/Hi1610/Include/PlatformArch.h @@ -30,6 +30,12 @@ // Max NUMA node number for each node type #define MAX_NUM_PER_TYPE 8 +// for acpi +#define NODE_IN_SOCKET 2 +#define CORE_NUM_PER_SOCKET 32 +#define EFI_ACPI_MEMORY_AFFINITY_STRUCTURE_COUNT 10 +#define EFI_ACPI_6_2_ITS_AFFINITY_STRUCTURE_COUNT 8 + #define S1_BASE 0x40000000000 #define RASC_BASE (0x5000) diff --git a/Silicon/Hisilicon/Include/Library/AcpiNextLib.h b/Silicon/Hisilicon/Include/Library/AcpiNextLib.h index fd05a3b960..2abffb65fc 100644 --- a/Silicon/Hisilicon/Include/Library/AcpiNextLib.h +++ b/Silicon/Hisilicon/Include/Library/AcpiNextLib.h @@ -19,6 +19,21 @@ #ifndef __ACPI_NEXT_LIB_H__ #define __ACPI_NEXT_LIB_H__ +#include + +/// +/// ITS Affinity Structure Definition +/// +#pragma pack(1) +typedef struct { + UINT8 Type; + UINT8 Length; + UINT32 ProximityDomain; + UINT16 Reserved; + UINT32 ItsHwId; +} EFI_ACPI_6_2_ITS_AFFINITY_STRUCTURE; +#pragma pack() + #define EFI_ACPI_6_1_GIC_ITS_INIT(GicITSHwId, GicITSBase) \ { \ EFI_ACPI_6_1_GIC_ITS, sizeof (EFI_ACPI_6_1_GIC_ITS_STRUCTURE), EFI_ACPI_RESERVED_WORD, \ @@ -42,8 +57,8 @@ #define EFI_ACPI_6_2_ITS_AFFINITY_STRUCTURE_INIT( \ ProximityDomain, ItsId) \ { \ - 4, sizeof (EFI_ACPI_6_2_GIC_ITS_AFFINITY_STRUCTURE), ProximityDomain, \ - {EFI_ACPI_RESERVED_BYTE, EFI_ACPI_RESERVED_BYTE}, ItsId \ + 4, sizeof (EFI_ACPI_6_2_ITS_AFFINITY_STRUCTURE), ProximityDomain, \ + EFI_ACPI_RESERVED_WORD, ItsId \ } #define EFI_ACPI_6_1_MEMORY_AFFINITY_STRUCTURE_INIT( \ @@ -75,15 +90,13 @@ // Define the number of each table type. // This is where the table layout is modified. // -#define EFI_ACPI_PROCESSOR_LOCAL_GICC_AFFINITY_STRUCTURE_COUNT 64 -#define EFI_ACPI_MEMORY_AFFINITY_STRUCTURE_COUNT 10 -#define EFI_ACPI_6_2_ITS_AFFINITY_STRUCTURE_COUNT 8 +#define EFI_ACPI_PROCESSOR_LOCAL_GICC_AFFINITY_STRUCTURE_COUNT (MAX_SOCKET*CORE_NUM_PER_SOCKET) typedef struct { - EFI_ACPI_6_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER Header; - EFI_ACPI_6_0_MEMORY_AFFINITY_STRUCTURE Memory[EFI_ACPI_MEMORY_AFFINITY_STRUCTURE_COUNT]; - EFI_ACPI_6_0_GICC_AFFINITY_STRUCTURE Gicc[EFI_ACPI_PROCESSOR_LOCAL_GICC_AFFINITY_STRUCTURE_COUNT]; - EFI_ACPI_6_2_GIC_ITS_AFFINITY_STRUCTURE Its[EFI_ACPI_6_2_ITS_AFFINITY_STRUCTURE_COUNT]; + EFI_ACPI_6_2_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER Header; + EFI_ACPI_6_2_MEMORY_AFFINITY_STRUCTURE Memory[EFI_ACPI_MEMORY_AFFINITY_STRUCTURE_COUNT]; + EFI_ACPI_6_2_GICC_AFFINITY_STRUCTURE Gicc[EFI_ACPI_PROCESSOR_LOCAL_GICC_AFFINITY_STRUCTURE_COUNT]; + EFI_ACPI_6_2_ITS_AFFINITY_STRUCTURE Its[EFI_ACPI_6_2_ITS_AFFINITY_STRUCTURE_COUNT]; } EFI_ACPI_STATIC_RESOURCE_AFFINITY_TABLE; #pragma pack() diff --git a/Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/UpdateAcpiTable.c b/Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/UpdateAcpiTable.c index f5869841dc..54f49977c3 100644 --- a/Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/UpdateAcpiTable.c +++ b/Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/UpdateAcpiTable.c @@ -20,8 +20,6 @@ #include #include -#define CORE_NUM_PER_SOCKET 32 -#define NODE_IN_SOCKET 2 #define CORECOUNT(X) ((X) * CORE_NUM_PER_SOCKET) STATIC From patchwork Fri Aug 31 13:26:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145613 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp783348ljw; Fri, 31 Aug 2018 06:27:39 -0700 (PDT) X-Google-Smtp-Source: ANB0VdactRc5VWI9NUywL2sG4lLl65qwoTGtbh51DBFXGxDhW62IXwMqPV/6F24OFuX7feu4LCtq X-Received: by 2002:a62:d74e:: with SMTP id v14-v6mr12438854pfl.88.1535722059248; Fri, 31 Aug 2018 06:27:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722059; cv=none; d=google.com; s=arc-20160816; b=XvYOe9IrwZWo76+VKiNa0uimkmmm0LfvmA0+3SKv4GZvS9BMGTFoF0jFPoiTkwkYaL ZuOWnNdq51wGs8pX9uFfnBYM6GV/3aD81g7v2XqBWCZ10GlBB342g5cID5zZIzBiKOmN 957JPdKuKJi5TV2pHXwCEVnfcnuZr268ORBmDvKvsbA7S04K20ZQUKnwTB5/BmhhcDSr RVxDU6avWBt5SqhI3ebcA34XnPZTZoRjV1aA4ETO8owS1Z56f2PWK8btV2zXRFaOD6tw WLhKfA7NZYeVMnSahfQH9HtyzJLoIFXgCwFnxdkt/SCSfyqkNYyH8HPCsGwPCva9uIvt gw0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=MapCo36zA7knomObFQGxs1V0QGzVx20BNnTINM3GGCA=; b=rhLpBFY1DWko42Tdnl8TKmAl90MOrIWGdiNoV4n+Q34oXZaa8KhFbOujspOg/FCPBh zkM6sy9M0fPKt9+MOhepTARhFR4DpRUNIZnY0eQUViTilzI7wFDnbz6RMZk4LAxJAjDj etgQNszoEn8nZVFt/aihjw/FqOq6aMZjmAH6gnsHaFcJEYIi+5pqDXG6yeTivEb9Cty+ pduTRbTPYE68zpASqTtsHgH69sRL694gdlmzhgG+ILCl9lFP2GvtTv4P0fgOOQMFWndv MevL1gvpxclY4190VfmHieIc4l9cXBKYla86jza7EdEi5zV+FnI3a1hH9ZClDVy4yyiW Ye9w== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b="CRRA8qs/"; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id d10-v6si9562122pgg.341.2018.08.31.06.27.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:27:39 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b="CRRA8qs/"; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id D73512110BD64; Fri, 31 Aug 2018 06:27:38 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::644; helo=mail-pl1-x644.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pl1-x644.google.com (mail-pl1-x644.google.com [IPv6:2607:f8b0:4864:20::644]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 041462110BD4E for ; Fri, 31 Aug 2018 06:27:37 -0700 (PDT) Received: by mail-pl1-x644.google.com with SMTP id s17-v6so5479066plp.7 for ; Fri, 31 Aug 2018 06:27:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=8Dp4tEMWBr2BWZ3LR+D9JrddB5jHbigHNUVXCRBEqDw=; b=CRRA8qs/E5a0JDALaza0ISCnj4xPLeVLDInFMyXZQVu6Lptx0xWZc6N3GwwWFcWDMO IdQQfIrNYVnRZbvo6H3vGWCKrMr0dpIuB/0v+U338DoObT6RFNXoKC2AEGYyuzUSfOgS m8uotc3G4in+nDocO4BVDnUsX7a2Uy0U3FHkY= 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=8Dp4tEMWBr2BWZ3LR+D9JrddB5jHbigHNUVXCRBEqDw=; b=r454uT0IgSHV518mhmIZNIL6B8jnkfU5gA8QX0zeaUPga31UEY+uV9M+sNUyZZGthN MLlvhKHWGVFUKWMJ8cWmJrFvlAGAVzsTCCzGP5FTj9/6cwABY7askNJRkyu4dF3u/DaE t17Qd10t5rihOjDgjUoI2keAidTqIY+Rrv8eJk9vPUrU6dT5mhSKDYt2w0kmmDJpu/fh 9qu9x0qEsS6D3BDJCp4bEdTRedACSmmrPgJi3yZhMzp5vqEN9MvNG04JErH5tEqFBFNy IuauLIdxfvakB+385Dp5LOMITOWVwNRCTve0gtBhlg0kkreivKW7OUufzWMi00viOglG Fsow== X-Gm-Message-State: APzg51Cs1+MB83VfcQNi3sOuQI2emiFcoQYGbdCRs8cOryjarwr+I17D bJEzHTqbXe1hRGYfymFZeMLhag== X-Received: by 2002:a17:902:b608:: with SMTP id b8-v6mr15441581pls.312.1535722055914; Fri, 31 Aug 2018 06:27:35 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.27.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:27:35 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:26:46 +0800 Message-Id: <20180831132710.23055-5-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 04/28] Hisilicon/D06: Add several base file for D06 X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" Add several base head files and add several build files for D06. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang Reviewed-by: Leif Lindholm --- Platform/Hisilicon/D06/D06.dec | 29 ++ Silicon/Hisilicon/Hi1620/Hi1620.dec | 23 + Platform/Hisilicon/D06/D06.dsc | 443 ++++++++++++++++++++ Platform/Hisilicon/D06/D06.fdf | 340 +++++++++++++++ Silicon/Hisilicon/Hi1620/Library/Hi1620PciPlatformLib/Hi1620PciPlatformLib.inf | 30 ++ Platform/Hisilicon/D06/Include/Library/CpldD06.h | 37 ++ Silicon/Hisilicon/Hi1620/Include/Library/SerdesLib.h | 85 ++++ Silicon/Hisilicon/Hi1620/Include/PlatformArch.h | 67 +++ Silicon/Hisilicon/Include/Library/OemAddressMapLib.h | 6 + Silicon/Hisilicon/Include/Library/OemNicLib.h | 57 +++ Silicon/Hisilicon/Hi1620/Library/Hi1620PciPlatformLib/Hi1620PciPlatformLib.c | 67 +++ 11 files changed, 1184 insertions(+) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Platform/Hisilicon/D06/D06.dec b/Platform/Hisilicon/D06/D06.dec new file mode 100644 index 0000000000..710f083eee --- /dev/null +++ b/Platform/Hisilicon/D06/D06.dec @@ -0,0 +1,29 @@ +#/** @file +# +# Copyright (c) 2018, Hisilicon Limited. All rights reserved. +# Copyright (c) 2018, Linaro Limited. All rights reserved. +# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +#**/ + +# +# D06 Package +# +# +# + +[Defines] + DEC_SPECIFICATION = 0x0001001A + PACKAGE_NAME = D06Pkg + PACKAGE_GUID = B46F75D7-3864-450D-86D9-A0346A882232 + PACKAGE_VERSION = 0.1 + +[Includes] + Include diff --git a/Silicon/Hisilicon/Hi1620/Hi1620.dec b/Silicon/Hisilicon/Hi1620/Hi1620.dec new file mode 100644 index 0000000000..1e72da892f --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620.dec @@ -0,0 +1,23 @@ +#/** @file +# +# Copyright (c) 2018, Hisilicon Limited. All rights reserved. +# Copyright (c) 2018, Linaro Limited. All rights reserved. +# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +#**/ + +[Defines] + DEC_SPECIFICATION = 0x0001001A + PACKAGE_NAME = Hi1620Pkg + PACKAGE_GUID = 2553756f-07ca-45a2-b30b-a2fae452e7f6 + PACKAGE_VERSION = 0.1 + +[Includes] + Include diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc new file mode 100644 index 0000000000..d222ca55f3 --- /dev/null +++ b/Platform/Hisilicon/D06/D06.dsc @@ -0,0 +1,443 @@ +# +# Copyright (c) 2011-2012, ARM Limited. All rights reserved. +# Copyright (c) 2018, Hisilicon Limited. All rights reserved. +# Copyright (c) 2018, Linaro Limited. All rights reserved. +# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +# + +################################################################################ +# +# Defines Section - statements that will be processed to create a Makefile. +# +################################################################################ +[Defines] + PLATFORM_NAME = D06 + PLATFORM_GUID = D0D445F1-B2CA-4101-9986-1B23525CBEA6 + PLATFORM_VERSION = 0.1 + DSC_SPECIFICATION = 0x0001001A + OUTPUT_DIRECTORY = Build/$(PLATFORM_NAME) + SUPPORTED_ARCHITECTURES = AARCH64 + BUILD_TARGETS = DEBUG|NOOPT|RELEASE + SKUID_IDENTIFIER = DEFAULT + FLASH_DEFINITION = Platform/Hisilicon/$(PLATFORM_NAME)/$(PLATFORM_NAME).fdf + DEFINE NETWORK_IP6_ENABLE = FALSE + DEFINE HTTP_BOOT_ENABLE = FALSE + DEFINE SECURE_BOOT_ENABLE = FALSE + +!include Silicon/Hisilicon/Hisilicon.dsc.inc + +[LibraryClasses.common] + ArmLib|ArmPkg/Library/ArmLib/ArmBaseLib.inf + ArmPlatformLib|Silicon/Hisilicon/Library/ArmPlatformLibHisilicon/ArmPlatformLib.inf + + + TimerLib|ArmPkg/Library/ArmArchTimerLib/ArmArchTimerLib.inf + NetLib|MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf + DpcLib|MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf + HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf + UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf + UdpIoLib|MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf + IpIoLib|MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf + OrderedCollectionLib|MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.inf + ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf + DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf + FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf + BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf + SortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf + +!if $(NETWORK_IP6_ENABLE) == TRUE + TcpIoLib|MdeModulePkg/Library/DxeTcpIoLib/DxeTcpIoLib.inf +!endif + +!if $(HTTP_BOOT_ENABLE) == TRUE + HttpLib|MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.inf +!endif + + CpldIoLib|Silicon/Hisilicon/Library/CpldIoLib/CpldIoLib.inf + + TimeBaseLib|EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.inf + + CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf + GenericBdsLib|IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf + UefiBootManagerLib|MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf + SortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf + ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf + DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf + FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf + CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf + + # USB Requirements + UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf + + SerialPortLib|ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.inf +!if $(SECURE_BOOT_ENABLE) == TRUE + FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf +!endif + PciExpressLib|MdePkg/Library/BasePciExpressLib/BasePciExpressLib.inf + PciPlatformLib|Silicon/Hisilicon/Hi1620/Library/Hi1620PciPlatformLib/Hi1620PciPlatformLib.inf + +[LibraryClasses.common.SEC] + ArmPlatformLib|Silicon/Hisilicon/Library/ArmPlatformLibHisilicon/ArmPlatformLibSec.inf + + +[LibraryClasses.common.DXE_RUNTIME_DRIVER] + SerialPortLib|ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.inf + +[BuildOptions] + GCC:*_*_AARCH64_PLATFORM_FLAGS == -I$(WORKSPACE)/Silicon/Hisilicon/Hi1620/Include + +################################################################################ +# +# Pcd Section - list of all EDK II PCD Entries defined by this Platform +# +################################################################################ + +[PcdsFeatureFlag.common] + + ## If TRUE, Graphics Output Protocol will be installed on virtual handle created by ConsplitterDxe. + # It could be set FALSE to save size. + gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE + gHisiTokenSpaceGuid.PcdIsItsSupported|TRUE + gArmTokenSpaceGuid.PcdArmGicV3WithV2Legacy|FALSE + gEfiMdeModulePkgTokenSpaceGuid.PcdHiiOsRuntimeSupport|FALSE + +[PcdsFixedAtBuild.common] + gArmPlatformTokenSpaceGuid.PcdCoreCount|48 + gEmbeddedTokenSpaceGuid.PcdPrePiCpuMemorySize|48 + + gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x2000 + + + # Stacks for MPCores in Normal World + gArmPlatformTokenSpaceGuid.PcdCPUCoresStackBase|0xA0E88000 + gArmPlatformTokenSpaceGuid.PcdCPUCorePrimaryStackSize|0x40000 + + gArmTokenSpaceGuid.PcdSystemMemoryBase|0x00000000 + gArmTokenSpaceGuid.PcdSystemMemorySize|0x3FC00000 + + # Size of the region used by UEFI in permanent memory (Reserved 64MB) + gArmPlatformTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x10000000 + + gHisiTokenSpaceGuid.PcdSerDesFlowCtrlFlag|1 + + gHisiTokenSpaceGuid.PcdSlotPerChannelNum|0x2 + + ## Serial Terminal + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase|0x94080000 + gArmPlatformTokenSpaceGuid.PcdSerialDbgRegisterBase|0x400094080000 + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate|115200 + + gArmPlatformTokenSpaceGuid.PL011UartClkInHz|200000000 + + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultDataBits|8 + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity|1 + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits|1 + + gHisiTokenSpaceGuid.PcdIsMPBoot|1 + gHisiTokenSpaceGuid.PcdSocketMask|0x3 + !ifdef $(FIRMWARE_VER) + gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString|L"$(FIRMWARE_VER)" + !else + gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString|L"Hisilicon D06 UEFI RC0 - B308 (V0.38)" + !endif + + gHisiTokenSpaceGuid.PcdBiosVersionString|L"10.01.01T18" + + gHisiTokenSpaceGuid.PcdBiosVersionForBmc|L"0.38" + + gHisiTokenSpaceGuid.PcdSystemProductName|L"D06" + gHisiTokenSpaceGuid.PcdSystemVersion|L"VER.A" + gHisiTokenSpaceGuid.PcdBaseBoardProductName|L"D06" + gHisiTokenSpaceGuid.PcdBaseBoardVersion|L"Estuary" + + gHisiTokenSpaceGuid.PcdCPUInfo|L"Hisilicon 1620" + + # TA + gHisiTokenSpaceGuid.PcdArmPrimaryCoreTemp|0x80010000 + gArmTokenSpaceGuid.PcdGicDistributorBase|0xAE000000 + gArmTokenSpaceGuid.PcdGicRedistributorsBase|0xAE100000 + gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase|0xFE000000 + + + + # + # ARM Architectual Timer Frequency + # + # Set it to 0 so that the code will read frequency from register and be + # adapted to 100M and 50M boards + gArmTokenSpaceGuid.PcdArmArchTimerFreqInHz|0 + gEmbeddedTokenSpaceGuid.PcdTimerPeriod|10000 + + + gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|FALSE + gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdShellFile|{ 0x83, 0xA5, 0x04, 0x7C, 0x3E, 0x9E, 0x1C, 0x4F, 0xAD, 0x65, 0xE0, 0x52, 0x68, 0xD0, 0xB4, 0xD1 } + gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile|{ 0x21, 0xaa, 0x2c, 0x46, 0x14, 0x76, 0x03, 0x45, 0x83, 0x6e, 0x8a, 0xb6, 0xf4, 0x66, 0x23, 0x31 } + gHisiTokenSpaceGuid.PcdSysControlBaseAddress|0x94010000 + gHisiTokenSpaceGuid.PcdMailBoxAddress|0x0000FFF8 + + gHisiTokenSpaceGuid.PcdCpldBaseAddress|0x80000000 + gHisiTokenSpaceGuid.PcdSFCMEM0BaseAddress|0x204000000 + + gHisiTokenSpaceGuid.PcdPeriSubctrlAddress|0x94000000 + + ## 2+1 + gHisiTokenSpaceGuid.PcdPlatformDefaultPackageType|0x1 + + gHisiTokenSpaceGuid.PcdTopOfLowMemory|0x40000000 + + gHisiTokenSpaceGuid.PcdBottomOfHighMemory|0x1000000000 + + gHisiTokenSpaceGuid.PcdNORFlashBase|0x80000000 + gHisiTokenSpaceGuid.PcdNORFlashCachableSize|0x8000000 + + gHisiTokenSpaceGuid.PcdTrustedFirmwareEnable|0x1 + gHisiTokenSpaceGuid.PcdMacAddress|0xA47E0000 + + # PCIe ECAM Access BaseAddress + gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress|0xD0000000 + gEmbeddedTokenSpaceGuid.PcdPrePiCpuIoSize|16 + + gHisiTokenSpaceGuid.Pcdsoctype|0x1620 + + # SMBIOS 3.0 only + # BIT0 set indicates 32-bit entry point and table are produced.
+ # BIT1 set indicates 64-bit entry point and table are produced.
+ gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosEntryPointProvideMethod|0x2 + + # + # ACPI Table Version + # + # BIT 1 - EFI_ACPI_TABLE_VERSION_1_0B.
+ # BIT 2 - EFI_ACPI_TABLE_VERSION_2_0.
+ # BIT 3 - EFI_ACPI_TABLE_VERSION_3_0.
+ # BIT 4 - EFI_ACPI_TABLE_VERSION_4_0.
+ # BIT 5 - EFI_ACPI_TABLE_VERSION_5_0.
+ gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiExposedTableVersions|0x20 + + gEfiMdeModulePkgTokenSpaceGuid.PcdSrIovSupport|FALSE + gArmTokenSpaceGuid.PcdPciIoTranslation|0x0 + +################################################################################ +# +# Components Section - list of all EDK II Modules needed by this Platform +# +################################################################################ +[Components.common] + + # + # SEC + # + + # + # PEI Phase modules + # + ArmPlatformPkg/PrePeiCore/PrePeiCoreMPCore.inf + MdeModulePkg/Core/Pei/PeiMain.inf + MdeModulePkg/Universal/PCD/Pei/Pcd.inf + + ArmPlatformPkg/PlatformPei/PlatformPeim.inf + + ArmPkg/Drivers/CpuPei/CpuPei.inf + IntelFrameworkModulePkg/Universal/StatusCode/Pei/StatusCodePei.inf + MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.inf + MdeModulePkg/Universal/Variable/Pei/VariablePei.inf + + Silicon/Hisilicon/Drivers/VersionInfoPeim/VersionInfoPeim.inf + + MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf { + + NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf + } + + # + # DXE + # + MdeModulePkg/Core/Dxe/DxeMain.inf { + + NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf + } + MdeModulePkg/Universal/PCD/Dxe/Pcd.inf + + + # + # Architectural Protocols + # + ArmPkg/Drivers/CpuDxe/CpuDxe.inf + MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf + + +!if $(SECURE_BOOT_ENABLE) == TRUE + MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf { + + NULL|SecurityPkg/Library/DxeImageVerificationLib/DxeImageVerificationLib.inf + } + SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf +!else + MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf +!endif + Silicon/Hisilicon/Drivers/FlashFvbDxe/FlashFvbDxe.inf + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf { + + NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf + BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf + } + MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf + MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf + + MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf + MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf + EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf + + MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf + MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf + MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf + MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf + MdeModulePkg/Universal/SerialDxe/SerialDxe.inf + + MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf + + ArmPkg/Drivers/ArmGic/ArmGicDxe.inf + + ArmPkg/Drivers/TimerDxe/TimerDxe.inf + + MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf + IntelFrameworkModulePkg/Universal/StatusCode/RuntimeDxe/StatusCodeRuntimeDxe.inf + # + #ACPI + # + MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf + Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/AcpiPlatformDxe.inf + + Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf + + # + # Usb Support + # + MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf + MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf + MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf + MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf + MdeModulePkg/Bus/Usb/UsbMouseDxe/UsbMouseDxe.inf + MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf + + # + #network + # + MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf + + MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf + MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Dxe.inf + MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf + MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Dxe.inf + MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf + MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Dxe.inf + MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf +!if $(NETWORK_IP6_ENABLE) == TRUE + NetworkPkg/Ip6Dxe/Ip6Dxe.inf + NetworkPkg/TcpDxe/TcpDxe.inf + NetworkPkg/Udp6Dxe/Udp6Dxe.inf + NetworkPkg/Dhcp6Dxe/Dhcp6Dxe.inf + NetworkPkg/Mtftp6Dxe/Mtftp6Dxe.inf + NetworkPkg/UefiPxeBcDxe/UefiPxeBcDxe.inf +!else + MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf + MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf +!endif + MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf +!if $(HTTP_BOOT_ENABLE) == TRUE + NetworkPkg/DnsDxe/DnsDxe.inf + NetworkPkg/HttpUtilitiesDxe/HttpUtilitiesDxe.inf + NetworkPkg/HttpDxe/HttpDxe.inf + NetworkPkg/HttpBootDxe/HttpBootDxe.inf +!endif + + MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf + MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf + MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf + # + # FAT filesystem + GPT/MBR partitioning + # + + MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf + MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf + FatPkg/EnhancedFatDxe/Fat.inf + MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf + + MdeModulePkg/Application/UiApp/UiApp.inf { + + NULL|MdeModulePkg/Library/BootManagerUiLib/BootManagerUiLib.inf + NULL|MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf + NULL|MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib.inf + } + # + # Bds + # + MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf + + MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf + + #PCIe Support + Silicon/Hisilicon/Drivers/PciPlatform/PciPlatform.inf + ArmPkg/Drivers/ArmPciCpuIo2Dxe/ArmPciCpuIo2Dxe.inf + MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf { + + PciSegmentLib|MdePkg/Library/BasePciSegmentLibPci/BasePciSegmentLibPci.inf + PciLib|MdePkg/Library/BasePciLibPciExpress/BasePciLibPciExpress.inf + PciHostBridgeLib|MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.inf + } + + MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf + + MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf + + # + # Memory test + # + MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf + MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf + MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf + + # + # UEFI application (Shell Embedded Boot Loader) + # + ShellPkg/Application/Shell/Shell.inf { + + ShellCommandLib|ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.inf + NULL|ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.inf + NULL|ShellPkg/Library/UefiShellLevel1CommandsLib/UefiShellLevel1CommandsLib.inf + NULL|ShellPkg/Library/UefiShellLevel3CommandsLib/UefiShellLevel3CommandsLib.inf + NULL|ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.inf + NULL|ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.inf + NULL|ShellPkg/Library/UefiShellInstall1CommandsLib/UefiShellInstall1CommandsLib.inf + NULL|ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1CommandsLib.inf + HandleParsingLib|ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.inf + PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf + BcfgCommandLib|ShellPkg/Library/UefiShellBcfgCommandLib/UefiShellBcfgCommandLib.inf +!if $(NETWORK_IP6_ENABLE) == TRUE + NULL|ShellPkg/Library/UefiShellNetwork2CommandsLib/UefiShellNetwork2CommandsLib.inf +!endif + +!if $(INCLUDE_DP) == TRUE + NULL|ShellPkg/Library/UefiDpLib/UefiDpLib.inf +!endif #$(INCLUDE_DP) + + + gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0xFF + gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE + gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|8000 + } +!if $(INCLUDE_TFTP_COMMAND) == TRUE + ShellPkg/DynamicCommand/TftpDynamicCommand/TftpDynamicCommand.inf { + + gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE + } +!endif #$(INCLUDE_TFTP_COMMAND) + diff --git a/Platform/Hisilicon/D06/D06.fdf b/Platform/Hisilicon/D06/D06.fdf new file mode 100644 index 0000000000..31a07e2b1d --- /dev/null +++ b/Platform/Hisilicon/D06/D06.fdf @@ -0,0 +1,340 @@ +# +# Copyright (c) 2011, 2012, ARM Limited. All rights reserved. +# Copyright (c) 2017 - 2018, Hisilicon Limited. All rights reserved. +# Copyright (c) 2017 - 2018, Linaro Limited. All rights reserved. +# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# + +[DEFINES] + +################################################################################ +# +# FD Section +# The [FD] Section is made up of the definition statements and a +# description of what goes into the Flash Device Image. Each FD section +# defines one flash "device" image. A flash device image may be one of +# the following: Removable media bootable image (like a boot floppy +# image,) an Option ROM image (that would be "flashed" into an add-in +# card,) a System "Flash" image (that would be burned into a system's +# flash) or an Update ("Capsule") image that will be used to update and +# existing system flash. +# +################################################################################ +[FD.D06] + +BaseAddress = 0x204100000|gArmTokenSpaceGuid.PcdFdBaseAddress # The base address of the Firmware in NOR Flash. + +Size = 0x00400000|gArmTokenSpaceGuid.PcdFdSize # The size in bytes of the FLASH Device +ErasePolarity = 1 + +# This one is tricky, it must be: BlockSize * NumBlocks = Size +BlockSize = 0x00010000 +NumBlocks = 0x40 + +################################################################################ +# +# Following are lists of FD Region layout which correspond to the locations of different +# images within the flash device. +# +# Regions must be defined in ascending order and may not overlap. +# +# A Layout Region start with a eight digit hex offset (leading "0x" required) followed by +# the pipe "|" character, followed by the size of the region, also in hex with the leading +# "0x" characters. Like: +# Offset|Size +# PcdOffsetCName|PcdSizeCName +# RegionType +# +################################################################################ + +0x00000000|0x00100000 +gArmTokenSpaceGuid.PcdSecureFvBaseAddress|gArmTokenSpaceGuid.PcdSecureFvSize + +0x00100000|0x00280000 +gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize +FV = FVMAIN_COMPACT + +0x00380000|0x00020000 +gHisiTokenSpaceGuid.PcdTrustedFirmwareBL1Base +FILE = Platform/Hisilicon/D06/bl1.bin +0x003A0000|0x00020000 +FILE = Platform/Hisilicon/D06/fip.bin + +0x003C0000|0x0000e000 +gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize +DATA = { + ## This is the EFI_FIRMWARE_VOLUME_HEADER + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + # FileSystemGuid: gEfiSystemNvDataFvGuid = + 0x8D, 0x2B, 0xF1, 0xFF, 0x96, 0x76, 0x8B, 0x4C, + 0xA9, 0x85, 0x27, 0x47, 0x07, 0x5B, 0x4F, 0x50, + # FvLength: 0x20000 + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + #Signature "_FVH" #Attributes + 0x5f, 0x46, 0x56, 0x48, 0xff, 0xfe, 0x04, 0x00, + #HeaderLength #CheckSum #ExtHeaderOffset #Reserved #Revision + 0x48, 0x00, 0x36, 0x09, 0x00, 0x00, 0x00, 0x02, + #Blockmap[0]: 2 Blocks * 0x10000 Bytes / Block + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + #Blockmap[1]: End + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + ## This is the VARIABLE_STORE_HEADER +!if $(SECURE_BOOT_ENABLE) == TRUE + #Signature: gEfiAuthenticatedVariableGuid = + # { 0xaaf32c78, 0x947b, 0x439a, { 0xa1, 0x80, 0x2e, 0x14, 0x4e, 0xc3, 0x77, 0x92 }} + 0x78, 0x2c, 0xf3, 0xaa, 0x7b, 0x94, 0x9a, 0x43, + 0xa1, 0x80, 0x2e, 0x14, 0x4e, 0xc3, 0x77, 0x92, +!else + #Signature: gEfiVariableGuid = + # { 0xddcf3616, 0x3275, 0x4164, { 0x98, 0xb6, 0xfe, 0x85, 0x70, 0x7f, 0xfe, 0x7d }} + 0x16, 0x36, 0xcf, 0xdd, 0x75, 0x32, 0x64, 0x41, + 0x98, 0xb6, 0xfe, 0x85, 0x70, 0x7f, 0xfe, 0x7d, +!endif + #Size: 0xe000 (gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize) - 0x48 (size of EFI_FIRMWARE_VOLUME_HEADER) = 0xdFB8 + 0xB8, 0xdF, 0x00, 0x00, + #FORMATTED: 0x5A #HEALTHY: 0xFE #Reserved: UINT16 #Reserved1: UINT32 + 0x5A, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +} + +0x003CE000|0x00002000 +gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize +#NV_FTW_WORKING +DATA = { + # EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER->Signature = gEdkiiWorkingBlockSignatureGuid = + 0x2B, 0x29, 0x58, 0x9E, 0x68, 0x7C, 0x7D, 0x49, + 0xA0, 0xCE, 0x65, 0x0 , 0xFD, 0x9F, 0x1B, 0x95, + # Crc:UINT32 #WorkingBlockValid:1, WorkingBlockInvalid:1, Reserved + 0xE2, 0x33, 0xF2, 0x03, 0xFE, 0xFF, 0xFF, 0xFF, + # WriteQueueSize: UINT64 #Size: 0x2000 - 0x20 (FTW_WORKING_HEADER) = 0x1FE0 + 0xE0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +} + +0x003D0000|0x00010000 +gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize + +0x003E0000|0x00010000 + +0x003F0000|0x00010000 +FILE = Platform/Hisilicon/D0x-CustomData.Fv + +################################################################################ +# +# FV Section +# +# [FV] section is used to define what components or modules are placed within a flash +# device file. This section also defines order the components and modules are positioned +# within the image. The [FV] section consists of define statements, set statements and +# module statements. +# +################################################################################ + +[FV.FvMain] +BlockSize = 0x40 +NumBlocks = 0 # This FV gets compressed so make it just big enough +FvAlignment = 16 # FV alignment and FV attributes setting. +ERASE_POLARITY = 1 +MEMORY_MAPPED = TRUE +STICKY_WRITE = TRUE +LOCK_CAP = TRUE +LOCK_STATUS = TRUE +WRITE_DISABLED_CAP = TRUE +WRITE_ENABLED_CAP = TRUE +WRITE_STATUS = TRUE +WRITE_LOCK_CAP = TRUE +WRITE_LOCK_STATUS = TRUE +READ_DISABLED_CAP = TRUE +READ_ENABLED_CAP = TRUE +READ_STATUS = TRUE +READ_LOCK_CAP = TRUE +READ_LOCK_STATUS = TRUE + + APRIORI DXE { + INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf + } + + INF MdeModulePkg/Core/Dxe/DxeMain.inf + INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf + + # + # PI DXE Drivers producing Architectural Protocols (EFI Services) + # + INF ArmPkg/Drivers/CpuDxe/CpuDxe.inf + INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf + + INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf + + + INF Silicon/Hisilicon/Drivers/FlashFvbDxe/FlashFvbDxe.inf + INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf + INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf + + INF MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf + INF MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf + +!if $(SECURE_BOOT_ENABLE) == TRUE + INF SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf +!endif + + INF MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf + INF EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf + + INF MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf + + # + # Multiple Console IO support + # + INF MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf + INF MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf + INF MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf + INF MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf + INF MdeModulePkg/Universal/SerialDxe/SerialDxe.inf + + INF ArmPkg/Drivers/ArmGic/ArmGicDxe.inf + INF ArmPkg/Drivers/TimerDxe/TimerDxe.inf + + INF MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf + + # + # FAT filesystem + GPT/MBR partitioning + # + INF MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf + INF MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf + INF FatPkg/EnhancedFatDxe/Fat.inf + INF MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf + INF IntelFrameworkModulePkg/Universal/StatusCode/RuntimeDxe/StatusCodeRuntimeDxe.inf + + # + # Usb Support + # + + + INF MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf + + INF MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf + INF MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf + INF MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf + INF MdeModulePkg/Bus/Usb/UsbMouseDxe/UsbMouseDxe.inf + INF MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf + + INF MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf + + # + #ACPI + # + INF MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf + INF Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/AcpiPlatformDxe.inf + + INF Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf + + # + #Network + # + + INF MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf + INF MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf + INF MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Dxe.inf + INF MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf + INF MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Dxe.inf + INF MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf + INF MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Dxe.inf + INF MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf +!if $(NETWORK_IP6_ENABLE) == TRUE + INF NetworkPkg/Ip6Dxe/Ip6Dxe.inf + INF NetworkPkg/TcpDxe/TcpDxe.inf + INF NetworkPkg/Udp6Dxe/Udp6Dxe.inf + INF NetworkPkg/Dhcp6Dxe/Dhcp6Dxe.inf + INF NetworkPkg/Mtftp6Dxe/Mtftp6Dxe.inf + INF NetworkPkg/UefiPxeBcDxe/UefiPxeBcDxe.inf +!else + INF MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf + INF MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf +!endif + INF MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf +!if $(HTTP_BOOT_ENABLE) == TRUE + INF NetworkPkg/DnsDxe/DnsDxe.inf + INF NetworkPkg/HttpUtilitiesDxe/HttpUtilitiesDxe.inf + INF NetworkPkg/HttpDxe/HttpDxe.inf + INF NetworkPkg/HttpBootDxe/HttpBootDxe.inf +!endif + + + # + # PCI Support + # + INF Silicon/Hisilicon/Drivers/PciPlatform/PciPlatform.inf + INF ArmPkg/Drivers/ArmPciCpuIo2Dxe/ArmPciCpuIo2Dxe.inf + INF MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf + INF MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf + + INF MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf + INF MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf + INF MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf + INF MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf + + # + # Build Shell from latest source code instead of prebuilt binary + # + INF ShellPkg/Application/Shell/Shell.inf + + INF MdeModulePkg/Application/UiApp/UiApp.inf + # + # Bds + # + INF MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf + + INF MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf + INF MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf + INF MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf + +[FV.FVMAIN_COMPACT] +FvAlignment = 16 +ERASE_POLARITY = 1 +MEMORY_MAPPED = TRUE +STICKY_WRITE = TRUE +LOCK_CAP = TRUE +LOCK_STATUS = TRUE +WRITE_DISABLED_CAP = TRUE +WRITE_ENABLED_CAP = TRUE +WRITE_STATUS = TRUE +WRITE_LOCK_CAP = TRUE +WRITE_LOCK_STATUS = TRUE +READ_DISABLED_CAP = TRUE +READ_ENABLED_CAP = TRUE +READ_STATUS = TRUE +READ_LOCK_CAP = TRUE +READ_LOCK_STATUS = TRUE + + APRIORI PEI { + INF MdeModulePkg/Universal/PCD/Pei/Pcd.inf + } + INF ArmPlatformPkg/PrePeiCore/PrePeiCoreMPCore.inf + INF MdeModulePkg/Core/Pei/PeiMain.inf + INF ArmPlatformPkg/PlatformPei/PlatformPeim.inf + + INF MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.inf + INF MdeModulePkg/Universal/Variable/Pei/VariablePei.inf + + INF Silicon/Hisilicon/Drivers/VersionInfoPeim/VersionInfoPeim.inf + + INF ArmPkg/Drivers/CpuPei/CpuPei.inf + INF MdeModulePkg/Universal/PCD/Pei/Pcd.inf + INF IntelFrameworkModulePkg/Universal/StatusCode/Pei/StatusCodePei.inf + + INF MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf + + FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 { + SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF PROCESSING_REQUIRED = TRUE { + SECTION FV_IMAGE = FVMAIN + } + } + +!include Silicon/Hisilicon/Hisilicon.fdf.inc + diff --git a/Silicon/Hisilicon/Hi1620/Library/Hi1620PciPlatformLib/Hi1620PciPlatformLib.inf b/Silicon/Hisilicon/Hi1620/Library/Hi1620PciPlatformLib/Hi1620PciPlatformLib.inf new file mode 100644 index 0000000000..7648322522 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Library/Hi1620PciPlatformLib/Hi1620PciPlatformLib.inf @@ -0,0 +1,30 @@ +## @file +# PCI Segment Library for Hisilicon Hi1610/Hi1616 SoC with multiple RCs +# +# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.
+# Copyright (c) 2017 - 2018, Linaro Ltd. All rights reserved.
+# Copyright (c) 2018, Hisilicon Ltd. All rights reserved.
+# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php. +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +# +## + +[Defines] + INF_VERSION = 0x0001001A + BASE_NAME = Hi1620PciPlatformLib + FILE_GUID = 29ba30da-68bc-46a5-888f-c65dabb67fd8 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = PciPlatformLib + +[Sources] + Hi1620PciPlatformLib.c + +[Packages] + MdePkg/MdePkg.dec diff --git a/Platform/Hisilicon/D06/Include/Library/CpldD06.h b/Platform/Hisilicon/D06/Include/Library/CpldD06.h new file mode 100644 index 0000000000..be3548c8d1 --- /dev/null +++ b/Platform/Hisilicon/D06/Include/Library/CpldD06.h @@ -0,0 +1,37 @@ +/** @file + + Copyright (c) 2018, Hisilicon Limited. All rights reserved.
+ Copyright (c) 2018, Linaro Limited. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#ifndef __CPLDD06_H__ +#define __CPLDD06_H__ + +#define CPLD_BASE_ADDRESS 0x80000000 + +#define CPLD_BIOSINDICATE_FLAG 0x09 +#define CPLD_I2C_SWITCH_FLAG 0x17 +#define CPU_GET_I2C_CONTROL BIT2 +#define BMC_I2C_STATUS BIT3 + +#define CPLD_LOGIC_VERSION (0x4) +#define CPLD_LOGIC_COMPILE_YEAR (0x1) +#define CPLD_LOGIC_COMPILE_MONTH (0x2) +#define CPLD_LOGIC_COMPILE_DAY (0x3) + +#define CPLD_RISER_PRSNT_FLAG 0x40 +#define CPLD_RISER2_BOARD_ID 0x44 + +#define CPLD_X8_X8_X8_BOARD_ID 0x92 +#define CPLD_X16_X8_BOARD_ID 0x93 + +#endif /* __CPLDD06_H__ */ diff --git a/Silicon/Hisilicon/Hi1620/Include/Library/SerdesLib.h b/Silicon/Hisilicon/Hi1620/Include/Library/SerdesLib.h new file mode 100644 index 0000000000..05f0f7020e --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Include/Library/SerdesLib.h @@ -0,0 +1,85 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +#ifndef _SERDES_LIB_H_ +#define _SERDES_LIB_H_ + +typedef enum { + EmHilink0Hccs1X8 = 0, + EmHilink0Pcie1X8 = 2, + EmHilink0Pcie1X4Pcie2X4 = 3, + EmHilink0Sas2X8 = 4, + EmHilink0Hccs1X8Width16, + EmHilink0Hccs1X8Width32, + EmHilink0Hccs1X8Speed5G, +} HILINK0_MODE_TYPE; + +typedef enum { + EmHilink1Sas2X1 = 0, + EmHilink1Hccs0X8 = 1, + EmHilink1Pcie0X8 = 2, + EmHilink1Hccs0X8Width16, + EmHilink1Hccs0X8Width32, + EmHilink1Hccs0X8Speed5G, +} HILINK1_MODE_TYPE; + +typedef enum { + EmHilink2Pcie2X8 = 0, + EmHilink2Hccs2X8 = 1, + EmHilink2Sas0X8 = 2, + EmHilink2Hccs2X8Width16, + EmHilink2Hccs2X8Width32, + EmHilink2Hccs2X8Speed5G, +} HILINK2_MODE_TYPE; + +typedef enum { + EmHilink5Pcie3X4 = 0, + EmHilink5Pcie2X2Pcie3X2 = 1, + EmHilink5Sas1X4 = 2, +} HILINK5_MODE_TYPE; + + +typedef struct { + HILINK0_MODE_TYPE Hilink0Mode; + HILINK1_MODE_TYPE Hilink1Mode; + HILINK2_MODE_TYPE Hilink2Mode; + UINT32 Hilink3Mode; + UINT32 Hilink4Mode; + HILINK5_MODE_TYPE Hilink5Mode; + UINT32 Hilink6Mode; + UINT32 UseSsc; +} SERDES_PARAM; + +#define SERDES_INVALID_MACRO_ID 0xFFFFFFFF +#define SERDES_INVALID_LANE_NUM 0xFFFFFFFF +#define SERDES_INVALID_RATE_MODE 0xFFFFFFFF + +typedef struct { + UINT32 MacroId; + UINT32 DsNum; + UINT32 DsCfg; +} SERDES_POLARITY_INVERT; + +EFI_STATUS OemGetSerdesParam (SERDES_PARAM *ParamA, SERDES_PARAM *ParamB, UINT32 SocketId); +extern SERDES_POLARITY_INVERT gSerdesPolarityTxDesc[]; +extern SERDES_POLARITY_INVERT gSerdesPolarityRxDesc[]; +UINT32 GetEthType (UINT8 EthChannel); +VOID SerdesEnableCtleDfe (UINT32 NimbusId, UINT32 Macro, UINT32 Lane, UINT32 LaneMode); + +EFI_STATUS EfiSerdesInitWrap (UINT32 RateMode); +INT32 SerdesReset (UINT32 SiclId, UINT32 Macro); +VOID SerdesLoadFirmware (UINT32 SiclId, UINT32 Macro); +INT32 h30_serdes_run_firmware (UINT32 nimbus_id, UINT32 macro, UINT8 DsMask, UINT8 ctle_mode); +#endif diff --git a/Silicon/Hisilicon/Hi1620/Include/PlatformArch.h b/Silicon/Hisilicon/Hi1620/Include/PlatformArch.h new file mode 100644 index 0000000000..f3ad45f6c6 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Include/PlatformArch.h @@ -0,0 +1,67 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + + + +#ifndef _PLATFORM_ARCH_H_ +#define _PLATFORM_ARCH_H_ + +#define MAX_SOCKET 2 +#define MAX_DIE 4 +#define MAX_DDRC 4 +#define MAX_NODE (MAX_SOCKET * MAX_DIE) +#define MAX_CHANNEL 8 +#define MAX_DIMM 2 +#define MAX_RANK_CH 8 +#define MAX_RANK_DIMM 4 +#define MAX_DIMM_SIZE 256 // In GB +// Max NUMA node number for each node type +#define MAX_NUM_PER_TYPE 8 + +#define RASC_BASE (0x1800) +#define RASC_CFG_INFOIDX_REG (RASC_BASE + 0x58) /* configuration register for Rank statistical information */ +#define RASC_CFG_SPLVL_REG (RASC_BASE + 0xD4) /* configuration register for Sparing level */ + +// +// ACPI table information used to initialize tables. +// +#define EFI_ACPI_ARM_OEM_ID 'H','I','S','I',' ',' ' // OEMID 6 bytes long +#define EFI_ACPI_ARM_OEM_TABLE_ID SIGNATURE_64 ('H','I','P','0','8',' ',' ',' ') // OEM table id 8 bytes long +#define EFI_ACPI_ARM_OEM_REVISION 0x00000000 +#define EFI_ACPI_ARM_CREATOR_ID SIGNATURE_32 ('H','I','S','I') +#define EFI_ACPI_ARM_CREATOR_REVISION 0x20151124 + +// A macro to initialise the common header part of EFI ACPI tables as defined by +// EFI_ACPI_DESCRIPTION_HEADER structure. +#define ARM_ACPI_HEADER(Signature, Type, Revision) { \ + Signature, /* UINT32 Signature */ \ + sizeof (Type), /* UINT32 Length */ \ + Revision, /* UINT8 Revision */ \ + 0, /* UINT8 Checksum */ \ + { EFI_ACPI_ARM_OEM_ID }, /* UINT8 OemId[6] */ \ + EFI_ACPI_ARM_OEM_TABLE_ID, /* UINT64 OemTableId */ \ + EFI_ACPI_ARM_OEM_REVISION, /* UINT32 OemRevision */ \ + EFI_ACPI_ARM_CREATOR_ID, /* UINT32 CreatorId */ \ + EFI_ACPI_ARM_CREATOR_REVISION /* UINT32 CreatorRevision */ \ + } + +// for acpi +#define NODE_IN_SOCKET 2 +#define CORE_NUM_PER_SOCKET 48 +#define EFI_ACPI_MEMORY_AFFINITY_STRUCTURE_COUNT 16 +#define EFI_ACPI_6_2_ITS_AFFINITY_STRUCTURE_COUNT 1 + +#endif + diff --git a/Silicon/Hisilicon/Include/Library/OemAddressMapLib.h b/Silicon/Hisilicon/Include/Library/OemAddressMapLib.h index 21498b7056..332a79343f 100644 --- a/Silicon/Hisilicon/Include/Library/OemAddressMapLib.h +++ b/Silicon/Hisilicon/Include/Library/OemAddressMapLib.h @@ -27,7 +27,13 @@ typedef struct _DDRC_BASE_ID{ UINTN OemGetPoeSubBase (UINT32 NodeId); UINTN OemGetPeriSubBase (UINT32 NodeId); UINTN OemGetAlgSubBase (UINT32 NodeId); +UINTN OemGetCfgbusBase (UINT32 NodeId); +UINTN OemGetGicSubBase (UINT32 NodeId); +UINTN OemGetHACSubBase (UINT32 NodeId); +UINTN OemGetIOMGMTSubBase (UINT32 NodeId); +UINTN OemGetNetworkSubBase (UINT32 NodeId); UINTN OemGetM3SubBase (UINT32 NodeId); +UINTN OemGetPCIeSubBase (UINT32 NodeId); VOID OemAddressMapInit(VOID); diff --git a/Silicon/Hisilicon/Include/Library/OemNicLib.h b/Silicon/Hisilicon/Include/Library/OemNicLib.h new file mode 100644 index 0000000000..66fe9a2e9b --- /dev/null +++ b/Silicon/Hisilicon/Include/Library/OemNicLib.h @@ -0,0 +1,57 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + + +#ifndef _OEM_NIC_LIB_H_ +#define _OEM_NIC_LIB_H_ + +#define ETH_MAX_PORT 8 +#define ETH_DEBUG_PORT0 6 +#define ETH_DEBUG_PORT1 7 + +#define ETH_SPEED_10M 6 +#define ETH_SPEED_100M 7 +#define ETH_SPEED_1000M 8 +#define ETH_SPEED_10KM 9 +#define ETH_HALF_DUPLEX 0 +#define ETH_FULL_DUPLEX 1 + +#define ETH_GDD_ID 0x001378e0 +#define ETH_PHY_BCM5241_ID 0x0143bc30 +#define ETH_PHY_MVL88E1145_ID 0x01410cd0 +#define ETH_PHY_MVL88E1119_ID 0x01410e80 +#define ETH_PHY_MVL88E1512_ID 0x01410dd0 +#define ETH_PHY_MVL88E1543_ID 0x01410ea0 +#define ETH_PHY_NLP3142_ID 0x00000412 + +#define ETH_INVALID 0xffffffff + +typedef struct { + UINT32 Valid; + UINT32 Speed; + UINT32 Duplex; + UINT32 PhyId; + UINT32 PhyAddr; +} ETH_PRODUCT_DESC; + +BOOLEAN OemIsInitEth (UINT32 Port); +UINT32 OemEthFindFirstSP (); +ETH_PRODUCT_DESC *OemEthInit (UINT32 port); +UINT32 GetCpu1FiberType (UINT8 *Fiber1Type, UINT8 *Fiber2Type); +UINT32 GetCpu2FiberType (UINT8 *Fiber1Type, UINT8 *Fiber2Type, UINT8 *Fiber100Ge); +EFI_STATUS EFIAPI OemGetMac (IN OUT EFI_MAC_ADDRESS *Mac, IN UINTN Port); +EFI_STATUS EFIAPI OemSetMac (IN EFI_MAC_ADDRESS *Mac, IN UINTN Port); + +#endif diff --git a/Silicon/Hisilicon/Hi1620/Library/Hi1620PciPlatformLib/Hi1620PciPlatformLib.c b/Silicon/Hisilicon/Hi1620/Library/Hi1620PciPlatformLib/Hi1620PciPlatformLib.c new file mode 100644 index 0000000000..ff77974c0f --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Library/Hi1620PciPlatformLib/Hi1620PciPlatformLib.c @@ -0,0 +1,67 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +#include +#include + + +/*++ + +Routine Description: + + Perform Platform initialization first in PciPlatform. + +Arguments: + +Returns: + + VOID. + +--*/ +VOID +EFIAPI +PciInitPlatform ( + VOID + ) +{ + return; +} + +/*++ + +Routine Description: + + Perform Platform initialization by the phase indicated. + +Arguments: + + HostBridge - The associated PCI host bridge handle. + Phase - The phase of the PCI controller enumeration. + ChipsetPhase - Defines the execution phase of the PCI chipset driver. + +Returns: + +--*/ +VOID +EFIAPI +PhaseNotifyPlatform ( + IN EFI_HANDLE HostBridge, + IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PHASE Phase, + IN EFI_PCI_CHIPSET_EXECUTION_PHASE ChipsetPhase + ) +{ + return; +} + From patchwork Fri Aug 31 13:26:47 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145614 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp783424ljw; Fri, 31 Aug 2018 06:27:42 -0700 (PDT) X-Google-Smtp-Source: ANB0Vdb2BrLA0Andvh40sJiNyqjIggj/5cUf50VgbCGjqktn8dzbwjcMd3Dd+VUixhS7LArFVbYj X-Received: by 2002:a17:902:8c84:: with SMTP id t4-v6mr15653314plo.100.1535722062491; Fri, 31 Aug 2018 06:27:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722062; cv=none; d=google.com; s=arc-20160816; b=QNBjn/olLnGG9EaU814Cl1+wKTKEk6ZwgkUoLDT2IwITKmQ263N0T4/hsm7seEM5Jo rc21G67tWK0Qe3cm0X3PvdFiwofWJPnBUkNdLXoxhPKeAOa6gsz6bKpTWjXLqA08v5rd +gjlPcOdbkShKLnD9FU2IZXTsYyy3Q5+3v5PM7WfTesqjR60lyHYq7JHvhEeGuO7kULl 94zY+EvgyPmvC1VujyLizpOQle0E1t8zmzwkzwI+6+vRwo+9LtP1bZWV1l7xmqSxGbdq EMz7DmN5MpHsK/PFHO406jaERcDobFBd7+L5y8fSyZgyBglILZhxpo86yLSglQkHSVbO lGVw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=nCm5lpg+MSxFODcPNsSEtUyQ1KPCBd+F6QgxENXkFXQ=; b=AjwBZwZgtQTElw9FbAQ3yYB/AAieWddcP3HnTL4GQJ+afJjzXSAo9/0sxHLywFGrQK Q0LV4WZkMjRyeP8U8GD5WXZBN39jIRBqj5ySGI0F1+5G0NLyj0XmLMdXdWpIhjNXkS6W h0DVy5fTMt4/nt7rdU4Zlyk9vr1pSPIIRMQDWlX/bc5qAvTsywB/Lkp1H/4RZdCmzjsD x5Cyxt493PEjb/2rckwmP3nFWXP0SXq9OHy5je+CFzslHQBovSJF3+T4A5JAwNTpFSLX 2SMA5lyt9tQorNheJ/sf6+JFxNnp6hL1K6SotpONFzkqTg3zChXK4AK/t1jp80shg/hn PQLw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=OUwcdWRY; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id b26-v6si9562637pgl.159.2018.08.31.06.27.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:27:42 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=OUwcdWRY; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 16A252110BD68; Fri, 31 Aug 2018 06:27:42 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::42f; helo=mail-pf1-x42f.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pf1-x42f.google.com (mail-pf1-x42f.google.com [IPv6:2607:f8b0:4864:20::42f]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 402192110BD4E for ; Fri, 31 Aug 2018 06:27:40 -0700 (PDT) Received: by mail-pf1-x42f.google.com with SMTP id l9-v6so5525041pff.9 for ; Fri, 31 Aug 2018 06:27:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=weaSykyRExz5hFaRQ/siSyzZhRw/3J6tUlAbne6iLw0=; b=OUwcdWRY8u1SWqLSGfHbc+U1UcIXCwDmD34JRK/jYlld+83BK0GvkMkLm6HKcQACSN ElqALlipSsh65ev2SeVZT4EsQmLrMsVydEX9B2rfTwRF5mMSTLUGFJ4zaMz6RpOaJAlK YUub0URd4FPXOKF09P96Pzz/WKRKBuLtpA1+4= 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=weaSykyRExz5hFaRQ/siSyzZhRw/3J6tUlAbne6iLw0=; b=R0iWn2kRCP31G/w1DMAYkOOZs3idkGkAQgoLZE/UB1fMIyEvu7DtQRVOhq2ATj60Xc dvBOSXgiRKqIx52EPtkSzFZUfJ5RcLebgnnelbV9O9nBMedM7PLC82rvCxIlGEX91JQW SQhBvZP9G8veMWjqqZ0egiqvXMsk2VJnjMnDCBhsMOAsKm5ECREvd5LjA1UtVQmICDpK 8qNKbNB2jk+msWu8RMKw+YrFthKE03KzDHBhGn1ib/36o/sLWPZkK5JWXorEiQKgfhVg T728RzJnTeDpA4qSIu92pfUrVAjxeRdbsePfwkEjHiSkYYPEwmlThqpbujdE7xHNTy4T UAgA== X-Gm-Message-State: APzg51BbQXu3x2hb3gMSPKO2QcsVrcjD35Bf9h4X/nsW0G+tIF2fkW1R Npp8ye7yKWcVWyS2cCECd1CCsg== X-Received: by 2002:a62:858c:: with SMTP id m12-v6mr15944292pfk.173.1535722059471; Fri, 31 Aug 2018 06:27:39 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.27.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:27:38 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:26:47 +0800 Message-Id: <20180831132710.23055-6-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 05/28] Platform/Hisilicon/D06: Add M41T83RealTimeClockLib X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" Add M41T83RealTimeClockLib for RTC. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang Reviewed-by: Leif Lindholm --- Platform/Hisilicon/D06/D06.dsc | 1 + Silicon/Hisilicon/Library/M41T83RealTimeClockLib/M41T83RealTimeClockLib.inf | 46 ++ Silicon/Hisilicon/Library/M41T83RealTimeClockLib/M41T83RealTimeClock.h | 158 ++++++ Silicon/Hisilicon/Library/M41T83RealTimeClockLib/M41T83RealTimeClockLib.c | 559 ++++++++++++++++++++ 4 files changed, 764 insertions(+) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index d222ca55f3..244960c6b0 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -64,6 +64,7 @@ CpldIoLib|Silicon/Hisilicon/Library/CpldIoLib/CpldIoLib.inf TimeBaseLib|EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.inf + RealTimeClockLib|Silicon/Hisilicon/Library/M41T83RealTimeClockLib/M41T83RealTimeClockLib.inf CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf GenericBdsLib|IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf diff --git a/Silicon/Hisilicon/Library/M41T83RealTimeClockLib/M41T83RealTimeClockLib.inf b/Silicon/Hisilicon/Library/M41T83RealTimeClockLib/M41T83RealTimeClockLib.inf new file mode 100644 index 0000000000..e0bf6b3f24 --- /dev/null +++ b/Silicon/Hisilicon/Library/M41T83RealTimeClockLib/M41T83RealTimeClockLib.inf @@ -0,0 +1,46 @@ +#/** @file +# +# Copyright (c) 2018, Hisilicon Limited. All rights reserved.
+# Copyright (c) 2018, Linaro Limited. All rights reserved.
+# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +#**/ + +[Defines] + INF_VERSION = 0x0001001A + BASE_NAME = M41T83RealTimeClockLib + FILE_GUID = 470DFB96-E205-4515-A75E-2E60F853E79D + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = RealTimeClockLib + +[Sources.common] + M41T83RealTimeClockLib.c + +[Packages] + EmbeddedPkg/EmbeddedPkg.dec + MdePkg/MdePkg.dec + Platform/Hisilicon/D06/D06.dec + Silicon/Hisilicon/HisiPkg.dec + +[LibraryClasses] + BaseMemoryLib + CpldIoLib + DebugLib + I2CLib + IoLib + PcdLib + TimeBaseLib + TimerLib + UefiLib + UefiRuntimeLib # Use EFiAtRuntime to check stage + +[Depex] + gEfiCpuArchProtocolGuid diff --git a/Silicon/Hisilicon/Library/M41T83RealTimeClockLib/M41T83RealTimeClock.h b/Silicon/Hisilicon/Library/M41T83RealTimeClockLib/M41T83RealTimeClock.h new file mode 100644 index 0000000000..d985055d9b --- /dev/null +++ b/Silicon/Hisilicon/Library/M41T83RealTimeClockLib/M41T83RealTimeClock.h @@ -0,0 +1,158 @@ +/** @file + + Copyright (c) 2018, Hisilicon Limited. All rights reserved.
+ Copyright (c) 2018, Linaro Limited. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#ifndef __M41T83_REAL_TIME_CLOCK_H__ +#define __M41T83_REAL_TIME_CLOCK_H__ + +// The delay is need for cpld and I2C. This is a empirical value. MemoryFence is no need. +#define RTC_DELAY_30_MS 30000 +// The delay is need for cpld and I2C. This is a empirical value. MemoryFence is no need. +#define RTC_DELAY_1000_MACROSECOND 1000 +// The delay is need for cpld and I2C. This is a empirical value. MemoryFence is no need. +#define RTC_DELAY_2_MACROSECOND 2 + +#define M41T83_REGADDR_DOTSECONDS 0x00 +#define M41T83_REGADDR_SECONDS 0x01 +#define M41T83_REGADDR_MINUTES 0x02 +#define M41T83_REGADDR_HOURS 0x03 +#define M41T83_REGADDR_WEEK_DAY 0x04 +#define M41T83_REGADDR_DAY 0x05 +#define M41T83_REGADDR_MONTH 0x06 +#define M41T83_REGADDR_YEAR 0x07 +#define M41T83_REGADDR_ALARM1SEC 0x0E +#define M41T83_REGADDR_ALARM1MIN 0x0D +#define M41T83_REGADDR_ALARM1HOUR 0x0C +#define M41T83_REGADDR_ALARM1DATE 0x0B +#define M41T83_REGADDR_ALARM1MONTH 0x0A + +#define M41T83_REGADDR_TIMERCONTROL 0x11 + +#define M41T83_REGADDR_ALARM2SEC 0x18 +#define M41T83_REGADDR_ALARM2MIN 0x17 +#define M41T83_REGADDR_ALARM2HOUR 0x16 +#define M41T83_REGADDR_ALARM2DATE 0x15 +#define M41T83_REGADDR_ALARM2MONTH 0x14 + +typedef union { + struct { + UINT8 TD0:1; + UINT8 TD1:1; + UINT8 RSV:3; + UINT8 TIE:1; + UINT8 TITP:1; + UINT8 TE:1; + } Bits; + UINT8 Uint8; +} RTC_M41T83_TIMERCONTROL; + +typedef union { + struct { + UINT8 MicroSeconds; + } Bits; + UINT8 Uint8; +} RTC_M41T83_DOTSECOND; + +typedef union { + struct{ + UINT8 Seconds:7; + UINT8 ST:1; + } Bits; + UINT8 Uint8; +} RTC_M41T83_SECOND; + +typedef union { + struct { + UINT8 Minutes:7; + UINT8 Rsv:1; + } Bits; + UINT8 Uint8; +} RTC_M41T83_MINUTE; + +typedef union { + struct { + UINT8 Hours:6; + UINT8 CB:2; + } Bits; + UINT8 Uint8; +} RTC_M41T83_HOUR; + +typedef union { + struct{ + UINT8 Days:3; + UINT8 Rsv:5; + } Bits; + UINT8 Uint8; +} RTC_M41T83_WEEK_DAY; + +typedef union { + struct{ + UINT8 Days:6; + UINT8 Rsv:2; + } Bits; + UINT8 Uint8; +} RTC_M41T83_MONTH_DAY; + +typedef union { + struct { + UINT8 Months:5; + UINT8 Rsv:3; + } Bits; + UINT8 Uint8; +} RTC_M41T83_MONTH; + +typedef union { + struct { + UINT8 Years:8; + } Bits; + UINT8 Uint8; +} RTC_M41T83_YEAR; + +typedef union { + struct { + UINT8 Second:7; + UINT8 RPT11:1; + } Bits; + UINT8 Uint8; +} RTC_M41T83_ALARM1SEC; + +typedef union { + struct { + UINT8 Minute:7; + UINT8 RPT12:1; + } Bits; + UINT8 Uint8; +} RTC_M41T83_ALARM1MIN; + +typedef union { + struct { + UINT8 Hour:6; + UINT8 HT:1; + UINT8 RPT13:1; + } Bits; + UINT8 Uint8; +} RTC_M41T83_ALARM1HOUR; + +typedef struct { + RTC_M41T83_DOTSECOND DotSecond; + RTC_M41T83_SECOND Second; + RTC_M41T83_MINUTE Minute; + RTC_M41T83_HOUR Hour; + RTC_M41T83_WEEK_DAY WeekDay; + RTC_M41T83_MONTH_DAY Day; + RTC_M41T83_MONTH Month; + RTC_M41T83_YEAR Year; +} RTC_M41T83_TIME; + +#endif diff --git a/Silicon/Hisilicon/Library/M41T83RealTimeClockLib/M41T83RealTimeClockLib.c b/Silicon/Hisilicon/Library/M41T83RealTimeClockLib/M41T83RealTimeClockLib.c new file mode 100644 index 0000000000..0670f9c5f4 --- /dev/null +++ b/Silicon/Hisilicon/Library/M41T83RealTimeClockLib/M41T83RealTimeClockLib.c @@ -0,0 +1,559 @@ +/** @file + + Copyright (c) 2018, Hisilicon Limited. All rights reserved.
+ Copyright (c) 2018, Linaro Limited. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "M41T83RealTimeClock.h" + +extern I2C_DEVICE gRtcDevice; + +STATIC EFI_LOCK mRtcLock; + +EFI_STATUS +SwitchRtcI2cChannelAndLock ( + VOID + ) +{ + UINT8 Temp; + UINT8 Count; + + for (Count = 0; Count < 100; Count++) { + // To get the other side's state is idle first + Temp = ReadCpldReg (CPLD_I2C_SWITCH_FLAG); + if ((Temp & BIT3) != 0) { + (VOID) MicroSecondDelay (RTC_DELAY_30_MS); + // Try 100 times, if BMC has not released the bus, return preemption failed + if (Count == 99) { + if (!EfiAtRuntime ()) { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Clear cpu_i2c_rtc_state 100 times fail!\n", + __FUNCTION__, __LINE__)); + } + return EFI_DEVICE_ERROR; + } + continue; + } + + // if BMC free the bus, can be set 1 preemption + Temp = ReadCpldReg (CPLD_I2C_SWITCH_FLAG); + Temp = Temp | CPU_GET_I2C_CONTROL; + // CPU occupied RTC I2C State + WriteCpldReg (CPLD_I2C_SWITCH_FLAG, Temp); + (VOID) MicroSecondDelay (RTC_DELAY_2_MACROSECOND); + Temp = ReadCpldReg (CPLD_I2C_SWITCH_FLAG); + // Is preempt success + if(CPU_GET_I2C_CONTROL == (Temp & CPU_GET_I2C_CONTROL)) { + break; + } + if (Count == 99) { + if (!EfiAtRuntime ()) { + DEBUG((DEBUG_ERROR, "[%a]:[%dL] Clear cpu_i2c_rtc_state fail !!! \n", + __FUNCTION__, __LINE__)); + } + return EFI_DEVICE_ERROR; + } + (VOID) MicroSecondDelay (RTC_DELAY_30_MS); + } + + //Polling BMC RTC I2C status + for (Count = 0; Count < 100; Count++) { + Temp = ReadCpldReg (CPLD_I2C_SWITCH_FLAG); + if ((Temp & BIT3) == 0) { + return EFI_SUCCESS; + } + (VOID) MicroSecondDelay (RTC_DELAY_30_MS); + } + + //If the BMC occupies the RTC I2C Channel, write back the CPU side is idle + // or the subsequent BMC will not preempt + Temp = ReadCpldReg (CPLD_I2C_SWITCH_FLAG); + Temp = Temp & (~CPU_GET_I2C_CONTROL); + WriteCpldReg (CPLD_I2C_SWITCH_FLAG, Temp); + + return EFI_NOT_READY; +} + + +/** + Read RTC content through its registers. + + @param Address Address offset of RTC data. + @param Size Size of RTC data to read. + @param Data The data of UINT8 type read from RTC. + + @return EFI_STATUS +**/ +EFI_STATUS +RtcRead ( + IN UINT8 Address, + IN UINT8 Size, + OUT UINT8 *Data + ) +{ + EFI_STATUS Status; + + Status = I2CRead (&gRtcDevice, Address, Size, Data); + MicroSecondDelay (RTC_DELAY_1000_MACROSECOND); + return Status; +} + +/** + Write RTC through its registers. + + @param Address Address offset of RTC data. + @param Size Size of RTC data to write. + @param Data The data of UINT8 type write from RTC. + + @return EFI_STATUS +**/ +EFI_STATUS +RtcWrite ( + IN UINT8 Address, + IN UINT8 Size, + UINT8 *Data + ) +{ + EFI_STATUS Status; + + Status = I2CWrite (&gRtcDevice, Address, Size, Data); + MicroSecondDelay (RTC_DELAY_1000_MACROSECOND); + return Status; +} + +VOID +ReleaseOwnershipOfRtc ( + VOID + ) +{ + UINT8 Temp; + + Temp = ReadCpldReg (CPLD_I2C_SWITCH_FLAG); + Temp = Temp & ~CPU_GET_I2C_CONTROL; + WriteCpldReg (CPLD_I2C_SWITCH_FLAG, Temp); +} + + +EFI_STATUS +InitializeM41T83 ( + VOID + ) +{ + EFI_STATUS Status; + RTC_M41T83_ALARM1HOUR Alarm1Hour; + RTC_M41T83_SECOND Second; + + // Acquire RTC Lock to make access to RTC atomic + if (!EfiAtRuntime ()) { + EfiAcquireLock (&mRtcLock); + } + + Status = I2CInit (gRtcDevice.Socket, gRtcDevice.Port, Normal); + MicroSecondDelay (RTC_DELAY_1000_MACROSECOND); + if (EFI_ERROR (Status)) { + if (!EfiAtRuntime ()) { + EfiReleaseLock (&mRtcLock); + } + return Status; + } + + Status = SwitchRtcI2cChannelAndLock (); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "Get i2c preemption failed: %r\n", Status)); + if (!EfiAtRuntime ()) { + EfiReleaseLock (&mRtcLock); + } + return Status; + } + + MicroSecondDelay(RTC_DELAY_1000_MACROSECOND); + + // Set ST at Power up to clear Oscillator fail detection(OF) + Status = RtcRead (M41T83_REGADDR_SECONDS, 1, &Second.Uint8); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Status : %r\n", + __FUNCTION__, __LINE__, Status)); + } + Second.Bits.ST= 1; + Status = RtcWrite (M41T83_REGADDR_SECONDS, 1, &Second.Uint8); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Status : %r\n", + __FUNCTION__, __LINE__, Status)); + goto Exit; + } + Status = RtcRead (M41T83_REGADDR_SECONDS, 1, &Second.Uint8); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Status : %r\n", + __FUNCTION__, __LINE__, Status)); + } + Second.Bits.ST= 0; + Status = RtcWrite (M41T83_REGADDR_SECONDS, 1, &Second.Uint8); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Status : %r\n", + __FUNCTION__, __LINE__, Status)); + goto Exit; + } + + // Clear HT bit to enanle write to the RTC registers (addresses 0-7) + Status = RtcRead (M41T83_REGADDR_ALARM1HOUR, 1, &Alarm1Hour.Uint8); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Status : %r\n", + __FUNCTION__, __LINE__, Status)); + } + Alarm1Hour.Bits.HT = 0; + Status = RtcWrite (M41T83_REGADDR_ALARM1HOUR, 1, &Alarm1Hour.Uint8); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Status : %r\n", + __FUNCTION__, __LINE__, Status)); + goto Exit; + } + +Exit: + // Release RTC Lock. + ReleaseOwnershipOfRtc (); + if (!EfiAtRuntime ()) { + EfiReleaseLock (&mRtcLock); + } + return Status; +} + +/** + Sets the current local time and date information. + + @param Time A pointer to the current time. + + @retval EFI_SUCCESS The operation completed successfully. + @retval EFI_INVALID_PARAMETER A time field is out of range. + @retval EFI_DEVICE_ERROR The time could not be set due due to hardware error. + +**/ +EFI_STATUS +EFIAPI +LibSetTime ( + IN EFI_TIME *Time + ) +{ + EFI_STATUS Status = EFI_SUCCESS; + RTC_M41T83_TIME BcdTime; + UINT16 CenturyBase = 2000; + UINTN LineNum = 0; + + if (NULL == Time) { + return EFI_INVALID_PARAMETER; + } + + if (!IsTimeValid (Time)) { + if (!EfiAtRuntime ()) { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Status : %r\n", + __FUNCTION__, __LINE__, Status)); + DEBUG ((DEBUG_ERROR, "Now RTC Time is : %04d-%02d-%02d %02d:%02d:%02d\n", + Time->Year, Time->Month, Time->Day, Time->Hour, Time->Minute, Time->Second + )); + } + return EFI_INVALID_PARAMETER; + } + + Status = SwitchRtcI2cChannelAndLock (); + if (EFI_ERROR (Status)) { + return Status; + } + (VOID)MicroSecondDelay (RTC_DELAY_1000_MACROSECOND); + + SetMem (&BcdTime, sizeof (RTC_M41T83_TIME), 0); + + // Acquire RTC Lock to make access to RTC atomic + if (!EfiAtRuntime ()) { + EfiAcquireLock (&mRtcLock); + } + + BcdTime.Second.Bits.Seconds = DecimalToBcd8 (Time->Second); + BcdTime.Minute.Bits.Minutes = DecimalToBcd8 (Time->Minute); + BcdTime.Hour.Bits.Hours = DecimalToBcd8 (Time->Hour); + BcdTime.Day.Bits.Days = DecimalToBcd8 (Time->Day); + BcdTime.Month.Bits.Months = DecimalToBcd8 (Time->Month); + BcdTime.Year.Bits.Years = DecimalToBcd8 (Time->Year % 100); + BcdTime.Hour.Bits.CB = (Time->Year - CenturyBase) / 100 % 10; + + Status = RtcWrite (M41T83_REGADDR_DOTSECONDS, 1, &BcdTime.DotSecond.Uint8); + if (EFI_ERROR (Status)) { + LineNum = __LINE__; + goto Exit; + } + Status = RtcWrite (M41T83_REGADDR_SECONDS, 1, &BcdTime.Second.Uint8); + if (EFI_ERROR (Status)) { + LineNum = __LINE__; + goto Exit; + } + Status = RtcWrite (M41T83_REGADDR_MINUTES, 1, &BcdTime.Minute.Uint8); + if (EFI_ERROR (Status)) { + LineNum = __LINE__; + goto Exit; + } + Status = RtcWrite (M41T83_REGADDR_HOURS, 1, &BcdTime.Hour.Uint8); + if (EFI_ERROR (Status)) { + LineNum = __LINE__; + goto Exit; + } + Status = RtcWrite (M41T83_REGADDR_DAY, 1, &BcdTime.Day.Uint8); + if (EFI_ERROR (Status)) { + LineNum = __LINE__; + goto Exit; + } + Status = RtcWrite (M41T83_REGADDR_MONTH, 1, &BcdTime.Month.Uint8); + if (EFI_ERROR (Status)) { + LineNum = __LINE__; + goto Exit; + } + Status = RtcWrite (M41T83_REGADDR_YEAR, 1, &BcdTime.Year.Uint8); + if (EFI_ERROR (Status)) { + LineNum = __LINE__; + goto Exit; + } + +Exit: + ReleaseOwnershipOfRtc (); + // Release RTC Lock. + if (!EfiAtRuntime ()) { + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Status : %r\n", + __FUNCTION__, LineNum, Status)); + } + EfiReleaseLock (&mRtcLock); + } + return Status; +} + + +/** + Returns the current time and date information, and the time-keeping capabilities + of the hardware platform. + + @param Time A pointer to storage to receive a snapshot of the current time. + @param Capabilities An optional pointer to a buffer to receive the real time clock + device's capabilities. + + @retval EFI_SUCCESS The operation completed successfully. + @retval EFI_INVALID_PARAMETER Time is NULL. + @retval EFI_DEVICE_ERROR The time could not be retrieved due to hardware error. + @retval EFI_SECURITY_VIOLATION The time could not be retrieved due to an authentication failure. +**/ +EFI_STATUS +EFIAPI +LibGetTime ( + OUT EFI_TIME *Time, + OUT EFI_TIME_CAPABILITIES *Capabilities + ) +{ + EFI_STATUS Status = EFI_SUCCESS; + RTC_M41T83_TIME BcdTime; + UINT16 CenturyBase = 2000; + UINTN LineNum = 0; + BOOLEAN IsTimeInvalid = FALSE; + UINT8 TimeTemp[7] = {0}; + + // Ensure Time is a valid pointer + if (Time == NULL) { + return EFI_INVALID_PARAMETER; + } + + Status = SwitchRtcI2cChannelAndLock (); + if (EFI_ERROR (Status)) { + return Status; + } + + MicroSecondDelay(RTC_DELAY_1000_MACROSECOND); + + SetMem (&BcdTime, sizeof (RTC_M41T83_TIME), 0); + SetMem (Time , sizeof (EFI_TIME), 0); + + // Acquire RTC Lock to make access to RTC atomic + if (!EfiAtRuntime ()) { + EfiAcquireLock (&mRtcLock); + } + + Status = RtcRead (M41T83_REGADDR_SECONDS, 7, TimeTemp); + if (EFI_ERROR (Status)) { + LineNum = __LINE__; + goto Exit; + } + + BcdTime.Second.Uint8 = TimeTemp[0]; //SECONDS + BcdTime.Minute.Uint8 = TimeTemp[1]; //MINUTES + BcdTime.Hour.Uint8 = TimeTemp[2]; //HOURS + BcdTime.Day.Uint8 = TimeTemp[4]; //DAY + BcdTime.Month.Uint8 = TimeTemp[5]; //MONTH + BcdTime.Year.Uint8 = TimeTemp[6]; //Year + + Time->Year = BcdToDecimal8 (BcdTime.Year.Bits.Years); + Time->Year += CenturyBase + BcdTime.Hour.Bits.CB * 100; + Time->Month = BcdToDecimal8 (BcdTime.Month.Bits.Months); + Time->Day = BcdToDecimal8 (BcdTime.Day.Bits.Days); + Time->Hour = BcdToDecimal8 (BcdTime.Hour.Bits.Hours); + Time->Minute = BcdToDecimal8 (BcdTime.Minute.Bits.Minutes); + Time->Second = BcdToDecimal8 (BcdTime.Second.Bits.Seconds); + Time->TimeZone = EFI_UNSPECIFIED_TIMEZONE; + + if (!IsTimeValid (Time)) { + Status = EFI_DEVICE_ERROR; + LineNum = __LINE__; + IsTimeInvalid = TRUE; + goto Exit; + } + +Exit: + ReleaseOwnershipOfRtc (); + // Release RTC Lock. + if (!EfiAtRuntime ()) { + if (EFI_ERROR (Status)) { + if (IsTimeInvalid == TRUE) { + DEBUG((DEBUG_ERROR, "%a(%d) Time invalid.\r\n",__FUNCTION__, LineNum)); + } else { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Status : %r\n", + __FUNCTION__, LineNum, Status)); + } + } + EfiReleaseLock (&mRtcLock); + } + return Status; +} + + +/** + Returns the current wakeup alarm clock setting. + + @param Enabled Indicates if the alarm is currently enabled or disabled. + @param Pending Indicates if the alarm signal is pending and requires acknowledgement. + @param Time The current alarm setting. + + @retval EFI_SUCCESS The alarm settings were returned. + @retval EFI_INVALID_PARAMETER Any parameter is NULL. + @retval EFI_DEVICE_ERROR The wakeup time could not be retrieved due to a hardware error. + +**/ +EFI_STATUS +EFIAPI +LibGetWakeupTime ( + OUT BOOLEAN *Enabled, + OUT BOOLEAN *Pending, + OUT EFI_TIME *Time + ) +{ + // Not a required feature + return EFI_UNSUPPORTED; +} + + +/** + Sets the system wakeup alarm clock time. + + @param Enabled Enable or disable the wakeup alarm. + @param Time If Enable is TRUE, the time to set the wakeup alarm for. + + @retval EFI_SUCCESS If Enable is TRUE, then the wakeup alarm was enabled. If + Enable is FALSE, then the wakeup alarm was disabled. + @retval EFI_INVALID_PARAMETER A time field is out of range. + @retval EFI_DEVICE_ERROR The wakeup time could not be set due to a hardware error. + @retval EFI_UNSUPPORTED A wakeup timer is not supported on this platform. + +**/ +EFI_STATUS +EFIAPI +LibSetWakeupTime ( + IN BOOLEAN Enabled, + OUT EFI_TIME *Time + ) +{ + // Not a required feature + return EFI_UNSUPPORTED; +} + + +/** + This is the declaration of an EFI image entry point. This can be the entry point to an application + written to this specification, an EFI boot service driver, or an EFI runtime driver. + + @param ImageHandle Handle that identifies the loaded image. + @param SystemTable System Table for this image. + + @retval EFI_SUCCESS The operation completed successfully. + +**/ +EFI_STATUS +EFIAPI +LibRtcInitialize ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status = EFI_SUCCESS; + EFI_TIME EfiTime; + + EfiInitializeLock (&mRtcLock, TPL_CALLBACK); + + // Setup the setters and getters + gRT->GetTime = LibGetTime; + gRT->SetTime = LibSetTime; + gRT->GetWakeupTime = LibGetWakeupTime; + gRT->SetWakeupTime = LibSetWakeupTime; + + Status = InitializeM41T83 (); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Status : %r\nRTC M41T83 Init Failed !!!\n", + __FUNCTION__, __LINE__, Status)); + /* + * Returning ERROR on failure of RTC initilization will cause the system to hang up. + * So we add some debug message to indecate the RTC initilization failed, + * and continue without returning with error to avoid system hanging up. + * + *return Status; + */ + } + + LibGetTime (&EfiTime, NULL); + if (!IsTimeValid (&EfiTime)) { + EfiTime.Year = 2015; + EfiTime.Month = 1; + EfiTime.Day = 1; + EfiTime.Hour = 0; + EfiTime.Minute = 0; + EfiTime.Second = 0; + Status = LibSetTime (&EfiTime); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] RTC settime Status : %r\n", + __FUNCTION__, __LINE__, Status)); + } + } + + DEBUG (( + DEBUG_ERROR, "Now RTC Time is : %04d-%02d-%02d %02d:%02d:%02d\n", + EfiTime.Year, EfiTime.Month, EfiTime.Day, EfiTime.Hour, EfiTime.Minute, + EfiTime.Second + )); + /* + * Returning ERROR on failure of RTC initilization will cause the system to hang up. + * So we add some debug message to indecate the RTC initilization failed, + * and return success to avoid system hanging up. + */ + return EFI_SUCCESS; +} From patchwork Fri Aug 31 13:26:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145615 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp783479ljw; Fri, 31 Aug 2018 06:27:45 -0700 (PDT) X-Google-Smtp-Source: ANB0VdZx3JQ8vtNP5Zz7il3W+z4oZLJmPy45vW1ZCZ9E1oSM0K1ydLD0YM711J7ZuQTnG17XsfEP X-Received: by 2002:a62:9645:: with SMTP id c66-v6mr16051898pfe.56.1535722065653; Fri, 31 Aug 2018 06:27:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722065; cv=none; d=google.com; s=arc-20160816; b=fRPLMPa/EIWfoAKpN9nxwd86iTjw8XD0Sm3S9XuZVZeB+E+Ediq5+GwoZXZx4j+S6W V5qLfb+qpKhQM3RSOhH9wG73cEJ4PwSnpg9dF9j0VUj7anMLUt6Eop3hiGFNUuOTgbwY V10J0JlxtywyhyeebAFgEbZ1ApuZCgRlIOttdTTDA4mj3QbqKkguHoLAs1UBi+m+EVCi rUNq7YfI5EOUdzxrdsEbX0X5lTKNhtHNQQrgg+Tgp4QHoDivCKqYIhgRs1GRLydMYL7g yn5FPXT47vZdfzY17abxc23e+3G/rqiSwfBjvf+gKl0mLKedZe0i2gsoE7KSS3VhAzoG OAFg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=lqHdxAgjL4i0pjsBAiFJjwQUQhqY6OOITW8MLJpHHVc=; b=TK/FyRaDnAHaHAk2gIZaN04JHSMbgavCGUluJObf6LeMfLf8ygYpPfYIl/p0C2uV8v YI/MWM9vRRP+vPHafY0RjMIitVUmq7+9mDxmkF8jvf8D0hZth91BpEOS2vDTCEp0P5iA nPK/vPtffwkN0IErdmKbmnK475fuf6I2KYtclQQWPgGzQuKH9hj7MnncX+oAcPRd/AYg uMR0wJdlq0+4abJ6//PXiPNygk9uQ9uu/ZItdK62PVomNKf00p5aLPKhfBVVZl3ZqaJv z70P+ClmnvDY+4nIc8HLQr03/idNezcFlBkvASn9JhpdukD/cyG8Rm6ZxQhZWCR9s8Il jSmQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=ReIV2VqY; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id e22-v6si9552636pgi.111.2018.08.31.06.27.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:27:45 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=ReIV2VqY; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 47BC72110BD6B; Fri, 31 Aug 2018 06:27:44 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::52f; helo=mail-pg1-x52f.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pg1-x52f.google.com (mail-pg1-x52f.google.com [IPv6:2607:f8b0:4864:20::52f]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id D6DE72110BD4E for ; Fri, 31 Aug 2018 06:27:43 -0700 (PDT) Received: by mail-pg1-x52f.google.com with SMTP id s15-v6so5452708pgv.8 for ; Fri, 31 Aug 2018 06:27:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=1ICLeXDHcPRlfuWpGSXPTIhh7G4d/g5NWNws3b7etzc=; b=ReIV2VqYXQ0SM6HYbft2LFJh/Yd0vkSXLp8bqs6FoCuuaCrwnDY015vpXi4tvnoOuJ zfgu0FsovIyezNomOfPPMWZ2qjSDWL0HWhRizO055nLJ1QrQMB7GM8eiP5M4Y4yNIIRB tUmnYV9blyBjJ/AlWx3eIDiOci0P+KI7tVlkw= 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=1ICLeXDHcPRlfuWpGSXPTIhh7G4d/g5NWNws3b7etzc=; b=rb53ER1Z8bmoGze+m3HCMRNdMXb01Izpou8GxBoLKOEeCBsjg3aRXYWolOV5mvHwjJ IptDurrt3unjKCaCf6pNhJZkLqMhDeIppaevGJg7y/vf7qta6qQ0+4zdbfMIJuzBzlZ1 aS6r6i/uu2fJXs1g87IPh4tuVuPLuWUPgezPAlUJH/t1IGIRJmK8TKOWZE8fklE/46x/ bzjgAudiX+xji8ROhCkTHzIqEERsk5KpFF1Xq0zZuiOEBx+Iv+0ysfKsX0MM/uwLFoFp GfWkUv5DIzCTnrSMpnHTjPrQbVzE5hmjH6h3QkEPuTNtYEFX12qHPqwgo23udiZr3CnW sGqA== X-Gm-Message-State: APzg51Ccf18DHpCvI19zvrX/YI+nKQyVmsynKByk+7PZkczb3nFsQUz2 a+9A1Qqe4sby4tw139JR69T2ew== X-Received: by 2002:a62:4083:: with SMTP id f3-v6mr16080917pfd.229.1535722063037; Fri, 31 Aug 2018 06:27:43 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.27.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:27:42 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:26:48 +0800 Message-Id: <20180831132710.23055-7-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 06/28] Hisilicon/D06: Add OemMiscLibD06 X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" This library include BoardFeatureD06.c and OemMiscLibD06.c c file, use for several modules like PciHostBridgeLib and Smbios. Enlarge macro PCIEDEVICE_REPORT_MAX for D06. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang Reviewed-by: Leif Lindholm --- Platform/Hisilicon/D06/D06.dsc | 1 + Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.inf | 46 +++ Silicon/Hisilicon/Include/Library/OemMiscLib.h | 6 +- Platform/Hisilicon/D06/Library/OemMiscLibD06/BoardFeatureD06.c | 432 ++++++++++++++++++++ Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.c | 119 ++++++ Platform/Hisilicon/D06/Library/OemMiscLibD06/BoardFeatureD06Strings.uni | 66 +++ 6 files changed, 669 insertions(+), 1 deletion(-) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index 244960c6b0..bfae31e512 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -65,6 +65,7 @@ TimeBaseLib|EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.inf RealTimeClockLib|Silicon/Hisilicon/Library/M41T83RealTimeClockLib/M41T83RealTimeClockLib.inf + OemMiscLib|Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.inf CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf GenericBdsLib|IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf diff --git a/Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.inf b/Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.inf new file mode 100644 index 0000000000..78703663b8 --- /dev/null +++ b/Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.inf @@ -0,0 +1,46 @@ +#/** @file +# +# Copyright (c) 2018, Hisilicon Limited. All rights reserved. +# Copyright (c) 2018, Linaro Limited. All rights reserved. +# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +#**/ + +[Defines] + INF_VERSION = 0x0001001A + BASE_NAME = OemMiscLib + FILE_GUID = 3002911C-C160-4C46-93BB-782846673EEA + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = OemMiscLib + +[Sources.common] + BoardFeatureD06.c + BoardFeatureD06Strings.uni + OemMiscLibD06.c + +[Packages] + ArmPkg/ArmPkg.dec + MdeModulePkg/MdeModulePkg.dec + MdePkg/MdePkg.dec + Silicon/Hisilicon/HisiPkg.dec + +[LibraryClasses] + PcdLib + TimerLib + +[Ppis] + gEfiPeiReadOnlyVariable2PpiGuid ## SOMETIMES_CONSUMES + +[Pcd] + gArmTokenSpaceGuid.PcdArmArchTimerFreqInHz + gHisiTokenSpaceGuid.PcdIsMPBoot + gHisiTokenSpaceGuid.PcdSocketMask + gHisiTokenSpaceGuid.PcdTrustedFirmwareEnable diff --git a/Silicon/Hisilicon/Include/Library/OemMiscLib.h b/Silicon/Hisilicon/Include/Library/OemMiscLib.h index 87cb498dd7..efecb9aa77 100644 --- a/Silicon/Hisilicon/Include/Library/OemMiscLib.h +++ b/Silicon/Hisilicon/Include/Library/OemMiscLib.h @@ -22,7 +22,11 @@ #include #include -#define PCIEDEVICE_REPORT_MAX 4 +#define PCIEDEVICE_REPORT_MAX 8 +#define MAX_PROCESSOR_SOCKETS MAX_SOCKET +#define MAX_MEMORY_CHANNELS MAX_CHANNEL +#define MAX_DIMM_PER_CHANNEL MAX_DIMM + typedef struct _REPORT_PCIEDIDVID2BMC{ UINTN Bus; UINTN Device; diff --git a/Platform/Hisilicon/D06/Library/OemMiscLibD06/BoardFeatureD06.c b/Platform/Hisilicon/D06/Library/OemMiscLibD06/BoardFeatureD06.c new file mode 100644 index 0000000000..7e3f2e2a0e --- /dev/null +++ b/Platform/Hisilicon/D06/Library/OemMiscLibD06/BoardFeatureD06.c @@ -0,0 +1,432 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +I2C_DEVICE gRtcDevice = { + .Socket = 0, + .Port = 5, + .DeviceType = DEVICE_TYPE_SPD, + .SlaveDeviceAddress = 0x68 +}; + +SERDES_POLARITY_INVERT gSerdesPolarityTxDesc[] = +{ + {SERDES_INVALID_MACRO_ID, SERDES_INVALID_LANE_NUM} +}; + +SERDES_POLARITY_INVERT gSerdesPolarityRxDesc[] = +{ + {SERDES_INVALID_MACRO_ID, SERDES_INVALID_LANE_NUM} +}; + +SERDES_PARAM gSerdesParamNA = { + .Hilink0Mode = EmHilink0Hccs1X8Width16, + .Hilink1Mode = EmHilink1Hccs0X8Width16, + .Hilink2Mode = EmHilink2Pcie2X8, + .Hilink3Mode = 0x0, + .Hilink4Mode = 0xF, + .Hilink5Mode = EmHilink5Sas1X4, + .Hilink6Mode = 0x0, + .UseSsc = 0, +}; + +SERDES_PARAM gSerdesParamNB = { + .Hilink0Mode = EmHilink0Pcie1X8, + .Hilink1Mode = EmHilink1Pcie0X8, + .Hilink2Mode = EmHilink2Sas0X8, + .Hilink3Mode = 0x0, + .Hilink4Mode = 0xF, + .Hilink5Mode = EmHilink5Pcie2X2Pcie3X2, + .Hilink6Mode = 0xF, + .UseSsc = 0, +}; + +SERDES_PARAM gSerdesParamS1NA = { + .Hilink0Mode = EmHilink0Hccs1X8Width16, + .Hilink1Mode = EmHilink1Hccs0X8Width16, + .Hilink2Mode = EmHilink2Pcie2X8, + .Hilink3Mode = 0x0, + .Hilink4Mode = 0xF, + .Hilink5Mode = EmHilink5Sas1X4, + .Hilink6Mode = 0x0, + .UseSsc = 0, +}; + +SERDES_PARAM gSerdesParamS1NB = { + .Hilink0Mode = EmHilink0Pcie1X8, + .Hilink1Mode = EmHilink1Pcie0X8, + .Hilink2Mode = EmHilink2Sas0X8, + .Hilink3Mode = 0x0, + .Hilink4Mode = 0xF, + .Hilink5Mode = EmHilink5Pcie2X2Pcie3X2, + .Hilink6Mode = 0xF, + .UseSsc = 0, +}; + + +EFI_STATUS +OemGetSerdesParam ( + OUT SERDES_PARAM *ParamA, + OUT SERDES_PARAM *ParamB, + IN UINT32 SocketId + ) +{ + if (NULL == ParamA) { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Param == NULL!\n", __FUNCTION__, __LINE__)); + return EFI_INVALID_PARAMETER; + } if (NULL == ParamB) { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Param == NULL!\n", __FUNCTION__, __LINE__)); + return EFI_INVALID_PARAMETER; + } + + if (0 == SocketId) { + (VOID) CopyMem (ParamA, &gSerdesParamNA, sizeof (*ParamA)); + (VOID) CopyMem (ParamB, &gSerdesParamNB, sizeof (*ParamB)); + } else { + (VOID) CopyMem (ParamA, &gSerdesParamS1NA, sizeof (*ParamA)); + (VOID) CopyMem (ParamB, &gSerdesParamS1NB, sizeof (*ParamB)); + } + + return EFI_SUCCESS; +} + +VOID +OemPcieResetAndOffReset ( + VOID + ) +{ + return; +} + +SMBIOS_TABLE_TYPE9 gPcieSlotInfo[] = { + // PCIe0 Slot 1 + { + { // Hdr + EFI_SMBIOS_TYPE_SYSTEM_SLOTS, // Type, + 0, // Length, + 0 // Handle + }, + 1, // SlotDesignation + SlotTypePciExpressX16, // SlotType + SlotDataBusWidth16X, // SlotDataBusWidth + SlotUsageAvailable, // SlotUsage + SlotLengthOther, // SlotLength + 0x0001, // SlotId + { // SlotCharacteristics1 + 0, // CharacteristicsUnknown :1; + 0, // Provides50Volts :1; + 0, // Provides33Volts :1; + 0, // SharedSlot :1; + 0, // PcCard16Supported :1; + 0, // CardBusSupported :1; + 0, // ZoomVideoSupported :1; + 0 // ModemRingResumeSupported:1; + }, + { // SlotCharacteristics2 + 0, // PmeSignalSupported :1; + 0, // HotPlugDevicesSupported :1; + 0, // SmbusSignalSupported :1; + 0 // Reserved :5; + }, + 0x00, // SegmentGroupNum + 0x00, // BusNum + 0 // DevFuncNum + }, + { + { // Hdr + EFI_SMBIOS_TYPE_SYSTEM_SLOTS, // Type, + 0, // Length, + 0 // Handle + }, + 1, // SlotDesignation + SlotTypePciExpressX8, // SlotType + SlotDataBusWidth8X, // SlotDataBusWidth + SlotUsageAvailable, // SlotUsage + SlotLengthOther, // SlotLength + 0x0002, // SlotId + { // SlotCharacteristics1 + 0, // CharacteristicsUnknown :1; + 0, // Provides50Volts :1; + 0, // Provides33Volts :1; + 0, // SharedSlot :1; + 0, // PcCard16Supported :1; + 0, // CardBusSupported :1; + 0, // ZoomVideoSupported :1; + 0 // ModemRingResumeSupported:1; + }, + { // SlotCharacteristics2 + 0, // PmeSignalSupported :1; + 0, // HotPlugDevicesSupported :1; + 0, // SmbusSignalSupported :1; + 0 // Reserved :5; + }, + 0x00, // SegmentGroupNum + 0x00, // BusNum + 0 // DevFuncNum + }, + { + { // Hdr + EFI_SMBIOS_TYPE_SYSTEM_SLOTS, // Type, + 0, // Length, + 0 // Handle + }, + 1, // SlotDesignation + SlotTypePciExpressX8, // SlotType + SlotDataBusWidth8X, // SlotDataBusWidth + SlotUsageAvailable, // SlotUsage + SlotLengthOther, // SlotLength + 0x0003, // SlotId + { // SlotCharacteristics1 + 0, // CharacteristicsUnknown :1; + 0, // Provides50Volts :1; + 0, // Provides33Volts :1; + 0, // SharedSlot :1; + 0, // PcCard16Supported :1; + 0, // CardBusSupported :1; + 0, // ZoomVideoSupported :1; + 0 // ModemRingResumeSupported:1; + }, + { // SlotCharacteristics2 + 0, // PmeSignalSupported :1; + 0, // HotPlugDevicesSupported :1; + 0, // SmbusSignalSupported :1; + 0 // Reserved :5; + }, + 0x00, // SegmentGroupNum + 0x00, // BusNum + 0 // DevFuncNum + }, + + + { + { // Hdr + EFI_SMBIOS_TYPE_SYSTEM_SLOTS, // Type, + 0, // Length, + 0 // Handle + }, + 1, // SlotDesignation + SlotTypePciExpressX8, // SlotType + SlotDataBusWidth8X, // SlotDataBusWidth + SlotUsageAvailable, // SlotUsage + SlotLengthOther, // SlotLength + 0x0004, // SlotId + { // SlotCharacteristics1 + 0, // CharacteristicsUnknown :1; + 0, // Provides50Volts :1; + 0, // Provides33Volts :1; + 0, // SharedSlot :1; + 0, // PcCard16Supported :1; + 0, // CardBusSupported :1; + 0, // ZoomVideoSupported :1; + 0 // ModemRingResumeSupported:1; + }, + { // SlotCharacteristics2 + 0, // PmeSignalSupported :1; + 0, // HotPlugDevicesSupported :1; + 0, // SmbusSignalSupported :1; + 0 // Reserved :5; + }, + 0x00, // SegmentGroupNum + 0x00, // BusNum + 0 // DevFuncNum + }, + + { + { // Hdr + EFI_SMBIOS_TYPE_SYSTEM_SLOTS, // Type, + 0, // Length, + 0 // Handle + }, + 1, // SlotDesignation + SlotTypePciExpressX16, // SlotType + SlotDataBusWidth16X, // SlotDataBusWidth + SlotUsageAvailable, // SlotUsage + SlotLengthOther, // SlotLength + 0x0005, // SlotId + { // SlotCharacteristics1 + 0, // CharacteristicsUnknown :1; + 0, // Provides50Volts :1; + 0, // Provides33Volts :1; + 0, // SharedSlot :1; + 0, // PcCard16Supported :1; + 0, // CardBusSupported :1; + 0, // ZoomVideoSupported :1; + 0 // ModemRingResumeSupported:1; + }, + { // SlotCharacteristics2 + 0, // PmeSignalSupported :1; + 0, // HotPlugDevicesSupported :1; + 0, // SmbusSignalSupported :1; + 0 // Reserved :5; + }, + 0x00, // SegmentGroupNum + 0x00, // BusNum + 0 // DevFuncNum + }, + { + { // Hdr + EFI_SMBIOS_TYPE_SYSTEM_SLOTS, // Type, + 0, // Length, + 0 // Handle + }, + 1, // SlotDesignation + SlotTypePciExpressX8, // SlotType + SlotDataBusWidth8X, // SlotDataBusWidth + SlotUsageAvailable, // SlotUsage + SlotLengthOther, // SlotLength + 0x0006, // SlotId + { // SlotCharacteristics1 + 0, // CharacteristicsUnknown :1; + 0, // Provides50Volts :1; + 0, // Provides33Volts :1; + 0, // SharedSlot :1; + 0, // PcCard16Supported :1; + 0, // CardBusSupported :1; + 0, // ZoomVideoSupported :1; + 0 // ModemRingResumeSupported:1; + }, + { // SlotCharacteristics2 + 0, // PmeSignalSupported :1; + 0, // HotPlugDevicesSupported :1; + 0, // SmbusSignalSupported :1; + 0 // Reserved :5; + }, + 0x00, // SegmentGroupNum + 0x00, // BusNum + 0 // DevFuncNum + }, + { + { // Hdr + EFI_SMBIOS_TYPE_SYSTEM_SLOTS, // Type, + 0, // Length, + 0 // Handle + }, + 1, // SlotDesignation + SlotTypePciExpressX8, // SlotType + SlotDataBusWidth8X, // SlotDataBusWidth + SlotUsageAvailable, // SlotUsage + SlotLengthOther, // SlotLength + 0x0007, // SlotId + { // SlotCharacteristics1 + 0, // CharacteristicsUnknown :1; + 0, // Provides50Volts :1; + 0, // Provides33Volts :1; + 0, // SharedSlot :1; + 0, // PcCard16Supported :1; + 0, // CardBusSupported :1; + 0, // ZoomVideoSupported :1; + 0 // ModemRingResumeSupported:1; + }, + { // SlotCharacteristics2 + 0, // PmeSignalSupported :1; + 0, // HotPlugDevicesSupported :1; + 0, // SmbusSignalSupported :1; + 0 // Reserved :5; + }, + 0x00, // SegmentGroupNum + 0x00, // BusNum + 0 // DevFuncNum + }, + { + { // Hdr + EFI_SMBIOS_TYPE_SYSTEM_SLOTS, // Type, + 0, // Length, + 0 // Handle + }, + 1, // SlotDesignation + SlotTypePciExpressX8, // SlotType + SlotDataBusWidth8X, // SlotDataBusWidth + SlotUsageAvailable, // SlotUsage + SlotLengthOther, // SlotLength + 0x0008, // SlotId + { // SlotCharacteristics1 + 0, // CharacteristicsUnknown :1; + 0, // Provides50Volts :1; + 0, // Provides33Volts :1; + 0, // SharedSlot :1; + 0, // PcCard16Supported :1; + 0, // CardBusSupported :1; + 0, // ZoomVideoSupported :1; + 0 // ModemRingResumeSupported:1; + }, + { // SlotCharacteristics2 + 0, // PmeSignalSupported :1; + 0, // HotPlugDevicesSupported :1; + 0, // SmbusSignalSupported :1; + 0 // Reserved :5; + }, + 0x00, // SegmentGroupNum + 0x00, // BusNum + 0 // DevFuncNum + }, + + }; + +UINT8 +OemGetPcieSlotNumber ( + VOID + ) +{ + return sizeof (gPcieSlotInfo) / sizeof (SMBIOS_TABLE_TYPE9); +} + +EFI_STRING_ID gDimmToDevLocator[MAX_SOCKET][MAX_CHANNEL][MAX_DIMM] = { + {{STRING_TOKEN(STR_LEMON_C10_DIMM_000), STRING_TOKEN(STR_LEMON_C10_DIMM_001)}, + {STRING_TOKEN(STR_LEMON_C10_DIMM_010), STRING_TOKEN(STR_LEMON_C10_DIMM_011)}, + {STRING_TOKEN(STR_LEMON_C10_DIMM_020), STRING_TOKEN(STR_LEMON_C10_DIMM_021)}, + {STRING_TOKEN(STR_LEMON_C10_DIMM_030), STRING_TOKEN(STR_LEMON_C10_DIMM_031)}, + {STRING_TOKEN(STR_LEMON_C10_DIMM_040), STRING_TOKEN(STR_LEMON_C10_DIMM_041)}, + {STRING_TOKEN(STR_LEMON_C10_DIMM_050), STRING_TOKEN(STR_LEMON_C10_DIMM_051)}, + {STRING_TOKEN(STR_LEMON_C10_DIMM_060), STRING_TOKEN(STR_LEMON_C10_DIMM_061)}, + {STRING_TOKEN(STR_LEMON_C10_DIMM_070), STRING_TOKEN(STR_LEMON_C10_DIMM_071)}}, + + {{STRING_TOKEN(STR_LEMON_C10_DIMM_100), STRING_TOKEN(STR_LEMON_C10_DIMM_101)}, + {STRING_TOKEN(STR_LEMON_C10_DIMM_110), STRING_TOKEN(STR_LEMON_C10_DIMM_111)}, + {STRING_TOKEN(STR_LEMON_C10_DIMM_120), STRING_TOKEN(STR_LEMON_C10_DIMM_121)}, + {STRING_TOKEN(STR_LEMON_C10_DIMM_130), STRING_TOKEN(STR_LEMON_C10_DIMM_131)}, + {STRING_TOKEN(STR_LEMON_C10_DIMM_140), STRING_TOKEN(STR_LEMON_C10_DIMM_141)}, + {STRING_TOKEN(STR_LEMON_C10_DIMM_150), STRING_TOKEN(STR_LEMON_C10_DIMM_151)}, + {STRING_TOKEN(STR_LEMON_C10_DIMM_160), STRING_TOKEN(STR_LEMON_C10_DIMM_161)}, + {STRING_TOKEN(STR_LEMON_C10_DIMM_170), STRING_TOKEN(STR_LEMON_C10_DIMM_171)}} +}; + +EFI_HII_HANDLE +EFIAPI +OemGetPackages ( + VOID + ) +{ + return HiiAddPackages ( + &gEfiCallerIdGuid, + NULL, + OemMiscLibStrings, + NULL, + NULL + ); +} + + diff --git a/Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.c b/Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.c new file mode 100644 index 0000000000..95521752ff --- /dev/null +++ b/Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.c @@ -0,0 +1,119 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +REPORT_PCIEDIDVID2BMC PcieDeviceToReport[PCIEDEVICE_REPORT_MAX] = { + {67,0,0,0}, + {225,0,0,3}, + {0xFFFF,0xFFFF,0xFFFF,0xFFFF}, + {0xFFFF,0xFFFF,0xFFFF,0xFFFF} +}; + +// Right now we only support 1P +BOOLEAN +OemIsSocketPresent ( + UINTN Socket + ) +{ + UINT32 SocketMask = PcdGet32 (PcdSocketMask); + return (BOOLEAN)((SocketMask & (1 << Socket)) ? TRUE : FALSE); +} + + +UINTN +OemGetSocketNumber ( + VOID + ) +{ + if(!OemIsMpBoot ()) { + return 1; + } + + return MAX_PROCESSOR_SOCKETS; +} + + +UINTN +OemGetDdrChannel ( + VOID + ) +{ + return MAX_MEMORY_CHANNELS; +} + + +UINTN +OemGetDimmSlot ( + UINTN Socket, + UINTN Channel + ) +{ + return MAX_DIMM_PER_CHANNEL; +} + + +BOOLEAN +OemIsMpBoot ( + VOID + ) +{ + return PcdGet32 (PcdIsMPBoot); +} + +VOID +OemLpcInit ( + VOID + ) +{ + LpcInit (); + return; +} + +UINT32 +OemIsWarmBoot ( + VOID + ) +{ + return 0; +} + +VOID +OemBiosSwitch ( + UINT32 Master + ) +{ + (VOID)Master; + return; +} + +BOOLEAN +OemIsNeedDisableExpanderBuffer ( + VOID + ) +{ + return TRUE; +} diff --git a/Platform/Hisilicon/D06/Library/OemMiscLibD06/BoardFeatureD06Strings.uni b/Platform/Hisilicon/D06/Library/OemMiscLibD06/BoardFeatureD06Strings.uni new file mode 100644 index 0000000000..e3fa5fa5ab --- /dev/null +++ b/Platform/Hisilicon/D06/Library/OemMiscLibD06/BoardFeatureD06Strings.uni @@ -0,0 +1,66 @@ +// *++ +// +// Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
+* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +// +// This program and the accompanying materials +// are licensed and made available under the terms and conditions of the BSD License +// which accompanies this distribution. The full text of the license may be found at +// http://opensource.org/licenses/bsd-license.php +// +// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +// +// --*/ + +/=# + +#langdef en-US "English" + +// +// Begin English Language Strings +// +#string STR_MEMORY_SUBCLASS_UNKNOWN #language en-US "Unknown" + +// +// DIMM Device Locator strings + +// D06 +#string STR_LEMON_C10_DIMM_000 #language en-US "J5" +#string STR_LEMON_C10_DIMM_001 #language en-US "J6" +#string STR_LEMON_C10_DIMM_010 #language en-US "J7" +#string STR_LEMON_C10_DIMM_011 #language en-US "J8" +#string STR_LEMON_C10_DIMM_020 #language en-US "J9" +#string STR_LEMON_C10_DIMM_021 #language en-US "J10" +#string STR_LEMON_C10_DIMM_030 #language en-US "J11" +#string STR_LEMON_C10_DIMM_031 #language en-US "J12" +#string STR_LEMON_C10_DIMM_040 #language en-US "J13" +#string STR_LEMON_C10_DIMM_041 #language en-US "J14" +#string STR_LEMON_C10_DIMM_050 #language en-US "J15" +#string STR_LEMON_C10_DIMM_051 #language en-US "J16" +#string STR_LEMON_C10_DIMM_060 #language en-US "J17" +#string STR_LEMON_C10_DIMM_061 #language en-US "J18" +#string STR_LEMON_C10_DIMM_070 #language en-US "J19" +#string STR_LEMON_C10_DIMM_071 #language en-US "J20" +#string STR_LEMON_C10_DIMM_100 #language en-US "J21" +#string STR_LEMON_C10_DIMM_101 #language en-US "J22" +#string STR_LEMON_C10_DIMM_110 #language en-US "J23" +#string STR_LEMON_C10_DIMM_111 #language en-US "J24" +#string STR_LEMON_C10_DIMM_120 #language en-US "J25" +#string STR_LEMON_C10_DIMM_121 #language en-US "J26" +#string STR_LEMON_C10_DIMM_130 #language en-US "J27" +#string STR_LEMON_C10_DIMM_131 #language en-US "J28" +#string STR_LEMON_C10_DIMM_140 #language en-US "J29" +#string STR_LEMON_C10_DIMM_141 #language en-US "J30" +#string STR_LEMON_C10_DIMM_150 #language en-US "J31" +#string STR_LEMON_C10_DIMM_151 #language en-US "J32" +#string STR_LEMON_C10_DIMM_160 #language en-US "J33" +#string STR_LEMON_C10_DIMM_161 #language en-US "J34" +#string STR_LEMON_C10_DIMM_170 #language en-US "J35" +#string STR_LEMON_C10_DIMM_171 #language en-US "J36" + +// +// End English Language Strings +// + From patchwork Fri Aug 31 13:26:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145616 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp783529ljw; Fri, 31 Aug 2018 06:27:49 -0700 (PDT) X-Google-Smtp-Source: ANB0VdZIOKyMoOeUYt2zRP9b9r9ymXjtn43xo77QVBtzT7/RYCRqrzDQenVA8A2AFp81xksGE/TE X-Received: by 2002:a62:9683:: with SMTP id s3-v6mr15906886pfk.191.1535722069129; Fri, 31 Aug 2018 06:27:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722069; cv=none; d=google.com; s=arc-20160816; b=X9BYQ+121KaQnQRpkRY9ug5Ad/8Z00+3XOS94IhHHR/uoK9zjPK09nfPRK2AAYkPMH 99E0lU1NKDk0LGqSl2fc0/LfA52ZPRa5q2lgZMsRVQqc9L7ip6kw60TWt2ekGPAHLNO3 0M69+ohkwPzbih0qVlwBz9MTh7YsFMuur9o7PG6fl8nOzeGobQt+iUDCHFuzV8MasT+x 4Uc7gRTMzDnkT4CitEkn20YA6rYmE+X38MfUzGy5v/G0+nrS5Xi+PYpnVyYh/wUWFGUJ aPjmMSIT/uZHcwe+8JElsy3qo+fonlZRQbDclNBLGpTORFYuv3j+mCSbGQDYEpZySmny y2Kw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=7gWhFAl22VZ8Sudy9u6DJiQJWExbdb14V2mBcaDUN14=; b=zUVesV9ynVDS7D1dbwdCZx8i+/1q2czoKEU8GHGDyYBK27NOn3qoIttdXtvgwpmktq NUV3a9/LGNQ3jIhTJ8d+8OxxAQ1Cr+Z1s1NgfzhuGmi5jUN6bClRzHE5S1OzHBUSLWHN pR5+JfKuhJ+rkleR+sb2x6KxTu8luNqsba4F1mnJltYWCi/rFHYF1VU/OdVncm7x0lxs u4Esc+k0Xdi8b66fByUAcC28ozGqw7cUJNSz8Ce4GjcRt5/s6f3NOOpHPA1bfERGL/oS g0SUyv1VSCB7kp9cU9TYz5034d9+bKkVF/+WBa2L3BsykGrIcLHxunL9Nnw1poub0tAv p4rg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=LJ8I44UI; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id w14-v6si9257010plp.183.2018.08.31.06.27.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:27:49 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=LJ8I44UI; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 7DFE62110BD6F; Fri, 31 Aug 2018 06:27:47 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::543; helo=mail-pg1-x543.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pg1-x543.google.com (mail-pg1-x543.google.com [IPv6:2607:f8b0:4864:20::543]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id DDFAE2110BD61 for ; Fri, 31 Aug 2018 06:27:46 -0700 (PDT) Received: by mail-pg1-x543.google.com with SMTP id y4-v6so5457943pgp.9 for ; Fri, 31 Aug 2018 06:27:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=rA3TDFG2F9VpDijfuWE8KZ9/mzlQxMGJ2+/FO5Yf+8I=; b=LJ8I44UIZVOmx60nLCTwwPX1/sOd6vfLVH0pnP3WkzWucDSoxr6PwRyb6HXlhRg36T hWZCJQ2uQTLAk+igRz67vUWBq6amih2G+66mpcOanDszz/g27/IpXPp0v79/YI562gPD kVaGhQcBwzhlMnSN/ZPD/MhbPad87Cxl2qNf4= 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=rA3TDFG2F9VpDijfuWE8KZ9/mzlQxMGJ2+/FO5Yf+8I=; b=faRUayCXBSX8qQ0T5622Pz4R1gWaW0Y5NLLADHthPcsopT81wZzmoizhVGPOVafa9E bOccVOqps8vVVLPcx20SZ5nAKQViRZBn94Bly7KZkPDfes9ISt9VtY7k8TX5jq1H0MVe bervIKwkIhUOqwBKepObiXHFcPSkcksNQGv8BMsUI7882lOtNbCOz+jGKJdSVUAprHxv 2Er0JmC65qdLoPmAL7hswUgcHrExawkXTUvEOc1lF4CzK0UipNPxtczNiLjVbl82k4Y8 IuFH6jd460kEP9IUWCZyJJN5ipFfPD+srF9oNsDYBezFDShU/eSWDmOijTreY/OHSh83 dkjQ== X-Gm-Message-State: APzg51CKAhnkToG9ekHgjpsboXotyZyeSoqMAWQ2ydm8dNkVCQC+7ysb 4KBwlz8ny7AVc4+5DUXwrYnxyA== X-Received: by 2002:a62:20d8:: with SMTP id m85-v6mr15875833pfj.74.1535722066560; Fri, 31 Aug 2018 06:27:46 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.27.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:27:45 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:26:49 +0800 Message-Id: <20180831132710.23055-8-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 07/28] Platform/Hisilicon/D06: Add edk2-non-osi components for D06 X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang Reviewed-by: Leif Lindholm --- Platform/Hisilicon/D06/D06.dsc | 7 +++++++ Platform/Hisilicon/D06/D06.fdf | 17 +++++++++++++++++ 2 files changed, 24 insertions(+) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index bfae31e512..5291047ca4 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -40,6 +40,8 @@ TimerLib|ArmPkg/Library/ArmArchTimerLib/ArmArchTimerLib.inf + IpmiCmdLib|Silicon/Hisilicon/Library/IpmiCmdLib/IpmiCmdLib.inf + NetLib|MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf DpcLib|MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf @@ -63,9 +65,13 @@ CpldIoLib|Silicon/Hisilicon/Library/CpldIoLib/CpldIoLib.inf + SerdesLib|Silicon/Hisilicon/Hi1620/Library/Hi1620Serdes/Hi1620SerdesLib.inf + TimeBaseLib|EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.inf RealTimeClockLib|Silicon/Hisilicon/Library/M41T83RealTimeClockLib/M41T83RealTimeClockLib.inf OemMiscLib|Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.inf + OemAddressMapLib|Platform/Hisilicon/D06/Library/OemAddressMapD06/OemAddressMapD06.inf + PlatformSysCtrlLib|Silicon/Hisilicon/Hi1620/Library/PlatformSysCtrlLibHi1620/PlatformSysCtrlLibHi1620.inf CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf GenericBdsLib|IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf @@ -79,6 +85,7 @@ # USB Requirements UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf + LpcLib|Silicon/Hisilicon/Hi1620/Library/LpcLibHi1620/LpcLib.inf SerialPortLib|ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.inf !if $(SECURE_BOOT_ENABLE) == TRUE FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf diff --git a/Platform/Hisilicon/D06/D06.fdf b/Platform/Hisilicon/D06/D06.fdf index 31a07e2b1d..9822ce3f77 100644 --- a/Platform/Hisilicon/D06/D06.fdf +++ b/Platform/Hisilicon/D06/D06.fdf @@ -56,6 +56,7 @@ NumBlocks = 0x40 0x00000000|0x00100000 gArmTokenSpaceGuid.PcdSecureFvBaseAddress|gArmTokenSpaceGuid.PcdSecureFvSize +FILE = Platform/Hisilicon/D06/Sec/FVMAIN_SEC.Fv 0x00100000|0x00280000 gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize @@ -163,6 +164,7 @@ READ_LOCK_STATUS = TRUE INF MdeModulePkg/Core/Dxe/DxeMain.inf INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf + INF Platform/Hisilicon/D06/Drivers/IoInitDxe/IoInitDxe.inf # # PI DXE Drivers producing Architectural Protocols (EFI Services) # @@ -170,6 +172,7 @@ READ_LOCK_STATUS = TRUE INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf + INF Platform/Hisilicon/D06/Drivers/SFC/SfcDxeDriver.inf INF Silicon/Hisilicon/Drivers/FlashFvbDxe/FlashFvbDxe.inf @@ -224,7 +227,12 @@ READ_LOCK_STATUS = TRUE INF MdeModulePkg/Bus/Usb/UsbMouseDxe/UsbMouseDxe.inf INF MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf + INF Platform/Hisilicon/D06/Drivers/Ipmi/IpmiInterfaceDxe/IpmiInterfaceDxe.inf + INF Platform/Hisilicon/D06/Drivers/GetInfoFromBmc/GetInfoFromBmc.inf INF MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf + INF Platform/Hisilicon/D06/Drivers/TransferSmbiosInfo/TransSmbiosInfo.inf + INF Platform/Hisilicon/D06/Drivers/IpmiMiscOpDxe/IpmiMiscOpDxe.inf + INF Platform/Hisilicon/D06/Drivers/IpmiWatchdogDxe/IpmiWatchdogDxe.inf # #ACPI @@ -237,6 +245,7 @@ READ_LOCK_STATUS = TRUE # #Network # + INF Platform/Hisilicon/D06/Drivers/Net/SnpHi1620NewDxe/SnpDxe.inf INF MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf INF MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf @@ -273,8 +282,14 @@ READ_LOCK_STATUS = TRUE INF ArmPkg/Drivers/ArmPciCpuIo2Dxe/ArmPciCpuIo2Dxe.inf INF MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf INF MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf + INF Platform/Hisilicon/D06/Drivers/PcieRasInitDxe/PcieRasInitDxe.inf + INF Platform/Hisilicon/D06/Drivers/RasInitDxe/RasInitDxe.inf + # VGA Driver + # + INF Platform/Hisilicon/D06/Drivers/Sm750Dxe/UefiSmi.inf INF MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf + INF Platform/Hisilicon/D06/Drivers/Sas/SasDxeDriver.inf INF MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf INF MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf INF MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf @@ -324,6 +339,8 @@ READ_LOCK_STATUS = TRUE INF Silicon/Hisilicon/Drivers/VersionInfoPeim/VersionInfoPeim.inf + INF Platform/Hisilicon/D06/Drivers/Ipmi/IpmiInterfacePei/IpmiInterfacePei.inf + INF Platform/Hisilicon/D06/MemoryInitPei/MemoryInitPeim.inf INF ArmPkg/Drivers/CpuPei/CpuPei.inf INF MdeModulePkg/Universal/PCD/Pei/Pcd.inf INF IntelFrameworkModulePkg/Universal/StatusCode/Pei/StatusCodePei.inf From patchwork Fri Aug 31 13:26:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145617 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp783593ljw; Fri, 31 Aug 2018 06:27:52 -0700 (PDT) X-Google-Smtp-Source: ANB0VdaPLfXYg96t5surUwWfNSah2HjDGLnl5nCteMCs0+TZiXRZhzmCDRdpcZUarWCwL4s8cJ4y X-Received: by 2002:a62:89d8:: with SMTP id n85-v6mr15898858pfk.83.1535722072679; Fri, 31 Aug 2018 06:27:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722072; cv=none; d=google.com; s=arc-20160816; b=K4QFNEweoOs8bVvqNv+uNrF5wmIy4EhHXGzgv170UW6AxehrD/5jRUU65DWbH/5Nvb vf9JOK5FDk0gM5cS7qqFgPNeWyu7XUi/VQFu2Dnay2INNj1eODT5NitKfgurhjFyGnvH TWzkmfKnq7SguO7eKDIz1sp0cla/1G1OXQT5LK/vnu28e2wgm4GlGfnnKHS8t/oDiyuo pKY9c7gqvLMCqES4mDy7ehnqpVe64jd/QWAzoHlFPN+q6rBgUkU3JKWyNRCp5mxow9JS gcexnXSwfxGscx83dj/bIlLmwCN44TtOKxq3FnfVULQgIGdowbSdtE2iNq+FQkofFANi /ZLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=RsllaJNllmjTrA3Thkc9UqET5orK7Gm834EqUi3hZaE=; b=TgJO86poO+euUTyUX7llTCDA5g+nR+NikhvbRdXMGuAqtzr1+cc/GEpqt0eWsAzFJr 0SQNA0vnm0bugNBN3DNrcH6aW0feZ4hwD/KPz11cAWC5yL2dx7uRdnOq66q9b29ZjXVS FMz4o7hn5ChFPF+DUhoEu3meA2/9pBGawdOH3pAPZUnJf4esODVAjtPl+qyPm9EmFXeO e+fZFfULKxjKklKN25SxnHNpcXWqqphZ0ghj1mguf7B5AN2qeaYIIpbODr+AKnbn+3hM q8V/xYuq5sa5yGZnPlpLnKrIXP7reM3peUe0/pehNDCI1W0sn1kRY/nwqJSbRcZXlRI6 p5wg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=DCzIoRdB; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id f67-v6si10009988pfa.73.2018.08.31.06.27.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:27:52 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=DCzIoRdB; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id A9A7F2110BD73; Fri, 31 Aug 2018 06:27:51 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::642; helo=mail-pl1-x642.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pl1-x642.google.com (mail-pl1-x642.google.com [IPv6:2607:f8b0:4864:20::642]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 559D72110BD6E for ; Fri, 31 Aug 2018 06:27:50 -0700 (PDT) Received: by mail-pl1-x642.google.com with SMTP id b12-v6so5480791plr.8 for ; Fri, 31 Aug 2018 06:27:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=gKDvpbxOA6PHzLoDVFuKBct53SUyAE5BavEzpnYm0I4=; b=DCzIoRdBJVq7bkKvoZRNqpOquvxHM3NgSHlMxGVSHyl9RIE5tXE+vkHCa+uyNEY1hc iEZ5H/PWaDy3I3V7puiGgQ6ve4KAUDpO+1AmLEg6sm8xW6lzp4cHCjte1OYETEgNkWqn cryeSkyTREv68298T+mWisL/EM8k//3et16/s= 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=gKDvpbxOA6PHzLoDVFuKBct53SUyAE5BavEzpnYm0I4=; b=tSyOz9qpRMkXYYGu4cQmoM6plFC6MmXjvaIb5yJtjlcq5VS+opdoZo4SpdkMbH4xWS 3WckdDF3lge/HFKfr6jVxwyW/xO4Zb2ezk9b64xk8060FC3L95JB4fxkDzpsLFHHHtIr PwPp5tLliDSlW0mz6tJezEpufbOjPK1dUGxGHWuAmRjJ87Y7ZHHXVChjMISDuUTQiGoc rKBgzLKyh6eJCCE1kGIBLy59yS32fpWFsoyBVLiDErekHihMpDJPw4VJFQmBWEemhLDv /I0RCeb0TljgSjHcJnm5PYFJirVuncGFHOkkB4ngkunPj+Pm5jJVgztJ5hE1O6zzoG84 vTbQ== X-Gm-Message-State: APzg51D8Xm+/B6sIqnmGlGh+MTwfmw184+UsFyWLFnTye8xzDaMtq5SD 8LK7XDzuXQmwHERe26MIRxEhAw== X-Received: by 2002:a17:902:46a4:: with SMTP id p33-v6mr15613076pld.205.1535722070044; Fri, 31 Aug 2018 06:27:50 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.27.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:27:49 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:26:50 +0800 Message-Id: <20180831132710.23055-9-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 08/28] Hisilicon/D06: Add some modules X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" These modules depend on some binary modules, like IpmiCmdLib, PlatformSysCtrlLib. So add these modules after adding binary components. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang --- Platform/Hisilicon/D06/D06.dsc | 13 +++++++++++++ Platform/Hisilicon/D06/D06.fdf | 6 ++++++ 2 files changed, 19 insertions(+) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index 5291047ca4..ac47b36cde 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -39,6 +39,7 @@ ArmPlatformLib|Silicon/Hisilicon/Library/ArmPlatformLibHisilicon/ArmPlatformLib.inf + I2CLib|Silicon/Hisilicon/Library/I2CLib/I2CLib.inf TimerLib|ArmPkg/Library/ArmArchTimerLib/ArmArchTimerLib.inf IpmiCmdLib|Silicon/Hisilicon/Library/IpmiCmdLib/IpmiCmdLib.inf @@ -75,10 +76,12 @@ CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf GenericBdsLib|IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf + BmcConfigBootLib|Silicon/Hisilicon/Library/BmcConfigBootLib/BmcConfigBootLib.inf UefiBootManagerLib|MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf SortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf + PlatformBootManagerLib|Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf @@ -98,6 +101,7 @@ [LibraryClasses.common.DXE_RUNTIME_DRIVER] + I2CLib|Silicon/Hisilicon/Library/I2CLib/I2CLibRuntime.inf SerialPortLib|ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.inf [BuildOptions] @@ -303,6 +307,10 @@ MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf + EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf { + + CpldIoLib|Silicon/Hisilicon/Library/CpldIoLib/CpldIoLibRuntime.inf + } EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf @@ -392,6 +400,10 @@ MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf + Silicon/Hisilicon/Drivers/Smbios/SmbiosMiscDxe/SmbiosMiscDxe.inf + Silicon/Hisilicon/Drivers/Smbios/MemorySubClassDxe/MemorySubClassDxe.inf + Silicon/Hisilicon/Drivers/Smbios/ProcessorSubClassDxe/ProcessorSubClassDxe.inf + Silicon/Hisilicon/Drivers/Smbios/AddSmbiosType9/AddSmbiosType9.inf #PCIe Support Silicon/Hisilicon/Drivers/PciPlatform/PciPlatform.inf @@ -413,6 +425,7 @@ MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf + MdeModulePkg/Universal/BdsDxe/BdsDxe.inf # # UEFI application (Shell Embedded Boot Loader) diff --git a/Platform/Hisilicon/D06/D06.fdf b/Platform/Hisilicon/D06/D06.fdf index 9822ce3f77..5d6168f717 100644 --- a/Platform/Hisilicon/D06/D06.fdf +++ b/Platform/Hisilicon/D06/D06.fdf @@ -187,6 +187,7 @@ READ_LOCK_STATUS = TRUE !endif INF MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf + INF EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf INF EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf INF MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf @@ -230,6 +231,10 @@ READ_LOCK_STATUS = TRUE INF Platform/Hisilicon/D06/Drivers/Ipmi/IpmiInterfaceDxe/IpmiInterfaceDxe.inf INF Platform/Hisilicon/D06/Drivers/GetInfoFromBmc/GetInfoFromBmc.inf INF MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf + INF Silicon/Hisilicon/Drivers/Smbios/SmbiosMiscDxe/SmbiosMiscDxe.inf + INF Silicon/Hisilicon/Drivers/Smbios/AddSmbiosType9/AddSmbiosType9.inf + INF Silicon/Hisilicon/Drivers/Smbios/MemorySubClassDxe/MemorySubClassDxe.inf + INF Silicon/Hisilicon/Drivers/Smbios/ProcessorSubClassDxe/ProcessorSubClassDxe.inf INF Platform/Hisilicon/D06/Drivers/TransferSmbiosInfo/TransSmbiosInfo.inf INF Platform/Hisilicon/D06/Drivers/IpmiMiscOpDxe/IpmiMiscOpDxe.inf INF Platform/Hisilicon/D06/Drivers/IpmiWatchdogDxe/IpmiWatchdogDxe.inf @@ -308,6 +313,7 @@ READ_LOCK_STATUS = TRUE INF MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf INF MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf INF MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf + INF MdeModulePkg/Universal/BdsDxe/BdsDxe.inf [FV.FVMAIN_COMPACT] FvAlignment = 16 From patchwork Fri Aug 31 13:26:51 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145618 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp783647ljw; Fri, 31 Aug 2018 06:27:56 -0700 (PDT) X-Google-Smtp-Source: ANB0VdZiq1myqLeNPEtatG0uUdq+aSo6go2s1VbyYamjhfUJ1aX4Jn9zOqN5R3aZ5BZ3xTYhHggP X-Received: by 2002:a17:902:9b92:: with SMTP id y18-v6mr15382887plp.239.1535722076452; Fri, 31 Aug 2018 06:27:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722076; cv=none; d=google.com; s=arc-20160816; b=E6NRgrQ0+j2vNISCeUvdZFjSPI0xUk8fd+CRIpAeqLGD3v8iZjVHWQFp+EJYmSgNGo WBMRQXflO3Z7jnUD3fQMzWC3/e/4YwfbxzEVllLz5yWnIfnlxfn8L7YPwi5bdvsTbHSN jOlEaoYpg4gecRY9chvUvb+SPqLXwZ/q0oUqf2ALInmVw7MT7F2lXE+vepQZ+DDIhiEt amovuRwH9F1UoIPga+LhPYVK8v8+WI9U1SzsE2Od3g14niWyB4XQtfhpvBa/OMRGc9Ar fwwXJg2puqTDJHG1zezYLSaGi8+0qbp/ZiHC7vNbIm9Urn3hB7+vJ19/ghBy/6vZKDmF XdIQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=zgSWjU+sa580WqZgaUtLU6m7aZN6jiqKKrE+VScoBik=; b=ch4eq8MGM3qSd4ZBvEbhz6AE8RzwYkttzey6M+j9Fts1SqyTvjQVBpg4qOwhS+m4Fx etRaF884vhTiKgk6PICg3FHe7BpIvgzMztvfEt0MhnRiMUrWVYIvTVuAm25wXD+5Uqqe udju1J7BtejfIyVDD2V92AbAueNjUUyux2uMsegGHrJwsBa5QsSN5rQVu4GiK8+Hu3Nm VKIUJZq5e7EBSyJIVXQHkkSNHAFor+GhsVKhwJmep1EZgUSVIaRHTj3hiqGCUqskepXV xwVA75rYk3jzrkjfhFlkyULe/ISCbaG4Mzi2gu3rEG4nv3JjPyKrRU0W1bLbmh3Ga8Yl b7FA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=cLyuETei; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id b28-v6si9703981pfe.265.2018.08.31.06.27.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:27:56 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=cLyuETei; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id D84812110BD76; Fri, 31 Aug 2018 06:27:55 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::42d; helo=mail-pf1-x42d.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pf1-x42d.google.com (mail-pf1-x42d.google.com [IPv6:2607:f8b0:4864:20::42d]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id EAE042110BD67 for ; Fri, 31 Aug 2018 06:27:53 -0700 (PDT) Received: by mail-pf1-x42d.google.com with SMTP id s13-v6so5532805pfi.7 for ; Fri, 31 Aug 2018 06:27:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=0teEMbCzhLMAr1wou3iQL2OjMuc+L8AAOt1C3OWdtkM=; b=cLyuETeiOPPT4x77KnQuqGx7n8bLNi3ccbu69GJMBjpLfAWXZU7+J5SxwFVoZpIqcZ iihZwfasYNSEWNcAWrqlI6PKK4FUqeSApFYG/6Cbld9fRuPwmxIO1e2Y+Dx51M3eExLj fLLxm3GF7R3w5j8yqP+dqtdTTT7G12ZvSbj+k= 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=0teEMbCzhLMAr1wou3iQL2OjMuc+L8AAOt1C3OWdtkM=; b=ZYqlXWE8FtHb8LooIDS2JWnzR1eVgX0N0k+yfTWG1F/ejkcAMUBvaPLgMh0N/Ow1ON US6GFYFIVWXHx0dX/Kan2BtGWZ7zaD9rAqS52uvRepyitBvT39N+IjodXoSXBEoqAkgo JvLcSn4rqlmLI+rpl8oUK2O7AfSyNe5zT0Kpc30wnRyRWXMevp9EMo14vBpp3AVE5ReX b2/JhONdlBp7O/9uc4ZEXlL158JejznyorS9sHfkNjfvbm8HRGWuqKBBoqem33++uXZQ nx6/fEHXb3MB6dPDsPBMR1ii4KxO6Oyw0KlwCu3AW5Ax+KnVP6HjryS3OWVmEogXpj1k hIHw== X-Gm-Message-State: APzg51Czk2IWHw/VwLA5+xxsbHIsSSJNgmehfTvGCOW0lCK7Obxok8A6 zMnAV5tlgLNrVVeddgCDgGDKWvzhwhU= X-Received: by 2002:a63:1823:: with SMTP id y35-v6mr14468923pgl.438.1535722073546; Fri, 31 Aug 2018 06:27:53 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.27.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:27:52 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:26:51 +0800 Message-Id: <20180831132710.23055-10-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 09/28] Silicon/Hisilicon/D06: Wait for all disk ready X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" This patch is relative to D06 SasDxe driver. The SasDxe set a variable to notice this libray. Here Wait for all disk ready for 15S at most. D06: For using straight-through hard disk backboard, some disk need 15 seconds to ready. Actually, wait less 15 seconds here(minus the time from end of SAS driver to here). For using expander backboard, wait less 6 seconds here(minus the time from end of SAS driver to here). D03/D05: As Sas driver don't install PLATFORM_SAS_NOTIFY Protocol, D03/D05 will skip waiting here. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang --- Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf | 3 ++ Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c | 37 ++++++++++++++++++++ 2 files changed, 40 insertions(+) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf index 7a53befc44..e9d649b0eb 100644 --- a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf +++ b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf @@ -36,6 +36,7 @@ [Packages] MdeModulePkg/MdeModulePkg.dec MdePkg/MdePkg.dec + Silicon/Hisilicon/HisiliconNonOsi.dec Silicon/Hisilicon/HisiPkg.dec [LibraryClasses] @@ -49,6 +50,7 @@ MemoryAllocationLib PcdLib PrintLib + TimerLib UefiBootManagerLib UefiBootServicesTableLib UefiLib @@ -72,3 +74,4 @@ gEfiGenericMemTestProtocolGuid gEfiLoadedImageProtocolGuid gEsrtManagementProtocolGuid + gPlatformSasNotifyProtocolGuid diff --git a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c index aa6db929ca..77295d0111 100644 --- a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c +++ b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -29,6 +30,7 @@ #include #include #include +#include #include #include @@ -554,6 +556,40 @@ PlatformBootManagerBeforeConsole ( PlatformRegisterOptionsAndKeys (); } +STATIC +VOID +WaitForDiskReady ( + VOID + ) +{ + EFI_STATUS Status; + UINT32 Index; + PLATFORM_SAS_NOTIFY *SasNotify; + + Status = gBS->LocateProtocol ( + &gPlatformSasNotifyProtocolGuid, + NULL, + (VOID **)&SasNotify); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_INFO, "Locate SasPlatformNotify:%r\n", Status)); + return; + } + + // Wait for 30 seconds at most. + for (Index = 0; Index < 30; Index++) { + Status = gBS->CheckEvent (SasNotify->WaitDiskEvent); + if (!EFI_ERROR (Status)) { + DEBUG ((DEBUG_INFO, "WaitDiskEvent is signaled.\n")); + EfiBootManagerConnectAll (); + break; + } + DEBUG ((DEBUG_ERROR, "%a", Index == 0 ? "Wait for disk." : ".")); + MicroSecondDelay (1000 * 1000); + } + + return; +} + /** Do the platform specific action after the console is ready Possible things that can be done in PlatformBootManagerAfterConsole: @@ -583,6 +619,7 @@ PlatformBootManagerAfterConsole ( // Connect the rest of the devices. // EfiBootManagerConnectAll (); + WaitForDiskReady (); // // Enumerate all possible boot options. From patchwork Fri Aug 31 13:26:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145619 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp783713ljw; Fri, 31 Aug 2018 06:28:00 -0700 (PDT) X-Google-Smtp-Source: ANB0VdaPl50MR4+P78/LY1xE0YLm3ly/fDkJuNYCR9CZI8hCB2CnMcpHTP3bTcxfSpPezMCQBokL X-Received: by 2002:a63:5fc8:: with SMTP id t191-v6mr14438798pgb.183.1535722080138; Fri, 31 Aug 2018 06:28:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722080; cv=none; d=google.com; s=arc-20160816; b=T05VHIS8SvGO342CK9w9eDHo1PTNmbAk0uQV3obLVgOKvTJayhkZCIOla2VcfjMnBo REGxU8UUzMqk/lRD8HxkL/L4tFN/unOANNWf3gqVs3vR+yoOroxHrvJuU/eNL7o2LFK6 ChgF8gzzwtr5Kxg29JHt6m+Rif3zOE0ADWiQVrYPDhFPez/hhgv0Xnpqaq/3qxqcS+Mk 5F+EnWRkq8XCDQanYir7PR5ceLgRv2mWdqUW0z0MRD7S9yQAOsFTOWJvpPcyFZCDy904 1fNZLvDmRzGqD4sQog7dbW5p3GisRHyhSKa5wSIQ24xsM2/nN0hmQ3hJLNi+XRWn0q+r Z0wg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=4z8MwRDiyPd0NC8OaYmBatcZLu/AAnYa/H6GNgEA3PE=; b=gLheq/YPknWy+2d90ZzlBDuFDxmoQ6WHBCq9oqGCW93h+67NxDq+QwHaBsGLq/EI5l WYcxmplAwBHnaiM7eTno/75MVO99WULS/usRS7/Kp4fqJIzM9S1sgjUm90vGYB/bsoDZ Liu2FBUmz1DDWqp4zDC1ktx7HsebEYwTMzuM9VvqHodEeyHWnfgLyYFDChl1nZRMLCW+ 8Q6Bzq0BOzvhVlV1rsx1F0Nq4wphEyEn2fDIHl06QxgvER00nuRyDlGC0t8+QYItYea3 rHnkTPuGwUolArk27/rTWYOCibK8M/j1YPcYmWCpmNYTguBcn8TiGK8VwL8qECwR0tc0 iSxA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=ia+TfZaQ; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id e20-v6si7731701pgm.172.2018.08.31.06.27.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:28:00 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=ia+TfZaQ; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 0E5352110BD7B; Fri, 31 Aug 2018 06:27:59 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::541; helo=mail-pg1-x541.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pg1-x541.google.com (mail-pg1-x541.google.com [IPv6:2607:f8b0:4864:20::541]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 978102110BD79 for ; Fri, 31 Aug 2018 06:27:57 -0700 (PDT) Received: by mail-pg1-x541.google.com with SMTP id 2-v6so4937684pgo.4 for ; Fri, 31 Aug 2018 06:27:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=f1zocSoQEBe4oYVLgkTLysna1YT6HzJrI/RQa/MG0fo=; b=ia+TfZaQoY3Mesaxm9SS4OebfK4wldmJweeDK+HL25iC5E8FyOsKkmquVtHO2lF6Zj agHd5xScnUXOyo+PjUHQ0MctRbkf9mgMaxgCFU2814wR7XwiPNMRbDmu87zbdpg1bS/g xbMz15sBDvFACiwF+J88O+c4PDJTTlaGMjO9U= 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=f1zocSoQEBe4oYVLgkTLysna1YT6HzJrI/RQa/MG0fo=; b=ttj/oTac0jyLG1etsfQdGoFbVNntQdq9qRLFKBn8naMXstJiCANBxYYjZsaLcmGO/H nyfWANG4zz91lb3PImnyMSDcoDeQvUYXjF3dizr/jB+7qT+31gFCEITHCmgRBqQC7YlF 8AZ+myMj24oW4vPX/GosJj4+35G/wvDuMUkmxU09o5OwfXwyrfcdtO8hmMOUnDIKthyv LgN3PV86rON996pvjIhqSczHPNDHS/ZaPY250IruQgcuGlST4EUlxgaj1MTdiAsadFDQ X/5Y1KLz+tj97p2SWX4YGPQHXYSaDHdvV2h9RGC1bWQ1v0r6V4sof7XmrZK+Niq7Pk4R i8nQ== X-Gm-Message-State: APzg51AatzIcFNX7HtV0tZpsTIHOe85+TWagRfnGZKnGle+SM/v1FBbZ ZG86p96dRuoh9tW8HOlIfXA42g== X-Received: by 2002:a63:549:: with SMTP id 70-v6mr14697372pgf.385.1535722077232; Fri, 31 Aug 2018 06:27:57 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.27.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:27:56 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:26:52 +0800 Message-Id: <20180831132710.23055-11-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 10/28] Hisilicon/D06: Add Debug Serial Port Init Driver X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" From: Heyi Guo Hi1620 have two physical PL011 serial ports on the board, one for serial port console (described by ACPI SPCR) and the other for standard debug port (described by ACPI DBG2). This driver is to initialize the debug UART, not the serial console. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang Reviewed-by: Leif Lindholm --- Platform/Hisilicon/D06/D06.dsc | 1 + Platform/Hisilicon/D06/D06.fdf | 1 + Silicon/Hisilicon/Hi1620/Drivers/Pl011DebugSerialPortInitDxe/Pl011DebugSerialPortInitDxe.inf | 48 +++++++++++++++ Silicon/Hisilicon/Hi1620/Drivers/Pl011DebugSerialPortInitDxe/Pl011DebugSerialPortInitDxe.c | 64 ++++++++++++++++++++ 4 files changed, 114 insertions(+) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index ac47b36cde..a124c5541f 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -423,6 +423,7 @@ # Memory test # MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf + Silicon/Hisilicon/Hi1620/Drivers/Pl011DebugSerialPortInitDxe/Pl011DebugSerialPortInitDxe.inf MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf MdeModulePkg/Universal/BdsDxe/BdsDxe.inf diff --git a/Platform/Hisilicon/D06/D06.fdf b/Platform/Hisilicon/D06/D06.fdf index 5d6168f717..9a239a6a43 100644 --- a/Platform/Hisilicon/D06/D06.fdf +++ b/Platform/Hisilicon/D06/D06.fdf @@ -299,6 +299,7 @@ READ_LOCK_STATUS = TRUE INF MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf INF MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf + INF Silicon/Hisilicon/Hi1620/Drivers/Pl011DebugSerialPortInitDxe/Pl011DebugSerialPortInitDxe.inf # # Build Shell from latest source code instead of prebuilt binary # diff --git a/Silicon/Hisilicon/Hi1620/Drivers/Pl011DebugSerialPortInitDxe/Pl011DebugSerialPortInitDxe.inf b/Silicon/Hisilicon/Hi1620/Drivers/Pl011DebugSerialPortInitDxe/Pl011DebugSerialPortInitDxe.inf new file mode 100644 index 0000000000..8c91bdf0f4 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Drivers/Pl011DebugSerialPortInitDxe/Pl011DebugSerialPortInitDxe.inf @@ -0,0 +1,48 @@ +#/** @file +# +# Copyright (c) 2016 - 2018, Hisilicon Limited. All rights reserved. +# Copyright (c) 2016 - 2018, Linaro Limited. All rights reserved. +# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +#**/ + +[Defines] + INF_VERSION = 0x0001001A + BASE_NAME = Pl011DebugSerialPortInitDxe + FILE_GUID = 16D53E86-7EA4-47bd-861F-511EA9B8ABE0 + MODULE_TYPE = DXE_DRIVER + VERSION_STRING = 1.0 + ENTRY_POINT = SerialPortEntry + +[Sources.common] + Pl011DebugSerialPortInitDxe.c + + +[Packages] + ArmPlatformPkg/ArmPlatformPkg.dec + MdeModulePkg/MdeModulePkg.dec + MdePkg/MdePkg.dec + Silicon/Hisilicon/HisiPkg.dec + +[LibraryClasses] + BaseLib + UefiDriverEntryPoint + +[Pcd] + gArmPlatformTokenSpaceGuid.PL011UartClkInHz + gArmPlatformTokenSpaceGuid.PcdSerialDbgRegisterBase + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultDataBits + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits + +[Depex] + TRUE + diff --git a/Silicon/Hisilicon/Hi1620/Drivers/Pl011DebugSerialPortInitDxe/Pl011DebugSerialPortInitDxe.c b/Silicon/Hisilicon/Hi1620/Drivers/Pl011DebugSerialPortInitDxe/Pl011DebugSerialPortInitDxe.c new file mode 100644 index 0000000000..8f83737327 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Drivers/Pl011DebugSerialPortInitDxe/Pl011DebugSerialPortInitDxe.c @@ -0,0 +1,64 @@ +/** @file + + Copyright (c) 2016 - 2018, Hisilicon Limited. All rights reserved. + Copyright (c) 2016 - 2018, Linaro Limited. All rights reserved. + + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#include +#include +#include +#include +#include +#include + +RETURN_STATUS +EFIAPI +DebugSerialPortInitialize ( + VOID + ) +{ + UINT64 BaudRate; + UINT32 ReceiveFifoDepth; + EFI_PARITY_TYPE Parity; + UINT8 DataBits; + EFI_STOP_BITS_TYPE StopBits; + + BaudRate = FixedPcdGet64 (PcdUartDefaultBaudRate); + ReceiveFifoDepth = 0; // Use default FIFO depth + Parity = (EFI_PARITY_TYPE)FixedPcdGet8 (PcdUartDefaultParity); + DataBits = FixedPcdGet8 (PcdUartDefaultDataBits); + StopBits = (EFI_STOP_BITS_TYPE) FixedPcdGet8 (PcdUartDefaultStopBits); + return PL011UartInitializePort ( + (UINTN)FixedPcdGet64 (PcdSerialDbgRegisterBase), + FixedPcdGet32 (PL011UartClkInHz), + &BaudRate, + &ReceiveFifoDepth, + &Parity, + &DataBits, + &StopBits + ); +} + +EFI_STATUS +SerialPortEntry ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + Status = DebugSerialPortInitialize (); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "CPU1 TB serial port init ERROR: %r\n", Status)); + } + return EFI_SUCCESS; +} + From patchwork Fri Aug 31 13:26:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145620 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp783828ljw; Fri, 31 Aug 2018 06:28:07 -0700 (PDT) X-Google-Smtp-Source: ANB0VdZXGyCJmVx+V7iyDG1Q02bWPusueh+IiXceRdS0WOFckdfpTukIfymxdTABC5Ze9oLSYWGh X-Received: by 2002:a63:9412:: with SMTP id m18-v6mr14390155pge.440.1535722086733; Fri, 31 Aug 2018 06:28:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722086; cv=none; d=google.com; s=arc-20160816; b=dv6fi1eRrmcv80x4LEoedB3cWi5sH89DRi93f+mYHeYYCNooGuL0BgH8ugOxFOAC3h Jx+bgTOpuyFI6s99JMkGXlKoBeI0VGsK1hdBE1dHLiZCEm6IZsWcpLj7X+5Khnyr3hHY VbUUmGpCwlSIjfh1/ZUtCnBKiK78WaKPoht1AAdb11ZVTt3YXIHYKYizTFiJe0nZGOqr 9VT6slSQ4OoXxIpY5H86J27FtDTor2jBq7Y2+Jw62u8sAE3koatE7WYcv/K1rJXy0sTj wWLu08p8zja/mJXjk5oAM2WcPHyiCzWIsrbPVRcW3cILW/qhXm+km86GMOo4M3ev30GN fwTA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=Ktt2NRkHpRG29QD1J/SwZz44c+C5UNiIKj9htb/tXOo=; b=by0c49YrYNMRBroIvlu0bZar2yy4Capt3wzV5NElrsIwbeRJWXhUuTtT3V0Y3NyGK9 H13EO29Gu7KqiA/c8z4LK2PaSTl2ZgHgqI0f24jXXF+j92KyvkhFa7vcg9vWYo0kuMm5 EhUgz/neiiCkbuntnqt5svoz+r2VKNloKrabzwK5OmqDfqvR0fwZuOWrvVqOOUIlY+zW yk/jw8OPAPqCpaHybYZZ8n3qIua1PAprUyTqW95EFLPIBFqsggQkF2kOOvMViZ6rHNZB g7Bsr98rAwbnhF+vmIDi1L0j0Aq3YwkX5QpzS7X7bd90BtdyAWTvqEm1goT++tW64WTJ oIkw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=Zzhgc1NK; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id 33-v6si9967200ply.251.2018.08.31.06.28.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:28:06 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=Zzhgc1NK; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 418F12110BD7E; Fri, 31 Aug 2018 06:28:06 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::441; helo=mail-pf1-x441.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pf1-x441.google.com (mail-pf1-x441.google.com [IPv6:2607:f8b0:4864:20::441]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 846952110BD5C for ; Fri, 31 Aug 2018 06:28:04 -0700 (PDT) Received: by mail-pf1-x441.google.com with SMTP id k19-v6so5546918pfi.1 for ; Fri, 31 Aug 2018 06:28:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=fBGX6k6l/UOfsfTycz4BJzxPFo14h+Ry8fJh4Je0Fz0=; b=Zzhgc1NKgJuloSo6QAMm3h4loz45n04S9zR/eNlqGUcApQQdjAKkSJ6ht6ancYUzlb pIfSJhrlxvIF8AHxbD28I+4ZFck0CcQMpjEEb0Ec3yx4Cw0hNWr0FERSTt/KmuQFvanq rCrvql0zNomk28cpGd5fJu590D35TlzLLE4do= 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=fBGX6k6l/UOfsfTycz4BJzxPFo14h+Ry8fJh4Je0Fz0=; b=R713DDh/OCkzo/2hH7F3UyUkpV8UAWdCUTTh2JW6bd9/4dj8WYURDnrC7oGS6awmuh Y43/9m1vRiIGBYTpAqQ/2uiy2wRn3ucZQ7bK7R0N2gqSwSqS5X0jsvI2d5Hqni44tTfU sPD+jSH79TJp9hvCMNj0dwFjjl5bb9YxqljxD3weMdvX6f/Cq0r3lO3SbDcYJHc3M2N5 V32tUHjgv6FD5vEJuQ6OehgUH53Oft7+0N6QkTF2CeQGdIVMGD47C63sOnOujJ6kUsbZ 6xxeM4ogWYBw7l/clXKdJrK3DjN0/h87J5v+gluXNxdAFMLOES+n4DnZYB26UvUady9o 8iEw== X-Gm-Message-State: APzg51DnfCSEnWw+OGert8bkXXdooOu0YCxQES809qFnewYBBD70anRJ hqjiqVaBC1UFbpd0U2hu7Anv5w== X-Received: by 2002:a62:9ed1:: with SMTP id f78-v6mr16024709pfk.206.1535722082583; Fri, 31 Aug 2018 06:28:02 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.27.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:28:01 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:26:53 +0800 Message-Id: <20180831132710.23055-12-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 11/28] Hisilicon/D06: Add ACPI Tables for D06 X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" ACPI tables for D06 2P, especially,Hi1620Iort.asl is include smmu and Hi1620IortNoSmmu.asl is without smmu. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang Reviewed-by: Leif Lindholm --- Platform/Hisilicon/D06/D06.dsc | 1 + Platform/Hisilicon/D06/D06.fdf | 1 + Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/AcpiTablesHi1620.inf | 60 + Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Platform.h | 27 + Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/CPU.asl | 409 ++++ Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Com.asl | 30 + Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/DsdtHi1620.asl | 35 + Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Apei.asl | 93 + Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Ged.asl | 58 + Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Mbig.asl | 1459 ++++++++++++++ Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Mctp.asl | 41 + Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Pci.asl | 1216 ++++++++++++ Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Power.asl | 28 + Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Rde.asl | 47 + Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Sec.asl | 57 + Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Socip4_i2c100k.asl | 249 +++ Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Socip4_i2c400k.asl | 249 +++ Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/LpcUart_clk.asl | 49 + Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Pv680UncorePmu.asl | 1658 ++++++++++++++++ Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/ipmi.asl | 49 + Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Facs.aslc | 67 + Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Fadt.aslc | 91 + Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Gtdt.aslc | 86 + Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Dbg2.aslc | 86 + Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Iort.asl | 1989 ++++++++++++++++++++ Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620IortNoSmmu.asl | 1736 +++++++++++++++++ Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Mcfg.aslc | 64 + Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Slit.aslc | 64 + Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Spcr.aslc | 81 + Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Srat.aslc | 166 ++ Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/MadtHi1620.aslc | 375 ++++ 31 files changed, 10621 insertions(+) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index a124c5541f..07f5af72ad 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -333,6 +333,7 @@ MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/AcpiPlatformDxe.inf + Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/AcpiTablesHi1620.inf Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf # diff --git a/Platform/Hisilicon/D06/D06.fdf b/Platform/Hisilicon/D06/D06.fdf index 9a239a6a43..d9568bc6b1 100644 --- a/Platform/Hisilicon/D06/D06.fdf +++ b/Platform/Hisilicon/D06/D06.fdf @@ -245,6 +245,7 @@ READ_LOCK_STATUS = TRUE INF MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf INF Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/AcpiPlatformDxe.inf + INF RuleOverride=ACPITABLE Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/AcpiTablesHi1620.inf INF Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf # diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/AcpiTablesHi1620.inf b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/AcpiTablesHi1620.inf new file mode 100644 index 0000000000..8df53a8378 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/AcpiTablesHi1620.inf @@ -0,0 +1,60 @@ +## @file +# +# ACPI table data and ASL sources required to boot the platform. +# +# Copyright (c) 2014, ARM Ltd. All rights reserved. +# Copyright (c) 2018, Hisilicon Limited. All rights reserved. +# Copyright (c) 2018, Linaro Limited. All rights reserved. +# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +# Based on the files under ArmPlatformPkg/ArmJunoPkg/AcpiTables/ +# +## + +[Defines] + INF_VERSION = 0x0001001A + BASE_NAME = Hi1620AcpiTables + FILE_GUID = 7E374E25-8E01-4FEE-87F2-390C23C606CD + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +[Sources] + Dsdt/DsdtHi1620.asl + Facs.aslc + Fadt.aslc + Gtdt.aslc + Hi1620Dbg2.aslc + Hi1620Iort.asl + Hi1620IortNoSmmu.asl + Hi1620Mcfg.aslc + Hi1620Slit.aslc + Hi1620Spcr.aslc + Hi1620Srat.aslc + MadtHi1620.aslc + +[Packages] + ArmPkg/ArmPkg.dec + ArmPlatformPkg/ArmPlatformPkg.dec + EmbeddedPkg/EmbeddedPkg.dec + MdeModulePkg/MdeModulePkg.dec + MdePkg/MdePkg.dec + Silicon/Hisilicon/Hi1620/Hi1620.dec + Silicon/Hisilicon/HisiPkg.dec + +[FixedPcd] + gArmPlatformTokenSpaceGuid.PcdCoreCount + gArmPlatformTokenSpaceGuid.PcdSerialDbgRegisterBase + gArmTokenSpaceGuid.PcdArmArchTimerHypIntrNum + gArmTokenSpaceGuid.PcdArmArchTimerIntrNum + gArmTokenSpaceGuid.PcdArmArchTimerSecIntrNum + gArmTokenSpaceGuid.PcdArmArchTimerVirtIntrNum + gArmTokenSpaceGuid.PcdGicDistributorBase + gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Platform.h b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Platform.h new file mode 100644 index 0000000000..faaeb83781 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Platform.h @@ -0,0 +1,27 @@ +/** @file +* +* Copyright (c) 2011-2015, ARM Limited. All rights reserved. +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2015-2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +* Based on the files under ArmPlatformPkg/ArmJunoPkg/AcpiTables/ +* +**/ + + +#ifndef _HI1620_PLATFORM_H_ +#define _HI1620_PLATFORM_H_ + +#include + +#define HI1620_WATCHDOG_COUNT 2 + +#endif diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/CPU.asl b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/CPU.asl new file mode 100644 index 0000000000..ef8dae4d01 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/CPU.asl @@ -0,0 +1,409 @@ +/** @file + Differentiated System Description Table Fields (DSDT) + + Copyright (c) 2014, ARM Ltd. All rights reserved.
+ Copyright (c) 2018, Hisilicon Limited. All rights reserved.
+ Copyright (c) 2015, Linaro Limited. All rights reserved.
+ This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + Based on the files under ArmPlatformPkg/ArmJunoPkg/AcpiTables/ + +**/ + +Scope(_SB) +{ + // + // A57x16 Processor declaration + // + Device(CPU0) { + Name(_HID, "ACPI0007") + Name(_UID, 0) + } + Device(CPU1) { + Name(_HID, "ACPI0007") + Name(_UID, 1) + } + Device(CPU2) { + Name(_HID, "ACPI0007") + Name(_UID, 2) + } + Device(CPU3) { + Name(_HID, "ACPI0007") + Name(_UID, 3) + } + Device(CPU4) { + Name(_HID, "ACPI0007") + Name(_UID, 4) + } + Device(CPU5) { + Name(_HID, "ACPI0007") + Name(_UID, 5) + } + Device(CPU6) { + Name(_HID, "ACPI0007") + Name(_UID, 6) + } + Device(CPU7) { + Name(_HID, "ACPI0007") + Name(_UID, 7) + } + Device(CPU8) { + Name(_HID, "ACPI0007") + Name(_UID, 8) + } + Device(CPU9) { + Name(_HID, "ACPI0007") + Name(_UID, 9) + } + Device(CP10) { + Name(_HID, "ACPI0007") + Name(_UID, 10) + } + Device(CP11) { + Name(_HID, "ACPI0007") + Name(_UID, 11) + } + Device(CP12) { + Name(_HID, "ACPI0007") + Name(_UID, 12) + } + Device(CP13) { + Name(_HID, "ACPI0007") + Name(_UID, 13) + } + Device(CP14) { + Name(_HID, "ACPI0007") + Name(_UID, 14) + } + Device(CP15) { + Name(_HID, "ACPI0007") + Name(_UID, 15) + } + Device(CP16) { + Name(_HID, "ACPI0007") + Name(_UID, 16) + } + Device(CP17) { + Name(_HID, "ACPI0007") + Name(_UID, 17) + } + Device(CP18) { + Name(_HID, "ACPI0007") + Name(_UID, 18) + } + Device(CP19) { + Name(_HID, "ACPI0007") + Name(_UID, 19) + } + Device(CP20) { + Name(_HID, "ACPI0007") + Name(_UID, 20) + } + Device(CP21) { + Name(_HID, "ACPI0007") + Name(_UID, 21) + } + Device(CP22) { + Name(_HID, "ACPI0007") + Name(_UID, 22) + } + Device(CP23) { + Name(_HID, "ACPI0007") + Name(_UID, 23) + } + Device(CP24) { + Name(_HID, "ACPI0007") + Name(_UID, 24) + } + Device(CP25) { + Name(_HID, "ACPI0007") + Name(_UID, 25) + } + Device(CP26) { + Name(_HID, "ACPI0007") + Name(_UID, 26) + } + Device(CP27) { + Name(_HID, "ACPI0007") + Name(_UID, 27) + } + Device(CP28) { + Name(_HID, "ACPI0007") + Name(_UID, 28) + } + Device(CP29) { + Name(_HID, "ACPI0007") + Name(_UID, 29) + } + Device(CP30) { + Name(_HID, "ACPI0007") + Name(_UID, 30) + } + Device(CP31) { + Name(_HID, "ACPI0007") + Name(_UID, 31) + } + Device(CP32) { + Name(_HID, "ACPI0007") + Name(_UID, 32) + } + Device(CP33) { + Name(_HID, "ACPI0007") + Name(_UID, 33) + } + Device(CP34) { + Name(_HID, "ACPI0007") + Name(_UID, 34) + } + Device(CP35) { + Name(_HID, "ACPI0007") + Name(_UID, 35) + } + Device(CP36) { + Name(_HID, "ACPI0007") + Name(_UID, 36) + } + Device(CP37) { + Name(_HID, "ACPI0007") + Name(_UID, 37) + } + Device(CP38) { + Name(_HID, "ACPI0007") + Name(_UID, 38) + } + Device(CP39) { + Name(_HID, "ACPI0007") + Name(_UID, 39) + } + Device(CP40) { + Name(_HID, "ACPI0007") + Name(_UID, 40) + } + Device(CP41) { + Name(_HID, "ACPI0007") + Name(_UID, 41) + } + Device(CP42) { + Name(_HID, "ACPI0007") + Name(_UID, 42) + } + Device(CP43) { + Name(_HID, "ACPI0007") + Name(_UID, 43) + } + Device(CP44) { + Name(_HID, "ACPI0007") + Name(_UID, 44) + } + Device(CP45) { + Name(_HID, "ACPI0007") + Name(_UID, 45) + } + Device(CP46) { + Name(_HID, "ACPI0007") + Name(_UID, 46) + } + Device(CP47) { + Name(_HID, "ACPI0007") + Name(_UID, 47) + } + + Device(CP48) { + Name(_HID, "ACPI0007") + Name(_UID, 48) + } + Device(CP49) { + Name(_HID, "ACPI0007") + Name(_UID, 49) + } + Device(CP50) { + Name(_HID, "ACPI0007") + Name(_UID, 50) + } + Device(CP51) { + Name(_HID, "ACPI0007") + Name(_UID, 51) + } + Device(CP52) { + Name(_HID, "ACPI0007") + Name(_UID, 52) + } + Device(CP53) { + Name(_HID, "ACPI0007") + Name(_UID, 53) + } + Device(CP54) { + Name(_HID, "ACPI0007") + Name(_UID, 54) + } + Device(CP55) { + Name(_HID, "ACPI0007") + Name(_UID, 55) + } + Device(CP56) { + Name(_HID, "ACPI0007") + Name(_UID, 56) + } + Device(CP57) { + Name(_HID, "ACPI0007") + Name(_UID, 57) + } + Device(CP58) { + Name(_HID, "ACPI0007") + Name(_UID, 58) + } + Device(CP59) { + Name(_HID, "ACPI0007") + Name(_UID, 59) + } + Device(CP60) { + Name(_HID, "ACPI0007") + Name(_UID, 60) + } + Device(CP61) { + Name(_HID, "ACPI0007") + Name(_UID, 61) + } + Device(CP62) { + Name(_HID, "ACPI0007") + Name(_UID, 62) + } + Device(CP63) { + Name(_HID, "ACPI0007") + Name(_UID, 63) + } + Device(CP64) { + Name(_HID, "ACPI0007") + Name(_UID, 64) + } + Device(CP65) { + Name(_HID, "ACPI0007") + Name(_UID, 65) + } + Device(CP66) { + Name(_HID, "ACPI0007") + Name(_UID, 66) + } + Device(CP67) { + Name(_HID, "ACPI0007") + Name(_UID, 67) + } + Device(CP68) { + Name(_HID, "ACPI0007") + Name(_UID, 68) + } + Device(CP69) { + Name(_HID, "ACPI0007") + Name(_UID, 69) + } + Device(CP70) { + Name(_HID, "ACPI0007") + Name(_UID, 70) + } + Device(CP71) { + Name(_HID, "ACPI0007") + Name(_UID, 71) + } + Device(CP72) { + Name(_HID, "ACPI0007") + Name(_UID, 72) + } + Device(CP73) { + Name(_HID, "ACPI0007") + Name(_UID, 73) + } + Device(CP74) { + Name(_HID, "ACPI0007") + Name(_UID, 74) + } + Device(CP75) { + Name(_HID, "ACPI0007") + Name(_UID, 75) + } + Device(CP76) { + Name(_HID, "ACPI0007") + Name(_UID, 76) + } + Device(CP77) { + Name(_HID, "ACPI0007") + Name(_UID, 77) + } + Device(CP78) { + Name(_HID, "ACPI0007") + Name(_UID, 78) + } + Device(CP79) { + Name(_HID, "ACPI0007") + Name(_UID, 79) + } + Device(CP80) { + Name(_HID, "ACPI0007") + Name(_UID, 80) + } + Device(CP81) { + Name(_HID, "ACPI0007") + Name(_UID, 81) + } + Device(CP82) { + Name(_HID, "ACPI0007") + Name(_UID, 82) + } + Device(CP83) { + Name(_HID, "ACPI0007") + Name(_UID, 83) + } + Device(CP84) { + Name(_HID, "ACPI0007") + Name(_UID, 84) + } + Device(CP85) { + Name(_HID, "ACPI0007") + Name(_UID, 85) + } + Device(CP86) { + Name(_HID, "ACPI0007") + Name(_UID, 86) + } + Device(CP87) { + Name(_HID, "ACPI0007") + Name(_UID, 87) + } + Device(CP88) { + Name(_HID, "ACPI0007") + Name(_UID, 88) + } + Device(CP89) { + Name(_HID, "ACPI0007") + Name(_UID, 89) + } + Device(CP90) { + Name(_HID, "ACPI0007") + Name(_UID, 90) + } + Device(CP91) { + Name(_HID, "ACPI0007") + Name(_UID, 91) + } + Device(CP92) { + Name(_HID, "ACPI0007") + Name(_UID, 92) + } + Device(CP93) { + Name(_HID, "ACPI0007") + Name(_UID, 93) + } + Device(CP94) { + Name(_HID, "ACPI0007") + Name(_UID, 94) + } + Device(CP95) { + Name(_HID, "ACPI0007") + Name(_UID, 95) + } +} diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Com.asl b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Com.asl new file mode 100644 index 0000000000..377d171abb --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Com.asl @@ -0,0 +1,30 @@ +/** @file + Differentiated System Description Table Fields (DSDT) + + Copyright (c) 2014, ARM Ltd. All rights reserved.
+ Copyright (c) 2018, Hisilicon Limited. All rights reserved.
+ Copyright (c) 2015, Linaro Limited. All rights reserved.
+ This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + Based on the files under ArmPlatformPkg/ArmJunoPkg/AcpiTables/ + +**/ + +Scope(_SB) +{ + Device(COM0) { + Name(_HID, "ARMH0011") + Name(_CID, "PL011") + Name(_UID, Zero) + Name(_CRS, ResourceTemplate() { + Memory32Fixed(ReadWrite, 0x94080000, 0x1000) + Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive) { 141 } + }) + } +} diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/DsdtHi1620.asl b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/DsdtHi1620.asl new file mode 100644 index 0000000000..7e26ba22b7 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/DsdtHi1620.asl @@ -0,0 +1,35 @@ +/** @file + Differentiated System Description Table Fields (DSDT) + + Copyright (c) 2014, ARM Ltd. All rights reserved.
+ Copyright (c) 2018, Hisilicon Limited. All rights reserved.
+ Copyright (c) 2015, Linaro Limited. All rights reserved.
+ This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + Based on the files under ArmPlatformPkg/ArmJunoPkg/AcpiTables/ + +**/ + +#include "Hi1620Platform.h" + +DefinitionBlock("DsdtTable.aml", "DSDT", 2, "HISI ", "HIP08 ", EFI_ACPI_ARM_OEM_REVISION) { + include ("Com.asl") + include ("CPU.asl") + include ("Hi1620Pci.asl") + include ("Hi1620Mbig.asl") + include ("Hi1620Rde.asl") + include ("Hi1620Sec.asl") + include ("ipmi.asl") + include ("LpcUart_clk.asl") + include ("Hi1620Ged.asl") + include ("Hi1620Power.asl") + include ("Hi1620Apei.asl") + include ("Hi1620Mctp.asl") + include ("Pv680UncorePmu.asl") +} diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Apei.asl b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Apei.asl new file mode 100644 index 0000000000..0970ed9b99 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Apei.asl @@ -0,0 +1,93 @@ +/** @file +* +* Copyright (c) 2018 Hisilicon Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ +//Define a control method APEI +Scope(_SB) +{ + Device(GED2) { + Name(_HID, "ACPI0013") + Name(_UID, 2) + + Name (_CRS, ResourceTemplate () { + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive) { + 122 + } + }) + + Method (_EVT, 0x1) { + Switch(ToInteger(Arg0)) { + Case(122) { + Notify (\_SB.ERRD, 0x80) + } + } + } + + Method (_STA, 0x0, NotSerialized) { + return (0xF); + } + } +} + +Device (\_SB.ERRD) +{ + Name (_HID, EISAID("PNP0C33")) + Name (_UID, 0) + Method (_STA, 0x0, NotSerialized) { + Return(0xF) + } +} + +Name(PWCP, Zero) // Platform-Wide Capability value. + +Scope (\_SB) { + Method (_OSC,4) { + // Create DWord-adressable for Arg3 First DWORD. + CreateDWordField(Arg3,0,CDW1) + + // Check for proper UUID + If (LEqual(Arg0,ToUUID("0811B06E-4A27-44F9-8D60-3CBBC22E7B48"))) { + // Create DWord-adressable fields from the Capabilities Buffer + CreateDWordField (Arg3,4,TPD2) + + // Save Capabilities DWord2 + Store (TPD2, PWCP) + + // Set Bit[4]: APEI Support + Or (PWCP,0x10,PWCP) + + If (LNotEqual(Arg1,One)) {// Unknown revision + Or (CDW1,0x08,CDW1) + } + + // Update DWORD2 in the buffer + Store (PWCP,TPD2) + + Return (Arg3) + } + ElseIf (LEqual(Arg0, ToUUID("ed855e0c-6c90-47bf-a62a-26de0fc5ad5c"))) { // Check for WHEA GUID + CreateDWordField (Arg3,4,TPD3) + + Or (TPD3, 0x10, TPD3) //Set Bit[4]: APEI support. + + If (LNotEqual(Arg1,One)) {// Unknown revision + Or (CDW1,0x08,CDW1) + } + + return (Arg3) + } + Else { + Or (CDW1,4,CDW1) // Unrecognized UUID + Return (Arg3) + } + } // End _OSC +} diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Ged.asl b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Ged.asl new file mode 100644 index 0000000000..6664c0c681 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Ged.asl @@ -0,0 +1,58 @@ +/** @file +* +* Copyright (c) 2014, ARM Ltd. All rights reserved.
+* Copyright (c) 2018, Hisilicon Limited. All rights reserved.
+* Copyright (c) 2016, Linaro Limited. All rights reserved.
+* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +// +// Ged +// + +//Define a control method power button +Scope(_SB) +{ + OperationRegion(IOM1, SystemMemory, 0x941900C8, 0x4) + Field(IOM1, DWordAcc, NoLock, Preserve) { + IMX0, 32, + } + + Method (_INI) { + Store(IMX0, Local0) + And(Local0, 0xFFFFFFFC, Local0) + Or(Local0, 0x4, Local0) + Store(Local0, IMX0) + } + + Device(GED1) { + Name(_HID, "ACPI0013") + Name(_UID, 0) + + Name (_CRS, ResourceTemplate () { + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive) { + 121 + } + }) + + Method (_STA, 0x0, NotSerialized) { + return (0xF); + } + + Method (_EVT, 0x1) { + Switch(ToInteger(Arg0)) { + Case(121) { + Notify (\_SB.PWRB, 0x80) + } + } + } + } +} diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Mbig.asl b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Mbig.asl new file mode 100644 index 0000000000..6adf5973a6 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Mbig.asl @@ -0,0 +1,1459 @@ +/** @file + Differentiated System Description Table Fields (DSDT) + + Copyright (c) 2014, ARM Ltd. All rights reserved.
+ This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +Scope(_SB) +{ + //This is for S0-TB-L3T0 PMU implementation + Device(MB30) { + Name(_HID, "HISI0152") + Name(_UID, 0x30) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0xA8080000, + 0xA808ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S0-TB-L3T1 PMU implementation + Device(MB31) { + Name(_HID, "HISI0152") + Name(_UID, 0x31) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0xA8080000, + 0xA808ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S0-TB-L3T2 PMU implementation + Device(MB32) { + Name(_HID, "HISI0152") + Name(_UID, 0x32) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0xA8080000, + 0xA808ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S0-TB-L3T3 PMU implementation + Device(MB33) { + Name(_HID, "HISI0152") + Name(_UID, 0x33) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0xA8080000, + 0xA808ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S0-TB-L3T4 PMU implementation + Device(MB34) { + Name(_HID, "HISI0152") + Name(_UID, 0x34) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0xA8080000, + 0xA808ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S0-TB-L3T5 PMU implementation + Device(MB35) { + Name(_HID, "HISI0152") + Name(_UID, 0x35) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0xA8080000, + 0xA808ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S0-TB-DDRC0 PMU implementation + Device(MB38) { + Name(_HID, "HISI0152") + Name(_UID, 0x38) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0xA8080000, + 0xA808ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S0-TB-DDRC1 PMU implementation + Device(MB39) { + Name(_HID, "HISI0152") + Name(_UID, 0x39) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0xA8080000, + 0xA808ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S0-TB-DDRC2 PMU implementation + Device(MB3A) { + Name(_HID, "HISI0152") + Name(_UID, 0x3A) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0xA8080000, + 0xA808ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S0-TB-DDRC3 PMU implementation + Device(MB3B) { + Name(_HID, "HISI0152") + Name(_UID, 0x3B) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0xA8080000, + 0xA808ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S0-TB-HHA0 PMU implementation + Device(MB3C) { + Name(_HID, "HISI0152") + Name(_UID, 0x3C) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0xA8080000, + 0xA808ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S0-TB-HHA1 PMU implementation + Device(MB3D) { + Name(_HID, "HISI0152") + Name(_UID, 0x3D) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0xA8080000, + 0xA808ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S0-TA-L3T0 PMU implementation + Device(MB10) { + Name(_HID, "HISI0152") + Name(_UID, 0x10) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0xAC080000, + 0xAC08ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S0-TA-L3T1 PMU implementation + Device(MB11) { + Name(_HID, "HISI0152") + Name(_UID, 0x11) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0xAC080000, + 0xAC08ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S0-TA-L3T2 PMU implementation + Device(MB12) { + Name(_HID, "HISI0152") + Name(_UID, 0x12) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0xAC080000, + 0xAC08ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S0-TA-L3T3 PMU implementation + Device(MB13) { + Name(_HID, "HISI0152") + Name(_UID, 0x13) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0xAC080000, + 0xAC08ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + + //This is for S0-TA-L3T4 PMU implementation + Device(MB14) { + Name(_HID, "HISI0152") + Name(_UID, 0x14) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0xAC080000, + 0xAC08ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S0-TA-L3T5 PMU implementation + Device(MB15) { + Name(_HID, "HISI0152") + Name(_UID, 0x15) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0xAC080000, + 0xAC08ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S0-TA-DDRC0 PMU implementation + Device(MB18) { + Name(_HID, "HISI0152") + Name(_UID, 0x18) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0xAC080000, + 0xAC08ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S0-TA-DDRC1 PMU implementation + Device(MB19) { + Name(_HID, "HISI0152") + Name(_UID, 0x19) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0xAC080000, + 0xAC08ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S0-TA-DDRC2 PMU implementation + Device(MB1A) { + Name(_HID, "HISI0152") + Name(_UID, 0x1A) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0xAC080000, + 0xAC08ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S0-TA-DDRC3 PMU implementation + Device(MB1B) { + Name(_HID, "HISI0152") + Name(_UID, 0x1B) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0xAC080000, + 0xAC08ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S0-TA-HHA0 PMU implementation + Device(MB1C) { + Name(_HID, "HISI0152") + Name(_UID, 0x1C) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0xAC080000, + 0xAC08ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S0-TA-HHA1 PMU implementation + Device(MB1D) { + Name(_HID, "HISI0152") + Name(_UID, 0x1D) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0xAC080000, + 0xAC08ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S1-TB-L3T0 PMU implementation + Device(MB70) { + Name(_HID, "HISI0152") + Name(_UID, 0x70) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x4000A8080000, + 0x4000A808ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S1-TB-L3T1 PMU implementation + Device(MB71) { + Name(_HID, "HISI0152") + Name(_UID, 0x71) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x4000A8080000, + 0x4000A808ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S1-TB-L3T2 PMU implementation + Device(MB72) { + Name(_HID, "HISI0152") + Name(_UID, 0x72) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x4000A8080000, + 0x4000A808ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S1-TB-L3T3 PMU implementation + Device(MB73) { + Name(_HID, "HISI0152") + Name(_UID, 0x73) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x4000A8080000, + 0x4000A808ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + + //This is for S1-TB-L3T4 PMU implementation + Device(MB74) { + Name(_HID, "HISI0152") + Name(_UID, 0x74) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x4000A8080000, + 0x4000A808ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S1-TB-L3T5 PMU implementation + Device(MB75) { + Name(_HID, "HISI0152") + Name(_UID, 0x75) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x4000A8080000, + 0x4000A808ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S1-TB-DDRC0 PMU implementation + Device(MB78) { + Name(_HID, "HISI0152") + Name(_UID, 0x78) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x4000A8080000, + 0x4000A808ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S1-TB-DDRC1 PMU implementation + Device(MB79) { + Name(_HID, "HISI0152") + Name(_UID, 0x79) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x4000A8080000, + 0x4000A808ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S1-TB-DDRC2 PMU implementation + Device(MB7A) { + Name(_HID, "HISI0152") + Name(_UID, 0x7A) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x4000A8080000, + 0x4000A808ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S1-TB-DDRC3 PMU implementation + Device(MB7B) { + Name(_HID, "HISI0152") + Name(_UID, 0x7B) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x4000A8080000, + 0x4000A808ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S1-TB-HHA0 PMU implementation + Device(MB7C) { + Name(_HID, "HISI0152") + Name(_UID, 0x7C) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x4000A8080000, + 0x4000A808ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S1-TB-HHA1 PMU implementation + Device(MB7D) { + Name(_HID, "HISI0152") + Name(_UID, 0x7D) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x4000A8080000, + 0x4000A808ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S1-TA-L3T0 PMU implementation + Device(MB50) { + Name(_HID, "HISI0152") + Name(_UID, 0x50) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x4000AC080000, + 0x4000AC08ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S1-TA-L3T1 PMU implementation + Device(MB51) { + Name(_HID, "HISI0152") + Name(_UID, 0x51) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x4000AC080000, + 0x4000AC08ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S1-TA-L3T2 PMU implementation + Device(MB52) { + Name(_HID, "HISI0152") + Name(_UID, 0x52) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x4000AC080000, + 0x4000AC08ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S1-TA-L3T3 PMU implementation + Device(MB53) { + Name(_HID, "HISI0152") + Name(_UID, 0x53) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x4000AC080000, + 0x4000AC08ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + + //This is for S1-TA-L3T4 PMU implementation + Device(MB54) { + Name(_HID, "HISI0152") + Name(_UID, 0x54) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x4000AC080000, + 0x4000AC08ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S1-TA-L3T5 PMU implementation + Device(MB55) { + Name(_HID, "HISI0152") + Name(_UID, 0x55) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x4000AC080000, + 0x4000AC08ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S1-TA-DDRC0 PMU implementation + Device(MB58) { + Name(_HID, "HISI0152") + Name(_UID, 0x58) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x4000AC080000, + 0x4000AC08ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S1-TA-DDRC1 PMU implementation + Device(MB59) { + Name(_HID, "HISI0152") + Name(_UID, 0x59) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x4000AC080000, + 0x4000AC08ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S1-TA-DDRC2 PMU implementation + Device(MB5A) { + Name(_HID, "HISI0152") + Name(_UID, 0x5A) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x4000AC080000, + 0x4000AC08ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S1-TA-DDRC3 PMU implementation + Device(MB5B) { + Name(_HID, "HISI0152") + Name(_UID, 0x5B) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x4000AC080000, + 0x4000AC08ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S1-TA-HHA0 PMU implementation + Device(MB5C) { + Name(_HID, "HISI0152") + Name(_UID, 0x5C) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x4000AC080000, + 0x4000AC08ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } + + //This is for S1-TA-HHA1 PMU implementation + Device(MB5D) { + Name(_HID, "HISI0152") + Name(_UID, 0x5D) + Name(_CID, "MBIGen") + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x4000AC080000, + 0x4000AC08ffff, + 0x0, + 0x10000 + ) + }) + + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package () {"num-pins", 1} + } + }) + } +} diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Mctp.asl b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Mctp.asl new file mode 100644 index 0000000000..d039e8a110 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Mctp.asl @@ -0,0 +1,41 @@ +/** @file + Differentiated System Description Table Fields (DSDT) + + Copyright (c) 2014, ARM Ltd. All rights reserved.
+ Copyright (c) 2018, Hisilicon Limited. All rights reserved.
+ Copyright (c) 2015, Linaro Limited. All rights reserved.
+ This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + Based on the files under ArmPlatformPkg/ArmJunoPkg/AcpiTables/ + +**/ +Scope(_SB) +{ + Device(LOC0) { + Name(_HID, "HISI02F1") + Name(_UID, 0) + Name (_CRS, ResourceTemplate () { + Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive) + { + 488,489 + } + }) + } + + Device(MCT0) { + Name(_HID, "HISI0301") + Name(_UID, 0) + Name (_CRS, ResourceTemplate () { + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI4") + { + 656 + } + }) + } +} diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Pci.asl b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Pci.asl new file mode 100644 index 0000000000..8e3547926a --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Pci.asl @@ -0,0 +1,1216 @@ +/** @file +* +* Copyright (c) 2011-2015, ARM Limited. All rights reserved. +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2016, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +* Based on the files under ArmPlatformPkg/ArmJunoPkg/AcpiTables/ +* +**/ + +//#include "ArmPlatform.h" +Scope(_SB) +{ + Device (PCI0) + { // PCI0 indicate host bridge 0 + Name (_HID, "PNP0A08") // PCI Express Root Bridge + Name (_UID, 0) + Name (_CID, "PNP0A03") // Compatible PCI Root Bridge, Compatible ID + Name(_SEG, 0) // Segment of this Root complex + Name (_BBN, 0x0) // Base Bus Number + Name (_CCA, 1) // cache coherence attribute + + Name (_PRT, Package (){ + // INTx configure for RP0, whoes device number is 0 + // For ESL/FPGA debug, we should modify this according to + // specific hardware configuration. + Package () {0xFFFF,0,0,640}, // INT_A + Package () {0xFFFF,1,0,641}, // INT_B + Package () {0xFFFF,2,0,642}, // INT_C + Package () {0xFFFF,3,0,643}, // INT_D + + // This is an example of RP1 INTx configure. Adding or not + // adding RPx INTx configure deponds on hardware board topology, + // if UEFI enables RPx, RPy, RPz... related INTx configure + // should be added + Package () {0x4FFFF,0,0,640}, // INT_A + Package () {0x4FFFF,1,0,641}, // INT_B + Package () {0x4FFFF,2,0,642}, // INT_C + Package () {0x4FFFF,3,0,643}, // INT_D + + Package () {0x8FFFF,0,0,640}, // INT_A + Package () {0x8FFFF,1,0,641}, // INT_B + Package () {0x8FFFF,2,0,642}, // INT_C + Package () {0x8FFFF,3,0,643}, // INT_D + + Package () {0xCFFFF,0,0,640}, // INT_A + Package () {0xCFFFF,1,0,641}, // INT_B + Package () {0xCFFFF,2,0,642}, // INT_C + Package () {0xCFFFF,3,0,643}, // INT_D + + Package () {0x10FFFF,0,0,640}, // INT_A + Package () {0x10FFFF,1,0,641}, // INT_B + Package () {0x10FFFF,2,0,642}, // INT_C + Package () {0x10FFFF,3,0,643}, // INT_D + + Package () {0x12FFFF,0,0,640}, // INT_A + Package () {0x12FFFF,1,0,641}, // INT_B + Package () {0x12FFFF,2,0,642}, // INT_C + Package () {0x12FFFF,3,0,643}, // INT_D + }) + + Method (_CRS, 0, Serialized) { + // Method is defined in 19.6.82 in ACPI 6.0 spec + Name (RBUF, ResourceTemplate () { + // 19.3.3 in ACPI 6.0 spec + WordBusNumber ( + ResourceProducer, + MinFixed, + MaxFixed, + PosDecode, + 0, // AddressGranularity + 0x00, // AddressMinimum - Minimum Bus Number + 0x3f, // AddressMaximum - Maximum Bus Number + 0, // AddressTranslation - Set to 0 + 0x40 // RangeLength - Number of Busses + ) + QWordMemory ( // 64-bit prefetch BAR windows + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Prefetchable, + ReadWrite, + 0x0, // Granularity + 0x80000000000, // Min Base Address pci address + 0x83fffffffff, // Max Base Address + 0x0, // Translate + 0x4000000000 // Length, 256G + ) + QWordMemory ( // 32-bit non-prefetch BAR windows + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Cacheable, + ReadWrite, + 0x0, // Granularity + 0xe0000000, // Min Base Address pci address + 0xeffeffff, // Max Base Address + 0x0, // Translate + 0xfff0000 // Length, 256M - 64K + ) + QWordIO ( + ResourceProducer, + MinFixed, + MaxFixed, + PosDecode, + EntireRange, + 0x0, // Granularity + 0x0, // Min Base Address + 0xffff, // Max Base Address + 0xefff0000, // Translate + 0x10000 // Length, 64K + )} + ) // Name(RBUF) + Return (RBUF) + } // Method(_CRS), this method return RBUF! + + // + // OS Control Handoff + // + Name(SUPP, Zero) // PCI _OSC Support Field value + Name(CTRL, Zero) // PCI _OSC Control Field value + + Method(_OSC,4) { + // Check for proper UUID + If(LEqual(Arg0,ToUUID("33DB4D5B-1FF7-401C-9657-7441C03DD766"))) { + // Create DWord-adressable fields from the Capabilities Buffer + CreateDWordField(Arg3,0,CDW1) + CreateDWordField(Arg3,4,CDW2) + CreateDWordField(Arg3,8,CDW3) + + // Save Capabilities DWord2 & 3 + Store(CDW2,SUPP) + Store(CDW3,CTRL) + + // Only allow native hot plug control if OS supports: + // ASPM + // Clock PM + // MSI/MSI-X + If(LNotEqual(And(SUPP, 0x16), 0x16)) { + And(CTRL,0x1E,CTRL) // Mask bit 0 (and undefined bits) + } + + // Always allow native PME, AER (no dependencies) + + // Never allow SHPC (no SHPC controller in this system) + And(CTRL,0x1D,CTRL) + + If(LNotEqual(Arg1,One)) { // Unknown revision + Or(CDW1,0x08,CDW1) + } + + If(LNotEqual(CDW3,CTRL)) { // Capabilities bits were masked + Or(CDW1,0x10,CDW1) + } + + // Update DWORD3 in the buffer + Store(CTRL,CDW3) + Return(Arg3) + } Else { + Or(CDW1,4,CDW1) // Unrecognized UUID + Return(Arg3) + } + } // End _OSC + + Method (_HPX, 0) { + Return (Package(2) { + Package(6) { // PCI Setting Record + 0x00, // Type 0 + 0x01, // Revision 1 + 0x08, // CacheLineSize in DWORDS + 0x40, // LatencyTimer in PCI clocks + 0x01, // Enable SERR (Boolean) + 0x01 // Enable PERR (Boolean) + }, + + Package(18){ // PCI-X Setting Record + 0x02, // Type 2 + 0x01, // Revision 1 + 0xFFFFFFFF, // Uncorrectable Error Mask Register AND Mask, Keep ->1 + 0x00000000, // Uncorrectable Error Mask Register OR Mask, keep ->0 + 0xFFFFFFFF, // Uncorrectable Error Severity Register AND Mask + 0x00000000, // Uncorrectable Error Severity Register OR Mask + 0xFFFFFFFF, // Correctable Error Mask Register AND Mask + 0x00000000, // Correctable Error Mask Register OR Mask + 0xFFFFFFFF, // Advanced Error Capabilities and Control Register AND Mask + 0x00000000, // Advanced Error Capabilities and Control Register OR Mask + 0xFFF7, // Device Control Register AND Mask + 0x0007, // Device Control Register OR Mask + 0xFFFF, // Link Control Register AND Mask + 0x0000, // Link Control Register OR Mask + 0xFFFFFFFF, // Secondary Uncorrectable Error Severity Register AND Mask + 0x00000000, // Secondary Uncorrectable Error Severity Register OR Mask + 0xFFFFFFFF, // Secondary Uncorrectable Error Mask Register AND Mask + 0x00000000 // Secondary Uncorrectable Error Mask Register OR Mask + } + }) + } + + Method (_STA, 0x0, NotSerialized) { + Return (0xf) + } + + Method (_PXM, 0, NotSerialized) + { + Return(0x01) + } +} // Device(PCI0) + + +Device (PCI1) +{ // PCI1 indicate host bridge 1 + Name (_HID, "PNP0A08") // PCI Express Root Bridge + Name (_UID, 1) + Name (_CID, "PNP0A03") // Compatible PCI Root Bridge, Compatible ID + Name(_SEG, 0) // Segment of this Root complex + Name(_BBN, 0x7b) // Base Bus Number ?? + Name(_CCA, 1) // cache coherence attribute ?? + Method (_CRS, 0, Serialized) { // Root complex resources, _CRS: current resource setting + Name (RBUF, ResourceTemplate () { // Name: 19.6.87, ResourceTemplate: 19.6.111, + WordBusNumber ( // Bus numbers assigned to this root, + ResourceProducer, + MinFixed, + MaxFixed, + PosDecode, + 0, // AddressGranularity + 0x7b, // AddressMinimum - Minimum Bus Number + 0x7b, // AddressMaximum - Maximum Bus Number + 0, // AddressTranslation - Set to 0 + 0x1 // RangeLength - Number of Busses + ) + QWordMemory ( // 64-bit BAR Windows, where to show this ?? + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Prefetchable, + ReadWrite, + 0x0, // Granularity + 0x148800000, // Min Base Address pci address ?? + 0x148ffffff, // Max Base Address + 0x0, // Translate + 0x800000 // Length, 8M + ) + }) // Name(RBUF) + Return (RBUF) + } // Method(_CRS), this method return RBUF! + + Method (_STA, 0x0, NotSerialized) + { + Return (0xf) + } + + Method (_PXM, 0, NotSerialized) + { + Return(0x01) + } +} // Device(PCI1) + +Device (PCI2) +{ + Name (_HID, "PNP0A08") // PCI Express Root Bridge + Name (_UID, 2) + Name (_CID, "PNP0A03") // Compatible PCI Root Bridge, Compatible ID + Name(_SEG, 0) // Segment of this Root complex + Name(_BBN, 0x7a) // Base Bus Number + Name(_CCA, 1) // cache coherence attribute ?? + Name (_PRT, Package (){ + Package () {0xFFFF,0,0,640}, // INT_A + Package () {0xFFFF,1,0,641}, // INT_B + Package () {0xFFFF,2,0,642}, // INT_C + Package () {0xFFFF,3,0,643}, // INT_D + Package () {0x1FFFF,0,0,640}, // INT_A + Package () {0x1FFFF,1,0,641}, // INT_B + Package () {0x1FFFF,2,0,642}, // INT_C + Package () {0x1FFFF,3,0,643}, // INT_D + Package () {0x2FFFF,0,0,640}, // INT_A + Package () {0x2FFFF,1,0,641}, // INT_B + Package () {0x2FFFF,2,0,642}, // INT_C + Package () {0x2FFFF,3,0,643}, // INT_D + }) + Method (_CRS, 0, Serialized) { // Root complex resources, _CRS: current resource // setting + Name (RBUF, ResourceTemplate () { // Name: 19.6.87, ResourceTemplate: 19.6.111, + WordBusNumber ( // Bus numbers assigned to this root, + ResourceProducer, + MinFixed, + MaxFixed, + PosDecode, + 0, // AddressGranularity + 0x7a, // AddressMinimum - Minimum Bus Number + 0x7a, // AddressMaximum - Maximum Bus Number + 0, // AddressTranslation - Set to 0 + 0x1 // RangeLength - Number of Busses + ) + QWordMemory ( // 64-bit BAR Windows + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Prefetchable, + ReadWrite, + 0x0, // Granularity + 0x20c000000, // Min Base Address pci address + 0x20c1fffff, // Max Base Address + 0x0, // Translate + 0x200000 // Length, 2M + ) + }) // Name(RBUF) + Return (RBUF) + } // Method(_CRS), this method return RBUF! + + Method (_STA, 0x0, NotSerialized) + { + Return (0xf) + } + + Method (_PXM, 0, NotSerialized) + { + Return(0x01) + } +} + +Device (PCI3) +{ + Name (_HID, "PNP0A08") // PCI Express Root Bridge + Name (_UID, 3) + Name (_CID, "PNP0A03") // Compatible PCI Root Bridge, Compatible ID + Name(_SEG, 0) // Segment of this Root complex + Name(_BBN, 0x78) // Base Bus Number ?? + Name(_CCA, 1) // cache coherence attribute ?? + Method (_CRS, 0, Serialized) { // Root complex resources, _CRS: current resource + Name (RBUF, ResourceTemplate () { // Name: 19.6.87, ResourceTemplate: 19.6.111, + WordBusNumber ( // Bus numbers assigned to this root, + ResourceProducer, + MinFixed, + MaxFixed, + PosDecode, + 0, // AddressGranularity + 0x78, // AddressMinimum - Minimum Bus Number + 0x79, // AddressMaximum - Maximum Bus Number + 0, // AddressTranslation - Set to 0 + 0x2 // RangeLength - Number of Busses + ) + QWordMemory ( // 64-bit BAR Windows + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Prefetchable, + ReadWrite, + 0x0, // Granularity + 0x208000000, // Min Base Address pci address + 0x208ffffff, // Max Base Address + 0x0, // Translate + 0x1000000 // Length, 16M + ) + }) // Name(RBUF) + Return (RBUF) + } // Method(_CRS), this method return RBUF! + + Method (_STA, 0x0, NotSerialized) + { + Return (0xf) + } + + Method (_PXM, 0, NotSerialized) + { + Return(0x01) + } +} + +Device (PCI4) +{ + Name (_HID, "PNP0A08") // PCI Express Root Bridge + Name (_UID, 4) + Name (_CID, "PNP0A03") // Compatible PCI Root Bridge, Compatible ID + Name(_SEG, 0) // Segment of this Root complex + Name(_BBN, 0x7c) // Base Bus Number ?? + Name(_CCA, 1) // cache coherence attribute ?? + Method (_CRS, 0, Serialized) { // Root complex resources, _CRS: current resource + Name (RBUF, ResourceTemplate () { // Name: 19.6.87, ResourceTemplate: 19.6.111, + WordBusNumber ( // Bus numbers assigned to this root, + ResourceProducer, + MinFixed, + MaxFixed, + PosDecode, + 0, // AddressGranularity + 0x7c, // AddressMinimum - Minimum Bus Number + 0x7d, // AddressMaximum - Maximum Bus Number + 0, // AddressTranslation - Set to 0 + 0x2 // RangeLength - Number of Busses + ) + QWordMemory ( // 64-bit BAR Windows + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Prefetchable, + ReadWrite, + 0x0, // Granularity + 0x120000000, // Min Base Address pci address + 0x13fffffff, // Max Base Address + 0x0, // Translate + 0x20000000 // Length, 512M + ) + }) // Name(RBUF) + Return (RBUF) + } // Method(_CRS), this method return RBUF! + + Method (_STA, 0x0, NotSerialized) + { + Return (0x0F) + } + + Method (_PXM, 0, NotSerialized) + { + Return(0x01) + } +} + +Device (PCI5) +{ + Name (_HID, "PNP0A08") // PCI Express Root Bridge + Name (_UID, 5) + Name (_CID, "PNP0A03") // Compatible PCI Root Bridge, Compatible ID + Name(_SEG, 0) // Segment of this Root complex + Name(_BBN, 0x74) // Base Bus Number ?? + Name(_CCA, 1) // cache coherence attribute ?? + + Name (_PRT, Package (){ + Package () {0x2FFFF,0,0,640}, // INT_A + Package () {0x2FFFF,1,0,641}, // INT_B + Package () {0x2FFFF,2,0,642}, // INT_C + Package () {0x2FFFF,3,0,643}, // INT_D + Package () {0x3FFFF,0,0,640}, // INT_A + Package () {0x3FFFF,1,0,641}, // INT_B + Package () {0x3FFFF,2,0,642}, // INT_C + Package () {0x3FFFF,3,0,643}, // INT_D + }) + + Method (_CRS, 0, Serialized) { // Root complex resources, _CRS: current resource setting + Name (RBUF, ResourceTemplate () { // Name: 19.6.87, ResourceTemplate: 19.6.111, + WordBusNumber ( // Bus numbers assigned to this root, + ResourceProducer, + MinFixed, + MaxFixed, + PosDecode, + 0, // AddressGranularity + 0x74, // AddressMinimum - Minimum Bus Number + 0x76, // AddressMaximum - Maximum Bus Number + 0, // AddressTranslation - Set to 0 + 0x3 // RangeLength - Number of Busses + ) + QWordMemory ( // 64-bit BAR Windows + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Prefetchable, + ReadWrite, + 0x0, // Granularity + 0x144000000, // Min Base Address pci address + 0x147ffffff, // Max Base Address + 0x0, // Translate + 0x4000000 // Length, 32M + ) + QWordMemory ( // 32-bit non-prefetch BAR Windows + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Cacheable, + ReadWrite, + 0x0, // Granularity + 0xa2000000, // Min Base Address pci address + 0xa2ffffff, // Max Base Address + 0x0, // Translate + 0x1000000 // Length, 16M + ) + }) // Name(RBUF) + Return (RBUF) + } // Method(_CRS), this method return RBUF! + + Method (_STA, 0x0, NotSerialized) + { + Return (0xf) + } + + Device (SAS0) + { + Name (_ADR, 0x00020000) + Name (_DSD, Package () + { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () + { + Package (2) {"sas-addr", Package() {0x50, 0x01, 0x88, 0x20, 0x16, 0x00, 0x00, 0x00}}, + Package () {"queue-count", 16}, + Package () {"phy-count", 8}, + } + }) + + OperationRegion (CTL, SystemMemory, 0x140070000, 0x1000) + Field (CTL, DWordAcc, NoLock, Preserve) + { + Offset (0xa18), + RST, 32, + DRST, 32, + } + + OperationRegion (TXD, SystemMemory, 0xA2000000, 0x4000) + Field (TXD, DwordAcc, NoLock, Preserve) + { + Offset (0x2350), //port0 + ST00, 32, //0x2350 + ST01, 32, //0x2354 + ST02, 32, //0x2358 + ST03, 32, //0x235c + ST04, 32, //0x2360 + ST05, 32, //0x2364 + ST06, 32, //0x2368 + ST07, 32, //0x236c + Offset (0x2750), //port1 + ST10, 32, //0x2750 + ST11, 32, //0x2754 + ST12, 32, //0x2758 + ST13, 32, //0x275c + ST14, 32, //0x2760 + ST15, 32, //0x2764 + ST16, 32, //0x2768 + ST17, 32, //0x276c + Offset (0x2b50), //port2 + ST20, 32, //0x2b50 + ST21, 32, //0x2b54 + ST22, 32, //0x2b58 + ST23, 32, //0x2b5c + ST24, 32, //0x2b60 + ST25, 32, //0x2b64 + ST26, 32, //0x2b68 + ST27, 32, //0x2b6c + Offset (0x2f50), //port3 + ST30, 32, //0x2f50 + ST31, 32, //0x2f54 + ST32, 32, //0x2f58 + ST33, 32, //0x2f5c + ST34, 32, //0x2f60 + ST35, 32, //0x2f64 + ST36, 32, //0x2f68 + ST37, 32, //0x2f6c + Offset (0x3350), //port4 + ST40, 32, //0x3350 + ST41, 32, //0x3354 + ST42, 32, //0x3358 + ST43, 32, //0x335c + ST44, 32, //0x3360 + ST45, 32, //0x3364 + ST46, 32, //0x3368 + ST47, 32, //0x336c + Offset (0x3750),//port5 + ST50, 32, //0x3750 + ST51, 32, //0x3754 + ST52, 32, //0x3758 + ST53, 32, //0x375c + ST54, 32, //0x3760 + ST55, 32, //0x3764 + ST56, 32, //0x3768 + ST57, 32, //0x376c + Offset (0x3b50), //port6 + ST60, 32, //0x3b50 + ST61, 32, //0x3b54 + ST62, 32, //0x3b58 + ST63, 32, //0x3b5c + ST64, 32, //0x3b60 + ST65, 32, //0x3b64 + ST66, 32, //0x3b68 + ST67, 32, //0x3b6c + Offset (0x3f50), //port7 + ST70, 32, //0x3f50 + ST71, 32, //0x3f54 + ST72, 32, //0x3f58 + ST73, 32, //0x3f5c + ST74, 32, //0x3f60 + ST75, 32, //0x3f64 + ST76, 32, //0x3f68 + ST77, 32 //0x3f6c + } + + Method (_RST, 0x0, Serialized) + { + Store(0x7FFFFFF, RST) + Sleep(1) + Store(0x7FFFFFF, DRST) + Sleep(1) + + //port0 + Store (0x8D04, ST00) + Sleep(1) + Store (0x8D04, ST01) + Sleep(1) + Store (0x8D04, ST02) + Sleep(1) + Store (0x8D04, ST03) + Sleep(1) + Store (0x8D04, ST05) + Sleep(1) + Store (0x8D04, ST06) + Sleep(1) + Store (0x8D04, ST07) + Sleep(1) + + //port1 + Store (0x8D04, ST10) + Sleep(1) + Store (0x8D04, ST11) + Sleep(1) + Store (0x8D04, ST12) + Sleep(1) + Store (0x8D04, ST13) + Sleep(1) + Store (0x8D04, ST15) + Sleep(1) + Store (0x8D04, ST16) + Sleep(1) + Store (0x8D04, ST17) + Sleep(1) + + //port2 + Store (0x8D04, ST20) + Sleep(1) + Store (0x8D04, ST21) + Sleep(1) + Store (0x8D04, ST22) + Sleep(1) + Store (0x8D04, ST23) + Sleep(1) + Store (0x8D04, ST25) + Sleep(1) + Store (0x8D04, ST26) + Sleep(1) + Store (0x8D04, ST27) + Sleep(1) + + //port3 + Store (0x8D04, ST30) + Sleep(1) + Store (0x8D04, ST31) + Sleep(1) + Store (0x8D04, ST32) + Sleep(1) + Store (0x8D04, ST33) + Sleep(1) + Store (0x8D04, ST35) + Sleep(1) + Store (0x8D04, ST36) + Sleep(1) + Store (0x8D04, ST37) + Sleep(1) + + //port4 + Store (0x8D04, ST40) + Sleep(1) + Store (0x8D04, ST41) + Sleep(1) + Store (0x8D04, ST42) + Sleep(1) + Store (0x8D04, ST43) + Sleep(1) + Store (0x8D04, ST45) + Sleep(1) + Store (0x8D04, ST46) + Sleep(1) + Store (0x8D04, ST47) + Sleep(1) + + //port5 + Store (0x8D04, ST50) + Sleep(1) + Store (0x8D04, ST51) + Sleep(1) + Store (0x8D04, ST52) + Sleep(1) + Store (0x8D04, ST53) + Sleep(1) + Store (0x8D04, ST55) + Sleep(1) + Store (0x8D04, ST56) + Sleep(1) + Store (0x8D04, ST57) + Sleep(1) + + //port6 + Store (0x8D04, ST60) + Sleep(1) + Store (0x8D04, ST61) + Sleep(1) + Store (0x8D04, ST62) + Sleep(1) + Store (0x8D04, ST63) + Sleep(1) + Store (0x8D04, ST65) + Sleep(1) + Store (0x8D04, ST66) + Sleep(1) + Store (0x8D04, ST67) + Sleep(1) + + //port7 + Store (0x8D04, ST70) + Sleep(1) + Store (0x8D04, ST71) + Sleep(1) + Store (0x8D04, ST72) + Sleep(1) + Store (0x8D04, ST73) + Sleep(1) + Store (0x8D04, ST75) + Sleep(1) + Store (0x8D04, ST76) + Sleep(1) + Store (0x8D04, ST77) + Sleep(1) + } + } + + Method (_PXM, 0, NotSerialized) + { + Return(0x01) + } +} + +Device (PCI6) +{ // PCI0 indicate host bridge 0 + Name (_HID, "PNP0A08") // PCI Express Root Bridge + Name (_UID, 6) + Name (_CID, "PNP0A03") // Compatible PCI Root Bridge, Compatible ID + Name(_SEG, 0) // Segment of this Root complex + Name(_BBN, 0x80) // Base Bus Number ?? + Name(_CCA, 1) // cache coherence attribute ?? + + Name (_PRT, Package (){ + // INTx configure for RP0, whoes device number is 0 + // For ESL/FPGA debug, we should modify this according to + // specific hardware configuration. + Package () {0xFFFF,0,0,640}, // INT_A + Package () {0xFFFF,1,0,641}, // INT_B + Package () {0xFFFF,2,0,642}, // INT_C + Package () {0xFFFF,3,0,643}, // INT_D + + // This is an example of RP1 INTx configure. Adding or not + // adding RPx INTx configure deponds on hardware board topology, + // if UEFI enables RPx, RPy, RPz... related INTx configure + // should be added + Package () {0x04FFFF,0,0,640}, // INT_A + Package () {0x04FFFF,1,0,641}, // INT_B + Package () {0x04FFFF,2,0,642}, // INT_C + Package () {0x04FFFF,3,0,643}, // INT_D + + Package () {0x08FFFF,0,0,640}, // INT_A + Package () {0x08FFFF,1,0,641}, // INT_B + Package () {0x08FFFF,2,0,642}, // INT_C + Package () {0x08FFFF,3,0,643}, // INT_D + + Package () {0x0CFFFF,0,0,640}, // INT_A + Package () {0x0CFFFF,1,0,641}, // INT_B + Package () {0x0CFFFF,2,0,642}, // INT_C + Package () {0x0CFFFF,3,0,643}, // INT_D + + Package () {0x10FFFF,0,0,640}, // INT_A + Package () {0x10FFFF,1,0,641}, // INT_B + Package () {0x10FFFF,2,0,642}, // INT_C + Package () {0x10FFFF,3,0,643}, // INT_D + }) + + Method (_CRS, 0, Serialized) { // Root complex resources, _CRS: current resource setting + Name (RBUF, ResourceTemplate () { // Name: 19.6.87, ResourceTemplate: 19.6.111, + WordBusNumber ( // Bus numbers assigned to this root, + ResourceProducer, + MinFixed, + MaxFixed, + PosDecode, + 0, // AddressGranularity + 0x80, // AddressMinimum - Minimum Bus Number + 0x9f, // AddressMaximum - Maximum Bus Number + 0, // AddressTranslation - Set to 0 + 0x20 // RangeLength - Number of Busses + ) + QWordMemory ( // 64-bit prefetch BAR windows + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Prefetchable, + ReadWrite, + 0x0, // Granularity + 0x480000000000, // Min Base Address pci address + 0x483fffffffff, // Max Base Address + 0x0, // Translate + 0x4000000000 // Length, 256G + ) + QWordMemory ( // 32-bit non-prefetch BAR windows + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Cacheable, + ReadWrite, + 0x0, // Granularity + 0xf0000000, // Min Base Address pci address + 0xfffeffff, // Max Base Address + 0x0, // Translate + 0xfff0000 // Length, 256M - 64K + ) + QWordIO ( + ResourceProducer, + MinFixed, + MaxFixed, + PosDecode, + EntireRange, + 0x0, // Granularity + 0x0, // Min Base Address + 0xffff, // Max Base Address + 0xffff0000, // Translate + 0x10000 // Length, 64K + ) + }) // Name(RBUF) + Return (RBUF) + } // Method(_CRS), this method return RBUF! + + // + // OS Control Handoff + // + Name(SUPP, Zero) // PCI _OSC Support Field value + Name(CTRL, Zero) // PCI _OSC Control Field value + + Method(_OSC,4) { + // Check for proper UUID + If(LEqual(Arg0,ToUUID("33DB4D5B-1FF7-401C-9657-7441C03DD766"))) { + // Create DWord-adressable fields from the Capabilities Buffer + CreateDWordField(Arg3,0,CDW1) + CreateDWordField(Arg3,4,CDW2) + CreateDWordField(Arg3,8,CDW3) + + // Save Capabilities DWord2 & 3 + Store(CDW2,SUPP) + Store(CDW3,CTRL) + + // Only allow native hot plug control if OS supports: + // ASPM + // Clock PM + // MSI/MSI-X + If(LNotEqual(And(SUPP, 0x16), 0x16)) { + And(CTRL,0x1E,CTRL) // Mask bit 0 (and undefined bits) + } + + // Always allow native PME, AER (no dependencies) + + // Never allow SHPC (no SHPC controller in this system) + And(CTRL,0x1D,CTRL) + + If(LNotEqual(Arg1,One)) { // Unknown revision + Or(CDW1,0x08,CDW1) + } + + If(LNotEqual(CDW3,CTRL)) { // Capabilities bits were masked + Or(CDW1,0x10,CDW1) + } + + // Update DWORD3 in the buffer + Store(CTRL,CDW3) + Return(Arg3) + } Else { + Or(CDW1,4,CDW1) // Unrecognized UUID + Return(Arg3) + } + } // End _OSC + + Method (_HPX, 0) { + Return (Package(2) { + Package(6) { // PCI Setting Record + 0x00, // Type 0 + 0x01, // Revision 1 + 0x08, // CacheLineSize in DWORDS + 0x40, // LatencyTimer in PCI clocks + 0x01, // Enable SERR (Boolean) + 0x01 // Enable PERR (Boolean) + }, + + Package(18){ // PCI-X Setting Record + 0x02, // Type 2 + 0x01, // Revision 1 + 0xFFFFFFFF, // Uncorrectable Error Mask Register AND Mask, Keep ->1 + 0x00000000, // Uncorrectable Error Mask Register OR Mask, keep ->0 + 0xFFFFFFFF, // Uncorrectable Error Severity Register AND Mask + 0x00000000, // Uncorrectable Error Severity Register OR Mask + 0xFFFFFFFF, // Correctable Error Mask Register AND Mask + 0x00000000, // Correctable Error Mask Register OR Mask + 0xFFFFFFFF, // Advanced Error Capabilities and Control Register AND Mask + 0x00000000, // Advanced Error Capabilities and Control Register OR Mask + 0xFFF7, // Device Control Register AND Mask + 0x0007, // Device Control Register OR Mask + 0xFFFF, // Link Control Register AND Mask + 0x0000, // Link Control Register OR Mask + 0xFFFFFFFF, // Secondary Uncorrectable Error Severity Register AND Mask + 0x00000000, // Secondary Uncorrectable Error Severity Register OR Mask + 0xFFFFFFFF, // Secondary Uncorrectable Error Mask Register AND Mask + 0x00000000 // Secondary Uncorrectable Error Mask Register OR Mask + } + }) + } + + Method (_STA, 0x0, NotSerialized) + { + Return (0xf) + } + + Method (_PXM, 0, NotSerialized) + { + Return(0x03) + } +} // Device(PCI6) + + +Device (PCI7) +{ // PCI1 indicate host bridge 1 + Name (_HID, "PNP0A08") // PCI Express Root Bridge + Name (_UID, 7) + Name (_CID, "PNP0A03") // Compatible PCI Root Bridge, Compatible ID + Name(_SEG, 0) // Segment of this Root complex + Name(_BBN, 0xbb) // Base Bus Number ?? + Name(_CCA, 1) // cache coherence attribute ?? + Method (_CRS, 0, Serialized) { // Root complex resources, _CRS: current resource setting + Name (RBUF, ResourceTemplate () { // Name: 19.6.87, ResourceTemplate: 19.6.111, + WordBusNumber ( // Bus numbers assigned to this root, + ResourceProducer, + MinFixed, + MaxFixed, + PosDecode, + 0, // AddressGranularity + 0xbb, // AddressMinimum - Minimum Bus Number + 0xbb, // AddressMaximum - Maximum Bus Number + 0, // AddressTranslation - Set to 0 + 0x1 // RangeLength - Number of Busses + ) + QWordMemory ( // 64-bit BAR Windows, where to show this ?? + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Prefetchable, + ReadWrite, + 0x0, // Granularity + 0x400148800000, // Min Base Address pci address ?? + 0x400148ffffff, // Max Base Address + 0x0, // Translate + 0x800000 // Length, 8M + ) + }) // Name(RBUF) + Return (RBUF) + } // Method(_CRS), this method return RBUF! + + Method (_STA, 0x0, NotSerialized) + { + Return (0xf) + } + + Method (_PXM, 0, NotSerialized) + { + Return(0x03) + } +} // Device(PCI7) + +Device (PCI8) +{ + Name (_HID, "PNP0A08") // PCI Express Root Bridge + Name (_UID, 8) + Name (_CID, "PNP0A03") // Compatible PCI Root Bridge, Compatible ID + Name(_SEG, 0) // Segment of this Root complex + Name(_BBN, 0xba) // Base Bus Number + Name(_CCA, 1) // cache coherence attribute ?? + Name (_PRT, Package (){ + Package () {0xFFFF,0,0,640}, // INT_A + Package () {0xFFFF,1,0,641}, // INT_B + Package () {0xFFFF,2,0,642}, // INT_C + Package () {0xFFFF,3,0,643}, // INT_D + Package () {0x1FFFF,0,0,640}, // INT_A + Package () {0x1FFFF,1,0,641}, // INT_B + Package () {0x1FFFF,2,0,642}, // INT_C + Package () {0x1FFFF,3,0,643}, // INT_D + Package () {0x2FFFF,0,0,640}, // INT_A + Package () {0x2FFFF,1,0,641}, // INT_B + Package () {0x2FFFF,2,0,642}, // INT_C + Package () {0x2FFFF,3,0,643}, // INT_D + }) + + Method (_CRS, 0, Serialized) { // Root complex resources, _CRS: current resource // setting + Name (RBUF, ResourceTemplate () { // Name: 19.6.87, ResourceTemplate: 19.6.111, + WordBusNumber ( // Bus numbers assigned to this root, + ResourceProducer, + MinFixed, + MaxFixed, + PosDecode, + 0, // AddressGranularity + 0xba, // AddressMinimum - Minimum Bus Number + 0xba, // AddressMaximum - Maximum Bus Number + 0, // AddressTranslation - Set to 0 + 0x1 // RangeLength - Number of Busses + ) + QWordMemory ( // 64-bit BAR Windows + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Prefetchable, + ReadWrite, + 0x0, // Granularity + 0x40020c000000, // Min Base Address pci address + 0x40020c1fffff, // Max Base Address + 0x0, // Translate + 0x200000 // Length, 2M + ) + }) // Name(RBUF) + Return (RBUF) + } // Method(_CRS), this method return RBUF! + + Method (_STA, 0x0, NotSerialized) + { + Return (0xf) + } + + Method (_PXM, 0, NotSerialized) + { + Return(0x03) + } +}// Device(PCI8) + +Device (PCI9) +{ + Name (_HID, "PNP0A08") // PCI Express Root Bridge + Name (_UID, 9) + Name (_CID, "PNP0A03") // Compatible PCI Root Bridge, Compatible ID + Name(_SEG, 0) // Segment of this Root complex + Name(_BBN, 0xb8) // Base Bus Number ?? + Name(_CCA, 1) // cache coherence attribute ?? + Method (_CRS, 0, Serialized) { // Root complex resources, _CRS: current resource // setting + Name (RBUF, ResourceTemplate () { // Name: 19.6.87, ResourceTemplate: 19.6.111, + WordBusNumber ( // Bus numbers assigned to this root, + ResourceProducer, + MinFixed, + MaxFixed, + PosDecode, + 0, // AddressGranularity + 0xb8, // AddressMinimum - Minimum Bus Number + 0xb9, // AddressMaximum - Maximum Bus Number + 0, // AddressTranslation - Set to 0 + 0x2 // RangeLength - Number of Busses + ) + QWordMemory ( // 64-bit BAR Windows + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Prefetchable, + ReadWrite, + 0x0, // Granularity + 0x400208000000, // Min Base Address pci address + 0x400208ffffff, // Max Base Address + 0x0, // Translate + 0x1000000 // Length, 16M + ) + }) // Name(RBUF) + Return (RBUF) + } // Method(_CRS), this method return RBUF! + + Method (_STA, 0x0, NotSerialized) + { + Return (0xf) + } + + Method (_PXM, 0, NotSerialized) + { + Return(0x03) + } +}// Device(PCI9) + +Device (PCIA) +{ + Name (_HID, "PNP0A08") // PCI Express Root Bridge + Name (_UID, 0xA) + Name (_CID, "PNP0A03") // Compatible PCI Root Bridge, Compatible ID + Name(_SEG, 0) // Segment of this Root complex + Name(_BBN, 0xbc) // Base Bus Number ?? + Name(_CCA, 1) // cache coherence attribute ?? + Method (_CRS, 0, Serialized) { // Root complex resources, _CRS: current resource + Name (RBUF, ResourceTemplate () { // Name: 19.6.87, ResourceTemplate: 19.6.111, + WordBusNumber ( // Bus numbers assigned to this root, + ResourceProducer, + MinFixed, + MaxFixed, + PosDecode, + 0, // AddressGranularity + 0xbc, // AddressMinimum - Minimum Bus Number + 0xbd, // AddressMaximum - Maximum Bus Number + 0, // AddressTranslation - Set to 0 + 0x2 // RangeLength - Number of Busses + ) + QWordMemory ( // 64-bit BAR Windows + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Prefetchable, + ReadWrite, + 0x0, // Granularity + 0x400120000000, // Min Base Address pci address + 0x40013fffffff, // Max Base Address + 0x0, // Translate + 0x20000000 // Length, 512M + ) + }) // Name(RBUF) + Return (RBUF) + } // Method(_CRS), this method return RBUF! + + Method (_STA, 0x0, NotSerialized) + { + Return (0x0F) + } + + Method (_PXM, 0, NotSerialized) + { + Return(0x03) + } +}// Device(PCIA) + +Device (PCIB) +{ + Name (_HID, "PNP0A08") // PCI Express Root Bridge + Name (_UID, 0xB) + Name (_CID, "PNP0A03") // Compatible PCI Root Bridge, Compatible ID + Name(_SEG, 0) // Segment of this Root complex + Name(_BBN, 0xb4) // Base Bus Number ?? + Name(_CCA, 1) // cache coherence attribute ?? + + Name (_PRT, Package (){ + Package () {0x2FFFF,0,0,640}, // INT_A + Package () {0x2FFFF,1,0,641}, // INT_B + Package () {0x2FFFF,2,0,642}, // INT_C + Package () {0x2FFFF,3,0,643}, // INT_D + Package () {0x3FFFF,0,0,640}, // INT_A + Package () {0x3FFFF,1,0,641}, // INT_B + Package () {0x3FFFF,2,0,642}, // INT_C + Package () {0x3FFFF,3,0,643}, // INT_D + }) + + Method (_CRS, 0, Serialized) { // Root complex resources, _CRS: current resource setting + Name (RBUF, ResourceTemplate () { // Name: 19.6.87, ResourceTemplate: 19.6.111, + WordBusNumber ( // Bus numbers assigned to this root, + ResourceProducer, + MinFixed, + MaxFixed, + PosDecode, + 0, // AddressGranularity + 0xb4, // AddressMinimum - Minimum Bus Number + 0xb6, // AddressMaximum - Maximum Bus Number + 0, // AddressTranslation - Set to 0 + 0x3 // RangeLength - Number of Busses + ) + QWordMemory ( // 64-bit BAR Windows + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Prefetchable, + ReadWrite, + 0x0, // Granularity + 0x400144000000, // Min Base Address pci address + 0x400147ffffff, // Max Base Address + 0x0, // Translate + 0x4000000 // Length, 32M + ) + QWordMemory ( // 32-bit non-prefetch BAR Windows + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + Cacheable, + ReadWrite, + 0x0, // Granularity + 0xa3000000, // Min Base Address pci address + 0xa3ffffff, // Max Base Address + 0x0, // Translate + 0x1000000 // Length, 16M + ) + }) // Name(RBUF) + Return (RBUF) + } // Method(_CRS), this method return RBUF! + + Method (_STA, 0x0, NotSerialized) + { + Return (0xf) + } + + Method (_PXM, 0, NotSerialized) + { + Return(0x03) + } +} +} diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Power.asl b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Power.asl new file mode 100644 index 0000000000..39553e01af --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Power.asl @@ -0,0 +1,28 @@ +/** @file + Differentiated System Description Table Fields (DSDT) + + Copyright (c) 2014, ARM Ltd. All rights reserved.
+ Copyright (c) 2018, Hisilicon Limited. All rights reserved.
+ Copyright (c) 2016, Linaro Limited. All rights reserved.
+ This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + Based on the files under ArmPlatformPkg/ArmJunoPkg/AcpiTables/ + +**/ + +Scope(_SB) +{ + Device(PWRB) { + Name(_HID, "PNP0C0C") + Name(_UID, Zero) + Method(_STA, 0x0, NotSerialized) { + Return(0xF) + } + } +} diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Rde.asl b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Rde.asl new file mode 100644 index 0000000000..1dcf1bba7e --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Rde.asl @@ -0,0 +1,47 @@ +/** @file + Differentiated System Description Table Fields (DSDT) + + Copyright (c) 2014, ARM Ltd. All rights reserved.
+ Copyright (c) 2018, Hisilicon Limited. All rights reserved.
+ Copyright (c) 2015, Linaro Limited. All rights reserved.
+ This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + Based on the files under ArmPlatformPkg/ArmJunoPkg/AcpiTables/ + +**/ + +Scope(_SB) +{ + Device(RDE0) { + Name(_HID, "HISI0201") + Name(_UID, 0) + Name(_CCA, 1) + Name (_CRS, ResourceTemplate () { + //Memory32Fixed (ReadWrite, 0x602E0000, 0x10000) + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x209000000, + 0x209ffffff, + 0x0, + 0x01000000 + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI2") + { 586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601, + 602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617 + } + }) + } +} diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Sec.asl b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Sec.asl new file mode 100644 index 0000000000..bba455468e --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Sec.asl @@ -0,0 +1,57 @@ +/** @file + Differentiated System Description Table Fields (DSDT) + + Copyright (c) 2014, ARM Ltd. All rights reserved.
+ Copyright (c) 2018, Hisilicon Limited. All rights reserved.
+ Copyright (c) 2018, Linaro Limited. All rights reserved.
+ This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + Based on the files under ArmPlatformPkg/ArmJunoPkg/AcpiTables/ + +**/ + +Scope(_SB) +{ + Device(SEC0) { + Name (_HID, "HISI0200") + Name(_UID, 0) + Name(_CCA, 1) + Name (_CRS, ResourceTemplate () { + //Memory32Fixed (ReadWrite, 0x602E0000, 0x10000) + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x141000000, + 0x141ffffff, + 0x0, + 0x01000000 + ) + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MBI3") + { + 624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639, + 640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655 + } + }) + } + + Device(SEC1) { + Name(_HID, "HISI0200") + Name(_UID, 1) + Name (_CRS, ResourceTemplate () { + Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive) + { 466,467 + } + }) + } +} diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Socip4_i2c100k.asl b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Socip4_i2c100k.asl new file mode 100644 index 0000000000..622355ade0 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Socip4_i2c100k.asl @@ -0,0 +1,249 @@ +/** @file +* +* Copyright (c) 2018 Hisilicon Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +// +// GPIO +// + +//#include "ArmPlatform.h" +Scope(_SB) +{ +Device(GPO0) { + Name(_HID, "HISI0181") + Name(_ADR, 0) + Name(_UID, 0) + + Name (_CRS, ResourceTemplate () { + //Memory32Fixed (ReadWrite, 0x602E0000, 0x10000) + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x201120000, + 0x20112ffff, + 0x0, + 0x10000 + ) + Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive,,,) + { + 476, + } + }) + + Device(PRTa) { + Name(_ADR, 0) + Name(_UID, 0) + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"reg", 0}, + Package () {"snps,nr-gpios", 32}, + } + }) + } +} + +/** +*I2C for 100k release +**/ +Device(I2C0) { + Name(_HID, "HISI02A2") + Name(_ADR, 0) + Name(_UID, 0) + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"i2c-sda-falling-time-ns", 913}, + Package () {"i2c-scl-falling-time-ns", 303}, + Package () {"i2c-sda-hold-time-ns", 1000}, + Package () {"clock-frequency", 100000}, + } + }) + + Name (_CRS, ResourceTemplate () { + //Memory32Fixed (ReadWrite, 0x602E0000, 0x10000) + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x201160000, + 0x20116ffff, + 0x0, + 0x10000 + ) + Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive,,,) + { + 480, + } + }) +} + + +/** +*I2C for 100k vtof +**/ +Device(I2C2) { + Name(_HID, "HISI0182") + Name(_ADR, 0) + Name(_UID, 0) + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"i2c-sda-falling-time-ns", 913}, + Package () {"i2c-scl-falling-time-ns", 303}, + Package () {"i2c-sda-hold-time-ns", 1000}, + Package () {"clock-frequency", 100000}, + } + }) + + Name (_CRS, ResourceTemplate () { + //Memory32Fixed (ReadWrite, 0x602E0000, 0x10000) + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x201160000, + 0x20116ffff, + 0x0, + 0x10000 + ) + Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive,,,) + { + 480, + } + }) +} + +/** +*I2C for 400k fpga +**/ +Device(I2C3) { + Name(_HID, "HISI0183") + Name(_ADR, 0) + Name(_UID, 0) + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"i2c-sda-falling-time-ns", 300}, + Package () {"i2c-scl-falling-time-ns", 100}, + Package () {"i2c-sda-hold-time-ns", 250}, + Package () {"clock-frequency", 400000}, + } + }) + + Name (_CRS, ResourceTemplate () { + //Memory32Fixed (ReadWrite, 0x602E0000, 0x10000) + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x201160000, + 0x20116ffff, + 0x0, + 0x10000 + ) + Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive,,,) + { + 480, + } + }) +} + +Device(LPC) { + Name(_HID, "HISI0191") + Name(_ADR, 0) + Name(_UID, 0) + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + } + }) + + Name (_CRS, ResourceTemplate () { + Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive,,,) + { + 484, + 490 + } + }) +} + +Device(NAD) { + Name(_HID, "HISI0192") + Name(_ADR, 0) + Name(_UID, 0) + Name(_CCA, 1) + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"nand-bus-width", 8}, + Package () {"nand-ecc-mode", "hw"}, + Package () {"nand-ecc-strength", 24}, + Package () {"nand-ecc-step-size", 1024}, + } + }) + + Name (_CRS, ResourceTemplate () { + //Memory32Fixed (ReadWrite, 0x602E0000, 0x10000) + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x206220000, + 0x20622ffff, + 0x0, + 0x10000 + ) + + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x206210000, + 0x20621ffff, + 0x0, + 0x10000 + ) + + Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive,,,) + { + 483, + } + }) +} +} diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Socip4_i2c400k.asl b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Socip4_i2c400k.asl new file mode 100644 index 0000000000..5db4284467 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Hi1620Socip4_i2c400k.asl @@ -0,0 +1,249 @@ +/** @file +* +* Copyright (c) 2018 Hisilicon Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +// +// GPIO +// + +//#include "ArmPlatform.h" +Scope(_SB) +{ + Device(GPO0) { + Name(_HID, "HISI0181") + Name(_ADR, 0) + Name(_UID, 0) + + Name (_CRS, ResourceTemplate () { + //Memory32Fixed (ReadWrite, 0x602E0000, 0x10000) + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x201120000, + 0x20112ffff, + 0x0, + 0x10000 + ) + Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive,,,) + { + 476, + } + }) + + Device(PRTa) { + Name(_ADR, 0) + Name(_UID, 0) + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"reg", 0}, + Package () {"snps,nr-gpios", 32}, + } + }) + } + + } + +/** +*I2C for 400k release +**/ +Device(I2C1) { + Name(_HID, "HISI02A2") + Name(_ADR, 0) + Name(_UID, 0) + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"i2c-sda-falling-time-ns", 500}, + Package () {"i2c-scl-falling-time-ns", 100}, + Package () {"i2c-sda-hold-time-ns", 250}, + Package () {"clock-frequency", 400000}, + } + }) + + Name (_CRS, ResourceTemplate () { + //Memory32Fixed (ReadWrite, 0x602E0000, 0x10000) + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x201160000, + 0x20116ffff, + 0x0, + 0x10000 + ) + Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive,,,) + { + 480, + } + }) +} + +/** +*I2C for 100k vtof +**/ +Device(I2C2) { + Name(_HID, "HISI0182") + Name(_ADR, 0) + Name(_UID, 0) + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"i2c-sda-falling-time-ns", 913}, + Package () {"i2c-scl-falling-time-ns", 303}, + Package () {"i2c-sda-hold-time-ns", 1000}, + Package () {"clock-frequency", 100000}, + } + }) + + Name (_CRS, ResourceTemplate () { + //Memory32Fixed (ReadWrite, 0x602E0000, 0x10000) + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x201160000, + 0x20116ffff, + 0x0, + 0x10000 + ) + Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive,,,) + { + 480, + } + }) +} + +/** +*I2C for 400k fpga +**/ +Device(I2C3) { + Name(_HID, "HISI0183") + Name(_ADR, 0) + Name(_UID, 0) + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"i2c-sda-falling-time-ns", 300}, + Package () {"i2c-scl-falling-time-ns", 100}, + Package () {"i2c-sda-hold-time-ns", 250}, + Package () {"clock-frequency", 400000}, + } + }) + + Name (_CRS, ResourceTemplate () { + //Memory32Fixed (ReadWrite, 0x602E0000, 0x10000) + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x201160000, + 0x20116ffff, + 0x0, + 0x10000 + ) + Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive,,,) + { + 480, + } + }) +} + +Device(LPC) { + Name(_HID, "HISI0191") + Name(_ADR, 0) + Name(_UID, 0) + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + } + }) + + Name (_CRS, ResourceTemplate () { + Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive,,,) + { + 484, + 490 + } + }) +} + +Device(NAD) { + Name(_HID, "HISI0192") + Name(_ADR, 0) + Name(_UID, 0) + Name(_CCA, 1) + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"nand-bus-width", 8}, + Package () {"nand-ecc-mode", "hw"}, + Package () {"nand-ecc-strength", 24}, + Package () {"nand-ecc-step-size", 1024}, + } + }) + + Name (_CRS, ResourceTemplate () { + //Memory32Fixed (ReadWrite, 0x602E0000, 0x10000) + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x206220000, + 0x20622ffff, + 0x0, + 0x10000 + ) + + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x206210000, + 0x20621ffff, + 0x0, + 0x10000 + ) + + Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive,,,) + { + 483, + } + }) +} +} diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/LpcUart_clk.asl b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/LpcUart_clk.asl new file mode 100644 index 0000000000..14e36353ad --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/LpcUart_clk.asl @@ -0,0 +1,49 @@ +/** @file + Differentiated System Description Table Fields (DSDT) + + Copyright (c) 2014, ARM Ltd. All rights reserved.
+ Copyright (c) 2018, Hisilicon Limited. All rights reserved.
+ Copyright (c) 2015, Linaro Limited. All rights reserved.
+ This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + Based on the files under ArmPlatformPkg/ArmJunoPkg/AcpiTables/ + +**/ + +Scope(_SB) +{ + Device(UART) { + Name(_HID, "PNP0501") + Name(_UID, 0) + Name(_CCA, 1) + Name(_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"clock-frequency", 1843200}, + } + }) + Name(_CRS, ResourceTemplate() { + QWordMemory ( + ResourceConsumer, + , + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, + 0x3f00003f8, + 0x3f00003ff, + 0x0, + 0x8 + ) + Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive) { 484 } + }) + } +} + diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Pv680UncorePmu.asl b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Pv680UncorePmu.asl new file mode 100644 index 0000000000..65c3eccf0a --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/Pv680UncorePmu.asl @@ -0,0 +1,1658 @@ +/** @file + Differentiated System Description Table Fields (DSDT) + + Copyright (c) 2017, ARM Ltd. All rights reserved.
+ Copyright (c) 2018, Hisilicon Limited. All rights reserved.
+ Copyright (c) 2017, Linaro Limited. All rights reserved.
+ This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + Based on the files under ArmPlatformPkg/ArmJunoPkg/AcpiTables/ + +**/ + +Scope(_SB) +{ + // L3T0 for S0_TB(DieID:3) + Device (L300) { + Name (_HID, "HISI0213") // _HID: Hardware ID + Name (_UID, 0) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x90180000, // Min Base Address + 0x9018FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB30") + { + 832, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x03}, + Package () {"hisilicon,ccl-id", 0x00}, + } + }) + + } + // L3T1 for S0_TB(DieID:3) + Device (L301) { + Name (_HID, "HISI0213") // _HID: Hardware ID + Name (_UID, 1) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x90190000, // Min Base Address + 0x9019FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB31") + { + 833, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x03}, + Package () {"hisilicon,ccl-id", 0x01}, + } + }) + + } + + // L3T2 for S0_TB(DieID:3) + Device (L302) { + Name (_HID, "HISI0213") // _HID: Hardware ID + Name (_UID, 2) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x901A0000, // Min Base Address + 0x901AFFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB32") + { + 834, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x03}, + Package () {"hisilicon,ccl-id", 0x02}, + } + }) + + } + + // L3T3 for S0_TB(DieID:3) + Device (L303) { + Name (_HID, "HISI0213") // _HID: Hardware ID + Name (_UID, 3) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x901B0000, // Min Base Address + 0x901BFFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB33") + { + 835, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x03}, + Package () {"hisilicon,ccl-id", 0x03}, + } + }) + + } + // L3T4 for S0_TB(DieID:3) + Device (L304) { + Name (_HID, "HISI0213") // _HID: Hardware ID + Name (_UID, 4) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x901C0000, // Min Base Address + 0x901CFFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB34") + { + 836, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x03}, + Package () {"hisilicon,ccl-id", 0x04}, + } + }) + + } + // L3T5 for S0_TB(DieID:3) + Device (L305) { + Name (_HID, "HISI0213") // _HID: Hardware ID + Name (_UID, 5) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x901D0000, // Min Base Address + 0x901DFFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB35") + { + 837, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x03}, + Package () {"hisilicon,ccl-id", 0x05}, + } + }) + + } + + // DDRC0 for S0_TB(DieID:3) + Device (DDR0) { + Name (_HID, "HISI0233") // _HID: Hardware ID + Name (_UID, 0) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // DDRC address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x94D20000, // Min Base Address + 0x94D2FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB38") + { + 844, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x03}, + Package () {"hisilicon,ch-id", 0x0}, + } + }) + + } + // DDRC1 for S0_TB(DieID:3) + Device (DDR1) { + Name (_HID, "HISI0233") // _HID: Hardware ID + Name (_UID, 1) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // DDRC address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x94D30000, // Min Base Address + 0x94D3FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB39") + { + 845, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x03}, + Package () {"hisilicon,ch-id", 0x1}, + } + }) + + } + // DDRC2 for S0_TB(DieID:3) + Device (DDR2) { + Name (_HID, "HISI0233") // _HID: Hardware ID + Name (_UID, 2) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // DDRC address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x94D40000, // Min Base Address + 0x94D4FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB3A") + { + 846, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x03}, + Package () {"hisilicon,ch-id", 0x2}, + } + }) + + } + // DDRC3 for S0_TB(DieID:3) + Device (DDR3) { + Name (_HID, "HISI0233") // _HID: Hardware ID + Name (_UID, 3) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // DDRC address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x94D50000, // Min Base Address + 0x94D5FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB3B") + { + 847, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x03}, + Package () {"hisilicon,ch-id", 0x3}, + } + }) + + } + + // HHA0 for S0_TB(DieID:3) + Device (HHA0) { + Name (_HID, "HISI0243") // _HID: Hardware ID + Name (_UID, 0) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // HHA address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x90120000, // Min Base Address + 0x9012FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB3C") + { + 848, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x03} + } + }) + } + + // HHA1 for S0_TB(DieID:3) + Device (HHA1) { + Name (_HID, "HISI0243") // _HID: Hardware ID + Name (_UID, 1) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // HHA address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x90130000, // Min Base Address + 0x9013FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB3D") + { + 849, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x03} + } + }) + } + + // L3T0 for S0_TA(DieID:1) + Device (L308) { + Name (_HID, "HISI0213") // _HID: Hardware ID + Name (_UID, 0x08) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x98180000, // Min Base Address + 0x9818FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB10") + { + 832, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x01}, + Package () {"hisilicon,ccl-id", 0x00}, + } + }) + + } + // L3T1 for S0_TA(DieID:1) + Device (L309) { + Name (_HID, "HISI0213") // _HID: Hardware ID + Name (_UID, 0x09) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x98190000, // Min Base Address + 0x9819FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB11") + { + 833, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x01}, + Package () {"hisilicon,ccl-id", 0x01}, + } + }) + + } + + // L3T2 for S0_TA(DieID:1) + Device (L30A) { + Name (_HID, "HISI0213") // _HID: Hardware ID + Name (_UID, 0x0A) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x981A0000, // Min Base Address + 0x981AFFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB12") + { + 834, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x01}, + Package () {"hisilicon,ccl-id", 0x02}, + } + }) + + } + + // L3T3 for S0_TA(DieID:1) + Device (L30B) { + Name (_HID, "HISI0213") // _HID: Hardware ID + Name (_UID, 0x0B) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x981B0000, // Min Base Address + 0x981BFFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB13") + { + 835, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x01}, + Package () {"hisilicon,ccl-id", 0x03}, + } + }) + + } + // L3T4 for S0_TA(DieID:1) + Device (L30C) { + Name (_HID, "HISI0213") // _HID: Hardware ID + Name (_UID, 0x0C) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x981C0000, // Min Base Address + 0x981CFFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB14") + { + 836, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x01}, + Package () {"hisilicon,ccl-id", 0x04}, + } + }) + + } + // L3T5 for S0_TA(DieID:1) + Device (L30D) { + Name (_HID, "HISI0213") // _HID: Hardware ID + Name (_UID, 0x0D) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x981D0000, // Min Base Address + 0x981DFFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB15") + { + 837, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x01}, + Package () {"hisilicon,ccl-id", 0x05}, + } + }) + + } + + // DDRC0 for S0_TA(DieID:1) + Device (DDR4) { + Name (_HID, "HISI0233") // _HID: Hardware ID + Name (_UID, 4) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x9CD20000, // Min Base Address + 0x9CD2FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB18") + { + 844, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x01}, + Package () {"hisilicon,ch-id", 0x0}, + } + }) + + } + // DDRC1 for S0_TA(DieID:1) + Device (DDR5) { + Name (_HID, "HISI0233") // _HID: Hardware ID + Name (_UID, 5) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x9CD30000, // Min Base Address + 0x9CD3FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB19") + { + 845, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x01}, + Package () {"hisilicon,ch-id", 0x1}, + } + }) + + } + // DDRC2 for S0_TA(DieID:1) + Device (DDR6) { + Name (_HID, "HISI0233") // _HID: Hardware ID + Name (_UID, 6) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x9CD40000, // Min Base Address + 0x9CD4FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB1A") + { + 846, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x01}, + Package () {"hisilicon,ch-id", 0x2}, + } + }) + + } + // DDRC3 for S0_TA(DieID:1) + Device (DDR7) { + Name (_HID, "HISI0233") // _HID: Hardware ID + Name (_UID, 7) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x9CD50000, // Min Base Address + 0x9CD5FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB1B") + { + 847, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x01}, + Package () {"hisilicon,ch-id", 0x3}, + } + }) + } + + // HHA0 for S0_TA(DieID:1) + Device (HHA2) { + Name (_HID, "HISI0243") // _HID: Hardware ID + Name (_UID, 2) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // HHA address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x98120000, // Min Base Address + 0x9812FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB1C") + { + 848, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x01} + } + }) + } + + // HHA1 for S0_TA(DieID:1) + Device (HHA3) { + Name (_HID, "HISI0243") // _HID: Hardware ID + Name (_UID, 3) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // HHA address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x98130000, // Min Base Address + 0x9813FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB1D") + { + 849, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x01} + } + }) + } + + // It is the list PMU node of Socket1 + // L3T0 for S1_TB(DieID:7) + Device (L310) { + Name (_HID, "HISI0213") // _HID: Hardware ID + Name (_UID, 0x10) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x400090180000, // Min Base Address + 0x40009018FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB70") + { + 832, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x07}, + Package () {"hisilicon,ccl-id", 0x00}, + } + }) + + } + // L3T1 for S1_TB(DieID:7) + Device (L311) { + Name (_HID, "HISI0213") // _HID: Hardware ID + Name (_UID, 0x11) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x400090190000, // Min Base Address + 0x40009019FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB71") + { + 833, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x07}, + Package () {"hisilicon,ccl-id", 0x01}, + } + }) + + } + + // L3T2 for S1_TB(DieID:7) + Device (L312) { + Name (_HID, "HISI0213") // _HID: Hardware ID + Name (_UID, 0x12) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x4000901A0000, // Min Base Address + 0x4000901AFFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB72") + { + 834, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x07}, + Package () {"hisilicon,ccl-id", 0x02}, + } + }) + + } + + // L3T3 for S1_TB(DieID:7) + Device (L313) { + Name (_HID, "HISI0213") // _HID: Hardware ID + Name (_UID, 0x13) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x4000901B0000, // Min Base Address + 0x4000901BFFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB73") + { + 835, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x07}, + Package () {"hisilicon,ccl-id", 0x03}, + } + }) + + } + // L3T4 for S1_TB(DieID:7) + Device (L314) { + Name (_HID, "HISI0213") // _HID: Hardware ID + Name (_UID, 0x14) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x4000901C0000, // Min Base Address + 0x4000901CFFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB74") + { + 836, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x07}, + Package () {"hisilicon,ccl-id", 0x04}, + } + }) + + } + // L3T5 for S1_TB(DieID:7) + Device (L315) { + Name (_HID, "HISI0213") // _HID: Hardware ID + Name (_UID, 0x15) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x4000901D0000, // Min Base Address + 0x4000901DFFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB75") + { + 837, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x07}, + Package () {"hisilicon,ccl-id", 0x05}, + } + }) + + } + + // DDRC0 for S1_TB(DieID:7) + Device (DDR8) { + Name (_HID, "HISI0233") // _HID: Hardware ID + Name (_UID, 8) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // DDRC address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x400094D20000, // Min Base Address + 0x400094D2FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB78") + { + 844, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x07}, + Package () {"hisilicon,ch-id", 0x0}, + } + }) + + } + // DDRC1 for S1_TB(DieID:7) + Device (DDR9) { + Name (_HID, "HISI0233") // _HID: Hardware ID + Name (_UID, 9) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // DDRC address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x400094D30000, // Min Base Address + 0x400094D3FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB79") + { + 845, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x07}, + Package () {"hisilicon,ch-id", 0x1}, + } + }) + + } + // DDRC2 for S1_TB(DieID:7) + Device (DDRA) { + Name (_HID, "HISI0233") // _HID: Hardware ID + Name (_UID, 0xA) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // DDRC address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x400094D40000, // Min Base Address + 0x400094D4FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB7A") + { + 846, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x07}, + Package () {"hisilicon,ch-id", 0x2}, + } + }) + + } + // DDRC3 for S1_TB(DieID:7) + Device (DDRB) { + Name (_HID, "HISI0233") // _HID: Hardware ID + Name (_UID, 0xB) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // DDRC address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x400094D50000, // Min Base Address + 0x400094D5FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB7B") + { + 847, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x07}, + Package () {"hisilicon,ch-id", 0x3}, + } + }) + + } + + // HHA0 for S1_TB(DieID:7) + Device (HHA4) { + Name (_HID, "HISI0243") // _HID: Hardware ID + Name (_UID, 4) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // HHA address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x400090120000, // Min Base Address + 0x40009012FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB7C") + { + 848, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x07} + } + }) + } + + // HHA1 for S1_TB(DieID:7) + Device (HHA5) { + Name (_HID, "HISI0243") // _HID: Hardware ID + Name (_UID, 5) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // HHA address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x400090130000, // Min Base Address + 0x40009013FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB7D") + { + 849, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x07} + } + }) + } + + // L3T0 for S1_TA(DieID:5) + Device (L318) { + Name (_HID, "HISI0213") // _HID: Hardware ID + Name (_UID, 0x18) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x400098180000, // Min Base Address + 0x40009818FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB50") + { + 832, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x05}, + Package () {"hisilicon,ccl-id", 0x00}, + } + }) + + } + // L3T1 for S1_TA(DieID:5) + Device (L319) { + Name (_HID, "HISI0213") // _HID: Hardware ID + Name (_UID, 0x19) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x400098190000, // Min Base Address + 0x40009819FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB51") + { + 833, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x05}, + Package () {"hisilicon,ccl-id", 0x01}, + } + }) + + } + + // L3T2 for S1_TA(DieID:5) + Device (L31A) { + Name (_HID, "HISI0213") // _HID: Hardware ID + Name (_UID, 0x1A) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x4000981A0000, // Min Base Address + 0x4000981AFFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB52") + { + 834, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x05}, + Package () {"hisilicon,ccl-id", 0x02}, + } + }) + + } + + // L3T3 for S1_TA(DieID:5) + Device (L31B) { + Name (_HID, "HISI0213") // _HID: Hardware ID + Name (_UID, 0x1B) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x4000981B0000, // Min Base Address + 0x4000981BFFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB53") + { + 835, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x05}, + Package () {"hisilicon,ccl-id", 0x03}, + } + }) + + } + // L3T4 for S1_TA(DieID:5) + Device (L31C) { + Name (_HID, "HISI0213") // _HID: Hardware ID + Name (_UID, 0x1C) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x4000981C0000, // Min Base Address + 0x4000981CFFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB54") + { + 836, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x05}, + Package () {"hisilicon,ccl-id", 0x04}, + } + }) + + } + // L3T5 for S1_TA(DieID:5) + Device (L31D) { + Name (_HID, "HISI0213") // _HID: Hardware ID + Name (_UID, 0x1D) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x4000981D0000, // Min Base Address + 0x4000981DFFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB55") + { + 837, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x05}, + Package () {"hisilicon,ccl-id", 0x05}, + } + }) + + } + + // DDRC0 for S1_TA(DieID:5) + Device (DDRC) { + Name (_HID, "HISI0233") // _HID: Hardware ID + Name (_UID, 0xC) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x40009CD20000, // Min Base Address + 0x40009CD2FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB58") + { + 844, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x05}, + Package () {"hisilicon,ch-id", 0x0}, + } + }) + + } + // DDRC1 for S1_TA(DieID:5) + Device (DDRD) { + Name (_HID, "HISI0233") // _HID: Hardware ID + Name (_UID, 0xD) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x40009CD30000, // Min Base Address + 0x40009CD3FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB59") + { + 845, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x05}, + Package () {"hisilicon,ch-id", 0x1}, + } + }) + + } + // DDRC2 for S1_TA(DieID:5) + Device (DDRE) { + Name (_HID, "HISI0233") // _HID: Hardware ID + Name (_UID, 0xE) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x40009CD40000, // Min Base Address + 0x40009CD4FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB5A") + { + 846, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x05}, + Package () {"hisilicon,ch-id", 0x2}, + } + }) + + } + // DDRC3 for S1_TA(DieID:5) + Device (DDRF) { + Name (_HID, "HISI0233") // _HID: Hardware ID + Name (_UID, 0xF) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // L3T address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x40009CD50000, // Min Base Address + 0x40009CD5FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB5B") + { + 847, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x05}, + Package () {"hisilicon,ch-id", 0x3}, + } + }) + } + + // HHA0 for S1_TA(DieID:5) + Device (HHA6) { + Name (_HID, "HISI0243") // _HID: Hardware ID + Name (_UID, 6) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // HHA address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x400098120000, // Min Base Address + 0x40009812FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB5C") + { + 848, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x05} + } + }) + } + // HHA1 for S0_TA(DieID:5) + Device (HHA7) { + Name (_HID, "HISI0243") // _HID: Hardware ID + Name (_UID, 7) // _UID: Unique ID + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // HHA address base + ResourceProducer, + PosDecode, + MinFixed, + MaxFixed, + NonCacheable, + ReadWrite, + 0x0, // Granularity + 0x400098130000, // Min Base Address + 0x40009813FFFF, // Max Base Address + 0x0, // Translate + 0x10000 // Length + ) + + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, "\\_SB.MB5D") + { + 849, + } + }) + + Name (_DSD, Package () { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package () { + Package () {"hisilicon,scl-id", 0x05} + } + }) + } +} diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/ipmi.asl b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/ipmi.asl new file mode 100644 index 0000000000..555fe39936 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Dsdt/ipmi.asl @@ -0,0 +1,49 @@ +/** @file +* +* Copyright (c) 2018 Hisilicon Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +// +// LPC +// + +Scope(_SB) { + Device (IPI0) { + Name (_HID, "IPI0001") + Name (_UID, 0) + Name (_STR, Unicode("IPMI_BT")) + Name(_CCA, 1) + //Name (_CID, "IPI0001") + Method (_IFT) { + Return (0x03) + } + Method (_SRV) { + Return (0x0200) // IPMI Spec Revision 2.0 + } + Name (_CRS, ResourceTemplate () { // _CRS: Current Resource Settings + QWordMemory ( // BMC memory region + ResourceConsumer, + PosDecode, + MinFixed, + MaxFixed, + Cacheable, + ReadWrite, + 0x0, // Granularity + 0x3f00000e4, // Min Base Address + 0x3f00000e7, // Max Base Address + 0x0, // Translate + 0x4 // Length + ) + Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive) { 484 } + }) + } +} diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Facs.aslc b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Facs.aslc new file mode 100644 index 0000000000..9e57936b85 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Facs.aslc @@ -0,0 +1,67 @@ +/** @file +* Firmware ACPI Control Structure (FACS) +* +* Copyright (c) 2012 - 2014, ARM Limited. All rights reserved. +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2015, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +* Based on the files under ArmPlatformPkg/ArmJunoPkg/AcpiTables/ +* +**/ + +#include + +EFI_ACPI_6_2_FIRMWARE_ACPI_CONTROL_STRUCTURE Facs = { + EFI_ACPI_6_2_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE, // UINT32 Signature + sizeof (EFI_ACPI_6_2_FIRMWARE_ACPI_CONTROL_STRUCTURE), // UINT32 Length + 0xA152, // UINT32 HardwareSignature + 0, // UINT32 FirmwareWakingVector + 0, // UINT32 GlobalLock + 0, // UINT32 Flags + 0, // UINT64 XFirmwareWakingVector + EFI_ACPI_6_2_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION, // UINT8 Version; + { EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved0[0] + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved0[1] + EFI_ACPI_RESERVED_BYTE }, // UINT8 Reserved0[2] + 0, // UINT32 OspmFlags "Platform firmware must + // initialize this field to zero." + { EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[0] + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[1] + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[2] + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[3] + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[4] + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[5] + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[6] + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[7] + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[8] + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[9] + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[10] + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[11] + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[12] + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[13] + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[14] + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[15] + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[16] + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[17] + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[18] + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[19] + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[20] + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[21] + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[22] + EFI_ACPI_RESERVED_BYTE }, // UINT8 Reserved1[23] +}; + +// +// Reference the table being generated to prevent the optimizer from removing the +// data structure from the executable +// +VOID* CONST ReferenceAcpiTable = &Facs; + diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Fadt.aslc b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Fadt.aslc new file mode 100644 index 0000000000..e7ee6981ec --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Fadt.aslc @@ -0,0 +1,91 @@ +/** @file +* Fixed ACPI Description Table (FADT) +* +* Copyright (c) 2012 - 2014, ARM Limited. All rights reserved. +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2015, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +* Based on the files under ArmPlatformPkg/ArmJunoPkg/AcpiTables/ +* +**/ + +#include "Hi1620Platform.h" + +#include +#include + +EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE Fadt = { + ARM_ACPI_HEADER ( + EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE, + EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE, + EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE_REVISION + ), + 0, // UINT32 FirmwareCtrl + 0, // UINT32 Dsdt + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved0 + EFI_ACPI_6_2_PM_PROFILE_UNSPECIFIED, // UINT8 PreferredPmProfile + 0, // UINT16 SciInt + 0, // UINT32 SmiCmd + 0, // UINT8 AcpiEnable + 0, // UINT8 AcpiDisable + 0, // UINT8 S4BiosReq + 0, // UINT8 PstateCnt + 0, // UINT32 Pm1aEvtBlk + 0, // UINT32 Pm1bEvtBlk + 0, // UINT32 Pm1aCntBlk + 0, // UINT32 Pm1bCntBlk + 0, // UINT32 Pm2CntBlk + 0, // UINT32 PmTmrBlk + 0, // UINT32 Gpe0Blk + 0, // UINT32 Gpe1Blk + 0, // UINT8 Pm1EvtLen + 0, // UINT8 Pm1CntLen + 0, // UINT8 Pm2CntLen + 0, // UINT8 PmTmrLen + 0, // UINT8 Gpe0BlkLen + 0, // UINT8 Gpe1BlkLen + 0, // UINT8 Gpe1Base + 0, // UINT8 CstCnt + 0, // UINT16 PLvl2Lat + 0, // UINT16 PLvl3Lat + 0, // UINT16 FlushSize + 0, // UINT16 FlushStride + 0, // UINT8 DutyOffset + 0, // UINT8 DutyWidth + 0, // UINT8 DayAlrm + 0, // UINT8 MonAlrm + 0, // UINT8 Century + 0, // UINT16 IaPcBootArch + 0, // UINT8 Reserved1 + EFI_ACPI_6_2_HW_REDUCED_ACPI | EFI_ACPI_6_2_LOW_POWER_S0_IDLE_CAPABLE, // UINT32 Flags + NULL_GAS, // EFI_ACPI_6_2_GENERIC_ADDRESS_STRUCTURE ResetReg + 0, // UINT8 ResetValue + EFI_ACPI_6_2_ARM_PSCI_COMPLIANT, // UINT16 ArmBootArchFlags + EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION, // UINT8 MinorRevision + 0, // UINT64 XFirmwareCtrl + 0, // UINT64 XDsdt + NULL_GAS, // EFI_ACPI_6_2_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk + NULL_GAS, // EFI_ACPI_6_2_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk + NULL_GAS, // EFI_ACPI_6_2_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk + NULL_GAS, // EFI_ACPI_6_2_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk + NULL_GAS, // EFI_ACPI_6_2_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk + NULL_GAS, // EFI_ACPI_6_2_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk + NULL_GAS, // EFI_ACPI_6_2_GENERIC_ADDRESS_STRUCTURE XGpe0Blk + NULL_GAS, // EFI_ACPI_6_2_GENERIC_ADDRESS_STRUCTURE XGpe1Blk + NULL_GAS, // EFI_ACPI_6_2_GENERIC_ADDRESS_STRUCTURE SleepControlReg + NULL_GAS // EFI_ACPI_6_2_GENERIC_ADDRESS_STRUCTURE SleepStatusReg +}; + +// +// Reference the table being generated to prevent the optimizer from removing the +// data structure from the executable +// +VOID* CONST ReferenceAcpiTable = &Fadt; diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Gtdt.aslc b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Gtdt.aslc new file mode 100644 index 0000000000..45f5d20704 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Gtdt.aslc @@ -0,0 +1,86 @@ +/** @file +* Generic Timer Description Table (GTDT) +* +* Copyright (c) 2012 - 2014, ARM Limited. All rights reserved. +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2015, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +* Based on the files under ArmPlatformPkg/ArmJunoPkg/AcpiTables/ +* +**/ + +#include "Hi1620Platform.h" + +#include +#include +#include + +#define GTDT_TIMER_EDGE_TRIGGERED EFI_ACPI_6_2_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE +#define GTDT_TIMER_LEVEL_TRIGGERED 0 +#define GTDT_TIMER_ACTIVE_LOW EFI_ACPI_6_2_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY +#define GTDT_TIMER_ACTIVE_HIGH 0 +#define SYSTEM_TIMER_BASE_ADDRESS 0xFFFFFFFFFFFFFFFF + +#define GTDT_GTIMER_FLAGS (GTDT_TIMER_ACTIVE_LOW | GTDT_TIMER_LEVEL_TRIGGERED) + +#pragma pack (1) + +typedef struct { + EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLE Gtdt; + EFI_ACPI_6_2_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE Watchdogs[HI1620_WATCHDOG_COUNT]; +} EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLES; + +#pragma pack () + +EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLES Gtdt = { + { + ARM_ACPI_HEADER( + EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE, + EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLE, + EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION + ), + SYSTEM_TIMER_BASE_ADDRESS, // UINT64 PhysicalAddress + 0, // UINT32 Reserved + FixedPcdGet32 (PcdArmArchTimerSecIntrNum), // UINT32 SecurePL1TimerGSIV + GTDT_GTIMER_FLAGS, // UINT32 SecurePL1TimerFlags + FixedPcdGet32 (PcdArmArchTimerIntrNum), // UINT32 NonSecurePL1TimerGSIV + GTDT_GTIMER_FLAGS, // UINT32 NonSecurePL1TimerFlags + FixedPcdGet32 (PcdArmArchTimerVirtIntrNum), // UINT32 VirtualTimerGSIV + GTDT_GTIMER_FLAGS, // UINT32 VirtualTimerFlags + FixedPcdGet32 (PcdArmArchTimerHypIntrNum), // UINT32 NonSecurePL2TimerGSIV + GTDT_GTIMER_FLAGS, // UINT32 NonSecurePL2TimerFlags + 0xFFFFFFFFFFFFFFFF, // UINT64 CntReadBasePhysicalAddress +#ifdef notyet + PV660_WATCHDOG_COUNT, // UINT32 PlatformTimerCount + sizeof (EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLE) // UINT32 PlatfromTimerOffset + }, + { + { + EFI_ACPI_6_2_GTDT_SBSA_GENERIC_WATCHDOG, sizeof(EFI_ACPI_6_2_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE), + EFI_ACPI_RESERVED_BYTE, 0, 0, 0, 0 + }, + { + EFI_ACPI_6_2_GTDT_SBSA_GENERIC_WATCHDOG, sizeof(EFI_ACPI_6_2_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE), + EFI_ACPI_RESERVED_BYTE, 0, 0, 0, 0 + } + } +#else /* !notyet */ + 0, 0 + } +#endif + }; + +// +// Reference the table being generated to prevent the optimizer from removing the +// data structure from the executable +// +VOID* CONST ReferenceAcpiTable = &Gtdt; + diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Dbg2.aslc b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Dbg2.aslc new file mode 100644 index 0000000000..342ec33629 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Dbg2.aslc @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2018 Linaro Limited + * Copyright (c) 2018 Hisilicon Limited + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the BSD License which accompanies + * this distribution, and is available at + * http://opensource.org/licenses/bsd-license.php + * +*/ + +#include +#include +#include +#include +#include "Hi1620Platform.h" + +#define NUMBER_DEBUG_DEVICE_INFO 1 +#define NUMBER_OF_GENERIC_ADDRESS 1 +#define NAMESPACE_STRING_SIZE 8 +#define UART_LENGTH 0x1000 + +#pragma pack(1) + +typedef struct { + EFI_ACPI_DBG2_DEBUG_DEVICE_INFORMATION_STRUCT DdiHeader; + EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE Address[NUMBER_OF_GENERIC_ADDRESS]; + UINT32 AddressSize[NUMBER_OF_GENERIC_ADDRESS]; + CHAR8 NamespaceString[NAMESPACE_STRING_SIZE]; +} EFI_ACPI_DBG2_DDI_STRUCT; + +typedef struct { + EFI_ACPI_DEBUG_PORT_2_DESCRIPTION_TABLE Desc; + EFI_ACPI_DBG2_DDI_STRUCT Ddi[NUMBER_DEBUG_DEVICE_INFO]; +} EFI_ACPI_DEBUG_PORT_2_TABLE; + +#pragma pack() + +EFI_ACPI_DEBUG_PORT_2_TABLE Dbg2 = { + { + ARM_ACPI_HEADER( + EFI_ACPI_6_1_DEBUG_PORT_2_TABLE_SIGNATURE, + EFI_ACPI_DEBUG_PORT_2_TABLE, + EFI_ACPI_DEBUG_PORT_2_TABLE_REVISION + ), + OFFSET_OF(EFI_ACPI_DEBUG_PORT_2_TABLE, Ddi), + NUMBER_DEBUG_DEVICE_INFO + }, + { + { + { + EFI_ACPI_DBG2_DEBUG_DEVICE_INFORMATION_STRUCT_REVISION, + sizeof(EFI_ACPI_DBG2_DDI_STRUCT), + NUMBER_OF_GENERIC_ADDRESS, + NAMESPACE_STRING_SIZE, + OFFSET_OF(EFI_ACPI_DBG2_DDI_STRUCT, NamespaceString), + 0, //OemDataLength + 0, //OemDataOffset + EFI_ACPI_DBG2_PORT_TYPE_SERIAL, + EFI_ACPI_DBG2_PORT_SUBTYPE_SERIAL_ARM_PL011_UART, + {EFI_ACPI_RESERVED_BYTE, EFI_ACPI_RESERVED_BYTE}, + OFFSET_OF(EFI_ACPI_DBG2_DDI_STRUCT, Address), + OFFSET_OF(EFI_ACPI_DBG2_DDI_STRUCT, AddressSize), + }, + { + { + EFI_ACPI_6_1_SYSTEM_MEMORY, + 32, + 0, + EFI_ACPI_6_1_BYTE, + FixedPcdGet64 (PcdSerialDbgRegisterBase) + } + }, + { + UART_LENGTH + }, + "COM1" + } + } +}; + +// +// Reference the table being generated to prevent the optimizer from removing the +// data structure from the executable +// +VOID* CONST ReferenceAcpiTable = &Dbg2; diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Iort.asl b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Iort.asl new file mode 100644 index 0000000000..33b5d5250b --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Iort.asl @@ -0,0 +1,1989 @@ +/* + * Intel ACPI Component Architecture + * iASL Compiler/Disassembler version 20151124-64 + * Copyright (c) 2000 - 2015 Intel Corporation + * + * Template for [IORT] ACPI Table (static data table) + * Format: [ByteLength] FieldName : HexFieldValue + */ +[0004] Signature : "IORT" [IO Remapping Table] +[0004] Table Length : 01c8 +[0001] Revision : 00 +[0001] Checksum : BC +[0006] Oem ID : "HISI " // ? +[0008] Oem Table ID : "HIP08 " // ? +[0004] Oem Revision : 00000000 // ? +[0004] Asl Compiler ID : "INTL" +[0004] Asl Compiler Revision : 20150410 + +[0004] Node Count : 00000005 // ITS, SMMU and RC +[0004] Node Offset : 00000034 // ? +[0004] Reserved : 00000000 +[0004] Optional Padding : 00 00 00 00 + +/* 0x34 ITS, for PCIe */ +/* Here we use the P680/Hi1620 ACPI table which includes MADT table to help to debuge */ +[0001] Type : 00 +[0002] Length : 0018 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000000 // ? +[0004] Mapping Offset : 00000000 // ? + +[0004] ItsCount : 00000001 // ? +[0004] Identifiers : 00000000 // how to refer to MADT ? + +/* 0x4c SMMU for PCIe host bridge 0 and 1 */ +[0001] Type : 04 +[0002] Length : 0080 +[0001] Revision : 01 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000003 +[0004] Mapping Offset : 00000044 + +[0008] Base Address : 148000000 +[0004] Flags (decoded below) : 00000009 + COHACC Override : 1 + HTTU Override : 0 + Proximity Domain Valid : 1 +[0004] Reserved : 00000000 +[0008] VATOS Address : 0 +[0004] Model : 00000000 +[0004] Event Interrupt : 00000000 +[0004] PRI Interrupt : 00000000 +[0004] GERR Interrupt : 00000000 +[0004] Sync Interrupt : 00000000 +[0001] Proximity Domain : 01 +[0001] Reserved : 00 +[0002] Reserved : 0000 +[0004] DeviceID mapping index : 00000002 + +[0004] Input base : 00000000 +[0004] ID Count : 00004000 +[0004] Output Base : 00000000 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 1 + +[0004] Input base : 00007b00 +[0004] ID Count : 00000100 +[0004] Output Base : 00007b00 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 1 + +[0004] Input base : 00000000 //single mapping will ignore input base +[0004] ID Count : 00000001 +[0004] Output Base : 00007F01 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* 0xCC SMMU for PCIe host bridge 4 */ +[0001] Type : 04 +[0002] Length : 006C +[0001] Revision : 01 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000044 + +[0008] Base Address : 100000000 +[0004] Flags (decoded below) : 00000009 + COHACC Override : 1 + HTTU Override : 0 + Proximity Domain Valid : 1 +[0004] Reserved : 00000000 +[0008] VATOS Address : 0 +[0004] Model : 00000000 +[0004] Event Interrupt : 00000000 +[0004] PRI Interrupt : 00000000 +[0004] GERR Interrupt : 00000000 +[0004] Sync Interrupt : 00000000 +[0001] Proximity Domain : 01 +[0001] Reserved : 00 +[0002] Reserved : 0000 +[0004] DeviceID mapping index : 0001 + +[0004] Input base : 00007c00 +[0004] ID Count : 00000200 +[0004] Output Base : 00007c00 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 1 + +[0004] Input base : 00000000 //single mapping will ignore input base +[0004] ID Count : 00000001 +[0004] Output Base : 00007F03 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* 0x138 */ +/* SMMU for PCIe host bridge 5 */ +[0001] Type : 04 +[0002] Length : 006C +[0001] Revision : 01 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000044 + +[0008] Base Address : 140000000 +[0004] Flags (decoded below) : 00000009 + COHACC Override : 1 + HTTU Override : 0 + Proximity Domain Valid : 1 +[0004] Reserved : 00000000 +[0008] VATOS Address : 0 +[0004] Model : 00000000 +[0004] Event Interrupt : 00000000 +[0004] PRI Interrupt : 00000000 +[0004] GERR Interrupt : 00000000 +[0004] Sync Interrupt : 00000000 +[0001] Proximity Domain : 01 +[0001] Reserved : 00 +[0002] Reserved : 0000 +[0004] DeviceID mapping index : 00000001 + +[0004] Input base : 00007400 +[0004] ID Count : 00000300 +[0004] Output Base : 00007400 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 1 + +[0004] Input base : 00000000 //single mapping will ignore input base +[0004] ID Count : 00000001 +[0004] Output Base : 00007F04 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +// Here for Chip1 SMMU settings +/* 0x1A4 SMMU for PCIe host bridge 6 and 7 */ +[0001] Type : 04 +[0002] Length : 0080 +[0001] Revision : 01 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000003 +[0004] Mapping Offset : 00000044 + +[0008] Base Address : 400148000000 +[0004] Flags (decoded below) : 00000009 + COHACC Override : 1 + HTTU Override : 0 + Proximity Domain Valid : 1 +[0004] Reserved : 00000000 +[0008] VATOS Address : 0 +[0004] Model : 00000000 +[0004] Event Interrupt : 00000000 +[0004] PRI Interrupt : 00000000 +[0004] GERR Interrupt : 00000000 +[0004] Sync Interrupt : 00000000 +[0001] Proximity Domain : 03 +[0001] Reserved : 00 +[0002] Reserved : 0000 +[0004] DeviceID mapping index : 00000002 + +[0004] Input base : 00008000 +[0004] ID Count : 00002000 +[0004] Output Base : 00008000 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 1 + +[0004] Input base : 0000bb00 +[0004] ID Count : 00000100 +[0004] Output Base : 0000bb00 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 1 + +[0004] Input base : 00000000 //single mapping will ignore input base +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF01 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* 0x224 SMMU for PCIe host bridge 10 */ +[0001] Type : 04 +[0002] Length : 006C +[0001] Revision : 01 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000044 + +[0008] Base Address : 400100000000 +[0004] Flags (decoded below) : 00000009 + COHACC Override : 1 + HTTU Override : 0 + Proximity Domain Valid : 1 +[0004] Reserved : 00000000 +[0008] VATOS Address : 0 +[0004] Model : 00000000 +[0004] Event Interrupt : 00000000 +[0004] PRI Interrupt : 00000000 +[0004] GERR Interrupt : 00000000 +[0004] Sync Interrupt : 00000000 +[0001] Proximity Domain : 03 +[0001] Reserved : 00 +[0002] Reserved : 0000 +[0004] DeviceID mapping index : 0001 + +[0004] Input base : 0000BC00 +[0004] ID Count : 00000200 +[0004] Output Base : 0000BC00 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 1 + +[0004] Input base : 00000000 //single mapping will ignore input base +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF03 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* 0x290*/ +/* SMMU for PCIe host bridge 11 */ +[0001] Type : 04 +[0002] Length : 006C +[0001] Revision : 01 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000044 + +[0008] Base Address : 400140000000 +[0004] Flags (decoded below) : 00000009 + COHACC Override : 1 + HTTU Override : 0 + Proximity Domain Valid : 1 +[0004] Reserved : 00000000 +[0008] VATOS Address : 0 +[0004] Model : 00000000 +[0004] Event Interrupt : 00000000 +[0004] PRI Interrupt : 00000000 +[0004] GERR Interrupt : 00000000 +[0004] Sync Interrupt : 00000000 +[0001] Proximity Domain : 03 +[0001] Reserved : 00 +[0002] Reserved : 0000 +[0004] DeviceID mapping index : 00000001 + +[0004] Input base : 0000B400 +[0004] ID Count : 00000300 +[0004] Output Base : 0000B400 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 1 + +[0004] Input base : 00000000 //single mapping will ignore input base +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF04 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/*0x2FC RC 0 */ +[0001] Type : 02 +[0002] Length : 00A0 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 0000000C +[0004] Mapping Offset : 00000028 + +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000001 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0004] ATS Attribute : 00000000 +[0004] PCI Segment Number : 00000000 // should match with above MCFG + +/* BDF of pcie host 0 -> stream ID of pcie 0/1 SMMU */ +[0004] Input base : 00000000 +[0004] ID Count : 00004000 // the number of IDs in range +[0004] Output Base : 00000000 +[0004] Output Reference : 0000004c +[0004] Flags (decoded below) : 00000000 + Single Mapping : 1 + +/* BDF of pcie host 1 -> stream ID of pcie 0/1 SMMU */ +[0004] Input base : 00007b00 +[0004] ID Count : 00000100 // the number of IDs in range +[0004] Output Base : 00007b00 +[0004] Output Reference : 0000004c +[0004] Flags (decoded below) : 00000000 + Single Mapping : 1 + +/* host2 and host3 should no open smmu for chips smmu bug * +/* BDF of pcie host 2 -> stream ID of pcie 0/1 ITS */ +[0004] Input base : 00007a00 +[0004] ID Count : 00000100 // the number of IDs in range +[0004] Output Base : 00007a00 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 1 + +/* BDF of pcie host 3 -> stream ID of pcie 0/1 ITS */ +[0004] Input base : 00007800 +[0004] ID Count : 00000200 // the number of IDs in range +[0004] Output Base : 00007800 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 1 + +/* BDF of pcie host 4 -> stream ID of pcie 4 SMMU */ +[0004] Input base : 00007c00 +[0004] ID Count : 00000200 // the number of IDs in range +[0004] Output Base : 00007c00 +[0004] Output Reference : 000000cc +[0004] Flags (decoded below) : 00000000 + Single Mapping : 1 + +/* BDF of pcie host 5 -> stream ID of pcie 5 SMMU */ +[0004] Input base : 00007400 +[0004] ID Count : 00000300 // the number of IDs in range +[0004] Output Base : 00007400 +[0004] Output Reference : 00000138 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 1 + +/* BDF of pcie host 6 -> stream ID of pcie 6/7 SMMU */ +[0004] Input base : 00008000 +[0004] ID Count : 00002000 // the number of IDs in range +[0004] Output Base : 00008000 +[0004] Output Reference : 000001A4 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 1 + +/* BDF of pcie host 7 -> stream ID of pcie 6/7 SMMU */ +[0004] Input base : 0000BB00 +[0004] ID Count : 00000100 // the number of IDs in range +[0004] Output Base : 0000BB00 +[0004] Output Reference : 000001A4 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 1 + +/* host8 and host9 should no open smmu for chips smmu bug * +/* BDF of pcie host 8 -> stream ID of pcie ITS */ +[0004] Input base : 0000BA00 +[0004] ID Count : 00000100 // the number of IDs in range +[0004] Output Base : 0000BA00 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 1 + +/* BDF of pcie host 9 -> stream ID of pcie 0/1 ITS */ +[0004] Input base : 0000B800 +[0004] ID Count : 00000200 // the number of IDs in range +[0004] Output Base : 0000B800 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 1 + +/* BDF of pcie host 10 -> stream ID of pcie 10 SMMU */ +[0004] Input base : 0000BC00 +[0004] ID Count : 00000200 // the number of IDs in range +[0004] Output Base : 0000BC00 +[0004] Output Reference : 00000224 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 1 + +/* BDF of pcie host 11 -> stream ID of pcie 11 SMMU */ +[0004] Input base : 0000B400 +[0004] ID Count : 00000300 // the number of IDs in range +[0004] Output Base : 0000B400 +[0004] Output Reference : 00000290 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 1 + +/* mbi-gen for S0-TB-L3T0, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB30" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007FD1 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TB-L3T1, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB31" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007FD2 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TB-L3T2, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB32" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007FD3 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TB-L3T3, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB33" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007FD4 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TB-L3T4, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB34" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007FD5 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TB-L3T5, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB35" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007FD6 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TB-DDRC0, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB38" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007FDD // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TB-DDRC1, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB39" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007FDE // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TB-DDRC2, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB3A" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007FDF // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TB-DDRC3, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB3B" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007FC7 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TB-HHA0, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB3C" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007FC8 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TB-HHA1, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB3D" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007FC9 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TA-L3T0, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB10" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F51 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TA-L3T1, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB11" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F52 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TA-L3T2, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB12" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F53 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TA-L3T3, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB13" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F54 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TA-L3T4, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB14" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F55 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TA-L3T5, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB15" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F56 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TA-DDRC0, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB18" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F5D // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TA-DDRC1, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB19" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F5E // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TA-DDRC2, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB1A" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F5F // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TA-DDRC3, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB1B" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F47 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TA-HHA0, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB1C" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F48 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TA-HHA1, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB1D" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F49 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TB-L3T0, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB70" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BFD1 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TB-L3T1, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB71" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BFD2 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TB-L3T2, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB72" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BFD3 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TB-L3T3, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB73" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BFD4 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TB-L3T4, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB74" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BFD5 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TB-L3T5, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB75" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BFD6 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TB-DDRC0, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB78" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BFDD // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TB-DDRC1, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB79" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BFDE // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TB-DDRC2, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB7A" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BFDF // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TB-DDRC3, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB7B" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BFC7 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TB-HHA0, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB7C" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BFC8 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TB-HHA1, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB7D" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BFC9 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TA-L3T0, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB50" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF51 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TA-L3T1, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB51" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF52 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TA-L3T2, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB52" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF53 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TA-L3T3, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB53" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF54 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TA-L3T4, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB54" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF55 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TA-L3T5, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB55" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF56 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TA-DDRC0, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB58" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF5D // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TA-DDRC1, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB59" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF5E // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TA-DDRC2, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB5A" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF5F // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TA-DDRC3, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB5B" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF47 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TA-HHA0, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB5C" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF48 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TA-HHA1, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB5D" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF49 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + + +[320h 0800 1] Type : 01 +[321h 0801 2] Length : 0054 +[323h 0803 1] Revision : 00 +[324h 0804 4] Reserved : 00000000 +[328h 0808 4] Mapping Count : 00000001 +[32Ch 0812 4] Mapping Offset : 00000040 + +[330h 0816 4] Node Flags : 00000000 +[334h 0820 8] Memory Properties : [IORT Memory Access Properties] +[334h 0820 4] Cache Coherency : 00000000 +[338h 0824 1] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[339h 0825 2] Reserved : 0000 +[33Bh 0827 1] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[33Ch 0828 1] Memory Size Limit : 00 +[33Dh 0829 11] Device Name : "\_SB_.SEC0" +[348h 0840 24] Padding : \ + 00 00 00 00 00 00 00 00 01 00 00 00 80 00 04 00 \ + 4C 00 00 00 01 00 00 00 + +[34Ch 0844 4] Input base : 00000000 +[350h 0848 4] ID Count : 00000001 +[354h 0852 4] Output Base : 00000100 +[358h 0856 4] Output Reference : 00000100 +[35Ch 0860 4] Flags (decoded below) : 00000001 + Single Mapping : 1 +/* RDE device report++.*/ +[320h 0800 1] Type : 01 +[321h 0801 2] Length : 0054 +[323h 0803 1] Revision : 00 +[324h 0804 4] Reserved : 00000000 +[328h 0808 4] Mapping Count : 00000001 +[32Ch 0812 4] Mapping Offset : 00000040 + +[330h 0816 4] Node Flags : 00000000 +[334h 0820 8] Memory Properties : [IORT Memory Access Properties] +[334h 0820 4] Cache Coherency : 00000000 +[338h 0824 1] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[339h 0825 2] Reserved : 0000 +[33Bh 0827 1] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[33Ch 0828 1] Memory Size Limit : 00 +[33Dh 0829 11] Device Name : "\_SB_.RDE0" +[348h 0840 24] Padding : \ + 00 00 00 00 00 00 00 00 01 00 00 00 80 00 04 00 \ + 4C 00 00 00 01 00 00 00 + +[34Ch 0844 4] Input base : 00000000 +[350h 0848 4] ID Count : 00000001 +[354h 0852 4] Output Base : 00007f13 +[358h 0856 4] Output Reference : 00000034 +[35Ch 0860 4] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for MCTP, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MBI4" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F18 // MCTP device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620IortNoSmmu.asl b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620IortNoSmmu.asl new file mode 100644 index 0000000000..63d11b83eb --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620IortNoSmmu.asl @@ -0,0 +1,1736 @@ +/* + * Intel ACPI Component Architecture + * iASL Compiler/Disassembler version 20151124-64 + * Copyright (c) 2000 - 2015 Intel Corporation + * + * Template for [IORT] ACPI Table (static data table) + * Format: [ByteLength] FieldName : HexFieldValue + */ +[0004] Signature : "IORT" [IO Remapping Table] +[0004] Table Length : 01c8 +[0001] Revision : 00 +[0001] Checksum : BC +[0006] Oem ID : "HISI " // ? +[0008] Oem Table ID : "HIP08 " // ? +[0004] Oem Revision : 00000000 // ? +[0004] Asl Compiler ID : "INTL" +[0004] Asl Compiler Revision : 20150410 + +[0004] Node Count : 00000005 // ITS, SMMU and RC +[0004] Node Offset : 00000034 // ? +[0004] Reserved : 00000000 +[0004] Optional Padding : 00 00 00 00 + +/* 0x34 ITS, for PCIe */ +/* Here we use the P680/Hi1620 ACPI table which includes MADT table to help to debuge */ +[0001] Type : 00 +[0002] Length : 0018 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000000 // ? +[0004] Mapping Offset : 00000000 // ? + +[0004] ItsCount : 00000001 // ? +[0004] Identifiers : 00000000 // how to refer to MADT ? + +/*0x4c RC 0 */ +[0001] Type : 02 +[0002] Length : 00A0 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 0000000C +[0004] Mapping Offset : 00000028 + +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000001 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0004] ATS Attribute : 00000000 +[0004] PCI Segment Number : 00000000 // should match with above MCFG + +/* BDF of pcie host 0 -> stream ID of pcie 0/1 SMMU */ +[0004] Input base : 00000000 +[0004] ID Count : 00004000 // the number of IDs in range +[0004] Output Base : 00000000 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 0 + +/* BDF of pcie host 1 -> stream ID of pcie 0/1 SMMU */ +[0004] Input base : 00007b00 +[0004] ID Count : 00000100 // the number of IDs in range +[0004] Output Base : 00007b00 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 0 + +/* BDF of pcie host 2 -> stream ID of pcie 0/1 ITS */ +[0004] Input base : 00007a00 +[0004] ID Count : 00000100 // the number of IDs in range +[0004] Output Base : 00007a00 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 0 + +/* BDF of pcie host 3 -> stream ID of pcie 0/1 ITS */ +[0004] Input base : 00007800 +[0004] ID Count : 00000200 // the number of IDs in range +[0004] Output Base : 00007800 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 0 + +/* BDF of pcie host 4 -> stream ID of pcie 4 SMMU */ +[0004] Input base : 00007c00 +[0004] ID Count : 00000200 // the number of IDs in range +[0004] Output Base : 00007c00 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 0 + +/* BDF of pcie host 5 -> stream ID of pcie 5 SMMU */ +[0004] Input base : 00007400 +[0004] ID Count : 00000300 // the number of IDs in range +[0004] Output Base : 00007400 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 0 + +/* BDF of pcie host 6 -> stream ID of pcie 6/7 SMMU */ +[0004] Input base : 00008000 +[0004] ID Count : 00002000 // the number of IDs in range +[0004] Output Base : 00008000 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 0 + +/* BDF of pcie host 7 -> stream ID of pcie 6/7 SMMU */ +[0004] Input base : 0000BB00 +[0004] ID Count : 00000100 // the number of IDs in range +[0004] Output Base : 0000BB00 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 0 + +/* BDF of pcie host 8 -> stream ID of pcie ITS */ +[0004] Input base : 0000BA00 +[0004] ID Count : 00000100 // the number of IDs in range +[0004] Output Base : 0000BA00 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 0 + +/* BDF of pcie host 9 -> stream ID of pcie 0/1 ITS */ +[0004] Input base : 0000B800 +[0004] ID Count : 00000200 // the number of IDs in range +[0004] Output Base : 0000B800 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 0 + +/* BDF of pcie host 10 -> stream ID of pcie 10 SMMU */ +[0004] Input base : 0000BC00 +[0004] ID Count : 00000200 // the number of IDs in range +[0004] Output Base : 0000BC00 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 0 + +/* BDF of pcie host 11 -> stream ID of pcie 11 SMMU */ +[0004] Input base : 0000B400 +[0004] ID Count : 00000300 // the number of IDs in range +[0004] Output Base : 0000B400 +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000000 + Single Mapping : 0 + +/* mbi-gen for S0-TB-L3T0, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB30" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007FD1 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TB-L3T1, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB31" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007FD2 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TB-L3T2, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB32" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007FD3 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TB-L3T3, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB33" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007FD4 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TB-L3T4, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB34" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007FD5 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TB-L3T5, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB35" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007FD6 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TB-DDRC0, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB38" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007FDD // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TB-DDRC1, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB39" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007FDE // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TB-DDRC2, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB3A" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007FDF // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TB-DDRC3, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB3B" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007FC7 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TB-HHA0, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB3C" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007FC8 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TB-HHA1, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB3D" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007FC9 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TA-L3T0, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB10" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F51 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TA-L3T1, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB11" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F52 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TA-L3T2, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB12" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F53 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TA-L3T3, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB13" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F54 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TA-L3T4, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB14" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F55 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TA-L3T5, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB15" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F56 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TA-DDRC0, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB18" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F5D // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TA-DDRC1, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB19" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F5E // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TA-DDRC2, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB1A" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F5F // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TA-DDRC3, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB1B" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F47 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TA-HHA0, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB1C" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F48 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S0-TA-HHA1, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB1D" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F49 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TB-L3T0, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB70" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BFD1 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TB-L3T1, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB71" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BFD2 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TB-L3T2, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB72" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BFD3 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TB-L3T3, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB73" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BFD4 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TB-L3T4, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB74" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BFD5 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TB-L3T5, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB75" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BFD6 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TB-DDRC0, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB78" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BFDD // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TB-DDRC1, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB79" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BFDE // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TB-DDRC2, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB7A" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BFDF // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TB-DDRC3, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB7B" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BFC7 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TB-HHA0, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB7C" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BFC8 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TB-HHA1, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB7D" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BFC9 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TA-L3T0, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB50" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF51 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TA-L3T1, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB51" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF52 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TA-L3T2, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB52" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF53 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TA-L3T3, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB53" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF54 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TA-L3T4, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB54" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF55 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TA-L3T5, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB55" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF56 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TA-DDRC0, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB58" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF5D // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TA-DDRC1, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB59" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF5E // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TA-DDRC2, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB5A" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF5F // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TA-DDRC3, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB5B" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF47 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TA-HHA0, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB5C" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF48 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for S1-TA-HHA1, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MB5D" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 0000BF49 // PMU device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 + + +[320h 0800 1] Type : 01 +[321h 0801 2] Length : 0054 +[323h 0803 1] Revision : 00 +[324h 0804 4] Reserved : 00000000 +[328h 0808 4] Mapping Count : 00000001 +[32Ch 0812 4] Mapping Offset : 00000040 + +[330h 0816 4] Node Flags : 00000000 +[334h 0820 8] Memory Properties : [IORT Memory Access Properties] +[334h 0820 4] Cache Coherency : 00000000 +[338h 0824 1] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[339h 0825 2] Reserved : 0000 +[33Bh 0827 1] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[33Ch 0828 1] Memory Size Limit : 00 +[33Dh 0829 11] Device Name : "\_SB_.SEC0" +[348h 0840 24] Padding : \ + 00 00 00 00 00 00 00 00 01 00 00 00 80 00 04 00 \ + 4C 00 00 00 01 00 00 00 + +[34Ch 0844 4] Input base : 00000000 +[350h 0848 4] ID Count : 00000001 +[354h 0852 4] Output Base : 00000100 +[358h 0856 4] Output Reference : 00000034 +[35Ch 0860 4] Flags (decoded below) : 00000001 + Single Mapping : 1 +/* RDE device report++.*/ +[320h 0800 1] Type : 01 +[321h 0801 2] Length : 0054 +[323h 0803 1] Revision : 00 +[324h 0804 4] Reserved : 00000000 +[328h 0808 4] Mapping Count : 00000001 +[32Ch 0812 4] Mapping Offset : 00000040 + +[330h 0816 4] Node Flags : 00000000 +[334h 0820 8] Memory Properties : [IORT Memory Access Properties] +[334h 0820 4] Cache Coherency : 00000000 +[338h 0824 1] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[339h 0825 2] Reserved : 0000 +[33Bh 0827 1] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[33Ch 0828 1] Memory Size Limit : 00 +[33Dh 0829 11] Device Name : "\_SB_.RDE0" +[348h 0840 24] Padding : \ + 00 00 00 00 00 00 00 00 01 00 00 00 80 00 04 00 \ + 4C 00 00 00 01 00 00 00 + +[34Ch 0844 4] Input base : 00000000 +[350h 0848 4] ID Count : 00000001 +[354h 0852 4] Output Base : 00007f13 +[358h 0856 4] Output Reference : 00000034 +[35Ch 0860 4] Flags (decoded below) : 00000001 + Single Mapping : 1 + +/* mbi-gen for MCTP, named component */ +[0001] Type : 01 +[0002] Length : 0046 +[0001] Revision : 00 +[0004] Reserved : 00000000 +[0004] Mapping Count : 00000001 +[0004] Mapping Offset : 00000032 + +[0004] Node Flags : 00000000 +[0008] Memory Properties : [IORT Memory Access Properties] +[0004] Cache Coherency : 00000000 +[0001] Hints (decoded below) : 00 + Transient : 0 + Write Allocate : 0 + Read Allocate : 0 + Override : 0 +[0002] Reserved : 0000 +[0001] Memory Flags (decoded below) : 00 + Coherency : 0 + Device Attribute : 0 +[0001] Memory Size Limit : 00 +[0016] Device Name : "\_SB_.MBI4" +[0004] Padding : 00 00 00 00 + +[0004] Input base : 00000000 +[0004] ID Count : 00000001 +[0004] Output Base : 00007F18 // MCTP device id +[0004] Output Reference : 00000034 +[0004] Flags (decoded below) : 00000001 + Single Mapping : 1 diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Mcfg.aslc b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Mcfg.aslc new file mode 100644 index 0000000000..2d719ef562 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Mcfg.aslc @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2018 Hisilicon Limited + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the BSD License which accompanies + * this distribution, and is available at + * http://opensource.org/licenses/bsd-license.php + * + */ + +#include +#include "Hi1620Platform.h" + +#define MCFG_VERSION 0x1 + +#pragma pack(1) +typedef struct +{ + UINT64 ullBaseAddress; + UINT16 usSegGroupNum; + UINT8 ucStartBusNum; + UINT8 ucEndBusNum; + UINT32 Reserved2; +}EFI_MCFG_CONFIG_STRUCTURE; + +typedef struct +{ + EFI_ACPI_DESCRIPTION_HEADER Header; + UINT64 Reserved1; +}EFI_MCFG_TABLE_CONFIG; + +typedef struct +{ + EFI_MCFG_TABLE_CONFIG Acpi_Table_Mcfg; + EFI_MCFG_CONFIG_STRUCTURE Config_Structure; +}EFI_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_TABLE; +#pragma pack() + +EFI_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_TABLE Mcfg= +{ + { + { + EFI_ACPI_6_1_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE, + sizeof (EFI_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_TABLE), + MCFG_VERSION, + 0x00, // Checksum will be updated at runtime + {EFI_ACPI_ARM_OEM_ID}, + EFI_ACPI_ARM_OEM_TABLE_ID, + EFI_ACPI_ARM_OEM_REVISION, + EFI_ACPI_ARM_CREATOR_ID, + EFI_ACPI_ARM_CREATOR_REVISION + }, + 0x0000000000000000, //Reserved + }, + { + 0xd0000000, //Base Address + 0x0, //Segment Group Number + 0x0, //Start Bus Number + 0xff, //End Bus Number + 0x00000000, //Reserved + } +}; + +VOID* CONST ReferenceAcpiTable = &Mcfg; diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Slit.aslc b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Slit.aslc new file mode 100644 index 0000000000..53ae9a9235 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Slit.aslc @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2013 Linaro Limited + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the BSD License which accompanies + * this distribution, and is available at + * http://opensource.org/licenses/bsd-license.php + * + * Contributors: + * Yi Li - yi.li@linaro.org +*/ + +#include +#include "Hi1620Platform.h" + +#define EFI_ACPI_SYSTEM_LOCALITIES_ENTRY_COUNT 0x0000000000000004 + +#pragma pack(1) +typedef struct { + UINT8 Entry[EFI_ACPI_SYSTEM_LOCALITIES_ENTRY_COUNT]; +} EFI_ACPI_6_2_NUMBER_OF_SYSTEM_LOCALITIES_STRUCTURE; + +typedef struct { + EFI_ACPI_6_2_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER Header; + EFI_ACPI_6_2_NUMBER_OF_SYSTEM_LOCALITIES_STRUCTURE NumSlit[EFI_ACPI_SYSTEM_LOCALITIES_ENTRY_COUNT]; + +} EFI_ACPI_6_2_SYSTEM_LOCALITY_INFORMATION_TABLE; +#pragma pack() + +// +// System Locality Information Table +// Please modify all values in Slit.h only. +// +EFI_ACPI_6_2_SYSTEM_LOCALITY_INFORMATION_TABLE Slit = { + { + { + EFI_ACPI_6_2_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE, + sizeof (EFI_ACPI_6_2_SYSTEM_LOCALITY_INFORMATION_TABLE), + EFI_ACPI_6_2_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION, + 0x00, // Checksum will be updated at runtime + {EFI_ACPI_ARM_OEM_ID}, + EFI_ACPI_ARM_OEM_TABLE_ID, + EFI_ACPI_ARM_OEM_REVISION, + EFI_ACPI_ARM_CREATOR_ID, + EFI_ACPI_ARM_CREATOR_REVISION, + }, + // + // Beginning of SLIT specific fields + // + EFI_ACPI_SYSTEM_LOCALITIES_ENTRY_COUNT, + }, + { + {{0x0A, 0x10, 0x20, 0x21}}, //Locality 0 + {{0x10, 0x0A, 0x19, 0x20}}, //Locality 1 + {{0x20, 0x19, 0x0A, 0x10}}, //Locality 2 + {{0x21, 0x20, 0x10, 0x0A}}, //Locality 3 + }, +}; + +// +// Reference the table being generated to prevent the optimizer from removing the +// data structure from the executable +// +VOID* CONST ReferenceAcpiTable = &Slit; diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Spcr.aslc b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Spcr.aslc new file mode 100644 index 0000000000..a9768d4ba2 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Spcr.aslc @@ -0,0 +1,81 @@ +/** @file +* Serial Port Console Redirection Table (SPCR) +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2016 Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +* Based on the files under ArmPlatformPkg/ArmJunoPkg/AcpiTables/ +* +**/ + +#include +#include +#include +#include +#include "Hi1620Platform.h" + +#define SPCR_FLOW_CONTROL_NONE 0 + +STATIC EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE Spcr = { + ARM_ACPI_HEADER (EFI_ACPI_6_2_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE, + EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE, + EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_REVISION), + // UINT8 InterfaceType; + EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERFACE_TYPE_ARM_PL011_UART, + // UINT8 Reserved1[3]; + { + EFI_ACPI_RESERVED_BYTE, + EFI_ACPI_RESERVED_BYTE, + EFI_ACPI_RESERVED_BYTE + }, + // EFI_ACPI_6_2_GENERIC_ADDRESS_STRUCTURE BaseAddress; + ARM_GAS32 (FixedPcdGet64 (PcdSerialRegisterBase)), + // UINT8 InterruptType; + EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_GIC, + // UINT8 Irq; + 0, // Not used on ARM + // UINT32 GlobalSystemInterrupt; + 141, + // UINT8 BaudRate; + EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_BAUD_RATE_115200, + // UINT8 Parity; + EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_PARITY_NO_PARITY, + // UINT8 StopBits; + EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_STOP_BITS_1, + // UINT8 FlowControl; + SPCR_FLOW_CONTROL_NONE, + // UINT8 TerminalType; + EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_TERMINAL_TYPE_ANSI, + // UINT8 Reserved2; + EFI_ACPI_RESERVED_BYTE, + // UINT16 PciDeviceId; + 0xFFFF, + // UINT16 PciVendorId; + 0xFFFF, + // UINT8 PciBusNumber; + 0x00, + // UINT8 PciDeviceNumber; + 0x00, + // UINT8 PciFunctionNumber; + 0x00, + // UINT32 PciFlags; + 0x00000000, + // UINT8 PciSegment; + 0x00, + // UINT32 Reserved3; + EFI_ACPI_RESERVED_DWORD +}; + +// +// Reference the table being generated to prevent the optimizer from removing the +// data structure from the executable +// +VOID* CONST ReferenceAcpiTable = &Spcr; diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Srat.aslc b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Srat.aslc new file mode 100644 index 0000000000..aea4c21858 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/Hi1620Srat.aslc @@ -0,0 +1,166 @@ +/* + * Copyright (c) 2013 Linaro Limited + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the BSD License which accompanies + * this distribution, and is available at + * http://opensource.org/licenses/bsd-license.php + * + * Contributors: + * Yi Li - yi.li@linaro.org + * + * Based on the files under ArmPlatformPkg/ArmJunoPkg/AcpiTables/ +*/ + +#include +#include "Hi1620Platform.h" +#include +#include + + +// +// Static Resource Affinity Table definition +// +EFI_ACPI_STATIC_RESOURCE_AFFINITY_TABLE Srat = { + { + {EFI_ACPI_6_2_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE, + sizeof (EFI_ACPI_STATIC_RESOURCE_AFFINITY_TABLE), + EFI_ACPI_6_2_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION, + 0x00, // Checksum will be updated at runtime + {EFI_ACPI_ARM_OEM_ID}, + EFI_ACPI_ARM_OEM_TABLE_ID, + EFI_ACPI_ARM_OEM_REVISION, + EFI_ACPI_ARM_CREATOR_ID, + EFI_ACPI_ARM_CREATOR_REVISION}, + /*Reserved*/ + 0x00000001, // Reserved to be 1 for backward compatibility + EFI_ACPI_RESERVED_QWORD + }, + + // + // + // Memory Affinity + // + { + EFI_ACPI_6_1_MEMORY_AFFINITY_STRUCTURE_INIT(0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001), + EFI_ACPI_6_1_MEMORY_AFFINITY_STRUCTURE_INIT(0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001), + EFI_ACPI_6_1_MEMORY_AFFINITY_STRUCTURE_INIT(0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001), + EFI_ACPI_6_1_MEMORY_AFFINITY_STRUCTURE_INIT(0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001), + EFI_ACPI_6_1_MEMORY_AFFINITY_STRUCTURE_INIT(0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001), + EFI_ACPI_6_1_MEMORY_AFFINITY_STRUCTURE_INIT(0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001), + EFI_ACPI_6_1_MEMORY_AFFINITY_STRUCTURE_INIT(0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001), + EFI_ACPI_6_1_MEMORY_AFFINITY_STRUCTURE_INIT(0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001), + EFI_ACPI_6_1_MEMORY_AFFINITY_STRUCTURE_INIT(0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001), + EFI_ACPI_6_1_MEMORY_AFFINITY_STRUCTURE_INIT(0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001), + }, + + { + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000001,0x00000000,0x00000001,0x00000000), //GICC Affinity Processor 0 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000001,0x00000001,0x00000001,0x00000000), //GICC Affinity Processor 1 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000001,0x00000002,0x00000001,0x00000000), //GICC Affinity Processor 2 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000001,0x00000003,0x00000001,0x00000000), //GICC Affinity Processor 3 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000001,0x00000004,0x00000001,0x00000000), //GICC Affinity Processor 4 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000001,0x00000005,0x00000001,0x00000000), //GICC Affinity Processor 5 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000001,0x00000006,0x00000001,0x00000000), //GICC Affinity Processor 6 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000001,0x00000007,0x00000001,0x00000000), //GICC Affinity Processor 7 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000001,0x00000008,0x00000001,0x00000000), //GICC Affinity Processor 8 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000001,0x00000009,0x00000001,0x00000000), //GICC Affinity Processor 9 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000001,0x0000000A,0x00000001,0x00000000), //GICC Affinity Processor 10 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000001,0x0000000B,0x00000001,0x00000000), //GICC Affinity Processor 11 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000001,0x0000000C,0x00000001,0x00000000), //GICC Affinity Processor 12 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000001,0x0000000D,0x00000001,0x00000000), //GICC Affinity Processor 13 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000001,0x0000000E,0x00000001,0x00000000), //GICC Affinity Processor 14 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000001,0x0000000F,0x00000001,0x00000000), //GICC Affinity Processor 15 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000001,0x00000010,0x00000001,0x00000000), //GICC Affinity Processor 16 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000001,0x00000011,0x00000001,0x00000000), //GICC Affinity Processor 17 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000001,0x00000012,0x00000001,0x00000000), //GICC Affinity Processor 18 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000001,0x00000013,0x00000001,0x00000000), //GICC Affinity Processor 19 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000001,0x00000014,0x00000001,0x00000000), //GICC Affinity Processor 20 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000001,0x00000015,0x00000001,0x00000000), //GICC Affinity Processor 21 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000001,0x00000016,0x00000001,0x00000000), //GICC Affinity Processor 22 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000001,0x00000017,0x00000001,0x00000000), //GICC Affinity Processor 23 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000000,0x00000018,0x00000001,0x00000000), //GICC Affinity Processor 24 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000000,0x00000019,0x00000001,0x00000000), //GICC Affinity Processor 25 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000000,0x0000001A,0x00000001,0x00000000), //GICC Affinity Processor 26 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000000,0x0000001B,0x00000001,0x00000000), //GICC Affinity Processor 27 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000000,0x0000001C,0x00000001,0x00000000), //GICC Affinity Processor 28 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000000,0x0000001D,0x00000001,0x00000000), //GICC Affinity Processor 29 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000000,0x0000001E,0x00000001,0x00000000), //GICC Affinity Processor 30 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000000,0x0000001F,0x00000001,0x00000000), //GICC Affinity Processor 31 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000000,0x00000020,0x00000001,0x00000000), //GICC Affinity Processor 32 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000000,0x00000021,0x00000001,0x00000000), //GICC Affinity Processor 33 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000000,0x00000022,0x00000001,0x00000000), //GICC Affinity Processor 34 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000000,0x00000023,0x00000001,0x00000000), //GICC Affinity Processor 35 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000000,0x00000024,0x00000001,0x00000000), //GICC Affinity Processor 36 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000000,0x00000025,0x00000001,0x00000000), //GICC Affinity Processor 37 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000000,0x00000026,0x00000001,0x00000000), //GICC Affinity Processor 38 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000000,0x00000027,0x00000001,0x00000000), //GICC Affinity Processor 39 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000000,0x00000028,0x00000001,0x00000000), //GICC Affinity Processor 40 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000000,0x00000029,0x00000001,0x00000000), //GICC Affinity Processor 41 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000000,0x0000002A,0x00000001,0x00000000), //GICC Affinity Processor 42 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000000,0x0000002B,0x00000001,0x00000000), //GICC Affinity Processor 43 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000000,0x0000002C,0x00000001,0x00000000), //GICC Affinity Processor 44 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000000,0x0000002D,0x00000001,0x00000000), //GICC Affinity Processor 45 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000000,0x0000002E,0x00000001,0x00000000), //GICC Affinity Processor 46 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000000,0x0000002F,0x00000001,0x00000000), //GICC Affinity Processor 47 + + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000003,0x00000030,0x00000001,0x00000000), //GICC Affinity Processor 48 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000003,0x00000031,0x00000001,0x00000000), //GICC Affinity Processor 49 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000003,0x00000032,0x00000001,0x00000000), //GICC Affinity Processor 50 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000003,0x00000033,0x00000001,0x00000000), //GICC Affinity Processor 51 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000003,0x00000034,0x00000001,0x00000000), //GICC Affinity Processor 52 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000003,0x00000035,0x00000001,0x00000000), //GICC Affinity Processor 53 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000003,0x00000036,0x00000001,0x00000000), //GICC Affinity Processor 54 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000003,0x00000037,0x00000001,0x00000000), //GICC Affinity Processor 55 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000003,0x00000038,0x00000001,0x00000000), //GICC Affinity Processor 56 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000003,0x00000039,0x00000001,0x00000000), //GICC Affinity Processor 57 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000003,0x0000003A,0x00000001,0x00000000), //GICC Affinity Processor 58 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000003,0x0000003B,0x00000001,0x00000000), //GICC Affinity Processor 59 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000003,0x0000003C,0x00000001,0x00000000), //GICC Affinity Processor 60 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000003,0x0000003D,0x00000001,0x00000000), //GICC Affinity Processor 61 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000003,0x0000003E,0x00000001,0x00000000), //GICC Affinity Processor 62 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000003,0x0000003F,0x00000001,0x00000000), //GICC Affinity Processor 63 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000003,0x00000040,0x00000001,0x00000000), //GICC Affinity Processor 64 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000003,0x00000041,0x00000001,0x00000000), //GICC Affinity Processor 65 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000003,0x00000042,0x00000001,0x00000000), //GICC Affinity Processor 66 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000003,0x00000043,0x00000001,0x00000000), //GICC Affinity Processor 67 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000003,0x00000044,0x00000001,0x00000000), //GICC Affinity Processor 68 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000003,0x00000045,0x00000001,0x00000000), //GICC Affinity Processor 69 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000003,0x00000046,0x00000001,0x00000000), //GICC Affinity Processor 70 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000003,0x00000047,0x00000001,0x00000000), //GICC Affinity Processor 71 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000002,0x00000048,0x00000001,0x00000000), //GICC Affinity Processor 72 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000002,0x00000049,0x00000001,0x00000000), //GICC Affinity Processor 73 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000002,0x0000004A,0x00000001,0x00000000), //GICC Affinity Processor 74 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000002,0x0000004B,0x00000001,0x00000000), //GICC Affinity Processor 75 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000002,0x0000004C,0x00000001,0x00000000), //GICC Affinity Processor 76 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000002,0x0000004D,0x00000001,0x00000000), //GICC Affinity Processor 77 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000002,0x0000004E,0x00000001,0x00000000), //GICC Affinity Processor 78 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000002,0x0000004F,0x00000001,0x00000000), //GICC Affinity Processor 79 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000002,0x00000050,0x00000001,0x00000000), //GICC Affinity Processor 80 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000002,0x00000051,0x00000001,0x00000000), //GICC Affinity Processor 81 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000002,0x00000052,0x00000001,0x00000000), //GICC Affinity Processor 82 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000002,0x00000053,0x00000001,0x00000000), //GICC Affinity Processor 83 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000002,0x00000054,0x00000001,0x00000000), //GICC Affinity Processor 84 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000002,0x00000055,0x00000001,0x00000000), //GICC Affinity Processor 85 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000002,0x00000056,0x00000001,0x00000000), //GICC Affinity Processor 86 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000002,0x00000057,0x00000001,0x00000000), //GICC Affinity Processor 87 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000002,0x00000058,0x00000001,0x00000000), //GICC Affinity Processor 88 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000002,0x00000059,0x00000001,0x00000000), //GICC Affinity Processor 89 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000002,0x0000005A,0x00000001,0x00000000), //GICC Affinity Processor 90 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000002,0x0000005B,0x00000001,0x00000000), //GICC Affinity Processor 91 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000002,0x0000005C,0x00000001,0x00000000), //GICC Affinity Processor 92 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000002,0x0000005D,0x00000001,0x00000000), //GICC Affinity Processor 93 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000002,0x0000005E,0x00000001,0x00000000), //GICC Affinity Processor 94 + EFI_ACPI_6_1_GICC_AFFINITY_STRUCTURE_INIT(0x00000002,0x0000005F,0x00000001,0x00000000), //GICC Affinity Processor 95 + }, + { + EFI_ACPI_6_2_ITS_AFFINITY_STRUCTURE_INIT(0x00000001, 0x00000000), + // EFI_ACPI_6_2_ITS_AFFINITY_STRUCTURE_INIT(0x00000003, 0x00000001), + }, +}; + +// +// Reference the table being generated to prevent the optimizer from removing the +// data structure from the executable +// +VOID* CONST ReferenceAcpiTable = &Srat; diff --git a/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/MadtHi1620.aslc b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/MadtHi1620.aslc new file mode 100644 index 0000000000..43b43142af --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/MadtHi1620.aslc @@ -0,0 +1,375 @@ +/** @file +* Multiple APIC Description Table (MADT) +* +* Copyright (c) 2012 - 2014, ARM Limited. All rights reserved. +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2015, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +* Based on the files under ArmPlatformPkg/ArmJunoPkg/AcpiTables/ +* +**/ + +#include "Hi1620Platform.h" + +#include +#include +#include +#include +#include + +// Differs from Juno, we have another affinity level beyond cluster and core +// 0x20000 is only for socket 0 +#define PLATFORM_GET_MPID_TA(ClusterId, CoreId) (0x10000 | ((ClusterId) << 8) | (CoreId)) +#define PLATFORM_GET_MPID_TB(ClusterId, CoreId) (0x30000 | ((ClusterId) << 8) | (CoreId)) +#define PLATFORM_GET_MPID_TA_2(ClusterId, CoreId) (0x50000 | ((ClusterId) << 8) | (CoreId)) +#define PLATFORM_GET_MPID_TB_2(ClusterId, CoreId) (0x70000 | ((ClusterId) << 8) | (CoreId)) + +// +// Multiple APIC Description Table +// +#pragma pack (1) + +typedef struct { + EFI_ACPI_6_2_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER Header; + EFI_ACPI_6_2_GIC_STRUCTURE GicInterfaces[EFI_ACPI_PROCESSOR_LOCAL_GICC_AFFINITY_STRUCTURE_COUNT]; + EFI_ACPI_6_2_GIC_DISTRIBUTOR_STRUCTURE GicDistributor; + EFI_ACPI_6_2_GIC_ITS_STRUCTURE GicITS[EFI_ACPI_6_2_ITS_AFFINITY_STRUCTURE_COUNT]; +} EFI_ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE; + +#pragma pack () + +EFI_ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE Madt = { + { + ARM_ACPI_HEADER ( + EFI_ACPI_6_2_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE, + EFI_ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE, + EFI_ACPI_6_2_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION + ), + // + // MADT specific fields + // + 0, // LocalApicAddress + 0, // Flags + }, + { + // Format: EFI_ACPI_6_1_GICC_STRUCTURE_INIT(GicId, AcpiCpuUid, Flags, PmuIrq, GicBase, GicVBase, GicHBase, + // GsivId, GicRBase, Mpidr) + // Note: The GIC Structure of the primary CPU must be the first entry (see note in 5.2.12.14 GICC Structure of + // ACPI v5.1). + // The cores from a same cluster are kept together. It is not an ACPI requirement but in case the OSPM uses + // the ACPI ARM Parking protocol, it might want to wake up the cores in the order of this table. + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 0, 0, PLATFORM_GET_MPID_TA(0, 0), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAE000000 + 0x100000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 1, 1, PLATFORM_GET_MPID_TA(0, 1), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAE000000 + 0x140000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 2, 2, PLATFORM_GET_MPID_TA(0, 2), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAE000000 + 0x180000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 3, 3, PLATFORM_GET_MPID_TA(0, 3), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAE000000 + 0x1C0000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 4, 4, PLATFORM_GET_MPID_TA(1, 0), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAE000000 + 0x200000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 5, 5, PLATFORM_GET_MPID_TA(1, 1), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAE000000 + 0x240000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 6, 6, PLATFORM_GET_MPID_TA(1, 2), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAE000000 + 0x280000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 7, 7, PLATFORM_GET_MPID_TA(1, 3), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAE000000 + 0x2C0000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 8, 8, PLATFORM_GET_MPID_TA(2, 0), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAE000000 + 0x300000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 9, 9, PLATFORM_GET_MPID_TA(2, 1), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAE000000 + 0x340000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 10, 10, PLATFORM_GET_MPID_TA(2, 2), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAE000000 + 0x380000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 11, 11, PLATFORM_GET_MPID_TA(2, 3), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAE000000 + 0x3C0000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 12, 12, PLATFORM_GET_MPID_TA(3, 0), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAE000000 + 0x400000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 13, 13, PLATFORM_GET_MPID_TA(3, 1), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAE000000 + 0x440000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 14, 14, PLATFORM_GET_MPID_TA(3, 2), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAE000000 + 0x480000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 15, 15, PLATFORM_GET_MPID_TA(3, 3), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAE000000 + 0x4C0000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 16, 16, PLATFORM_GET_MPID_TA(4, 0), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAE000000 + 0x500000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 17, 17, PLATFORM_GET_MPID_TA(4, 1), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAE000000 + 0x540000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 18, 18, PLATFORM_GET_MPID_TA(4, 2), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAE000000 + 0x580000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 19, 19, PLATFORM_GET_MPID_TA(4, 3), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAE000000 + 0x5C0000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 20, 20, PLATFORM_GET_MPID_TA(5, 0), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAE000000 + 0x600000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 21, 21, PLATFORM_GET_MPID_TA(5, 1), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAE000000 + 0x640000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 22, 22, PLATFORM_GET_MPID_TA(5, 2), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAE000000 + 0x680000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 23, 23, PLATFORM_GET_MPID_TA(5, 3), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAE000000 + 0x6C0000 /* GicRBase */, 0), + + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 24, 24, PLATFORM_GET_MPID_TB(0, 0), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAA000000 + 0x100000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 25, 25, PLATFORM_GET_MPID_TB(0, 1), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAA000000 + 0x140000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 26, 26, PLATFORM_GET_MPID_TB(0, 2), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAA000000 + 0x180000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 27, 27, PLATFORM_GET_MPID_TB(0, 3), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAA000000 + 0x1C0000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 28, 28, PLATFORM_GET_MPID_TB(1, 0), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAA000000 + 0x200000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 29, 29, PLATFORM_GET_MPID_TB(1, 1), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAA000000 + 0x240000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 30, 30, PLATFORM_GET_MPID_TB(1, 2), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAA000000 + 0x280000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 31, 31, PLATFORM_GET_MPID_TB(1, 3), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAA000000 + 0x2C0000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 32, 32, PLATFORM_GET_MPID_TB(2, 0), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAA000000 + 0x300000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 33, 33, PLATFORM_GET_MPID_TB(2, 1), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAA000000 + 0x340000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 34, 34, PLATFORM_GET_MPID_TB(2, 2), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAA000000 + 0x380000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 35, 35, PLATFORM_GET_MPID_TB(2, 3), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAA000000 + 0x3C0000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 36, 36, PLATFORM_GET_MPID_TB(3, 0), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAA000000 + 0x400000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 37, 37, PLATFORM_GET_MPID_TB(3, 1), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAA000000 + 0x440000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 38, 38, PLATFORM_GET_MPID_TB(3, 2), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAA000000 + 0x480000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 39, 39, PLATFORM_GET_MPID_TB(3, 3), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAA000000 + 0x4C0000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 40, 40, PLATFORM_GET_MPID_TB(4, 0), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAA000000 + 0x500000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 41, 41, PLATFORM_GET_MPID_TB(4, 1), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAA000000 + 0x540000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 42, 42, PLATFORM_GET_MPID_TB(4, 2), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAA000000 + 0x580000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 43, 43, PLATFORM_GET_MPID_TB(4, 3), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAA000000 + 0x5C0000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 44, 44, PLATFORM_GET_MPID_TB(5, 0), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAA000000 + 0x600000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 45, 45, PLATFORM_GET_MPID_TB(5, 1), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAA000000 + 0x640000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 46, 46, PLATFORM_GET_MPID_TB(5, 2), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAA000000 + 0x680000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 47, 47, PLATFORM_GET_MPID_TB(5, 3), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0xAA000000 + 0x6C0000 /* GicRBase */, 0), + + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 48, 48, PLATFORM_GET_MPID_TA_2(0, 0), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AE000000 + 0x100000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 49, 49, PLATFORM_GET_MPID_TA_2(0, 1), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AE000000 + 0x140000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 50, 50, PLATFORM_GET_MPID_TA_2(0, 2), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AE000000 + 0x180000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 51, 51, PLATFORM_GET_MPID_TA_2(0, 3), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AE000000 + 0x1C0000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 52, 52, PLATFORM_GET_MPID_TA_2(1, 0), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AE000000 + 0x200000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 53, 53, PLATFORM_GET_MPID_TA_2(1, 1), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AE000000 + 0x240000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 54, 54, PLATFORM_GET_MPID_TA_2(1, 2), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AE000000 + 0x280000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 55, 55, PLATFORM_GET_MPID_TA_2(1, 3), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AE000000 + 0x2C0000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 56, 56, PLATFORM_GET_MPID_TA_2(2, 0), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AE000000 + 0x300000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 57, 57, PLATFORM_GET_MPID_TA_2(2, 1), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AE000000 + 0x340000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 58, 58, PLATFORM_GET_MPID_TA_2(2, 2), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AE000000 + 0x380000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 59, 59, PLATFORM_GET_MPID_TA_2(2, 3), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AE000000 + 0x3C0000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 60, 60, PLATFORM_GET_MPID_TA_2(3, 0), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AE000000 + 0x400000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 61, 61, PLATFORM_GET_MPID_TA_2(3, 1), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AE000000 + 0x440000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 62, 62, PLATFORM_GET_MPID_TA_2(3, 2), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AE000000 + 0x480000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 63, 63, PLATFORM_GET_MPID_TA_2(3, 3), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AE000000 + 0x4C0000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 64, 64, PLATFORM_GET_MPID_TA_2(4, 0), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AE000000 + 0x500000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 65, 65, PLATFORM_GET_MPID_TA_2(4, 1), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AE000000 + 0x540000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 66, 66, PLATFORM_GET_MPID_TA_2(4, 2), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AE000000 + 0x580000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 67, 67, PLATFORM_GET_MPID_TA_2(4, 3), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AE000000 + 0x5C0000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 68, 68, PLATFORM_GET_MPID_TA_2(5, 0), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AE000000 + 0x600000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 69, 69, PLATFORM_GET_MPID_TA_2(5, 1), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AE000000 + 0x640000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 70, 70, PLATFORM_GET_MPID_TA_2(5, 2), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AE000000 + 0x680000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 71, 71, PLATFORM_GET_MPID_TA_2(5, 3), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AE000000 + 0x6C0000 /* GicRBase */, 0), + + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 72, 72, PLATFORM_GET_MPID_TB_2(0, 0), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AA000000 + 0x100000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 73, 73, PLATFORM_GET_MPID_TB_2(0, 1), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AA000000 + 0x140000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 74, 74, PLATFORM_GET_MPID_TB_2(0, 2), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AA000000 + 0x180000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 75, 75, PLATFORM_GET_MPID_TB_2(0, 3), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AA000000 + 0x1C0000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 76, 76, PLATFORM_GET_MPID_TB_2(1, 0), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AA000000 + 0x200000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 77, 77, PLATFORM_GET_MPID_TB_2(1, 1), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AA000000 + 0x240000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 78, 78, PLATFORM_GET_MPID_TB_2(1, 2), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AA000000 + 0x280000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 79, 79, PLATFORM_GET_MPID_TB_2(1, 3), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AA000000 + 0x2C0000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 80, 80, PLATFORM_GET_MPID_TB_2(2, 0), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AA000000 + 0x300000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 81, 81, PLATFORM_GET_MPID_TB_2(2, 1), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AA000000 + 0x340000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 82, 82, PLATFORM_GET_MPID_TB_2(2, 2), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AA000000 + 0x380000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 83, 83, PLATFORM_GET_MPID_TB_2(2, 3), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AA000000 + 0x3C0000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 84, 84, PLATFORM_GET_MPID_TB_2(3, 0), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AA000000 + 0x400000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 85, 85, PLATFORM_GET_MPID_TB_2(3, 1), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AA000000 + 0x440000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 86, 86, PLATFORM_GET_MPID_TB_2(3, 2), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AA000000 + 0x480000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 87, 87, PLATFORM_GET_MPID_TB_2(3, 3), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AA000000 + 0x4C0000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 88, 88, PLATFORM_GET_MPID_TB_2(4, 0), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AA000000 + 0x500000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 89, 89, PLATFORM_GET_MPID_TB_2(4, 1), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AA000000 + 0x540000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 90, 90, PLATFORM_GET_MPID_TB_2(4, 2), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AA000000 + 0x580000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 91, 91, PLATFORM_GET_MPID_TB_2(4, 3), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AA000000 + 0x5C0000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 92, 92, PLATFORM_GET_MPID_TB_2(5, 0), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AA000000 + 0x600000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 93, 93, PLATFORM_GET_MPID_TB_2(5, 1), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AA000000 + 0x640000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 94, 94, PLATFORM_GET_MPID_TB_2(5, 2), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AA000000 + 0x680000 /* GicRBase */, 0), + EFI_ACPI_6_1_GICC_STRUCTURE_INIT( + 95, 95, PLATFORM_GET_MPID_TB_2(5, 3), EFI_ACPI_6_2_GIC_ENABLED, 23, FixedPcdGet32 (PcdGicInterruptInterfaceBase), + 0x0, 0x0, 25, 0x4000AA000000 + 0x6C0000 /* GicRBase */, 0), + }, + + EFI_ACPI_6_1_GIC_DISTRIBUTOR_INIT(0, 0xAA000000, 0, 0x4), + { + EFI_ACPI_6_1_GIC_ITS_INIT(0,0x202100000), //peri a +// EFI_ACPI_6_1_GIC_ITS_INIT(1,0x400202100000), //peri a + } +}; + +// +// Reference the table being generated to prevent the optimizer from removing the +// data structure from the executable +// +VOID* CONST ReferenceAcpiTable = &Madt; From patchwork Fri Aug 31 13:26:54 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145622 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp783979ljw; Fri, 31 Aug 2018 06:28:15 -0700 (PDT) X-Google-Smtp-Source: ANB0VdY5A3p+EfP7+TWhgf2vu0NAuv8QC4Ok3gLuHiG0uBsVaF2iPGbtW4vX9qShEbk0374086zy X-Received: by 2002:a17:902:8541:: with SMTP id d1-v6mr15636145plo.81.1535722095194; Fri, 31 Aug 2018 06:28:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722095; cv=none; d=google.com; s=arc-20160816; b=K2j2D2H2nn4O4jYq5o2b1/F8HolvgoKy8Iu67j2OYCmKjq1+IjGUU8fSK90Rp9ab+4 p9H9WBT070a9gIOx7OSljMeNh7jNrhcvPNs/rW9vTlqZzgSV6Ylyb4Q5J9aJI/2GinmW Yk2ebWPW8dFV9eN37HJbFmyvyTVpWxNGZ6lopLARiW0QVuu1NiQYd0qnbPOG+vOnTtv5 4tf/qjcWD2Z06hlZuLqZDiCycjQA8zLEDvfdwFYCkRLeoft9rnu5QkV0Ewz5JrdXl809 IbY5G1SRofwy5BlAhvikpEZS+6Uq+u5uBKq98wr+wSdR7blKXhlU9BhEj04W8s7MWqnG sVDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=4d5wIPDEJJ17rgSR5QmRQfwNR87VhruwubRf3sDEqPQ=; b=DZ7UDvU2T4h7Kd7ZMPxZcQmu/2F3pbkbeNicBQNCUeLu/rwUbDKp+IRP2jZH6HAfhx NFEeoFuKE59jlI3fO16X8Zuz6hRrcUvqv4y0FwCYJ2lMA/9GmYax13L81hWNJ8HUm+8q x6U7pMylQjmOefc0sk3SZnDBy7dyJd1nruLRfLSOXanbKVD6lxki7e75IzyxStauAhW6 BrmKwg44djv+wizpHF9w8FJLnMep942008keTzYrz4iCXoVSYb+1V4wNm/N8xHmXvkD/ cW53nDg5egseZEq6y0adrxB8C5qPlKoMBkJPAesQeUOJJCB032GyMPrOPni9i3R/Bcnh xmtQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b="agvVnU8/"; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id b25-v6si9664426pgf.545.2018.08.31.06.28.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:28:15 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b="agvVnU8/"; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 9F2B32110BD7A; Fri, 31 Aug 2018 06:28:09 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::52c; helo=mail-pg1-x52c.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pg1-x52c.google.com (mail-pg1-x52c.google.com [IPv6:2607:f8b0:4864:20::52c]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 51FB92194D3B3 for ; Fri, 31 Aug 2018 06:28:08 -0700 (PDT) Received: by mail-pg1-x52c.google.com with SMTP id d19-v6so5468070pgv.1 for ; Fri, 31 Aug 2018 06:28:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=LGgpgXAQMCNaxQDY20TrQMk6KjbAnmqSQyU16fyrcLQ=; b=agvVnU8/osQfqxOCPtIC9mOo7NLEvdziLHcw/VFbRnZTLv0MPkjoN+gmaegVKoPj2R kgY5NtSG7r/6idYuvgtev5xVpde0V4FCll6MV/fKNIt6CknUsxz1Hphzh9aFvxvPC5Ns vNfDdCEUkPYsUdDszMy/NS3rtdJ9kSI1yddLs= 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=LGgpgXAQMCNaxQDY20TrQMk6KjbAnmqSQyU16fyrcLQ=; b=SVV0zdMKzBhAgWvihWighessGgeovX20LmJNsZbkc9pLEzyG81jXcfQXZ8QpxZeJO/ YznXWMW9f75fLTWqIdqHrIBu2+oh3JbG4/gH3tVeSeQ2FthtmzhmSvGILeN/DRKL5GGN csxhjNx7t2uXakdaN3Je+HIOVqTrzxns9tmwKU9L0rQniNjVeilD/29fYXMSvCtDpHvY FjQQ7ACMqEFF892IBkmYNLnQZaJbvbuoyO8wWCBczhebUfDsyKFf33S8LXVG5krDqfIU onZiMq5fz+UEsZUFx1+gjwATcmbTLicpthpWS89ifwUCFqMF0OcN5vb3+gkZKkwf6T1/ UC7A== X-Gm-Message-State: APzg51Cb+5Xa1Rx/v2m95Ng3agEezaibb/RPpyZBz6pWFTZmNKqa5Vre h24lgjZomPzBc2mAe04PhfN3Gg== X-Received: by 2002:a62:90d4:: with SMTP id q81-v6mr15889283pfk.37.1535722086745; Fri, 31 Aug 2018 06:28:06 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.28.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:28:06 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:26:54 +0800 Message-Id: <20180831132710.23055-13-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 12/28] Hisilicon/D06: Add Hi1620OemConfigUiLib X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, Yang XinYi , huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" From: Yang XinYi This library is added for oem setup menu item. Setup item include: 1 DDR option item; 2 BMC option item; 3 Ras option item; 4 Misc option item; Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang Reviewed-by: Leif Lindholm --- Silicon/Hisilicon/HisiPkg.dec | 1 + Platform/Hisilicon/D06/D06.dsc | 5 +- Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/AcpiPlatformDxe.inf | 2 +- Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLib.inf | 68 ++++ Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.h | 142 ++++++++ Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUi.h | 64 ++++ Silicon/Hisilicon/Include/Library/OemConfigData.h | 83 +++++ Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigVfr.vfr | 89 +++++ Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.c | 362 ++++++++++++++++++++ Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MemoryConfig.hfr | 154 +++++++++ Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MemoryConfig.uni | 103 ++++++ Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.hfr | 34 ++ Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.uni | 27 ++ Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLib.uni | 24 ++ Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLibStrings.uni | 42 +++ Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/PcieConfig.hfr | 219 ++++++++++++ Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/PcieConfigStrings.uni | 111 ++++++ Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/PciePortConfig.hfr | 167 +++++++++ Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/RasConfig.hfr | 172 ++++++++++ Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/RasConfig.uni | 85 +++++ Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/iBMCConfig.hfr | 81 +++++ Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/iBMCConfig.uni | 34 ++ 22 files changed, 2067 insertions(+), 2 deletions(-) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Silicon/Hisilicon/HisiPkg.dec b/Silicon/Hisilicon/HisiPkg.dec index 35bea970ec..404a3ae4af 100644 --- a/Silicon/Hisilicon/HisiPkg.dec +++ b/Silicon/Hisilicon/HisiPkg.dec @@ -44,6 +44,7 @@ gHisiTokenSpaceGuid = {0xc8bc553e, 0x12bf, 0x11e6, {0x97, 0x4f, 0x87, 0xf7, 0x7c, 0xfd, 0x52, 0x1d}} gHisiEfiMemoryMapGuid = {0xf8870015, 0x6994, 0x4b98, {0x95, 0xa2, 0xbd, 0x56, 0xda, 0x91, 0xc0, 0x7f}} + gOemConfigGuid = {0x42927b59, 0x58fc, 0x41be, {0x8f, 0x59, 0xd1, 0x7c, 0x02, 0x1a, 0x70, 0x13}} gVersionInfoHobGuid = {0xe13a14c, 0x859c, 0x4f22, {0x82, 0xbd, 0x18, 0xe, 0xe1, 0x42, 0x12, 0xbf}} gOemBootVariableGuid = {0xb7784577, 0x5aaf, 0x4557, {0xa1, 0x99, 0xd4, 0xa4, 0x2f, 0x45, 0x06, 0xf8}} gEfiHisiSocControllerGuid = {0xee369cc3, 0xa743, 0x5382, {0x75, 0x64, 0x53, 0xe4, 0x31, 0x19, 0x38, 0x35}} diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index 07f5af72ad..80e620a190 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -331,7 +331,10 @@ #ACPI # MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf - Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/AcpiPlatformDxe.inf + Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/AcpiPlatformDxe.inf { + + NULL|Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLib.inf + } Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/AcpiTablesHi1620.inf Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf diff --git a/Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/AcpiPlatformDxe.inf b/Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/AcpiPlatformDxe.inf index e268a56bbd..281a4f2ebd 100644 --- a/Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/AcpiPlatformDxe.inf +++ b/Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/AcpiPlatformDxe.inf @@ -56,7 +56,7 @@ gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiTableStorageFile ## CONSUMES [Depex] - gEfiAcpiTableProtocolGuid + gEfiAcpiTableProtocolGuid AND gEfiVariableWriteArchProtocolGuid [UserExtensions.TianoCore."ExtraFiles"] AcpiPlatformExtra.uni diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLib.inf b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLib.inf new file mode 100644 index 0000000000..72b9378c55 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLib.inf @@ -0,0 +1,68 @@ +## @file +# OEM config Library used by BDS +# +# Copyright (c) 2018, Hisilicon Limited. All rights reserved. +# Copyright (c) 2018, Linaro Limited. All rights reserved. +# This program and the accompanying materials are licensed and made available under +# the terms and conditions of the BSD License that accompanies this distribution. +# The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php. +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +## +[Defines] + INF_VERSION = 0x0001001A + BASE_NAME = OemConfigUiLib + MODULE_UNI_FILE = OemConfigUiLib.uni + FILE_GUID = 32B373AC-00B6-471b-B3AE-6E4A4501F6BA + MODULE_TYPE = DXE_DRIVER + VERSION_STRING = 1.0 + LIBRARY_CLASS = NULL|DXE_DRIVER UEFI_APPLICATION + CONSTRUCTOR = OemConfigUiLibConstructor + DESTRUCTOR = OemConfigUiLibDestructor + +[Sources] + iBMCConfig.hfr + iBMCConfig.uni + MemoryConfig.hfr + MemoryConfig.uni + MiscConfig.hfr + MiscConfig.uni + OemConfig.c + OemConfig.h + OemConfigUiLibStrings.uni + OemConfigVfr.vfr + PcieConfig.hfr + PcieConfigStrings.uni + PciePortConfig.hfr + RasConfig.hfr + RasConfig.uni + +[Packages] + MdeModulePkg/MdeModulePkg.dec + MdePkg/MdePkg.dec + Silicon/Hisilicon/HisiPkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + DebugLib + DevicePathLib + HiiLib + MemoryAllocationLib + PrintLib + UefiBootServicesTableLib + UefiHiiServicesLib + UefiRuntimeServicesTableLib + +[Guids] + gEfiHiiPlatformSetupFormsetGuid ## CONSUMES ## GUID (Indicate the formset class guid to be displayed) + gEfiIfrFrontPageGuid ## CONSUMES ## GUID (Indicate the formset in this library need to dispaly in which page) + gEfiIfrTianoGuid ## CONSUMES ## GUID (Extended IFR Guid Opcode) + gOemConfigGuid + gVersionInfoHobGuid + +[Protocols] + gEfiHiiConfigAccessProtocolGuid ## CONSUMES diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.h b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.h new file mode 100644 index 0000000000..f91400150c --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.h @@ -0,0 +1,142 @@ +/** @file +The Oem config reference implement + +Copyright (c) 2018, Hisilicon Limited. All rights reserved. +Copyright (c) 2018, Linaro Limited. All rights reserved. +This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#ifndef _OEM_CONFIG_H_ +#define _OEM_CONFIG_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "Library/OemConfigData.h" +#include +#include +#include +#include +#include +#include +#include + +// +// These are the VFR compiler generated data representing our VFR data. +// +extern UINT8 OemConfigVfrBin[]; + +// +// HII specific Vendor Device Path definition. +// +typedef struct { + VENDOR_DEVICE_PATH VendorDevicePath; + EFI_DEVICE_PATH_PROTOCOL End; +} HII_VENDOR_DEVICE_PATH; + +#define OEM_CONFIG_CALLBACK_DATA_SIGNATURE SIGNATURE_32 ('O', 'E', 'M', 'C') +typedef struct { + UINTN Signature; + EFI_HII_HANDLE HiiHandle; + EFI_HANDLE DriverHandle; + EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess; +} OEM_CONFIG_CALLBACK_DATA; + +/** + This function allows a caller to extract the current configuration for one + or more named elements from the target driver. + + + @param This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL. + @param Request A null-terminated Unicode string in format. + @param Progress On return, points to a character in the Request string. + Points to the string's null terminator if request was successful. + Points to the most recent '&' before the first failing name/value + pair (or the beginning of the string if the failure is in the + first name/value pair) if the request was not successful. + @param Results A null-terminated Unicode string in format which + has all values filled in for the names in the Request string. + String to be allocated by the called function. + + @retval EFI_SUCCESS The Results is filled with the requested values. + @retval EFI_OUT_OF_RESOURCES Not enough memory to store the results. + @retval EFI_INVALID_PARAMETER Request is illegal syntax, or unknown name. + @retval EFI_NOT_FOUND Routing data doesn't match any storage in this driver. + +**/ +EFI_STATUS +EFIAPI +OemExtractConfig ( + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN CONST EFI_STRING Request, + OUT EFI_STRING *Progress, + OUT EFI_STRING *Results + ); + +/** + This function processes the results of changes in configuration. + + + @param This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL. + @param Configuration A null-terminated Unicode string in format. + @param Progress A pointer to a string filled in with the offset of the most + recent '&' before the first failing name/value pair (or the + beginning of the string if the failure is in the first + name/value pair) or the terminating NULL if all was successful. + + @retval EFI_SUCCESS The Results is processed successfully. + @retval EFI_INVALID_PARAMETER Configuration is NULL. + @retval EFI_NOT_FOUND Routing data doesn't match any storage in this driver. + +**/ +EFI_STATUS +EFIAPI +OemRouteConfig ( + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN CONST EFI_STRING Configuration, + OUT EFI_STRING *Progress + ); + +/** + This function is invoked if user selected a interactive opcode from Device Manager's + Formset. If user set VBIOS, the new value is saved to EFI variable. + + @param This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL. + @param Action Specifies the type of action taken by the browser. + @param QuestionId A unique value which is sent to the original exporting driver + so that it can identify the type of data to expect. + @param Type The type of value for the question. + @param Value A pointer to the data being sent to the original exporting driver. + @param ActionRequest On return, points to the action requested by the callback function. + + @retval EFI_SUCCESS The callback successfully handled the action. + @retval EFI_INVALID_PARAMETER The setup browser call this function with invalid parameters. + +**/ +EFI_STATUS +EFIAPI +OemCallback ( + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN EFI_BROWSER_ACTION Action, + IN EFI_QUESTION_ID QuestionId, + IN UINT8 Type, + IN EFI_IFR_TYPE_VALUE *Value, + OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest + ); + +VOID GetReleaseTime (EFI_TIME *Time); +#endif diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUi.h b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUi.h new file mode 100644 index 0000000000..792e544c22 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUi.h @@ -0,0 +1,64 @@ +/** @file + +Copyright (c) 2018, Hisilicon Limited. All rights reserved. +Copyright (c) 2018, Linaro Limited. All rights reserved. +This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +Module Name: + + OemConfigUi.h + +Abstract: + + NVData structure used by the OEM Config. + +Revision History: + + +**/ + +#ifndef _OEM_CONFIG_UI_H_ +#define _OEM_CONFIG_UI_H_ + +#include + +#define OEM_CONFIG_FORM_ID 1 +#define MEMORY_CONFIG_FORM_ID 2 +#define IBMC_CONFIG_FORM_ID 3 +#define PCIE_CONFIG_FORM_ID 4 +#define MISC_CONFIG_FORM_ID 5 +#define RAS_CONFIG_FORM_ID 6 + +#define VFR_FORMID_PCIE_SOCKET0 0x4100 +#define VFR_FORMID_PCIE_SOCKET1 0x4200 +#define VFR_FORMID_PCIE_PORT0 0x4000 +#define VFR_FORMID_PCIE_PORT1 0x4001 +#define VFR_FORMID_PCIE_PORT2 0x4002 +#define VFR_FORMID_PCIE_PORT3 0x4003 +#define VFR_FORMID_PCIE_PORT4 0x4004 +#define VFR_FORMID_PCIE_PORT5 0x4005 +#define VFR_FORMID_PCIE_PORT6 0x4006 +#define VFR_FORMID_PCIE_PORT7 0x4007 +#define VFR_FORMID_PCIE_PORT8 0x4008 +#define VFR_FORMID_PCIE_PORT9 0x4009 +#define VFR_FORMID_PCIE_PORT10 0x4010 +#define VFR_FORMID_PCIE_PORT11 0x4011 +#define VFR_FORMID_PCIE_PORT12 0x4012 +#define VFR_FORMID_PCIE_PORT13 0x4013 +#define VFR_FORMID_PCIE_PORT14 0x4014 +#define VFR_FORMID_PCIE_PORT15 0x4015 + +#define VFR_FORMID_MEMORY_RAS 0x6100 +#define VFR_FORMID_CORRECT_ERROR 0x6101 +#define VFR_FORMID_PCIE_RAS 0x6200 + +#define RMT_PATTERN_LENGTH 256 + + +#endif diff --git a/Silicon/Hisilicon/Include/Library/OemConfigData.h b/Silicon/Hisilicon/Include/Library/OemConfigData.h new file mode 100644 index 0000000000..8ab402144c --- /dev/null +++ b/Silicon/Hisilicon/Include/Library/OemConfigData.h @@ -0,0 +1,83 @@ +/** @file +* +* Copyright (c) 2017 - 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2017 - 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + + +#ifndef _OEM_CONFIG_DATA_H_ +#define _OEM_CONFIG_DATA_H_ + +#define PCIE_MAX_TOTAL_PORTS 16 +#define OEM_CONFIG_NAME L"OemConfig" +#define PLATFORM_SETUP_VARIABLE_FLAG (EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE) + +#pragma pack(1) +typedef struct { + /*Memory Config*/ + UINT8 DdrDebugLevel; + UINT8 DdrFreqLimit; + UINT8 DdrRefreshSupport; + UINT8 DdrRefreshRate; + UINT8 RankMargin; + UINT8 RankMarginMode; + UINT32 rmtPatternLength; + UINT8 perbitmargin; + UINT8 CaMargin; + UINT8 CaVrefMarginOption; + UINT8 NumaEn; + UINT8 HwMemTest; + UINT8 DieInterleaving; + UINT8 ChannelInterleaving; + UINT8 RankInterleaving; + UINT8 EccSupport; + /*iBMC Config*/ + UINT8 BmcWdtEnable; + UINT8 BmcWdtTimeout; + UINT8 BmcWdtAction; + UINT8 OSWdtEnable; + UINT8 OSWdtTimeout; + UINT8 OSWdtAction; + /*PCIe Config*/ + UINT8 PcieSRIOVSupport; + UINT8 PciePort[PCIE_MAX_TOTAL_PORTS]; + UINT8 PcieLinkSpeedPort[PCIE_MAX_TOTAL_PORTS]; + UINT8 PcieLinkDeEmphasisPort[PCIE_MAX_TOTAL_PORTS]; + UINT8 PcieLinkStatusPort[PCIE_MAX_TOTAL_PORTS]; + UINT8 PcieLinkSpeedRateStatusPort[PCIE_MAX_TOTAL_PORTS]; + UINT8 PcieLinkMaxPort[PCIE_MAX_TOTAL_PORTS]; + UINT8 PcieMaxPayloadSizePort[PCIE_MAX_TOTAL_PORTS]; + UINT8 PcieAspmPort[PCIE_MAX_TOTAL_PORTS]; + /*Misc Config*/ + UINT8 EnableSmmu; + UINT8 EnableFdtTable; + /*RAS Config*/ + UINT8 EnRasSupport; + UINT8 EnPoison; + UINT8 CheckAlgorithm; + UINT8 PatrolScrub; + UINT8 PatrolScrubDuration; + UINT8 DemandScrubMode; + UINT8 CorrectErrorThreshold; + UINT8 AdvanceDeviceCorrection; + UINT8 RankSparing; + UINT8 FunnelPeriod; + UINT8 DpcFeature; + UINT8 EcrcFeature; + UINT8 CompletionTimeout; + UINT8 CompletionTimeoutValue; + UINT8 HotPlug; + +} OEM_CONFIG_DATA; +#pragma pack() + +#endif diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigVfr.vfr b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigVfr.vfr new file mode 100644 index 0000000000..470e9ace3d --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigVfr.vfr @@ -0,0 +1,89 @@ +/** @file +* +* OEM Config formset. +* +* Copyright (c) 2017 - 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2017 - 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ +#include "OemConfigUi.h" +#include "Library/OemConfigData.h" + +formset + guid = gOemConfigGuid, + title = STRING_TOKEN(STR_OEM_CONFIG), + help = STRING_TOKEN(STR_OEM_CONFIG), + classguid = gEfiIfrFrontPageGuid, // for MdeModule Bds. + efivarstore OEM_CONFIG_DATA, + attribute = EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE, + name = OemConfig, + guid = gOemConfigGuid; + + form formid = OEM_CONFIG_FORM_ID, + title = STRING_TOKEN(STR_OEM_CONFIG); + + grayoutif TRUE; + text + help = STRING_TOKEN(STR_EMPTY_STRING), + text = STRING_TOKEN(STR_BIOS_BUILDTIME_STRING), + text = STRING_TOKEN(STR_MISC_BIOS_BUILDTIME), + flags = 0, + key = 0; + endif; + + date + prompt = STRING_TOKEN(SYSTEM_DATE), + help = STRING_TOKEN(SYSTEM_DATE_HELP), + flags = 0x10, + default = 2017/1/1, + enddate; + + time + prompt = STRING_TOKEN(SYSTEM_TIME), + help = STRING_TOKEN(SYSTEM_TIME_HELP), + flags = 0x10, + endtime; + + subtitle text = STRING_TOKEN(STR_EMPTY_STRING); + + goto MEMORY_CONFIG_FORM_ID, + prompt = STRING_TOKEN(STR_MEMORY_CONFIG_FORM_TITLE), + help = STRING_TOKEN(STR_MEMORY_CONFIG_FORM_HELP); + + goto IBMC_CONFIG_FORM_ID, + prompt = STRING_TOKEN(STR_IBMC_CONFIG_FORM_TITLE), + help = STRING_TOKEN(STR_IBMC_CONFIG_FORM_HELP); + + suppressif TRUE; + goto PCIE_CONFIG_FORM_ID, + prompt = STRING_TOKEN(STR_PCIE_CONFIG_FORM_TITLE), + help = STRING_TOKEN(STR_PCIE_CONFIG_FORM_HELP); + endif; + + goto MISC_CONFIG_FORM_ID, + prompt = STRING_TOKEN(STR_MISC_CONFIG_FORM_TITLE), + help = STRING_TOKEN(STR_MISC_CONFIG_FORM_HELP); + + goto RAS_CONFIG_FORM_ID, + prompt = STRING_TOKEN(STR_RAS_CONFIG_FORM_TITLE), + help = STRING_TOKEN(STR_RAS_CONFIG_FORM_HELP); + + subtitle text = STRING_TOKEN(STR_EMPTY_STRING); + subtitle text = STRING_TOKEN(STR_EXIT_STRING); + + endform; + +#include "MemoryConfig.hfr" +#include "iBMCConfig.hfr" +#include "PcieConfig.hfr" +#include "MiscConfig.hfr" +#include "RasConfig.hfr" +endformset; diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.c b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.c new file mode 100644 index 0000000000..f49fb3533b --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.c @@ -0,0 +1,362 @@ +/** @file +The OEM config reference implementation + +Copyright (c) 2018, Hisilicon Limited. All rights reserved. +Copyright (c) 2018, Linaro Limited. All rights reserved. +This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#include "OemConfig.h" + +OEM_CONFIG_CALLBACK_DATA mOemConfigPrivate = { + OEM_CONFIG_CALLBACK_DATA_SIGNATURE, + NULL, + NULL, + { + OemExtractConfig, + OemRouteConfig, + OemCallback + } +}; + +HII_VENDOR_DEVICE_PATH mOemHiiVendorDevicePath = { + { + { + HARDWARE_DEVICE_PATH, + HW_VENDOR_DP, + { + (UINT8) (sizeof (VENDOR_DEVICE_PATH)), + (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) + } + }, + { 0x874c4dcb, 0x08ec, 0x4fe6, { 0xb5, 0x8e, 0x3a, 0x9e, 0x1c, 0x26, 0x70, 0xb9 } } + }, + { + END_DEVICE_PATH_TYPE, + END_ENTIRE_DEVICE_PATH_SUBTYPE, + { + (UINT8) (END_DEVICE_PATH_LENGTH), + (UINT8) ((END_DEVICE_PATH_LENGTH) >> 8) + } + } +}; + + + + + + +/** + This function allows a caller to extract the current configuration for one + or more named elements from the target driver. + + + @param This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL. + @param Request A null-terminated Unicode string in format. + @param Progress On return, points to a character in the Request string. + Points to the string's null terminator if request was successful. + Points to the most recent '&' before the first failing name/value + pair (or the beginning of the string if the failure is in the + first name/value pair) if the request was not successful. + @param Results A null-terminated Unicode string in format which + has all values filled in for the names in the Request string. + String to be allocated by the called function. + + @retval EFI_INVALID_PARAMETER Request is illegal syntax, or unknown name. + @retval EFI_NOT_FOUND Routing data doesn't match any storage in this driver. + +**/ +EFI_STATUS +EFIAPI +OemExtractConfig ( + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN CONST EFI_STRING Request, + OUT EFI_STRING *Progress, + OUT EFI_STRING *Results + ) +{ + if (Progress == NULL || Results == NULL) { + return EFI_INVALID_PARAMETER; + } + *Progress = Request; + return EFI_NOT_FOUND; +} + +/** + This function processes the results of changes in configuration. + + @param This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL. + @param Configuration A null-terminated Unicode string in format. + @param Progress A pointer to a string filled in with the offset of the most + recent '&' before the first failing name/value pair (or the + beginning of the string if the failure is in the first + name/value pair) or the terminating NULL if all was successful. + + @retval EFI_INVALID_PARAMETER Configuration is NULL. + @retval EFI_NOT_FOUND Routing data doesn't match any storage in this driver. + +**/ +EFI_STATUS +EFIAPI +OemRouteConfig ( + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN CONST EFI_STRING Configuration, + OUT EFI_STRING *Progress + ) +{ + if (Configuration == NULL || Progress == NULL) { + return EFI_INVALID_PARAMETER; + } + + *Progress = Configuration; + + return EFI_NOT_FOUND; +} + +/** + This function is invoked if user selected a interactive opcode from Device Manager's + Formset. If user set VBIOS, the new value is saved to EFI variable. + + @param This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL. + @param Action Specifies the type of action taken by the browser. + @param QuestionId A unique value which is sent to the original exporting driver + so that it can identify the type of data to expect. + @param Type The type of value for the question. + @param Value A pointer to the data being sent to the original exporting driver. + @param ActionRequest On return, points to the action requested by the callback function. + + @retval EFI_SUCCESS The callback successfully handled the action. + @retval EFI_INVALID_PARAMETER The setup browser call this function with invalid parameters. + +**/ +EFI_STATUS +EFIAPI +OemCallback ( + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN EFI_BROWSER_ACTION Action, + IN EFI_QUESTION_ID QuestionId, + IN UINT8 Type, + IN EFI_IFR_TYPE_VALUE *Value, + OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest + ) +{ + if (Action != EFI_BROWSER_ACTION_CHANGING) { + // + // Do nothing for other UEFI Action. Only do call back when data is changed. + // + return EFI_UNSUPPORTED; + } + if ((Value == NULL) || (ActionRequest == NULL)) { + return EFI_INVALID_PARAMETER; + } + + return EFI_SUCCESS; +} + +/** + Install Boot Manager Menu driver. + + @param ImageHandle The image handle. + @param SystemTable The system table. + + @retval EFI_SUCEESS Install Boot manager menu success. + @retval Other Return error status. + +**/ +EFI_STATUS +EFIAPI +OemConfigUiLibConstructor ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + OEM_CONFIG_DATA Configuration; + VOID *Hob; + VERSION_INFO *VersionInfo; + UINTN BufSize; + BOOLEAN Action; + EFI_STRING ConfigRequestHdr; + EFI_TIME Time = {0}; + CHAR16 TmpString[0x100] = {0}; + + mOemConfigPrivate.DriverHandle = NULL; + Status = gBS->InstallMultipleProtocolInterfaces ( + &mOemConfigPrivate.DriverHandle, + &gEfiDevicePathProtocolGuid, + &mOemHiiVendorDevicePath, + &gEfiHiiConfigAccessProtocolGuid, + &mOemConfigPrivate.ConfigAccess, + NULL + ); + if (EFI_ERROR (Status)) { + return Status; + } + + // + // Publish our HII data. + // + mOemConfigPrivate.HiiHandle = HiiAddPackages ( + &gOemConfigGuid, + mOemConfigPrivate.DriverHandle, + OemConfigVfrBin, + OemConfigUiLibStrings, + NULL + ); + if (mOemConfigPrivate.HiiHandle == NULL) { + DEBUG ((DEBUG_ERROR, "%a Fail to Add Oem Hii Package.\n", __FUNCTION__)); + return EFI_INVALID_PARAMETER; + } + // + //BIOS Build Time Init + // + Hob = GetFirstGuidHob (&gVersionInfoHobGuid); + if (Hob == NULL) { + DEBUG ((DEBUG_ERROR, "[%a]:[%d] Version information HOB not found!\n", + __FILE__, __LINE__)); + return EFI_NOT_FOUND; + } + VersionInfo = GET_GUID_HOB_DATA (Hob); + Time = VersionInfo->BuildTime; + UnicodeSPrint ( + TmpString, + sizeof (TmpString), + L"%02d/%02d/%04d %02d:%02d", + Time.Month, + Time.Day, + Time.Year, + Time.Hour, + Time.Minute + ); + HiiSetString ( + mOemConfigPrivate.HiiHandle, + STRING_TOKEN (STR_MISC_BIOS_BUILDTIME), + TmpString, + "en-US" + ); + // + // Check Oem Config Variable. + // + ConfigRequestHdr = HiiConstructConfigHdr ( + &gOemConfigGuid, + OEM_CONFIG_NAME, + mOemConfigPrivate.DriverHandle + ); + ZeroMem (&Configuration, sizeof (OEM_CONFIG_DATA)); + BufSize = sizeof (OEM_CONFIG_DATA); + Status = gRT->GetVariable ( + OEM_CONFIG_NAME, + &gOemConfigGuid, + NULL, + &BufSize, + &Configuration + ); + if (EFI_ERROR (Status)) { + Action = HiiSetToDefaults (ConfigRequestHdr, EFI_HII_DEFAULT_CLASS_STANDARD); + if (!Action) { + // + //Set the default value of the DDR option + // + Configuration.DdrDebugLevel = 0; + Configuration.DdrFreqLimit = 0; + Configuration.DdrRefreshSupport = 0; + Configuration.DdrRefreshRate = 0; + Configuration.RankMargin = 0; + Configuration.RankMarginMode = 2; + Configuration.rmtPatternLength = 256; + Configuration.perbitmargin = 0x0; + Configuration.CaMargin = 0x0; + Configuration.CaVrefMarginOption = 0x0; + Configuration.NumaEn = 1; + Configuration.HwMemTest = 0; + Configuration.DieInterleaving = 0; + Configuration.ChannelInterleaving = 1; + Configuration.RankInterleaving = 2; + Configuration.EccSupport = 0; + // + //Set the default value of the BMC option + // + Configuration.BmcWdtEnable = 0; + Configuration.BmcWdtTimeout = 15; + Configuration.BmcWdtAction = 1; + Configuration.OSWdtEnable = 0; + Configuration.OSWdtTimeout = 5; + Configuration.OSWdtAction = 1; + // + //Set the default value of the Misc option + // + Configuration.EnableSmmu = 1; + Configuration.EnableFdtTable = 0; + // + //Set the default value of the Ras option + // + Configuration.EnRasSupport = 1; + Configuration.EnPoison = 1; + Configuration.CheckAlgorithm = 0; + Configuration.PatrolScrub = 1; + Configuration.PatrolScrubDuration = 24; + Configuration.DemandScrubMode = 0; + Configuration.CorrectErrorThreshold = 0; + Configuration.AdvanceDeviceCorrection = 0; + Configuration.RankSparing = 0; + Configuration.FunnelPeriod = 0; + Configuration.DpcFeature = 0; + Configuration.EcrcFeature = 0; + Configuration.CompletionTimeout = 1; + Configuration.CompletionTimeoutValue = 0; + Configuration.HotPlug = 1; + Status = gRT->SetVariable ( + OEM_CONFIG_NAME, + &gOemConfigGuid, + EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS, + sizeof (OEM_CONFIG_DATA), + &Configuration + ); + } + } else { + Action = HiiValidateSettings (ConfigRequestHdr); + if (!Action) { + return EFI_INVALID_PARAMETER; + } + } + return EFI_SUCCESS; +} + +/** + Unloads the application and its installed protocol. + + @param ImageHandle Handle that identifies the image to be unloaded. + @param SystemTable The system table. + + @retval EFI_SUCCESS The image has been unloaded. +**/ +EFI_STATUS +EFIAPI +OemConfigUiLibDestructor ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + + Status = gBS->UninstallMultipleProtocolInterfaces ( + mOemConfigPrivate.DriverHandle, + &gEfiDevicePathProtocolGuid, + &mOemHiiVendorDevicePath, + &gEfiHiiConfigAccessProtocolGuid, + &mOemConfigPrivate.ConfigAccess, + NULL + ); + + HiiRemovePackages (mOemConfigPrivate.HiiHandle); + + return Status; +} + diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MemoryConfig.hfr b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MemoryConfig.hfr new file mode 100644 index 0000000000..c709975c38 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MemoryConfig.hfr @@ -0,0 +1,154 @@ +/** @file +* +* Memory Config form at Oem Config fromset. +* +* Copyright (c) 2017 - 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2017 - 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +form formid = MEMORY_CONFIG_FORM_ID, + title = STRING_TOKEN(STR_MEMORY_CONFIG_FORM_TITLE); + + oneof varid = OEM_CONFIG_DATA.DdrDebugLevel, + prompt = STRING_TOKEN (STR_MEM_PRINT_LEVEL_PROMPT), + help = STRING_TOKEN (STR_MEM_PRINT_LEVEL_HELP), + option text = STRING_TOKEN (STR_MEM_PRINT_LEVEL_DISABLE), value = 0, flags = RESET_REQUIRED; + option text = STRING_TOKEN (STR_MEM_PRINT_LEVEL_MINIMUM), value = 1, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT; + option text = STRING_TOKEN (STR_MEM_PRINT_LEVEL_MINMAX), value = 2, flags = RESET_REQUIRED; + option text = STRING_TOKEN (STR_MEM_PRINT_LEVEL_MAXIMUM), value = 3, flags = RESET_REQUIRED; + endoneof; + + oneof varid = OEM_CONFIG_DATA.DdrFreqLimit, + prompt = STRING_TOKEN(STR_XMP_DDR_FREQ_LIMIT_PROMPT), + help = STRING_TOKEN(STR_XMP_DDR_FREQ_LIMIT_HELP), + option text = STRING_TOKEN(STR_AUTO), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + option text = STRING_TOKEN(STR_DDR_FREQ_1333_STRING), value = 5, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_DDR_FREQ_1600_STRING), value = 7, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_DDR_FREQ_1866_STRING), value = 9, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_DDR_FREQ_2133_STRING), value = 11, flags = RESET_REQUIRED ; + option text = STRING_TOKEN(STR_DDR_FREQ_2400_STRING), value = 13, flags = RESET_REQUIRED ; + option text = STRING_TOKEN(STR_DDR_FREQ_2667_STRING), value = 15, flags = RESET_REQUIRED ; + option text = STRING_TOKEN(STR_DDR_FREQ_2933_STRING), value = 17, flags = RESET_REQUIRED ; + option text = STRING_TOKEN(STR_DDR_FREQ_3200_STRING), value = 19, flags = RESET_REQUIRED ; + endoneof; + + suppressif TRUE; + oneof varid = OEM_CONFIG_DATA.DdrRefreshSupport, + prompt = STRING_TOKEN(STR_DDR_REFRESH_SUPPORT_PROMPT), + help = STRING_TOKEN(STR_DDR_REFRESH_SUPPORT_HELP), + option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED; + endoneof; + + suppressif ideqval OEM_CONFIG_DATA.DdrRefreshSupport == 0; + oneof varid = OEM_CONFIG_DATA.DdrRefreshRate, + prompt = STRING_TOKEN(STR_DDR_REFRESH_PROMPT), + help = STRING_TOKEN(STR_DDR_REFRESH_HELP), + option text = STRING_TOKEN(STR_32MS), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + option text = STRING_TOKEN(STR_64MS), value = 1, flags = RESET_REQUIRED; + endoneof; + endif; + + oneof varid = OEM_CONFIG_DATA.RankMargin, + prompt = STRING_TOKEN (STR_RMT_PROMPT), + help = STRING_TOKEN (STR_RMT_HELP), + option text = STRING_TOKEN (STR_DISABLE), value = 0, flags = DEFAULT | MANUFACTURING |RESET_REQUIRED; + option text = STRING_TOKEN (STR_ENABLE), value = 1, flags = RESET_REQUIRED; + endoneof; + + suppressif ideqval OEM_CONFIG_DATA.RankMargin == 0; + oneof varid = OEM_CONFIG_DATA.RankMarginMode, + prompt = STRING_TOKEN (STR_RMTM_PROMPT), + help = STRING_TOKEN (STR_RMTM_HELP), + option text = STRING_TOKEN (STR_RMTM_SFC), value = 1, flags = RESET_REQUIRED; + option text = STRING_TOKEN (STR_RMTM_EXMBIST), value = 2, flags = DEFAULT | MANUFACTURING |RESET_REQUIRED; + endoneof; + + numeric varid = OEM_CONFIG_DATA.rmtPatternLength, + prompt = STRING_TOKEN (STR_RMT_PATTERN_PROMPT), + help = STRING_TOKEN (STR_RMT_PATTERN_HELP), + flags = RESET_REQUIRED, + minimum = 1, + maximum = 32767, + step = 1, + default = RMT_PATTERN_LENGTH, + endnumeric; + + oneof varid = OEM_CONFIG_DATA.perbitmargin, + prompt = STRING_TOKEN (STR_PER_BIT_MARGIN_PROMPT), + help = STRING_TOKEN (STR_PER_BIT_MARGIN_HELP), + option text = STRING_TOKEN (STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + option text = STRING_TOKEN (STR_ENABLE), value = 1, flags = RESET_REQUIRED; + endoneof; + + oneof varid = OEM_CONFIG_DATA.CaMargin, + prompt = STRING_TOKEN (STR_CA_MARGINS_PROMPT), + help = STRING_TOKEN (STR_CA_MARGINS_HELP), + option text = STRING_TOKEN (STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + option text = STRING_TOKEN (STR_ENABLE), value = 1, flags = RESET_REQUIRED; + endoneof; + + oneof varid = OEM_CONFIG_DATA.CaVrefMarginOption, + prompt = STRING_TOKEN (STR_CAVREF_MARGINS_PROMPT), + help = STRING_TOKEN (STR_CAVREF_MARGINS_HELP), + option text = STRING_TOKEN (STR_CAVREF_MARGINS_OPTION0), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + option text = STRING_TOKEN (STR_CAVREF_MARGINS_OPTION2), value = 1, flags = RESET_REQUIRED; + endoneof; + endif; + + oneof varid = OEM_CONFIG_DATA.DieInterleaving, + prompt = STRING_TOKEN(STR_DIE_INTERLEAVING_PROMPT), + help = STRING_TOKEN(STR_DIE_INTERLEAVING_HELP), + option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT; + option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = RESET_REQUIRED; + endoneof; + + oneof varid = OEM_CONFIG_DATA.ChannelInterleaving, + prompt = STRING_TOKEN(STR_CHANNEL_INTERLEAVING_PROMPT), + help = STRING_TOKEN(STR_CHANNEL_INTERLEAVING_HELP), + option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT; + endoneof; + + oneof varid = OEM_CONFIG_DATA.RankInterleaving, + prompt = STRING_TOKEN(STR_RANK_INTERLEAVING_PROMPT), + help = STRING_TOKEN(STR_RANK_INTERLEAVING_HELP), + option text = STRING_TOKEN(STR_1WAY_STRING), value = 1, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_2WAY_STRING), value = 2, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT; + option text = STRING_TOKEN(STR_4WAY_STRING), value = 4, flags = RESET_REQUIRED; + endoneof; + + oneof varid = OEM_CONFIG_DATA.NumaEn, + prompt = STRING_TOKEN(STR_NUMA_PROMPT), + help = STRING_TOKEN(STR_NUMA_HELP), + option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT; + endoneof; + + oneof varid = OEM_CONFIG_DATA.HwMemTest, + prompt = STRING_TOKEN (STR_MEM_TEST_PROMPT), + help = STRING_TOKEN (STR_MEM_TEST_HELP), + option text = STRING_TOKEN (STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + option text = STRING_TOKEN (STR_ENABLE), value = 1, flags = RESET_REQUIRED; + endoneof; + + oneof varid = OEM_CONFIG_DATA.EccSupport, + prompt = STRING_TOKEN (STR_ECC_SUPPORT_PROMPT), + help = STRING_TOKEN (STR_ECC_SUPPORT_HELP), + option text = STRING_TOKEN (STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + option text = STRING_TOKEN (STR_ECC_EN), value = 1, flags = RESET_REQUIRED; + option text = STRING_TOKEN (STR_SDEC_EN), value = 2, flags = RESET_REQUIRED; + endoneof; + endif; + +endform; + diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MemoryConfig.uni b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MemoryConfig.uni new file mode 100644 index 0000000000..0ecf5e59cf --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MemoryConfig.uni @@ -0,0 +1,103 @@ +/** @file +* +* String definitions for the Memory Config. +* +* Copyright (c) 2017 - 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2017 - 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +/=# + +#langdef en-US "English" + +#string STR_MEMORY_CONFIG_FORM_TITLE #language en-US "Memory Configuration" +#string STR_MEMORY_CONFIG_FORM_HELP #language en-US "Displays and provides option to change the Memory Settings" +#string STR_MEMORY_RAS_CONFIG_FORM_TITLE #language en-US "Memory RAS Configuration" +#string STR_MEMORY_RAS_CONFIG_FORM_HELP #language en-US "Displays and provides option to change the Ras Configuration" +#string STR_MEM_PRINT_LEVEL_PROMPT #language en-US "Memory Print Level" +#string STR_MEM_PRINT_LEVEL_HELP #language en-US "Memory Print Level Set. Disable: Do not print any MRC statement/ Minimum: Print the most important(High level) MRC statement/ Minmax: Print the Mid-important(Mid level) and most important MRC statement/ Maximum: Print all of the MRC statement" +#string STR_ENABLE #language en-US "Enabled" +#string STR_DISABLE #language en-US "Disabled" + +#string STR_MEM_PRINT_LEVEL_MINIMUM #language en-US "Minimum" +#string STR_MEM_PRINT_LEVEL_MINMAX #language en-US "Minmax" +#string STR_MEM_PRINT_LEVEL_MAXIMUM #language en-US "Maximum" +#string STR_MEM_PRINT_LEVEL_DISABLE #language en-US "Disable" + +#string STR_XMP_DDR_FREQ_LIMIT_PROMPT #language en-US "Memory Frequency" +#string STR_XMP_DDR_FREQ_LIMIT_HELP #language en-US "Maximum Memory Frequency Selections in Mhz. Do not select Reserved" +#string STR_AUTO #language en-US "Auto" +#string STR_DDR_FREQ_1333_STRING #language en-US "1333" +#string STR_DDR_FREQ_1600_STRING #language en-US "1600" +#string STR_DDR_FREQ_1866_STRING #language en-US "1866" +#string STR_DDR_FREQ_2133_STRING #language en-US "2133" +#string STR_DDR_FREQ_2400_STRING #language en-US "2400" +#string STR_DDR_FREQ_2600_STRING #language en-US "2600" +#string STR_DDR_FREQ_2667_STRING #language en-US "2667" +#string STR_DDR_FREQ_2800_STRING #language en-US "2800" +#string STR_DDR_FREQ_2933_STRING #language en-US "2993" +#string STR_DDR_FREQ_3000_STRING #language en-US "3000" +#string STR_DDR_FREQ_3200_STRING #language en-US "3200" + +#string STR_DDR_REFRESH_SUPPORT_PROMPT #language en-US "Custom Refresh Enable" +#string STR_DDR_REFRESH_SUPPORT_HELP #language en-US "Memory Custom Refresh Enable " +#string STR_DDR_REFRESH_PROMPT #language en-US "Custom Refresh Rate" +#string STR_DDR_REFRESH_HELP #language en-US "Memory Custom Refresh Rate " +#string STR_32MS #language en-US "32ms" +#string STR_64MS #language en-US "64ms" + +#string STR_RMT_PROMPT #language en-US "Rank Margin Tool" +#string STR_RMT_HELP #language en-US "Enable the rank margin tool to run after DDR memory training" +#string STR_RMTM_PROMPT #language en-US "Rank Margin Mode" +#string STR_RMTM_HELP #language en-US "Select test mode for rank margin test" +#string STR_RMTM_SFC #language en-US "SFC" +#string STR_RMTM_EXMBIST #language en-US "EXMBIST" +#string STR_RMT_PATTERN_PROMPT #language en-US "RMT Pattern Length" +#string STR_RMT_PATTERN_HELP #language en-US "Set the pattern length(1-32767) for the Rank Margin Tool" +#string STR_PER_BIT_MARGIN_PROMPT #language en-US "Per Bit Margin" +#string STR_PER_BIT_MARGIN_HELP #language en-US "Enables the logging from the serial port of DDR Per Bit Margin Data" +#string STR_CA_MARGINS_PROMPT #language en-US "CA Margin" +#string STR_CA_MARGINS_HELP #language en-US "Enables CA margin" +#string STR_CAVREF_MARGINS_PROMPT #language en-US "CAVref Margin" +#string STR_CAVREF_MARGINS_HELP #language en-US "CAVref margin Options" +#string STR_CAVREF_MARGINS_OPTION0 #language en-US "VDD/2^2 connected to QVrefVA and BVrefCA" +#string STR_CAVREF_MARGINS_OPTION2 #language en-US "Internally generated Vref connected to QVrefCA^3 VDD/2^2 connected to BVrefCA" + +#string STR_DIE_INTERLEAVING_PROMPT #language en-US "Die Interleaving" +#string STR_DIE_INTERLEAVING_HELP #language en-US "Select Die Interleaving setting" +#string STR_CHANNEL_INTERLEAVING_PROMPT #language en-US "Channel Interleaving" +#string STR_CHANNEL_INTERLEAVING_HELP #language en-US "Select Channel Interleaving setting" +#string STR_RANK_INTERLEAVING_PROMPT #language en-US "Rank Interleaving" +#string STR_RANK_INTERLEAVING_HELP #language en-US "Select Rank Interleaving setting" + +#string STR_1WAY_STRING #language en-US "1-way Interleave" +#string STR_2WAY_STRING #language en-US "2-way Interleave" +#string STR_3WAY_STRING #language en-US "3-way Interleave" +#string STR_4WAY_STRING #language en-US "4-way Interleave" +#string STR_6WAY_STRING #language en-US "6-way Interleave" +#string STR_8WAY_STRING #language en-US "8-way Interleave" + +#string STR_NUMA_PROMPT #language en-US "NUMA" +#string STR_NUMA_HELP #language en-US "Enable or Disable Non uniform Memory Access (NUMA)." + +#string STR_MEM_TEST_PROMPT #language en-US "Memory Test" +#string STR_MEM_TEST_HELP #language en-US "Enable/disable memory test during normal boot" + +#string STR_ECC_SUPPORT_PROMPT #language en-US "ECC/SDEC Support" +#string STR_ECC_SUPPORT_HELP #language en-US "Enable/disable DDR Ecc/SDEC Support" +#string STR_ECC_EN #language en-US "Ecc Enable" +#string STR_SDEC_EN #language en-US "SDEC Enable" + + + + + diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.hfr b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.hfr new file mode 100644 index 0000000000..819c2b988d --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.hfr @@ -0,0 +1,34 @@ +/** @file +* +* Misc Config form at Oem Config fromset. +* +* Copyright (c) 2017 - 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2017 - 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ +form formid = MISC_CONFIG_FORM_ID, + title = STRING_TOKEN(STR_MISC_CONFIG_FORM_TITLE); + + oneof varid = OEM_CONFIG_DATA.EnableSmmu, + prompt = STRING_TOKEN(STR_OEM_TABLE), + help = STRING_TOKEN(STR_OEM_CONFIG_HELP), + option text = STRING_TOKEN(STR_DISABLED), value = 0, flags = 0; + option text = STRING_TOKEN(STR_ENABLED), value = 1, flags = DEFAULT; + endoneof; + + oneof varid = OEM_CONFIG_DATA.EnableFdtTable, + prompt = STRING_TOKEN(STR_FDT_TABLE), + help = STRING_TOKEN(STR_FDT_CONFIG_HELP), + option text = STRING_TOKEN(STR_DISABLED), value = 0, flags = DEFAULT; + option text = STRING_TOKEN(STR_ENABLED), value = 1, flags = 0; + endoneof; + +endform; diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.uni b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.uni new file mode 100644 index 0000000000..53eb1622c4 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.uni @@ -0,0 +1,27 @@ +/** @file +* +* String definitions for the Misc Config form. +* +* Copyright (c) 2017 - 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2017 - 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +#langdef en-US "English" + +#string STR_OEM_TABLE #language en-US "Support Smmu" +#string STR_OEM_CONFIG_HELP #language en-US "Enable or Disable Smmu." +#string STR_FDT_TABLE #language en-US "Install DTB Table" +#string STR_FDT_CONFIG_HELP #language en-US "Enable or Disable Fdt Table." +#string STR_ENABLE_SPCR_TABLE #language en-US "Support SPCR" +#string STR_ENABLE_SPCR_HELP #language en-US "Enable or Disable SPCR Table." +#string STR_ENABLE_GOP_FRAME_BUFFER #language en-US "Support GOP FB" +#string STR_ENABLE_GOP_FRAME_BUFFER_HELP #language en-US "Enable or Disable GOP frame buffer." diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLib.uni b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLib.uni new file mode 100644 index 0000000000..0b2c63a625 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLib.uni @@ -0,0 +1,24 @@ +/** @file +* +* OEM Config Library used by UiApp +* +* Copyright (c) 2017 - 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2017 - 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +#string STR_MODULE_ABSTRACT +#language en-US "OEM Config Library used by BDS" + +#string STR_MODULE_DESCRIPTION +#language en-US "OEM Config Library used by BDS" + + diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLibStrings.uni b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLibStrings.uni new file mode 100644 index 0000000000..afc048e6cd --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfigUiLibStrings.uni @@ -0,0 +1,42 @@ +/** @file +* +* String definitions for the OEM Config. +* +* Copyright (c) 2017 - 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2017 - 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +/=# + +#langdef en-US "English" + +#string STR_EMPTY_STRING #language en-US "" +#string STR_BIOS_BUILDTIME_STRING #language en-US "Build Date" +#string STR_MISC_BIOS_BUILDTIME #language en-US "" +#string SYSTEM_TIME #language en-US "System Time" +#string SYSTEM_TIME_HELP #language en-US "System Time (HH:MM:SS)" +#string SYSTEM_DATE #language en-US "System Date" +#string SYSTEM_DATE_HELP #language en-US "System Date (MM/DD/YYYY) Use [ENTER],[TAB] or [SHIFT-TAB] to select a field. Use [+] or [-] to configure system Time." +#string STR_OEM_CONFIG #language en-US "Oem Config" +#string STR_ENABLED #language en-US "Enabled" +#string STR_DISABLED #language en-US "Disabled" +#string STR_MEMORY_CONFIG_FORM_TITLE #language en-US "Memory Config" +#string STR_MEMORY_CONFIG_FORM_HELP #language en-US "Display Memory DIMM information." +#string STR_PCIE_CONFIG_FORM_TITLE #language en-US "PCIe Config" +#string STR_PCIE_CONFIG_FORM_HELP #language en-US "Display PCIe information." +#string STR_MISC_CONFIG_FORM_TITLE #language en-US "MISC Config" +#string STR_MISC_CONFIG_FORM_HELP #language en-US "Include SMMU Support Enable and Change the boot manner of DTB/ACPI." +#string STR_IBMC_CONFIG_FORM_TITLE #language en-US "IBMC Config" +#string STR_IBMC_CONFIG_FORM_HELP #language en-US "Include IBMC WDT(Watchdog Timer) Config." +#string STR_RAS_CONFIG_FORM_TITLE #language en-US "RAS Config" +#string STR_RAS_CONFIG_FORM_HELP #language en-US "Displays and provides option to change the Ras Configuration" +#string STR_EXIT_STRING #language en-US "Press ESC to exit." diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/PcieConfig.hfr b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/PcieConfig.hfr new file mode 100644 index 0000000000..7cf7cdd29b --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/PcieConfig.hfr @@ -0,0 +1,219 @@ +/** @file +* +* PCIe Config form at Oem Config fromset. +* +* Copyright (c) 2017 - 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2017 - 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ +form formid = PCIE_CONFIG_FORM_ID, + title = STRING_TOKEN (STR_PCIE_CONFIG_FORM_TITLE); + + goto VFR_FORMID_PCIE_SOCKET0, + prompt = STRING_TOKEN (STR_PCIE_CPU_0_PROMPT), + help = STRING_TOKEN (STR_PCIE_CPU_PROMPT_HELP); + + goto VFR_FORMID_PCIE_SOCKET1, + prompt = STRING_TOKEN (STR_PCIE_CPU_1_PROMPT), + help = STRING_TOKEN (STR_PCIE_CPU_PROMPT_HELP); + + oneof varid = OEM_CONFIG_DATA.PcieSRIOVSupport, + prompt = STRING_TOKEN (STR_SRIOV_SUPPORT_PROMPT), + help = STRING_TOKEN (STR_SRIOV_SUPPORT_HELP), + option text = STRING_TOKEN (STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + option text = STRING_TOKEN (STR_ENABLE), value = 1, flags = RESET_REQUIRED; + endoneof; + +endform; + +form formid = VFR_FORMID_PCIE_SOCKET0, + title = STRING_TOKEN(STR_PCIE_CPU_0_PROMPT); + + goto VFR_FORMID_PCIE_PORT2, + prompt = STRING_TOKEN(STR_PCIE_PORT_2_PROMPT), + help = STRING_TOKEN(STR_PCIE_PORT_PROMPT_HELP); + + goto VFR_FORMID_PCIE_PORT4, + prompt = STRING_TOKEN(STR_PCIE_PORT_4_PROMPT), + help = STRING_TOKEN(STR_PCIE_PORT_PROMPT_HELP); + + goto VFR_FORMID_PCIE_PORT5, + prompt = STRING_TOKEN(STR_PCIE_PORT_5_PROMPT), + help = STRING_TOKEN(STR_PCIE_PORT_PROMPT_HELP); + + goto VFR_FORMID_PCIE_PORT6, + prompt = STRING_TOKEN(STR_PCIE_PORT_6_PROMPT), + help = STRING_TOKEN(STR_PCIE_PORT_PROMPT_HELP); + + goto VFR_FORMID_PCIE_PORT7, + prompt = STRING_TOKEN(STR_PCIE_PORT_7_PROMPT), + help = STRING_TOKEN(STR_PCIE_PORT_PROMPT_HELP); + +endform; + +form formid = VFR_FORMID_PCIE_SOCKET1, + title = STRING_TOKEN(STR_PCIE_CPU_1_PROMPT); + goto VFR_FORMID_PCIE_PORT10, + prompt = STRING_TOKEN(STR_PCIE_PORT_10_PROMPT), + help = STRING_TOKEN(STR_PCIE_PORT_PROMPT_HELP); + + goto VFR_FORMID_PCIE_PORT12, + prompt = STRING_TOKEN(STR_PCIE_PORT_12_PROMPT), + help = STRING_TOKEN(STR_PCIE_PORT_PROMPT_HELP); + + goto VFR_FORMID_PCIE_PORT13, + prompt = STRING_TOKEN(STR_PCIE_PORT_13_PROMPT), + help = STRING_TOKEN(STR_PCIE_PORT_PROMPT_HELP); +endform; + +form formid = VFR_FORMID_PCIE_PORT0, + title = STRING_TOKEN(STR_PCIE_PORT_0_PROMPT); + #undef INDEX + #define INDEX 0 + #include "PciePortConfig.hfr" + +endform; + +form formid = VFR_FORMID_PCIE_PORT1, + title = STRING_TOKEN(STR_PCIE_PORT_1_PROMPT); + + #undef INDEX + #define INDEX 1 + #include "PciePortConfig.hfr" + +endform; + +form formid = VFR_FORMID_PCIE_PORT2, + title = STRING_TOKEN(STR_PCIE_PORT_2_PROMPT); + + #undef INDEX + #define INDEX 2 + #include "PciePortConfig.hfr" + +endform; + +form formid = VFR_FORMID_PCIE_PORT3, + title = STRING_TOKEN(STR_PCIE_PORT_3_PROMPT); + + #undef INDEX + #define INDEX 3 + #include "PciePortConfig.hfr" + +endform; + +form formid = VFR_FORMID_PCIE_PORT4, + title = STRING_TOKEN(STR_PCIE_PORT_4_PROMPT); + + #undef INDEX + #define INDEX 4 + #include "PciePortConfig.hfr" + +endform; + +form formid = VFR_FORMID_PCIE_PORT5, + title = STRING_TOKEN(STR_PCIE_PORT_5_PROMPT); + + #undef INDEX + #define INDEX 5 + #include "PciePortConfig.hfr" + +endform; + +form formid = VFR_FORMID_PCIE_PORT6, + title = STRING_TOKEN(STR_PCIE_PORT_6_PROMPT); + + #undef INDEX + #define INDEX 6 + #include "PciePortConfig.hfr" + +endform; + +form formid = VFR_FORMID_PCIE_PORT7, + title = STRING_TOKEN(STR_PCIE_PORT_7_PROMPT); + + #undef INDEX + #define INDEX 7 + #include "PciePortConfig.hfr" + +endform; + +form formid = VFR_FORMID_PCIE_PORT8, + title = STRING_TOKEN(STR_PCIE_PORT_8_PROMPT); + + #undef INDEX + #define INDEX 8 + #include "PciePortConfig.hfr" + +endform; + +form formid = VFR_FORMID_PCIE_PORT9, + title = STRING_TOKEN(STR_PCIE_PORT_9_PROMPT); + + #undef INDEX + #define INDEX 9 + #include "PciePortConfig.hfr" + +endform; + +form formid = VFR_FORMID_PCIE_PORT10, + title = STRING_TOKEN(STR_PCIE_PORT_10_PROMPT); + + #undef INDEX + #define INDEX 10 + #include "PciePortConfig.hfr" + +endform; + +form formid = VFR_FORMID_PCIE_PORT11, + title = STRING_TOKEN(STR_PCIE_PORT_11_PROMPT); + + #undef INDEX + #define INDEX 11 + #include "PciePortConfig.hfr" + +endform; + +form formid = VFR_FORMID_PCIE_PORT12, + title = STRING_TOKEN(STR_PCIE_PORT_12_PROMPT); + + #undef INDEX + #define INDEX 12 + #include "PciePortConfig.hfr" + +endform; + +form formid = VFR_FORMID_PCIE_PORT13, + title = STRING_TOKEN(STR_PCIE_PORT_13_PROMPT); + + #undef INDEX + #define INDEX 13 + #include "PciePortConfig.hfr" + +endform; + +form formid = VFR_FORMID_PCIE_PORT14, + title = STRING_TOKEN(STR_PCIE_PORT_14_PROMPT); + + #undef INDEX + #define INDEX 14 + #include "PciePortConfig.hfr" + +endform; + +form formid = VFR_FORMID_PCIE_PORT15, + title = STRING_TOKEN(STR_PCIE_PORT_15_PROMPT); + + #undef INDEX + #define INDEX 15 + #include "PciePortConfig.hfr" + +endform; + diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/PcieConfigStrings.uni b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/PcieConfigStrings.uni new file mode 100644 index 0000000000..d87d30f975 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/PcieConfigStrings.uni @@ -0,0 +1,111 @@ +/** @file +* +* String definitions for the PCIe Config form. +* +* Copyright (c) 2017 - 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2017 - 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +/=# + +#langdef en-US "English" + +#string STR_BLANK_STRING #language en-US "" +#string STR_PCIE_CPU_PROMPT_HELP #language en-US "Press to config this CPU." +#string STR_PCIE_CPU_0_NULL_PROMPT #language en-US "" +#string STR_PCIE_CPU_0_PROMPT #language en-US "CPU 0 PCIE Configuration" +#string STR_PCIE_CPU_1_PROMPT #language en-US "CPU 1 PCIE Configuration" +#string STR_SRIOV_SUPPORT_PROMPT #language en-US "SRIOV" +#string STR_SRIOV_SUPPORT_HELP #language en-US "This option enables / disables the SRIOV function" + +#string STR_PCIE_PORT_PROMPT_HELP #language en-US "Press to config this port." +#string STR_PCIE_PORT_0_NULL_PROMPT #language en-US "" +#string STR_PCIE_PORT_0_PROMPT #language en-US "CPU 0 Pcie - Port 0" +#string STR_PCIE_PORT_1_PROMPT #language en-US "CPU 0 Pcie - Port 1" +#string STR_PCIE_PORT_2_PROMPT #language en-US "CPU 0 Pcie - Port 2" +#string STR_PCIE_PORT_3_PROMPT #language en-US "CPU 0 Pcie - Port 3" +#string STR_PCIE_PORT_4_PROMPT #language en-US "CPU 0 Pcie - Port 4" +#string STR_PCIE_PORT_5_PROMPT #language en-US "CPU 0 Pcie - Port 5" +#string STR_PCIE_PORT_6_PROMPT #language en-US "CPU 0 Pcie - Port 6" +#string STR_PCIE_PORT_7_PROMPT #language en-US "CPU 0 Pcie - Port 7" +#string STR_PCIE_PORT_8_PROMPT #language en-US "CPU 1 Pcie - Port 0" +#string STR_PCIE_PORT_9_PROMPT #language en-US "CPU 1 Pcie - Port 1" +#string STR_PCIE_PORT_10_PROMPT #language en-US "CPU 1 Pcie - Port 2" +#string STR_PCIE_PORT_11_PROMPT #language en-US "CPU 1 Pcie - Port 3" +#string STR_PCIE_PORT_12_PROMPT #language en-US "CPU 1 Pcie - Port 4" +#string STR_PCIE_PORT_13_PROMPT #language en-US "CPU 1 Pcie - Port 5" +#string STR_PCIE_PORT_14_PROMPT #language en-US "CPU 1 Pcie - Port 6" +#string STR_PCIE_PORT_15_PROMPT #language en-US "CPU 1 Pcie - Port 7" + +#string STR_PCIE_PORT_ENABLE_PROMPT_0 #language en-US "PCI-E Port" +#string STR_PCIE_PORT_ENABLE_HELP #language en-US "Disable is used to disable the port and hide its CFG space." + +#string STR_LINK_STATUS #language en-US "PCI-E Port Link Status" +#string STR_LINK_STATUS_NG #language en-US "Link Training Error" +#string STR_LINK_STATUS_OK #language en-US "Link Up" +#string STR_MAXLINK_STATUS #language en-US "PCI-E Port Link Max" +#string STR_WIDTH1_STRING #language en-US "X1" +#string STR_WIDTH2_STRING #language en-US "X2" +#string STR_WIDTH4_STRING #language en-US "X4" +#string STR_WIDTH8_STRING #language en-US "X8" +#string STR_WIDTH16_STRING #language en-US "X16" +#string STR_WIDTH32_STRING #language en-US "X32" + +#string STR_PCIESPEED_STATUS #language en-US "PCI-E Port Link Speed" +#string STR_PCIE_LINK_SPEED1_STRING #language en-US "Gen 1 (2.5 GT/s)" +#string STR_PCIE_LINK_SPEED2_STRING #language en-US "Gen 2 (5 GT/s)" +#string STR_PCIE_LINK_SPEED3_STRING #language en-US "Gen 3 (8 GT/s)" + +#string STR_PCIE_PORT_DEEMPHASIS_PROMPT_0 #language en-US "PCI-E Port DeEmphasis" + +#string STR_PCIE_PORT_DEEMPHASIS_HELP #language en-US "De-Emphais control for this PCIe port." + +#string STR_35DB #language en-US "-3.5 dB" +#string STR_60DB #language en-US "-6.0 dB" + +#string STR_PCIE_PORT_ASPM_PROMPT_G #language en-US "PCI-E ASPM Support" + +#string STR_PCIE_GLOBAL_ASPM_HELP #language en-US "This option enables / disables the ASPM support for all downstream devices." +#string STR_PCIE_PORT_ASPM_HELP #language en-US "This option enables / disables the ASPM (L1) support for the downstream devices." + +#string STR_L0S_ONLY #language en-US "L0s Only" +#string STR_L0S_L1_BOTH #language en-US "L0s & L1 Both" +#string STR_L1_ONLY #language en-US "L1 Only" + +#string STR_PCIE_PORT_MAX_PAYLOAD_REQUEST_PROMPT #language en-US "Max Payload Size" +#string STR_PCIE_PORT_MAX_PAYLOAD_REQUEST_HELP #language en-US "Set Maxpayload size to 512B if possible" +// +// Common Strings +// +#string STR_AUTO #language en-US "Auto" +#string STR_X1 #language en-US "x1" +#string STR_X2 #language en-US "x2" +#string STR_X4 #language en-US "x4" +#string STR_X8 #language en-US "x8" +#string STR_X16 #language en-US "x16" + +#string STR_128B #language en-US "128B" +#string STR_256B #language en-US "256B" +#string STR_512B #language en-US "512B" +#string STR_1024B #language en-US "1024B" +#string STR_2048B #language en-US "2048B" +#string STR_4096B #language en-US "4096B" + +#string STR_CLEAR #language en-US "Clear" +#string STR_SET #language en-US "Set" + +#string STR_PCIE_PORT_LINK_SPEED_PROMPT_0 #language en-US "Link Speed" +#string STR_PCIE_PORT_LINK_SPEED_HELP #language en-US "Link Speed:Gen1(2.5 GT/s)/Gen2(5 GT/s)/Gen3(8 GT/s)/GEN 4 (16 gt/s)" +#string STR_PCIE_GEN1 #language en-US "Gen 1 (2.5 GT/s)" +#string STR_PCIE_GEN2 #language en-US "Gen 2 (5 GT/s)" +#string STR_PCIE_GEN3 #language en-US "Gen 3 (8 GT/s)" +#string STR_PCIE_GEN4 #language en-US "Gen 4 (16 GT/s)" diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/PciePortConfig.hfr b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/PciePortConfig.hfr new file mode 100644 index 0000000000..1a8942157c --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/PciePortConfig.hfr @@ -0,0 +1,167 @@ +/** @file +* +* PCIe Config form at Oem Config fromset. +* +* Copyright (c) 2017 - 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2017 - 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ +oneof varid = OEM_CONFIG_DATA.PciePort[INDEX], + prompt = STRING_TOKEN(STR_PCIE_PORT_ENABLE_PROMPT_0), + help = STRING_TOKEN(STR_PCIE_PORT_ENABLE_HELP), + option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT; + option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED; +endoneof; + +suppressif ideqval OEM_CONFIG_DATA.PciePort[INDEX] == 0x00; + oneof varid = OEM_CONFIG_DATA.PcieLinkSpeedPort[INDEX], + prompt = STRING_TOKEN(STR_PCIE_PORT_LINK_SPEED_PROMPT_0), + help = STRING_TOKEN(STR_PCIE_PORT_LINK_SPEED_HELP), + option text = STRING_TOKEN(STR_PCIE_GEN1), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED; + option text = STRING_TOKEN(STR_PCIE_GEN2), value = 2, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_PCIE_GEN3), value = 3, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_PCIE_GEN4), value = 4, flags = RESET_REQUIRED; + endoneof; + + suppressif NOT ideqval OEM_CONFIG_DATA.PcieLinkSpeedPort[INDEX] == 2; + oneof varid = OEM_CONFIG_DATA.PcieLinkDeEmphasisPort[INDEX], + prompt = STRING_TOKEN(STR_PCIE_PORT_DEEMPHASIS_PROMPT_0), + help = STRING_TOKEN(STR_PCIE_PORT_DEEMPHASIS_HELP), + #if ( INDEX == 0) + option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT; + option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED; + #endif + + #if ( INDEX == 1) + option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT; + option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED; + #endif + + #if ( INDEX == 3) + option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT; + option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED; + #endif + + #if ( INDEX == 4) + option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT; + option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED; + #endif + + #if ( INDEX == 6) + option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT; + option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED; + #endif + + #if ( INDEX == 7) + option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT; + option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED; + #endif + + #if ( INDEX == 8) + option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT; + option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED; + #endif + + #if ( INDEX == 9) + option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT; + option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED; + #endif + + #if ( INDEX == 11) + option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT; + option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED; + #endif + + #if ( INDEX == 14) + option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT; + option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED; + #endif + + #if ( INDEX == 15) + option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT; + option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED; + #endif + + #if ( INDEX == 2) + option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED ; + option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED| MANUFACTURING | DEFAULT; + #endif + + #if ( INDEX == 5) + option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT; + #endif + + #if ( INDEX == 10) + option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT; + #endif + + #if ( INDEX == 12) + option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT; + #endif + + #if ( INDEX == 13) + option text = STRING_TOKEN(STR_60DB), value = 0, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_35DB), value = 1, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT; + #endif + + endoneof; + endif; + + grayoutif TRUE; + oneof varid = OEM_CONFIG_DATA.PcieLinkStatusPort[INDEX], + prompt = STRING_TOKEN(STR_LINK_STATUS), + help = STRING_TOKEN(STR_BLANK_STRING), + option text = STRING_TOKEN(STR_LINK_STATUS_NG), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + option text = STRING_TOKEN(STR_LINK_STATUS_OK), value = 1, flags = RESET_REQUIRED; + endoneof; + + oneof varid = OEM_CONFIG_DATA.PcieLinkMaxPort[INDEX], + prompt = STRING_TOKEN(STR_MAXLINK_STATUS), + help = STRING_TOKEN(STR_BLANK_STRING), + option text = STRING_TOKEN(STR_WIDTH1_STRING), value = 1, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_WIDTH2_STRING), value = 2, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_WIDTH4_STRING), value = 4, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_WIDTH8_STRING), value = 8, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT; + endoneof; + + suppressif NOT ideqval OEM_CONFIG_DATA.PcieLinkStatusPort[INDEX] == 1; + oneof varid = OEM_CONFIG_DATA.PcieLinkSpeedRateStatusPort[INDEX], + prompt = STRING_TOKEN(STR_PCIESPEED_STATUS), + help = STRING_TOKEN(STR_BLANK_STRING), + option text = STRING_TOKEN(STR_PCIE_LINK_SPEED1_STRING), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + option text = STRING_TOKEN(STR_PCIE_LINK_SPEED2_STRING), value = 1, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_PCIE_LINK_SPEED3_STRING), value = 2, flags = RESET_REQUIRED; + endoneof; + endif; + endif; + + oneof varid = OEM_CONFIG_DATA.PcieMaxPayloadSizePort[INDEX], + prompt = STRING_TOKEN(STR_PCIE_PORT_MAX_PAYLOAD_REQUEST_PROMPT), + help = STRING_TOKEN(STR_PCIE_PORT_MAX_PAYLOAD_REQUEST_HELP), + option text = STRING_TOKEN(STR_128B), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + option text = STRING_TOKEN(STR_256B), value = 1, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_512B), value = 2, flags = RESET_REQUIRED; + endoneof; + + oneof varid = OEM_CONFIG_DATA.PcieAspmPort[INDEX], + prompt = STRING_TOKEN (STR_PCIE_PORT_ASPM_PROMPT_G), + help = STRING_TOKEN (STR_PCIE_GLOBAL_ASPM_HELP), + option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED | MANUFACTURING | DEFAULT; + option text = STRING_TOKEN(STR_L0S_ONLY), value = 1, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_L1_ONLY), value = 2, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_L0S_L1_BOTH), value = 3, flags = RESET_REQUIRED; + endoneof; + +endif; + diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/RasConfig.hfr b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/RasConfig.hfr new file mode 100644 index 0000000000..7c0ea53061 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/RasConfig.hfr @@ -0,0 +1,172 @@ + ///** @file +// +// Memory RAS Config form. +// +// Copyright (c) 2018, Hisilicon Limited. All rights reserved. +// Copyright (c) 2018, Linaro Limited. All rights reserved. +// This program and the accompanying materials +// are licensed and made available under the terms and conditions of the BSD License +// which accompanies this distribution. The full text of the license may be found at +// http://opensource.org/licenses/bsd-license.php +// +// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +// +//**/ + form formid = RAS_CONFIG_FORM_ID, + title = STRING_TOKEN(STR_RAS_CONFIG_FORM_TITLE); + + oneof varid = OEM_CONFIG_DATA.EnRasSupport, + prompt = STRING_TOKEN(STR_SUPPORT_RAS_TITLE), + help = STRING_TOKEN(STR_SUPPORT_RAS_HELP), + option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + endoneof; + + suppressif TRUE; + goto VFR_FORMID_MEMORY_RAS, + prompt = STRING_TOKEN(STR_MEMORY_RAS_CONFIG_FORM_TITLE), + help = STRING_TOKEN(STR_MEMORY_RAS_CONFIG_FORM_HELP); + + goto VFR_FORMID_PCIE_RAS, + prompt = STRING_TOKEN(STR_PCIE_RAS_CONFIG_FORM_TITLE), + help = STRING_TOKEN(STR_PCIE_RAS_CONFIG_FORM_HELP); + endif; + endform; + + form formid = VFR_FORMID_MEMORY_RAS, + title = STRING_TOKEN(STR_MEMORY_RAS_CONFIG_FORM_TITLE); + + oneof varid = OEM_CONFIG_DATA.CheckAlgorithm, + prompt = STRING_TOKEN(STR_CHECK_ALGORITHM_PROMPT), + help = STRING_TOKEN(STR_CHECK_ALGORITHM_HELP), + option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + option text = STRING_TOKEN(STR_ECC), value = 1, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_SDEC), value = 2, flags = RESET_REQUIRED; + endoneof; + + grayoutif ideqval OEM_CONFIG_DATA.CheckAlgorithm == 0; + oneof varid = OEM_CONFIG_DATA.EnPoison, + prompt = STRING_TOKEN(STR_ENABLE_POISON_PROMPT), + help = STRING_TOKEN(STR_ENABLE_POISON_HELP), + option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + endoneof; + + oneof varid = OEM_CONFIG_DATA.PatrolScrub, + prompt = STRING_TOKEN(STR_PATROL_SCRUB_PROMPT), + help = STRING_TOKEN(STR_PATROL_SCRUB_HELP), + option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + endoneof; + endif; + + grayoutif ideqval OEM_CONFIG_DATA.CheckAlgorithm == 0 OR ideqval OEM_CONFIG_DATA.PatrolScrub == 0; + numeric varid = OEM_CONFIG_DATA.PatrolScrubDuration, + prompt = STRING_TOKEN(STR_PATROL_SCRUB_DURATION_PROMPT), + help = STRING_TOKEN(STR_PATROL_SCRUB_DURATION_HELP), + flags = 0 | RESET_REQUIRED, + minimum = 0, + maximum = 24, + step = 1, + default = 24, + endnumeric; + endif; + + grayoutif ideqval OEM_CONFIG_DATA.CheckAlgorithm == 0; + oneof varid = OEM_CONFIG_DATA.DemandScrubMode, + prompt = STRING_TOKEN(STR_DEMAND_SCRUB_PROMPT), + help = STRING_TOKEN(STR_DEMAND_SCRUB_HELP), + option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = RESET_REQUIRED; + endoneof; + endif; + + suppressif ideqval OEM_CONFIG_DATA.CheckAlgorithm == 0 OR ideqval OEM_CONFIG_DATA.CheckAlgorithm == 1; + goto VFR_FORMID_CORRECT_ERROR, + prompt = STRING_TOKEN(STR_CORRECT_ERROR_FORM_TITLE), + help = STRING_TOKEN(STR_CORRECT_ERROR_FORM_HELP); + endif; + endform; + + + form formid = VFR_FORMID_CORRECT_ERROR, + title = STRING_TOKEN(STR_CORRECT_ERROR_FORM_TITLE); + + oneof varid = OEM_CONFIG_DATA.CorrectErrorThreshold, + prompt = STRING_TOKEN(STR_CORRECT_ERROR_THRESHOLD_PROMPT), + help = STRING_TOKEN(STR_CORRECT_ERROR_THRESHOLD_HELP), + option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + option text = STRING_TOKEN(STR_500), value = 1, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_1000), value = 2, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_2000), value = 3, flags = RESET_REQUIRED; + endoneof; + + oneof varid = OEM_CONFIG_DATA.FunnelPeriod, + prompt = STRING_TOKEN(STR_FUNNEL_PERIOD_PROMPT), + help = STRING_TOKEN(STR_FUNNEL_PERIOD_HELP), + option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + option text = STRING_TOKEN(STR_30), value = 1, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_60), value = 2, flags = RESET_REQUIRED; + endoneof; + + suppressif ideqval OEM_CONFIG_DATA.CorrectErrorThreshold == 0; + oneof varid = OEM_CONFIG_DATA.AdvanceDeviceCorrection , + prompt = STRING_TOKEN(STR_ADVANCE_DEVICE_CORRECTION_PROMPT), + help = STRING_TOKEN(STR_ADVANCE_DEVICE_CORRECTION_HELP), + option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + option text = STRING_TOKEN(STR_SR), value = 1, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_MR), value = 2, flags = RESET_REQUIRED; + endoneof; + + oneof varid = OEM_CONFIG_DATA.RankSparing, + prompt = STRING_TOKEN(STR_RANK_SPARING_PROMPT), + help = STRING_TOKEN(STR_RANK_SPARING_HELP), + option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = RESET_REQUIRED; + endoneof; + endif; + endform; + + form formid = VFR_FORMID_PCIE_RAS, + title = STRING_TOKEN(STR_PCIE_RAS_CONFIG_FORM_TITLE); + + oneof varid = OEM_CONFIG_DATA.DpcFeature, + prompt = STRING_TOKEN(STR_DPC_FEARURE), + help = STRING_TOKEN(STR_DPC_FEARURE_HELP), + option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = RESET_REQUIRED; + endoneof; + + oneof varid = OEM_CONFIG_DATA.EcrcFeature, + prompt = STRING_TOKEN(STR_ECRC_FEARURE), + help = STRING_TOKEN(STR_ECRC_FEARURE_HELP), + option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = RESET_REQUIRED; + endoneof; + + oneof varid = OEM_CONFIG_DATA.CompletionTimeout, + prompt = STRING_TOKEN(STR_COMPLETION_TIMEOUT), + help = STRING_TOKEN(STR_COMPLETION_TIMEOUT_HELP), + option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + endoneof; + + suppressif ideqval OEM_CONFIG_DATA.CompletionTimeout == 0; + oneof varid = OEM_CONFIG_DATA.CompletionTimeoutValue, + prompt = STRING_TOKEN(STR_COMPLETION_TIMEOUT_VALUE), + help = STRING_TOKEN(STR_COMPLETION_TIMEOUT_VALUE_HELP), + option text = STRING_TOKEN(STR_50US_TO_50MS), value = 0, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + option text = STRING_TOKEN(STR_50US_TO_100US), value = 1, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_1MS_TO_10MS), value = 2, flags = RESET_REQUIRED; + endoneof; + endif; + + oneof varid = OEM_CONFIG_DATA.HotPlug, + prompt = STRING_TOKEN(STR_HOT_PLUG), + help = STRING_TOKEN(STR_HOT_PLUG_HELP), + option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED; + option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED; + endoneof; + endform; + diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/RasConfig.uni b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/RasConfig.uni new file mode 100644 index 0000000000..551c65fa5f --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/RasConfig.uni @@ -0,0 +1,85 @@ +// /** @file +// OEM Config Library used by UiApp +// +// +// Copyright (c) 2018, Hisilicon Limited. All rights reserved. +// Copyright (c) 2018, Linaro Limited. All rights reserved. +// +// This program and the accompanying materials are licensed and made available under +// the terms and conditions of the BSD License that accompanies this distribution. +// The full text of the license may be found at +// http://opensource.org/licenses/bsd-license.php. +// +// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +// +// **/ +#langdef en-US "English" + +#string STR_SUPPORT_RAS_TITLE #language en-US "Support RAS" +#string STR_SUPPORT_RAS_HELP #language en-US "Support memory/PCIe/CPU RAS funtions." + +#string STR_MEMORY_RAS_CONFIG_FORM_TITLE #language en-US "Memory RAS Config" +#string STR_MEMORY_RAS_CONFIG_FORM_HELP #language en-US "Memory RAS Config" + +#string STR_PCIE_RAS_CONFIG_FORM_TITLE #language en-US "PCIe RAS Config" +#string STR_PCIE_RAS_CONFIG_FORM_HELP #language en-US "PCIe RAS Config" + +#string STR_CPU_RAS_CONFIG_FORM_TITLE #language en-US "CPU RAS Config" +#string STR_CPU_RAS_CONFIG_FORM_HELP #language en-US "CPU RAS Config" + +#string STR_ENABLE_POISON_PROMPT #language en-US "Poison" +#string STR_ENABLE_POISON_HELP #language en-US "Enable/Disable Poison flag" + +#string STR_CHECK_ALGORITHM_PROMPT #language en-US "Check Algorithm" +#string STR_CHECK_ALGORITHM_HELP #language en-US "Set the memory check algorithm" +#string STR_ECC #language en-US "ECC" +#string STR_SDEC #language en-US "SDEC" + +#string STR_PATROL_SCRUB_PROMPT #language en-US "Active Scrub" +#string STR_PATROL_SCRUB_HELP #language en-US "Enable/Disable Active Scrub" + +#string STR_PATROL_SCRUB_DURATION_PROMPT #language en-US "Active Scrub Interval" +#string STR_PATROL_SCRUB_DURATION_HELP #language en-US "Selects the number of hours (0-24) required to complete full scrub. A value of zero means auto!" + +#string STR_DEMAND_SCRUB_PROMPT #language en-US "Passive Scrub" +#string STR_DEMAND_SCRUB_HELP #language en-US "Enable/Disable Passive Scrub" + +#string STR_CORRECT_ERROR_FORM_TITLE #language en-US "Correct Error handle" +#string STR_CORRECT_ERROR_FORM_HELP #language en-US "Correctable error-related configuration" + +#string STR_CORRECT_ERROR_THRESHOLD_PROMPT #language en-US "Correct Error Threshold" +#string STR_CORRECT_ERROR_THRESHOLD_HELP #language en-US "Correctable error-related configuration" +#string STR_500 #language en-US "500" +#string STR_1000 #language en-US "1000" +#string STR_2000 #language en-US "2000" + +#string STR_FUNNEL_PERIOD_PROMPT #language en-US "Funnel Period(min)" +#string STR_FUNNEL_PERIOD_HELP #language en-US "Set the Funnel function time period" +#string STR_30 #language en-US "30" +#string STR_60 #language en-US "60" + +#string STR_ADVANCE_DEVICE_CORRECTION_PROMPT #language en-US "Advance Device Correction" +#string STR_ADVANCE_DEVICE_CORRECTION_HELP #language en-US "Configure the correctable error threshold alarm handling solution" +#string STR_SR #language en-US "SR" +#string STR_MR #language en-US "MR" + +#string STR_RANK_SPARING_PROMPT #language en-US "Rank Sparing" +#string STR_RANK_SPARING_HELP #language en-US "Enable/Disable Rank Sparing" + +#string STR_DPC_FEARURE #language en-US "DPC Feature" +#string STR_DPC_FEARURE_HELP #language en-US "Enable/Disable PCIE DPC(DownStream Port Containment) feature." + +#string STR_ECRC_FEARURE #language en-US "ECRC Feature" +#string STR_ECRC_FEARURE_HELP #language en-US "Enable/Disable ECRC check feature" +#string STR_COMPLETION_TIMEOUT #language en-US "Completion Timeout" +#string STR_COMPLETION_TIMEOUT_HELP #language en-US "Enable/Disable PCIE Completion Timeout feature." + +#string STR_COMPLETION_TIMEOUT_VALUE #language en-US "Completion Timeout Value" +#string STR_COMPLETION_TIMEOUT_VALUE_HELP #language en-US "Set the corresponding Completion Timeout value." + +#string STR_HOT_PLUG #language en-US "Hot-Plug" +#string STR_HOT_PLUG_HELP #language en-US "Enable/Disable PCIE Hot-plug feature." +#string STR_50US_TO_50MS #language en-US "50 us to 50 ms" +#string STR_50US_TO_100US #language en-US "50 us to 100 us" +#string STR_1MS_TO_10MS #language en-US "1 ms to 10 ms" diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/iBMCConfig.hfr b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/iBMCConfig.hfr new file mode 100644 index 0000000000..4d295a8593 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/iBMCConfig.hfr @@ -0,0 +1,81 @@ + ///** @file +// +// IBMC Config form. +// +// Copyright (c) 2018, Hisilicon Limited. All rights reserved. +// Copyright (c) 2018, Linaro Limited. All rights reserved. +// This program and the accompanying materials +// are licensed and made available under the terms and conditions of the BSD License +// which accompanies this distribution. The full text of the license may be found at +// http://opensource.org/licenses/bsd-license.php +// +// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +// +//**/ + form formid = IBMC_CONFIG_FORM_ID, + title = STRING_TOKEN(STR_IBMC_CONFIG_FORM_TITLE); + + oneof + varid = OEM_CONFIG_DATA.BmcWdtEnable, + prompt = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER), + help = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_HELP), + option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = DEFAULT; + option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = 0; + endoneof; + + suppressif ideqval OEM_CONFIG_DATA.BmcWdtEnable == 0; + numeric + varid = OEM_CONFIG_DATA.BmcWdtTimeout, + prompt = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_TIMEOUT), + help = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_TIMEOUT_C10_HELP), + minimum = 15, + maximum = 25, + step = 1, + default = 15, + endnumeric; + + oneof + varid = OEM_CONFIG_DATA.BmcWdtAction, + prompt = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_ACTION), + help = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_ACTION_HELP), + option text = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_NO_ACTION), value = 0, flags = 0; + option text = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_HARD_RESET), value = 1, flags = DEFAULT; + option text = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_POWER_DOWN), value = 2, flags = 0; + option text = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_POWER_CYCLE), value = 3, flags = 0; + endoneof; + endif; + + suppressif TRUE; + oneof + varid = OEM_CONFIG_DATA.OSWdtEnable, + prompt = STRING_TOKEN(STR_BMC_OS_WATCHDOG_TIMER), + help = STRING_TOKEN(STR_BMC_OS_WATCHDOG_TIMER_HELP), + option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = DEFAULT; + option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = 0; + endoneof; + endif; + + suppressif ideqval OEM_CONFIG_DATA.OSWdtEnable == 0; + numeric + varid = OEM_CONFIG_DATA.OSWdtTimeout, + prompt = STRING_TOKEN(STR_BMC_OS_WDT_TIMEOUT), + help = STRING_TOKEN(STR_BMC_OS_WDT_TIMEOUT_HELP), + minimum = 5, + maximum = 8, + step = 1, + default = 5, + endnumeric; + + oneof + varid = OEM_CONFIG_DATA.OSWdtAction, + prompt = STRING_TOKEN(STR_BMC_OS_WDT_ACTION), + help = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_ACTION_HELP), + option text = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_NO_ACTION), value = 0, flags = 0; + option text = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_HARD_RESET), value = 1, flags = DEFAULT; + option text = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_POWER_DOWN), value = 2, flags = 0; + option text = STRING_TOKEN(STR_BMC_WATCHDOG_TIMER_POWER_CYCLE), value = 3, flags = 0; + endoneof; + endif; + + endform; diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/iBMCConfig.uni b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/iBMCConfig.uni new file mode 100644 index 0000000000..e12e433760 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/iBMCConfig.uni @@ -0,0 +1,34 @@ +// /** @file +// OEM Config Library used by UiApp +// +// +// Copyright (c) 2018, Hisilicon Limited. All rights reserved. +// Copyright (c) 2018, Linaro Limited. All rights reserved. +// +// This program and the accompanying materials are licensed and made available under +// the terms and conditions of the BSD License that accompanies this distribution. +// The full text of the license may be found at +// http://opensource.org/licenses/bsd-license.php. +// +// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +// +// **/ +#langdef en-US "English" + +#string STR_BMC_WATCHDOG_TIMER #language en-US "iBMC WDT Support For POST" +#string STR_BMC_WATCHDOG_TIMER_HELP #language en-US "Enable/Disable iBMC watchdog timer at start of POST." +#string STR_BMC_WATCHDOG_TIMER_TIMEOUT #language en-US "iBMC WDT TimeOut For POST" +#string STR_BMC_WATCHDOG_TIMER_TIMEOUT_C10_HELP #language en-US "Enter the number of minutes the system firmware has to boot the OS before it takes the Timeout Action. Valid values are from 15 to 25 minutes." +#string STR_BMC_WATCHDOG_TIMER_ACTION #language en-US "iBMC WDT Action For POST" +#string STR_BMC_WATCHDOG_TIMER_ACTION_HELP #language en-US "Timeout Action Choices: No Action, Hard Reset, Power Down or Power Cycle" +#string STR_BMC_WATCHDOG_TIMER_NO_ACTION #language en-US "No Action" +#string STR_BMC_WATCHDOG_TIMER_HARD_RESET #language en-US "Hard Reset" +#string STR_BMC_WATCHDOG_TIMER_POWER_DOWN #language en-US "Power Down" +#string STR_BMC_WATCHDOG_TIMER_POWER_CYCLE #language en-US "Power Cycle" +#string STR_BMC_OS_WATCHDOG_TIMER #language en-US "iBMC WDT Support For OS" +#string STR_BMC_OS_WATCHDOG_TIMER_HELP #language en-US "Enable/Disable OS Watchdog Timer When OS Load" +#string STR_BMC_OS_WDT_TIMEOUT #language en-US "iBMC WDT TimeOut For OS" +#string STR_BMC_OS_WDT_TIMEOUT_HELP #language en-US "Enter the number of minutes the system firmware \n has to OS Load before it takes the Timeout Action. Valid values are from 5 to 8 minutes." +#string STR_BMC_OS_WDT_ACTION #language en-US "iBMC WDT Action For OS" + From patchwork Fri Aug 31 13:26:55 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145623 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp784068ljw; Fri, 31 Aug 2018 06:28:20 -0700 (PDT) X-Google-Smtp-Source: ANB0VdbwZyU+CD1AM/a4mbg1IC3KbLF/NalRlkHHWiqAYGuUjw1g1uf3yP91XwFO7jkt7pA/9xm3 X-Received: by 2002:a63:a06:: with SMTP id 6-v6mr14738315pgk.318.1535722100749; Fri, 31 Aug 2018 06:28:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722100; cv=none; d=google.com; s=arc-20160816; b=KA6sclsh6EXBZTw5sSs1QONjgRvGWP847Dyb922c175pg0+Kj3NIaQaeBQco6C/m5s +VIcoWBXgT8e6uYtBb+o/99GRNbm7WE3ivbC5Zd54+m88KmWBK9azh3Tpv7sJZhpaZAg 7eePM4lBsH+dfGPxOteDMzCDF207SJ53cPmmLF8hMwFgYxCWMBML9+0NGWdaOG1aEpoY 86FJL3ZOAr2QPmsuYMEpjJHiXHKWyksaI8RNQNBImvBbNGB94cnSPt8j6DEZWTK2gZAJ brEnqxjyQJ8MWG6Ctu3IuOnMjCUf/a8szxlttJe+csJXNgg3rKjhuLCRWxcyst6RwJXM c72A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=SVl7SYPXyhjiMQlYyxRl3cZBXHAHOUhJZNW8GwW3R4g=; b=fWuKk2NNB0TKiIEvaPEl+xHqzK7Sz1NfbiOumOXEvPEFE6I0eF/C77qAtyxmwMqyks ZY7UkT0teLjwu3TgPLTtms7FnLifTbQLAFFiohTOh+5BoRUdiuOcVQOff9fm/AA54zoc 0yYOAefgZkixJWT0CzHCUMz/jQeKTK2DZqMA2TtyTlXVoN6KB/ZPys0/4PnA6NG2AS4g 5mUj2XSqKSWFrB+ubY0TCxi4CwhciPqdogUs9ak0trhepM+3OPYQ/8MDOlmPP4ONbtXh GFoHrKAFfsAfkOP/LmbTepOMwbxTummBFmUdp9ISR8k3/4ogdG9McFH4kNhP1cld4ioz Ta3Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=QRMv1HNT; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id o21-v6si9390949pgc.658.2018.08.31.06.28.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:28:20 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=QRMv1HNT; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id CF83A2110BFAA; Fri, 31 Aug 2018 06:28:11 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::433; helo=mail-pf1-x433.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pf1-x433.google.com (mail-pf1-x433.google.com [IPv6:2607:f8b0:4864:20::433]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id B5A362110BD4F for ; Fri, 31 Aug 2018 06:28:10 -0700 (PDT) Received: by mail-pf1-x433.google.com with SMTP id j26-v6so5522330pfi.10 for ; Fri, 31 Aug 2018 06:28:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=OYn1ULjcR6HXKkuAXur/9OtBoJzvz0PGv1YxMjnJEXA=; b=QRMv1HNTd5dkYyQhaGKqHf96eCZ4ahLf231mrdXQfInS1TaWUTSKodHn+9my0mtOzL F5hRM6BQ7Zs62fRmcg1fzYXhJuG4gRji0GyKiFB594rooRL+/vgt8513T6ZjVoL8SUFB QGpWpKkZa4f38seUiASNRxHV6uhADemby9yys= 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=OYn1ULjcR6HXKkuAXur/9OtBoJzvz0PGv1YxMjnJEXA=; b=F7r+VkZzb9jZHOctQDtMoWr5dI1UeXP4NW6OGPd3DNJwjM10vSn82hw92shINasMf4 3UhT6KGAtrEmomBTg8DjMgaS6r/9ybyyKA3pRC5fKFW1+ckGr+p7mxzfiNMUWizoRVdB 1VqhFZ49YimDP1WtH7NDP6gwhf2FJdidnHwvwCHNKIV+iJhOpP76q4HOE7sz/03+Ixgb WKvpMNg0LYK3sm4XjR4kL5FjECOv45HWOoTQHB5ScTyPtwQdzqLzXvS1/AODCAwxnACy XPK+mfsUT6KhA1kXxhRB8Rv9dvWwbo17zSwaeowMJHIt0dEa80PIyNWoVYX18Ttet/ED 4RGg== X-Gm-Message-State: APzg51DfKlj7XDZ0VPp1mq0FeB/ZR2PiPD9pl+58gXqKYw+5XVroHxxi xtlp/9H9OHBI1ne54mZmnalQcA== X-Received: by 2002:a65:608b:: with SMTP id t11-v6mr14673138pgu.259.1535722090377; Fri, 31 Aug 2018 06:28:10 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.28.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:28:09 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:26:55 +0800 Message-Id: <20180831132710.23055-14-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 13/28] Silicon/Hisilicon/D06: Stop watchdog X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" according as watchdog design on D06, watchdog should be stopped before boot a option. This is an out of band watchdog timer in BMC; it is used to monitor the whole BIOS boot process and reset the system in case BIOS hangs somewhere, i.e. it is armed when system is power on, and disabled before handling system control to OS, while UEFI boot services watchdog is only armed before invoking a boot option. So they are two different watchdogs. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang Reviewed-by: Leif Lindholm --- Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf | 2 ++ Silicon/Hisilicon/Include/Library/IpmiCmdLib.h | 16 ++++++++++++++ Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c | 22 ++++++++++++++++++++ 3 files changed, 40 insertions(+) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf index e9d649b0eb..31aede26fc 100644 --- a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf +++ b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf @@ -47,6 +47,7 @@ DebugLib DevicePathLib DxeServicesLib + IpmiCmdLib MemoryAllocationLib PcdLib PrintLib @@ -69,6 +70,7 @@ [Guids] gEfiEndOfDxeEventGroupGuid gEfiTtyTermGuid + gOemConfigGuid [Protocols] gEfiGenericMemTestProtocolGuid diff --git a/Silicon/Hisilicon/Include/Library/IpmiCmdLib.h b/Silicon/Hisilicon/Include/Library/IpmiCmdLib.h index 8868b76135..b956ee6d07 100644 --- a/Silicon/Hisilicon/Include/Library/IpmiCmdLib.h +++ b/Silicon/Hisilicon/Include/Library/IpmiCmdLib.h @@ -19,6 +19,17 @@ #define BOOT_OPTION_BOOT_FLAG_VALID 1 #define BOOT_OPTION_BOOT_FLAG_INVALID 0 +typedef enum { + EfiReserved, + EfiBiosFrb2, + EfiBiosPost, + EfiOsLoad, + EfiSmsOs, + EfiOem, + EfiFrbReserved1, + EfiFrbReserved2 +} EFI_WDT_USER_TYPE; + typedef enum { NoOverride = 0x0, ForcePxe, @@ -91,4 +102,9 @@ IpmiCmdGetSysBootOptions ( IN IPMI_GET_BOOT_OPTION *BootOption ); +EFI_STATUS +IpmiCmdStopWatchdogTimer ( + IN EFI_WDT_USER_TYPE UserType + ); + #endif diff --git a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c index 77295d0111..aa8ddd45a5 100644 --- a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c +++ b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c @@ -19,6 +19,8 @@ #include #include #include +#include +#include #include #include #include @@ -609,6 +611,8 @@ PlatformBootManagerAfterConsole ( { EFI_STATUS Status; ESRT_MANAGEMENT_PROTOCOL *EsrtManagement = NULL; + OEM_CONFIG_DATA SetupData; + UINTN DataSize = sizeof (OEM_CONFIG_DATA); // // Show the splash screen. @@ -645,6 +649,24 @@ PlatformBootManagerAfterConsole ( ); HandleBmcBootType (); + + //Disable POST Watch Dog before attempting boot + Status = gRT->GetVariable ( + OEM_CONFIG_NAME, + &gOemConfigGuid, + NULL, + &DataSize, + &SetupData + ); + + if (!EFI_ERROR (Status)) { + if (SetupData.BmcWdtEnable) { + Status = IpmiCmdStopWatchdogTimer (EfiBiosPost); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a:%r\n", __FUNCTION__, Status)); + } + } + } } /** From patchwork Fri Aug 31 13:26:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145624 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp784172ljw; Fri, 31 Aug 2018 06:28:25 -0700 (PDT) X-Google-Smtp-Source: ANB0VdYY/o0ZDerES0PYPoRpFDLH7bM45U4RaznGX+4ZvSaRcG/a0MTaKinFqu2RKn71ucVxEi4f X-Received: by 2002:a62:398c:: with SMTP id u12-v6mr16114941pfj.9.1535722105608; Fri, 31 Aug 2018 06:28:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722105; cv=none; d=google.com; s=arc-20160816; b=kf8aZwgR2vHG8LTRtqWQP0Q2bBXbOnCpYOdTGaQQCKHeYupCjPR/CTHFQ23nnTEOmf cteIqM2gzw9bBH1y5yNMuku2h1xzM8gr66D7vC6a1RQlqZGCe9d4ZpapQOl4JLw7KQRZ wKLTfPBhlcvsTMFirtsbbq+/uJXXRnTDXqKIROzvIvQQS8mHNt5vavYNc864ob3xaZZ6 0uzF+1JjpwZQ8UN+/aEfzdifv0JTwbBaWNaQw2FwT1NpTNUa0lj7JupgDIzET3rgab9s Fi2z3PinGoUhyL/Qlb2u79Nd+jsbx7Wx5AQlZjunMbns6FeQ9c9p8qJOnNB2W5GJTXPk RgCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=kVPHHKbLCBQQJhs/E8vb2RvmvXq5vlYmJecad/hluys=; b=gkBgVyqJ49kNEEuNfyvkAk0b7xNlonULi3jvzWDAC2nZzkUPuNcDQ90dAh0FHNclJU ZB81w62bGVxi9xFKAIlwmodWAYP0ahPx+9LFI9gHOpgGu+wcj+wbJaWIyVNiV6EM5w9D WrrLOOs7RBkZ1Bfo2z5GvoQMCxX/klYHLoMl2ffUxFdGgIjixdDNpFddmoMxw0bZPQKu i70m23XbbVQRhCzO5HOvQiH5V5JBU0rNWsKmNxCD6lFds3klzRi+jm/VnzVLZlbV5ypI qdQBtF/Cs2rXLPL6RRvG0babSVaUemnVZnKaTydP5QntLaaWZG3o00UzN2YJFyVJbHmO zFMg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b="C/vP5bxC"; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id 32-v6si9758023plg.390.2018.08.31.06.28.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:28:25 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b="C/vP5bxC"; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 0BDAF2110BD59; Fri, 31 Aug 2018 06:28:16 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::644; helo=mail-pl1-x644.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pl1-x644.google.com (mail-pl1-x644.google.com [IPv6:2607:f8b0:4864:20::644]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 4766D2110BD4F for ; Fri, 31 Aug 2018 06:28:14 -0700 (PDT) Received: by mail-pl1-x644.google.com with SMTP id g23-v6so5479598plq.9 for ; Fri, 31 Aug 2018 06:28:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Fn4WJzTAkMOW1PMqJZh+4+SaJDdu3ScHr3e+4ysrlgw=; b=C/vP5bxCGNfllDYm8BZqYmhaQQ55WjaKs4TczWeBrNPUKXvslB0ZGX6cLQzrKVXksu n9ieDgZG/+sHJyKg5cfMAxUQcD9d91oAHZjiSdhKEHiLiffWZkzsmcn43ocAOYiyGuuV q/UXssFs58I35YuLpw8tQ67pzGH3GUUe9J3UE= 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=Fn4WJzTAkMOW1PMqJZh+4+SaJDdu3ScHr3e+4ysrlgw=; b=UZI+/snMeLi4HW7ZMC9KWBuAdDFYzhMsOTgAIA5i9iZiw+dJ4tQ5EZAS3qBCz9S9Zq 89x7+eX4m6E26HqS4GvYGnCr3at6Fl46MiVLkeJiyF4Fos6hIl2zwurnYsq1iDn37Thb tdRFH2Q+ndJJl1IOi3JLKl82Yy/0l57pH0QB1X9nkBWhzcYCPgwQ/T69xljRirkgnrC1 kpPbPxi3vTaoD1XXWgPjY7BGzSnz7n+zatM6rbVIYtHr1bMLe/IwLkZDw9PJ9ELmw9f8 b7dZLYT4KoQ7gzCnS28SGQ31NOFMFMMhVeiTMfYaPu+5k5Nlkd+LFsVoP67TQmRGOglQ rhzQ== X-Gm-Message-State: APzg51AgK6C2WaGWPQ+3I9wtq4qBUMGuMKXO3pYdw29Ddw51xMOl+n6U Ok+FG/KXUDjf7xpJriaFtH3XEQ== X-Received: by 2002:a17:902:585:: with SMTP id f5-v6mr148074plf.7.1535722094033; Fri, 31 Aug 2018 06:28:14 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.28.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:28:13 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:26:56 +0800 Message-Id: <20180831132710.23055-15-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 14/28] Silicon/Hisilicon/Hi1620/Setup: Add Setup Item "EnableGOP" X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, Yang XinYi , huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" From: Yang XinYi Add Setup Item "EnableGOP" for D06, This Item only takes effect on SM750. The SM750 is a VGA device under BMC and the KVM output to SM750. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang Reviewed-by: Leif Lindholm --- Silicon/Hisilicon/Include/Library/OemConfigData.h | 1 + Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.c | 1 + Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.hfr | 7 +++++++ Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.uni | 4 ++-- 4 files changed, 11 insertions(+), 2 deletions(-) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Silicon/Hisilicon/Include/Library/OemConfigData.h b/Silicon/Hisilicon/Include/Library/OemConfigData.h index 8ab402144c..f120e3123c 100644 --- a/Silicon/Hisilicon/Include/Library/OemConfigData.h +++ b/Silicon/Hisilicon/Include/Library/OemConfigData.h @@ -60,6 +60,7 @@ typedef struct { /*Misc Config*/ UINT8 EnableSmmu; UINT8 EnableFdtTable; + UINT8 EnableGOP; /*RAS Config*/ UINT8 EnRasSupport; UINT8 EnPoison; diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.c b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.c index f49fb3533b..012d45bc02 100644 --- a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.c +++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.c @@ -294,6 +294,7 @@ OemConfigUiLibConstructor ( // Configuration.EnableSmmu = 1; Configuration.EnableFdtTable = 0; + Configuration.EnableGOP = 0; // //Set the default value of the Ras option // diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.hfr b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.hfr index 819c2b988d..16ce27b95b 100644 --- a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.hfr +++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.hfr @@ -31,4 +31,11 @@ form formid = MISC_CONFIG_FORM_ID, option text = STRING_TOKEN(STR_ENABLED), value = 1, flags = 0; endoneof; + oneof varid = OEM_CONFIG_DATA.EnableGOP, + prompt = STRING_TOKEN(STR_ENABLE_GOP_FRAME_BUFFER), + help = STRING_TOKEN(STR_ENABLE_GOP_FRAME_BUFFER_HELP), + option text = STRING_TOKEN(STR_DISABLED), value = 0, flags = DEFAULT; + option text = STRING_TOKEN(STR_ENABLED), value = 1, flags = 0; + endoneof; + endform; diff --git a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.uni b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.uni index 53eb1622c4..2fd92fedff 100644 --- a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.uni +++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.uni @@ -23,5 +23,5 @@ #string STR_FDT_CONFIG_HELP #language en-US "Enable or Disable Fdt Table." #string STR_ENABLE_SPCR_TABLE #language en-US "Support SPCR" #string STR_ENABLE_SPCR_HELP #language en-US "Enable or Disable SPCR Table." -#string STR_ENABLE_GOP_FRAME_BUFFER #language en-US "Support GOP FB" -#string STR_ENABLE_GOP_FRAME_BUFFER_HELP #language en-US "Enable or Disable GOP frame buffer." +#string STR_ENABLE_GOP_FRAME_BUFFER #language en-US "Support GOP FB for SM750" +#string STR_ENABLE_GOP_FRAME_BUFFER_HELP #language en-US "Enable or Disable GOP frame buffer for SM750." From patchwork Fri Aug 31 13:26:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145625 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp784257ljw; Fri, 31 Aug 2018 06:28:30 -0700 (PDT) X-Google-Smtp-Source: ANB0VdZ/kEni3hisgMPXG35e5pLh9pio7RdhfaApj1bOhqdQBQrW+OIpWjVnWXD5LrZfiech6v7b X-Received: by 2002:a62:444d:: with SMTP id r74-v6mr15812391pfa.96.1535722110225; Fri, 31 Aug 2018 06:28:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722110; cv=none; d=google.com; s=arc-20160816; b=eSeGZjqEeuj0ZyqZNLsrG/tr8P0gPbyN70voCUWPuh6ndtfOvTJ0rAwQ7HJPesRWoD rWaiWjSdeojlK1jU8RkUDdxXyiZj3/+nXRE415buU8GRHDjkPUjSlsxKV57PmQBml/Lm R4J4CREnJk8t8COzig0QdZut4GzY2kAO98vdvLgD3qCoZ0d+whyxHMGoLUUfz2X2eYrP wvAk7aj7fX0GoiFBZxBCW8uWJIcwAfgxJokwYA/jJwt+p8AnlNtPy1IgVQBvKmLMQeIJ RI1CD+MYCn0lOAW4AIiMHWNN3M1vMMY8hcuPeQT4Zy+uelsK+pFUwwEWGGIBkDWSOaNa mEhw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=0IG1nve6o0z38UCZgxUKYj/vdaSE/l3L+3i3qFrZG5s=; b=yvrmR0fgXlm0Ag6d4B7jVUUQQoDgR61KE/GyAMzZooaQd5qBDBhkEHnavD3Y0t45EU 8FOhE9G/5ToPYEq2XL5UTE52sC0JgdA1CRY1GDuH687v9AdAQHbKnQi84GBWGmorxDze +BllXek9gGUEmmbox3nErUG0nok95wIthDPMYBZ0oWt23ineTqHRhwZ5HdGHYlCoo1Zy YeqPfUvZ+jX/knQZewP0yvHf0dtyGYDfDw5Gpmyqtyg8hwtFVMwCnILzqhGGD1dz0L6F 8bVzXHkWAM5dvSzVYyIOpT5f5ptgTa7fhb2mdUqHzCqVfifWV7ZHHWa9BUuon9R/Ac0b qXsQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=JFtauUhw; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id z63-v6si10002223pfi.214.2018.08.31.06.28.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:28:30 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=JFtauUhw; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 3EE3D2110BFA9; Fri, 31 Aug 2018 06:28:20 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::544; helo=mail-pg1-x544.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pg1-x544.google.com (mail-pg1-x544.google.com [IPv6:2607:f8b0:4864:20::544]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 5DF272194D3B3 for ; Fri, 31 Aug 2018 06:28:18 -0700 (PDT) Received: by mail-pg1-x544.google.com with SMTP id s15-v6so5453380pgv.8 for ; Fri, 31 Aug 2018 06:28:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=tWaOHhShtfgx47PsxckulDZjHVyBoRRd9Xeoe8pqzTQ=; b=JFtauUhwfuR+WQRKMA6WX/fsLLvnJjMi1j2k3QdAslUC13SFq8Jilp3HaiMKsw3PF/ N7ur8l14Nt/7HDlVVExSwMxok2qIfeqot7Wdf8QrpBmGPwvHUj2EQLzItZnxIJhbfFKx fjLbQguVJftoqoIDptxyRGIh/698uWedPVkIQ= 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=tWaOHhShtfgx47PsxckulDZjHVyBoRRd9Xeoe8pqzTQ=; b=kwvsJz16c+dOfppzVV0w5YqUfnL031rHjKTXJ5KbBiEnSTxN07b/WAXxD7nPg9dyy/ GmA53svff3H6q2ufPhCcVhFjehhZIR9zxPgTFrqRDIGu7u4KE+eizylzLBkyYv1ASN3U XWh/Bh8CdvC8Jb+BgMG8mOeVhLsvKZfK5+tfG4tqpyPVMXwDsgkHKA9xgtCck68eSyLK lhka8gcn5Y5AscPVLJppeqHYYEPWQdXeMtL8/7l2yTTd2Vb+jK/APOlM26ctLhL5d3o2 j+IukEojTBNfXXD5Zv6eFtPYKTVmP6bX/ZMYFV9XKCTAIgvpSIkL8AvMTR8m5OxffN1+ W0CA== X-Gm-Message-State: APzg51BvyaqRzNjwz8BT17th0aGbR39Jed7E0sSwM1HSPI1PF7sjYOD6 VY4T1yLDRlaEERJ6lNj1NqmlEA== X-Received: by 2002:a63:eb0e:: with SMTP id t14-v6mr14523907pgh.198.1535722097761; Fri, 31 Aug 2018 06:28:17 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.28.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:28:17 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:26:57 +0800 Message-Id: <20180831132710.23055-16-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 15/28] Hisilicon/Hi1620: Add ACPI PPTT table X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" From: Heyi Guo This driver fetches information from MADT, so it is adaptable for partial good and 1P/2P, since MADT is updated for different configurations by certain mechanism. Since L2 cache is also private resource of core, so we need to set the next level of cache for L1I and L1D, which is important for OS to parse cache hierarchy. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang Reviewed-by: Leif Lindholm --- Silicon/Hisilicon/Hi1620/Pptt/Pptt.inf | 48 ++ Silicon/Hisilicon/Hi1620/Pptt/Pptt.h | 68 +++ Silicon/Hisilicon/Hi1620/Pptt/Pptt.c | 543 ++++++++++++++++++++ 3 files changed, 659 insertions(+) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Silicon/Hisilicon/Hi1620/Pptt/Pptt.inf b/Silicon/Hisilicon/Hi1620/Pptt/Pptt.inf new file mode 100644 index 0000000000..f8a5ed33a4 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Pptt/Pptt.inf @@ -0,0 +1,48 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +* Based on the files under Platform/ARM/JunoPkg/AcpiTables/ +* +**/ + +[Defines] + INF_VERSION = 0x0001001A + BASE_NAME = AcpiPptt + FILE_GUID = 65766562-49e7-11e8-817f-286ed489ee9b + MODULE_TYPE = DXE_DRIVER + VERSION_STRING = 1.0 + ENTRY_POINT = PpttEntryPoint + +[Sources.common] + Pptt.c + +[Packages] + ArmPkg/ArmPkg.dec + MdePkg/MdePkg.dec + Silicon/Hisilicon/HisiPkg.dec + +[LibraryClasses] + ArmLib + BaseMemoryLib + DebugLib + HobLib + UefiDriverEntryPoint + UefiRuntimeServicesTableLib + +[Protocols] + gEfiAcpiSdtProtocolGuid ## PROTOCOL ALWAYS_CONSUMED + gEfiAcpiTableProtocolGuid ## PROTOCOL ALWAYS_CONSUMED + +[Depex] + gEfiAcpiTableProtocolGuid AND gEfiAcpiSdtProtocolGuid + diff --git a/Silicon/Hisilicon/Hi1620/Pptt/Pptt.h b/Silicon/Hisilicon/Hi1620/Pptt/Pptt.h new file mode 100644 index 0000000000..5f2ec67cb9 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Pptt/Pptt.h @@ -0,0 +1,68 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +* Based on the files under Platform/ARM/JunoPkg/AcpiTables/ +* +**/ + +#ifndef _PPTT_H_ +#define _PPTT_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define PPTT_VENDOR_ID SIGNATURE_32('H', 'I', 'S', 'I') + +#define EFI_ACPI_MAX_NUM_TABLES 20 + +#define MAX_SCL_PER_SOCKET MAX_DIE +#define MAX_SCL (MAX_SOCKET * MAX_SCL_PER_SOCKET) +#define MAX_CLUSTER_PER_SCL 8 + +#define PPTT_TABLE_MAX_LEN 0x6000 +#define PPTT_SOCKET_COMPONENT_NO 0x1 +#define PPTT_CACHE_NO 0x4 + +typedef union { + struct { + UINT32 InD :1; + UINT32 Level :3; + UINT32 Reserved :28; + } Bits; + UINT32 Data; +} CSSELR_DATA; + +typedef union { + struct { + UINT32 LineSize :3; + UINT32 Associativity :10; + UINT32 NumSets :15; + UINT32 Wa :1; + UINT32 Ra :1; + UINT32 Wb :1; + UINT32 Wt :1; + } Bits; + UINT32 Data; +} CCSIDR_DATA; + +#endif // _PPTT_H_ + diff --git a/Silicon/Hisilicon/Hi1620/Pptt/Pptt.c b/Silicon/Hisilicon/Hi1620/Pptt/Pptt.c new file mode 100644 index 0000000000..944b4b9507 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Pptt/Pptt.c @@ -0,0 +1,543 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +* Based on the files under Platform/ARM/JunoPkg/AcpiTables/ +* +**/ + +#include "Pptt.h" + +typedef EFI_ACPI_5_1_GIC_STRUCTURE ACPI_GIC_STRUCTURE; +typedef EFI_ACPI_5_1_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER ACPI_MADT_TABLE_HEADER; + +EFI_ACPI_TABLE_PROTOCOL *mAcpiTableProtocol = NULL; +EFI_ACPI_SDT_PROTOCOL *mAcpiSdtProtocol = NULL; + +EFI_ACPI_DESCRIPTION_HEADER mPpttHeader = + ARM_ACPI_HEADER ( + EFI_ACPI_6_2_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_STRUCTURE_SIGNATURE, + EFI_ACPI_DESCRIPTION_HEADER, + EFI_ACPI_6_2_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_REVISION + ); + +EFI_ACPI_6_2_PPTT_STRUCTURE_ID mPpttSocketType2[PPTT_SOCKET_COMPONENT_NO] = +{ + {2, sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_ID), {0, 0}, PPTT_VENDOR_ID, 0, 0, 0, 0, 0} +}; + +EFI_ACPI_6_2_PPTT_STRUCTURE_CACHE mPpttCacheType1[PPTT_CACHE_NO]; + +STATIC UINT32 mSocketOffset[MAX_SOCKET]; +STATIC UINT32 mScclOffset[MAX_SCL]; +STATIC UINT32 mClusterOffset[MAX_SCL][MAX_CLUSTER_PER_SCL]; + +STATIC +VOID +InitCacheInfo ( + VOID + ) +{ + UINT8 Index; + EFI_ACPI_6_2_PPTT_STRUCTURE_CACHE_ATTRIBUTES Type1Attributes; + CSSELR_DATA CsselrData; + CCSIDR_DATA CcsidrData; + + for (Index = 0; Index < PPTT_CACHE_NO; Index++) { + CsselrData.Data = 0; + CcsidrData.Data = 0; + SetMem ( + &Type1Attributes, + sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_CACHE_ATTRIBUTES), + 0 + ); + + if (Index == 0) { //L1I + CsselrData.Bits.InD = 1; + CsselrData.Bits.Level = 0; + Type1Attributes.CacheType = 1; + } else if (Index == 1) { + Type1Attributes.CacheType = 0; + CsselrData.Bits.Level = Index - 1; + } else { + Type1Attributes.CacheType = 2; + CsselrData.Bits.Level = Index - 1; + } + + CcsidrData.Data = ReadCCSIDR (CsselrData.Data); + + if (CcsidrData.Bits.Wa == 1) { + Type1Attributes.AllocationType = EFI_ACPI_6_2_CACHE_ATTRIBUTES_ALLOCATION_WRITE; + if (CcsidrData.Bits.Ra == 1) { + Type1Attributes.AllocationType = EFI_ACPI_6_2_CACHE_ATTRIBUTES_ALLOCATION_READ_WRITE; + } + } + + if (CcsidrData.Bits.Wt == 1) { + Type1Attributes.WritePolicy = 1; + } + DEBUG ((DEBUG_INFO, + "[Acpi PPTT] Level = %x!CcsidrData = %x!\n", + CsselrData.Bits.Level, + CcsidrData.Data)); + + mPpttCacheType1[Index].Type = EFI_ACPI_6_2_PPTT_TYPE_CACHE; + mPpttCacheType1[Index].Length = sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_CACHE); + mPpttCacheType1[Index].Reserved[0] = 0; + mPpttCacheType1[Index].Reserved[1] = 0; + mPpttCacheType1[Index].Flags.SizePropertyValid = 1; + mPpttCacheType1[Index].Flags.NumberOfSetsValid = 1; + mPpttCacheType1[Index].Flags.AssociativityValid = 1; + mPpttCacheType1[Index].Flags.AllocationTypeValid = 1; + mPpttCacheType1[Index].Flags.CacheTypeValid = 1; + mPpttCacheType1[Index].Flags.WritePolicyValid = 1; + mPpttCacheType1[Index].Flags.LineSizeValid = 1; + mPpttCacheType1[Index].Flags.Reserved = 0; + mPpttCacheType1[Index].NextLevelOfCache = 0; + + if (Index != PPTT_CACHE_NO - 1) { + mPpttCacheType1[Index].NumberOfSets = (UINT16)CcsidrData.Bits.NumSets + 1; + mPpttCacheType1[Index].Associativity = (UINT16)CcsidrData.Bits.Associativity + 1; + mPpttCacheType1[Index].LineSize = (UINT16)( 1 << (CcsidrData.Bits.LineSize + 4)); + mPpttCacheType1[Index].Size = mPpttCacheType1[Index].LineSize * \ + mPpttCacheType1[Index].Associativity * \ + mPpttCacheType1[Index].NumberOfSets; + CopyMem ( + &mPpttCacheType1[Index].Attributes, + &Type1Attributes, + sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_CACHE_ATTRIBUTES) + ); + } else { + // L3 cache + mPpttCacheType1[Index].Size = 0x2000000; // 32MB + mPpttCacheType1[Index].NumberOfSets = 0x800; + mPpttCacheType1[Index].Associativity = 0x0F; // CacheAssociativity16Way + SetMem ( + &mPpttCacheType1[Index].Attributes, + sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_CACHE_ATTRIBUTES), + 0x0A + ); + mPpttCacheType1[Index].LineSize = 0x80; // 128byte + } + } +} + +STATIC +EFI_STATUS +AddCoreTable ( + IN EFI_ACPI_DESCRIPTION_HEADER *PpttTable, + IN OUT UINT32 *PpttTableLengthRemain, + IN UINT32 Parent, + IN UINT32 ResourceNo, + IN UINT32 ProcessorId + ) +{ + EFI_ACPI_6_2_PPTT_STRUCTURE_PROCESSOR *PpttType0; + EFI_ACPI_6_2_PPTT_STRUCTURE_CACHE *PpttType1; + UINT32 *PrivateResource; + UINT8 Index; + UINT32 NextLevelCacheOffset; + + if (*PpttTableLengthRemain < + (sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_PROCESSOR) + ResourceNo * 4)) { + return EFI_OUT_OF_RESOURCES; + } + PpttType0 = (EFI_ACPI_6_2_PPTT_STRUCTURE_PROCESSOR *)((UINT8 *)PpttTable + + PpttTable->Length); + PpttType0->Type = 0; + SetMem (&PpttType0->Flags, sizeof (PpttType0->Flags), 0); + PpttType0->Flags.AcpiProcessorIdValid = EFI_ACPI_6_2_PPTT_PROCESSOR_ID_VALID; + PpttType0->Parent= Parent; + PpttType0->AcpiProcessorId = ProcessorId; + PpttType0->NumberOfPrivateResources = ResourceNo; + PpttType0->Length = sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_PROCESSOR) + + ResourceNo * 4; + + *PpttTableLengthRemain -= (UINTN)PpttType0->Length; + PpttTable->Length += PpttType0->Length; + PrivateResource = (UINT32 *)((UINT8 *)PpttType0 + + sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_PROCESSOR)); + + // Add cache type structure + for (Index = 0; Index < ResourceNo; Index++, PrivateResource++) { + if (*PpttTableLengthRemain < sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_CACHE)) { + return EFI_OUT_OF_RESOURCES; + } + *PrivateResource = PpttTable->Length; + PpttType1 = (EFI_ACPI_6_2_PPTT_STRUCTURE_CACHE *)((UINT8 *)PpttTable + + PpttTable->Length); + gBS->CopyMem ( + PpttType1, + &mPpttCacheType1[Index], + sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_CACHE) + ); + *PpttTableLengthRemain -= PpttType1->Length; + PpttTable->Length += PpttType1->Length; + } + + NextLevelCacheOffset = *(PrivateResource - 1); + PrivateResource = (UINT32 *)(PpttType0 + 1); + // Set the next level to L2 for L1I and L1D + PpttType1 = (EFI_ACPI_6_2_PPTT_STRUCTURE_CACHE *)((UINT8 *) PpttTable + *PrivateResource++); + PpttType1->NextLevelOfCache = NextLevelCacheOffset; + PpttType1 = (EFI_ACPI_6_2_PPTT_STRUCTURE_CACHE *)((UINT8 *) PpttTable + *PrivateResource++); + PpttType1->NextLevelOfCache = NextLevelCacheOffset; + + return EFI_SUCCESS; +} + +STATIC +EFI_STATUS +AddClusterTable ( + IN EFI_ACPI_DESCRIPTION_HEADER *PpttTable, + IN OUT UINT32 *PpttTableLengthRemain, + IN UINT32 Parent, + IN UINT32 ResourceNo + ) +{ + EFI_ACPI_6_2_PPTT_STRUCTURE_PROCESSOR *PpttType0; + + if ((*PpttTableLengthRemain) < + (sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_PROCESSOR) + ResourceNo * 4)) { + return EFI_OUT_OF_RESOURCES; + } + PpttType0 = (EFI_ACPI_6_2_PPTT_STRUCTURE_PROCESSOR *)((UINT8 *)PpttTable + + PpttTable->Length); + PpttType0->Type = 0; + SetMem (&PpttType0->Flags, sizeof (PpttType0->Flags), 0); + PpttType0->Parent= Parent; + PpttType0->NumberOfPrivateResources = ResourceNo; + PpttType0->Length = sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_PROCESSOR) + + ResourceNo * 4; + + *PpttTableLengthRemain -= PpttType0->Length; + PpttTable->Length += PpttType0->Length; + + return EFI_SUCCESS; +} + +STATIC +EFI_STATUS +AddScclTable ( + IN EFI_ACPI_DESCRIPTION_HEADER *PpttTable, + IN OUT UINT32 *PpttTableLengthRemain, + IN UINT32 Parent, + IN UINT32 ResourceNo + ) +{ + EFI_ACPI_6_2_PPTT_STRUCTURE_PROCESSOR *PpttType0; + EFI_ACPI_6_2_PPTT_STRUCTURE_CACHE *PpttType1; + UINT32 *PrivateResource; + + if (*PpttTableLengthRemain < + (sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_PROCESSOR) + ResourceNo * 4)) { + return EFI_OUT_OF_RESOURCES; + } + PpttType0 = (EFI_ACPI_6_2_PPTT_STRUCTURE_PROCESSOR *)((UINT8 *)PpttTable + + PpttTable->Length); + PpttType0->Type = 0; + SetMem (&PpttType0->Flags, sizeof (PpttType0->Flags), 0); + PpttType0->Parent= Parent; + PpttType0->NumberOfPrivateResources = ResourceNo; + PpttType0->Length = sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_PROCESSOR) + + ResourceNo * 4; + + *PpttTableLengthRemain -= PpttType0->Length; + PpttTable->Length += PpttType0->Length; + PrivateResource = (UINT32 *)((UINT8 *)PpttType0 + + sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_PROCESSOR)); + + // Add cache type structure + if (*PpttTableLengthRemain < sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_CACHE)) { + return EFI_OUT_OF_RESOURCES; + } + *PrivateResource = PpttTable->Length; + PpttType1 = (EFI_ACPI_6_2_PPTT_STRUCTURE_CACHE *)((UINT8 *)PpttTable + + PpttTable->Length); + gBS->CopyMem ( + PpttType1, + &mPpttCacheType1[3], + sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_CACHE) + ); + *PpttTableLengthRemain -= PpttType1->Length; + PpttTable->Length += PpttType1->Length; + + return EFI_SUCCESS; +} + +STATIC +EFI_STATUS +AddSocketTable ( + IN EFI_ACPI_DESCRIPTION_HEADER *PpttTable, + IN OUT UINT32 *PpttTableLengthRemain, + IN UINT32 Parent, + IN UINT32 ResourceNo + ) +{ + EFI_ACPI_6_2_PPTT_STRUCTURE_PROCESSOR *PpttType0; + EFI_ACPI_6_2_PPTT_STRUCTURE_ID *PpttType2; + UINT32 *PrivateResource; + UINT8 Index; + + if (*PpttTableLengthRemain < sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_PROCESSOR)) { + return EFI_OUT_OF_RESOURCES; + } + PpttType0 = (EFI_ACPI_6_2_PPTT_STRUCTURE_PROCESSOR *)((UINT8 *)PpttTable + + PpttTable->Length); + PpttType0->Type = 0; + SetMem (&PpttType0->Flags, sizeof (PpttType0->Flags), 0); + PpttType0->Flags.PhysicalPackage = EFI_ACPI_6_2_PPTT_PROCESSOR_ID_VALID; + PpttType0->Parent= Parent; + PpttType0->NumberOfPrivateResources = ResourceNo; + PpttType0->Length = sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_PROCESSOR) + + ResourceNo * 4; + PpttTable->Length += PpttType0->Length; + + *PpttTableLengthRemain -= PpttType0->Length; + if (*PpttTableLengthRemain < ResourceNo * 4) { + return EFI_OUT_OF_RESOURCES; + } + PrivateResource = (UINT32 *)((UINT8 *)PpttType0 + + sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_PROCESSOR)); + DEBUG ((DEBUG_INFO, + "[Acpi PPTT] sizeof(EFI_ACPI_6_2_PPTT_STRUCTURE_ID) = %x!\n", + sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_ID))); + + for (Index = 0; Index < ResourceNo; Index++, PrivateResource++) { + if (*PpttTableLengthRemain < sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_ID)) { + return EFI_OUT_OF_RESOURCES; + } + *PrivateResource = PpttTable->Length; + PpttType2 = (EFI_ACPI_6_2_PPTT_STRUCTURE_ID *)((UINT8 *)PpttTable + + PpttTable->Length); + gBS->CopyMem ( + PpttType2, + &mPpttSocketType2[Index], + sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_ID) + ); + *PpttTableLengthRemain -= PpttType2->Length; + PpttTable->Length += PpttType2->Length; + } + + return EFI_SUCCESS; +} + +STATIC +VOID +GetAffLvl ( + IN UINT64 Mpidr, + IN OUT UINT8 *Level3, + IN OUT UINT8 *Level2, + IN OUT UINT8 *Level1, + IN OUT UINT8 *Level0 + ) +{ + *Level3 = BitFieldRead64 (Mpidr, 32, 39); + *Level2 = BitFieldRead64 (Mpidr, 16, 23); + *Level1 = BitFieldRead64 (Mpidr, 8, 15); + *Level0 = BitFieldRead64 (Mpidr, 0, 7); +} + + +STATIC +VOID +GetApic ( + IN ACPI_MADT_TABLE_HEADER *ApicTable, + IN OUT EFI_ACPI_DESCRIPTION_HEADER *PpttTable, + IN UINT32 PpttTableLengthRemain +) +{ + UINT32 Parent = 0; + UINT32 ResourceNo = 0; + ACPI_GIC_STRUCTURE *Ptr; + UINT8 AffLvl3 = 0; + UINT8 AffLvl2 = 0; + UINT8 AffLvl1 = 0; + UINT8 AffLvl0 = 0; + UINTN SocketIndex; + + for (Ptr = (ACPI_GIC_STRUCTURE *) (ApicTable + 1); + (UINTN) Ptr < (UINTN) ApicTable + ApicTable->Header.Length; + Ptr = (ACPI_GIC_STRUCTURE *) ((UINTN) Ptr + Ptr->Length)) { + + // Avoid dead loop due to corrupted MADT + if (Ptr->Length == 0) { + DEBUG ((DEBUG_ERROR, "[%a:%d] - Invalid MADT sub structure at 0x%x\n", + __FUNCTION__, __LINE__, (UINTN) Ptr - (UINTN) ApicTable)); + break; + } + + if (Ptr->Type != EFI_ACPI_5_1_GIC || + (Ptr->Flags & EFI_ACPI_5_1_GIC_ENABLED) == 0) { + continue; + } + GetAffLvl (Ptr->MPIDR, &AffLvl3, &AffLvl2, &AffLvl1, &AffLvl0); + // AffLvl3 is not used for Hi1620 + // And socket index is calculated by AffLvl2 + + SocketIndex = AffLvl2 / MAX_SCL_PER_SOCKET; + if (mSocketOffset[SocketIndex] == 0) { + //Add socket for type0 table + ResourceNo = PPTT_SOCKET_COMPONENT_NO; + mSocketOffset[SocketIndex] = PpttTable->Length; + Parent = 0; + AddSocketTable ( + PpttTable, + &PpttTableLengthRemain, + Parent, + ResourceNo + ); + } + + if (mScclOffset[AffLvl2] == 0) { + //Add SCCL for type0 table + ResourceNo = 1; + mScclOffset[AffLvl2] = PpttTable->Length ; + Parent = mSocketOffset[SocketIndex]; + AddScclTable ( + PpttTable, + &PpttTableLengthRemain, + Parent, + ResourceNo + ); + } + + if (mClusterOffset[AffLvl2][AffLvl1] == 0) { + // Add cluster for type0 table + // No private resource for cluster on Hi1620 + ResourceNo = 0; + mClusterOffset[AffLvl2][AffLvl1] = PpttTable->Length ; + Parent = mScclOffset[AffLvl2]; + AddClusterTable ( + PpttTable, + &PpttTableLengthRemain, + Parent, + ResourceNo + ); + } + + //Add core for type0 table + ResourceNo = 3; + Parent = mClusterOffset[AffLvl2][AffLvl1]; + AddCoreTable ( + PpttTable, + &PpttTableLengthRemain, + Parent, + ResourceNo, + Ptr->AcpiProcessorUid + ); + } +} + + +STATIC +VOID +PpttSetAcpiTable( + IN EFI_EVENT Event, + IN VOID *Context + ) +{ + UINTN AcpiTableHandle; + EFI_STATUS Status; + UINT8 Checksum; + EFI_ACPI_SDT_HEADER *Table; + ACPI_MADT_TABLE_HEADER *ApicTable; + EFI_ACPI_TABLE_VERSION TableVersion; + EFI_ACPI_DESCRIPTION_HEADER *PpttTable; + UINTN TableKey; + UINT32 Index0; + UINT32 PpttTableLengthRemain = 0; + + gBS->CloseEvent (Event); + + InitCacheInfo (); + + PpttTable = (EFI_ACPI_DESCRIPTION_HEADER *)AllocateZeroPool (PPTT_TABLE_MAX_LEN); + gBS->CopyMem ( + (VOID *)PpttTable, + &mPpttHeader, + sizeof (EFI_ACPI_DESCRIPTION_HEADER) + ); + PpttTableLengthRemain = PPTT_TABLE_MAX_LEN - sizeof (EFI_ACPI_DESCRIPTION_HEADER); + + for (Index0 = 0; Index0 < EFI_ACPI_MAX_NUM_TABLES; Index0++) { + Status = mAcpiSdtProtocol->GetAcpiTable ( + Index0, + &Table, + &TableVersion, + &TableKey + ); + if (EFI_ERROR (Status)) { + break; + } + + // Find APIC table + if (Table->Signature == EFI_ACPI_6_1_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE) { + break; + } + + } + + if (!EFI_ERROR (Status) && (Index0 != EFI_ACPI_MAX_NUM_TABLES)) { + ApicTable = (ACPI_MADT_TABLE_HEADER *)Table; + + GetApic (ApicTable, PpttTable, PpttTableLengthRemain); + + Checksum = CalculateCheckSum8 ((UINT8 *)(PpttTable), PpttTable->Length); + PpttTable->Checksum = Checksum; + + AcpiTableHandle = 0; + Status = mAcpiTableProtocol->InstallAcpiTable ( + mAcpiTableProtocol, + PpttTable, + PpttTable->Length, + &AcpiTableHandle); + } + + FreePool (PpttTable); + return ; +} + +EFI_STATUS +EFIAPI +PpttEntryPoint( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + EFI_EVENT ReadyToBootEvent; + + Status = gBS->LocateProtocol ( + &gEfiAcpiTableProtocolGuid, + NULL, + (VOID **)&mAcpiTableProtocol); + ASSERT_EFI_ERROR (Status); + + Status = gBS->LocateProtocol ( + &gEfiAcpiSdtProtocolGuid, + NULL, + (VOID **)&mAcpiSdtProtocol); + ASSERT_EFI_ERROR (Status); + + Status = EfiCreateEventReadyToBootEx ( + TPL_NOTIFY, + PpttSetAcpiTable, + NULL, + &ReadyToBootEvent + ); + ASSERT_EFI_ERROR (Status); + + DEBUG ((DEBUG_INFO, "Acpi Pptt init done.\n")); + + return Status; +} From patchwork Fri Aug 31 13:26:58 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145626 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp784329ljw; Fri, 31 Aug 2018 06:28:34 -0700 (PDT) X-Google-Smtp-Source: ANB0VdaDm8SOR99j5L2itlFqRPtn7JCWAJoABy/EaX12vCih2d+S75THBQpcmFW0IReMW9H5OcI6 X-Received: by 2002:a17:902:7794:: with SMTP id o20-v6mr12662638pll.116.1535722114581; Fri, 31 Aug 2018 06:28:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722114; cv=none; d=google.com; s=arc-20160816; b=Y8rrwi6dRMRDBtmN02yxVrieV+8fdee5IbWs0xhZ91gyBwt56GojV1CxIn+waOJ2ib A5/dm1USWctJ1DsEQ7u2bGsQJcUcio5L1YcIMh5niDHHUVUFAi+Cxw6cYsDEH4IMzXhN CnvszYmNohM9YGeZwREsGd1kXV5SYmgcQ1OuioHsUaf3bF6Q1wW1wVctEQz5zPoWb3wv xUeNjFeW7HiSNspP5lqNG2jlgZrBQEeUsbCwDgMYP8nAwGvrlznvvzxV6pZxdYfA65d7 KzwhJWbEQ2nEWl25aPttPwcbKld97vLCLMdPqXnjzCbaoGk5KjPYEQNnWw+yUkIcf5Na n1cg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=9kjFHLJfWXt4oI8wn0Bxu8cE7QgSgzIGq2Kq1VJVI78=; b=LCZ2C4x9mA3HHdp4VProwMKRVS9kpVP778yD6+RmCt5QXvEimhGfpYnLArXOt4qUd3 LeevtQpwgJFWOTkoQ8Mb149gkxtnJSBgS9sbw0HcFwINM5QL0KQ80PSgQjaPGVc8FG8d WA7sBv6A9ouL4CLtIIwqu7ck0xlDD7NFeFAtWAzPwXdW4zIDZ6gGV2me2mKk0i0VvwYr phx6d8Bk0xsp4rRSbMT8himDlIVW577M9gHG4CXy1oRER4Mf7Zi4+QCzehfpzIKymfcJ O+H8p51ouabY5HLPrkYnaUeeqJF8JnWaFMMsaiHqzLk2LxHmeqlC8XpYtmqs8tJbIv3b eDBQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=dtDm5WPc; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id u69-v6si8893995pgd.547.2018.08.31.06.28.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:28:34 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=dtDm5WPc; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 6A7BB2110BFAE; Fri, 31 Aug 2018 06:28:22 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::431; helo=mail-pf1-x431.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pf1-x431.google.com (mail-pf1-x431.google.com [IPv6:2607:f8b0:4864:20::431]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id B0BE52110BD4F for ; Fri, 31 Aug 2018 06:28:21 -0700 (PDT) Received: by mail-pf1-x431.google.com with SMTP id h79-v6so5532345pfk.8 for ; Fri, 31 Aug 2018 06:28:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=CTW0G7hVSSKun0yovuGlCHq9FLFxG7uixkLn6DdEDqo=; b=dtDm5WPcnmBR6KNO8j9YFlLCGIWWLvUoboIuSCu+ORcEomgsRKmB98QNkyw0OnZWL6 rdsSBiRC1wDwWd1Pcyesf5miWJ3U0Ng9lkhxT+seCxcYmyd0vLUjL/WBBOqVosyAO6vn mu1fQYS9pHDh6qW7hUsPv+uq93arvOBAeUIy4= 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=CTW0G7hVSSKun0yovuGlCHq9FLFxG7uixkLn6DdEDqo=; b=WVhrRMQ3eluhRZ6upnqTNoqzML+BV+88UGW8sXOtkY8tk2phiO6UDa/j2ZLF/B4ijp IbAOfIax1FhRDmIzjfh/hFZXScEJ5/bONDnmYTF71HXwN9QhAaG4Txc7mBR/l+wsDUg1 7vfB59JmvwcwkH0PevDToC2+FRHZduJw3Yw/4h1ldeIPQBCU4a0v8FFq9toLmnDOukqD Ztb82kb+QCJ5aS61Ttm/0iX9JP64nbCE7s7LwF0m4NNyCePCYePZ7RJm68l4keHMktU4 EdEVZhcpxaOulw3+0PlSCWZjMfgxmrqs+fhlYUYRhwWr4BGaT+5KrvyGn8nZd7+GA2TW 53qA== X-Gm-Message-State: APzg51BMBvJQYoao//KsL3WNWOlrmlkno6LrFJ6gNv+OLbk8sx4FT+UD gNl27JFWbvEguMMGZWBztfydIg== X-Received: by 2002:a62:5d89:: with SMTP id n9-v6mr16017761pfj.102.1535722101408; Fri, 31 Aug 2018 06:28:21 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.28.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:28:20 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:26:58 +0800 Message-Id: <20180831132710.23055-17-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 16/28] Platform/Hisilicon/D06: Enable ACPI PPTT X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" From: Heyi Guo Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang Reviewed-by: Leif Lindholm --- Platform/Hisilicon/D06/D06.dsc | 1 + Platform/Hisilicon/D06/D06.fdf | 2 ++ 2 files changed, 3 insertions(+) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index 80e620a190..2dd8267637 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -339,6 +339,7 @@ Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/AcpiTablesHi1620.inf Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf + Silicon/Hisilicon/Hi1620/Pptt/Pptt.inf # # Usb Support # diff --git a/Platform/Hisilicon/D06/D06.fdf b/Platform/Hisilicon/D06/D06.fdf index d9568bc6b1..ee9de22bcb 100644 --- a/Platform/Hisilicon/D06/D06.fdf +++ b/Platform/Hisilicon/D06/D06.fdf @@ -248,6 +248,8 @@ READ_LOCK_STATUS = TRUE INF RuleOverride=ACPITABLE Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/AcpiTablesHi1620.inf INF Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf + INF Silicon/Hisilicon/Hi1620/Pptt/Pptt.inf + # #Network # From patchwork Fri Aug 31 13:26:59 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145627 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp784410ljw; Fri, 31 Aug 2018 06:28:38 -0700 (PDT) X-Google-Smtp-Source: ANB0Vda9O3hh9R2BGq/RP8fI88d1+V46q8NeKRBaB/A8+FZP6T+0Swbrsn1Nhjjcd229TNjSl5SO X-Received: by 2002:aa7:824d:: with SMTP id e13-v6mr15934852pfn.97.1535722118453; Fri, 31 Aug 2018 06:28:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722118; cv=none; d=google.com; s=arc-20160816; b=y3FpdcvxpHlZYe6v/eTnEX3dOnSJOOOH902eY63uptDeaAa+yudbOYkCyikdYRV0+e dfTVAH72scYB35H80V4ANYyxSXolZ/J0nj+zLEij2KJvjamEY+5PZpOSd5F8jDy8O8xc w2PU8iH9Q1UwqcXrwyLNL3o895BpmrBqv427Apgou74zeCW7neiJh9Undi1UYf7vOAD+ fmY2Tg05tRso8LAEpa9bc8jkaI1yDqBg1gTBwZnNokQJZ7FZ1lasAXuPBki2WVjsR2Ti gtqv+Ghi6dzEtC9BlOVO+/cSGXoGDAFTeuBEfMfz1Le+WW0CpxGKQ7EByW8bJKhFo8uU 5U2A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=UQQxFB8uMNVqDeJI/y9FqzL5Taw6EvFWQDj8t2emN54=; b=jX8GDPdRc4dooYCWF0wK7mIbn4Jax/Ms5ozISRHGeT9LiUoG4qp0GHMTuY/9B+ouoM QQD5GhVu8JDyDAUYsH1EH8+a+jlSbuU2CMsVJhyQHTi/S3xRoTe2BR4l5pGSLZgyG7OV /Su5E4H5E4I6qnmOkqap6w/YdrHoMPudQd7rFrmsMT/rWdI//HHB85qj4G1OTNy+8xyg Rg5hC05hQBz+MS3VbwtGoJ4z+jh049Pd+2gVNYMtf/H71z7vKRfkYSJWIOpUetjWP/Y4 7aFhxi0ui5JySyCUnqwWEEhKdnNCbL1GV8Pxop9UBaneuhszwV1g3sq9Nd/1XPO4vkLT q3sA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=XVVJPcTu; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id n190-v6si9802209pfn.358.2018.08.31.06.28.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:28:38 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=XVVJPcTu; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 954572110BFB3; Fri, 31 Aug 2018 06:28:26 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::641; helo=mail-pl1-x641.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pl1-x641.google.com (mail-pl1-x641.google.com [IPv6:2607:f8b0:4864:20::641]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id A64CD2110BD62 for ; Fri, 31 Aug 2018 06:28:25 -0700 (PDT) Received: by mail-pl1-x641.google.com with SMTP id d12-v6so5491333pls.4 for ; Fri, 31 Aug 2018 06:28:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=CLjfCH5Ze26X1GTiqU1RxoTkv0Q8Mk7Cy7QG5CI6raw=; b=XVVJPcTu/uvdhtSfuiwk2HvUa9lbsZOhgLRGdTAVThYIG1IrIGoGb/vVBZ4OGzBQBl D1blleFsDCG9QwYnBVtd8peyhZZve1Vgip2/4aod6278SQayF07yGL2v4sMwXFt4u6TM VaVyigBo+74ZP6Gh6QR1RbF5W9ht4+UwzYhkQ= 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=CLjfCH5Ze26X1GTiqU1RxoTkv0Q8Mk7Cy7QG5CI6raw=; b=iKfuLprCGoF1TvsFxUOM09QL+MkB6M7Dmrn6fPADHffaf3z5ml6ZYiMTKq8hhUA8AU 3x9iuyI9/Ty+9SzPNll0DUP1fW91aMrPU8yj5U/PlBsNMqpwtJpeE4pJec2AW+WjUxTZ QJ87OR/pHiZamn3AF59k/ViodX/HdmuQ9r4E8Kr0dzHOgLiRmamFHbKaTrOM/hkcRSO5 vZThFNrZBOemrlov8iHuwuTRL8GrOHLBxayRwavc+b15bRmnHWb+ujN6dDsxOD61ZfkV p4q32jskhQvXjF9TNI9aPoFiSxgm3MCbwnUKUc8gRN4oIhHrlsoWa3z4J09vYrDmFE78 DorQ== X-Gm-Message-State: APzg51DoVbfV4onXVqqWi/qTILO4xV/qJnidN4/27XPLvmiqFVk7q3h/ Pa7IGsOpvp67TdnMOUl2HN8vCg== X-Received: by 2002:a17:902:850c:: with SMTP id bj12-v6mr15767950plb.330.1535722105008; Fri, 31 Aug 2018 06:28:25 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.28.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:28:24 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:26:59 +0800 Message-Id: <20180831132710.23055-18-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 17/28] Platform/Hisilicon/D06: Add OemNicLib X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" OemNicLib provide nic related api like GetMac,SetMac. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang Reviewed-by: Leif Lindholm --- Platform/Hisilicon/D06/D06.dsc | 1 + Platform/Hisilicon/D06/Library/OemNicLib/OemNicLib.inf | 35 ++ Platform/Hisilicon/D06/Library/OemNicLib/OemNicLib.c | 569 ++++++++++++++++++++ 3 files changed, 605 insertions(+) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index 2dd8267637..adf7fadcdc 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -90,6 +90,7 @@ LpcLib|Silicon/Hisilicon/Hi1620/Library/LpcLibHi1620/LpcLib.inf SerialPortLib|ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.inf + OemNicLib|Platform/Hisilicon/D06/Library/OemNicLib/OemNicLib.inf !if $(SECURE_BOOT_ENABLE) == TRUE FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf !endif diff --git a/Platform/Hisilicon/D06/Library/OemNicLib/OemNicLib.inf b/Platform/Hisilicon/D06/Library/OemNicLib/OemNicLib.inf new file mode 100644 index 0000000000..3b0bd2d60c --- /dev/null +++ b/Platform/Hisilicon/D06/Library/OemNicLib/OemNicLib.inf @@ -0,0 +1,35 @@ +#/** @file +# +# Copyright (c) 2018, Hisilicon Limited. All rights reserved. +# Copyright (c) 2017, Linaro Limited. All rights reserved. +# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +#**/ + +[Defines] + INF_VERSION = 0x0001001A + BASE_NAME = OemNicLib + FILE_GUID = 520F872C-FFCF-4EF3-AC01-85BDB0816DCE + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = OemNicLib + +[Sources.common] + OemNicLib.c + +[Packages] + ArmPkg/ArmPkg.dec + MdeModulePkg/MdeModulePkg.dec + MdePkg/MdePkg.dec + Silicon/Hisilicon/HisiPkg.dec + +[LibraryClasses] + CpldIoLib + I2CLib diff --git a/Platform/Hisilicon/D06/Library/OemNicLib/OemNicLib.c b/Platform/Hisilicon/D06/Library/OemNicLib/OemNicLib.c new file mode 100644 index 0000000000..aaf9902169 --- /dev/null +++ b/Platform/Hisilicon/D06/Library/OemNicLib/OemNicLib.c @@ -0,0 +1,569 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2017, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +#include +#include +#include +#include +#include +#include + +#define CPU2_SFP2_100G_CARD_OFFSET 0x25 +#define CPU1_SFP1_LOCATE_OFFSET 0x16 +#define CPU1_SFP0_LOCATE_OFFSET 0x12 +#define CPU2_SFP1_LOCATE_OFFSET 0x21 +#define CPU2_SFP0_LOCATE_OFFSET 0x19 +#define CPU2_SFP2_10G_GE_CARD_OFFSET 0x25 + +#define SFP_10G_SPEED 10 +#define SFP_25G_SPEED 25 +#define SFP_100G_SPEED 100 +#define SFP_GE_SPEED 1 + +#define SFP_GE_SPEED_VAL_VENDOR_FINISAR 0x0C +#define SFP_GE_SPEED_VAL 0x0D +#define SFP_10G_SPEED_VAL 0x67 +#define SFP_25G_SPEED_VAL 0xFF + +#define CARD_PRESENT_100G (BIT7) +#define CARD_PRESENT_10G (BIT0) +#define SELECT_SFP_BY_INDEX(index) (1 << (index - 1)) +#define SPF_SPEED_OFFSET 12 + +#define SFP_DEVICE_ADDRESS 0x50 +#define CPU1_9545_I2C_ADDR 0x70 +#define CPU2_9545_I2C_ADDR 0x71 + +#define FIBER_PRESENT 0 +#define CARD_PRESENT 1 +#define I2C_PORT_SFP 4 +#define CPU2_I2C_PORT_SFP 5 + +#define SOCKET_0 0 +#define SOCKET_1 1 +#define EEPROM_I2C_PORT 4 +#define EEPROM_PAGE_SIZE 0x40 +#define MAC_ADDR_LEN 6 +#define I2C_OFFSET_EEPROM_ETH0 (0xc00) +#define I2C_SLAVEADDR_EEPROM (0x52) + +#pragma pack(1) +typedef struct { + UINT16 Crc16; + UINT16 MacLen; + UINT8 Mac[MAC_ADDR_LEN]; +} NIC_MAC_ADDRESS; +#pragma pack() + +ETH_PRODUCT_DESC gEthPdtDesc[ETH_MAX_PORT] = +{ + {TRUE, ETH_SPEED_10KM, ETH_FULL_DUPLEX, ETH_INVALID, ETH_INVALID}, + {TRUE, ETH_SPEED_10KM, ETH_FULL_DUPLEX, ETH_INVALID, ETH_INVALID}, + {FALSE, ETH_INVALID, ETH_INVALID, ETH_INVALID, ETH_INVALID}, + {FALSE, ETH_INVALID, ETH_INVALID, ETH_INVALID, ETH_INVALID}, + {TRUE, ETH_SPEED_1000M, ETH_FULL_DUPLEX, ETH_PHY_MVL88E1512_ID, 0}, + {TRUE, ETH_SPEED_1000M, ETH_FULL_DUPLEX, ETH_PHY_MVL88E1512_ID, 1}, + {FALSE, ETH_INVALID, ETH_INVALID, ETH_INVALID, ETH_INVALID}, + {FALSE, ETH_INVALID, ETH_INVALID, ETH_INVALID, ETH_INVALID} +}; + +UINT16 CrcTable16[256] = { + 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7, + 0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF, + 0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6, + 0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE, + 0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485, + 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D, + 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4, + 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC, + 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823, + 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B, + 0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12, + 0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A, + 0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41, + 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49, + 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70, + 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78, + 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F, + 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067, + 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E, + 0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256, + 0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D, + 0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, + 0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C, + 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634, + 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB, + 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3, + 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A, + 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92, + 0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9, + 0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1, + 0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8, + 0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0, +}; + +EFI_STATUS +GetSfpSpeed ( + UINT16 Socket, + UINT16 SfpNum, + UINT8* FiberSpeed + ) +{ + EFI_STATUS Status; + I2C_DEVICE SpdDev; + UINT8 SfpSelect; + UINT8 SfpSpeed; + UINT32 RegAddr; + UINT16 I2cAddr; + UINT32 SfpPort; + + SfpSpeed = 0x0; + if (Socket == SOCKET_1) { + I2cAddr = CPU2_9545_I2C_ADDR; + SfpPort = CPU2_I2C_PORT_SFP; + } else { + I2cAddr = CPU1_9545_I2C_ADDR; + SfpPort = I2C_PORT_SFP; + } + + Status = I2CInit (Socket, SfpPort, Normal); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Socket%d Call I2CInit failed! p1=0x%x.\n", + __FUNCTION__, __LINE__, Socket, Status)); + return Status; + } + + SpdDev.Socket = Socket; + SpdDev.DeviceType = DEVICE_TYPE_SPD; + SpdDev.Port = SfpPort; + SpdDev.SlaveDeviceAddress = I2cAddr; + RegAddr = 0x0; + SfpSelect = SELECT_SFP_BY_INDEX (SfpNum); + + Status = I2CWrite (&SpdDev, RegAddr, 1, &SfpSelect); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "I2CWrite Error =%r.\n", Status)); + return Status; + } + + SpdDev.Socket = Socket; + SpdDev.DeviceType = DEVICE_TYPE_SPD; + SpdDev.Port = SfpPort; + SpdDev.SlaveDeviceAddress = SFP_DEVICE_ADDRESS; + + RegAddr = SPF_SPEED_OFFSET; + Status = I2CRead (&SpdDev, RegAddr, 1, &SfpSpeed); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "I2CRead Error =%r.\n", Status)); + return Status; + } + + DEBUG ((DEBUG_INFO, "BR, Nominal, Nominal signalling rate, SfpSpeed: 0x%x\n", + SfpSpeed)); + + if (SfpSpeed == SFP_10G_SPEED_VAL) { + *FiberSpeed = SFP_10G_SPEED; + } else if (SfpSpeed == SFP_25G_SPEED_VAL) { + *FiberSpeed = SFP_25G_SPEED; + } else if ((SfpSpeed == SFP_GE_SPEED_VAL) || + (SfpSpeed == SFP_GE_SPEED_VAL_VENDOR_FINISAR)) { + *FiberSpeed = SFP_GE_SPEED; + } + + return EFI_SUCCESS; +} + +//Fiber1Type/Fiber2Type/Fiber3Type return: SFP_10G_SPEED, SFP_100G_SPEED, SFP_GE_SPEED +UINT32 +GetCpu2FiberType ( + UINT8* Fiber1Type, + UINT8* Fiber2Type, + UINT8* Fiber100Ge + ) +{ + EFI_STATUS Status; + UINT16 SfpNum1; + UINT8 SfpSpeed1; + UINT16 SfpNum2; + UINT8 SfpSpeed2; + + SfpNum1 = 0x1; + SfpSpeed1 = SFP_10G_SPEED; + SfpNum2 = 0x2; + SfpSpeed2 = SFP_10G_SPEED; + *Fiber100Ge = 0x0; + *Fiber1Type = SFP_10G_SPEED; + *Fiber2Type = SFP_10G_SPEED; + + if ((ReadCpldReg (CPU2_SFP2_100G_CARD_OFFSET) & CARD_PRESENT_100G) != 0) { + // 100 Ge card + *Fiber1Type = SFP_10G_SPEED; + *Fiber2Type = SFP_10G_SPEED; + *Fiber100Ge = SFP_100G_SPEED; + DEBUG ((DEBUG_ERROR,"Detect Fiber SFP_100G is Present, Set 100Ge\n")); + } else if ((ReadCpldReg (CPU2_SFP2_10G_GE_CARD_OFFSET) & CARD_PRESENT_10G) != 0) { + *Fiber100Ge = 0x0; + *Fiber1Type = SFP_10G_SPEED; + *Fiber2Type = SFP_10G_SPEED; + if (ReadCpldReg (CPU2_SFP0_LOCATE_OFFSET) == FIBER_PRESENT) { + // Fiber detected in CPU2 slot0, read speed via i2c + Status = GetSfpSpeed (SOCKET_1, SfpNum1, &SfpSpeed1); + if (EFI_ERROR (Status)) { + DEBUG((DEBUG_ERROR, + "Get Socket1 Sfp%d Speed Error: %r.\n", + SfpNum1, + Status)); + return Status; + } + if (SfpSpeed1 == SFP_25G_SPEED) { + // P1 don't support 25G, so set speed to 10G + *Fiber1Type = SFP_10G_SPEED; + } else { + *Fiber1Type = SfpSpeed1; + } + } else { + // No fiber, set speed to 10G + *Fiber1Type = SFP_10G_SPEED; + } + + if (ReadCpldReg (CPU2_SFP1_LOCATE_OFFSET) == FIBER_PRESENT) { + // Fiber detected in CPU2 slot1, read speed via i2c + Status = GetSfpSpeed (SOCKET_1, SfpNum2, &SfpSpeed2); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "Get Sfp%d Speed Error: %r.\n", SfpNum2, Status)); + return Status; + } + if (SfpSpeed2 == SFP_25G_SPEED) { + *Fiber2Type = SFP_10G_SPEED; + } else { + *Fiber2Type = SfpSpeed2; + } + } else { + // No fiber, set speed to 10G + *Fiber2Type = SFP_10G_SPEED; + } + } else { + // 100Ge/10Ge/Ge Fiber is not found. + *Fiber1Type = SFP_10G_SPEED; + *Fiber2Type = SFP_10G_SPEED; + *Fiber100Ge = 0x0; + } + + return EFI_SUCCESS; +} + +//Fiber1Type/Fiber2Type return: SFP_10G_SPEED, SFP_25G_SPEED, SFP_GE_SPEED +UINT32 +GetCpu1FiberType ( + UINT8* Fiber1Type, + UINT8* Fiber2Type + ) +{ + EFI_STATUS Status; + UINT16 SfpNum1; + UINT8 SfpSpeed1; + UINT16 SfpNum2; + UINT8 SfpSpeed2; + + SfpNum1 = 0x1; + SfpSpeed1 = SFP_10G_SPEED; + SfpNum2 = 0x2; + SfpSpeed2 = SFP_10G_SPEED; + *Fiber1Type = SFP_10G_SPEED; + *Fiber2Type = SFP_10G_SPEED; + // Fiber detected in CPU1 slot0, read speed via i2c + if (ReadCpldReg (CPU1_SFP0_LOCATE_OFFSET) == FIBER_PRESENT) { + Status = GetSfpSpeed (SOCKET_0, SfpNum1, &SfpSpeed1); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "Get Socket0 Sfp%d Speed Error: %r.\n", + SfpNum1, Status)); + return Status; + } + *Fiber1Type = SfpSpeed1; + } else { + *Fiber1Type = SFP_10G_SPEED; + } + + // Fiber detected in CPU1 slot1, read speed via i2c + if (ReadCpldReg (CPU1_SFP1_LOCATE_OFFSET) == FIBER_PRESENT) { + Status = GetSfpSpeed (SOCKET_0, SfpNum2, &SfpSpeed2); + if (EFI_ERROR (Status)) { + *Fiber2Type = SFP_10G_SPEED; + DEBUG ((DEBUG_ERROR, "Get Sfp%d Speed Error: %r.\n", SfpNum2, Status)); + return Status; + } + *Fiber2Type = SfpSpeed2; + } else { + *Fiber2Type = SFP_10G_SPEED; + } + + return EFI_SUCCESS; +} + +UINT16 MakeCrcCheckSum ( + UINT8 *Buffer, + UINT32 Length + ) +{ + UINT16 StartCRC = 0; + + if (Length > SIZE_512KB) { + return 0; + } + + if (Buffer == NULL) { + return 0; + } + + while (Length) { + StartCRC = CrcTable16 [((UINT8) ((StartCRC >> 8) & 0xff)) ^ *(Buffer++)] ^ + ((UINT16) (StartCRC << 8)); + Length--; + } + + return StartCRC; +} + + +EFI_STATUS +OemGetMacE2prom( + IN UINT32 Port, + OUT UINT8 *Addr + ) +{ + I2C_DEVICE I2cDev = {0}; + EFI_STATUS Status; + UINT16 I2cOffset; + UINT16 Crc16; + NIC_MAC_ADDRESS MacDesc = {0}; + UINT16 RemainderMacOffset; + UINT16 LessSizeOfPage; + UINT32 I = 0; + + Status = I2CInit (0, EEPROM_I2C_PORT, Normal); + if (EFI_ERROR (Status)) + { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Call I2CInit failed! p1=0x%x.\n", + __FUNCTION__, __LINE__, Status)); + return Status; + } + + I2cOffset = I2C_OFFSET_EEPROM_ETH0 + (Port * sizeof (NIC_MAC_ADDRESS)); + + I2cDev.DeviceType = DEVICE_TYPE_E2PROM; + I2cDev.Port = EEPROM_I2C_PORT; + I2cDev.SlaveDeviceAddress = I2C_SLAVEADDR_EEPROM; + I2cDev.Socket = 0; + RemainderMacOffset = I2cOffset % EEPROM_PAGE_SIZE; + LessSizeOfPage = EEPROM_PAGE_SIZE - RemainderMacOffset; + //The length of NIC_MAC_ADDRESS is 10 bytes long, + //It surly less than EEPROM page size, so we could + //code as below, check the address whether across the page boundary, + //and split the data when across page boundary. + if (sizeof (NIC_MAC_ADDRESS) <= LessSizeOfPage) { + Status = I2CRead (&I2cDev, I2cOffset, sizeof (NIC_MAC_ADDRESS), (UINT8 *) &MacDesc); + } else { + Status = I2CRead (&I2cDev, I2cOffset, LessSizeOfPage, (UINT8 *) &MacDesc); + if (!EFI_ERROR (Status)) { + Status |= I2CRead ( + &I2cDev, + I2cOffset + LessSizeOfPage, + sizeof (NIC_MAC_ADDRESS) - LessSizeOfPage, + (UINT8 *) &MacDesc + LessSizeOfPage + ); + } + } + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Call I2cRead failed! p1=0x%x.\n", + __FUNCTION__, __LINE__, Status)); + return Status; + } + + Crc16 = MakeCrcCheckSum ( + (UINT8 *)&(MacDesc.MacLen), + sizeof (MacDesc.MacLen) + sizeof (MacDesc.Mac) + ); + if ((Crc16 != MacDesc.Crc16) || (Crc16 == 0)) { + return EFI_NOT_FOUND; + } + + for (I = 0; I < MAC_ADDR_LEN; I++) { + Addr[I] = MacDesc.Mac[I]; + } + + return EFI_SUCCESS; +} + + +EFI_STATUS +OemSetMacE2prom ( + IN UINT32 Port, + IN UINT8 *Addr + ) +{ + I2C_DEVICE I2cDev = {0}; + EFI_STATUS Status; + UINT16 I2cOffset; + NIC_MAC_ADDRESS MacDesc = {0}; + UINT32 I; + UINT16 RemainderMacOffset; + UINT16 LessSizeOfPage; + + I = 0; + MacDesc.MacLen = MAC_ADDR_LEN; + + for (I = 0; I < MAC_ADDR_LEN; I++) { + MacDesc.Mac[I] = Addr[I]; + } + + MacDesc.Crc16 = MakeCrcCheckSum ( + (UINT8 *)&(MacDesc.MacLen), + sizeof (MacDesc.MacLen) + MAC_ADDR_LEN + ); + + Status = I2CInit (0, EEPROM_I2C_PORT, Normal); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Call I2CInit failed! p1=0x%x.\n", + __FUNCTION__, __LINE__, Status)); + return Status; + } + + I2cOffset = I2C_OFFSET_EEPROM_ETH0 + (Port * sizeof (NIC_MAC_ADDRESS)); + + I2cDev.DeviceType = DEVICE_TYPE_E2PROM; + I2cDev.Port = EEPROM_I2C_PORT; + I2cDev.SlaveDeviceAddress = I2C_SLAVEADDR_EEPROM; + I2cDev.Socket = 0; + RemainderMacOffset = I2cOffset % EEPROM_PAGE_SIZE; + LessSizeOfPage = EEPROM_PAGE_SIZE - RemainderMacOffset; + //The length of NIC_MAC_ADDRESS is 10 bytes long, + //It surly less than EEPROM page size, so we could + //code as below, check the address whether across the page boundary, + //and split the data when across page boundary. + if (sizeof (NIC_MAC_ADDRESS) <= LessSizeOfPage) { + Status = I2CWrite ( + &I2cDev, + I2cOffset, + sizeof (NIC_MAC_ADDRESS), + (UINT8 *) &MacDesc + ); + } else { + Status = I2CWrite (&I2cDev, I2cOffset, LessSizeOfPage, (UINT8 *) &MacDesc); + if (!EFI_ERROR (Status)) { + Status |= I2CWrite ( + &I2cDev, + I2cOffset + LessSizeOfPage, + sizeof (NIC_MAC_ADDRESS) - LessSizeOfPage, + (UINT8 *) &MacDesc + LessSizeOfPage + ); + } + } + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Call I2cWrite failed! p1=0x%x.\n", + __FUNCTION__, __LINE__, Status)); + return Status; + } + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +OemGetMac ( + IN OUT EFI_MAC_ADDRESS *Mac, + IN UINTN Port + ) +{ + EFI_STATUS Status; + + if (Mac == NULL) { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Mac buffer is null!\n", + __FUNCTION__, __LINE__)); + return EFI_INVALID_PARAMETER; + } + + Status = OemGetMacE2prom (Port, Mac->Addr); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, + "[%a]:[%dL] Cannot get MAC from EEPROM, Status: %r; using default MAC.\n", + __FUNCTION__, __LINE__, Status)); + + Mac->Addr[0] = 0xFF; + Mac->Addr[1] = 0xFF; + Mac->Addr[2] = 0xFF; + Mac->Addr[3] = 0xFF; + Mac->Addr[4] = 0xFF; + Mac->Addr[5] = 0xFF; + return EFI_SUCCESS; + } + + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +OemSetMac ( + IN EFI_MAC_ADDRESS *Mac, + IN UINTN Port + ) +{ + EFI_STATUS Status; + + if (Mac == NULL) { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Mac buffer is null!\n", + __FUNCTION__, __LINE__)); + return EFI_INVALID_PARAMETER; + } + + Status = OemSetMacE2prom (Port, Mac->Addr); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Set mac failed!\n", __FUNCTION__, __LINE__)); + return Status; + } + + return EFI_SUCCESS; +} + +UINT32 +OemEthFindFirstSP ( + VOID + ) +{ + UINT32 I; + + for (I = 0; I < ETH_MAX_PORT; I++) { + if (gEthPdtDesc[I].Valid == TRUE) { + return I; + } + } + + return ETH_INVALID; +} + +ETH_PRODUCT_DESC * +OemEthInit ( + UINT32 port + ) +{ + return (ETH_PRODUCT_DESC *)(&(gEthPdtDesc[port])); +} + + +BOOLEAN +OemIsInitEth ( + UINT32 Port + ) +{ + return TRUE; +} From patchwork Fri Aug 31 13:27:00 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145628 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp784471ljw; Fri, 31 Aug 2018 06:28:42 -0700 (PDT) X-Google-Smtp-Source: ANB0VdYafRAP5oP6RQOS4PGSzRrytFqMlLzLTmsefrk6wnCqutimYs3MpNto/9C6YAVv/risQYhw X-Received: by 2002:a17:902:6b47:: with SMTP id g7-v6mr15701127plt.128.1535722122303; Fri, 31 Aug 2018 06:28:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722122; cv=none; d=google.com; s=arc-20160816; b=MqllDRfreIIqCXboLkHTrm4NEsmItNMm1ph4HFUtUIedXBRjrtvreE38E2pDQEefNb m0qekNzyM1+8PMRfo0IvQUnPL16v2anUiybrwn/XjoFz6nl1CQJkCcPi1S8Yeyacp4cL nT37ccXBco5QVQ26pXYbRa0ywXl2/fu2L30NccjtUOY0vf9ON9qtDJRyP9I4JuuAE2t0 sSnjh5cWr6vh1ujBkT6MaNNF/KI18kROrCIwy6F532l0dzMkXqwUaxBwWljcrM9L8cqV JbjXeyorj71gxacq+1oa7CfF389kxI2RV5DUJsRz5WzmIWaeon3L2M6iUZjp44R1lAGv 4kFQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=+qN3SqSaubD6y6FItNmHjSwc2MOBM/Pv8JCJK1MvFks=; b=hSGV2NR0E53612DST0XEle2OBAftChvICBxgLxF7T1n8I2uVUuryVwvEJarD/8nlsn M7/p7Mo57U5zjAYb6hPVJ9I4k2FrSq09/zyKzUjkS5p//2oIhROAkyvp1wT/FVMzYGha lrnwObsOFie1jfsTrIgBYzyQPGTTH5WnnFiqHg1GIEtAgFR9rX05LC+3gQqvmJg+NMiV YbkC87Q8szWtiZu9FDz89xh/JZ5024wwPLDGFMUDN0SkIb+FkRiOjGoFtKUqNQRWrYWj w+EXYrvf4tKSHH9zB67+m2czSKGvtMyL/nE0BaHQmfJ1HWm3l07fCZDNThvka79RqKAJ E1Ww== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=gaPQ1QxH; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id 13-v6si9772887pgs.579.2018.08.31.06.28.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:28:42 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=gaPQ1QxH; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id C7BB02110BFB7; Fri, 31 Aug 2018 06:28:29 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::444; helo=mail-pf1-x444.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pf1-x444.google.com (mail-pf1-x444.google.com [IPv6:2607:f8b0:4864:20::444]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id E5E642110BD58 for ; Fri, 31 Aug 2018 06:28:28 -0700 (PDT) Received: by mail-pf1-x444.google.com with SMTP id d4-v6so5552117pfn.0 for ; Fri, 31 Aug 2018 06:28:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=TwKLs3uS7sruGcQ+A7I6tleuJm5iEFxyuj+GXhgmK/M=; b=gaPQ1QxHgzcTjqu/GJ2AAvFfbVL9Ilzpzw5QfqIrg97zc05+ISbkwLui24mqjf0Iqg HO6W9K2VeEqLGX7IXo5W2P8mTBCSATBUfvlyeT2b9t83JtExunWHnInzFbsVCpGs5oju cuqvryuPbML1s3FXJuQyDT6H69ARycdBd6iFQ= 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=TwKLs3uS7sruGcQ+A7I6tleuJm5iEFxyuj+GXhgmK/M=; b=L4wKX7lXkIcU6IuPkhpdWwGIOvTUA11iUD2gR3tYqO3YSW9icVFQtVLrzAGxlpezTU s3J6c6FfVJh4fI1Z2njCt9SwmaFdBawvhZcw/LdZLuKpTrEbid7i4MsJcxlhdqbpkhjB 3eyj4UvC8Zheoyn3Gs5b4XqOCl6jl4N/sc9OsrmrnLKpfZDVWuWNyBBS75XhdsVWcTbz 91W1/ubos/x24QRwIdCpMeASw2pqmJhC1HAMUZHiYcIyk2IxMvACBiuXquQHJFcitdJ6 WlHsV3yTWTR9msYHyJi0/99jdNGqtUjWIRSmuIdHY3TzBcBkqspWqtspMJzcLga4YAKz 7NMg== X-Gm-Message-State: APzg51AfBHj5eKh+XlgAB6+EgcZVeeOOeBjngRNWHt0vrIDVfAMR5bcm S+o13ZdPyCeB3XWlAt2sTX1bbw== X-Received: by 2002:a63:9a19:: with SMTP id o25-v6mr14767374pge.39.1535722108541; Fri, 31 Aug 2018 06:28:28 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.28.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:28:27 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:27:00 +0800 Message-Id: <20180831132710.23055-19-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 18/28] Platform/Hisilicon/D06: Add OemNicConfig2P Driver X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" This Driver provide Get/Set Mac function. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang Reviewed-by: Leif Lindholm --- Platform/Hisilicon/D06/D06.dsc | 2 +- Platform/Hisilicon/D06/D06.fdf | 2 +- Platform/Hisilicon/D06/Drivers/OemNicConfig2PHi1620/OemNicConfig2P.inf | 43 ++++++++++++ Platform/Hisilicon/D06/Drivers/OemNicConfig2PHi1620/OemNicConfig.h | 25 +++++++ Platform/Hisilicon/D06/Drivers/OemNicConfig2PHi1620/OemNicConfig2P.c | 71 ++++++++++++++++++++ 5 files changed, 141 insertions(+), 2 deletions(-) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index adf7fadcdc..d91464941e 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -286,7 +286,7 @@ # ArmPkg/Drivers/CpuDxe/CpuDxe.inf MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf - + Platform/Hisilicon/D06/Drivers/OemNicConfig2PHi1620/OemNicConfig2P.inf !if $(SECURE_BOOT_ENABLE) == TRUE MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf { diff --git a/Platform/Hisilicon/D06/D06.fdf b/Platform/Hisilicon/D06/D06.fdf index ee9de22bcb..445fe4db82 100644 --- a/Platform/Hisilicon/D06/D06.fdf +++ b/Platform/Hisilicon/D06/D06.fdf @@ -174,7 +174,7 @@ READ_LOCK_STATUS = TRUE INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf INF Platform/Hisilicon/D06/Drivers/SFC/SfcDxeDriver.inf - + INF Platform/Hisilicon/D06/Drivers/OemNicConfig2PHi1620/OemNicConfig2P.inf INF Silicon/Hisilicon/Drivers/FlashFvbDxe/FlashFvbDxe.inf INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf diff --git a/Platform/Hisilicon/D06/Drivers/OemNicConfig2PHi1620/OemNicConfig2P.inf b/Platform/Hisilicon/D06/Drivers/OemNicConfig2PHi1620/OemNicConfig2P.inf new file mode 100644 index 0000000000..a91f2b6005 --- /dev/null +++ b/Platform/Hisilicon/D06/Drivers/OemNicConfig2PHi1620/OemNicConfig2P.inf @@ -0,0 +1,43 @@ +#/** @file +# +# Copyright (c) 2016-2018, Hisilicon Limited. All rights reserved. +# Copyright (c) 2016-2018, Linaro Limited. All rights reserved. +# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +#**/ + +[Defines] + INF_VERSION = 0x0001001A + BASE_NAME = OemNicConfigPangea + FILE_GUID = edc95319-ebe9-4c38-96af-1d203fb85231 + MODULE_TYPE = DXE_DRIVER + VERSION_STRING = 1.0 + ENTRY_POINT = OemNicConfigEntry + +[Sources.common] + OemNicConfig2P.c + +[Packages] + MdeModulePkg/MdeModulePkg.dec + MdePkg/MdePkg.dec + Silicon/Hisilicon/HisiPkg.dec + +[Protocols] + gHisiBoardNicProtocolGuid ##Produce + +[LibraryClasses] + DebugLib + IoLib + OemNicLib + UefiBootServicesTableLib + UefiDriverEntryPoint + +[Depex] + TRUE diff --git a/Platform/Hisilicon/D06/Drivers/OemNicConfig2PHi1620/OemNicConfig.h b/Platform/Hisilicon/D06/Drivers/OemNicConfig2PHi1620/OemNicConfig.h new file mode 100644 index 0000000000..35228fdf1d --- /dev/null +++ b/Platform/Hisilicon/D06/Drivers/OemNicConfig2PHi1620/OemNicConfig.h @@ -0,0 +1,25 @@ +/** @file +* +* Copyright (c) 2016-2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2016-2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +#ifndef __OEM_NIC_CONFIG_H__ +#define __OEM_NIC_CONFIG_H__ + +#include +#include +#include +#include +#include +#include +#endif diff --git a/Platform/Hisilicon/D06/Drivers/OemNicConfig2PHi1620/OemNicConfig2P.c b/Platform/Hisilicon/D06/Drivers/OemNicConfig2PHi1620/OemNicConfig2P.c new file mode 100644 index 0000000000..c01c49150a --- /dev/null +++ b/Platform/Hisilicon/D06/Drivers/OemNicConfig2PHi1620/OemNicConfig2P.c @@ -0,0 +1,71 @@ +/** @file +* +* Copyright (c) 2016-2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2016-2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +#include + + +EFI_STATUS +EFIAPI OemGetMac2P ( + IN OUT EFI_MAC_ADDRESS *Mac, + IN UINTN Port + ) +{ + OemGetMac (Mac, Port); + + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI OemSetMac2P ( + IN EFI_MAC_ADDRESS *Mac, + IN UINTN Port + ) +{ + OemSetMac (Mac, Port); + + return EFI_SUCCESS; +} + +HISI_BOARD_NIC_PROTOCOL mHisiBoardNicProtocol2P = { + .GetMac = OemGetMac2P, + .SetMac = OemSetMac2P, +}; + + +EFI_STATUS +EFIAPI +OemNicConfigEntry ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + + Status = gBS->InstallProtocolInterface ( + &ImageHandle, + &gHisiBoardNicProtocolGuid, + EFI_NATIVE_INTERFACE, + &mHisiBoardNicProtocol2P + ); + + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Install Protocol failed %r\n", + __FUNCTION__, __LINE__, Status)); + return Status; + } + + return EFI_SUCCESS; +} + From patchwork Fri Aug 31 13:27:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145629 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp784545ljw; Fri, 31 Aug 2018 06:28:46 -0700 (PDT) X-Google-Smtp-Source: ANB0VdYQlecdTvTVkQ2YUwnCR5b+5Tq0dOk7jmGZwpUnf4kIrZlFDE+7apq5Xy84Pts/X1fLhSm+ X-Received: by 2002:a17:902:9a47:: with SMTP id x7-v6mr15498499plv.37.1535722126494; Fri, 31 Aug 2018 06:28:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722126; cv=none; d=google.com; s=arc-20160816; b=QXvA80mxLCvdoZ5GGYpMxf1ohyWhCRJmg3zDR9LnmcKDL+rhnhftpmmRBaX138UeNl N4gUz8hLrvul7Em2IMXLMwe4JkLXuktHuG8GJXSBQp3x1NdZ6RYaMgrj0diU+v9ldJ7f fLXyaD27j2ZeDkJ4BDejt8rRBk0jOe8xUvdri9A1eO02pQlh7M0UX3F8Sm/npRg01yO2 h4mtCWEUwHcIQCF9f+c9znvGMKvLI1CqUg6OPn2buZyWr86g8JxL10T2nRpD2XDdbpb2 8Ut7SUv8TMgWRZ3kWECdpQLwSwr0gaFHznyzLv7N/MhufyuiMBbk4DoXKP/+U0hi62MP VUlQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=JjQkhyykclydIKEE++Z680/y4y6pyVsIxKvO1bX5EbI=; b=zYS9FrpbGdoR/6cTwp06+8c9wV4aEEeQj2XxrRWrz8xLA9O7tTlcyekMXaQBbLZvTv Y8HpVW5Hm/8SYCk6Ln72ATDESmEL6Y18fDPIxd7c7iJj2p3J4uwCMfnLUP4fR+rNWZYi rQW67+SMHHFzqvznafyEhVEcBNRR7guiiTDeCTERazS1BEWx9umqBCE+z4UY2t49aT9Q hENzBlOZgJ/SO3E1qgamWjR5bLsnEuez6Gyh4op+C9e6iic6xU87jizCX/XjQfElOQ7g dt1KGATw2e+Z4U7bS7zWPQuV/UCyPuCHqAjpyUYXbAT0HD6L3Eb9WfJEkhK8mapD7j8/ oISQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=LjPwlLmz; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id 1-v6si6760769pln.415.2018.08.31.06.28.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:28:46 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=LjPwlLmz; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 02FD12110BFBC; Fri, 31 Aug 2018 06:28:34 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::644; helo=mail-pl1-x644.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pl1-x644.google.com (mail-pl1-x644.google.com [IPv6:2607:f8b0:4864:20::644]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 96CBD2110BD62 for ; Fri, 31 Aug 2018 06:28:32 -0700 (PDT) Received: by mail-pl1-x644.google.com with SMTP id g23-v6so5479983plq.9 for ; Fri, 31 Aug 2018 06:28:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=GSckMVZa41t/NHYSyG7DEkK6KAQ9qDIcvdIn17k8e10=; b=LjPwlLmzqvKxcZSyWS+pPWFixpJVQGZxF1uwnMxzd4TotbTwc8SY25ySLv8+yvBzkc g2u1of9xO+HTaMKh4EE+/TuD65Xy2dEvtamJ3NJh0yQbGQiPEYNZUQW1Y3azZ4gV8zbx ygpw1x+ReqAwJyEe6wW9IcQPZUz7CQcvkZR5U= 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=GSckMVZa41t/NHYSyG7DEkK6KAQ9qDIcvdIn17k8e10=; b=Pf4LW7B8mjEbJAfLXM+0hwcKIM7547fCQo79+q73PFEKz2r+1Ef/3KeZxh9vPVodfU Bh5/ofMeQ8gjc2y8gEM+BYFJ4oNxlNK7Uf5VMM6FHIW9tGEoXWK08iXpzBtmr+0x51MP AdLBh7yEyi906UNpVI03VJ0B0bPNmybi3se0EFnmR2vYGa6ECTVo+yd5KfGLk32Zs5Kh tqxiyfqNXwso/+ahfnz29Dv6UXtVS3dFwhr0CDf7BKzQTXVEWHAg3iW3z9kpvLq4YZHn yw/AU1Hqgr6TRqyzSbn6b2iw687xwC9zsVDopXwv/UBnU6j/DHjZm13lNAL94LzFPqne /t8g== X-Gm-Message-State: APzg51Dw8Zabu71gXiI0PgxC16pAGJYeQJwEU+m7iBUtDNhXZQuD+eOD IY9WqUWGH/Rso31jRe2elDcrgA== X-Received: by 2002:a17:902:b608:: with SMTP id b8-v6mr15445107pls.312.1535722112209; Fri, 31 Aug 2018 06:28:32 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.28.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:28:31 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:27:01 +0800 Message-Id: <20180831132710.23055-20-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 19/28] Hisilicon/D0x: Update SMBIOS type9 info X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, Sun Yuanchen , guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" From: Sun Yuanchen Move board level code to OemMiscLibD0x for unifying D0x. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang Reviewed-by: Leif Lindholm --- Platform/Hisilicon/D03/Library/OemMiscLib2P/OemMiscLib2PHi1610.inf | 1 + Platform/Hisilicon/D05/Library/OemMiscLibD05/OemMiscLibD05.inf | 1 + Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.inf | 4 + Platform/Hisilicon/D06/Include/Library/CpldD06.h | 2 + Silicon/Hisilicon/Include/Library/OemMiscLib.h | 1 + Platform/Hisilicon/D03/Library/OemMiscLib2P/OemMiscLib2PHi1610.c | 32 +++++++ Platform/Hisilicon/D05/Library/OemMiscLibD05/OemMiscLibD05.c | 27 +++++- Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.c | 90 ++++++++++++++++++++ Silicon/Hisilicon/Drivers/Smbios/AddSmbiosType9/AddSmbiosType9.c | 14 +-- 9 files changed, 159 insertions(+), 13 deletions(-) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Platform/Hisilicon/D03/Library/OemMiscLib2P/OemMiscLib2PHi1610.inf b/Platform/Hisilicon/D03/Library/OemMiscLib2P/OemMiscLib2PHi1610.inf index 310bbaea84..0fa7fdf80f 100644 --- a/Platform/Hisilicon/D03/Library/OemMiscLib2P/OemMiscLib2PHi1610.inf +++ b/Platform/Hisilicon/D03/Library/OemMiscLib2P/OemMiscLib2PHi1610.inf @@ -34,6 +34,7 @@ Silicon/Hisilicon/HisiPkg.dec [LibraryClasses] + BaseMemoryLib PcdLib TimerLib diff --git a/Platform/Hisilicon/D05/Library/OemMiscLibD05/OemMiscLibD05.inf b/Platform/Hisilicon/D05/Library/OemMiscLibD05/OemMiscLibD05.inf index bf44ff7440..022c3e940a 100644 --- a/Platform/Hisilicon/D05/Library/OemMiscLibD05/OemMiscLibD05.inf +++ b/Platform/Hisilicon/D05/Library/OemMiscLibD05/OemMiscLibD05.inf @@ -33,6 +33,7 @@ Silicon/Hisilicon/HisiPkg.dec [LibraryClasses] + BaseMemoryLib PcdLib TimerLib diff --git a/Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.inf b/Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.inf index 78703663b8..75c5054bbf 100644 --- a/Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.inf +++ b/Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.inf @@ -30,9 +30,13 @@ ArmPkg/ArmPkg.dec MdeModulePkg/MdeModulePkg.dec MdePkg/MdePkg.dec + Platform/Hisilicon/D06/D06.dec Silicon/Hisilicon/HisiPkg.dec [LibraryClasses] + BaseMemoryLib + CpldIoLib + IoLib PcdLib TimerLib diff --git a/Platform/Hisilicon/D06/Include/Library/CpldD06.h b/Platform/Hisilicon/D06/Include/Library/CpldD06.h index be3548c8d1..ec9b49f4e7 100644 --- a/Platform/Hisilicon/D06/Include/Library/CpldD06.h +++ b/Platform/Hisilicon/D06/Include/Library/CpldD06.h @@ -29,6 +29,8 @@ #define CPLD_LOGIC_COMPILE_DAY (0x3) #define CPLD_RISER_PRSNT_FLAG 0x40 +#define CPU1_RISER_PRESENT BIT6 +#define CPU0_RISER_PRESENT BIT7 #define CPLD_RISER2_BOARD_ID 0x44 #define CPLD_X8_X8_X8_BOARD_ID 0x92 diff --git a/Silicon/Hisilicon/Include/Library/OemMiscLib.h b/Silicon/Hisilicon/Include/Library/OemMiscLib.h index efecb9aa77..86ea6a1b3d 100644 --- a/Silicon/Hisilicon/Include/Library/OemMiscLib.h +++ b/Silicon/Hisilicon/Include/Library/OemMiscLib.h @@ -34,6 +34,7 @@ typedef struct _REPORT_PCIEDIDVID2BMC{ UINTN Slot; }REPORT_PCIEDIDVID2BMC; extern REPORT_PCIEDIDVID2BMC PcieDeviceToReport[PCIEDEVICE_REPORT_MAX]; +extern VOID GetPciDidVid (REPORT_PCIEDIDVID2BMC *Report); BOOLEAN OemIsSocketPresent (UINTN Socket); VOID CoreSelectBoot(VOID); diff --git a/Platform/Hisilicon/D03/Library/OemMiscLib2P/OemMiscLib2PHi1610.c b/Platform/Hisilicon/D03/Library/OemMiscLib2P/OemMiscLib2PHi1610.c index fa1039bda1..b57fdfa68e 100644 --- a/Platform/Hisilicon/D03/Library/OemMiscLib2P/OemMiscLib2PHi1610.c +++ b/Platform/Hisilicon/D03/Library/OemMiscLib2P/OemMiscLib2PHi1610.c @@ -15,6 +15,7 @@ #include +#include #include #include #include @@ -31,6 +32,37 @@ REPORT_PCIEDIDVID2BMC PcieDeviceToReport[PCIEDEVICE_REPORT_MAX] = { {0xFFFF,0xFFFF,0xFFFF,0xFFFF} }; +REPORT_PCIEDIDVID2BMC PcieDeviceToReport2P[PCIEDEVICE_REPORT_MAX] = { + {0x79,0,0,0}, + {0xFF,0xFF,0xFF,1}, + {0xC1,0,0,2}, + {0xF9,0,0,3}, + {0xFF,0xFF,0xFF,4}, + {0x11,0,0,5}, + {0x31,0,0,6}, + {0x21,0,0,7} +}; + +VOID +GetPciDidVid ( + REPORT_PCIEDIDVID2BMC *Report + ) +{ + if (OemIsMpBoot ()) { + (VOID)CopyMem ( + (VOID *)Report, + (VOID *)PcieDeviceToReport2P, + sizeof (PcieDeviceToReport2P) + ); + } else { + (VOID)CopyMem ( + (VOID *)Report, + (VOID *)PcieDeviceToReport, + sizeof (PcieDeviceToReport) + ); + } +} + // Right now we only support 1P BOOLEAN OemIsSocketPresent (UINTN Socket) { diff --git a/Platform/Hisilicon/D05/Library/OemMiscLibD05/OemMiscLibD05.c b/Platform/Hisilicon/D05/Library/OemMiscLibD05/OemMiscLibD05.c index b17eeada16..4c4c944dbe 100644 --- a/Platform/Hisilicon/D05/Library/OemMiscLibD05/OemMiscLibD05.c +++ b/Platform/Hisilicon/D05/Library/OemMiscLibD05/OemMiscLibD05.c @@ -1,7 +1,7 @@ /** @file * -* Copyright (c) 2016, Hisilicon Limited. All rights reserved. -* Copyright (c) 2016, Linaro Limited. All rights reserved. +* Copyright (c) 2016 - 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2016 - 2018, Linaro Limited. All rights reserved. * * This program and the accompanying materials * are licensed and made available under the terms and conditions of the BSD License @@ -16,6 +16,7 @@ #include #include +#include #include #include #include @@ -37,6 +38,28 @@ REPORT_PCIEDIDVID2BMC PcieDeviceToReport[PCIEDEVICE_REPORT_MAX] = { {0xFFFF,0xFFFF,0xFFFF,0xFFFF} }; +REPORT_PCIEDIDVID2BMC PcieDeviceToReport_2P[PCIEDEVICE_REPORT_MAX] = { + {0x79,0,0,0}, + {0xFF,0xFF,0xFF,1}, + {0xC1,0,0,2}, + {0xF9,0,0,3}, + {0xFF,0xFF,0xFF,4}, + {0x11,0,0,5}, + {0x31,0,0,6}, + {0x21,0,0,7} +}; + +VOID +GetPciDidVid ( + REPORT_PCIEDIDVID2BMC *Report + ) +{ + if (OemIsMpBoot ()) { + (VOID)CopyMem ((VOID *)Report, (VOID *)PcieDeviceToReport_2P, sizeof (PcieDeviceToReport_2P)); + } else { + (VOID)CopyMem ((VOID *)Report, (VOID *)PcieDeviceToReport, sizeof (PcieDeviceToReport)); + } +} BOOLEAN OemIsSocketPresent (UINTN Socket) { diff --git a/Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.c b/Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.c index 95521752ff..2a9db46d1f 100644 --- a/Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.c +++ b/Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.c @@ -15,6 +15,8 @@ #include #include +#include +#include #include #include #include @@ -33,6 +35,94 @@ REPORT_PCIEDIDVID2BMC PcieDeviceToReport[PCIEDEVICE_REPORT_MAX] = { {0xFFFF,0xFFFF,0xFFFF,0xFFFF} }; +//Cpu0 Riser type is (X16 + X8) & Cpu1 Riser type is (X16 + X8) +REPORT_PCIEDIDVID2BMC PcieDeviceToReport_2P_Type1 [PCIEDEVICE_REPORT_MAX] = { + {0x01,0,0,0}, + {0x03,0,0,1}, + {0xFF,0xFF,0xFF,2}, + {0x81,0,0,3}, + {0x84,0,0,4}, + {0xFF,0xFF,0xFF,5} +}; + +//Cpu0 Riser type is (X16 + X8) & Cpu1 Riser type is (3 * X8) +REPORT_PCIEDIDVID2BMC PcieDeviceToReport_2P_Type2 [PCIEDEVICE_REPORT_MAX] = { + {0x01,0,0,0}, + {0x03,0,0,1}, + {0xFF,0xFF,0xFF,2}, + {0xFF,0xFF,0xFF,3}, + {0x81,0,0,4}, + {0x85,0,0,5} +}; + +//Cpu0 Riser type is (3 * X8) & Cpu1 Riser type is (X16 + X8) +REPORT_PCIEDIDVID2BMC PcieDeviceToReport_2P_Type3 [PCIEDEVICE_REPORT_MAX] = { + {0xFF,0xFF,0xFF,0}, + {0x01,0,0,1}, + {0x04,0,0,2}, + {0x81,0,0,3}, + {0x84,0,0,4}, + {0xFF,0xFF,0xFF,5} +}; + +//Cpu0 Riser type is (3 * X8) & Cpu1 Riser type is (3 * X8) +REPORT_PCIEDIDVID2BMC PcieDeviceToReport_2P_Type4 [PCIEDEVICE_REPORT_MAX] = { + {0xFF,0xFF,0xFF,0}, + {0x01,0,0,1}, + {0x04,0,0,2}, + {0xFF,0xFF,0xFF,3}, + {0x81,0,0,4}, + {0x85,0,0,5} +}; + +VOID +GetPciDidVid ( + REPORT_PCIEDIDVID2BMC *Report + ) +{ + UINT32 PresentStatus; + UINT32 CardType; + UINT8 Cpu0CardType = 0; + UINT8 Cpu1CardType = 0; + + PresentStatus = MmioRead32 (CPLD_BASE_ADDRESS + CPLD_RISER_PRSNT_FLAG); + CardType = MmioRead32 (CPLD_BASE_ADDRESS + CPLD_RISER2_BOARD_ID); + + // Offset 0x40: Bit7 = 1 CPU0 Riser present + if ((PresentStatus & CPU0_RISER_PRESENT) != 0) { + Cpu0CardType = (UINT8) (PresentStatus >> 8); + } + + // Offset 0x40: Bit6 = 1 CPU1 Riser present + if ((PresentStatus & CPU1_RISER_PRESENT) != 0) { + Cpu1CardType = (UINT8)CardType; + } + + if (OemIsMpBoot ()) { + if (Cpu0CardType == CPLD_X16_X8_BOARD_ID) { + if (Cpu1CardType == CPLD_X16_X8_BOARD_ID) { + (VOID)CopyMem ((VOID *)Report, (VOID *)PcieDeviceToReport_2P_Type1, + sizeof (PcieDeviceToReport_2P_Type1)); + } else { + (VOID)CopyMem ((VOID *)Report, (VOID *)PcieDeviceToReport_2P_Type2, + sizeof (PcieDeviceToReport_2P_Type2)); + } + } else { + if (Cpu1CardType == CPLD_X16_X8_BOARD_ID) { + (VOID)CopyMem ((VOID *)Report, (VOID *)PcieDeviceToReport_2P_Type3, + sizeof (PcieDeviceToReport_2P_Type3)); + } else { + (VOID)CopyMem ((VOID *)Report, (VOID *)PcieDeviceToReport_2P_Type4, + sizeof (PcieDeviceToReport_2P_Type4)); + } + } + } else { + (VOID)CopyMem ((VOID *)Report, (VOID *)PcieDeviceToReport, + sizeof (PcieDeviceToReport)); + } +} + + // Right now we only support 1P BOOLEAN OemIsSocketPresent ( diff --git a/Silicon/Hisilicon/Drivers/Smbios/AddSmbiosType9/AddSmbiosType9.c b/Silicon/Hisilicon/Drivers/Smbios/AddSmbiosType9/AddSmbiosType9.c index 8d8dacd3e0..cc1131577d 100644 --- a/Silicon/Hisilicon/Drivers/Smbios/AddSmbiosType9/AddSmbiosType9.c +++ b/Silicon/Hisilicon/Drivers/Smbios/AddSmbiosType9/AddSmbiosType9.c @@ -18,12 +18,6 @@ extern SMBIOS_TABLE_TYPE9 gPcieSlotInfo[]; extern UINT8 OemGetPcieSlotNumber (); -REPORT_PCIEDIDVID2BMC PcieDeviceToReport_2P[PCIEDEVICE_REPORT_MAX] = { - {67,0,0,0}, - {225,0,0,3}, - {0xFFFF,0xFFFF,0xFFFF,0xFFFF}, - {0xFFFF,0xFFFF,0xFFFF,0xFFFF} -}; VOID EFIAPI UpdateSmbiosType9Info( @@ -41,11 +35,9 @@ UpdateSmbiosType9Info( UINTN FunctionNumber; UINTN Index; REPORT_PCIEDIDVID2BMC ReportPcieDidVid[PCIEDEVICE_REPORT_MAX]; - if(OemIsMpBoot()){ - (VOID)CopyMem((VOID *)ReportPcieDidVid,(VOID *)PcieDeviceToReport_2P,sizeof(PcieDeviceToReport_2P)); - } else { - (VOID)CopyMem((VOID *)ReportPcieDidVid,(VOID *)PcieDeviceToReport,sizeof(PcieDeviceToReport)); - } + + GetPciDidVid ((VOID *) ReportPcieDidVid); + Status = gBS->LocateHandleBuffer ( ByProtocol, &gEfiPciIoProtocolGuid, From patchwork Fri Aug 31 13:27:02 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145630 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp784662ljw; Fri, 31 Aug 2018 06:28:51 -0700 (PDT) X-Google-Smtp-Source: ANB0VdYWtvpVDTfoP2r/if3pgr8aKj99yeyipWPp2r+NMAHHSjIWsYxH++KlQi95vaOlv+G9zyAV X-Received: by 2002:a17:902:28c7:: with SMTP id f65-v6mr15249189plb.240.1535722131847; Fri, 31 Aug 2018 06:28:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722131; cv=none; d=google.com; s=arc-20160816; b=kmAfVuOLg4uwoIqP3PMQSZXwGGmw504uq4UDytYQI4BBXrD/OmZIKt+NB6LaOrzlIV bm/sSLF+EWdTYAym5KUBKtyMHTrvLN1yGaBjSGLQe9yWdennl90q/8lsUa9F+dizPexg m1eSeAq72EWbPc0AKELjV8aJvMNAkQNlkqekrdpBd+sm1Gh19Dcl4g6tGnDKypiSJAad IyJ62jTqOM/F8cZq/0A1P8XTrYFY3sN9iMSEyQV9j+5lk0h1NrTEH6IrCjClG2tEJtMJ INPmCHsTFAUrVlLAgBq+MSOu/kuAvP0i3U0L/Gx3FXbqv9gaaYC29elwrG4uxKIX1+vD M+yg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=Cn/X19SoEQJFCfrWB8BvhOuJ5UrkEhHkar4ZM02sMwA=; b=pNOrTxxccipIWwqP/u4qrRL+pdZXbLcTRFclnREmjmgF145xOznXiPjBepK87jCwFQ 6HC7IIXbImu7jXZqDdxDiI31vWIvVHBt0ofzixQdaiemVlbK7gk9F4xEwLLQMKLQ8xAo 7psozDAsC9jb1V+SauY5i/VNC07q4FkmZIhwOgDGJGW8uIiVZzSgFp/pi9AVXnaoktlh EXpVR4awngbshcK3gn3kSFXEhR1XWY5bBigKCGMLz/mqpCsBGjl5aFUHSsG0O2r7QW7y EO2bKi79ASZ2YviTjVzreW8i+EUp/BdIghgRPyvXwY0MlYa9zpDqQLA+FvI//PqXgUMI b8cg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=LI6GR48g; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id b1-v6si9570709pld.108.2018.08.31.06.28.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:28:51 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=LI6GR48g; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 365732110BFC0; Fri, 31 Aug 2018 06:28:37 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::641; helo=mail-pl1-x641.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pl1-x641.google.com (mail-pl1-x641.google.com [IPv6:2607:f8b0:4864:20::641]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 1ABCE2110BD62 for ; Fri, 31 Aug 2018 06:28:36 -0700 (PDT) Received: by mail-pl1-x641.google.com with SMTP id d12-v6so5491560pls.4 for ; Fri, 31 Aug 2018 06:28:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=mkiviO0FEFxUooU7984aocWHNTCnLlMy7kn1PQ//mlE=; b=LI6GR48ggzT/yYs3zgC0/LPXz+vvz9qtaQoOhtlrau/LIR8G+d/8xWH364IWrwpFI3 OVUZnSGdbs0w4l2i1UuRYgA+9/nymDyD8SatcEUyQTBLxwCE7dIMLJ+Xzm0sqlsoilNE ru+GoTqhecSpjxicuGd7EN3lnfDZb3C4KaPUQ= 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=mkiviO0FEFxUooU7984aocWHNTCnLlMy7kn1PQ//mlE=; b=sLJEiNuBeNuGmX3zbI4UQP7cEbd09vNgcpsbc/CuU3b07z6mmTSfNCgDoPv6RPSELD uN61lfsu4ZEjG5cWhrZd/AEhjTzsiff/TGp3GGpAvvK3MkO3/pU4G2DMCK+eid+iIENT EL7wrzfJ/uDtIjMqO1bivnX8gsq2R1+llItwkSxLjR410ssgj9AXHncNrLtT8rlcFSWc o/9YPGvK0374DnG8Bew9hpO00o7WgWAjF5d1w4WMAKTU0aRBkrX9hnPgpqzXylnJZYZ9 IM0t3HkoC2530qEtUFjX5jhg5jl9yrUZHxH5x9pka56CGD0JVzubW/3ZXcWqPAGWywh2 QZLw== X-Gm-Message-State: APzg51BknPY2Ly5sBD9O1eCHJ2cakNx9xTKo6PRwXfHb6zJguFdY26jJ EAbXBLvdNkBCfZl013zECuv/hg== X-Received: by 2002:a17:902:46a4:: with SMTP id p33-v6mr15615859pld.205.1535722115722; Fri, 31 Aug 2018 06:28:35 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.28.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:28:35 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:27:02 +0800 Message-Id: <20180831132710.23055-21-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 20/28] Platform/Hisilicon/D06: Add EarlyConfigPeim peim X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" This peim configures SMMU,BSP,MN(Miscellaneous Node). Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang Reviewed-by: Leif Lindholm --- Platform/Hisilicon/D06/D06.dsc | 1 + Platform/Hisilicon/D06/D06.fdf | 1 + Platform/Hisilicon/D06/EarlyConfigPeim/EarlyConfigPeimD06.inf | 50 +++++++++ Silicon/Hisilicon/Include/Library/OemAddressMapLib.h | 2 + Platform/Hisilicon/D06/EarlyConfigPeim/EarlyConfigPeimD06.c | 107 ++++++++++++++++++++ 5 files changed, 161 insertions(+) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index d91464941e..2659cb7e37 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -264,6 +264,7 @@ MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.inf MdeModulePkg/Universal/Variable/Pei/VariablePei.inf + Platform/Hisilicon/D06/EarlyConfigPeim/EarlyConfigPeimD06.inf Silicon/Hisilicon/Drivers/VersionInfoPeim/VersionInfoPeim.inf MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf { diff --git a/Platform/Hisilicon/D06/D06.fdf b/Platform/Hisilicon/D06/D06.fdf index 445fe4db82..836fea4831 100644 --- a/Platform/Hisilicon/D06/D06.fdf +++ b/Platform/Hisilicon/D06/D06.fdf @@ -354,6 +354,7 @@ READ_LOCK_STATUS = TRUE INF ArmPkg/Drivers/CpuPei/CpuPei.inf INF MdeModulePkg/Universal/PCD/Pei/Pcd.inf INF IntelFrameworkModulePkg/Universal/StatusCode/Pei/StatusCodePei.inf + INF Platform/Hisilicon/D06/EarlyConfigPeim/EarlyConfigPeimD06.inf INF MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf diff --git a/Platform/Hisilicon/D06/EarlyConfigPeim/EarlyConfigPeimD06.inf b/Platform/Hisilicon/D06/EarlyConfigPeim/EarlyConfigPeimD06.inf new file mode 100644 index 0000000000..8296ee02de --- /dev/null +++ b/Platform/Hisilicon/D06/EarlyConfigPeim/EarlyConfigPeimD06.inf @@ -0,0 +1,50 @@ +#/** @file +# +# Copyright (c) 2018, Hisilicon Limited. All rights reserved. +# Copyright (c) 2017, Linaro Limited. All rights reserved. +# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +#**/ + + +[Defines] + INF_VERSION = 0x0001001A + BASE_NAME = EarlyConfigPeimD06 + FILE_GUID = FB8C65EB-0199-40C3-A82B-029921A9E9B3 + MODULE_TYPE = PEIM + VERSION_STRING = 1.0 + ENTRY_POINT = EarlyConfigEntry + +[Sources.common] + EarlyConfigPeimD06.c + +[Packages] + ArmPkg/ArmPkg.dec + MdeModulePkg/MdeModulePkg.dec + MdePkg/MdePkg.dec + Silicon/Hisilicon/HisiPkg.dec + +[LibraryClasses] + ArmLib + CacheMaintenanceLib + DebugLib + IoLib + PcdLib + PeimEntryPoint + PlatformSysCtrlLib + +[Pcd] + gHisiTokenSpaceGuid.PcdMailBoxAddress + gHisiTokenSpaceGuid.PcdPeriSubctrlAddress + gHisiTokenSpaceGuid.PcdTrustedFirmwareEnable + +[Depex] +## As we will clean mailbox in this module, need to wait memory init complete + gEfiPeiMemoryDiscoveredPpiGuid diff --git a/Silicon/Hisilicon/Include/Library/OemAddressMapLib.h b/Silicon/Hisilicon/Include/Library/OemAddressMapLib.h index 332a79343f..b5de34f5fa 100644 --- a/Silicon/Hisilicon/Include/Library/OemAddressMapLib.h +++ b/Silicon/Hisilicon/Include/Library/OemAddressMapLib.h @@ -16,6 +16,8 @@ #ifndef _OEM_ADDRESS_MAP_LIB_H_ #define _OEM_ADDRESS_MAP_LIB_H_ +#include + typedef struct _DDRC_BASE_ID{ UINTN Base; UINTN Id; diff --git a/Platform/Hisilicon/D06/EarlyConfigPeim/EarlyConfigPeimD06.c b/Platform/Hisilicon/D06/EarlyConfigPeim/EarlyConfigPeimD06.c new file mode 100644 index 0000000000..0790f7941a --- /dev/null +++ b/Platform/Hisilicon/D06/EarlyConfigPeim/EarlyConfigPeimD06.c @@ -0,0 +1,107 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define PERI_SUBCTRL_BASE (0x40000000) +#define MDIO_SUBCTRL_BASE (0x60000000) +#define PCIE2_SUBCTRL_BASE (0xA0000000) +#define PCIE0_SUBCTRL_BASE (0xB0000000) +#define ALG_BASE (0xD0000000) + +#define SC_BROADCAST_EN_REG (0x16220) +#define SC_BROADCAST_SCL1_ADDR0_REG (0x16230) +#define SC_BROADCAST_SCL1_ADDR1_REG (0x16234) +#define SC_BROADCAST_SCL2_ADDR0_REG (0x16238) +#define SC_BROADCAST_SCL2_ADDR1_REG (0x1623C) +#define SC_BROADCAST_SCL3_ADDR0_REG (0x16240) +#define SC_BROADCAST_SCL3_ADDR1_REG (0x16244) +#define PCIE_SUBCTRL_SC_DISP_DAW_EN_REG (0x1000) +#define PCIE_SUBCTRL_SC_DISPATCH_DAW_ARRAY3_REG (0x1010) +#define PCIE_SUBCTRL_SC_DISPATCH_DAW_ARRAY4_REG (0x1014) +#define PCIE_SUBCTRL_SC_DISPATCH_DAW_ARRAY5_REG (0x1018) +#define PCIE_SUBCTRL_SC_DISPATCH_DAW_ARRAY6_REG (0x101C) +#define PCIE_SUBCTRL_SC_REMAP_CTRL_REG (0x1200) +#define SC_ITS_M3_INT_MUX_SEL_REG (0x21F0) +#define SC_TM_CLKEN0_REG (0x2050) + +#define SC_TM_CLKEN0_REG_VALUE (0x3) +#define SC_BROADCAST_EN_REG_VALUE (0x7) +#define SC_BROADCAST_SCLx_ADDRx_REG_VALUE0 (0x0) +#define SC_BROADCAST_SCLx_ADDRx_REG_VALUE1 (0x40016260) +#define SC_BROADCAST_SCLx_ADDRx_REG_VALUE2 (0x60016260) +#define SC_BROADCAST_SCLx_ADDRx_REG_VALUE3 (0x400) +#define SC_ITS_M3_INT_MUX_SEL_REG_VALUE (0x7) +#define PCIE_SUBCTRL_SC_REMAP_CTRL_REG_VALUE0 (0x0) +#define PCIE_SUBCTRL_SC_DISP_DAW_EN_REG_VALUE0 (0x27) +#define PCIE_SUBCTRL_SC_DISP_DAW_EN_REG_VALUE1 (0x2F) +#define PCIE_SUBCTRL_SC_DISP_DAW_EN_REG_VALUE2 (0x77) +#define PCIE_SUBCTRL_SC_DISPATCH_DAW_ARRAY3_REG_VALUE0 (0x178033) +#define PCIE_SUBCTRL_SC_DISPATCH_DAW_ARRAY4_REG_VALUE0 (0x17003c) +#define PCIE_SUBCTRL_SC_DISPATCH_DAW_ARRAY5_REG_VALUE0 (0x15003d) +#define PCIE_SUBCTRL_SC_DISPATCH_DAW_ARRAY5_REG_VALUE1 (0x170035) +#define PCIE_SUBCTRL_SC_DISPATCH_DAW_ARRAY6_REG_VALUE0 (0x16003e) + +STATIC +VOID +QResetAp ( + VOID + ) +{ + MmioWrite64 (FixedPcdGet64 (PcdMailBoxAddress), 0x0); + (VOID)WriteBackInvalidateDataCacheRange ( + (VOID *)FixedPcdGet64 (PcdMailBoxAddress), + sizeof (UINT64) + ); + + //SCCL A + if (!PcdGet64 (PcdTrustedFirmwareEnable)) { + StartupAp (); + } +} + + +EFI_STATUS +EFIAPI +EarlyConfigEntry ( + IN EFI_PEI_FILE_HANDLE FileHandle, + IN CONST EFI_PEI_SERVICES **PeiServices + ) +{ + DEBUG ((DEBUG_INFO,"SMMU CONFIG.........")); + (VOID)SmmuConfigForBios (); + DEBUG ((DEBUG_INFO,"Done\n")); + + DEBUG ((DEBUG_INFO,"AP CONFIG.........")); + (VOID)QResetAp (); + DEBUG ((DEBUG_INFO,"Done\n")); + + DEBUG ((DEBUG_INFO,"MN CONFIG.........")); + (VOID)MN_CONFIG (); + DEBUG ((DEBUG_INFO,"Done\n")); + + return EFI_SUCCESS; +} + From patchwork Fri Aug 31 13:27:03 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145631 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp784757ljw; Fri, 31 Aug 2018 06:28:57 -0700 (PDT) X-Google-Smtp-Source: ANB0VdbXOV3wodUDMKoEoVmrCMOvOMJh+uTYw6VtzTSIZR/2Tn6sC1JnX6sJzQqicDAg8hULPVpa X-Received: by 2002:a17:902:708a:: with SMTP id z10-v6mr10925516plk.229.1535722137182; Fri, 31 Aug 2018 06:28:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722137; cv=none; d=google.com; s=arc-20160816; b=Qint55BljnHlx7Gq2RfpVPnCpPWiitbxLptZZMtmlvRK4ehDGQ7iCDA1DzWqfDDoS/ PQEe7e4KyhQc31ZKyaPbeVsUrR1A05QC2p1HASaPnl1zafqtG8gjkOgE+UkMgSuMVDw/ ksOGf5mvzm2VIhiUMIyZlGVIE08ujPgXii9PN0k3cwz2LgbkKQcx5TLv36ddhGX/PhP2 QUwnE3I7ZkHnzASvx/etmrf878pv5HJ2UELTXNooaVGHSrkHfRrPzT1tVvBKN5yNE18M X8ResthqD5QV+n7l8qF8WNnLCXqR+PyJbITCrZmodGte5/hu9frKYjTsR8jZ4dCBfMnI wawg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=9HBY6BG/n30kWKOy3uUkjV9I+iNzOuTkktiCEJ7Ql68=; b=VRhndGConHdFQpz6SOpWJPNtdhA4vMqldjNKKqAyTtVu3f+lc74xrrLWnnofKOHw+/ ALlTIMbMJ9f0xim9/AAWlL5nvm7anWMNm70riHQyv16toxQoC52flUxJrLtDa7JrsHyV cK7BqlxA3D5vdjrplb+cneepIVqGE7/y7KT0TRTYEmUGaW7CDAUdWPdBmqxscX6eVYAP gjrIwL/YpWrTMRtSWazMABvQXBmjeMCY+hgiSnqxR3F/udclVBs1osY7JxE8+X0GEqiB ags+50AVhHn4NuvHm5D4YdxtaozI+P+S2CYul4gqQcFDDABMTISHhYX+QM4CirdYxHdV +GxQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=c+HGVuoq; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id g36-v6si9352507pgg.186.2018.08.31.06.28.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:28:57 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=c+HGVuoq; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 668972110BFBF; Fri, 31 Aug 2018 06:28:41 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::443; helo=mail-pf1-x443.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pf1-x443.google.com (mail-pf1-x443.google.com [IPv6:2607:f8b0:4864:20::443]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id E1AF12110BD60 for ; Fri, 31 Aug 2018 06:28:39 -0700 (PDT) Received: by mail-pf1-x443.google.com with SMTP id k21-v6so5519089pff.11 for ; Fri, 31 Aug 2018 06:28:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Ot1PjyCzbfEvVIdS1972foTOSFlyMwp312bf5wc1Nio=; b=c+HGVuoq3iyqqahJBH+Nz4IHdhd3AwfGcBXvvYV+vJS9rN14unshHG8LAUK++3JsgX NA6EhyVCTkSiSnHx+3wglhTSM6SfZPXmL6cMOl9G8PeY52hIgfTB0UNhkaLPwcBTLo2n zcZFve2q57HNXe5YCpa/1PASblxAkEA6HIGKY= 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=Ot1PjyCzbfEvVIdS1972foTOSFlyMwp312bf5wc1Nio=; b=k5/c4LdUPtkN4PDuisV2hkfBPXTjR8GJfDykZXHkTizGIvq3TqqI7zyXS0ZI5NHqxQ sZkoQdt/ZcQBspqTE9lSx0HicgnzNAqGGfln4101YfNmEYEtY4NRYiBB+VZcGk3zlEil YhhPjtpjv5xFnc4Ol6eu7h/DTyVZqMMfUbVWwNLcs3f5CM/GvBtmyKD2aRJglJGjL5px 8GcLXerlpFyJ82RLCIS0DDTGSXToFZpL/OrFUQXknqJqWnW1pwVCOq7Dmw/P5QWbbJfO +wD8TkeWcLSQOB0O5gd9BWrK/G+0xi5PCrqNNdlpvIfm4pQV/cErsUauwF6XfzA0x6Ks XYbg== X-Gm-Message-State: APzg51C6HMynO52vUPd+EdxTCofIbN19t06i9Mp4LJjMf4aFpK4x0wF2 LZwUKCDlP/Pd2917hNex3j3b0A== X-Received: by 2002:a62:90d4:: with SMTP id q81-v6mr15891337pfk.37.1535722119347; Fri, 31 Aug 2018 06:28:39 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.28.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:28:38 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:27:03 +0800 Message-Id: <20180831132710.23055-22-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 21/28] Platform/Hisilicon/D06: Add PciHostBridgeLib X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" PciHostBridgeLib which is need by PciHostBridgeDxe, provide root bridges and deal with resource conflict. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang Reviewed-by: Leif Lindholm --- Platform/Hisilicon/D06/D06.dsc | 2 +- Platform/Hisilicon/D06/Library/PciHostBridgeLib/PciHostBridgeLib.inf | 36 ++ Platform/Hisilicon/D06/Library/PciHostBridgeLib/PciHostBridgeLib.c | 635 ++++++++++++++++++++ 3 files changed, 672 insertions(+), 1 deletion(-) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index 2659cb7e37..83dcbab6c4 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -419,7 +419,7 @@ PciSegmentLib|MdePkg/Library/BasePciSegmentLibPci/BasePciSegmentLibPci.inf PciLib|MdePkg/Library/BasePciLibPciExpress/BasePciLibPciExpress.inf - PciHostBridgeLib|MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.inf + PciHostBridgeLib|Platform/Hisilicon/D06/Library/PciHostBridgeLib/PciHostBridgeLib.inf } MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf diff --git a/Platform/Hisilicon/D06/Library/PciHostBridgeLib/PciHostBridgeLib.inf b/Platform/Hisilicon/D06/Library/PciHostBridgeLib/PciHostBridgeLib.inf new file mode 100644 index 0000000000..8a998681a3 --- /dev/null +++ b/Platform/Hisilicon/D06/Library/PciHostBridgeLib/PciHostBridgeLib.inf @@ -0,0 +1,36 @@ +## @file +# +# Copyright (c) 2018, Hisilicon Limited. All rights reserved.
+# Copyright (c) 2018, Linaro Limited. All rights reserved.
+# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +# +## + +[Defines] + INF_VERSION = 0x0001001A + BASE_NAME = PciHostBridgeLib + FILE_GUID = 61b7276a-fc67-11e5-82fd-47ea9896dd5d + MODULE_TYPE = DXE_DRIVER + VERSION_STRING = 1.0 + LIBRARY_CLASS = PciHostBridgeLib|DXE_DRIVER + +[Sources] + PciHostBridgeLib.c + +[Packages] + MdeModulePkg/MdeModulePkg.dec + MdePkg/MdePkg.dec + +[LibraryClasses] + BaseLib + DebugLib + DevicePathLib + MemoryAllocationLib + UefiBootServicesTableLib diff --git a/Platform/Hisilicon/D06/Library/PciHostBridgeLib/PciHostBridgeLib.c b/Platform/Hisilicon/D06/Library/PciHostBridgeLib/PciHostBridgeLib.c new file mode 100644 index 0000000000..d1a436d9bc --- /dev/null +++ b/Platform/Hisilicon/D06/Library/PciHostBridgeLib/PciHostBridgeLib.c @@ -0,0 +1,635 @@ +/** @file + + Copyright (c) 2018, Hisilicon Limited. All rights reserved.
+ Copyright (c) 2018, Linaro Limited. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ +#include +#include +#include +#include +#include +#include +#include + +#define ENUM_HB_NUM 8 + +#define EFI_PCI_SUPPORT (EFI_PCI_ATTRIBUTE_ISA_MOTHERBOARD_IO | \ + EFI_PCI_ATTRIBUTE_IDE_SECONDARY_IO | \ + EFI_PCI_ATTRIBUTE_IDE_PRIMARY_IO | \ + EFI_PCI_ATTRIBUTE_ISA_IO_16 | \ + EFI_PCI_ATTRIBUTE_VGA_MEMORY | \ + EFI_PCI_ATTRIBUTE_VGA_IO_16 | \ + EFI_PCI_ATTRIBUTE_VGA_PALETTE_IO_16) + +#define EFI_PCI_ATTRIBUTE EFI_PCI_SUPPORT + +#pragma pack(1) +typedef struct { + ACPI_HID_DEVICE_PATH AcpiDevicePath; + EFI_DEVICE_PATH_PROTOCOL EndDevicePath; +} EFI_PCI_ROOT_BRIDGE_DEVICE_PATH; +#pragma pack () + +STATIC EFI_PCI_ROOT_BRIDGE_DEVICE_PATH mEfiPciRootBridgeDevicePath [ENUM_HB_NUM] = { +//Host Bridge 0 + { + { + { + ACPI_DEVICE_PATH, + ACPI_DP, + { + (UINT8)sizeof (ACPI_HID_DEVICE_PATH), + (UINT8)(sizeof (ACPI_HID_DEVICE_PATH) >> 8) + } + }, + EISA_PNP_ID(0x0A03), // PCI + 0 + }, + { + END_DEVICE_PATH_TYPE, + END_ENTIRE_DEVICE_PATH_SUBTYPE, + { + END_DEVICE_PATH_LENGTH, + 0 + } + } + }, + +//Host Bridge 2 + { + { + { + ACPI_DEVICE_PATH, + ACPI_DP, + { + (UINT8)sizeof (ACPI_HID_DEVICE_PATH), + (UINT8)(sizeof (ACPI_HID_DEVICE_PATH) >> 8) + } + }, + EISA_PNP_ID(0x0A04), // PCI + 0 + }, + { + END_DEVICE_PATH_TYPE, + END_ENTIRE_DEVICE_PATH_SUBTYPE, + { + END_DEVICE_PATH_LENGTH, + 0 + } + } + }, + +//Host Bridge 4 + { + { + { + ACPI_DEVICE_PATH, + ACPI_DP, + { + (UINT8)sizeof (ACPI_HID_DEVICE_PATH), + (UINT8)(sizeof (ACPI_HID_DEVICE_PATH) >> 8) + } + }, + EISA_PNP_ID(0x0A05), // PCI + 0 + }, + { + END_DEVICE_PATH_TYPE, + END_ENTIRE_DEVICE_PATH_SUBTYPE, + { + END_DEVICE_PATH_LENGTH, + 0 + } + } + }, + +//Host Bridge 5 + { + { + { + ACPI_DEVICE_PATH, + ACPI_DP, + { + (UINT8)sizeof (ACPI_HID_DEVICE_PATH), + (UINT8)(sizeof (ACPI_HID_DEVICE_PATH) >> 8) + } + }, + EISA_PNP_ID(0x0A06), // PCI + 0 + }, + { + END_DEVICE_PATH_TYPE, + END_ENTIRE_DEVICE_PATH_SUBTYPE, + { + END_DEVICE_PATH_LENGTH, + 0 + } + } + }, + +//Host Bridge 6 + { + { + { + ACPI_DEVICE_PATH, + ACPI_DP, + { + (UINT8)sizeof (ACPI_HID_DEVICE_PATH), + (UINT8)(sizeof (ACPI_HID_DEVICE_PATH) >> 8) + } + }, + EISA_PNP_ID(0x0A07), // PCI + 0 + }, + { + END_DEVICE_PATH_TYPE, + END_ENTIRE_DEVICE_PATH_SUBTYPE, + { + END_DEVICE_PATH_LENGTH, + 0 + } + } + }, + +//Host Bridge 8 + { + { + { + ACPI_DEVICE_PATH, + ACPI_DP, + { + (UINT8)sizeof (ACPI_HID_DEVICE_PATH), + (UINT8)(sizeof (ACPI_HID_DEVICE_PATH) >> 8) + } + }, + EISA_PNP_ID(0x0A08), // PCI + 0 + }, + { + END_DEVICE_PATH_TYPE, + END_ENTIRE_DEVICE_PATH_SUBTYPE, + { + END_DEVICE_PATH_LENGTH, + 0 + } + } + }, + +//Host Bridge 10 + { + { + { + ACPI_DEVICE_PATH, + ACPI_DP, + { + (UINT8)sizeof (ACPI_HID_DEVICE_PATH), + (UINT8)(sizeof (ACPI_HID_DEVICE_PATH) >> 8) + } + }, + EISA_PNP_ID(0x0A09), // PCI + 0 + }, + { + END_DEVICE_PATH_TYPE, + END_ENTIRE_DEVICE_PATH_SUBTYPE, + { + END_DEVICE_PATH_LENGTH, + 0 + } + } + }, + +//Host Bridge 11 + { + { + { + ACPI_DEVICE_PATH, + ACPI_DP, + { + (UINT8)sizeof (ACPI_HID_DEVICE_PATH), + (UINT8)(sizeof (ACPI_HID_DEVICE_PATH) >> 8) + } + }, + EISA_PNP_ID(0x0A0A), // PCI + 0 + }, + { + END_DEVICE_PATH_TYPE, + END_ENTIRE_DEVICE_PATH_SUBTYPE, + { + END_DEVICE_PATH_LENGTH, + 0 + } + } + } +}; + +STATIC PCI_ROOT_BRIDGE gRootBridge [ENUM_HB_NUM] = { +//Host Bridge 0 + { + 0, // Segment + EFI_PCI_SUPPORT, // Supports + EFI_PCI_ATTRIBUTE, // Attributes + TRUE, // DmaAbove4G + FALSE, // NoExtendedConfigSpace + FALSE, // ResourceAssigned + EFI_PCI_HOST_BRIDGE_MEM64_DECODE, + { // Bus + 00, + 0x3F + }, + { // Io (32K) + 0, + 0x7FFF + }, + { // Mem (256M - 64K - 1) + 0xE0000000, + 0xEFFEFFFF + }, + { // MemAbove4G (8T + 256G) + 0x80000000000, + 0x83FFFFFFFFF + }, + { // PMem + 0xE0000000, + 0xEFFEFFFF + }, + { // PMemAbove4G + 0x80000000000, + 0x83FFFFFFFFF + }, + (EFI_DEVICE_PATH_PROTOCOL *)&mEfiPciRootBridgeDevicePath[0] + }, + + //Host Bridge 2 + { + 0, // Segment + EFI_PCI_SUPPORT, // Supports + EFI_PCI_ATTRIBUTE, // Attributes + TRUE, // DmaAbove4G + FALSE, // NoExtendedConfigSpace + FALSE, // ResourceAssigned + EFI_PCI_HOST_BRIDGE_COMBINE_MEM_PMEM | // AllocationAttributes + EFI_PCI_HOST_BRIDGE_MEM64_DECODE, + { // Bus + 0x7A, + 0x7A + }, + { // Io + MAX_UINT32, + 0 + }, + { // Mem + MAX_UINT32, + 0 + }, + { // MemAbove4G + 0x20c000000, + 0x20c1fffff + }, + { // PMem + MAX_UINT32, + 0 + }, + { // PMemAbove4G + MAX_UINT64, + 0 + }, + (EFI_DEVICE_PATH_PROTOCOL *)&mEfiPciRootBridgeDevicePath[1] + }, + + //Host Bridge 4 + { + 0, // Segment + EFI_PCI_SUPPORT, // Supports + EFI_PCI_ATTRIBUTE, // Attributes + TRUE, // DmaAbove4G + FALSE, // NoExtendedConfigSpace + FALSE, // ResourceAssigned + EFI_PCI_HOST_BRIDGE_COMBINE_MEM_PMEM | // AllocationAttributes + EFI_PCI_HOST_BRIDGE_MEM64_DECODE, + { // Bus + 0x7C, + 0x7D + }, + { // Io + MAX_UINT32, + 0 + }, + { // Mem + MAX_UINT32, + 0 + }, + { // MemAbove4G + 0x120000000, + 0x13fffffff + }, + { // PMem + MAX_UINT32, + 0 + }, + { // PMemAbove4G + MAX_UINT64, + 0 + }, + (EFI_DEVICE_PATH_PROTOCOL *)&mEfiPciRootBridgeDevicePath[2] + }, + + //Host Bridge 5 + { + 0, // Segment + EFI_PCI_SUPPORT, // Supports + EFI_PCI_ATTRIBUTE, // Attributes + TRUE, // DmaAbove4G + FALSE, // NoExtendedConfigSpace + FALSE, // ResourceAssigned + EFI_PCI_HOST_BRIDGE_COMBINE_MEM_PMEM | // AllocationAttributes + EFI_PCI_HOST_BRIDGE_MEM64_DECODE, + { // Bus + 0x74, + 0x76 + }, + { // Io + MAX_UINT32, + 0 + }, + { // Mem + 0xA2000000, + 0xA2ffffff + }, + { // MemAbove4G + 0x144000000, + 0x147ffffff + }, + { // PMem + MAX_UINT32, + 0 + }, + { // PMemAbove4G + MAX_UINT64, + 0 + }, + (EFI_DEVICE_PATH_PROTOCOL *)&mEfiPciRootBridgeDevicePath[3] + }, + //Host Bridge 6 + { + 0, // Segment + EFI_PCI_SUPPORT, // Supports + EFI_PCI_ATTRIBUTE, // Attributes + TRUE, // DmaAbove4G + FALSE, // NoExtendedConfigSpace + FALSE, // ResourceAssigned + EFI_PCI_HOST_BRIDGE_MEM64_DECODE, + { // Bus + 0x80, + 0x9F + }, + { // Io (32K) + 0x0, + 0x7FFF + }, + { // Mem (256M - 64K -1) + 0xF0000000, + 0xFFFEFFFF + }, + { // MemAbove4G (8T + 256G) + 0x480000000000, + 0x483FFFFFFFFF + }, + { // PMem + 0xF0000000, + 0xFFFEFFFF + }, + { // PMemAbove4G + 0x480000000000, + 0x483FFFFFFFFF + }, + (EFI_DEVICE_PATH_PROTOCOL *)&mEfiPciRootBridgeDevicePath[4] + }, + + //Host Bridge 8 + { + 0, // Segment + EFI_PCI_SUPPORT, // Supports + EFI_PCI_ATTRIBUTE, // Attributes + TRUE, // DmaAbove4G + FALSE, // NoExtendedConfigSpace + FALSE, // ResourceAssigned + EFI_PCI_HOST_BRIDGE_COMBINE_MEM_PMEM | // AllocationAttributes + EFI_PCI_HOST_BRIDGE_MEM64_DECODE, + { // Bus + 0xBA, + 0xBA + }, + { // Io + MAX_UINT32, + 0 + }, + { // Mem + MAX_UINT32, + 0 + }, + { // MemAbove4G + 0x40020c000000, + 0x40020c1fffff + }, + { // PMem + MAX_UINT32, + 0 + }, + { // PMemAbove4G + MAX_UINT64, + 0 + }, + (EFI_DEVICE_PATH_PROTOCOL *)&mEfiPciRootBridgeDevicePath[5] + }, + + //Host Bridge 10 + { + 0, // Segment + EFI_PCI_SUPPORT, // Supports + EFI_PCI_ATTRIBUTE, // Attributes + TRUE, // DmaAbove4G + FALSE, // NoExtendedConfigSpace + FALSE, // ResourceAssigned + EFI_PCI_HOST_BRIDGE_COMBINE_MEM_PMEM | // AllocationAttributes + EFI_PCI_HOST_BRIDGE_MEM64_DECODE, + { // Bus + 0xBC, + 0xBD + }, + { // Io + MAX_UINT32, + 0 + }, + { // Mem + MAX_UINT32, + 0 + }, + { // MemAbove4G + 0x400120000000, + 0x40013fffffff + }, + { // PMem + MAX_UINT32, + 0 + }, + { // PMemAbove4G + MAX_UINT64, + 0 + }, + (EFI_DEVICE_PATH_PROTOCOL *)&mEfiPciRootBridgeDevicePath[6] + }, + + //Host Bridge 11 + { + 0, // Segment + EFI_PCI_SUPPORT, // Supports + EFI_PCI_ATTRIBUTE, // Attributes + TRUE, // DmaAbove4G + FALSE, // NoExtendedConfigSpace + FALSE, // ResourceAssigned + EFI_PCI_HOST_BRIDGE_COMBINE_MEM_PMEM | // AllocationAttributes + EFI_PCI_HOST_BRIDGE_MEM64_DECODE, + { // Bus + 0xB4, + 0xB6 + }, + { // Io + MAX_UINT32, + 0 + }, + { // Mem + 0xA3000000, + 0xA3ffffff + }, + { // MemAbove4G + 0x400144000000, + 0x400147ffffff + }, + { // PMem + MAX_UINT32, + 0 + }, + { // PMemAbove4G + MAX_UINT64, + 0 + }, + (EFI_DEVICE_PATH_PROTOCOL *)&mEfiPciRootBridgeDevicePath[7] + } + +}; + +/** + Return all the root bridge instances in an array. + + @param Count Return the count of root bridge instances. + + @return All the root bridge instances in an array. + The array should be passed into PciHostBridgeFreeRootBridges() + when it's not used. +**/ +PCI_ROOT_BRIDGE * +EFIAPI +PciHostBridgeGetRootBridges ( + UINTN *Count + ) +{ + *Count = ENUM_HB_NUM; + + return gRootBridge; +} + +/** + Free the root bridge instances array returned from PciHostBridgeGetRootBridges(). + + @param Bridges The root bridge instances array. + @param Count The count of the array. +**/ +VOID +EFIAPI +PciHostBridgeFreeRootBridges ( + PCI_ROOT_BRIDGE *Bridges, + UINTN Count + ) +{ + if (Bridges == NULL && Count == 0) { + return; + } + + do { + --Count; + FreePool (Bridges[Count].DevicePath); + } while (Count > 0); + + FreePool (Bridges); +} + +STATIC CONST CHAR16 mPciHostBridgeLibAcpiAddressSpaceTypeStr[][4] = { + L"Mem", L"I/O", L"Bus" +}; + +/** + Inform the platform that the resource conflict happens. + + @param HostBridgeHandle Handle of the Host Bridge. + @param Configuration Pointer to PCI I/O and PCI memory resource + descriptors. The Configuration contains the resources + for all the root bridges. The resource for each root + bridge is terminated with END descriptor and an + additional END is appended indicating the end of the + entire resources. The resource descriptor field + values follow the description in + EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL + .SubmitResources(). +**/ +VOID +EFIAPI +PciHostBridgeResourceConflict ( + EFI_HANDLE HostBridgeHandle, + VOID *Configuration + ) +{ + EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *Descriptor; + UINTN RootBridgeIndex; + + DEBUG ((DEBUG_ERROR, "\n PciHostBridge: Resource conflict happens!\n")); + RootBridgeIndex = 0; + Descriptor = (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *)Configuration; + while (Descriptor->Desc == ACPI_ADDRESS_SPACE_DESCRIPTOR) { + DEBUG ((DEBUG_ERROR, "RootBridge[%d]:\n", RootBridgeIndex++)); + for (; Descriptor->Desc == ACPI_ADDRESS_SPACE_DESCRIPTOR; Descriptor++) { + ASSERT (Descriptor->ResType < + ARRAY_SIZE (mPciHostBridgeLibAcpiAddressSpaceTypeStr) + ); + DEBUG ((DEBUG_ERROR, " %s: Length/Alignment = 0x%lx / 0x%lx\n", + mPciHostBridgeLibAcpiAddressSpaceTypeStr[Descriptor->ResType], + Descriptor->AddrLen, Descriptor->AddrRangeMax + )); + if (Descriptor->ResType == ACPI_ADDRESS_SPACE_TYPE_MEM) { + DEBUG ((DEBUG_ERROR, " Granularity/SpecificFlag = %ld / %02x%s\n", + Descriptor->AddrSpaceGranularity, Descriptor->SpecificFlag, + ((Descriptor->SpecificFlag & + EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_PREFETCHABLE + ) != 0) ? L" (Prefetchable)" : L"" + )); + } + } + // + // Skip the END descriptor for root bridge + // + ASSERT (Descriptor->Desc == ACPI_END_TAG_DESCRIPTOR); + Descriptor = (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *)( + (EFI_ACPI_END_TAG_DESCRIPTOR *)Descriptor + 1 + ); + } +} From patchwork Fri Aug 31 13:27:04 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145632 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp784862ljw; Fri, 31 Aug 2018 06:29:02 -0700 (PDT) X-Google-Smtp-Source: ANB0VdaHOAAH4/4Ja1PFnttwy7QRl18fC2oM73TqPDWg8wbmggO7cZi7C0w1Y5Wjyhe9NQm7DWi3 X-Received: by 2002:a17:902:b688:: with SMTP id c8-v6mr15510544pls.114.1535722142147; Fri, 31 Aug 2018 06:29:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722142; cv=none; d=google.com; s=arc-20160816; b=PNhA8OobGohvqjhyxsnQW5M3MBKIIysbeRvgw3WTI+Zr3FSPYFvnlhiqAtK82kOSty 7o2KAhP0+z4vdJIKgas8EvfMkO5oytZlNSL1vkzX+6AIiIsdo9O0xkXXzkJhtxSZO54l DDX1JYAH5uPU7u1G0XQ509VyDlxbRDchL2q0fHWqpZ6C9RE+Vf8v22fSCoH1cHSvD08e mHIntNwSFpAGBAhiPl3ctFwdkkIdTERiTGDYjMCSDXP4k95INevaMT1QpMLluoVMaGp2 dHgf1gLoejNvWmKkf1z41kqKByiISk4s47MPJViw0d3FXUz+O5XpPfC09M+i7tXkou07 E3Bw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=+miz+V7blOu1KpJGtcQNqtF57yqtCcaA0ZoZteFQSv0=; b=DXBqSY0keu4HhuiAk1FqoHsbJNK3YWWot2DmYN8GuoToUNyk1f4NC52Z1ybjblCCFR pnq2NbPwC4ezC3TCXYgpLuii/Nx2AB0PCmJEuCh9+np0+NU8xxw3hxG9B5GedEr9jFX2 tb576rB443vwXEMrrBqs9HK7RwpmUuwD2pLAltPljxWJQkN80znebUILKPxwjbxXSGJk Fk0NU8o1a5MTVrnXaMNmGf+N42Jg/C66rYuMFQjdITlspzNKKaP9wCcJF4IUlO7lnknA ommtVa/8BqbjZ+weS6LpCzGuQICinapUCN9Bs/L/uIowA1TLCQqmI7SOl3L2QNRP16T4 BCYQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=Xuw9YM8y; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id d9-v6si9901725pfk.166.2018.08.31.06.29.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:29:02 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=Xuw9YM8y; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 977142110BD65; Fri, 31 Aug 2018 06:28:45 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::441; helo=mail-pf1-x441.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pf1-x441.google.com (mail-pf1-x441.google.com [IPv6:2607:f8b0:4864:20::441]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 26E902110BD5C for ; Fri, 31 Aug 2018 06:28:45 -0700 (PDT) Received: by mail-pf1-x441.google.com with SMTP id x17-v6so5536000pfh.5 for ; Fri, 31 Aug 2018 06:28:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=m2tz39OJK7jkh5CRXmW92iUt+5ArYpGEpErKhaPRqLM=; b=Xuw9YM8yjPDCRoS1NdgoD71lYohcTF/U6WkQQCA1EJILi5A2gleMQ/nSmhfheIRZbs KYgO7K2faD48sPPS4ysT8GtREnFHp0h9nnR6M/k4nChTQX+UQT8a0XO0P50UU8as4ltF 2bveyjBA/Py9HSfUdcU8S/ri8Jmtx6lZWJILs= 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=m2tz39OJK7jkh5CRXmW92iUt+5ArYpGEpErKhaPRqLM=; b=ihKMxDd5c0iPhE16Kn+7e55UqxCC5Kg6IXDzVTcDVts183VR6LuKZPMsZ0iA3QEAIQ L7/h0mwNwSrq1jIXF/UHh/DJqH58jEvHiTEvDs6TpcEMlEPv1k/v1mCu8EskmtVC8fsH MeGnuyvYl2kumnBuqByi6ZFUOK1iYo7K9x7gQwL5r0il3G2DF49sUQONmDocxak9LCyl kS3k4eEIw86bIOW9RfyU2U/QJhpPChFxggper+0rcTp0+xiOEKN3hgMqzMAfCxnLNN2+ L6sz7rgSOswgr3IzEOr5iGj6PszlID6hZjohWtmgn3PyEGfnJzpnhTRInZ0aZsurm9lc aJGw== X-Gm-Message-State: APzg51C9VM+9RHXyM7Ju209qDI9HFUysyxZzSZ9AWsNDW/SN7LE+Wc8F vtl7eMXd211q1y8h9LcTu4IpJg== X-Received: by 2002:a62:438f:: with SMTP id l15-v6mr16144797pfi.196.1535722123533; Fri, 31 Aug 2018 06:28:43 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.28.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:28:42 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:27:04 +0800 Message-Id: <20180831132710.23055-23-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 22/28] Hisilicon/D06: add apei driver X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Luqi Jiang , huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" From: Luqi Jiang This driver provide a means for the platform to convey error information to OSPM. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang Reviewed-by: Leif Lindholm --- Platform/Hisilicon/D06/D06.dsc | 1 + Platform/Hisilicon/D06/D06.fdf | 1 + Silicon/Hisilicon/Hi1620/Drivers/Apei/Apei.inf | 59 +++ Silicon/Hisilicon/Hi1620/Drivers/Apei/Apei.h | 41 +++ Silicon/Hisilicon/Hi1620/Drivers/Apei/Bert/Bert.h | 43 +++ Silicon/Hisilicon/Hi1620/Drivers/Apei/Einj/Einj.h | 146 ++++++++ Silicon/Hisilicon/Hi1620/Drivers/Apei/ErrorSource/Ghes.h | 110 ++++++ Silicon/Hisilicon/Hi1620/Drivers/Apei/Erst/Erst.h | 140 ++++++++ Silicon/Hisilicon/Hi1620/Drivers/Apei/Hest/Hest.h | 59 +++ Silicon/Hisilicon/Hi1620/Drivers/Apei/OemApeiHi1620.h | 43 +++ Silicon/Hisilicon/Hi1620/Drivers/Apei/Apei.c | 108 ++++++ Silicon/Hisilicon/Hi1620/Drivers/Apei/Bert/Bert.c | 91 +++++ Silicon/Hisilicon/Hi1620/Drivers/Apei/Einj/Einj.c | 349 ++++++++++++++++++ Silicon/Hisilicon/Hi1620/Drivers/Apei/ErrorSource/Ghes.c | 330 +++++++++++++++++ Silicon/Hisilicon/Hi1620/Drivers/Apei/Erst/Erst.c | 374 ++++++++++++++++++++ Silicon/Hisilicon/Hi1620/Drivers/Apei/Hest/Hest.c | 118 ++++++ Silicon/Hisilicon/Hi1620/Drivers/Apei/OemApeiHi1620.c | 337 ++++++++++++++++++ 17 files changed, 2350 insertions(+) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index 83dcbab6c4..e4d07d0bc7 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -341,6 +341,7 @@ Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/AcpiTablesHi1620.inf Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf + Silicon/Hisilicon/Hi1620/Drivers/Apei/Apei.inf Silicon/Hisilicon/Hi1620/Pptt/Pptt.inf # # Usb Support diff --git a/Platform/Hisilicon/D06/D06.fdf b/Platform/Hisilicon/D06/D06.fdf index 836fea4831..3b9a132aa0 100644 --- a/Platform/Hisilicon/D06/D06.fdf +++ b/Platform/Hisilicon/D06/D06.fdf @@ -247,6 +247,7 @@ READ_LOCK_STATUS = TRUE INF RuleOverride=ACPITABLE Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/AcpiTablesHi1620.inf INF Silicon/Hisilicon/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf + INF Silicon/Hisilicon/Hi1620/Drivers/Apei/Apei.inf INF Silicon/Hisilicon/Hi1620/Pptt/Pptt.inf diff --git a/Silicon/Hisilicon/Hi1620/Drivers/Apei/Apei.inf b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Apei.inf new file mode 100644 index 0000000000..c9573ea8c1 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Apei.inf @@ -0,0 +1,59 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +[defines] + INF_VERSION = 0x0001001A + BASE_NAME = AcpiApei + FILE_GUID = E9570C39-EF68-4fc6-B921-C1954A87CCD2 + MODULE_TYPE = DXE_DRIVER + VERSION_STRING = 1.0 + ENTRY_POINT = ApeiEntryPoint + +[sources.common] + Apei.c + Bert/Bert.c + Einj/Einj.c + Erst/Erst.c + Hest/Hest.c + ErrorSource/Ghes.c + OemApeiHi1620.c + +[Packages] + ArmPkg/ArmPkg.dec + MdePkg/MdePkg.dec + Silicon/Hisilicon/HisiPkg.dec + +[LibraryClasses] + ArmSmcLib + BaseMemoryLib + DebugLib + HobLib + TimerLib + UefiDriverEntryPoint + UefiRuntimeServicesTableLib + +[Guids] + gOemConfigGuid + +[Protocols] + gEfiAcpiSdtProtocolGuid + gEfiAcpiTableProtocolGuid # PROTOCOL ALWAYS_CONSUMED + +[Pcd] + gHisiTokenSpaceGuid.PcdCpldBaseAddress + gHisiTokenSpaceGuid.PcdTrustedFirmwareEnable + +[Depex] + gEfiAcpiTableProtocolGuid AND gEfiAcpiSdtProtocolGuid diff --git a/Silicon/Hisilicon/Hi1620/Drivers/Apei/Apei.h b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Apei.h new file mode 100644 index 0000000000..ed8ec417cb --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Apei.h @@ -0,0 +1,41 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ +#ifndef _APEI_H_ +#define _APEI_H_ + +#include +#include +#include + +#define EFI_ACPI_MAX_NUM_TABLES 20 +#define PRIVATE_ARM_SMC_ID_APEI 0x83000100 +#define PRIVATE_ARM_SMC_ID_APEI_S 0x83000101 + +typedef struct { + EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_VERSION_2_STRUCTURE *HestCorrectedErrorGhesV2; + EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_VERSION_2_STRUCTURE *HestFatalErrorGhesV2; + EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_VERSION_2_STRUCTURE *HestRecoverableErrorGhesV2; + EFI_PHYSICAL_ADDRESS HestTableAddress; + EFI_PHYSICAL_ADDRESS EinjTableAddress; + EFI_PHYSICAL_ADDRESS EinjDataStruct; + VOID *ErstContext; +} APEI_TRUSTED_FIRMWARE_STRUCTURE; + +extern EFI_ACPI_TABLE_PROTOCOL *mAcpiTableProtocol; +extern EFI_ACPI_SDT_PROTOCOL *mAcpiSdtProtocol; +extern APEI_TRUSTED_FIRMWARE_STRUCTURE *mApeiTrustedfirmwareData; + + +#endif // _APEI_H_ diff --git a/Silicon/Hisilicon/Hi1620/Drivers/Apei/Bert/Bert.h b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Bert/Bert.h new file mode 100644 index 0000000000..36a0c58966 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Bert/Bert.h @@ -0,0 +1,43 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +#ifndef _BERT_H_ +#define _BERT_H_ + +#include "Apei.h" +#include + +typedef struct _BERT_CONTEXT { + EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_HEADER *BertHeader; + VOID *Block; + UINT32 BlockSize; +} BERT_CONTEXT; + +EFI_STATUS +OemInitBertTable ( + IN EFI_HANDLE ImageHandle +); +VOID +BertSetAcpiTable ( + IN BERT_CONTEXT *Context +); +EFI_STATUS +BertHeaderCreator ( + BERT_CONTEXT *Context, + UINT32 ErrorBlockSize +); + + +#endif // _BERT_H_ diff --git a/Silicon/Hisilicon/Hi1620/Drivers/Apei/Einj/Einj.h b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Einj/Einj.h new file mode 100644 index 0000000000..861300d4e7 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Einj/Einj.h @@ -0,0 +1,146 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +#ifndef _EINJ_H_ +#define _EINJ_H_ + +#include "Apei.h" + +#define EINJ_ACTION_NO 10 +#define EINJ_BEGIN_OPERATION_VALUE 0xFFFF +#define EINJ_END_OPERATION_VALUE 0 +#define EINJ_WRITE_MASK 0xFFFFFFFF +#define EINJ_READ_VALUE 0xFFFF +#define EINJ_READ_MASK 0xFFFFFFFF + +#define EINJ_TRIGGER_ERROR_ACTION_NO 1 + +#define EFI_ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS 0x08 +#define EFI_ACPI_EINJ_GET_EXCUTE_OPERATION_TIMINGS 0x09 + + +extern EFI_ACPI_TABLE_PROTOCOL *mAcpiTableProtocol; +extern EFI_ACPI_SDT_PROTOCOL *mAcpiSdtProtocol; +extern APEI_TRUSTED_FIRMWARE_STRUCTURE *mApeiTrustedfirmwareData; + +// +// Error Type Definition +// +#define EINJ_PROCESSOR_CORRECTABLE BIT0 +#define EINJ_PROCESSOR_UNCORRECTABLE_NONFATAL BIT1 +#define EINJ_PROCESSOR_UNCORRECTABLE_FATAL BIT2 +#define EINJ_MEMORY_CORRECTABLE BIT3 +#define EINJ_MEMORY_UNCORRECTABLE_NONFATAL BIT4 +#define EINJ_MEMORY_UNCORRECTABLE_FATAL BIT5 +#define EINJ_PCIE_CORRECTABLE BIT6 +#define EINJ_PCIE_UNCORRECTABLE_NONFATAL BIT7 +#define EINJ_PCIE_UNCORRECTABLE_FATAL BIT8 +#define EINJ_PLATFORM_CORRECTABLE BIT9 +#define EINJ_PLATFORM_UNCORRECTABLE_NONFATAL BIT10 +#define EINJ_PLATFORM_UNCORRECTABLE_FATAL BIT11 +#define EINJ_VENDOR_DEFINED_ERROR_TYPE BIT31 + +#define EINJ_PROCESSOR_APIC_VALID BIT0 +#define EINJ_MEMORY_ADDRESS_VALID BIT1 +#define EINJ_PCIE_SBDF_VALID BIT2 + +/// +/// EINJ Table +/// +typedef struct { + EFI_ACPI_6_0_ERROR_INJECTION_TABLE_HEADER EinjTableHeader; + EFI_ACPI_6_0_EINJ_INJECTION_INSTRUCTION_ENTRY EinjInstructionEntry[EINJ_ACTION_NO]; +} EINJ_TABLE; + +typedef struct { + EFI_ACPI_6_0_EINJ_TRIGGER_ACTION_TABLE TriggerErrorHeader; + EFI_ACPI_6_0_EINJ_INJECTION_INSTRUCTION_ENTRY ErrorInstructionEntry[EINJ_TRIGGER_ERROR_ACTION_NO]; +} EINJ_TRIGGER_ERROR_ACTION; + +typedef struct { + UINT32 Reserved: 8; + UINT32 Function: 3; + UINT32 Device: 5; + UINT32 PrimaryOrDeviceBus: 8; + UINT32 Segment: 8; +} EINJ_PCIE_SBDF; + +typedef struct { + UINT32 ErrorType; + UINT32 VendorErrorTypeOffset; + UINT32 Flags; + UINT32 ApicId; + UINT64 MemAddress; + UINT64 MemAddressRange; + EINJ_PCIE_SBDF PcieSBDF; +} EINJ_SET_ERROR_TYPE_WITH_ADDRESS; + +typedef struct { + UINT32 Length; + UINT32 SBDF; + UINT16 VendorId; + UINT16 DeviceId; + UINT8 RevId; + UINT8 Reserved[3]; +} EINJ_VENDOR_ERROR_TYPE; + +typedef struct { + UINT64 OperationBegin; + UINT64 ErrorType; + UINT64 ErrorCapabilities; + UINT64 BusyStatus; + UINT64 CommandStatus; + UINT64 Timing; + EINJ_TRIGGER_ERROR_ACTION *TriggerErrorActionTablePtr; + EINJ_SET_ERROR_TYPE_WITH_ADDRESS ErrorTypeWithAddress; + EINJ_VENDOR_ERROR_TYPE VendorErrorTypeExtension; + EINJ_TRIGGER_ERROR_ACTION TriggerErrorActionTable; +} EINJ_DATA_STRUCTURE; + +// V2 +typedef struct _EINJ_CONTEXT { + EINJ_TABLE *EINJ; + EINJ_DATA_STRUCTURE *EinjData; + EFI_ACPI_6_0_EINJ_INJECTION_INSTRUCTION_ENTRY *GetErrorTypeEntry; + EFI_ACPI_6_0_EINJ_INJECTION_INSTRUCTION_ENTRY *ExecuteOperationEntry; +} EINJ_CONTEXT; + + +EFI_STATUS +InitEinjTable(VOID); +// Version2 +EFI_STATUS +EinjConfigErrorInjectCapability( + EINJ_CONTEXT *Context, + UINT32 BitsSupportedErrorType +); +EFI_STATUS +EinjHeaderCreator( + EINJ_CONTEXT *Context +); +/***OEM***/ +EFI_STATUS +OemInitEinjTable(VOID); +EFI_STATUS +OemEinjConfigExecuteOperationEntry( + EINJ_CONTEXT *Context +); +VOID +EinjSetAcpiTable( + EINJ_CONTEXT *Context +); + + +#endif // _EINJ_H_ diff --git a/Silicon/Hisilicon/Hi1620/Drivers/Apei/ErrorSource/Ghes.h b/Silicon/Hisilicon/Hi1620/Drivers/Apei/ErrorSource/Ghes.h new file mode 100644 index 0000000000..44cd1f9577 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Drivers/Apei/ErrorSource/Ghes.h @@ -0,0 +1,110 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +#ifndef GENERIC_HARDWARE_ERROR_SOURCE +#define GENERIC_HARDWARE_ERROR_SOURCE +#include "Apei.h" + + +typedef struct { + UINT64 AckRegister; + UINT64 ErrorStatusBlockAddress; +} GHES_REGISTER; + +typedef enum { + PROCESSOR_GENERIC = 0, + PROCESSOR_IA32_X64 = 1, + PROCESSOR_IPF = 2, + PROCESSOR_ARM = 3, + PLATFORM_MEMORY = 4, + PLATFORM_MEMORY2 = 5, + PCIE_EXPRESS = 6, + FIRMWARE_ERROR = 7, + PCI_BUS = 8, + PCI_COMPONENT = 9 +} EFI_CPER_SECTION_TYPE; +typedef enum { + RECOVERABLE = 0, + FATAL = 1, + CORRECTED = 2, + NONE = 3 +} ERROR_SEVERITY; + +EFI_ACPI_6_1_GENERIC_ERROR_STATUS_STRUCTURE* +ErrorBlockInitial( + VOID *Block, + UINT32 Severity +); +BOOLEAN ErrorBlockAddErrorData ( + IN VOID *ErrorBlock, + IN UINT32 MaxBlockLength, + IN EFI_CPER_SECTION_TYPE TypeOfErrorData, + IN VOID *GenericErrorData, + IN UINT32 SizeOfGenericErrorData, + IN ERROR_SEVERITY ErrorSeverity, + IN BOOLEAN Correctable +); +BOOLEAN ErrorBlockAddErrorData ( + IN VOID *ErrorBlock, + IN UINT32 MaxBlockLength, + IN EFI_CPER_SECTION_TYPE TypeOfErrorData, + IN VOID *GenericErrorData, + IN UINT32 SizeOfGenericErrorData, + IN ERROR_SEVERITY ErrorSeverity, + IN BOOLEAN Correctable +); + +VOID +GhesV2Initial ( + EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_VERSION_2_STRUCTURE *GhesV2, + UINT32 BlockLength +); + +/** +@param type - one of HARDWARE_ERROR_NOTIFICATION Type, GSIV For ARM,and SCI for X86, + Notice: Windows OS hadn't support to GSIV, 20171026 +*/ +VOID +GhesV2AddNotification ( + EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_VERSION_2_STRUCTURE *This, + UINT8 Type +); + + +EFI_STATUS +GhesV2LinkErrorBlock ( + EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_VERSION_2_STRUCTURE *GhesV2, + GHES_REGISTER *Register, + VOID *ErrorBlock +); +VOID +GhesV1Initial ( + EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE *GhesV1, + UINT32 BlockLength +); +VOID +GhesV1AddNotification ( + EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE *This, + UINT8 Type +); +EFI_STATUS +GhesV1LinkErrorBlock ( + EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE *This, + UINT64 *ptrBlockAddress, + VOID *ErrorBlock +); + + +#endif diff --git a/Silicon/Hisilicon/Hi1620/Drivers/Apei/Erst/Erst.h b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Erst/Erst.h new file mode 100644 index 0000000000..899f7d9d4f --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Erst/Erst.h @@ -0,0 +1,140 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +#ifndef _ERST_H_ +#define _ERST_H_ + +#include "Apei.h" + +#define ERST_STATUS_SUCCESS EFI_ACPI_6_1_ERST_STATUS_SUCCESS +#define ERST_STATUS_NOT_ENOUGH_SPACE EFI_ACPI_6_1_ERST_STATUS_NOT_ENOUGH_SPACE +#define ERST_STATUS_HARDWARE_NOT_AVAILABLE EFI_ACPI_6_1_ERST_STATUS_HARDWARE_NOT_AVAILABLE +#define ERST_STATUS_FAILED EFI_ACPI_6_1_ERST_STATUS_FAILED +#define ERST_STATUS_RECORD_STORE_EMPTY EFI_ACPI_6_1_ERST_STATUS_RECORD_STORE_EMPTY +#define ERST_STATUS_RECORD_NOT_FOUND EFI_ACPI_6_1_ERST_STATUS_RECORD_NOT_FOUND + +#define ERST_BEGIN_WRITE_VALUE 0x01 +#define ERST_BEGIN_WRITE_MASK 0xFFFFFFFFFFFFFFFF +#define ERST_BEGIN_READ_VALUE 0x02 +#define ERST_BEGIN_READ_MASK 0xFFFFFFFFFFFFFFFF +#define ERST_BEGIN_CLEAR_VALUE 0x03 +#define ERST_BEGIN_CLEAR_MASK 0xFFFFFFFFFFFFFFFF +#define ERST_END_OPERATION_VALUE 0x04 +#define ERST_END_OPERATION_MASK 0xFFFFFFFFFFFFFFFF +#define ERST_MASK 0xFFFFFFFFFFFFFFFF + +#define ERST_BEGIN_WRITE_OPERATION EFI_ACPI_6_1_ERST_BEGIN_WRITE_OPERATION +#define ERST_BEGIN_READ_OPERATION EFI_ACPI_6_1_ERST_BEGIN_READ_OPERATION +#define ERST_BEGIN_CLEAR_OPERATION EFI_ACPI_6_1_ERST_BEGIN_CLEAR_OPERATION +#define ERST_END_OPERATION EFI_ACPI_6_1_ERST_END_OPERATION +#define ERST_BEGIN_DUMMY_WRITE_OPERATION EFI_ACPI_6_1_ERST_BEGIN_DUMMY_WRITE_OPERATION + +#define ERST_ACTION_NO 16 + +#define ERST_RECORD_FREE 0x00 +#define ERST_RECORD_INUSE 0x01 + +#define ERST_RECORD_STORE_IN_NVRAM 0 +#define ERST_RECORD_STORE_IN_MEM 1 +#define ERST_RECORD_STORE_IN_SPI_FLASH 2 + +#define ERST_LOG_ATTR_NVRAM 0x02 + +typedef struct { + UINT64 OperationId; + UINT64 RecordOffset; + UINT64 BusyStatus; + UINT64 CommandStatus; + UINT64 GetRecordId; + UINT64 SetRecordId; + UINT64 RecordCount; + UINT64 DummyWrite; + UINT64 Reserved; + UINT64 ErrorLogAddrRange; + UINT64 ErrorLogAddrRangeLength; + UINT64 ErrorLogAttributes; + UINT64 NvRamLogAddrNext; + UINT64 NvRamLogSizeRemain; +} ERST_DATA_STRUCTURE; + +typedef struct { + UINT16 Signature; + UINT16 Data0; + UINT16 Data1; + UINT8 Data2; + UINT8 Attributes; //0: free +} ERST_ERROR_RECORD_INFO; + +/// +/// ERST Table +/// + + + +typedef struct _ERST_CONTEXT { + UINT64 Operation; // WRITE,READ,CLEAR,END, + UINT64 DummyWrite; //DUMMY_WRITE_OPEATION + UINT64 RecordOffset; // Offset form the buffer(error log adress range) + UINT32 BusyStatus; + UINT32 CommandStatus; + UINT64 KeyRecordId; //OS Set the Record ID To Read/Write/Search + UINT64 MaxTimeOfExecuteOperation; + UINT64 RecordCount; // Num of Record In NVRAM + UINT64 ErrorLogAddressRange; // Address Of Range Top + UINT64 ErrorLogAddressRangeLength; // Address Of Range Top + UINT64 ErrorLogAttributes; + VOID *NvRamLogAddrRange; + UINT64 NvRamLogAddrRangeLength; + UINT64 NvRamRecordOffset; + UINT64 NvRamNextVallidRecordId; //Get RecordId entry + UINT64 NvRamNextValidRecordOffset; + UINT64 NvRamAllRecordLength; +} ERST_RT_CONTEXT; + +typedef struct _ERST_BOOT_CONTEXT { + EFI_ACPI_6_1_ERROR_RECORD_SERIALIZATION_TABLE_HEADER *ErstHeader; + EFI_ACPI_6_1_ERST_SERIALIZATION_INSTRUCTION_ENTRY *ExecuteOperationEntry; + EFI_ACPI_6_1_ERST_SERIALIZATION_INSTRUCTION_ENTRY *GetErrorLogAddrRangeAttributes; + ERST_RT_CONTEXT *Rt; +} ERST_BOOT_CONTEXT; + +extern EFI_ACPI_TABLE_PROTOCOL *mAcpiTableProtocol; +extern APEI_TRUSTED_FIRMWARE_STRUCTURE *mApeiTrustedfirmwareData; + +EFI_STATUS +ErstHeaderCreator( + ERST_BOOT_CONTEXT *Context, + UINT64 BufferSize,//ERST_DATASTORE_SIZE + VOID *NvRamAddrRange, + UINT64 NvRamAllRecordLength, + UINT64 NvRamAddrRangeLength +); + +/***OEM***/ +EFI_STATUS +OemInitErstTable (VOID); + +EFI_STATUS +OemErstConfigExecuteOperationEntry ( + ERST_BOOT_CONTEXT *Context +); + +VOID +ErstSetAcpiTable ( + ERST_BOOT_CONTEXT *Context +); + + +#endif // _ERST_H_ diff --git a/Silicon/Hisilicon/Hi1620/Drivers/Apei/Hest/Hest.h b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Hest/Hest.h new file mode 100644 index 0000000000..94f66496e6 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Hest/Hest.h @@ -0,0 +1,59 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +#ifndef _HEST_H_ +#define _HEST_H_ + +#include "Apei.h" + + +typedef struct _HEST_CONTEXT { + EFI_ACPI_6_1_HARDWARE_ERROR_SOURCE_TABLE_HEADER *HestHeader; // pointer to hest header + UINT32 OccupiedMemorySize; // allocated memory size for hest + VOID *KeyErrorSource; // key error source, valtile +} HEST_CONTEXT; + +EFI_STATUS +HestAddErrorSourceDescriptor ( + IN OUT HEST_CONTEXT *Context, + IN VOID *ErrorSourceDescriptor, + IN UINT32 SizeOfDescriptor +); +VOID +HestSetAcpiTable ( + IN HEST_CONTEXT *Context +); +EFI_STATUS +HestHeaderCreator ( + HEST_CONTEXT *Context, + UINT32 PreAllocatedHestSize +); + +/** +* OEM Interface declaration +* 1.Interface is not realized default +* 2.OEM should implement this interface +*/ +extern +VOID +OemHestInitialNotification (VOID); + +extern +EFI_STATUS +OemInitHestTable( + IN EFI_HANDLE ImageHandle +); + +#endif // _HEST_H_ diff --git a/Silicon/Hisilicon/Hi1620/Drivers/Apei/OemApeiHi1620.h b/Silicon/Hisilicon/Hi1620/Drivers/Apei/OemApeiHi1620.h new file mode 100644 index 0000000000..e6fb386a62 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Drivers/Apei/OemApeiHi1620.h @@ -0,0 +1,43 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +#ifndef OEM_APEI_HI1620_H_H +#define OEM_APEI_HI1620_H_H +#define GPIO0_BASE 0x94100000 +#define GPIO1_BASE 0x94110000 +#define GPIO_INT_MASK 0x34 +#define GPIO_INT_EN 0x30 +#define GPIO_SWPORT_DDR 0x04 +#define GPIO_INT_TYPE 0x38 +#define GPIO_INT_POLARITY 0x3c +#define GPIO_LS_SYNC 0x60 +#define GPIO_INT_COMB 0xffc +#define IOMUX_REG_BASE 0x94190000 +#define IOMG051 0xCC +#define IOMG052 0xD0 +#define PAD_EX_INT1 0x4 +#define CPLD_GPIO10_INT_OFFSET 0xfc +#define CPLD_BASE_ADDR 0x80000000 +#define CPLD_MASK 0x01030000 +#define CPLD_VALUE 0x01020000 + +#define MAX_GHES 3 +#define GENERIC_HARDWARE_ERROR_BLOCK_SIZE 0x1000 +#define HEST_TABLE_SIZE 0x2000 +#define BOOT_ERROR_REGION_SIZE 0x1000 +#define GPIO_HEST_NOTIFIED_PIN BIT8 + +#define ERST_DATASTORE_SIZE 0x2000 +#endif diff --git a/Silicon/Hisilicon/Hi1620/Drivers/Apei/Apei.c b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Apei.c new file mode 100644 index 0000000000..0eb6b763c7 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Apei.c @@ -0,0 +1,108 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "Apei.h" +#include +#include "Bert.h" +#include "Einj.h" +#include "Erst.h" +#include "Hest.h" + +EFI_ACPI_TABLE_PROTOCOL *mAcpiTableProtocol = NULL; +EFI_ACPI_SDT_PROTOCOL *mAcpiSdtProtocol = NULL; +APEI_TRUSTED_FIRMWARE_STRUCTURE *mApeiTrustedfirmwareData; + +EFI_STATUS +EFIAPI +ApeiEntryPoint ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable +) +{ + EFI_STATUS Status; + ARM_SMC_ARGS SmcRegs = {0}; + UINTN Size = sizeof (OEM_CONFIG_DATA); + OEM_CONFIG_DATA SetupData; + + Status = gRT->GetVariable ( + OEM_CONFIG_NAME, + &gOemConfigGuid, + NULL, + &Size, + &SetupData + ); + if (EFI_ERROR (Status)) { + SetupData.EnRasSupport = 1; + DEBUG ((DEBUG_ERROR, "[%a]GetVariable %r.Get default variable value\n", + __FUNCTION__, Status)); + } + if (!SetupData.EnRasSupport) { + return EFI_ABORTED; + } + if (PcdGet64 (PcdTrustedFirmwareEnable) == 0) { + return EFI_ABORTED; + } + Status = gBS->LocateProtocol ( + &gEfiAcpiTableProtocolGuid, + NULL, + (VOID**)&mAcpiTableProtocol); + if (EFI_ERROR (Status)) { + return Status; + } + Status = gBS->LocateProtocol ( + &gEfiAcpiSdtProtocolGuid, + NULL, + (VOID**)&mAcpiSdtProtocol); + if (EFI_ERROR (Status)) { + return Status; + } + Status = gBS->AllocatePool ( + EfiReservedMemoryType, + sizeof (APEI_TRUSTED_FIRMWARE_STRUCTURE), + (VOID**)&mApeiTrustedfirmwareData + ); + if (EFI_ERROR (Status)) { + return Status; + } + gBS->SetMem ( + mApeiTrustedfirmwareData, + sizeof (APEI_TRUSTED_FIRMWARE_STRUCTURE), + 0 + ); + Status = EFI_SUCCESS; + Status |= OemInitBertTable (ImageHandle); + Status |= OemInitHestTable (ImageHandle); + Status |= OemInitErstTable (); + Status |= OemInitEinjTable (); + // smc call + DEBUG ((DEBUG_INFO, "[%a]:[%dL]: %r\n", __FUNCTION__, __LINE__, Status)); + if (Status == EFI_SUCCESS) { + SmcRegs.Arg0 = PRIVATE_ARM_SMC_ID_APEI; + SmcRegs.Arg1 = (UINTN)mApeiTrustedfirmwareData; + ArmCallSmc (&SmcRegs); + } + DEBUG ((DEBUG_INFO, "Acpi Apei init done.\n")); + return EFI_SUCCESS; +} + + diff --git a/Silicon/Hisilicon/Hi1620/Drivers/Apei/Bert/Bert.c b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Bert/Bert.c new file mode 100644 index 0000000000..aa94a09e88 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Bert/Bert.c @@ -0,0 +1,91 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +#include "Bert.h" +#include "ErrorSource/Ghes.h" +#include +#include +#include +#include +#include + +VOID +BertSetAcpiTable ( + IN BERT_CONTEXT *Context +) +{ + UINTN AcpiTableHandle; + EFI_STATUS Status; + if (Context == NULL) { + return; + } + EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_HEADER* Bert = Context->BertHeader; + Bert->Header.Checksum = CalculateCheckSum8 ((UINT8*)(Bert), Bert->Header.Length); + AcpiTableHandle = 0; + Status = mAcpiTableProtocol->InstallAcpiTable ( + mAcpiTableProtocol, + Bert, + Bert->Header.Length, + &AcpiTableHandle); + ASSERT_EFI_ERROR (Status); + return; +} + +BOOLEAN +BertAddGenericErrorData ( + IN EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_HEADER *Bert, + IN EFI_CPER_SECTION_TYPE TypeOfErrorData, + IN VOID *GenericErrorData, + IN UINT32 SizeOfGenericErrorData, + IN ERROR_SEVERITY ErrorSeverity, + IN BOOLEAN Correctable +) +{ + BOOLEAN Status = ErrorBlockAddErrorData ( + (VOID*)Bert->BootErrorRegion, + Bert->BootErrorRegionLength, + TypeOfErrorData, + GenericErrorData, + SizeOfGenericErrorData, + ErrorSeverity, + Correctable); + return Status; +} + +EFI_STATUS +BertHeaderCreator ( + IN BERT_CONTEXT *Context, + IN UINT32 ErrorBlockSize +) +{ + if (Context == NULL) { + return EFI_INVALID_PARAMETER; + } + Context->BertHeader = AllocateZeroPool (sizeof (EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_HEADER)); + Context->Block = AllocateReservedZeroPool (ErrorBlockSize); + Context->BlockSize = ErrorBlockSize; + *Context->BertHeader = (EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_HEADER) { + ARM_ACPI_HEADER ( + EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_SIGNATURE, + EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_HEADER, + EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_REVISION + ), + Context->BlockSize, + (UINT64)Context->Block + }; + return EFI_SUCCESS; +} + + diff --git a/Silicon/Hisilicon/Hi1620/Drivers/Apei/Einj/Einj.c b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Einj/Einj.c new file mode 100644 index 0000000000..6b076bb2b2 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Einj/Einj.c @@ -0,0 +1,349 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ +#include "Einj.h" +#include +#include +#include +#include +#include +#include "OemApeiHi1620.h" +#include + + +EINJ_TABLE mEinj = { + { + ARM_ACPI_HEADER ( + EFI_ACPI_6_0_ERROR_INJECTION_TABLE_SIGNATURE, + EFI_ACPI_6_0_ERROR_INJECTION_TABLE_HEADER, + EFI_ACPI_6_0_ERROR_INJECTION_TABLE_REVISION + ), + sizeof (EFI_ACPI_6_0_ERROR_INJECTION_TABLE_HEADER), + 0x0, + { + 0x0, + 0x0, + 0x0 + }, + EINJ_ACTION_NO + }, + { + { + // 0 EFI_ACPI_6_0_EINJ_BEGIN_INJECTION_OPERATION + EFI_ACPI_6_0_EINJ_BEGIN_INJECTION_OPERATION, + EFI_ACPI_6_0_EINJ_WRITE_REGISTER_VALUE, + EFI_ACPI_6_0_EINJ_PRESERVE_REGISTER, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_QWORD, + 0 + }, + EINJ_BEGIN_OPERATION_VALUE, + EINJ_WRITE_MASK + }, + { + // 1 EFI_ACPI_6_0_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE + EFI_ACPI_6_0_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE, + EFI_ACPI_6_0_EINJ_READ_REGISTER, + 0, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_QWORD, + 0 + }, + 0, + EINJ_READ_MASK + }, + { + // 2 EFI_ACPI_6_0_EINJ_SET_ERROR_TYPE + EFI_ACPI_6_0_EINJ_SET_ERROR_TYPE, + EFI_ACPI_6_0_EINJ_WRITE_REGISTER, + EFI_ACPI_6_0_EINJ_PRESERVE_REGISTER, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_QWORD, + 0 + }, + 0, + EINJ_WRITE_MASK + }, + { + // 3 EFI_ACPI_6_0_EINJ_GET_ERROR_TYPE + EFI_ACPI_6_0_EINJ_GET_ERROR_TYPE, + EFI_ACPI_6_0_EINJ_READ_REGISTER, + 0, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_QWORD, + 0 + }, + 0, + 0xFFFFFFFF + }, + { + // 4 EFI_ACPI_6_0_EINJ_END_OPERATION + EFI_ACPI_6_0_EINJ_END_OPERATION, + EFI_ACPI_6_0_EINJ_WRITE_REGISTER_VALUE, + EFI_ACPI_6_0_EINJ_PRESERVE_REGISTER, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_QWORD, + 0 + }, + EINJ_END_OPERATION_VALUE, + 0xFFFFFFFF + }, + { + // 5 EFI_ACPI_6_0_EINJ_EXECUTE_OPERATION + EFI_ACPI_6_0_EINJ_EXECUTE_OPERATION, + EFI_ACPI_6_0_EINJ_WRITE_REGISTER_VALUE, + EFI_ACPI_6_0_EINJ_PRESERVE_REGISTER, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 32, + 0, + EFI_ACPI_6_0_DWORD, + GPIO1_BASE + GPIO_INT_MASK //0x40070008//0x4d000F00//GPIO0_BASE + GPIO0_SWPORT_DR_OFFSET + }, + 0, + 0xFFFFFFFF //BIT0 + }, + { + // 6 EFI_ACPI_6_0_EINJ_CHECK_BUSY_STATUS + EFI_ACPI_6_0_EINJ_CHECK_BUSY_STATUS, + EFI_ACPI_6_0_EINJ_READ_REGISTER_VALUE, + 0, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_QWORD, + 0 + }, + 0x01, + 0x01 + }, + { + // 7 EFI_ACPI_6_0_EINJ_GET_COMMAND_STATUS + EFI_ACPI_6_0_EINJ_GET_COMMAND_STATUS, + EFI_ACPI_6_0_EINJ_READ_REGISTER, + 0, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_QWORD, + 0 + }, + 0, + 0x3 + }, + { + // 8 EFI_ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS + EFI_ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS, + EFI_ACPI_6_0_EINJ_WRITE_REGISTER, + EFI_ACPI_6_0_EINJ_PRESERVE_REGISTER, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_QWORD, + 0 + }, + 0, + 0xFFFFFF + }, + { + // 9 EFI_ACPI_EINJ_GET_EXCUTE_OPERATION_TIMINGS + EFI_ACPI_EINJ_GET_EXCUTE_OPERATION_TIMINGS, + EFI_ACPI_6_0_EINJ_WRITE_REGISTER, + EFI_ACPI_6_0_EINJ_PRESERVE_REGISTER, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_QWORD, + 0 + }, + 0, + 0xFFFFFF + } + } +}; + +EINJ_TRIGGER_ERROR_ACTION mEinjTriggerErrorAction = { + { + sizeof (EFI_ACPI_6_0_EINJ_TRIGGER_ACTION_TABLE), + 0, + sizeof (EINJ_TRIGGER_ERROR_ACTION), + EINJ_TRIGGER_ERROR_ACTION_NO + }, + { + { + EFI_ACPI_6_0_EINJ_TRIGGER_ERROR, + EFI_ACPI_6_0_EINJ_NOOP, + 0, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_DWORD, + 0 + }, + 0, + 0 + } + } +}; + + +VOID +EinjSetAcpiTable ( + EINJ_CONTEXT *Context +) +{ + UINTN AcpiTableHandle; + EFI_STATUS Status; + UINT8 Checksum; + EFI_ACPI_SDT_HEADER *Table; + EFI_ACPI_TABLE_VERSION TableVersion; + UINTN TableKey; + UINTN i; + + Context->EINJ->EinjTableHeader.Header.Length = sizeof (EINJ_TABLE); + Checksum = CalculateCheckSum8 ( + (UINT8*)(Context->EINJ), + Context->EINJ->EinjTableHeader.Header.Length); + Context->EINJ->EinjTableHeader.Header.Checksum = Checksum; + AcpiTableHandle = 0; + Status = mAcpiTableProtocol->InstallAcpiTable ( + mAcpiTableProtocol, + Context->EINJ, + Context->EINJ->EinjTableHeader.Header.Length, + &AcpiTableHandle + ); + for (i = 0; i < EFI_ACPI_MAX_NUM_TABLES; i++) { + Status = mAcpiSdtProtocol->GetAcpiTable (i, &Table, &TableVersion, &TableKey); + if (EFI_ERROR (Status)) { + break; + } + if (Table->Signature != EFI_ACPI_6_0_ERROR_INJECTION_TABLE_SIGNATURE) { + continue; + } + mApeiTrustedfirmwareData->EinjTableAddress = (EFI_PHYSICAL_ADDRESS)Table; + mApeiTrustedfirmwareData->EinjDataStruct = (EFI_PHYSICAL_ADDRESS)Context->EinjData; + } + ASSERT_EFI_ERROR (Status) ; +} +//V2 +EFI_STATUS +EinjHeaderCreator ( + EINJ_CONTEXT *Context +) +{ + EFI_STATUS Status; + EINJ_DATA_STRUCTURE *EinjData = NULL; + Status = gBS->AllocatePool ( + EfiReservedMemoryType, + sizeof (EINJ_DATA_STRUCTURE), + (VOID**)&EinjData + ); + if (EFI_ERROR (Status)) { + return Status; + } + gBS->SetMem ( + EinjData, + sizeof (EINJ_DATA_STRUCTURE), + 0 + ); + + DEBUG ((DEBUG_INFO, "EINJ EinjData is at 0x%X,size =0x%x\n", + EinjData, sizeof (EINJ_DATA_STRUCTURE))); + EinjData->TriggerErrorActionTablePtr = + (EINJ_TRIGGER_ERROR_ACTION*)(&(EinjData->TriggerErrorActionTable)); + gBS->CopyMem ( + EinjData->TriggerErrorActionTablePtr, + &mEinjTriggerErrorAction, + sizeof (EINJ_TRIGGER_ERROR_ACTION)); + EinjData->OperationBegin = 0; + EinjData->ErrorType = 0; + EinjData->ErrorCapabilities = 0xFFF; + EinjData->BusyStatus = 0; + EinjData->CommandStatus = 0; + mEinj.EinjInstructionEntry[0].RegisterRegion.Address = + (UINT64)(&(EinjData->OperationBegin)); + mEinj.EinjInstructionEntry[1].RegisterRegion.Address = + (UINT64)(&(EinjData->TriggerErrorActionTablePtr)); + mEinj.EinjInstructionEntry[2].RegisterRegion.Address = + (UINT64)(&(EinjData->ErrorType)); + mEinj.EinjInstructionEntry[3].RegisterRegion.Address = + (UINT64)(&(EinjData->ErrorCapabilities)); + mEinj.EinjInstructionEntry[4].RegisterRegion.Address = + (UINT64)(&(EinjData->OperationBegin)); + mEinj.EinjInstructionEntry[6].RegisterRegion.Address = + (UINT64)(&(EinjData->BusyStatus)); + mEinj.EinjInstructionEntry[7].RegisterRegion.Address = + (UINT64)(&(EinjData->CommandStatus)); + mEinj.EinjInstructionEntry[8].RegisterRegion.Address = + (UINT64)(&(EinjData->ErrorTypeWithAddress)); + mEinj.EinjInstructionEntry[9].RegisterRegion.Address = + (UINT64)(&(EinjData->Timing)); + EinjData->ErrorTypeWithAddress.VendorErrorTypeOffset = + (UINT32)((UINTN)&(EinjData->VendorErrorTypeExtension) - + (UINTN)&(EinjData->ErrorTypeWithAddress)); + Context->EinjData = EinjData; + Context->EINJ = &mEinj; + Context->ExecuteOperationEntry = &mEinj.EinjInstructionEntry[5]; + Context->GetErrorTypeEntry = &mEinj.EinjInstructionEntry[3]; + return EFI_SUCCESS; +} + + +EFI_STATUS +EinjConfigErrorInjectCapability ( + EINJ_CONTEXT* Context, + UINT32 BitsSupportedErrorType +) +{ + EFI_ACPI_6_0_EINJ_INJECTION_INSTRUCTION_ENTRY* KeyEntry; + UINT32* EinjCapablity; + + KeyEntry = Context->GetErrorTypeEntry; + EinjCapablity = (UINT32*)KeyEntry->RegisterRegion.Address; + *EinjCapablity = BitsSupportedErrorType; + KeyEntry->Value = BitsSupportedErrorType; + return EFI_SUCCESS; +} + diff --git a/Silicon/Hisilicon/Hi1620/Drivers/Apei/ErrorSource/Ghes.c b/Silicon/Hisilicon/Hi1620/Drivers/Apei/ErrorSource/Ghes.c new file mode 100644 index 0000000000..6d69b90e9b --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Drivers/Apei/ErrorSource/Ghes.c @@ -0,0 +1,330 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +#include +#include "Ghes.h" +#include +#include + +#define READ_ACK_PRESERVE 0xFFFFFFFE +#define READ_ACK_WRITE 0x1 + +EFI_ACPI_6_1_GENERIC_ERROR_STATUS_STRUCTURE* +ErrorBlockInitial ( + VOID *Block, + UINT32 Severity +) +{ + EFI_ACPI_6_1_GENERIC_ERROR_STATUS_STRUCTURE* BlockHeader = Block; + BlockHeader->BlockStatus = (EFI_ACPI_6_1_ERROR_BLOCK_STATUS) {0, 0, 0, 0, 0}; + BlockHeader->RawDataOffset = 0; + BlockHeader->RawDataLength = 0; + BlockHeader->DataLength = 0; + BlockHeader->ErrorSeverity = Severity; + return BlockHeader; +} + + +BOOLEAN +ErrorBlockUpdateStatusStructure ( + VOID *ErrorBlock +) +{ + if (ErrorBlock == NULL) { + return FALSE; + } + IN EFI_ACPI_6_1_GENERIC_ERROR_STATUS_STRUCTURE *BlockHeader = ErrorBlock; + VOID *EntriesBegin = ErrorBlock + sizeof (EFI_ACPI_6_1_GENERIC_ERROR_STATUS_STRUCTURE); + if (BlockHeader->BlockStatus.ErrorDataEntryCount == 0) { + gBS->SetMem (EntriesBegin, BlockHeader->DataLength, 0); + BlockHeader->RawDataLength = 0; + BlockHeader->RawDataOffset = 0; + BlockHeader->DataLength = 0; + } + return TRUE; +} + + +BOOLEAN +ErrorBlockAddErrorData ( + IN VOID *ErrorBlock, + IN UINT32 MaxBlockLength, + IN EFI_CPER_SECTION_TYPE TypeOfErrorData, + IN VOID *GenericErrorData, + IN UINT32 SizeOfGenericErrorData, + IN ERROR_SEVERITY ErrorSeverity, + IN BOOLEAN Correctable +) +{ + if (ErrorBlock == NULL || GenericErrorData == NULL) { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL]Invalid Param \n", __FUNCTION__, __LINE__)); + return FALSE; + } + EFI_ACPI_6_1_GENERIC_ERROR_DATA_ENTRY_STRUCTURE* Entry; + EFI_ACPI_6_1_GENERIC_ERROR_STATUS_STRUCTURE* BlockHeader = ErrorBlock; + EFI_ACPI_6_1_ERROR_BLOCK_STATUS* BlockStatus = &BlockHeader->BlockStatus; + (VOID)ErrorBlockUpdateStatusStructure (ErrorBlock); + UINT32 ExpectedNewDataLength = BlockHeader->DataLength + + sizeof (EFI_ACPI_6_1_GENERIC_ERROR_DATA_ENTRY_STRUCTURE) + + SizeOfGenericErrorData; + if (sizeof (EFI_ACPI_6_1_GENERIC_ERROR_STATUS_STRUCTURE) + ExpectedNewDataLength > + MaxBlockLength) { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL]Out of BlockSize \n", __FUNCTION__, __LINE__)); + return FALSE; + } + // guid + EFI_GUID Guid; + switch (TypeOfErrorData) { + case PROCESSOR_GENERIC: + Guid = (EFI_GUID)EFI_ERROR_SECTION_PROCESSOR_GENERIC_GUID; + break; + case PROCESSOR_ARM: + Guid = (EFI_GUID)EFI_ERROR_SECTION_PROCESSOR_SPECIFIC_ARM_GUID; + break; + case PLATFORM_MEMORY: + Guid = (EFI_GUID)EFI_ERROR_SECTION_PLATFORM_MEMORY_GUID; + break; + case PLATFORM_MEMORY2: + Guid = (EFI_GUID)EFI_ERROR_SECTION_PLATFORM_MEMORY2_GUID; + break; + case PCIE_EXPRESS: + Guid = (EFI_GUID)EFI_ERROR_SECTION_PCIE_GUID; + break; + case FIRMWARE_ERROR: + Guid = (EFI_GUID)EFI_ERROR_SECTION_FW_ERROR_RECORD_GUID; + break; + case PCI_BUS: + Guid = (EFI_GUID)EFI_ERROR_SECTION_PCI_PCIX_BUS_GUID; + break; + case PCI_COMPONENT: + Guid = (EFI_GUID)EFI_ERROR_SECTION_PCI_DEVICE_GUID; + break; + default: + return FALSE; + } + //Block Status + if (Correctable == TRUE) { + if (BlockStatus->CorrectableErrorValid == 0) { + BlockStatus->CorrectableErrorValid = 1; + } else { + BlockStatus->MultipleCorrectableErrors = 1; + } + } else { + if (BlockStatus->UncorrectableErrorValid == 0) { + BlockStatus->UncorrectableErrorValid = 1; + } else { + BlockStatus->MultipleUncorrectableErrors = 1; + } + } + BlockStatus->ErrorDataEntryCount++; + // Entry + Entry = (EFI_ACPI_6_1_GENERIC_ERROR_DATA_ENTRY_STRUCTURE*)(ErrorBlock + + sizeof (EFI_ACPI_6_1_GENERIC_ERROR_STATUS_STRUCTURE) + + BlockHeader->DataLength); + gBS->SetMem (Entry, sizeof (EFI_ACPI_6_1_GENERIC_ERROR_DATA_ENTRY_STRUCTURE), 0); + gBS->CopyMem (&Entry->SectionType, &Guid, sizeof (EFI_GUID)); + Entry->ErrorSeverity = ErrorSeverity; + Entry->Revision = EFI_ACPI_6_1_GENERIC_ERROR_DATA_ENTRY_REVISION; + Entry->ErrorDataLength = SizeOfGenericErrorData; + VOID* GenericErrorDataFollowEntry = (VOID*)Entry + + sizeof (EFI_ACPI_6_1_GENERIC_ERROR_DATA_ENTRY_STRUCTURE); + gBS->CopyMem ( + GenericErrorDataFollowEntry, + GenericErrorData, + SizeOfGenericErrorData); + // BlockHeader + BlockHeader->RawDataOffset = 0; + BlockHeader->RawDataLength = 0; + BlockHeader->DataLength = ExpectedNewDataLength; + return TRUE; +} + +VOID +GhesV2Initial ( + EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_VERSION_2_STRUCTURE *GhesV2, + UINT32 BlockLength +) +{ + if (GhesV2 == NULL) { + return; + } + *GhesV2 = (EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_VERSION_2_STRUCTURE) { + .Type = EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_VERSION_2, + .SourceId = 0, + .RelatedSourceId = 0xFFFF, + .Flags = 0, + .Enabled = 1, + .NumberOfRecordsToPreAllocate = 1,//ERROR BLOCK + .MaxSectionsPerRecord = 1,// Num Entries(section) + .MaxRawDataLength = BlockLength, // Max Size Of a Raw Data + .ErrorStatusAddress = { + .AddressSpaceId = EFI_ACPI_6_1_SYSTEM_MEMORY, + .RegisterBitWidth = 64, + .RegisterBitOffset = 0, + .AccessSize = EFI_ACPI_6_1_QWORD, + .Address = 0 + }, + .NotificationStructure = { + .Type = EFI_ACPI_6_1_HARDWARE_ERROR_NOTIFICATION_GSIV, + .Length = sizeof (EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_VERSION_2_STRUCTURE), + .ConfigurationWriteEnable = {0, 0, 0, 0, 0, 0, 0} , + .PollInterval = 0, + .Vector = 0, + .SwitchToPollingThresholdValue = 0, + .SwitchToPollingThresholdWindow = 0, + .ErrorThresholdValue = 0, + .ErrorThresholdWindow = 0 + }, + .ErrorStatusBlockLength = BlockLength, + .ReadAckRegister = { + .AddressSpaceId = EFI_ACPI_6_1_SYSTEM_MEMORY, + .RegisterBitWidth = 64, + .RegisterBitOffset = 0, + .AccessSize = EFI_ACPI_6_1_QWORD, + .Address = 0 + }, + .ReadAckPreserve = READ_ACK_PRESERVE, + .ReadAckWrite = READ_ACK_WRITE + }; + return; +} + +VOID +GhesV2AddNotification ( + EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_VERSION_2_STRUCTURE *This, + UINT8 Type +) +{ + This->NotificationStructure = (EFI_ACPI_6_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE) { + .Type = Type, + .Length = sizeof (EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_VERSION_2_STRUCTURE), + .ConfigurationWriteEnable = { + .Type = 0, + .PollInterval = 1, + .SwitchToPollingThresholdValue = 1, + .SwitchToPollingThresholdWindow = 1, + .ErrorThresholdValue = 1, + .ErrorThresholdWindow = 1 + }, + .PollInterval = 20, + .Vector = 0, + .SwitchToPollingThresholdValue = 0, + .SwitchToPollingThresholdWindow = 0, + .ErrorThresholdValue = 0, + .ErrorThresholdWindow = 0 + }; + return; +} + +EFI_STATUS +GhesV2LinkErrorBlock ( + EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_VERSION_2_STRUCTURE *GhesV2, + GHES_REGISTER *Register, + VOID *ErrorBlock +) +{ + if (ErrorBlock == NULL || Register == NULL || GhesV2 == NULL) { + return EFI_INVALID_PARAMETER; + } + + Register->ErrorStatusBlockAddress = (UINTN)ErrorBlock; + GhesV2->ErrorStatusAddress.Address = (UINTN)&(Register->ErrorStatusBlockAddress); + Register->AckRegister = READ_ACK_WRITE; + GhesV2->ReadAckRegister.Address = (UINT64)&(Register->AckRegister); + return EFI_SUCCESS; +} + + +VOID GhesV1Initial ( + EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE *GhesV1, + UINT32 BlockLength +) +{ + if (GhesV1 == NULL) { + return; + } + *GhesV1 = (EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE) { + .Type = EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR, + .SourceId = 0, + .RelatedSourceId = 0xFFFF, + .Flags = 0, + .Enabled = 1, + .NumberOfRecordsToPreAllocate = 1,//ERROR BLOCK + .MaxSectionsPerRecord = 1,// Num Entries(section) + .MaxRawDataLength = BlockLength, // Max Size Of a Raw Data + .ErrorStatusAddress = { + .AddressSpaceId = EFI_ACPI_6_1_SYSTEM_MEMORY, + .RegisterBitWidth = 64, + .RegisterBitOffset = 0, + .AccessSize = EFI_ACPI_6_1_QWORD, + .Address = 0 + }, + .NotificationStructure = { + .Type = EFI_ACPI_6_1_HARDWARE_ERROR_NOTIFICATION_GSIV, + .Length = sizeof (EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE), + .ConfigurationWriteEnable = {0, 0, 0, 0, 0, 0, 0}, + .PollInterval = 0, + .Vector = 0, + .SwitchToPollingThresholdValue = 0, + .SwitchToPollingThresholdWindow = 0, + .ErrorThresholdValue = 0, + .ErrorThresholdWindow = 0 + }, + .ErrorStatusBlockLength = BlockLength, + }; + return; +} + +VOID +GhesV1AddNotification ( + EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE *This, + UINT8 Type +) +{ + This->NotificationStructure = (EFI_ACPI_6_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE) { + .Type = Type, + .Length = sizeof (EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE), + .ConfigurationWriteEnable = { + .Type = 0, + .PollInterval = 1, + .SwitchToPollingThresholdValue = 1, + .SwitchToPollingThresholdWindow = 1, + .ErrorThresholdValue = 1, + .ErrorThresholdWindow = 1 + }, + .PollInterval = 20, + .Vector = 0, + .SwitchToPollingThresholdValue = 0, + .SwitchToPollingThresholdWindow = 0, + .ErrorThresholdValue = 0, + .ErrorThresholdWindow = 0 + }; + return; +} + +EFI_STATUS GhesV1LinkErrorBlock ( + EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE *This, + UINT64 *ptrBlockAddress, + VOID *ErrorBlock +) +{ + if (ErrorBlock == NULL || ptrBlockAddress == NULL || This == NULL) { + return EFI_INVALID_PARAMETER; + } + *ptrBlockAddress = (UINTN)ErrorBlock; + This->ErrorStatusAddress.Address = (UINTN) ptrBlockAddress; + return EFI_SUCCESS; +} + diff --git a/Silicon/Hisilicon/Hi1620/Drivers/Apei/Erst/Erst.c b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Erst/Erst.c new file mode 100644 index 0000000000..bf3c34853a --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Erst/Erst.c @@ -0,0 +1,374 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ +#include "Erst.h" +#include +#include +#include +#include +#include + +typedef struct { + EFI_ACPI_6_1_ERROR_RECORD_SERIALIZATION_TABLE_HEADER ErstTableHeader; + EFI_ACPI_6_1_ERST_SERIALIZATION_INSTRUCTION_ENTRY ErstInstructionEntry[ERST_ACTION_NO]; +} ERST_TABLE; + +ERST_TABLE mErst = { + { + ARM_ACPI_HEADER ( + EFI_ACPI_6_0_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE, + EFI_ACPI_6_0_ERROR_RECORD_SERIALIZATION_TABLE_HEADER, + EFI_ACPI_6_0_ERROR_RECORD_SERIALIZATION_TABLE_REVISION + ), + sizeof (EFI_ACPI_6_0_ERROR_RECORD_SERIALIZATION_TABLE_HEADER), + { + 0x0, + 0x0, + 0x0, + 0x0 + }, + ERST_ACTION_NO, + }, + { + { + // 0 EFI_ACPI_6_0_ERST_BEGIN_WRITE_OPERATION + EFI_ACPI_6_0_ERST_BEGIN_WRITE_OPERATION, + EFI_ACPI_6_0_ERST_WRITE_REGISTER_VALUE, + 0, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_QWORD, + 0 + }, + ERST_BEGIN_WRITE_VALUE, + ERST_BEGIN_WRITE_MASK + }, + { + // 1 EFI_ACPI_6_0_ERST_BEGIN_READ_OPERATION + EFI_ACPI_6_0_ERST_BEGIN_READ_OPERATION, + EFI_ACPI_6_0_ERST_WRITE_REGISTER_VALUE, + 0, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_QWORD, + 0 + }, + ERST_BEGIN_READ_VALUE, + ERST_BEGIN_READ_MASK + }, + { + // 2 EFI_ACPI_6_0_ERST_BEGIN_CLEAR_OPERATION + EFI_ACPI_6_0_ERST_BEGIN_CLEAR_OPERATION, + EFI_ACPI_6_0_ERST_WRITE_REGISTER_VALUE, + 0, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_QWORD, + 0 + }, + ERST_BEGIN_CLEAR_VALUE, + ERST_BEGIN_CLEAR_MASK + }, + { + // 3 EFI_ACPI_6_0_ERST_END_OPERATION + EFI_ACPI_6_0_ERST_END_OPERATION, + EFI_ACPI_6_0_ERST_WRITE_REGISTER_VALUE, + EFI_ACPI_6_0_ERST_PRESERVE_REGISTER, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_QWORD, + 0 + }, + ERST_END_OPERATION_VALUE, + ERST_END_OPERATION_MASK + }, + { + // 4 EFI_ACPI_6_0_ERST_SET_RECORD_OFFSET + EFI_ACPI_6_0_ERST_SET_RECORD_OFFSET, + EFI_ACPI_6_0_ERST_WRITE_REGISTER, + 0, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_QWORD, + 0 + }, + 0, + ERST_MASK + }, + { + // 5 EFI_ACPI_6_0_ERST_EXECUTE_OPERATION + EFI_ACPI_6_0_ERST_EXECUTE_OPERATION, + EFI_ACPI_6_0_ERST_WRITE_REGISTER_VALUE, + 0, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_DWORD, + 0x94730000 + }, + 0x0002, + 0x0002 + }, + { + // 6 EFI_ACPI_6_0_ERST_CHECK_BUSY_STATUS + EFI_ACPI_6_0_ERST_CHECK_BUSY_STATUS, + EFI_ACPI_6_0_ERST_READ_REGISTER_VALUE, + 0, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_QWORD, + 0 + }, + 0x00000001, + 0x00000001 + }, + { + // 7 EFI_ACPI_6_0_ERST_GET_COMMAND_STATUS + EFI_ACPI_6_0_ERST_GET_COMMAND_STATUS, + EFI_ACPI_6_0_ERST_READ_REGISTER, + 0, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_QWORD, + 0 + }, + 0, + ERST_MASK + }, + { + // 8 EFI_ACPI_6_0_ERST_GET_RECORD_IDENTIFIER + EFI_ACPI_6_0_ERST_GET_RECORD_IDENTIFIER, + EFI_ACPI_6_0_ERST_READ_REGISTER, + 0, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_QWORD, + 0 + }, + 0, + ERST_MASK + }, + { + // 9 EFI_ACPI_6_0_ERST_SET_RECORD_IDENTIFIER + EFI_ACPI_6_0_ERST_SET_RECORD_IDENTIFIER, + EFI_ACPI_6_0_ERST_WRITE_REGISTER, + 0, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_QWORD, + 0 + }, + 0, + ERST_MASK + }, + { + // A EFI_ACPI_6_0_ERST_GET_RECORD_COUNT + EFI_ACPI_6_0_ERST_GET_RECORD_COUNT, + EFI_ACPI_6_0_ERST_READ_REGISTER, + 0, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_QWORD, + 0 + }, + 0, + ERST_MASK + }, + { + // B EFI_ACPI_6_0_ERST_BEGIN_DUMMY_WRITE_OPERATION + EFI_ACPI_6_0_ERST_BEGIN_DUMMY_WRITE_OPERATION, + EFI_ACPI_6_0_ERST_WRITE_REGISTER, + 0, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_QWORD, + 0 + }, + 0, + ERST_MASK + }, + { + // C RESERVED + 0x0C, + EFI_ACPI_6_0_ERST_WRITE_REGISTER, + 0, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_QWORD, + 0 + }, + 0, + ERST_MASK + }, + { + // D EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE + EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE, + EFI_ACPI_6_0_ERST_READ_REGISTER, + 0, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_QWORD, + 0 + }, + 0, + ERST_MASK + }, + { + // E EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH + EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH, + EFI_ACPI_6_0_ERST_READ_REGISTER, + 0, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_QWORD, + 0 + }, + 0, + ERST_MASK + }, + { + // F EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES + EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES, + EFI_ACPI_6_0_ERST_READ_REGISTER, + 0, + 0, + { + EFI_ACPI_6_0_SYSTEM_MEMORY, + 64, + 0, + EFI_ACPI_6_0_QWORD, + 0 + }, + 0, + ERST_MASK + } + } +}; + +VOID +ErstSetAcpiTable ( + ERST_BOOT_CONTEXT *Context +) +{ + UINTN AcpiTableHandle; + EFI_STATUS Status; + UINT8 Checksum; + mErst.ErstTableHeader.Header.Length = sizeof (ERST_TABLE); + Checksum = CalculateCheckSum8 ((UINT8*)(&mErst), mErst.ErstTableHeader.Header.Length); + mErst.ErstTableHeader.Header.Checksum = Checksum; + AcpiTableHandle = 0; + Status = mAcpiTableProtocol->InstallAcpiTable ( + mAcpiTableProtocol, + &mErst, + mErst.ErstTableHeader.Header.Length, + &AcpiTableHandle + ); + ASSERT_EFI_ERROR (Status) ; +} + +EFI_STATUS +ErstHeaderCreator ( + ERST_BOOT_CONTEXT *Context, + UINT64 BufferSize,//ERST_DATASTORE_SIZE + VOID *NvRamAddrRange, + UINT64 NvRamAllRecordLength, + UINT64 NvRamAddrRangeLength +) +{ + EFI_STATUS Status = EFI_SUCCESS; + ERST_RT_CONTEXT *ErstRtCtx; + // + ErstRtCtx = AllocateReservedZeroPool (sizeof (ERST_RT_CONTEXT)); + ErstRtCtx->Operation = ERST_END_OPERATION; + ErstRtCtx->RecordOffset = 0; + ErstRtCtx->BusyStatus = 0; + ErstRtCtx->CommandStatus = 0; + ErstRtCtx->KeyRecordId = 0; + ErstRtCtx->MaxTimeOfExecuteOperation = MAX_UINT64; + ErstRtCtx->RecordCount = 0; + ErstRtCtx->ErrorLogAddressRange = (UINT64)AllocateReservedZeroPool (BufferSize); + ErstRtCtx->ErrorLogAddressRangeLength = BufferSize; + ErstRtCtx->ErrorLogAttributes = 0; + ErstRtCtx->NvRamLogAddrRange = NvRamAddrRange; + ErstRtCtx->NvRamLogAddrRangeLength = NvRamAddrRangeLength; + ErstRtCtx->NvRamRecordOffset = 0; + ErstRtCtx->NvRamNextVallidRecordId = MAX_UINT64; + ErstRtCtx->NvRamNextValidRecordOffset = 0; + ErstRtCtx->NvRamAllRecordLength = NvRamAllRecordLength; + mErst.ErstInstructionEntry[0].RegisterRegion.Address = (UINT64)(&(ErstRtCtx->Operation)); + mErst.ErstInstructionEntry[1].RegisterRegion.Address = (UINT64)(&(ErstRtCtx->Operation)); + mErst.ErstInstructionEntry[2].RegisterRegion.Address = (UINT64)(&(ErstRtCtx->Operation)); + mErst.ErstInstructionEntry[3].RegisterRegion.Address = (UINT64)(&(ErstRtCtx->Operation)); + mErst.ErstInstructionEntry[4].RegisterRegion.Address = (UINT64)(&(ErstRtCtx->RecordOffset)); + mErst.ErstInstructionEntry[6].RegisterRegion.Address = (UINT64)(&(ErstRtCtx->BusyStatus)); + mErst.ErstInstructionEntry[7].RegisterRegion.Address = (UINT64)(&(ErstRtCtx->CommandStatus)); + mErst.ErstInstructionEntry[8].RegisterRegion.Address = (UINT64)(&(ErstRtCtx->NvRamNextVallidRecordId)); + mErst.ErstInstructionEntry[9].RegisterRegion.Address = (UINT64)(&(ErstRtCtx->KeyRecordId)); + mErst.ErstInstructionEntry[10].RegisterRegion.Address = (UINT64)(&(ErstRtCtx->RecordCount)); + mErst.ErstInstructionEntry[11].RegisterRegion.Address = (UINT64)(&(ErstRtCtx->DummyWrite)); + mErst.ErstInstructionEntry[12].RegisterRegion.Address = 0; + mErst.ErstInstructionEntry[13].RegisterRegion.Address = (UINT64)(&(ErstRtCtx->ErrorLogAddressRange)); + mErst.ErstInstructionEntry[14].RegisterRegion.Address = (UINT64)(&(ErstRtCtx->ErrorLogAddressRangeLength)); + mErst.ErstInstructionEntry[15].RegisterRegion.Address = (UINT64)(&(ErstRtCtx->ErrorLogAttributes)); + Context->ErstHeader = (EFI_ACPI_6_1_ERROR_RECORD_SERIALIZATION_TABLE_HEADER*)&mErst; + Context->ExecuteOperationEntry = &(mErst.ErstInstructionEntry[5]); + Context->GetErrorLogAddrRangeAttributes = &(mErst.ErstInstructionEntry[15]); + Context->Rt = ErstRtCtx; + return Status; +}; + diff --git a/Silicon/Hisilicon/Hi1620/Drivers/Apei/Hest/Hest.c b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Hest/Hest.c new file mode 100644 index 0000000000..26818157db --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Hest/Hest.c @@ -0,0 +1,118 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +#include "ErrorSource/Ghes.h" +#include "Hest.h" +#include +#include +#include +#include +#include +#include + +EFI_STATUS HestAddErrorSourceDescriptor ( + IN OUT HEST_CONTEXT *Context, + IN VOID *ErrorSourceDescriptor, + IN UINT32 SizeOfDescriptor +) +{ + UINT16 *pSourceId; + VOID *Descriptor; + EFI_ACPI_6_1_HARDWARE_ERROR_SOURCE_TABLE_HEADER *HestHeader; + + if ((Context == NULL) || (ErrorSourceDescriptor == NULL)) { + return EFI_INVALID_PARAMETER; + } + HestHeader = Context->HestHeader; + if (HestHeader->Header.Length + SizeOfDescriptor > Context->OccupiedMemorySize) { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL]: Hest Size Too small\n", __FUNCTION__, __LINE__)); + return EFI_BUFFER_TOO_SMALL; + } + Descriptor = (UINT8*)HestHeader + HestHeader->Header.Length; + gBS->CopyMem ((VOID*)Descriptor , ErrorSourceDescriptor, SizeOfDescriptor); + pSourceId = Descriptor + sizeof (UINT16); + *pSourceId = HestHeader->ErrorSourceCount; + HestHeader->Header.Length += SizeOfDescriptor; + HestHeader->ErrorSourceCount++; + Context->KeyErrorSource = Descriptor; + return EFI_SUCCESS; +} + +VOID +HestSetAcpiTable ( + IN HEST_CONTEXT *Context +) +{ + UINTN AcpiTableHandle; + EFI_STATUS Status; + UINT8 Checksum; + EFI_ACPI_6_1_HARDWARE_ERROR_SOURCE_TABLE_HEADER *HestHeader; + EFI_ACPI_SDT_HEADER *Table; + EFI_ACPI_TABLE_VERSION TableVersion; + UINTN TableKey; + UINT32 Index; + if (Context == NULL) { + DEBUG ((DEBUG_ERROR, "[%a]:[%dL]: ERROR\n", __FUNCTION__, __LINE__)); + return; + } + + HestHeader = Context->HestHeader; + Checksum = CalculateCheckSum8 ((UINT8*)(HestHeader), HestHeader->Header.Length); + HestHeader->Header.Checksum = Checksum; + AcpiTableHandle = 0; + // see AcpiTableProtocol.c InstallAcpiTable + Status = mAcpiTableProtocol->InstallAcpiTable ( + mAcpiTableProtocol, + HestHeader, + HestHeader->Header.Length, + &AcpiTableHandle); + for (Index = 0; Index < EFI_ACPI_MAX_NUM_TABLES; Index++) { + Status = mAcpiSdtProtocol->GetAcpiTable (Index, &Table, &TableVersion, &TableKey); + if (EFI_ERROR (Status)) { + break; + } + if (Table->Signature != EFI_ACPI_6_1_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE) { + continue; + } + mApeiTrustedfirmwareData->HestTableAddress = (EFI_PHYSICAL_ADDRESS)Table; + DEBUG ((DEBUG_INFO, "Acpi HestSetAcpiTable Table = 0x%x.\n", (EFI_PHYSICAL_ADDRESS)Table)); + } + DEBUG ((DEBUG_INFO, "[%a]:[%dL]:OUT %llx, IN %llx \n", __FUNCTION__, __LINE__, + AcpiTableHandle, Context->HestHeader)); + return; +} + +EFI_STATUS +HestHeaderCreator ( + HEST_CONTEXT *Context, + UINT32 PreAllocatedHestSize +) +{ + if (PreAllocatedHestSize < sizeof (EFI_ACPI_6_1_HARDWARE_ERROR_SOURCE_TABLE_HEADER)) { + return EFI_BUFFER_TOO_SMALL; + } + Context->HestHeader = AllocateReservedZeroPool (PreAllocatedHestSize); + *Context->HestHeader = (EFI_ACPI_6_1_HARDWARE_ERROR_SOURCE_TABLE_HEADER) { + ARM_ACPI_HEADER ( + EFI_ACPI_6_1_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE, + EFI_ACPI_6_1_HARDWARE_ERROR_SOURCE_TABLE_HEADER, + EFI_ACPI_6_1_HARDWARE_ERROR_SOURCE_TABLE_REVISION + ), + 0x0 + }; + Context->KeyErrorSource = Context->HestHeader + 1; + Context->OccupiedMemorySize = PreAllocatedHestSize; + return EFI_SUCCESS; +} diff --git a/Silicon/Hisilicon/Hi1620/Drivers/Apei/OemApeiHi1620.c b/Silicon/Hisilicon/Hi1620/Drivers/Apei/OemApeiHi1620.c new file mode 100644 index 0000000000..145c4732a6 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Drivers/Apei/OemApeiHi1620.c @@ -0,0 +1,337 @@ +/** @file +* +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. +* Copyright (c) 2018, Linaro Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +#include +#include +#include +#include +#include +#include + +#include "Bert/Bert.h" +#include "Einj/Einj.h" +#include "ErrorSource/Ghes.h" +#include "Erst/Erst.h" +#include "Hest/Hest.h" +#include "OemApeiHi1620.h" + +VOID +GpioCombInit ( + UINTN Base, + UINT32 Pin +) +{ + UINT32 Val = MmioRead32 (Base + GPIO_INT_MASK); + MmioWrite32 (Base + GPIO_INT_MASK, Val | Pin); + Val = MmioRead32 (Base + GPIO_INT_EN); + MmioWrite32 (Base + GPIO_INT_EN, Val | Pin); + Val = MmioRead32 (Base + GPIO_SWPORT_DDR); + MmioWrite32 (Base + GPIO_SWPORT_DDR, Val & (~Pin)); + Val = MmioRead32 (Base + GPIO_INT_TYPE); + MmioWrite32 (Base + GPIO_INT_TYPE, Val & (~Pin)); + Val = MmioRead32 (Base + GPIO_INT_POLARITY); + MmioWrite32 (Base + GPIO_INT_POLARITY, Val | Pin); + Val = MmioRead32 (Base + GPIO_LS_SYNC); + MmioWrite32 (Base + GPIO_LS_SYNC, Val & (~Pin)); + MmioWrite32 (Base + GPIO_INT_COMB, 1); + return; +} +/************************************************ +*************** HEST *************** +************************************************/ + +/***************************************************************************** +* @param EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_VERSION_2_STRUCTURE* GhesV2,Vector of GhesV2 +* @param UINT8 NumOfGhesV2 +* @param_out +* @retval EFI_STATUS +*****************************************************************************/ +EFI_STATUS +GhesV2ContextForHest ( + IN EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_VERSION_2_STRUCTURE GhesV2[MAX_GHES], + IN UINT8 NumOfGhesV2 +) +{ + // ensuce the size is expected + if ((GhesV2 == NULL) || (NumOfGhesV2 != MAX_GHES)) { + return EFI_INVALID_PARAMETER; + } + + UINT8 NumOfBlockPerGhes = 1; + UINT8 Iter = 0; + UINT32 BlockMemorySize; + UINT32 ErrorSeverityArray[MAX_GHES] = { + EFI_ACPI_6_2_ERROR_SEVERITY_CORRECTABLE, + EFI_ACPI_6_2_ERROR_SEVERITY_FATAL, + EFI_ACPI_6_2_ERROR_SEVERITY_CORRECTED}; + VOID *ErrorBlockHead; + VOID *ErrorBlock; + VOID *BlockMemory; + GHES_REGISTER *GhesRegisters; + EFI_STATUS Status = EFI_SUCCESS; + + BlockMemorySize = MAX_GHES * + (sizeof (GHES_REGISTER) + NumOfBlockPerGhes * GENERIC_HARDWARE_ERROR_BLOCK_SIZE); + Status = gBS->AllocatePool ( + EfiReservedMemoryType, + BlockMemorySize, + &BlockMemory + ); + if (EFI_ERROR (Status)) { + return Status; + } + gBS->SetMem (BlockMemory, BlockMemorySize, 0); + GhesRegisters = BlockMemory; + ErrorBlockHead = BlockMemory + MAX_GHES * sizeof (GHES_REGISTER); + ErrorBlock = ErrorBlockHead; + for (Iter = 0; Iter < MAX_GHES; Iter++) { + GhesV2Initial (&GhesV2[Iter], GENERIC_HARDWARE_ERROR_BLOCK_SIZE); + GhesV2AddNotification (&GhesV2[Iter], EFI_ACPI_6_1_HARDWARE_ERROR_NOTIFICATION_GSIV); + ErrorBlockInitial (ErrorBlock, ErrorSeverityArray[Iter]); + GhesV2LinkErrorBlock (&GhesV2[Iter], &GhesRegisters[Iter], ErrorBlock); + ErrorBlock += GhesV2[Iter].ErrorStatusBlockLength; + } + return EFI_SUCCESS; +} +/***************************************************************************** +* @param EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_VERSION_2_STRUCTURE* GhesV2,Vector of GhesV2 +* @param UINT8 NumOfGhesV2 +* @param_out +* @retval EFI_STATUS +*****************************************************************************/ + +EFI_STATUS +GhesV1ContextForHest ( + IN EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE GhesV1[MAX_GHES], + IN UINT8 NumOfGhesV1 +) +{ + // ensuce the size is expected + if ((GhesV1 == NULL) || (NumOfGhesV1 != MAX_GHES)) { + return EFI_INVALID_PARAMETER; + } + + UINT8 NumOfBlockPerGhes = 1; + UINT8 Iter = 0; + UINT32 BlockMemorySize = MAX_GHES * + (sizeof (UINT64) + NumOfBlockPerGhes * GENERIC_HARDWARE_ERROR_BLOCK_SIZE); + UINT32 ErrorSeverityArray[MAX_GHES] = { + EFI_ACPI_6_2_ERROR_SEVERITY_CORRECTABLE, + EFI_ACPI_6_2_ERROR_SEVERITY_FATAL, + EFI_ACPI_6_2_ERROR_SEVERITY_CORRECTED}; + VOID *ErrorBlockHead; + VOID *ErrorBlock; + VOID *BlockMemory; + UINT64 *ptrBlockAddress; + EFI_STATUS Status = EFI_SUCCESS; + Status = gBS->AllocatePool ( + EfiReservedMemoryType, + BlockMemorySize, + &BlockMemory + ); + if (EFI_ERROR (Status)) { + return Status; + } + gBS->SetMem (BlockMemory, BlockMemorySize, 0); + ptrBlockAddress = BlockMemory; + ErrorBlockHead = BlockMemory + MAX_GHES * sizeof (UINT64); + ErrorBlock = ErrorBlockHead; + for (Iter = 0; Iter < MAX_GHES; Iter++) { + GhesV1Initial (&GhesV1[Iter], GENERIC_HARDWARE_ERROR_BLOCK_SIZE); + GhesV1AddNotification (&GhesV1[Iter], EFI_ACPI_6_1_HARDWARE_ERROR_NOTIFICATION_GSIV); + ErrorBlockInitial (ErrorBlock, ErrorSeverityArray[Iter]); + GhesV1LinkErrorBlock (&GhesV1[Iter], &ptrBlockAddress[Iter], ErrorBlock); + ErrorBlock += GhesV1[Iter].ErrorStatusBlockLength; + } + return EFI_SUCCESS; +} + +VOID +OemHestInitialNotification () +{ + // GPIO init + // use int_msk to simulate + UINTN Base = IOMUX_REG_BASE; + //GPIO9, in document 'PhosphorV680 Totemiomux' iomg051, + //Set GPIO9 to pad_ex_int1 + MmioWrite32 (Base + IOMG051, PAD_EX_INT1); + return; +} + +VOID +OemEinjInitialNotification () +{ + UINTN Base = IOMUX_REG_BASE; + //use TB_GPIO_PIN10 for EINJ + MmioWrite32 (Base + IOMG052, PAD_EX_INT1); + return; +} + +EFI_STATUS +OemInitHestTable ( + IN EFI_HANDLE ImageHandle +) +{ + EFI_STATUS Status = EFI_SUCCESS; + HEST_CONTEXT HestContext; + EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_VERSION_2_STRUCTURE GhesV2[MAX_GHES]; + Status = HestHeaderCreator (&HestContext, HEST_TABLE_SIZE); + if (EFI_ERROR (Status)) { + return Status; + } + Status = GhesV2ContextForHest(GhesV2, MAX_GHES); + if (EFI_ERROR (Status)) { + return Status; + } + Status |= HestAddErrorSourceDescriptor ( + &HestContext, + &GhesV2[0], + sizeof (EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_VERSION_2_STRUCTURE) + ); + mApeiTrustedfirmwareData->HestRecoverableErrorGhesV2 = HestContext.KeyErrorSource; + Status |= HestAddErrorSourceDescriptor ( + &HestContext, + &GhesV2[1], + sizeof (EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_VERSION_2_STRUCTURE) + ); + mApeiTrustedfirmwareData->HestFatalErrorGhesV2 = HestContext.KeyErrorSource; + Status |= HestAddErrorSourceDescriptor ( + &HestContext, + &GhesV2[2], + sizeof (EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_VERSION_2_STRUCTURE) + ); + mApeiTrustedfirmwareData->HestCorrectedErrorGhesV2 = HestContext.KeyErrorSource; + OemHestInitialNotification (); + HestSetAcpiTable (&HestContext); + return Status; +} +/************************************************ +*************** BERT *************** +************************************************/ + +EFI_STATUS +OemInitBertTable ( + IN EFI_HANDLE ImageHandle +) +{ + BERT_CONTEXT Context; + BOOLEAN Status; + Status = BertHeaderCreator (&Context, BOOT_ERROR_REGION_SIZE); + if (EFI_ERROR (Status)) { + return Status; + } + ErrorBlockInitial (Context.Block, EFI_ACPI_6_2_ERROR_SEVERITY_NONE); + BertSetAcpiTable (&Context); + DEBUG ((DEBUG_INFO, "[%a]:[%dL]: %r\n", __FUNCTION__, __LINE__, Status)); + return EFI_SUCCESS; +} +/************************************************ +*************** EINJ *************** +************************************************/ +EFI_STATUS +OemEinjConfigExecuteOperationEntry ( + EINJ_CONTEXT *Context +) +{ + EFI_ACPI_6_0_EINJ_INJECTION_INSTRUCTION_ENTRY* KeyEntry = Context->ExecuteOperationEntry; + OemEinjInitialNotification (); + //use TB_GPIO_PIN10 for EINJ + KeyEntry->RegisterRegion.Address = PcdGet64 (PcdCpldBaseAddress) + CPLD_GPIO10_INT_OFFSET; + KeyEntry->Mask = CPLD_MASK; + KeyEntry->Value = CPLD_VALUE; + return EFI_SUCCESS; +} + +EFI_STATUS +OemInitEinjTable ( +) +{ + EFI_STATUS Status; + EINJ_CONTEXT Context; + Status = EinjHeaderCreator (&Context); + if (EFI_ERROR (Status)) { + return Status; + } + (VOID)EinjConfigErrorInjectCapability (&Context, 0xFFF);// TBD + (VOID)OemEinjConfigExecuteOperationEntry (&Context); + EinjSetAcpiTable (&Context); + DEBUG ((DEBUG_INFO, "[%a]:[%dL]: %d\n", __FUNCTION__, __LINE__, Status)); + return EFI_SUCCESS; +} +/************************************************ +*************** ERST *************** +************************************************/ + +EFI_STATUS +OemErstConfigExecuteOperationEntry ( + ERST_BOOT_CONTEXT *Context +) +{ + EFI_ACPI_6_1_ERST_SERIALIZATION_INSTRUCTION_ENTRY *KeyEntry; + KeyEntry = Context->ExecuteOperationEntry; + KeyEntry->RegisterRegion.Address = GPIO1_BASE + GPIO_INT_MASK; + KeyEntry->Value = 0x10; + KeyEntry->Mask = 0xFFFFFFFF; + GpioCombInit (GPIO1_BASE, 0xFFFF); + return EFI_SUCCESS; +} + +BOOLEAN +GetNvRamRegion ( + OUT VOID **NvRamAddrRange, + OUT UINT64 *NvRamAddrRangeLength +) +{ + UINT32 Store = ERST_RECORD_STORE_IN_MEM; + switch (Store) { + case (ERST_RECORD_STORE_IN_NVRAM): + break; + case (ERST_RECORD_STORE_IN_MEM): + * NvRamAddrRangeLength = ERST_DATASTORE_SIZE; + * NvRamAddrRange = AllocateReservedZeroPool (ERST_DATASTORE_SIZE); + break; + case (ERST_RECORD_STORE_IN_SPI_FLASH): + break; + default: + ; + } + return TRUE; +} + +/***OEM***/ +EFI_STATUS +OemInitErstTable ( +) +{ + EFI_STATUS Status = ERST_STATUS_SUCCESS; + ERST_BOOT_CONTEXT Context; + UINT64 BufferSize = ERST_DATASTORE_SIZE; + VOID *NvRamAddrRange; + UINT64 NvRamAddrRangeLength; + UINT64 NvRamAllRecordLength; + + GetNvRamRegion (&NvRamAddrRange, &NvRamAddrRangeLength); + NvRamAllRecordLength = 0; + Status = ErstHeaderCreator ( + &Context, + BufferSize, + NvRamAddrRange, + NvRamAllRecordLength, + NvRamAddrRangeLength); + OemErstConfigExecuteOperationEntry (&Context); + mApeiTrustedfirmwareData->ErstContext = (VOID*)Context.Rt; + ErstSetAcpiTable (&Context); + return Status; +}; From patchwork Fri Aug 31 13:27:05 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145633 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp785001ljw; Fri, 31 Aug 2018 06:29:10 -0700 (PDT) X-Google-Smtp-Source: ANB0Vdbn8MWoyc3PASUL/Y/x5HQsr5dl5xNKCH6+SXNFnw+IwYXhCgwIGp8AT0hIQwkjM1ln3oqv X-Received: by 2002:a63:1d22:: with SMTP id d34-v6mr14638304pgd.133.1535722150051; Fri, 31 Aug 2018 06:29:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722150; cv=none; d=google.com; s=arc-20160816; b=P2TNaWyr1ph372hLMfYr2KiyITeKaAUNfrGcNVdkJQ6bonv3Gm4oS8umlWwzu5PgZO 5HaVGBwVm5r1QbsTaL8fS+vqx9M3s6hWjMwgFqlQxRGSGIXWEqNLDm4mDKxD3UmwF3yA T9HtnfwZsxy5tsniwo5zwF2okCQR2TuYM34NqLhwV/hdlfLrgKXTNjze8Yg6QvyTJyiJ sZ5S1eOJfL/nTMtOQaviQ6n+4u09Zxy4MdTIADVvgI/Tlf8TZvQIuhJIOpGqjI+/b6Oj POw1XLsgdAj8AmDz+f+58cQ8cmlEvRgP83yN5Bx0CrM7u15Mn6d2rDy+egijky+duBjE /zyg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=9seeZ3ighL8ASKoniLUFqK8ow+wYKDWQus0T+vKTqGk=; b=v0f+l9BpyK3n3WHd9tcfbVBdJErSiXkzK1WYaDIKR3dl+K2yPsG4soJt2KZcO6CwEI 83dnnDuNBI6ov7KK4xsKJGGO+ciqXW4c1M+vwWFXLEH40jhsY9dAR/sEKK3WQiE3gft3 d3TmHp/96f3RQU+zGUsEv++pthZQHFWmArgUM8TajanR5TOOmGxusuWsuEPwG1vZncXI DhXj8uPQCwOTwrnnqJV0/forROoSs1LvTdlh8lHvmFt9shl6kBJgTWVA3somEICnGx7w AKZwju9AJiphrCqKfrwi1/bNm9IWSkdS8w+uQaC6guwcogQ4Pbj/NVkr5M1PHh4K8bpE 20Xw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=GxenvESk; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id m12-v6si9285275plt.212.2018.08.31.06.29.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:29:10 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=GxenvESk; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id DEC192110BD76; Fri, 31 Aug 2018 06:28:48 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::642; helo=mail-pl1-x642.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pl1-x642.google.com (mail-pl1-x642.google.com [IPv6:2607:f8b0:4864:20::642]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id AD6FD2110BD73 for ; Fri, 31 Aug 2018 06:28:47 -0700 (PDT) Received: by mail-pl1-x642.google.com with SMTP id b92-v6so459707plb.0 for ; Fri, 31 Aug 2018 06:28:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ND03YTLZPzgfS13snuU9d5aJGKPCt2+jmNZYiv2M/Mc=; b=GxenvESkZAvaGa9x6wkzJNXNLDg+6UXAnnAlkCA0PaXJLIuZWBWqf8Tz6YdPDT4dq3 hwY4gjzFrGhqe0VPhnA7+7RnwoMUdnSknVliF6sZJSfjJNRvbndd+7DAQN9Lhol0Fdt5 AwWz2VahQIT7MXRry5Zu/K+qZC9yb82tsePgM= 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=ND03YTLZPzgfS13snuU9d5aJGKPCt2+jmNZYiv2M/Mc=; b=TWwlbTS8qRRPxGr1WMruucZOhQaYqLnagEsjS93HsF+7/q5cbAByzy1ND6HXYUjts0 WBKmmtx4BJzrsdkk5//9MNGxLdsP9u3uqtDjEdgApFjJSZ4rYZZgHxXHIjX/p29R7j2B CrQilDN+CAHtZB4Qb8BNGb6tym1X4U1P7sdeVy6LkVQndeteKQPrFTNySIbH8X8aMedm dyUVDLFprW/haXDOwCLztXuXYJdHsoLaPEffrcjhVfFEBNK6VnmVm/TBkmosDL3HsO9/ BkYrQ87hBxlTUVugFQHM9yF23l+X0tFiLP4uR1vy7yzcObeY1iWoGsdmFOfW8k1/SmFK J13w== X-Gm-Message-State: APzg51DRsTs7s10CI3P/X3oTOKItKvun4XNm5t4Ek6FzJfvbgVP84jMA /aStB2gnETX/ZdJK0WRkzEO6Zw== X-Received: by 2002:a17:902:3fa5:: with SMTP id a34-v6mr11443419pld.244.1535722127135; Fri, 31 Aug 2018 06:28:47 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.28.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:28:46 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:27:05 +0800 Message-Id: <20180831132710.23055-24-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 23/28] Platform/Hisilicon/D06: Add capsule upgrade support X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" This module support updating the boot CPU firmware only. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang Reviewed-by: Leif Lindholm Reviewed-by: Ard Biesheuvel --- Platform/Hisilicon/D06/D06.dsc | 14 ++++ Platform/Hisilicon/D06/D06.fdf | 71 +++++++++++++++++ Platform/Hisilicon/D06/Drivers/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf | 50 ++++++++++++ Platform/Hisilicon/D06/Drivers/SystemFirmwareDescriptor/SystemFirmwareDescriptorPei.c | 70 +++++++++++++++++ Platform/Hisilicon/D06/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfig.ini | 46 +++++++++++ Platform/Hisilicon/D06/Drivers/SystemFirmwareDescriptor/SystemFirmwareDescriptor.aslc | 81 ++++++++++++++++++++ 6 files changed, 332 insertions(+) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index e4d07d0bc7..053ea894d5 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -122,6 +122,11 @@ gHisiTokenSpaceGuid.PcdIsItsSupported|TRUE gArmTokenSpaceGuid.PcdArmGicV3WithV2Legacy|FALSE gEfiMdeModulePkgTokenSpaceGuid.PcdHiiOsRuntimeSupport|FALSE +[PcdsDynamicExDefault.common.DEFAULT] + gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareImageDescriptor|{0x0}|VOID*|0x100 + gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{0x29, 0x3d, 0x4b, 0xd3, 0x85, 0x00, 0xb3, 0x4a, 0x8b, 0xe8, 0x84, 0x18, 0x8c, 0xc5, 0x04, 0x89} + gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareFileGuid|{0xcf, 0x4f, 0x2e, 0x64, 0xf7, 0x2d, 0x15, 0x44, 0x8b, 0x70, 0xa0, 0x39, 0x09, 0xc5, 0x7b, 0x55} + [PcdsFixedAtBuild.common] gArmPlatformTokenSpaceGuid.PcdCoreCount|48 @@ -267,6 +272,7 @@ Platform/Hisilicon/D06/EarlyConfigPeim/EarlyConfigPeimD06.inf Silicon/Hisilicon/Drivers/VersionInfoPeim/VersionInfoPeim.inf + Platform/Hisilicon/D06/Drivers/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf { NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf @@ -387,6 +393,8 @@ MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf + SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareReportDxe.inf + MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf # # FAT filesystem + GPT/MBR partitioning # @@ -435,6 +443,12 @@ MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf MdeModulePkg/Universal/BdsDxe/BdsDxe.inf + SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareUpdateDxe.inf { + + FmpAuthenticationLib|SecurityPkg/Library/FmpAuthenticationLibPkcs7/FmpAuthenticationLibPkcs7.inf + } + + MdeModulePkg/Application/CapsuleApp/CapsuleApp.inf # # UEFI application (Shell Embedded Boot Loader) diff --git a/Platform/Hisilicon/D06/D06.fdf b/Platform/Hisilicon/D06/D06.fdf index 3b9a132aa0..7f30263211 100644 --- a/Platform/Hisilicon/D06/D06.fdf +++ b/Platform/Hisilicon/D06/D06.fdf @@ -304,6 +304,9 @@ READ_LOCK_STATUS = TRUE INF MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf INF Silicon/Hisilicon/Hi1620/Drivers/Pl011DebugSerialPortInitDxe/Pl011DebugSerialPortInitDxe.inf + INF SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareReportDxe.inf + INF MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf + # # Build Shell from latest source code instead of prebuilt binary # @@ -359,11 +362,79 @@ READ_LOCK_STATUS = TRUE INF MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf + INF RuleOverride = FMP_IMAGE_DESC Platform/Hisilicon/D06/Drivers/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 { SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF PROCESSING_REQUIRED = TRUE { SECTION FV_IMAGE = FVMAIN } } +[FV.CapsuleDispatchFv] +FvAlignment = 16 +ERASE_POLARITY = 1 +MEMORY_MAPPED = TRUE +STICKY_WRITE = TRUE +LOCK_CAP = TRUE +LOCK_STATUS = TRUE +WRITE_DISABLED_CAP = TRUE +WRITE_ENABLED_CAP = TRUE +WRITE_STATUS = TRUE +WRITE_LOCK_CAP = TRUE +WRITE_LOCK_STATUS = TRUE +READ_DISABLED_CAP = TRUE +READ_ENABLED_CAP = TRUE +READ_STATUS = TRUE +READ_LOCK_CAP = TRUE +READ_LOCK_STATUS = TRUE + + INF SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareUpdateDxe.inf + +[FV.SystemFirmwareUpdateCargo] +FvAlignment = 16 +ERASE_POLARITY = 1 +MEMORY_MAPPED = TRUE +STICKY_WRITE = TRUE +LOCK_CAP = TRUE +LOCK_STATUS = TRUE +WRITE_DISABLED_CAP = TRUE +WRITE_ENABLED_CAP = TRUE +WRITE_STATUS = TRUE +WRITE_LOCK_CAP = TRUE +WRITE_LOCK_STATUS = TRUE +READ_DISABLED_CAP = TRUE +READ_ENABLED_CAP = TRUE +READ_STATUS = TRUE +READ_LOCK_CAP = TRUE +READ_LOCK_STATUS = TRUE + + FILE RAW = 642e4fcf-2df7-4415-8b70-a03909c57b55 { # PcdEdkiiSystemFirmwareFileGuid + FD = D06 + } + + FILE RAW = ce57b167-b0e4-41e8-a897-5f4feb781d40 { # gEdkiiSystemFmpCapsuleDriverFvFileGuid + FV = CapsuleDispatchFv + } + + FILE RAW = 812136D3-4D3A-433A-9418-29BB9BF78F6E { # gEdkiiSystemFmpCapsuleConfigFileGuid + Platform/Hisilicon/D06/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfig.ini + } + +[FmpPayload.FmpPayloadSystemFirmwarePkcs7] +IMAGE_HEADER_INIT_VERSION = 0x02 +IMAGE_TYPE_ID = df8fe8d1-e937-45b8-9691-c4b5e183874e # PcdSystemFmpCapsuleImageTypeIdGuid +IMAGE_INDEX = 0x1 +HARDWARE_INSTANCE = 0x0 +MONOTONIC_COUNT = 0x1 +CERTIFICATE_GUID = 4AAFD29D-68DF-49EE-8AA9-347D375665A7 # PKCS7 + + FV = SystemFirmwareUpdateCargo + +[Capsule.D06FirmwareUpdateCapsuleFmpPkcs7] +CAPSULE_GUID = 6dcbd5ed-e82d-4c44-bda1-7194199ad92a # gEfiFmpCapsuleGuid +CAPSULE_HEADER_SIZE = 0x20 +CAPSULE_HEADER_INIT_VERSION = 0x1 + + FMP_PAYLOAD = FmpPayloadSystemFirmwarePkcs7 + !include Silicon/Hisilicon/Hisilicon.fdf.inc diff --git a/Platform/Hisilicon/D06/Drivers/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf b/Platform/Hisilicon/D06/Drivers/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf new file mode 100644 index 0000000000..fc1832fa5f --- /dev/null +++ b/Platform/Hisilicon/D06/Drivers/SystemFirmwareDescriptor/SystemFirmwareDescriptor.inf @@ -0,0 +1,50 @@ +## @file +# System Firmware descriptor. +# +# Copyright (c) 2018, Hisilicon Limited. All rights reserved. +# Copyright (c) 2018, Linaro Limited. All rights reserved. +# Copyright (c) 2016, Intel Corporation. All rights reserved.
+# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +## + +[Defines] + INF_VERSION = 0x0001001A + BASE_NAME = SystemFirmwareDescriptor + FILE_GUID = 90B2B846-CA6D-4D6E-A8D3-C140A8E110AC + MODULE_TYPE = PEIM + VERSION_STRING = 1.0 + ENTRY_POINT = SystemFirmwareDescriptorPeimEntry + +[Sources] + SystemFirmwareDescriptorPei.c + SystemFirmwareDescriptor.aslc + +[Packages] + ArmPkg/ArmPkg.dec + ArmPlatformPkg/ArmPlatformPkg.dec + MdeModulePkg/MdeModulePkg.dec + MdePkg/MdePkg.dec + SignedCapsulePkg/SignedCapsulePkg.dec + +[LibraryClasses] + DebugLib + PcdLib + PeimEntryPoint + PeiServicesLib + +[FixedPcd] + gArmTokenSpaceGuid.PcdFdSize + +[Pcd] + gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareImageDescriptor + +[Depex] + TRUE diff --git a/Platform/Hisilicon/D06/Drivers/SystemFirmwareDescriptor/SystemFirmwareDescriptorPei.c b/Platform/Hisilicon/D06/Drivers/SystemFirmwareDescriptor/SystemFirmwareDescriptorPei.c new file mode 100644 index 0000000000..27c0a718f8 --- /dev/null +++ b/Platform/Hisilicon/D06/Drivers/SystemFirmwareDescriptor/SystemFirmwareDescriptorPei.c @@ -0,0 +1,70 @@ +/** @file + System Firmware descriptor producer. + + Copyright (c) 2018, Hisilicon Limited. All rights reserved. + Copyright (c) 2018, Linaro Limited. All rights reserved. + Copyright (c) 2016, Intel Corporation. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#include +#include +#include +#include +#include +#include + +/** + Entrypoint for SystemFirmwareDescriptor PEIM. + + @param[in] FileHandle Handle of the file being invoked. + @param[in] PeiServices Describes the list of possible PEI Services. + + @retval EFI_SUCCESS PPI successfully installed. +**/ +EFI_STATUS +EFIAPI +SystemFirmwareDescriptorPeimEntry ( + IN EFI_PEI_FILE_HANDLE FileHandle, + IN CONST EFI_PEI_SERVICES **PeiServices + ) +{ + EFI_STATUS Status; + EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR *Descriptor; + UINTN Size; + UINTN Index; + UINT32 AuthenticationStatus; + + // + // Search RAW section. + // + + Index = 0; + while (TRUE) { + Status = PeiServicesFfsFindSectionData3 (EFI_SECTION_RAW, Index, FileHandle, (VOID **)&Descriptor, &AuthenticationStatus); + if (EFI_ERROR (Status)) { + // Should not happen, must something wrong in FDF. + DEBUG ((DEBUG_ERROR, "Not found SystemFirmwareDescriptor in fdf !\n")); + return EFI_NOT_FOUND; + } + if (Descriptor->Signature == EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR_SIGNATURE) { + break; + } + Index++; + } + + DEBUG ((DEBUG_INFO, "EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR size - 0x%x\n", Descriptor->Length)); + + Size = Descriptor->Length; + PcdSetPtrS (PcdEdkiiSystemFirmwareImageDescriptor, &Size, Descriptor); + + return EFI_SUCCESS; +} diff --git a/Platform/Hisilicon/D06/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfig.ini b/Platform/Hisilicon/D06/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfig.ini new file mode 100644 index 0000000000..80f253b235 --- /dev/null +++ b/Platform/Hisilicon/D06/Capsule/SystemFirmwareUpdateConfig/SystemFirmwareUpdateConfig.ini @@ -0,0 +1,46 @@ +# +# Copyright (c) 2018, Hisilicon Limited. All rights reserved. +# Copyright (c) 2018, Linaro Limited. All rights reserved. +# Copyright (c) 2016, Intel Corporation. All rights reserved.
+# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +## + +[Head] +NumOfUpdate = 3 +NumOfRecovery = 0 +Update0 = SysFvMain +Update1 = SysCustom +Update2 = SysNvRam + +[SysFvMain] +FirmwareType = 0 # 0 - SystemFirmware, 1 - NvRam +AddressType = 0 # 0 - relative address, 1 - absolute address. +BaseAddress = 0x00000000 # Base address offset on flash +Length = 0x003C0000 # Length +ImageOffset = 0x00000000 # Image offset of this SystemFirmware image +FileGuid = 642e4fcf-2df7-4415-8b70-a03909c57b55 # PcdEdkiiSystemFirmwareFileGuid + +[SysCustom] +FirmwareType = 0 # 0 - SystemFirmware, 1 - NvRam +AddressType = 0 # 0 - relative address, 1 - absolute address. +BaseAddress = 0x003F0000 # Base address offset on flash +Length = 0x00010000 # Length +ImageOffset = 0x003F0000 # Image offset of this SystemFirmware image +FileGuid = 642e4fcf-2df7-4415-8b70-a03909c57b55 # PcdEdkiiSystemFirmwareFileGuid + +[SysNvRam] +FirmwareType = 1 # 0 - SystemFirmware, 1 - NvRam +AddressType = 0 # 0 - relative address, 1 - absolute address. +BaseAddress = 0x003C0000 # Base address offset on flash +Length = 0x00020000 # Length +ImageOffset = 0x003C0000 # Image offset of this SystemFirmware image +FileGuid = 642e4fcf-2df7-4415-8b70-a03909c57b55 # PcdEdkiiSystemFirmwareFileGuid + diff --git a/Platform/Hisilicon/D06/Drivers/SystemFirmwareDescriptor/SystemFirmwareDescriptor.aslc b/Platform/Hisilicon/D06/Drivers/SystemFirmwareDescriptor/SystemFirmwareDescriptor.aslc new file mode 100644 index 0000000000..36175338dd --- /dev/null +++ b/Platform/Hisilicon/D06/Drivers/SystemFirmwareDescriptor/SystemFirmwareDescriptor.aslc @@ -0,0 +1,81 @@ +/** @file + System Firmware descriptor. + + Copyright (c) 2018, Hisilicon Limited. All rights reserved. + Copyright (c) 2018, Linaro Limited. All rights reserved. + Copyright (c) 2016, Intel Corporation. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#include +#include +#include + +#define PACKAGE_VERSION 0xFFFFFFFF +#define PACKAGE_VERSION_STRING L"Unknown" + +#define CURRENT_FIRMWARE_VERSION 0x00000002 +#define CURRENT_FIRMWARE_VERSION_STRING L"0x00000002" +#define LOWEST_SUPPORTED_FIRMWARE_VERSION 0x00000001 + +#define IMAGE_ID SIGNATURE_64('H','W','A', 'R', 'M', '_', 'F', 'd') +#define IMAGE_ID_STRING L"ARMPlatformFd" + +// PcdSystemFmpCapsuleImageTypeIdGuid +#define IMAGE_TYPE_ID_GUID { 0xdf8fe8d1, 0xe937, 0x45b8, { 0x96, 0x91, 0xc4, 0xb5, 0xe1, 0x83, 0x87, 0x4e } } + +typedef struct { + EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR Descriptor; + // real string data + CHAR16 ImageIdNameStr[ARRAY_SIZE (IMAGE_ID_STRING)]; + CHAR16 VersionNameStr[ARRAY_SIZE (CURRENT_FIRMWARE_VERSION_STRING)]; + CHAR16 PackageVersionNameStr[ARRAY_SIZE (PACKAGE_VERSION_STRING)]; +} IMAGE_DESCRIPTOR; + +IMAGE_DESCRIPTOR mImageDescriptor = +{ + { + EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR_SIGNATURE, + sizeof (EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR), + sizeof (IMAGE_DESCRIPTOR), + PACKAGE_VERSION, // PackageVersion + OFFSET_OF (IMAGE_DESCRIPTOR, PackageVersionNameStr), // PackageVersionName + 1, // ImageIndex; + {0x0}, // Reserved + IMAGE_TYPE_ID_GUID, // ImageTypeId; + IMAGE_ID, // ImageId; + OFFSET_OF (IMAGE_DESCRIPTOR, ImageIdNameStr), // ImageIdName; + CURRENT_FIRMWARE_VERSION, // Version; + OFFSET_OF (IMAGE_DESCRIPTOR, VersionNameStr), // VersionName; + {0x0}, // Reserved2 + FixedPcdGet32 (PcdFdSize), // Size; + IMAGE_ATTRIBUTE_IMAGE_UPDATABLE | + IMAGE_ATTRIBUTE_RESET_REQUIRED | + IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED | + IMAGE_ATTRIBUTE_IN_USE, // AttributesSupported; + IMAGE_ATTRIBUTE_IMAGE_UPDATABLE | + IMAGE_ATTRIBUTE_RESET_REQUIRED | + IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED | + IMAGE_ATTRIBUTE_IN_USE, // AttributesSetting; + 0x0, // Compatibilities; + LOWEST_SUPPORTED_FIRMWARE_VERSION, // LowestSupportedImageVersion; + 0x00000000, // LastAttemptVersion; + 0, // LastAttemptStatus; + {0x0}, // Reserved3 + 0, // HardwareInstance; + }, + // real string data + {IMAGE_ID_STRING}, + {CURRENT_FIRMWARE_VERSION_STRING}, + {PACKAGE_VERSION_STRING}, +}; + +VOID* CONST ReferenceAcpiTable = &mImageDescriptor; From patchwork Fri Aug 31 13:27:06 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145634 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp785106ljw; Fri, 31 Aug 2018 06:29:16 -0700 (PDT) X-Google-Smtp-Source: ANB0VdbKr5zBIqc3IvZZbugORuncJwmkRjy0lnRuvm3Qq47qw0nVWb7zpIedGw7ucQY/JCL5Qkze X-Received: by 2002:a63:5a65:: with SMTP id k37-v6mr14296850pgm.143.1535722156165; Fri, 31 Aug 2018 06:29:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722156; cv=none; d=google.com; s=arc-20160816; b=KXkT/BryrWBtCJdMVL2PnmsUJj61HHXdHR7o1mqHywtJm2awl7Sa6aOyUdmGO65FJ9 VOoLswGB3APftUcfHEB7JtmieWYCLjLawucCKNYwL32xzPxiV0YUUlB1LudCfpBK3BS3 qOZnqVWB2phoEuU37fX2p2oaQGgky5ATwQiK0f59gUp7Q54LgMBu4cXEighzDquq0lZP 7ZrNkE27xEf/R1CXkxlp/1Dk5raqiwLMEnMpCxXooy7RTMa7+o3bIjIafCmXs+GP2FWq uDeTYRdJTnAzYhbq38EcNEUZlyH0fo7TfDWq6aFnaUGnY/p6N5nyHfUnRNkzTknjUexA sTAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=00l8NOAYDaAHqDZxBzH2B+IWEPqqnYz0oojn0NzakBk=; b=LN6wiZQUXM6lxomvvnX6mM0Vjy4DJShc6090DNdyQHoxY8bttkkC9dCzKbm1NasFFi Ek0OT6hQThHjMBco41UdC9lCAN2JvuOxvDqTopjdJVZAkoSji9QO4vKIP5PmvmAlPjTU dBoe7zQ6QWgKF6m4+BX6T9HnwrZBO1M0SLSjPQYifyY9Gv0JBksGZ9Uh6eb3t7cJFX9d kdbuevA8ncbHfJVY+Lkl94RBhL3CRcrpbwiCn3g9ctTGwNc8QXWPtd4MAqo5rNZkBlgM qayoFjKi8bzdDqZ32ctwFY8IHNQ703rvDz+Hx5nwAaILnU3pC0mVUq8W8sLarW+gqRAX oF9w== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b="R/PzE4ai"; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id q67-v6si9183867pga.63.2018.08.31.06.29.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:29:16 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b="R/PzE4ai"; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 18B732110BFCA; Fri, 31 Aug 2018 06:28:52 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::441; helo=mail-pf1-x441.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pf1-x441.google.com (mail-pf1-x441.google.com [IPv6:2607:f8b0:4864:20::441]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 0EF7B2110BD60 for ; Fri, 31 Aug 2018 06:28:51 -0700 (PDT) Received: by mail-pf1-x441.google.com with SMTP id l9-v6so5526509pff.9 for ; Fri, 31 Aug 2018 06:28:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=OTxkHl2npsSm4G4EJpqBUocYs0V2eNVIN7CSkoSyeOM=; b=R/PzE4aiPJOYO9RnIrnnAARMX/ZivYOfV0xmD55BdJT1TURGK6NYZqK1d7oxEe9cwR sLFv7hPkCvqYllrMe8mfeeZjKcluC60ofyaAgQ/3s84ljZyVw3J0m13yr8vBFdFDq83Q xj9uSBgBQzMX8YijWsRcI9oo6XvBXJYGt+DmI= 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=OTxkHl2npsSm4G4EJpqBUocYs0V2eNVIN7CSkoSyeOM=; b=Bk53f25yKhzs9Ma7t1GpTzoggBAFF0WIURKZusQ9UK9A8RdE4ymNnyqgIybp68np2C +DZki05jyYWiTHR9sTYdt6x4Rr34O/Ln0qx9P4/fO2nEcroru2NYUXscHj00f6lVt3xS pt9HkbCMf+HB7CsZY/PFnmwsXml/nFws14zVoDJD6IBN9n6rDtJG9cH8n56GuKFaKTeV T67HMDVM89CzqnCXrKMGY7KgugqsG8I1cLgLVq5VgwUAoKSUxpaRSip4g/Vu6FJSqKbo 8YgvdGhPVnT8FpgHGCAa5PHEV37c1SwmwZYOyIo1U503g4Q5JQtva8IAaPvvHGZzUtPP c7yA== X-Gm-Message-State: APzg51AOqfoy2HJ6LjveMxG9wQx2ZPiv5wuIyA/VZF0IVMBTKAhzVpG5 oBee9tXlDzu1EWbpocJUoexDmw== X-Received: by 2002:a63:9a19:: with SMTP id o25-v6mr14768646pge.39.1535722130779; Fri, 31 Aug 2018 06:28:50 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.28.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:28:50 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:27:06 +0800 Message-Id: <20180831132710.23055-25-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 24/28] Silicon/Hisilicon: Modify for disable slave core clock. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, ZhenYao , wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" From: ZhenYao When BIOS booting, the power consumption is too high, so need disable some clusters clock that don't work to reduce power consumption. The implementation of functions is in edk2-non-osi. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang --- Silicon/Hisilicon/Include/Library/PlatformSysCtrlLib.h | 3 +++ 1 file changed, 3 insertions(+) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Silicon/Hisilicon/Include/Library/PlatformSysCtrlLib.h b/Silicon/Hisilicon/Include/Library/PlatformSysCtrlLib.h index ec2b9a36e7..3ccfc6bee3 100644 --- a/Silicon/Hisilicon/Include/Library/PlatformSysCtrlLib.h +++ b/Silicon/Hisilicon/Include/Library/PlatformSysCtrlLib.h @@ -102,5 +102,8 @@ VOID PlatformEventBroadcastConfig(VOID); UINTN GetDjtagRegBase(UINT32 NodeId); VOID LlcCleanInvalidateAsm(VOID); VOID PlatformMdioInit(VOID); +VOID DisableClusterClock(UINTN CpuClusterBase); +VOID EnableClusterClock(UINTN CpuClusterBase); +VOID DisableSocketClock (UINT8 Skt); #endif From patchwork Fri Aug 31 13:27:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145635 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp785187ljw; Fri, 31 Aug 2018 06:29:20 -0700 (PDT) X-Google-Smtp-Source: ANB0VdaV3ILw9/5qviv5f55yQopMbKkGvpFpTuz9na54bWUy7M0Fk4NiNt8c83k9V8gAb97VuS3b X-Received: by 2002:a63:5b63:: with SMTP id l35-v6mr14511963pgm.50.1535722160569; Fri, 31 Aug 2018 06:29:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722160; cv=none; d=google.com; s=arc-20160816; b=mNpmRnVxLC/1DctxAzw6GAQCDXNB+jIzlxfSZ0mAr7tZeye8iTYE00fVhA/hi+eMr/ bYql4kk0xXjDOlXdBUZmqJ1B6usNjnBrE8Ltv114gOn/lxCK3kBFYcXwVpwnk4MCykq4 GALbo+kUrG8eKyqbt0dkpswkNDTL/t8gcexMiNRY2uSidnAhU8u+9MG8Rnbne+V/i0Ry lxntkHAY7eNKw0SlTCgeEOX7P4rwyYFCmACKt4xfsGrfKuRHSiNXQcbZBR1FAQBwlm+4 0AlwpeqRnFids3WcusKhEvwvesqcIQobx8+rm7OAjzOAFx7E1SRCluI2HJ5MnVyFzTmH QU2Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=63eLxo4ZLBI5N3vI/gFucaZfFF+PmOYtXtHAyhqbbrI=; b=bBir7PnrJzO/dOCBHpNywoPlYx9SN9jbBCtydpanGBU4ha8X63XVzqjEO0KxFTGm8l pdbtYCjKuNf9fskcyVtSG7hNIZUCqQMSaZxP7MzGM0QnOjaKLQ7OoRZ+bMRH5gJ85Y4H vVdmTufm3bjCtfveUunqEffQ6nWNVBnS5Z6GxM/BVQjm+dhVblgJrYb5uGXn3RMVdniy nkSVhgg3M2n6EKraRzuSSSw2abwhrnlrp89lANEf2WojTDzpzG0PZt5XVefFsYepay2j sLx9avYY3HLuszDPv8KpkjS/FQbekmvzk8lsYjyJpIpdPwL0S2IFiH2sOkq0sNziwzA/ 1GYg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=Iw7JbrHA; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id o5-v6si9401633pgo.250.2018.08.31.06.29.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:29:20 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=Iw7JbrHA; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 455A32110BD78; Fri, 31 Aug 2018 06:28:56 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::42f; helo=mail-pf1-x42f.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pf1-x42f.google.com (mail-pf1-x42f.google.com [IPv6:2607:f8b0:4864:20::42f]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 975612110BD68 for ; Fri, 31 Aug 2018 06:28:54 -0700 (PDT) Received: by mail-pf1-x42f.google.com with SMTP id x17-v6so5536183pfh.5 for ; Fri, 31 Aug 2018 06:28:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=AUkxwPojircRj7QamPyy7BiiH3Cj4V/KyOnceErQlQw=; b=Iw7JbrHAHXQX/72bRYNMInvTY4lvvc7/0AHms0vdqbzlLnV9nwciD6D9AVRwFpu2F0 ZcbGDxwKnNNA7xE6w9P8OdzWVdjj5RQZdIYDwHmAW1wl73l7U67vs2qOankylBRJRjZJ Y+9DsfLg8MsoCe5Cl14a5ZHPSOgZc8tSmOVI0= 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=AUkxwPojircRj7QamPyy7BiiH3Cj4V/KyOnceErQlQw=; b=lnrYPtOL3/ClRTDFRjbExdjyVpBAd3lBuuyXqv7BeTPlVXT+LCyDhIqwwrhxEnGChz jo4jfdg8RSHla04b+jjRzUiH8yRciGL+bEXUTMj1YwRjtwLlQ4BXSPlgwqfI9Oj2aD5L sHZaB0Nl7gY758c9MAMZUqAQSfZjPzOHibRJ9VwA9wkLVfHqIo7SJ9x2C8P1/07dKgss JdG8laIWISVK7PTJSnraJXQ+hkA0K+svt+mup5TfiEGxq2CI+y5A8QiFPxZaT4yX4A6j vHKqDwJ/US47r8OnsNorslcpyFpNpLvFwiDubRP1J4RxGx4rjzIb7Q41cQluE/FiN0/5 T5cg== X-Gm-Message-State: APzg51BQjSKAc2VyIaAQOazfw9UtCkZcjqGWXb9yC5BNRnAQzGUsgoab I8EKMlQFcxqeg7UeE3yicU1Kbw== X-Received: by 2002:a65:614a:: with SMTP id o10-v6mr14530849pgv.387.1535722134309; Fri, 31 Aug 2018 06:28:54 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.28.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:28:53 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:27:07 +0800 Message-Id: <20180831132710.23055-26-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 25/28] Silicon/Hisilicon: Add I2C Bus Exception handle function X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" During the period of I2c accessing, if the board is reset unexpectedly, and because the I2c client can not reset, the SDA will be always pull down, then it cause I2C bus Exception. Follow the Hi1620 I2C FS chapter 1.8.2 design, add I2C Bus Exception handle function. It will Config SCL and SDA to GPIO, and set the reversal frequency of SCL to 10KHz. The implementation of functions is in edk2-non-osi. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang Reviewed-by: Leif Lindholm --- Silicon/Hisilicon/Include/Library/PlatformSysCtrlLib.h | 3 +++ 1 file changed, 3 insertions(+) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Silicon/Hisilicon/Include/Library/PlatformSysCtrlLib.h b/Silicon/Hisilicon/Include/Library/PlatformSysCtrlLib.h index 3ccfc6bee3..a232e52ed7 100644 --- a/Silicon/Hisilicon/Include/Library/PlatformSysCtrlLib.h +++ b/Silicon/Hisilicon/Include/Library/PlatformSysCtrlLib.h @@ -106,4 +106,7 @@ VOID DisableClusterClock(UINTN CpuClusterBase); VOID EnableClusterClock(UINTN CpuClusterBase); VOID DisableSocketClock (UINT8 Skt); +EFI_STATUS EFIAPI HandleI2CException (UINT32 Socket, UINT32 Port); +EFI_STATUS EFIAPI HandleI2CExceptionBySocket (UINT32 Socket); + #endif From patchwork Fri Aug 31 13:27:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145637 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp785271ljw; Fri, 31 Aug 2018 06:29:24 -0700 (PDT) X-Google-Smtp-Source: ANB0VdaggUgFARgPNx/owvx56AHagPM7svB+FKNzyQCmY0+E68DedhH5+7TBmsvwOzibREUYG3zn X-Received: by 2002:a62:ce81:: with SMTP id y123-v6mr12563252pfg.140.1535722164588; Fri, 31 Aug 2018 06:29:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722164; cv=none; d=google.com; s=arc-20160816; b=vG/IQI7JV25rfkatUQ8hCw29aK9NhzC5YhvngsiO9UqF11wRa4zxgB6tZdsdcXNdxr Bnsp+b0NWvXQa5EHKVra8T+R/8Df4F5NbV2nyurP4L2bmXBMDbG7HojcsWCx/+kagDmG gQEkJ5WTzjrfV1fSOnOVliRczofIcJj4QvSm4uFENWILpVug/aUaqdAohnllNtZ9vBE2 zO5zJFuTwlzQxfP58BIMix86QnFCl6x0wC154RPv6Hya3oNRBncEWX19L1i7dlJgz184 tVlFATq8Si9Lm9iElkQ2ry0Z1dE3EgaN/xl8Wtlri7w7Uo5pDJeHXodZhvL5fkcIpVPo qFug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=YqgIeYUySBHG+iU6Ky8qAE7ip7GhloGwAYCvWaavmuQ=; b=PsFKzFVPQs6JMUHgIzQc7dWRo9cEfDGxzyUc6fMLeUxiCJ1/Rk9mgDGDP2VfdLu916 R3VwyMD+U/9I4xgeZLcHFOmSyrC+YLImiiw/zfMKQO1LJjRKcZAsq6bYKHoSp6AzT5Z2 Tf6XxHK1VVVGGJRkvNl3XgGbBYdEc+nLai5d7yfDLBdVWNsIo3tZ2oqhC2wr+fzSMgo3 5toNMaNC3I4k/+ZCNNw9IUS/6Mwb+aFxioCjxyed2qGGA4pOfjhCbvQnycDh+XjbCuiG +hoA7JMEx/eweDCA7fd5rFeAF9at977h6ej9WN10JQj5XG9W5x37qaZVIswZbLUqYiug s3cw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=QnyY0M4a; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id x1-v6si8678827pgg.406.2018.08.31.06.29.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:29:24 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=QnyY0M4a; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 7D1562110BD7E; Fri, 31 Aug 2018 06:28:59 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::433; helo=mail-pf1-x433.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pf1-x433.google.com (mail-pf1-x433.google.com [IPv6:2607:f8b0:4864:20::433]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 27A3E2110BD68 for ; Fri, 31 Aug 2018 06:28:58 -0700 (PDT) Received: by mail-pf1-x433.google.com with SMTP id j26-v6so5523257pfi.10 for ; Fri, 31 Aug 2018 06:28:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=/8XpmM/gaGKMSFIfrAYlzSWNVCGO58ujkfffjeHKetk=; b=QnyY0M4axka79wVmj0/ysBOGcrutRG2Z+YypB2MblLRc1jTiEELO876KFGTk+zZiZb zl9AfjK/bYvH4UNFopCgQWCunZ0/4849fBQLGV+9EkVc4KVFILulb8/73eHn9IGrZnRM W7nCSo3ED4Z5c9fmOB7yqq5mergYVoRHh3XEA= 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=/8XpmM/gaGKMSFIfrAYlzSWNVCGO58ujkfffjeHKetk=; b=g7fKH9YpiiSDycG/u8LnjGF5YibpAAMqv0mRVulBw4qlaJodKw1HBNz1giRoHQn+G8 HOi/jT4AGbGXprqL9ddYFUHsLtn9JSjsJZ0Iy0NEHTKwr/JPOju5uBGxDI2oTCrba0iL vSaRAK+0iRVtBQe8BaOIutB3kKtnmaUdx44uOWCoucC1KMBzXxGuffn36MR5sc1nLz6K POc6tZQuegi53x9uwnQ0BzAMvczVRyC3zi4wAfe5fZ7omqj6au08GawijxNHRtGWRSCs 2wul6LUJ6r7NnQKRis/uC62JmmLhOgksHwRybyhi+jyCb64klcZkeZVqGs8h+wWpiyYc kK6A== X-Gm-Message-State: APzg51Cx+UECQ1n95qJ47Tx7JiuppMopgXpuFF3FFFPwVOv68TZdMYx3 oqi7UdNZw5ZKWCnwcKQp27BRvA== X-Received: by 2002:a62:9683:: with SMTP id s3-v6mr15911216pfk.191.1535722137827; Fri, 31 Aug 2018 06:28:57 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.28.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:28:57 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:27:08 +0800 Message-Id: <20180831132710.23055-27-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 26/28] Silicon/Hisilicon/Setup: Support SPCR table switch X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" If install SPCR table, KVM will not output while install or boot some OS, like ubuntu, so add SPCR switch setup item and set it disable by default. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang Reviewed-by: Leif Lindholm --- Platform/Hisilicon/D06/D06.dsc | 1 + Platform/Hisilicon/D06/D06.fdf | 1 + 2 files changed, 2 insertions(+) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index 053ea894d5..e828010abf 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -326,6 +326,7 @@ MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf MdeModulePkg/Universal/SerialDxe/SerialDxe.inf + EmbeddedPkg/Drivers/ConsolePrefDxe/ConsolePrefDxe.inf MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf diff --git a/Platform/Hisilicon/D06/D06.fdf b/Platform/Hisilicon/D06/D06.fdf index 7f30263211..b97c25d23f 100644 --- a/Platform/Hisilicon/D06/D06.fdf +++ b/Platform/Hisilicon/D06/D06.fdf @@ -200,6 +200,7 @@ READ_LOCK_STATUS = TRUE INF MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf INF MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf INF MdeModulePkg/Universal/SerialDxe/SerialDxe.inf + INF EmbeddedPkg/Drivers/ConsolePrefDxe/ConsolePrefDxe.inf INF ArmPkg/Drivers/ArmGic/ArmGicDxe.inf INF ArmPkg/Drivers/TimerDxe/TimerDxe.inf From patchwork Fri Aug 31 13:27:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145640 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp785344ljw; Fri, 31 Aug 2018 06:29:28 -0700 (PDT) X-Google-Smtp-Source: ANB0VdZzwfJjgeGSzfR65Hp47sqO5EVzFUXWS9h7o2XFzDBkSYE7mV7bj/x3TYsocPOi5m8yK0xy X-Received: by 2002:a62:e412:: with SMTP id r18-v6mr15974123pfh.25.1535722168629; Fri, 31 Aug 2018 06:29:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722168; cv=none; d=google.com; s=arc-20160816; b=EUnfT9XQY1Y+RngZyGfmDpTOQWnCUKLJGwPn/VhJTF/JPhYXXjwJNpS7wVrExMA5Ak VakY5GWFfc2mlcrXbhhf0a4X0F0N3JJIspnso0zQFy/lKvnsegMB343zF+mF/L/X8Mpg Z1SDdfVN8mRmLZBR4GiWNz1/Ldk066oMUOh/LEyN9chypHeQuDNqGOQQsBJYiNiMyXA+ xSgoitw1/VynMXLB/b2bGQYdsbyn71EoJ5vryR7vOwy9tuO+d1CFgj1GVJyiwLprdSrp jY1jXPfvXMziJImi3p/9HUOzWFjImKoH+OcREq3vzkxmwM9rD0dH5XSiSs+pohUDztEs ddHw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=tMocrc19ZtFoqv9i2EtpYYdTWmdEBP7+qOpm280CKaY=; b=NIa3BHIbegqMi92gzjllMO4H8iRo8fUKpZfhHsNm5XZUCWqes8H/mLjtJFdL2t6bUu CQ8Dd4vCwhBhcHUt+WdeHDD5Xy4vrp0TDdI9Fxyv50PhmW7mP/wcRVXzILRJkTj0qL9l nBS+Cs1JoehlbzAyQyvdy4XAzBHL88vsl1S87gQEBfGuHp5iz03hFo4rjG/JeDz7GJVM OM5P/vCRQ9clcjyp6106OvhNFIKXI95sKcg9eve2BF137lz6DdqqkKLp7NNlKjlXEuD0 M7OmqK/cQ2spAHibTatWuwo3lyFtnyK83oRHhYND8/GFOVV9HakM+uD7GcJtk0zNbNvI wMHw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=KAAgwkC3; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id q126-v6si10996907pfb.277.2018.08.31.06.29.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:29:28 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=KAAgwkC3; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id AC26C2110BFAA; Fri, 31 Aug 2018 06:29:02 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::542; helo=mail-pg1-x542.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pg1-x542.google.com (mail-pg1-x542.google.com [IPv6:2607:f8b0:4864:20::542]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id A6E722110BD68 for ; Fri, 31 Aug 2018 06:29:01 -0700 (PDT) Received: by mail-pg1-x542.google.com with SMTP id d1-v6so5461845pgo.3 for ; Fri, 31 Aug 2018 06:29:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=GMpUfLxvKhOd84WiRa2bCIih1sfS7mtATtcg/AwtE6w=; b=KAAgwkC3/w+UZfM+F0a4Qid826zfaAwawFMZl4X/DP2CFJsJErkMu0CGkActMdC7QG gCkEVV4zO6vVmOacr0YWAY3i22TFdeyCl9GG41waSPyiDTshmSXXgDOvSbDujwSfWCeG 4qHevyMSJTOHdKMQKPbsabDtNyWrnukIGr438= 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=GMpUfLxvKhOd84WiRa2bCIih1sfS7mtATtcg/AwtE6w=; b=mFCDdGJ+9SOdEVwfkd0cago1yJhDVDIbyWH/0FeH18icQDLI6YuR81xlMEBngab2HG JW5XrTceTqsM+OWX0LORotb1uDL9RlIw1uc8GXNeoJPpJfUhD0BOmhUs+cH/f+7cMuLu NNfs03Ks8/U5WYQPEPqYl3QtrKY3z+/WCdniqjcIS/wBz2TT9V5nLH3K/YSCnf0DAv0x 9G64z2HBkVAQorwIIai5OPU5StHsTJ+JYLAFwVEOrEErnTGADrmdfDnoV9Lz2R1AAgJ1 gDKjP4U8Dvh+C0+ztRvWQsldaAYq3zHDdaU7pz+Ri18GGcwAkesnPX5xkUcoXehWjkYF fiwA== X-Gm-Message-State: APzg51BNCMOW6GZRGA582CIIETEfeQu6Dik4O2qiLhbmauc3SycHuW3O hHvUqISyrGfgd3hKI03w63cjN4WSq8U= X-Received: by 2002:a63:1823:: with SMTP id y35-v6mr14472677pgl.438.1535722141377; Fri, 31 Aug 2018 06:29:01 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.28.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:29:00 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:27:09 +0800 Message-Id: <20180831132710.23055-28-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 27/28] Silicon/Hisilicon/setup: Enable/disable SMMU X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" Select without SMMU iort while SMMU item is disable, Select with SMMU iort while SMMU item is enable. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang Reviewed-by: Leif Lindholm --- Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/AcpiPlatformDxe.inf | 1 + Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/UpdateAcpiTable.c | 89 ++++++++++++++++++++ 2 files changed, 90 insertions(+) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/AcpiPlatformDxe.inf b/Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/AcpiPlatformDxe.inf index 281a4f2ebd..3d133aff85 100644 --- a/Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/AcpiPlatformDxe.inf +++ b/Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/AcpiPlatformDxe.inf @@ -51,6 +51,7 @@ [Guids] gHisiEfiMemoryMapGuid + gOemConfigGuid [Pcd] gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiTableStorageFile ## CONSUMES diff --git a/Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/UpdateAcpiTable.c b/Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/UpdateAcpiTable.c index 54f49977c3..c2c8f687b0 100644 --- a/Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/UpdateAcpiTable.c +++ b/Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/UpdateAcpiTable.c @@ -16,12 +16,98 @@ #include #include #include +#include #include #include +#include #include #define CORECOUNT(X) ((X) * CORE_NUM_PER_SOCKET) +#define FIELD_IORT_NODE_OFFSET 40 + +typedef enum { + NodeTypeIts = 0, + NodeTypeNameComponent, + NodeTypePciRC, + NodeTypeSmmuV1, + NodeTypeSmmuV3, + NodeTypePMCG +} IORT_NODE_TYPE; + +#pragma pack(1) +typedef struct { + UINT8 Type; + UINT16 Length; + UINT8 Revision; + UINT32 Reserved; + UINT32 IdMapNumber; + UINT32 IdArrayOffset; +} IORT_NODE_HEAD; +#pragma pack() + +BOOLEAN +IsIortWithSmmu ( + IN EFI_ACPI_DESCRIPTION_HEADER *TableHeader + ) +{ + UINT32 *NodeOffset; + UINT32 NextOffset; + IORT_NODE_HEAD *Node; + + NodeOffset = (UINT32 *)((UINT8 *)TableHeader + FIELD_IORT_NODE_OFFSET); + NextOffset = *NodeOffset; + + while (NextOffset < TableHeader->Length) { + Node = (IORT_NODE_HEAD *)((UINT8 *)TableHeader + NextOffset); + NextOffset += Node->Length; + + if ((Node->Type == NodeTypeSmmuV1) || (Node->Type == NodeTypeSmmuV3)) { + return TRUE; + } + } + + return FALSE; +} + +EFI_STATUS +SelectIort ( + IN EFI_ACPI_DESCRIPTION_HEADER *TableHeader + ) +{ + EFI_STATUS Status; + UINTN Size; + OEM_CONFIG_DATA Configuration; + + Configuration.EnableSmmu = 0; + Size = sizeof (OEM_CONFIG_DATA); + Status = gRT->GetVariable ( + OEM_CONFIG_NAME, + &gOemConfigGuid, + NULL, + &Size, + &Configuration + ); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "Get OemConfig variable (%r).\n", Status)); + } + + Status = EFI_SUCCESS; + if (IsIortWithSmmu (TableHeader)) { + if (!Configuration.EnableSmmu) { + Status = EFI_ABORTED; + } + } else { + if (Configuration.EnableSmmu) { + Status = EFI_ABORTED; + } + } + DEBUG ((DEBUG_INFO, "SmmuEnable=%x, return %r for Iort table.\n", + Configuration.EnableSmmu, Status)); + + return Status; +} + STATIC VOID RemoveUnusedMemoryNode ( @@ -130,6 +216,9 @@ UpdateAcpiTable ( case EFI_ACPI_6_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE: Status = UpdateSlit (TableHeader); break; + case EFI_ACPI_6_2_IO_REMAPPING_TABLE_SIGNATURE: + Status = SelectIort (TableHeader); + break; } return Status; } From patchwork Fri Aug 31 13:27:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 145641 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp785394ljw; Fri, 31 Aug 2018 06:29:32 -0700 (PDT) X-Google-Smtp-Source: ANB0Vdb7sTLmRYfBcO1JIZzjvFfbSsxY0BZWgRdP0mrE4fFDrhUhx9MVzk1FHOyIXSx85Bn8qaa9 X-Received: by 2002:a17:902:2b84:: with SMTP id l4-v6mr15376840plb.296.1535722171903; Fri, 31 Aug 2018 06:29:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535722171; cv=none; d=google.com; s=arc-20160816; b=tuA9NSz5NuPoMH4OQFIideiqxOJDSHnV0xSwbcJ1opKZT54bAQY4wMS7gS5CegAHuv GpQdYPfpADVaJOu9sgRp+VKt1AGRcRfMb9HeCfxZeBg+pZu74VjZzTmqLzCnFjiKaF1+ cwyU/sWmY7mLRpfQ3hLww3ARkNS59Qjlz6Spy5Qzucc+BKOkuZgwWIjzsvkDgK3j6qRI ArgePw1GIM75IvphvwKPZGus5KSdzg8NWS2wgSam3+6jXNPxYg1RVWLA/oMb0iurvYBH q7MwXtJ7R5Iy9PYu7meeLsEcKPphR8I0fdOnj5XGwWoXuRRXApld/SzwGt67qXOxnVBM 8C3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=R6HvpLX9NkPYeTil88IDPqD9n+XmiMPNRidZMKkl7FQ=; b=rUay+Tjyigj/gm2Dw92VoDwqV2W20522k+IrINdBytCtJK+LIu63r0AyfiUEv6Ez6K 22irlT6wb1ulQfppyYp+UbteIsjyUyvyy0/IR5ORlbQU62+VQcqfgvb5e+G4+OhWu6uh uHOUuKtxVOt1ZcIqDauq9j2zGlPgDmtDfUA2OmS4Qkeu9vkOLC5VO+jaylbV9oIR80A0 La1lkJ0h5uBDLHdJTQ0805205xMm1hRkiAw6tR76z5Pv8cPK9cYpjEcjBBt1YgLC6q9y uuZeggcHUleXD0Ti/I9i+SQu9tXnH2+XZhsI+hXDkpK9oRt4+Vtkmn5RmulkIpLpaJXw lzhw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=ZJShkBWQ; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id o6-v6si8900044pgp.631.2018.08.31.06.29.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Aug 2018 06:29:31 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=ZJShkBWQ; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id D9B3D2110BFD3; Fri, 31 Aug 2018 06:29:05 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::52d; helo=mail-pg1-x52d.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pg1-x52d.google.com (mail-pg1-x52d.google.com [IPv6:2607:f8b0:4864:20::52d]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 532AF2110BD7A for ; Fri, 31 Aug 2018 06:29:05 -0700 (PDT) Received: by mail-pg1-x52d.google.com with SMTP id f4-v6so176554pgq.5 for ; Fri, 31 Aug 2018 06:29:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=0pk/agO2vGO/w6IQF40mio0/706P1Fh7XmUgOWQd2EY=; b=ZJShkBWQSkUskO6ozAdgy+jtxAY3aL8kLuIfq+8F2vrOGb9QynIgcxdSdq/IYpUn2w F27oS1z1lPLXR4Gx0CLyRB5pv/mg68T8aox3MflEjWtAonkEBxJXxfAPBEqKPCciKXJP /DEckawrMu7Az9hNNyPYf2kAXyY3LxO82nlH4= 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=0pk/agO2vGO/w6IQF40mio0/706P1Fh7XmUgOWQd2EY=; b=M2Lg00z3yN8g71zjgL0euyA/nzbwK9e3O77FfPaCzcFzJnBbleiKfTGETHOG/QyYlc Hn51EeriV7946glJvUJbslxpHPloTSTZAkikHilgqms6H7lTGGgkl6XW6pfG0dwKydye 3JR8+Uvl2R1pV0d2kc3+MRpzc29hMgRHBCq6/NrPWxdgP4jUg5Rmq2tsnANIW/qRrk+U 9LwvaYZY1G65jGGLzTozGRx7LSmGGeak8T3AzhVFliEuDl4EYSnw0iDuYgL+h4XWfOb2 19qHOfX5a6b6aQVw2KrsYpIxVpW9GX90ZOnUb59eljlHIpAYprr6aoibosurDur9MX3s Ef3A== X-Gm-Message-State: APzg51BJqC8V0Y4KBYmI4K1FhIAa7kGmPaizazbX+RlSkX4tWZzXM2YI Jjsi9G0Ywjh/ehk5utUrlb9pHw== X-Received: by 2002:a63:c50c:: with SMTP id f12-v6mr14670447pgd.113.1535722144880; Fri, 31 Aug 2018 06:29:04 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id l185-v6sm19081936pga.5.2018.08.31.06.29.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 31 Aug 2018 06:29:04 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Fri, 31 Aug 2018 21:27:10 +0800 Message-Id: <20180831132710.23055-29-ming.huang@linaro.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180831132710.23055-1-ming.huang@linaro.org> References: <20180831132710.23055-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v5 28/28] Platform/Hisilicon/D0x: Update version string to 18.08 X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, huangdaode@hisilicon.com, zhangfeng56@huawei.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang Reviewed-by: Leif Lindholm --- Platform/Hisilicon/D03/D03.dsc | 2 +- Platform/Hisilicon/D05/D05.dsc | 2 +- Platform/Hisilicon/D06/D06.dsc | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) -- 2.18.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Platform/Hisilicon/D03/D03.dsc b/Platform/Hisilicon/D03/D03.dsc index 910a9f2177..116d591363 100644 --- a/Platform/Hisilicon/D03/D03.dsc +++ b/Platform/Hisilicon/D03/D03.dsc @@ -174,7 +174,7 @@ !ifdef $(FIRMWARE_VER) gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString|L"$(FIRMWARE_VER)" !else - gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString|L"Development build 18.02 for Hisilicon D03" + gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString|L"Development build 18.08 for Hisilicon D03" !endif gHisiTokenSpaceGuid.PcdBiosVersionString|L"10.01.01T18" diff --git a/Platform/Hisilicon/D05/D05.dsc b/Platform/Hisilicon/D05/D05.dsc index a89e7f2b09..a6bb65e71a 100644 --- a/Platform/Hisilicon/D05/D05.dsc +++ b/Platform/Hisilicon/D05/D05.dsc @@ -192,7 +192,7 @@ !ifdef $(FIRMWARE_VER) gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString|L"$(FIRMWARE_VER)" !else - gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString|L"Development build 18.02 for Hisilicon D05" + gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString|L"Development build 18.08 for Hisilicon D05" !endif gHisiTokenSpaceGuid.PcdBiosVersionString|L"10.01.01T18" diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index e828010abf..1a479c160e 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -165,12 +165,12 @@ !ifdef $(FIRMWARE_VER) gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString|L"$(FIRMWARE_VER)" !else - gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString|L"Hisilicon D06 UEFI RC0 - B308 (V0.38)" + gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString|L"Development build 18.08 for Hisilicon D06" !endif gHisiTokenSpaceGuid.PcdBiosVersionString|L"10.01.01T18" - gHisiTokenSpaceGuid.PcdBiosVersionForBmc|L"0.38" + gHisiTokenSpaceGuid.PcdBiosVersionForBmc|L"0.42" gHisiTokenSpaceGuid.PcdSystemProductName|L"D06" gHisiTokenSpaceGuid.PcdSystemVersion|L"VER.A"