mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2024-12-18 16:32:05 +00:00
fusee: minor hwinit fixes
This commit is contained in:
parent
2920c042e1
commit
c3bf204627
1 changed files with 56 additions and 69 deletions
|
@ -63,37 +63,21 @@ static void config_oscillators(void) {
|
||||||
|
|
||||||
static void config_gpios(void) {
|
static void config_gpios(void) {
|
||||||
volatile tegra_pinmux_t *pinmux = pinmux_get_regs();
|
volatile tegra_pinmux_t *pinmux = pinmux_get_regs();
|
||||||
bool is_mariko = is_soc_mariko();
|
|
||||||
|
|
||||||
if (is_mariko) {
|
/* NOTE: This is also not done for calcio/copper. */
|
||||||
uint32_t hardware_type = fuse_get_hardware_type();
|
if (fuse_get_hardware_type() != 2) {
|
||||||
|
|
||||||
/* Only for HardwareType_Iowa and HardwareType_Five. */
|
|
||||||
if ((hardware_type == 3) || (hardware_type == 5)) {
|
|
||||||
pinmux->uart2_tx = 0;
|
|
||||||
pinmux->uart3_tx = 0;
|
|
||||||
gpio_configure_mode(TEGRA_GPIO(G, 0), GPIO_MODE_GPIO);
|
|
||||||
gpio_configure_mode(TEGRA_GPIO(D, 1), GPIO_MODE_GPIO);
|
|
||||||
gpio_configure_direction(TEGRA_GPIO(G, 0), GPIO_DIRECTION_INPUT);
|
|
||||||
gpio_configure_direction(TEGRA_GPIO(D, 1), GPIO_DIRECTION_INPUT);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
pinmux->uart2_tx = 0;
|
pinmux->uart2_tx = 0;
|
||||||
pinmux->uart3_tx = 0;
|
pinmux->uart3_tx = 0;
|
||||||
|
gpio_configure_mode(TEGRA_GPIO(G, 0), GPIO_MODE_GPIO);
|
||||||
|
gpio_configure_mode(TEGRA_GPIO(D, 1), GPIO_MODE_GPIO);
|
||||||
|
gpio_configure_direction(TEGRA_GPIO(G, 0), GPIO_DIRECTION_INPUT);
|
||||||
|
gpio_configure_direction(TEGRA_GPIO(D, 1), GPIO_DIRECTION_INPUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
pinmux->pe6 = PINMUX_INPUT;
|
pinmux->pe6 = PINMUX_INPUT;
|
||||||
pinmux->ph6 = PINMUX_INPUT;
|
pinmux->ph6 = PINMUX_INPUT;
|
||||||
if (!is_mariko) {
|
|
||||||
gpio_configure_mode(TEGRA_GPIO(G, 0), GPIO_MODE_GPIO);
|
|
||||||
gpio_configure_mode(TEGRA_GPIO(D, 1), GPIO_MODE_GPIO);
|
|
||||||
}
|
|
||||||
gpio_configure_mode(TEGRA_GPIO(E, 6), GPIO_MODE_GPIO);
|
gpio_configure_mode(TEGRA_GPIO(E, 6), GPIO_MODE_GPIO);
|
||||||
gpio_configure_mode(TEGRA_GPIO(H, 6), GPIO_MODE_GPIO);
|
gpio_configure_mode(TEGRA_GPIO(H, 6), GPIO_MODE_GPIO);
|
||||||
if (!is_mariko) {
|
|
||||||
gpio_configure_direction(TEGRA_GPIO(G, 0), GPIO_DIRECTION_INPUT);
|
|
||||||
gpio_configure_direction(TEGRA_GPIO(D, 1), GPIO_DIRECTION_INPUT);
|
|
||||||
}
|
|
||||||
gpio_configure_direction(TEGRA_GPIO(E, 6), GPIO_DIRECTION_INPUT);
|
gpio_configure_direction(TEGRA_GPIO(E, 6), GPIO_DIRECTION_INPUT);
|
||||||
gpio_configure_direction(TEGRA_GPIO(H, 6), GPIO_DIRECTION_INPUT);
|
gpio_configure_direction(TEGRA_GPIO(H, 6), GPIO_DIRECTION_INPUT);
|
||||||
|
|
||||||
|
@ -107,11 +91,9 @@ static void config_gpios(void) {
|
||||||
gpio_configure_direction(GPIO_BUTTON_VOL_UP, GPIO_DIRECTION_INPUT);
|
gpio_configure_direction(GPIO_BUTTON_VOL_UP, GPIO_DIRECTION_INPUT);
|
||||||
gpio_configure_direction(GPIO_BUTTON_VOL_DOWN, GPIO_DIRECTION_INPUT);
|
gpio_configure_direction(GPIO_BUTTON_VOL_DOWN, GPIO_DIRECTION_INPUT);
|
||||||
|
|
||||||
if (is_mariko) {
|
/* Configure home button as input. */
|
||||||
/* Configure home button as input. */
|
gpio_configure_mode(TEGRA_GPIO(Y, 1), GPIO_MODE_GPIO);
|
||||||
gpio_configure_mode(TEGRA_GPIO(Y, 1), GPIO_MODE_GPIO);
|
gpio_configure_direction(TEGRA_GPIO(Y, 1), GPIO_DIRECTION_INPUT);
|
||||||
gpio_configure_direction(TEGRA_GPIO(Y, 1), GPIO_DIRECTION_INPUT);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mbist_workaround(void) {
|
static void mbist_workaround(void) {
|
||||||
|
@ -241,7 +223,7 @@ void nx_hwinit(bool enable_log) {
|
||||||
uart_init(UART_A, 115200);
|
uart_init(UART_A, 115200);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Enable CL-DVFS clock. */
|
/* Enable CL-DVFS clock. */
|
||||||
clkrst_reboot(CARDEVICE_CL_DVFS);
|
clkrst_reboot(CARDEVICE_CL_DVFS);
|
||||||
|
|
||||||
/* Enable I2C1 clock. */
|
/* Enable I2C1 clock. */
|
||||||
|
@ -296,13 +278,18 @@ void nx_hwinit(bool enable_log) {
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Configure SD0 voltage. */
|
/* Configure SD0 voltage as 1.125v for erista, 1.050v for mariko. */
|
||||||
uint8_t val = 0x24;
|
if (is_mariko) {
|
||||||
i2c_send(I2C_5, MAX77620_PWR_I2C_ADDR, MAX77620_REG_SD0, &val, 1);
|
uint8_t val = 0x24;
|
||||||
|
i2c_send(I2C_5, MAX77620_PWR_I2C_ADDR, MAX77620_REG_SD0, &val, 1);
|
||||||
|
} else {
|
||||||
|
uint8_t val = 0x2A;
|
||||||
|
i2c_send(I2C_5, MAX77620_PWR_I2C_ADDR, MAX77620_REG_SD0, &val, 1);
|
||||||
|
}
|
||||||
|
|
||||||
/* Enable LDO8 in HardwareType_Hoag only. */
|
/* Enable LDO8 in HardwareType_Hoag only. */
|
||||||
if (is_mariko && (fuse_get_hardware_type() == 2)) {
|
if (fuse_get_hardware_type() == 2) {
|
||||||
val = 0xE8;
|
uint8_t val = 0xE8;
|
||||||
i2c_send(I2C_5, MAX77620_PWR_I2C_ADDR, MAX77620_REG_LDO8_CFG, &val, 1);
|
i2c_send(I2C_5, MAX77620_PWR_I2C_ADDR, MAX77620_REG_LDO8_CFG, &val, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue