diff options
author | Martin Blumenstingl <martin.blumenstingl@googlemail.com> | 2019-03-24 11:14:23 -0400 |
---|---|---|
committer | Neil Armstrong <narmstrong@baylibre.com> | 2019-04-01 07:34:29 -0400 |
commit | 90751f686e3f0415f1f931bf47ff14dd34316ea5 (patch) | |
tree | 31c78dfc96631864eceff819fec56ae8d7744486 | |
parent | 41785ce562491db935471b31211481941a65c68f (diff) |
clk: meson: meson8b: add the video decoder clock trees
This adds the four video decoder clock trees.
VDEC_1 is split into two paths on Meson8b and Meson8m2:
- input mux called "vdec_1_sel"
- two dividers ("vdec_1_1_div" and "vdec_1_2_div") and gates ("vdec_1_1"
and "vdec_1_2")
- and an output mux (probably glitch-free) called "vdec_1"
On Meson8 the VDEC_1 tree is simpler because there's only one path:
- input mux called "vdec_1_sel"
- divider ("vdec_1_1_div") and gate ("vdec_1_1")
- (the gate is used as output directly, there's no mux)
The VDEC_HCODEC and VDEC_2 clocks are simple composite clocks each
consisting of an input mux, divider and a gate.
The VDEC_HEVC clock seems to have two paths similar to the VDEC_1 clock.
However, the register offsets of the second clock path is not known.
Amlogic's 3.10 kernel (which is used as reference) sets
HHI_VDEC2_CLK_CNTL[31] to 1 before changing the VDEC_HEVC clock and back
to 0 afterwards. For now, leave a TODO comment and only add the first
path.
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
Reviewed-by: Maxime Jourdan <mjourdan@baylibre.com>
Acked-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
Link: https://lkml.kernel.org/r/20190324151423.19063-3-martin.blumenstingl@googlemail.com
-rw-r--r-- | drivers/clk/meson/meson8b.c | 312 | ||||
-rw-r--r-- | drivers/clk/meson/meson8b.h | 17 |
2 files changed, 328 insertions, 1 deletions
diff --git a/drivers/clk/meson/meson8b.c b/drivers/clk/meson/meson8b.c index 8e091c2d10e6..37cf0f01bb5d 100644 --- a/drivers/clk/meson/meson8b.c +++ b/drivers/clk/meson/meson8b.c | |||
@@ -1902,6 +1902,257 @@ static struct clk_regmap meson8b_vpu = { | |||
1902 | }, | 1902 | }, |
1903 | }; | 1903 | }; |
1904 | 1904 | ||
1905 | static const char * const meson8b_vdec_parent_names[] = { | ||
1906 | "fclk_div4", "fclk_div3", "fclk_div5", "fclk_div7", "mpll2", "mpll1" | ||
1907 | }; | ||
1908 | |||
1909 | static struct clk_regmap meson8b_vdec_1_sel = { | ||
1910 | .data = &(struct clk_regmap_mux_data){ | ||
1911 | .offset = HHI_VDEC_CLK_CNTL, | ||
1912 | .mask = 0x3, | ||
1913 | .shift = 9, | ||
1914 | .flags = CLK_MUX_ROUND_CLOSEST, | ||
1915 | }, | ||
1916 | .hw.init = &(struct clk_init_data){ | ||
1917 | .name = "vdec_1_sel", | ||
1918 | .ops = &clk_regmap_mux_ops, | ||
1919 | .parent_names = meson8b_vdec_parent_names, | ||
1920 | .num_parents = ARRAY_SIZE(meson8b_vdec_parent_names), | ||
1921 | .flags = CLK_SET_RATE_PARENT, | ||
1922 | }, | ||
1923 | }; | ||
1924 | |||
1925 | static struct clk_regmap meson8b_vdec_1_1_div = { | ||
1926 | .data = &(struct clk_regmap_div_data){ | ||
1927 | .offset = HHI_VDEC_CLK_CNTL, | ||
1928 | .shift = 0, | ||
1929 | .width = 7, | ||
1930 | .flags = CLK_DIVIDER_ROUND_CLOSEST, | ||
1931 | }, | ||
1932 | .hw.init = &(struct clk_init_data){ | ||
1933 | .name = "vdec_1_1_div", | ||
1934 | .ops = &clk_regmap_divider_ops, | ||
1935 | .parent_names = (const char *[]){ "vdec_1_sel" }, | ||
1936 | .num_parents = 1, | ||
1937 | .flags = CLK_SET_RATE_PARENT, | ||
1938 | }, | ||
1939 | }; | ||
1940 | |||
1941 | static struct clk_regmap meson8b_vdec_1_1 = { | ||
1942 | .data = &(struct clk_regmap_gate_data){ | ||
1943 | .offset = HHI_VDEC_CLK_CNTL, | ||
1944 | .bit_idx = 8, | ||
1945 | }, | ||
1946 | .hw.init = &(struct clk_init_data) { | ||
1947 | .name = "vdec_1_1", | ||
1948 | .ops = &clk_regmap_gate_ops, | ||
1949 | .parent_names = (const char *[]){ "vdec_1_1_div" }, | ||
1950 | .num_parents = 1, | ||
1951 | .flags = CLK_SET_RATE_PARENT, | ||
1952 | }, | ||
1953 | }; | ||
1954 | |||
1955 | static struct clk_regmap meson8b_vdec_1_2_div = { | ||
1956 | .data = &(struct clk_regmap_div_data){ | ||
1957 | .offset = HHI_VDEC3_CLK_CNTL, | ||
1958 | .shift = 0, | ||
1959 | .width = 7, | ||
1960 | .flags = CLK_DIVIDER_ROUND_CLOSEST, | ||
1961 | }, | ||
1962 | .hw.init = &(struct clk_init_data){ | ||
1963 | .name = "vdec_1_2_div", | ||
1964 | .ops = &clk_regmap_divider_ops, | ||
1965 | .parent_names = (const char *[]){ "vdec_1_sel" }, | ||
1966 | .num_parents = 1, | ||
1967 | .flags = CLK_SET_RATE_PARENT, | ||
1968 | }, | ||
1969 | }; | ||
1970 | |||
1971 | static struct clk_regmap meson8b_vdec_1_2 = { | ||
1972 | .data = &(struct clk_regmap_gate_data){ | ||
1973 | .offset = HHI_VDEC3_CLK_CNTL, | ||
1974 | .bit_idx = 8, | ||
1975 | }, | ||
1976 | .hw.init = &(struct clk_init_data) { | ||
1977 | .name = "vdec_1_2", | ||
1978 | .ops = &clk_regmap_gate_ops, | ||
1979 | .parent_names = (const char *[]){ "vdec_1_2_div" }, | ||
1980 | .num_parents = 1, | ||
1981 | .flags = CLK_SET_RATE_PARENT, | ||
1982 | }, | ||
1983 | }; | ||
1984 | |||
1985 | static struct clk_regmap meson8b_vdec_1 = { | ||
1986 | .data = &(struct clk_regmap_mux_data){ | ||
1987 | .offset = HHI_VDEC3_CLK_CNTL, | ||
1988 | .mask = 0x1, | ||
1989 | .shift = 15, | ||
1990 | .flags = CLK_MUX_ROUND_CLOSEST, | ||
1991 | }, | ||
1992 | .hw.init = &(struct clk_init_data){ | ||
1993 | .name = "vdec_1", | ||
1994 | .ops = &clk_regmap_mux_ops, | ||
1995 | .parent_names = (const char *[]){ "vdec_1_1", "vdec_1_2" }, | ||
1996 | .num_parents = 2, | ||
1997 | .flags = CLK_SET_RATE_PARENT, | ||
1998 | }, | ||
1999 | }; | ||
2000 | |||
2001 | static struct clk_regmap meson8b_vdec_hcodec_sel = { | ||
2002 | .data = &(struct clk_regmap_mux_data){ | ||
2003 | .offset = HHI_VDEC_CLK_CNTL, | ||
2004 | .mask = 0x3, | ||
2005 | .shift = 25, | ||
2006 | .flags = CLK_MUX_ROUND_CLOSEST, | ||
2007 | }, | ||
2008 | .hw.init = &(struct clk_init_data){ | ||
2009 | .name = "vdec_hcodec_sel", | ||
2010 | .ops = &clk_regmap_mux_ops, | ||
2011 | .parent_names = meson8b_vdec_parent_names, | ||
2012 | .num_parents = ARRAY_SIZE(meson8b_vdec_parent_names), | ||
2013 | .flags = CLK_SET_RATE_PARENT, | ||
2014 | }, | ||
2015 | }; | ||
2016 | |||
2017 | static struct clk_regmap meson8b_vdec_hcodec_div = { | ||
2018 | .data = &(struct clk_regmap_div_data){ | ||
2019 | .offset = HHI_VDEC_CLK_CNTL, | ||
2020 | .shift = 16, | ||
2021 | .width = 7, | ||
2022 | .flags = CLK_DIVIDER_ROUND_CLOSEST, | ||
2023 | }, | ||
2024 | .hw.init = &(struct clk_init_data){ | ||
2025 | .name = "vdec_hcodec_div", | ||
2026 | .ops = &clk_regmap_divider_ops, | ||
2027 | .parent_names = (const char *[]){ "vdec_hcodec_sel" }, | ||
2028 | .num_parents = 1, | ||
2029 | .flags = CLK_SET_RATE_PARENT, | ||
2030 | }, | ||
2031 | }; | ||
2032 | |||
2033 | static struct clk_regmap meson8b_vdec_hcodec = { | ||
2034 | .data = &(struct clk_regmap_gate_data){ | ||
2035 | .offset = HHI_VDEC_CLK_CNTL, | ||
2036 | .bit_idx = 24, | ||
2037 | }, | ||
2038 | .hw.init = &(struct clk_init_data) { | ||
2039 | .name = "vdec_hcodec", | ||
2040 | .ops = &clk_regmap_gate_ops, | ||
2041 | .parent_names = (const char *[]){ "vdec_hcodec_div" }, | ||
2042 | .num_parents = 1, | ||
2043 | .flags = CLK_SET_RATE_PARENT, | ||
2044 | }, | ||
2045 | }; | ||
2046 | |||
2047 | static struct clk_regmap meson8b_vdec_2_sel = { | ||
2048 | .data = &(struct clk_regmap_mux_data){ | ||
2049 | .offset = HHI_VDEC2_CLK_CNTL, | ||
2050 | .mask = 0x3, | ||
2051 | .shift = 9, | ||
2052 | .flags = CLK_MUX_ROUND_CLOSEST, | ||
2053 | }, | ||
2054 | .hw.init = &(struct clk_init_data){ | ||
2055 | .name = "vdec_2_sel", | ||
2056 | .ops = &clk_regmap_mux_ops, | ||
2057 | .parent_names = meson8b_vdec_parent_names, | ||
2058 | .num_parents = ARRAY_SIZE(meson8b_vdec_parent_names), | ||
2059 | .flags = CLK_SET_RATE_PARENT, | ||
2060 | }, | ||
2061 | }; | ||
2062 | |||
2063 | static struct clk_regmap meson8b_vdec_2_div = { | ||
2064 | .data = &(struct clk_regmap_div_data){ | ||
2065 | .offset = HHI_VDEC2_CLK_CNTL, | ||
2066 | .shift = 0, | ||
2067 | .width = 7, | ||
2068 | .flags = CLK_DIVIDER_ROUND_CLOSEST, | ||
2069 | }, | ||
2070 | .hw.init = &(struct clk_init_data){ | ||
2071 | .name = "vdec_2_div", | ||
2072 | .ops = &clk_regmap_divider_ops, | ||
2073 | .parent_names = (const char *[]){ "vdec_2_sel" }, | ||
2074 | .num_parents = 1, | ||
2075 | .flags = CLK_SET_RATE_PARENT, | ||
2076 | }, | ||
2077 | }; | ||
2078 | |||
2079 | static struct clk_regmap meson8b_vdec_2 = { | ||
2080 | .data = &(struct clk_regmap_gate_data){ | ||
2081 | .offset = HHI_VDEC2_CLK_CNTL, | ||
2082 | .bit_idx = 8, | ||
2083 | }, | ||
2084 | .hw.init = &(struct clk_init_data) { | ||
2085 | .name = "vdec_2", | ||
2086 | .ops = &clk_regmap_gate_ops, | ||
2087 | .parent_names = (const char *[]){ "vdec_2_div" }, | ||
2088 | .num_parents = 1, | ||
2089 | .flags = CLK_SET_RATE_PARENT, | ||
2090 | }, | ||
2091 | }; | ||
2092 | |||
2093 | static struct clk_regmap meson8b_vdec_hevc_sel = { | ||
2094 | .data = &(struct clk_regmap_mux_data){ | ||
2095 | .offset = HHI_VDEC2_CLK_CNTL, | ||
2096 | .mask = 0x3, | ||
2097 | .shift = 25, | ||
2098 | .flags = CLK_MUX_ROUND_CLOSEST, | ||
2099 | }, | ||
2100 | .hw.init = &(struct clk_init_data){ | ||
2101 | .name = "vdec_hevc_sel", | ||
2102 | .ops = &clk_regmap_mux_ops, | ||
2103 | .parent_names = meson8b_vdec_parent_names, | ||
2104 | .num_parents = ARRAY_SIZE(meson8b_vdec_parent_names), | ||
2105 | .flags = CLK_SET_RATE_PARENT, | ||
2106 | }, | ||
2107 | }; | ||
2108 | |||
2109 | static struct clk_regmap meson8b_vdec_hevc_div = { | ||
2110 | .data = &(struct clk_regmap_div_data){ | ||
2111 | .offset = HHI_VDEC2_CLK_CNTL, | ||
2112 | .shift = 16, | ||
2113 | .width = 7, | ||
2114 | .flags = CLK_DIVIDER_ROUND_CLOSEST, | ||
2115 | }, | ||
2116 | .hw.init = &(struct clk_init_data){ | ||
2117 | .name = "vdec_hevc_div", | ||
2118 | .ops = &clk_regmap_divider_ops, | ||
2119 | .parent_names = (const char *[]){ "vdec_hevc_sel" }, | ||
2120 | .num_parents = 1, | ||
2121 | .flags = CLK_SET_RATE_PARENT, | ||
2122 | }, | ||
2123 | }; | ||
2124 | |||
2125 | static struct clk_regmap meson8b_vdec_hevc_en = { | ||
2126 | .data = &(struct clk_regmap_gate_data){ | ||
2127 | .offset = HHI_VDEC2_CLK_CNTL, | ||
2128 | .bit_idx = 24, | ||
2129 | }, | ||
2130 | .hw.init = &(struct clk_init_data) { | ||
2131 | .name = "vdec_hevc_en", | ||
2132 | .ops = &clk_regmap_gate_ops, | ||
2133 | .parent_names = (const char *[]){ "vdec_hevc_div" }, | ||
2134 | .num_parents = 1, | ||
2135 | .flags = CLK_SET_RATE_PARENT, | ||
2136 | }, | ||
2137 | }; | ||
2138 | |||
2139 | static struct clk_regmap meson8b_vdec_hevc = { | ||
2140 | .data = &(struct clk_regmap_mux_data){ | ||
2141 | .offset = HHI_VDEC2_CLK_CNTL, | ||
2142 | .mask = 0x1, | ||
2143 | .shift = 31, | ||
2144 | .flags = CLK_MUX_ROUND_CLOSEST, | ||
2145 | }, | ||
2146 | .hw.init = &(struct clk_init_data){ | ||
2147 | .name = "vdec_hevc", | ||
2148 | .ops = &clk_regmap_mux_ops, | ||
2149 | /* TODO: The second parent is currently unknown */ | ||
2150 | .parent_names = (const char *[]){ "vdec_hevc_en" }, | ||
2151 | .num_parents = 1, | ||
2152 | .flags = CLK_SET_RATE_PARENT, | ||
2153 | }, | ||
2154 | }; | ||
2155 | |||
1905 | /* Everything Else (EE) domain gates */ | 2156 | /* Everything Else (EE) domain gates */ |
1906 | 2157 | ||
1907 | static MESON_GATE(meson8b_ddr, HHI_GCLK_MPEG0, 0); | 2158 | static MESON_GATE(meson8b_ddr, HHI_GCLK_MPEG0, 0); |
@@ -2168,6 +2419,19 @@ static struct clk_hw_onecell_data meson8_hw_onecell_data = { | |||
2168 | [CLKID_VPU_0_SEL] = &meson8b_vpu_0_sel.hw, | 2419 | [CLKID_VPU_0_SEL] = &meson8b_vpu_0_sel.hw, |
2169 | [CLKID_VPU_0_DIV] = &meson8b_vpu_0_div.hw, | 2420 | [CLKID_VPU_0_DIV] = &meson8b_vpu_0_div.hw, |
2170 | [CLKID_VPU] = &meson8b_vpu_0.hw, | 2421 | [CLKID_VPU] = &meson8b_vpu_0.hw, |
2422 | [CLKID_VDEC_1_SEL] = &meson8b_vdec_1_sel.hw, | ||
2423 | [CLKID_VDEC_1_1_DIV] = &meson8b_vdec_1_1_div.hw, | ||
2424 | [CLKID_VDEC_1] = &meson8b_vdec_1_1.hw, | ||
2425 | [CLKID_VDEC_HCODEC_SEL] = &meson8b_vdec_hcodec_sel.hw, | ||
2426 | [CLKID_VDEC_HCODEC_DIV] = &meson8b_vdec_hcodec_div.hw, | ||
2427 | [CLKID_VDEC_HCODEC] = &meson8b_vdec_hcodec.hw, | ||
2428 | [CLKID_VDEC_2_SEL] = &meson8b_vdec_2_sel.hw, | ||
2429 | [CLKID_VDEC_2_DIV] = &meson8b_vdec_2_div.hw, | ||
2430 | [CLKID_VDEC_2] = &meson8b_vdec_2.hw, | ||
2431 | [CLKID_VDEC_HEVC_SEL] = &meson8b_vdec_hevc_sel.hw, | ||
2432 | [CLKID_VDEC_HEVC_DIV] = &meson8b_vdec_hevc_div.hw, | ||
2433 | [CLKID_VDEC_HEVC_EN] = &meson8b_vdec_hevc_en.hw, | ||
2434 | [CLKID_VDEC_HEVC] = &meson8b_vdec_hevc.hw, | ||
2171 | [CLK_NR_CLKS] = NULL, | 2435 | [CLK_NR_CLKS] = NULL, |
2172 | }, | 2436 | }, |
2173 | .num = CLK_NR_CLKS, | 2437 | .num = CLK_NR_CLKS, |
@@ -2361,6 +2625,22 @@ static struct clk_hw_onecell_data meson8b_hw_onecell_data = { | |||
2361 | [CLKID_VPU_1_DIV] = &meson8b_vpu_1_div.hw, | 2625 | [CLKID_VPU_1_DIV] = &meson8b_vpu_1_div.hw, |
2362 | [CLKID_VPU_1] = &meson8b_vpu_1.hw, | 2626 | [CLKID_VPU_1] = &meson8b_vpu_1.hw, |
2363 | [CLKID_VPU] = &meson8b_vpu.hw, | 2627 | [CLKID_VPU] = &meson8b_vpu.hw, |
2628 | [CLKID_VDEC_1_SEL] = &meson8b_vdec_1_sel.hw, | ||
2629 | [CLKID_VDEC_1_1_DIV] = &meson8b_vdec_1_1_div.hw, | ||
2630 | [CLKID_VDEC_1_1] = &meson8b_vdec_1_1.hw, | ||
2631 | [CLKID_VDEC_1_2_DIV] = &meson8b_vdec_1_2_div.hw, | ||
2632 | [CLKID_VDEC_1_2] = &meson8b_vdec_1_2.hw, | ||
2633 | [CLKID_VDEC_1] = &meson8b_vdec_1.hw, | ||
2634 | [CLKID_VDEC_HCODEC_SEL] = &meson8b_vdec_hcodec_sel.hw, | ||
2635 | [CLKID_VDEC_HCODEC_DIV] = &meson8b_vdec_hcodec_div.hw, | ||
2636 | [CLKID_VDEC_HCODEC] = &meson8b_vdec_hcodec.hw, | ||
2637 | [CLKID_VDEC_2_SEL] = &meson8b_vdec_2_sel.hw, | ||
2638 | [CLKID_VDEC_2_DIV] = &meson8b_vdec_2_div.hw, | ||
2639 | [CLKID_VDEC_2] = &meson8b_vdec_2.hw, | ||
2640 | [CLKID_VDEC_HEVC_SEL] = &meson8b_vdec_hevc_sel.hw, | ||
2641 | [CLKID_VDEC_HEVC_DIV] = &meson8b_vdec_hevc_div.hw, | ||
2642 | [CLKID_VDEC_HEVC_EN] = &meson8b_vdec_hevc_en.hw, | ||
2643 | [CLKID_VDEC_HEVC] = &meson8b_vdec_hevc.hw, | ||
2364 | [CLK_NR_CLKS] = NULL, | 2644 | [CLK_NR_CLKS] = NULL, |
2365 | }, | 2645 | }, |
2366 | .num = CLK_NR_CLKS, | 2646 | .num = CLK_NR_CLKS, |
@@ -2556,6 +2836,22 @@ static struct clk_hw_onecell_data meson8m2_hw_onecell_data = { | |||
2556 | [CLKID_VPU_1_DIV] = &meson8b_vpu_1_div.hw, | 2836 | [CLKID_VPU_1_DIV] = &meson8b_vpu_1_div.hw, |
2557 | [CLKID_VPU_1] = &meson8b_vpu_1.hw, | 2837 | [CLKID_VPU_1] = &meson8b_vpu_1.hw, |
2558 | [CLKID_VPU] = &meson8b_vpu.hw, | 2838 | [CLKID_VPU] = &meson8b_vpu.hw, |
2839 | [CLKID_VDEC_1_SEL] = &meson8b_vdec_1_sel.hw, | ||
2840 | [CLKID_VDEC_1_1_DIV] = &meson8b_vdec_1_1_div.hw, | ||
2841 | [CLKID_VDEC_1_1] = &meson8b_vdec_1_1.hw, | ||
2842 | [CLKID_VDEC_1_2_DIV] = &meson8b_vdec_1_2_div.hw, | ||
2843 | [CLKID_VDEC_1_2] = &meson8b_vdec_1_2.hw, | ||
2844 | [CLKID_VDEC_1] = &meson8b_vdec_1.hw, | ||
2845 | [CLKID_VDEC_HCODEC_SEL] = &meson8b_vdec_hcodec_sel.hw, | ||
2846 | [CLKID_VDEC_HCODEC_DIV] = &meson8b_vdec_hcodec_div.hw, | ||
2847 | [CLKID_VDEC_HCODEC] = &meson8b_vdec_hcodec.hw, | ||
2848 | [CLKID_VDEC_2_SEL] = &meson8b_vdec_2_sel.hw, | ||
2849 | [CLKID_VDEC_2_DIV] = &meson8b_vdec_2_div.hw, | ||
2850 | [CLKID_VDEC_2] = &meson8b_vdec_2.hw, | ||
2851 | [CLKID_VDEC_HEVC_SEL] = &meson8b_vdec_hevc_sel.hw, | ||
2852 | [CLKID_VDEC_HEVC_DIV] = &meson8b_vdec_hevc_div.hw, | ||
2853 | [CLKID_VDEC_HEVC_EN] = &meson8b_vdec_hevc_en.hw, | ||
2854 | [CLKID_VDEC_HEVC] = &meson8b_vdec_hevc.hw, | ||
2559 | [CLK_NR_CLKS] = NULL, | 2855 | [CLK_NR_CLKS] = NULL, |
2560 | }, | 2856 | }, |
2561 | .num = CLK_NR_CLKS, | 2857 | .num = CLK_NR_CLKS, |
@@ -2729,6 +3025,22 @@ static struct clk_regmap *const meson8b_clk_regmaps[] = { | |||
2729 | &meson8b_vpu_1_div, | 3025 | &meson8b_vpu_1_div, |
2730 | &meson8b_vpu_1, | 3026 | &meson8b_vpu_1, |
2731 | &meson8b_vpu, | 3027 | &meson8b_vpu, |
3028 | &meson8b_vdec_1_sel, | ||
3029 | &meson8b_vdec_1_1_div, | ||
3030 | &meson8b_vdec_1_1, | ||
3031 | &meson8b_vdec_1_2_div, | ||
3032 | &meson8b_vdec_1_2, | ||
3033 | &meson8b_vdec_1, | ||
3034 | &meson8b_vdec_hcodec_sel, | ||
3035 | &meson8b_vdec_hcodec_div, | ||
3036 | &meson8b_vdec_hcodec, | ||
3037 | &meson8b_vdec_2_sel, | ||
3038 | &meson8b_vdec_2_div, | ||
3039 | &meson8b_vdec_2, | ||
3040 | &meson8b_vdec_hevc_sel, | ||
3041 | &meson8b_vdec_hevc_div, | ||
3042 | &meson8b_vdec_hevc_en, | ||
3043 | &meson8b_vdec_hevc, | ||
2732 | }; | 3044 | }; |
2733 | 3045 | ||
2734 | static const struct meson8b_clk_reset_line { | 3046 | static const struct meson8b_clk_reset_line { |
diff --git a/drivers/clk/meson/meson8b.h b/drivers/clk/meson/meson8b.h index e775f91ccce9..ed37196187e6 100644 --- a/drivers/clk/meson/meson8b.h +++ b/drivers/clk/meson/meson8b.h | |||
@@ -37,6 +37,9 @@ | |||
37 | #define HHI_MALI_CLK_CNTL 0x1b0 /* 0x6c offset in data sheet */ | 37 | #define HHI_MALI_CLK_CNTL 0x1b0 /* 0x6c offset in data sheet */ |
38 | #define HHI_VPU_CLK_CNTL 0x1bc /* 0x6f offset in data sheet */ | 38 | #define HHI_VPU_CLK_CNTL 0x1bc /* 0x6f offset in data sheet */ |
39 | #define HHI_HDMI_CLK_CNTL 0x1cc /* 0x73 offset in data sheet */ | 39 | #define HHI_HDMI_CLK_CNTL 0x1cc /* 0x73 offset in data sheet */ |
40 | #define HHI_VDEC_CLK_CNTL 0x1e0 /* 0x78 offset in data sheet */ | ||
41 | #define HHI_VDEC2_CLK_CNTL 0x1e4 /* 0x79 offset in data sheet */ | ||
42 | #define HHI_VDEC3_CLK_CNTL 0x1e8 /* 0x7a offset in data sheet */ | ||
40 | #define HHI_NAND_CLK_CNTL 0x25c /* 0x97 offset in data sheet */ | 43 | #define HHI_NAND_CLK_CNTL 0x25c /* 0x97 offset in data sheet */ |
41 | #define HHI_MPLL_CNTL 0x280 /* 0xa0 offset in data sheet */ | 44 | #define HHI_MPLL_CNTL 0x280 /* 0xa0 offset in data sheet */ |
42 | #define HHI_SYS_PLL_CNTL 0x300 /* 0xc0 offset in data sheet */ | 45 | #define HHI_SYS_PLL_CNTL 0x300 /* 0xc0 offset in data sheet */ |
@@ -156,8 +159,20 @@ | |||
156 | #define CLKID_VPU_1_SEL 186 | 159 | #define CLKID_VPU_1_SEL 186 |
157 | #define CLKID_VPU_1_DIV 187 | 160 | #define CLKID_VPU_1_DIV 187 |
158 | #define CLKID_VPU_1 189 | 161 | #define CLKID_VPU_1 189 |
162 | #define CLKID_VDEC_1_SEL 191 | ||
163 | #define CLKID_VDEC_1_1_DIV 192 | ||
164 | #define CLKID_VDEC_1_1 193 | ||
165 | #define CLKID_VDEC_1_2_DIV 194 | ||
166 | #define CLKID_VDEC_1_2 195 | ||
167 | #define CLKID_VDEC_HCODEC_SEL 197 | ||
168 | #define CLKID_VDEC_HCODEC_DIV 198 | ||
169 | #define CLKID_VDEC_2_SEL 200 | ||
170 | #define CLKID_VDEC_2_DIV 201 | ||
171 | #define CLKID_VDEC_HEVC_SEL 203 | ||
172 | #define CLKID_VDEC_HEVC_DIV 204 | ||
173 | #define CLKID_VDEC_HEVC_EN 205 | ||
159 | 174 | ||
160 | #define CLK_NR_CLKS 191 | 175 | #define CLK_NR_CLKS 207 |
161 | 176 | ||
162 | /* | 177 | /* |
163 | * include the CLKID and RESETID that have | 178 | * include the CLKID and RESETID that have |