blob: 0abd2c9d5d2693746e790f10a49580934135cf14 [file] [log] [blame]
Patrick Georgiac959032020-05-05 22:49:26 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Yanjie Jiang64dea2e2019-05-07 10:31:07 +08002
3#include <device/mmio.h>
4#include <soc/addressmap.h>
5#include <soc/infracfg.h>
6#include <soc/pll.h>
7#include <soc/md_ctrl.h>
8
9#define TOPCKGEN_CLK_MODE_MD_32K (1 << 8)
10#define TOPCKGEN_CLK_MODE_MD_26M (1 << 9)
11#define INFRA_MISC2_SRCCLKENA_RELEASE (0xFF)
12
13static void internal_md_power_down(void)
14{
15 /* Gating MD clock */
Julius Werner55009af2019-12-02 22:03:27 -080016 setbits32(&mtk_topckgen->clk_mode,
Yanjie Jiang64dea2e2019-05-07 10:31:07 +080017 TOPCKGEN_CLK_MODE_MD_32K | TOPCKGEN_CLK_MODE_MD_26M);
18 /* Release SRCCLKENA */
Julius Werner55009af2019-12-02 22:03:27 -080019 clrbits32(&mt8183_infracfg->infra_misc2,
Yanjie Jiang64dea2e2019-05-07 10:31:07 +080020 INFRA_MISC2_SRCCLKENA_RELEASE);
21}
22
23void mtk_md_early_init(void)
24{
25 internal_md_power_down();
26}