mirror of
https://github.com/CTCaer/hekate
synced 2024-11-09 21:36:35 +00:00
bdk: pmc: rename io/det power defines
This commit is contained in:
parent
11262c2112
commit
85eb5489fe
4 changed files with 23 additions and 30 deletions
|
@ -32,24 +32,24 @@ void regulator_5v_enable(u8 dev)
|
||||||
// The power supply selection from battery or USB is automatic.
|
// The power supply selection from battery or USB is automatic.
|
||||||
if (!reg_5v_dev)
|
if (!reg_5v_dev)
|
||||||
{
|
{
|
||||||
// Fan and Rail power from battery 5V regulator.
|
// Fan and Rail power from battery 5V regulator EN.
|
||||||
PINMUX_AUX(PINMUX_AUX_SATA_LED_ACTIVE) = 1;
|
PINMUX_AUX(PINMUX_AUX_SATA_LED_ACTIVE) = 1;
|
||||||
gpio_direction_output(GPIO_PORT_A, GPIO_PIN_5, GPIO_HIGH);
|
gpio_direction_output(GPIO_PORT_A, GPIO_PIN_5, GPIO_HIGH);
|
||||||
|
|
||||||
// Only Icosa has USB 5V VBUS rails.
|
// Only Icosa has USB 5V VBUS rails.
|
||||||
if (tegra_t210)
|
if (tegra_t210)
|
||||||
{
|
{
|
||||||
// Fan and Rail power from USB 5V VBUS.
|
// Fan and Rail power from USB 5V VBUS EN.
|
||||||
PINMUX_AUX(PINMUX_AUX_USB_VBUS_EN0) = PINMUX_LPDR | 1;
|
PINMUX_AUX(PINMUX_AUX_USB_VBUS_EN0) = PINMUX_LPDR | 1;
|
||||||
gpio_direction_output(GPIO_PORT_CC, GPIO_PIN_4, GPIO_LOW);
|
gpio_direction_output(GPIO_PORT_CC, GPIO_PIN_4, GPIO_LOW);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure GPIO IO power is enabled.
|
// Make sure GPIO IO power is enabled.
|
||||||
PMC(APBDEV_PMC_NO_IOPOWER) &= ~PMC_NO_IOPOWER_GPIO_IO_EN;
|
PMC(APBDEV_PMC_NO_IOPOWER) &= ~PMC_NO_IOPOWER_GPIO;
|
||||||
(void)PMC(APBDEV_PMC_NO_IOPOWER); // Commit write.
|
(void)PMC(APBDEV_PMC_NO_IOPOWER); // Commit write.
|
||||||
|
|
||||||
// Override power detect for GPIO AO IO rails.
|
// Inform GPIO IO pads that we switched to 1.8V.
|
||||||
PMC(APBDEV_PMC_PWR_DET_VAL) &= ~PMC_PWR_DET_GPIO_IO_EN;
|
PMC(APBDEV_PMC_PWR_DET_VAL) &= ~PMC_PWR_DET_33V_GPIO;
|
||||||
(void)PMC(APBDEV_PMC_PWR_DET_VAL); // Commit write.
|
(void)PMC(APBDEV_PMC_PWR_DET_VAL); // Commit write.
|
||||||
|
|
||||||
usb_src = false;
|
usb_src = false;
|
||||||
|
|
|
@ -494,7 +494,7 @@ void hw_deinit(bool coreboot, u32 bl_magic)
|
||||||
gpio_config(GPIO_PORT_D, GPIO_PIN_1, GPIO_MODE_SPIO);
|
gpio_config(GPIO_PORT_D, GPIO_PIN_1, GPIO_MODE_SPIO);
|
||||||
|
|
||||||
// Reinstate SD controller power.
|
// Reinstate SD controller power.
|
||||||
PMC(APBDEV_PMC_NO_IOPOWER) &= ~(PMC_NO_IOPOWER_SDMMC1_IO_EN);
|
PMC(APBDEV_PMC_NO_IOPOWER) &= ~PMC_NO_IOPOWER_SDMMC1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Seamless display or display power off.
|
// Seamless display or display power off.
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2018 naehrwert
|
* Copyright (c) 2018 naehrwert
|
||||||
* Copyright (c) 2018 st4rk
|
* Copyright (c) 2018 st4rk
|
||||||
* Copyright (c) 2018-2022 CTCaer
|
* Copyright (c) 2018-2024 CTCaer
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
* under the terms and conditions of the GNU General Public License,
|
* under the terms and conditions of the GNU General Public License,
|
||||||
|
@ -39,10 +39,12 @@
|
||||||
#define APBDEV_PMC_PWRGATE_TOGGLE 0x30
|
#define APBDEV_PMC_PWRGATE_TOGGLE 0x30
|
||||||
#define APBDEV_PMC_PWRGATE_STATUS 0x38
|
#define APBDEV_PMC_PWRGATE_STATUS 0x38
|
||||||
#define APBDEV_PMC_NO_IOPOWER 0x44
|
#define APBDEV_PMC_NO_IOPOWER 0x44
|
||||||
#define PMC_NO_IOPOWER_SDMMC1_IO_EN BIT(12)
|
#define PMC_NO_IOPOWER_MEM BIT(7)
|
||||||
#define PMC_NO_IOPOWER_SDMMC4_IO_EN BIT(14)
|
#define PMC_NO_IOPOWER_SDMMC1 BIT(12)
|
||||||
|
#define PMC_NO_IOPOWER_SDMMC4 BIT(14)
|
||||||
|
#define PMC_NO_IOPOWER_MEM_COMP BIT(16)
|
||||||
#define PMC_NO_IOPOWER_AUDIO_HV BIT(18)
|
#define PMC_NO_IOPOWER_AUDIO_HV BIT(18)
|
||||||
#define PMC_NO_IOPOWER_GPIO_IO_EN BIT(21)
|
#define PMC_NO_IOPOWER_GPIO BIT(21)
|
||||||
#define APBDEV_PMC_SCRATCH0 0x50
|
#define APBDEV_PMC_SCRATCH0 0x50
|
||||||
#define PMC_SCRATCH0_MODE_WARMBOOT BIT(0)
|
#define PMC_SCRATCH0_MODE_WARMBOOT BIT(0)
|
||||||
#define PMC_SCRATCH0_MODE_RCM BIT(1)
|
#define PMC_SCRATCH0_MODE_RCM BIT(1)
|
||||||
|
@ -61,9 +63,9 @@
|
||||||
#define APBDEV_PMC_SECURE_SCRATCH4 0xC0
|
#define APBDEV_PMC_SECURE_SCRATCH4 0xC0
|
||||||
#define APBDEV_PMC_SECURE_SCRATCH5 0xC4
|
#define APBDEV_PMC_SECURE_SCRATCH5 0xC4
|
||||||
#define APBDEV_PMC_PWR_DET_VAL 0xE4
|
#define APBDEV_PMC_PWR_DET_VAL 0xE4
|
||||||
#define PMC_PWR_DET_SDMMC1_IO_EN BIT(12)
|
#define PMC_PWR_DET_33V_SDMMC1 BIT(12)
|
||||||
#define PMC_PWR_DET_AUDIO_HV BIT(18)
|
#define PMC_PWR_DET_33V_AUDIO_HV BIT(18)
|
||||||
#define PMC_PWR_DET_GPIO_IO_EN BIT(21)
|
#define PMC_PWR_DET_33V_GPIO BIT(21)
|
||||||
#define APBDEV_PMC_DDR_PWR 0xE8
|
#define APBDEV_PMC_DDR_PWR 0xE8
|
||||||
#define APBDEV_PMC_USB_AO 0xF0
|
#define APBDEV_PMC_USB_AO 0xF0
|
||||||
#define APBDEV_PMC_CRYPTO_OP 0xF4
|
#define APBDEV_PMC_CRYPTO_OP 0xF4
|
||||||
|
|
|
@ -1276,16 +1276,7 @@ static int _sdmmc_config_sdmmc1(bool t210b01)
|
||||||
if (!sdmmc_get_sd_inserted())
|
if (!sdmmc_get_sd_inserted())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/*
|
// Enable deep loopback for SDMMC1 CLK pad so reads work.
|
||||||
* Pinmux config:
|
|
||||||
* DRV_TYPE = DRIVE_2X (for 33 Ohm driver)
|
|
||||||
* E_SCHMT = ENABLE (for 1.8V), DISABLE (for 3.3V)
|
|
||||||
* E_INPUT = ENABLE
|
|
||||||
* TRISTATE = PASSTHROUGH
|
|
||||||
* APB_MISC_GP_SDMMCx_CLK_LPBK_CONTROL = SDMMCx_CLK_PAD_E_LPBK for CLK
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Enable deep loopback for SDMMC1 CLK pad.
|
|
||||||
APB_MISC(APB_MISC_GP_SDMMC1_CLK_LPBK_CONTROL) = 1;
|
APB_MISC(APB_MISC_GP_SDMMC1_CLK_LPBK_CONTROL) = 1;
|
||||||
|
|
||||||
// Configure SDMMC1 CLK pinmux, based on state and SoC type.
|
// Configure SDMMC1 CLK pinmux, based on state and SoC type.
|
||||||
|
@ -1305,18 +1296,18 @@ static int _sdmmc_config_sdmmc1(bool t210b01)
|
||||||
_sdmmc_config_sdmmc1_schmitt();
|
_sdmmc_config_sdmmc1_schmitt();
|
||||||
|
|
||||||
// Make sure the SDMMC1 controller is powered.
|
// Make sure the SDMMC1 controller is powered.
|
||||||
PMC(APBDEV_PMC_NO_IOPOWER) |= PMC_NO_IOPOWER_SDMMC1_IO_EN;
|
PMC(APBDEV_PMC_NO_IOPOWER) |= PMC_NO_IOPOWER_SDMMC1;
|
||||||
usleep(1000);
|
usleep(1000);
|
||||||
PMC(APBDEV_PMC_NO_IOPOWER) &= ~(PMC_NO_IOPOWER_SDMMC1_IO_EN);
|
PMC(APBDEV_PMC_NO_IOPOWER) &= ~PMC_NO_IOPOWER_SDMMC1;
|
||||||
(void)PMC(APBDEV_PMC_NO_IOPOWER); // Commit write.
|
(void)PMC(APBDEV_PMC_NO_IOPOWER); // Commit write.
|
||||||
|
|
||||||
// Set enable SD card power.
|
// Enable SD card power. Powers LDO2 also.
|
||||||
PINMUX_AUX(PINMUX_AUX_DMIC3_CLK) = PINMUX_PULL_DOWN | 2;
|
PINMUX_AUX(PINMUX_AUX_DMIC3_CLK) = PINMUX_PULL_DOWN | 2;
|
||||||
gpio_direction_output(GPIO_PORT_E, GPIO_PIN_4, GPIO_HIGH);
|
gpio_direction_output(GPIO_PORT_E, GPIO_PIN_4, GPIO_HIGH);
|
||||||
usleep(10000);
|
usleep(10000);
|
||||||
|
|
||||||
// Inform IO pads that voltage is gonna be 3.3V.
|
// Inform IO pads that voltage is gonna be 3.3V.
|
||||||
PMC(APBDEV_PMC_PWR_DET_VAL) |= PMC_PWR_DET_SDMMC1_IO_EN;
|
PMC(APBDEV_PMC_PWR_DET_VAL) |= PMC_PWR_DET_33V_SDMMC1;
|
||||||
(void)PMC(APBDEV_PMC_PWR_DET_VAL); // Commit write.
|
(void)PMC(APBDEV_PMC_PWR_DET_VAL); // Commit write.
|
||||||
|
|
||||||
// Enable SD card IO power.
|
// Enable SD card IO power.
|
||||||
|
@ -1471,11 +1462,11 @@ void sdmmc1_disable_power()
|
||||||
usleep(10000); // To power cycle, min 1ms without power is needed.
|
usleep(10000); // To power cycle, min 1ms without power is needed.
|
||||||
|
|
||||||
// Disable SDMMC1 controller power.
|
// Disable SDMMC1 controller power.
|
||||||
PMC(APBDEV_PMC_NO_IOPOWER) |= PMC_NO_IOPOWER_SDMMC1_IO_EN;
|
PMC(APBDEV_PMC_NO_IOPOWER) |= PMC_NO_IOPOWER_SDMMC1;
|
||||||
(void)PMC(APBDEV_PMC_NO_IOPOWER); // Commit write.
|
(void)PMC(APBDEV_PMC_NO_IOPOWER); // Commit write.
|
||||||
|
|
||||||
// Inform IO pads that next voltage might be 3.3V.
|
// Inform IO pads that next voltage might be 3.3V.
|
||||||
PMC(APBDEV_PMC_PWR_DET_VAL) |= PMC_PWR_DET_SDMMC1_IO_EN;
|
PMC(APBDEV_PMC_PWR_DET_VAL) |= PMC_PWR_DET_33V_SDMMC1;
|
||||||
(void)PMC(APBDEV_PMC_PWR_DET_VAL); // Commit write.
|
(void)PMC(APBDEV_PMC_PWR_DET_VAL); // Commit write.
|
||||||
|
|
||||||
// T210B01 WAR: Restore pads to reset state.
|
// T210B01 WAR: Restore pads to reset state.
|
||||||
|
@ -1550,7 +1541,7 @@ int sdmmc_enable_low_voltage(sdmmc_t *sdmmc)
|
||||||
usleep(150);
|
usleep(150);
|
||||||
|
|
||||||
// Inform IO pads that we switched to 1.8V.
|
// Inform IO pads that we switched to 1.8V.
|
||||||
PMC(APBDEV_PMC_PWR_DET_VAL) &= ~(PMC_PWR_DET_SDMMC1_IO_EN);
|
PMC(APBDEV_PMC_PWR_DET_VAL) &= ~PMC_PWR_DET_33V_SDMMC1;
|
||||||
(void)PMC(APBDEV_PMC_PWR_DET_VAL); // Commit write.
|
(void)PMC(APBDEV_PMC_PWR_DET_VAL); // Commit write.
|
||||||
|
|
||||||
// Enable schmitt trigger for better duty cycle and low jitter clock.
|
// Enable schmitt trigger for better duty cycle and low jitter clock.
|
||||||
|
|
Loading…
Reference in a new issue