mediatek.c 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /*
  2. * Device Tree support for Mediatek SoCs
  3. *
  4. * Copyright (c) 2014 MundoReader S.L.
  5. * Author: Matthias Brugger <matthias.bgg@gmail.com>
  6. *
  7. * This program is free software; you can redistribute it and/or modify
  8. * it under the terms of the GNU General Public License as published by
  9. * the Free Software Foundation; either version 2 of the License, or
  10. * (at your option) any later version.
  11. *
  12. * This program is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. * GNU General Public License for more details.
  16. */
  17. #include <linux/init.h>
  18. #include <asm/mach/arch.h>
  19. #include <linux/of.h>
  20. #include <linux/clk-provider.h>
  21. #include <linux/clocksource.h>
  22. #define GPT6_CON_MT65xx 0x10008060
  23. #define GPT_ENABLE 0x31
  24. static void __init mediatek_timer_init(void)
  25. {
  26. void __iomem *gpt_base;
  27. if (of_machine_is_compatible("mediatek,mt6589") ||
  28. of_machine_is_compatible("mediatek,mt7623") ||
  29. of_machine_is_compatible("mediatek,mt7623a") ||
  30. of_machine_is_compatible("mediatek,mt8135") ||
  31. of_machine_is_compatible("mediatek,mt8127")) {
  32. /* turn on GPT6 which ungates arch timer clocks */
  33. gpt_base = ioremap(GPT6_CON_MT65xx, 0x04);
  34. /* enable clock and set to free-run */
  35. writel(GPT_ENABLE, gpt_base);
  36. iounmap(gpt_base);
  37. }
  38. of_clk_init(NULL);
  39. timer_probe();
  40. };
  41. static const char * const mediatek_board_dt_compat[] = {
  42. "mediatek,mt2701",
  43. "mediatek,mt6589",
  44. "mediatek,mt6592",
  45. "mediatek,mt7623",
  46. "mediatek,mt7623a",
  47. "mediatek,mt8127",
  48. "mediatek,mt8135",
  49. NULL,
  50. };
  51. DT_MACHINE_START(MEDIATEK_DT, "Mediatek Cortex-A7 (Device Tree)")
  52. .dt_compat = mediatek_board_dt_compat,
  53. .init_time = mediatek_timer_init,
  54. MACHINE_END