diff options
author | John Crispin <john@openwrt.org> | 2015-11-02 10:18:50 +0000 |
---|---|---|
committer | John Crispin <john@openwrt.org> | 2015-11-02 10:18:50 +0000 |
commit | 25afe99b31f4ef3d835f96545e370770c230ac44 (patch) | |
tree | 5dbe83834a0a67121c557b7549a13221317f07eb /target/linux/mediatek/patches/0041-arm-mediatek-enable-gpt6-on-boot-up-to-make-arch-tim.patch | |
parent | 12e0d2737f558e886cf698e939f1758ab6a64947 (diff) | |
download | upstream-25afe99b31f4ef3d835f96545e370770c230ac44.tar.gz upstream-25afe99b31f4ef3d835f96545e370770c230ac44.tar.bz2 upstream-25afe99b31f4ef3d835f96545e370770c230ac44.zip |
mediatek: add support for the new MT7623 Arm SoC
the support is still WIP. next steps are to make the pmic and ethernet work.
this is the first commit to make sure nothing gets lost.
Signed-off-by: John Crispin <blogic@openwrt.org>
SVN-Revision: 47354
Diffstat (limited to 'target/linux/mediatek/patches/0041-arm-mediatek-enable-gpt6-on-boot-up-to-make-arch-tim.patch')
-rw-r--r-- | target/linux/mediatek/patches/0041-arm-mediatek-enable-gpt6-on-boot-up-to-make-arch-tim.patch | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/target/linux/mediatek/patches/0041-arm-mediatek-enable-gpt6-on-boot-up-to-make-arch-tim.patch b/target/linux/mediatek/patches/0041-arm-mediatek-enable-gpt6-on-boot-up-to-make-arch-tim.patch new file mode 100644 index 0000000000..728792c2a8 --- /dev/null +++ b/target/linux/mediatek/patches/0041-arm-mediatek-enable-gpt6-on-boot-up-to-make-arch-tim.patch @@ -0,0 +1,63 @@ +From eec99287ace37015ed313b4fc27ba205a158b66c Mon Sep 17 00:00:00 2001 +From: Matthias Brugger <matthias.bgg@gmail.com> +Date: Fri, 1 May 2015 15:43:26 +0800 +Subject: [PATCH 41/76] arm: mediatek: enable gpt6 on boot up to make arch + timer working + +We enable GTP6 which ungates the arch timer clock. +In the future this should be done in the bootloader. + +Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com> +Signed-off-by: Yingjoe Chen <yingjoe.chen@mediatek.com> +--- + arch/arm/mach-mediatek/mediatek.c | 29 +++++++++++++++++++++++++++++ + 1 file changed, 29 insertions(+) + +diff --git a/arch/arm/mach-mediatek/mediatek.c b/arch/arm/mach-mediatek/mediatek.c +index a954900..6b38d67 100644 +--- a/arch/arm/mach-mediatek/mediatek.c ++++ b/arch/arm/mach-mediatek/mediatek.c +@@ -16,6 +16,34 @@ + */ + #include <linux/init.h> + #include <asm/mach/arch.h> ++#include <linux/of.h> ++#include <linux/clk-provider.h> ++#include <linux/clocksource.h> ++ ++ ++#define GPT6_CON_MT65xx 0x10008060 ++#define GPT_ENABLE 0x31 ++ ++static void __init mediatek_timer_init(void) ++{ ++ void __iomem *gpt_base = 0; ++ ++ if (of_machine_is_compatible("mediatek,mt6589") || ++ of_machine_is_compatible("mediatek,mt8135") || ++ of_machine_is_compatible("mediatek,mt8127")) { ++ /* turn on GPT6 which ungates arch timer clocks */ ++ gpt_base = ioremap(GPT6_CON_MT65xx, 0x04); ++ } ++ ++ /* enabel clock and set to free-run */ ++ if (gpt_base) { ++ writel(GPT_ENABLE, gpt_base); ++ iounmap(gpt_base); ++ } ++ ++ of_clk_init(NULL); ++ clocksource_of_init(); ++}; + + static const char * const mediatek_board_dt_compat[] = { + "mediatek,mt6589", +@@ -27,4 +55,5 @@ static const char * const mediatek_board_dt_compat[] = { + + DT_MACHINE_START(MEDIATEK_DT, "Mediatek Cortex-A7 (Device Tree)") + .dt_compat = mediatek_board_dt_compat, ++ .init_time = mediatek_timer_init, + MACHINE_END +-- +1.7.10.4 + |