From e3e12f52b214121840b44c91de5b3e5af5d3eb84 Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Mon, 06 Nov 2023 03:04:41 +0000 Subject: [PATCH] rk3568 rt init --- kernel/drivers/soc/rockchip/rockchip_thunderboot_mmc.c | 17 +++++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-) diff --git a/kernel/drivers/soc/rockchip/rockchip_thunderboot_mmc.c b/kernel/drivers/soc/rockchip/rockchip_thunderboot_mmc.c index ba16186..1061881 100644 --- a/kernel/drivers/soc/rockchip/rockchip_thunderboot_mmc.c +++ b/kernel/drivers/soc/rockchip/rockchip_thunderboot_mmc.c @@ -2,6 +2,7 @@ /* * Copyright (C) 2020 Rockchip Electronics Co., Ltd. */ +#include <linux/clk.h> #include <linux/iopoll.h> #include <linux/kernel.h> #include <linux/kthread.h> @@ -27,6 +28,8 @@ struct resource *res; struct device_node *rds, *rdd, *dma; struct device *dev = &pdev->dev; + struct clk_bulk_data *clk_bulks; + int clk_num; u32 status; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); @@ -39,6 +42,18 @@ rds = of_parse_phandle(dev->of_node, "memory-region-src", 0); rdd = of_parse_phandle(dev->of_node, "memory-region-dst", 0); dma = of_parse_phandle(dev->of_node, "memory-region-idmac", 0); + + clk_num = clk_bulk_get_all(&pdev->dev, &clk_bulks); + if (clk_num >= 0) { + ret = clk_bulk_prepare_enable(clk_num, clk_bulks); + if (ret) { + dev_err(&pdev->dev, "failed to enable clocks\n"); + return ret; + } + } else { + dev_err(&pdev->dev, "failed to get clks property\\n"); + return clk_num; + } if (readl_poll_timeout(regs + SDMMC_STATUS, status, !(status & (BIT(10) | GENMASK(7, 4))), 100, @@ -95,6 +110,8 @@ } out: + clk_bulk_disable_unprepare(clk_num, clk_bulks); + clk_bulk_put_all(clk_num, clk_bulks); of_node_put(rds); of_node_put(rdd); of_node_put(dma); -- Gitblit v1.6.2