apalis_t30.c 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /*
  2. * (C) Copyright 2014
  3. * Marcel Ziswiler <marcel@ziswiler.com>
  4. *
  5. * SPDX-License-Identifier: GPL-2.0+
  6. */
  7. #include <common.h>
  8. #include <asm/arch/gp_padctrl.h>
  9. #include <asm/arch/pinmux.h>
  10. #include <asm/arch-tegra/ap.h>
  11. #include <asm/arch-tegra/tegra.h>
  12. #include <asm/gpio.h>
  13. #include <asm/io.h>
  14. #include <dm.h>
  15. #include <i2c.h>
  16. #include "pinmux-config-apalis_t30.h"
  17. #define PMU_I2C_ADDRESS 0x2D
  18. #define MAX_I2C_RETRY 3
  19. int arch_misc_init(void)
  20. {
  21. if (readl(NV_PA_BASE_SRAM + NVBOOTINFOTABLE_BOOTTYPE) ==
  22. NVBOOTTYPE_RECOVERY)
  23. printf("USB recovery mode\n");
  24. return 0;
  25. }
  26. /*
  27. * Routine: pinmux_init
  28. * Description: Do individual peripheral pinmux configs
  29. */
  30. void pinmux_init(void)
  31. {
  32. pinmux_config_pingrp_table(tegra3_pinmux_common,
  33. ARRAY_SIZE(tegra3_pinmux_common));
  34. pinmux_config_pingrp_table(unused_pins_lowpower,
  35. ARRAY_SIZE(unused_pins_lowpower));
  36. /* Initialize any non-default pad configs (APB_MISC_GP regs) */
  37. pinmux_config_drvgrp_table(apalis_t30_padctrl,
  38. ARRAY_SIZE(apalis_t30_padctrl));
  39. }
  40. #ifdef CONFIG_PCI_TEGRA
  41. int tegra_pcie_board_init(void)
  42. {
  43. struct udevice *dev;
  44. u8 addr, data[1];
  45. int err;
  46. err = i2c_get_chip_for_busnum(0, PMU_I2C_ADDRESS, 1, &dev);
  47. if (err) {
  48. debug("%s: Cannot find PMIC I2C chip\n", __func__);
  49. return err;
  50. }
  51. /* TPS659110: VDD2_OP_REG = 1.05V */
  52. data[0] = 0x27;
  53. addr = 0x25;
  54. err = dm_i2c_write(dev, addr, data, 1);
  55. if (err) {
  56. debug("failed to set VDD supply\n");
  57. return err;
  58. }
  59. /* TPS659110: VDD2_REG 7.5 mV/us, ACTIVE */
  60. data[0] = 0x0D;
  61. addr = 0x24;
  62. err = dm_i2c_write(dev, addr, data, 1);
  63. if (err) {
  64. debug("failed to enable VDD supply\n");
  65. return err;
  66. }
  67. /* TPS659110: LDO6_REG = 1.1V, ACTIVE */
  68. data[0] = 0x0D;
  69. addr = 0x35;
  70. err = dm_i2c_write(dev, addr, data, 1);
  71. if (err) {
  72. debug("failed to set AVDD supply\n");
  73. return err;
  74. }
  75. return 0;
  76. }
  77. #endif /* CONFIG_PCI_TEGRA */