Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b85da8d2 authored by Tianyi Gou's avatar Tianyi Gou
Browse files

msm: clock-krait-8974: Add support for DT clock lookup



Register the clock-krait driver as the provider of the
krait clocks and introduce the of_index values for krait
clocks so that the clock clients can use the DT clock lookup
features.

Note that this change also provides the backward compatibility
for table based lookup.

Change-Id: I104385269d2d9b989171a9ea7722e3ba4293d09f
Signed-off-by: default avatarTianyi Gou <tgou@codeaurora.org>
parent 01f3b4c6
Loading
Loading
Loading
Loading
+42 −36
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@
#include <soc/qcom/clock-krait.h>

#include <asm/cputype.h>
#include <dt-bindings/clock/msm-clocks-krait.h>

#include "clock.h"

@@ -441,41 +442,41 @@ static struct mux_clk kpss_debug_pri_mux = {
};

static struct clk_lookup kpss_clocks_8974[] = {
	CLK_LOOKUP("",	hfpll_src_clk.c,	""),
	CLK_LOOKUP("",	acpu_aux_clk.c,		""),
	CLK_LOOKUP("",	hfpll0_clk.c,		""),
	CLK_LOOKUP("",	hfpll0_div_clk.c,	""),
	CLK_LOOKUP("",	hfpll0_clk.c,		""),
	CLK_LOOKUP("",	hfpll1_div_clk.c,	""),
	CLK_LOOKUP("",	hfpll1_clk.c,		""),
	CLK_LOOKUP("",	hfpll2_div_clk.c,	""),
	CLK_LOOKUP("",	hfpll2_clk.c,		""),
	CLK_LOOKUP("",	hfpll3_div_clk.c,	""),
	CLK_LOOKUP("",	hfpll3_clk.c,		""),
	CLK_LOOKUP("",	hfpll_l2_div_clk.c,	""),
	CLK_LOOKUP("",	hfpll_l2_clk.c,		""),
	CLK_LOOKUP("",	krait0_sec_mux_clk.c,		""),
	CLK_LOOKUP("",	krait1_sec_mux_clk.c,		""),
	CLK_LOOKUP("",	krait2_sec_mux_clk.c,		""),
	CLK_LOOKUP("",	krait3_sec_mux_clk.c,		""),
	CLK_LOOKUP("",	l2_sec_mux_clk.c,		""),
	CLK_LOOKUP("",	krait0_pri_mux_clk.c,		""),
	CLK_LOOKUP("",	krait1_pri_mux_clk.c,		""),
	CLK_LOOKUP("",	krait2_pri_mux_clk.c,		""),
	CLK_LOOKUP("",	krait3_pri_mux_clk.c,		""),
	CLK_LOOKUP("",	l2_pri_mux_clk.c,		""),
	CLK_LOOKUP("l2_clk",	l2_clk.c,     "0.qcom,msm-cpufreq"),
	CLK_LOOKUP("cpu0_clk",	krait0_clk.c, "0.qcom,msm-cpufreq"),
	CLK_LOOKUP("cpu1_clk",	krait1_clk.c, "0.qcom,msm-cpufreq"),
	CLK_LOOKUP("cpu2_clk",	krait2_clk.c, "0.qcom,msm-cpufreq"),
	CLK_LOOKUP("cpu3_clk",	krait3_clk.c, "0.qcom,msm-cpufreq"),
	CLK_LOOKUP("l2_clk",	l2_clk.c,     "fe805664.qcom,pm"),
	CLK_LOOKUP("cpu0_clk",	krait0_clk.c, "fe805664.qcom,pm"),
	CLK_LOOKUP("cpu1_clk",	krait1_clk.c, "fe805664.qcom,pm"),
	CLK_LOOKUP("cpu2_clk",	krait2_clk.c, "fe805664.qcom,pm"),
	CLK_LOOKUP("cpu3_clk",	krait3_clk.c, "fe805664.qcom,pm"),

	CLK_LOOKUP("kpss_debug_mux", kpss_debug_pri_mux.c,
	CLK_LOOKUP_OF("",	hfpll_src_clk,	""),
	CLK_LOOKUP_OF("",	acpu_aux_clk,		""),
	CLK_LOOKUP_OF("",	hfpll0_clk,		""),
	CLK_LOOKUP_OF("",	hfpll0_div_clk,	""),
	CLK_LOOKUP_OF("",	hfpll0_clk,		""),
	CLK_LOOKUP_OF("",	hfpll1_div_clk,	""),
	CLK_LOOKUP_OF("",	hfpll1_clk,		""),
	CLK_LOOKUP_OF("",	hfpll2_div_clk,	""),
	CLK_LOOKUP_OF("",	hfpll2_clk,		""),
	CLK_LOOKUP_OF("",	hfpll3_div_clk,	""),
	CLK_LOOKUP_OF("",	hfpll3_clk,		""),
	CLK_LOOKUP_OF("",	hfpll_l2_div_clk,	""),
	CLK_LOOKUP_OF("",	hfpll_l2_clk,		""),
	CLK_LOOKUP_OF("",	krait0_sec_mux_clk,		""),
	CLK_LOOKUP_OF("",	krait1_sec_mux_clk,		""),
	CLK_LOOKUP_OF("",	krait2_sec_mux_clk,		""),
	CLK_LOOKUP_OF("",	krait3_sec_mux_clk,		""),
	CLK_LOOKUP_OF("",	l2_sec_mux_clk,		""),
	CLK_LOOKUP_OF("",	krait0_pri_mux_clk,		""),
	CLK_LOOKUP_OF("",	krait1_pri_mux_clk,		""),
	CLK_LOOKUP_OF("",	krait2_pri_mux_clk,		""),
	CLK_LOOKUP_OF("",	krait3_pri_mux_clk,		""),
	CLK_LOOKUP_OF("",	l2_pri_mux_clk,		""),
	CLK_LOOKUP_OF("l2_clk",	l2_clk,     "0.qcom,msm-cpufreq"),
	CLK_LOOKUP_OF("cpu0_clk",	krait0_clk, "0.qcom,msm-cpufreq"),
	CLK_LOOKUP_OF("cpu1_clk",	krait1_clk, "0.qcom,msm-cpufreq"),
	CLK_LOOKUP_OF("cpu2_clk",	krait2_clk, "0.qcom,msm-cpufreq"),
	CLK_LOOKUP_OF("cpu3_clk",	krait3_clk, "0.qcom,msm-cpufreq"),
	CLK_LOOKUP_OF("l2_clk",	l2_clk,     "fe805664.qcom,pm"),
	CLK_LOOKUP_OF("cpu0_clk",	krait0_clk, "fe805664.qcom,pm"),
	CLK_LOOKUP_OF("cpu1_clk",	krait1_clk, "fe805664.qcom,pm"),
	CLK_LOOKUP_OF("cpu2_clk",	krait2_clk, "fe805664.qcom,pm"),
	CLK_LOOKUP_OF("cpu3_clk",	krait3_clk, "fe805664.qcom,pm"),

	CLK_LOOKUP_OF("kpss_debug_mux", kpss_debug_pri_mux,
		   "fc401880.qcom,cc-debug"),
};

@@ -820,7 +821,12 @@ static int clock_krait_8974_driver_probe(struct platform_device *pdev)
		return -ENOMEM;
	}

	msm_clock_register(kpss_clocks_8974, ARRAY_SIZE(kpss_clocks_8974));
	ret = of_msm_clock_register(dev->of_node, kpss_clocks_8974,
			ARRAY_SIZE(kpss_clocks_8974));
	if (ret) {
		dev_err(dev, "Unable to register krait clock table.\n");
		return ret;
	}

	/*
	 * We don't want the CPU or L2 clocks to be turned off at late init
+45 −0
Original line number Diff line number Diff line
/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * only version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

#ifndef __MSM_CLOCKS_KRAIT_H
#define __MSM_CLOCKS_KRAIT_H

#define clk_acpu_aux_clk 0x871939dd
#define clk_hfpll0_clk 0xbf1858b6
#define clk_hfpll0_div_clk 0x27c60c55
#define clk_hfpll1_clk 0xfe5bec02
#define clk_hfpll1_div_clk 0xd895ec77
#define clk_hfpll2_clk 0xadc552ea
#define clk_hfpll2_div_clk 0x58846715
#define clk_hfpll3_clk 0xbe3bfe69
#define clk_hfpll3_div_clk 0x3a26e0ad
#define clk_hfpll_l2_clk 0xa31404e2
#define clk_hfpll_l2_div_clk 0xa9400306
#define clk_hfpll_src_clk 0xa6e8d53c
#define clk_kpss_debug_pri_mux 0x75345e43
#define clk_krait0_clk 0x79f36ab2
#define clk_krait0_pri_mux_clk 0xe6221f05
#define clk_krait0_sec_mux_clk 0xed9f6692
#define clk_krait1_clk 0x5d5c6818
#define clk_krait1_pri_mux_clk 0x51c1e512
#define clk_krait1_sec_mux_clk 0xcf209039
#define clk_krait2_clk 0xfb13e34f
#define clk_krait2_pri_mux_clk 0x6d925267
#define clk_krait2_sec_mux_clk 0xbdb892b3
#define clk_krait3_clk 0x3a0c5991
#define clk_krait3_pri_mux_clk 0x8cb8e774
#define clk_krait3_sec_mux_clk 0x19ad080d
#define clk_l2_clk 0x8d1f685e
#define clk_l2_pri_mux_clk 0xf42964b7
#define clk_l2_sec_mux_clk 0x0ee505f1

#endif