| // SPDX-License-Identifier: GPL-2.0 |
| /* |
| * Copyright (C) 2018 Synaptics Incorporated |
| * |
| * Author: Jisheng Zhang <jszhang@kernel.org> |
| * |
| */ |
| |
| #include <linux/clk-provider.h> |
| |
| #include "clk.h" |
| |
| static struct clk_onecell_data gateclk_data; |
| static struct clk_onecell_data clk_data; |
| |
| static const struct gateclk_desc as370_gates[] __initconst = { |
| { "tspsysclk", "perifsysclk", 0, CLK_IGNORE_UNUSED }, |
| { "usb0coreclk", "perifsysclk", 1 }, |
| { "sdiosysclk", "perifsysclk", 2 }, |
| { "pcie0sys", "perifsysclk", 3 }, |
| { "pcie1sys", "perifsysclk", 4 }, |
| { "nfcsysclk", "perifsysclk", 5 }, |
| { "emmcsysclk", "perifsysclk", 6 }, |
| { "pbridgecoreclk", "perifsysclk", 7 }, |
| }; |
| |
| static void __init as370_gateclk_setup(struct device_node *np) |
| { |
| int n = ARRAY_SIZE(as370_gates); |
| |
| berlin_gateclk_setup(np, as370_gates, &gateclk_data, n); |
| } |
| CLK_OF_DECLARE(as370_gateclk, "syna,as370-gateclk", as370_gateclk_setup); |
| |
| static const struct clk_desc as370_descs[] __initconst = { |
| { "cpufastrefclk", 0x0, CLK_IS_CRITICAL }, |
| { "memfastrefclk", 0x4 }, |
| { "cfgclk", 0x8, CLK_IS_CRITICAL }, |
| { "perifsysclk", 0xc, CLK_IS_CRITICAL }, |
| { "atbclk", 0x10 }, |
| { "aviosysclk", 0x14, CLK_IS_CRITICAL }, |
| { "apbcoreclk", 0x18, CLK_IS_CRITICAL }, |
| { "nnasysclk", 0x1c }, |
| { "nnacoreclk", 0x20 }, |
| { "emmcclk", 0x24 }, |
| { "sd0clk", 0x28 }, |
| { "pcie_500m_txtestclk", 0x2c }, |
| { "pcie_250m_pipetestClk1", 0x30 }, |
| { "pcie_250m_pipetestClk2", 0x34 }, |
| { "pcie_500m_rxtestclk", 0x38 }, |
| { "pcie_serdestestclk", 0x3c }, |
| { "nfceccclk", 0x40 }, |
| { "nfccoreclk", 0x44 }, |
| { "usbOtg60mtestclk", 0x48 }, |
| { "usbOtg50mtestclk", 0x4c }, |
| { "usbOtg12mtestclk", 0x50 }, |
| { "usbOtg480mtestclk", 0x54 }, |
| { "bcmclk", 0x58, CLK_IS_CRITICAL }, |
| }; |
| |
| static void __init as370_clk_setup(struct device_node *np) |
| { |
| int n = ARRAY_SIZE(as370_descs); |
| |
| berlin_clk_setup(np, as370_descs, &clk_data, n); |
| } |
| CLK_OF_DECLARE(as370_clk, "syna,as370-clk", as370_clk_setup); |