|
27 | 27 | #define CLKS_NR_HSI0 (CLK_DOUT_HSI0_PCIE_APB + 1) |
28 | 28 | #define CLKS_NR_HSI1 (CLK_MOUT_HSI1_USBDRD + 1) |
29 | 29 | #define CLKS_NR_HSI2 (CLK_DOUT_HSI2_ETHERNET_PTP + 1) |
| 30 | +#define CLKS_NR_M2M (CLK_DOUT_M2M_NOCP + 1) |
30 | 31 |
|
31 | 32 | /* ---- CMU_TOP ------------------------------------------------------------ */ |
32 | 33 |
|
@@ -1821,6 +1822,47 @@ static const struct samsung_cmu_info hsi2_cmu_info __initconst = { |
1821 | 1822 | .clk_name = "noc", |
1822 | 1823 | }; |
1823 | 1824 |
|
| 1825 | +/* ---- CMU_M2M --------------------------------------------------------- */ |
| 1826 | + |
| 1827 | +/* Register Offset definitions for CMU_M2M (0x1a800000) */ |
| 1828 | +#define PLL_CON0_MUX_CLKCMU_M2M_JPEG_USER 0x600 |
| 1829 | +#define PLL_CON0_MUX_CLKCMU_M2M_NOC_USER 0x610 |
| 1830 | +#define CLK_CON_DIV_DIV_CLK_M2M_NOCP 0x1800 |
| 1831 | + |
| 1832 | +static const unsigned long m2m_clk_regs[] __initconst = { |
| 1833 | + PLL_CON0_MUX_CLKCMU_M2M_JPEG_USER, |
| 1834 | + PLL_CON0_MUX_CLKCMU_M2M_NOC_USER, |
| 1835 | + CLK_CON_DIV_DIV_CLK_M2M_NOCP, |
| 1836 | +}; |
| 1837 | + |
| 1838 | +/* List of parent clocks for Muxes in CMU_M2M */ |
| 1839 | +PNAME(mout_clkcmu_m2m_noc_user_p) = { "oscclk", "dout_clkcmu_m2m_noc" }; |
| 1840 | +PNAME(mout_clkcmu_m2m_jpeg_user_p) = { "oscclk", "dout_clkcmu_m2m_jpeg" }; |
| 1841 | + |
| 1842 | +static const struct samsung_mux_clock m2m_mux_clks[] __initconst = { |
| 1843 | + MUX(CLK_MOUT_M2M_JPEG_USER, "mout_clkcmu_m2m_jpeg_user", |
| 1844 | + mout_clkcmu_m2m_jpeg_user_p, PLL_CON0_MUX_CLKCMU_M2M_JPEG_USER, 4, 1), |
| 1845 | + MUX(CLK_MOUT_M2M_NOC_USER, "mout_clkcmu_m2m_noc_user", |
| 1846 | + mout_clkcmu_m2m_noc_user_p, PLL_CON0_MUX_CLKCMU_M2M_NOC_USER, 4, 1), |
| 1847 | +}; |
| 1848 | + |
| 1849 | +static const struct samsung_div_clock m2m_div_clks[] __initconst = { |
| 1850 | + DIV(CLK_DOUT_M2M_NOCP, "dout_m2m_nocp", |
| 1851 | + "mout_clkcmu_m2m_noc_user", CLK_CON_DIV_DIV_CLK_M2M_NOCP, |
| 1852 | + 0, 3), |
| 1853 | +}; |
| 1854 | + |
| 1855 | +static const struct samsung_cmu_info m2m_cmu_info __initconst = { |
| 1856 | + .mux_clks = m2m_mux_clks, |
| 1857 | + .nr_mux_clks = ARRAY_SIZE(m2m_mux_clks), |
| 1858 | + .div_clks = m2m_div_clks, |
| 1859 | + .nr_div_clks = ARRAY_SIZE(m2m_div_clks), |
| 1860 | + .nr_clk_ids = CLKS_NR_M2M, |
| 1861 | + .clk_regs = m2m_clk_regs, |
| 1862 | + .nr_clk_regs = ARRAY_SIZE(m2m_clk_regs), |
| 1863 | + .clk_name = "noc", |
| 1864 | +}; |
| 1865 | + |
1824 | 1866 | static int __init exynosautov920_cmu_probe(struct platform_device *pdev) |
1825 | 1867 | { |
1826 | 1868 | const struct samsung_cmu_info *info; |
@@ -1851,6 +1893,9 @@ static const struct of_device_id exynosautov920_cmu_of_match[] = { |
1851 | 1893 | }, { |
1852 | 1894 | .compatible = "samsung,exynosautov920-cmu-hsi2", |
1853 | 1895 | .data = &hsi2_cmu_info, |
| 1896 | + }, { |
| 1897 | + .compatible = "samsung,exynosautov920-cmu-m2m", |
| 1898 | + .data = &m2m_cmu_info, |
1854 | 1899 | }, |
1855 | 1900 | { } |
1856 | 1901 | }; |
|
0 commit comments