* Re: [PATCH edk2-platforms 1/2] Silicon/NXP: Add SATA controller initialization driver
2020-06-05 16:02 ` [PATCH edk2-platforms 1/2] Silicon/NXP: Add SATA controller initialization driver Meenakshi Aggarwal
@ 2020-06-05 13:00 ` Ard Biesheuvel
2020-06-08 11:44 ` Meenakshi Aggarwal
0 siblings, 1 reply; 12+ messages in thread
From: Ard Biesheuvel @ 2020-06-05 13:00 UTC (permalink / raw)
To: Meenakshi Aggarwal, leif, michael.d.kinney, devel
Cc: v.sethi, Meenakshi Aggarwal
On 6/5/20 6:02 PM, Meenakshi Aggarwal wrote:
> Add support of SATA controller driver which performs
> controller initialization and register itself as NonDiscoverableMmioDevice
>
> Signed-off-by: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
> ---
> Silicon/NXP/NxpQoriqLs.dec | 6 +
> Silicon/NXP/NxpQoriqLs.dsc.inc | 10 ++
> Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf | 46 ++++++++
> Silicon/NXP/Drivers/SataInitDxe/SataInit.h | 27 +++++
> Silicon/NXP/Drivers/SataInitDxe/SataInit.c | 116 ++++++++++++++++++++
> 5 files changed, 205 insertions(+)
>
> diff --git a/Silicon/NXP/NxpQoriqLs.dec b/Silicon/NXP/NxpQoriqLs.dec
> index 72c1744fc934..e83f282ace4e 100644
> --- a/Silicon/NXP/NxpQoriqLs.dec
> +++ b/Silicon/NXP/NxpQoriqLs.dec
> @@ -28,6 +28,7 @@ [PcdsFeatureFlag]
> gNxpQoriqLsTokenSpaceGuid.PcdI2cErratumA009203|FALSE|BOOLEAN|0x00000315
> gNxpQoriqLsTokenSpaceGuid.PcdDcfgBigEndian|FALSE|BOOLEAN|0x00000316
> gNxpQoriqLsTokenSpaceGuid.PcdPciLutBigEndian|FALSE|BOOLEAN|0x00000317
> + gNxpQoriqLsTokenSpaceGuid.PcdSataErratumA009185|FALSE|BOOLEAN|0x00000318
>
> [PcdsFixedAtBuild.common]
> # Pcds for PCI Express
> @@ -41,6 +42,11 @@ [PcdsFixedAtBuild.common]
> gNxpQoriqLsTokenSpaceGuid.PcdUsbSize|0x0|UINT32|0x00000511
> gNxpQoriqLsTokenSpaceGuid.PcdNumUsbController|0|UINT32|0x00000512
>
> + # Pcds for SATA
> + gNxpQoriqLsTokenSpaceGuid.PcdSataBaseAddr|0x0|UINT64|0x00000350
> + gNxpQoriqLsTokenSpaceGuid.PcdSataSize|0x0|UINT32|0x00000351
> + gNxpQoriqLsTokenSpaceGuid.PcdNumSataController|0x0|UINT32|0x00000352
> +
> [PcdsDynamic.common]
> gNxpQoriqLsTokenSpaceGuid.PcdPciCfgShiftEnable|FALSE|BOOLEAN|0x00000600
> gNxpQoriqLsTokenSpaceGuid.PcdPciLsGen4Ctrl|FALSE|BOOLEAN|0x00000601
> diff --git a/Silicon/NXP/NxpQoriqLs.dsc.inc b/Silicon/NXP/NxpQoriqLs.dsc.inc
> index 1f0f272da6c7..399ac5de9176 100644
> --- a/Silicon/NXP/NxpQoriqLs.dsc.inc
> +++ b/Silicon/NXP/NxpQoriqLs.dsc.inc
> @@ -101,6 +101,7 @@ [LibraryClasses.common]
>
> PlatformPeiLib|ArmPlatformPkg/PlatformPei/PlatformPeiLib.inf
> MemoryInitPeiLib|Silicon/NXP/Library/MemoryInitPeiLib/MemoryInitPeiLib.inf
> + UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf
>
> [LibraryClasses.common.SEC]
> PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
> @@ -378,6 +379,15 @@ [Components.common]
> MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.inf
>
> #
> + # AHCI Support
> + #
> + MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
> + MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
> + MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
> + MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
> + MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf
> +
> + #
> # Bds
> #
> MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
> diff --git a/Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf b/Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf
> new file mode 100644
> index 000000000000..06b6c2ac6ff9
> --- /dev/null
> +++ b/Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf
> @@ -0,0 +1,46 @@
> +## @file
> +# Component description file for the Sata Controller initialization driver
> +#
> +# Copyright 2017 NXP
> +#
> +# SPDX-License-Identifier: BSD-2-Clause-Patent
> +#
> +##
> +
> +[Defines]
> + INF_VERSION = 0x0001001A
> + BASE_NAME = SataInit
> + FILE_GUID = 021722D8-522B-4079-852A-FE44C2C13F49
Please don't reuse file GUIDs but generate your own.
> + MODULE_TYPE = DXE_DRIVER
> + VERSION_STRING = 1.0
> + ENTRY_POINT = InitializeSataController
> +
> +[Sources]
> + SataInit.c
> + SataInit.h
> +
> +[Packages]
> + MdePkg/MdePkg.dec
> + MdeModulePkg/MdeModulePkg.dec
> + Silicon/NXP/NxpQoriqLs.dec
> +
> +[LibraryClasses]
> + DebugLib
> + NonDiscoverableDeviceRegistrationLib
> + UefiBootServicesTableLib
> + UefiDriverEntryPoint
> + UefiLib
> +
> +[FixedPcd]
> + gNxpQoriqLsTokenSpaceGuid.PcdNumSataController
> + gNxpQoriqLsTokenSpaceGuid.PcdSataBaseAddr
> + gNxpQoriqLsTokenSpaceGuid.PcdSataSize
> +
> +[FeaturePcd]
> + gNxpQoriqLsTokenSpaceGuid.PcdSataErratumA009185
> +
> +[Guids]
> + gEfiEndOfDxeEventGroupGuid
> +
> +[Depex]
> + TRUE
> diff --git a/Silicon/NXP/Drivers/SataInitDxe/SataInit.h b/Silicon/NXP/Drivers/SataInitDxe/SataInit.h
> new file mode 100644
> index 000000000000..edaf0bdda72c
> --- /dev/null
> +++ b/Silicon/NXP/Drivers/SataInitDxe/SataInit.h
> @@ -0,0 +1,27 @@
> +/** @file
> + Header file for Sata Controller initialization driver.
> +
> + Copyright 2017-2018, 2020 NXP
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> + **/
> +
> +#ifndef SATA_INIT_H_
> +#define SATA_INIT_H_
> +
> +//
> +// Offset for AHCI base address in PCI Header
> +//
> +#define PCI_AHCI_BASE_ADDRESS 0x24
Where is this used?
> +
> +#define SATA_PPCFG 0xA8
> +#define SATA_PTC 0xC8
> +#define SATA_PAXIC 0xC0
> +
> +#define PORT_PHYSICAL 0xA003FFFE
> +#define PORT_TRANSPORT 0x08000025
> +#define PORT_RXWM 0x08000029
> +#define ENABLE_NONZERO_4MB_PRD 0x10000000
> +
Do these really need a separate local header?
> +#endif
> diff --git a/Silicon/NXP/Drivers/SataInitDxe/SataInit.c b/Silicon/NXP/Drivers/SataInitDxe/SataInit.c
> new file mode 100644
> index 000000000000..c678b63652e7
> --- /dev/null
> +++ b/Silicon/NXP/Drivers/SataInitDxe/SataInit.c
> @@ -0,0 +1,116 @@
> +/** @file
> + This driver module adds SATA controller support.
> +
> + Copyright 2017-2018, 2020 NXP
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> + **/
> +
No need to #include <PiDxe.h> here?
> +#include <Library/DebugLib.h>
> +#include <Library/IoLib.h>
> +#include <Library/NonDiscoverableDeviceRegistrationLib.h>
> +#include <Library/UefiBootServicesTableLib.h>
> +
> +#include "SataInit.h"
> +
> +/**
> + This function gets registered as a callback to perform USB controller intialization
> +
> + @param Event Event whose notification function is being invoked.
> + @param Context Pointer to the notification function's context.
> +
> +**/
STATIC
> +VOID
> +EFIAPI
> +SataEndOfDxeCallback (
> + IN EFI_EVENT Event,
> + IN VOID *Context
> + )
> +{
> + EFI_STATUS Status;
> + UINT32 NumSataController;
> + UINT32 Index;
> + UINT32 Data;
> + UINTN ControllerAddr;
> +
> + NumSataController = PcdGet32 (PcdNumSataController);
> +
> + for (Index = 0; Index < NumSataController; Index++) {
> + ControllerAddr = PcdGet64 (PcdSataBaseAddr) +
> + (Index * PcdGet32 (PcdSataSize));
> +
> + //
> + // configuring Physical Control Layer parameters for Port 0
> + //
> + MmioWrite32 ((UINTN)(ControllerAddr + SATA_PPCFG), PORT_PHYSICAL);
> +
> + //
> + // This register controls the configuration of the
> + // Transport Layer for Port 0
> + // Errata Description : The default Rx watermark value may be insufficient
> + // for some hard drives and result in a false CRC or internal errors.
> + // Workaround: Change PTC[RXWM] field at offset 0xC8 to 0x29. Do not change
> + // the other reserved fields of the register.
> + //
> +
> + Data = MmioRead32 ((UINTN)(ControllerAddr + SATA_PTC));
> + if (PcdGetBool (PcdSataErratumA009185)) {
> + Data |= PORT_RXWM;
> + } else {
> + Data |= PORT_TRANSPORT;
> + }
> + MmioWrite32 ((UINTN)(ControllerAddr + SATA_PTC), Data);
> +
> + //
> + // Enable Non-Zero 4 MB PRD entries.
> + //
> + MmioOr32 ((UINTN)(ControllerAddr + SATA_PAXIC), ENABLE_NONZERO_4MB_PRD);
> +
> + Status = RegisterNonDiscoverableMmioDevice (
> + NonDiscoverableDeviceTypeAhci,
> + NonDiscoverableDeviceDmaTypeNonCoherent,
> + NULL,
> + NULL,
> + 1,
> + ControllerAddr, PcdGet32 (PcdSataSize)
> + );
> +
> + if (EFI_ERROR (Status)) {
> + DEBUG ((DEBUG_ERROR, "Failed to register SATA device 0x%x, error 0x%r \n",
> + ControllerAddr, Status));
> + }
> + }
> +}
> +
> +/**
> + The Entry Point of module. It follows the standard UEFI driver model.
> +
> + @param[in] ImageHandle The firmware allocated handle for the EFI image.
> + @param[in] SystemTable A pointer to the EFI System Table.
> +
> + @retval EFI_SUCCESS The entry point is executed successfully.
> + @retval Other Some error occurs when executing this entry point
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +InitializeSataController (
> + IN EFI_HANDLE ImageHandle,
> + IN EFI_SYSTEM_TABLE *SystemTable
> + )
> +{
> + EFI_STATUS Status;
> + EFI_EVENT EndOfDxeEvent;
> +
> + Status = gBS->CreateEventEx (
> + EVT_NOTIFY_SIGNAL,
> + TPL_CALLBACK,
> + SataEndOfDxeCallback,
> + NULL,
> + &gEfiEndOfDxeEventGroupGuid,
> + &EndOfDxeEvent
> + );
> +
> + return Status;
> +}
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH edk2-platforms 2/2] Platform/NXP:LX2160: Enable support of SATA controller
2020-06-05 16:02 ` [PATCH edk2-platforms 2/2] Platform/NXP:LX2160: Enable support of SATA controller Meenakshi Aggarwal
@ 2020-06-05 13:01 ` Ard Biesheuvel
2020-06-05 13:09 ` Leif Lindholm
0 siblings, 1 reply; 12+ messages in thread
From: Ard Biesheuvel @ 2020-06-05 13:01 UTC (permalink / raw)
To: Meenakshi Aggarwal, leif, michael.d.kinney, devel
Cc: v.sethi, Meenakshi Aggarwal
On 6/5/20 6:02 PM, Meenakshi Aggarwal wrote:
> Enable support of SATA drives on lx2160 RDB board.
>
> Signed-off-by: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
> ---
> Silicon/NXP/LX2160A/LX2160A.dsc.inc | 5 +++++
> Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.dsc | 2 ++
> Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.fdf | 18 +++++++++++++++---
> 3 files changed, 22 insertions(+), 3 deletions(-)
>
> diff --git a/Silicon/NXP/LX2160A/LX2160A.dsc.inc b/Silicon/NXP/LX2160A/LX2160A.dsc.inc
> index 55dd3b5442eb..6bd08d527aed 100644
> --- a/Silicon/NXP/LX2160A/LX2160A.dsc.inc
> +++ b/Silicon/NXP/LX2160A/LX2160A.dsc.inc
> @@ -40,8 +40,13 @@ [PcdsFixedAtBuild.common]
> gNxpQoriqLsTokenSpaceGuid.PcdUsbSize|0x10000
> gNxpQoriqLsTokenSpaceGuid.PcdNumUsbController|2
>
> + gNxpQoriqLsTokenSpaceGuid.PcdSataBaseAddr|0x3200000
> + gNxpQoriqLsTokenSpaceGuid.PcdSataSize|0x10000
> + gNxpQoriqLsTokenSpaceGuid.PcdNumSataController|0x4
> +
> [PcdsFeatureFlag]
> gNxpQoriqLsTokenSpaceGuid.PcdI2cErratumA009203|TRUE
> + gNxpQoriqLsTokenSpaceGuid.PcdSataErratumA009185|TRUE
>
> ################################################################################
> #
> diff --git a/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.dsc b/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.dsc
> index ec27a1a219a5..2c65577eceab 100644
> --- a/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.dsc
> +++ b/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.dsc
> @@ -44,4 +44,6 @@ [Components.common]
> }
>
> Silicon/NXP/Drivers/UsbHcdInitDxe/UsbHcd.inf
> +
> + Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf
> ##
> diff --git a/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.fdf b/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.fdf
> index 5cb809e8b3a0..e8ac7658c011 100644
> --- a/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.fdf
> +++ b/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.fdf
> @@ -23,10 +23,10 @@
>
> [FD.LX2160ARDB_EFI]
> BaseAddress = 0x82000000|gArmTokenSpaceGuid.PcdFdBaseAddress #The base address of the FLASH Device.
> -Size = 0x00160000|gArmTokenSpaceGuid.PcdFdSize #The size in bytes of the FLASH Device
> +Size = 0x00180000|gArmTokenSpaceGuid.PcdFdSize #The size in bytes of the FLASH Device
> ErasePolarity = 1
> BlockSize = 0x10000
> -NumBlocks = 0x16
> +NumBlocks = 0x18
>
> ################################################################################
> #
> @@ -43,7 +43,7 @@ [FD.LX2160ARDB_EFI]
> # RegionType <FV, DATA, or FILE>
> #
> ################################################################################
> -0x00000000|0x00160000
> +0x00000000|0x00180000
> gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize
> FV = FVMAIN_COMPACT
>
I don't mind these unrelated changes (but Leif might) but you should
make a note of them in the commit log.
> @@ -132,6 +132,18 @@ [FV.FvMain]
> INF MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
>
> INF Silicon/NXP/Drivers/UsbHcdInitDxe/UsbHcd.inf
> +
> + #
> + # AHCI Support
> + #
> + INF MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
> + INF MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
> + INF MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
> + INF MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
> + INF MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf
> +
> + INF Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf
> +
> #
> # UEFI application (Shell Embedded Boot Loader)
> #
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH edk2-platforms 2/2] Platform/NXP:LX2160: Enable support of SATA controller
2020-06-05 13:01 ` Ard Biesheuvel
@ 2020-06-05 13:09 ` Leif Lindholm
0 siblings, 0 replies; 12+ messages in thread
From: Leif Lindholm @ 2020-06-05 13:09 UTC (permalink / raw)
To: Ard Biesheuvel
Cc: Meenakshi Aggarwal, michael.d.kinney, devel, v.sethi,
Meenakshi Aggarwal
On Fri, Jun 05, 2020 at 15:01:36 +0200, Ard Biesheuvel wrote:
> On 6/5/20 6:02 PM, Meenakshi Aggarwal wrote:
> > Enable support of SATA drives on lx2160 RDB board.
> >
> > Signed-off-by: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
> > ---
> > Silicon/NXP/LX2160A/LX2160A.dsc.inc | 5 +++++
> > Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.dsc | 2 ++
> > Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.fdf | 18 +++++++++++++++---
> > 3 files changed, 22 insertions(+), 3 deletions(-)
> >
> > diff --git a/Silicon/NXP/LX2160A/LX2160A.dsc.inc b/Silicon/NXP/LX2160A/LX2160A.dsc.inc
> > index 55dd3b5442eb..6bd08d527aed 100644
> > --- a/Silicon/NXP/LX2160A/LX2160A.dsc.inc
> > +++ b/Silicon/NXP/LX2160A/LX2160A.dsc.inc
> > @@ -40,8 +40,13 @@ [PcdsFixedAtBuild.common]
> > gNxpQoriqLsTokenSpaceGuid.PcdUsbSize|0x10000
> > gNxpQoriqLsTokenSpaceGuid.PcdNumUsbController|2
> > + gNxpQoriqLsTokenSpaceGuid.PcdSataBaseAddr|0x3200000
> > + gNxpQoriqLsTokenSpaceGuid.PcdSataSize|0x10000
> > + gNxpQoriqLsTokenSpaceGuid.PcdNumSataController|0x4
> > +
> > [PcdsFeatureFlag]
> > gNxpQoriqLsTokenSpaceGuid.PcdI2cErratumA009203|TRUE
> > + gNxpQoriqLsTokenSpaceGuid.PcdSataErratumA009185|TRUE
> > ################################################################################
> > #
> > diff --git a/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.dsc b/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.dsc
> > index ec27a1a219a5..2c65577eceab 100644
> > --- a/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.dsc
> > +++ b/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.dsc
> > @@ -44,4 +44,6 @@ [Components.common]
> > }
> > Silicon/NXP/Drivers/UsbHcdInitDxe/UsbHcd.inf
> > +
> > + Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf
> > ##
> > diff --git a/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.fdf b/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.fdf
> > index 5cb809e8b3a0..e8ac7658c011 100644
> > --- a/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.fdf
> > +++ b/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.fdf
> > @@ -23,10 +23,10 @@
> > [FD.LX2160ARDB_EFI]
> > BaseAddress = 0x82000000|gArmTokenSpaceGuid.PcdFdBaseAddress #The base address of the FLASH Device.
> > -Size = 0x00160000|gArmTokenSpaceGuid.PcdFdSize #The size in bytes of the FLASH Device
> > +Size = 0x00180000|gArmTokenSpaceGuid.PcdFdSize #The size in bytes of the FLASH Device
> > ErasePolarity = 1
> > BlockSize = 0x10000
> > -NumBlocks = 0x16
> > +NumBlocks = 0x18
> > ################################################################################
> > #
> > @@ -43,7 +43,7 @@ [FD.LX2160ARDB_EFI]
> > # RegionType <FV, DATA, or FILE>
> > #
> > ################################################################################
> > -0x00000000|0x00160000
> > +0x00000000|0x00180000
> > gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize
> > FV = FVMAIN_COMPACT
>
> I don't mind these unrelated changes (but Leif might) but you should make a
> note of them in the commit log.
If the change is to accommodate the added drivers, they're not
unrelated. But yes, they should still be explicitly called out in
commit message.
/
Leif
> > @@ -132,6 +132,18 @@ [FV.FvMain]
> > INF MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
> > INF Silicon/NXP/Drivers/UsbHcdInitDxe/UsbHcd.inf
> > +
> > + #
> > + # AHCI Support
> > + #
> > + INF MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
> > + INF MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
> > + INF MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
> > + INF MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
> > + INF MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf
> > +
> > + INF Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf
> > +
> > #
> > # UEFI application (Shell Embedded Boot Loader)
> > #
> >
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH edk2-platforms 0/2] Add SATA driver support
@ 2020-06-05 16:02 Meenakshi Aggarwal
2020-06-05 16:02 ` [PATCH edk2-platforms 1/2] Silicon/NXP: Add SATA controller initialization driver Meenakshi Aggarwal
` (2 more replies)
0 siblings, 3 replies; 12+ messages in thread
From: Meenakshi Aggarwal @ 2020-06-05 16:02 UTC (permalink / raw)
To: ard.biesheuvel, leif, michael.d.kinney, devel; +Cc: v.sethi, Meenakshi Aggarwal
This patchset implement SATA driver for NXP Platforms enable
SATA for LX2160A Platform.
Meenakshi Aggarwal (2):
Silicon/NXP: Add SATA controller initialization driver
Platform/NXP:LX2160: Enable support of SATA controller
Silicon/NXP/NxpQoriqLs.dec | 6 +
Silicon/NXP/LX2160A/LX2160A.dsc.inc | 5 +
Silicon/NXP/NxpQoriqLs.dsc.inc | 10 ++
Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.dsc | 2 +
Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.fdf | 18 ++-
Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf | 46 ++++++++
Silicon/NXP/Drivers/SataInitDxe/SataInit.h | 27 +++++
Silicon/NXP/Drivers/SataInitDxe/SataInit.c | 116 ++++++++++++++++++++
8 files changed, 227 insertions(+), 3 deletions(-)
create mode 100644 Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf
create mode 100644 Silicon/NXP/Drivers/SataInitDxe/SataInit.h
create mode 100644 Silicon/NXP/Drivers/SataInitDxe/SataInit.c
--
1.9.1
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH edk2-platforms 1/2] Silicon/NXP: Add SATA controller initialization driver
2020-06-05 16:02 [PATCH edk2-platforms 0/2] Add SATA driver support Meenakshi Aggarwal
@ 2020-06-05 16:02 ` Meenakshi Aggarwal
2020-06-05 13:00 ` Ard Biesheuvel
2020-06-05 16:02 ` [PATCH edk2-platforms 2/2] Platform/NXP:LX2160: Enable support of SATA controller Meenakshi Aggarwal
2020-06-09 14:31 ` [PATCH edk2-platforms V2 0/2] Add SATA driver support Meenakshi Aggarwal
2 siblings, 1 reply; 12+ messages in thread
From: Meenakshi Aggarwal @ 2020-06-05 16:02 UTC (permalink / raw)
To: ard.biesheuvel, leif, michael.d.kinney, devel
Cc: v.sethi, Meenakshi Aggarwal, Meenakshi Aggarwal
Add support of SATA controller driver which performs
controller initialization and register itself as NonDiscoverableMmioDevice
Signed-off-by: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
---
Silicon/NXP/NxpQoriqLs.dec | 6 +
Silicon/NXP/NxpQoriqLs.dsc.inc | 10 ++
Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf | 46 ++++++++
Silicon/NXP/Drivers/SataInitDxe/SataInit.h | 27 +++++
Silicon/NXP/Drivers/SataInitDxe/SataInit.c | 116 ++++++++++++++++++++
5 files changed, 205 insertions(+)
diff --git a/Silicon/NXP/NxpQoriqLs.dec b/Silicon/NXP/NxpQoriqLs.dec
index 72c1744fc934..e83f282ace4e 100644
--- a/Silicon/NXP/NxpQoriqLs.dec
+++ b/Silicon/NXP/NxpQoriqLs.dec
@@ -28,6 +28,7 @@ [PcdsFeatureFlag]
gNxpQoriqLsTokenSpaceGuid.PcdI2cErratumA009203|FALSE|BOOLEAN|0x00000315
gNxpQoriqLsTokenSpaceGuid.PcdDcfgBigEndian|FALSE|BOOLEAN|0x00000316
gNxpQoriqLsTokenSpaceGuid.PcdPciLutBigEndian|FALSE|BOOLEAN|0x00000317
+ gNxpQoriqLsTokenSpaceGuid.PcdSataErratumA009185|FALSE|BOOLEAN|0x00000318
[PcdsFixedAtBuild.common]
# Pcds for PCI Express
@@ -41,6 +42,11 @@ [PcdsFixedAtBuild.common]
gNxpQoriqLsTokenSpaceGuid.PcdUsbSize|0x0|UINT32|0x00000511
gNxpQoriqLsTokenSpaceGuid.PcdNumUsbController|0|UINT32|0x00000512
+ # Pcds for SATA
+ gNxpQoriqLsTokenSpaceGuid.PcdSataBaseAddr|0x0|UINT64|0x00000350
+ gNxpQoriqLsTokenSpaceGuid.PcdSataSize|0x0|UINT32|0x00000351
+ gNxpQoriqLsTokenSpaceGuid.PcdNumSataController|0x0|UINT32|0x00000352
+
[PcdsDynamic.common]
gNxpQoriqLsTokenSpaceGuid.PcdPciCfgShiftEnable|FALSE|BOOLEAN|0x00000600
gNxpQoriqLsTokenSpaceGuid.PcdPciLsGen4Ctrl|FALSE|BOOLEAN|0x00000601
diff --git a/Silicon/NXP/NxpQoriqLs.dsc.inc b/Silicon/NXP/NxpQoriqLs.dsc.inc
index 1f0f272da6c7..399ac5de9176 100644
--- a/Silicon/NXP/NxpQoriqLs.dsc.inc
+++ b/Silicon/NXP/NxpQoriqLs.dsc.inc
@@ -101,6 +101,7 @@ [LibraryClasses.common]
PlatformPeiLib|ArmPlatformPkg/PlatformPei/PlatformPeiLib.inf
MemoryInitPeiLib|Silicon/NXP/Library/MemoryInitPeiLib/MemoryInitPeiLib.inf
+ UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf
[LibraryClasses.common.SEC]
PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
@@ -378,6 +379,15 @@ [Components.common]
MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.inf
#
+ # AHCI Support
+ #
+ MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
+ MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
+ MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
+ MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
+ MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf
+
+ #
# Bds
#
MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
diff --git a/Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf b/Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf
new file mode 100644
index 000000000000..06b6c2ac6ff9
--- /dev/null
+++ b/Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf
@@ -0,0 +1,46 @@
+## @file
+# Component description file for the Sata Controller initialization driver
+#
+# Copyright 2017 NXP
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+[Defines]
+ INF_VERSION = 0x0001001A
+ BASE_NAME = SataInit
+ FILE_GUID = 021722D8-522B-4079-852A-FE44C2C13F49
+ MODULE_TYPE = DXE_DRIVER
+ VERSION_STRING = 1.0
+ ENTRY_POINT = InitializeSataController
+
+[Sources]
+ SataInit.c
+ SataInit.h
+
+[Packages]
+ MdePkg/MdePkg.dec
+ MdeModulePkg/MdeModulePkg.dec
+ Silicon/NXP/NxpQoriqLs.dec
+
+[LibraryClasses]
+ DebugLib
+ NonDiscoverableDeviceRegistrationLib
+ UefiBootServicesTableLib
+ UefiDriverEntryPoint
+ UefiLib
+
+[FixedPcd]
+ gNxpQoriqLsTokenSpaceGuid.PcdNumSataController
+ gNxpQoriqLsTokenSpaceGuid.PcdSataBaseAddr
+ gNxpQoriqLsTokenSpaceGuid.PcdSataSize
+
+[FeaturePcd]
+ gNxpQoriqLsTokenSpaceGuid.PcdSataErratumA009185
+
+[Guids]
+ gEfiEndOfDxeEventGroupGuid
+
+[Depex]
+ TRUE
diff --git a/Silicon/NXP/Drivers/SataInitDxe/SataInit.h b/Silicon/NXP/Drivers/SataInitDxe/SataInit.h
new file mode 100644
index 000000000000..edaf0bdda72c
--- /dev/null
+++ b/Silicon/NXP/Drivers/SataInitDxe/SataInit.h
@@ -0,0 +1,27 @@
+/** @file
+ Header file for Sata Controller initialization driver.
+
+ Copyright 2017-2018, 2020 NXP
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+ **/
+
+#ifndef SATA_INIT_H_
+#define SATA_INIT_H_
+
+//
+// Offset for AHCI base address in PCI Header
+//
+#define PCI_AHCI_BASE_ADDRESS 0x24
+
+#define SATA_PPCFG 0xA8
+#define SATA_PTC 0xC8
+#define SATA_PAXIC 0xC0
+
+#define PORT_PHYSICAL 0xA003FFFE
+#define PORT_TRANSPORT 0x08000025
+#define PORT_RXWM 0x08000029
+#define ENABLE_NONZERO_4MB_PRD 0x10000000
+
+#endif
diff --git a/Silicon/NXP/Drivers/SataInitDxe/SataInit.c b/Silicon/NXP/Drivers/SataInitDxe/SataInit.c
new file mode 100644
index 000000000000..c678b63652e7
--- /dev/null
+++ b/Silicon/NXP/Drivers/SataInitDxe/SataInit.c
@@ -0,0 +1,116 @@
+/** @file
+ This driver module adds SATA controller support.
+
+ Copyright 2017-2018, 2020 NXP
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+ **/
+
+#include <Library/DebugLib.h>
+#include <Library/IoLib.h>
+#include <Library/NonDiscoverableDeviceRegistrationLib.h>
+#include <Library/UefiBootServicesTableLib.h>
+
+#include "SataInit.h"
+
+/**
+ This function gets registered as a callback to perform USB controller intialization
+
+ @param Event Event whose notification function is being invoked.
+ @param Context Pointer to the notification function's context.
+
+**/
+VOID
+EFIAPI
+SataEndOfDxeCallback (
+ IN EFI_EVENT Event,
+ IN VOID *Context
+ )
+{
+ EFI_STATUS Status;
+ UINT32 NumSataController;
+ UINT32 Index;
+ UINT32 Data;
+ UINTN ControllerAddr;
+
+ NumSataController = PcdGet32 (PcdNumSataController);
+
+ for (Index = 0; Index < NumSataController; Index++) {
+ ControllerAddr = PcdGet64 (PcdSataBaseAddr) +
+ (Index * PcdGet32 (PcdSataSize));
+
+ //
+ // configuring Physical Control Layer parameters for Port 0
+ //
+ MmioWrite32 ((UINTN)(ControllerAddr + SATA_PPCFG), PORT_PHYSICAL);
+
+ //
+ // This register controls the configuration of the
+ // Transport Layer for Port 0
+ // Errata Description : The default Rx watermark value may be insufficient
+ // for some hard drives and result in a false CRC or internal errors.
+ // Workaround: Change PTC[RXWM] field at offset 0xC8 to 0x29. Do not change
+ // the other reserved fields of the register.
+ //
+
+ Data = MmioRead32 ((UINTN)(ControllerAddr + SATA_PTC));
+ if (PcdGetBool (PcdSataErratumA009185)) {
+ Data |= PORT_RXWM;
+ } else {
+ Data |= PORT_TRANSPORT;
+ }
+ MmioWrite32 ((UINTN)(ControllerAddr + SATA_PTC), Data);
+
+ //
+ // Enable Non-Zero 4 MB PRD entries.
+ //
+ MmioOr32 ((UINTN)(ControllerAddr + SATA_PAXIC), ENABLE_NONZERO_4MB_PRD);
+
+ Status = RegisterNonDiscoverableMmioDevice (
+ NonDiscoverableDeviceTypeAhci,
+ NonDiscoverableDeviceDmaTypeNonCoherent,
+ NULL,
+ NULL,
+ 1,
+ ControllerAddr, PcdGet32 (PcdSataSize)
+ );
+
+ if (EFI_ERROR (Status)) {
+ DEBUG ((DEBUG_ERROR, "Failed to register SATA device 0x%x, error 0x%r \n",
+ ControllerAddr, Status));
+ }
+ }
+}
+
+/**
+ The Entry Point of module. It follows the standard UEFI driver model.
+
+ @param[in] ImageHandle The firmware allocated handle for the EFI image.
+ @param[in] SystemTable A pointer to the EFI System Table.
+
+ @retval EFI_SUCCESS The entry point is executed successfully.
+ @retval Other Some error occurs when executing this entry point
+
+**/
+EFI_STATUS
+EFIAPI
+InitializeSataController (
+ IN EFI_HANDLE ImageHandle,
+ IN EFI_SYSTEM_TABLE *SystemTable
+ )
+{
+ EFI_STATUS Status;
+ EFI_EVENT EndOfDxeEvent;
+
+ Status = gBS->CreateEventEx (
+ EVT_NOTIFY_SIGNAL,
+ TPL_CALLBACK,
+ SataEndOfDxeCallback,
+ NULL,
+ &gEfiEndOfDxeEventGroupGuid,
+ &EndOfDxeEvent
+ );
+
+ return Status;
+}
--
1.9.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH edk2-platforms 2/2] Platform/NXP:LX2160: Enable support of SATA controller
2020-06-05 16:02 [PATCH edk2-platforms 0/2] Add SATA driver support Meenakshi Aggarwal
2020-06-05 16:02 ` [PATCH edk2-platforms 1/2] Silicon/NXP: Add SATA controller initialization driver Meenakshi Aggarwal
@ 2020-06-05 16:02 ` Meenakshi Aggarwal
2020-06-05 13:01 ` Ard Biesheuvel
2020-06-09 14:31 ` [PATCH edk2-platforms V2 0/2] Add SATA driver support Meenakshi Aggarwal
2 siblings, 1 reply; 12+ messages in thread
From: Meenakshi Aggarwal @ 2020-06-05 16:02 UTC (permalink / raw)
To: ard.biesheuvel, leif, michael.d.kinney, devel
Cc: v.sethi, Meenakshi Aggarwal, Meenakshi Aggarwal
Enable support of SATA drives on lx2160 RDB board.
Signed-off-by: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
---
Silicon/NXP/LX2160A/LX2160A.dsc.inc | 5 +++++
Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.dsc | 2 ++
Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.fdf | 18 +++++++++++++++---
3 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/Silicon/NXP/LX2160A/LX2160A.dsc.inc b/Silicon/NXP/LX2160A/LX2160A.dsc.inc
index 55dd3b5442eb..6bd08d527aed 100644
--- a/Silicon/NXP/LX2160A/LX2160A.dsc.inc
+++ b/Silicon/NXP/LX2160A/LX2160A.dsc.inc
@@ -40,8 +40,13 @@ [PcdsFixedAtBuild.common]
gNxpQoriqLsTokenSpaceGuid.PcdUsbSize|0x10000
gNxpQoriqLsTokenSpaceGuid.PcdNumUsbController|2
+ gNxpQoriqLsTokenSpaceGuid.PcdSataBaseAddr|0x3200000
+ gNxpQoriqLsTokenSpaceGuid.PcdSataSize|0x10000
+ gNxpQoriqLsTokenSpaceGuid.PcdNumSataController|0x4
+
[PcdsFeatureFlag]
gNxpQoriqLsTokenSpaceGuid.PcdI2cErratumA009203|TRUE
+ gNxpQoriqLsTokenSpaceGuid.PcdSataErratumA009185|TRUE
################################################################################
#
diff --git a/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.dsc b/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.dsc
index ec27a1a219a5..2c65577eceab 100644
--- a/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.dsc
+++ b/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.dsc
@@ -44,4 +44,6 @@ [Components.common]
}
Silicon/NXP/Drivers/UsbHcdInitDxe/UsbHcd.inf
+
+ Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf
##
diff --git a/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.fdf b/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.fdf
index 5cb809e8b3a0..e8ac7658c011 100644
--- a/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.fdf
+++ b/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.fdf
@@ -23,10 +23,10 @@
[FD.LX2160ARDB_EFI]
BaseAddress = 0x82000000|gArmTokenSpaceGuid.PcdFdBaseAddress #The base address of the FLASH Device.
-Size = 0x00160000|gArmTokenSpaceGuid.PcdFdSize #The size in bytes of the FLASH Device
+Size = 0x00180000|gArmTokenSpaceGuid.PcdFdSize #The size in bytes of the FLASH Device
ErasePolarity = 1
BlockSize = 0x10000
-NumBlocks = 0x16
+NumBlocks = 0x18
################################################################################
#
@@ -43,7 +43,7 @@ [FD.LX2160ARDB_EFI]
# RegionType <FV, DATA, or FILE>
#
################################################################################
-0x00000000|0x00160000
+0x00000000|0x00180000
gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize
FV = FVMAIN_COMPACT
@@ -132,6 +132,18 @@ [FV.FvMain]
INF MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
INF Silicon/NXP/Drivers/UsbHcdInitDxe/UsbHcd.inf
+
+ #
+ # AHCI Support
+ #
+ INF MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
+ INF MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
+ INF MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
+ INF MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
+ INF MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf
+
+ INF Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf
+
#
# UEFI application (Shell Embedded Boot Loader)
#
--
1.9.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH edk2-platforms 1/2] Silicon/NXP: Add SATA controller initialization driver
2020-06-05 13:00 ` Ard Biesheuvel
@ 2020-06-08 11:44 ` Meenakshi Aggarwal
0 siblings, 0 replies; 12+ messages in thread
From: Meenakshi Aggarwal @ 2020-06-08 11:44 UTC (permalink / raw)
To: Ard Biesheuvel, Meenakshi Aggarwal (OSS), leif@nuviainc.com,
michael.d.kinney@intel.com, devel@edk2.groups.io
Cc: Varun Sethi
Hi Ard,
Reply inline.
> -----Original Message-----
> From: Ard Biesheuvel <ard.biesheuvel@arm.com>
> Sent: Friday, June 5, 2020 6:30 PM
> To: Meenakshi Aggarwal (OSS) <meenakshi.aggarwal@oss.nxp.com>;
> leif@nuviainc.com; michael.d.kinney@intel.com; devel@edk2.groups.io
> Cc: Varun Sethi <V.Sethi@nxp.com>; Meenakshi Aggarwal
> <meenakshi.aggarwal@nxp.com>
> Subject: Re: [PATCH edk2-platforms 1/2] Silicon/NXP: Add SATA controller
> initialization driver
>
> On 6/5/20 6:02 PM, Meenakshi Aggarwal wrote:
> > Add support of SATA controller driver which performs controller
> > initialization and register itself as NonDiscoverableMmioDevice
> >
> > Signed-off-by: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
> > ---
> > Silicon/NXP/NxpQoriqLs.dec | 6 +
> > Silicon/NXP/NxpQoriqLs.dsc.inc | 10 ++
> > Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf | 46 ++++++++
> > Silicon/NXP/Drivers/SataInitDxe/SataInit.h | 27 +++++
> > Silicon/NXP/Drivers/SataInitDxe/SataInit.c | 116 ++++++++++++++++++++
> > 5 files changed, 205 insertions(+)
> >
> > diff --git a/Silicon/NXP/NxpQoriqLs.dec b/Silicon/NXP/NxpQoriqLs.dec
> > index 72c1744fc934..e83f282ace4e 100644
> > --- a/Silicon/NXP/NxpQoriqLs.dec
> > +++ b/Silicon/NXP/NxpQoriqLs.dec
> > @@ -28,6 +28,7 @@ [PcdsFeatureFlag]
> >
> gNxpQoriqLsTokenSpaceGuid.PcdI2cErratumA009203|FALSE|BOOLEAN|0x0000
> 0315
> >
> gNxpQoriqLsTokenSpaceGuid.PcdDcfgBigEndian|FALSE|BOOLEAN|0x00000316
> >
> >
> gNxpQoriqLsTokenSpaceGuid.PcdPciLutBigEndian|FALSE|BOOLEAN|0x0000031
> 7
> > +
> > +
> gNxpQoriqLsTokenSpaceGuid.PcdSataErratumA009185|FALSE|BOOLEAN|0x000
> 0
> > + 0318
> >
> > [PcdsFixedAtBuild.common]
> > # Pcds for PCI Express
> > @@ -41,6 +42,11 @@ [PcdsFixedAtBuild.common]
> > gNxpQoriqLsTokenSpaceGuid.PcdUsbSize|0x0|UINT32|0x00000511
> >
> gNxpQoriqLsTokenSpaceGuid.PcdNumUsbController|0|UINT32|0x00000512
> >
> > + # Pcds for SATA
> > + gNxpQoriqLsTokenSpaceGuid.PcdSataBaseAddr|0x0|UINT64|0x00000350
> > + gNxpQoriqLsTokenSpaceGuid.PcdSataSize|0x0|UINT32|0x00000351
> > +
> > +
> gNxpQoriqLsTokenSpaceGuid.PcdNumSataController|0x0|UINT32|0x00000352
> > +
> > [PcdsDynamic.common]
> >
> gNxpQoriqLsTokenSpaceGuid.PcdPciCfgShiftEnable|FALSE|BOOLEAN|0x000006
> 00
> >
> > gNxpQoriqLsTokenSpaceGuid.PcdPciLsGen4Ctrl|FALSE|BOOLEAN|0x00000601
> > diff --git a/Silicon/NXP/NxpQoriqLs.dsc.inc
> > b/Silicon/NXP/NxpQoriqLs.dsc.inc index 1f0f272da6c7..399ac5de9176
> > 100644
> > --- a/Silicon/NXP/NxpQoriqLs.dsc.inc
> > +++ b/Silicon/NXP/NxpQoriqLs.dsc.inc
> > @@ -101,6 +101,7 @@ [LibraryClasses.common]
> >
> > PlatformPeiLib|ArmPlatformPkg/PlatformPei/PlatformPeiLib.inf
> >
> > MemoryInitPeiLib|Silicon/NXP/Library/MemoryInitPeiLib/MemoryInitPeiLib
> > .inf
> > + UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf
> >
> > [LibraryClasses.common.SEC]
> > PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
> > @@ -378,6 +379,15 @@ [Components.common]
> >
> >
> MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDev
> > iceDxe.inf
> >
> > #
> > + # AHCI Support
> > + #
> > + MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
> > + MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
> > + MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
> > + MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
> > + MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf
> > +
> > + #
> > # Bds
> > #
> > MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
> > diff --git a/Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf
> > b/Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf
> > new file mode 100644
> > index 000000000000..06b6c2ac6ff9
> > --- /dev/null
> > +++ b/Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf
> > @@ -0,0 +1,46 @@
> > +## @file
> > +# Component description file for the Sata Controller initialization
> > +driver # # Copyright 2017 NXP # # SPDX-License-Identifier:
> > +BSD-2-Clause-Patent # ##
> > +
> > +[Defines]
> > + INF_VERSION = 0x0001001A
> > + BASE_NAME = SataInit
> > + FILE_GUID = 021722D8-522B-4079-852A-FE44C2C13F49
>
> Please don't reuse file GUIDs but generate your own.
>
Missed it, will replace
> > + MODULE_TYPE = DXE_DRIVER
> > + VERSION_STRING = 1.0
> > + ENTRY_POINT = InitializeSataController
> > +
> > +[Sources]
> > + SataInit.c
> > + SataInit.h
> > +
> > +[Packages]
> > + MdePkg/MdePkg.dec
> > + MdeModulePkg/MdeModulePkg.dec
> > + Silicon/NXP/NxpQoriqLs.dec
> > +
> > +[LibraryClasses]
> > + DebugLib
> > + NonDiscoverableDeviceRegistrationLib
> > + UefiBootServicesTableLib
> > + UefiDriverEntryPoint
> > + UefiLib
> > +
> > +[FixedPcd]
> > + gNxpQoriqLsTokenSpaceGuid.PcdNumSataController
> > + gNxpQoriqLsTokenSpaceGuid.PcdSataBaseAddr
> > + gNxpQoriqLsTokenSpaceGuid.PcdSataSize
> > +
> > +[FeaturePcd]
> > + gNxpQoriqLsTokenSpaceGuid.PcdSataErratumA009185
> > +
> > +[Guids]
> > + gEfiEndOfDxeEventGroupGuid
> > +
> > +[Depex]
> > + TRUE
> > diff --git a/Silicon/NXP/Drivers/SataInitDxe/SataInit.h
> > b/Silicon/NXP/Drivers/SataInitDxe/SataInit.h
> > new file mode 100644
> > index 000000000000..edaf0bdda72c
> > --- /dev/null
> > +++ b/Silicon/NXP/Drivers/SataInitDxe/SataInit.h
> > @@ -0,0 +1,27 @@
> > +/** @file
> > + Header file for Sata Controller initialization driver.
> > +
> > + Copyright 2017-2018, 2020 NXP
> > +
> > + SPDX-License-Identifier: BSD-2-Clause-Patent
> > +
> > + **/
> > +
> > +#ifndef SATA_INIT_H_
> > +#define SATA_INIT_H_
> > +
> > +//
> > +// Offset for AHCI base address in PCI Header // #define
> > +PCI_AHCI_BASE_ADDRESS 0x24
>
> Where is this used?
Missed during cleanup, will delete
>
> > +
> > +#define SATA_PPCFG 0xA8
> > +#define SATA_PTC 0xC8
> > +#define SATA_PAXIC 0xC0
> > +
> > +#define PORT_PHYSICAL 0xA003FFFE
> > +#define PORT_TRANSPORT 0x08000025
> > +#define PORT_RXWM 0x08000029
> > +#define ENABLE_NONZERO_4MB_PRD 0x10000000
> > +
>
> Do these really need a separate local header?
Hmm, we can keep in ".c" file
>
> > +#endif
> > diff --git a/Silicon/NXP/Drivers/SataInitDxe/SataInit.c
> > b/Silicon/NXP/Drivers/SataInitDxe/SataInit.c
> > new file mode 100644
> > index 000000000000..c678b63652e7
> > --- /dev/null
> > +++ b/Silicon/NXP/Drivers/SataInitDxe/SataInit.c
> > @@ -0,0 +1,116 @@
> > +/** @file
> > + This driver module adds SATA controller support.
> > +
> > + Copyright 2017-2018, 2020 NXP
> > +
> > + SPDX-License-Identifier: BSD-2-Clause-Patent
> > +
> > + **/
> > +
>
> No need to #include <PiDxe.h> here?
I am not seeing any error without this
>
> > +#include <Library/DebugLib.h>
> > +#include <Library/IoLib.h>
> > +#include <Library/NonDiscoverableDeviceRegistrationLib.h>
> > +#include <Library/UefiBootServicesTableLib.h>
> > +
> > +#include "SataInit.h"
> > +
> > +/**
> > + This function gets registered as a callback to perform USB
> > +controller intialization
> > +
> > + @param Event Event whose notification function is being invoked.
> > + @param Context Pointer to the notification function's context.
> > +
> > +**/
>
> STATIC
ok
>
> > +VOID
> > +EFIAPI
> > +SataEndOfDxeCallback (
> > + IN EFI_EVENT Event,
> > + IN VOID *Context
> > + )
> > +{
> > + EFI_STATUS Status;
> > + UINT32 NumSataController;
> > + UINT32 Index;
> > + UINT32 Data;
> > + UINTN ControllerAddr;
> > +
> > + NumSataController = PcdGet32 (PcdNumSataController);
> > +
> > + for (Index = 0; Index < NumSataController; Index++) {
> > + ControllerAddr = PcdGet64 (PcdSataBaseAddr) +
> > + (Index * PcdGet32 (PcdSataSize));
> > +
> > + //
> > + // configuring Physical Control Layer parameters for Port 0
> > + //
> > + MmioWrite32 ((UINTN)(ControllerAddr + SATA_PPCFG),
> > + PORT_PHYSICAL);
> > +
> > + //
> > + // This register controls the configuration of the
> > + // Transport Layer for Port 0
> > + // Errata Description : The default Rx watermark value may be insufficient
> > + // for some hard drives and result in a false CRC or internal errors.
> > + // Workaround: Change PTC[RXWM] field at offset 0xC8 to 0x29. Do not
> change
> > + // the other reserved fields of the register.
> > + //
> > +
> > + Data = MmioRead32 ((UINTN)(ControllerAddr + SATA_PTC));
> > + if (PcdGetBool (PcdSataErratumA009185)) {
> > + Data |= PORT_RXWM;
> > + } else {
> > + Data |= PORT_TRANSPORT;
> > + }
> > + MmioWrite32 ((UINTN)(ControllerAddr + SATA_PTC), Data);
> > +
> > + //
> > + // Enable Non-Zero 4 MB PRD entries.
> > + //
> > + MmioOr32 ((UINTN)(ControllerAddr + SATA_PAXIC),
> > + ENABLE_NONZERO_4MB_PRD);
> > +
> > + Status = RegisterNonDiscoverableMmioDevice (
> > + NonDiscoverableDeviceTypeAhci,
> > + NonDiscoverableDeviceDmaTypeNonCoherent,
> > + NULL,
> > + NULL,
> > + 1,
> > + ControllerAddr, PcdGet32 (PcdSataSize)
> > + );
> > +
> > + if (EFI_ERROR (Status)) {
> > + DEBUG ((DEBUG_ERROR, "Failed to register SATA device 0x%x, error 0x%r
> \n",
> > + ControllerAddr, Status));
> > + }
> > + }
> > +}
> > +
> > +/**
> > + The Entry Point of module. It follows the standard UEFI driver model.
> > +
> > + @param[in] ImageHandle The firmware allocated handle for the EFI
> image.
> > + @param[in] SystemTable A pointer to the EFI System Table.
> > +
> > + @retval EFI_SUCCESS The entry point is executed successfully.
> > + @retval Other Some error occurs when executing this entry point
> > +
> > +**/
> > +EFI_STATUS
> > +EFIAPI
> > +InitializeSataController (
> > + IN EFI_HANDLE ImageHandle,
> > + IN EFI_SYSTEM_TABLE *SystemTable
> > + )
> > +{
> > + EFI_STATUS Status;
> > + EFI_EVENT EndOfDxeEvent;
> > +
> > + Status = gBS->CreateEventEx (
> > + EVT_NOTIFY_SIGNAL,
> > + TPL_CALLBACK,
> > + SataEndOfDxeCallback,
> > + NULL,
> > + &gEfiEndOfDxeEventGroupGuid,
> > + &EndOfDxeEvent
> > + );
> > +
> > + return Status;
> > +}
> >
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH edk2-platforms V2 0/2] Add SATA driver support
2020-06-05 16:02 [PATCH edk2-platforms 0/2] Add SATA driver support Meenakshi Aggarwal
2020-06-05 16:02 ` [PATCH edk2-platforms 1/2] Silicon/NXP: Add SATA controller initialization driver Meenakshi Aggarwal
2020-06-05 16:02 ` [PATCH edk2-platforms 2/2] Platform/NXP:LX2160: Enable support of SATA controller Meenakshi Aggarwal
@ 2020-06-09 14:31 ` Meenakshi Aggarwal
2020-06-09 14:31 ` [PATCH edk2-platforms V2 1/2] Silicon/NXP: Add SATA controller initialization driver Meenakshi Aggarwal
` (2 more replies)
2 siblings, 3 replies; 12+ messages in thread
From: Meenakshi Aggarwal @ 2020-06-09 14:31 UTC (permalink / raw)
To: ard.biesheuvel, leif, michael.d.kinney, devel; +Cc: v.sethi, Meenakshi Aggarwal
This patchset implement SATA driver for NXP Platforms enable
SATA for LX2160A Platform.
Changes in v2:
- Incorporated review comments
- Removed header file and define macro in .c file
Meenakshi Aggarwal (2):
Silicon/NXP: Add SATA controller initialization driver
Platform/NXP:LX2160: Enable support of SATA controller
Silicon/NXP/NxpQoriqLs.dec | 6 +
Silicon/NXP/LX2160A/LX2160A.dsc.inc | 5 +
Silicon/NXP/NxpQoriqLs.dsc.inc | 10 ++
Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.dsc | 2 +
Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.fdf | 18 ++-
Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf | 45 +++++++
Silicon/NXP/Drivers/SataInitDxe/SataInit.c | 124 ++++++++++++++++++++
7 files changed, 207 insertions(+), 3 deletions(-)
create mode 100644 Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf
create mode 100644 Silicon/NXP/Drivers/SataInitDxe/SataInit.c
--
1.9.1
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH edk2-platforms V2 1/2] Silicon/NXP: Add SATA controller initialization driver
2020-06-09 14:31 ` [PATCH edk2-platforms V2 0/2] Add SATA driver support Meenakshi Aggarwal
@ 2020-06-09 14:31 ` Meenakshi Aggarwal
2020-06-09 14:31 ` [PATCH edk2-platforms V2 2/2] Platform/NXP:LX2160: Enable support of SATA controller Meenakshi Aggarwal
2020-06-17 11:55 ` [PATCH edk2-platforms V2 0/2] Add SATA driver support Leif Lindholm
2 siblings, 0 replies; 12+ messages in thread
From: Meenakshi Aggarwal @ 2020-06-09 14:31 UTC (permalink / raw)
To: ard.biesheuvel, leif, michael.d.kinney, devel
Cc: v.sethi, Meenakshi Aggarwal, Meenakshi Aggarwal
Add support of SATA controller driver which performs
controller initialization and register itself as NonDiscoverableMmioDevice
Signed-off-by: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
---
Silicon/NXP/NxpQoriqLs.dec | 6 +
Silicon/NXP/NxpQoriqLs.dsc.inc | 10 ++
Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf | 45 +++++++
Silicon/NXP/Drivers/SataInitDxe/SataInit.c | 124 ++++++++++++++++++++
4 files changed, 185 insertions(+)
diff --git a/Silicon/NXP/NxpQoriqLs.dec b/Silicon/NXP/NxpQoriqLs.dec
index 72c1744fc934..e83f282ace4e 100644
--- a/Silicon/NXP/NxpQoriqLs.dec
+++ b/Silicon/NXP/NxpQoriqLs.dec
@@ -28,6 +28,7 @@ [PcdsFeatureFlag]
gNxpQoriqLsTokenSpaceGuid.PcdI2cErratumA009203|FALSE|BOOLEAN|0x00000315
gNxpQoriqLsTokenSpaceGuid.PcdDcfgBigEndian|FALSE|BOOLEAN|0x00000316
gNxpQoriqLsTokenSpaceGuid.PcdPciLutBigEndian|FALSE|BOOLEAN|0x00000317
+ gNxpQoriqLsTokenSpaceGuid.PcdSataErratumA009185|FALSE|BOOLEAN|0x00000318
[PcdsFixedAtBuild.common]
# Pcds for PCI Express
@@ -41,6 +42,11 @@ [PcdsFixedAtBuild.common]
gNxpQoriqLsTokenSpaceGuid.PcdUsbSize|0x0|UINT32|0x00000511
gNxpQoriqLsTokenSpaceGuid.PcdNumUsbController|0|UINT32|0x00000512
+ # Pcds for SATA
+ gNxpQoriqLsTokenSpaceGuid.PcdSataBaseAddr|0x0|UINT64|0x00000350
+ gNxpQoriqLsTokenSpaceGuid.PcdSataSize|0x0|UINT32|0x00000351
+ gNxpQoriqLsTokenSpaceGuid.PcdNumSataController|0x0|UINT32|0x00000352
+
[PcdsDynamic.common]
gNxpQoriqLsTokenSpaceGuid.PcdPciCfgShiftEnable|FALSE|BOOLEAN|0x00000600
gNxpQoriqLsTokenSpaceGuid.PcdPciLsGen4Ctrl|FALSE|BOOLEAN|0x00000601
diff --git a/Silicon/NXP/NxpQoriqLs.dsc.inc b/Silicon/NXP/NxpQoriqLs.dsc.inc
index 1f0f272da6c7..399ac5de9176 100644
--- a/Silicon/NXP/NxpQoriqLs.dsc.inc
+++ b/Silicon/NXP/NxpQoriqLs.dsc.inc
@@ -101,6 +101,7 @@ [LibraryClasses.common]
PlatformPeiLib|ArmPlatformPkg/PlatformPei/PlatformPeiLib.inf
MemoryInitPeiLib|Silicon/NXP/Library/MemoryInitPeiLib/MemoryInitPeiLib.inf
+ UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf
[LibraryClasses.common.SEC]
PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
@@ -378,6 +379,15 @@ [Components.common]
MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.inf
#
+ # AHCI Support
+ #
+ MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
+ MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
+ MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
+ MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
+ MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf
+
+ #
# Bds
#
MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
diff --git a/Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf b/Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf
new file mode 100644
index 000000000000..e7d6b72bb8df
--- /dev/null
+++ b/Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf
@@ -0,0 +1,45 @@
+## @file
+# Component description file for the Sata Controller initialization driver
+#
+# Copyright 2017, 2020 NXP
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+[Defines]
+ INF_VERSION = 0x0001001A
+ BASE_NAME = SataInit
+ FILE_GUID = d1f98a9c-87d1-4322-8473-0ea3a91986f1
+ MODULE_TYPE = DXE_DRIVER
+ VERSION_STRING = 1.0
+ ENTRY_POINT = InitializeSataController
+
+[Sources]
+ SataInit.c
+
+[Packages]
+ MdePkg/MdePkg.dec
+ MdeModulePkg/MdeModulePkg.dec
+ Silicon/NXP/NxpQoriqLs.dec
+
+[LibraryClasses]
+ DebugLib
+ NonDiscoverableDeviceRegistrationLib
+ UefiBootServicesTableLib
+ UefiDriverEntryPoint
+ UefiLib
+
+[FixedPcd]
+ gNxpQoriqLsTokenSpaceGuid.PcdNumSataController
+ gNxpQoriqLsTokenSpaceGuid.PcdSataBaseAddr
+ gNxpQoriqLsTokenSpaceGuid.PcdSataSize
+
+[FeaturePcd]
+ gNxpQoriqLsTokenSpaceGuid.PcdSataErratumA009185
+
+[Guids]
+ gEfiEndOfDxeEventGroupGuid
+
+[Depex]
+ TRUE
diff --git a/Silicon/NXP/Drivers/SataInitDxe/SataInit.c b/Silicon/NXP/Drivers/SataInitDxe/SataInit.c
new file mode 100644
index 000000000000..4493299e6222
--- /dev/null
+++ b/Silicon/NXP/Drivers/SataInitDxe/SataInit.c
@@ -0,0 +1,124 @@
+/** @file
+ This driver module adds SATA controller support.
+
+ Copyright 2017-2018, 2020 NXP
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+ **/
+
+#include <Library/DebugLib.h>
+#include <Library/IoLib.h>
+#include <Library/NonDiscoverableDeviceRegistrationLib.h>
+#include <Library/UefiBootServicesTableLib.h>
+
+#define SATA_PPCFG 0xA8
+#define SATA_PTC 0xC8
+#define SATA_PAXIC 0xC0
+
+#define PORT_PHYSICAL 0xA003FFFE
+#define PORT_TRANSPORT 0x08000025
+#define PORT_RXWM 0x08000029
+#define ENABLE_NONZERO_4MB_PRD 0x10000000
+
+/**
+ This function gets registered as a callback to perform USB controller intialization
+
+ @param Event Event whose notification function is being invoked.
+ @param Context Pointer to the notification function's context.
+
+**/
+STATIC
+VOID
+EFIAPI
+SataEndOfDxeCallback (
+ IN EFI_EVENT Event,
+ IN VOID *Context
+ )
+{
+ EFI_STATUS Status;
+ UINT32 NumSataController;
+ UINT32 Index;
+ UINT32 Data;
+ UINTN ControllerAddr;
+
+ NumSataController = PcdGet32 (PcdNumSataController);
+
+ for (Index = 0; Index < NumSataController; Index++) {
+ ControllerAddr = PcdGet64 (PcdSataBaseAddr) +
+ (Index * PcdGet32 (PcdSataSize));
+
+ //
+ // configuring Physical Control Layer parameters for Port 0
+ //
+ MmioWrite32 ((UINTN)(ControllerAddr + SATA_PPCFG), PORT_PHYSICAL);
+
+ //
+ // This register controls the configuration of the
+ // Transport Layer for Port 0
+ // Errata Description : The default Rx watermark value may be insufficient
+ // for some hard drives and result in a false CRC or internal errors.
+ // Workaround: Change PTC[RXWM] field at offset 0xC8 to 0x29. Do not change
+ // the other reserved fields of the register.
+ //
+
+ Data = MmioRead32 ((UINTN)(ControllerAddr + SATA_PTC));
+ if (PcdGetBool (PcdSataErratumA009185)) {
+ Data |= PORT_RXWM;
+ } else {
+ Data |= PORT_TRANSPORT;
+ }
+ MmioWrite32 ((UINTN)(ControllerAddr + SATA_PTC), Data);
+
+ //
+ // Enable Non-Zero 4 MB PRD entries.
+ //
+ MmioOr32 ((UINTN)(ControllerAddr + SATA_PAXIC), ENABLE_NONZERO_4MB_PRD);
+
+ Status = RegisterNonDiscoverableMmioDevice (
+ NonDiscoverableDeviceTypeAhci,
+ NonDiscoverableDeviceDmaTypeNonCoherent,
+ NULL,
+ NULL,
+ 1,
+ ControllerAddr, PcdGet32 (PcdSataSize)
+ );
+
+ if (EFI_ERROR (Status)) {
+ DEBUG ((DEBUG_ERROR, "Failed to register SATA device 0x%x, error 0x%r \n",
+ ControllerAddr, Status));
+ }
+ }
+}
+
+/**
+ The Entry Point of module. It follows the standard UEFI driver model.
+
+ @param[in] ImageHandle The firmware allocated handle for the EFI image.
+ @param[in] SystemTable A pointer to the EFI System Table.
+
+ @retval EFI_SUCCESS The entry point is executed successfully.
+ @retval Other Some error occurs when executing this entry point
+
+**/
+EFI_STATUS
+EFIAPI
+InitializeSataController (
+ IN EFI_HANDLE ImageHandle,
+ IN EFI_SYSTEM_TABLE *SystemTable
+ )
+{
+ EFI_STATUS Status;
+ EFI_EVENT EndOfDxeEvent;
+
+ Status = gBS->CreateEventEx (
+ EVT_NOTIFY_SIGNAL,
+ TPL_CALLBACK,
+ SataEndOfDxeCallback,
+ NULL,
+ &gEfiEndOfDxeEventGroupGuid,
+ &EndOfDxeEvent
+ );
+
+ return Status;
+}
--
1.9.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH edk2-platforms V2 2/2] Platform/NXP:LX2160: Enable support of SATA controller
2020-06-09 14:31 ` [PATCH edk2-platforms V2 0/2] Add SATA driver support Meenakshi Aggarwal
2020-06-09 14:31 ` [PATCH edk2-platforms V2 1/2] Silicon/NXP: Add SATA controller initialization driver Meenakshi Aggarwal
@ 2020-06-09 14:31 ` Meenakshi Aggarwal
2020-06-17 11:55 ` [PATCH edk2-platforms V2 0/2] Add SATA driver support Leif Lindholm
2 siblings, 0 replies; 12+ messages in thread
From: Meenakshi Aggarwal @ 2020-06-09 14:31 UTC (permalink / raw)
To: ard.biesheuvel, leif, michael.d.kinney, devel
Cc: v.sethi, Meenakshi Aggarwal, Meenakshi Aggarwal
- Enable support of SATA drives on lx2160 RDB board.
- Increase FD size to accomodate SATA driver.
Signed-off-by: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
---
Silicon/NXP/LX2160A/LX2160A.dsc.inc | 5 +++++
Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.dsc | 2 ++
Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.fdf | 18 +++++++++++++++---
3 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/Silicon/NXP/LX2160A/LX2160A.dsc.inc b/Silicon/NXP/LX2160A/LX2160A.dsc.inc
index 55dd3b5442eb..6bd08d527aed 100644
--- a/Silicon/NXP/LX2160A/LX2160A.dsc.inc
+++ b/Silicon/NXP/LX2160A/LX2160A.dsc.inc
@@ -40,8 +40,13 @@ [PcdsFixedAtBuild.common]
gNxpQoriqLsTokenSpaceGuid.PcdUsbSize|0x10000
gNxpQoriqLsTokenSpaceGuid.PcdNumUsbController|2
+ gNxpQoriqLsTokenSpaceGuid.PcdSataBaseAddr|0x3200000
+ gNxpQoriqLsTokenSpaceGuid.PcdSataSize|0x10000
+ gNxpQoriqLsTokenSpaceGuid.PcdNumSataController|0x4
+
[PcdsFeatureFlag]
gNxpQoriqLsTokenSpaceGuid.PcdI2cErratumA009203|TRUE
+ gNxpQoriqLsTokenSpaceGuid.PcdSataErratumA009185|TRUE
################################################################################
#
diff --git a/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.dsc b/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.dsc
index ec27a1a219a5..2c65577eceab 100644
--- a/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.dsc
+++ b/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.dsc
@@ -44,4 +44,6 @@ [Components.common]
}
Silicon/NXP/Drivers/UsbHcdInitDxe/UsbHcd.inf
+
+ Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf
##
diff --git a/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.fdf b/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.fdf
index 5cb809e8b3a0..e8ac7658c011 100644
--- a/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.fdf
+++ b/Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.fdf
@@ -23,10 +23,10 @@
[FD.LX2160ARDB_EFI]
BaseAddress = 0x82000000|gArmTokenSpaceGuid.PcdFdBaseAddress #The base address of the FLASH Device.
-Size = 0x00160000|gArmTokenSpaceGuid.PcdFdSize #The size in bytes of the FLASH Device
+Size = 0x00180000|gArmTokenSpaceGuid.PcdFdSize #The size in bytes of the FLASH Device
ErasePolarity = 1
BlockSize = 0x10000
-NumBlocks = 0x16
+NumBlocks = 0x18
################################################################################
#
@@ -43,7 +43,7 @@ [FD.LX2160ARDB_EFI]
# RegionType <FV, DATA, or FILE>
#
################################################################################
-0x00000000|0x00160000
+0x00000000|0x00180000
gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize
FV = FVMAIN_COMPACT
@@ -132,6 +132,18 @@ [FV.FvMain]
INF MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
INF Silicon/NXP/Drivers/UsbHcdInitDxe/UsbHcd.inf
+
+ #
+ # AHCI Support
+ #
+ INF MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
+ INF MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
+ INF MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
+ INF MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
+ INF MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf
+
+ INF Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf
+
#
# UEFI application (Shell Embedded Boot Loader)
#
--
1.9.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH edk2-platforms V2 0/2] Add SATA driver support
2020-06-09 14:31 ` [PATCH edk2-platforms V2 0/2] Add SATA driver support Meenakshi Aggarwal
2020-06-09 14:31 ` [PATCH edk2-platforms V2 1/2] Silicon/NXP: Add SATA controller initialization driver Meenakshi Aggarwal
2020-06-09 14:31 ` [PATCH edk2-platforms V2 2/2] Platform/NXP:LX2160: Enable support of SATA controller Meenakshi Aggarwal
@ 2020-06-17 11:55 ` Leif Lindholm
2020-06-23 19:08 ` Meenakshi Aggarwal (OSS)
2 siblings, 1 reply; 12+ messages in thread
From: Leif Lindholm @ 2020-06-17 11:55 UTC (permalink / raw)
To: Meenakshi Aggarwal; +Cc: ard.biesheuvel, michael.d.kinney, devel, v.sethi
On Tue, Jun 09, 2020 at 20:01:03 +0530, Meenakshi Aggarwal wrote:
> This patchset implement SATA driver for NXP Platforms enable
> SATA for LX2160A Platform.
>
> Changes in v2:
> - Incorporated review comments
> - Removed header file and define macro in .c file
For this set:
Reviewed-by: Leif Lindholm <leif@nuviainc.com>
*However*, this set does not apply cleanly without the "Add USB driver
support" set, and that set has an outstanding question from Ard in
https://edk2.groups.io/g/devel/message/61211.
I'll leave it up to you whether we get that set merged first, or
whether you can rebase this one.
/
Leif
> Meenakshi Aggarwal (2):
> Silicon/NXP: Add SATA controller initialization driver
> Platform/NXP:LX2160: Enable support of SATA controller
>
> Silicon/NXP/NxpQoriqLs.dec | 6 +
> Silicon/NXP/LX2160A/LX2160A.dsc.inc | 5 +
> Silicon/NXP/NxpQoriqLs.dsc.inc | 10 ++
> Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.dsc | 2 +
> Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.fdf | 18 ++-
> Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf | 45 +++++++
> Silicon/NXP/Drivers/SataInitDxe/SataInit.c | 124 ++++++++++++++++++++
> 7 files changed, 207 insertions(+), 3 deletions(-)
> create mode 100644 Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf
> create mode 100644 Silicon/NXP/Drivers/SataInitDxe/SataInit.c
>
> --
> 1.9.1
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH edk2-platforms V2 0/2] Add SATA driver support
2020-06-17 11:55 ` [PATCH edk2-platforms V2 0/2] Add SATA driver support Leif Lindholm
@ 2020-06-23 19:08 ` Meenakshi Aggarwal (OSS)
0 siblings, 0 replies; 12+ messages in thread
From: Meenakshi Aggarwal (OSS) @ 2020-06-23 19:08 UTC (permalink / raw)
To: Leif Lindholm, Meenakshi Aggarwal (OSS)
Cc: ard.biesheuvel@arm.com, michael.d.kinney@intel.com,
devel@edk2.groups.io, Varun Sethi
Hi Leif,
I am working on USB patch.
Thanks,
Meenakshi
> -----Original Message----
> From: Leif Lindholm <leif@nuviainc.com>
> Sent: Wednesday, June 17, 2020 5:25 PM
> To: Meenakshi Aggarwal (OSS) <meenakshi.aggarwal@oss.nxp.com>
> Cc: ard.biesheuvel@arm.com; michael.d.kinney@intel.com;
> devel@edk2.groups.io; Varun Sethi <V.Sethi@nxp.com>
> Subject: Re: [PATCH edk2-platforms V2 0/2] Add SATA driver support
>
> On Tue, Jun 09, 2020 at 20:01:03 +0530, Meenakshi Aggarwal wrote:
> > This patchset implement SATA driver for NXP Platforms enable SATA for
> > LX2160A Platform.
> >
> > Changes in v2:
> > - Incorporated review comments
> > - Removed header file and define macro in .c file
>
> For this set:
> Reviewed-by: Leif Lindholm <leif@nuviainc.com>
>
> *However*, this set does not apply cleanly without the "Add USB driver
> support" set, and that set has an outstanding question from Ard in
> https://edk2.groups.io/g/devel/message/61211.
>
> I'll leave it up to you whether we get that set merged first, or whether you can
> rebase this one.
>
> /
> Leif
>
> > Meenakshi Aggarwal (2):
> > Silicon/NXP: Add SATA controller initialization driver
> > Platform/NXP:LX2160: Enable support of SATA controller
> >
> > Silicon/NXP/NxpQoriqLs.dec | 6 +
> > Silicon/NXP/LX2160A/LX2160A.dsc.inc | 5 +
> > Silicon/NXP/NxpQoriqLs.dsc.inc | 10 ++
> > Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.dsc | 2 +
> > Platform/NXP/LX2160aRdbPkg/LX2160aRdbPkg.fdf | 18 ++-
> > Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf | 45 +++++++
> > Silicon/NXP/Drivers/SataInitDxe/SataInit.c | 124 ++++++++++++++++++++
> > 7 files changed, 207 insertions(+), 3 deletions(-) create mode
> > 100644 Silicon/NXP/Drivers/SataInitDxe/SataInitDxe.inf
> > create mode 100644 Silicon/NXP/Drivers/SataInitDxe/SataInit.c
> >
> > --
> > 1.9.1
> >
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2020-06-23 19:08 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-06-05 16:02 [PATCH edk2-platforms 0/2] Add SATA driver support Meenakshi Aggarwal
2020-06-05 16:02 ` [PATCH edk2-platforms 1/2] Silicon/NXP: Add SATA controller initialization driver Meenakshi Aggarwal
2020-06-05 13:00 ` Ard Biesheuvel
2020-06-08 11:44 ` Meenakshi Aggarwal
2020-06-05 16:02 ` [PATCH edk2-platforms 2/2] Platform/NXP:LX2160: Enable support of SATA controller Meenakshi Aggarwal
2020-06-05 13:01 ` Ard Biesheuvel
2020-06-05 13:09 ` Leif Lindholm
2020-06-09 14:31 ` [PATCH edk2-platforms V2 0/2] Add SATA driver support Meenakshi Aggarwal
2020-06-09 14:31 ` [PATCH edk2-platforms V2 1/2] Silicon/NXP: Add SATA controller initialization driver Meenakshi Aggarwal
2020-06-09 14:31 ` [PATCH edk2-platforms V2 2/2] Platform/NXP:LX2160: Enable support of SATA controller Meenakshi Aggarwal
2020-06-17 11:55 ` [PATCH edk2-platforms V2 0/2] Add SATA driver support Leif Lindholm
2020-06-23 19:08 ` Meenakshi Aggarwal (OSS)
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox