From: "Ni, Ruiyu" <ruiyu.ni@intel.com>
To: Ard Biesheuvel <ard.biesheuvel@linaro.org>,
"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
"leif.lindholm@linaro.org" <leif.lindholm@linaro.org>,
"Kinney, Michael D" <michael.d.kinney@intel.com>,
"afish@apple.com" <afish@apple.com>
Cc: "Tian, Feng" <feng.tian@intel.com>, "Zeng, Star" <star.zeng@intel.com>
Subject: Re: [PATCH v2 1/5] MdeModulePkg: introduce non-discoverable device protocol
Date: Tue, 15 Nov 2016 08:31:34 +0000 [thread overview]
Message-ID: <734D49CCEBEEF84792F5B80ED585239D58E78565@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <1478173302-22349-1-git-send-email-ard.biesheuvel@linaro.org>
Ard,
For the below protocol structure, it assumes that the non-discoverable
PCI device contains only one BAR and the type is limited to USB/AHCI/SD/UFS/NVME
devices.
Could we have more types of such kind of device in future?
Could we have a device that contains multiple BAR?
Could we have a device that contains one BAR but the BAR size is non-default size?
I am asking all about this is because I am thinking would it be more flexible to have
platform provide a ACPI resource descriptors and the NonDiscoverableDxe driver
converts the ACPI resource descriptors to PCI BARs?
You could refer to PciIo.GetBarAttributes() to see how one ACPI resource descriptor
is created for one BAR.
But please ignore my such concern if there is a spec to describe such non-discoverable
PCI device.
Thanks/Ray
> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of
> Ard Biesheuvel
> Sent: Thursday, November 3, 2016 7:42 PM
> To: edk2-devel@lists.01.org; leif.lindholm@linaro.org; Kinney, Michael D
> <michael.d.kinney@intel.com>; afish@apple.com
> Cc: Tian, Feng <feng.tian@intel.com>; Zeng, Star <star.zeng@intel.com>; Ard
> Biesheuvel <ard.biesheuvel@linaro.org>
> Subject: [edk2] [PATCH v2 1/5] MdeModulePkg: introduce non-discoverable
> device protocol
>
> Introduce a protocol that can be exposed by a platform for devices that are
> not discoverable, usually because they are wired straight to the memory bus
> rather than to an enumerable bus like PCI or USB.
>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> ---
> MdeModulePkg/Include/Protocol/NonDiscoverableDevice.h | 88
> ++++++++++++++++++++
> MdeModulePkg/MdeModulePkg.dec | 3 +
> 2 files changed, 91 insertions(+)
>
> diff --git a/MdeModulePkg/Include/Protocol/NonDiscoverableDevice.h
> b/MdeModulePkg/Include/Protocol/NonDiscoverableDevice.h
> new file mode 100644
> index 000000000000..34388c0f99e3
> --- /dev/null
> +++ b/MdeModulePkg/Include/Protocol/NonDiscoverableDevice.h
> @@ -0,0 +1,88 @@
> +/** @file
> + Protocol to describe devices that are not on a discoverable bus
> +
> + Copyright (c) 2016, Linaro, Ltd. All rights reserved.<BR>
> +
> + 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 __NON_DISCOVERABLE_DEVICE_H__
> +#define __NON_DISCOVERABLE_DEVICE_H__
> +
> +#define NON_DISCOVERABLE_DEVICE_PROTOCOL_GUID \
> + { 0x0d51905b, 0xb77e, 0x452a, {0xa2, 0xc0, 0xec, 0xa0, 0xcc, 0x8d,
> +0x51, 0x4a } }
> +
> +//
> +// Protocol interface structure
> +//
> +typedef struct _NON_DISCOVERABLE_DEVICE
> NON_DISCOVERABLE_DEVICE;
> +
> +//
> +// Data Types
> +//
> +typedef enum {
> + NonDiscoverableDeviceTypeAmba,
> + NonDiscoverableDeviceTypeOhci,
> + NonDiscoverableDeviceTypeUhci,
> + NonDiscoverableDeviceTypeEhci,
> + NonDiscoverableDeviceTypeXhci,
> + NonDiscoverableDeviceTypeAhci,
> + NonDiscoverableDeviceTypeSdhci,
> + NonDiscoverableDeviceTypeUfs,
> + NonDiscoverableDeviceTypeNvme,
> + NonDiscoverableDeviceTypeMax,
> +} NON_DISCOVERABLE_DEVICE_TYPE;
> +
> +typedef enum {
> + NonDiscoverableDeviceDmaTypeCoherent,
> + NonDiscoverableDeviceDmaTypeNonCoherent,
> + NonDiscoverableDeviceDmaTypeMax,
> +} NON_DISCOVERABLE_DEVICE_DMA_TYPE;
> +
> +//
> +// Function Prototypes
> +//
> +
> +/**
> + Perform device specific initialization before the device is started
> +
> + @param This The non-discoverable device protocol pointer
> +
> + @retval EFI_SUCCESS Initialization successful, the device may be used
> + @retval Other Initialization failed, device should not be started
> +**/
> +typedef
> +EFI_STATUS
> +(EFIAPI *NON_DISCOVERABLE_DEVICE_INIT) (
> + IN NON_DISCOVERABLE_DEVICE *This
> + );
> +
> +struct _NON_DISCOVERABLE_DEVICE {
> + //
> + // The MMIO address of the device
> + //
> + EFI_PHYSICAL_ADDRESS BaseAddress;
> + //
> + // The type of device
> + //
> + NON_DISCOVERABLE_DEVICE_TYPE Type;
> + //
> + // Whether this device is DMA coherent
> + //
> + NON_DISCOVERABLE_DEVICE_DMA_TYPE DmaType;
> + //
> + // Initialization function for the device
> + //
> + NON_DISCOVERABLE_DEVICE_INIT Initialize;
> +};
> +
> +extern EFI_GUID gNonDiscoverableDeviceProtocolGuid;
> +
> +#endif
> diff --git a/MdeModulePkg/MdeModulePkg.dec
> b/MdeModulePkg/MdeModulePkg.dec index 74b870051c67..84b489d3fdb7
> 100644
> --- a/MdeModulePkg/MdeModulePkg.dec
> +++ b/MdeModulePkg/MdeModulePkg.dec
> @@ -505,6 +505,9 @@ [Protocols]
> # Include/Protocol/Ps2Policy.h
> gEfiPs2PolicyProtocolGuid = { 0x4DF19259, 0xDC71, 0x4D46, { 0xBE, 0xF1,
> 0x35, 0x7B, 0xB5, 0x78, 0xC4, 0x18 } }
>
> + ## Include/Protocol/NonDiscoverableDevice.h
> + gNonDiscoverableDeviceProtocolGuid = { 0x0d51905b, 0xb77e, 0x452a,
> + {0xa2, 0xc0, 0xec, 0xa0, 0xcc, 0x8d, 0x51, 0x4a } }
> +
> #
> # [Error.gEfiMdeModulePkgTokenSpaceGuid]
> # 0x80000001 | Invalid value provided.
> --
> 2.7.4
>
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
next prev parent reply other threads:[~2016-11-15 8:31 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-03 11:41 [PATCH v2 1/5] MdeModulePkg: introduce non-discoverable device protocol Ard Biesheuvel
2016-11-03 11:41 ` [PATCH v2 2/5] MdeModule: introduce helper library to register non-discoverable devices Ard Biesheuvel
2016-11-03 11:41 ` [PATCH v2 3/5] MdeModulePkg: implement generic PCI I/O driver for " Ard Biesheuvel
2016-11-15 8:40 ` Ni, Ruiyu
2016-11-15 11:30 ` Ard Biesheuvel
2016-11-16 11:43 ` Ard Biesheuvel
2016-11-16 11:47 ` Ni, Ruiyu
2016-11-03 11:41 ` [PATCH v2 4/5] MdeModulePkg/NonDiscoverablePciDeviceDxe: add support for non-coherent DMA Ard Biesheuvel
2016-11-03 11:41 ` [PATCH v2 5/5] Omap35xxPkg/PciEmulation: port to new non-discoverable device infrastructure Ard Biesheuvel
2016-11-15 8:31 ` Ni, Ruiyu [this message]
2016-11-15 11:29 ` [PATCH v2 1/5] MdeModulePkg: introduce non-discoverable device protocol Ard Biesheuvel
2016-11-15 8:38 ` Ni, Ruiyu
2016-11-15 11:29 ` Ard Biesheuvel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=734D49CCEBEEF84792F5B80ED585239D58E78565@SHSMSX104.ccr.corp.intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox