blob: d33e4d12b2faaf2346983f060e2b6d55e3f06e66 [file] [log] [blame]
Tom Warren873e3ef2015-02-12 15:01:49 -07001/*
2 * (C) Copyright 2013-2015
3 * NVIDIA Corporation <www.nvidia.com>
4 *
5 * SPDX-License-Identifier: GPL-2.0+
6 */
7
8#include <common.h>
Tom Warren4132bc92015-07-28 15:13:17 -07009#include <i2c.h>
Tom Warren873e3ef2015-02-12 15:01:49 -070010#include <asm/arch/gpio.h>
11#include <asm/arch/pinmux.h>
Tom Warren66999892015-02-20 12:22:22 -070012#include <asm/gpio.h>
Tom Warren4132bc92015-07-28 15:13:17 -070013#include "max77620_init.h"
Alexandre Courbota38a3c42015-07-09 16:33:01 +090014#include <asm/arch-tegra/gpu.h>
Tom Warren873e3ef2015-02-12 15:01:49 -070015#include "pinmux-config-p2571.h"
16
Tom Warren4132bc92015-07-28 15:13:17 -070017void pin_mux_mmc(void)
18{
19 struct udevice *dev;
20 uchar val;
21 int ret;
22
23 /* Turn on MAX77620 LDO2 to 3.3V for SD card power */
24 debug("%s: Set LDO2 for VDDIO_SDMMC_AP power to 3.3V\n", __func__);
25 ret = i2c_get_chip_for_busnum(0, MAX77620_I2C_ADDR_7BIT, 1, &dev);
26 if (ret) {
27 printf("%s: Cannot find MAX77620 I2C chip\n", __func__);
28 return;
29 }
30 /* 0xF2 for 3.3v, enabled: bit7:6 = 11 = enable, bit5:0 = voltage */
31 val = 0xF2;
32 ret = dm_i2c_write(dev, MAX77620_CNFG1_L2_REG, &val, 1);
33 if (ret)
34 printf("i2c_write 0 0x3c 0x27 failed: %d\n", ret);
35}
36
Tom Warren873e3ef2015-02-12 15:01:49 -070037/*
38 * Routine: pinmux_init
39 * Description: Do individual peripheral pinmux configs
40 */
41void pinmux_init(void)
42{
43 pinmux_clear_tristate_input_clamping();
44
45 gpio_config_table(p2571_gpio_inits,
46 ARRAY_SIZE(p2571_gpio_inits));
47
48 pinmux_config_pingrp_table(p2571_pingrps,
49 ARRAY_SIZE(p2571_pingrps));
50
51 pinmux_config_drvgrp_table(p2571_drvgrps,
52 ARRAY_SIZE(p2571_drvgrps));
53}
Tom Warren66999892015-02-20 12:22:22 -070054
55/*
56 * Routine: start_cpu_fan
57 * Description: Enable/start PWM CPU fan on P2571
58 */
59void start_cpu_fan(void)
60{
61 /* GPIO_PE4 is PS_VDD_FAN_ENABLE */
62 gpio_request(GPIO_PE4, "FAN_VDD");
63 gpio_direction_output(GPIO_PE4, 1);
64}
Alexandre Courbota38a3c42015-07-09 16:33:01 +090065
66int ft_board_setup(void *blob, bd_t *bd)
67{
68 gpu_enable_node(blob, "/gpu@0,57000000");
69 return 0;
70}