1
0
Fork 0

MLK-15992 imx: mlb: add ipg & hclk clocks for imx8 mlb

Add ipg & hclk clock for imx8 mlb due to IP integration difference.

Signed-off-by: Gao Pan <pandy.gao@nxp.com>
(cherry picked from commit 599dfce3bf486ed65ccd3b63bca4ffba92cab15e)
5.4-rM2-2.2.x-imx-squashed
Gao Pan 2017-07-14 18:10:57 +08:00 committed by Dong Aisheng
parent 9cfdf9587a
commit cfd8fbc27b
1 changed files with 28 additions and 1 deletions

View File

@ -369,6 +369,10 @@ struct mlb_dev_info {
struct mlb_data {
struct device *dev;
struct mlb_dev_info *devinfo;
#ifdef CONFIG_ARCH_MXC_ARM64
struct clk *ipg;
struct clk *hclk;
#endif
struct clk *mlb;
struct cdev cdev;
struct class *class; /* device class */
@ -1942,6 +1946,10 @@ static int mxc_mlb150_open(struct inode *inode, struct file *filp)
return -EBUSY;
}
#ifdef CONFIG_ARCH_MXC_ARM64
clk_prepare_enable(drvdata->ipg);
clk_prepare_enable(drvdata->hclk);
#endif
clk_prepare_enable(drvdata->mlb);
/* initial MLB module */
@ -2033,6 +2041,10 @@ static int mxc_mlb150_release(struct inode *inode, struct file *filp)
atomic_set(&pdevinfo->on, 0);
clk_disable_unprepare(drvdata->mlb);
#ifdef CONFIG_ARCH_MXC_ARM64
clk_disable_unprepare(drvdata->hclk);
clk_disable_unprepare(drvdata->ipg);
#endif
/* decrease the open count */
atomic_set(&pdevinfo->opencnt, 0);
@ -2662,7 +2674,22 @@ static int mxc_mlb150_probe(struct platform_device *pdev)
}
#endif
/* enable clock */
#ifdef CONFIG_ARCH_MXC_ARM64
drvdata->ipg = devm_clk_get(&pdev->dev, "ipg");
if (IS_ERR(drvdata->ipg)) {
dev_err(&pdev->dev, "unable to get mlb ipg clock\n");
ret = PTR_ERR(drvdata->ipg);
goto err_dev;
};
drvdata->hclk = devm_clk_get(&pdev->dev, "hclk");
if (IS_ERR(drvdata->hclk)) {
dev_err(&pdev->dev, "unable to get mlb hclk clock\n");
ret = PTR_ERR(drvdata->hclk);
goto err_dev;
};
#endif
drvdata->mlb = devm_clk_get(&pdev->dev, "mlb");
if (IS_ERR(drvdata->mlb)) {
dev_err(&pdev->dev, "unable to get mlb clock\n");