mirror of
https://github.com/Atmosphere-NX/Atmosphere
synced 2024-12-22 20:31:14 +00:00
fusee/sept: delegate SoC selection to individual components and keep common code SoC-agnostic
This commit is contained in:
parent
4ffdf8d525
commit
53c684a17a
20 changed files with 212 additions and 112 deletions
|
@ -19,6 +19,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "di.h"
|
#include "di.h"
|
||||||
|
#include "fuse.h"
|
||||||
#include "timers.h"
|
#include "timers.h"
|
||||||
#include "i2c.h"
|
#include "i2c.h"
|
||||||
#include "pmc.h"
|
#include "pmc.h"
|
||||||
|
@ -32,6 +33,11 @@
|
||||||
|
|
||||||
static uint32_t g_lcd_vendor = 0;
|
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) {
|
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++) {
|
for (uint32_t i = 0; i < num_writes; i++) {
|
||||||
if (writes[i].kind == 1) {
|
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);
|
udelay(delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
void display_init_erista(void) {
|
static void display_init_erista(void) {
|
||||||
volatile tegra_car_t *car = car_get_regs();
|
volatile tegra_car_t *car = car_get_regs();
|
||||||
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
||||||
volatile tegra_pinmux_t *pinmux = pinmux_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);
|
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_car_t *car = car_get_regs();
|
||||||
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
||||||
volatile tegra_pinmux_t *pinmux = pinmux_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);
|
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_car_t *car = car_get_regs();
|
||||||
volatile tegra_pinmux_t *pinmux = pinmux_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);
|
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_car_t *car = car_get_regs();
|
||||||
volatile tegra_pinmux_t *pinmux = pinmux_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);
|
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) {
|
void display_backlight(bool enable) {
|
||||||
/* Enable Backlight PWM. */
|
/* Enable Backlight PWM. */
|
||||||
gpio_write(GPIO_LCD_BL_PWM, enable ? GPIO_LEVEL_HIGH : GPIO_LEVEL_LOW);
|
gpio_write(GPIO_LCD_BL_PWM, enable ? GPIO_LEVEL_HIGH : GPIO_LEVEL_LOW);
|
||||||
|
|
|
@ -382,10 +382,8 @@
|
||||||
#define MIPI_CAL_DSIC_MIPI_CAL_CONFIG_2 0x70
|
#define MIPI_CAL_DSIC_MIPI_CAL_CONFIG_2 0x70
|
||||||
#define MIPI_CAL_DSID_MIPI_CAL_CONFIG_2 0x74
|
#define MIPI_CAL_DSID_MIPI_CAL_CONFIG_2 0x74
|
||||||
|
|
||||||
void display_init_erista(void);
|
void display_init(void);
|
||||||
void display_init_mariko(void);
|
void display_end(void);
|
||||||
void display_end_erista(void);
|
|
||||||
void display_end_mariko(void);
|
|
||||||
|
|
||||||
/* Switches screen backlight ON/OFF. */
|
/* Switches screen backlight ON/OFF. */
|
||||||
void display_backlight(bool enable);
|
void display_backlight(bool enable);
|
||||||
|
|
|
@ -34,6 +34,11 @@
|
||||||
#include "timers.h"
|
#include "timers.h"
|
||||||
#include "uart.h"
|
#include "uart.h"
|
||||||
|
|
||||||
|
/* Determine the current SoC for Mariko specific code. */
|
||||||
|
static bool is_soc_mariko() {
|
||||||
|
return (fuse_get_soc_type() == 1);
|
||||||
|
}
|
||||||
|
|
||||||
static void config_oscillators(void) {
|
static void config_oscillators(void) {
|
||||||
volatile tegra_car_t *car = car_get_regs();
|
volatile tegra_car_t *car = car_get_regs();
|
||||||
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
||||||
|
@ -209,7 +214,7 @@ static void config_se_brom(void) {
|
||||||
pmc->rst_status = 0;
|
pmc->rst_status = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void nx_hwinit_erista(bool enable_log) {
|
static void nx_hwinit_erista(bool enable_log) {
|
||||||
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
||||||
volatile tegra_car_t *car = car_get_regs();
|
volatile tegra_car_t *car = car_get_regs();
|
||||||
|
|
||||||
|
@ -320,13 +325,13 @@ void nx_hwinit_erista(bool enable_log) {
|
||||||
/* mc_config_carveout(); */
|
/* mc_config_carveout(); */
|
||||||
|
|
||||||
/* Save SDRAM parameters to scratch. */
|
/* Save SDRAM parameters to scratch. */
|
||||||
sdram_save_params_erista(sdram_get_params_erista(fuse_get_dram_id()));
|
sdram_save_params(sdram_get_params(fuse_get_dram_id()));
|
||||||
|
|
||||||
/* Initialize SDRAM. */
|
/* Initialize SDRAM. */
|
||||||
sdram_init_erista();
|
sdram_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
void nx_hwinit_mariko(bool enable_log) {
|
static void nx_hwinit_mariko(bool enable_log) {
|
||||||
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
||||||
volatile tegra_car_t *car = car_get_regs();
|
volatile tegra_car_t *car = car_get_regs();
|
||||||
|
|
||||||
|
@ -397,8 +402,16 @@ void nx_hwinit_mariko(bool enable_log) {
|
||||||
pmc->tzram_sec_disable = 0x3;
|
pmc->tzram_sec_disable = 0x3;
|
||||||
|
|
||||||
/* Save SDRAM parameters to scratch. */
|
/* Save SDRAM parameters to scratch. */
|
||||||
sdram_save_params_mariko(sdram_get_params_mariko(fuse_get_dram_id()));
|
sdram_save_params(sdram_get_params(fuse_get_dram_id()));
|
||||||
|
|
||||||
/* Initialize SDRAM. */
|
/* Initialize SDRAM. */
|
||||||
sdram_init_mariko();
|
sdram_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
void nx_hwinit(bool enable_log) {
|
||||||
|
if (is_soc_mariko()) {
|
||||||
|
nx_hwinit_mariko(enable_log);
|
||||||
|
} else {
|
||||||
|
nx_hwinit_erista(enable_log);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -24,7 +24,6 @@
|
||||||
#define I2S_BASE 0x702D1000
|
#define I2S_BASE 0x702D1000
|
||||||
#define MAKE_I2S_REG(n) MAKE_REG32(I2S_BASE + n)
|
#define MAKE_I2S_REG(n) MAKE_REG32(I2S_BASE + n)
|
||||||
|
|
||||||
void nx_hwinit_erista(bool enable_log);
|
void nx_hwinit(bool enable_log);
|
||||||
void nx_hwinit_mariko(bool enable_log);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -99,11 +99,7 @@ static void setup_display(void) {
|
||||||
video_init(g_framebuffer);
|
video_init(g_framebuffer);
|
||||||
|
|
||||||
/* Initialize the display. */
|
/* Initialize the display. */
|
||||||
if (fuse_get_soc_type() == 1) {
|
display_init();
|
||||||
display_init_mariko();
|
|
||||||
} else {
|
|
||||||
display_init_erista();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set the framebuffer. */
|
/* Set the framebuffer. */
|
||||||
display_init_framebuffer(g_framebuffer);
|
display_init_framebuffer(g_framebuffer);
|
||||||
|
@ -118,20 +114,12 @@ static void cleanup_display(void) {
|
||||||
display_backlight(false);
|
display_backlight(false);
|
||||||
|
|
||||||
/* Terminate the display. */
|
/* Terminate the display. */
|
||||||
if (fuse_get_soc_type() == 1) {
|
display_end();
|
||||||
display_end_mariko();
|
|
||||||
} else {
|
|
||||||
display_end_erista();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void setup_env(void) {
|
static void setup_env(void) {
|
||||||
/* Initialize hardware. */
|
/* Initialize hardware. */
|
||||||
if (fuse_get_soc_type() == 1) {
|
nx_hwinit(false);
|
||||||
nx_hwinit_mariko(false);
|
|
||||||
} else {
|
|
||||||
nx_hwinit_erista(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set up the exception handlers. */
|
/* Set up the exception handlers. */
|
||||||
setup_exception_handlers();
|
setup_exception_handlers();
|
||||||
|
|
|
@ -125,11 +125,7 @@ static void _check_and_display_atmosphere_fatal_error(void) {
|
||||||
video_init((void *)0xC0000000);
|
video_init((void *)0xC0000000);
|
||||||
|
|
||||||
/* Initialize the display. */
|
/* Initialize the display. */
|
||||||
if (fuse_get_soc_type() == 1) {
|
display_init();
|
||||||
display_init_mariko();
|
|
||||||
} else {
|
|
||||||
display_init_erista();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set the framebuffer. */
|
/* Set the framebuffer. */
|
||||||
display_init_framebuffer((void *)0xC0000000);
|
display_init_framebuffer((void *)0xC0000000);
|
||||||
|
@ -225,11 +221,7 @@ void check_and_display_panic(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize the display. */
|
/* Initialize the display. */
|
||||||
if (fuse_get_soc_type() == 1) {
|
display_init();
|
||||||
display_init_mariko();
|
|
||||||
} else {
|
|
||||||
display_init_erista();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Fill the screen. */
|
/* Fill the screen. */
|
||||||
display_color_screen(color);
|
display_color_screen(color);
|
||||||
|
|
|
@ -35,6 +35,11 @@
|
||||||
#include "sdram.inl"
|
#include "sdram.inl"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Determine the current SoC for Mariko specific code. */
|
||||||
|
static bool is_soc_mariko() {
|
||||||
|
return (fuse_get_soc_type() == 1);
|
||||||
|
}
|
||||||
|
|
||||||
static void sdram_config_erista(const sdram_params_erista_t *params) {
|
static void sdram_config_erista(const sdram_params_erista_t *params) {
|
||||||
volatile tegra_car_t *car = car_get_regs();
|
volatile tegra_car_t *car = car_get_regs();
|
||||||
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
||||||
|
@ -1050,7 +1055,7 @@ static void sdram_config_mariko(const sdram_params_mariko_t *params) {
|
||||||
AHB_ARBITRATION_XBAR_CTRL_0 = ((AHB_ARBITRATION_XBAR_CTRL_0 & 0xFFFEFFFF) | ((params->AhbArbitrationXbarCtrlMemInitDone & 0xFFFF) << 16));
|
AHB_ARBITRATION_XBAR_CTRL_0 = ((AHB_ARBITRATION_XBAR_CTRL_0 & 0xFFFEFFFF) | ((params->AhbArbitrationXbarCtrlMemInitDone & 0xFFFF) << 16));
|
||||||
}
|
}
|
||||||
|
|
||||||
const void *sdram_get_params_erista(uint32_t dram_id) {
|
static const void *sdram_get_params_erista(uint32_t dram_id) {
|
||||||
uint32_t sdram_params_index = sdram_params_index_table_erista[dram_id];
|
uint32_t sdram_params_index = sdram_params_index_table_erista[dram_id];
|
||||||
#ifdef CONFIG_SDRAM_COMPRESS
|
#ifdef CONFIG_SDRAM_COMPRESS
|
||||||
uint8_t *buf = (uint8_t *)0x40030000;
|
uint8_t *buf = (uint8_t *)0x40030000;
|
||||||
|
@ -1061,7 +1066,7 @@ const void *sdram_get_params_erista(uint32_t dram_id) {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
const void *sdram_get_params_mariko(uint32_t dram_id) {
|
static const void *sdram_get_params_mariko(uint32_t dram_id) {
|
||||||
uint32_t sdram_params_index = sdram_params_index_table_mariko[dram_id];
|
uint32_t sdram_params_index = sdram_params_index_table_mariko[dram_id];
|
||||||
#ifdef CONFIG_SDRAM_COMPRESS
|
#ifdef CONFIG_SDRAM_COMPRESS
|
||||||
uint8_t *buf = (uint8_t *)0x40030000;
|
uint8_t *buf = (uint8_t *)0x40030000;
|
||||||
|
@ -1072,7 +1077,7 @@ const void *sdram_get_params_mariko(uint32_t dram_id) {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void sdram_init_erista(void) {
|
static void sdram_init_erista(void) {
|
||||||
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
||||||
const sdram_params_erista_t *params = (const sdram_params_erista_t *)sdram_get_params_erista(fuse_get_dram_id());
|
const sdram_params_erista_t *params = (const sdram_params_erista_t *)sdram_get_params_erista(fuse_get_dram_id());
|
||||||
|
|
||||||
|
@ -1096,7 +1101,7 @@ void sdram_init_erista(void) {
|
||||||
sdram_config_erista(params);
|
sdram_config_erista(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sdram_init_mariko(void) {
|
static void sdram_init_mariko(void) {
|
||||||
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
||||||
const sdram_params_mariko_t *params = (const sdram_params_mariko_t *)sdram_get_params_mariko(fuse_get_dram_id());
|
const sdram_params_mariko_t *params = (const sdram_params_mariko_t *)sdram_get_params_mariko(fuse_get_dram_id());
|
||||||
|
|
||||||
|
@ -1117,7 +1122,7 @@ void sdram_init_mariko(void) {
|
||||||
sdram_config_mariko(params);
|
sdram_config_mariko(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sdram_save_params_erista(const void *save_params) {
|
static void sdram_save_params_erista(const void *save_params) {
|
||||||
const sdram_params_erista_t *params = (const sdram_params_erista_t *)save_params;
|
const sdram_params_erista_t *params = (const sdram_params_erista_t *)save_params;
|
||||||
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
||||||
|
|
||||||
|
@ -2218,7 +2223,7 @@ void sdram_save_params_erista(const void *save_params) {
|
||||||
s(PllMStableTime, 9:0, scratch4, 9:0);
|
s(PllMStableTime, 9:0, scratch4, 9:0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sdram_save_params_mariko(const void *save_params) {
|
static void sdram_save_params_mariko(const void *save_params) {
|
||||||
const sdram_params_mariko_t *params = (const sdram_params_mariko_t *)save_params;
|
const sdram_params_mariko_t *params = (const sdram_params_mariko_t *)save_params;
|
||||||
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
||||||
|
|
||||||
|
@ -3334,3 +3339,27 @@ void sdram_save_params_mariko(const void *save_params) {
|
||||||
c32(0, scratch4);
|
c32(0, scratch4);
|
||||||
s(PllMStableTime, 19:0, scratch4, 19:0);
|
s(PllMStableTime, 19:0, scratch4, 19:0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sdram_init(void) {
|
||||||
|
if (is_soc_mariko()) {
|
||||||
|
sdram_init_mariko();
|
||||||
|
} else {
|
||||||
|
sdram_init_erista();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const void *sdram_get_params(uint32_t dram_id) {
|
||||||
|
if (is_soc_mariko()) {
|
||||||
|
return sdram_get_params_mariko(dram_id);
|
||||||
|
} else {
|
||||||
|
return sdram_get_params_erista(dram_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sdram_save_params(const void *save_params) {
|
||||||
|
if (is_soc_mariko()) {
|
||||||
|
sdram_save_params_mariko(save_params);
|
||||||
|
} else {
|
||||||
|
sdram_save_params_erista(save_params);
|
||||||
|
}
|
||||||
|
}
|
|
@ -18,11 +18,8 @@
|
||||||
#ifndef FUSEE_SDRAM_H_
|
#ifndef FUSEE_SDRAM_H_
|
||||||
#define FUSEE_SDRAM_H_
|
#define FUSEE_SDRAM_H_
|
||||||
|
|
||||||
void sdram_init_erista(void);
|
void sdram_init(void);
|
||||||
void sdram_init_mariko(void);
|
const void *sdram_get_params(uint32_t dram_id);
|
||||||
const void *sdram_get_params_erista(uint32_t dram_id);
|
void sdram_save_params(const void *save_params);
|
||||||
const void *sdram_get_params_mariko(uint32_t dram_id);
|
|
||||||
void sdram_save_params_erista(const void *save_params);
|
|
||||||
void sdram_save_params_mariko(const void *save_params);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -130,11 +130,7 @@ __attribute__((noreturn)) void fatal_error(const char *fmt, ...) {
|
||||||
video_init((void *)0xC0000000);
|
video_init((void *)0xC0000000);
|
||||||
|
|
||||||
/* Initialize the display. */
|
/* Initialize the display. */
|
||||||
if (fuse_get_soc_type() == 1) {
|
display_init();
|
||||||
display_init_mariko();
|
|
||||||
} else {
|
|
||||||
display_init_erista();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set the framebuffer. */
|
/* Set the framebuffer. */
|
||||||
display_init_framebuffer((void *)0xC0000000);
|
display_init_framebuffer((void *)0xC0000000);
|
||||||
|
|
|
@ -98,11 +98,7 @@ static ssize_t decode_utf8(uint32_t *out, const uint8_t *in) {
|
||||||
|
|
||||||
static void console_init_display(void) {
|
static void console_init_display(void) {
|
||||||
/* Initialize the display. */
|
/* Initialize the display. */
|
||||||
if (fuse_get_soc_type() == 1) {
|
display_init();
|
||||||
display_init_mariko();
|
|
||||||
} else {
|
|
||||||
display_init_erista();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set the framebuffer. */
|
/* Set the framebuffer. */
|
||||||
display_init_framebuffer(g_framebuffer);
|
display_init_framebuffer(g_framebuffer);
|
||||||
|
@ -202,11 +198,7 @@ int console_end(void) {
|
||||||
display_backlight(false);
|
display_backlight(false);
|
||||||
|
|
||||||
/* Terminate the display. */
|
/* Terminate the display. */
|
||||||
if (fuse_get_soc_type() == 1) {
|
display_end();
|
||||||
display_end_mariko();
|
|
||||||
} else {
|
|
||||||
display_end_erista();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Display is terminated. */
|
/* Display is terminated. */
|
||||||
g_display_initialized = false;
|
g_display_initialized = false;
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "di.h"
|
#include "di.h"
|
||||||
|
#include "fuse.h"
|
||||||
#include "timers.h"
|
#include "timers.h"
|
||||||
#include "i2c.h"
|
#include "i2c.h"
|
||||||
#include "pmc.h"
|
#include "pmc.h"
|
||||||
|
@ -32,6 +33,11 @@
|
||||||
|
|
||||||
static uint32_t g_lcd_vendor = 0;
|
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) {
|
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++) {
|
for (uint32_t i = 0; i < num_writes; i++) {
|
||||||
if (writes[i].kind == 1) {
|
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);
|
udelay(delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
void display_init_erista(void) {
|
static void display_init_erista(void) {
|
||||||
volatile tegra_car_t *car = car_get_regs();
|
volatile tegra_car_t *car = car_get_regs();
|
||||||
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
||||||
volatile tegra_pinmux_t *pinmux = pinmux_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);
|
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_car_t *car = car_get_regs();
|
||||||
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
||||||
volatile tegra_pinmux_t *pinmux = pinmux_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);
|
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_car_t *car = car_get_regs();
|
||||||
volatile tegra_pinmux_t *pinmux = pinmux_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);
|
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_car_t *car = car_get_regs();
|
||||||
volatile tegra_pinmux_t *pinmux = pinmux_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);
|
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) {
|
void display_backlight(bool enable) {
|
||||||
/* Enable Backlight PWM. */
|
/* Enable Backlight PWM. */
|
||||||
gpio_write(GPIO_LCD_BL_PWM, enable ? GPIO_LEVEL_HIGH : GPIO_LEVEL_LOW);
|
gpio_write(GPIO_LCD_BL_PWM, enable ? GPIO_LEVEL_HIGH : GPIO_LEVEL_LOW);
|
||||||
|
|
|
@ -382,10 +382,8 @@
|
||||||
#define MIPI_CAL_DSIC_MIPI_CAL_CONFIG_2 0x70
|
#define MIPI_CAL_DSIC_MIPI_CAL_CONFIG_2 0x70
|
||||||
#define MIPI_CAL_DSID_MIPI_CAL_CONFIG_2 0x74
|
#define MIPI_CAL_DSID_MIPI_CAL_CONFIG_2 0x74
|
||||||
|
|
||||||
void display_init_erista(void);
|
void display_init(void);
|
||||||
void display_init_mariko(void);
|
void display_end(void);
|
||||||
void display_end_erista(void);
|
|
||||||
void display_end_mariko(void);
|
|
||||||
|
|
||||||
/* Switches screen backlight ON/OFF. */
|
/* Switches screen backlight ON/OFF. */
|
||||||
void display_backlight(bool enable);
|
void display_backlight(bool enable);
|
||||||
|
|
|
@ -70,11 +70,7 @@ void check_and_display_panic(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize the display. */
|
/* Initialize the display. */
|
||||||
if (fuse_get_soc_type() == 1) {
|
display_init();
|
||||||
display_init_mariko();
|
|
||||||
} else {
|
|
||||||
display_init_erista();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Fill the screen. */
|
/* Fill the screen. */
|
||||||
display_color_screen(color);
|
display_color_screen(color);
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "di.h"
|
#include "di.h"
|
||||||
|
#include "fuse.h"
|
||||||
#include "timers.h"
|
#include "timers.h"
|
||||||
#include "i2c.h"
|
#include "i2c.h"
|
||||||
#include "pmc.h"
|
#include "pmc.h"
|
||||||
|
@ -32,6 +33,11 @@
|
||||||
|
|
||||||
static uint32_t g_lcd_vendor = 0;
|
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) {
|
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++) {
|
for (uint32_t i = 0; i < num_writes; i++) {
|
||||||
if (writes[i].kind == 1) {
|
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);
|
udelay(delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
void display_init_erista(void) {
|
static void display_init_erista(void) {
|
||||||
volatile tegra_car_t *car = car_get_regs();
|
volatile tegra_car_t *car = car_get_regs();
|
||||||
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
||||||
volatile tegra_pinmux_t *pinmux = pinmux_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);
|
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_car_t *car = car_get_regs();
|
||||||
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
||||||
volatile tegra_pinmux_t *pinmux = pinmux_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);
|
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_car_t *car = car_get_regs();
|
||||||
volatile tegra_pinmux_t *pinmux = pinmux_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);
|
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_car_t *car = car_get_regs();
|
||||||
volatile tegra_pinmux_t *pinmux = pinmux_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);
|
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) {
|
void display_backlight(bool enable) {
|
||||||
/* Enable Backlight PWM. */
|
/* Enable Backlight PWM. */
|
||||||
gpio_write(GPIO_LCD_BL_PWM, enable ? GPIO_LEVEL_HIGH : GPIO_LEVEL_LOW);
|
gpio_write(GPIO_LCD_BL_PWM, enable ? GPIO_LEVEL_HIGH : GPIO_LEVEL_LOW);
|
||||||
|
|
|
@ -382,10 +382,8 @@
|
||||||
#define MIPI_CAL_DSIC_MIPI_CAL_CONFIG_2 0x70
|
#define MIPI_CAL_DSIC_MIPI_CAL_CONFIG_2 0x70
|
||||||
#define MIPI_CAL_DSID_MIPI_CAL_CONFIG_2 0x74
|
#define MIPI_CAL_DSID_MIPI_CAL_CONFIG_2 0x74
|
||||||
|
|
||||||
void display_init_erista(void);
|
void display_init(void);
|
||||||
void display_init_mariko(void);
|
void display_end(void);
|
||||||
void display_end_erista(void);
|
|
||||||
void display_end_mariko(void);
|
|
||||||
|
|
||||||
/* Switches screen backlight ON/OFF. */
|
/* Switches screen backlight ON/OFF. */
|
||||||
void display_backlight(bool enable);
|
void display_backlight(bool enable);
|
||||||
|
|
|
@ -34,6 +34,11 @@
|
||||||
#include "timers.h"
|
#include "timers.h"
|
||||||
#include "uart.h"
|
#include "uart.h"
|
||||||
|
|
||||||
|
/* Determine the current SoC for Mariko specific code. */
|
||||||
|
static bool is_soc_mariko() {
|
||||||
|
return (fuse_get_soc_type() == 1);
|
||||||
|
}
|
||||||
|
|
||||||
static void config_oscillators(void) {
|
static void config_oscillators(void) {
|
||||||
volatile tegra_car_t *car = car_get_regs();
|
volatile tegra_car_t *car = car_get_regs();
|
||||||
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
||||||
|
@ -209,7 +214,7 @@ static void config_se_brom(void) {
|
||||||
pmc->rst_status = 0;
|
pmc->rst_status = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void nx_hwinit_erista(bool enable_log) {
|
static void nx_hwinit_erista(bool enable_log) {
|
||||||
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
||||||
volatile tegra_car_t *car = car_get_regs();
|
volatile tegra_car_t *car = car_get_regs();
|
||||||
|
|
||||||
|
@ -320,13 +325,13 @@ void nx_hwinit_erista(bool enable_log) {
|
||||||
/* mc_config_carveout(); */
|
/* mc_config_carveout(); */
|
||||||
|
|
||||||
/* Save SDRAM parameters to scratch. */
|
/* Save SDRAM parameters to scratch. */
|
||||||
sdram_save_params_erista(sdram_get_params_erista(fuse_get_dram_id()));
|
sdram_save_params(sdram_get_params(fuse_get_dram_id()));
|
||||||
|
|
||||||
/* Initialize SDRAM. */
|
/* Initialize SDRAM. */
|
||||||
sdram_init_erista();
|
sdram_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
void nx_hwinit_mariko(bool enable_log) {
|
static void nx_hwinit_mariko(bool enable_log) {
|
||||||
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
||||||
volatile tegra_car_t *car = car_get_regs();
|
volatile tegra_car_t *car = car_get_regs();
|
||||||
|
|
||||||
|
@ -397,8 +402,16 @@ void nx_hwinit_mariko(bool enable_log) {
|
||||||
pmc->tzram_sec_disable = 0x3;
|
pmc->tzram_sec_disable = 0x3;
|
||||||
|
|
||||||
/* Save SDRAM parameters to scratch. */
|
/* Save SDRAM parameters to scratch. */
|
||||||
sdram_save_params_mariko(sdram_get_params_mariko(fuse_get_dram_id()));
|
sdram_save_params(sdram_get_params(fuse_get_dram_id()));
|
||||||
|
|
||||||
/* Initialize SDRAM. */
|
/* Initialize SDRAM. */
|
||||||
sdram_init_mariko();
|
sdram_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
void nx_hwinit(bool enable_log) {
|
||||||
|
if (is_soc_mariko()) {
|
||||||
|
nx_hwinit_mariko(enable_log);
|
||||||
|
} else {
|
||||||
|
nx_hwinit_erista(enable_log);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -24,7 +24,6 @@
|
||||||
#define I2S_BASE 0x702D1000
|
#define I2S_BASE 0x702D1000
|
||||||
#define MAKE_I2S_REG(n) MAKE_REG32(I2S_BASE + n)
|
#define MAKE_I2S_REG(n) MAKE_REG32(I2S_BASE + n)
|
||||||
|
|
||||||
void nx_hwinit_erista(bool enable_log);
|
void nx_hwinit(bool enable_log);
|
||||||
void nx_hwinit_mariko(bool enable_log);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -108,13 +108,13 @@ static void setup_env(void) {
|
||||||
g_framebuffer = (void *)0xC0000000;
|
g_framebuffer = (void *)0xC0000000;
|
||||||
|
|
||||||
/* Initialize hardware. */
|
/* Initialize hardware. */
|
||||||
nx_hwinit_erista(false);
|
nx_hwinit(false);
|
||||||
|
|
||||||
/* Zero-fill the framebuffer and register it as printk provider. */
|
/* Zero-fill the framebuffer and register it as printk provider. */
|
||||||
video_init(g_framebuffer);
|
video_init(g_framebuffer);
|
||||||
|
|
||||||
/* Initialize the display. */
|
/* Initialize the display. */
|
||||||
display_init_erista();
|
display_init();
|
||||||
|
|
||||||
/* Set the framebuffer. */
|
/* Set the framebuffer. */
|
||||||
display_init_framebuffer(g_framebuffer);
|
display_init_framebuffer(g_framebuffer);
|
||||||
|
@ -131,7 +131,7 @@ static void cleanup_env(void) {
|
||||||
unmount_sd();
|
unmount_sd();
|
||||||
|
|
||||||
/* Terminate the display. */
|
/* Terminate the display. */
|
||||||
display_end_erista();
|
display_end();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void exit_callback(int rc) {
|
static void exit_callback(int rc) {
|
||||||
|
|
|
@ -35,6 +35,11 @@
|
||||||
#include "sdram.inl"
|
#include "sdram.inl"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Determine the current SoC for Mariko specific code. */
|
||||||
|
static bool is_soc_mariko() {
|
||||||
|
return (fuse_get_soc_type() == 1);
|
||||||
|
}
|
||||||
|
|
||||||
static void sdram_config_erista(const sdram_params_erista_t *params) {
|
static void sdram_config_erista(const sdram_params_erista_t *params) {
|
||||||
volatile tegra_car_t *car = car_get_regs();
|
volatile tegra_car_t *car = car_get_regs();
|
||||||
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
||||||
|
@ -1050,7 +1055,7 @@ static void sdram_config_mariko(const sdram_params_mariko_t *params) {
|
||||||
AHB_ARBITRATION_XBAR_CTRL_0 = ((AHB_ARBITRATION_XBAR_CTRL_0 & 0xFFFEFFFF) | ((params->AhbArbitrationXbarCtrlMemInitDone & 0xFFFF) << 16));
|
AHB_ARBITRATION_XBAR_CTRL_0 = ((AHB_ARBITRATION_XBAR_CTRL_0 & 0xFFFEFFFF) | ((params->AhbArbitrationXbarCtrlMemInitDone & 0xFFFF) << 16));
|
||||||
}
|
}
|
||||||
|
|
||||||
const void *sdram_get_params_erista(uint32_t dram_id) {
|
static const void *sdram_get_params_erista(uint32_t dram_id) {
|
||||||
uint32_t sdram_params_index = sdram_params_index_table_erista[dram_id];
|
uint32_t sdram_params_index = sdram_params_index_table_erista[dram_id];
|
||||||
#ifdef CONFIG_SDRAM_COMPRESS
|
#ifdef CONFIG_SDRAM_COMPRESS
|
||||||
uint8_t *buf = (uint8_t *)0x40030000;
|
uint8_t *buf = (uint8_t *)0x40030000;
|
||||||
|
@ -1061,7 +1066,7 @@ const void *sdram_get_params_erista(uint32_t dram_id) {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
const void *sdram_get_params_mariko(uint32_t dram_id) {
|
static const void *sdram_get_params_mariko(uint32_t dram_id) {
|
||||||
uint32_t sdram_params_index = sdram_params_index_table_mariko[dram_id];
|
uint32_t sdram_params_index = sdram_params_index_table_mariko[dram_id];
|
||||||
#ifdef CONFIG_SDRAM_COMPRESS
|
#ifdef CONFIG_SDRAM_COMPRESS
|
||||||
uint8_t *buf = (uint8_t *)0x40030000;
|
uint8_t *buf = (uint8_t *)0x40030000;
|
||||||
|
@ -1072,7 +1077,7 @@ const void *sdram_get_params_mariko(uint32_t dram_id) {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void sdram_init_erista(void) {
|
static void sdram_init_erista(void) {
|
||||||
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
||||||
const sdram_params_erista_t *params = (const sdram_params_erista_t *)sdram_get_params_erista(fuse_get_dram_id());
|
const sdram_params_erista_t *params = (const sdram_params_erista_t *)sdram_get_params_erista(fuse_get_dram_id());
|
||||||
|
|
||||||
|
@ -1096,7 +1101,7 @@ void sdram_init_erista(void) {
|
||||||
sdram_config_erista(params);
|
sdram_config_erista(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sdram_init_mariko(void) {
|
static void sdram_init_mariko(void) {
|
||||||
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
||||||
const sdram_params_mariko_t *params = (const sdram_params_mariko_t *)sdram_get_params_mariko(fuse_get_dram_id());
|
const sdram_params_mariko_t *params = (const sdram_params_mariko_t *)sdram_get_params_mariko(fuse_get_dram_id());
|
||||||
|
|
||||||
|
@ -1117,7 +1122,7 @@ void sdram_init_mariko(void) {
|
||||||
sdram_config_mariko(params);
|
sdram_config_mariko(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sdram_save_params_erista(const void *save_params) {
|
static void sdram_save_params_erista(const void *save_params) {
|
||||||
const sdram_params_erista_t *params = (const sdram_params_erista_t *)save_params;
|
const sdram_params_erista_t *params = (const sdram_params_erista_t *)save_params;
|
||||||
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
||||||
|
|
||||||
|
@ -2218,7 +2223,7 @@ void sdram_save_params_erista(const void *save_params) {
|
||||||
s(PllMStableTime, 9:0, scratch4, 9:0);
|
s(PllMStableTime, 9:0, scratch4, 9:0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sdram_save_params_mariko(const void *save_params) {
|
static void sdram_save_params_mariko(const void *save_params) {
|
||||||
const sdram_params_mariko_t *params = (const sdram_params_mariko_t *)save_params;
|
const sdram_params_mariko_t *params = (const sdram_params_mariko_t *)save_params;
|
||||||
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
volatile tegra_pmc_t *pmc = pmc_get_regs();
|
||||||
|
|
||||||
|
@ -3334,3 +3339,27 @@ void sdram_save_params_mariko(const void *save_params) {
|
||||||
c32(0, scratch4);
|
c32(0, scratch4);
|
||||||
s(PllMStableTime, 19:0, scratch4, 19:0);
|
s(PllMStableTime, 19:0, scratch4, 19:0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sdram_init(void) {
|
||||||
|
if (is_soc_mariko()) {
|
||||||
|
sdram_init_mariko();
|
||||||
|
} else {
|
||||||
|
sdram_init_erista();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const void *sdram_get_params(uint32_t dram_id) {
|
||||||
|
if (is_soc_mariko()) {
|
||||||
|
return sdram_get_params_mariko(dram_id);
|
||||||
|
} else {
|
||||||
|
return sdram_get_params_erista(dram_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sdram_save_params(const void *save_params) {
|
||||||
|
if (is_soc_mariko()) {
|
||||||
|
sdram_save_params_mariko(save_params);
|
||||||
|
} else {
|
||||||
|
sdram_save_params_erista(save_params);
|
||||||
|
}
|
||||||
|
}
|
|
@ -18,11 +18,8 @@
|
||||||
#ifndef FUSEE_SDRAM_H_
|
#ifndef FUSEE_SDRAM_H_
|
||||||
#define FUSEE_SDRAM_H_
|
#define FUSEE_SDRAM_H_
|
||||||
|
|
||||||
void sdram_init_erista(void);
|
void sdram_init(void);
|
||||||
void sdram_init_mariko(void);
|
const void *sdram_get_params(uint32_t dram_id);
|
||||||
const void *sdram_get_params_erista(uint32_t dram_id);
|
void sdram_save_params(const void *save_params);
|
||||||
const void *sdram_get_params_mariko(uint32_t dram_id);
|
|
||||||
void sdram_save_params_erista(const void *save_params);
|
|
||||||
void sdram_save_params_mariko(const void *save_params);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue