Skip to content

Commit

Permalink
clk: imx: Add common API for masking MMDC handshake
Browse files Browse the repository at this point in the history
All i.MX6 SoCs need to mask unused MMDC channel's handshake
for low power modes, this patch provides common API for masking
the MMDC channel passed from caller.

Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
Reviewed-by: Dong Aisheng <aisheng.dong@nxp.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
  • Loading branch information
Anson Huang authored and Shawn Guo committed May 23, 2019
1 parent 53c6a2e commit efdb279
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 0 deletions.
15 changes: 15 additions & 0 deletions drivers/clk/imx/clk.c
Original file line number Diff line number Diff line change
@@ -1,13 +1,28 @@
// SPDX-License-Identifier: GPL-2.0
#include <linux/clk.h>
#include <linux/err.h>
#include <linux/io.h>
#include <linux/of.h>
#include <linux/slab.h>
#include <linux/spinlock.h>
#include "clk.h"

#define CCM_CCDR 0x4
#define CCDR_MMDC_CH0_MASK BIT(17)
#define CCDR_MMDC_CH1_MASK BIT(16)

DEFINE_SPINLOCK(imx_ccm_lock);

void __init imx_mmdc_mask_handshake(void __iomem *ccm_base,
unsigned int chn)
{
unsigned int reg;

reg = readl_relaxed(ccm_base + CCM_CCDR);
reg |= chn == 0 ? CCDR_MMDC_CH0_MASK : CCDR_MMDC_CH1_MASK;
writel_relaxed(reg, ccm_base + CCM_CCDR);
}

void __init imx_check_clocks(struct clk *clks[], unsigned int count)
{
unsigned i;
Expand Down
1 change: 1 addition & 0 deletions drivers/clk/imx/clk.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ extern spinlock_t imx_ccm_lock;
void imx_check_clocks(struct clk *clks[], unsigned int count);
void imx_check_clk_hws(struct clk_hw *clks[], unsigned int count);
void imx_register_uart_clocks(struct clk ** const clks[]);
void imx_mmdc_mask_handshake(void __iomem *ccm_base, unsigned int chn);

extern void imx_cscmr1_fixup(u32 *val);

Expand Down

0 comments on commit efdb279

Please sign in to comment.