// SPDX-License-Identifier: GPL-2.0+ /* * Mocha SPL stage configuration * * (C) Copyright 2024 * Svyatoslav Ryhel */ #include #include #include #define TPS65913_I2C_ADDR (0x58 << 1) #define TPS65913_SMPS12_CTRL 0x20 #define TPS65913_SMPS12_VOLTAGE 0x23 #define TPS65913_SMPS45_CTRL 0x28 #define TPS65913_SMPS45_VOLTAGE 0x2B #define TPS65913_SMPS7_CTRL 0x30 #define TPS65913_SMPS7_VOLTAGE 0x33 #define TPS65913_SMPS12_CTRL_DATA (0x5100 | TPS65913_SMPS12_CTRL) #define TPS65913_SMPS12_VOLTAGE_DATA (0x3800 | TPS65913_SMPS12_VOLTAGE) #define TPS65913_SMPS45_CTRL_DATA (0x5100 | TPS65913_SMPS45_CTRL) #define TPS65913_SMPS45_VOLTAGE_DATA (0x3800 | TPS65913_SMPS45_VOLTAGE) #define TPS65913_SMPS7_CTRL_DATA (0x5100 | TPS65913_SMPS7_CTRL) #define TPS65913_SMPS7_VOLTAGE_DATA (0x4700 | TPS65913_SMPS7_VOLTAGE) void pmic_enable_cpu_vdd(void) { /* Set CORE VDD to 1.150V. */ tegra_i2c_ll_write(TPS65913_I2C_ADDR, TPS65913_SMPS7_VOLTAGE_DATA); udelay(1000); tegra_i2c_ll_write(TPS65913_I2C_ADDR, TPS65913_SMPS7_CTRL_DATA); udelay(1000); /* Set CPU VDD to 1.0V. */ tegra_i2c_ll_write(TPS65913_I2C_ADDR, TPS65913_SMPS12_VOLTAGE_DATA); udelay(1000); tegra_i2c_ll_write(TPS65913_I2C_ADDR, TPS65913_SMPS12_CTRL_DATA); udelay(10 * 1000); /* Set GPU VDD to 1.0V. */ tegra_i2c_ll_write(TPS65913_I2C_ADDR, TPS65913_SMPS45_VOLTAGE_DATA); udelay(1000); tegra_i2c_ll_write(TPS65913_I2C_ADDR, TPS65913_SMPS45_CTRL_DATA); udelay(10 * 1000); }