MUX_SRC_LIST(
	{&cnoc_clk.c, 0x0008},
	{&pnoc_clk.c, 0x0010},
	{&snoc_clk.c, 0x0000},
	{&bimc_clk.c, 0x0155},
	),
	.c = {
		.dbg_name = "rpm_debug_mux",
		.ops = &clk_ops_gen_mux,
		.flags = CLKFLAG_NO_RATE_CACHE,
		CLK_INIT(rpm_debug_mux.c),
	},
};

static struct clk_lookup msm_clocks_rpm_8974[] = {
	CLK_LOOKUP_OF("rpm_debug_mux", rpm_debug_mux,
			"fc401880.qcom,cc-debug"),
	CLK_LOOKUP_OF("xo", cxo_gcc,   "fc400000.qcom,gcc"),
	CLK_LOOKUP_OF("xo", cxo_mmss, "fd8c0000.qcom,mmsscc"),
	CLK_LOOKUP_OF("mmssnoc_ahb", mmssnoc_ahb_clk, "fd8c0000.qcom,mmsscc"),

	CLK_LOOKUP_OF("xo",        cxo_otg_clk,                  "msm_otg"),
	CLK_LOOKUP_OF("xo",  cxo_pil_lpass_clk,      "fe200000.qcom,lpass"),
	CLK_LOOKUP_OF("xo",    cxo_pil_mss_clk,        "fc880000.qcom,mss"),
	CLK_LOOKUP_OF("xo",       cxo_wlan_clk, "fb000000.qcom,wcnss-wlan"),
	CLK_LOOKUP_OF("rf_clk",         cxo_a2, "fb000000.qcom,wcnss-wlan"),
	CLK_LOOKUP_OF("xo", cxo_pil_pronto_clk,     "fb21b000.qcom,pronto"),
	CLK_LOOKUP_OF("xo",       cxo_dwc3_clk,                 "msm_dwc3"),
	CLK_LOOKUP_OF("xo",  cxo_ehci_host_clk,            "msm_ehci_host"),
	CLK_LOOKUP_OF("xo",        cxo_lpm_clk,        "fc4281d0.qcom,mpm"),
	CLK_LOOKUP_OF("hfpll_src", cxo_a_clk_src,  "f9016000.qcom,clock-krait"),
static struct platform_driver msm_clock_gcc_driver = {
    .probe = msm_gcc_probe,
    .driver = {
        .name = "qcom,gcc-fsm9010",
        .of_match_table = msm_clock_gcc_match_table,
        .owner = THIS_MODULE,
    },
};

static int __init msm_gcc_init(void)
{
    return platform_driver_register(&msm_clock_gcc_driver);
}

static struct clk_lookup msm_clocks_measure[] = {
    CLK_LOOKUP_OF("measure", gcc_debug_mux, "debug"),
};

static int msm_clock_debug_probe(struct platform_device *pdev)
{
    int ret;

    clk_ops_debug_mux = clk_ops_gen_mux;
    clk_ops_debug_mux.get_rate = measure_get_rate;

    ret =  of_msm_clock_register(pdev->dev.of_node, msm_clocks_measure,
                                 ARRAY_SIZE(msm_clocks_measure));
    if (ret) {
        dev_err(&pdev->dev, "Failed to register debug Mux\n");
        return ret;
    }
Пример #3
0
struct div_clk byte_clk_src_8974 = {
	.ops = &fixed_4div_ops,
	.data = {
		.min_div = 4,
		.max_div = 4,
	},
	.c = {
		.parent = &byte_mux_8974.c,
		.dbg_name = "byte_clk_src",
		.ops = &byte_clk_src_ops,
		CLK_INIT(byte_clk_src_8974.c),
	},
};

static struct clk_lookup mdss_dsi_pllcc_8974[] = {
	CLK_LOOKUP_OF("pixel_src", pixel_clk_src_8974,
						"fd8c0000.qcom,mmsscc-mdss"),
	CLK_LOOKUP_OF("byte_src", byte_clk_src_8974,
						"fd8c0000.qcom,mmsscc-mdss"),
};

int dsi_pll_clock_register(struct platform_device *pdev,
				struct mdss_pll_resources *pll_res)
{
	int rc;

	if (!pll_res || !pll_res->pll_base) {
		pr_err("Invalide input parameters\n");
		return -EPROBE_DEFER;
	}

	/* Set client data to mux, div and vco clocks */
	},
};

static struct branch_clk q6ss_ahbm_clk = {
	.cbcr_reg = Q6SS_AHBM_CBCR,
	.has_sibling = 1,
	.base = &virt_bases[LPASS_BASE],
	.c = {
		.dbg_name = "q6ss_ahbm_clk",
		.ops = &clk_ops_branch,
		CLK_INIT(q6ss_ahbm_clk.c),
	},
};

static struct clk_lookup msm_clocks_lpass_8974[] = {
	CLK_LOOKUP_OF("core_clk",         q6ss_xo_clk,  "fe200000.qti,lpass"),
	CLK_LOOKUP_OF("iface_clk", q6ss_ahb_lfabif_clk, "fe200000.qti,lpass"),
	CLK_LOOKUP_OF("reg_clk",        q6ss_ahbm_clk,  "fe200000.qti,lpass"),
};

static struct of_device_id msm_clock_lpasscc_match_table[] = {
	{ .compatible = "qcom,lpasscc-8974" },
	{}
};

static int msm_lpasscc_8974_probe(struct platform_device *pdev)
{
	struct resource *res;
	int ret;

	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "cc_base");