mb/google/rauru: Add FORCE_MAX_SWING quirk for ATNA40HQ01-0

The flickering issue on ATNA40HQ01-0 panel can be resolved by setting
the swing level to the maximum (500mV). Therefore, add FORCE_MAX_SWING
quirk for ATNA40HQ01-0 panel where the fw config's OLED_WQXGA_PLUS field
is set to PRESENT. As OLED_WQXGA_PLUS is currently only available on
Navi, add an overridetree.cb for Navi.

BRANCH=rauru
BUG=b:392040003
TEST=check edp training pass and show log:
[INFO ]  fw_config match found: OLED_WQXGA_PLUS=PRESENT
...
[INFO ]  update_swing_preemphasis: Force swing setting to 3 (500 mV)

Change-Id: I4797ef8fe2257a9b578a969794d624d6e0f97d07
Signed-off-by: Yidi Lin <yidilin@chromium.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/87028
Reviewed-by: Yu-Ping Wu <yupingso@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Paul Menzel <paulepanter@mailbox.org>
This commit is contained in:
Yidi Lin 2025-03-27 12:53:05 +08:00
commit ee16627a6d
7 changed files with 56 additions and 2 deletions

View file

@ -48,6 +48,12 @@ config MAINBOARD_PART_NUMBER
default "Navi" if BOARD_GOOGLE_NAVI
default "Rauru" if BOARD_GOOGLE_RAURU
config VARIANT_DIR
default "navi" if BOARD_GOOGLE_NAVI
config OVERRIDE_DEVICETREE
default "variants/\$(CONFIG_VARIANT_DIR)/overridetree.cb" if BOARD_GOOGLE_NAVI
config BOOT_DEVICE_SPI_FLASH_BUS
int
default 8

View file

@ -12,3 +12,7 @@ ramstage-y += boardid.c
ramstage-y += mainboard.c
ramstage-y += panel.c
ramstage-y += regulator.c
CPPFLAGS_common += -I$(src)/mainboard/$(MAINBOARDDIR)/include
subdirs-y += variants/$(VARIANT_DIR)

View file

@ -0,0 +1,10 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef __MAINBOARD_GOOGLE_RAURU_VARIANTS_H__
#define __MAINBOARD_GOOGLE_RAURU_VARIANTS_H__
#include <soc/display.h>
void fw_config_panel_override(struct panel_description *panel);
#endif /* __MAINBOARD_GOOGLE_RAURU_VARIANTS_H__ */

View file

@ -4,6 +4,7 @@
#include <gpio.h>
#include <soc/ddp.h>
#include <soc/dsi.h>
#include <variants.h>
#include "gpio.h"
#include "panel.h"
@ -20,7 +21,7 @@ static void power_on_panel(void)
gpio_set_mode(GPIO_EDP_HPD_1V8, GPIO_FUNC(EINT13, EDP_TX_HPD));
}
static struct panel_description panel = {
static struct panel_description rauru_panel = {
.configure_backlight = configure_backlight,
.power_on = power_on_panel,
.disp_path = DISP_PATH_EDP,
@ -41,10 +42,16 @@ static struct panel_description edp_panel = {
.orientation = LB_FB_ORIENTATION_NORMAL,
};
__weak void fw_config_panel_override(struct panel_description *panel)
{
}
struct panel_description *get_active_panel(void)
{
if (CONFIG(BOARD_GOOGLE_RAURU))
return &panel;
return &rauru_panel;
fw_config_panel_override(&edp_panel);
return &edp_panel;
}

View file

@ -0,0 +1,3 @@
# SPDX-License-Identifier: GPL-2.0-only
ramstage-y += fw_config.c

View file

@ -0,0 +1,11 @@
/* SPDX-License-Identifier: GPL-2.0-only OR MIT */
#include <fw_config.h>
#include <soc/display.h>
#include <variants.h>
void fw_config_panel_override(struct panel_description *panel)
{
if (fw_config_probe(FW_CONFIG(OLED_WQXGA_PLUS, PRESENT)))
panel->quirks |= PANEL_QUIRK_FORCE_MAX_SWING;
}

View file

@ -0,0 +1,13 @@
## SPDX-License-Identifier: GPL-2.0-only
fw_config
field OLED_WQXGA_PLUS 1 1
option PRESENT 1
option ABSENT 0
end
end
chip soc/mediatek/mt8196
device domain 0 on
end
end