summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mainboard/google/geralt/display.c47
-rw-r--r--src/mainboard/google/geralt/display.h1
-rw-r--r--src/mainboard/google/geralt/panel.c16
-rw-r--r--src/mainboard/google/geralt/panel.h1
-rw-r--r--src/mainboard/google/geralt/panel_geralt.c23
-rw-r--r--src/soc/mediatek/mt8188/Makefile.inc1
6 files changed, 18 insertions, 71 deletions
diff --git a/src/mainboard/google/geralt/display.c b/src/mainboard/google/geralt/display.c
index 8c7a0c1cf6..fa007a1e28 100644
--- a/src/mainboard/google/geralt/display.c
+++ b/src/mainboard/google/geralt/display.c
@@ -1,9 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-only */
-#include <assert.h>
#include <console/console.h>
#include <delay.h>
-#include <device/i2c_simple.h>
#include <edid.h>
#include <framebuffer_info.h>
#include <gpio.h>
@@ -11,16 +9,12 @@
#include <soc/dptx.h>
#include <soc/dsi.h>
#include <soc/gpio_common.h>
-#include <soc/i2c.h>
#include <soc/mtcmos.h>
#include "display.h"
#include "gpio.h"
#include "panel.h"
-#define PMIC_TPS65132_I2C I2C3
-#define PMIC_TPS65132_SLAVE 0x3E
-
int configure_display(void)
{
struct edid edid;
@@ -78,44 +72,3 @@ int configure_display(void)
return 0;
}
-
-void tps65132s_program_eeprom(void)
-{
- u8 value = 0;
- u8 value1 = 0;
-
- /* Initialize I2C3 for PMIC TPS65132 */
- mtk_i2c_bus_init(PMIC_TPS65132_I2C, I2C_SPEED_FAST);
- mdelay(10);
-
- gpio_output(GPIO_EN_PPVAR_MIPI_DISP, 1);
- gpio_output(GPIO_EN_PPVAR_MIPI_DISP_150MA, 1);
- mdelay(10);
-
- i2c_read_field(PMIC_TPS65132_I2C, PMIC_TPS65132_SLAVE, 0x00, &value, 0xFF, 0);
- i2c_read_field(PMIC_TPS65132_I2C, PMIC_TPS65132_SLAVE, 0x01, &value1, 0xFF, 0);
-
- if (value != 0x11 || value1 != 0x11) {
- printk(BIOS_INFO, "Just set AVDD AVEE 5.7V to EEPROM Data in first time.\n");
-
- /* Set AVDD = 5.7V */
- if (panel_pmic_reg_mask(PMIC_TPS65132_I2C, PMIC_TPS65132_SLAVE, 0x00, 0x11,
- 0x1F) < 0)
- return;
-
- /* Set AVEE = -5.7V */
- if (panel_pmic_reg_mask(PMIC_TPS65132_I2C, PMIC_TPS65132_SLAVE, 0x01, 0x11,
- 0x1F) < 0)
- return;
-
- /* Set EEPROM Data */
- if (panel_pmic_reg_mask(PMIC_TPS65132_I2C, PMIC_TPS65132_SLAVE, 0xFF, 0x80,
- 0xFC) < 0)
- return;
- mdelay(50);
- }
-
- gpio_output(GPIO_EN_PPVAR_MIPI_DISP, 0);
- gpio_output(GPIO_EN_PPVAR_MIPI_DISP_150MA, 0);
- mdelay(5);
-}
diff --git a/src/mainboard/google/geralt/display.h b/src/mainboard/google/geralt/display.h
index 71e0e08392..29153b303c 100644
--- a/src/mainboard/google/geralt/display.h
+++ b/src/mainboard/google/geralt/display.h
@@ -4,6 +4,5 @@
#define __MAINBOARD_GOOGLE_GERALT_DISPLAY_H__
int configure_display(void);
-void tps65132s_program_eeprom(void);
#endif
diff --git a/src/mainboard/google/geralt/panel.c b/src/mainboard/google/geralt/panel.c
index 78d4f84bbd..3174870050 100644
--- a/src/mainboard/google/geralt/panel.c
+++ b/src/mainboard/google/geralt/panel.c
@@ -3,7 +3,6 @@
#include <boardid.h>
#include <cbfs.h>
#include <console/console.h>
-#include <device/i2c_simple.h>
#include <edid.h>
#include <gpio.h>
#include <soc/gpio_common.h>
@@ -12,21 +11,6 @@
#include "gpio.h"
#include "panel.h"
-int panel_pmic_reg_mask(u32 bus, u8 chip, u8 addr, u8 val, u8 mask)
-{
- u8 msg = 0;
-
- if (i2c_read_field(bus, chip, addr, &msg, 0xFF, 0) < 0) {
- printk(BIOS_ERR, "Failed to read i2c: addr(%u)\n", addr);
- return -1;
- }
-
- msg &= ~mask;
- msg |= val;
-
- return i2c_write_field(bus, chip, addr, msg, 0xFF, 0);
-}
-
static void get_mipi_cmd_from_cbfs(struct panel_description *desc)
{
/*
diff --git a/src/mainboard/google/geralt/panel.h b/src/mainboard/google/geralt/panel.h
index 0335ece695..11b7fb0918 100644
--- a/src/mainboard/google/geralt/panel.h
+++ b/src/mainboard/google/geralt/panel.h
@@ -17,7 +17,6 @@ struct panel_description {
};
void fill_lp_backlight_gpios(struct lb_gpios *gpios);
-int panel_pmic_reg_mask(u32 bus, u8 chip, u8 addr, u8 val, u8 mask);
uint32_t panel_id(void);
struct panel_description *get_panel_description(uint32_t panel_id);
struct panel_description *get_active_panel(void);
diff --git a/src/mainboard/google/geralt/panel_geralt.c b/src/mainboard/google/geralt/panel_geralt.c
index 159bc76cb6..9a98836473 100644
--- a/src/mainboard/google/geralt/panel_geralt.c
+++ b/src/mainboard/google/geralt/panel_geralt.c
@@ -8,6 +8,7 @@
#include <soc/gpio_common.h>
#include <soc/i2c.h>
#include <soc/regulator.h>
+#include <soc/tps65132s.h>
#include <soc/pmif.h>
#include <string.h>
@@ -15,6 +16,7 @@
#include "gpio.h"
#include "panel.h"
+#define PMIC_TPS65132_I2C I2C3
static void configure_mipi_pwm_backlight(void)
{
@@ -29,17 +31,26 @@ static void configure_edp_backlight(void)
static void power_on_mipi_boe_tv110c9m_ll0(void)
{
- tps65132s_program_eeprom();
+ const struct tps65132s_reg_setting reg_settings[] = {
+ { PMIC_TPS65132_VPOS, 0x11, 0x1f },
+ { PMIC_TPS65132_VNEG, 0x11, 0x1f },
+ { PMIC_TPS65132_DLYX, 0x95, 0xff },
+ { PMIC_TPS65132_ASSDD, 0x5b, 0xff },
+ };
+ const struct tps65132s_cfg cfg = {
+ .i2c_bus = PMIC_TPS65132_I2C,
+ .en = GPIO_EN_PPVAR_MIPI_DISP,
+ .sync = GPIO_EN_PPVAR_MIPI_DISP_150MA,
+ .settings = reg_settings,
+ .setting_counts = ARRAY_SIZE(reg_settings),
+ };
/* Enable VM18V */
mainboard_enable_regulator(MTK_REGULATOR_VDD18, true);
-
+ if (tps65132s_setup(&cfg) != CB_SUCCESS)
+ printk(BIOS_ERR, "Failed to set up voltage regulator tps65132s\n");
gpio_output(GPIO_DISP_RST_1V8_L, 0);
mdelay(1);
-
- gpio_output(GPIO_EN_PPVAR_MIPI_DISP, 1);
- gpio_output(GPIO_EN_PPVAR_MIPI_DISP_150MA, 1);
- mdelay(10);
gpio_output(GPIO_DISP_RST_1V8_L, 1);
mdelay(1);
gpio_output(GPIO_DISP_RST_1V8_L, 0);
diff --git a/src/soc/mediatek/mt8188/Makefile.inc b/src/soc/mediatek/mt8188/Makefile.inc
index 651cff0d5a..67c2d7ac23 100644
--- a/src/soc/mediatek/mt8188/Makefile.inc
+++ b/src/soc/mediatek/mt8188/Makefile.inc
@@ -55,6 +55,7 @@ ramstage-y += ../common/rtc.c ../common/rtc_osc_init.c ../common/rtc_mt6359p.c
ramstage-y += soc.c
ramstage-y += ../common/spm.c spm.c
ramstage-y += ../common/sspm.c
+ramstage-y += ../common/tps65132s.c
ramstage-y += ../common/usb.c usb.c
BL31_MAKEARGS += PLAT=mt8188