summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Bus/Spi
AgeCommit message (Collapse)AuthorFilesLines
2026-06-24MdeModulePkg: SpiNorFlashJedecSfdp: Fix uninitialized variable warningsTuan Phan1-3/+9
In GetEraseTypeRecord(), ensure ValueToCompare is initialized on all code paths to prevent uninitialized variable warnings. In SpiReadSfdpPtp(), return an error code immediately if any iteration of the for loop fails, otherwise return EFI_SUCCESS on success at the end of function. Signed-off-by: Tuan Phan <tuan.phan@oss.qualcomm.com>
2026-03-23MdeModulePkg/SpiNorFlashJedecSfdp: Limit debug outputAbdul Lateef Attar1-6/+6
Change debug print level from DEBUG_INFO to DEBUG_VERBOSE to limit excessive output. Since Spinor Sfdp operations can generate a large number of debug messages due to frequent read/write/erase actions, this change reduces log verbosity at the INFO level. Signed-off-by: Abdul Lateef Attar <AbdulLateef.Attar@amd.com>
2026-02-24MdeModulePkg: Replace include guards with #pragma onceMichael Kubacki4-16/+4
Replace traditional `#ifndef`/`#define`/`#endif` include guards with `#pragma` once. `#pragma once` is a widely supported preprocessor directive that prevents header files from being included multiple times. It is supported by all toolchains used to build edk2: GCC, Clang/LLVM, and MSVC. Compared to macro-based include guards, `#pragma once`: - Eliminates the risk of macro name collisions or copy/paste errors where two headers inadvertently use the same guard macro. - Eliminate inconsistency in the way include guard macros are named (e.g., some files use `__FILE_H__`, others use `FILE_H_`, etc.). - Reduces boilerplate (three lines replaced by one). - Avoids polluting the macro namespace with guard symbols. - Can improve build times as the preprocessor can skip re-opening the file entirely, rather than re-reading it to find the matching `#endif` ("multiple-include optimization"). - Note that some compilers may already optimize traditional include guards, by recognzining the idiomatic pattern. This change is made acknowledging that overall portability of the code will technically be reduced, as `#pragma once` is not part of the C/C++ standards. However, this is considered acceptable given: 1. edk2 already defines a subset of supported compilers in BaseTools/Conf/tools_def.template, all of which have supported `#pragma once` for over two decades. 2. There have been concerns raised to the project about inconsistent include guard naming and potential macro collisions. Approximate compiler support dates: - MSVC: Supported since Visual C++ 4.2 (1996) - GCC: Supported since 3.4 (2004) (http://gnu.ist.utl.pt/software/gcc/gcc-3.4/changes.html) - Clang (LLVM based): Since initial release in 2007 Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2025-11-24MdeModulePkg: SpiNorFlash update FillWriteBuffer headers.Aaron Pop2-6/+14
The function headers for FillWriteBuffer have become out of date with the implementation. Update the function headers to more clearly define the interface for recent changes. Signed-off-by: Aaron Pop <aaronpop@microsoft.com>
2025-06-13MdeModulePkg/SpiNorFlashJedecSfdp: Initialize AddressSizeMichael D Kinney1-0/+1
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
2025-06-12MdeModulePkg/SpiBus: Free handle buffers after LocateHandleBufferDongyan Qian1-2/+4
Fix memory leaks by adding missing FreePool calls: release SpiHcHandles in SpiBusEntry exit path. REF: https://uefi.org/sites/default/files/resources/UEFI_Spec_Final_2.11.pdf Chapter 7.3.15: "Services - Boot Services.LocateHandleBuffer": It is the caller's responsibility to call the Boot Service.FreePool when the caller no longer requires the contents of Buffer. Signed-off-by: Dongyan Qian <qiandongyan@loongson.cn>
2025-05-26MdeModulePkg/Spi: Allow NULL WriteBuffer in FillWriteBuffer()PaddyDeng1-2/+2
Fix false positive assert added in #10924 Functon `FillWriteBuffer()` should able to accept NULL WriteBuffer when WriteBytes equals 0. Use case: ``` // Read Status register TransactionBufferLength = FillWriteBuffer ( Instance, SPI_FLASH_RDSR, SPI_FLASH_RDSR_DUMMY, SPI_FLASH_RDSR_ADDR_BYTES, FALSE, 0, 0, // WriteBytes = 0 NULL // WriteBuffer can be NULL ); ``` Signed-off-by: Paddy Deng <v-paddydeng@microsoft.com>
2025-05-05MdeModulePkg/Spi: Solving potential null ptr deref. in SpiNorFlashJedecSfdpPaddyDeng1-1/+11
The pointer `Instance->SfdpBasicFlash` can be used before initializing. Example code flow: - CreateSpiNorFlashSfdpInstance: Allocate pool for `Instance` - InitialSpiNorFlashSfdpInstance - ReadSfdp - ReadSfdpHeader - FillWriteBuffer: Dereferencing `Instance->SfdpBasicFlash` - ReadSfdpBasicParameterTable: Allocate pool for `Instance->SfdpBasicFlash` Check both `Instance` and `Instance->SfdpBasicFlash` should have a non null value before dereferencing it. Otherwise use the defaut value 0. Also terminate the function if `Instance` or `WriteBuffer` is NULL. Signed-off-by: Paddy Deng <v-paddydeng@microsoft.com>
2025-04-30MdeModulePkg SpiBus: Use correct GUIDJack Hsieh2-3/+12
Fix incorrect guid in SpiBusDxe and add null checking for AllocateZeroPool in the SpiBus driver. Signed-off-by: Jack Hsieh <v-chhsieh@microsoft.com>
2024-05-08MdeModulePkg: SpiHc: SpiHc DriversBrit Chesley7-0/+514
Added SpiHc DXE and SMM drivers. This code receives bus transactions from the SpiBus layer and passes them onto the SpiHcPlatformLib Platform Initialization Spec 1.7 volume 5 section 18.1.7 Bugzilla #4753 Cc: Abner Chang <abner.chang@amd.com> Cc: Abdul Lateef Attar <AbdulLateef.Attar@amd.com> Signed-off-by: Brit Chesley <brit.chesley@amd.com> Reviewed-by: Abner Chang <abner.chang@amd.com>
2024-05-08MdeModulePkg/Bus/Spi/SpiBus: Adding SpiBus DriversBrit Chesley7-0/+1052
Added SpiBus DXE and SMM drivers. This code translates SPI requests from the application layer into SPI Bus transactions on the SPI host controller. The code is responsible for checking if the transaction is valid, then setting up the SPI clock and chip select properly before passing the bus transaction to the host controller. Platform Initialization Spec 1.7 volume 5 section 18.1.6 Bugzilla #4753 Cc: Abner Chang <abner.chang@amd.com> Cc: Abdul Lateef Attar <AbdulLateef.Attar@amd.com> Signed-off-by: Brit Chesley <brit.chesley@amd.com> Reviewed-by: Abner Chang <abner.chang@amd.com>
2024-04-20MdeModulePkg/SpiNorFlashJedecSfdp: SPI NOR Flash JEDEC SFDPabnchang11-0/+4166
BZ#: 4471 SPI NOR Flash JEDEC Serial Flash Discoverable Driver implementation. Signed-off-by: Abner Chang <abner.chang@amd.com> Cc: Hao A Wu <hao.a.wu@intel.com> Cc: Ray Ni <ray.ni@intel.com> Cc: Abdul Lateef Attar <abdattar@amd.com> Cc: Brit Chesley <brit.chesley@amd.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>