ts4600.c 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. // SPDX-License-Identifier: GPL-2.0+
  2. /*
  3. * (C) Copyright 2016 Savoir-faire Linux Inc.
  4. *
  5. * Author: Sebastien Bourdelin <sebastien.bourdelin@savoirfairelinux.com>
  6. *
  7. * Based on work from TS7680 code by:
  8. * Kris Bahnsen <kris@embeddedarm.com>
  9. * Mark Featherston <mark@embeddedarm.com>
  10. * https://github.com/embeddedarm/u-boot/tree/master/board/technologic/ts7680
  11. *
  12. * Derived from MX28EVK code by
  13. * Freescale Semiconductor, Inc.
  14. */
  15. #include <common.h>
  16. #include <init.h>
  17. #include <asm/gpio.h>
  18. #include <asm/io.h>
  19. #include <asm/arch/imx-regs.h>
  20. #include <asm/arch/iomux-mx28.h>
  21. #include <asm/arch/clock.h>
  22. #include <asm/arch/sys_proto.h>
  23. #include <linux/delay.h>
  24. #include <linux/mii.h>
  25. #include <miiphy.h>
  26. #include <netdev.h>
  27. #include <errno.h>
  28. DECLARE_GLOBAL_DATA_PTR;
  29. int board_early_init_f(void)
  30. {
  31. /* IO0 clock at 480MHz */
  32. mxs_set_ioclk(MXC_IOCLK0, 480000);
  33. /* IO1 clock at 480MHz */
  34. mxs_set_ioclk(MXC_IOCLK1, 480000);
  35. /* SSP0 clocks at 96MHz */
  36. mxs_set_sspclk(MXC_SSPCLK0, 96000, 0);
  37. return 0;
  38. }
  39. int dram_init(void)
  40. {
  41. return mxs_dram_init();
  42. }
  43. int board_init(void)
  44. {
  45. /* Adress of boot parameters */
  46. gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
  47. return 0;
  48. }
  49. #ifdef CONFIG_CMD_MMC
  50. static int ts4600_mmc_cd(int id)
  51. {
  52. return 1;
  53. }
  54. int board_mmc_init(struct bd_info *bis)
  55. {
  56. int ret;
  57. mxs_iomux_setup_pad(MX28_PAD_PWM3__GPIO_3_28);
  58. /* Power-on SD */
  59. gpio_direction_output(MX28_PAD_PWM3__GPIO_3_28, 1);
  60. udelay(1000);
  61. gpio_direction_output(MX28_PAD_PWM3__GPIO_3_28, 0);
  62. /* SD card */
  63. ret = mxsmmc_initialize(bis, 0, NULL, ts4600_mmc_cd);
  64. if(ret != 0) {
  65. printf("SD controller initialized with %d\n", ret);
  66. }
  67. return ret;
  68. }
  69. #endif
  70. int checkboard(void)
  71. {
  72. puts("Board: TS4600\n");
  73. return 0;
  74. }