]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - board/toradex/apalis_t30/apalis_t30.c
Merge branch 'master' of git://git.denx.de/u-boot-imx
[karo-tx-uboot.git] / board / toradex / apalis_t30 / apalis_t30.c
1 /*
2  *  (C) Copyright 2014
3  *  Marcel Ziswiler <marcel@ziswiler.com>
4  *
5  * SPDX-License-Identifier:     GPL-2.0+
6  */
7
8 #include <common.h>
9
10 #include <asm/arch/gp_padctrl.h>
11 #include <asm/arch/pinmux.h>
12 #include <asm/gpio.h>
13 #include <i2c.h>
14 #include <netdev.h>
15
16 #include "pinmux-config-apalis_t30.h"
17
18 #define PMU_I2C_ADDRESS         0x2D
19 #define MAX_I2C_RETRY           3
20
21 /*
22  * Routine: pinmux_init
23  * Description: Do individual peripheral pinmux configs
24  */
25 void pinmux_init(void)
26 {
27         pinmux_config_pingrp_table(tegra3_pinmux_common,
28                                    ARRAY_SIZE(tegra3_pinmux_common));
29
30         pinmux_config_pingrp_table(unused_pins_lowpower,
31                                    ARRAY_SIZE(unused_pins_lowpower));
32
33         /* Initialize any non-default pad configs (APB_MISC_GP regs) */
34         pinmux_config_drvgrp_table(apalis_t30_padctrl,
35                                    ARRAY_SIZE(apalis_t30_padctrl));
36 }
37
38 #ifdef CONFIG_PCI_TEGRA
39 int tegra_pcie_board_init(void)
40 {
41         unsigned int old_bus;
42         u8 addr, data[1];
43         int err;
44
45         old_bus = i2c_get_bus_num();
46
47         err = i2c_set_bus_num(0);
48         if (err) {
49                 debug("failed to set I2C bus\n");
50                 return err;
51         }
52
53         /* TPS659110: VDD2_OP_REG = 1.05V */
54         data[0] = 0x27;
55         addr = 0x25;
56
57         err = i2c_write(PMU_I2C_ADDRESS, addr, 1, data, 1);
58         if (err) {
59                 debug("failed to set VDD supply\n");
60                 return err;
61         }
62
63         /* TPS659110: VDD2_REG 7.5 mV/us, ACTIVE */
64         data[0] = 0x0D;
65         addr = 0x24;
66
67         err = i2c_write(PMU_I2C_ADDRESS, addr, 1, data, 1);
68         if (err) {
69                 debug("failed to enable VDD supply\n");
70                 return err;
71         }
72
73         /* TPS659110: LDO6_REG = 1.1V, ACTIVE */
74         data[0] = 0x0D;
75         addr = 0x35;
76
77         err = i2c_write(PMU_I2C_ADDRESS, addr, 1, data, 1);
78         if (err) {
79                 debug("failed to set AVDD supply\n");
80                 return err;
81         }
82
83         i2c_set_bus_num(old_bus);
84
85         return 0;
86 }
87
88 int board_eth_init(bd_t *bis)
89 {
90         return pci_eth_init(bis);
91 }
92 #endif /* CONFIG_PCI_TEGRA */