blob: 423b3070910d4c3e553e81d811b827d106b9003d [file] [log] [blame]
Svyatoslav Ryhel8178e892023-06-29 10:10:26 +03001// SPDX-License-Identifier: GPL-2.0+
2/*
3 * TegraTab SPL stage configuration
4 *
5 * (C) Copyright 2010-2013
6 * NVIDIA Corporation <www.nvidia.com>
7 *
8 * (C) Copyright 2023
9 * Svyatoslav Ryhel <clamor95@gmail.com>
10 */
11
12#include <asm/arch/tegra.h>
13#include <asm/arch-tegra/tegra_i2c.h>
14#include <linux/delay.h>
15
16#define TPS65913_I2C_ADDR (0x58 << 1)
17
18#define TPS65913_SMPS12_CTRL 0x20
19#define TPS65913_SMPS12_VOLTAGE 0x23
20#define TPS65913_SMPS45_CTRL 0x28
21#define TPS65913_SMPS45_VOLTAGE 0x2B
22
23#define TPS65913_SMPS12_CTRL_DATA (0x5100 | TPS65913_SMPS12_CTRL)
24#define TPS65913_SMPS12_VOLTAGE_DATA (0x3900 | TPS65913_SMPS12_VOLTAGE)
25#define TPS65913_SMPS45_CTRL_DATA (0x5100 | TPS65913_SMPS45_CTRL)
26#define TPS65913_SMPS45_VOLTAGE_DATA (0x4c00 | TPS65913_SMPS45_VOLTAGE)
27
28void pmic_enable_cpu_vdd(void)
29{
30 /* Set CORE VDD to 1.200V. */
31 tegra_i2c_ll_write(TPS65913_I2C_ADDR, TPS65913_SMPS45_VOLTAGE_DATA);
32 udelay(1000);
33 tegra_i2c_ll_write(TPS65913_I2C_ADDR, TPS65913_SMPS45_CTRL_DATA);
34
35 udelay(1000);
36
37 /* Set CPU VDD to 1.0125V. */
38 tegra_i2c_ll_write(TPS65913_I2C_ADDR, TPS65913_SMPS12_VOLTAGE_DATA);
39 udelay(1000);
40 tegra_i2c_ll_write(TPS65913_I2C_ADDR, TPS65913_SMPS12_CTRL_DATA);
41 udelay(10 * 1000);
42}