You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hello, I have a Huawei T1-A21W tablet (msm8916) and I am currently trying to port the display, but have encountered some issues.
The display screen of this tablet is boe_nt51017_10_800p_video
From the downstream kernel source code, it can be seen that the display of this tablet has been processed in a very special way. There is code for "Huawei, xxx" in the device tree, and Huawei has made additional processing on its own.
This is the device tree link of the downstream kernel。https://github.com/hicode002/android_kernel_huawei_hwt1a21w/blob/main/arch/arm64/boot/dts/qcom/huawei_msm8916_t110_p0_a21w/huawei_t110_p0_a21w.dts
However, it should be noted that the device tree extracted from the device does not actually include the following four lines。
Then I discovered some interesting issues, such as Huawei using L15 to power the VDDIO of MDSS-DSI, and in fact, they use this function every time the screen is turned on。
static void hw_panel_power_en(struct mdss_panel_data* pdata, int enable)
{
struct mdss_dsi_ctrl_pdata* ctrl_pdata = NULL;
ctrl_pdata = container_of(pdata, struct mdss_dsi_ctrl_pdata, panel_data);
if (gpio_is_valid(ctrl_pdata->lcd_vcc_gpio)){
gpio_set_value((ctrl_pdata->lcd_vcc_gpio), enable);
pr_info("%s,%d set en lcd_vcc_gpio = %d \n", __func__, __LINE__, enable);
}
mdelay(2);
}
it is used to open gpio 32 and 97 before opening the regulator, but they are called vreg, I'm not quite sure。
for (i = 0; i < DSI_MAX_PM; i++) {
/*
* Core power module will be enabled when the
* clocks are enabled
*/
if (DSI_CORE_PM == i)
continue;
ret = msm_dss_enable_vreg(
ctrl_pdata->power_data[i].vreg_config,
ctrl_pdata->power_data[i].num_vreg, 1);
if (ret) {
pr_err("%s: failed to enable vregs for %s\n",
__func__, __mdss_dsi_pm_name(i));
goto error_enable;
}
}
Now that I have compiled my kernel and used it for startup, my device was initially backlit, but as the display initialized, the screen completely turned off and never lit up again, and there seemed to be no major errors in the logs. The following is the dmesg log of the kernel. https://pastebin.com/RNEVgg8n
I have tried some solutions, such as deleting MIPI_DSI_CLOCK_NON_CONTINUOUS, because I found the following logs in the official lk.
[1550] mipi clk continue mode
But it doesn't work.
Also, I saw someone say it's because my panel uses ESD, which is not supported. Indeed, I saw something related to saw in the downstream kernel.
Hello, I have a Huawei T1-A21W tablet (msm8916) and I am currently trying to port the display, but have encountered some issues.
The display screen of this tablet is boe_nt51017_10_800p_video
From the downstream kernel source code, it can be seen that the display of this tablet has been processed in a very special way. There is code for "Huawei, xxx" in the device tree, and Huawei has made additional processing on its own.
This is the device tree link of the downstream kernel。https://github.com/hicode002/android_kernel_huawei_hwt1a21w/blob/main/arch/arm64/boot/dts/qcom/huawei_msm8916_t110_p0_a21w/huawei_t110_p0_a21w.dts
However, it should be noted that the device tree extracted from the device does not actually include the following four lines。
But it was replaced with
Then I found the code for Huawei to parse this device tree,。
https://github.com/hicode002/android_kernel_huawei_hwt1a21w/blob/7e3920f2be47387511bb4afdd5681b5895cdae42/drivers/video/msm/mdss/mdss_dsi.c
Then I discovered some interesting issues, such as Huawei using L15 to power the VDDIO of MDSS-DSI, and in fact, they use this function every time the screen is turned on。
it is used to open gpio 32 and 97 before opening the regulator, but they are called vreg, I'm not quite sure。
So based on the information above, I believe that numbers 32 and 97 are just gpio and only need to be opened when powered on. Therefore, I used Linux mdss dsi panel driver generator to generate the panel file and made some modifications (adding gpio, vdd, and vddio)。
Here is the code I have modified
https://pastebin.com/KWJ9eTFd
Below is the dtsi of the downstream kernel BOE panel。
https://github.com/hicode002/android_kernel_huawei_hwt1a21w/blob/main/arch/arm64/boot/dts/qcom/huawei_msm8916_t110_p0_a21w/hw-panel-boe-nt51017-10-800p-video.dtsi
But there is a problem that the dtsi of the downstream kernel is different from the BOE panel code I obtained by decompiling the original device tree in the device!!
Here is the code extracted from my device。
https://pastebin.com/mw3nYTiM
The descriptions of dsi_lp_mode and dsi_hs_mode inside are different
Now that I have compiled my kernel and used it for startup, my device was initially backlit, but as the display initialized, the screen completely turned off and never lit up again, and there seemed to be no major errors in the logs. The following is the dmesg log of the kernel.
https://pastebin.com/RNEVgg8n
I have tried some solutions, such as deleting MIPI_DSI_CLOCK_NON_CONTINUOUS, because I found the following logs in the official lk.
But it doesn't work.
Also, I saw someone say it's because my panel uses ESD, which is not supported. Indeed, I saw something related to saw in the downstream kernel.
in https://github.com/Mustang-ssc/android_kernel_huawei_hwt1a21l/blob/android-5.X-stock/arch/arm/boot/dts/qcom/msm8916-pm.dtsi
This patch is strange, is it the reason for the black screen? So what should I do next?
I am completely trapped now and I need help!!!
The text was updated successfully, but these errors were encountered: