From patchwork Tue Aug 14 08:08:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 144109 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4047904ljj; Tue, 14 Aug 2018 01:09:30 -0700 (PDT) X-Google-Smtp-Source: AA+uWPyQpQs1YBcdc6R3aNb+yNCaeTXyTxsd7F6WKMOJ83mMzyEhgTgISfk/tp5Y2wWUKf4eY4KJ X-Received: by 2002:a63:5a13:: with SMTP id o19-v6mr1837528pgb.195.1534234170715; Tue, 14 Aug 2018 01:09:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234170; cv=none; d=google.com; s=arc-20160816; b=nCu3hUj7mxCYINUShpEPrHd62FY0+R4mXBUmUkod1y3Lb5JR4y/QcyywvAKCgAmQ74 mwZyK4dZxic9we0Tt+Z1l2WQOG01DSJ0ObsXqoretctYjyEPOht3p2WNk9dev5QXtPL3 j4gegjNa8stMXkGGuqo6TOrJ+TFwwitFxCX4dtSLWSHTPkdFdRlEKzBzVdgPwtE6FkTW su2uNOdhnj9laxbeQsJVHfI0ZbQvAKT9P9jDZOVCcbTGNw2enBUxukvcC6as8Q6uWBM2 KyoKE7q9zW99tQMhyBHRJxJw5K0v5ZHgVJtlgjR5OkzUSXvLTH/F6ae/nikJbpoGOYQZ K0MA== 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=yfOJ0OULULFEK85gdRzUZTXTnQU5Af8Vd6CHNPK1FHI=; b=bIlk1dZW1Z6AMsjXH/E8wegEqRW2I5vgVywgdEkuQV8Tqn/xLq7smmIU1nwdVr5B0C iIN/537HQnE6szSnX6BdFO93vFTKlVOJ0KgqCJq/TkQxVfGMT1L7xwnprZ8j7n+eF48U kLMdXW3QI+o3v4ybthTlHPySPeSIPGyDYlYdcFnz5hvHmjP8yRdy7/zB5YKifdWuGxDC ForXNw6kfp4nJ/ybX2TA5znwhM639t8EC/Icc0s9dTYJOpSqWlMpW6Kc1z7Ucf+8jWg3 +MNDYPnrj+PzJzmXpmdYCWUtR85mCWhYFp4be198ZcHXuvQM/ERQN7ud6DuYCrVFz8m0 wHMQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=LxI7tyJ9; 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 a3-v6si14754770pld.123.2018.08.14.01.09.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:09: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=LxI7tyJ9; 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 58967210F1540; Tue, 14 Aug 2018 01:09: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::432; helo=mail-pf1-x432.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pf1-x432.google.com (mail-pf1-x432.google.com [IPv6:2607:f8b0:4864:20::432]) (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 77D07210EFB1A for ; Tue, 14 Aug 2018 01:09:29 -0700 (PDT) Received: by mail-pf1-x432.google.com with SMTP id d4-v6so8942020pfn.0 for ; Tue, 14 Aug 2018 01:09:29 -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=1kIfOIzrkeUEV0zd+lR0g9kIg7Iub5u01ph7uKVeFDQ=; b=LxI7tyJ9KtIlQiojU9d8o9XUq/moxT6BE+KCQVMuaAo1H1NLct76ekwjTbzmAMyhUP 21rDQKQEbh8irYatx+bAOWj7K0pRwdvf+OQ2WE2QWODJ9bBow0OliNA9hy5gLBmj3lOA wGV1D0R5F4Qk7niwm5NVdFNnZ+NCgBFDvCydE= 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=1kIfOIzrkeUEV0zd+lR0g9kIg7Iub5u01ph7uKVeFDQ=; b=UvHbzuRneGS+Ibrl5BSMe9nEoSbS5LXT3FBSQEHkJm+CnIlOCoraU6viy9NAwTcgFT TI/92hPBHaxr9mKkdvs47iA0kDFz4/WtcKyL5nlTPwg0O/5qoZw2OYWAP8eD9iYGgBfw 0+ulD6bT1lMAhuMoDcxhvUfsVBfkRazkmEONea3xGr53YV3qb3SiPk70it82R+DV2W6H pVfyzHXYO8jhshHQ32pRYlv8YFl5ZD3JdIudYKXgMAm1ReH2wLm99B5j7Bvj9QoNIAYt WO7sIMvAr2rgqQ7Z68fOHVdYrxcwmcfzQW19e8oqOpQB5Poj6gz+YXwkMM2wDpfrBozy w5VA== X-Gm-Message-State: AOUpUlFrMciBcb4yC7AfvI0wly1iwq/gcUfljIecvM7q44miGl6xjvmA w79u+ewoloy86Vxs8ehYhomRQw== X-Received: by 2002:a65:40cd:: with SMTP id u13-v6mr20566442pgp.334.1534234168865; Tue, 14 Aug 2018 01:09:28 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.09.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:09: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: Tue, 14 Aug 2018 16:08:21 +0800 Message-Id: <20180814080903.50466-2-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 01/43] Silicon/Hisilicon: Modify the MRC interface for other module X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 to unify D0x. Add pGBL_INTERFACE struct define and remove useless interfece. Replace DMRC pGblData with pGblInterface; Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang --- Silicon/Hisilicon/Include/Library/HwMemInitLib.h | 356 ++++---------------- Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/UpdateAcpiTable.c | 4 +- Silicon/Hisilicon/Drivers/Smbios/MemorySubClassDxe/MemorySubClass.c | 26 +- 3 files changed, 78 insertions(+), 308 deletions(-) -- 2.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Leif Lindholm diff --git a/Silicon/Hisilicon/Include/Library/HwMemInitLib.h b/Silicon/Hisilicon/Include/Library/HwMemInitLib.h index 2663cad836..e1310e854c 100644 --- a/Silicon/Hisilicon/Include/Library/HwMemInitLib.h +++ b/Silicon/Hisilicon/Include/Library/HwMemInitLib.h @@ -50,48 +50,6 @@ typedef enum { DDR_FREQ_MAX } DDR_FREQUENCY_INDEX; -typedef struct _DDR_FREQ_TCK -{ - UINT32 ddrFreq; - UINT32 ddrCk; -}DDR_FREQ_TCK; - -typedef struct _GBL_CFG{ - - -}GBL_CFG; - -typedef struct _GBL_VAR{ - - -}GBL_VAR; - -typedef struct _GBL_NVDATA{ - - -}GBL_NVDATA; - -typedef struct _GOBAL { - const GBL_CFG Config; // constant input data - GBL_VAR Variable; // variable, volatile data - GBL_NVDATA NvData; // variable, non-volatile data for S3, warm boot path - UINT32 PreBootFailed; -}GOBAL, *PGOBAL; - -struct DDR_RANK { - BOOLEAN Status; - UINT16 RttNom; - UINT16 RttPark; - UINT16 RttWr; - UINT16 MR0; - UINT16 MR1; - UINT16 MR2; - UINT16 MR3; - UINT16 MR4; - UINT16 MR5; - UINT16 MR6[9]; -}; - struct baseMargin { INT16 n; INT16 p; @@ -101,171 +59,7 @@ struct rankMargin { struct baseMargin rank[MAX_CHANNEL][MAX_RANK_CH]; }; -typedef struct _DDR_DIMM{ - BOOLEAN Status; - UINT8 mapout; - UINT8 DramType; //Byte 2 - UINT8 ModuleType; //Byte 3 - UINT8 ExtendModuleType; - UINT8 SDRAMCapacity; //Byte 4 - UINT8 BankNum; - UINT8 BGNum; //Byte 4 For DDR4 - UINT8 RowBits; //Byte 5 - UINT8 ColBits; //Byte 5 - UINT8 SpdVdd; //Byte 6 - UINT8 DramWidth; //Byte 7 - UINT8 RankNum; //Byte 7 - UINT8 PrimaryBusWidth; //Byte 8 - UINT8 ExtensionBusWidth; //Byte 8 - UINT32 Mtb; - UINT32 Ftb; - UINT32 minTck; - UINT8 MtbDividend; - UINT8 MtbDivsor; - UINT8 nCL; - UINT32 nRCD; - UINT32 nRP; - UINT8 SPDftb; - UINT8 SpdMinTCK; - UINT8 SpdMinTCKFtb; - UINT8 SpdMaxTCK; - UINT8 SpdMinTCL; - UINT8 SpdMinTCLFtb; - UINT8 SpdMinTWR; - UINT8 SpdMinTRCD; - UINT8 SpdMinTRCDFtb; - UINT8 SpdMinTRRD; - UINT8 SpdMinTRRDL; - UINT16 SpdMinTRAS; - UINT16 SpdMinTRC; - UINT16 SpdMinTRCFtb; - UINT16 SpdMinTRFC; - UINT8 SpdMinTWTR; - UINT8 SpdMinTRTP; - UINT8 SpdMinTAA; - UINT8 SpdMinTAAFtb; - UINT8 SpdMinTFAW; - UINT8 SpdMinTRP; - UINT8 SpdMinTRPFtb; - UINT8 SpdMinTCCDL; - UINT8 SpdMinTCCDLFtb; - UINT8 SpdAddrMap; - UINT8 SpdModuleAttr; - - UINT8 SpdModPart[SPD_MODULE_PART]; // Module Part Number - UINT8 SpdModPartDDR4[SPD_MODULE_PART_DDR4]; // Module Part Number DDR4 - UINT16 SpdMMfgId; // Module Mfg Id from SPD - UINT16 SpdRMId; // Register Manufacturer Id - UINT16 SpdMMDate; // Module Manufacturing Date - UINT32 SpdSerialNum; - UINT16 DimmSize; - UINT16 DimmSpeed; - UINT32 RankSize; - UINT8 SpdMirror; //Denote the dram address mapping is standard mode or mirrored mode - struct DDR_RANK Rank[MAX_RANK_DIMM]; -}DDR_DIMM; - -typedef struct { - UINT32 ddrcTiming0; - UINT32 ddrcTiming1; - UINT32 ddrcTiming2; - UINT32 ddrcTiming3; - UINT32 ddrcTiming4; - UINT32 ddrcTiming5; - UINT32 ddrcTiming6; - UINT32 ddrcTiming7; - UINT32 ddrcTiming8; -}DDRC_TIMING; - -typedef struct _MARGIN_RESULT{ - UINT32 OptimalDramVref[12]; - UINT32 optimalPhyVref[18]; -}MARGIN_RESULT; - -typedef struct _DDR_Channel{ - BOOLEAN Status; - UINT8 CurrentDimmNum; - UINT8 CurrentRankNum; - UINT16 RankPresent; - UINT8 DramType; - UINT8 DramWidth; - UINT8 ModuleType; - UINT32 MemSize; - UINT32 tck; - UINT32 ratio; - UINT32 CLSupport; - UINT32 minTck; - UINT32 taref; - UINT32 nAA; - UINT32 nAOND; - UINT32 nCKE; - UINT32 nCL; - UINT32 nCCDL; - UINT32 nCKSRX; - UINT32 nCKSRE; - UINT32 nCCDNSW; - UINT32 nCCDNSR; - UINT32 nFAW; - UINT32 nMRD; - UINT32 nMOD; - UINT32 nRCD; - UINT32 nRRD; - UINT32 nRRDL; - UINT32 nRAS; - UINT32 nRC; - UINT32 nRFC; - UINT32 nRFCAB; - UINT32 nRTP; - UINT32 nRTW; - UINT32 nRP; - UINT32 nSRE; - UINT32 nWL; - UINT32 nWR; - UINT32 nWTR; - UINT32 nWTRL; - UINT32 nXARD; - UINT32 nZQPRD; - UINT32 nZQINIT; - UINT32 nZQCS; - UINT8 cwl; //tWL? - UINT8 pl; //parity latency - UINT8 wr_pre_2t_en; - UINT8 rd_pre_2t_en; - UINT8 cmd_2t_en; - UINT8 parity_en; - UINT8 wr_dbi_en; - UINT8 wr_dm_en; - UINT8 ddr4_crc_en; - UINT16 emrs0; - UINT16 emrs1; - UINT16 emrs1Wr; - UINT16 emrs2; - UINT16 emrs3; - UINT16 emrs4; - UINT16 emrs5; - UINT16 emrs5Wr; - UINT16 emrs6; - UINT16 emrs7; - UINT8 phy_rddata_set; - UINT8 phyif_tim_rdcs; - UINT8 phyif_tim_rden; - UINT8 phyif_tim_wden; - UINT8 phyif_tim_wdda; - UINT8 phyif_tim_wdcs; - UINT8 per_cs_training_en; - UINT32 phyRdDataEnIeDly; - UINT32 phyPadCalConfig; - UINT32 phyDqsFallRiseDelay; - UINT32 ddrcCfgDfiLat0; - UINT32 ddrcCfgDfiLat1; - UINT32 parityLatency; - UINT32 dimm_parity_en; - DDRC_TIMING ddrcTiming; - DDR_DIMM Dimm[MAX_DIMM]; - MARGIN_RESULT sMargin; -}DDR_CHANNEL; - -typedef struct _NVRAM_RANK{ +typedef struct _NVRAM_RANK_DATA { UINT16 MR0; UINT16 MR1; UINT16 MR2; @@ -273,15 +67,15 @@ typedef struct _NVRAM_RANK{ UINT16 MR4; UINT16 MR5; UINT16 MR6[9]; -}NVRAM_RANK; +} NVRAM_RANK_DATA; -typedef struct _NVRAM_DIMM{ - NVRAM_RANK Rank[MAX_RANK_DIMM]; -}NVRAM_DIMM; +typedef struct _NVRAM_DIMM_DATA { + NVRAM_RANK_DATA Rank[MAX_RANK_DIMM]; +} NVRAM_DIMM_DATA; -typedef struct _NVRAM_CHANNEL{ - NVRAM_DIMM Dimm[MAX_DIMM]; +typedef struct _NVRAM_CHANNEL_DATA { + NVRAM_DIMM_DATA Dimm[MAX_DIMM]; UINT32 DDRC_CFG_ECC; UINT32 DDRC_CFG_WORKMODE; UINT32 DDRC_CFG_WORKMODE1; @@ -325,94 +119,70 @@ typedef struct _NVRAM_CHANNEL{ UINT32 DDRC_CFG_DDRPHY; UINT32 Config[24]; BOOLEAN Status; -}NVRAM_CHANNEL; +} NVRAM_CHANNEL_DATA; -typedef struct _NVRAM{ - UINT32 NvramCrc; - NVRAM_CHANNEL Channel[MAX_SOCKET][MAX_CHANNEL]; - UINT32 DdrFreqIdx; +typedef struct _NVRAM_DATA { + UINT32 NvramCrc; + NVRAM_CHANNEL_DATA Channel[MAX_SOCKET][MAX_CHANNEL]; + UINT32 DdrFreqIdx; -}NVRAM; +} NVRAM_DATA; -typedef struct _MEMORY{ - UINT8 Config0; - UINT8 marginTest; - UINT8 Config1[5]; - UINT8 ErrorBypass; //register of spd mirror mode - UINT32 Config2; -}MEMORY; +struct DDR_RANK_DATA { + BOOLEAN Enabled; +}; -typedef struct _NUMAINFO{ +typedef struct _DDR_DIMM_DATA { + BOOLEAN Enabled; + UINT8 DramType; //Byte 2 + UINT8 ModuleType; //Byte 3 + UINT8 BankNum; //Byte 4 + UINT8 RowBits; //Byte 5 + UINT8 ColBits; //Byte 5 + UINT8 SpdVdd; //Byte 6 + UINT8 RankNum; //Byte 7 + UINT8 PrimaryBusWidth; //Byte 8 + UINT8 ExtensionBusWidth; //Byte 8 + UINT8 SpdModPart[SPD_MODULE_PART]; // Module Part Number + UINT8 SpdModPartDDR4[SPD_MODULE_PART_DDR4]; // Module Part Number DDR4 + UINT16 SpdMMfgId; // Module Mfg Id from SPD + UINT32 SpdSerialNum; + UINT32 RankSize; + UINT16 DimmSize; + UINT16 DimmSpeed; + UINT16 SpdMMDate; + struct DDR_RANK_DATA Rank[MAX_RANK_DIMM]; +} DDR_DIMM_DATA; + +typedef struct _DDR_CHANNEL_DATA { + BOOLEAN Enabled; + DDR_DIMM_DATA Dimm[MAX_DIMM]; + UINT8 CurrentDimmNum; +} DDR_CHANNEL_DATA; + +typedef struct _MEMORY_DATA { + UINT8 RascBypass; +} MEMORY_DATA; + +typedef struct _NUMAINFO_DATA { UINT8 NodeId; UINT64 Base; UINT64 Length; UINT32 ScclInterleaveEn; -}NUMAINFO; - - -typedef struct _GBL_DATA -{ - DDR_CHANNEL Channel[MAX_SOCKET][MAX_CHANNEL]; - UINT8 DramType; - UINT8 CurrentDimmNum; - UINT8 CurrentRankNum; - UINT8 MaxSPCNum; - UINT32 Freq; - UINT32 SpdTckMtb; - UINT32 SpdTckFtb; - UINT32 SpdTck; - UINT32 Tck; - UINT32 DdrFreqIdx; - UINT32 DevParaFreqIdx; //Maximum frequency of DDR device - UINT32 MemSize; - UINT32 EccEn; - - BOOLEAN SetupExist; - UINT8 warmReset; - UINT8 needColdReset; - - UINT8 cl; - UINT8 cwl; - UINT8 pl; - UINT8 wr_pre_2t_en; - UINT8 rd_pre_2t_en; - UINT8 cmd_2t_en; - UINT8 ddr4_parity_en; - UINT8 wr_dbi_en; - UINT8 wr_dm_en; - UINT8 ddr4_crc_en; - UINT16 emrs0; - UINT16 emrs1; - UINT16 emrs2; - UINT16 emrs3; - UINT16 emrs4; - UINT16 emrs5; - UINT16 emrs6; - UINT16 emrs7; - UINT8 phy_rddata_set; - UINT8 phyif_tim_rdcs; - UINT8 phyif_tim_rden; - UINT8 phyif_tim_wden; - UINT8 phyif_tim_wdda; - UINT8 phyif_tim_wdcs; - UINT8 dimm_trtr; - UINT8 dimm_twtw; - UINT8 rnk_trtr; - UINT8 rnk_twtw; - UINT8 rnk_trtw; - UINT8 rnk_twtr; - UINT8 per_cs_training_en; - UINT8 scale; - UINT8 ddrFreq; - UINT8 debugNeed; - UINT8 ddr3OdtEnable; - double fprd; - BOOLEAN chipIsEc; - NVRAM nvram; - MEMORY mem; - NUMAINFO NumaInfo[MAX_SOCKET][MAX_NUM_PER_TYPE]; - -}GBL_DATA, *pGBL_DATA; +} NUMAINFO_DATA; + + +typedef struct _GBL_DATA_INTERFACE { + DDR_CHANNEL_DATA Channel[MAX_SOCKET][MAX_CHANNEL]; + UINT32 DdrFreqIdx; + UINT32 Freq; + UINT32 EccEn; + UINT32 MemSize; + BOOLEAN SetupExist; + NVRAM_DATA NvRamData; + MEMORY_DATA MemData; + NUMAINFO_DATA NumaInfo[MAX_SOCKET][MAX_NUM_PER_TYPE]; +} GBL_INTERFACE; typedef union { struct { diff --git a/Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/UpdateAcpiTable.c b/Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/UpdateAcpiTable.c index 7d06fccc2b..f5869841dc 100644 --- a/Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/UpdateAcpiTable.c +++ b/Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/UpdateAcpiTable.c @@ -56,7 +56,7 @@ UpdateSrat ( UINT8 Skt = 0; UINTN Index = 0; VOID *HobList; - GBL_DATA *Gbl_Data; + GBL_INTERFACE *Gbl_Data; UINTN Base; UINTN Size; UINT8 NodeId; @@ -69,7 +69,7 @@ UpdateSrat ( if (HobList == NULL) { return EFI_UNSUPPORTED; } - Gbl_Data = (GBL_DATA*)GetNextGuidHob(&gHisiEfiMemoryMapGuid, HobList); + Gbl_Data = (GBL_INTERFACE*)GetNextGuidHob(&gHisiEfiMemoryMapGuid, HobList); if (Gbl_Data == NULL) { DEBUG((DEBUG_ERROR, "Get next Guid HOb fail.\n")); return EFI_NOT_FOUND; diff --git a/Silicon/Hisilicon/Drivers/Smbios/MemorySubClassDxe/MemorySubClass.c b/Silicon/Hisilicon/Drivers/Smbios/MemorySubClassDxe/MemorySubClass.c index da714c9e22..7d3005eb14 100644 --- a/Silicon/Hisilicon/Drivers/Smbios/MemorySubClassDxe/MemorySubClass.c +++ b/Silicon/Hisilicon/Drivers/Smbios/MemorySubClassDxe/MemorySubClass.c @@ -45,7 +45,7 @@ SmbiosGetManufacturer ( VOID SmbiosGetPartNumber ( - IN pGBL_DATA pGblData, + IN GBL_INTERFACE *pGblData, IN UINT8 Skt, IN UINT8 Ch, IN UINT8 Dimm, @@ -78,7 +78,7 @@ SmbiosGetPartNumber ( VOID SmbiosGetSerialNumber ( - IN pGBL_DATA pGblData, + IN GBL_INTERFACE *pGblData, IN UINT8 Skt, IN UINT8 Ch, IN UINT8 Dimm, @@ -96,14 +96,14 @@ SmbiosGetSerialNumber ( BOOLEAN IsDimmPresent ( - IN pGBL_DATA pGblData, + IN GBL_INTERFACE *pGblData, IN UINT8 Skt, IN UINT8 Ch, IN UINT8 Dimm ) { - if (pGblData->Channel[Skt][Ch].Status == FALSE || - pGblData->Channel[Skt][Ch].Dimm[Dimm].Status == FALSE) + if (pGblData->Channel[Skt][Ch].Enabled == FALSE || + pGblData->Channel[Skt][Ch].Dimm[Dimm].Enabled == FALSE) { return FALSE; } @@ -115,7 +115,7 @@ IsDimmPresent ( UINT8 SmbiosGetMemoryType ( - IN pGBL_DATA pGblData, + IN GBL_INTERFACE *pGblData, IN UINT8 Skt, IN UINT8 Ch, IN UINT8 Dimm @@ -146,7 +146,7 @@ SmbiosGetMemoryType ( VOID SmbiosGetTypeDetail ( - IN pGBL_DATA pGblData, + IN GBL_INTERFACE *pGblData, IN UINT8 Skt, IN UINT8 Ch, IN UINT8 Dimm, @@ -186,7 +186,7 @@ SmbiosGetTypeDetail ( VOID SmbiosGetDimmVoltageInfo ( - IN pGBL_DATA pGblData, + IN GBL_INTERFACE *pGblData, IN UINT8 Skt, IN UINT8 Ch, IN UINT8 Dimm, @@ -281,7 +281,7 @@ SmbiosGetPartitionWidth ( EFI_STATUS SmbiosAddType16Table ( - IN pGBL_DATA pGblData, + IN GBL_INTERFACE *pGblData, OUT EFI_SMBIOS_HANDLE *MemArraySmbiosHandle ) { @@ -345,7 +345,7 @@ SmbiosAddType16Table ( EFI_STATUS SmbiosAddType19Table ( - IN pGBL_DATA pGblData, + IN GBL_INTERFACE *pGblData, IN EFI_SMBIOS_HANDLE MemArraySmbiosHandle ) { @@ -397,7 +397,7 @@ SmbiosAddType19Table ( EFI_STATUS SmbiosAddType17Table ( - IN pGBL_DATA pGblData, + IN GBL_INTERFACE *pGblData, IN UINT8 Skt, IN UINT8 Ch, IN UINT8 Dimm, @@ -692,7 +692,7 @@ MemorySubClassEntryPoint( EFI_STATUS Status; EFI_SMBIOS_PROTOCOL *Smbios; EFI_HOB_GUID_TYPE *GuidHob; - pGBL_DATA pGblData; + GBL_INTERFACE *pGblData; EFI_SMBIOS_HANDLE MemArraySmbiosHandle; UINT8 Skt, Ch, Dimm; @@ -702,7 +702,7 @@ MemorySubClassEntryPoint( DEBUG((EFI_D_ERROR, "Could not get MemoryMap Guid hob. %r\n")); return EFI_NOT_FOUND; } - pGblData = (pGBL_DATA) GET_GUID_HOB_DATA(GuidHob); + pGblData = (GBL_INTERFACE*) GET_GUID_HOB_DATA(GuidHob); // // Locate dependent protocols From patchwork Tue Aug 14 08:08:22 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 144110 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4047977ljj; Tue, 14 Aug 2018 01:09:34 -0700 (PDT) X-Google-Smtp-Source: AA+uWPwDyOvLAUPwcJufd8VxL85sHJEjmvqGcSkl1VTV5iIptirUsspyCyCpps6oaw54SP/l4vKD X-Received: by 2002:a65:6398:: with SMTP id h24-v6mr20159838pgv.245.1534234174660; Tue, 14 Aug 2018 01:09:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234174; cv=none; d=google.com; s=arc-20160816; b=osmg0TeXMFxTufXGEr9LpOqtettIwKieNkUGkkmA9yqlxv4A+g3+aemgbkJ4lyrrEp GHxSiLjqkb+G/WNrjbw1vlMZfEwHvbbTrVX7ZrDHQFRxlj1CxSzoaQY5nj+eMj8Yuida WBGSkAgm1F7qNmQH7qHp/NEJwSamD4T8+xAIfF3ISkCf7n7PouUgdfdFeuDmWK9ZHDFo t6Nr/Lq1FcfEuHH2dAFDxUJGMlXM/t/kYp45/9FDucaxdH66/w9PjeFXuxe1+UPxYvpd 45lvfY9bK21CmZO8G/XPWYnXeLB3dPINftXQYZhC5UXOjHCl9SP+uOvuXM7gH8/KmIfM bK7w== 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=+3CSWFHVlIn6KgpyzbHmZ5cJL/nOC24/0LcR4OcA+cM=; b=eslS3azTwdcD+vU2qUB1nD8ll6eZGponu2KLPpJoyZFUfn0Q5uPgDSLUj3bjGVqI2e m7qlBxufnt4HEqeEV1JM5pWNYvSEnrwrF9IJ5F3CfFD+PLTIjN52MyV4qBx4eWzgMUGq BPHkWQPaf9E6+X0185Quk9Zxko/E7HaQ1g1QIFvncK/BPGZ0vgTBoPEAjxHgnlCM3+nO ZwrG7FySSZ2tDb4QSpO2Lebas7t2Ys534tOmEQeSBeDVAnERYchcKWS4WLTPJoEsXwXu w0EYJqMgIR+Hv5gL9aX/P4gFAQG/LejIwFI56BHzQmoyhOTTvhtgiVBXeeN9M9sxicij niiA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=SrTK6WsB; 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 b18-v6si19391058pgd.185.2018.08.14.01.09.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:09:34 -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=SrTK6WsB; 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 99B33210F154C; Tue, 14 Aug 2018 01:09: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::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 88A7E21959CB2 for ; Tue, 14 Aug 2018 01:09:32 -0700 (PDT) Received: by mail-pf1-x444.google.com with SMTP id a26-v6so8932380pfo.4 for ; Tue, 14 Aug 2018 01:09: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=NEoa2UEwncZMxWsXsciixKf0E93i8vgvWjNWBpPPDDE=; b=SrTK6WsBiB9T5G9TJy5eB47PifDHZLa8iaXyjgvlLI7z4CpxZZKbM3mVbinxuD+qBs nVAIghwdtG+R6QptDPcol123r75S2yr/DlSt/CSJzOUtnVmHR3zp4jLdbkRNnfxolH54 FcV4HKtfjbPO55pqBXrMt1JkcR0v/9Euu7OkY= 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=NEoa2UEwncZMxWsXsciixKf0E93i8vgvWjNWBpPPDDE=; b=Ad4aNDadRhEd8MRbjNrImZw6nEFWHbzSbnUo8LzoP9yRPhGmHTEdamv57waeF4D0nu ckMUtMC0yofjoZSvoj2wL1arN6mHi/WQvjStkzBO5u0cI5rkTModnJOjG5asuAUYhyG9 Huc7KXvRNa6N/bHJ5PI7pkLvVBGLIIdR/dovTXhajX/Vy/jzRcOcCQ2OZ14Z5vC2jDTJ A6FiDI8Iy//2Er4N1YH2jllgFA/R8ktuLFYux8XGpH33d0nGjLKd7fzKW3OSxeXdKak8 L6EkaS5g9ACHlfwSHFV2os7qZkoaJHXO3WP5hJJ4N+WApTmVk0jGWcAn/Fl4baQRe9+w N8xA== X-Gm-Message-State: AOUpUlEMBggq3CF4RDA/dYAMKtlHDSMVsl0CPd1IxmEIgn1O6I4twwMz p1eO7QPC2S8DKEqF/hwiTuNJ7Q== X-Received: by 2002:a62:c0a:: with SMTP id u10-v6mr22187198pfi.43.1534234172202; Tue, 14 Aug 2018 01:09:32 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.09.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:09: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: Tue, 14 Aug 2018 16:08:22 +0800 Message-Id: <20180814080903.50466-3-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 02/43] Silicon/Hisilicon: Separate PlatformArch.h X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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" As the macro of PlatformArch.h is platform specific, so separate PlatformArch.h to Hi1610,Hi1616 for unifying D0x. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang --- Silicon/Hisilicon/{ => Hi1610}/Include/PlatformArch.h | 0 Silicon/Hisilicon/Hi1616/Include/PlatformArch.h | 35 ++++++++++++++++++++ 2 files changed, 35 insertions(+) -- 2.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Silicon/Hisilicon/Include/PlatformArch.h b/Silicon/Hisilicon/Hi1610/Include/PlatformArch.h similarity index 100% rename from Silicon/Hisilicon/Include/PlatformArch.h rename to Silicon/Hisilicon/Hi1610/Include/PlatformArch.h diff --git a/Silicon/Hisilicon/Hi1616/Include/PlatformArch.h b/Silicon/Hisilicon/Hi1616/Include/PlatformArch.h new file mode 100644 index 0000000000..bf0994a5e9 --- /dev/null +++ b/Silicon/Hisilicon/Hi1616/Include/PlatformArch.h @@ -0,0 +1,35 @@ +/** @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 2 +#define MAX_NODE (MAX_SOCKET * MAX_DIE) +#define MAX_CHANNEL 4 +#define MAX_DIMM 3 +#define MAX_RANK_CH 12 +#define MAX_RANK_DIMM 4 +// Max NUMA node number for each node type +#define MAX_NUM_PER_TYPE 8 + +#define S1_BASE 0x40000000000 + +#endif + From patchwork Tue Aug 14 08:08:23 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 144111 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4048058ljj; Tue, 14 Aug 2018 01:09:39 -0700 (PDT) X-Google-Smtp-Source: AA+uWPysV2BKJ9IV9v+A9g76zV1FOumjO2MPipTXiZ5mR83gL5RYrogl2jhaRjdZSlamj54Oegqv X-Received: by 2002:a62:7f91:: with SMTP id a139-v6mr12375586pfd.99.1534234179113; Tue, 14 Aug 2018 01:09:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234179; cv=none; d=google.com; s=arc-20160816; b=ImJwya1T58NYcM/xfTIrDueZGdzwxTegZKtuXONZhfZpR4RYcIv0dYU6N7nAXaBaRD wZl/izYHyOkAAHXFRW4gKnyrtECbtI9MtP5lr8VO2/tfUvHuvZnujvfN62TCWhXHqx6n gBkAbMg+r09p2jmg7PNaZHaCem7RyiCYYG9zUfPrSieVDtkFwJTnb5rYbkflgvKzoNgs EqKrbBfphEOgBKu21cwXR9nn/FtEjx2vTMOFrv5o3HoE2yBIErg240yFmHcifstamyRh q/tLFOk/C4xK40yCyAh0I4I7ABnTLlG+uqzQ4a4hZI9cBZ3WGB7+A1eruLU6nMB7Ef9Q C9RQ== 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=viFDYeFYUraFSOixtzNpLln4svL7bd+y+OGy3ip4KGM=; b=l0iPx+v5cxf/UD0DOaWfhvpzC4zURToJ6zzo5Xuzx8cISVM5uKbdd50hN/Q0BqRzhK LCHG7HElwY/WRQD0dmUXIUJ6900DoJ7q1ryrUJEy9Y02sYBUiCVoUdV2BrM21lmdxqsH YpweBr1Ikdu0fPOwJ93nNwE/ft60kESjuynopE34pXBqVQuflyKqVe+I/LeNR4Q4DzYs id1dlMkRd6ubKZPBGmI6Q5eG4hmuJ13XhGQNRBe43xI2mscj+PbeHtwvgWwkg0rj9i08 wDu9Svna2jYU99ZjE9ywx56UuvG/iHm1m8SV35Fc25PgRAfktB2tzmf67+KOSoeqIR0O u2OA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=CRxDz6fP; 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 27-v6si19923361pgn.24.2018.08.14.01.09.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:09: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=CRxDz6fP; 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 C8CFA210F154F; Tue, 14 Aug 2018 01:09: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::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 D9F54210F1544 for ; Tue, 14 Aug 2018 01:09:35 -0700 (PDT) Received: by mail-pg1-x542.google.com with SMTP id a14-v6so8774276pgv.10 for ; Tue, 14 Aug 2018 01:09:35 -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=GdZvUxQRKBCjvTGz/7vH9xugO+8N29gtq4yu/LDJltc=; b=CRxDz6fPoLVpuGUYqlX6SJEL9QCE2rSwWDzqCyhWoizOdMuRPTHr/Pd9Hp0wn1MKMz MkmCYn7VgAzl+AKQWXpN8wTubi4HbCQ0hXtqk958+yG4Qrf7OByhqVr7aKWruqXCOpj0 JL/ZfdIeYQjt/45TQrhuSX5PU1gqHi7vNnyyo= 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=GdZvUxQRKBCjvTGz/7vH9xugO+8N29gtq4yu/LDJltc=; b=SWyk0mPeLzpbH+rVuHXtFc7Hb3iJPfIDLT7KOUQIxJ0YBT8Iq8Qr3bIAFnPHs8FEWs 34UalGLiYvNnTp2UDURMvLJBArqSbLyyq+ve4xpEB2UADzhBtVLpvAGqlsAX9Sz6Hxcu 5MJDeXwuurdY05gpjg/B3Xes5AQR5iYZRTvn6XLowYn0tmNQ+we+Zn1sUtcrWg6cDUDp VJRcScOdNJTVUV1hwb8HfyDWXU3TjpB1fKtMP694kJtd7uJFlv7MBaRdPG/pVZ5r7o8z +Us8VNM4TrVWO96rHdG2BBJGGsjgKgBzxrRdVDbbvBLKTHhd1xKR2cxWYRNvGDNNrjJ4 JL9w== X-Gm-Message-State: AOUpUlEwAinifikDikoQvrOOrCllFnJ3A7vDjd8/KdDGhrMDMXhXWSYx zLr4Vl/bPK2UxR0qJd9RNrZFiw== X-Received: by 2002:a63:2b89:: with SMTP id r131-v6mr19679011pgr.39.1534234175526; Tue, 14 Aug 2018 01:09:35 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.09.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:09:34 -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: Tue, 14 Aug 2018 16:08:23 +0800 Message-Id: <20180814080903.50466-4-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 03/43] Silicon/Hisilicon/Acpi: Move some macro to PlatformArch.h X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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" ARM_ACPI_HEADER is used by a unify module in HwPkg, so move some macro to PlatformArch.h for unify D0x. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang --- Silicon/Hisilicon/Hi1610/Hi1610AcpiTables/Hi1610Platform.h | 27 +++----------------- Silicon/Hisilicon/Hi1610/Include/PlatformArch.h | 24 +++++++++++++++++ Silicon/Hisilicon/Hi1616/D05AcpiTables/Hi1616Platform.h | 24 +---------------- Silicon/Hisilicon/Hi1616/Include/PlatformArch.h | 23 +++++++++++++++++ 4 files changed, 51 insertions(+), 47 deletions(-) -- 2.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Silicon/Hisilicon/Hi1610/Hi1610AcpiTables/Hi1610Platform.h b/Silicon/Hisilicon/Hi1610/Hi1610AcpiTables/Hi1610Platform.h index 5a95b02055..28546bea99 100644 --- a/Silicon/Hisilicon/Hi1610/Hi1610AcpiTables/Hi1610Platform.h +++ b/Silicon/Hisilicon/Hi1610/Hi1610AcpiTables/Hi1610Platform.h @@ -1,8 +1,8 @@ /** @file * * Copyright (c) 2011-2015, ARM Limited. All rights reserved. -* 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 @@ -20,28 +20,7 @@ #ifndef _HI1610_PLATFORM_H_ #define _HI1610_PLATFORM_H_ -// -// 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','6',' ',' ',' ') // OEM table id 8 bytes long -#define EFI_ACPI_ARM_OEM_REVISION 0x00000000 -#define EFI_ACPI_ARM_CREATOR_ID SIGNATURE_32('I','N','T','L') -#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 */ \ - } +#include <../Include/PlatformArch.h> #define HI1610_WATCHDOG_COUNT 2 diff --git a/Silicon/Hisilicon/Hi1610/Include/PlatformArch.h b/Silicon/Hisilicon/Hi1610/Include/PlatformArch.h index 45995c5893..8e5913447c 100644 --- a/Silicon/Hisilicon/Hi1610/Include/PlatformArch.h +++ b/Silicon/Hisilicon/Hi1610/Include/PlatformArch.h @@ -31,5 +31,29 @@ #define S1_BASE 0x40000000000 + +// +// 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','6',' ',' ',' ') // OEM table id 8 bytes long +#define EFI_ACPI_ARM_OEM_REVISION 0x00000000 +#define EFI_ACPI_ARM_CREATOR_ID SIGNATURE_32 ('I','N','T','L') +#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 */ \ + } + #endif diff --git a/Silicon/Hisilicon/Hi1616/D05AcpiTables/Hi1616Platform.h b/Silicon/Hisilicon/Hi1616/D05AcpiTables/Hi1616Platform.h index ad73aa2668..04f9e34a14 100644 --- a/Silicon/Hisilicon/Hi1616/D05AcpiTables/Hi1616Platform.h +++ b/Silicon/Hisilicon/Hi1616/D05AcpiTables/Hi1616Platform.h @@ -21,29 +21,7 @@ #define _HI1610_PLATFORM_H_ #include - -// -// 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','7',' ',' ',' ') // OEM table id 8 bytes long -#define EFI_ACPI_ARM_OEM_REVISION 0x00000000 -#define EFI_ACPI_ARM_CREATOR_ID SIGNATURE_32('I','N','T','L') -#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 */ \ - } +#include <../Include/PlatformArch.h> #define HI1616_WATCHDOG_COUNT 2 #define HI1616_GIC_STRUCTURE_COUNT 64 diff --git a/Silicon/Hisilicon/Hi1616/Include/PlatformArch.h b/Silicon/Hisilicon/Hi1616/Include/PlatformArch.h index bf0994a5e9..24167d1633 100644 --- a/Silicon/Hisilicon/Hi1616/Include/PlatformArch.h +++ b/Silicon/Hisilicon/Hi1616/Include/PlatformArch.h @@ -31,5 +31,28 @@ #define S1_BASE 0x40000000000 +// +// 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','7',' ',' ',' ') // OEM table id 8 bytes long +#define EFI_ACPI_ARM_OEM_REVISION 0x00000000 +#define EFI_ACPI_ARM_CREATOR_ID SIGNATURE_32 ('I','N','T','L') +#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 */ \ + } + #endif From patchwork Tue Aug 14 08:08:24 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 144112 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4048118ljj; Tue, 14 Aug 2018 01:09:43 -0700 (PDT) X-Google-Smtp-Source: AA+uWPyNAze0/OQum2BZs17llNMf12uvORhJt9b01b93vteNPCws4AmDb12QLIRgVmtLVNmVX1aA X-Received: by 2002:a62:15c8:: with SMTP id 191-v6mr22014068pfv.194.1534234183243; Tue, 14 Aug 2018 01:09:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234183; cv=none; d=google.com; s=arc-20160816; b=yPLrlUAh73BzPla3qIgebBWUPHixbkcTFiq5ZxCZWbd8XqwhaqWgyAn6B93I1fVv1+ vRJNay1B18KRmfGEcvmBc0qE6j4JBpCjmR2wJcrEoQz9hBltTtH25FuXDgH2Ovu7PMUA wPdN1n+mA4Yz802sxyXCrc9HsF79WW1+96Y3pg+RCC7N6XYtuEeoMl+QBaWyFul0tUSU OooHd2LuM89xlUgwAhNfNFDJdIgL3hXMbuIRUCIyd3rr5kxjzBM3tGVfUOCl/U3391QU zxbvCrD2kgVN9MdALM1hCgOs4I6kgD0m7EczHe7ApDfvmvK2DUbRloBLigYZcccHNetb ultQ== 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=3VlH1yLWrDnYGx2ovuR/nQydGTl1PsT98NZWTo0S6qQ=; b=pTRxsldWGm9RwUXUi10hapb38IhtN4eIIBull1l4RJ4I8TszxTKv3DM88hEDgjKCfk In4itVV0+VmvZBZembdBy8FFoywG5lS37uvHBiZMwUsKYrpxmmw+OYaQqs4yFpt85PgP WAUuNAOdLzy0hyJvvWkaNScTUeTUMcnJCQdCRxEdh/Y6ww8EdLSr0SX/OWKhPiA4qS6G Y/2iSLc605u3TTW1dtr9ICKi/W6thNIMipSNT1DqpNEN3zHbd2KWrCfg6qemThlY5hJt Ljs2MWemuDsP3R41YUM/p5zE8vVczPu+xdfc9u482fiDRMu1m8j9oCLYLG20HXg6c2rj bhSA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=cf8jEJTU; 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 u68-v6si20388578pgb.191.2018.08.14.01.09.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:09:43 -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=cf8jEJTU; 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 016BA210F1553; Tue, 14 Aug 2018 01:09: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::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 4438721959CB2 for ; Tue, 14 Aug 2018 01:09:39 -0700 (PDT) Received: by mail-pg1-x541.google.com with SMTP id x5-v6so8783649pgp.7 for ; Tue, 14 Aug 2018 01:09: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=2DjR8fecfKAqf+S8I0AQcgsQhw6O6eE7sDpXRWW0Fgk=; b=cf8jEJTUqTB/TrZ3/HnZyAKZo0zQJ4w/loUulL79M4vEiKNlfQaGR8+gboP4H4E4JS ezj5sMTixmYhDyDy+ZlaSl/3KYbYo5CR5hDBT7rDp9I3pMLJ1t3kT9qkDvc32VwYAmv6 nleS60b/OlK0z6aZbm4OjpJ1oT1XoKXdbRt/o= 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=2DjR8fecfKAqf+S8I0AQcgsQhw6O6eE7sDpXRWW0Fgk=; b=jJn8w4DaZRQgqO177yl/W9ivopsC3sM9bfx7WS0h2vO65IjegSqraskUPOjOu3pR31 MXsJTmPdKHYM3GhvZGSfyZ+gBedEQX2L/GM4gmB0S5pBsAN2tcwdBWbIWtRxoKil+o80 SvFszo4F/XO5xIqfpdz3A4plyEBGOZjFjTxXK0v2DjAanTwelSNK/C+XtFeW0BTlnikG pXxR4lpNIqwRfKaczzvmx4Rw5sniTKqfHQMUBc3pf8TMFEaRHDIFlAELKTBCRpLWPgrq 0/RZV8UaqjS4XfsqJxbIcSe+ctWfv250ZGfv/tifwpv4vK11PNSgLlvStLkMocIsZO+A +84g== X-Gm-Message-State: AOUpUlGGUCQzNvZ1TMaUuHagBXz+g+028FNoCrij+w4XKxvZlUvrflEH cR76IFLD3wrICISeeObRlqH9mQ== X-Received: by 2002:a62:d1b:: with SMTP id v27-v6mr22523391pfi.87.1534234178926; Tue, 14 Aug 2018 01:09:38 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.09.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:09: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: Tue, 14 Aug 2018 16:08:24 +0800 Message-Id: <20180814080903.50466-5-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 04/43] Silicon/Hisilicon/D0x: Move dimm size definition to PlatformArch.h X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 Unify MemorySubClassDxe by Moving dimm size macro definition to PlatformArch.h Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Sun Yuanchen --- Silicon/Hisilicon/Drivers/Smbios/MemorySubClassDxe/MemorySubClass.h | 2 -- Silicon/Hisilicon/Hi1610/Include/PlatformArch.h | 1 + Silicon/Hisilicon/Hi1616/Include/PlatformArch.h | 1 + 3 files changed, 2 insertions(+), 2 deletions(-) -- 2.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Silicon/Hisilicon/Drivers/Smbios/MemorySubClassDxe/MemorySubClass.h b/Silicon/Hisilicon/Drivers/Smbios/MemorySubClassDxe/MemorySubClass.h index c35ce39d61..0c201b4870 100644 --- a/Silicon/Hisilicon/Drivers/Smbios/MemorySubClassDxe/MemorySubClass.h +++ b/Silicon/Hisilicon/Drivers/Smbios/MemorySubClassDxe/MemorySubClass.h @@ -44,8 +44,6 @@ extern UINT8 MemorySubClassStrings[]; -#define MAX_DIMM_SIZE 32 // In GB - struct SPD_JEDEC_MANUFACTURER { UINT8 MfgIdLSB; diff --git a/Silicon/Hisilicon/Hi1610/Include/PlatformArch.h b/Silicon/Hisilicon/Hi1610/Include/PlatformArch.h index 8e5913447c..2ff076901e 100644 --- a/Silicon/Hisilicon/Hi1610/Include/PlatformArch.h +++ b/Silicon/Hisilicon/Hi1610/Include/PlatformArch.h @@ -26,6 +26,7 @@ #define MAX_DIMM 3 #define MAX_RANK_CH 12 #define MAX_RANK_DIMM 4 +#define MAX_DIMM_SIZE 32 // In GB // Max NUMA node number for each node type #define MAX_NUM_PER_TYPE 8 diff --git a/Silicon/Hisilicon/Hi1616/Include/PlatformArch.h b/Silicon/Hisilicon/Hi1616/Include/PlatformArch.h index 24167d1633..60a60593be 100644 --- a/Silicon/Hisilicon/Hi1616/Include/PlatformArch.h +++ b/Silicon/Hisilicon/Hi1616/Include/PlatformArch.h @@ -26,6 +26,7 @@ #define MAX_DIMM 3 #define MAX_RANK_CH 12 #define MAX_RANK_DIMM 4 +#define MAX_DIMM_SIZE 32 // In GB // Max NUMA node number for each node type #define MAX_NUM_PER_TYPE 8 From patchwork Tue Aug 14 08:08:25 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 144113 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4048195ljj; Tue, 14 Aug 2018 01:09:48 -0700 (PDT) X-Google-Smtp-Source: AA+uWPxCwNpI1f+59iwZPKPCKBN7pmEUQ3QSr8Ktb9NiQNIaxlFyFqC3AhugZ7w4eRoFp3uomW/b X-Received: by 2002:a17:902:32a4:: with SMTP id z33-v6mr19738562plb.226.1534234188188; Tue, 14 Aug 2018 01:09:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234188; cv=none; d=google.com; s=arc-20160816; b=ODeQ0qyhJZAKDReadlkzNjVDNfDluAXvU742eThr4XU0eVNmctj463LtaQH1MEuMOO Rq4mWA4C5bRizd0yt1yW2gg9GBnQ8NxMZuJVBnkCgEMofS7KtpTYwB7f1B/g9iHOQaen nTeGUi6slEz0zg+XLDREXqhkXX3Sx+iAF/ZaqZBoivCFa6db0qOCJvIwVzVLhfsJB2J8 i8z2wMyR3HC9+nreuJXRbXjSjaS6+MaSvtacr4aPGpDAtCNOowdIyitJRHbm4NIZRx6O Ow+7QP1hOytOgGPbPsQ3QjB332YCYm86dXIzpviqf4LpwD7aTnYfm+lzFlQGQ6HImfKD Z93Q== 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=Pi3IvdMRH4KeVAeL7aTZpjCUgH//6AD+aWIYwPeKUaQ=; b=MPI+leH4qhXtMHz09yA38jeobL2lczX1txKBDRKU/F/6SU3Ts4x5NrTkuVIoW7QAO9 Fz6C/khaVb9AuVy9ciKl7v90jnERP/z9VFZ/EUCNRD0bWrLJX53OHCA3JZ1+O5JJcMOP 6vbNsrKfFl/XugeghDFhHTnl2LFnpXiGjhwpVZxgpb9kVwBOFQA59ITZspIVVIbZ7DME 2K20zmxM5oFRcd9zT0S6VZL30EpN8T6zu8lRK0LrumqAnhJxBC6qD3zPTy04NiV/BgpU sSuE+Ob67cp9o0mxEcDTpSAUP8X8Gu+uICdmkuMNIrC69qDUdwfg8wd7iCP/76RR+zhy VmmQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=baNdTxu0; 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 d1-v6si16319774pla.103.2018.08.14.01.09.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:09:48 -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=baNdTxu0; 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 317BF210F1558; Tue, 14 Aug 2018 01:09:43 -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:400e:c01::241; helo=mail-pl0-x241.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pl0-x241.google.com (mail-pl0-x241.google.com [IPv6:2607:f8b0:400e:c01::241]) (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 83040210F1557 for ; Tue, 14 Aug 2018 01:09:42 -0700 (PDT) Received: by mail-pl0-x241.google.com with SMTP id b90-v6so8042678plb.0 for ; Tue, 14 Aug 2018 01:09:42 -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=xTenfNSTLvDQD2fo9JdodTne640OKoROHq4wU4LqoBw=; b=baNdTxu0BgKeXI5dM4520wj85kxAHnivmXPa617vSshGFAEciF9KpwrQ9SZT2AEdWq hR3x+EDr6kwKUYqREv+BDJaWu1nmeqw8egv/h/poda4K5FCplwsBRg5sS+IxTmfmXeFr uoDntqOkLhyHwZHTFPhwnAeiqMyz74HJ0FavQ= 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=xTenfNSTLvDQD2fo9JdodTne640OKoROHq4wU4LqoBw=; b=QLw04gjQaPA9z+s57IB5u1yGtCL2HNQKw3RWG1BQvmgNWn95eqry6nX9rM984G7oRy TcErN37w9homEYIZVSM12su0eSBOb5JboI7S8ynwv/uIFOos8s772OTy3jKPtdfwFgs3 6HzlAqvwbpVkq9EiEUF9TYkM2iOknLOi1WngpWYKC7Pnf6XdcHkc6iCCwYq+MxwqxJB0 eSbYOP8PnCXee3VlysNjDIGU9ZJThhQBUxIX3lVmeqtWL4+lQcpMSH/gG7rzUahkzAmv A1HjoQdyTF4RXuTMmIk/jHevjpAF5+MK5u7ssjjg8amm/1+v7yxILtLBm735HdjAbEC2 AJSg== X-Gm-Message-State: AOUpUlEOdVwn50Izfj0SytalujozSpqjqjMj44XNdOK233bSXJLeAAtn 0XGvtyWeoOgsQb4lO/luf6A4Fw== X-Received: by 2002:a17:902:bb0d:: with SMTP id l13-v6mr19809255pls.5.1534234182211; Tue, 14 Aug 2018 01:09:42 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.09.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:09:41 -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: Tue, 14 Aug 2018 16:08:25 +0800 Message-Id: <20180814080903.50466-6-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 05/43] Silicon/Hisilicon/D0x: Move RAS macro to PlatformArch.h X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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: Sun Yuanchen --- Silicon/Hisilicon/Hi1610/Include/PlatformArch.h | 9 +++++++-- Silicon/Hisilicon/Hi1616/Include/PlatformArch.h | 12 ++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) -- 2.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Leif Lindholm 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 Tue Aug 14 08:08:26 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 144114 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4048275ljj; Tue, 14 Aug 2018 01:09:53 -0700 (PDT) X-Google-Smtp-Source: AA+uWPwV5SVgo0X+UX8lFCjZBjrIqO72skcOsFsg6WJ1/GBYTZV3i12sXgtS2U8cn8TSld1HmDU/ X-Received: by 2002:a17:902:bd84:: with SMTP id q4-v6mr19909278pls.145.1534234193002; Tue, 14 Aug 2018 01:09:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234192; cv=none; d=google.com; s=arc-20160816; b=HZ0xj6McrTk9eHawZy0sH7bYPhCsCihc3gt0cLQ3w7c1Hu9iVCqkK4k5q8CiwfVubt HqO8U1iEGiU3kgxsfL3T1aVrh/JcX1c2Z6dNZDmMO8PsObNZi44cQOhgqg26p9zdHCM6 7l19CFSA+1ZQloDAGyASLR5uljYdi+z2E2xOaEamon6YfGP2bDrMtTIfBCaO6X0OUqa1 eUxF8JmCsCrHOzFlblJE2Fp7wC4tHSzKNzapdsMWZJjrgS+23jTnex8iywcoGexcJS3R Enw8GGPD59cG3mK5dL124YnUU4QcFt3pFggQrjm8CCCrABV4VlFcM7VfmFMiBq5WkREc YE2g== 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=NWgW+KGMZl4/lMsLGsMTIslPgIUS6yNH5TZb9k05MOg=; b=tusn9drTuNq+XETIzkl73CRDC3cZ/pPrDMHmhInL76IHfhn1CMLrnPDW4Ct4+twW2i ZEzDLBCUFl7+IHTzOUDKdGgxvFWIIjMqvN6W8ua9284lGrCoWLRwUTObgh9/AoWSbLUW riEteocO1kATkgVq2lkqGbEVucWlwFmRICI79WS/Wn2Ulth7acbgRh9nq74Km8aHHSwC AKBJJc02X+NsNy9cNyqJYkKGz8xjOPsdRaeAKxTSZ0DVbRGr1pNPhSy4YNVR8iR79Yid wW4wg7sTGcGpuJjTcllN6NBIE+Kzlq5GrTRpRaQ4hoeQ82+6ny3jVFlN4Al6yV6RT7To qajA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b="a/aC/S4g"; 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 r4-v6si20281045pgb.97.2018.08.14.01.09.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:09:52 -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="a/aC/S4g"; 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 62982210F155C; Tue, 14 Aug 2018 01:09:46 -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 C4CC7210EFB1A for ; Tue, 14 Aug 2018 01:09:45 -0700 (PDT) Received: by mail-pg1-x542.google.com with SMTP id x5-v6so8783756pgp.7 for ; Tue, 14 Aug 2018 01:09: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=FslEG/y3JRANm77elFSxrfkINOO5Dy0dhmQFW2xjMEs=; b=a/aC/S4g3nflC76c696/sDaFaVsVB+PTuXBkyN7ce4H1NDcH0VAArsjWk9maJ1ngzU XhugOFSU7QYoViDLncSs27nMH6QHS9BDz7NcncSNf/FulfmjVOr5tKwm+EpwMuU3s5XC 6WoxsYuTxxv9UeRTkPzKQWTYCZCIuvp7t4jWY= 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=FslEG/y3JRANm77elFSxrfkINOO5Dy0dhmQFW2xjMEs=; b=O7JCeoaSyhSEDlHeRH30xWROLM2DtIukCLL7KsvR1yFR7c9RW3ZraZm8LCrKwoQuzZ g2dqXSj31YjnaANHLt7rlL55+Vbyv9tHr5tSSpuaOFQMaaur/J4dNIsrOwnZ1Gg1nfUE IVXnJ2N5+mrVNNkMb5ZeSDwJP8JCXSmRL8GDw6M8OKCnMdTtbsU2Vs9XZtPnUK+Y68T/ WYy5r8b2T2Mnvt4Lii2CWW0es/1TeL2Lw0p00qC1y0xdA4ZrJDaHYqMo6A/X9f7PjMpt rezFT+Wi2tDko7KLgYmrMoWyJCo0BkrcSZqj7KhGkxCZgYlZUzX6wM94+0B9U52wCzBR JXOQ== X-Gm-Message-State: AOUpUlFSVaEotfOWYeypdGyVjhkeJS/bdYBW9dq9u7BQ18P4LY9aPm7C BxvwcmdyCr3t/vJt4ltFlCD/RA== X-Received: by 2002:a63:d309:: with SMTP id b9-v6mr20062697pgg.163.1534234185500; Tue, 14 Aug 2018 01:09:45 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.09.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:09:44 -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: Tue, 14 Aug 2018 16:08:26 +0800 Message-Id: <20180814080903.50466-7-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 06/43] Hisilicon/D0x: Move CustomData.Fv to common path of Hisilicon X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 CustomData.Fv is moved to Platform/Hisilicon in edk2-non-osi, so update D0x fdf to reflect this. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang --- Platform/Hisilicon/D03/D03.fdf | 2 +- Platform/Hisilicon/D05/D05.fdf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) -- 2.17.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.fdf b/Platform/Hisilicon/D03/D03.fdf index cf11aeccc8..4591f7b5b1 100644 --- a/Platform/Hisilicon/D03/D03.fdf +++ b/Platform/Hisilicon/D03/D03.fdf @@ -113,7 +113,7 @@ DATA = { gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize 0x002F0000|0x00010000 -FILE = Platform/Hisilicon/D03/CustomData.Fv +FILE = Platform/Hisilicon/D0x-CustomData.Fv ################################################################################ # diff --git a/Platform/Hisilicon/D05/D05.fdf b/Platform/Hisilicon/D05/D05.fdf index 701804360e..6227607ffe 100644 --- a/Platform/Hisilicon/D05/D05.fdf +++ b/Platform/Hisilicon/D05/D05.fdf @@ -113,7 +113,7 @@ DATA = { gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize 0x002F0000|0x00010000 -FILE = Platform/Hisilicon/D03/CustomData.Fv +FILE = Platform/Hisilicon/D0x-CustomData.Fv ################################################################################ # From patchwork Tue Aug 14 08:08:27 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 144115 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4048348ljj; Tue, 14 Aug 2018 01:09:57 -0700 (PDT) X-Google-Smtp-Source: AA+uWPwiSmJ9jjZGiSwLTFo/IYyneuBhwloYxGejJbUWWQHRxMIFG9i2UAX8YNwdv9PMM48FTkPV X-Received: by 2002:a17:902:14cb:: with SMTP id y11-v6mr19536404plg.317.1534234197614; Tue, 14 Aug 2018 01:09:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234197; cv=none; d=google.com; s=arc-20160816; b=ZAClbwBevxKN1CP+gFxjjRCfgHEO/jJEoveHaC7aBrn/nFLrgHy0Ycj63vpJKiXkVs IMqCl7965TfFXt3jDiqgKK+ZnU6CCfKuPrLDcFcjhqlPyZEVM/B9bN8Lp5p+OdGKNoG/ Xe3Lz5M8T1zeVcW2UbAgZ6KMpdYwKdhhbtO2o7G604d276QyQLyMwgoM1ajLCPdInrTX A4AueyhLbS2TOf2i1ChVjd6vdM8JrQxFCEbwiBsKSRqdLFwiwkfAp6HcAAOkkFS1Wp2D EtWD/pByroUEf37QNXxFHsonlnMbpC3wvSQA72g+7xlvX58kBjzvdsrdJwB/Jowskjfi srFg== 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=ik81o+UM8y9rxnQtE3sfaHnBPQbPViG7TAaDU4YxiZg=; b=bSC5hOwlLCq6es4Cfob47oR/nVVVl3MxjjMJvbAYdQhh6kdvIfxiK1TCSdarSrRbdI UZyQo6pUY3MWW/IrBi2eLSU+WLDX0UrO7tJwEXLliJ05idEG+qmnLl3eD4vFJpvq8gke vuwepxcbg7ikDuTDq/Z0RfSleT1EznI0Spg8KigI6/EVwHf14ucjqBUSmUgfy74fkSPv XPXrab2IDGdBJVmUw55/XYyP0to3K651fpN8YD5quv7gfU8cH1AYaPh2u5puVlrNwfev 5Ahzc/n7H6vd3JBfMilAyuLYjNB92wjh2OyC8MUcfZmlsgs/jx7X3o7ZWxh/LqCZKkI8 cX+Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=S81d0yEg; 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 s185-v6si20181171pgs.499.2018.08.14.01.09.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:09:57 -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=S81d0yEg; 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 931FB210F155F; Tue, 14 Aug 2018 01:09:50 -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 127E3210EFB1A for ; Tue, 14 Aug 2018 01:09:49 -0700 (PDT) Received: by mail-pf1-x441.google.com with SMTP id p12-v6so8940725pfh.2 for ; Tue, 14 Aug 2018 01:09:49 -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=zF2V1j9H0yyfYeulh6U24gWWSvDfTFUnyRXjs9ZZDs0=; b=S81d0yEgn46G13cxIQ01aecqCYJ/oC3Yiru/JSn3ciKhOjHRZLEhu1PDcVgnWSvBBM teABXtbbKIgqZfzFjoBiTdt0VSHuEH9KnQjp+wxbrOsTaS50DUuLlQLia2igS0ncQEZW Qgzoe4e32zQKp8QDbhS1+0c9h6jbpZKmIy5BI= 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=zF2V1j9H0yyfYeulh6U24gWWSvDfTFUnyRXjs9ZZDs0=; b=kYXADQp32ckyG5CZXljjgR7qQE9wbyjraNM3c5nRClg1nE4t+EEkg5Ar6rM2hbgLAn s8egzjU8FxIKq/c7cVoJ00uoF82xwJtYhFH5iXbLeprTYA+a2NZZeb/yYeMMorNkKf5n 4IqTGW2g1zBlsVM0pbEMdVtWkMTUTLup0R/Yv0+EQL5gftp3DysK0f6VjNmSIOtO/7sB tdE0VikuXiar+Jdc6JAWXt2IDWZxuqvWdw/uUgFbVG8ikboLKFXNXbE8yFFUL0Xf2lyC U1shdh0dL3+YrMRdFipO4llMY/u4LPS3HzUvEBNoKzv1qTZto2vUkdMcSQ/LQt5XAAWC CW+g== X-Gm-Message-State: AOUpUlEQl744WEDTZZYhUFuinw8jBg/UmvBZ2FW8jC6pSPHE4dSJNavo DDIKtmipmjg58lqBE4OZDtNllg== X-Received: by 2002:a62:d24a:: with SMTP id c71-v6mr22235932pfg.242.1534234188771; Tue, 14 Aug 2018 01:09:48 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.09.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:09:48 -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: Tue, 14 Aug 2018 16:08:27 +0800 Message-Id: <20180814080903.50466-8-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 07/43] Hisilicon/D0x: Move IpmiCmdLib to common path of Hisilicon X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 IpmiCmdLib is moved to Silicon/Hisilicon in edk2-non-osi, so update D0x dsc to reflect this. 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.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Leif Lindholm diff --git a/Platform/Hisilicon/D03/D03.dsc b/Platform/Hisilicon/D03/D03.dsc index 38548a0f23..c12790ba59 100644 --- a/Platform/Hisilicon/D03/D03.dsc +++ b/Platform/Hisilicon/D03/D03.dsc @@ -38,7 +38,7 @@ I2CLib|Silicon/Hisilicon/Library/I2CLib/I2CLib.inf TimerLib|ArmPkg/Library/ArmArchTimerLib/ArmArchTimerLib.inf - IpmiCmdLib|Silicon/Hisilicon/Hi1610/Library/IpmiCmdLib/IpmiCmdLib.inf + IpmiCmdLib|Silicon/Hisilicon/Library/IpmiCmdLib/IpmiCmdLib.inf NetLib|MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf DpcLib|MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf diff --git a/Platform/Hisilicon/D05/D05.dsc b/Platform/Hisilicon/D05/D05.dsc index f2bbf27639..94d386582e 100644 --- a/Platform/Hisilicon/D05/D05.dsc +++ b/Platform/Hisilicon/D05/D05.dsc @@ -41,7 +41,7 @@ I2CLib|Silicon/Hisilicon/Library/I2CLib/I2CLib.inf TimerLib|ArmPkg/Library/ArmArchTimerLib/ArmArchTimerLib.inf - IpmiCmdLib|Silicon/Hisilicon/Hi1610/Library/IpmiCmdLib/IpmiCmdLib.inf + IpmiCmdLib|Silicon/Hisilicon/Library/IpmiCmdLib/IpmiCmdLib.inf NetLib|MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf DpcLib|MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf From patchwork Tue Aug 14 08:08:28 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 144116 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4048447ljj; Tue, 14 Aug 2018 01:10:02 -0700 (PDT) X-Google-Smtp-Source: AA+uWPx84A9KOBRK2c7DMoBuXd31hrsN0MuYko1t7yahdU4znYRV9e4XacbGl/nUef7bfi2VbghT X-Received: by 2002:a63:d946:: with SMTP id e6-v6mr20431336pgj.24.1534234202628; Tue, 14 Aug 2018 01:10:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234202; cv=none; d=google.com; s=arc-20160816; b=f3SjVRfZT//C1jEua48AQwc2s4oC/wNCSxlAD4NikKHZcQwvfwBZw5fIPwbBBs59ya yIH4/WNjE4OzdtAZlttuPWdVbus4rLpZqmGPTmVH2FDY6D3BL0Mk1eKm8RUTgDYo0I9X kPAzodAm7AOoFKuaKykSBGJemXCLcrYCIgOla+00FcYzHumbQrk/riOUQiQIXVEHEOau xBVFCm5kQK2UN3fCXsWpiGef1BTVQbdFsrzMIvetAU0OD4dN04laPn1nnqvaf7NZveg6 7DXb7K0UbyxX7HevXGrvsaF9VoOEH1g0iYFsrmSoG7y5xfnaOfT5BanntL35s0L1AGIV hDUA== 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=Vg0Ht6vVGNGxfADcM4RJBDRnxbOGKHzyQSaRQIHq9SQ=; b=XNhmMPUnw+TugJ4bRgmud6nJlHmaRmGBBN5gDifIVgvYlGqf0kG01qitJanqluTPng LZOKq87+Bk9ipyXidGxp+5cf/QHNJVn84nbO7uPOcBtja0wGln22yqgfZmjHimxXKWHd bqqcbnIFNckd+ueEj6FTj2cXNrvdgVxznILEmTdrP2MQSdfQiQZN00KHP2DG96zoVzvp EYEiVFyct+KvTdKYocvG+qeSxxMUafEZyejfumCfcCZGD9rDlClespz6M3wqjA5uwux3 07qnU+/PeplpRLRRbdY+iNOoavgUMBARDkHz1nHlNo8YXH6J+3TOgzXq2Ce3t2yE68Rn kpdg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=XlFxM0od; 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 d128-v6si21827180pfc.211.2018.08.14.01.10.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:10: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=XlFxM0od; 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 C1F31210F1564; Tue, 14 Aug 2018 01:09:53 -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 7C8FF210EFB1A for ; Tue, 14 Aug 2018 01:09:52 -0700 (PDT) Received: by mail-pf1-x444.google.com with SMTP id b11-v6so8930392pfo.3 for ; Tue, 14 Aug 2018 01:09:52 -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=Xqy+gVD1Tx6oZtuVdyIVLcO2YeIrpvgNWwGgOo0JhBc=; b=XlFxM0odBSzWjtyREfqwfsjfNt6gnY1YoVAy4ARRUm2xRMoMm7MK58yj3oY1HQy2nb Ma59+kQPjclTtcTXbeJQ2neOBSXEw63HlzEH1c4EUh8lyNMe4yFxQbBdRQn1lJ2OoMmV NMQEg5hC6UP8kkup4Ri6XyfUbNYIRZ44TYISk= 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=Xqy+gVD1Tx6oZtuVdyIVLcO2YeIrpvgNWwGgOo0JhBc=; b=lsalqJdhQzi/1Cm0NOeSvMbSFPLfJcmQCNCEzPeUUgi6cXJGrS9W84wC+8KpbmfZX3 FmYFZNDiuSJEejesTY5Z5aqqPSN8GgKuHR6m3xLOo47vUA2mda0p1Ss81DW8gCj8Q85A l8SmdtAha+A9zHVaQQFyRSR7gC0QG+B7LgA9cg7ULzLo0i1Ow6bKv3/hEdzRIzDV3cva 0cGZqNwvevWCnZxxN8sOzfeGZrKM2iOvHQchzMxHePzI+A9lm/2vpIZklll3FjSGFvVa 4c4yYLh1tYZq2bLYWDwBBp2ACfco2IwmnoUImZ5mHg2acY7XBMQqXCfYQQfsI7BYARsK WeXw== X-Gm-Message-State: AOUpUlGZzoG5ZfUwv0Z4Ei4UvDnpqME1TBbnQOTS9K8BO6tutQlv9mG5 90kZkvhWYaabO+jwpWXOrKVj1w== X-Received: by 2002:a65:4587:: with SMTP id o7-v6mr20397302pgq.317.1534234192084; Tue, 14 Aug 2018 01:09:52 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.09.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:09:51 -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: Tue, 14 Aug 2018 16:08:28 +0800 Message-Id: <20180814080903.50466-9-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 08/43] Hisilicon/D0x: Unify FlashFvbDxe driver X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 PcdSFCMEM0BaseAddress and switch three 32-bit macro PcdFlashNvStorage of D05/D03 to 64-bit for unifying FlashFvbDxe driver. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang --- Platform/Hisilicon/D03/D03.fdf | 6 +++--- Platform/Hisilicon/D05/D05.fdf | 6 +++--- Silicon/Hisilicon/Drivers/FlashFvbDxe/FlashFvbDxe.inf | 7 ++++--- Silicon/Hisilicon/Drivers/FlashFvbDxe/FlashFvbDxe.c | 22 ++++++++++---------- 4 files changed, 21 insertions(+), 20 deletions(-) -- 2.17.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.fdf b/Platform/Hisilicon/D03/D03.fdf index 4591f7b5b1..b23765020d 100644 --- a/Platform/Hisilicon/D03/D03.fdf +++ b/Platform/Hisilicon/D03/D03.fdf @@ -69,7 +69,7 @@ FILE = Platform/Hisilicon/D03/bl1.bin FILE = Platform/Hisilicon/D03/fip.bin 0x002D0000|0x0000E000 -gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize +gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize DATA = { ## This is the EFI_FIRMWARE_VOLUME_HEADER 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -97,7 +97,7 @@ DATA = { } 0x002DE000|0x00002000 -gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize +gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize #NV_FTW_WORKING DATA = { # EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER->Signature = gEdkiiWorkingBlockSignatureGuid = @@ -110,7 +110,7 @@ DATA = { } 0x002E0000|0x00010000 -gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize +gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize 0x002F0000|0x00010000 FILE = Platform/Hisilicon/D0x-CustomData.Fv diff --git a/Platform/Hisilicon/D05/D05.fdf b/Platform/Hisilicon/D05/D05.fdf index 6227607ffe..6fa5b5e6c8 100644 --- a/Platform/Hisilicon/D05/D05.fdf +++ b/Platform/Hisilicon/D05/D05.fdf @@ -69,7 +69,7 @@ FILE = Platform/Hisilicon/D05/bl1.bin FILE = Platform/Hisilicon/D05/fip.bin 0x002D0000|0x0000E000 -gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize +gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize DATA = { ## This is the EFI_FIRMWARE_VOLUME_HEADER 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -97,7 +97,7 @@ DATA = { } 0x002DE000|0x00002000 -gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize +gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize #NV_FTW_WORKING DATA = { # EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER->Signature = gEdkiiWorkingBlockSignatureGuid = @@ -110,7 +110,7 @@ DATA = { } 0x002E0000|0x00010000 -gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize +gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize 0x002F0000|0x00010000 FILE = Platform/Hisilicon/D0x-CustomData.Fv diff --git a/Silicon/Hisilicon/Drivers/FlashFvbDxe/FlashFvbDxe.inf b/Silicon/Hisilicon/Drivers/FlashFvbDxe/FlashFvbDxe.inf index 09ec7ce08b..f8be4741ef 100644 --- a/Silicon/Hisilicon/Drivers/FlashFvbDxe/FlashFvbDxe.inf +++ b/Silicon/Hisilicon/Drivers/FlashFvbDxe/FlashFvbDxe.inf @@ -54,14 +54,15 @@ gHisiSpiFlashProtocolGuid [Pcd.common] - gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase + gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize - gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase + gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize - gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase + gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64 gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize gArmPlatformTokenSpaceGuid.PcdNorFlashCheckBlockLocked + gHisiTokenSpaceGuid.PcdSFCMEM0BaseAddress [Depex] gHisiSpiFlashProtocolGuid diff --git a/Silicon/Hisilicon/Drivers/FlashFvbDxe/FlashFvbDxe.c b/Silicon/Hisilicon/Drivers/FlashFvbDxe/FlashFvbDxe.c index 7c6b64c33e..e18cc9e06e 100644 --- a/Silicon/Hisilicon/Drivers/FlashFvbDxe/FlashFvbDxe.c +++ b/Silicon/Hisilicon/Drivers/FlashFvbDxe/FlashFvbDxe.c @@ -28,8 +28,8 @@ FLASH_DESCRIPTION mFlashDevices[FLASH_DEVICE_COUNT] = { { // UEFI Variable Services non-volatile storage - 0xa4000000, - FixedPcdGet32(PcdFlashNvStorageVariableBase), + FixedPcdGet64 (PcdSFCMEM0BaseAddress), + FixedPcdGet64 (PcdFlashNvStorageVariableBase64), 0x20000, SIZE_64KB, {0xCC2CBF29, 0x1498, 0x4CDD, {0x81, 0x71, 0xF8, 0xB6, 0xB4, 0x1D, 0x09, 0x09}} @@ -145,8 +145,8 @@ InitializeFvAndVariableStoreHeaders ( Headers = AllocateZeroPool(HeadersLength); // FirmwareVolumeHeader->FvLength is declared to have the Variable area AND the FTW working area AND the FTW Spare contiguous. - ASSERT(PcdGet32(PcdFlashNvStorageVariableBase) + PcdGet32(PcdFlashNvStorageVariableSize) == PcdGet32(PcdFlashNvStorageFtwWorkingBase)); - ASSERT(PcdGet32(PcdFlashNvStorageFtwWorkingBase) + PcdGet32(PcdFlashNvStorageFtwWorkingSize) == PcdGet32(PcdFlashNvStorageFtwSpareBase)); + ASSERT(PcdGet64(PcdFlashNvStorageVariableBase64) + PcdGet32(PcdFlashNvStorageVariableSize) == PcdGet64(PcdFlashNvStorageFtwWorkingBase64)); + ASSERT(PcdGet64(PcdFlashNvStorageFtwWorkingBase64) + PcdGet32(PcdFlashNvStorageFtwWorkingSize) == PcdGet64(PcdFlashNvStorageFtwSpareBase64)); // Check if the size of the area is at least one block size ASSERT((PcdGet32(PcdFlashNvStorageVariableSize) > 0) && ((UINT32)PcdGet32(PcdFlashNvStorageVariableSize) / Instance->Media.BlockSize > 0)); @@ -154,9 +154,9 @@ InitializeFvAndVariableStoreHeaders ( ASSERT((PcdGet32(PcdFlashNvStorageFtwSpareSize) > 0) && ((UINT32)PcdGet32(PcdFlashNvStorageFtwSpareSize) / Instance->Media.BlockSize > 0)); // Ensure the Variable area Base Addresses are aligned on a block size boundaries - ASSERT((UINT32)PcdGet32(PcdFlashNvStorageVariableBase) % Instance->Media.BlockSize == 0); - ASSERT((UINT32)PcdGet32(PcdFlashNvStorageFtwWorkingBase) % Instance->Media.BlockSize == 0); - ASSERT((UINT32)PcdGet32(PcdFlashNvStorageFtwSpareBase) % Instance->Media.BlockSize == 0); + ASSERT((UINT32)PcdGet64(PcdFlashNvStorageVariableBase64) % Instance->Media.BlockSize == 0); + ASSERT((UINT32)PcdGet64(PcdFlashNvStorageFtwWorkingBase64) % Instance->Media.BlockSize == 0); + ASSERT((UINT32)PcdGet64(PcdFlashNvStorageFtwSpareBase64) % Instance->Media.BlockSize == 0); // // EFI_FIRMWARE_VOLUME_HEADER @@ -855,10 +855,10 @@ FvbInitialize ( UINT32 FvbNumLba; Instance->Initialized = TRUE; - mFlashNvStorageVariableBase = FixedPcdGet32 (PcdFlashNvStorageVariableBase); + mFlashNvStorageVariableBase = FixedPcdGet64 (PcdFlashNvStorageVariableBase64); // Set the index of the first LBA for the FVB - Instance->StartLba = (PcdGet32 (PcdFlashNvStorageVariableBase) - Instance->RegionBaseAddress) / Instance->Media.BlockSize; + Instance->StartLba = (PcdGet64 (PcdFlashNvStorageVariableBase64) - Instance->RegionBaseAddress) / Instance->Media.BlockSize; // Determine if there is a valid header at the beginning of the Flash Status = ValidateFvHeader (Instance); @@ -1208,8 +1208,8 @@ FlashFvbInitialize ( { // Check if this Flash device contain the variable storage region ContainVariableStorage = - (FlashDevices[Index].RegionBaseAddress <= (UINT32)PcdGet32 (PcdFlashNvStorageVariableBase)) && - ((UINT32)(PcdGet32 (PcdFlashNvStorageVariableBase) + PcdGet32 (PcdFlashNvStorageVariableSize)) <= FlashDevices[Index].RegionBaseAddress + FlashDevices[Index].Size); + (FlashDevices[Index].RegionBaseAddress <= PcdGet64 (PcdFlashNvStorageVariableBase64)) && + ((PcdGet64 (PcdFlashNvStorageVariableBase64) + PcdGet32 (PcdFlashNvStorageVariableSize)) <= FlashDevices[Index].RegionBaseAddress + FlashDevices[Index].Size); Status = FlashCreateInstance ( FlashDevices[Index].DeviceBaseAddress, From patchwork Tue Aug 14 08:08:29 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 144117 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4048530ljj; Tue, 14 Aug 2018 01:10:08 -0700 (PDT) X-Google-Smtp-Source: AA+uWPzNqqC53dGrker8MuGNgTmkbQmQVt3iOgQCKWrxO80EXOWQ05EJ9haODrFY8Zi7nckZYkad X-Received: by 2002:a63:e60c:: with SMTP id g12-v6mr20352437pgh.308.1534234208041; Tue, 14 Aug 2018 01:10:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234208; cv=none; d=google.com; s=arc-20160816; b=uVAeNPT8ky+YjtTisRzYLxJGGJl2QJKoaSBh9ODhN4P1FqLVss8bNnjLV+k8MMHLzo mG+I9agAL54h8tZ8WzOCAH/p7n7Qao10BOhJuhTTrKE4mhjy4BaZXg+yCMeNy/HrB4/i hpKKP0ojCRq94lxoVC+5emTrFBkQM0e/KPkZmFxhG23rWTSbwLKhGjGqC2dw2bD7jjOv 6NtfqdXAG/3J3pPf++4uw1CCteMNYeYVYvn850ywSDlhjEpU60nmxpMQ2JI/G3h2MQM0 YorpbVJxmbACdplkL4o9ITEzizkIJDChh69e1qbL2Pps6V+SrLx7f8L2J/h34FpyNZJF rlmg== 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=Vrcfs5QuJ5tH0+vPRWK44mhvbatT0NypdCBOHR1wAPQ=; b=dl7VfYRQEVs1u24wKkH49f40gqaBuHkJj+7FW2F28c4OawMq4BrBm0HRnwMpk2wZyJ KU4ttwir3ee7fSUhTRRjcNHGzQKXeMs3tpRxMH/ybVZ4MU+ZP7OCk3l9tv2gDDXpATtB rfcNM4d+GRtcgQvfrit97Bl++ZFxg0GgobBsav8ZJHwPLwhiUUOLdZOwSFzwpA7YeIx9 7KYFuFeqW4oiw7ddf15NuAc+ludhk+tEnHUGyKQsitrc8RqdzsCs7koZPYHt5WAOSK9g 8yu7PWHF6PNwrXSqS9Y7NONkMlfQyeXvgsKYjZYr4geUg8b21PMr9qCjeR9eI+tn2Zsv r6bQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=Cxak3xIi; 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 a5-v6si17225703pla.167.2018.08.14.01.10.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:10:08 -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=Cxak3xIi; 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 EEAE5210F1569; Tue, 14 Aug 2018 01:09:57 -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::530; helo=mail-pg1-x530.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pg1-x530.google.com (mail-pg1-x530.google.com [IPv6:2607:f8b0:4864:20::530]) (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 8AA45210F1552 for ; Tue, 14 Aug 2018 01:09:56 -0700 (PDT) Received: by mail-pg1-x530.google.com with SMTP id n7-v6so8786356pgq.4 for ; Tue, 14 Aug 2018 01:09:56 -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=2+kIACdyZVzVZfyGM+RDMW461atvS/HmptGj5L32Yus=; b=Cxak3xIizF49xmfOgK8g1vh6KZGHt+WLBRWycXGJYOAySHH+D6POY1Z1UZhvEBxT8i yoqDZJS8NeJBLZdNKsdBYRoSURiefgxCMMjm0xgrO5bbjeJSSAzusX0OWY2iSW3f/QXV mcdYHF6OKAmFoTFT5YVum4CWV7UJ6VP4sdlB0= 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=2+kIACdyZVzVZfyGM+RDMW461atvS/HmptGj5L32Yus=; b=TdYHttyE+lvKAfiKX61cktNxjnVUabxdNpXFP8LPQF+mzrYtiXepESQx6uiut5iqFP wNiKA4VraiwiZBOc7ZVXHl3X9cII6cDt9Sre3TzCAgKqzIex+UsM1nQ/u+jFi6oybXoQ j5sXuJ5a+oRyXPVojavEwV0OGePlt99aqYcf3yb3+3+mgmTcJzdIr/oMff2IQmgd8VMr kaWVGMJowwgtzaiPM1DAnFzhzQrVq0o3Sh7jvjy2ibQnwB/enZ9uB8nv9cI/WtVIBYvQ 2hF2pAs0y0w5FszGju0fv2vu7EzvFVeJ+dyGTgMgKIB47+V5kq41RtIsqIZMB2vBlno0 H9tA== X-Gm-Message-State: AOUpUlFS4Y/UIFfD7F5t3WduaUF8hlVijkrwdz++7BO1w1GtcVm3TX9H jV27wUyOKjaGag3sC838RJFevQ== X-Received: by 2002:a63:6fcc:: with SMTP id k195-v6mr20109409pgc.135.1534234195375; Tue, 14 Aug 2018 01:09:55 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.09.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:09:54 -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: Tue, 14 Aug 2018 16:08:29 +0800 Message-Id: <20180814080903.50466-10-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 09/43] Hisilicon/D0X: Rename the global variable gDS3231RtcDevice X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 global variable gDS3231RtcDevice is used by several modules included common module in HwPkg. Renaming it with a general name is proper. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang --- Silicon/Hisilicon/Include/Library/OemMiscLib.h | 2 +- Platform/Hisilicon/D03/Library/DS3231RealTimeClockLib/DS3231RealTimeClockLib.c | 8 ++++---- Platform/Hisilicon/D03/Library/OemMiscLib2P/BoardFeature2PHi1610.c | 2 +- Platform/Hisilicon/D05/Library/OemMiscLibD05/BoardFeatureD05.c | 2 +- Silicon/Hisilicon/Library/DS3231RealTimeClockLib/DS3231RealTimeClockLib.c | 8 ++++---- 5 files changed, 11 insertions(+), 11 deletions(-) -- 2.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Leif Lindholm diff --git a/Silicon/Hisilicon/Include/Library/OemMiscLib.h b/Silicon/Hisilicon/Include/Library/OemMiscLib.h index 6f18c0fa72..87cb498dd7 100644 --- a/Silicon/Hisilicon/Include/Library/OemMiscLib.h +++ b/Silicon/Hisilicon/Include/Library/OemMiscLib.h @@ -34,7 +34,7 @@ extern REPORT_PCIEDIDVID2BMC PcieDeviceToReport[PCIEDEVICE_REPORT_MAX]; BOOLEAN OemIsSocketPresent (UINTN Socket); VOID CoreSelectBoot(VOID); VOID OemPcieResetAndOffReset(void); -extern I2C_DEVICE gDS3231RtcDevice; +extern I2C_DEVICE gRtcDevice; UINTN OemGetSocketNumber(VOID); UINTN OemGetDdrChannel (VOID); diff --git a/Platform/Hisilicon/D03/Library/DS3231RealTimeClockLib/DS3231RealTimeClockLib.c b/Platform/Hisilicon/D03/Library/DS3231RealTimeClockLib/DS3231RealTimeClockLib.c index 07fa52aa78..f6dbcf6b75 100644 --- a/Platform/Hisilicon/D03/Library/DS3231RealTimeClockLib/DS3231RealTimeClockLib.c +++ b/Platform/Hisilicon/D03/Library/DS3231RealTimeClockLib/DS3231RealTimeClockLib.c @@ -41,7 +41,7 @@ #include #include -extern I2C_DEVICE gDS3231RtcDevice; +extern I2C_DEVICE gRtcDevice; STATIC BOOLEAN mDS3231Initialized = FALSE; @@ -117,7 +117,7 @@ InitializeDS3231 ( // Prepare the hardware (VOID)IdentifyDS3231(); - (VOID) CopyMem(&Dev, &gDS3231RtcDevice, sizeof(Dev)); + (VOID) CopyMem (&Dev, &gRtcDevice, sizeof(Dev)); Status = I2CInit(Dev.Socket,Dev.Port,Normal); if (EFI_ERROR (Status)) { @@ -199,7 +199,7 @@ LibGetTime ( } } - (VOID) CopyMem(&Dev, &gDS3231RtcDevice, sizeof(Dev)); + (VOID) CopyMem (&Dev, &gRtcDevice, sizeof(Dev)); Status |= I2CRead(&Dev,DS3231_REGADDR_MONTH,1,&Temp); @@ -299,7 +299,7 @@ LibSetTime ( } } - (VOID) CopyMem(&Dev, &gDS3231RtcDevice, sizeof(Dev)); + (VOID) CopyMem (&Dev, &gRtcDevice, sizeof(Dev)); Temp = ((Time->Second/10)<<4) | (Time->Second%10); MicroSecondDelay(1000); diff --git a/Platform/Hisilicon/D03/Library/OemMiscLib2P/BoardFeature2PHi1610.c b/Platform/Hisilicon/D03/Library/OemMiscLib2P/BoardFeature2PHi1610.c index 66d62895a6..4771cb900c 100644 --- a/Platform/Hisilicon/D03/Library/OemMiscLib2P/BoardFeature2PHi1610.c +++ b/Platform/Hisilicon/D03/Library/OemMiscLib2P/BoardFeature2PHi1610.c @@ -25,7 +25,7 @@ #include #include -I2C_DEVICE gDS3231RtcDevice = { +I2C_DEVICE gRtcDevice = { .Socket = 0, .Port = 6, .DeviceType = DEVICE_TYPE_SPD, diff --git a/Platform/Hisilicon/D05/Library/OemMiscLibD05/BoardFeatureD05.c b/Platform/Hisilicon/D05/Library/OemMiscLibD05/BoardFeatureD05.c index 15a509be5d..ae4c194070 100644 --- a/Platform/Hisilicon/D05/Library/OemMiscLibD05/BoardFeatureD05.c +++ b/Platform/Hisilicon/D05/Library/OemMiscLibD05/BoardFeatureD05.c @@ -26,7 +26,7 @@ #include -I2C_DEVICE gDS3231RtcDevice = { +I2C_DEVICE gRtcDevice = { .Socket = 0, .Port = 4, .DeviceType = DEVICE_TYPE_SPD, diff --git a/Silicon/Hisilicon/Library/DS3231RealTimeClockLib/DS3231RealTimeClockLib.c b/Silicon/Hisilicon/Library/DS3231RealTimeClockLib/DS3231RealTimeClockLib.c index 02d6d7f14d..105eb15635 100644 --- a/Silicon/Hisilicon/Library/DS3231RealTimeClockLib/DS3231RealTimeClockLib.c +++ b/Silicon/Hisilicon/Library/DS3231RealTimeClockLib/DS3231RealTimeClockLib.c @@ -39,7 +39,7 @@ #include #include "DS3231RealTimeClock.h" -extern I2C_DEVICE gDS3231RtcDevice; +extern I2C_DEVICE gRtcDevice; STATIC BOOLEAN mDS3231Initialized = FALSE; @@ -67,7 +67,7 @@ InitializeDS3231 ( // Prepare the hardware (VOID)IdentifyDS3231(); - (VOID) CopyMem(&Dev, &gDS3231RtcDevice, sizeof(Dev)); + (VOID) CopyMem (&Dev, &gRtcDevice, sizeof(Dev)); Status = I2CInit(Dev.Socket,Dev.Port,Normal); if (EFI_ERROR (Status)) { @@ -143,7 +143,7 @@ LibGetTime ( } } - (VOID) CopyMem(&Dev, &gDS3231RtcDevice, sizeof(Dev)); + (VOID) CopyMem (&Dev, &gRtcDevice, sizeof(Dev)); Status |= I2CRead(&Dev,DS3231_REGADDR_MONTH,1,&Temp); @@ -233,7 +233,7 @@ LibSetTime ( } } - (VOID) CopyMem(&Dev, &gDS3231RtcDevice, sizeof(Dev)); + (VOID) CopyMem (&Dev, &gRtcDevice, sizeof(Dev)); Temp = ((Time->Second/10)<<4) | (Time->Second%10); MicroSecondDelay(1000); From patchwork Tue Aug 14 08:08:30 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 144118 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4048587ljj; Tue, 14 Aug 2018 01:10:13 -0700 (PDT) X-Google-Smtp-Source: AA+uWPyEk5ke65ZMfEpMiYwBThJNj5INgK2dohHTzbEqHjTMiMTHSieRVzgfK5NlKHvHOuQkSlnG X-Received: by 2002:a62:1b4a:: with SMTP id b71-v6mr21870450pfb.221.1534234213065; Tue, 14 Aug 2018 01:10:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234213; cv=none; d=google.com; s=arc-20160816; b=K56fMtqq1GkpPceQtBSxQ0Ie6mNkG2+GPXOoi91LLcli3bq1I5UjD+4OnkXAynm/9o zurKhaEPjdjRG2sJLbplDqQazJd4kQGWmQcuqwY+e/rUpaVKo07Cv3QpuMLLThCJQnM1 E2VeNE8pOomM8UnQzgPEUeONnZNNW0IIYUAwa8oRbqPm8yOIi+0JgX8P/KolJ2JDitmc EyFMncoN0SXkDbpntc2WFysWKuwBdIX5++b1J8igeCvE7PiGurIgmQ53kaQXEBD7LLxS Jb5V+/03nVe+9LVYoEA/TNnaxtiJp4QFBdjxzdLt7628g1ktVHeOCKZHCfnjh8BUrCwG m23Q== 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=hhEgm0EDHHiDqKBl5vuarYLLB9EDrSvySpsRi2doPKg=; b=TJKdp0xK8v98syS48l7kAUQa+uKZ5q3110uYYKYfgtrJBDs84fMdlkR+PLMwQuMRAO /yVuEf5KFcG97lthFD9h10uz1nZjau/ha+2qnh1VVgsvK7LhRFeIYowwC1EWSe3hZIjU L7ufuat++juEo/relc4i4ETYel5E+rXN067WnT1w9IFxVO+NUxCFTYWMTKnhDgXUbU3A bL+DwYCya3jtp+sANsSXilR/UQe1z5FSZgt77F/XhWIK0CT+YXjQdpUsK0kZuxJOdxVy FIFcNqG1K6YVnTm+iIg7xu+j42PyGQf24pcAqhSpIihuZfEGIzGy37cdA2Lbk30x9Aml TDHQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=Ql71MaqD; 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 o6-v6si20521658pgr.475.2018.08.14.01.10.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:10:13 -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=Ql71MaqD; 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 21CAD210F156E; Tue, 14 Aug 2018 01:10:01 -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::435; helo=mail-pf1-x435.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pf1-x435.google.com (mail-pf1-x435.google.com [IPv6:2607:f8b0:4864:20::435]) (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 D74F0210F156D for ; Tue, 14 Aug 2018 01:09:59 -0700 (PDT) Received: by mail-pf1-x435.google.com with SMTP id d4-v6so8942491pfn.0 for ; Tue, 14 Aug 2018 01:09:59 -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=ckMUkS19m1qrrgQ4svuNzZeyxc91EN6ncPTfVMwCFaQ=; b=Ql71MaqDqV/gfhYlc/hrSaDaFkg4JfwjWRbPPxdHptYSGoi1W+Q2vF1wjeq7enCgq2 Vs31HqRg7B2bxCnEHYv7SdS3dQBtQt1jx2CRoYSI3ciGJNs/J5ak/5J1lH0BWLJKIZyg Q7QWCnYZIP3VADi55w6StifQ+TS79y5LaQCoQ= 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=ckMUkS19m1qrrgQ4svuNzZeyxc91EN6ncPTfVMwCFaQ=; b=cBW0iLvt07Btri3LDGKOddJ5af16VIUTVKKXPSuFgmfY1NqQc7g4O3AyS+1HQ/y56c BpQvclsPeqZv2AMRon8W+IL6O/bzpblJxVRMU6IPc0fYjRHumv5GpF8LlUicMfYZvZHE SKtxTHoFmC27s4qsjzst2ovNpyLD7cn06drHV2xai2eoH5iWJ2cLDC1mfrgMLAxNq8e4 qK1M1DjjJZIssDv31LgFbZs5bved0EIR4ROncqRvrchomyy5+fOTLiG2lj+pJhroq7d4 imVb8CSnFY/+Ozx0ktS8hn8ODRjOn1m7j/tpPltJLK1iOhTTa//oKUCY/pM1285nN9Vo H4Aw== X-Gm-Message-State: AOUpUlFTU19sX6Z9Apg0FWt+NR/cIFsPkolCm4zlnw13N+t+BGdDyRj0 2C10oRDDtZKZeOSinT1/5y8uUA== X-Received: by 2002:a63:9b19:: with SMTP id r25-v6mr20076742pgd.44.1534234198812; Tue, 14 Aug 2018 01:09:58 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.09.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:09:58 -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: Tue, 14 Aug 2018 16:08:30 +0800 Message-Id: <20180814080903.50466-11-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 10/43] Hisilicon/D06: Add several base file for D06 X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 --- Platform/Hisilicon/D06/D06.dec | 29 ++ Platform/Hisilicon/D06/D06.dsc | 455 ++++++++++++++++++++ Platform/Hisilicon/D06/D06.fdf | 351 +++++++++++++++ Platform/Hisilicon/D06/Include/Library/CpldD06.h | 37 ++ Silicon/Hisilicon/Hi1620/Include/Library/SerdesLib.h | 85 ++++ Silicon/Hisilicon/Hi1620/Include/PlatformArch.h | 61 +++ Silicon/Hisilicon/Include/Library/OemAddressMapLib.h | 6 + Silicon/Hisilicon/Include/Library/OemNicLib.h | 57 +++ 8 files changed, 1081 insertions(+) -- 2.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Leif Lindholm 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/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc new file mode 100644 index 0000000000..d14fce1159 --- /dev/null +++ b/Platform/Hisilicon/D06/D06.dsc @@ -0,0 +1,455 @@ +# +# 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 + + + I2CLib|Silicon/Hisilicon/Library/I2CLib/I2CLib.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 + 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 + + # 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 + +[LibraryClasses.common.SEC] + ArmPlatformLib|Silicon/Hisilicon/Library/ArmPlatformLibHisilicon/ArmPlatformLibSec.inf + + +[LibraryClasses.common.DXE_RUNTIME_DRIVER] + I2CLib|Silicon/Hisilicon/Library/I2CLib/I2CLibRuntime.inf + 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/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf { + + CpldIoLib|Silicon/Hisilicon/Library/CpldIoLib/CpldIoLibRuntime.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 + 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 + 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 + MdeModulePkg/Universal/BdsDxe/BdsDxe.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..9567ede0ad --- /dev/null +++ b/Platform/Hisilicon/D06/D06.fdf @@ -0,0 +1,351 @@ +# +# 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/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.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 + 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 + + # + #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 + + INF MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.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 + INF MdeModulePkg/Universal/BdsDxe/BdsDxe.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/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..9539cfdada --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Include/PlatformArch.h @@ -0,0 +1,61 @@ +/** @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 */ \ + } + +#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 From patchwork Tue Aug 14 08:08:31 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 144119 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4048688ljj; Tue, 14 Aug 2018 01:10:19 -0700 (PDT) X-Google-Smtp-Source: AA+uWPyp0EmTgmvNz/l2ijpzxNuFcMLP2kEdS4Xb87dN/ux7nhRor+gd78RoDpFKaMtqJgFmYs6L X-Received: by 2002:a63:7a43:: with SMTP id j3-v6mr19903334pgn.363.1534234218916; Tue, 14 Aug 2018 01:10:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234218; cv=none; d=google.com; s=arc-20160816; b=Sqm2icNhEjsw/dkEZwj7ZrpkOSFkTGdTe9qseMwqR28dpO+TeIs05QOZEd4p9CP1lT /AxAohlo/SwXF386aUsc3z6pRY6LKbvznZw/G29hTZPNCbbzcNnrvHMZPKtH3uFz6jLX 8u1qweCnWjcYEvaZlAnBuy6OhH2qTfhCrYDq3nXH4Cmzg2ZZzOqOmzw6xNlos2cTQEWA ctILnCORDxjp7fc8jVafsBAi4wAzxGvJROSp8/QuyPGaU1pq6RojK+u6jPHPrrgImAHO k9T1Rv52cL6XebcX5m4NJyTzpt11TS4/B0nRWFS0Xm2xdqSugNpYB9w8FbZEUJbpZo4x jiKg== 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=zfKuuQLnhnJypAUrDrIKPdWM5bjoyyuKe1OtGYMdYBQ=; b=x4hX7D57Ck9GO9wgKuZdcEtoYCaPRJyuowa4FBEDQWNlPutgJVetDNgelgNb7IcFiH eWi4tDG/pQ9f51+/drAlJUw/cE6vrtmTgOzYN3msMVS9AfO/qpTyTW5B0UTJKnIG+yop Lurj+Xc55lVyDxrF8bQYM8BrUtUXqRvNqzbuWWs/rD7CEDhEJnqZnlxZUSIUUcCxgMgv 0zRqcl97LM53AJFQvZYS/7fIFKqpewnmku0PMZJ8KMjy5po/PbM5bsa4onxelGiLZvLn YSEVVqnqGm2TGSt85OAj7UGQgTB+wwJqe6NAaEg70mKM8mN4zJ/FcIuFZ4/ySPOzZWL9 FS1g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b="k0/CcpsW"; 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 i18-v6si19312091pgk.595.2018.08.14.01.10.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:10:18 -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="k0/CcpsW"; 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 5755C210F1572; Tue, 14 Aug 2018 01:10:03 -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 DEB5F210F1571 for ; Tue, 14 Aug 2018 01:10:02 -0700 (PDT) Received: by mail-pg1-x52c.google.com with SMTP id y5-v6so8800874pgv.1 for ; Tue, 14 Aug 2018 01:10:02 -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=D3XC6ISsXLjsfiuvBFPPG2n9ofIvYlzWGXj8nFwqt+I=; b=k0/CcpsWZpqCjBxgE7Y0ZjUCMJ82pGiRvDCflGXzcmRV6GcCde3CLYxGNL5WmyjbIF 42vA1xZscizZ9b8KksQ5VqX8FVjo6ag78llpWvWyUakDbcHQ8YjFlK7EBrARh0KmUUhk Snkw8hoSRslUwODsDwNdjb4OMUEhy9eqssi0g= 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=D3XC6ISsXLjsfiuvBFPPG2n9ofIvYlzWGXj8nFwqt+I=; b=WqRGM8XeiuRdy5760fq7BR6xxpsiXVked/XenUSKQvxebVhbEawzakIQPTDVgQLrC1 lDw+FhKmyZajiLXb2GxSo2Cj45qQXrvYQ+wTTT27cefoc6qu9dFllZ7Y9Kcanzz+h7Mc TA0gf+wFcCVCK/RJT7Zhqrk4Ab8YuL89W/Vjk7txAlBs3eCXQLzuJRYc1DLpgN0HFVo9 0wl5uFYv3ZvgCSH17IlX+X1zcQq4AyEtNiy+1ZrZwwnZQuPpg1yymdjUZVeF3EWAwAbb o+CLTX6RXFGfn60HAklDQ4u/47k87ULrXgDZohnzDuaVs27/YlQKRrKquAE/EoA9+n2n 6sqA== X-Gm-Message-State: AOUpUlG+XbH2hq0FAYlXMyARyt2RMUwhQHvl1GuukZUfMV7AWKr0IOIN bQeN+Cm86HyZONvLc8nRiZpl2g== X-Received: by 2002:a63:7e1a:: with SMTP id z26-v6mr20051800pgc.278.1534234202213; Tue, 14 Aug 2018 01:10:02 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.09.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:10: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: Tue, 14 Aug 2018 16:08:31 +0800 Message-Id: <20180814080903.50466-12-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 11/43] Platform/Hisilicon/D06: Add M41T83RealTimeClockLib X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 --- 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 | 564 ++++++++++++++++++++ 4 files changed, 769 insertions(+) -- 2.17.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 d14fce1159..27358f8c78 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -65,6 +65,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..ed10099bf3 --- /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. MemoryFance is no need. +#define RTC_DELAY_30_MS 30000 +// The delay is need for cpld and I2C. This is a empirical value. MemoryFance is no need. +#define RTC_DELAY_1000_MACROSECOND 1000 +// The delay is need for cpld and I2C. This is a empirical value. MemoryFance 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..eabe8dc0f3 --- /dev/null +++ b/Silicon/Hisilicon/Library/M41T83RealTimeClockLib/M41T83RealTimeClockLib.c @@ -0,0 +1,564 @@ +/** @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 +#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 Tue Aug 14 08:08:32 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 144120 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4048809ljj; Tue, 14 Aug 2018 01:10:25 -0700 (PDT) X-Google-Smtp-Source: AA+uWPx4FeLlYU03OL8KWKD7Ah9ME/LxPRxBV8rfSx9a3/X8H03z4F5Rd1GXlC+ZHFX3fIEpB75j X-Received: by 2002:a62:5a01:: with SMTP id o1-v6mr22563226pfb.0.1534234225025; Tue, 14 Aug 2018 01:10:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234225; cv=none; d=google.com; s=arc-20160816; b=DlkVdQVqmMG4zGOzo8uBudftCsWxBQ2OMB3dgooTZNIRZxGKH7f6YHVehNM9whNjO4 ao/FaB6SQ8Xu/EsbwpmtmQHdpCubQWjo3DrNRdtnU/jK1Vh740jkqFNNeaHnrkb/di3R n7qMGkFdeqEqPOZeWlCef6hl1ebFWwOK7zWu293pxoJdcNXxhdrO/N2XikEx+F3xIfGW l8IyT+3L9PI9V4vZ1zdvg2HGi9N5ldL89VR8CFILCTmDBThHfILM+xa4z1nPx6UDo/yA 7ydZWe1yh0xIr6eQrpNwOYcdA7vkM21sXCDIbc7G3Z+84P2v4cjPQ76MMHwyXIiZ+NXU uTmg== 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=yAV3fEcj3vk/WRiWk8A9IrlDnTLuIYINMOxa0diCGNU=; b=YDG0sNgYSnoUr8cQskLkbAz0xjdb/05OqvQi5xgja9J14go5bLnbUvsUQC+YvkHQoz QD3L28vMs9EKT2Ap76R4zIBjAlQLbg1+dvBb2PD+qrt8UzhZPZ+OfFUJ3Ss0bwH6Rp69 DUnk5c6WHYdSNiNiJTgtqf9kMA6RE33kLPW0RumOTsfvILbt/c3aqs6ls39tk2jzGDR0 mTdEyoTitu/AEO6NacEs0MsfN1EZuOw+J8dtUt1r+C/7cd65MKwbcYX9Wa3A+Xyffigo tmVPkFhxXapRw7zvB13UEftSr9xPt/qpbevniw5+/dSjFcdrwcieBZvpLXwksyzIRlr+ GNLA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=DqFhLCP1; 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 a5-v6si17226170pla.167.2018.08.14.01.10.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:10:25 -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=DqFhLCP1; 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 848F5210F1573; Tue, 14 Aug 2018 01:10: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:400e:c01::241; helo=mail-pl0-x241.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pl0-x241.google.com (mail-pl0-x241.google.com [IPv6:2607:f8b0:400e:c01::241]) (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 F035A210F1552 for ; Tue, 14 Aug 2018 01:10:05 -0700 (PDT) Received: by mail-pl0-x241.google.com with SMTP id s17-v6so8030038plp.7 for ; Tue, 14 Aug 2018 01:10: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=GgDgAExpnIxGnLlXIcvskMoKx1CMcn3ljR1z4mSHoUM=; b=DqFhLCP1XF5uhjJLBXn8zcYbvDzVn+Jl50QRkq9OMxaIK99IKcbQ1RdSSg4O8OJCFv uNzUipg8ZQl3rcmvwKssyEDY3R2oae7ZQXe3l+dp9cHbdS//TdeiRSedUaHgAmYFprhu CBXJERxfA5Ca5GibMXsIddtfTYgpF/MQpaS+o= 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=GgDgAExpnIxGnLlXIcvskMoKx1CMcn3ljR1z4mSHoUM=; b=G/4dkMZ3iqZ6muDdiB3tma6qBJWD60NyNjykTqDr8d+CrJZ3f8Tx149LYPxEgHC/fn iLCmVR2yCPNk2UaiV0Rt6BWY+hCc5roAMTqirhB3btUOjh4bg9DP9D6vs7mmrIvngcW/ 3Z01IBeFlnHIvezLALFeq9xwC5eIDceyY1quoeHh23/kyakpt0LtH7+xbBb50Tf+b4b5 BOsfCGIYR2EalW5Q3huBEPUQC3taKvZr1Xzj4C45WK/l24BJkw9ZRC/GE6ENHDEeA6kq ijRHaZbPTXB5mEToxGDu7wp63HkeOoH2AMeXRQbJlwTp2wZ4EJm1hMCE9+Z7uIKnPrVD TVdg== X-Gm-Message-State: AOUpUlFRrzwfFCHftogtD/6mg+rIMGzWG6iUiTgxT1ift2pql5TaUgLy JXwXDwLRx1QWkR2rjxT2Vhze/g== X-Received: by 2002:a17:902:9a01:: with SMTP id v1-v6mr19842226plp.20.1534234205518; Tue, 14 Aug 2018 01:10:05 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.10.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:10: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: Tue, 14 Aug 2018 16:08:32 +0800 Message-Id: <20180814080903.50466-13-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 12/43] Platform/Hisilicon/D06: Add edk2-non-osi components for D06 X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 PcdCoreCount to fix build issue while add binary components. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang --- Platform/Hisilicon/D06/D06.dsc | 7 +++++++ Platform/Hisilicon/D06/D06.fdf | 17 +++++++++++++++++ Silicon/Hisilicon/Drivers/Smbios/ProcessorSubClassDxe/ProcessorSubClassDxe.inf | 2 ++ 3 files changed, 26 insertions(+) -- 2.17.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 27358f8c78..94454569f6 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -41,6 +41,8 @@ I2CLib|Silicon/Hisilicon/Library/I2CLib/I2CLib.inf 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 @@ -64,8 +66,12 @@ 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 + 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 @@ -81,6 +87,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 9567ede0ad..07fe096f61 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 @@ -225,10 +228,15 @@ 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 Silicon/Hisilicon/Drivers/Smbios/SmbiosMiscDxe/SmbiosMiscDxe.inf INF Silicon/Hisilicon/Drivers/Smbios/AddSmbiosType9/AddSmbiosType9.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 INF Silicon/Hisilicon/Drivers/Smbios/MemorySubClassDxe/MemorySubClassDxe.inf @@ -246,6 +254,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 @@ -282,8 +291,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 @@ -335,6 +350,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 diff --git a/Silicon/Hisilicon/Drivers/Smbios/ProcessorSubClassDxe/ProcessorSubClassDxe.inf b/Silicon/Hisilicon/Drivers/Smbios/ProcessorSubClassDxe/ProcessorSubClassDxe.inf index 2275586ff3..a47806f391 100644 --- a/Silicon/Hisilicon/Drivers/Smbios/ProcessorSubClassDxe/ProcessorSubClassDxe.inf +++ b/Silicon/Hisilicon/Drivers/Smbios/ProcessorSubClassDxe/ProcessorSubClassDxe.inf @@ -28,6 +28,7 @@ [Packages] ArmPkg/ArmPkg.dec + ArmPlatformPkg/ArmPlatformPkg.dec MdePkg/MdePkg.dec MdeModulePkg/MdeModulePkg.dec IntelFrameworkPkg/IntelFrameworkPkg.dec @@ -52,6 +53,7 @@ gEfiSmbiosProtocolGuid # PROTOCOL ALWAYS_CONSUMED [Pcd] + gArmPlatformTokenSpaceGuid.PcdCoreCount gHisiTokenSpaceGuid.PcdCPUInfo gArmTokenSpaceGuid.PcdArmArchTimerFreqInHz From patchwork Tue Aug 14 08:08:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 144121 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4048901ljj; Tue, 14 Aug 2018 01:10:30 -0700 (PDT) X-Google-Smtp-Source: AA+uWPzgQUCsmj27DGlaKMgptZedKh1An5PRztTukHBeAeEhI/PTI1H0n0J6/iH7EnMdTFthMhWB X-Received: by 2002:a63:f244:: with SMTP id d4-v6mr19741698pgk.2.1534234230576; Tue, 14 Aug 2018 01:10:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234230; cv=none; d=google.com; s=arc-20160816; b=lJOr6qDFkgzEU/q7KGgYBeNjTT43wWs0aBcVzyt2T2eWhDBt/Zjvz6NI4uLd3v8uCB cTeFKv/NatJrgHTi6zuIlhFuW1vQvHNEOqZb1NaXkQ+wBXfKDvU1iPBzK+QSamGBaVz8 Owfq2ZFlsH8T/rZEQi1IsoesTeHoUasZDObv2WVDNomip2hDJr5bWAd4CCZP3bLNRvxP S3F9u+4G5d9KUeCf7B0dE09WtHmMVPVeln8KTLz/SxnqPY+Y2CwDJs0pG4sqBqJldc9m mc6r+vd5I2nRg5mlL2S7DszIRDA0So1drpZMaauQXF+3ebGAnCh3G38Ijt0NA8fkfonn 9RrQ== 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=lAcHo/zNwYkckE8a7rBGa0S7IqoIsSPft/Z8XSczwUE=; b=iau33Iu6BYghKFZjM11Ipd47P3IOOIPWZsFnZOWNxNbx2B8J2bY6joMhjPQ/Fc2+63 kuvkp9423T3gzs0MwVJPIVmOEijNqSnKF5iJE6Trr9tjOToSZVaC/srqj43wyG7E/FpB Ig6GqjiexU15KxssdVBTZLR8gCUriRJ1jSHSUsRLIlDbLnMeMU3ySnO5z8+4STc8ZiKV +yRukslQyKmTsEFlA7dfy7jGSXSwuY0fcUUe2trrUadaDgLKRrwh6priGJqcdomtMaEc SOXS9jWZ6zkby9TbqqXy4oFx+Zpldus1uSr8akkNsNmDp3YS9Ekc6aKdXca/UodE1IHH lb7g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=PSL+cuGi; 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 bf9-v6si16357551plb.76.2018.08.14.01.10.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:10:30 -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=PSL+cuGi; 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 AF7FC210F16A0; Tue, 14 Aug 2018 01:10:10 -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 DA7AA210F156D for ; Tue, 14 Aug 2018 01:10:09 -0700 (PDT) Received: by mail-pf1-x443.google.com with SMTP id b11-v6so8930673pfo.3 for ; Tue, 14 Aug 2018 01:10:09 -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=9x4xShrTaqSPr7MSPe5kvFaE+fq+13Cl2uznAIjzXUM=; b=PSL+cuGiAdrv/eOKsppnGd+e3ErgE9U4HQ736nz39IOcVdQvWKW0waJqbSxmcRPpK9 O2SOMUvzp8hs+HeTwBJsPWcTCuP0Eyfc/xyDBtx8lAfRuB37/qb5JvM2WUX6viNJO6/A MtvxdNPbfNARS7sPCrySkmKN4ahc3ZkH002Io= 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=9x4xShrTaqSPr7MSPe5kvFaE+fq+13Cl2uznAIjzXUM=; b=mxPYeaVoN1KnaClnJnP5CY6k2OlgBGHsW3nCNa+GREW0FFgbnSoFop+285YgifssGz BihrCQshYueZdbEnYSwVakjdkvwvYBer4JaB0f9Gto/d3bd+sjnny5XMHqargKDrXpbF g7izDkztJzJhBir92adu/uu1TOTM7VhhtWxdUEdibeqx28OV895cc+rIUIUoq66D7HmG YnkgJD6oD1kChv8yn5r+huCAdAQBoY+hOQSnE5vIfrtL9uFy9fkUJAfmJT6o1NQeoW4T XeF7CBCsYDl65Y5itNPYfnt61po/ug4E9CRI67JuSh9duKurNW8sEZYex3cKIncRXos5 1RAQ== X-Gm-Message-State: AOUpUlEh0XneEqAeSvYtJK160qhscil6el9MISV1sOXmhoZgsg2DuVXH 2eqEPSp0eqg1f39LuR+KTMDcMw== X-Received: by 2002:a63:6188:: with SMTP id v130-v6mr20168648pgb.100.1534234209229; Tue, 14 Aug 2018 01:10:09 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.10.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:10:08 -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: Tue, 14 Aug 2018 16:08:33 +0800 Message-Id: <20180814080903.50466-14-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 13/43] Hisilicon/D06: Add OemMiscLibD06 X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 --- Platform/Hisilicon/D06/D06.dsc | 1 + Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.inf | 47 +++ Silicon/Hisilicon/Include/Library/OemMiscLib.h | 6 +- Platform/Hisilicon/D06/Library/OemMiscLibD06/BoardFeatureD06.c | 432 ++++++++++++++++++++ Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.c | 132 ++++++ Platform/Hisilicon/D06/Library/OemMiscLibD06/BoardFeatureD06Strings.uni | 64 +++ 6 files changed, 681 insertions(+), 1 deletion(-) -- 2.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Leif Lindholm diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index 94454569f6..9ca7160dad 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -70,6 +70,7 @@ 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 diff --git a/Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.inf b/Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.inf new file mode 100644 index 0000000000..8f68f7cec5 --- /dev/null +++ b/Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.inf @@ -0,0 +1,47 @@ +#/** @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 + SerdesLib + 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..2cd360d49f --- /dev/null +++ b/Platform/Hisilicon/D06/Library/OemMiscLibD06/OemMiscLibD06.c @@ -0,0 +1,132 @@ +/** @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; +} + + +VOID +CoreSelectBoot ( + VOID + ) +{ + if (!PcdGet64 (PcdTrustedFirmwareEnable)) + { + StartupAp (); + } + + return; +} + +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..046fa05dff --- /dev/null +++ b/Platform/Hisilicon/D06/Library/OemMiscLibD06/BoardFeatureD06Strings.uni @@ -0,0 +1,64 @@ +// *++ +// +// Copyright (c) 2006 - 2010, 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. +// +// --*/ + +/=# + +#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 Tue Aug 14 08:08:34 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 144122 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4048975ljj; Tue, 14 Aug 2018 01:10:36 -0700 (PDT) X-Google-Smtp-Source: AA+uWPxbGF+BiCU8IFb+jlXqNH08AM7ckKvus7jqgK83LA+vTzYbS1lIlesBMakTDzJvX0hv2wmQ X-Received: by 2002:a62:b20c:: with SMTP id x12-v6mr22566541pfe.64.1534234236021; Tue, 14 Aug 2018 01:10:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234236; cv=none; d=google.com; s=arc-20160816; b=ahinsTjhLWMqFc0wt7c3lyE/7Ye4BBRn6g6Fi+/ej41iC5yxijkm+Kd4iOBx7/3qbw ScBovdzia9QEQXCkmBOxOjYCB+K548z95WclCy+St98dI7uFqe0D0iq+GuaWw9qLoKnh HCZnfzBG/JOb6kwZAQzgMC3U9VZDhOQA2Yf26o1LKZCqUF+8lAybNqRC0NTfQcRAv6Kr 1l9K4QhuvbRzP4+J/Gd72709D50bL5EYkjgqENu90Vya+Ug5REc0tLe8wdPIn4F/AC4t 4waKsAPu6r3O0NOm66EMYk1+36GCUsBFJo912Zz/UWxiiXlUY4l6KM48OWRiaEutdqa3 Ir6Q== 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=A+qJsCNBtjyFWyueF+Bhq8rd6f+PjKIIcijj905/U0I=; b=pVA7Hh5FMXBPNKWcYGZHPb+nCxp/n9c3WqnmTVxdlm13YMpz9GSvABA8WDjmpThcTd oPifB6CQ8D2QSbUsys6dvhXA0EUEHnGc50ULU7+TQKeZwhg7XTqGbmNBtAHQsCfPvN3y a+kyyKXrzzbIhvTV7YS478r7uUGgwrC8Dre1GhOVewOcCg+ezQFaTwddDRMhlEHJF/FP I8skl/w/irm0eXznTNiIhdjIXP3U9uS50xSccJGWJo0EeZLMBDnHKrmgg15p72vW/CTG J7eqmU9IaYtOq4XsWOeqjawlINYJCYuhAbWzl9DFzx/TGYD31r6Uz8MZ9FfIyoOECoYb 5PTA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=NGQpEGe8; 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 a75-v6si22233013pfc.106.2018.08.14.01.10.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:10:36 -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=NGQpEGe8; 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 DB4AD210F16A3; Tue, 14 Aug 2018 01:10:13 -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::42e; helo=mail-pf1-x42e.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pf1-x42e.google.com (mail-pf1-x42e.google.com [IPv6:2607:f8b0:4864:20::42e]) (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 0140521959CB2 for ; Tue, 14 Aug 2018 01:10:12 -0700 (PDT) Received: by mail-pf1-x42e.google.com with SMTP id y10-v6so8923809pfn.8 for ; Tue, 14 Aug 2018 01:10:12 -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=MdHy58md5GSsJ5Bt6GPOn0sssywOCk8dOLDqQrJcyi4=; b=NGQpEGe869MdaTHzdEVUAoxF8twO5zUlMKJbutWKnfhNk4lECC9KJLjM0eZgZ+kn+v SnpnF+Mlh8QAEz2tf3C8Qs9YBAj1QP7+e1+Rdf7xoF5RCgMfeoNktQ399oDx6NyA6xhI lW8N7GKHOs8pX42X7HYJUQ6OAIq5inY1PHCNs= 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=MdHy58md5GSsJ5Bt6GPOn0sssywOCk8dOLDqQrJcyi4=; b=Azn1kPw8I4+RVcUqm0f0TCJws8frTnRQQ8HtcNyYIjCDCDg1k/5kYpbkoL7cery8O5 RJaSKr/5nDOyG8EMs3Rtk5Mz29rQWqSX9YDXeTqmlTsffToKhaTHIXLsFInZwaBNTndl buq961XNNxQGMD6f+lCpOyqPwyPVGbZEfI3n7VHrR0/nu7RRfcHnvUBFb1GS61FAbvl9 ZstSQFSjm7uVnc40PGFUXeY1LxXhE52ErAasEMw2N0LH0JAw8aGAd2lhZDsn8wJhOQQT k+Y/3p3OszSnYumBmOUzGtQsDqDM3yUlIpGnICD3uw0zKzPWCvpYIPgY9Wh5p2A5VZxm eHQw== X-Gm-Message-State: AOUpUlEiTwSqi6kMKj/YNfVQdnOBuewC4GaCD7n6UhIvy6yGg3A10IPy RebpzLtgbwXe9HfSW5NOiZAMCA== X-Received: by 2002:a63:e56:: with SMTP id 22-v6mr20487995pgo.438.1534234212519; Tue, 14 Aug 2018 01:10:12 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.10.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:10:11 -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: Tue, 14 Aug 2018 16:08:34 +0800 Message-Id: <20180814080903.50466-15-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 14/43] Silicon/Hisilicon/D06: Wait for all disk ready X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 write the SASDiskInfo variable, D03/D05 will break the loop, so it no waiting here. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang --- Silicon/Hisilicon/HisiPkg.dec | 1 + Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf | 2 + Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c | 43 ++++++++++++++++++++ 3 files changed, 46 insertions(+) -- 2.17.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..b56a6a6af7 100644 --- a/Silicon/Hisilicon/HisiPkg.dec +++ b/Silicon/Hisilicon/HisiPkg.dec @@ -45,6 +45,7 @@ gHisiEfiMemoryMapGuid = {0xf8870015, 0x6994, 0x4b98, {0x95, 0xa2, 0xbd, 0x56, 0xda, 0x91, 0xc0, 0x7f}} gVersionInfoHobGuid = {0xe13a14c, 0x859c, 0x4f22, {0x82, 0xbd, 0x18, 0xe, 0xe1, 0x42, 0x12, 0xbf}} + gHisiOemVariableGuid = {0xac62b9a5, 0x9939, 0x41d3, {0xff, 0x5c, 0xc5, 0x80, 0x32, 0x7d, 0x9b, 0x29}} 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/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf index 7a53befc44..a093f13fb0 100644 --- a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf +++ b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf @@ -49,6 +49,7 @@ MemoryAllocationLib PcdLib PrintLib + TimerLib UefiBootManagerLib UefiBootServicesTableLib UefiLib @@ -67,6 +68,7 @@ [Guids] gEfiEndOfDxeEventGroupGuid gEfiTtyTermGuid + gHisiOemVariableGuid [Protocols] gEfiGenericMemTestProtocolGuid diff --git a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c index 7dd5ba615c..d5f6d78fa4 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 @@ -554,6 +555,47 @@ PlatformBootManagerBeforeConsole ( PlatformRegisterOptionsAndKeys (); } +STATIC +VOID +WaitForDiskReady ( + ) +{ + EFI_STATUS Status; + UINT32 Index; + UINTN DataSize; + UINT32 DiskInfo; + UINT8 IsFinished; + + Status = EFI_NOT_FOUND; + DataSize = sizeof (UINT32); + // Wait for 15 seconds at most. + for (Index = 0; Index < 15; Index++) { + Status = gRT->GetVariable ( + L"SASDiskInfo", + &gHisiOemVariableGuid, + NULL, + &DataSize, + &DiskInfo + ); + if (EFI_ERROR(Status)) { + DEBUG ((DEBUG_ERROR, "Get DiskInfo:%r\n", Status)); + break; + } + + IsFinished = (UINT8)(DiskInfo >> 24); + if (IsFinished) { + break; + } + DEBUG ((DEBUG_ERROR, "%a", Index == 0 ? "Wait for disk." : ".")); + MicroSecondDelay(1000 * 1000); + } + + if (!EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "DiskInfo:%x\n", DiskInfo)); + EfiBootManagerConnectAll (); + } +} + /** Do the platform specific action after the console is ready Possible things that can be done in PlatformBootManagerAfterConsole: @@ -583,6 +625,7 @@ PlatformBootManagerAfterConsole ( // Connect the rest of the devices. // EfiBootManagerConnectAll (); + WaitForDiskReady (); // // Enumerate all possible boot options. From patchwork Tue Aug 14 08:08:35 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 144123 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4049066ljj; Tue, 14 Aug 2018 01:10:41 -0700 (PDT) X-Google-Smtp-Source: AA+uWPxfc5Y583g1D8i1YvE/oBO5ejqE9HCB0M7HvTweZrP+6EWQJ7+zhrRYUQ3IrCZjMuBDJF2S X-Received: by 2002:a63:f919:: with SMTP id h25-v6mr19431817pgi.401.1534234241429; Tue, 14 Aug 2018 01:10:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234241; cv=none; d=google.com; s=arc-20160816; b=zc0XbaqZ4BJJZpP4syee7ooR6c5yHTtwGgdRP748ESbzGW+vW3j3R31HLmaakqzCCF tU9k/ezA+FZOXuOK3Bj001qbBtbhaP9awCDeRVPrCNCxBa+gzrVG6ssj5WAnY3zyz8wM qV56qvgKWFtqcdFDdI1HsITB1uRTFSi27D0I42xfZGJOhIeLSLVagmOowbtA2l3vnZP1 quSwyYeOu6/fog75F0fH9Ump1MhIK89uORHmn/TcJpnO/6jDsY58zHvMQ7Q8j74IB1kg 4MfzGReu0qGppHK5CumTuCKVHZ2xBRLbQuIg2isJk0Sk/Q99y99rQALb3pCQlbm7+8Ck XICQ== 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=fcBBIox+pDMhSr4vK29LO1bgfmFSnAtKk5f5jcVO2f8=; b=jZRN1jMHc/d4dQXy7jd/g7ubBGLqpLnX7gzEeJkjFoVgwSEbMHMK+e1BrOsObwEOwX hvzdvVGRHdHbBsJl3ZT4dnYODGEZQjOx4MTevgB48QOC9F6+LN6laRTNJPefQmVViwRo dhD6Sc0r+8fhZm9c7he4LWcLUdMeDAO3Oi3xcdoz8Nhbt1IjVHxuzwzBtjViWQ7xDmhA l9x6mFqP5ZLPS4h4LXy84wcaYtclcSjhuCI7Da2r5AfVei9Di03XxI/6ra8IKhsiMbZw M12Yg6hHZeifbY53bUdtO+H+DDHHlpsOvxR7WvgumwOtnCD5nlhRTzBWSM/Rd7vxchKH miPQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=Xk2f+l3Q; 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 p187-v6si22529049pfp.27.2018.08.14.01.10.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:10:41 -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=Xk2f+l3Q; 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 1AF49210F16A6; Tue, 14 Aug 2018 01:10:18 -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 1B29C210EFB15 for ; Tue, 14 Aug 2018 01:10:16 -0700 (PDT) Received: by mail-pg1-x543.google.com with SMTP id y5-v6so8801103pgv.1 for ; Tue, 14 Aug 2018 01:10:16 -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=AxFXUEiNzg/SsU+++cS+C9fzVZayu+zRoOWJ8Tmk3fM=; b=Xk2f+l3QG3g07b2XflxAnC2lHKcn3JxaCkOpLE8tHlePAxQwbqRI0xfvQHB2ikwydS HK8mxgXvOIFIQOgnoQTb/AnI9GjUuFONlAxm8aQD76pp2UQlGjgSzFTHfp/36a8C5XiI ge088ksZ3FFEH4xwpZZMtTXpqxuE3pnQbpklE= 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=AxFXUEiNzg/SsU+++cS+C9fzVZayu+zRoOWJ8Tmk3fM=; b=A4BWi04LKF9Ccx8OjX5ghxG19dASLCWhurfx+9i0yR96zfWCtb87NrHj4/go69yHks 9Q+A1Gms1opiUChpuouXLrXQZcHkoUeEchWX4EapkBPEJatq9WPJIhpDNLe83DRuA2ZK i5Wp072YSpYQ0MkNQi0jdCACBfabIHA1qjwkGmz0TATwuNSfrRMDXVC/G4g0MXn1I5Wr rxyoiyjgEHJNe8nvK2ZwnkbPcitPTO4DEOyjWvTN5L0DE3pzXwz/1LRDwlsxMREhg3uQ huHBO2nOgt2kzNbx2+tBGju8JJIEYVbYuek5DHBjps66bG7ZTSBwAuffPxFb73vqYGYo aw6A== X-Gm-Message-State: AOUpUlHcfp+UrnA99lp0LW6MTfn8iZJd46VE6ACuQNfBKOlLQBvJmn3D MY/DRzJyK9uWldDL5Xx66u+UVQ== X-Received: by 2002:a63:1902:: with SMTP id z2-v6mr19728676pgl.86.1534234215781; Tue, 14 Aug 2018 01:10:15 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.10.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:10:15 -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: Tue, 14 Aug 2018 16:08:35 +0800 Message-Id: <20180814080903.50466-16-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 15/43] Silicon/Hisilicon/Acpi: Unify HisiAcipPlatformDxe X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 --- Silicon/Hisilicon/Hi1610/Include/PlatformArch.h | 6 ++++ Silicon/Hisilicon/Hi1620/Include/PlatformArch.h | 6 ++++ Silicon/Hisilicon/Include/Library/AcpiNextLib.h | 31 ++++++++++++++------ Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/UpdateAcpiTable.c | 2 -- 4 files changed, 34 insertions(+), 11 deletions(-) -- 2.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Leif Lindholm 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/Hi1620/Include/PlatformArch.h b/Silicon/Hisilicon/Hi1620/Include/PlatformArch.h index 9539cfdada..f3ad45f6c6 100644 --- a/Silicon/Hisilicon/Hi1620/Include/PlatformArch.h +++ b/Silicon/Hisilicon/Hi1620/Include/PlatformArch.h @@ -57,5 +57,11 @@ 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/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 Tue Aug 14 08:08:36 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 144124 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4049146ljj; Tue, 14 Aug 2018 01:10:46 -0700 (PDT) X-Google-Smtp-Source: AA+uWPzvgJtWKEt8FSEYMmsg+R1ovTxqSD0/CRkkcsEW6rfq4wXePOvPBK8jkA+z7OV4J7jQ7v4u X-Received: by 2002:a63:67c3:: with SMTP id b186-v6mr20332433pgc.5.1534234246530; Tue, 14 Aug 2018 01:10:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234246; cv=none; d=google.com; s=arc-20160816; b=jO3k07PA+SZJAsuQlELEHsgfOgsZgtzPxI1FCQ6KS1XLUm+aQorO/n+/ENj5ruvTj5 NC8xTYlozsCN7JBi1iSeV5YNpIbOBUJ9mabaVye6+cksGMuPXuw3hRw4inTjJe3Jp6U3 ua+qBQAxtdJlNuPxukqGjVkv0uUMHvdaIg9FZ96o+atghSbhCLFuG+du0iT97DdmrOGR 5TMWnCbRj5QAnkFsZuHJDUg1tJgolF0Rw+u/k08Yy+MwUOyTloIGm/g+NQyJmbFyBXOI bW1iELTN6k2C3zPZFnFYBm3cGLL5NhuZH3HqJRqzPT04HRa8m8M1d+2EW2uqrEmhk3oT 12Bw== 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=+lBvNY6uECsOfOkCcm8ZXKOBjqQCE3MzNG1fqnkE7po=; b=qRJ8GgDTNPc9VbXVrUizhr4V6Ag/zHdTADbJgORqFoird5qlssc5d8MIF/8nZt683w CM6w9cBIPZDNHrpNbYzpjh5ans+hWQsip0/7UQFcAIo2cMsS9KK2X8/JajqIOuEdZUeW E76MzNAg7vq0DWDi74/sHN7LYmMuNU8hL7xCHGcNH0/kemrC26PhAurEl+kj2huYwyeu FDc/ipGJi9iPEUwdty+dMt4BSyOIE9zJYk2J1OZIDv86HHYGc1x/lfPwT31pPAsFI3X/ 5sfYH5NgvTEdG7q6/iiFTq1UHXAlJHphllUnTtv12/dCTj77fAsrfZzXyzZmS7gRe1xw sT+w== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=HOi84ilX; 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 11-v6si18647063plb.383.2018.08.14.01.10.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:10:46 -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=HOi84ilX; 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 45345210F157F; Tue, 14 Aug 2018 01:10:21 -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:400e:c01::241; helo=mail-pl0-x241.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pl0-x241.google.com (mail-pl0-x241.google.com [IPv6:2607:f8b0:400e:c01::241]) (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 5F14E21959CB2 for ; Tue, 14 Aug 2018 01:10:19 -0700 (PDT) Received: by mail-pl0-x241.google.com with SMTP id e11-v6so8033464plb.3 for ; Tue, 14 Aug 2018 01:10:19 -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=XHsReVnvsCSz2Wp52tStbNUTqg07RcGISkhjijctI0U=; b=HOi84ilX0tWCFMR81/OBae2PlMVzRVeygI6PFF5aCXKED+F4HPqjUR0V84T2sD/D6b VMc8HbKBUPy8+5Gzk9ZCnvxd4ix88XtcP9h2nWt9uCfRMNR7wZQz1UVDea8rUrXgz6Dr chHZsH+WIP3Q4SK3l3zJdEvN4vq0E4QdI4eXg= 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=XHsReVnvsCSz2Wp52tStbNUTqg07RcGISkhjijctI0U=; b=WK+aB50rGRHegzODj5hs7Nfj3xssfsQpP0VPB/4rvHB0PscR+TD3vKMOi3luCk1FHs paf3LkzoCrjizK+Ek/WTAe4yfYf29ftKrOhUzDng+LfjzSLOjfBIwi3Ig0oB+1SiLbCY R9bB95HNomaWaETl/4kIbfJB8AyhzCl6BBwbHQplEXLNlOjEo+3W2ISb1ESnP2f+eh8n vV2VZF4znH//0Eb4rHkel8MquOcoKtMSTLOrJbsK+MZbglfEL4aiFJuEYvaZYUYQDSJA mT4Gy0Ky/NFokVTm19EYxOO1CsH2ys22l6DYX9HoHJ9oNnSXJ4ImYQR34vkZQTrQ66sn Qo8Q== X-Gm-Message-State: AOUpUlHzLPWXuA+P8MF3fGcCM8JjmGK0ttZGuuOzotdA2fsGTw1Zslab /GYD0UEM0BwjLbc+NNsJWQQgjg== X-Received: by 2002:a17:902:262:: with SMTP id 89-v6mr19276773plc.221.1534234219058; Tue, 14 Aug 2018 01:10:19 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.10.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:10:18 -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: Tue, 14 Aug 2018 16:08:36 +0800 Message-Id: <20180814080903.50466-17-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 16/43] Hisilicon/D06: Add Debug Serial Port Init Driver X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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: Heyi Guo --- 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.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Leif Lindholm diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index 9ca7160dad..20d2d2a1b4 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -422,6 +422,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 07fe096f61..8cac126ccf 100644 --- a/Platform/Hisilicon/D06/D06.fdf +++ b/Platform/Hisilicon/D06/D06.fdf @@ -303,6 +303,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 INF MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.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 Tue Aug 14 08:08:37 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 144125 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4049224ljj; Tue, 14 Aug 2018 01:10:52 -0700 (PDT) X-Google-Smtp-Source: AA+uWPz35b7YLOqtfM7Psv8GsAMrgbqruCpFGnEXeL2eOgeaYvajLyWS4azzaTPLbgARvASrovXS X-Received: by 2002:a63:ef54:: with SMTP id c20-v6mr19709220pgk.368.1534234251828; Tue, 14 Aug 2018 01:10:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234251; cv=none; d=google.com; s=arc-20160816; b=U8d8HB3CJBgeu6KY39bZnKaYBM6v68L2Wypv9wuCo4tBbZ3IwPQCeqDGdTmEGMtxfF +PRGVnuJAFymFrWXwqHE8DT08lYw7auKGtWryk2fCZyboRWeBdDDbvaWzLXInCeIY16n HEcc7c6PEWAQEVB2dclESpFgNBmYK0gQqyqBFGPakgVTioU6LUCEdDOQi3cWBCsE0Yil kR+GUt7VQkjPb3iG+z7kmXDCh3eI9aQxlhySxzmaejomadhGj8suoSdzRgIyDi06Qq28 lnHqJriTS3KMfEWbSIqfdJ88zoWznhL8Jymgkcx2BtiCEyiINqk3l8ZzPURzlpMesdxV qv0g== 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=vn17U1xoyp0Qd4DcXm/roP3r5aZZND6AsFy554snEFo=; b=D2kTGW4Psvv2vL6/GSMPwOyD96D8uk/Q2sr7fK9fyqSBCdsB6ltFPeXG+D2Ix0w5C6 sUUrqG77K/8+y5XaBxLJbBaso9PSjw9LxbLPa7SBSWAioSF7zdDiKCgLKuwsU8c1u4yO ZKQBUPrkrPlBazUC00UhEP3KdoBv82gorUgK6znPA5+l6e1Y6dVANIr5ZunKmveOHW8g I4g8VpYrZ+EYCt10GcBMSrnrH8osBmD4hTfpREKdFRKfsTOVOxeM4nontXRqVzKL2Dwr lpYT5FYxZ+2r/dWmWspzSODSO6kS8WISzJsbTyyLpM1eNnBFKV2eqijqDSaj4Lv1lwQI uqew== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=e27zgE0D; 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 g21-v6si20631181pgh.686.2018.08.14.01.10.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:10:51 -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=e27zgE0D; 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 72FC2210F16AF; Tue, 14 Aug 2018 01:10:27 -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 9960C210F154F for ; Tue, 14 Aug 2018 01:10:26 -0700 (PDT) Received: by mail-pg1-x542.google.com with SMTP id y5-v6so8801256pgv.1 for ; Tue, 14 Aug 2018 01:10:26 -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=3j4TFhxfrXjk3ucPbCtVHlxIyQXScDgPrS/s5rD8z4I=; b=e27zgE0DSQpgXzk9mDroCOUpOhmghLEfwkiMKeR9u95c0Psid0mGQi72+NBRelThY6 IVgxVt16Gpo6CgGJj8tbcqf5itsJ0Kw9hHzcqoQMnGffN1FZnaA/KyAaaVtxF+VqdWk5 HY2hreF8ZA023C68Ze3VSdwt37soEUbBj8XgU= 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=3j4TFhxfrXjk3ucPbCtVHlxIyQXScDgPrS/s5rD8z4I=; b=Kvae5sF3XNcsefa5/qy4PxBLo3q/TeeYP6LWP8sg31TULYAeAqEsY7J05uNxvfEHwD iwmN34t+AtIIhnI1hC8d0AQTWzSVl44WUel/Q7FuOMNS6DEvoECVNmCqTisbX9jdAQmT JhA7GtQX0GNThizSO/IGtQ8YiXnoChahfdLzt1qGzFDwyff5Znjb8ARHknerPlBZpbFx o1HwRnN6+OPy0/eTejqVDn9qAOLn/T7Csvv3VjABo5I2K9zRDroJ6WTkFvZTXHeY2c7f Q7tzN9BM9QYsnSC1hBskw1eW/LV40mS/D2L4mds8K1lahMyfzq0qI2I2pP4TVdiLfxDm Z9eA== X-Gm-Message-State: AOUpUlG38P2jFRJxU9IQwTQgdzjQ9FXqkWyNNJzwry1LeQeca6lBqNt0 Q4WoaH2AOlsMLxZNCk3uDiBQsQ== X-Received: by 2002:a62:198e:: with SMTP id 136-v6mr1088772pfz.103.1534234224659; Tue, 14 Aug 2018 01:10:24 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.10.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:10:23 -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: Tue, 14 Aug 2018 16:08:37 +0800 Message-Id: <20180814080903.50466-18-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 17/43] Hisilicon/D06: Add ACPI Tables for D06 X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 --- Platform/Hisilicon/D06/D06.dsc | 1 + Platform/Hisilicon/D06/D06.fdf | 1 + Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/AcpiTablesHi1620.inf | 59 + 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, 10620 insertions(+) -- 2.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Leif Lindholm diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index 20d2d2a1b4..9d4a86a4f4 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -332,6 +332,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 8cac126ccf..06203dc079 100644 --- a/Platform/Hisilicon/D06/D06.fdf +++ b/Platform/Hisilicon/D06/D06.fdf @@ -249,6 +249,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..4157e0feef --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620AcpiTables/AcpiTablesHi1620.inf @@ -0,0 +1,59 @@ +## @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/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..5a6aa9a876 --- /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 <../Include/PlatformArch.h> + +#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 Tue Aug 14 08:08:38 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 144126 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4049395ljj; Tue, 14 Aug 2018 01:11:02 -0700 (PDT) X-Google-Smtp-Source: AA+uWPxL6cPsn9n2L8xz2ewOsa+jNgaA9r3N5XxJ2jF9uqP1U1iadlcoWpgGvKet3HNGKrvEbP3v X-Received: by 2002:a17:902:2006:: with SMTP id n6-v6mr19345794pla.325.1534234262310; Tue, 14 Aug 2018 01:11:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234262; cv=none; d=google.com; s=arc-20160816; b=og/XnkgLRJ7Xb+3jOc03/OECBQD+s94C7sAam/LFwnfrMIi8I0z0WY2+4sbL/JlE5W IebQWdZIbuWSFdz9ATaoo+HHonwiQZNT/B3KTmgiEWcmzfRyX80h4dK4SP1HaVVJ+qzB joaU20NCW4kCF8SYl4L+YjV7uE22uJCwF66KSASKwQDmpP1Zt4KByIeV4pMNIAv39Jo4 1fITvNDCfDYJGVGfRcjjs5jj84xHTCTUHsiJ/TNjgjYT+izpbuqjhXYJUwKmWWz3f7uW pP5MhDZRJq+VOVT/o5KwAN7w0PVX+U1WFmKAqeWpse3Q1WzGyY/gwMcdF8Oz3aXv/JgY WGQA== 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=uO7s6VTUBzrPmE+4OaHAqXRax3dmkTvkifOu4cczL4I=; b=Coc1NvzwV8FhPIOohDqIiVmjbMCCl6oHYYSODugEkzzT9AG4GgusClX+ppXQYEmdRZ G8Mp5b9ofAZbyO8SntKY3kzHOSjPCDUjNF80HY+PbOs1NDF4e8mXsD1C+YJnQ9GiGO/c Bl4yUNDClSFSc2in6Y1SWhD/w74soiu9kZNNE3uUp9uMC8F6NFMCOEIVlUr443iG9BUw XZEXcnF3DiPzIaVWCOmujwFWZyLlzTXhhK2RpbmdthkoA7Sbs18udK/C8Z+dMJezuMXK QbgV+Rg7VU/nxZz/cZ76yt1Y5h8PGoqilPF0qFBNQJoMepAianuUuDfYwaU8FbAYcJD+ CvxA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=bn7jhcr5; 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 y3-v6si19175529pgi.338.2018.08.14.01.11.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:11: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=bn7jhcr5; 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 DF658210F16BB; Tue, 14 Aug 2018 01:10: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:400e:c01::236; helo=mail-pl0-x236.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pl0-x236.google.com (mail-pl0-x236.google.com [IPv6:2607:f8b0:400e:c01::236]) (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 16B68210F154F for ; Tue, 14 Aug 2018 01:10:30 -0700 (PDT) Received: by mail-pl0-x236.google.com with SMTP id d5-v6so8041073pll.4 for ; Tue, 14 Aug 2018 01:10:30 -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=8I0vRNOiF0oN390nbQ5RY7r8gSubyAmW1OA7w0NlhvA=; b=bn7jhcr5kazQjBTOhiR0vuTviy2r/PMAJqKC2jDQTF1IJt4wo44EXf+V/5NIrzYiBt md4VQsdPme9hcdfetwVHf4MgS/1gdvhtaNyxZGkp04ffXtZzXaa2R8/tzaR0OrsQpQIa gDlbIn0kf0tygyVzIeog8PzWfhw8/AhzbK5jA= 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=8I0vRNOiF0oN390nbQ5RY7r8gSubyAmW1OA7w0NlhvA=; b=k7BizNM2dZAhQGWqgob10W3zILRBfm9Lc4au+ynT6vAf3TS8K5kzgqf3We6Zbbg6Iq Eq3ZfjIiP2irjRLwRsTeDBvUQzMdVvielr5EmZpN7m9WkSRNVwzM1cOW1e019lLV7yvW WbHb2qOhBTq2d2bXX7eUdBRxrVR0PGhrVL0JnmB06+B0PI25FZjD2S0ohtyNLOJpiFZf 6uBYt+xgmCml2+D5ezEvwxDOfyJTxce6U+XoRnPbbRHNN2IwDQH5vLpIv+sWp/e7Fxbk j+TDVkTiK1oG36EA65zWNnJZROZkd0L8RnnYdgiL9BgC+5TB/Y6KNKqWo486hr5dbt/z ud7A== X-Gm-Message-State: AOUpUlHZSrduE2a251yUBly6+Key6y3lGi+CaA687g4ch7kYurLseoFi Tkd8/aIsxAJKgLLuJY9T4X4xnA== X-Received: by 2002:a17:902:1665:: with SMTP id g92-v6mr19585100plg.293.1534234228459; Tue, 14 Aug 2018 01:10:28 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.10.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:10: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: Tue, 14 Aug 2018 16:08:38 +0800 Message-Id: <20180814080903.50466-19-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 18/43] Hisilicon/D06: Add Hi1620OemConfigUiLib X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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: Yang XinYi --- 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 | 84 +++++ Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.c | 363 ++++++++++++++++++++ Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MemoryConfig.hfr | 154 +++++++++ Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MemoryConfig.uni | 103 ++++++ Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.hfr | 41 +++ 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/OemConfigVfr.Vfr | 89 +++++ 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, 2076 insertions(+), 2 deletions(-) -- 2.17.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 b56a6a6af7..858b840a57 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}} gHisiOemVariableGuid = {0xac62b9a5, 0x9939, 0x41d3, {0xff, 0x5c, 0xc5, 0x80, 0x32, 0x7d, 0x9b, 0x29}} gOemBootVariableGuid = {0xb7784577, 0x5aaf, 0x4557, {0xa1, 0x99, 0xd4, 0xa4, 0x2f, 0x45, 0x06, 0xf8}} diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index 9d4a86a4f4..bec422670d 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -330,7 +330,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..fba619e9ba --- /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..478821ae2c --- /dev/null +++ b/Silicon/Hisilicon/Include/Library/OemConfigData.h @@ -0,0 +1,84 @@ +/** @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; + UINT8 EnableSpcr; + /*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/OemConfig.c b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.c new file mode 100644 index 0000000000..1e3635307c --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.c @@ -0,0 +1,363 @@ +/** @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, "OemConfigUiLibConstructor(), Fail to Add Oem Hii Package.\n")); + 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; + Configuration.EnableSpcr = 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..9e3ac73116 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.hfr @@ -0,0 +1,41 @@ +/** @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; + + oneof varid = OEM_CONFIG_DATA.EnableSpcr, + prompt = STRING_TOKEN(STR_ENABLE_SPCR_TABLE), + help = STRING_TOKEN(STR_ENABLE_SPCR_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/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/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 Tue Aug 14 08:08:39 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 144127 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4049475ljj; Tue, 14 Aug 2018 01:11:08 -0700 (PDT) X-Google-Smtp-Source: AA+uWPyoP6Tiprzcc1YFcP6FfrVpkNmZUD494FDfPu8WTeR+golt2cf3G7RNonr0sxc/Qzxb3eD/ X-Received: by 2002:a62:5a01:: with SMTP id o1-v6mr22565349pfb.0.1534234268863; Tue, 14 Aug 2018 01:11:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234268; cv=none; d=google.com; s=arc-20160816; b=d9reArowaEUEKAUoQ5AMAll+LMD/W0ETsuMD0wUdlCV2CFuMNmihhE0tfyTa5Yakml ys4tgJT7OYrr/oosOoiUlne5EGYh4Sb4/iBccIpRNqFfjegBn5QaS7NX6FlxHfhL13vr Lu6Il/R7sliSmt3C5TIshNawSOBQxbnEeW11TNvWkjjPThOTwTbgjL7N5Hl16W3EGawD HdBmQ+5w/ILBL+BDbX+azGtlWeqYtle8m6FEjSPsdx+v+5K7KaEcMK4bSXrv4Zo1z8Zn f4DuKL7h7jV9lRURPyOgnuYcN49A1mJ397dL8z9R+OkX1uTqWb7BB1Nl38hrc7DlK8cD HzRA== 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=1ecmddHzyt9Vu86RI68Np1asO2omoGZXczH3ItN3a+s=; b=WQapLqSSl9pesTz1O7AHGuFCDxFWfWob+U/qdmcOwAXFoQpo5S951xn3ElnlTjbteB do4WXZ/R1yXC9o4WM3pE2kfSVjtHXI3HIVmJtbK8rAJUMNM+xNVKWD6KIwWEtWYEqHH0 Ru8ihBS866X9/zGUt67ye5vzBoi7+/Wxqw9rolzsYpOhDEsa5pG+lS0L+mB9zivL5PXs r9bzFqs/TWD8h+B2QFQ73/ZVGad6as5Ib5iijTEeUiI+bAwEoMBMIw68FNHX3c1vOLDs bh0mOCn8Q0Gw4FPC83Gmv6ViEBu2cxIiWPp7DhxjgbBIaPJ1XDx5rHdiHx5SxHwxzf/j NqAA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=EpDoUfIO; 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 a15-v6si20780833pgg.611.2018.08.14.01.11.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:11:08 -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=EpDoUfIO; 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 18D0C210F16C0; Tue, 14 Aug 2018 01:10: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::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 22FC7210F154F for ; Tue, 14 Aug 2018 01:10:32 -0700 (PDT) Received: by mail-pg1-x543.google.com with SMTP id w10-v6so8792008pgv.2 for ; Tue, 14 Aug 2018 01:10: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=bizw6HCjJMeh86ye8jLsQbr9Rf8dBvs/mNxVQvOCm3E=; b=EpDoUfIODlggny6HA4D498VO7/jUAmyvXmdheC2HhYyhUuW5zXWxqJ3oLTpeApu+l0 BBtYE7nHrBG4sP4RDAXpPZKUCHJqs3+OGUPTxSWqm5onjXSpFeIt9MkMJCgYckKWXZfH V/IbewcUN+rx8xvRbKD0FoG+AszK+YTTisfV0= 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=bizw6HCjJMeh86ye8jLsQbr9Rf8dBvs/mNxVQvOCm3E=; b=sSQaL6yMwy9fUqIzJwC34AG+fTmmOZAIwvBoDbfrLbdutTOmkX3UhrQGgBvxhHZLKH DcR9GLsrfPnMroRgxmz4ienbxFg6FvrXZ0L3fvGmfvE195y1AneRh6wg7XEemCAjSgIJ Ra7wquxIz8nGbG1XqOMOGymf1VxHkcR9KERc922+j1PtCrjeuNblUuQwatEwdARsLk+z LliMkUkgqojZGvg2KaQ2bCqKwN7LVYzk8Hnb+pwNVpJaBed5lv4nYR+5qpprLCcxGSqZ 91eJ+su8l5eHSzA0lk/xZS+fErmL9ZWx99PFQs3SDjE3alhJWFP8S7rGkT5bg6iSBx3X Jk6g== X-Gm-Message-State: AOUpUlHgVyxJ3RHanGKAbfTOIueJeL84lCpUqyB5umOVpTPe0fSBWsIm V0iQm4p/C4cXKZzpSk2E6/sFsQ== X-Received: by 2002:a63:416:: with SMTP id 22-v6mr20179537pge.229.1534234231867; Tue, 14 Aug 2018 01:10:31 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.10.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:10: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: Tue, 14 Aug 2018 16:08:39 +0800 Message-Id: <20180814080903.50466-20-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 19/43] Silicon/Hisilicon/D06: Stop watchdog X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 --- 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.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Leif Lindholm diff --git a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf index a093f13fb0..b9458b0ade 100644 --- a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf +++ b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf @@ -46,6 +46,7 @@ DebugLib DevicePathLib DxeServicesLib + IpmiCmdLib MemoryAllocationLib PcdLib PrintLib @@ -69,6 +70,7 @@ gEfiEndOfDxeEventGroupGuid gEfiTtyTermGuid gHisiOemVariableGuid + 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 d5f6d78fa4..b63818cbe4 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 @@ -615,6 +617,8 @@ PlatformBootManagerAfterConsole ( { EFI_STATUS Status; ESRT_MANAGEMENT_PROTOCOL *EsrtManagement = NULL; + OEM_CONFIG_DATA SetupData; + UINTN DataSize = sizeof (OEM_CONFIG_DATA); // // Show the splash screen. @@ -651,6 +655,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 Tue Aug 14 08:08:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 144128 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4049566ljj; Tue, 14 Aug 2018 01:11:15 -0700 (PDT) X-Google-Smtp-Source: AA+uWPzYMgUtL8NkB/Ukz1kkRsAlemqM75jXNSSgBUn2zCS9Smd67cMn2lv2Ct0vTaQe8opoTpLL X-Received: by 2002:a63:f616:: with SMTP id m22-v6mr19768472pgh.293.1534234275276; Tue, 14 Aug 2018 01:11:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234275; cv=none; d=google.com; s=arc-20160816; b=NN4utzxTts8ifIJ0Ykesdz5FTg5YcLzkP6vBEZ8Bct2mkDnM1vi1pfNB544LFi5OJx 9vYOiczSC3EJaqEzPh8gNJEbloT9iN8PWYuqCe3Bh/A9tFubtbmafKtP3qRIsUKykNul 6zDQUWstlrTUpSw0b0iQKNMV8Xd8Ihknp9KBvT5/px3c49cU0rGBGqW0+VNMBtGxICl/ hweqc2ukJ7XFuLUB7C0oc6VSLOYPf98SdUW46jA/Zy/yWXIofkDBI1VewOFatfe08utY +W6BG7og22f0PjhCpQN+tSKuZrazM8NhWftzXiEcb/UjmozDDH7S6qL2KMLyAA4+gyKO 4BPg== 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=W1/Wac1NY/dwzbNqlxraxTdnVTvqJOk5HDBM5bpZlrc=; b=gYDT+5Bxe38PY17pXCsBub27XiQz2tArzcEL9dDs1FV2QZP3sDnN4naNbuafQTRfyi LmoywWhVnKD+1alTs7W6DXbHh/HUdzXKmkcn1UZaA23vFg6pDeTOfp1vw2If7HvQNCne 1QLo8NGUD92yBWAxeaJHUyVn5SSI1B6ezlbjBp9xnbXtAA3EjpCT7Qlds5wYINtZR3fl 4UzEtD/Fa2eJfti76QvxaRgal71ew3ahA1tAmOUJ4sgp5VcjDeXau+2c077sJRqlm2i0 7cvJ4ppNKuLKQECT58IJpj2FyiPSRytPQDD0cP6UpIjAqtJGsxgZpIm2uyw3yAF1kehM Wixg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=YSde+HdL; 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 e205-v6si20753843pfh.158.2018.08.14.01.11.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:11:15 -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=YSde+HdL; 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 46986210F1550; Tue, 14 Aug 2018 01:10: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:400e:c01::244; helo=mail-pl0-x244.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pl0-x244.google.com (mail-pl0-x244.google.com [IPv6:2607:f8b0:400e:c01::244]) (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 733A7210F16B5 for ; Tue, 14 Aug 2018 01:10:36 -0700 (PDT) Received: by mail-pl0-x244.google.com with SMTP id u11-v6so8038585plq.5 for ; Tue, 14 Aug 2018 01:10: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=wgQ6yJ7/crkcZqOILBJETqBngNVmDBEde3VmN0jR2s0=; b=YSde+HdLgu5+HJNiHdUXuvVCoz0y75U7L9u0vCt9uv95YVq1FFIooIn9Fwm7sV/Z06 QtqdUN12W5aOSzxuOG8+x+YqtK8FSluFCRpY/ZUxKbE7uqkeLdQk7Jh5CvKwhhPmQjtG iEFgFmHpGfHKQAcOM6BYk1wFzwqE7h7DlSYqc= 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=wgQ6yJ7/crkcZqOILBJETqBngNVmDBEde3VmN0jR2s0=; b=DlI/9GYbRpcKwmFj2COGpOcTDmJwE/ZJ9JM102KPgXzt6T2Yd6lqZpVL1+jjDMQrAR VLcO+sijPenz8JhPsp8zZ7GleJCj5EIdBPfQk/4jx625lnmwXVgSgRWwtPrvSukSYYmJ aCIZyHFotYgDruGJWOjOkHZsQ8RpM72xBW0qwWhQE+6Ke3c/d1bP5QKWYWAuI3gtt9Pt JIKEwuHMXxZwSt6hjYNkPTEyKGZpLpqUo4oJjQmPWoC7SvlK3BplYFq4f2/ecVMdhnwa B4XuCadylur8GcZ79fUNsmc4tqjS1XuN+beGmQv9IuqoA1+kYq7H+eQ3QvRgFcBJPzc3 xx2A== X-Gm-Message-State: AOUpUlFOfT7W+glh80/ILRRDLcDpa/HjYlJDokv8YuigbiRv1YsTCh7K p6EhIVSLay7LZWiMF+F9iRjENw== X-Received: by 2002:a17:902:aa83:: with SMTP id d3-v6mr19488264plr.242.1534234235602; Tue, 14 Aug 2018 01:10:35 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.10.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:10:34 -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: Tue, 14 Aug 2018 16:08:40 +0800 Message-Id: <20180814080903.50466-21-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 20/43] Hisilicon/I2C: Modify I2CLib.c for coding style X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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" Correct coding style for I2CLib.c before adding other I2CLib patches. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang --- Silicon/Hisilicon/Library/I2CLib/I2CLib.c | 1034 ++++++++++---------- 1 file changed, 499 insertions(+), 535 deletions(-) -- 2.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Silicon/Hisilicon/Library/I2CLib/I2CLib.c b/Silicon/Hisilicon/Library/I2CLib/I2CLib.c index b5b388d756..f03d55d6b2 100644 --- a/Silicon/Hisilicon/Library/I2CLib/I2CLib.c +++ b/Silicon/Hisilicon/Library/I2CLib/I2CLib.c @@ -16,640 +16,604 @@ #include -#include -#include #include #include +#include #include #include +#include #include #include "I2CLibInternal.h" #include "I2CHw.h" -VOID I2C_Delay(UINT32 ulCount) +VOID +I2C_Delay ( + UINT32 Count + ) { - MicroSecondDelay(ulCount); - return; + MicroSecondDelay (Count); + return; } EFI_STATUS EFIAPI -I2C_Disable(UINT32 Socket,UINT8 Port) +I2C_Disable ( + UINT32 Socket, + UINT8 Port + ) { - UINT32 ulTimeCnt = I2C_READ_TIMEOUT; - I2C0_STATUS_U I2cStatusReg; - I2C0_ENABLE_U I2cEnableReg; - I2C0_ENABLE_STATUS_U I2cEnableStatusReg; + UINT32 TimeCnt = I2C_READ_TIMEOUT; + I2C0_STATUS_U I2cStatusReg; + I2C0_ENABLE_U I2cEnableReg; + I2C0_ENABLE_STATUS_U I2cEnableStatusReg; - UINTN Base = GetI2cBase(Socket, Port); + UINTN Base = GetI2cBase (Socket, Port); - I2C_REG_READ((Base + I2C_STATUS_OFFSET), I2cStatusReg.Val32); + I2C_REG_READ ((Base + I2C_STATUS_OFFSET), I2cStatusReg.Val32); - while (I2cStatusReg.bits.activity) - { - I2C_Delay(10000); + while (I2cStatusReg.bits.activity) { + I2C_Delay (10000); - ulTimeCnt--; - I2C_REG_READ(Base + I2C_STATUS_OFFSET, I2cStatusReg.Val32); - if (0 == ulTimeCnt) - { - return EFI_DEVICE_ERROR; - } + TimeCnt--; + I2C_REG_READ (Base + I2C_STATUS_OFFSET, I2cStatusReg.Val32); + if (TimeCnt == 0) { + return EFI_DEVICE_ERROR; } + } + I2C_REG_READ (Base + I2C_ENABLE_OFFSET, I2cEnableReg.Val32); + I2cEnableReg.bits.enable = 0; + I2C_REG_WRITE (Base + I2C_ENABLE_OFFSET, I2cEnableReg.Val32); - I2C_REG_READ(Base + I2C_ENABLE_OFFSET, I2cEnableReg.Val32); - I2cEnableReg.bits.enable = 0; - I2C_REG_WRITE(Base + I2C_ENABLE_OFFSET,I2cEnableReg.Val32); - - I2C_REG_READ(Base + I2C_ENABLE_OFFSET,I2cEnableStatusReg.Val32); - if (0 == I2cEnableStatusReg.bits.ic_en) - { - return EFI_SUCCESS; - } - else - { - return EFI_DEVICE_ERROR; - } + I2C_REG_READ (Base + I2C_ENABLE_OFFSET, I2cEnableStatusReg.Val32); + if (I2cEnableStatusReg.bits.ic_en == 0) { + return EFI_SUCCESS; + } else { + return EFI_DEVICE_ERROR; + } } EFI_STATUS EFIAPI -I2C_Enable(UINT32 Socket,UINT8 Port) +I2C_Enable ( + UINT32 Socket, + UINT8 Port + ) { - I2C0_ENABLE_U I2cEnableReg; - I2C0_ENABLE_STATUS_U I2cEnableStatusReg; + I2C0_ENABLE_U I2cEnableReg; + I2C0_ENABLE_STATUS_U I2cEnableStatusReg; - UINTN Base = GetI2cBase(Socket, Port); + UINTN Base = GetI2cBase (Socket, Port); + I2C_REG_READ (Base + I2C_ENABLE_OFFSET, I2cEnableReg.Val32); + I2cEnableReg.bits.enable = 1; + I2C_REG_WRITE (Base + I2C_ENABLE_OFFSET, I2cEnableReg.Val32); - I2C_REG_READ(Base + I2C_ENABLE_OFFSET, I2cEnableReg.Val32); - I2cEnableReg.bits.enable = 1; - I2C_REG_WRITE(Base + I2C_ENABLE_OFFSET, I2cEnableReg.Val32); - - I2C_REG_READ(Base + I2C_ENABLE_STATUS_OFFSET, I2cEnableStatusReg.Val32); - if (1 == I2cEnableStatusReg.bits.ic_en) - { - return EFI_SUCCESS; - } - else - { - return EFI_DEVICE_ERROR; - } + I2C_REG_READ (Base + I2C_ENABLE_STATUS_OFFSET, I2cEnableStatusReg.Val32); + if (I2cEnableStatusReg.bits.ic_en == 1) { + return EFI_SUCCESS; + } else { + return EFI_DEVICE_ERROR; + } } -void I2C_SetTarget(UINT32 Socket,UINT8 Port,UINT32 I2cDeviceAddr) +VOID +I2C_SetTarget ( + UINT32 Socket, + UINT8 Port, + UINT32 I2cDeviceAddr + ) { - I2C0_TAR_U I2cTargetReg; - UINTN Base = GetI2cBase(Socket, Port); + I2C0_TAR_U I2cTargetReg; + UINTN Base = GetI2cBase (Socket, Port); - I2C_REG_READ(Base + I2C_TAR_OFFSET, I2cTargetReg.Val32); - I2cTargetReg.bits.ic_tar = I2cDeviceAddr; - I2C_REG_WRITE(Base + I2C_TAR_OFFSET, I2cTargetReg.Val32); + I2C_REG_READ (Base + I2C_TAR_OFFSET, I2cTargetReg.Val32); + I2cTargetReg.bits.ic_tar = I2cDeviceAddr; + I2C_REG_WRITE (Base + I2C_TAR_OFFSET, I2cTargetReg.Val32); - return; + return; } EFI_STATUS EFIAPI -I2CInit(UINT32 Socket, UINT32 Port, SPEED_MODE SpeedMode) +I2CInit ( + UINT32 Socket, + UINT32 Port, + SPEED_MODE SpeedMode + ) { - I2C0_CON_U I2cControlReg; - I2C0_SS_SCL_HCNT_U I2cStandardSpeedSclHighCount; - I2C0_SS_SCL_LCNT_U I2cStandardSpeedSclLowCount; - I2C0_RX_TL_U I2cRxFifoReg; - I2C0_TX_TL_U I2cTxFifoReg; - I2C0_INTR_MASK_U I2cIntrMask; - EFI_STATUS Status; - - UINTN Base = GetI2cBase(Socket, Port); - - if((Socket >= MAX_SOCKET) || (Port >= I2C_PORT_MAX) || (SpeedMode >= SPEED_MODE_MAX)){ - return EFI_INVALID_PARAMETER; - } - - - Status = I2C_Disable(Socket,Port); - if(EFI_ERROR(Status)) - { - return EFI_DEVICE_ERROR; - } - - - I2C_REG_READ(Base + I2C_CON_OFFSET, I2cControlReg.Val32); - I2cControlReg.bits.master = 1; - I2cControlReg.bits.spedd = 0x1; - I2cControlReg.bits.restart_en = 1; - I2cControlReg.bits.slave_disable = 1; - I2C_REG_WRITE(Base + I2C_CON_OFFSET,I2cControlReg.Val32); - - - if(Normal == SpeedMode) - { - I2C_REG_READ(Base + I2C_SS_SCL_HCNT_OFFSET,I2cStandardSpeedSclHighCount.Val32); - I2cStandardSpeedSclHighCount.bits.ic_ss_scl_hcnt = I2C_SS_SCLHCNT; - I2C_REG_WRITE(Base + I2C_SS_SCL_HCNT_OFFSET, I2cStandardSpeedSclHighCount.Val32); - I2C_REG_READ(Base + I2C_SS_SCL_LCNT_OFFSET, I2cStandardSpeedSclLowCount.Val32); - I2cStandardSpeedSclLowCount.bits.ic_ss_scl_lcnt = I2C_SS_SCLLCNT; - I2C_REG_WRITE(Base + I2C_SS_SCL_LCNT_OFFSET, I2cStandardSpeedSclLowCount.Val32); - } - else - { - I2C_REG_READ(Base + I2C_FS_SCL_HCNT_OFFSET,I2cStandardSpeedSclHighCount.Val32); - I2cStandardSpeedSclHighCount.bits.ic_ss_scl_hcnt = I2C_SS_SCLHCNT; - I2C_REG_WRITE(Base + I2C_FS_SCL_HCNT_OFFSET, I2cStandardSpeedSclHighCount.Val32); - I2C_REG_READ(Base + I2C_FS_SCL_LCNT_OFFSET, I2cStandardSpeedSclLowCount.Val32); - I2cStandardSpeedSclLowCount.bits.ic_ss_scl_lcnt = I2C_SS_SCLLCNT; - I2C_REG_WRITE(Base + I2C_FS_SCL_LCNT_OFFSET, I2cStandardSpeedSclLowCount.Val32); - } - - - I2C_REG_READ(Base + I2C_RX_TL_OFFSET, I2cRxFifoReg.Val32); - I2cRxFifoReg.bits.rx_tl = I2C_TXRX_THRESHOLD; - I2C_REG_WRITE(Base + I2C_RX_TL_OFFSET, I2cRxFifoReg.Val32); - I2C_REG_READ(Base + I2C_TX_TL_OFFSET,I2cTxFifoReg.Val32); - I2cTxFifoReg.bits.tx_tl = I2C_TXRX_THRESHOLD; - I2C_REG_WRITE(Base + I2C_TX_TL_OFFSET, I2cTxFifoReg.Val32); - - - I2C_REG_READ(Base + I2C_INTR_MASK_OFFSET, I2cIntrMask.Val32); - I2cIntrMask.Val32 = 0x0; - I2C_REG_WRITE(Base + I2C_INTR_MASK_OFFSET, I2cIntrMask.Val32); - - - Status = I2C_Enable(Socket,Port); - if(EFI_ERROR(Status)) - { - return EFI_DEVICE_ERROR; - } - - return I2cLibRuntimeSetup (Socket, Port); + I2C0_CON_U I2cControlReg; + I2C0_SS_SCL_HCNT_U I2cStandardSpeedSclHighCount; + I2C0_SS_SCL_LCNT_U I2cStandardSpeedSclLowCount; + I2C0_RX_TL_U I2cRxFifoReg; + I2C0_TX_TL_U I2cTxFifoReg; + I2C0_INTR_MASK_U I2cIntrMask; + EFI_STATUS Status; + + UINTN Base = GetI2cBase (Socket, Port); + + if ((Socket >= MAX_SOCKET) || + (Port >= I2C_PORT_MAX) || + (SpeedMode >= SPEED_MODE_MAX)) { + return EFI_INVALID_PARAMETER; + } + + Status = I2C_Disable (Socket,Port); + if (EFI_ERROR (Status)) { + return EFI_DEVICE_ERROR; + } + + I2C_REG_READ (Base + I2C_CON_OFFSET, I2cControlReg.Val32); + I2cControlReg.bits.master = 1; + I2cControlReg.bits.spedd = 0x1; + I2cControlReg.bits.restart_en = 1; + I2cControlReg.bits.slave_disable = 1; + I2C_REG_WRITE (Base + I2C_CON_OFFSET, I2cControlReg.Val32); + + if (SpeedMode == Normal) { + I2C_REG_READ (Base + I2C_SS_SCL_HCNT_OFFSET, I2cStandardSpeedSclHighCount.Val32); + I2cStandardSpeedSclHighCount.bits.ic_ss_scl_hcnt = I2C_SS_SCLHCNT; + I2C_REG_WRITE (Base + I2C_SS_SCL_HCNT_OFFSET, I2cStandardSpeedSclHighCount.Val32); + I2C_REG_READ (Base + I2C_SS_SCL_LCNT_OFFSET, I2cStandardSpeedSclLowCount.Val32); + I2cStandardSpeedSclLowCount.bits.ic_ss_scl_lcnt = I2C_SS_SCLLCNT; + I2C_REG_WRITE (Base + I2C_SS_SCL_LCNT_OFFSET, I2cStandardSpeedSclLowCount.Val32); + } else { + I2C_REG_READ (Base + I2C_FS_SCL_HCNT_OFFSET, I2cStandardSpeedSclHighCount.Val32); + I2cStandardSpeedSclHighCount.bits.ic_ss_scl_hcnt = I2C_SS_SCLHCNT; + I2C_REG_WRITE (Base + I2C_FS_SCL_HCNT_OFFSET, I2cStandardSpeedSclHighCount.Val32); + I2C_REG_READ (Base + I2C_FS_SCL_LCNT_OFFSET, I2cStandardSpeedSclLowCount.Val32); + I2cStandardSpeedSclLowCount.bits.ic_ss_scl_lcnt = I2C_SS_SCLLCNT; + I2C_REG_WRITE (Base + I2C_FS_SCL_LCNT_OFFSET, I2cStandardSpeedSclLowCount.Val32); + } + + I2C_REG_READ (Base + I2C_RX_TL_OFFSET, I2cRxFifoReg.Val32); + I2cRxFifoReg.bits.rx_tl = I2C_TXRX_THRESHOLD; + I2C_REG_WRITE (Base + I2C_RX_TL_OFFSET, I2cRxFifoReg.Val32); + I2C_REG_READ (Base + I2C_TX_TL_OFFSET, I2cTxFifoReg.Val32); + I2cTxFifoReg.bits.tx_tl = I2C_TXRX_THRESHOLD; + I2C_REG_WRITE (Base + I2C_TX_TL_OFFSET, I2cTxFifoReg.Val32); + + I2C_REG_READ (Base + I2C_INTR_MASK_OFFSET, I2cIntrMask.Val32); + I2cIntrMask.Val32 = 0x0; + I2C_REG_WRITE (Base + I2C_INTR_MASK_OFFSET, I2cIntrMask.Val32); + + Status = I2C_Enable (Socket, Port); + if (EFI_ERROR (Status)) { + return EFI_DEVICE_ERROR; + } + + return I2cLibRuntimeSetup (Socket, Port); } EFI_STATUS EFIAPI -I2CSdaConfig(UINT32 Socket, UINT32 Port) +I2CSdaConfig ( + UINT32 Socket, + UINT32 Port + ) { + UINTN Base = GetI2cBase (Socket, Port); - UINTN Base = GetI2cBase(Socket, Port); + if ((Socket >= MAX_SOCKET) || (Port >= I2C_PORT_MAX)) { + return EFI_INVALID_PARAMETER; + } - if((Socket >= MAX_SOCKET) || (Port >= I2C_PORT_MAX)){ - return EFI_INVALID_PARAMETER; - } - - I2C_REG_WRITE(Base + I2C_SDA_HOLD, 0x14); + I2C_REG_WRITE (Base + I2C_SDA_HOLD, 0x14); - return EFI_SUCCESS; + return EFI_SUCCESS; } -UINT32 I2C_GetTxStatus(UINT32 Socket,UINT8 Port) +UINT32 +I2C_GetTxStatus ( + UINT32 Socket, + UINT8 Port + ) { - I2C0_TXFLR_U ulFifo; - UINTN Base = GetI2cBase(Socket, Port); + I2C0_TXFLR_U Fifo; + UINTN Base = GetI2cBase (Socket, Port); - I2C_REG_READ(Base + I2C_TXFLR_OFFSET, ulFifo.Val32); - return ulFifo.bits.txflr; + I2C_REG_READ (Base + I2C_TXFLR_OFFSET, Fifo.Val32); + return Fifo.bits.txflr; } UINT32 -I2C_GetRxStatus(UINT32 Socket,UINT8 Port) +I2C_GetRxStatus ( + UINT32 Socket, + UINT8 Port + ) { - I2C0_RXFLR_U ulFifo; - UINTN Base = GetI2cBase(Socket, Port); + I2C0_RXFLR_U Fifo; + UINTN Base = GetI2cBase (Socket, Port); - I2C_REG_READ(Base + I2C_RXFLR_OFFSET, ulFifo.Val32); - return ulFifo.bits.rxflr; + I2C_REG_READ (Base + I2C_RXFLR_OFFSET, Fifo.Val32); + return Fifo.bits.rxflr; } EFI_STATUS EFIAPI -WriteBeforeRead(I2C_DEVICE *I2cInfo, UINT32 ulLength, UINT8 *pBuf) +WriteBeforeRead ( + I2C_DEVICE *I2cInfo, + UINT32 Length, + UINT8 *pBuf + ) { - UINT32 ulFifo; - UINT32 ulCnt; - UINT32 ulTimes = 0; + UINT32 Fifo; + UINT32 Count; + UINT32 Times = 0; - UINTN Base = GetI2cBase(I2cInfo->Socket, I2cInfo->Port); + UINTN Base = GetI2cBase (I2cInfo->Socket, I2cInfo->Port); + I2C_SetTarget (I2cInfo->Socket, I2cInfo->Port, I2cInfo->SlaveDeviceAddress); - I2C_SetTarget(I2cInfo->Socket,I2cInfo->Port,I2cInfo->SlaveDeviceAddress); - - ulFifo = I2C_GetTxStatus(I2cInfo->Socket,I2cInfo->Port); - while(0 != ulFifo) - { - I2C_Delay(2); - if(++ulTimes > I2C_READ_TIMEOUT) - { - return EFI_TIMEOUT; - } - ulFifo = I2C_GetTxStatus(I2cInfo->Socket,I2cInfo->Port); + Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + while (Fifo != 0) { + I2C_Delay (2); + if (++Times > I2C_READ_TIMEOUT) { + return EFI_TIMEOUT; } + Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + } - for(ulCnt = 0; ulCnt < ulLength; ulCnt++) - { - ulTimes = 0; - while(ulFifo > I2C_TXRX_THRESHOLD) - { - I2C_Delay(2); - if(++ulTimes > I2C_READ_TIMEOUT) - { - return EFI_TIMEOUT; - } - ulFifo = I2C_GetTxStatus(I2cInfo->Socket,I2cInfo->Port); - } - - I2C_REG_WRITE(Base + I2C_DATA_CMD_OFFSET, *pBuf++); - ulFifo = I2C_GetTxStatus(I2cInfo->Socket,I2cInfo->Port); + for (Count = 0; Count < Length; Count++) { + Times = 0; + while (Fifo > I2C_TXRX_THRESHOLD) { + I2C_Delay (2); + if (++Times > I2C_READ_TIMEOUT) { + return EFI_TIMEOUT; + } + Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); } - ulFifo = I2C_GetTxStatus(I2cInfo->Socket,I2cInfo->Port); - ulTimes = 0; - while(0 != ulFifo) - { - I2C_Delay(2); - - if(++ulTimes > I2C_READ_TIMEOUT) - { - return EFI_TIMEOUT; - } - ulFifo = I2C_GetTxStatus(I2cInfo->Socket,I2cInfo->Port); + I2C_REG_WRITE (Base + I2C_DATA_CMD_OFFSET, *pBuf++); + Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + } + + Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + Times = 0; + while (Fifo != 0) { + I2C_Delay (2); + + if (++Times > I2C_READ_TIMEOUT) { + return EFI_TIMEOUT; } + Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + } - return EFI_SUCCESS; + return EFI_SUCCESS; } EFI_STATUS EFIAPI -I2CWrite(I2C_DEVICE *I2cInfo, UINT16 InfoOffset, UINT32 ulLength, UINT8 *pBuf) +I2CWrite( + I2C_DEVICE *I2cInfo, + UINT16 InfoOffset, + UINT32 Length, + UINT8 *pBuf + ) { - UINT32 ulFifo; - UINT32 ulTimes = 0; - UINT32 Idx; - UINTN Base; - - - if(I2cInfo->Port >= I2C_PORT_MAX) - { - return EFI_INVALID_PARAMETER; - } - - Base = GetI2cBase(I2cInfo->Socket, I2cInfo->Port); - - (VOID)I2C_Enable(I2cInfo->Socket, I2cInfo->Port); - - I2C_SetTarget(I2cInfo->Socket,I2cInfo->Port,I2cInfo->SlaveDeviceAddress); - - ulFifo = I2C_GetTxStatus(I2cInfo->Socket,I2cInfo->Port); - while(0 != ulFifo) - { - I2C_Delay(2); - if(++ulTimes > I2C_READ_TIMEOUT) - { - (VOID)I2C_Disable(I2cInfo->Socket, I2cInfo->Port); - return EFI_TIMEOUT; - } - ulFifo = I2C_GetTxStatus(I2cInfo->Socket,I2cInfo->Port); - } - - - if(I2cInfo->DeviceType) - { - I2C_REG_WRITE(Base + I2C_DATA_CMD_OFFSET, (InfoOffset >> 8) & 0xff); - I2C_REG_WRITE(Base + I2C_DATA_CMD_OFFSET, InfoOffset & 0xff); - } - else - { - I2C_REG_WRITE(Base + I2C_DATA_CMD_OFFSET, InfoOffset & 0xff); - } - - ulFifo = I2C_GetTxStatus(I2cInfo->Socket,I2cInfo->Port); - ulTimes = 0; - while(0 != ulFifo) - { - I2C_Delay(2); - if(++ulTimes > I2C_READ_TIMEOUT) - { - (VOID)I2C_Disable(I2cInfo->Socket, I2cInfo->Port); - return EFI_TIMEOUT; - } - ulFifo = I2C_GetTxStatus(I2cInfo->Socket,I2cInfo->Port); - } - - for(Idx = 0; Idx < ulLength; Idx++) - { - ulTimes = 0; - ulFifo = I2C_GetTxStatus(I2cInfo->Socket,I2cInfo->Port); - while(ulFifo > I2C_TXRX_THRESHOLD) - { - I2C_Delay(2); - if(++ulTimes > I2C_READ_TIMEOUT) - { - (VOID)I2C_Disable(I2cInfo->Socket, I2cInfo->Port); - return EFI_TIMEOUT; - } - ulFifo = I2C_GetTxStatus(I2cInfo->Socket,I2cInfo->Port); - } - - if (Idx < ulLength - 1) { - I2C_REG_WRITE(Base + I2C_DATA_CMD_OFFSET, (*pBuf++)); - } else { - //Send command stop bit for the last transfer - I2C_REG_WRITE(Base + I2C_DATA_CMD_OFFSET, (*pBuf++) | I2C_CMD_STOP_BIT); - } - } - - ulFifo = I2C_GetTxStatus(I2cInfo->Socket,I2cInfo->Port); - ulTimes = 0; - while(0 != ulFifo) - { - I2C_Delay(2); - - if(++ulTimes > I2C_READ_TIMEOUT) - { - DEBUG ((EFI_D_ERROR, "I2C Write try to finished,time out!\n")); - (VOID)I2C_Disable(I2cInfo->Socket, I2cInfo->Port); - return EFI_TIMEOUT; - } - ulFifo = I2C_GetTxStatus(I2cInfo->Socket,I2cInfo->Port); - } - (VOID)I2C_Disable(I2cInfo->Socket, I2cInfo->Port); - - return EFI_SUCCESS; + UINT32 Fifo; + UINT32 Times = 0; + UINT32 Idx; + UINTN Base; + + if (I2cInfo->Port >= I2C_PORT_MAX) { + return EFI_INVALID_PARAMETER; + } + + Base = GetI2cBase (I2cInfo->Socket, I2cInfo->Port); + + (VOID)I2C_Enable(I2cInfo->Socket, I2cInfo->Port); + + I2C_SetTarget(I2cInfo->Socket, I2cInfo->Port, I2cInfo->SlaveDeviceAddress); + + Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + while (Fifo != 0) { + I2C_Delay (2); + if (++Times > I2C_READ_TIMEOUT) { + (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); + return EFI_TIMEOUT; + } + Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + } + + if (I2cInfo->DeviceType) { + I2C_REG_WRITE (Base + I2C_DATA_CMD_OFFSET, (InfoOffset >> 8) & 0xff); + I2C_REG_WRITE (Base + I2C_DATA_CMD_OFFSET, InfoOffset & 0xff); + } else { + I2C_REG_WRITE (Base + I2C_DATA_CMD_OFFSET, InfoOffset & 0xff); + } + + Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + Times = 0; + while (Fifo != 0) { + I2C_Delay (2); + if (++Times > I2C_READ_TIMEOUT) { + (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); + return EFI_TIMEOUT; + } + Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + } + + for (Idx = 0; Idx < Length; Idx++) { + Times = 0; + Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + while (Fifo > I2C_TXRX_THRESHOLD) { + I2C_Delay (2); + if (++Times > I2C_READ_TIMEOUT) { + (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); + return EFI_TIMEOUT; + } + Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + } + + if (Idx < Length - 1) { + I2C_REG_WRITE (Base + I2C_DATA_CMD_OFFSET, (*pBuf++)); + } else { + //Send command stop bit for the last transfer + I2C_REG_WRITE (Base + I2C_DATA_CMD_OFFSET, (*pBuf++) | I2C_CMD_STOP_BIT); + } + } + + Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + Times = 0; + while (Fifo != 0) { + I2C_Delay (2); + + if (++Times > I2C_READ_TIMEOUT) { + DEBUG ((DEBUG_ERROR, "I2C Write try to finished,time out!\n")); + (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); + return EFI_TIMEOUT; + } + Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + } + (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); + + return EFI_SUCCESS; } EFI_STATUS EFIAPI -I2CRead(I2C_DEVICE *I2cInfo, UINT16 InfoOffset,UINT32 ulRxLen,UINT8 *pBuf) +I2CRead( + I2C_DEVICE *I2cInfo, + UINT16 InfoOffset, + UINT32 RxLen, + UINT8 *pBuf + ) { - UINT32 ulFifo; - UINT32 ulTimes = 0; - UINT8 I2CWAddr[2]; - EFI_STATUS Status; - UINT32 Idx = 0; - UINTN Base; - - - if(I2cInfo->Port >= I2C_PORT_MAX) - { - return EFI_INVALID_PARAMETER; - } - - (VOID)I2C_Enable(I2cInfo->Socket, I2cInfo->Port); - Base = GetI2cBase(I2cInfo->Socket, I2cInfo->Port); - if(I2cInfo->DeviceType) - { - I2CWAddr[0] = (InfoOffset >> 8) & 0xff; - I2CWAddr[1] = (InfoOffset & 0xff); - Status = WriteBeforeRead(I2cInfo, 2,I2CWAddr); - if(EFI_ERROR(Status)) - { - (VOID)I2C_Disable(I2cInfo->Socket, I2cInfo->Port); - return EFI_ABORTED; - } - } - else - { - I2CWAddr[0] = (InfoOffset & 0xff); - Status = WriteBeforeRead(I2cInfo, 1,I2CWAddr); - if(EFI_ERROR(Status)) - { - (VOID)I2C_Disable(I2cInfo->Socket, I2cInfo->Port); - return EFI_ABORTED; - } - } - - I2C_SetTarget(I2cInfo->Socket,I2cInfo->Port,I2cInfo->SlaveDeviceAddress); - - ulFifo = I2C_GetTxStatus(I2cInfo->Socket,I2cInfo->Port); - while(0 != ulFifo) - { - I2C_Delay(2); - - while(++ulTimes > I2C_READ_TIMEOUT) - { - (VOID)I2C_Disable(I2cInfo->Socket, I2cInfo->Port); - return EFI_TIMEOUT; - } - ulFifo = I2C_GetTxStatus(I2cInfo->Socket,I2cInfo->Port); - } - - while (ulRxLen > 0) { - if (ulRxLen > 1) { - I2C_REG_WRITE(Base + I2C_DATA_CMD_OFFSET, I2C_READ_SIGNAL); - } else { - //Send command stop bit for the last transfer - I2C_REG_WRITE(Base + I2C_DATA_CMD_OFFSET, I2C_READ_SIGNAL | I2C_CMD_STOP_BIT); - } - - ulTimes = 0; - do { - I2C_Delay(2); - - while(++ulTimes > I2C_READ_TIMEOUT) { - (VOID)I2C_Disable(I2cInfo->Socket, I2cInfo->Port); - return EFI_TIMEOUT; - } - ulFifo = I2C_GetRxStatus(I2cInfo->Socket,I2cInfo->Port); - }while(0 == ulFifo); - - I2C_REG_READ(Base + I2C_DATA_CMD_OFFSET, pBuf[Idx++]); - - ulRxLen --; - } - (VOID)I2C_Disable(I2cInfo->Socket, I2cInfo->Port); - - return EFI_SUCCESS; + UINT32 Fifo; + UINT32 Times = 0; + UINT8 I2CWAddr[2]; + EFI_STATUS Status; + UINT32 Idx = 0; + UINTN Base; + + if (I2cInfo->Port >= I2C_PORT_MAX) { + return EFI_INVALID_PARAMETER; + } + + (VOID)I2C_Enable(I2cInfo->Socket, I2cInfo->Port); + Base = GetI2cBase (I2cInfo->Socket, I2cInfo->Port); + if (I2cInfo->DeviceType) { + I2CWAddr[0] = (InfoOffset >> 8) & 0xff; + I2CWAddr[1] = (InfoOffset & 0xff); + Status = WriteBeforeRead (I2cInfo, 2,I2CWAddr); + if (EFI_ERROR (Status)) { + (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); + return EFI_ABORTED; + } + } else { + I2CWAddr[0] = (InfoOffset & 0xff); + Status = WriteBeforeRead (I2cInfo, 1, I2CWAddr); + if (EFI_ERROR (Status)) { + (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); + return EFI_ABORTED; + } + } + + I2C_SetTarget (I2cInfo->Socket, I2cInfo->Port, I2cInfo->SlaveDeviceAddress); + + Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + while (Fifo != 0) { + I2C_Delay (2); + + while (++Times > I2C_READ_TIMEOUT) { + (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); + return EFI_TIMEOUT; + } + Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + } + + while (RxLen > 0) { + if (RxLen > 1) { + I2C_REG_WRITE (Base + I2C_DATA_CMD_OFFSET, I2C_READ_SIGNAL); + } else { + //Send command stop bit for the last transfer + I2C_REG_WRITE (Base + I2C_DATA_CMD_OFFSET, I2C_READ_SIGNAL | I2C_CMD_STOP_BIT); + } + + Times = 0; + do { + I2C_Delay (2); + + while (++Times > I2C_READ_TIMEOUT) { + (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); + return EFI_TIMEOUT; + } + Fifo = I2C_GetRxStatus (I2cInfo->Socket, I2cInfo->Port); + } while (Fifo == 0); + + I2C_REG_READ (Base + I2C_DATA_CMD_OFFSET, pBuf[Idx++]); + + RxLen --; + } + (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); + + return EFI_SUCCESS; } EFI_STATUS EFIAPI -I2CReadMultiByte(I2C_DEVICE *I2cInfo, UINT32 InfoOffset,UINT32 ulRxLen,UINT8 *pBuf) +I2CReadMultiByte ( + I2C_DEVICE *I2cInfo, + UINT32 InfoOffset, + UINT32 RxLen, + UINT8 *pBuf + ) { - UINT32 ulCnt; - UINT16 usTotalLen = 0; - UINT32 ulFifo; - UINT32 ulTimes = 0; - UINT8 I2CWAddr[4]; - EFI_STATUS Status; - UINT32 BytesLeft; - UINT32 Idx = 0; - UINTN Base; - - - if(I2cInfo->Port >= I2C_PORT_MAX) - { - return EFI_INVALID_PARAMETER; - } - - (VOID)I2C_Enable(I2cInfo->Socket, I2cInfo->Port); - Base = GetI2cBase(I2cInfo->Socket, I2cInfo->Port); - if(I2cInfo->DeviceType == DEVICE_TYPE_E2PROM) - { - I2CWAddr[0] = (InfoOffset >> 8) & 0xff; - I2CWAddr[1] = (InfoOffset & 0xff); - Status = WriteBeforeRead(I2cInfo, 2,I2CWAddr); - if(EFI_ERROR(Status)) - { - (VOID)I2C_Disable(I2cInfo->Socket, I2cInfo->Port); - return EFI_ABORTED; - } - } - - else if(I2cInfo->DeviceType == DEVICE_TYPE_CPLD_3BYTE_OPERANDS) - { - I2CWAddr[0] = (InfoOffset >> 16) & 0xff; - I2CWAddr[1] = (InfoOffset >> 8) & 0xff; - I2CWAddr[2] = (InfoOffset & 0xff); - Status = WriteBeforeRead(I2cInfo, 3,I2CWAddr); - if(EFI_ERROR(Status)) - { - (VOID)I2C_Disable(I2cInfo->Socket, I2cInfo->Port); - return EFI_ABORTED; - } - } - - else if(I2cInfo->DeviceType == DEVICE_TYPE_CPLD_4BYTE_OPERANDS) - { - I2CWAddr[0] = (InfoOffset >> 24) & 0xff; - I2CWAddr[1] = (InfoOffset >> 16) & 0xff; - I2CWAddr[2] = (InfoOffset >> 8) & 0xff; - I2CWAddr[3] = (InfoOffset & 0xff); - Status = WriteBeforeRead(I2cInfo, 4,I2CWAddr); - if(EFI_ERROR(Status)) - { - (VOID)I2C_Disable(I2cInfo->Socket, I2cInfo->Port); - return EFI_ABORTED; - } - } - - else - { - I2CWAddr[0] = (InfoOffset & 0xff); - Status = WriteBeforeRead(I2cInfo, 1,I2CWAddr); - if(EFI_ERROR(Status)) - { - (VOID)I2C_Disable(I2cInfo->Socket, I2cInfo->Port); - return EFI_ABORTED; - } - } - - - I2C_SetTarget(I2cInfo->Socket,I2cInfo->Port,I2cInfo->SlaveDeviceAddress); - usTotalLen = ulRxLen; - BytesLeft = usTotalLen; - - for(ulCnt = 0; ulCnt < BytesLeft; ulCnt++) { - I2C_REG_WRITE(Base + I2C_DATA_CMD_OFFSET, I2C_READ_SIGNAL); - } - - - for(ulCnt = 0; ulCnt < BytesLeft; ulCnt++) { - ulTimes = 0; - do { - I2C_Delay(2); - - while(++ulTimes > I2C_READ_TIMEOUT) { - (VOID)I2C_Disable(I2cInfo->Socket, I2cInfo->Port); - return EFI_TIMEOUT; - } - ulFifo = I2C_GetRxStatus(I2cInfo->Socket,I2cInfo->Port); - }while(0 == ulFifo); - - I2C_REG_READ(Base + I2C_DATA_CMD_OFFSET, pBuf[Idx++]); - } - (VOID)I2C_Disable(I2cInfo->Socket, I2cInfo->Port); - - return EFI_SUCCESS; + UINT32 Count; + UINT16 TotalLen = 0; + UINT32 Fifo; + UINT32 Times = 0; + UINT8 I2CWAddr[4]; + EFI_STATUS Status; + UINT32 BytesLeft; + UINT32 Idx = 0; + UINTN Base; + + if (I2cInfo->Port >= I2C_PORT_MAX) { + return EFI_INVALID_PARAMETER; + } + + (VOID)I2C_Enable (I2cInfo->Socket, I2cInfo->Port); + Base = GetI2cBase (I2cInfo->Socket, I2cInfo->Port); + if (I2cInfo->DeviceType == DEVICE_TYPE_E2PROM) { + I2CWAddr[0] = (InfoOffset >> 8) & 0xff; + I2CWAddr[1] = (InfoOffset & 0xff); + Status = WriteBeforeRead (I2cInfo, 2,I2CWAddr); + if (EFI_ERROR (Status)) { + (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); + return EFI_ABORTED; + } + } else if (I2cInfo->DeviceType == DEVICE_TYPE_CPLD_3BYTE_OPERANDS) { + I2CWAddr[0] = (InfoOffset >> 16) & 0xff; + I2CWAddr[1] = (InfoOffset >> 8) & 0xff; + I2CWAddr[2] = (InfoOffset & 0xff); + Status = WriteBeforeRead (I2cInfo, 3, I2CWAddr); + if (EFI_ERROR (Status)) { + (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); + return EFI_ABORTED; + } + } else if (I2cInfo->DeviceType == DEVICE_TYPE_CPLD_4BYTE_OPERANDS) { + I2CWAddr[0] = (InfoOffset >> 24) & 0xff; + I2CWAddr[1] = (InfoOffset >> 16) & 0xff; + I2CWAddr[2] = (InfoOffset >> 8) & 0xff; + I2CWAddr[3] = (InfoOffset & 0xff); + Status = WriteBeforeRead (I2cInfo, 4,I2CWAddr); + if (EFI_ERROR (Status)) { + (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); + return EFI_ABORTED; + } + } else { + I2CWAddr[0] = (InfoOffset & 0xff); + Status = WriteBeforeRead (I2cInfo, 1,I2CWAddr); + if (EFI_ERROR (Status)) { + (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); + return EFI_ABORTED; + } + } + + I2C_SetTarget(I2cInfo->Socket, I2cInfo->Port, I2cInfo->SlaveDeviceAddress); + TotalLen = RxLen; + BytesLeft = TotalLen; + + for (Count = 0; Count < BytesLeft; Count++) { + I2C_REG_WRITE (Base + I2C_DATA_CMD_OFFSET, I2C_READ_SIGNAL); + } + + for (Count = 0; Count < BytesLeft; Count++) { + Times = 0; + do { + I2C_Delay (2); + + while (++Times > I2C_READ_TIMEOUT) { + (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); + return EFI_TIMEOUT; + } + Fifo = I2C_GetRxStatus (I2cInfo->Socket, I2cInfo->Port); + } while (Fifo == 0); + + I2C_REG_READ (Base + I2C_DATA_CMD_OFFSET, pBuf[Idx++]); + } + (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); + + return EFI_SUCCESS; } EFI_STATUS EFIAPI -I2CWriteMultiByte(I2C_DEVICE *I2cInfo, UINT32 InfoOffset, UINT32 ulLength, UINT8 *pBuf) +I2CWriteMultiByte( + I2C_DEVICE *I2cInfo, + UINT32 InfoOffset, + UINT32 Length, + UINT8 *pBuf + ) { - UINT32 ulFifo; - UINT32 ulTimes = 0; - UINT32 Idx; - UINTN Base; - - - if(I2cInfo->Port >= I2C_PORT_MAX) - { - return EFI_INVALID_PARAMETER; - } - - Base = GetI2cBase(I2cInfo->Socket, I2cInfo->Port); - - (VOID)I2C_Enable(I2cInfo->Socket, I2cInfo->Port); - - I2C_SetTarget(I2cInfo->Socket,I2cInfo->Port,I2cInfo->SlaveDeviceAddress); - - ulFifo = I2C_GetTxStatus(I2cInfo->Socket,I2cInfo->Port); - while(0 != ulFifo) - { - I2C_Delay(2); - if(++ulTimes > I2C_READ_TIMEOUT) - { - (VOID)I2C_Disable(I2cInfo->Socket, I2cInfo->Port); - return EFI_TIMEOUT; - } - ulFifo = I2C_GetTxStatus(I2cInfo->Socket,I2cInfo->Port); - } - - - if(I2cInfo->DeviceType == DEVICE_TYPE_CPLD_3BYTE_OPERANDS) - { - I2C_REG_WRITE(Base + I2C_DATA_CMD_OFFSET, (InfoOffset >> 16) & 0xff); - I2C_REG_WRITE(Base + I2C_DATA_CMD_OFFSET, (InfoOffset >> 8) & 0xff); - I2C_REG_WRITE(Base + I2C_DATA_CMD_OFFSET, InfoOffset & 0xff); - } - - else if(I2cInfo->DeviceType == DEVICE_TYPE_CPLD_4BYTE_OPERANDS) - { - I2C_REG_WRITE(Base + I2C_DATA_CMD_OFFSET, (InfoOffset >> 24) & 0xff); - I2C_REG_WRITE(Base + I2C_DATA_CMD_OFFSET, (InfoOffset >> 16) & 0xff); - I2C_REG_WRITE(Base + I2C_DATA_CMD_OFFSET, (InfoOffset >> 8) & 0xff); - I2C_REG_WRITE(Base + I2C_DATA_CMD_OFFSET, InfoOffset & 0xff); - } - - else - { - - } - - ulTimes = 0; - for(Idx = 0; Idx < ulLength; Idx++) - { - - I2C_REG_WRITE(Base + I2C_DATA_CMD_OFFSET, *pBuf++); - - } - - ulFifo = I2C_GetTxStatus(I2cInfo->Socket,I2cInfo->Port); - ulTimes = 0; - while(0 != ulFifo) - { - I2C_Delay(2); - - if(++ulTimes > I2C_READ_TIMEOUT) - { - DEBUG ((EFI_D_ERROR, "I2C Write try to finished,time out!\n")); - (VOID)I2C_Disable(I2cInfo->Socket, I2cInfo->Port); - return EFI_TIMEOUT; - } - ulFifo = I2C_GetTxStatus(I2cInfo->Socket,I2cInfo->Port); - } - (VOID)I2C_Disable(I2cInfo->Socket, I2cInfo->Port); - - return EFI_SUCCESS; + UINT32 Fifo; + UINT32 Times = 0; + UINT32 Idx; + UINTN Base; + + if (I2cInfo->Port >= I2C_PORT_MAX) { + return EFI_INVALID_PARAMETER; + } + + Base = GetI2cBase (I2cInfo->Socket, I2cInfo->Port); + + (VOID)I2C_Enable(I2cInfo->Socket, I2cInfo->Port); + + I2C_SetTarget(I2cInfo->Socket, I2cInfo->Port, I2cInfo->SlaveDeviceAddress); + + Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + while (0 != Fifo) { + I2C_Delay (2); + if (++Times > I2C_READ_TIMEOUT) { + (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); + return EFI_TIMEOUT; + } + Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + } + + if (I2cInfo->DeviceType == DEVICE_TYPE_CPLD_3BYTE_OPERANDS) { + I2C_REG_WRITE (Base + I2C_DATA_CMD_OFFSET, (InfoOffset >> 16) & 0xff); + I2C_REG_WRITE (Base + I2C_DATA_CMD_OFFSET, (InfoOffset >> 8) & 0xff); + I2C_REG_WRITE (Base + I2C_DATA_CMD_OFFSET, InfoOffset & 0xff); + } else if (I2cInfo->DeviceType == DEVICE_TYPE_CPLD_4BYTE_OPERANDS) { + I2C_REG_WRITE (Base + I2C_DATA_CMD_OFFSET, (InfoOffset >> 24) & 0xff); + I2C_REG_WRITE (Base + I2C_DATA_CMD_OFFSET, (InfoOffset >> 16) & 0xff); + I2C_REG_WRITE (Base + I2C_DATA_CMD_OFFSET, (InfoOffset >> 8) & 0xff); + I2C_REG_WRITE (Base + I2C_DATA_CMD_OFFSET, InfoOffset & 0xff); + } else { + } + + Times = 0; + for (Idx = 0; Idx < Length; Idx++) { + I2C_REG_WRITE (Base + I2C_DATA_CMD_OFFSET, *pBuf++); + } + + Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + Times = 0; + while (Fifo != 0) { + I2C_Delay (2); + + if (++Times > I2C_READ_TIMEOUT) { + DEBUG ((DEBUG_ERROR, "I2C Write try to finished,time out!\n")); + (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); + return EFI_TIMEOUT; + } + Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + } + (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); + + return EFI_SUCCESS; } From patchwork Tue Aug 14 08:08:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 144129 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4049657ljj; Tue, 14 Aug 2018 01:11:21 -0700 (PDT) X-Google-Smtp-Source: AA+uWPxFrTW/MfEmcI3WvW8FNqQk0E0OmImUBGkN1Om4+Y80xJvKDHXuWelPDvr6ATWGIwwcfVGy X-Received: by 2002:a17:902:1081:: with SMTP id c1-v6mr6614888pla.277.1534234280950; Tue, 14 Aug 2018 01:11:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234280; cv=none; d=google.com; s=arc-20160816; b=ifkpAwMe+KwVKeoGVXl09HTAPuGLUqSYUsOMW4UbYubJYJ35FPAgQreg7ZCzmYhNso R+Dui3Aa3g+thwyLhEMbSZ8GjUiTp4k4etQ61LlgV+DVvy3GihxWPU3BpofJKZfgq6GL WAyEn7kjgXZsr1q00rcUFEDoaWqCt2EaKfgMuoPL6vQHOcgAFhbXunoaw9OC87JrK4QV LB4vC+FUTLlV26yaDLQGwwBSJhEixZHHqzfXr7fT3vHZQwQRWDSKaDKSB/2cG+Qi/y9k f+602kpnuqa+rVZNkP+OHeA1Z/G87lg2PzZC0djNMnIXvpXOejTjUZ7NA9EeXDmPOj0q bwdA== 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=HZ6eO+fFa5z1GMM1sk1YkICool/0BXYNvoOZAbOCjDY=; b=KF8tTTejlcNGvsaW4XDIBlMbMn17WxF/vn4sRLAumxHvm+KrtgMKreVP1qImmECtMv RwtRxXSOQm7Th4vR29HvT0QQg5xZYloFlRLMBTUwUlrtpLTWsGzbGAlBxEQwwHliGhMH v8INMcDPXFB2T/cXeh+BYWxQDimPpA3uEjpFYd400EODgA6GdXh5Mo12ThJKt34o9SBT onpvejOo9AmtxLvL15ODXvRwl4eK9k3hLNgzLonkwgbXtuwEyWpV5WgrkkLOP6FGCqKj sT96LwsifLvjRptoaDWpZID7F/Vav3LziuwsPG8YYadt6FnGvG9M4wQVOh8jSfe51c0/ vhEQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=edZUYVKR; 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 i16-v6si17743971pgn.252.2018.08.14.01.11.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:11: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=edZUYVKR; 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 786B3210F16C8; Tue, 14 Aug 2018 01:10:40 -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:400e:c01::229; helo=mail-pl0-x229.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pl0-x229.google.com (mail-pl0-x229.google.com [IPv6:2607:f8b0:400e:c01::229]) (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 6511A210F1542 for ; Tue, 14 Aug 2018 01:10:39 -0700 (PDT) Received: by mail-pl0-x229.google.com with SMTP id g1-v6so346986plo.2 for ; Tue, 14 Aug 2018 01:10: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=zVLkioRfjr6SAofRo0hnkWa4eepOQ03l/pbrG1Rl8Sk=; b=edZUYVKRTFwrJTMFiPa5kZmFjNnBmECZ3IbhU59ysxDtipkZOcHRmi//XZDI6IdauY fsiDGHEAyBCjTWWjdD9ePzBj23kE/sToPIPh9jxN/nS+FDzKp0j/BprTkglQUYyjAugO FlqOD4cn8mc43kUPfwJD/kZp8qxCs6KxSmq04= 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=zVLkioRfjr6SAofRo0hnkWa4eepOQ03l/pbrG1Rl8Sk=; b=iO63BQBaAKTQ4fHni59besl2p0tgNOiOnVz2xtupC17PtRNgmMyHqlxBUYBsmNHg6T Jp4ypgmA+32g6/EC75Cd14ZB1g3tZldjM4mpBTu2vCXmMNOk+mioWoIKHwKdRZ+Ty/Zh EwUV+RDBaIOwyAwJCuDfc6Ao1sKifNsnBWFnqdlYpFnsgHD0Fw5MHVTLh6WI0ZPLdiv+ misjRWX/jw/GWlqqNk7YO7NYQUApXJH8bmBy6wLjMMB37iPdOByOhaGjHylqnQP6AClq 6J3sC5a4kZttCE32IHm1sRvpVz9eLDOdSxV6pqI8DBkzlvRdoDQHthch2yQZxqXh8Lnu 99Cw== X-Gm-Message-State: AOUpUlHA0d1y8GuI+o7ZpYOZrZRXKmNhBajq/CDF75WCAmQjYKQHn23t xs9dLLF/VhW1AOPJikkDJXrSiw== X-Received: by 2002:a17:902:543:: with SMTP id 61-v6mr19758743plf.126.1534234238939; Tue, 14 Aug 2018 01:10:38 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.10.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:10: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: Tue, 14 Aug 2018 16:08:41 +0800 Message-Id: <20180814080903.50466-22-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 21/43] Silicon/Hisilicon/I2C: Refactor I2C library X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 hunk of waiting TX/TX finish is used by ten times, so move there hunks to a function CheckI2CTimeOut(). Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang --- Silicon/Hisilicon/Library/I2CLib/I2CHw.h | 4 + Silicon/Hisilicon/Library/I2CLib/I2CLib.c | 161 ++++++++------------ 2 files changed, 66 insertions(+), 99 deletions(-) -- 2.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Silicon/Hisilicon/Library/I2CLib/I2CHw.h b/Silicon/Hisilicon/Library/I2CLib/I2CHw.h index aa561e929c..fa954c7937 100644 --- a/Silicon/Hisilicon/Library/I2CLib/I2CHw.h +++ b/Silicon/Hisilicon/Library/I2CLib/I2CHw.h @@ -265,5 +265,9 @@ UINT32 Val32; } I2C0_ENABLE_STATUS_U; +typedef enum { + I2CTx, + I2CRx +} I2CTransfer; #endif diff --git a/Silicon/Hisilicon/Library/I2CLib/I2CLib.c b/Silicon/Hisilicon/Library/I2CLib/I2CLib.c index f03d55d6b2..9174e50dd4 100644 --- a/Silicon/Hisilicon/Library/I2CLib/I2CLib.c +++ b/Silicon/Hisilicon/Library/I2CLib/I2CLib.c @@ -238,6 +238,45 @@ I2C_GetRxStatus ( return Fifo.bits.rxflr; } +EFI_STATUS +EFIAPI +CheckI2CTimeOut ( + UINT32 Socket, + UINT8 Port, + I2CTransfer Transfer + ) +{ + UINT32 Times = 0; + UINT32 Fifo; + + if (Transfer == I2CTx) { + Fifo = I2C_GetTxStatus (Socket, Port); + while (Fifo != 0) { + // This is a empirical value for I2C delay. MemoryFance is no need here. + I2C_Delay (2); + if (++Times > I2C_READ_TIMEOUT) { + (VOID)I2C_Disable (Socket, Port); + return EFI_TIMEOUT; + } + Fifo = I2C_GetTxStatus (Socket, Port); + } + } else { + Fifo = I2C_GetRxStatus (Socket, Port); + while (Fifo == 0) { + // This is a empirical value for I2C delay. MemoryFance is no need here. + I2C_Delay (2); + if (++Times > I2C_READ_TIMEOUT) { + (VOID)I2C_Disable (Socket, Port); + return EFI_TIMEOUT; + } + Fifo = I2C_GetRxStatus (Socket, Port); + } + } + + return EFI_SUCCESS; +} + + EFI_STATUS EFIAPI WriteBeforeRead ( @@ -254,15 +293,11 @@ WriteBeforeRead ( I2C_SetTarget (I2cInfo->Socket, I2cInfo->Port, I2cInfo->SlaveDeviceAddress); - Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); - while (Fifo != 0) { - I2C_Delay (2); - if (++Times > I2C_READ_TIMEOUT) { - return EFI_TIMEOUT; - } - Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + if (CheckI2CTimeOut (I2cInfo->Socket, I2cInfo->Port, I2CTx) == EFI_TIMEOUT) { + return EFI_TIMEOUT; } + Fifo = 0; for (Count = 0; Count < Length; Count++) { Times = 0; while (Fifo > I2C_TXRX_THRESHOLD) { @@ -277,15 +312,8 @@ WriteBeforeRead ( Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); } - Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); - Times = 0; - while (Fifo != 0) { - I2C_Delay (2); - - if (++Times > I2C_READ_TIMEOUT) { - return EFI_TIMEOUT; - } - Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + if (CheckI2CTimeOut (I2cInfo->Socket, I2cInfo->Port, I2CTx) == EFI_TIMEOUT) { + return EFI_TIMEOUT; } return EFI_SUCCESS; @@ -316,14 +344,8 @@ I2CWrite( I2C_SetTarget(I2cInfo->Socket, I2cInfo->Port, I2cInfo->SlaveDeviceAddress); - Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); - while (Fifo != 0) { - I2C_Delay (2); - if (++Times > I2C_READ_TIMEOUT) { - (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); - return EFI_TIMEOUT; - } - Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + if (CheckI2CTimeOut (I2cInfo->Socket, I2cInfo->Port, I2CTx) == EFI_TIMEOUT) { + return EFI_TIMEOUT; } if (I2cInfo->DeviceType) { @@ -333,15 +355,8 @@ I2CWrite( I2C_REG_WRITE (Base + I2C_DATA_CMD_OFFSET, InfoOffset & 0xff); } - Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); - Times = 0; - while (Fifo != 0) { - I2C_Delay (2); - if (++Times > I2C_READ_TIMEOUT) { - (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); - return EFI_TIMEOUT; - } - Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + if (CheckI2CTimeOut (I2cInfo->Socket, I2cInfo->Port, I2CTx) == EFI_TIMEOUT) { + return EFI_TIMEOUT; } for (Idx = 0; Idx < Length; Idx++) { @@ -364,17 +379,8 @@ I2CWrite( } } - Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); - Times = 0; - while (Fifo != 0) { - I2C_Delay (2); - - if (++Times > I2C_READ_TIMEOUT) { - DEBUG ((DEBUG_ERROR, "I2C Write try to finished,time out!\n")); - (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); - return EFI_TIMEOUT; - } - Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + if (CheckI2CTimeOut (I2cInfo->Socket, I2cInfo->Port, I2CTx) == EFI_TIMEOUT) { + return EFI_TIMEOUT; } (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); @@ -390,8 +396,6 @@ I2CRead( UINT8 *pBuf ) { - UINT32 Fifo; - UINT32 Times = 0; UINT8 I2CWAddr[2]; EFI_STATUS Status; UINT32 Idx = 0; @@ -422,15 +426,8 @@ I2CRead( I2C_SetTarget (I2cInfo->Socket, I2cInfo->Port, I2cInfo->SlaveDeviceAddress); - Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); - while (Fifo != 0) { - I2C_Delay (2); - - while (++Times > I2C_READ_TIMEOUT) { - (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); - return EFI_TIMEOUT; - } - Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + if (CheckI2CTimeOut (I2cInfo->Socket, I2cInfo->Port, I2CTx) == EFI_TIMEOUT) { + return EFI_TIMEOUT; } while (RxLen > 0) { @@ -441,16 +438,9 @@ I2CRead( I2C_REG_WRITE (Base + I2C_DATA_CMD_OFFSET, I2C_READ_SIGNAL | I2C_CMD_STOP_BIT); } - Times = 0; - do { - I2C_Delay (2); - - while (++Times > I2C_READ_TIMEOUT) { - (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); - return EFI_TIMEOUT; - } - Fifo = I2C_GetRxStatus (I2cInfo->Socket, I2cInfo->Port); - } while (Fifo == 0); + if (CheckI2CTimeOut (I2cInfo->Socket, I2cInfo->Port, I2CRx) == EFI_TIMEOUT) { + return EFI_TIMEOUT; + } I2C_REG_READ (Base + I2C_DATA_CMD_OFFSET, pBuf[Idx++]); @@ -472,8 +462,6 @@ I2CReadMultiByte ( { UINT32 Count; UINT16 TotalLen = 0; - UINT32 Fifo; - UINT32 Times = 0; UINT8 I2CWAddr[4]; EFI_STATUS Status; UINT32 BytesLeft; @@ -531,16 +519,9 @@ I2CReadMultiByte ( } for (Count = 0; Count < BytesLeft; Count++) { - Times = 0; - do { - I2C_Delay (2); - - while (++Times > I2C_READ_TIMEOUT) { - (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); - return EFI_TIMEOUT; - } - Fifo = I2C_GetRxStatus (I2cInfo->Socket, I2cInfo->Port); - } while (Fifo == 0); + if (CheckI2CTimeOut (I2cInfo->Socket, I2cInfo->Port, I2CRx) == EFI_TIMEOUT) { + return EFI_TIMEOUT; + } I2C_REG_READ (Base + I2C_DATA_CMD_OFFSET, pBuf[Idx++]); } @@ -558,8 +539,6 @@ I2CWriteMultiByte( UINT8 *pBuf ) { - UINT32 Fifo; - UINT32 Times = 0; UINT32 Idx; UINTN Base; @@ -573,14 +552,8 @@ I2CWriteMultiByte( I2C_SetTarget(I2cInfo->Socket, I2cInfo->Port, I2cInfo->SlaveDeviceAddress); - Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); - while (0 != Fifo) { - I2C_Delay (2); - if (++Times > I2C_READ_TIMEOUT) { - (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); - return EFI_TIMEOUT; - } - Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + if (CheckI2CTimeOut (I2cInfo->Socket, I2cInfo->Port, I2CTx) == EFI_TIMEOUT) { + return EFI_TIMEOUT; } if (I2cInfo->DeviceType == DEVICE_TYPE_CPLD_3BYTE_OPERANDS) { @@ -595,22 +568,12 @@ I2CWriteMultiByte( } else { } - Times = 0; for (Idx = 0; Idx < Length; Idx++) { I2C_REG_WRITE (Base + I2C_DATA_CMD_OFFSET, *pBuf++); } - Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); - Times = 0; - while (Fifo != 0) { - I2C_Delay (2); - - if (++Times > I2C_READ_TIMEOUT) { - DEBUG ((DEBUG_ERROR, "I2C Write try to finished,time out!\n")); - (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); - return EFI_TIMEOUT; - } - Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); + if (CheckI2CTimeOut (I2cInfo->Socket, I2cInfo->Port, I2CTx) == EFI_TIMEOUT) { + return EFI_TIMEOUT; } (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); From patchwork Tue Aug 14 08:08:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 144130 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4049736ljj; Tue, 14 Aug 2018 01:11:25 -0700 (PDT) X-Google-Smtp-Source: AA+uWPyh15jg0134y1UH73YLKYPH8gpDcUMoI7l1eXCTGWJNVtNjgsfYbzWRGkLt/At2TxBjPLk6 X-Received: by 2002:a62:4f5b:: with SMTP id d88-v6mr22446579pfb.225.1534234285568; Tue, 14 Aug 2018 01:11:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234285; cv=none; d=google.com; s=arc-20160816; b=FEZSfls8Ukszeb6yKm6fK2d3LYQANVZ8yPTUyq1BTvzKUzSFgwmYajUGpT5CVt9EYK 71ZfkRt8LVPUzEo1z5v4gGuXlrS2EkP4a+aEr8obWUZP1Wzk7usgOwBhr3cTVkQOVA8/ ddDCHMUyVmZiM/8JPJMac1rr0/PzeMc7+wqeeNOaTRxnHzjH827N2DTkg4yNcxuKa08K HIeUPE3g8K1X5oTr1G5RgD3zBePIRULNeMGouvGMILUv5cat2K56KSRsgy8QxjBt/df2 Yzq0nKvkZD04sfZXhmlEXCvwMinPpHxRassy9grE+DmcUYQlvl4lliNv8kSY3hJNrGXX 4iig== 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=oPDmCvKsNQopZ6u8581nItyC3+FJd7mt0uuX+5LIaCw=; b=vDLRd1S2tVavYGgcQ8qa7PqcrlmRuPH/2kKYtWYHgUlRCwDDMWP+FWc66MMvtzaJEn 0IfkXMiienb1VE83luIbr172baORZszlY8eca7tRRbS2zD48IgSGckOH21T7cfdAzZav HiRIKArpMJ2FEpsNtlLKfi4D6cnGcNz5ishTPBCINhlK+edDRy3OXlDMu2F/e+AfhvBF NBpPYu1DMYnSmYeL0JL5VVChtYe273mbbTW4IU805esLTdE8wDaMn7y38Ai33cs04L/E wSNRq5vJ8c6QEvSW64Q5ThWNpXrdXdDW6Ib/lzUo48i4EvWUoFU60ea1o2zLkvyuqWCm OjgQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=aJdvkUug; 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 d190-v6si22718687pfd.113.2018.08.14.01.11.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:11:25 -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=aJdvkUug; 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 A2B14210F16CE; Tue, 14 Aug 2018 01:10:43 -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 757DE210F16CC for ; Tue, 14 Aug 2018 01:10:42 -0700 (PDT) Received: by mail-pg1-x544.google.com with SMTP id r1-v6so8778695pgp.11 for ; Tue, 14 Aug 2018 01:10:42 -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=ne7UD5d46U3RJ9EVF2uqubhT3FmUwsR/vgU37WDXFUM=; b=aJdvkUugVXDJcEGEhyiS37DSxBwzfUhVGYnCniRnHFLL6PCz3PikQjnc3wKy2W+s54 +AjFDY2nepIqcfoFm65LNZOa8kMIS/ZjGJL3TBmPUHrrP/AMya1Dihxh5najqfvkMahj YCkomKv9zJA5wXFGCERujzVPwS166dTRnbdMw= 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=ne7UD5d46U3RJ9EVF2uqubhT3FmUwsR/vgU37WDXFUM=; b=ncRZ9KXxmpHyPcMV4YHsrJGQ5IHdDracEHP44Tkd+1ZLy3TBz8aXZScgNpVahghvt+ RvmjR4H+fIDq7Kk9Dhj1F/34rDirurNdU6Px5XLha44M7Va4qfUg9foEb4J2ztIT8dQC v2X7enfljwCIRJYNHW9qgpKdmLgAOxHnEttyLPVrDDmj8JlO1mG7k6j/eNf0x7KlWh99 w8yO22WWPXmaQ7W77i9ad6AcgBN17QY3SuPtxVC+2FziFYt7cMCMkF/C9+2XDneNWVAf 2fIAk/WimkiC0xpNh5x2zwubw2+DjuMCXm5a3K7J6ZXbMiwt7Uclkurc/4dMNDbucEpz D1OQ== X-Gm-Message-State: AOUpUlFxyoSNwVhuVaZhhL0BDmYf69SxyK495lQV7mXlum1YXJeVbge0 6ondENbuD5hoAE36/7RbCqyqCg== X-Received: by 2002:a62:6746:: with SMTP id b67-v6mr22269600pfc.243.1534234242194; Tue, 14 Aug 2018 01:10:42 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.10.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:10:41 -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: Tue, 14 Aug 2018 16:08:42 +0800 Message-Id: <20180814080903.50466-23-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 22/43] Silicon/Hisilicon/D06: Fix I2C enable fail issue for D06 X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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" I2C may enable failed in D06, so retry I2C enable while enable failed. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang --- Silicon/Hisilicon/Library/I2CLib/I2CLib.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) -- 2.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Leif Lindholm diff --git a/Silicon/Hisilicon/Library/I2CLib/I2CLib.c b/Silicon/Hisilicon/Library/I2CLib/I2CLib.c index 9174e50dd4..d67ddc7f9b 100644 --- a/Silicon/Hisilicon/Library/I2CLib/I2CLib.c +++ b/Silicon/Hisilicon/Library/I2CLib/I2CLib.c @@ -86,6 +86,7 @@ I2C_Enable ( { I2C0_ENABLE_U I2cEnableReg; I2C0_ENABLE_STATUS_U I2cEnableStatusReg; + UINT32 TimeCnt = I2C_READ_TIMEOUT; UINTN Base = GetI2cBase (Socket, Port); @@ -93,13 +94,18 @@ I2C_Enable ( I2cEnableReg.bits.enable = 1; I2C_REG_WRITE (Base + I2C_ENABLE_OFFSET, I2cEnableReg.Val32); + do { + // This is a empirical value for I2C delay. MemoryFance is no need here. + I2C_Delay (10000); - I2C_REG_READ (Base + I2C_ENABLE_STATUS_OFFSET, I2cEnableStatusReg.Val32); - if (I2cEnableStatusReg.bits.ic_en == 1) { - return EFI_SUCCESS; - } else { - return EFI_DEVICE_ERROR; - } + TimeCnt--; + I2C_REG_READ (Base + I2C_ENABLE_STATUS_OFFSET, I2cEnableStatusReg.Val32); + if (TimeCnt == 0) { + return EFI_DEVICE_ERROR; + } + } while (I2cEnableStatusReg.bits.ic_en == 0); + + return EFI_SUCCESS; } VOID From patchwork Tue Aug 14 08:08: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: 144131 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4049827ljj; Tue, 14 Aug 2018 01:11:31 -0700 (PDT) X-Google-Smtp-Source: AA+uWPx5H1juft/m+gYGZ6N0EOHNN8/SohgKiBd4H+kTwWNLZ7nZOuNKEzu7uqQIQcThZBd/P7ka X-Received: by 2002:a17:902:32a4:: with SMTP id z33-v6mr19742978plb.226.1534234291142; Tue, 14 Aug 2018 01:11:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234291; cv=none; d=google.com; s=arc-20160816; b=0jYN3cM3eQuyXiGALsX1ABs4+6w9TR1xQcUQC9rG34WS+UnDwn22MbdSDsZJjzMRkW +OLLl1R5WAwYqMAvrElMXbs34Mr+FpXbiRKSJ6kfLfTMroBiS1r5JgVPuqj4DDPypSY7 V6NuaEVlXQI42IM+fFrQtO2sgrzoneqdZfLuJMajMvRPrK5vVX+SCWYGv/T7vAFj3qKk RP5Yae1Qrn2JsIS8hcFSFZY1nnuPyijYtx+ljshO/eyaW8gbUIy3h39ZG7RpOWcc0/zR D6FTLPOrkk58YBIWVKRbOYL07kl/znTpo9PgODy/5LXlWm4JsJKUaa+cRKrucpYe5jTj re+w== 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=GBge2I07ujngdyr0InwAXRI85y7I/qWaslrpClOMOu4=; b=NibPrv0JIjGn2ZOO2H8CyV3PwE3Sq+uEbgkRu+RNsVRnMvA/u9+06t+RD2EbLXRWCN ekfiWYuHcf7bZwDqlPuF/78Bp60Udk8Ffn3bmkYL/RFVo6bR3V97ErfG/eULGPRDvewe czUu5Jwro8Pz0UfUnryFZCkdTLInZ5ERfOapFMukZ2MBUIJOZxrbOvo2vgnw6b6qC9R5 IPv+8H7m7Z/pcOaOCqZrViy6XbPzb7l6cLyNf+m5qCehQSiXSbT8ib+GLssMMO0bFoio dEcvcX10F6FGdiIUVGj4XITk/wm3CuolLnw/3mERQqkJodh6rvNYVG++4TUOp/KevTld kZUQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=AXlCiyGp; 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 t5-v6si20068923pgs.52.2018.08.14.01.11.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:11: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=AXlCiyGp; 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 D42C9210F16D2; Tue, 14 Aug 2018 01:10:46 -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::42c; helo=mail-pf1-x42c.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pf1-x42c.google.com (mail-pf1-x42c.google.com [IPv6:2607:f8b0:4864:20::42c]) (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 08988210F1554 for ; Tue, 14 Aug 2018 01:10:45 -0700 (PDT) Received: by mail-pf1-x42c.google.com with SMTP id k19-v6so8942988pfi.1 for ; Tue, 14 Aug 2018 01:10: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=nb2lHWdGG4YFVsPmiI2pdHv67gASNQbcGb8j0MRoPj8=; b=AXlCiyGpO/JlTuSRVTxYEsc0S4mZmiocP+0l7Vdo6ni2XhZ83Fk2bw13yIDAJm5leM cVFC/Qx3IXki/ZsvelZcvZlokVb9JaSimk/kf86eqmoD7O6XKnicAMUkVUp0jP4O+3Xb GtRgiXd7XdwDHMbPUjjQ4nAJZ6kHrunPErjwQ= 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=nb2lHWdGG4YFVsPmiI2pdHv67gASNQbcGb8j0MRoPj8=; b=ITd7QXqZ9iyCjvkYXmekPDPsHCgnjdbzaKX4dQ6NPH99vsro1KvSae34jnHWdZnAeE 26ZHgmTLtW55+t703Mc6IfBEpn9lxlooHZn7TXcA4j8K/1LmCiI0m7s5zuT3i9RXQwFL /3PIfuScIIBLotnfJuZxere7+9vmgA0nEzBjZfHmfRScPuy75XSWyTkNCscs/4o177Ho Bn1LEHdFvcTpcTehXOhZBxrTBxoSd+otu8MldyMfH1yduBL9I8+QdvCHmhn/dMOUKds6 DpmMBZ04QMlUFwMS/FoHS48GPZMw4UILpYpQLjAimOYFAxbeduXh00PPL3QBPAokRJL9 WmaA== X-Gm-Message-State: AOUpUlFVpMeHb+N/lAM8hsKiQCmeINabU4DOUD28ZFwr98mcGFJKJv+L 1oI1JjvA8dn6I00R8PQshfOLWA== X-Received: by 2002:a65:5b8e:: with SMTP id i14-v6mr20301587pgr.242.1534234245581; Tue, 14 Aug 2018 01:10:45 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.10.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:10:44 -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: Tue, 14 Aug 2018 16:08:43 +0800 Message-Id: <20180814080903.50466-24-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 23/43] Silicon/Hisilicon/D06: Add I2C delay for HNS auto config X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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" Because I2C Port5 salve device connect under I2C extender (9545 device), it will cost more time to access I2C slave device, so add delay time for HNS auto config. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang --- Silicon/Hisilicon/Library/I2CLib/I2CHw.h | 3 +++ Silicon/Hisilicon/Library/I2CLib/I2CLib.c | 21 +++++++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) -- 2.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Leif Lindholm diff --git a/Silicon/Hisilicon/Library/I2CLib/I2CHw.h b/Silicon/Hisilicon/Library/I2CLib/I2CHw.h index fa954c7937..d77aea509e 100644 --- a/Silicon/Hisilicon/Library/I2CLib/I2CHw.h +++ b/Silicon/Hisilicon/Library/I2CLib/I2CHw.h @@ -19,6 +19,9 @@ #include #include +// The HNS I2C port 5 is under I2C extender +#define I2C_EXTENDER_PORT_HNS 5 + #define I2C_READ_TIMEOUT 500 #define I2C_DRV_ONCE_WRITE_BYTES_NUM 8 #define I2C_DRV_ONCE_READ_BYTES_NUM 8 diff --git a/Silicon/Hisilicon/Library/I2CLib/I2CLib.c b/Silicon/Hisilicon/Library/I2CLib/I2CLib.c index d67ddc7f9b..59633106ce 100644 --- a/Silicon/Hisilicon/Library/I2CLib/I2CLib.c +++ b/Silicon/Hisilicon/Library/I2CLib/I2CLib.c @@ -258,8 +258,13 @@ CheckI2CTimeOut ( if (Transfer == I2CTx) { Fifo = I2C_GetTxStatus (Socket, Port); while (Fifo != 0) { - // This is a empirical value for I2C delay. MemoryFance is no need here. - I2C_Delay (2); + if (Port == I2C_EXTENDER_PORT_HNS) { + // This is a empirical value for I2C delay. MemoryFance is no need here. + I2C_Delay (1000); + } else { + // This is a empirical value for I2C delay. MemoryFance is no need here. + I2C_Delay (2); + } if (++Times > I2C_READ_TIMEOUT) { (VOID)I2C_Disable (Socket, Port); return EFI_TIMEOUT; @@ -269,8 +274,13 @@ CheckI2CTimeOut ( } else { Fifo = I2C_GetRxStatus (Socket, Port); while (Fifo == 0) { - // This is a empirical value for I2C delay. MemoryFance is no need here. - I2C_Delay (2); + if (Port == I2C_EXTENDER_PORT_HNS) { + // This is a empirical value for I2C delay. MemoryFance is no need here. + I2C_Delay (1000); + } else { + // This is a empirical value for I2C delay. MemoryFance is no need here. + I2C_Delay (2); + } if (++Times > I2C_READ_TIMEOUT) { (VOID)I2C_Disable (Socket, Port); return EFI_TIMEOUT; @@ -369,7 +379,8 @@ I2CWrite( Times = 0; Fifo = I2C_GetTxStatus (I2cInfo->Socket, I2cInfo->Port); while (Fifo > I2C_TXRX_THRESHOLD) { - I2C_Delay (2); + // This is a empirical value for I2C delay. MemoryFance is no need here. + I2C_Delay (1000); if (++Times > I2C_READ_TIMEOUT) { (VOID)I2C_Disable (I2cInfo->Socket, I2cInfo->Port); return EFI_TIMEOUT; From patchwork Tue Aug 14 08:08: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: 144132 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4049887ljj; Tue, 14 Aug 2018 01:11:36 -0700 (PDT) X-Google-Smtp-Source: AA+uWPzruElvtgDFKgTXtRmBfapdN/S/3n2blLXQRMelZ47plnWoVCVQJxUcC1atLUMUBV/YEBy6 X-Received: by 2002:a17:902:8a8e:: with SMTP id p14-v6mr19320978plo.213.1534234296124; Tue, 14 Aug 2018 01:11:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234296; cv=none; d=google.com; s=arc-20160816; b=Rrabyn0aTd3mYKdvBVmKsug87SP9a1qCfD+Qze9XLJnSFqNbDNNrNZrMSIQgnZ6Ji/ DUGLszHum7FEiZrjYDCrv3W5HFEFX5rcJGMsfwgVnYc+qdKbv3Y0dI+xn0xL89QKPjT1 pgmwmvoxw6xfPNX8hlgrutYAYhLnnLu82eMXcMcTWCE23ml5w6T3jAC2inx9WRFgH4U8 x79utUmW2AiQOFBErpXIxQW5IuqPeaa+jWeNRo38t9SWCICivprws1efucGVu9t8LCJ8 k5P8PxnKpE9kMbEfwlpdaE1+9ZXdzJRAlAZVv/y/XpN4kmuORS+LHZ7heyc1tU8S5y8I vQGw== 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=sXEqKEU3mH9xio5krNarPj01c7m9zyTT8V9RrdCcmBY=; b=LyvU0CBue1xTbK8K6Un/0VEEbhVVUA1Vcwrbo+tsgmYhvKrgd72lTuOXAgPROrjdzE GFjiqsyqIqVOQDf626z3E7Rf1LNmg3b/peLfTeVg9H/ITzSOkWIR0EOJ+MTNcglqQZWS +8yp7PTogNPI7pspOxpvlnmWAC2hcN4f2qph1T5ILK8NFvcKzESTPbTGQiqONGzP3ptU 27MLXcP91F/MM9StaBql73qFvY/PCq0ApLXMQjC6cByYPVKSGQsFIhu1g+Fisst5GYS1 etRrSlRcHtTwda9lVbp/ScY7V96NL4l4WgM/l0WWnUJjtdBElkbkDa5JeVikXex/9pel Mu5g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=fw9paPKJ; 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 n8-v6si15536812plk.255.2018.08.14.01.11.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:11:36 -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=fw9paPKJ; 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 0AD0A210F16CD; Tue, 14 Aug 2018 01:10:50 -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 243B5210F16D5 for ; Tue, 14 Aug 2018 01:10:49 -0700 (PDT) Received: by mail-pg1-x542.google.com with SMTP id y4-v6so8779200pgp.9 for ; Tue, 14 Aug 2018 01:10:49 -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=zlFw10OVKsTDe9v8RlzrrPGTtTM/DziLmkb0SeZanO8=; b=fw9paPKJQ2OyR6fQT9tU5ngb4YS1/kyQhGrhtCMmzAbaOVJ1rK/Vc+Z+C86ptZaOJq LZ5rYcLocw7YABb+DGfTRtEe1VoqQSDotfu/dxAPDid2R2I5pDVeYflBpk1soCqfnBhB M7VGEGTNkmFGIbnM4ddqSjC9xdqY7NOsqBeSY= 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=zlFw10OVKsTDe9v8RlzrrPGTtTM/DziLmkb0SeZanO8=; b=Ng4xDKqPl4/E3NgHNx9ql0VMl2HZoZg/AB/HopJ7AwaxnYpRGuQPLStsVxURCzeTVC RnAF8TXT1sKOBRQn81OIuqJjtHU/s0lLIaPKC2ZTuK9pnSAQxXZKhyvXivm3MAdrS9S6 H1y10EuYhu+K6gkNOx0kvrTWQ/Q/lBBCCNHyvFsm5CPqbBlOu7cMr0eOgADXHQZFnzLz iHDLk8qvnxhomP6hzQyrz/lYyi6Fyu38OQ22CfEkErPHxPQ2yzIwJgz28MMnMrajtJuj 4r791oAfRQnw/LdLWkp3KSKteIUyxt00DZUCUpbjctNGdxevUlQGfJccdqzqZcLBWndK yNnw== X-Gm-Message-State: AOUpUlGBfHKS6CKvI6DeDvXYOxDTOp39LjSRi1X/OOu3zRSAaP7Pr97m 23v41d8rkOh+sTHQUg4WlZDeCg== X-Received: by 2002:a63:4d5:: with SMTP id 204-v6mr20002445pge.129.1534234248834; Tue, 14 Aug 2018 01:10:48 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.10.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:10:48 -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: Tue, 14 Aug 2018 16:08:44 +0800 Message-Id: <20180814080903.50466-25-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 24/43] Hisilicon/I2C: Fix a typo issue X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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" Modify spedd to Speed. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang --- Silicon/Hisilicon/Library/I2CLib/I2CHw.h | 2 +- Silicon/Hisilicon/Library/I2CLib/I2CLib.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) -- 2.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/Silicon/Hisilicon/Library/I2CLib/I2CHw.h b/Silicon/Hisilicon/Library/I2CLib/I2CHw.h index d77aea509e..6fd7b8183e 100644 --- a/Silicon/Hisilicon/Library/I2CLib/I2CHw.h +++ b/Silicon/Hisilicon/Library/I2CLib/I2CHw.h @@ -81,7 +81,7 @@ struct { UINT32 master : 1 ; - UINT32 spedd : 2 ; + UINT32 Speed : 2 ; UINT32 slave_10bit : 1 ; UINT32 master_10bit : 1 ; UINT32 restart_en : 1 ; diff --git a/Silicon/Hisilicon/Library/I2CLib/I2CLib.c b/Silicon/Hisilicon/Library/I2CLib/I2CLib.c index 59633106ce..ed44ac204f 100644 --- a/Silicon/Hisilicon/Library/I2CLib/I2CLib.c +++ b/Silicon/Hisilicon/Library/I2CLib/I2CLib.c @@ -158,7 +158,7 @@ I2CInit ( I2C_REG_READ (Base + I2C_CON_OFFSET, I2cControlReg.Val32); I2cControlReg.bits.master = 1; - I2cControlReg.bits.spedd = 0x1; + I2cControlReg.bits.Speed = 0x1; I2cControlReg.bits.restart_en = 1; I2cControlReg.bits.slave_disable = 1; I2C_REG_WRITE (Base + I2C_CON_OFFSET, I2cControlReg.Val32); From patchwork Tue Aug 14 08:08: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: 144133 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4049960ljj; Tue, 14 Aug 2018 01:11:41 -0700 (PDT) X-Google-Smtp-Source: AA+uWPxRAAkyHwV67j5sWmNLbynYwNL5dv4EHSXr1XW7+j0mvjw1+ZjhjCp50mSfjlbhQ6U8n7aQ X-Received: by 2002:a63:e0b:: with SMTP id d11-v6mr20297902pgl.134.1534234301504; Tue, 14 Aug 2018 01:11:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234301; cv=none; d=google.com; s=arc-20160816; b=VIbZH6K56DlbdzSB+9QrRdtbS/h/Hapk7LmzAfFTvchWnxDHtI1gNzvibI1nk7/OEB eMDuMHgKTfE/7+toqJN/l0hRoN9UVftegWAff8cUFoYO465fGhyS5TEEBWmgnezAnKf6 TQF5mYkeguNtNHixBz2RLWpXi/iNZUgv0fmPNWLu3md3IubOfj4WhtkcXsO1c+6Yl8k1 D9GWmJI7GYDE23b8amVV5Gka6Er0SA3hDCM72fkMU1TR4RonobfLfJBmgvMB27kyJKt5 2g/BL5e8wOxRctBc4Po4H6cRGcvHSR+8Z2XSfPetDddRfGyE+wGARVD21S8EBmjxmE8m q4ZQ== 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=NfswRd+R/VYQkG0vaJbu3qIUhef4QAppQbzPibzU4oM=; b=pUtCmHfIUXhpNo8rcGLb79AbcvW+p4ESI8XKS8csRQ9WioOI7MmAWiUTbHWTSpQv4E xR+fFizrdVscnXcAaPT7h1Z/4vTQJldl0p54kT7WtHujN8v3YAfB6mFZXtyG1YinecHw qyDqCEW2+Aolf36OsBXrpVde5Q9nbuOxLtmFV3YaCcpGP0PyolbE+hZnrw21hPeYWlnV oA1eMtZMqe4Xg7i5FJTh67t1UX7x3J+ww9mmQvL7Ysm6K1hKpsmcvmvysuQ2heYhp5IO SxGqNWWXIIh4ENSbLnSBhB+3wJbSoG+YCRBOPW9pSM6BixRKlMSzcdK87gk6UnJGoPMh Pwbg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b="jqD40N/o"; 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 a84-v6si20845133pfj.300.2018.08.14.01.11.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:11:41 -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="jqD40N/o"; 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 391D7210F16D9; Tue, 14 Aug 2018 01:10:54 -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::429; helo=mail-pf1-x429.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pf1-x429.google.com (mail-pf1-x429.google.com [IPv6:2607:f8b0:4864:20::429]) (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 94E7E210F155C for ; Tue, 14 Aug 2018 01:10:52 -0700 (PDT) Received: by mail-pf1-x429.google.com with SMTP id b11-v6so8931332pfo.3 for ; Tue, 14 Aug 2018 01:10:52 -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=GFiQQuBo8lBEEkD+bKLEw2KMvKmV79SbnO6NaTUyI4w=; b=jqD40N/o6eT8g9BW3b4YW36eSbdnR0Hwa0PKu5pUjc4r4BrY+Y1DwGxddFzq5NsKdl PtPVzC9H1ctsvflqG+tuAOYkNSR/tcxrNsjITA5qOA8BmPRLm0PjtO6il8VMY4yBsetp Nhwv0jNkA6LgdpVYNxI26ch+iaymZTi8Shw3I= 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=GFiQQuBo8lBEEkD+bKLEw2KMvKmV79SbnO6NaTUyI4w=; b=Bf/vuya77G6bI7m3sZDz9CyigTSNqMoIKCwCfAAMrxm3eV9KvCwrkJ9CkE+yEUVQ9i 77LEjXcsec6g89ezegoeKfeMtz41QScYeBeqKQ8EPrsRiHwLJFqu/1JnJoRYvJRy09oV lfr7l2+P84RYWE8TZylT3h89wopJ5Lthrl1KF2kKz3jeu9Prn9qbqOZwCiPLYmAaOTvm 7XISJUxnxyOoOIyJFKtQTd5eqF1ohPG/3tfXuIe5HIGUniAtCrLHw7G8TkFswf2vNojS LMQnKfOGUwoPeG+N61qW6S098Q81Oma8IvDPnOg6JuJpKZSKGrnaMFw5qkaTHBTneX5h L7/A== X-Gm-Message-State: AOUpUlFTHqynF3coOhta95x4n13lKqbzdurBdr3t2G2U08Qh/IDUqHY6 QJ9u4sSsrOvvbLehEfc+lBRRfg== X-Received: by 2002:a63:9b19:: with SMTP id r25-v6mr20079297pgd.44.1534234252265; Tue, 14 Aug 2018 01:10:52 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.10.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:10:51 -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: Tue, 14 Aug 2018 16:08:45 +0800 Message-Id: <20180814080903.50466-26-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 25/43] Silicon/Hisilicon/D06: Optimize HNS config CDR post time X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, shaochangliang , huangdaode@hisilicon.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: shaochangliang Use I2C 400KB speed for config CDR. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang --- Silicon/Hisilicon/Library/I2CLib/I2CLib.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) -- 2.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Leif Lindholm diff --git a/Silicon/Hisilicon/Library/I2CLib/I2CLib.c b/Silicon/Hisilicon/Library/I2CLib/I2CLib.c index ed44ac204f..55c030a3af 100644 --- a/Silicon/Hisilicon/Library/I2CLib/I2CLib.c +++ b/Silicon/Hisilicon/Library/I2CLib/I2CLib.c @@ -28,6 +28,9 @@ #include "I2CLibInternal.h" #include "I2CHw.h" +#define I2C_100KB_SPEED 0x1 +#define I2C_400KB_SPEED 0x2 + VOID I2C_Delay ( UINT32 Count @@ -158,7 +161,11 @@ I2CInit ( I2C_REG_READ (Base + I2C_CON_OFFSET, I2cControlReg.Val32); I2cControlReg.bits.master = 1; - I2cControlReg.bits.Speed = 0x1; + if(SpeedMode == Normal) { + I2cControlReg.bits.Speed = I2C_100KB_SPEED; + } else { + I2cControlReg.bits.Speed = I2C_400KB_SPEED; + } I2cControlReg.bits.restart_en = 1; I2cControlReg.bits.slave_disable = 1; I2C_REG_WRITE (Base + I2C_CON_OFFSET, I2cControlReg.Val32); From patchwork Tue Aug 14 08:08: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: 144134 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4050019ljj; Tue, 14 Aug 2018 01:11:46 -0700 (PDT) X-Google-Smtp-Source: AA+uWPztUwEhbGtsRfc2Fg7YQcVJkrfMwfCmkQQ/4MZsBiIxxQ2CtFTKqJnfzeJ66zaRKGuqMbyh X-Received: by 2002:a62:e0d5:: with SMTP id d82-v6mr22257543pfm.59.1534234306526; Tue, 14 Aug 2018 01:11:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234306; cv=none; d=google.com; s=arc-20160816; b=UZevJqTZVGit7zz9eZ152TCcUxBkDaEiCebNJ2b2UioDOjAWPLEf+UlNaKcQa5F68f l6aPpgHlnw3JEyGaU3Le0e3YCkMH8y0u8npCc1njTXF8v+oellYbgjg+B+CrBY5lm8Yz orYPe1M/TfuVETowsVdy+x8HMCenq6mfQGfBVzXPe0YHa04LKS9f1Me4UCdmzYv9D2Ar FXtbOTDgwq0L3H1W3yiFw3kJH7UBQlsXZo1Y9JyVi2xfTJVWVMgD7k3xycTSwT7PNgAg iZ3VYxlfqOmibdHvMRuMmX8eNrUYcPnEkFNTjTFw/BqFCO8WLcKS6HfuceDSNsafVfBk nFIQ== 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=Y25AMJsBcc3OyAUqowI/oTwCyQoKgwLQHPUQmMYNkQ8=; b=G4WZZ0SbLwFvr9c0ALubcj6Tqu1eRHo5PG5YikTabAnRjJxJy6Ueo/LB25OiD1zAu/ g/SwUwYCpKg/XXI+0ME5VJ6Ys57XAVcRO1MOrAeUGW4cmBNUp5Ul0sbVEncueuYY7Z+1 b2UzSS1KDUBRepuiPqWD/D6h5MiO/v+10DppeTCBTcOluEkiknTlAEgA72pLMuztTjc5 kwUTHzhNcPeA7XEzyyuC45wHHkUPA/6RxHYJXZZBMmTftQ7DBWkHn0lCzSzsgfAPu1xg AZpqUSL0bfT2esqK5rER6yW6k4uYhTygdYzMV+oOavS0evqyNI4LodeNk5i+yL6PRrzO 0HIg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=Id7skRtD; 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 n14-v6si18974405pgg.216.2018.08.14.01.11.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:11:46 -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=Id7skRtD; 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 6745B210F16DD; Tue, 14 Aug 2018 01:10:57 -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::442; helo=mail-pf1-x442.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pf1-x442.google.com (mail-pf1-x442.google.com [IPv6:2607:f8b0:4864:20::442]) (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 4F36421959CB2 for ; Tue, 14 Aug 2018 01:10:56 -0700 (PDT) Received: by mail-pf1-x442.google.com with SMTP id j8-v6so8931594pff.6 for ; Tue, 14 Aug 2018 01:10:56 -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=xWEjpoKKe+Kv/WBERcgUF3ICii1uDUohqa01nmce8aY=; b=Id7skRtDOmZGzpd+SJLM49IA6fseRXfivZ+csDdQgq6J3c4Qgvd8LuAV7YO2hKa1b/ tE+8Ux7PN8uMRr5rd7Ns6X/q5ghlgrsqVDL4RJR0dY6cJoBQLXSV4odnmazHPJjh5305 J/sH9+dfKukbXvxYjlpIU4cK75LXfqWwcKqXk= 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=xWEjpoKKe+Kv/WBERcgUF3ICii1uDUohqa01nmce8aY=; b=ldQTO0WTiovaFaxutHAIV52API3OCCsgNwfGGfj5DjAyQFuWcB6eoz/FpTLYGkjKzT D/RC7K28f04EcKuPKg7xxD0wwrHwTB+7by4Bt75dNNPc9p3hq8ywEshGVkbb+EY8VJqn c264uLszsD1dq7m/NR4WZq8EuaN48YGe7kx+CsYYF0eTwIOADfC+2OUkLwzHE2vVbd8f g0PEGd1L3lFVHB+Q2OcEsvAniOFVqM9jyQBBQMFSI1xrn+uvCpVLE+GhWh/O4dbAwhAx sgANFuohgRPQj/4hcH3OZgo2yidjFAWeXTK2MpDqqqIHdmUofiF+Ha1YIQqH4Idw01pp zheg== X-Gm-Message-State: AOUpUlH6xWrjVYnsAgfW4O7ZaKm5rPRxNAtGdToKCcKHyLkB4+2zwqjr fx+mqUA8JZEiEZZxHB3RevH1nA== X-Received: by 2002:a62:c0a:: with SMTP id u10-v6mr22191039pfi.43.1534234255962; Tue, 14 Aug 2018 01:10:55 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.10.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:10:55 -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: Tue, 14 Aug 2018 16:08:46 +0800 Message-Id: <20180814080903.50466-27-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 26/43] Silicon/Hisilicon/Setup: Add Setup Item "EnableGOP" X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 VGA device SM750. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Yang XinYi --- 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.17.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 478821ae2c..e4d5917046 100644 --- a/Silicon/Hisilicon/Include/Library/OemConfigData.h +++ b/Silicon/Hisilicon/Include/Library/OemConfigData.h @@ -61,6 +61,7 @@ typedef struct { UINT8 EnableSmmu; UINT8 EnableFdtTable; UINT8 EnableSpcr; + 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 1e3635307c..3ecae3759a 100644 --- a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.c +++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/OemConfig.c @@ -295,6 +295,7 @@ OemConfigUiLibConstructor ( Configuration.EnableSmmu = 1; Configuration.EnableFdtTable = 0; Configuration.EnableSpcr = 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 9e3ac73116..c0b6e294a6 100644 --- a/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.hfr +++ b/Silicon/Hisilicon/Hi1620/Hi1620OemConfigUiLib/MiscConfig.hfr @@ -38,4 +38,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 Tue Aug 14 08:08: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: 144135 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4050121ljj; Tue, 14 Aug 2018 01:11:52 -0700 (PDT) X-Google-Smtp-Source: AA+uWPyBvOshcmLoJx6fuNkPwTd4HlxQeNnZZGwxbJ2rF4TLQd12m1XKGk5kPh4cmUfc/gHgZK3S X-Received: by 2002:a63:f414:: with SMTP id g20-v6mr19981110pgi.407.1534234312001; Tue, 14 Aug 2018 01:11:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234311; cv=none; d=google.com; s=arc-20160816; b=sCjwCpQvrcdyZfcCegUmmf7B/4Z7qp5MRe0BqMUSbAvT6aXRvvZlLA+K+1vElLmyOq 45AgmYcVeCaVbY+gV3aVOESjVlNgB1G3h6p4xf0DyLCMR/PHZzVghMOeaog/ByRgPH3s eFGHmy6HBVUYXIoFg6JduYE+jZlemDu+lP9UpYcR8AqHd85K21KzB6O9rezQT2qNPksX ZCTqxzAb/XxSwGlixD+HNZoVW6Qlz7EZtImVPxMIm8As3dDPJBFcL+yUf5bOkXl6hA9G Fxgp/GEeT2OrZV4tTcahp5tnK7NTxjX8K4U8YGZSUCqCbvTPt9D7jUfizVzCb4cTDNj2 hC4A== 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=jVL8BAkwXOPYLoe+zVHJMTt/jA9rgeQpKdpflIEp3zA=; b=qH76nGFeImKslMxnMQkeFeH7L9hQd2kWsEziBQb5lqMVFpcWeM+gq3yAGdyh/BIUWI lrXPwrsKph1BWrKVDeUPICl05JDA7Nclb5rEIxmABl+eztF3FzBYDYG3S+YehfkUV07U Vx9rr6faXEJSi96Wf7b+6vTdU553TZo6rvNYSUvSUyU0cRZz0MjdeCi8lgH6praVmPHe i2/bXZhzHmoK5Hk51zVu2SIBj6V+5GCHB/E8+mKXOpLeVJyZHcAmD8+YaefXb34vdd/M /Uu8qEwxyA7sz2HkYWoJbsxSkxP7ocIStIeJm/gholwI89yH0sb5xeljaJWu2Uc7lcYX vLiA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=BLeG4dra; 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 f7-v6si21692639pfj.284.2018.08.14.01.11.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:11: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=BLeG4dra; 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 991C4210F156E; Tue, 14 Aug 2018 01:11:00 -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 1D2B721959CB2 for ; Tue, 14 Aug 2018 01:11:00 -0700 (PDT) Received: by mail-pg1-x52d.google.com with SMTP id y4-v6so8779348pgp.9 for ; Tue, 14 Aug 2018 01:11:00 -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=Srvz89UUdwJaA7NW3HInXK9jKXBy7jHenjdTd39Jc/0=; b=BLeG4drajL02wS8L4ZAr7vj1gO4hdRn6PnLkwEfatFq88Y0IV7VkdhWKIZu5tVls3f J7nlSEZwUqcQ3OAbQ9MwoNiQX1GoddUI0o9/uwcZb56xLcU2f345nl5oK3R3f2/hYM0a sJ5N4kilHeC5nPk50Z3Bldq61Z0+6a7HJAFjY= 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=Srvz89UUdwJaA7NW3HInXK9jKXBy7jHenjdTd39Jc/0=; b=C85BlkRi+ZKwV06Cjg9df3CbfDZx5l0OTYiYO82MJIjZQcE7XkesqtJPf3OkRGAx8/ EUuBOrd2ImNebMWX9rdFkxJb5IFTGKOABz6jutwwM0HLlSFRViDOq8JAfc2rpHA7sV3e Xuw/hrhMW3vFPIPEPnsDzNGGSRyOCIMbjmt2iWQpVUA/N9+Jsl13WRa0xHFM8/EJMC2f MfD4Y0rXZDyxgo8rBm3krNJZ2QZsqwOfahCSaHw6qX5mS17WvPYzuq9LWffMOIi24LEK JhPujGLOjrUQciQMSAcwOMlnekB7WCjb0aXnSUxejKcBAR7V+3SK3l8aA5VWuRxRIzW4 8FdA== X-Gm-Message-State: AOUpUlEUF9HYzO/e9fGMjFxyLoWgJPg4XqPGcRwgD9oovLOtQHLNctNy r3ZIS+6PR0B1J1CoVMSU0OgHRA== X-Received: by 2002:a63:2b89:: with SMTP id r131-v6mr19682878pgr.39.1534234259510; Tue, 14 Aug 2018 01:10:59 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.10.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:10:58 -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: Tue, 14 Aug 2018 16:08:47 +0800 Message-Id: <20180814080903.50466-28-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 27/43] Hisilicon/Hi1620: Add ACPI PPTT table X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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: Heyi Guo --- 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.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Leif Lindholm 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 Tue Aug 14 08:08: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: 144136 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4050209ljj; Tue, 14 Aug 2018 01:11:57 -0700 (PDT) X-Google-Smtp-Source: AA+uWPxSrYpSRlMTkEbP3d66jUsBiE0THWVsXzyx1Yl4UfmtWh64DUJrvCTLWC1M+pJai/o/l609 X-Received: by 2002:a62:1089:: with SMTP id 9-v6mr21810931pfq.30.1534234317307; Tue, 14 Aug 2018 01:11:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234317; cv=none; d=google.com; s=arc-20160816; b=DXVM/aMOtLDcQnCn++YlMi3wY8qpJPUhUu6t+tZNErf2i3+nAL7EkcFLc9bOmeHpvb KgSIIkWv4yEnVJapJqobljrY4/XwcGVZ6UF77VRuWr0FZTpj2Eip060t0sYasAHdDGXG zwjpyzlQczVsXpiV9ra6tlXDFHy7HRuS7zmEBpVqFa5PFFcWf0Hb9Xcwr/ENXsDlZNyg yf1B888cEKORfnx7mall5FbU0ICTlvSmfnHNNCKYH+77nCH+AKibI2EQs0p69nbYZjw2 RkVbF+CZF6/RMKXKuqRsfvC1C8BKBfpwI5HAztF8IVIBuw2BiClGBmKSoLa0WRZWK8Wr yowg== 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=6H6u9G5Yp06bAp5B8JWKeY9w5jdxU37DWGdbNqgpB30=; b=VN0dlYUe4sP7tZ8rDl4agTQb1vf7BS1n6OFdpGoZY47ETOjjZ1w5R/w6soUwrzG9hD GKwM9PDD+kyDM0o9k4LjBrVUp/gXnufP1/shi3gJwe/tv69EELl5auaoUDjQy3BUKqGa MzcqVhp1scmmi+chkWHxeerCl1w1YmEwIodlKM5lF0GJfWbBqZKYCPJd68eHW83U3/5E d3DJO2qoyKZWLX0u+QIsrPyXEMOhRLz4NBPkn42840NqAZnSa5ZiXVtCBOZ3kNk8XqPw bjQzl5fLC/yOuMii4O2BJzE3gbIxp3em22tPWfzQrykhNjO++3RrhayNn5JyQxWV6Uuo aUqw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=YR5AaJ0s; 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 p65-v6si20899769pga.401.2018.08.14.01.11.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:11:57 -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=YR5AaJ0s; 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 C6BD1210F2004; Tue, 14 Aug 2018 01:11:03 -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::434; helo=mail-pf1-x434.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pf1-x434.google.com (mail-pf1-x434.google.com [IPv6:2607:f8b0:4864:20::434]) (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 21386210F155C for ; Tue, 14 Aug 2018 01:11:03 -0700 (PDT) Received: by mail-pf1-x434.google.com with SMTP id l9-v6so8921118pff.9 for ; Tue, 14 Aug 2018 01:11:03 -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=ZPmW5f/y4kaRK8XORN3qvjjlwwAUf1FD8ziig+zmmIY=; b=YR5AaJ0sVUvF5E27hphge5kfl9gAMyXOvnOL3XOzObXkNTf+UmQ6Fuj9KarV2u/3lY EodhAJn/1AlCPfuQpeK64KH5yERtB2XV2qc2TwN5y1pflquT3eu6rbsMLZA8zWP4kvqE Vmw1wr1B7UjYsoaKPZ4oF1mPFwUNOAr+NJJI8= 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=ZPmW5f/y4kaRK8XORN3qvjjlwwAUf1FD8ziig+zmmIY=; b=hQYmiW2yt7Wv3tbHySQKzAVonkTGl/L4D4DuWyvvOdnj0KLQsad9KGH4Egp7t5z8Vc ePLfPlfU2SqYPgKg34fmGZluJOtjHAbcEqbvRohWAqZw72zF1Cbz8AQiT5rMFtpzYAdU rWkxSNlP0L2PwFkPBsmi6dQdtZP0d9irn+1qIof9OCEa5kLUvvxSaZGtbzfqANIWRnZG i8QahzGCtS41vQ2QrXVkutKj4SWitKDw9aj3qb/i826VGLdZXqDjg5IO8FEOEQX0NWZB ZNJjApdRqr1nsq7yUyr6j2QCgS6MLmPk+yMddaGXrFV5GYOqLyfu9xFk8o7EWqOBZl+P +wFw== X-Gm-Message-State: AOUpUlEAXCjkl6u3EWoTLlDWdnVsvZzL1ciROeORdJfWwbpO2V1MEsgC YiTkWRmcs4xIoyCGy5sTQ/uI7w== X-Received: by 2002:a65:6143:: with SMTP id o3-v6mr20556082pgv.52.1534234262774; Tue, 14 Aug 2018 01:11:02 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.10.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:11:02 -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: Tue, 14 Aug 2018 16:08:48 +0800 Message-Id: <20180814080903.50466-29-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 28/43] Platform/Hisilicon/D06: Enable ACPI PPTT X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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: Heyi Guo --- Platform/Hisilicon/D06/D06.dsc | 1 + Platform/Hisilicon/D06/D06.fdf | 2 ++ 2 files changed, 3 insertions(+) -- 2.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Leif Lindholm diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index bec422670d..06249d8a5b 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -338,6 +338,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 06203dc079..5bb779d2e4 100644 --- a/Platform/Hisilicon/D06/D06.fdf +++ b/Platform/Hisilicon/D06/D06.fdf @@ -252,6 +252,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 Tue Aug 14 08:08: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: 144137 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4050277ljj; Tue, 14 Aug 2018 01:12:01 -0700 (PDT) X-Google-Smtp-Source: AA+uWPwkEwGeKgDUzBwLMTZwkhJOWIv8xzbZMljEJbpzx3/q9P1blp2u90bVZ7VxKsxuhA3uD0VV X-Received: by 2002:a62:cf82:: with SMTP id b124-v6mr22411367pfg.142.1534234321797; Tue, 14 Aug 2018 01:12:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234321; cv=none; d=google.com; s=arc-20160816; b=H9EVPnwxYTp4wOZG75RaNld/epxhJoY+OXf9K2ZHsSIUYTeJi1FZTq2gaxGP2nQFPj HRNAeNlUvlPA/wrKKAynO6NpIZey+gMKrgt8FIDO+jrRoUhYhB4r2EFqqXPP0YcjkpdM p40CSLoQB8IcuD/2xTHlZGuKZsV2KemYADkGUOTng2YNGKl8WMI0Y7LurGHRzoeYJ8st XY57YRDWvvRxGJG3lLQ3vASXWWWWoAZcCB4EiUF1nfwv1x1H14Hni0f2I79Tw4WHy+jD wnB4J8mfeTcTApQT90MMgVOGMTBlsF6wWVGpNU1/1CiWE2Xd7kyhEPGSng0JPpdhMP0o xXdg== 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=JkUj7mUvDB1VtbD3IVfQEi0H/bLBsdsU9/Z66dAKJjs=; b=NlFP4Og5cBPqmSgJtabWtsgC9JW0GZS356EcLFCAtEGX7uk+brxNR7O6DZDR9Ggq/V kD/doU7tIctyS8iPp4o8RNUEoPzMcPbop24uDS3B6zjkaF2vSXa0MahlREyrlvghJe6Z TuzOQp9PhguQ2mGY2soPuXbSVuTBTImR/kwf/QcORhQOY+msAu7TvAwPpodU3NnmY4Qm 2d1v/TEnx1q1W1oR/NwSk29KaeKKhQcyG7o8ZZ0gzhnPB+i+kxqnE9sdGMOtvpf6BTFl Tt+NsJfyksnIOyTDVW3g99NUuUcxyZbprnUQSpyow2CMnYryPPrHl2ckAJyVllZj+aU7 YQNA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b="Y/qJwNZm"; 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 d10-v6si6442614pla.436.2018.08.14.01.12.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:12:01 -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="Y/qJwNZm"; 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 018E3210F200C; Tue, 14 Aug 2018 01:11:08 -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 D1695210F1573 for ; Tue, 14 Aug 2018 01:11:06 -0700 (PDT) Received: by mail-pg1-x542.google.com with SMTP id a14-v6so8775687pgv.10 for ; Tue, 14 Aug 2018 01:11:06 -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=4t/NUWxeAl8VWFU0ptvGZZ9t1R4OIs1DZ8PrX67+INk=; b=Y/qJwNZmu8cj6uspvK3Dq+5wNy4xb3oEukWjvg+hhwdT331F+Fn0p0dGL4ybRSDoQ4 RVbB0pZ+ftRNSXzBVkBbB135RepRxJE+opFgpUtYBp5t+IMYyvexZIK/nQz1cLx81zGu Eyp7FYen0gHJ05qzqilklcQMXKeT7cu91lvDk= 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=4t/NUWxeAl8VWFU0ptvGZZ9t1R4OIs1DZ8PrX67+INk=; b=QIfOXBl2vW+oZffE6HpP0Guhqu79ZQFZYgw3uRjQI9LMkmnY/XMe6WftBPbINT7V3F g7cu0ZDot/h1KYIT4zyJ+EDqndqwjxSBQALZrNMpoBQCe00iCP0Sj4zLWhkh+f7DUc7u GhfWuIhYqQ3MnPOd5hIPX0utSTQ+crvNxt4UNyZo8drPAdlP31ycz6nmEZQilRX0qmes LZiO+a4+P4qYsv/YSENmJxp11yb2++0rQ/rlrjiKPWWELPoQP+F9gPzF3gstgknkhAPc ux7cOKYmTwhpN6uNPeAlA5QrpNTsRqeCPiBLvlyAQ271cOHFE11kAnWZ/HYkRgyX5rhk o0CA== X-Gm-Message-State: AOUpUlFfGWqEXpGXw0V4d5oSuJj55RQ6NOqFCkPzFXEgG55V7bGbFUoI JeiXqQeHgXY6XXVeQXiJALvIrw== X-Received: by 2002:a62:1016:: with SMTP id y22-v6mr22335827pfi.109.1534234266218; Tue, 14 Aug 2018 01:11:06 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.11.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:11:05 -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: Tue, 14 Aug 2018 16:08:49 +0800 Message-Id: <20180814080903.50466-30-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 29/43] Platform/Hisilicon/D06: Add OemNicLib X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 --- Platform/Hisilicon/D06/D06.dsc | 1 + Platform/Hisilicon/D06/Library/OemNicLib/OemNicLib.inf | 35 ++ Platform/Hisilicon/D06/Library/OemNicLib/OemNicLib.c | 570 ++++++++++++++++++++ 3 files changed, 606 insertions(+) -- 2.17.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 06249d8a5b..e18badf3b3 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..caf931cdbb --- /dev/null +++ b/Platform/Hisilicon/D06/Library/OemNicLib/OemNicLib.c @@ -0,0 +1,570 @@ +/** @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 SpdReg; + 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; + SpdReg = 1 << (SfpNum - 1); + + Status = I2CWrite (&SpdDev, RegAddr, 1, &SpdReg); + 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] = 0x00; + Mac->Addr[1] = 0x18; + Mac->Addr[2] = 0x82; + Mac->Addr[3] = 0x2F; + Mac->Addr[4] = 0x02; + Mac->Addr[5] = Port; + 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 Tue Aug 14 08:08: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: 144138 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4050350ljj; Tue, 14 Aug 2018 01:12:06 -0700 (PDT) X-Google-Smtp-Source: AA+uWPzQPnco7qXTyjIH3RdIxVcHaZ3c8KUDrJnDtURdn9a6F8ZGIHDrtHwqvTd8EMV73/2yE/wT X-Received: by 2002:a17:902:22:: with SMTP id 31-v6mr19558815pla.190.1534234326340; Tue, 14 Aug 2018 01:12:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234326; cv=none; d=google.com; s=arc-20160816; b=vdM0/n1yt9hHwxEJrmNq0MNe17CDbJwGhDYBshN72fz87dTNtl5kBdv2PDwgmoRkw/ 79oJjvgYli5BZLRSLuXaBRCexAewe/fKAQPMcuddq9yfpXWMcBa/XMG2tyBV8qugcUuI /7+MUjoshmHCEItfeVw5EyMj8yemqpq+Hnjj/VsSWuust00SM7dpHLIyosElR1LHg+GS /xK6Ghwf0vQ7DJaSYMTtPhR9/p8HqoZ2nvhcqApxbF9+5k9O7vsrgQCYey+DTIz8XNUj 6/VtlmahNKd3AUT8hIi5N8PxGXu1jm9f8BV8GK/DF2ifrB1Ri7sVeRjawTSqzJMBx7aJ Aklw== 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=2BcbnOhW3pauMvF1KPPyd4DVO6qptPSyzA5ju7jvEM0=; b=gk4U1l3vX0biTDBL8dHn7cM2HZlu0RBxT0qPwZ1TogSmO+xiSHuqdL7pjDKCFqzbHq f8esT0nor/lqf/utQsTFMxn0SYbNGxOL+/7jy/9t6/8sMPAodOzvIYDekEKXzgCVwMcg E1RjUDkeAkw47gdbQsVr0jTnZwxMHjiXvEbQT8XZJ/57ibteZY0R7UEHu29oukbNscn7 iymPm2t0II6fH7HhQ4w81RewTk2fIPvCpgRp/ogXgera94TQIGZPRkhPYUf05bIYM/PE +sQIibanAVbXFKs6GynTkRjhO/JioEeciOs7a7uc22u27Ain0+ouvgMnXbr/xqWMIarm spMw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b="PqT/aghb"; 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 b6-v6si18524422pgm.644.2018.08.14.01.12.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:12:06 -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="PqT/aghb"; 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 2EDE0210F2010; Tue, 14 Aug 2018 01:11: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::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 D6407210F1573 for ; Tue, 14 Aug 2018 01:11:09 -0700 (PDT) Received: by mail-pf1-x441.google.com with SMTP id l9-v6so8921230pff.9 for ; Tue, 14 Aug 2018 01:11:09 -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=IzqbhRv00nZwR++GvEPgvXV+U4MJWLu6SEHCN+7d6ro=; b=PqT/aghbyd0GHBpl50eUvUgb3tJIYHmS2Xdm1fLv3c8u6Sf6GzZaf0mnSsV4VcPqOx EHEmTXlxsO+6oBPKpqyKf7Hw1kNz1CaELtuwNhbhBZE20zhwc1B4WBlcBY3HVGR6pJoN DD3hrPa9dmKwFY9jdSjJ9cezBLtBAZXFhg6dY= 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=IzqbhRv00nZwR++GvEPgvXV+U4MJWLu6SEHCN+7d6ro=; b=IA9ACVpGe5Vuk9kzY4iPyFYX1iHh5Sj1cZJB8eObCHa804UXyDjmS06oTvL8yaPYpM ftEy89fMdQzKmYI2VKiLKAES3p1acsh6zCYkQKAXrPTteLxoXx5XhZbxO3MfRYhD21Ra UCZQBXQ7q92ad9fzkSkKLxWZPE18YXI+pqpf1yTu0rKHtf+j6evp0BI8phqjDn4i0GYx y+AIWrVtnCR5J9X6iaUucBImkPdGZPCke11fuotCsgE/tupnfDXHZRDz5SfE9SYcO4Qo nRgBw1v6IMQj3v0ceVPR0o1Ubd0IG5SqiBb9qzBgJj+XjoVEDVeYkUGHTL3CDRBdpPSc QmiQ== X-Gm-Message-State: AOUpUlGh3pLWqun6xLSjbH95RwdexkDviXvtrJvgU0WaZEkRwSbwQC7p lvJn4OiLCFA0+1q3lvVzy7zOsA== X-Received: by 2002:a62:a649:: with SMTP id t70-v6mr22477995pfe.149.1534234269488; Tue, 14 Aug 2018 01:11:09 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.11.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:11:08 -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: Tue, 14 Aug 2018 16:08:50 +0800 Message-Id: <20180814080903.50466-31-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 30/43] Platform/Hisilicon/D06: Add OemNicConfig2P Driver X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 --- 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.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Leif Lindholm diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index e18badf3b3..5571028f42 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -285,7 +285,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 5bb779d2e4..184d5d4dcf 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 Tue Aug 14 08:08: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: 144139 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4050394ljj; Tue, 14 Aug 2018 01:12:10 -0700 (PDT) X-Google-Smtp-Source: AA+uWPwriSmQpFzgp38PLbpcT1pO/jXhUPXocJOxPJFjHq+gwMlsxTblim0BRprH0co9f/7nL+cD X-Received: by 2002:a62:13ca:: with SMTP id 71-v6mr22592615pft.34.1534234330589; Tue, 14 Aug 2018 01:12:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234330; cv=none; d=google.com; s=arc-20160816; b=tU1MqOEBSiXTInmByl5GemZKOrzEhSSB2KfqnxvQ7DQ4h+lE9FJ39rNjJKYd0phGKb /kMmHEpO2jdISA4rD8u2IEi08EyOZHtQumf8WIuVDpk+WVwH6eBXX5aWxqPQZA1QA6sq 4YR80syWa6bCR09qvqNW3CoH1Whd9o+pwQ74g5cWf10K7ObdcFk0S45Fhb4fLrWH1Wc+ bg+7/Ly5w7WzNmzlixldKG5Kd5QZSmIuL2Q+BrnWRuuon66LMnU8hIWqmr2+ogxNeqNF Gd2xwhihRK1aedbNSvlZVvVlPj6eJqnjemx+vEg6N0BlTqPXlefKksDHJPYFIUaGyoY5 tZIQ== 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=wqeH4Vv8DPEjPWezMNc//PHxMUxRqhXWr37PwUReOlM=; b=BRmw54nk5aLG9qsSA/gBOic9yoQ8E10m/DlpGZfis6dAhsjHgAzYmdGl9ny0NyPJ4n paGJtZmCvWVPdeS2N+Tx27ZdXRb2Z+SeeAomx6MdXgnI/WdqIsw3fClBA+pNSJYEXvwb Ig6TdiZL5PbLDI/wSCH12jZsv4cpEVRQCE1lxEqyWN7oMXc5zz7mf9+d0t3KFj2mypYa tYony3CD+FwsYfP4F2YuxzSTPIROqRnF6lzH48fHriCXBtPGU/ul920n76e3ipZhDo+A JVOS0YX2jmV402iUJhI1TcBhdXVia/KYGzCaXbTfgnFubpP8+ZX6go7u3178MQ+Lc76k oJXg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=MaujoPFm; 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 63-v6si19846088plb.288.2018.08.14.01.12.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:12: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=MaujoPFm; 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 627F9210F2016; Tue, 14 Aug 2018 01:11:14 -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::436; helo=mail-pf1-x436.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pf1-x436.google.com (mail-pf1-x436.google.com [IPv6:2607:f8b0:4864:20::436]) (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 611DA210F1573 for ; Tue, 14 Aug 2018 01:11:13 -0700 (PDT) Received: by mail-pf1-x436.google.com with SMTP id b11-v6so8931636pfo.3 for ; Tue, 14 Aug 2018 01:11:13 -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=ei6T/4wYOr6nYhGSTZ7OcMpLru/Wfqab76L7spUOL4w=; b=MaujoPFmmnZ9MhL1SnHSDViEXOMaHO3weP3PWEdi5iIbvqDmLnXwaaSSinIGjNzjEm 62QHeob0QTszt/XuwVMn6sBROFP5kbct+IxSc9qpdBMO53mxN7Bxfz8xrEZCqIEvPkA0 uupGlWPfkOrr2DbIjAVm4LpVavuro4vYiWNLo= 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=ei6T/4wYOr6nYhGSTZ7OcMpLru/Wfqab76L7spUOL4w=; b=D39bC/2NUuQOf0Y5xbG4EPBu6Aq9lXLtDaZB2eTDqwWgguFrDwJWw7bjhjceaWWsQp DTjAkX7ufwRaTTFWXE6BEmOPrj/iJW02/Jl7MWIP61tvW7l7jVZv0w97bVvuaS3jIRjg 9EcD8ACdkPOhZY0MIaAx7UWNMDBOH2ARjjBwXkEt3xe68vrljKh/o2NiSu61t6gPhCW3 MJbrrlca2/dW6EjYPSU9njonAU7t03919DHq7CKyLYvVb9wNoNE6z27HRkFuyTQ1yLLa pGp8HkbkGj5obsS4d1q5w5IBmhjJ4RNzuTqdO2J7Atza98rgZRqiBk9gWuVU+qjyVrpQ hE/A== X-Gm-Message-State: AOUpUlHyxZc4RtjrIlWwpw+8Atsd2dHAYImO0v2eRTazpt1EkATYMPnL Htpj4iuRG+J87myeRNqP8oSi8g== X-Received: by 2002:a62:198e:: with SMTP id 136-v6mr1091126pfz.103.1534234272810; Tue, 14 Aug 2018 01:11:12 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.11.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:11:12 -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: Tue, 14 Aug 2018 16:08:51 +0800 Message-Id: <20180814080903.50466-32-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 31/43] Hisilicon/D0x: Update SMBIOS type9 info X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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: Sun Yuanchen --- 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 | 24 ++++++ 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, 151 insertions(+), 13 deletions(-) -- 2.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Leif Lindholm 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 8f68f7cec5..bd984a6fe3 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 SerdesLib 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..c80500276f 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,29 @@ 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)); + } +} + // 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 2cd360d49f..be11c88992 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 Tue Aug 14 08:08: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: 144140 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4050440ljj; Tue, 14 Aug 2018 01:12:14 -0700 (PDT) X-Google-Smtp-Source: AA+uWPyGfIAgu0gU2WejLlrBC/VEg/4HCOZ6u5MG1Gl2yMBT3tg60Ruy6uH953GMyEUYQHmG/xN2 X-Received: by 2002:a65:5286:: with SMTP id y6-v6mr20213909pgp.65.1534234334770; Tue, 14 Aug 2018 01:12:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234334; cv=none; d=google.com; s=arc-20160816; b=R93aBrCyeJo4DC7HB1+T7TQdr89TUMMB0KLIazZC5lPqo2IGcpasBq/gg/vOdv1mTt xx64Q1jyFBkI9rCCRvkbDFxcB1+vLHEV1BqBihV6l+G/FlTsee0jlEtgOuPWN8BBapds XA/mXMMkkHjIl20v32vCTHqAk8Jq2vDW61RqpUGInQlnQ9A0yLkRfVmLGPsd8CXzalOJ 1zDcGLUVqkFhiPTwHLg3IMDDbRqDyOe+USttjsm6CqgNYlfA8+kTDoelz4maBazoFbJY mnKzWM29DsC6a5VbWcktz3sQFdx0gHKZ6uiU1ZVEGv2xw0eMrbJ7spp1jfBDN6lfxlvR IWHA== 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=Uzl5vwrXlE1BSA/8g0yTtrcUxyofInJfSjInIehVryA=; b=LcV53u8J95NkbbdsoCmrt+kPkZmIBJlwVOLPnEHRzhHLvUWbHDe35TRg/qjpAynojZ JacxYKj5bMfZwGQRrIUcIT7sbswotOAIMvggcbBwpFH8tLEMzKkP0zGxYJ/wysGwtgb2 BAcFZNsFt7ldLgGQAIHfq0UmHg56mnG2NmdNlVs91djTZnSj7sF9XXc2UkQCXd9CYDok RFBz0BVpbuzNg8Z26DR6E9YXfvsfYMDCo7UmkUlMyBl+G4+BpyiW2EQ8h8K/ADCeLXcU RfZwqBaZpkv/4mVW7T/25+peq1+QyGUiDdAkxTE4SJe7J3Hluc+s0ca1aBBqEPl4ehzF HMsw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=Mg7KBt0v; 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 r28-v6si19889537pgk.458.2018.08.14.01.12.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:12:14 -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=Mg7KBt0v; 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 96623210F201D; Tue, 14 Aug 2018 01:11:18 -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:400e:c01::242; helo=mail-pl0-x242.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pl0-x242.google.com (mail-pl0-x242.google.com [IPv6:2607:f8b0:400e:c01::242]) (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 9C8BF210F2019 for ; Tue, 14 Aug 2018 01:11:16 -0700 (PDT) Received: by mail-pl0-x242.google.com with SMTP id x6-v6so8031129plv.10 for ; Tue, 14 Aug 2018 01:11:16 -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=PHSUXLOg0gI/sFBFU5bR0CZ/V76wcqoAcs/lwRG/6u4=; b=Mg7KBt0v2hGQfTBXg3oxHZk/K43uWXIbVMo32d8VoIfi/6Yr4j+iUsRnMaGfKDEBs5 fSh2xjdiDHEzLftWcd+0qe/u68N9I8kXvjmiyYN+ct2X88yxjOigalf1CGDGH2VdNHNk 6X3/ScZ8amIFP58ckhARpjMZKrwxlyK3jq1Nc= 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=PHSUXLOg0gI/sFBFU5bR0CZ/V76wcqoAcs/lwRG/6u4=; b=aUJuv3VtHAyqIxEZnvlK0yygyVI8yaZPaVlpvv6YJcdWE96/KZXQwjddPZVmGoKdE4 9o8hw4CaLE13Zq0FKwnO8Q+45HyHZALey52I/IkZvYd2AVRDGG8npZBqlmLgl/2REUBe 4LdgPbfoQ2CWvKnl0foZqmZAS2cafOK13DNZtCGAjuAhlUrLAl+RwMsIptD1mLtpewI8 9GU5GOVXP6IBPkLUiwXUrTbx/wRAGAN9Fz4OyzNEgKyRUg9cpZQRPVLHvkKvCtcBYnL1 WBjr+rw+sEz/zildOdtKDJU9mcu7DzNBJAX6lF9sNAxVhLYbDPsH7hnxzZYuKpu4FJIX 9ZeA== X-Gm-Message-State: AOUpUlGYd8lhmCMt5Su/Z2cFVzJE7CUFGLJIeB6cwFMw19wasTWXO4eT 0nPqQls/LnQCDZDduZ1tG4tXK/ujvRc= X-Received: by 2002:a17:902:4403:: with SMTP id k3-v6mr19121209pld.243.1534234276139; Tue, 14 Aug 2018 01:11:16 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.11.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:11:15 -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: Tue, 14 Aug 2018 16:08:52 +0800 Message-Id: <20180814080903.50466-33-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 32/43] Platform/Hisilicon/D06: Add EarlyConfigPeim peim X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 configuare SMMU,BSP,MN(Miscellaneous Node). Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang --- 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.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Leif Lindholm diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index 5571028f42..3de09ea870 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -263,6 +263,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 184d5d4dcf..bd3ea47226 100644 --- a/Platform/Hisilicon/D06/D06.fdf +++ b/Platform/Hisilicon/D06/D06.fdf @@ -359,6 +359,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..b330be09ba 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 "PlatformArch.h" + 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 Tue Aug 14 08:08: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: 144141 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4050514ljj; Tue, 14 Aug 2018 01:12:19 -0700 (PDT) X-Google-Smtp-Source: AA+uWPw2iTMD1DGhB3syZ6RGaonqireufqiCkeAeoSMMUulAdw+sZWyk4YE4prbvUUHrtTBWXgwV X-Received: by 2002:a63:fa49:: with SMTP id g9-v6mr19658236pgk.18.1534234338991; Tue, 14 Aug 2018 01:12:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234338; cv=none; d=google.com; s=arc-20160816; b=nxbX1nw95yz/9yxygWIJhJbYeWxpv7T5wLhFGKsvLwSdmq8Uc2fgNDyjXkdObEOP6/ Sko7fsXgk6Je8DcOQrj4L2XcPzwDLvgaeeMR2y7k/hXtFqYms0MVKHGRhvfLOIE7jnEg nNTLYmjVrzvFHb0PhLx1fDJAMlbDiF4fKKHN8eO6TU4tyKPQgl+nsJHU5LdFBfREFwaE KvIiA4dimer7SS52otw28OVjRzHDhv6ERLp1g4QmZMVnCMX4iTnpDdVbmIGfC0BXwK4c a/tDEnDpo2ncohX3E2bpqyuFvS98oHlSKh7yp/Ch2MUFgaNKZsCGdfgbJ3AWfUHGIci+ oBXQ== 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=TuPD3Vq21vwkiROXz+f31sNpzGdsNiwU64FaTBB4BFg=; b=zMVxZx1v6kXVSbM7bWmd0Mi66tZe1fz0593rbNaNDI6JdN83lfm03OlRe4s3W6tuMb dchvWRmI8JCZaKT2oI5YniXBw5s1hoClKXdyB+wooB+8Q7tVFAweuvwLCWoxtqHHdJ+e L5+IddLfwdNq+eJLkkrXq2pCZvT5GI/NPQEI6VRrVUW5akCsOV+PJIqUuaHomvD0XPAJ rjWowInhkatPat1s4tfTwNNRJD8F/Q4gdAX3rl4D/CVja6qdN1hl/kpqu0HBzNak51sB 4LbS2giTogGlyuVY4XXPzJ4Vi+xNulNK/er7uSXhku0dTayWtIN+kHgrZgBNwry0exZ0 Gr6g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b="W/dBhAB0"; 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 w6-v6si16352356pgv.621.2018.08.14.01.12.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:12:18 -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="W/dBhAB0"; 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 C88CF210F2022; Tue, 14 Aug 2018 01:11: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::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 14E09210F16A3 for ; Tue, 14 Aug 2018 01:11:20 -0700 (PDT) Received: by mail-pf1-x441.google.com with SMTP id y10-v6so8924927pfn.8 for ; Tue, 14 Aug 2018 01:11:20 -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=mjR0N8OwIpL5NAor+NIzAI9a9T9O0CEOLFlcqwmkSFY=; b=W/dBhAB0cXMbEicd3fHYnVel536tT4oUkd9AGjQD1+g0lGTxIZhW4N/F3L+2wop4Ga cnYQPCaX/73ZuOrCPbnAhyaLAPLIHRpZOg1Id89UFpj4txwhTqnc6bxdshVjTQtku4G+ k2dn4/soLjZIc3qcDEhVlPTYbxbdLadU6+yhA= 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=mjR0N8OwIpL5NAor+NIzAI9a9T9O0CEOLFlcqwmkSFY=; b=CJ2Nx5HJw/pQxorQQqnsqpN0TphvO9kQLwc+dxLNQ6dy+3mYiqj63+43AqyfYRK8lo oomArpcTzc3N5hJPVrmmb9i2hSCO1F9+Y1vprf2by1+5NUNTb1ObETtSgZii9aTVxIIG U+0UUShiQq4JBDxv3SZuZh14CZUhunestNTFDwC9SlA2kSEyeaSWa/ScjIeoN/3PIcov 6fZgKEADo3Gp5W1kh8bXCNIPgkzYG6aQ1YDGhghLxsKpnZWJbzD2TFWaiM/Jz3AO7WR2 pphqQeTNJ2fXX+QFtbTHN39zPzQrfsVEoZMeow0ftLG/GJrzDaYZmwzvfe4cK2zMynMu f0yw== X-Gm-Message-State: AOUpUlHpG2sSqf93jJr+cZMt9aCG/tOXE3gwF1QWHzRLvNDVLQNK0XFW 7kOlBm3CW6APbSMpsnT/epC6rA== X-Received: by 2002:a62:d085:: with SMTP id p127-v6mr22398849pfg.119.1534234279519; Tue, 14 Aug 2018 01:11:19 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.11.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:11:18 -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: Tue, 14 Aug 2018 16:08:53 +0800 Message-Id: <20180814080903.50466-34-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 33/43] Platform/Hisilicon/D06: Add PciHostBridgeLib X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 --- 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.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Leif Lindholm diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index 3de09ea870..c6de9f04ad 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -418,7 +418,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 Tue Aug 14 08:08: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: 144142 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4050562ljj; Tue, 14 Aug 2018 01:12:23 -0700 (PDT) X-Google-Smtp-Source: AA+uWPz1nNheBkZ6mm6pS9EkZKpMAVRMLaIBkho+ovz9+aMJuaC3D6PGXgpioru9cm79+je+lnxS X-Received: by 2002:a63:c60:: with SMTP id 32-v6mr20197980pgm.155.1534234343054; Tue, 14 Aug 2018 01:12:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234343; cv=none; d=google.com; s=arc-20160816; b=XHpjcwXgaassOFlWwaDLToBHLwjO+uPKK84NvCLn0PsN47DCyEZbMNi2G+qMXX0b+k 1X+PYfbBcaLjz2zjpX8etgVovzz6tDkz/QsbfMUbk+9b7zbpw17KfvxfaFMyZCq+89mB qH7xEzRdQAxk3DT1O4ubFdqgzX4fNzOv/Mp9C8i83y7Scj0/Zur07llDZDSORiN8/Wbm oi7QYLMSLwgDuuIsjpquzRSz/eSKww555GIfOkTIzT5WVpn5J61+xHgCUYvjhWuC/X8J nKXF5Mwr+XUXxaRMQ6RVRkXuwhbm6sZOHm68yyMw4eB80EZ9YtNrwT7AuLqQCaiAbqSa E5kA== 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=ZwPT6ygLCq5O3qG4+XJAVTbdFrKuPd94Sud6RBbdym0=; b=0t6NrGwIeywubfujjgdGvSXmsTP8ETZEGnQfxRZExhdMEK6jOAAouTfp7ctBcyVDGE rtUlFKUdOASHFIEDw0gB33lKRoCTu7snJBQHRuJCuZh/VWnEHmtW5bWIVkq7GVYFEddJ 5GUfI9xgJlBiBtKI/fpwIDI99gM2bqZEi6qI95W2iRD5fk7GV4QX84neq3EzXHSrD/9y 5xTV6Ew0ePIPL4P5Z2QNx66bTJfNwVwk9jlVxb5qx2cyqXXwl0ntyL2nZeEYkJazrLyc QJFAjAczax/IQPIieJ/1NYQDlf+IGywT/aLIeGyd7RCk7aFQ8b3SdN1Y6Ontp/qBjd3t M2TA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=Yh1k5KWD; 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 n6-v6si20576402pgt.268.2018.08.14.01.12.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:12:23 -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=Yh1k5KWD; 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 18AFC210F2026; Tue, 14 Aug 2018 01:11: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::442; helo=mail-pf1-x442.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pf1-x442.google.com (mail-pf1-x442.google.com [IPv6:2607:f8b0:4864:20::442]) (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 7EF6D210F16A3 for ; Tue, 14 Aug 2018 01:11:24 -0700 (PDT) Received: by mail-pf1-x442.google.com with SMTP id i26-v6so8918258pfo.12 for ; Tue, 14 Aug 2018 01:11:24 -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=Lv3rTt2KZbmGunLor2YB0h3jwsZMAR8XvwAgAde+YmI=; b=Yh1k5KWDxG8/Zz/S9tQPF4nAF2ZorMbRjtJUHRq3TmZsFA6NgcT6xigs8RAd9iur5N n7MFmecDxrk823vK4DrxY0oTa+ajrL1qU1frvLWhJ09hkVsmvSgv5+Jcspw3DbMtKT9v CCP6pf04qFAHztQJfF1gJxXQrebKcLS9hGyJU= 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=Lv3rTt2KZbmGunLor2YB0h3jwsZMAR8XvwAgAde+YmI=; b=XXdHqisGXRXH90zy7a/jp2jyLSWUjrHabt9MjARp3IwXYC8nT4ncv4iI/cUWO/60/Z fbMAcvOLGyDCgdLRleow8vRdtw9k/LN7CPY7HuslDoKMwCjJuvXd1ZuVCk0Rt/cUoufh REg5lynwzsW4S37xbcYDCFgwlL+hWk1N7AXL5JHnun0LJlsxiYcCwkjCbH6xOOnXdnHU oV1zSLF4uYBVDEAF55QWL/89wf3U99p/e/VHl05c7B6zZrZO9w3rMgaFKPoCXxxzNBQn 4AvCu5NqbT06p7BJ9yq6ZuO6JqVpGZqnrPqP84v8nk89YY4M+sOMM/Lq6kga3ZfyVBT1 Hq+A== X-Gm-Message-State: AOUpUlFV4UXPDln9CrTC3LZK16B3HVsI8KyfYRMBVnYma7uCTf+0/4aM 999N0oEnL64R2KRXn3X+kXm5BQsvufM= X-Received: by 2002:a62:f40a:: with SMTP id r10-v6mr22280693pff.47.1534234283328; Tue, 14 Aug 2018 01:11:23 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.11.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:11:22 -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: Tue, 14 Aug 2018 16:08:54 +0800 Message-Id: <20180814080903.50466-35-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 34/43] Hisilicon/D06: add apei driver X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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: Luqi Jiang --- Platform/Hisilicon/D06/D06.dsc | 1 + Platform/Hisilicon/D06/D06.fdf | 1 + Silicon/Hisilicon/Hi1620/Drivers/Apei/Apei.inf | 64 ++++ 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 | 146 ++++++++ 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 | 92 +++++ 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 | 119 +++++++ Silicon/Hisilicon/Hi1620/Drivers/Apei/OemApeiHi1620.c | 337 ++++++++++++++++++ 17 files changed, 2363 insertions(+) -- 2.17.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 c6de9f04ad..9550e0d497 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -340,6 +340,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 bd3ea47226..90379b8558 100644 --- a/Platform/Hisilicon/D06/D06.fdf +++ b/Platform/Hisilicon/D06/D06.fdf @@ -251,6 +251,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..7a75968da1 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Apei.inf @@ -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. +* +**/ + +[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 + Bert/bert.h + Einj/einj.c + Einj/einj.h + Erst/erst.c + Erst/erst.h + Hest/hest.c + Hest/hest.h + ErrorSource/Ghes.c + ErrorSource/Ghes.h + 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..85aa52f450 --- /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 Timming; + 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..ca43c83fa0 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Erst/erst.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 _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 +); + +VOID +SetAttributeOfErrorLogAddressRange ( + ERST_BOOT_CONTEXT *Context, + UINT64 Attribute +); + +/***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..8769d88bff --- /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 "PlatformArch.h" +#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..2953e22690 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Bert/bert.c @@ -0,0 +1,92 @@ +/** @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 "PlatformArch.h" + +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 +) +{ + DEBUG ((DEBUG_ERROR, "[%a]:[%dL]: \n", __FUNCTION__, __LINE__)); + 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..c53f4cdb3c --- /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 "PlatformArch.h" + + +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->Timming)); + 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..80d7d43c5b --- /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 "PlatformArch.h" + +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..eea73af229 --- /dev/null +++ b/Silicon/Hisilicon/Hi1620/Drivers/Apei/Hest/hest.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 "ErrorSource/Ghes.h" +#include "hest.h" +#include +#include +#include +#include +#include +#include "PlatformArch.h" + +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_ERROR, "Acpi HestSetAcpiTable Table = 0x%x.\n", (EFI_PHYSICAL_ADDRESS)Table)); + } + DEBUG ((DEBUG_ERROR, "[%a]:[%dL]:OUT %llx, IN %llx \n", __FUNCTION__, __LINE__, + AcpiTableHandle, Context->HestHeader)); + return; +} + +EFI_STATUS +HestHeaderCreator ( + HEST_CONTEXT *Context, + UINT32 PreAllocatedHestSize +) +{ + DEBUG ((DEBUG_ERROR, "[%a]:[%dL]: \n", __FUNCTION__, __LINE__)); + 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..de972b8a9e --- /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_ERROR, "[%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_ERROR, "[%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 Tue Aug 14 08:08: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: 144143 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4050671ljj; Tue, 14 Aug 2018 01:12:30 -0700 (PDT) X-Google-Smtp-Source: AA+uWPyl/deTcD/N15Eb4ddrLzKkY9xc1rvQmu2+5uQ6DVTorqSI6k91A36nAlI4zOREnCEwqTVC X-Received: by 2002:a62:828a:: with SMTP id w132-v6mr22368717pfd.121.1534234350435; Tue, 14 Aug 2018 01:12:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234350; cv=none; d=google.com; s=arc-20160816; b=Bj5haU9QBPs0biQ3EQlg5afHBELTJjZZXopF8Vq0PdSzTNqCfvHAkmEK1akBwkDFLp 1GWNZRnBGWlDcYDT3QwGS9v30TybjMhRET5jvrKM3LWOay2mwLBP2L2Gbqzdb9M0iWCf jl2qbkmGfPseeoiwIUuQm4veJPKSwzU8fSI6WAgQT8KiDI4cxfbM2s8YuFU933Le7bLQ hUKc+bhjxmW4Qj8OyN2FQ5x378+cL95rMgidltLZmBJyFO/IR4WgsPMSx+7td3jCakn9 JE3GlDYj0E1WpLeHN/GvQpNHyrqpUqNRj65LzymG6wGZpnPSfepiFH78TzuhW79iDHWP lBRA== 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=rwec9Uflvxr3qHDnlSsGiFh7qLsfoXuuwiE5VONkcWU=; b=hQLursVZy0Z8DWFN6c1a8v3vlnTYd6mcu1emybbjtjR5+9RtM+iLmgOBPlSHMmO8xt cJOXHCtcCM+Kuv/aGlZ/h9Bf8gdSHZF1pbmmky+4BQjuFtPAHqlN35IYI3kqdDhEJChz KRtN9T6qh4G8wgiLqSrHVsYDpGgvaymr4tZ/4qNZnHTrfwewjS1a2O1Jb5VNsIc3s+vD 3uA+BMggam/kU9ktxma9zuHR9mCm4Rrrksx11r8t7OCXpCNJ95lFy9fuI2dBQxKrx9xG +W1i5MnxsYvdQ7BW91qBXSgFpjeEO77rRclc4JpD28Vr0pz0Mscov3NcyKo12OCQZn29 ysqg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=Uloie7XI; 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 u13-v6si15376728plq.320.2018.08.14.01.12.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:12:30 -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=Uloie7XI; 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 6112F210F2031; Tue, 14 Aug 2018 01:11:28 -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:400e:c01::241; helo=mail-pl0-x241.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pl0-x241.google.com (mail-pl0-x241.google.com [IPv6:2607:f8b0:400e:c01::241]) (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 03839210F2028 for ; Tue, 14 Aug 2018 01:11:26 -0700 (PDT) Received: by mail-pl0-x241.google.com with SMTP id w14-v6so8030698plp.6 for ; Tue, 14 Aug 2018 01:11:26 -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=iTSwOC7K+b4xTdT7j6SRG85QHZuk1/0gyX5W4IkGyX4=; b=Uloie7XI6dSBeZY53OJsQcyRR4RYfSZW5IEzcrUdmnybqmcJtNG4Y5WsGmP5UerkU4 5hDy4frPjHDGluJLx0AMkRRiYQn3Ty3qkHQwNwDR8D4ZZp1cUoZMuCrOsaJWS75fWdKW KM7xSeGb1QV6zlj28Tr6mx2FbdJcW4aYBzEJA= 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=iTSwOC7K+b4xTdT7j6SRG85QHZuk1/0gyX5W4IkGyX4=; b=VjN6fyeR6ABNDM2vfqOxPFIu2a4eXr4rHaxWf2Kme1bq6Fq02bHm8+UkZNG9qGZWM4 wkuscDT6BOI3zeP3LE3gXJgsE+kC1mHLrcQrpnvgb4KdTkn5mNTwTydikWVdbYsXL9y/ OZpUT2+u69mPkHYKiHU7ycGRlm2MPXjldNor5cU1cpengH0EAzN8a1kKYTqt7+vxom2q yMgjRizEnoxu5uQKF9Tt6oBSk1bnLOBXwxOgBsfd+n8NwHzAu8okexAD1Apep1r/347s qfjr/bHWkqeLcLe0KXmhaOErdSrN8qV6lBuRxe2QIWpaHygioNOZxdgivsv0z9tDR9y0 yqlA== X-Gm-Message-State: AOUpUlFaK9EUlIjsHr7CpK07ptGFl5o4h4v5h5iGypTk3iRHanKOsSAx m/lnU1/J6AyBnb44I1Z4rBYlVA== X-Received: by 2002:a17:902:48c8:: with SMTP id u8-v6mr19574282plh.152.1534234286705; Tue, 14 Aug 2018 01:11:26 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.11.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:11:26 -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: Tue, 14 Aug 2018 16:08:55 +0800 Message-Id: <20180814080903.50466-36-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 35/43] Silicon/Hisilicon/D06: Add some Lpc macro to LpcLib.h X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 some Lpc macro to LpcLib.h for D06. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang --- Silicon/Hisilicon/Include/Library/LpcLib.h | 51 +++++++++++++++++++- 1 file changed, 49 insertions(+), 2 deletions(-) -- 2.17.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/LpcLib.h b/Silicon/Hisilicon/Include/Library/LpcLib.h index 236a52ba45..5cf08ccde1 100755 --- a/Silicon/Hisilicon/Include/Library/LpcLib.h +++ b/Silicon/Hisilicon/Include/Library/LpcLib.h @@ -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 @@ -18,6 +18,53 @@ #include +#define PCIE_SUBSYS_IOMUX 0x201100000 +#define PCIE_SUBSYS_IOMG019 (PCIE_SUBSYS_IOMUX + 0x48) +#define PCIE_SUBSYS_IOMG020 (PCIE_SUBSYS_IOMUX + 0x4C) +#define PCIE_SUBSYS_IOMG021 (PCIE_SUBSYS_IOMUX + 0x50) +#define PCIE_SUBSYS_IOMG022 (PCIE_SUBSYS_IOMUX + 0x54) +#define PCIE_SUBSYS_IOMG023 (PCIE_SUBSYS_IOMUX + 0x58) +#define PCIE_SUBSYS_IOMG024 (PCIE_SUBSYS_IOMUX + 0x5C) +#define PCIE_SUBSYS_IOMG025 (PCIE_SUBSYS_IOMUX + 0x60) +#define PCIE_SUBSYS_IOMG028 (PCIE_SUBSYS_IOMUX + 0x6C) + +#define IO_MGMT_SUBCTRL_BASE 0x201070000 +#define SC_LPC_RESET_REQ_REG (IO_MGMT_SUBCTRL_BASE + 0x0a58) +#define SC_LPC_RESET_DREQ_REG (IO_MGMT_SUBCTRL_BASE + 0x0a5c) +#define SC_LPC_SEL (IO_MGMT_SUBCTRL_BASE + 0x2400) + + +#define LPCD06_BASE 0x201190000 +#define LPC_FIRM_SPACE0_CFG (LPCD06_BASE + 0x100) +#define LPC_FIRM_SPACE1_CFG (LPCD06_BASE + 0x104) +#define LPC_FIRM_SPACE2_CFG (LPCD06_BASE + 0x108) +#define LPC_FIRM_SPACE3_CFG (LPCD06_BASE + 0x10C) +#define LPC_FIRM_SPACE4_CFG (LPCD06_BASE + 0x110) +#define LPC_FIRM_SPACE5_CFG (LPCD06_BASE + 0x114) +#define LPC_FIRM_SPACE6_CFG (LPCD06_BASE + 0x118) +#define LPC_FIRM_SPACE7_CFG (LPCD06_BASE + 0x11C) +#define LPC_MEM_SPACE0_CFG (LPCD06_BASE + 0x120) +#define LPC_MEM_SPACE1_CFG (LPCD06_BASE + 0x124) +#define LPC_MEM_SPACE2_CFG (LPCD06_BASE + 0x128) +#define LPC_MEM_SPACE3_CFG (LPCD06_BASE + 0x12C) +#define LPC_MEM_SPACE4_CFG (LPCD06_BASE + 0x130) +#define LPC_MEM_SPACE5_CFG (LPCD06_BASE + 0x134) +#define LPC_MEM_SPACE6_CFG (LPCD06_BASE + 0x138) + +#define LPCD06_START_REG (LPCD06_BASE + 0x00) +#define LPCD06_OP_STATUS_REG (LPCD06_BASE + 0x04) +#define LPCD06_IRQ_ST_REG (LPCD06_BASE + 0x08) +#define LPCD06_OP_LEN_REG (LPCD06_BASE + 0x10) +#define LPCD06_CMD_REG (LPCD06_BASE + 0x14) +#define LPCD06_ADDR_REG (LPCD06_BASE + 0x20) +#define LPCD06_WDATA_REG (LPCD06_BASE + 0x24) +#define LPCD06_RDATA_REG (LPCD06_BASE + 0x28) + +#define LPC_SIRQ_CTR0 (LPCD06_BASE + 0x80) +#define LPC_SIRQ_CTR1 (LPCD06_BASE + 0x84) +#define LPC_SIRQ_INT_MASK (LPCD06_BASE + 0x94) + + #define PCIE_SUBSYS_IO_MUX 0xA0170000 #define PCIE_SUBSYS_IOMG033 (PCIE_SUBSYS_IO_MUX + 0x84) #define PCIE_SUBSYS_IOMG035 (PCIE_SUBSYS_IO_MUX + 0x8C) From patchwork Tue Aug 14 08:08: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: 144144 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4050735ljj; Tue, 14 Aug 2018 01:12:35 -0700 (PDT) X-Google-Smtp-Source: AA+uWPz7/enQ0uu5IkS+nvvcOxayPe39oYpqpLB8g5DRoQsh80yu/GFSDJRCGwwPhbXf1Am2v2Xh X-Received: by 2002:a65:5b08:: with SMTP id y8-v6mr19807058pgq.297.1534234355538; Tue, 14 Aug 2018 01:12:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234355; cv=none; d=google.com; s=arc-20160816; b=d+YAB+E9jLkPsEhLITaxVD5DvK/Gp/biHHB8MmZsxQVVYtSTsmXm2S+Usg/WcEAj3a c8kO0XxZvFiSZAmQVYAt6J6RDTjLHpiSDj787cejDyTTTgbvP7htGxVAEQpxq/FJj5wn rGpSYssU/ch2ZdA8XisZKbMGdg1PuwrJ3g6iYpaPy1owvFfkNUMt7BH70UnJDUd8ca5L N2jR77GxVRtc5iqHTbwCtMuJybb5jJuz5YlmrKB9syQ/u9QLFAvoJWvffomJvWsLt3/w nKinZ9iAquKnhs1QWh5R0z72f+iiT9zgRkhk9QLx+oMx8CA8QS+Tq+GiA/fQKx/F58FM jYGg== 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=r1K+VPnu2GkU2JCe8QkDRVZDuCswMGyCt3G0dOBKRWg=; b=GRoR10pdhGvWulNzn+C+BCOzd1N7WcGYJ7cjzPXoJvyKcpm3/3EsjCzt3HiFk1LCGf Jde474ILSa2l4apkJu0pm8MnchLqYOt4fFcjreC1eeV/GGYDbQCnvBPh/JY67SQ86e0s V7xLfXUS4XWcJqAOy4xGysTBLGm1Hur6O6yU3y9tUFOlh2e4HVmGJH8zJFslBmMTV8U8 iIXBwKOT4725QJ0MIvfFvN3PO5+ZKku54+PC9+DKRijhqCSswX4q/csR1qI/kEzg5PTs WgUh7UpbmbUArioHr8+h+3c+NZD4mzJgIb59PTDpjQMyt01nj7/0AMIORF5NZpV5PO6T rf2Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b="G/QJUpVQ"; 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 h17-v6si20988455pgj.214.2018.08.14.01.12.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:12:35 -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="G/QJUpVQ"; 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 90329210F2028; Tue, 14 Aug 2018 01:11:31 -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 7BD51210F157F for ; Tue, 14 Aug 2018 01:11:30 -0700 (PDT) Received: by mail-pf1-x444.google.com with SMTP id x17-v6so8933645pfh.5 for ; Tue, 14 Aug 2018 01:11:30 -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=iJa3Bs/0VmjUtnupSZu4GZF6bbuWJj58DnKk7RTB9Q0=; b=G/QJUpVQ0dFdN9SGOceaKV5FKBBT5sL6Du87G2YhySRjPXG0f+Nvb3zEipMNLE4qg0 x+MItYAKSDI3Lq6PnXeKIxyvYN3vd/jZ3AVNIi6cf6YRkKadQXAbWczwens8Hi0dXt1N flqvbRGGFGJs4p9CfhlBRfFvl1bqT6LJbQ/Zw= 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=iJa3Bs/0VmjUtnupSZu4GZF6bbuWJj58DnKk7RTB9Q0=; b=h3+amK6gplPG59lvnZJYf7RWOs1IgI45qW0IysWdOXmz0ESkw7PIVqfWFGBfIh+Diy nP5OLdw9QAmSTikRTT6UP3oYaRrCh5X28UV88PRYlkXUgXH83NsMMfyi6RfM66GN0C3X /4tb4xOPKQ9Dc00wWtMZfOYDr/VEe2zT3qjIFEvOTnjsR/s/fdraF3KTZf2Ueyb/UmAE kTIHbLxAX043AVkcpliBbFK1/GgLG6Y7AgRt9tz9Zu9IgIl0o1lOtQRf9ny2fC2mP/U1 M/k145ZzFyBDZQO5knw5Z24dNrhO1JnPb0IUaLIwtEAuc/6ytbOJy5QWSkc3rF/wjllS DZsQ== X-Gm-Message-State: AOUpUlHlbzECYnKO7C1kvxjaINR5rpRLHe9FKAN9fBHrfLZEwHp+iaXc 7NfDAEIXaI+ROqRa6HqOuQtVyt8sx5M= X-Received: by 2002:a63:e56:: with SMTP id 22-v6mr20492046pgo.438.1534234290026; Tue, 14 Aug 2018 01:11:30 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.11.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:11:29 -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: Tue, 14 Aug 2018 16:08:56 +0800 Message-Id: <20180814080903.50466-37-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 36/43] Platform/Hisilicon/D06: Add capsule upgrade support X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 --- Platform/Hisilicon/D06/D06.dsc | 14 ++++ Platform/Hisilicon/D06/D06.fdf | 72 ++++++++++++++++- 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(+), 1 deletion(-) -- 2.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Leif Lindholm Reviewed-by: Ard BIesheuvel diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index 9550e0d497..fad6fcc747 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -121,6 +121,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 @@ -266,6 +271,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 @@ -386,6 +392,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 # @@ -434,6 +442,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 90379b8558..8c3f4f9932 100644 --- a/Platform/Hisilicon/D06/D06.fdf +++ b/Platform/Hisilicon/D06/D06.fdf @@ -308,7 +308,9 @@ READ_LOCK_STATUS = TRUE INF MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf INF Silicon/Hisilicon/Hi1620/Drivers/Pl011DebugSerialPortInitDxe/Pl011DebugSerialPortInitDxe.inf - INF MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf + INF SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareReportDxe.inf + INF MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf + # # Build Shell from latest source code instead of prebuilt binary # @@ -364,11 +366,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 Tue Aug 14 08:08: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: 144145 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4050788ljj; Tue, 14 Aug 2018 01:12:39 -0700 (PDT) X-Google-Smtp-Source: AA+uWPw9RdfyEvNgTeRhPde7LlCiHC7OcMxUm7quyAuxKJbs7yBFP6rx0AoLqBNW0pQHca7eBNW3 X-Received: by 2002:a62:201b:: with SMTP id g27-v6mr22352106pfg.253.1534234359621; Tue, 14 Aug 2018 01:12:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234359; cv=none; d=google.com; s=arc-20160816; b=up+zFC2BqiaPzxX0DCy/e2mKQsFgnKC4wzYAij+O54zWM8+sw7FXe8CVV+u1MEFq1u /GkGLXQe1XlRnTt5hA01sfelfmBBN+X/mIuciNh0+nCw3JyF/cOjsAulEI/6JsDJjWoL wZYJ34kDnMnx4NtglmSlwEOkqBPTIcldtZ54ykVW4U86zOGbVlQ3nXZOsQUVEDIUIM+o UFVzAixQM5CRMR5Cq+8NXIwiGwg1Chc28vUgp3QYIc1cXeEltTCK4GspUb8IJO4KO7lB yDjbWSoAPRxBRbi8DYWoiYt2chuL+Cg4dgO38oOXFjwVdnYw2yLxUmhOC8RRyByiUnyg K7hA== 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=8M55GrmRmCxgt/mRsLMbx0BNr8JrKZS1bMd8oRyt5rE=; b=H2SZlnzcqlVWbPOF2+uIcT9T7++C8cndxIz1Eho47h2Ssi7TReQZNkSKBIkMR0JVGF CKC40FUyHCHlOYIZc1VJegMia1AJNzeSTvpH7I+hOdkGjqzXHCIV03+Ri8ko4dFeyotG v8QceZBRE6+JuZAD19z1wMbx1MkRqa6D/cDYoyKQr5MLviBvxXAoxPaV6lRrjxXeVBjy 90mhfSmd9OBSnJZs8LaIKx8JZgbnki0/uHfcr2q28lvL6WEz3Jv0AYm5aFjVGHXuXpbC iufTM0o1fMiFR0H8hsjtJ4k5w4M9X+5fbF3LrhgN5z5hg7yxej8YisyhhZEaOCVymEtJ SmbQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=TkFcfQ5j; 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 6-v6si21565657pfk.287.2018.08.14.01.12.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:12:39 -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=TkFcfQ5j; 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 C2CE9210F2037; Tue, 14 Aug 2018 01:11:35 -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 9BB73210F16AF for ; Tue, 14 Aug 2018 01:11:33 -0700 (PDT) Received: by mail-pg1-x544.google.com with SMTP id x5-v6so8785467pgp.7 for ; Tue, 14 Aug 2018 01:11:33 -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=Dzc+SZzNR/WWm8RflpbF6XkgRxn90ZLL8jbBIAtxuIk=; b=TkFcfQ5j0WfV31ghwykWS7dPvJ97p0neI7fJPecPIOGzj0En5dFDafvreLNmHBZJax mOUSAeGHaZR3XblFEf0oLIORyq4yRzyjxYrpSh9f6+1YEjW18Bp6FNahWcho+EMr00jN +XhWxAUPvz7SRzJolohG/FGiEyVjB6cwC9/X4= 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=Dzc+SZzNR/WWm8RflpbF6XkgRxn90ZLL8jbBIAtxuIk=; b=gLA9C0ZDj+39WLcklh87ysSiBn21O/59KrIyDRQLVRfQLPfYqQfqkr1mfi2bXAuR+c Ox/ddoC8RCM1Qn9zx3dHr8VJAfzJPiNDbw3FFbJhD0GHVweBavufiOrp6I1+EXv5qPnw soha11ZjYJlPU063BmVjM+7MstzPJzwqNBOmdsYXTfXk5GGttSDlPtrnEATjTZSmhxJz yN4tReitjRPxstFRghuYzZoYm/HGPquP+xaKSy1cb78J7rTHNwnE4TGEcKpbPDC6oj3X R9d4yjuOUurY5TKXWzH1ec+KZ+jjNoHJlFqYPPMiNKKUVHhXUnm2ccIt+w7v+wGm7EVj XuUg== X-Gm-Message-State: AOUpUlExMsC/A8WoHAZbFHj7IEti9WXfayFf28zG4s5HcqKYTr7CQZRi 1NNvUdIS+iUFoqmz/e6zG4EJRw== X-Received: by 2002:a65:4587:: with SMTP id o7-v6mr20402407pgq.317.1534234293362; Tue, 14 Aug 2018 01:11:33 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.11.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:11:32 -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: Tue, 14 Aug 2018 16:08:57 +0800 Message-Id: <20180814080903.50466-38-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 37/43] Silicon/Hisilicon/D06: Modify for close slave core clock. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 close 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: ZhenYao --- Silicon/Hisilicon/Include/Library/PlatformSysCtrlLib.h | 3 +++ 1 file changed, 3 insertions(+) -- 2.17.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 Tue Aug 14 08:08: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: 144146 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4050847ljj; Tue, 14 Aug 2018 01:12:44 -0700 (PDT) X-Google-Smtp-Source: AA+uWPyLjJuNJeAoPaFjCR3wTtw0nT3sEKUl4xv1nXwcWwLglk3TaC2Qy5ugl92ObCgyf2NQAGAZ X-Received: by 2002:a62:5047:: with SMTP id e68-v6mr22610311pfb.157.1534234364124; Tue, 14 Aug 2018 01:12:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234364; cv=none; d=google.com; s=arc-20160816; b=vLFqYg5AHb1aMGKRwoIXLA4XNmF4VE407ZtiB776u2Qj6/FOOPX4TbJkoPpoQVm70L KxAYeuiJC9maCiY9Y1rCCr2Rea4UpQ2jOmSHlVAjgYXgM/DtjnmzZZwakMnKJjSpevNe PaSpRRhEVkvwocg1qwMq46HPgUUsR9Gd13w53HstoDQndefaTVdnktKmJWRVGUHct+Rg b1n2DJhyLElHr5Ac48ag2XQ9H00JlxD3Y8P45yQag5Sh6zA2Q8gBteHK6u0sEJHOyPL5 WBKVWPHNpgLq/Vw08pj5ojCHw2xO8s7YS/549hdqD4LU8hppmdVCPmmDhwgK+6zs5KUH 4l2w== 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=tK2I5xzW7TAqmRo+XHc3FUIvq0OVMbvHdK9wpQ71DFc=; b=OIk38OEkU5c2iJ58L6p3wOupFKX02W5slEMR14gAdeUWmdrJpTdE7vqWdGRcq9Ystl k6meJs9t1HgLH4OK9IdbaZEl/hGJN0RwuB1n/OfU0R2p5fGN8MGhIU6egcGNHuZr2Gcv 5ku+WDJYntlyLho3V7XASOfBGF0eceivWaVZPNfLKHInQcVoD+fTifgzMS7k8xwZtQuC 4ut1EihoirINJHCQJH3/Mc4r0sD4ktTJR/xqd7kUg40QnkhehZtWosNlOi/+E9aCVMWT qGZhtvoQQqRuahbAGSH5ROBjIa2NJXf8uAinwjIKl5exS2pqbmWPznlTH8FW1Wnb4xZH Tdsg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=iDbtAuvU; 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 u24-v6si18507143pgk.72.2018.08.14.01.12.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:12:44 -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=iDbtAuvU; 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 EDAD7210F254C; Tue, 14 Aug 2018 01:11: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::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 EE041210F16A6 for ; Tue, 14 Aug 2018 01:11:36 -0700 (PDT) Received: by mail-pf1-x42d.google.com with SMTP id y10-v6so8925197pfn.8 for ; Tue, 14 Aug 2018 01:11: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=oQZTdPX4Z4+IudM1ZbREKorW3bJ8D5rX+lh1isOPEVc=; b=iDbtAuvUYGiZuW9qEKnvFOphve1j7C/ZfZ9oJN+gHUDT2wUTmXJRM5kSg1oxjjlA+L lXnFrqn8bV615EEkUtCratcm8Ks8JGPBi0SVdeixGSSvfqQAK7eEMAc6wmxbgu9+vy5M zgronNCDcsi/ARUNgI+sorQptxmJVut5q9pFk= 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=oQZTdPX4Z4+IudM1ZbREKorW3bJ8D5rX+lh1isOPEVc=; b=TvXOeH2dnNISvAqXjNRLxcbJg3OrwxgG+lCcLz10z+WzNRtk6Ej+ESRRmzlN3Tw+3N q6THW4p4MHefAzl/n7USFsl0mf/cZF/HpguWyeL1v0619KZfxbPedP3oDmFSXV67YFfB rTi7NpJB5vyRpqT64Olz0xUWp0DkYNUMfuv/mU9e05IlB/MkowI1uxm7w9IRHgpXIVNA ES8gs3o6oS30vuQEMdEsdx7s1Rehsfozg/sRUN5yJOL+AVqNBU7Rnevc1rDtxnz9P8U3 vERXJxp8NECT5H+VWami9adDjRZx1DgLUCNMEdn+mdmZVoPL3LEvEijImCYW7G7cIdCL ZOmA== X-Gm-Message-State: AOUpUlHB7jZ/qvDxZi8v0G7/einC2vxGgUMCOmYX6tsGPENCJPhCwQdw qX/5yoUG0ZQoBzL/74ytTyVKlA== X-Received: by 2002:a62:4255:: with SMTP id p82-v6mr22543914pfa.238.1534234296629; Tue, 14 Aug 2018 01:11:36 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.11.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:11:36 -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: Tue, 14 Aug 2018 16:08:58 +0800 Message-Id: <20180814080903.50466-39-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 38/43] Silicon/Hisilicon/D06: Add I2C Bus Exception handle function X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 --- Silicon/Hisilicon/Include/Library/PlatformSysCtrlLib.h | 3 +++ 1 file changed, 3 insertions(+) -- 2.17.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 Tue Aug 14 08:08: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: 144147 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4050914ljj; Tue, 14 Aug 2018 01:12:48 -0700 (PDT) X-Google-Smtp-Source: AA+uWPwabn8xFyo/D6r/0BvoxXMi/62r13nuhUDQGxczP/sRptjQqNsbtTQANp0kea+7B33DmGgX X-Received: by 2002:a17:902:4201:: with SMTP id g1-v6mr19596186pld.203.1534234368800; Tue, 14 Aug 2018 01:12:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234368; cv=none; d=google.com; s=arc-20160816; b=IRb1Nrpj+to/gAeEQLaEkHqJFQdUeYRLrfRqpVPi2oy/8OfvtALHsnX1bVXL6hxG9s 0/XSI0GF0mIak2bZmx97EXpHkyMwXrUsqy2q9cCMguj74k3jVLE4i50kyYfslXTo6Asx BMHUwG+Kwqv5JxRYBAJFslTDcenCdjw57JgiJ8RS48xwUR69pKcIJGWMFFiruYgbR0ak biHunAV42cJuB++RplYzulxB4Vk1yA8pyUsscCcKUIks6IbHSCyL1fz6skkOkOk5kDxK My/Xa94bwgdj1w51x59gVlnynxphMMZiiiItzJyu/eUCA6F4B3p1GkxGUuaG9Z/M1DCd 5n1w== 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=kn3TQjFJa9/v1rf2mssgU6vtOROePC53s73Xphoe+ho=; b=I/+K4HsYVfCvgRTlrpjRdERGyzrLPv/PX/Blerp4CLH2DLirvZC5amGoKrljG4uuZh tQ8xfsgUdrx2V2zWHzDcbsLb7lKpo3jOUMLsKB72r8qgnoZ4FW4T5+4YnhEbAja0DBIQ 0HDeesBDE0cRAJ2SD44n8rI+GroaHhmClL2c4QnarijAfHHZeA3AkqXVJhoWmlYo69MY U0WCi+KekfQ9Apjpe6aQnsAC3XmwMctxvVxanrbOhRKZvcHZk73OJo/3Km4+yTDx/iWF 3bKYIigc+e7DFatQfwrFVu1WTuNv3ZBBlVkw5EJt+VS8XXIp/x5jHLTNsRktqnndo/pm K2KA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=SPoO+IcK; 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 k15-v6si15889234pls.463.2018.08.14.01.12.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:12:48 -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=SPoO+IcK; 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 24978210F2549; Tue, 14 Aug 2018 01:11: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:400e:c01::243; helo=mail-pl0-x243.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pl0-x243.google.com (mail-pl0-x243.google.com [IPv6:2607:f8b0:400e:c01::243]) (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 67117210F2544 for ; Tue, 14 Aug 2018 01:11:40 -0700 (PDT) Received: by mail-pl0-x243.google.com with SMTP id b90-v6so8044222plb.0 for ; Tue, 14 Aug 2018 01:11: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=wgDkX6wgY40o5xsARKA0/kmSWeKzj9oTo1MIqFID3Uo=; b=SPoO+IcKoSX5yCKMMXfsHSi94/gtWr5SlhS+oYmJVQUJC5fpnLrlQkhSCR1md212GB 5GVxWYjtyR+jBGFVT0S5HhprMmtZNGETSMaNXQbwgv8ive94qmO71en86CoMTRgac0rN 4rSFFbhEy73mLawJYhpEUN1+90jyDmAm1zHpY= 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=wgDkX6wgY40o5xsARKA0/kmSWeKzj9oTo1MIqFID3Uo=; b=nUAumEap8eJwm+5YNzLxQ4yVd10zzT0C1mDr6FtTtNnUNSmJQJxPFjtcZhHIOapmS/ WoOQqH5v1rNWqdhp5blwYQ139woWEZK8i7IsGHx2FXYtmaDchwqiwP8eOSpzXktXk1F/ +5hG2/jqfCM3GiDvqvvN64+c+/8MYSpCpJ6u8hVpKcr7c2fwO3Sbg6BYBYcYWoO+t1aJ VF5U4FaBLhHSmRFOTVOXQiZkgDSnm2DqBQ1teXVyVL+aWfWnh8Inp2enGXJgb+OeOhBL 7DRb+vdeap17YEWsWPtyZAKu+gvtNhFyXuvs/bfo8NZHRBlrvSaNPRxNevcNZTNtAo39 HUkg== X-Gm-Message-State: AOUpUlHMsx4NfS8fI7PwHnBhZyF/qlNHHRR2I50I1Evd8zRQK5yh2tSj sxWYTF1prWzqwCFKdH6oFwQYeA== X-Received: by 2002:a17:902:1665:: with SMTP id g92-v6mr19588212plg.293.1534234300090; Tue, 14 Aug 2018 01:11:40 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.11.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:11:39 -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: Tue, 14 Aug 2018 16:08:59 +0800 Message-Id: <20180814080903.50466-40-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 39/43] Silicon/Hisilicon/Setup: Support SPCR table switch X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 Signed-off-by: Heyi Guo --- Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/AcpiPlatformDxe.inf | 1 + Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/UpdateAcpiTable.c | 24 ++++++++++++++++++++ 2 files changed, 25 insertions(+) -- 2.17.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..32878ca4f9 100644 --- a/Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/UpdateAcpiTable.c +++ b/Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/UpdateAcpiTable.c @@ -16,8 +16,10 @@ #include #include #include +#include #include #include +#include #include #define CORECOUNT(X) ((X) * CORE_NUM_PER_SOCKET) @@ -114,6 +116,25 @@ UpdateSlit ( return EFI_SUCCESS; } +STATIC +EFI_STATUS +IsNeedSpcr ( + IN OUT EFI_ACPI_DESCRIPTION_HEADER *Table + ) +{ + EFI_STATUS Status; + OEM_CONFIG_DATA SetupData; + UINTN DataSize = sizeof (OEM_CONFIG_DATA); + + Status = gRT->GetVariable (OEM_CONFIG_NAME, &gOemConfigGuid, NULL, &DataSize, &SetupData); + if (!EFI_ERROR (Status) && (SetupData.EnableSpcr == FALSE)) { + return EFI_ABORTED; + } + + return EFI_SUCCESS; +} + + EFI_STATUS UpdateAcpiTable ( IN OUT EFI_ACPI_DESCRIPTION_HEADER *TableHeader @@ -130,6 +151,9 @@ UpdateAcpiTable ( case EFI_ACPI_6_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE: Status = UpdateSlit (TableHeader); break; + case EFI_ACPI_6_2_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE: + Status = IsNeedSpcr (TableHeader); + break; } return Status; } From patchwork Tue Aug 14 08:09: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: 144148 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4050986ljj; Tue, 14 Aug 2018 01:12:53 -0700 (PDT) X-Google-Smtp-Source: AA+uWPwjBUxVCqqnJNyTKqhhd0AtlBS9Q3f2km2VN9XCw/iE8NcetImQ8qYVevmvcOrNAGK8jch+ X-Received: by 2002:a63:be4a:: with SMTP id g10-v6mr17299859pgo.378.1534234373289; Tue, 14 Aug 2018 01:12:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234373; cv=none; d=google.com; s=arc-20160816; b=vQq/kIfaLbT+Uom3xFp+IYmWCwy5PvRlXiEK89bdhI63jnSg9U3+oFtGI8OisJd0aC g3RtTed6nunUtEgt6X5vqA2DpWkimXIwIvbRXWvRz7xJaVDnpGK+Y42YURvYl7PFT20a qjd87GiT9sQzWeZC8AlSaHfxxPQbBPLMSy2+lbJINN0zluMPrRu8quLdJ5o9UaeDbE2o 86xUb59ucTreDnT66EswmCcLvl0XhebSbJbf5YVfHxX4kigWGnDJPNze6YvtefORRlkS UwOfKrpAet7rv08KbWAlXqytZline6R8IxjmSU0jlPTyS5B2lqfasVPsFZDFJ8ObvEju X0FQ== 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=T4kKJUUvQcwOUGXyM3vP33IkFQWM0kMuBLKJM+FPkhg=; b=ZsGcraAGQGHvRuf5dEWMsPGBJ5DlgE8frd8ZeY2cLcE5MpIuvmOrkSakK5Ac2lKr35 LdXufMcY1/Tw5xWkU2VNEjE2+mCDh2hCM7yVrKzX+vPCNUuspwKQMuyIIc1aaKxxxVay VJnOiVHLcL/NnRrrL55dHVAbskl9bMeHFkBuTI13I31jrrhsvWSNWeinRhBhUkyroGXV 8dWGqpz/5m01PEgGbprBPtsYJvEQrW7Z0crZhT9L8iJCzZdPWqVNS8AE1plbGYgf/elc szjVLlAjF5IPgmUlb4Na8nGM3xWcSFJJEhFsBEa7ohJo0HJ4JLuC+mcfnb2te2tCRfCM owRg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=XjxhdvgU; 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 s10-v6si19330602pgm.501.2018.08.14.01.12.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:12:53 -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=XjxhdvgU; 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 5361C210F2552; Tue, 14 Aug 2018 01:11: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:400e:c01::241; helo=mail-pl0-x241.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pl0-x241.google.com (mail-pl0-x241.google.com [IPv6:2607:f8b0:400e:c01::241]) (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 94517210F2544 for ; Tue, 14 Aug 2018 01:11:43 -0700 (PDT) Received: by mail-pl0-x241.google.com with SMTP id b90-v6so8044252plb.0 for ; Tue, 14 Aug 2018 01:11: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=dPwuA9svVO/960rahvTTDA8WB6UGBMspAj+4E3t/334=; b=XjxhdvgU4nxtm71HjHiFapsLh3ZwkjOFQ4H7WxFif3uGQxVLVYzr1OuoSOzwDRR0mz FPoHjz7PuAR9hRxMmAoT3LgHcxEWRS9/WS8FrI/mfUlAnSclyzTKI555cMAeGuxT8CS9 8o996edeoIpKFusqJuGzWGLqkktcnH8JFbQfE= 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=dPwuA9svVO/960rahvTTDA8WB6UGBMspAj+4E3t/334=; b=hrvhvQWsjn/XWdnOO+xCwG4Lopsun0E0M8Akon0idERgjBDdhnkhKDnipNCyFKd6Gf UwrsDECoPXUfA32+C3bNSXdsf5haLGkUxNOIM0r/389U/l++nIch/dEXaLOPYgIsbYky 9jeAkoKr/1WwjywFneQ0ItQpiWyvy59/hE1W/RvDgS2BPFlNhYQwfdOevMG/jsC6yLlW kyZWRnHAOLU6ccpXt1BvxLy1TKI2d4u6YS1cIFMqII3+3qMLcOIcc31gTQUZVpwmcXgZ Bzpo7g8F8gZku1WgBjC+9YDgTAmZHPQBGoqOCeBjYH/8/Cm9faFEQdZ3OxyujA2wYwrL 9r7Q== X-Gm-Message-State: AOUpUlGgc1vTno2td1OcLL8rOzmr1ltaRm4mBrvm1qzapiJeZOw/Jrpz Qe0GcOB/flXKSaioLHsxbxP3iQ4c3LY= X-Received: by 2002:a17:902:22:: with SMTP id 31-v6mr19557805pla.190.1534234303340; Tue, 14 Aug 2018 01:11:43 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.11.40 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:11: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: Tue, 14 Aug 2018 16:09:00 +0800 Message-Id: <20180814080903.50466-41-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 40/43] Silicon/Hisilicon/setup: Support SMMU switch X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 --- Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/UpdateAcpiTable.c | 88 ++++++++++++++++++++ 1 file changed, 88 insertions(+) -- 2.17.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/UpdateAcpiTable.c b/Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/UpdateAcpiTable.c index 32878ca4f9..e0c29e0f57 100644 --- a/Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/UpdateAcpiTable.c +++ b/Silicon/Hisilicon/Drivers/HisiAcpiPlatformDxe/UpdateAcpiTable.c @@ -24,6 +24,90 @@ #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 ( @@ -151,6 +235,10 @@ 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; case EFI_ACPI_6_2_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE: Status = IsNeedSpcr (TableHeader); break; From patchwork Tue Aug 14 08:09: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: 144149 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4051048ljj; Tue, 14 Aug 2018 01:12:57 -0700 (PDT) X-Google-Smtp-Source: AA+uWPwOG1+/qu0SzyiqrUib2ypBMkiw2oeXVBIs0lMwB5/nZ4sWPUYYtPC5IJIRA7h6oVrBiDtO X-Received: by 2002:a17:902:e28b:: with SMTP id cf11-v6mr19731966plb.86.1534234377681; Tue, 14 Aug 2018 01:12:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234377; cv=none; d=google.com; s=arc-20160816; b=k8jILSlq5SnFPZXdyPDm029CZdDMOncgo7Xklv5ojmXWqkPhQRa5KSr03I63eDFkVs IsJh0/mc0McxleT//8Dv0jAqv5w66WFxr2L4P1x/3S+zFrJk3MzCPWZpuQ6MBPmDErts st1XwXa/RWp3BLl5TrkULaesvrq/rZh+2H7Xx2KWziaQOB0DEaqY9rCZCVKGGHFl6LJH JicaxU71oCzacWyXDm46g1peqJyrNIMALZJpJbDY+Op3ZmK8q8kfPW4eeR0Fgb9IlTYz MkUUDt84fU7xvs7cAuppmrhFi5eIVIWr3keE+PZQlfCft08xT3mfDe8/YLiNm4YKbITJ Uxgg== 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=k/XzL7GGBQk7XfloH4ydXNFrrCZFdgJ59/r2cXeZTqI=; b=jzPY29Ri4FNcIJA3+BDfnihC0gV/aIjuKKajnA+0MbaH7zrPEpqRWGR7p6gzojZFPo k581KF5WRjUD9GvgmKOHmWpitQh96lpR4mwftbWTS82Ylz4aNAiQdUE30+pFhJ1Jo6R9 vkat6AJTb0tkZnl0DXbH9sGu/ajji+4Z0/iID8CB2w/V936RFv1+Saf4Wr410optMGSP lYN6isCEYvNtPyQxlCCR6LhlXAt2uVQm+2VjUSdMI6WcrmbxYTSv3epL23AjOzVQEzQV KV+RZVeAUgmkPPKj82ZhnfLWmeMu76hsdw2KYyMGcXGpKd0E0WScQU0cBiuK0PVJbOac lHrA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b="I44p/UJe"; 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 p24-v6si15939992plo.52.2018.08.14.01.12.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:12: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="I44p/UJe"; 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 7EB26210F255D; Tue, 14 Aug 2018 01:11: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:400e:c01::242; helo=mail-pl0-x242.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pl0-x242.google.com (mail-pl0-x242.google.com [IPv6:2607:f8b0:400e:c01::242]) (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 EB228210F255B for ; Tue, 14 Aug 2018 01:11:46 -0700 (PDT) Received: by mail-pl0-x242.google.com with SMTP id e11-v6so8034554plb.3 for ; Tue, 14 Aug 2018 01:11: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=Mm+VVTC+6A/7GJ0YXugiu9UtarvRFOqe1sPM1fU+3bQ=; b=I44p/UJe5/vvSdu11gNAWLLM/lCoyEOibaxrvygAhYp39vysHwDoF9RIRMpiyQa3gr 9JMraqoWcXZ+832pQlWOsefjec3bgDE28lQHF8DhrXvroE96yqDgrHGOxosJTLu4cmbi TseXEaYRCAPfdNdKUOgC6iUep4Nua2y/szINM= 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=Mm+VVTC+6A/7GJ0YXugiu9UtarvRFOqe1sPM1fU+3bQ=; b=GV4Kn1YJl+VoSIzM2NzL4cbiec2cs0/inCVDX4xxbAPR3D018pHqvCpSautPuf4Jte NapRPuHCYBnDr7tI71GiG4h9ohqSa+uPWfe58vjRhGWh0s+JIOdVvdy+c+xsXcySdsOH w+HhLlDkiXNusozJZyw9CNHkp1JYCSI9pYqT6b3vUSIVELxZERwYZFxwf5hBzrN7Cxnn djmfDYiy9ML8OPTUym0jYu7wCXdZ+/HvTTkhN0JWs7pS6TV+S9VSPt0DjJNSLn1LeHpt Pw6l2//LxWkZ/+8yESSvbVZnGECmLgHXuLfPMdTQ11FsUVYduoHYZg2I/brhOH+8Otvb F4ZA== X-Gm-Message-State: AOUpUlEsz01lYuocm59OFzKTynkaMXaFDlJuDK4lG9i4lDbI9Xcb1AuO SIymIfjJR8FtbbFt9vQXWQ6xMwpLC7g= X-Received: by 2002:a17:902:9a8b:: with SMTP id w11-v6mr19475094plp.333.1534234306653; Tue, 14 Aug 2018 01:11:46 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.11.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:11: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: Tue, 14 Aug 2018 16:09:01 +0800 Message-Id: <20180814080903.50466-42-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 41/43] Hisilicon/D06: Add PciPlatformLib X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 a Null PciPlatformLib for build D06. The switch generic PciHostBridge patch set add two api for PciPlatform driver, so need to implement the two api for D06. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang --- Platform/Hisilicon/D06/D06.dsc | 1 + Silicon/Hisilicon/Hi1620/Library/Hi1620PciPlatformLib/Hi1620PciPlatformLib.inf | 30 +++++++++ Silicon/Hisilicon/Hi1620/Library/Hi1620PciPlatformLib/Hi1620PciPlatformLib.c | 67 ++++++++++++++++++++ 3 files changed, 98 insertions(+) -- 2.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Leif Lindholm diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index fad6fcc747..053ea894d5 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -95,6 +95,7 @@ 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 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/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 Tue Aug 14 08:09: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: 144150 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4051113ljj; Tue, 14 Aug 2018 01:13:02 -0700 (PDT) X-Google-Smtp-Source: AA+uWPwWFXGa87lKmjoC4aYDNtODqgheMSm48R2Jg5i6jLZA3YzCRSGFfX8KXlNzqOIMe/vJGffL X-Received: by 2002:a63:1262:: with SMTP id 34-v6mr20523557pgs.154.1534234381947; Tue, 14 Aug 2018 01:13:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234381; cv=none; d=google.com; s=arc-20160816; b=Na8zMHwGx2o3nAXLbwK8n5MLXExC1oVVuX0XCrcWvbNkJmT12c2UyH1EkKg44588Ua ktB9kX/+ZGLyFkgFJ7JGQYeILoi4YRO08NHXMgFvnU72kMMUfdZPfjYozIcXSaBFrERM YDw1Ri9/lWnlaMPaZR2gZhKOyES5zhvfVLKsE3r1DDweTzSPjGpjMADxi3yLaRlgOvdS 6izlvq9bAMzTYL36Gj05/fISZzj2UgSQJ4AvcgKAc6u6+sBacF0/+VMDnfF4CyG1SAHl J2xxSndiw4aEDmYj/pYDjH87QR76J9vb2pdRUwSIVMSLYt0AIw59Q0C9yvC6hTiGh845 8TEw== 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=9Y9HBNIIcCFvO1wsacyktCcgtbg52HbaAF1t250qX14=; b=H9Q+SaA5ybeOsFv2uLOtc45cfv8cbcl0y/kQf3dPR1OOYHBimne1apkTNb/NpDeB3Q aOSjNJlaO+J0Y/BeZCLIQueowKp7WYwfB7qVVjxcC7JOOFCZkQHjKlv6KlbfPXMPLvF8 kAXv9DOxOpj+MabC7OwmQ7MofbYrMA541crIgUaVf4nyMBS1YgAgXWYF+0MccK/BHMfI LF091hkQ+weeBPDemdHAn0GpKPHrTGcTi6CLUafAjV9WaAIrs67nTYlbcbsTvpJgrY5x EY7gtu1d8dA3QrMqXVPSsctD6kZ0ocLJoQCCwZtGN7JPpkNJqpJ7Q/pE3uGG7b4iNxp8 2h9Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=kinMCdNr; 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 h9-v6si21575792pfh.240.2018.08.14.01.13.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:13:01 -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=kinMCdNr; 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 AC066210F2561; Tue, 14 Aug 2018 01:11: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::529; helo=mail-pg1-x529.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pg1-x529.google.com (mail-pg1-x529.google.com [IPv6:2607:f8b0:4864:20::529]) (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 5923F210F2545 for ; Tue, 14 Aug 2018 01:11:50 -0700 (PDT) Received: by mail-pg1-x529.google.com with SMTP id y4-v6so8780141pgp.9 for ; Tue, 14 Aug 2018 01:11: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=XJSJZEXX2GiqXqzsQW2eyJkxM0M5Y/J5id1u/wYoqmU=; b=kinMCdNrFDc4fwcSdZtr8iuQpRhmTSyZVf9X+DN0nypFSZFGiGttSlezo1rnC6uOnA uxj+bR/H9Zgiw4F86GGF6Xlcf6sSO6cvrsFUh4O24J6ap5UrelmehrWL8A9nBJmCRBBQ saoG4i5UvHGaBRTP0AYmXISEIRMlWlND6OTUE= 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=XJSJZEXX2GiqXqzsQW2eyJkxM0M5Y/J5id1u/wYoqmU=; b=ohcWbwfI0q89aF4WSfQcMh2XLoCZFLAmbG/DJINv/TFJmxApTR/7UUzsNl2FU7uJGm awk8+N8FL/lTxVhE/fcHQeFqnEcCLyq5vj6T/J3gzoieNnNi7aAEQz91j8QYXkEb1Wd/ 7qqudoUbgqjMMolpKY+KgMtdzq2g/FVHDNpVf7or9s99sNqejri4xuqR5B3h5t7LugWW N7CaqsbxoN/D43Z9RFLEUI7fZIM1SuCzWmHNTTJVPfGIu0KFZMCBZgWl5AS8JKuREyRr O+WIrK+nv1eE9IVAb397XCLhNfmSfiMm5WVtfTChRHqIVd5iM/VDUC14AbCQMKIrxT+w Xptw== X-Gm-Message-State: AOUpUlG5CxDyb7wLAbrnNIZC/U2Y8bK3G8WwyqhgabbXYWcosGO5lu9J y6+Q48qqqPJBHMcbWxm32Q9LHA== X-Received: by 2002:a62:11c4:: with SMTP id 65-v6mr22323905pfr.54.1534234309979; Tue, 14 Aug 2018 01:11:49 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.11.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:11: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: Tue, 14 Aug 2018 16:09:02 +0800 Message-Id: <20180814080903.50466-43-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 42/43] Hisilicon/D06: Add edk2-non-osi Shell components X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 Hisilicon Oem Shell libraries for some commands,such as biosupdate, getmac, setmac, provision, acpistartos, brdinfo, sfpinfo. biosupdate example: ifconfig -s eth2 static 192.168.2.68 255.255.255.0 192.168.2.1 biosupdate serverIp -u user -p password -f D06.fd -m master acpistartos example: ifconfig -s eth2 static 192.168.2.69 255.255.255.0 192.168.2.1 provision serverIp -u user -p password -f os\Image -a 0x80000 2 provision serverIp -u user -p password -f os\minifs.cpio.gz -a 0x07000000 2 acpistartos Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang --- Silicon/Hisilicon/HisiPkg.dec | 4 ++++ Platform/Hisilicon/D06/D06.dsc | 2 ++ 2 files changed, 6 insertions(+) -- 2.17.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 858b840a57..010d501914 100644 --- a/Silicon/Hisilicon/HisiPkg.dec +++ b/Silicon/Hisilicon/HisiPkg.dec @@ -39,6 +39,7 @@ gPlatformSasProtocolGuid = {0x40e9829f, 0x3a2c, 0x479a, {0x9a, 0x93, 0x45, 0x7d, 0x13, 0x50, 0x96, 0x5d}} gHisiPlatformSasProtocolGuid = {0x20e9829f, 0x3a2c, 0x479a, {0x9a, 0x93, 0x45, 0x7d, 0x13, 0x50, 0x96, 0x6d}} gHisiSnpPlatformProtocolGuid = {0x81321f27, 0xff58, 0x4a1d, {0x99, 0x97, 0xd, 0xcc, 0xfa, 0x82, 0xf4, 0x6f}} + gOemNicProtocolGuid = {0xb5903955, 0x31e9, 0x4aaf, {0xb2, 0x83, 0x7, 0x9f, 0x3c, 0xc4, 0x71, 0x66}} [Guids] gHisiTokenSpaceGuid = {0xc8bc553e, 0x12bf, 0x11e6, {0x97, 0x4f, 0x87, 0xf7, 0x7c, 0xfd, 0x52, 0x1d}} @@ -49,6 +50,8 @@ gHisiOemVariableGuid = {0xac62b9a5, 0x9939, 0x41d3, {0xff, 0x5c, 0xc5, 0x80, 0x32, 0x7d, 0x9b, 0x29}} gOemBootVariableGuid = {0xb7784577, 0x5aaf, 0x4557, {0xa1, 0x99, 0xd4, 0xa4, 0x2f, 0x45, 0x06, 0xf8}} gEfiHisiSocControllerGuid = {0xee369cc3, 0xa743, 0x5382, {0x75, 0x64, 0x53, 0xe4, 0x31, 0x19, 0x38, 0x35}} + HisiShellSampleHiiGuid = { 0x43859314, 0x82c1, 0x4592, { 0x8f, 0xf7, 0xc1, 0xbd, 0xf3, 0xb2, 0x0e, 0xd5 }} + HisiPlatformShellSampleHiiGuid = { 0x7924a5de, 0xc600, 0x40d5, { 0x91, 0x10, 0xf9, 0xc3, 0xe7, 0x25, 0x4d, 0x33 }} [LibraryClasses] PlatformSysCtrlLib|Include/Library/PlatformSysCtrlLib.h @@ -101,6 +104,7 @@ gHisiTokenSpaceGuid.PcdSlotPerChannelNum|0x0|UINT32|0x40000004 gHisiTokenSpaceGuid.PcdShellFile|{ 0x83, 0xA5, 0x04, 0x7C, 0x3E, 0x9E, 0x1C, 0x4F, 0xAD, 0x65, 0xE0, 0x52, 0x68, 0xD0, 0xB4, 0xD1 }|VOID*|0x30006554 + gHisiTokenSpaceGuid.PcdStartOsParameter|L""|VOID*|0x5000000 #FDT File Address gHisiTokenSpaceGuid.FdtFileAddress|0x0|UINT64|0x40000005 diff --git a/Platform/Hisilicon/D06/D06.dsc b/Platform/Hisilicon/D06/D06.dsc index 053ea894d5..544039e450 100644 --- a/Platform/Hisilicon/D06/D06.dsc +++ b/Platform/Hisilicon/D06/D06.dsc @@ -473,6 +473,8 @@ !if $(INCLUDE_DP) == TRUE NULL|ShellPkg/Library/UefiDpLib/UefiDpLib.inf !endif #$(INCLUDE_DP) + NULL|Silicon/Hisilicon/Library/HisiShellCmdLib/HisiShellCmdLib.inf + NULL|Silicon/Hisilicon/Hi1620/Library/HisiD06ShellCmdLib/HisiD06ShellCmdLib.inf gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0xFF From patchwork Tue Aug 14 08:09: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: 144151 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp4051177ljj; Tue, 14 Aug 2018 01:13:06 -0700 (PDT) X-Google-Smtp-Source: AA+uWPyoLps/yO0a4mA6Apu4wHYuI54fJjkSccjVmpny5nD5QEiwpqxUhfTrVi20vPij90W7xQH7 X-Received: by 2002:a62:3a5b:: with SMTP id h88-v6mr22317182pfa.61.1534234386614; Tue, 14 Aug 2018 01:13:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534234386; cv=none; d=google.com; s=arc-20160816; b=ZBJViDozKWJTZhkXCZN/zXnKszFPWuh4EXJzIHj2F3+JYuhhFpyhoU8Fj4tcv/n5SA Slro2U2Fk9b3lqk/wDFHf0TQOuw31U2pJDQaNVh5KDfswm4J+n68yyKtI8TdO2Osz9NU huJZrfOHFLJOvFWM9o2tSkmf+dc5xzWJmgM4cXNjNrGsKPgtVgI3Wk9Pp3Hvm4vGccab 9DJdKiesjidbZSbw+mGwX+FlPUOjolo7YM2GNnA3OOWvG8AIqDnyidfyJXDZjtNH2yjG dVQesVxlzYJ2KkU5xU0ePwAQy1xMk+aYImWlzvhfm13WvMlGirYfqWyizOT6bJM4mEsL xoFw== 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=iRqKEAGL8cJOaHa1gng2TY9udleRC/X9siRGUucX5ko=; b=N/IOdR+txj4ftdhX424swVDDnbEVUuikT+kPyDXzewFjmR1g9u/sCrC8iEzUPV+dM9 DjEarb8ml2l9CcRmLwfs65//vDue4N+otT6gkD+rnLE1pyciyojtyOYsbfcTL93CVDeP 8Bw0XvfSb+Mnx2n3oZbcvhBKlAvfJUs/CQBrmM0PRTKB2rJbGHfdIiJMZxcWG8ymyOrs b2SWMh8AvHlcrOOsRgGaxi40jNv754KNL7eeKHBcQMp81pmCS8rqtZXVdohdcwFSXC42 o1SpudzNVxZES/ly1IJysh5TNI63fIDG6H9lYOjDsYhG4MVGHyvxQ7VFOFfx3AJBYvNm 3Mag== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=Qta+LYLV; 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 a62-v6si19463621pge.262.2018.08.14.01.13.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Aug 2018 01:13:06 -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=Qta+LYLV; 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 D5EB8210F255B; Tue, 14 Aug 2018 01:11:54 -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:400e:c01::229; helo=mail-pl0-x229.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pl0-x229.google.com (mail-pl0-x229.google.com [IPv6:2607:f8b0:400e:c01::229]) (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 93814210F1559 for ; Tue, 14 Aug 2018 01:11:53 -0700 (PDT) Received: by mail-pl0-x229.google.com with SMTP id g6-v6so8024151plq.9 for ; Tue, 14 Aug 2018 01:11: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=zoqLfUVUeyIzOtoYSAJhK1KOZx5efJ4YUywyFHMmF0U=; b=Qta+LYLVwJSiXnZhh0rGzVaDav44+kuoK2k5f5SW1GURubCC17e8OoKH5JNza/Z2gi 2oVtTQgzh9KBqI1wReN8o/G8jKxwi8F2ANGiFK3azFx+qRQZIZj+cPsCgwyO+m8hoZ9d eGqxF8ksjhHREPS7vZ8BItQl2QQyys+5GNFPo= 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=zoqLfUVUeyIzOtoYSAJhK1KOZx5efJ4YUywyFHMmF0U=; b=J/tk0Rc2PvbS8L8tWeDbsORiJqyAE3nHn8+DEDihx9Td5hiOSCW5yVSbJjbJuwcdON 2xAMSYKKUR6nyGT4w7/95L9PFukVvsJoHNQTOV7Gul/7flFzLXqWji/7JaMuAqMO8+pL PonLLYPbOZWl8cAJeaSqfr2UMCdRxSTVh+UtFoZY9l9cqqlRDoo7NdOIkgswCwMfbAIX vGi6xQWUgxWPNhFn7zGVib6ZqdfoWLHuWVoMqfIsIaORc8OrBndofcvlO1u/mzxc5Sa6 qvHr1hfKA+Hk85vSBierwyFzmqMJ2i/fTuLE5jaeOt5/xcUpMobbiQqkR/whEf4DZjl+ kwpw== X-Gm-Message-State: AOUpUlGqahANId0z0FVfAF0DY+kz1YGEhKqVyQ1NomeFXfXAl63SMAbv WK4m9QIzp5U1FpboYexJyPiudw== X-Received: by 2002:a17:902:9a01:: with SMTP id v1-v6mr19847011plp.20.1534234313242; Tue, 14 Aug 2018 01:11:53 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id h130-v6sm72905670pgc.88.2018.08.14.01.11.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 01:11: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: Tue, 14 Aug 2018 16:09:03 +0800 Message-Id: <20180814080903.50466-44-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180814080903.50466-1-ming.huang@linaro.org> References: <20180814080903.50466-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v2 43/43] Platform/Hisilicon/D0x: Update version string to 18.08 X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 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, 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 --- 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.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Leif Lindholm diff --git a/Platform/Hisilicon/D03/D03.dsc b/Platform/Hisilicon/D03/D03.dsc index c12790ba59..add15b7f93 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 94d386582e..76c0bd421e 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 544039e450..09197922ad 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"