The UEFI workflow is as follows:
1. Set default panel
2. Preconfigure MDP-related register and setup SMMU
3. Display Dxe set mode
4. Initialize DSI-Phy and Ctrl
5. Initialize TG/PP and panel
6. Display splash logo and exit UEFI
The UEFI workflow is as follows:
1. Set default panel
2. Preconfigure MDP-related register and setup SMMU
3. Display Dxe set mode
4. Initialize DSI-Phy and Ctrl
5. Initialize TG/PP and panel
6. Display splash logo and exit UEFI
The kernel bringUp in 80-PV988-84 Rev
Following sections provide the call flow for each of the above steps
The following figure shows the workflow of display panel bringup in UEFI.
NOTE For Android devices, bring up the panel in the Linux kernel
before the panel bringup in the UEFI.
1: Start
2: Prepare panel data in one xml file per panel using existing MTP/CDP panel as reference.
3: Modify XML data with panel init command, resolutions, timings and so on based on panel specifications.
4: Define and configure panel GPIOs and regulators to reset panel, refer to Panel_CDP_PowerUP and Panel_CDP_PeripheralPower.
5: Modify MDPPlatformConfigure ()
MDPPLATFORM_CONFIG_POWERUP to connect platform panel to its reset functions.
6: Build and flash
Display comes up?
7: if NO ->Debug No-> to start
if Yes -> Enable continuous splash
8: end
2.1.2 For boot version BOOT.XF.3.0 and later versions
2.1.2.1 Prepare the XML file for panel configuration
1. Prepare the XML data by referring to examples at <>/QcomPkg/Settings/Panel/*.xml
The examples for panel, its resolution, and respective XML data is listed in the following table
2. Modify the panel configuration based on the panel specifications and the UEFI XML format and save the XML file at <>/QcomPkg/Settings/Panel/*.xml
For details on all the configuration parameters related to display, see Display Drivers (ACPI and XML) Configuration Guide (80-NB116-2). The same XML syntax is shared between Windows ACPI and Linux Android UEFI display drivers
3. Add the panel name and panel xml file location to flash layout file at: <>/QcomPkg/SocPkg/<ChipsetName>/Common/Core.fdf
For example,
#
# Display panel configuration xml
#
FILE FREEFORM = 8cae2c55-fc5a-410b-812b-8ca22f572f36 {//uuid
SECTION UI = "Panel_truly_wqxga_dsc_cmd.xml"
SECTION RAW = QcomPkg/Settings/Panel/Panel_truly_wqxga_dsc_cmd.xml
}
4. Add panel type to MDPPlatformLibPanelConfig file <>/QcomPkg/SocPkg/<ChipsetName>/Library/MDPPlatformLib/MDPPlatformLibPanelConfig.h
MDPPlatformPanelFunctionTable
a. Add new platform and panel xml in header files. For example,
{
MDPPLATFORM_PANEL_AUO_1080P_EDP, // ePanelSelected
"Panel_auo_1080p_edp.xml", // pPanelXmlConfig
Panel_CLS_PowerUp, // pPanel_PowerUp
Panel_CLS_PowerDown, // pPanel_PowerDown
Panel_CLS_Reset, // pPanel_Reset
Panel_CLS_Peripheral_Power, // pPanel_Peripheral_Power
Panel_CLS_Brightness_Enable, // pPanel_Brightness_Enable
Panel_CLS_Brightness_Level // pPanel_Brightness_Level
},
b. Add new platform power/peripheral/backlight control functions under <>/QcomPkg/SocPkg/<ChipsetName>/Library/MDPPlatformLib/MDPPlatformLibPanelEdp.c. For
example,
MDP_Status Panel_CLS_PowerUp(MDP_Display_IDType eDisplayId,
Panel_PowerCtrlParams *pPowerParams){...}
MDP_Status Panel_CLS_PowerDown(MDP_Display_IDType eDisplayId,
Panel_PowerCtrlParams *pPowerParams){...}
MDP_Status Panel_CLS_Peripheral_Power(MDP_Display_IDType eDisplayId,
Panel_PowerCtrlParams *pPowerParams, bool32 bPowerUp){...}
MDP_Status Panel_CLS_Brightness_Enable(MDP_Display_IDType eDisplayId,
Panel_PowerCtrlParams *pPowerParams){...}
MDP_Status Panel_CLS_Brightness_Level(MDP_Display_IDType eDisplayId,
BacklightConfigType *pBacklightConfig){...}
MDP_Status Panel_CLS_Reset(MDPPlatformPanelResetInfo *pResetInfo){...}
5. Add OEM panel to uefiPanelList[0] and define its detection parameters at:<>/ QcomPkg/SocPkg/<ChipsetName>/Library/MDPPlatformLib/MDPPlatformLib.c
For example,
const MDPPlatformPanelType uefiPanelList[] =
{
MDPPLATFORM_PANEL_SHARP_4K_DSC_CMD, /* NT35950 4k
command panel DSC mode */
MDPPLATFORM_PANEL_SHARP_4K_DSC_VIDEO, /* NT35950 4k
video panel DSC mode */
MDPPLATFORM_PANEL_TRULY_WQXGA_DSC_CMD, /* Truly 2k cmd
panel DSC mode single dsi */
MDPPLATFORM_PANEL_TRULY_WQXGA_DSC_VIDEO, /* Truly 2k
video panel DSC mode single dsi */
MDPPLATFORM_PANEL_TRULY_WQXGA_DUALDSI_CMD, /* Truly 2k cmd
panel non-DSC mode */
MDPPLATFORM_PANEL_TRULY_WQXGA_DUALDSI_VIDEO, /* Truly 2k
video panel non-DSC mode */
MDPPLATFORM_PANEL_SHARP_4K_EDP, /* Sharp 4k edp
panel */
MDPPLATFORM_PANEL_SHARP_1080P_CMD, /* Sharp 1080P
cmd panel */
MDPPLATFORM_PANEL_TRULY_1080P_CMD, /* Truly 1080P
cmd panel */
MDPPLATFORM_PANEL_TRULY_1080P_VIDEO, /* Truly 1080P
cmd panel */
MDPPLATFORM_PANEL_BOE_AMOLED_WQHD_DSC_CMD, /* BOE AMOLED
wqhd cmd panel DSC mode single dsi */
MDPPLATFORM_PANEL_AUO_1080P_EDP, /* AUO 1080P eDP
panel */
};
static PlatformDSIDetectParams uefiPanelList[] = {
// Panel #0 - Sharp 4k DSC Command Mode Panel (2160 x 3840 24bpp)
ID:0x8000
{
0x06, // uCmdType
0x05, // total
number of retry on failures
{
{{0xDA, 0x00}, // address to
read ID1
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // expected
readback
},
{{0xDB, 0x00}, // address to
read ID2
{0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // expected
readback
},
{{0xDC, 0x00}, // address to
read ID3
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // expected
readback
}
},
0, // Lane remap
order {0, 1, 2, 3}
NULL, // psPanelCfg
(panel configuration)
0, //
uPanelCfgSize
MDPPLATFORM_PANEL_SHARP_4K_DSC_CMD, //
eSelectedPanel
0 // uFlags
},
2.1.2.2 Define panel functions table
With the new UEFI display architecture, the MDPPlatformLib is restructured to support common
panel functions and customized OEM APIs for specific panel functions, which are not present on the
reference panel). Follow the steps to define the panel functions table:
1. Refer to MDPPlatformLibPanelCommon.c for common panel functions and configurations.
2. If the OEM panel uses the same common panel functions, then add the OEM panel to
sMDPPlatformPanelFunction[] and connect function APIs at: <>/QcomPkg/SocPkg/
ChipsetName/Library/MDPPlatformLib/MDPPlatformLibPanelConfig.h.
Example:
DPPlatformPanelFunctionTable
sMDPPlatformPanelFunction[MDPPLATFORM_PANEL_MAX] =
{
MDPPLATFORM_PANEL_NONE, //
ePanelSelected
NULL, NULL, NULL, NULL, NULL, NULL, NULL
...
{
MDPPLATFORM_PANEL_AUO_1080P_EDP, //
ePanelSelected
"Panel_auo_1080p_edp.xml", //
pPanelXmlConfig
Panel_CLS_PowerUp, //
pPanel_PowerUp
Panel_CLS_PowerDown, //
pPanel_PowerDown
Panel_CLS_Reset, // pPanel_Reset
Panel_CLS_Peripheral_Power, //
pPanel_Peripheral_Power
Panel_CLS_Brightness_Enable, //
pPanel_Brightness_Enable
Panel_CLS_Brightness_Level //
pPanel_Brightness_Level
},
};
3. If the MDPPlatformLibPanelCommon.c does not contain the panel functions that OEM panel
supports, then do one of the following:
□ Modify MDPPlatformLibPanelCommon.c
OR
□ Prepare new files. For example, MDPPlatformLibPanelEdp.c.
2.1.2.3 Add platform panel to config file
To report the panel being used, as shown below in the MDPPlatformLib.c, add panel to the platform
in SetupPlatformPanelConfig():
case EFI_PLATFORMINFO_TYPE_CLS:
pPlatformPanel->eSelectedPanel = MDPPLATFORM_PANEL_AUO_1080P_EDP;
break;
case EFI_PLATFORMINFO_TYPE_RUMI:
default:
pPlatformPanel->eSelectedPanel = MDPPLATFORM_PANEL_NONE;
break;
2.2 Configure panel GPIOs
The following API is an example of the power-up configuration for the primary panel of an MTP device.
OEMs must modify these platforms as required.
MDP_Status MDPPlatformConfigure(MDP_Display_IDType eDisplayId,
MDPPlatformConfigType eConfig, MDPPlatformParams *pPlatformParams)
{ }
The TLMM GPIO needed for a panel on a device CDP/MTP, is available at: boot_images/
QcomPkg/<ChipsetPkg>/Library/MDPPlatformLib/MDPPlatformLib.c
@boot_images/QcomPkg/SocPkg/<ChipsetName>/Library/MDPPlatformLib/
MDPPlatformLibPanelCommon.c
MDPPlatformPanelGpioType sDefaultMDPPanelGpio =
{
24, // uDispResetGpio
MDP_TE_GPIO_82, // eDispTeGpio
26, // eDispModeGpio
};
2.3 Configure power supplies
Display power supplies are configured as following in the pm_config_pam.c file at: boot_images/
boot/QcomPkg/SocPkg/<ChipsetName>/Settings/PMIC/pm_config_pam.c:
#define PMIC_NPA_CLIENT_NODE_DISP_EXT_DP "/node/pmic/client/disp_ext_dp"
#define PMIC_NPA_CLIENT_NODE_DISP_PRIM "/node/pmic/client/disp_prim"
#define PMIC_NPA_CLIENT_NODE_DISP_PRIM_AMOLED "/node/pmic/client/disp_prim_amoled"
The default power supply regulators for display are configured as following:
{
PMIC_NPA_GROUP_ID_DISP_DP_ALT, // Resource Name
PMIC_NPA_MODE_ID_GENERIC_ACTIVE, // Maximum Value
NPA_RESOURCE_DEFAULT | NPA_RESOURCE_DRIVER_UNCONDITIONAL_FIRST, //
Resource Attribute
(void*) pm_pam_disp_dp_alt_rails_info, // Resource User Data
PMIC_NPA_CLIENT_NODE_DISP_DP_ALT, // Node Name
NPA_NODE_DEFAULT, // Node Attributes
NULL,
pm_pam_deps_disp_dp_alt, // Node Dependency
NPA_ARRAY_SIZE(pm_pam_deps_disp_dp_alt), // Deps Count
{
PMIC_NPA_GROUP_ID_DISP_EDP, // Resource Name
PMIC_NPA_MODE_ID_GENERIC_ACTIVE, // Maximum Value
NPA_RESOURCE_SINGLE_CLIENT | NPA_RESOURCE_DRIVER_UNCONDITIONAL, //
Resource Attribute
(void*) pm_pam_disp_edp_rails_info, // Resource User Data
PMIC_NPA_CLIENT_NODE_DISP_EDP, // Node Name
NPA_NODE_DEFAULT, // Node Attributes
NULL,
pm_pam_deps_disp_edp, // Node Dependency
NPA_ARRAY_SIZE(pm_pam_deps_disp_edp), // Deps Count
},
{
PMIC_NPA_GROUP_ID_DISP_EXT_DP, // Resource Name
PMIC_NPA_MODE_ID_GENERIC_ACTIVE, // Maximum Value
NPA_RESOURCE_SINGLE_CLIENT | NPA_RESOURCE_DRIVER_UNCONDITIONAL, //
Resource Attribute
(void*) pm_pam_disp_ext_dp_rails_info, // Resource User Data
PMIC_NPA_CLIENT_NODE_DISP_EXT_DP, // Node Name
NPA_NODE_DEFAULT, // Node Attributes
NULL,
pm_pam_deps_disp_ext_dp, // Node Dependency
NPA_ARRAY_SIZE(pm_pam_deps_disp_ext_dp), // Deps Count
},
{
PMIC_NPA_GROUP_ID_DISP_PRIM, // Resource Name
PMIC_NPA_MODE_ID_GENERIC_ACTIVE, // Maximum Value
NPA_RESOURCE_SINGLE_CLIENT | NPA_RESOURCE_DRIVER_UNCONDITIONAL, //
Resource Attribute
(void*) pm_pam_disp_prim_rails_info, // Resource User Data
PMIC_NPA_CLIENT_NODE_DISP_PRIM, // Node Name
NPA_NODE_DEFAULT, // Node Attributes
NULL,
pm_pam_deps_disp_prim, // Node Dependency
NPA_ARRAY_SIZE(pm_pam_deps_disp_prim), // Deps Count
},
As per the node-mapping definition, the power supply regulators are configured to enable display
power. If these configurations are not working, ensure to measure the voltage at regulator output and
contact QCT PMIC team for assistance.
For any additional power needs (for example, lab and ibb) of the panel, use
Panel_CDP_PeripheralPower API as shown below:
@<directory>/boot_images/Qcompkg/SocPkg/<ChipsetName>/Library/MDPPlatformLib/MDPPlatformLib.c
static MDP_Status Panel_CDP_PeripheralPower(MDP_Display_IDType eDisplayId,
Panel_PowerCtrlParams *pPowerParams, bool32 bPowerUp)
NOTE :When panel does not require additional power supplies, then the
Panel_CDP_PeripheralPower API throws an error, "please comment call to Panel_CDP_PeripheralPower".
2.4 Configure backlight
1. Configure the backlight interface type in QcomPkg/Include/Library/MDPTypes.h
/** Defines the OEM backlight configuration options.
*/
typedef enum
{
MDP_PANEL_BACKLIGHTTYPE_NONE = 0, /**< No backlight adjustment is
available. */
MDP_PANEL_BACKLIGHTTYPE_PMIC, /**< Backlight is controlled through
PMIC PWM or WLED. For OLED, PMIC uses SWIRE to control brightness */
MDP_PANEL_BACKLIGHTTYPE_I2C, /**< Backlight is controlled through
I2C. */
MDP_PANEL_BACKLIGHTTYPE_DSI, /**< Backlight is controlled through
the DSI command. */
MDP_PANEL_BACKLIGHTTYPE_ACPI, /**< Backlight is controlled through
the ACPI method. */
MDP_PANEL_BACKLIGHTTYPE_MAX, /**< Enumeration marker for the max.
*/
MDP_PANEL_BACKLIGHTTYPE_FORCE_32BIT = 0x7FFFFFFF /**< Forces the
enumeration to 32 bits. */
} MDP_Panel_BacklightType;
2. Configure the backlight pmic driver type in QcomPkg/Include/Library/MDPTypes.h
/** PMIC control method for backlight control.
*/
typedef enum
{
MDP_PMIC_BACKLIGHT_CONTROLTYPE_NONE = 0,
/**< No backlight control method. */
MDP_PMIC_BACKLIGHT_CONTROLTYPE_LPG,
/**< Backlight controlled through LPG module. */
MDP_PMIC_BACKLIGHT_CONTROLTYPE_WLED,
/**< Backlight controlled through WLED module. */
MDP_PMIC_BACKLIGHT_CONTROLTYPE_MAX,
/**< Enumeration marker for the max. */
MDP_PMIC_BACKLIGHT_CONTROLTYPE_FORCE_32BIT = 0X7FFFFFFF
/**< Forces the enumeration to 32 bits. */
} MDP_PmicBacklightControlType;
3. Configure the bit width (DSI panel only) – 8bits or 10 bits in QcomPkg/Settings/Panel/panel_xxx.xml
<BacklightBitWidth>10</BacklightBitWidth>
2.5 Enable panel power and reset power-up sequence
Add new panel power on/off/reset, backlight enable/backlight level functions in QcomPkg\SocPkg
\<ChipsetName>\Library\MDPPlatformLib\MDPPlatformLibPanelConfig.h
MDPPlatformPanelFunctionTable
sMDPPlatformPanelFunction[MDPPLATFORM_PANEL_MAX] =
{
…{
MDPPLATFORM_PANEL_AUO_1080P_EDP, // ePanelSelected
"Panel_auo_1080p_edp.xml", // pPanelXmlConfig
Panel_CLS_PowerUp, // pPanel_PowerUp
Panel_CLS_PowerDown, //
pPanel_PowerDown
Panel_CLS_Reset, // pPanel_Reset
Panel_CLS_Peripheral_Power, //
pPanel_Peripheral_Power
Panel_CLS_Brightness_Enable, //
pPanel_Brightness_Enable
Panel_CLS_Brightness_Level //
pPanel_Brightness_Level
},
};
#endif // __MDP_PLATFORM_LIB_PANEL_CONFIG__H__
2.6 Build UEFI
For UEFI compilation information, see boot_images\QcomPkg\Docs\BuildingUEFI.txt
1. Build UEFI into XBL image:
boot_images/QcomPkg$ ./edksetup.sh
boot_images/QcomPkg$ make –C <PATH> boot_images/BaseTools/Source/C
For MSM8998:
Linux Android – python ../buildit.py --variant LA -r DEBUG -t Msm8998Pkg
Windows – python ../buildit.py --variant WP -r DEBUG -t Msm8998Pkg
For SDM660:
boot_images/QcomPkg$ python buildit.py --variant LA -r DEBUG -t Sdm660Pkg
2. Flash XBL image:
fastboot flash xbl xbl.elf
2.7 Disable continuous splash screen
Continuous splash screen is enabled by default and supported by the UEFI driver.
To disable continuous splash screen, in <DisplayPrimaryFlags> add
MDP_PANEL_FLAG_DISABLE_SEAMLESS_SPLASH 0x01000000
This command makes the driver de-initialize Adreno DPU and turn off the display when exiting in MDPExitBoot.
Splash address is defined in QcomPkg\SocPkg\<ChipsetPkg>\Common\uefiplat.cfg as:
0x9D400000, 0x02400000, "Display Reserved", AddMem, MEM_RES, WRITE_THROUGH,
MaxMem, WRITE_THROUGH_XN
3.1 Enable logs for debugging
Follow the steps below to enable serial output logs for debugging,
1. Refer to the following two logging APIs as well as to the following figure.
#define EFI_D_WARN DEBUG_WARN’
…
#define EFI_D_ERROR DEBUG_ERROR
Default Log level is defined in debuglib.h
2. Enable the MDP_Log_Message as follows:
@Include/Library/MDPSystem.h:
void MDP_Log_Message(MDP_LogLevel uLogType, char *pLogString, ...);
typedef enum
{
MDP_LOGLEVEL_ERROR,
MDP_LOGLEVEL_WARN,
MDP_LOGLEVEL_INFO,
} MDP_LogLevel;
NOTE: Use TRACE32 to implement the single-step debugging or to obtain the Adreno DPU register dump
4 Panel-specific customizations
The panel bringup and customizations require modifications in MDPPlatformLib.c file. Additional
configurations such as panel init sequence, reset sequence, power supplies, panel ID, and panel auto
detection can also be done by modifying MDPPlatformLib.c.
4.1 Set primary DSI
To set DSI0 or DSI1 as primary, define DSIControllerMapping in MDPPlatformLib.c as follows:
■ For DSI0: <DSIControllerMapping>0</DSIControllerMapping>
■ For DSI1: <DSIControllerMapping>1</DSIControllerMapping>
4.2 Enable LP11 reset
To enable reset when lanes are in LP11 state, add the following in MDPPlatformLib.c:
<DSILP11AtInit>True</DSILP11AtInit>
4.3 Configure display ON/OFF command timing in Command mode
By default, the ON commands are sent before high-speed data transmission.
However, to send ON command after high-speed data transmission and avoid a garbage screen,
define the DSIForceCmdInVideoHS in panel XML file.
4.4 Configure BLLP power state in Video mode
Many panels have mandatory requirements for the power modes in BLLP. To configure different power
modes, the following nodes are available:
■ DSIHsaHseAfterVsVe: Specifies Pulse mode for the panel
□ 0 = Does not send HSA/HE following VS/VE packet (default)
□ 1 = Sends HSA/HE following VS/VE packet
■ DSILowPowerModeInHFP: Determines DSI lane state during horizontal front porch (HFP)blanking period.
■ DSILowPowerModeInHBP: Determines DSI lane state during horizontal back porch (HBP)blanking period.
■ DSILowPowerModeInHSA: Determines DSI lane state during horizontal sync active (HSA) mode.
■ DSILowPowerModeInBLLPEOF: Determines DSI lane state during BLLP EOF.
■ DSILowPowerModeInBLLP: Determines DSI lane state during BLLP.
As the HSA, HBP, and HFP are too short for the DSI link to transition between HS and LP modes. Attempting to transition between HS and LP modes may result in a DSI FIFO overflow. Hence, in the HS mode set the DSILowPowerModeInHFP/HBP/HSAproperties corresponding to the register bits of DSI_VIDEO_MODE_CTRL to 0.
HS mode to LP mode transfer transition time from DSI Tx is approximately 2 µs. The actual duration depends the PHY timing parameters.
Some panels require that the LP11 state be entered only once during the BLLP period such as in the discontinuous clock mode. To enter LP11 state only once in BLLP period, set DSILowPowerModeInBLLPEOF to 1 and retain all other *PowerMode properties at 0 in the panel XML definition
4.5 Panel orientation
If the panel is mounted upside down, verify whether the panel supports a flip from the driver IC side. If
flip is not enabled from the driver IC, enable the relevant flip by defining PanelOrientation in panel
XML definition. This property is defined with one of the following values:
■ 2 – Flips vertically
■ 0 – no flip (default)
4.6 Change DSI host escape clock
Some panels require a specific value for DSI TLpx parameter and hence requires a different escape
clock value and not the standard escape clock value of 19.2 MHz.
To change the host escape clock value, in panel.xml define DSIEscapeClockFrequency as
following:
<DSIEscapeClockFrequency>9600000</DSIEscapeClockFrequency>
NOTE It is not possible to support every value for escape clock. Hence, a nearest possible value
is configured. 19200000 is the default value when no value is specified
4.7 Configure DSC parameters
For OEMs using VESA DSC compresure panel, the DSC Command mode or Video mode panel must
be configured with different parameters for DSIDSCSlicePerPacket
Command mode
<DSIDSCSlicePerPacket>1</DSIDSCSlicePerPacket>
Video mode
<DSIDSCSlicePerPacket>2</DSIDSCSlicePerPacket>
For other DSC related setting, refer to the panel/DDIC vendor
4.8 Configure panel refresh rate
The panel refresh rate is configurable in the UEFI stage.
For example:
When the panel refresh rate is 60 hz: 60=0x3c:
<DSIRefreshRate>0x3C0000</DSIRefreshRate>
When the panel refresh rate is 120 hz: 120=0x78:
<DSIRefreshRate>0x780000</DSIRefreshRate>
4.9 Command panel TE GPIOs
The TLMM TE GPIOs available for each chip are defined at @boot_images/QcomPkg/SocPkg/
<ChipsetName>/Library/MDPPlatformLib/ MDPPlatformLibPanelCommon.c
Pimary and secondary TE GPIO pin selection must be within the assigned values for proper function.
/* Display TE gpio function table */
MDPPlatformTeGpioFunctionType gMDPTeGpioTable[MDP_TE_GPIO_MAX] =
{
…
};
Primary and secondary panel TE GPIO pins are defined with default values on the Qualcomm
platform, as shown as follows.
If the OEM platform requires different GPIOs, modify the eDispTeGpio pin.
MDPPlatformPanelGpioType sDefaultMDPPanelGpio =
{
24, // uDispResetGpio
MDP_TE_GPIO_82, // eDispTeGpio
26, // eDispModeGpio
};
/* Secondary panel GPIO setting */
MDPPlatformPanelGpioType sSecondaryPanelGPIO =
{
25, // uDispResetGpio
MDP_TE_GPIO_83, // eDispTeGpio
0, // eDispModeGpio
};
Then, define the following property in the Panel XML config file to map the TLMM GPIO to the Adreno
DPU mdp_vsync signal. Refer to Display Drivers (ACPI and XML) User Guide (80-NB116-2) for more
information.
<DSITEvSyncSelect>x</DSITEvSyncSelect> //0 mdp_vsync_p;1 mdp_vsync_s;
2:mdp_vsync_e
The following is an example with MDP_TE_GPIO_84 (mdp_vsync_e) configured as the primary
display TE source
MDPPlatformPanelGpioType sDefaultMDPPanelGpio =
{
24,// uDispResetGpio
MDP_TE_GPIO_84,// eDispTeGpio
26,// eDispModeGpio
};
<DSITEvSyncSelect>2</DSITEvSyncSelect> //2: map mdp_vsync_e to primary display mdp_vsync signal
A.1 UEFI implementation
UEFI is implemented in two parts:
■ XBL core contains chipset-specific core protocols (drivers) and core applications (such ascharging). XBL core is part of the non-HLOS boot images code.
■ ABL contains chipset-independent applications such as fastboot. ABL is part of the open-source
Linux Android source tree on Code Aurora Forum. ABL source is BSD-licensed.
Little Kernel (LK) device drivers are moved into the XBL core. Leveraging drivers from XBL core
reduces code duplication. The Linux loader and fastboot functionality are refactored as standalone
UEFI applications. Customers transitioning from LK need to ensure that their LK modifications are
ported to XBL Core and ABL.
Access to QTI-specific software drivers are exposed via standard UEFI protocols or protocol
extensions, where necessary.
For details on UEFI components, QTI UEFI components and UEFI implementation see Linux Android
UEFI Integration User Guide (80-P2484-37).
There are two types of drivers, early DXE phase drivers and UEFI drivers. As UEFI Protocols are
implemented in the UEFI driver, it is important that UEFI Protocols are defined in the UEFI
Specification. Otherwise UEFI driver needs to be converted to a DXE driver.
425

被折叠的 条评论
为什么被折叠?



