public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
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


  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