Lines Matching +full:clkr +full:- +full:- +full:-

1 // SPDX-License-Identifier: GPL-2.0-only
6 #include <linux/clk-provider.h>
16 #include <dt-bindings/clock/qcom,qca8k-nsscc.h>
17 #include <dt-bindings/reset/qcom,qca8k-nsscc.h>
19 #include "clk-branch.h"
20 #include "clk-rcg.h"
21 #include "clk-regmap.h"
22 #include "clk-regmap-divider.h"
23 #include "clk-regmap-mux.h"
74 .clkr.hw.init = &(const struct clk_init_data) {
85 .clkr = {
91 &nss_cc_switch_core_clk_src.clkr.hw,
103 .clkr = {
109 &nss_cc_switch_core_clk_src.clkr.hw,
132 .clkr.hw.init = &(const struct clk_init_data) {
145 .clkr = {
149 &nss_cc_mac0_tx_clk_src.clkr.hw,
161 .clkr = {
167 &nss_cc_mac0_tx_div_clk_src.clkr.hw,
179 .clkr = {
185 &nss_cc_mac0_tx_div_clk_src.clkr.hw,
210 .clkr.hw.init = &(const struct clk_init_data) {
223 .clkr = {
227 &nss_cc_mac0_rx_clk_src.clkr.hw,
239 .clkr = {
245 &nss_cc_mac0_rx_div_clk_src.clkr.hw,
257 .clkr = {
263 &nss_cc_mac0_rx_div_clk_src.clkr.hw,
312 .clkr.hw.init = &(const struct clk_init_data) {
324 .clkr = {
328 &nss_cc_mac1_tx_clk_src.clkr.hw,
341 .clkr = {
345 &nss_cc_mac1_tx_clk_src.clkr.hw,
357 .clkr = {
363 &nss_cc_mac1_tx_div_clk_src.clkr.hw,
375 .clkr = {
381 &nss_cc_mac1_tx_div_clk_src.clkr.hw,
393 .clkr = {
399 &nss_cc_mac1_tx_div_clk_src.clkr.hw,
411 .clkr = {
417 &nss_cc_mac1_srds1_ch0_xgmii_rx_div_clk_src.clkr.hw,
449 .clkr.hw.init = &(const struct clk_init_data) {
461 .clkr = {
465 &nss_cc_mac1_rx_clk_src.clkr.hw,
478 .clkr = {
482 &nss_cc_mac1_rx_clk_src.clkr.hw,
494 .clkr = {
500 &nss_cc_mac1_rx_div_clk_src.clkr.hw,
512 .clkr = {
518 &nss_cc_mac1_rx_div_clk_src.clkr.hw,
530 .clkr = {
536 &nss_cc_mac1_rx_div_clk_src.clkr.hw,
548 .clkr = {
554 &nss_cc_mac1_srds1_ch0_xgmii_tx_div_clk_src.clkr.hw,
568 .clkr.hw.init = &(const struct clk_init_data) {
580 .clkr = {
584 &nss_cc_mac2_tx_clk_src.clkr.hw,
597 .clkr = {
601 &nss_cc_mac2_tx_clk_src.clkr.hw,
613 .clkr = {
619 &nss_cc_mac2_tx_div_clk_src.clkr.hw,
631 .clkr = {
637 &nss_cc_mac2_tx_div_clk_src.clkr.hw,
649 .clkr = {
655 &nss_cc_mac2_tx_div_clk_src.clkr.hw,
667 .clkr = {
673 &nss_cc_mac2_srds1_ch1_xgmii_rx_div_clk_src.clkr.hw,
687 .clkr.hw.init = &(const struct clk_init_data) {
699 .clkr = {
703 &nss_cc_mac2_rx_clk_src.clkr.hw,
716 .clkr = {
720 &nss_cc_mac2_rx_clk_src.clkr.hw,
732 .clkr = {
738 &nss_cc_mac2_rx_div_clk_src.clkr.hw,
750 .clkr = {
756 &nss_cc_mac2_rx_div_clk_src.clkr.hw,
768 .clkr = {
774 &nss_cc_mac2_rx_div_clk_src.clkr.hw,
786 .clkr = {
792 &nss_cc_mac2_srds1_ch1_xgmii_tx_div_clk_src.clkr.hw,
806 .clkr.hw.init = &(const struct clk_init_data) {
818 .clkr = {
822 &nss_cc_mac3_tx_clk_src.clkr.hw,
835 .clkr = {
839 &nss_cc_mac3_tx_clk_src.clkr.hw,
851 .clkr = {
857 &nss_cc_mac3_tx_div_clk_src.clkr.hw,
869 .clkr = {
875 &nss_cc_mac3_tx_div_clk_src.clkr.hw,
887 .clkr = {
893 &nss_cc_mac3_tx_div_clk_src.clkr.hw,
905 .clkr = {
911 &nss_cc_mac3_srds1_ch2_xgmii_rx_div_clk_src.clkr.hw,
925 .clkr.hw.init = &(const struct clk_init_data) {
937 .clkr = {
941 &nss_cc_mac3_rx_clk_src.clkr.hw,
954 .clkr = {
958 &nss_cc_mac3_rx_clk_src.clkr.hw,
970 .clkr = {
976 &nss_cc_mac3_rx_div_clk_src.clkr.hw,
988 .clkr = {
994 &nss_cc_mac3_rx_div_clk_src.clkr.hw,
1006 .clkr = {
1012 &nss_cc_mac3_rx_div_clk_src.clkr.hw,
1024 .clkr = {
1030 &nss_cc_mac3_srds1_ch2_xgmii_tx_div_clk_src.clkr.hw,
1086 .clkr.hw.init = &(const struct clk_init_data) {
1098 .clkr = {
1102 &nss_cc_mac4_tx_clk_src.clkr.hw,
1115 .clkr = {
1119 &nss_cc_mac4_tx_clk_src.clkr.hw,
1131 .clkr = {
1137 &nss_cc_mac4_tx_div_clk_src.clkr.hw,
1149 .clkr = {
1155 &nss_cc_mac4_tx_div_clk_src.clkr.hw,
1167 .clkr = {
1173 &nss_cc_mac4_tx_div_clk_src.clkr.hw,
1185 .clkr = {
1191 &nss_cc_mac4_srds1_ch3_xgmii_rx_div_clk_src.clkr.hw,
1242 .clkr.hw.init = &(const struct clk_init_data) {
1254 .clkr = {
1258 &nss_cc_mac4_rx_clk_src.clkr.hw,
1271 .clkr = {
1275 &nss_cc_mac4_rx_clk_src.clkr.hw,
1287 .clkr = {
1293 &nss_cc_mac4_rx_div_clk_src.clkr.hw,
1305 .clkr = {
1311 &nss_cc_mac4_rx_div_clk_src.clkr.hw,
1323 .clkr = {
1329 &nss_cc_mac4_rx_div_clk_src.clkr.hw,
1341 .clkr = {
1347 &nss_cc_mac4_srds1_ch3_xgmii_tx_div_clk_src.clkr.hw,
1370 .clkr.hw.init = &(const struct clk_init_data) {
1383 .clkr = {
1387 &nss_cc_mac5_tx_clk_src.clkr.hw,
1399 .clkr = {
1405 &nss_cc_mac5_tx_div_clk_src.clkr.hw,
1430 .clkr.hw.init = &(const struct clk_init_data) {
1443 .clkr = {
1447 &nss_cc_mac5_rx_clk_src.clkr.hw,
1459 .clkr = {
1465 &nss_cc_mac5_rx_div_clk_src.clkr.hw,
1484 .clkr = {
1488 &nss_cc_mac4_rx_div_clk_src.clkr.hw,
1489 &nss_cc_mac5_tx_div_clk_src.clkr.hw,
1501 .clkr = {
1507 &nss_cc_mac5_tx_srds0_clk_src.clkr.hw,
1526 .clkr = {
1530 &nss_cc_mac4_tx_div_clk_src.clkr.hw,
1531 &nss_cc_mac5_rx_div_clk_src.clkr.hw,
1543 .clkr = {
1549 &nss_cc_mac5_rx_srds0_clk_src.clkr.hw,
1574 .clkr.hw.init = &(const struct clk_init_data) {
1585 .clkr = {
1591 &nss_cc_ahb_clk_src.clkr.hw,
1603 .clkr = {
1609 &nss_cc_ahb_clk_src.clkr.hw,
1621 .clkr = {
1627 &nss_cc_ahb_clk_src.clkr.hw,
1639 .clkr = {
1645 &nss_cc_ahb_clk_src.clkr.hw,
1657 .clkr = {
1663 &nss_cc_ahb_clk_src.clkr.hw,
1675 .clkr = {
1681 &nss_cc_ahb_clk_src.clkr.hw,
1693 .clkr = {
1699 &nss_cc_ahb_clk_src.clkr.hw,
1726 .clkr.hw.init = &(const struct clk_init_data) {
1737 .clkr = {
1743 &nss_cc_sys_clk_src.clkr.hw,
1754 .clkr = {
1760 &nss_cc_sys_clk_src.clkr.hw,
1771 .clkr = {
1777 &nss_cc_sys_clk_src.clkr.hw,
1788 .clkr = {
1794 &nss_cc_sys_clk_src.clkr.hw,
1805 .clkr = {
1811 &nss_cc_sys_clk_src.clkr.hw,
1822 .clkr = {
1828 &nss_cc_sys_clk_src.clkr.hw,
1837 [NSS_CC_SWITCH_CORE_CLK_SRC] = &nss_cc_switch_core_clk_src.clkr,
1838 [NSS_CC_SWITCH_CORE_CLK] = &nss_cc_switch_core_clk.clkr,
1839 [NSS_CC_APB_BRIDGE_CLK] = &nss_cc_apb_bridge_clk.clkr,
1840 [NSS_CC_MAC0_TX_CLK_SRC] = &nss_cc_mac0_tx_clk_src.clkr,
1841 [NSS_CC_MAC0_TX_DIV_CLK_SRC] = &nss_cc_mac0_tx_div_clk_src.clkr,
1842 [NSS_CC_MAC0_TX_CLK] = &nss_cc_mac0_tx_clk.clkr,
1843 [NSS_CC_MAC0_TX_SRDS1_CLK] = &nss_cc_mac0_tx_srds1_clk.clkr,
1844 [NSS_CC_MAC0_RX_CLK_SRC] = &nss_cc_mac0_rx_clk_src.clkr,
1845 [NSS_CC_MAC0_RX_DIV_CLK_SRC] = &nss_cc_mac0_rx_div_clk_src.clkr,
1846 [NSS_CC_MAC0_RX_CLK] = &nss_cc_mac0_rx_clk.clkr,
1847 [NSS_CC_MAC0_RX_SRDS1_CLK] = &nss_cc_mac0_rx_srds1_clk.clkr,
1848 [NSS_CC_MAC1_TX_CLK_SRC] = &nss_cc_mac1_tx_clk_src.clkr,
1849 [NSS_CC_MAC1_TX_DIV_CLK_SRC] = &nss_cc_mac1_tx_div_clk_src.clkr,
1851 &nss_cc_mac1_srds1_ch0_xgmii_rx_div_clk_src.clkr,
1852 [NSS_CC_MAC1_SRDS1_CH0_RX_CLK] = &nss_cc_mac1_srds1_ch0_rx_clk.clkr,
1853 [NSS_CC_MAC1_TX_CLK] = &nss_cc_mac1_tx_clk.clkr,
1854 [NSS_CC_MAC1_GEPHY0_TX_CLK] = &nss_cc_mac1_gephy0_tx_clk.clkr,
1855 [NSS_CC_MAC1_SRDS1_CH0_XGMII_RX_CLK] = &nss_cc_mac1_srds1_ch0_xgmii_rx_clk.clkr,
1856 [NSS_CC_MAC1_RX_CLK_SRC] = &nss_cc_mac1_rx_clk_src.clkr,
1857 [NSS_CC_MAC1_RX_DIV_CLK_SRC] = &nss_cc_mac1_rx_div_clk_src.clkr,
1859 &nss_cc_mac1_srds1_ch0_xgmii_tx_div_clk_src.clkr,
1860 [NSS_CC_MAC1_SRDS1_CH0_TX_CLK] = &nss_cc_mac1_srds1_ch0_tx_clk.clkr,
1861 [NSS_CC_MAC1_RX_CLK] = &nss_cc_mac1_rx_clk.clkr,
1862 [NSS_CC_MAC1_GEPHY0_RX_CLK] = &nss_cc_mac1_gephy0_rx_clk.clkr,
1863 [NSS_CC_MAC1_SRDS1_CH0_XGMII_TX_CLK] = &nss_cc_mac1_srds1_ch0_xgmii_tx_clk.clkr,
1864 [NSS_CC_MAC2_TX_CLK_SRC] = &nss_cc_mac2_tx_clk_src.clkr,
1865 [NSS_CC_MAC2_TX_DIV_CLK_SRC] = &nss_cc_mac2_tx_div_clk_src.clkr,
1867 &nss_cc_mac2_srds1_ch1_xgmii_rx_div_clk_src.clkr,
1868 [NSS_CC_MAC2_SRDS1_CH1_RX_CLK] = &nss_cc_mac2_srds1_ch1_rx_clk.clkr,
1869 [NSS_CC_MAC2_TX_CLK] = &nss_cc_mac2_tx_clk.clkr,
1870 [NSS_CC_MAC2_GEPHY1_TX_CLK] = &nss_cc_mac2_gephy1_tx_clk.clkr,
1871 [NSS_CC_MAC2_SRDS1_CH1_XGMII_RX_CLK] = &nss_cc_mac2_srds1_ch1_xgmii_rx_clk.clkr,
1872 [NSS_CC_MAC2_RX_CLK_SRC] = &nss_cc_mac2_rx_clk_src.clkr,
1873 [NSS_CC_MAC2_RX_DIV_CLK_SRC] = &nss_cc_mac2_rx_div_clk_src.clkr,
1875 &nss_cc_mac2_srds1_ch1_xgmii_tx_div_clk_src.clkr,
1876 [NSS_CC_MAC2_SRDS1_CH1_TX_CLK] = &nss_cc_mac2_srds1_ch1_tx_clk.clkr,
1877 [NSS_CC_MAC2_RX_CLK] = &nss_cc_mac2_rx_clk.clkr,
1878 [NSS_CC_MAC2_GEPHY1_RX_CLK] = &nss_cc_mac2_gephy1_rx_clk.clkr,
1879 [NSS_CC_MAC2_SRDS1_CH1_XGMII_TX_CLK] = &nss_cc_mac2_srds1_ch1_xgmii_tx_clk.clkr,
1880 [NSS_CC_MAC3_TX_CLK_SRC] = &nss_cc_mac3_tx_clk_src.clkr,
1881 [NSS_CC_MAC3_TX_DIV_CLK_SRC] = &nss_cc_mac3_tx_div_clk_src.clkr,
1883 &nss_cc_mac3_srds1_ch2_xgmii_rx_div_clk_src.clkr,
1884 [NSS_CC_MAC3_SRDS1_CH2_RX_CLK] = &nss_cc_mac3_srds1_ch2_rx_clk.clkr,
1885 [NSS_CC_MAC3_TX_CLK] = &nss_cc_mac3_tx_clk.clkr,
1886 [NSS_CC_MAC3_GEPHY2_TX_CLK] = &nss_cc_mac3_gephy2_tx_clk.clkr,
1887 [NSS_CC_MAC3_SRDS1_CH2_XGMII_RX_CLK] = &nss_cc_mac3_srds1_ch2_xgmii_rx_clk.clkr,
1888 [NSS_CC_MAC3_RX_CLK_SRC] = &nss_cc_mac3_rx_clk_src.clkr,
1889 [NSS_CC_MAC3_RX_DIV_CLK_SRC] = &nss_cc_mac3_rx_div_clk_src.clkr,
1891 &nss_cc_mac3_srds1_ch2_xgmii_tx_div_clk_src.clkr,
1892 [NSS_CC_MAC3_SRDS1_CH2_TX_CLK] = &nss_cc_mac3_srds1_ch2_tx_clk.clkr,
1893 [NSS_CC_MAC3_RX_CLK] = &nss_cc_mac3_rx_clk.clkr,
1894 [NSS_CC_MAC3_GEPHY2_RX_CLK] = &nss_cc_mac3_gephy2_rx_clk.clkr,
1895 [NSS_CC_MAC3_SRDS1_CH2_XGMII_TX_CLK] = &nss_cc_mac3_srds1_ch2_xgmii_tx_clk.clkr,
1896 [NSS_CC_MAC4_TX_CLK_SRC] = &nss_cc_mac4_tx_clk_src.clkr,
1897 [NSS_CC_MAC4_TX_DIV_CLK_SRC] = &nss_cc_mac4_tx_div_clk_src.clkr,
1899 &nss_cc_mac4_srds1_ch3_xgmii_rx_div_clk_src.clkr,
1900 [NSS_CC_MAC4_SRDS1_CH3_RX_CLK] = &nss_cc_mac4_srds1_ch3_rx_clk.clkr,
1901 [NSS_CC_MAC4_TX_CLK] = &nss_cc_mac4_tx_clk.clkr,
1902 [NSS_CC_MAC4_GEPHY3_TX_CLK] = &nss_cc_mac4_gephy3_tx_clk.clkr,
1903 [NSS_CC_MAC4_SRDS1_CH3_XGMII_RX_CLK] = &nss_cc_mac4_srds1_ch3_xgmii_rx_clk.clkr,
1904 [NSS_CC_MAC4_RX_CLK_SRC] = &nss_cc_mac4_rx_clk_src.clkr,
1905 [NSS_CC_MAC4_RX_DIV_CLK_SRC] = &nss_cc_mac4_rx_div_clk_src.clkr,
1907 &nss_cc_mac4_srds1_ch3_xgmii_tx_div_clk_src.clkr,
1908 [NSS_CC_MAC4_SRDS1_CH3_TX_CLK] = &nss_cc_mac4_srds1_ch3_tx_clk.clkr,
1909 [NSS_CC_MAC4_RX_CLK] = &nss_cc_mac4_rx_clk.clkr,
1910 [NSS_CC_MAC4_GEPHY3_RX_CLK] = &nss_cc_mac4_gephy3_rx_clk.clkr,
1911 [NSS_CC_MAC4_SRDS1_CH3_XGMII_TX_CLK] = &nss_cc_mac4_srds1_ch3_xgmii_tx_clk.clkr,
1912 [NSS_CC_MAC5_TX_CLK_SRC] = &nss_cc_mac5_tx_clk_src.clkr,
1913 [NSS_CC_MAC5_TX_DIV_CLK_SRC] = &nss_cc_mac5_tx_div_clk_src.clkr,
1914 [NSS_CC_MAC5_TX_SRDS0_CLK] = &nss_cc_mac5_tx_srds0_clk.clkr,
1915 [NSS_CC_MAC5_TX_CLK] = &nss_cc_mac5_tx_clk.clkr,
1916 [NSS_CC_MAC5_RX_CLK_SRC] = &nss_cc_mac5_rx_clk_src.clkr,
1917 [NSS_CC_MAC5_RX_DIV_CLK_SRC] = &nss_cc_mac5_rx_div_clk_src.clkr,
1918 [NSS_CC_MAC5_RX_SRDS0_CLK] = &nss_cc_mac5_rx_srds0_clk.clkr,
1919 [NSS_CC_MAC5_RX_CLK] = &nss_cc_mac5_rx_clk.clkr,
1920 [NSS_CC_MAC5_TX_SRDS0_CLK_SRC] = &nss_cc_mac5_tx_srds0_clk_src.clkr,
1921 [NSS_CC_MAC5_RX_SRDS0_CLK_SRC] = &nss_cc_mac5_rx_srds0_clk_src.clkr,
1922 [NSS_CC_AHB_CLK_SRC] = &nss_cc_ahb_clk_src.clkr,
1923 [NSS_CC_AHB_CLK] = &nss_cc_ahb_clk.clkr,
1924 [NSS_CC_SEC_CTRL_AHB_CLK] = &nss_cc_sec_ctrl_ahb_clk.clkr,
1925 [NSS_CC_TLMM_CLK] = &nss_cc_tlmm_clk.clkr,
1926 [NSS_CC_TLMM_AHB_CLK] = &nss_cc_tlmm_ahb_clk.clkr,
1927 [NSS_CC_CNOC_AHB_CLK] = &nss_cc_cnoc_ahb_clk.clkr,
1928 [NSS_CC_MDIO_AHB_CLK] = &nss_cc_mdio_ahb_clk.clkr,
1929 [NSS_CC_MDIO_MASTER_AHB_CLK] = &nss_cc_mdio_master_ahb_clk.clkr,
1930 [NSS_CC_SYS_CLK_SRC] = &nss_cc_sys_clk_src.clkr,
1931 [NSS_CC_SRDS0_SYS_CLK] = &nss_cc_srds0_sys_clk.clkr,
1932 [NSS_CC_SRDS1_SYS_CLK] = &nss_cc_srds1_sys_clk.clkr,
1933 [NSS_CC_GEPHY0_SYS_CLK] = &nss_cc_gephy0_sys_clk.clkr,
1934 [NSS_CC_GEPHY1_SYS_CLK] = &nss_cc_gephy1_sys_clk.clkr,
1935 [NSS_CC_GEPHY2_SYS_CLK] = &nss_cc_gephy2_sys_clk.clkr,
1936 [NSS_CC_GEPHY3_SYS_CLK] = &nss_cc_gephy3_sys_clk.clkr,
2020 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2022 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2045 dev_err_ratelimited(&bus->dev, "fail to read qca8k mii register\n"); in qca8k_mii_read()
2060 dev_err_ratelimited(&bus->dev, "fail to write qca8k mii register\n"); in qca8k_mii_write()
2069 dev_err_ratelimited(&bus->dev, "fail to set page\n"); in qca8k_mii_page_set()
2083 mutex_lock(&bus->mdio_lock); in qca8k_regmap_read()
2091 mutex_unlock(&bus->mdio_lock); in qca8k_regmap_read()
2104 mutex_lock(&bus->mdio_lock); in qca8k_regmap_write()
2112 mutex_unlock(&bus->mdio_lock); in qca8k_regmap_write()
2127 mutex_lock(&bus->mdio_lock); in qca8k_regmap_update_bits()
2141 mutex_unlock(&bus->mdio_lock); in qca8k_regmap_update_bits()
2193 ret = nss_cc_qca8k_clock_enable_and_reset(&mdiodev->dev); in nss_cc_qca8k_probe()
2195 return dev_err_probe(&mdiodev->dev, ret, "Fail to reset NSSCC\n"); in nss_cc_qca8k_probe()
2197 regmap = devm_regmap_init(&mdiodev->dev, NULL, mdiodev->bus, nss_cc_qca8k_desc.config); in nss_cc_qca8k_probe()
2199 return dev_err_probe(&mdiodev->dev, PTR_ERR(regmap), "Failed to init regmap\n"); in nss_cc_qca8k_probe()
2201 return qcom_cc_really_probe(&mdiodev->dev, &nss_cc_qca8k_desc, regmap); in nss_cc_qca8k_probe()
2205 { .compatible = "qcom,qca8084-nsscc" },
2212 .name = "qcom,qca8k-nsscc",