From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mx.groups.io with SMTP id smtpd.web10.1156.1573087792919852775 for ; Wed, 06 Nov 2019 16:49:53 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=F2aRiyyN; spf=pass (domain: intel.com, ip: 134.134.136.24, mailfrom: michael.a.kubacki@intel.com) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 16:49:52 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,276,1569308400"; d="scan'208";a="192654590" Received: from orsmsx106.amr.corp.intel.com ([10.22.225.133]) by orsmga007.jf.intel.com with ESMTP; 06 Nov 2019 16:49:52 -0800 Received: from orsmsx126.amr.corp.intel.com (10.22.240.126) by ORSMSX106.amr.corp.intel.com (10.22.225.133) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 6 Nov 2019 16:49:52 -0800 Received: from ORSEDG001.ED.cps.intel.com (10.7.248.4) by ORSMSX126.amr.corp.intel.com (10.22.240.126) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 6 Nov 2019 16:49:51 -0800 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (104.47.36.57) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 6 Nov 2019 16:49:51 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ne/QdpP6eLOSxR37nFJorlzEFHoc7i5sXFitOsoO5l2YlNsb7AoP14fmoC2bR7cd2bTXin+QNK2WJMQOV/UTkrqxJLPDwrbVc1LtsHxfBX1h5ylQLo1XaefjrIEqBMd5lR8P0z89LKUtFnJD1Af2/Mb5b9vZxOqjFEthW6EyTDTois7E/MIuno33w5NwUIlR/hQJbCMzYlF3DnJvK8e12FnJjFw6XX2AGDSmnuJoFI8ITC5yUGxTtAu6kB2yBxjVrlM14C6hFUZ7gXmry/0McvbbsrGB1V80M8VQ3d3Q6EF0+IuegNiqK4jDQPTBMZM9Goy87/105+9BkMSoZD/uTg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9lmowdg4ZYyCK4JNlg9dx7Aw4X0bVP3FKGvosiPXtMM=; b=jcBv+cOHJ1e1r9Iw/I1XuOFUG/8jbV3oTt7KmtXLEGK+3ewthFMPM1w8X1G5Z4vFbETRKV9p80MMLKqfEYR9D0jCgzKgxyGLtDAWw/Pk6YF0/NyDVDBAKdhN1tGcFJ9mStzbqdAKyIXTTwlBmvZrMpWAfjs02yrYbvKfIwCW3JzW1iI87t1cspAMe+HWcaGEBwwzSkUKXsmoL39yNGC2pEWc/jXnHK7h+8sfkq8QFUJwMqEdFGwCrFBMlHQ1922X+z73h2HDMuzBEuq9227r08aTkTCM+JEPI27xNOr4eFZyvp/8jECBp8L+S3pYxWdUWQmtKpWs1U3LB1f/Op7+uA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9lmowdg4ZYyCK4JNlg9dx7Aw4X0bVP3FKGvosiPXtMM=; b=F2aRiyyNBsJXdKQp+5dx/c6t6ti+BkP5YZFeSGM6CS+CQPysPI2Jgc63lKbfeXbmoF/W5p6GRmEENVnVhNipxne9Z7zG2DIxCvo7om5Uh1bAExEZU+SZUPQ68Wvq2zWOqZkIcvJeJMlJ4YRtHr+azYKUCjADtFo80dZbMfZxuYs= Received: from BY5PR11MB4484.namprd11.prod.outlook.com (52.132.254.155) by BY5PR11MB3976.namprd11.prod.outlook.com (10.255.160.206) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Thu, 7 Nov 2019 00:49:49 +0000 Received: from BY5PR11MB4484.namprd11.prod.outlook.com ([fe80::c1ef:6e0b:90c8:55e2]) by BY5PR11MB4484.namprd11.prod.outlook.com ([fe80::c1ef:6e0b:90c8:55e2%7]) with mapi id 15.20.2430.020; Thu, 7 Nov 2019 00:49:49 +0000 From: "Kubacki, Michael A" To: "Agyeman, Prince" , "devel@edk2.groups.io" CC: "Chiu, Chasel" , "Desimone, Nathaniel L" Subject: Re: [edk2-platforms] [Patch v2 5/9] BoardModulePkg: Added Pcds to Super I/O driver Thread-Topic: [edk2-platforms] [Patch v2 5/9] BoardModulePkg: Added Pcds to Super I/O driver Thread-Index: AQHVlEE59mt4geeo5UyvXf7ofT/dFKd+22kA Date: Thu, 7 Nov 2019 00:49:49 +0000 Message-ID: References: <20191106012603.4724-1-prince.agyeman@intel.com> <20191106012603.4724-6-prince.agyeman@intel.com> In-Reply-To: <20191106012603.4724-6-prince.agyeman@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiOTg0ZWI2NzEtNjhkYS00YjgwLTkyZGMtMGM5NzY3N2MyMmM1IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoibUZcL1oyb0xRXC8xd01lNGcwV3ZpQjYyTDNIVU9KNWhGaFJuMitvNkFQRGxqYkFtXC9TRGhSb0JqQlR6ckJWSldYYyJ9 dlp-reaction: no-action dlp-version: 11.2.0.6 authentication-results: spf=none (sender IP is ) smtp.mailfrom=michael.a.kubacki@intel.com; x-originating-ip: [134.134.136.217] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 8bf3c0e7-4ddb-4881-f1a2-08d7631c64b0 x-ms-traffictypediagnostic: BY5PR11MB3976: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7691; x-forefront-prvs: 0214EB3F68 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(39860400002)(136003)(376002)(396003)(346002)(366004)(13464003)(199004)(189003)(486006)(11346002)(6436002)(305945005)(66066001)(55016002)(6246003)(2501003)(14454004)(2906002)(19627235002)(4326008)(86362001)(6116002)(14444005)(3846002)(33656002)(110136005)(7736002)(71190400001)(478600001)(25786009)(99286004)(446003)(8676002)(107886003)(52536014)(81166006)(81156014)(8936002)(54906003)(9686003)(316002)(256004)(66946007)(53546011)(66446008)(6506007)(64756008)(26005)(66556008)(7696005)(74316002)(76176011)(102836004)(476003)(186003)(71200400001)(66476007)(76116006)(229853002)(5660300002);DIR:OUT;SFP:1102;SCL:1;SRVR:BY5PR11MB3976;H:BY5PR11MB4484.namprd11.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 6AlzGkG/C20ml0ykcBD3q4XGNUHpSPJp+Lg4jmmzs56njWu2dEyAyZB7Ge5o2V7u+YOsr2jksbKenP+4nfB7eaA2uZkc3qYredOGkpKF24rda+bt7NSN7QndHPtzAXF3w5je7p3PAlCFvEdAezzuJTJzGD/DymhXGhZz8VdgxgwS9UklRUoBt3vCv1UO6AWtHovupVOcdLLhAfV4PtsUTPhOznmv0ijhC/m3n2lvmc+po79e96YRqZZ/cMHT5pNwo+OluhufEwAsR/54QCnd2SPjYudv1b1eZRDCy6QITnmCHMgNpj9fJOCZvJY3C0+q/6D4UeBveqBJUnyK1OQJboQtHSBzfpv6Rwy2mIWuK43unAIqEOS0YaGLQr3ItEvfLWcBbQ5JtQsi15lVnPmYcq5sSoMK5MsebC1BO/Xe0/PWtk+KTEibcP0icwMyTC1U MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 8bf3c0e7-4ddb-4881-f1a2-08d7631c64b0 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Nov 2019 00:49:49.4367 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: mT8u82cUFFpHKUk89KcoIQSfeZQcACTjtaCm6u+H/NbcFhUFHSQ40QkKvOtYQ9wXmycqnUtKcVlqqmi3wo+ChBNetDGhwXJga5FbR1shTRk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR11MB3976 Return-Path: michael.a.kubacki@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable There was a whitespace between line 58 and 59 in LegacySioDxe.inf that was = removed in V2 causing these sections to run together I'd prefer to be added back before being pus= hed. gBoardModulePkgTokenSpaceGuid.PcdSuperIoPciIsaBridgeDevice [Protocols] With that change: Reviewed-by: Michael Kubacki > -----Original Message----- > From: Agyeman, Prince > Sent: Tuesday, November 5, 2019 5:26 PM > To: devel@edk2.groups.io > Cc: Kubacki, Michael A ; Chiu, Chasel > ; Desimone, Nathaniel L > > Subject: [edk2-platforms] [Patch v2 5/9] BoardModulePkg: Added Pcds to > Super I/O driver >=20 > Included PCDs to the Super I/O DXE driver, to allow the enable/disable of= Ps2 > keyboard/mouse, > UART1 and UART2 ports. >=20 > Cc: Michael Kubacki > Cc: Chasel Chiu > Cc: Nate DeSimone >=20 > Signed-off-by: Prince Agyeman > --- > .../LegacySioDxe/LegacySioDxe.inf | 12 ++++ > .../BoardModulePkg/LegacySioDxe/SioChip.c | 68 +++++++++++++++++-- > .../BoardModulePkg/LegacySioDxe/SioChip.h | 8 +++ > .../BoardModulePkg/LegacySioDxe/SioDriver.c | 40 +++++++++++ > 4 files changed, 122 insertions(+), 6 deletions(-) >=20 > diff --git a/Platform/Intel/BoardModulePkg/LegacySioDxe/LegacySioDxe.inf > b/Platform/Intel/BoardModulePkg/LegacySioDxe/LegacySioDxe.inf > index f01f63e69e..ccddc97e91 100644 > --- a/Platform/Intel/BoardModulePkg/LegacySioDxe/LegacySioDxe.inf > +++ b/Platform/Intel/BoardModulePkg/LegacySioDxe/LegacySioDxe.inf > @@ -34,6 +34,7 @@ > [Packages] > MdePkg/MdePkg.dec > MdeModulePkg/MdeModulePkg.dec > + BoardModulePkg/BoardModulePkg.dec >=20 > [Sources] > SioChip.c > @@ -44,6 +45,17 @@ > SioDriver.h > ComponentName.c >=20 > +[Pcd] > + gBoardModulePkgTokenSpaceGuid.PcdPs2KbMsEnable > + gBoardModulePkgTokenSpaceGuid.PcdUart1Enable > + gBoardModulePkgTokenSpaceGuid.PcdUart1IrqMask > + gBoardModulePkgTokenSpaceGuid.PcdUart1IoPort > + gBoardModulePkgTokenSpaceGuid.PcdUart1Length > + gBoardModulePkgTokenSpaceGuid.PcdUart2Enable > + gBoardModulePkgTokenSpaceGuid.PcdUart2IrqMask > + gBoardModulePkgTokenSpaceGuid.PcdUart2IoPort > + gBoardModulePkgTokenSpaceGuid.PcdUart2Length > + gBoardModulePkgTokenSpaceGuid.PcdSuperIoPciIsaBridgeDevice > [Protocols] > gEfiPciIoProtocolGuid ## CONSUMES > gEfiDevicePathProtocolGuid ## PRODUCES > diff --git a/Platform/Intel/BoardModulePkg/LegacySioDxe/SioChip.c > b/Platform/Intel/BoardModulePkg/LegacySioDxe/SioChip.c > index 81efe3c38b..e63977be60 100644 > --- a/Platform/Intel/BoardModulePkg/LegacySioDxe/SioChip.c > +++ b/Platform/Intel/BoardModulePkg/LegacySioDxe/SioChip.c > @@ -19,12 +19,31 @@ > ACPI_SIO_RESOURCES_IO_IRQ mCom1Resources =3D { > { > { ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR }, > - 0x3f8, > - 8 > + FixedPcdGet16 (PcdUart1IoPort), > + FixedPcdGet8 (PcdUart1Length) > + }, > + { > + { ACPI_IRQ_NOFLAG_DESCRIPTOR }, > + FixedPcdGet16 (PcdUart1IrqMask) > + }, > + { > + ACPI_END_TAG_DESCRIPTOR, > + 0 > + } > +}; > + > +// > +// COM 2 UART Controller > +// > +ACPI_SIO_RESOURCES_IO_IRQ mCom2Resources =3D { > + { > + { ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR }, > + FixedPcdGet16 (PcdUart2IoPort), > + FixedPcdGet8 (PcdUart2Length) > }, > { > { ACPI_IRQ_NOFLAG_DESCRIPTOR }, > - BIT4 // IRQ4 > + FixedPcdGet16 (PcdUart2IrqMask), > }, > { > ACPI_END_TAG_DESCRIPTOR, > @@ -74,6 +93,7 @@ ACPI_SIO_RESOURCES_IO_IRQ mMouseResources =3D > { > // Table of SIO Controllers > // > DEVICE_INFO mDeviceInfo[] =3D { > +#if FixedPcdGet8 (PcdUart1Enable) =3D=3D DEVICE_ENABLED > { > { > EISA_PNP_ID(0x501), > @@ -84,6 +104,20 @@ DEVICE_INFO mDeviceInfo[] =3D { > { (ACPI_SMALL_RESOURCE_HEADER *) &mCom1Resources }, > { (ACPI_SMALL_RESOURCE_HEADER *) &mCom1Resources } > }, // COM 1 UART Controller > +#endif > +#if FixedPcdGet8 (PcdUart2Enable) =3D=3D DEVICE_ENABLED > + { > + { > + EISA_PNP_ID(0x501), > + 0 > + }, > + 0, > + RESOURCE_IO | RESOURCE_IRQ, > + { (ACPI_SMALL_RESOURCE_HEADER *) &mCom2Resources }, > + { (ACPI_SMALL_RESOURCE_HEADER *) &mCom2Resources } > + }, // COM 2 UART Controller > +#endif > +#if FixedPcdGet8 (PcdPs2KbMsEnable) =3D=3D DEVICE_ENABLED > { > { > EISA_PNP_ID(0x303), > @@ -103,10 +137,30 @@ DEVICE_INFO mDeviceInfo[] =3D { > 0, // Cannot change resource > { (ACPI_SMALL_RESOURCE_HEADER *) &mMouseResources }, > { (ACPI_SMALL_RESOURCE_HEADER *) &mMouseResources } > - } // PS/2 Mouse Controller > + }, // PS/2 Mouse Controller > +#endif > + DEVICE_INFO_END > }; >=20 >=20 > + > +/** > + Gets the number of devices in Table of SIO Controllers mDeviceInfo > + > + @retval Number of enabled devices in Table of SIO Controllers. > +**/ > +UINTN > +EFIAPI > +GetDeviceCount ( > + VOID > +){ > + UINTN Count; > + // Get mDeviceInfo item count > + // -1 to account for for the end device info > + Count =3D ARRAY_SIZE (mDeviceInfo) - 1; > + return Count; > +} > + > /** > Return the supported devices. >=20 > @@ -128,7 +182,7 @@ DeviceGetList ( > // > // Allocate enough memory for simplicity > // > - DeviceCount =3D sizeof (mDeviceInfo) / sizeof (mDeviceInfo[0]); > + DeviceCount =3D GetDeviceCount (); > LocalDevices =3D AllocatePool (sizeof (EFI_SIO_ACPI_DEVICE_ID) * > DeviceCount); > ASSERT (LocalDevices !=3D NULL); > if (LocalDevices =3D=3D NULL) { > @@ -175,8 +229,10 @@ DeviceSearch ( > ) > { > UINTN Index; > + UINTN DeviceCount; >=20 > - for (Index =3D 0; Index < sizeof (mDeviceInfo) / sizeof (mDeviceInfo[0= ]); > Index++) { > + DeviceCount =3D GetDeviceCount (); > + for (Index =3D 0; Index < DeviceCount; Index++) { > if (CompareMem (Device, &mDeviceInfo[Index].Device, sizeof (*Device)= ) > =3D=3D 0) { > return &mDeviceInfo[Index]; > } > diff --git a/Platform/Intel/BoardModulePkg/LegacySioDxe/SioChip.h > b/Platform/Intel/BoardModulePkg/LegacySioDxe/SioChip.h > index 9322365923..afff6fe7b5 100644 > --- a/Platform/Intel/BoardModulePkg/LegacySioDxe/SioChip.h > +++ b/Platform/Intel/BoardModulePkg/LegacySioDxe/SioChip.h > @@ -24,6 +24,8 @@ UINT8 > #define RESOURCE_DMA BIT2 > #define RESOURCE_MEM BIT3 >=20 > +#define DEVICE_ENABLED 0x01 > +#define DEVICE_INFO_END { { 0xFFFFFFFF, 0xFFFFFFFF } } > #pragma pack(1) >=20 > typedef struct { > @@ -45,6 +47,12 @@ typedef struct { > ACPI_RESOURCE_HEADER_PTR Resources; > ACPI_RESOURCE_HEADER_PTR PossibleResources; > } DEVICE_INFO; > +typedef struct { > + UINT8 Segment; > + UINT8 Bus; > + UINT8 Device; > + UINT8 Funtion; > +} SIO_PCI_ISA_BRIDGE_DEVICE_INFO; >=20 > /** > Return the supported devices. > diff --git a/Platform/Intel/BoardModulePkg/LegacySioDxe/SioDriver.c > b/Platform/Intel/BoardModulePkg/LegacySioDxe/SioDriver.c > index 408c6ff301..5bfdc94681 100644 > --- a/Platform/Intel/BoardModulePkg/LegacySioDxe/SioDriver.c > +++ b/Platform/Intel/BoardModulePkg/LegacySioDxe/SioDriver.c > @@ -106,6 +106,27 @@ SioDriverEntryPoint ( } >=20 >=20 > +/** > + Compares a PCI to ISA bridge device segment, bus, device and function > +to the > + PcdSuperIoPciIsaBridgeDevice values. > + > + @param[in] CurrentDevice The device to be compared with the > PcdSuperIoPciIsaBridgeDevice information > + @retval TRUE This device matches PcdSuperIoPciIsaBr= idgeDevice > values > + @retval FALSE This device does not match the > PcdSuperIoPciIsaBridgeDevice values > +**/ > +BOOLEAN > +EFIAPI > +SioDeviceEnabled ( > + IN SIO_PCI_ISA_BRIDGE_DEVICE_INFO *CurrentDevice ){ > + SIO_PCI_ISA_BRIDGE_DEVICE_INFO *Device =3D \ > + (SIO_PCI_ISA_BRIDGE_DEVICE_INFO *) FixedPcdGetPtr > (PcdSuperIoPciIsaBridgeDevice); > + if(CompareMem (Device, CurrentDevice, sizeof > (SIO_PCI_ISA_BRIDGE_DEVICE_INFO)) =3D=3D 0) { > + return TRUE; > + } > + return FALSE; > +} > + > /** > Test to see if this driver supports Controller Handle. >=20 > @@ -138,6 +159,7 @@ SioDriverSupported ( > UINTN BusNumber; > UINTN DeviceNumber; > UINTN FunctionNumber; > + SIO_PCI_ISA_BRIDGE_DEVICE_INFO SioDevice; >=20 > // > // If RemainingDevicePath is not NULL, it should verify that the first= device > @@ -250,6 +272,24 @@ SioDriverSupported ( > Status =3D EFI_UNSUPPORTED; > } > } > + if(!EFI_ERROR (Status)) { > + Status =3D PciIo->GetLocation ( > + PciIo, > + &SegmentNumber, > + &BusNumber, > + &DeviceNumber, > + &FunctionNumber > + ); > + if(!EFI_ERROR (Status)) { > + SioDevice.Segment =3D (UINT8) SegmentNumber; > + SioDevice.Bus =3D (UINT8) BusNumber; > + SioDevice.Device =3D (UINT8) DeviceNumber; > + SioDevice.Funtion =3D (UINT8) FunctionNumber; > + if(!SioDeviceEnabled (&SioDevice)) { > + Status =3D EFI_UNSUPPORTED; > + } > + } > + } > } > } >=20 > -- > 2.19.1.windows.1