fusee/sept: delegate SoC selection to individual components and keep common code SoC-agnostic

This commit is contained in:
hexkyz
2020-12-04 16:29:30 +00:00
committed by Michael Scire
parent db8a367834
commit f40fa150d8
20 changed files with 212 additions and 112 deletions

View File

@@ -19,6 +19,7 @@
#include <string.h>
#include "di.h"
#include "fuse.h"
#include "timers.h"
#include "i2c.h"
#include "pmc.h"
@@ -32,6 +33,11 @@
static uint32_t g_lcd_vendor = 0;
/* Determine the current SoC for Mariko specific code. */
static bool is_soc_mariko() {
return (fuse_get_soc_type() == 1);
}
static void do_dsi_sleep_or_register_writes(const dsi_sleep_or_register_write_t *writes, uint32_t num_writes) {
for (uint32_t i = 0; i < num_writes; i++) {
if (writes[i].kind == 1) {
@@ -56,7 +62,7 @@ static void dsi_wait(uint32_t timeout, uint32_t offset, uint32_t mask, uint32_t
udelay(delay);
}
void display_init_erista(void) {
static void display_init_erista(void) {
volatile tegra_car_t *car = car_get_regs();
volatile tegra_pmc_t *pmc = pmc_get_regs();
volatile tegra_pinmux_t *pinmux = pinmux_get_regs();
@@ -206,7 +212,7 @@ void display_init_erista(void) {
do_register_writes(DI_BASE, display_config_dc_02, 113);
}
void display_init_mariko(void) {
static void display_init_mariko(void) {
volatile tegra_car_t *car = car_get_regs();
volatile tegra_pmc_t *pmc = pmc_get_regs();
volatile tegra_pinmux_t *pinmux = pinmux_get_regs();
@@ -366,7 +372,7 @@ void display_init_mariko(void) {
do_register_writes(DI_BASE, display_config_dc_02, 113);
}
void display_end_erista(void) {
static void display_end_erista(void) {
volatile tegra_car_t *car = car_get_regs();
volatile tegra_pinmux_t *pinmux = pinmux_get_regs();
@@ -448,7 +454,7 @@ void display_end_erista(void) {
pinmux->lcd_bl_pwm = (((pinmux->lcd_bl_pwm >> 2) << 2) | 1);
}
void display_end_mariko(void) {
static void display_end_mariko(void) {
volatile tegra_car_t *car = car_get_regs();
volatile tegra_pinmux_t *pinmux = pinmux_get_regs();
@@ -530,6 +536,22 @@ void display_end_mariko(void) {
pinmux->lcd_bl_pwm = (((pinmux->lcd_bl_pwm >> 2) << 2) | 1);
}
void display_init(void) {
if (is_soc_mariko()) {
display_init_mariko();
} else {
display_init_erista();
}
}
void display_end(void) {
if (is_soc_mariko()) {
display_end_mariko();
} else {
display_end_erista();
}
}
void display_backlight(bool enable) {
/* Enable Backlight PWM. */
gpio_write(GPIO_LCD_BL_PWM, enable ? GPIO_LEVEL_HIGH : GPIO_LEVEL_LOW);