Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

clk: sunxi: Add sun6i/8i display support

Add the clock type which is used by the sun6i/8i families for video display.

Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>

authored by

Jean-Francois Moine and committed by
Maxime Ripard
5ed400dd 8f076761

+39
+1
Documentation/devicetree/bindings/clock/sunxi.txt
··· 81 81 "allwinner,sun9i-a80-usb-mod-clk" - for usb gates + resets on A80 82 82 "allwinner,sun9i-a80-usb-phy-clk" - for usb phy gates + resets on A80 83 83 "allwinner,sun4i-a10-ve-clk" - for the Video Engine clock 84 + "allwinner,sun6i-a31-display-clk" - for the display clocks 84 85 85 86 Required properties for all clocks: 86 87 - reg : shall be the control register address for the clock.
+38
drivers/clk/sunxi/clk-sunxi.c
··· 1127 1127 } 1128 1128 CLK_OF_DECLARE(sun6i_pll6, "allwinner,sun6i-a31-pll6-clk", 1129 1129 sun6i_pll6_clk_setup); 1130 + 1131 + /* 1132 + * sun6i display 1133 + * 1134 + * rate = parent_rate / (m + 1); 1135 + */ 1136 + static void sun6i_display_factors(struct factors_request *req) 1137 + { 1138 + u8 m; 1139 + 1140 + if (req->rate > req->parent_rate) 1141 + req->rate = req->parent_rate; 1142 + 1143 + m = DIV_ROUND_UP(req->parent_rate, req->rate); 1144 + 1145 + req->rate = req->parent_rate / m; 1146 + req->m = m - 1; 1147 + } 1148 + 1149 + static const struct clk_factors_config sun6i_display_config = { 1150 + .mshift = 0, 1151 + .mwidth = 4, 1152 + }; 1153 + 1154 + static const struct factors_data sun6i_display_data __initconst = { 1155 + .enable = 31, 1156 + .mux = 24, 1157 + .muxmask = BIT(2) | BIT(1) | BIT(0), 1158 + .table = &sun6i_display_config, 1159 + .getter = sun6i_display_factors, 1160 + }; 1161 + 1162 + static void __init sun6i_display_setup(struct device_node *node) 1163 + { 1164 + sunxi_factors_clk_setup(node, &sun6i_display_data); 1165 + } 1166 + CLK_OF_DECLARE(sun6i_display, "allwinner,sun6i-a31-display-clk", 1167 + sun6i_display_setup);