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

clk: add CLK_SET_RATE_NO_REPARENT flag

Add a CLK_SET_RATE_NO_REPARENT clock flag, which will prevent muxes
being reparented during clk_set_rate.

To avoid breaking existing platforms, all callers of clk_register_mux()
are adjusted to pass the new flag. Platform maintainers are encouraged
to remove the flag if they wish to allow mux reparenting on set_rate.

Signed-off-by: James Hogan <james.hogan@imgtec.com>
Reviewed-by: Stephen Boyd <sboyd@codeaurora.org>
Cc: Mike Turquette <mturquette@linaro.org>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Sascha Hauer <kernel@pengutronix.de>
Cc: Stephen Warren <swarren@wwwdotorg.org>
Cc: Viresh Kumar <viresh.linux@gmail.com>
Cc: Kukjin Kim <kgene.kim@samsung.com>
Cc: Haojian Zhuang <haojian.zhuang@linaro.org>
Cc: Chao Xie <xiechao.mail@gmail.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: "Emilio López" <emilio@elopez.com.ar>
Cc: Gregory CLEMENT <gregory.clement@free-electrons.com>
Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: Prashant Gaikwad <pgaikwad@nvidia.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: Peter De Schrijver <pdeschrijver@nvidia.com>
Cc: Pawel Moll <pawel.moll@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Andrew Chew <achew@nvidia.com>
Cc: Doug Anderson <dianders@chromium.org>
Cc: Heiko Stuebner <heiko@sntech.de>
Cc: Paul Walmsley <pwalmsley@nvidia.com>
Cc: Sylwester Nawrocki <s.nawrocki@samsung.com>
Cc: Thomas Abraham <thomas.abraham@linaro.org>
Cc: Tomasz Figa <t.figa@samsung.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-samsung-soc@vger.kernel.org
Cc: spear-devel@list.st.com
Cc: linux-tegra@vger.kernel.org
Tested-by: Haojian Zhuang <haojian.zhuang@gmail.com>
Acked-by: Stephen Warren <swarren@nvidia.com> [tegra]
Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com> [sunxi]
Acked-by: Sören Brinkmann <soren.brinkmann@xilinx.com> [Zynq]
Signed-off-by: Mike Turquette <mturquette@linaro.org>

authored by

James Hogan and committed by
Mike Turquette
819c1de3 71472c0c

+388 -276
+3 -2
arch/arm/mach-imx/clk.h
··· 79 79 static inline struct clk *imx_clk_mux(const char *name, void __iomem *reg, 80 80 u8 shift, u8 width, const char **parents, int num_parents) 81 81 { 82 - return clk_register_mux(NULL, name, parents, num_parents, 0, reg, shift, 82 + return clk_register_mux(NULL, name, parents, num_parents, 83 + CLK_SET_RATE_NO_REPARENT, reg, shift, 83 84 width, 0, &imx_ccm_lock); 84 85 } 85 86 ··· 89 88 int num_parents, unsigned long flags) 90 89 { 91 90 return clk_register_mux(NULL, name, parents, num_parents, 92 - flags, reg, shift, width, 0, 91 + flags | CLK_SET_RATE_NO_REPARENT, reg, shift, width, 0, 93 92 &imx_ccm_lock); 94 93 } 95 94
+26 -13
drivers/clk/mmp/clk-mmp2.c
··· 248 248 clk_register_clkdev(clk, NULL, "mmp2-pwm.3"); 249 249 250 250 clk = clk_register_mux(NULL, "uart0_mux", uart_parent, 251 - ARRAY_SIZE(uart_parent), CLK_SET_RATE_PARENT, 251 + ARRAY_SIZE(uart_parent), 252 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 252 253 apbc_base + APBC_UART0, 4, 3, 0, &clk_lock); 253 254 clk_set_parent(clk, vctcxo); 254 255 clk_register_clkdev(clk, "uart_mux.0", NULL); ··· 259 258 clk_register_clkdev(clk, NULL, "pxa2xx-uart.0"); 260 259 261 260 clk = clk_register_mux(NULL, "uart1_mux", uart_parent, 262 - ARRAY_SIZE(uart_parent), CLK_SET_RATE_PARENT, 261 + ARRAY_SIZE(uart_parent), 262 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 263 263 apbc_base + APBC_UART1, 4, 3, 0, &clk_lock); 264 264 clk_set_parent(clk, vctcxo); 265 265 clk_register_clkdev(clk, "uart_mux.1", NULL); ··· 270 268 clk_register_clkdev(clk, NULL, "pxa2xx-uart.1"); 271 269 272 270 clk = clk_register_mux(NULL, "uart2_mux", uart_parent, 273 - ARRAY_SIZE(uart_parent), CLK_SET_RATE_PARENT, 271 + ARRAY_SIZE(uart_parent), 272 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 274 273 apbc_base + APBC_UART2, 4, 3, 0, &clk_lock); 275 274 clk_set_parent(clk, vctcxo); 276 275 clk_register_clkdev(clk, "uart_mux.2", NULL); ··· 281 278 clk_register_clkdev(clk, NULL, "pxa2xx-uart.2"); 282 279 283 280 clk = clk_register_mux(NULL, "uart3_mux", uart_parent, 284 - ARRAY_SIZE(uart_parent), CLK_SET_RATE_PARENT, 281 + ARRAY_SIZE(uart_parent), 282 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 285 283 apbc_base + APBC_UART3, 4, 3, 0, &clk_lock); 286 284 clk_set_parent(clk, vctcxo); 287 285 clk_register_clkdev(clk, "uart_mux.3", NULL); ··· 292 288 clk_register_clkdev(clk, NULL, "pxa2xx-uart.3"); 293 289 294 290 clk = clk_register_mux(NULL, "ssp0_mux", ssp_parent, 295 - ARRAY_SIZE(ssp_parent), CLK_SET_RATE_PARENT, 291 + ARRAY_SIZE(ssp_parent), 292 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 296 293 apbc_base + APBC_SSP0, 4, 3, 0, &clk_lock); 297 294 clk_register_clkdev(clk, "uart_mux.0", NULL); 298 295 ··· 302 297 clk_register_clkdev(clk, NULL, "mmp-ssp.0"); 303 298 304 299 clk = clk_register_mux(NULL, "ssp1_mux", ssp_parent, 305 - ARRAY_SIZE(ssp_parent), CLK_SET_RATE_PARENT, 300 + ARRAY_SIZE(ssp_parent), 301 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 306 302 apbc_base + APBC_SSP1, 4, 3, 0, &clk_lock); 307 303 clk_register_clkdev(clk, "ssp_mux.1", NULL); 308 304 ··· 312 306 clk_register_clkdev(clk, NULL, "mmp-ssp.1"); 313 307 314 308 clk = clk_register_mux(NULL, "ssp2_mux", ssp_parent, 315 - ARRAY_SIZE(ssp_parent), CLK_SET_RATE_PARENT, 309 + ARRAY_SIZE(ssp_parent), 310 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 316 311 apbc_base + APBC_SSP2, 4, 3, 0, &clk_lock); 317 312 clk_register_clkdev(clk, "ssp_mux.2", NULL); 318 313 ··· 322 315 clk_register_clkdev(clk, NULL, "mmp-ssp.2"); 323 316 324 317 clk = clk_register_mux(NULL, "ssp3_mux", ssp_parent, 325 - ARRAY_SIZE(ssp_parent), CLK_SET_RATE_PARENT, 318 + ARRAY_SIZE(ssp_parent), 319 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 326 320 apbc_base + APBC_SSP3, 4, 3, 0, &clk_lock); 327 321 clk_register_clkdev(clk, "ssp_mux.3", NULL); 328 322 ··· 332 324 clk_register_clkdev(clk, NULL, "mmp-ssp.3"); 333 325 334 326 clk = clk_register_mux(NULL, "sdh_mux", sdh_parent, 335 - ARRAY_SIZE(sdh_parent), CLK_SET_RATE_PARENT, 327 + ARRAY_SIZE(sdh_parent), 328 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 336 329 apmu_base + APMU_SDH0, 8, 2, 0, &clk_lock); 337 330 clk_register_clkdev(clk, "sdh_mux", NULL); 338 331 ··· 363 354 clk_register_clkdev(clk, "usb_clk", NULL); 364 355 365 356 clk = clk_register_mux(NULL, "disp0_mux", disp_parent, 366 - ARRAY_SIZE(disp_parent), CLK_SET_RATE_PARENT, 357 + ARRAY_SIZE(disp_parent), 358 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 367 359 apmu_base + APMU_DISP0, 6, 2, 0, &clk_lock); 368 360 clk_register_clkdev(clk, "disp_mux.0", NULL); 369 361 ··· 386 376 clk_register_clkdev(clk, "disp_sphy.0", NULL); 387 377 388 378 clk = clk_register_mux(NULL, "disp1_mux", disp_parent, 389 - ARRAY_SIZE(disp_parent), CLK_SET_RATE_PARENT, 379 + ARRAY_SIZE(disp_parent), 380 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 390 381 apmu_base + APMU_DISP1, 6, 2, 0, &clk_lock); 391 382 clk_register_clkdev(clk, "disp_mux.1", NULL); 392 383 ··· 405 394 clk_register_clkdev(clk, "ccic_arbiter", NULL); 406 395 407 396 clk = clk_register_mux(NULL, "ccic0_mux", ccic_parent, 408 - ARRAY_SIZE(ccic_parent), CLK_SET_RATE_PARENT, 397 + ARRAY_SIZE(ccic_parent), 398 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 409 399 apmu_base + APMU_CCIC0, 6, 2, 0, &clk_lock); 410 400 clk_register_clkdev(clk, "ccic_mux.0", NULL); 411 401 ··· 433 421 clk_register_clkdev(clk, "sphyclk", "mmp-ccic.0"); 434 422 435 423 clk = clk_register_mux(NULL, "ccic1_mux", ccic_parent, 436 - ARRAY_SIZE(ccic_parent), CLK_SET_RATE_PARENT, 424 + ARRAY_SIZE(ccic_parent), 425 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 437 426 apmu_base + APMU_CCIC1, 6, 2, 0, &clk_lock); 438 427 clk_register_clkdev(clk, "ccic_mux.1", NULL); 439 428
+26 -14
drivers/clk/mmp/clk-pxa168.c
··· 199 199 clk_register_clkdev(clk, NULL, "pxa168-pwm.3"); 200 200 201 201 clk = clk_register_mux(NULL, "uart0_mux", uart_parent, 202 - ARRAY_SIZE(uart_parent), CLK_SET_RATE_PARENT, 202 + ARRAY_SIZE(uart_parent), 203 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 203 204 apbc_base + APBC_UART0, 4, 3, 0, &clk_lock); 204 205 clk_set_parent(clk, uart_pll); 205 206 clk_register_clkdev(clk, "uart_mux.0", NULL); ··· 210 209 clk_register_clkdev(clk, NULL, "pxa2xx-uart.0"); 211 210 212 211 clk = clk_register_mux(NULL, "uart1_mux", uart_parent, 213 - ARRAY_SIZE(uart_parent), CLK_SET_RATE_PARENT, 212 + ARRAY_SIZE(uart_parent), 213 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 214 214 apbc_base + APBC_UART1, 4, 3, 0, &clk_lock); 215 215 clk_set_parent(clk, uart_pll); 216 216 clk_register_clkdev(clk, "uart_mux.1", NULL); ··· 221 219 clk_register_clkdev(clk, NULL, "pxa2xx-uart.1"); 222 220 223 221 clk = clk_register_mux(NULL, "uart2_mux", uart_parent, 224 - ARRAY_SIZE(uart_parent), CLK_SET_RATE_PARENT, 222 + ARRAY_SIZE(uart_parent), 223 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 225 224 apbc_base + APBC_UART2, 4, 3, 0, &clk_lock); 226 225 clk_set_parent(clk, uart_pll); 227 226 clk_register_clkdev(clk, "uart_mux.2", NULL); ··· 232 229 clk_register_clkdev(clk, NULL, "pxa2xx-uart.2"); 233 230 234 231 clk = clk_register_mux(NULL, "ssp0_mux", ssp_parent, 235 - ARRAY_SIZE(ssp_parent), CLK_SET_RATE_PARENT, 232 + ARRAY_SIZE(ssp_parent), 233 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 236 234 apbc_base + APBC_SSP0, 4, 3, 0, &clk_lock); 237 235 clk_register_clkdev(clk, "uart_mux.0", NULL); 238 236 ··· 242 238 clk_register_clkdev(clk, NULL, "mmp-ssp.0"); 243 239 244 240 clk = clk_register_mux(NULL, "ssp1_mux", ssp_parent, 245 - ARRAY_SIZE(ssp_parent), CLK_SET_RATE_PARENT, 241 + ARRAY_SIZE(ssp_parent), 242 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 246 243 apbc_base + APBC_SSP1, 4, 3, 0, &clk_lock); 247 244 clk_register_clkdev(clk, "ssp_mux.1", NULL); 248 245 ··· 252 247 clk_register_clkdev(clk, NULL, "mmp-ssp.1"); 253 248 254 249 clk = clk_register_mux(NULL, "ssp2_mux", ssp_parent, 255 - ARRAY_SIZE(ssp_parent), CLK_SET_RATE_PARENT, 250 + ARRAY_SIZE(ssp_parent), 251 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 256 252 apbc_base + APBC_SSP2, 4, 3, 0, &clk_lock); 257 253 clk_register_clkdev(clk, "ssp_mux.2", NULL); 258 254 ··· 262 256 clk_register_clkdev(clk, NULL, "mmp-ssp.2"); 263 257 264 258 clk = clk_register_mux(NULL, "ssp3_mux", ssp_parent, 265 - ARRAY_SIZE(ssp_parent), CLK_SET_RATE_PARENT, 259 + ARRAY_SIZE(ssp_parent), 260 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 266 261 apbc_base + APBC_SSP3, 4, 3, 0, &clk_lock); 267 262 clk_register_clkdev(clk, "ssp_mux.3", NULL); 268 263 ··· 272 265 clk_register_clkdev(clk, NULL, "mmp-ssp.3"); 273 266 274 267 clk = clk_register_mux(NULL, "ssp4_mux", ssp_parent, 275 - ARRAY_SIZE(ssp_parent), CLK_SET_RATE_PARENT, 268 + ARRAY_SIZE(ssp_parent), 269 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 276 270 apbc_base + APBC_SSP4, 4, 3, 0, &clk_lock); 277 271 clk_register_clkdev(clk, "ssp_mux.4", NULL); 278 272 ··· 286 278 clk_register_clkdev(clk, NULL, "pxa3xx-nand.0"); 287 279 288 280 clk = clk_register_mux(NULL, "sdh0_mux", sdh_parent, 289 - ARRAY_SIZE(sdh_parent), CLK_SET_RATE_PARENT, 281 + ARRAY_SIZE(sdh_parent), 282 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 290 283 apmu_base + APMU_SDH0, 6, 1, 0, &clk_lock); 291 284 clk_register_clkdev(clk, "sdh0_mux", NULL); 292 285 ··· 296 287 clk_register_clkdev(clk, NULL, "sdhci-pxa.0"); 297 288 298 289 clk = clk_register_mux(NULL, "sdh1_mux", sdh_parent, 299 - ARRAY_SIZE(sdh_parent), CLK_SET_RATE_PARENT, 290 + ARRAY_SIZE(sdh_parent), 291 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 300 292 apmu_base + APMU_SDH1, 6, 1, 0, &clk_lock); 301 293 clk_register_clkdev(clk, "sdh1_mux", NULL); 302 294 ··· 314 304 clk_register_clkdev(clk, "sph_clk", NULL); 315 305 316 306 clk = clk_register_mux(NULL, "disp0_mux", disp_parent, 317 - ARRAY_SIZE(disp_parent), CLK_SET_RATE_PARENT, 307 + ARRAY_SIZE(disp_parent), 308 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 318 309 apmu_base + APMU_DISP0, 6, 1, 0, &clk_lock); 319 310 clk_register_clkdev(clk, "disp_mux.0", NULL); 320 311 ··· 328 317 clk_register_clkdev(clk, "hclk", "mmp-disp.0"); 329 318 330 319 clk = clk_register_mux(NULL, "ccic0_mux", ccic_parent, 331 - ARRAY_SIZE(ccic_parent), CLK_SET_RATE_PARENT, 320 + ARRAY_SIZE(ccic_parent), 321 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 332 322 apmu_base + APMU_CCIC0, 6, 1, 0, &clk_lock); 333 323 clk_register_clkdev(clk, "ccic_mux.0", NULL); 334 324 ··· 339 327 340 328 clk = clk_register_mux(NULL, "ccic0_phy_mux", ccic_phy_parent, 341 329 ARRAY_SIZE(ccic_phy_parent), 342 - CLK_SET_RATE_PARENT, apmu_base + APMU_CCIC0, 343 - 7, 1, 0, &clk_lock); 330 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 331 + apmu_base + APMU_CCIC0, 7, 1, 0, &clk_lock); 344 332 clk_register_clkdev(clk, "ccic_phy_mux.0", NULL); 345 333 346 334 clk = mmp_clk_register_apmu("ccic0_phy", "ccic0_phy_mux",
+20 -11
drivers/clk/mmp/clk-pxa910.c
··· 204 204 clk_register_clkdev(clk, NULL, "pxa910-pwm.3"); 205 205 206 206 clk = clk_register_mux(NULL, "uart0_mux", uart_parent, 207 - ARRAY_SIZE(uart_parent), CLK_SET_RATE_PARENT, 207 + ARRAY_SIZE(uart_parent), 208 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 208 209 apbc_base + APBC_UART0, 4, 3, 0, &clk_lock); 209 210 clk_set_parent(clk, uart_pll); 210 211 clk_register_clkdev(clk, "uart_mux.0", NULL); ··· 215 214 clk_register_clkdev(clk, NULL, "pxa2xx-uart.0"); 216 215 217 216 clk = clk_register_mux(NULL, "uart1_mux", uart_parent, 218 - ARRAY_SIZE(uart_parent), CLK_SET_RATE_PARENT, 217 + ARRAY_SIZE(uart_parent), 218 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 219 219 apbc_base + APBC_UART1, 4, 3, 0, &clk_lock); 220 220 clk_set_parent(clk, uart_pll); 221 221 clk_register_clkdev(clk, "uart_mux.1", NULL); ··· 226 224 clk_register_clkdev(clk, NULL, "pxa2xx-uart.1"); 227 225 228 226 clk = clk_register_mux(NULL, "uart2_mux", uart_parent, 229 - ARRAY_SIZE(uart_parent), CLK_SET_RATE_PARENT, 227 + ARRAY_SIZE(uart_parent), 228 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 230 229 apbcp_base + APBCP_UART2, 4, 3, 0, &clk_lock); 231 230 clk_set_parent(clk, uart_pll); 232 231 clk_register_clkdev(clk, "uart_mux.2", NULL); ··· 237 234 clk_register_clkdev(clk, NULL, "pxa2xx-uart.2"); 238 235 239 236 clk = clk_register_mux(NULL, "ssp0_mux", ssp_parent, 240 - ARRAY_SIZE(ssp_parent), CLK_SET_RATE_PARENT, 237 + ARRAY_SIZE(ssp_parent), 238 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 241 239 apbc_base + APBC_SSP0, 4, 3, 0, &clk_lock); 242 240 clk_register_clkdev(clk, "uart_mux.0", NULL); 243 241 ··· 247 243 clk_register_clkdev(clk, NULL, "mmp-ssp.0"); 248 244 249 245 clk = clk_register_mux(NULL, "ssp1_mux", ssp_parent, 250 - ARRAY_SIZE(ssp_parent), CLK_SET_RATE_PARENT, 246 + ARRAY_SIZE(ssp_parent), 247 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 251 248 apbc_base + APBC_SSP1, 4, 3, 0, &clk_lock); 252 249 clk_register_clkdev(clk, "ssp_mux.1", NULL); 253 250 ··· 261 256 clk_register_clkdev(clk, NULL, "pxa3xx-nand.0"); 262 257 263 258 clk = clk_register_mux(NULL, "sdh0_mux", sdh_parent, 264 - ARRAY_SIZE(sdh_parent), CLK_SET_RATE_PARENT, 259 + ARRAY_SIZE(sdh_parent), 260 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 265 261 apmu_base + APMU_SDH0, 6, 1, 0, &clk_lock); 266 262 clk_register_clkdev(clk, "sdh0_mux", NULL); 267 263 ··· 271 265 clk_register_clkdev(clk, NULL, "sdhci-pxa.0"); 272 266 273 267 clk = clk_register_mux(NULL, "sdh1_mux", sdh_parent, 274 - ARRAY_SIZE(sdh_parent), CLK_SET_RATE_PARENT, 268 + ARRAY_SIZE(sdh_parent), 269 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 275 270 apmu_base + APMU_SDH1, 6, 1, 0, &clk_lock); 276 271 clk_register_clkdev(clk, "sdh1_mux", NULL); 277 272 ··· 289 282 clk_register_clkdev(clk, "sph_clk", NULL); 290 283 291 284 clk = clk_register_mux(NULL, "disp0_mux", disp_parent, 292 - ARRAY_SIZE(disp_parent), CLK_SET_RATE_PARENT, 285 + ARRAY_SIZE(disp_parent), 286 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 293 287 apmu_base + APMU_DISP0, 6, 1, 0, &clk_lock); 294 288 clk_register_clkdev(clk, "disp_mux.0", NULL); 295 289 ··· 299 291 clk_register_clkdev(clk, NULL, "mmp-disp.0"); 300 292 301 293 clk = clk_register_mux(NULL, "ccic0_mux", ccic_parent, 302 - ARRAY_SIZE(ccic_parent), CLK_SET_RATE_PARENT, 294 + ARRAY_SIZE(ccic_parent), 295 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 303 296 apmu_base + APMU_CCIC0, 6, 1, 0, &clk_lock); 304 297 clk_register_clkdev(clk, "ccic_mux.0", NULL); 305 298 ··· 310 301 311 302 clk = clk_register_mux(NULL, "ccic0_phy_mux", ccic_phy_parent, 312 303 ARRAY_SIZE(ccic_phy_parent), 313 - CLK_SET_RATE_PARENT, apmu_base + APMU_CCIC0, 314 - 7, 1, 0, &clk_lock); 304 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 305 + apmu_base + APMU_CCIC0, 7, 1, 0, &clk_lock); 315 306 clk_register_clkdev(clk, "ccic_phy_mux.0", NULL); 316 307 317 308 clk = mmp_clk_register_apmu("ccic0_phy", "ccic0_phy_mux",
+2 -2
drivers/clk/mxs/clk.h
··· 52 52 u8 shift, u8 width, const char **parent_names, int num_parents) 53 53 { 54 54 return clk_register_mux(NULL, name, parent_names, num_parents, 55 - CLK_SET_RATE_PARENT, reg, shift, width, 56 - 0, &mxs_lock); 55 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 56 + reg, shift, width, 0, &mxs_lock); 57 57 } 58 58 59 59 static inline struct clk *mxs_clk_fixed_factor(const char *name,
+4 -2
drivers/clk/samsung/clk-exynos-audss.c
··· 82 82 of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data); 83 83 84 84 clk_table[EXYNOS_MOUT_AUDSS] = clk_register_mux(NULL, "mout_audss", 85 - mout_audss_p, ARRAY_SIZE(mout_audss_p), 0, 85 + mout_audss_p, ARRAY_SIZE(mout_audss_p), 86 + CLK_SET_RATE_NO_REPARENT, 86 87 reg_base + ASS_CLK_SRC, 0, 1, 0, &lock); 87 88 88 89 clk_table[EXYNOS_MOUT_I2S] = clk_register_mux(NULL, "mout_i2s", 89 - mout_i2s_p, ARRAY_SIZE(mout_i2s_p), 0, 90 + mout_i2s_p, ARRAY_SIZE(mout_i2s_p), 91 + CLK_SET_RATE_NO_REPARENT, 90 92 reg_base + ASS_CLK_SRC, 2, 2, 0, &lock); 91 93 92 94 clk_table[EXYNOS_DOUT_SRP] = clk_register_divider(NULL, "dout_srp",
+1 -1
drivers/clk/samsung/clk.h
··· 130 130 .name = cname, \ 131 131 .parent_names = pnames, \ 132 132 .num_parents = ARRAY_SIZE(pnames), \ 133 - .flags = f, \ 133 + .flags = (f) | CLK_SET_RATE_NO_REPARENT, \ 134 134 .offset = o, \ 135 135 .shift = s, \ 136 136 .width = w, \
+93 -86
drivers/clk/spear/spear1310_clock.c
··· 416 416 /* clock derived from 24 or 25 MHz osc clk */ 417 417 /* vco-pll */ 418 418 clk = clk_register_mux(NULL, "vco1_mclk", vco_parents, 419 - ARRAY_SIZE(vco_parents), 0, SPEAR1310_PLL_CFG, 420 - SPEAR1310_PLL1_CLK_SHIFT, SPEAR1310_PLL_CLK_MASK, 0, 421 - &_lock); 419 + ARRAY_SIZE(vco_parents), CLK_SET_RATE_NO_REPARENT, 420 + SPEAR1310_PLL_CFG, SPEAR1310_PLL1_CLK_SHIFT, 421 + SPEAR1310_PLL_CLK_MASK, 0, &_lock); 422 422 clk_register_clkdev(clk, "vco1_mclk", NULL); 423 423 clk = clk_register_vco_pll("vco1_clk", "pll1_clk", NULL, "vco1_mclk", 424 424 0, SPEAR1310_PLL1_CTR, SPEAR1310_PLL1_FRQ, pll_rtbl, ··· 427 427 clk_register_clkdev(clk1, "pll1_clk", NULL); 428 428 429 429 clk = clk_register_mux(NULL, "vco2_mclk", vco_parents, 430 - ARRAY_SIZE(vco_parents), 0, SPEAR1310_PLL_CFG, 431 - SPEAR1310_PLL2_CLK_SHIFT, SPEAR1310_PLL_CLK_MASK, 0, 432 - &_lock); 430 + ARRAY_SIZE(vco_parents), CLK_SET_RATE_NO_REPARENT, 431 + SPEAR1310_PLL_CFG, SPEAR1310_PLL2_CLK_SHIFT, 432 + SPEAR1310_PLL_CLK_MASK, 0, &_lock); 433 433 clk_register_clkdev(clk, "vco2_mclk", NULL); 434 434 clk = clk_register_vco_pll("vco2_clk", "pll2_clk", NULL, "vco2_mclk", 435 435 0, SPEAR1310_PLL2_CTR, SPEAR1310_PLL2_FRQ, pll_rtbl, ··· 438 438 clk_register_clkdev(clk1, "pll2_clk", NULL); 439 439 440 440 clk = clk_register_mux(NULL, "vco3_mclk", vco_parents, 441 - ARRAY_SIZE(vco_parents), 0, SPEAR1310_PLL_CFG, 442 - SPEAR1310_PLL3_CLK_SHIFT, SPEAR1310_PLL_CLK_MASK, 0, 443 - &_lock); 441 + ARRAY_SIZE(vco_parents), CLK_SET_RATE_NO_REPARENT, 442 + SPEAR1310_PLL_CFG, SPEAR1310_PLL3_CLK_SHIFT, 443 + SPEAR1310_PLL_CLK_MASK, 0, &_lock); 444 444 clk_register_clkdev(clk, "vco3_mclk", NULL); 445 445 clk = clk_register_vco_pll("vco3_clk", "pll3_clk", NULL, "vco3_mclk", 446 446 0, SPEAR1310_PLL3_CTR, SPEAR1310_PLL3_FRQ, pll_rtbl, ··· 515 515 516 516 /* gpt clocks */ 517 517 clk = clk_register_mux(NULL, "gpt0_mclk", gpt_parents, 518 - ARRAY_SIZE(gpt_parents), 0, SPEAR1310_PERIP_CLK_CFG, 519 - SPEAR1310_GPT0_CLK_SHIFT, SPEAR1310_GPT_CLK_MASK, 0, 520 - &_lock); 518 + ARRAY_SIZE(gpt_parents), CLK_SET_RATE_NO_REPARENT, 519 + SPEAR1310_PERIP_CLK_CFG, SPEAR1310_GPT0_CLK_SHIFT, 520 + SPEAR1310_GPT_CLK_MASK, 0, &_lock); 521 521 clk_register_clkdev(clk, "gpt0_mclk", NULL); 522 522 clk = clk_register_gate(NULL, "gpt0_clk", "gpt0_mclk", 0, 523 523 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_GPT0_CLK_ENB, 0, ··· 525 525 clk_register_clkdev(clk, NULL, "gpt0"); 526 526 527 527 clk = clk_register_mux(NULL, "gpt1_mclk", gpt_parents, 528 - ARRAY_SIZE(gpt_parents), 0, SPEAR1310_PERIP_CLK_CFG, 529 - SPEAR1310_GPT1_CLK_SHIFT, SPEAR1310_GPT_CLK_MASK, 0, 530 - &_lock); 528 + ARRAY_SIZE(gpt_parents), CLK_SET_RATE_NO_REPARENT, 529 + SPEAR1310_PERIP_CLK_CFG, SPEAR1310_GPT1_CLK_SHIFT, 530 + SPEAR1310_GPT_CLK_MASK, 0, &_lock); 531 531 clk_register_clkdev(clk, "gpt1_mclk", NULL); 532 532 clk = clk_register_gate(NULL, "gpt1_clk", "gpt1_mclk", 0, 533 533 SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_GPT1_CLK_ENB, 0, ··· 535 535 clk_register_clkdev(clk, NULL, "gpt1"); 536 536 537 537 clk = clk_register_mux(NULL, "gpt2_mclk", gpt_parents, 538 - ARRAY_SIZE(gpt_parents), 0, SPEAR1310_PERIP_CLK_CFG, 539 - SPEAR1310_GPT2_CLK_SHIFT, SPEAR1310_GPT_CLK_MASK, 0, 540 - &_lock); 538 + ARRAY_SIZE(gpt_parents), CLK_SET_RATE_NO_REPARENT, 539 + SPEAR1310_PERIP_CLK_CFG, SPEAR1310_GPT2_CLK_SHIFT, 540 + SPEAR1310_GPT_CLK_MASK, 0, &_lock); 541 541 clk_register_clkdev(clk, "gpt2_mclk", NULL); 542 542 clk = clk_register_gate(NULL, "gpt2_clk", "gpt2_mclk", 0, 543 543 SPEAR1310_PERIP2_CLK_ENB, SPEAR1310_GPT2_CLK_ENB, 0, ··· 545 545 clk_register_clkdev(clk, NULL, "gpt2"); 546 546 547 547 clk = clk_register_mux(NULL, "gpt3_mclk", gpt_parents, 548 - ARRAY_SIZE(gpt_parents), 0, SPEAR1310_PERIP_CLK_CFG, 549 - SPEAR1310_GPT3_CLK_SHIFT, SPEAR1310_GPT_CLK_MASK, 0, 550 - &_lock); 548 + ARRAY_SIZE(gpt_parents), CLK_SET_RATE_NO_REPARENT, 549 + SPEAR1310_PERIP_CLK_CFG, SPEAR1310_GPT3_CLK_SHIFT, 550 + SPEAR1310_GPT_CLK_MASK, 0, &_lock); 551 551 clk_register_clkdev(clk, "gpt3_mclk", NULL); 552 552 clk = clk_register_gate(NULL, "gpt3_clk", "gpt3_mclk", 0, 553 553 SPEAR1310_PERIP2_CLK_ENB, SPEAR1310_GPT3_CLK_ENB, 0, ··· 562 562 clk_register_clkdev(clk1, "uart_syn_gclk", NULL); 563 563 564 564 clk = clk_register_mux(NULL, "uart0_mclk", uart0_parents, 565 - ARRAY_SIZE(uart0_parents), CLK_SET_RATE_PARENT, 565 + ARRAY_SIZE(uart0_parents), 566 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 566 567 SPEAR1310_PERIP_CLK_CFG, SPEAR1310_UART_CLK_SHIFT, 567 568 SPEAR1310_UART_CLK_MASK, 0, &_lock); 568 569 clk_register_clkdev(clk, "uart0_mclk", NULL); ··· 603 602 clk_register_clkdev(clk1, "c3_syn_gclk", NULL); 604 603 605 604 clk = clk_register_mux(NULL, "c3_mclk", c3_parents, 606 - ARRAY_SIZE(c3_parents), CLK_SET_RATE_PARENT, 605 + ARRAY_SIZE(c3_parents), 606 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 607 607 SPEAR1310_PERIP_CLK_CFG, SPEAR1310_C3_CLK_SHIFT, 608 608 SPEAR1310_C3_CLK_MASK, 0, &_lock); 609 609 clk_register_clkdev(clk, "c3_mclk", NULL); ··· 616 614 617 615 /* gmac */ 618 616 clk = clk_register_mux(NULL, "phy_input_mclk", gmac_phy_input_parents, 619 - ARRAY_SIZE(gmac_phy_input_parents), 0, 620 - SPEAR1310_GMAC_CLK_CFG, 617 + ARRAY_SIZE(gmac_phy_input_parents), 618 + CLK_SET_RATE_NO_REPARENT, SPEAR1310_GMAC_CLK_CFG, 621 619 SPEAR1310_GMAC_PHY_INPUT_CLK_SHIFT, 622 620 SPEAR1310_GMAC_PHY_INPUT_CLK_MASK, 0, &_lock); 623 621 clk_register_clkdev(clk, "phy_input_mclk", NULL); ··· 629 627 clk_register_clkdev(clk1, "phy_syn_gclk", NULL); 630 628 631 629 clk = clk_register_mux(NULL, "phy_mclk", gmac_phy_parents, 632 - ARRAY_SIZE(gmac_phy_parents), 0, 630 + ARRAY_SIZE(gmac_phy_parents), CLK_SET_RATE_NO_REPARENT, 633 631 SPEAR1310_PERIP_CLK_CFG, SPEAR1310_GMAC_PHY_CLK_SHIFT, 634 632 SPEAR1310_GMAC_PHY_CLK_MASK, 0, &_lock); 635 633 clk_register_clkdev(clk, "stmmacphy.0", NULL); 636 634 637 635 /* clcd */ 638 636 clk = clk_register_mux(NULL, "clcd_syn_mclk", clcd_synth_parents, 639 - ARRAY_SIZE(clcd_synth_parents), 0, 640 - SPEAR1310_CLCD_CLK_SYNT, SPEAR1310_CLCD_SYNT_CLK_SHIFT, 637 + ARRAY_SIZE(clcd_synth_parents), 638 + CLK_SET_RATE_NO_REPARENT, SPEAR1310_CLCD_CLK_SYNT, 639 + SPEAR1310_CLCD_SYNT_CLK_SHIFT, 641 640 SPEAR1310_CLCD_SYNT_CLK_MASK, 0, &_lock); 642 641 clk_register_clkdev(clk, "clcd_syn_mclk", NULL); 643 642 ··· 648 645 clk_register_clkdev(clk, "clcd_syn_clk", NULL); 649 646 650 647 clk = clk_register_mux(NULL, "clcd_pixel_mclk", clcd_pixel_parents, 651 - ARRAY_SIZE(clcd_pixel_parents), CLK_SET_RATE_PARENT, 648 + ARRAY_SIZE(clcd_pixel_parents), 649 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 652 650 SPEAR1310_PERIP_CLK_CFG, SPEAR1310_CLCD_CLK_SHIFT, 653 651 SPEAR1310_CLCD_CLK_MASK, 0, &_lock); 654 652 clk_register_clkdev(clk, "clcd_pixel_mclk", NULL); ··· 661 657 662 658 /* i2s */ 663 659 clk = clk_register_mux(NULL, "i2s_src_mclk", i2s_src_parents, 664 - ARRAY_SIZE(i2s_src_parents), 0, SPEAR1310_I2S_CLK_CFG, 665 - SPEAR1310_I2S_SRC_CLK_SHIFT, SPEAR1310_I2S_SRC_CLK_MASK, 666 - 0, &_lock); 660 + ARRAY_SIZE(i2s_src_parents), CLK_SET_RATE_NO_REPARENT, 661 + SPEAR1310_I2S_CLK_CFG, SPEAR1310_I2S_SRC_CLK_SHIFT, 662 + SPEAR1310_I2S_SRC_CLK_MASK, 0, &_lock); 667 663 clk_register_clkdev(clk, "i2s_src_mclk", NULL); 668 664 669 665 clk = clk_register_aux("i2s_prs1_clk", NULL, "i2s_src_mclk", 0, ··· 672 668 clk_register_clkdev(clk, "i2s_prs1_clk", NULL); 673 669 674 670 clk = clk_register_mux(NULL, "i2s_ref_mclk", i2s_ref_parents, 675 - ARRAY_SIZE(i2s_ref_parents), CLK_SET_RATE_PARENT, 671 + ARRAY_SIZE(i2s_ref_parents), 672 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 676 673 SPEAR1310_I2S_CLK_CFG, SPEAR1310_I2S_REF_SHIFT, 677 674 SPEAR1310_I2S_REF_SEL_MASK, 0, &_lock); 678 675 clk_register_clkdev(clk, "i2s_ref_mclk", NULL); ··· 811 806 812 807 /* RAS clks */ 813 808 clk = clk_register_mux(NULL, "gen_syn0_1_mclk", gen_synth0_1_parents, 814 - ARRAY_SIZE(gen_synth0_1_parents), 0, SPEAR1310_PLL_CFG, 809 + ARRAY_SIZE(gen_synth0_1_parents), 810 + CLK_SET_RATE_NO_REPARENT, SPEAR1310_PLL_CFG, 815 811 SPEAR1310_RAS_SYNT0_1_CLK_SHIFT, 816 812 SPEAR1310_RAS_SYNT_CLK_MASK, 0, &_lock); 817 813 clk_register_clkdev(clk, "gen_syn0_1_clk", NULL); 818 814 819 815 clk = clk_register_mux(NULL, "gen_syn2_3_mclk", gen_synth2_3_parents, 820 - ARRAY_SIZE(gen_synth2_3_parents), 0, SPEAR1310_PLL_CFG, 816 + ARRAY_SIZE(gen_synth2_3_parents), 817 + CLK_SET_RATE_NO_REPARENT, SPEAR1310_PLL_CFG, 821 818 SPEAR1310_RAS_SYNT2_3_CLK_SHIFT, 822 819 SPEAR1310_RAS_SYNT_CLK_MASK, 0, &_lock); 823 820 clk_register_clkdev(clk, "gen_syn2_3_clk", NULL); ··· 936 929 937 930 clk = clk_register_mux(NULL, "smii_rgmii_phy_mclk", 938 931 smii_rgmii_phy_parents, 939 - ARRAY_SIZE(smii_rgmii_phy_parents), 0, 940 - SPEAR1310_RAS_CTRL_REG1, 932 + ARRAY_SIZE(smii_rgmii_phy_parents), 933 + CLK_SET_RATE_NO_REPARENT, SPEAR1310_RAS_CTRL_REG1, 941 934 SPEAR1310_SMII_RGMII_PHY_CLK_SHIFT, 942 935 SPEAR1310_PHY_CLK_MASK, 0, &_lock); 943 936 clk_register_clkdev(clk, "stmmacphy.1", NULL); ··· 945 938 clk_register_clkdev(clk, "stmmacphy.4", NULL); 946 939 947 940 clk = clk_register_mux(NULL, "rmii_phy_mclk", rmii_phy_parents, 948 - ARRAY_SIZE(rmii_phy_parents), 0, 941 + ARRAY_SIZE(rmii_phy_parents), CLK_SET_RATE_NO_REPARENT, 949 942 SPEAR1310_RAS_CTRL_REG1, SPEAR1310_RMII_PHY_CLK_SHIFT, 950 943 SPEAR1310_PHY_CLK_MASK, 0, &_lock); 951 944 clk_register_clkdev(clk, "stmmacphy.3", NULL); 952 945 953 946 clk = clk_register_mux(NULL, "uart1_mclk", uart_parents, 954 - ARRAY_SIZE(uart_parents), 0, SPEAR1310_RAS_CTRL_REG0, 955 - SPEAR1310_UART1_CLK_SHIFT, SPEAR1310_RAS_UART_CLK_MASK, 956 - 0, &_lock); 947 + ARRAY_SIZE(uart_parents), CLK_SET_RATE_NO_REPARENT, 948 + SPEAR1310_RAS_CTRL_REG0, SPEAR1310_UART1_CLK_SHIFT, 949 + SPEAR1310_RAS_UART_CLK_MASK, 0, &_lock); 957 950 clk_register_clkdev(clk, "uart1_mclk", NULL); 958 951 959 952 clk = clk_register_gate(NULL, "uart1_clk", "uart1_mclk", 0, ··· 962 955 clk_register_clkdev(clk, NULL, "5c800000.serial"); 963 956 964 957 clk = clk_register_mux(NULL, "uart2_mclk", uart_parents, 965 - ARRAY_SIZE(uart_parents), 0, SPEAR1310_RAS_CTRL_REG0, 966 - SPEAR1310_UART2_CLK_SHIFT, SPEAR1310_RAS_UART_CLK_MASK, 967 - 0, &_lock); 958 + ARRAY_SIZE(uart_parents), CLK_SET_RATE_NO_REPARENT, 959 + SPEAR1310_RAS_CTRL_REG0, SPEAR1310_UART2_CLK_SHIFT, 960 + SPEAR1310_RAS_UART_CLK_MASK, 0, &_lock); 968 961 clk_register_clkdev(clk, "uart2_mclk", NULL); 969 962 970 963 clk = clk_register_gate(NULL, "uart2_clk", "uart2_mclk", 0, ··· 973 966 clk_register_clkdev(clk, NULL, "5c900000.serial"); 974 967 975 968 clk = clk_register_mux(NULL, "uart3_mclk", uart_parents, 976 - ARRAY_SIZE(uart_parents), 0, SPEAR1310_RAS_CTRL_REG0, 977 - SPEAR1310_UART3_CLK_SHIFT, SPEAR1310_RAS_UART_CLK_MASK, 978 - 0, &_lock); 969 + ARRAY_SIZE(uart_parents), CLK_SET_RATE_NO_REPARENT, 970 + SPEAR1310_RAS_CTRL_REG0, SPEAR1310_UART3_CLK_SHIFT, 971 + SPEAR1310_RAS_UART_CLK_MASK, 0, &_lock); 979 972 clk_register_clkdev(clk, "uart3_mclk", NULL); 980 973 981 974 clk = clk_register_gate(NULL, "uart3_clk", "uart3_mclk", 0, ··· 984 977 clk_register_clkdev(clk, NULL, "5ca00000.serial"); 985 978 986 979 clk = clk_register_mux(NULL, "uart4_mclk", uart_parents, 987 - ARRAY_SIZE(uart_parents), 0, SPEAR1310_RAS_CTRL_REG0, 988 - SPEAR1310_UART4_CLK_SHIFT, SPEAR1310_RAS_UART_CLK_MASK, 989 - 0, &_lock); 980 + ARRAY_SIZE(uart_parents), CLK_SET_RATE_NO_REPARENT, 981 + SPEAR1310_RAS_CTRL_REG0, SPEAR1310_UART4_CLK_SHIFT, 982 + SPEAR1310_RAS_UART_CLK_MASK, 0, &_lock); 990 983 clk_register_clkdev(clk, "uart4_mclk", NULL); 991 984 992 985 clk = clk_register_gate(NULL, "uart4_clk", "uart4_mclk", 0, ··· 995 988 clk_register_clkdev(clk, NULL, "5cb00000.serial"); 996 989 997 990 clk = clk_register_mux(NULL, "uart5_mclk", uart_parents, 998 - ARRAY_SIZE(uart_parents), 0, SPEAR1310_RAS_CTRL_REG0, 999 - SPEAR1310_UART5_CLK_SHIFT, SPEAR1310_RAS_UART_CLK_MASK, 1000 - 0, &_lock); 991 + ARRAY_SIZE(uart_parents), CLK_SET_RATE_NO_REPARENT, 992 + SPEAR1310_RAS_CTRL_REG0, SPEAR1310_UART5_CLK_SHIFT, 993 + SPEAR1310_RAS_UART_CLK_MASK, 0, &_lock); 1001 994 clk_register_clkdev(clk, "uart5_mclk", NULL); 1002 995 1003 996 clk = clk_register_gate(NULL, "uart5_clk", "uart5_mclk", 0, ··· 1006 999 clk_register_clkdev(clk, NULL, "5cc00000.serial"); 1007 1000 1008 1001 clk = clk_register_mux(NULL, "i2c1_mclk", i2c_parents, 1009 - ARRAY_SIZE(i2c_parents), 0, SPEAR1310_RAS_CTRL_REG0, 1010 - SPEAR1310_I2C1_CLK_SHIFT, SPEAR1310_I2C_CLK_MASK, 0, 1011 - &_lock); 1002 + ARRAY_SIZE(i2c_parents), CLK_SET_RATE_NO_REPARENT, 1003 + SPEAR1310_RAS_CTRL_REG0, SPEAR1310_I2C1_CLK_SHIFT, 1004 + SPEAR1310_I2C_CLK_MASK, 0, &_lock); 1012 1005 clk_register_clkdev(clk, "i2c1_mclk", NULL); 1013 1006 1014 1007 clk = clk_register_gate(NULL, "i2c1_clk", "i2c1_mclk", 0, ··· 1017 1010 clk_register_clkdev(clk, NULL, "5cd00000.i2c"); 1018 1011 1019 1012 clk = clk_register_mux(NULL, "i2c2_mclk", i2c_parents, 1020 - ARRAY_SIZE(i2c_parents), 0, SPEAR1310_RAS_CTRL_REG0, 1021 - SPEAR1310_I2C2_CLK_SHIFT, SPEAR1310_I2C_CLK_MASK, 0, 1022 - &_lock); 1013 + ARRAY_SIZE(i2c_parents), CLK_SET_RATE_NO_REPARENT, 1014 + SPEAR1310_RAS_CTRL_REG0, SPEAR1310_I2C2_CLK_SHIFT, 1015 + SPEAR1310_I2C_CLK_MASK, 0, &_lock); 1023 1016 clk_register_clkdev(clk, "i2c2_mclk", NULL); 1024 1017 1025 1018 clk = clk_register_gate(NULL, "i2c2_clk", "i2c2_mclk", 0, ··· 1028 1021 clk_register_clkdev(clk, NULL, "5ce00000.i2c"); 1029 1022 1030 1023 clk = clk_register_mux(NULL, "i2c3_mclk", i2c_parents, 1031 - ARRAY_SIZE(i2c_parents), 0, SPEAR1310_RAS_CTRL_REG0, 1032 - SPEAR1310_I2C3_CLK_SHIFT, SPEAR1310_I2C_CLK_MASK, 0, 1033 - &_lock); 1024 + ARRAY_SIZE(i2c_parents), CLK_SET_RATE_NO_REPARENT, 1025 + SPEAR1310_RAS_CTRL_REG0, SPEAR1310_I2C3_CLK_SHIFT, 1026 + SPEAR1310_I2C_CLK_MASK, 0, &_lock); 1034 1027 clk_register_clkdev(clk, "i2c3_mclk", NULL); 1035 1028 1036 1029 clk = clk_register_gate(NULL, "i2c3_clk", "i2c3_mclk", 0, ··· 1039 1032 clk_register_clkdev(clk, NULL, "5cf00000.i2c"); 1040 1033 1041 1034 clk = clk_register_mux(NULL, "i2c4_mclk", i2c_parents, 1042 - ARRAY_SIZE(i2c_parents), 0, SPEAR1310_RAS_CTRL_REG0, 1043 - SPEAR1310_I2C4_CLK_SHIFT, SPEAR1310_I2C_CLK_MASK, 0, 1044 - &_lock); 1035 + ARRAY_SIZE(i2c_parents), CLK_SET_RATE_NO_REPARENT, 1036 + SPEAR1310_RAS_CTRL_REG0, SPEAR1310_I2C4_CLK_SHIFT, 1037 + SPEAR1310_I2C_CLK_MASK, 0, &_lock); 1045 1038 clk_register_clkdev(clk, "i2c4_mclk", NULL); 1046 1039 1047 1040 clk = clk_register_gate(NULL, "i2c4_clk", "i2c4_mclk", 0, ··· 1050 1043 clk_register_clkdev(clk, NULL, "5d000000.i2c"); 1051 1044 1052 1045 clk = clk_register_mux(NULL, "i2c5_mclk", i2c_parents, 1053 - ARRAY_SIZE(i2c_parents), 0, SPEAR1310_RAS_CTRL_REG0, 1054 - SPEAR1310_I2C5_CLK_SHIFT, SPEAR1310_I2C_CLK_MASK, 0, 1055 - &_lock); 1046 + ARRAY_SIZE(i2c_parents), CLK_SET_RATE_NO_REPARENT, 1047 + SPEAR1310_RAS_CTRL_REG0, SPEAR1310_I2C5_CLK_SHIFT, 1048 + SPEAR1310_I2C_CLK_MASK, 0, &_lock); 1056 1049 clk_register_clkdev(clk, "i2c5_mclk", NULL); 1057 1050 1058 1051 clk = clk_register_gate(NULL, "i2c5_clk", "i2c5_mclk", 0, ··· 1061 1054 clk_register_clkdev(clk, NULL, "5d100000.i2c"); 1062 1055 1063 1056 clk = clk_register_mux(NULL, "i2c6_mclk", i2c_parents, 1064 - ARRAY_SIZE(i2c_parents), 0, SPEAR1310_RAS_CTRL_REG0, 1065 - SPEAR1310_I2C6_CLK_SHIFT, SPEAR1310_I2C_CLK_MASK, 0, 1066 - &_lock); 1057 + ARRAY_SIZE(i2c_parents), CLK_SET_RATE_NO_REPARENT, 1058 + SPEAR1310_RAS_CTRL_REG0, SPEAR1310_I2C6_CLK_SHIFT, 1059 + SPEAR1310_I2C_CLK_MASK, 0, &_lock); 1067 1060 clk_register_clkdev(clk, "i2c6_mclk", NULL); 1068 1061 1069 1062 clk = clk_register_gate(NULL, "i2c6_clk", "i2c6_mclk", 0, ··· 1072 1065 clk_register_clkdev(clk, NULL, "5d200000.i2c"); 1073 1066 1074 1067 clk = clk_register_mux(NULL, "i2c7_mclk", i2c_parents, 1075 - ARRAY_SIZE(i2c_parents), 0, SPEAR1310_RAS_CTRL_REG0, 1076 - SPEAR1310_I2C7_CLK_SHIFT, SPEAR1310_I2C_CLK_MASK, 0, 1077 - &_lock); 1068 + ARRAY_SIZE(i2c_parents), CLK_SET_RATE_NO_REPARENT, 1069 + SPEAR1310_RAS_CTRL_REG0, SPEAR1310_I2C7_CLK_SHIFT, 1070 + SPEAR1310_I2C_CLK_MASK, 0, &_lock); 1078 1071 clk_register_clkdev(clk, "i2c7_mclk", NULL); 1079 1072 1080 1073 clk = clk_register_gate(NULL, "i2c7_clk", "i2c7_mclk", 0, ··· 1083 1076 clk_register_clkdev(clk, NULL, "5d300000.i2c"); 1084 1077 1085 1078 clk = clk_register_mux(NULL, "ssp1_mclk", ssp1_parents, 1086 - ARRAY_SIZE(ssp1_parents), 0, SPEAR1310_RAS_CTRL_REG0, 1087 - SPEAR1310_SSP1_CLK_SHIFT, SPEAR1310_SSP1_CLK_MASK, 0, 1088 - &_lock); 1079 + ARRAY_SIZE(ssp1_parents), CLK_SET_RATE_NO_REPARENT, 1080 + SPEAR1310_RAS_CTRL_REG0, SPEAR1310_SSP1_CLK_SHIFT, 1081 + SPEAR1310_SSP1_CLK_MASK, 0, &_lock); 1089 1082 clk_register_clkdev(clk, "ssp1_mclk", NULL); 1090 1083 1091 1084 clk = clk_register_gate(NULL, "ssp1_clk", "ssp1_mclk", 0, ··· 1094 1087 clk_register_clkdev(clk, NULL, "5d400000.spi"); 1095 1088 1096 1089 clk = clk_register_mux(NULL, "pci_mclk", pci_parents, 1097 - ARRAY_SIZE(pci_parents), 0, SPEAR1310_RAS_CTRL_REG0, 1098 - SPEAR1310_PCI_CLK_SHIFT, SPEAR1310_PCI_CLK_MASK, 0, 1099 - &_lock); 1090 + ARRAY_SIZE(pci_parents), CLK_SET_RATE_NO_REPARENT, 1091 + SPEAR1310_RAS_CTRL_REG0, SPEAR1310_PCI_CLK_SHIFT, 1092 + SPEAR1310_PCI_CLK_MASK, 0, &_lock); 1100 1093 clk_register_clkdev(clk, "pci_mclk", NULL); 1101 1094 1102 1095 clk = clk_register_gate(NULL, "pci_clk", "pci_mclk", 0, ··· 1105 1098 clk_register_clkdev(clk, NULL, "pci"); 1106 1099 1107 1100 clk = clk_register_mux(NULL, "tdm1_mclk", tdm_parents, 1108 - ARRAY_SIZE(tdm_parents), 0, SPEAR1310_RAS_CTRL_REG0, 1109 - SPEAR1310_TDM1_CLK_SHIFT, SPEAR1310_TDM_CLK_MASK, 0, 1110 - &_lock); 1101 + ARRAY_SIZE(tdm_parents), CLK_SET_RATE_NO_REPARENT, 1102 + SPEAR1310_RAS_CTRL_REG0, SPEAR1310_TDM1_CLK_SHIFT, 1103 + SPEAR1310_TDM_CLK_MASK, 0, &_lock); 1111 1104 clk_register_clkdev(clk, "tdm1_mclk", NULL); 1112 1105 1113 1106 clk = clk_register_gate(NULL, "tdm1_clk", "tdm1_mclk", 0, ··· 1116 1109 clk_register_clkdev(clk, NULL, "tdm_hdlc.0"); 1117 1110 1118 1111 clk = clk_register_mux(NULL, "tdm2_mclk", tdm_parents, 1119 - ARRAY_SIZE(tdm_parents), 0, SPEAR1310_RAS_CTRL_REG0, 1120 - SPEAR1310_TDM2_CLK_SHIFT, SPEAR1310_TDM_CLK_MASK, 0, 1121 - &_lock); 1112 + ARRAY_SIZE(tdm_parents), CLK_SET_RATE_NO_REPARENT, 1113 + SPEAR1310_RAS_CTRL_REG0, SPEAR1310_TDM2_CLK_SHIFT, 1114 + SPEAR1310_TDM_CLK_MASK, 0, &_lock); 1122 1115 clk_register_clkdev(clk, "tdm2_mclk", NULL); 1123 1116 1124 1117 clk = clk_register_gate(NULL, "tdm2_clk", "tdm2_mclk", 0,
+53 -44
drivers/clk/spear/spear1340_clock.c
··· 473 473 /* clock derived from 24 or 25 MHz osc clk */ 474 474 /* vco-pll */ 475 475 clk = clk_register_mux(NULL, "vco1_mclk", vco_parents, 476 - ARRAY_SIZE(vco_parents), 0, SPEAR1340_PLL_CFG, 477 - SPEAR1340_PLL1_CLK_SHIFT, SPEAR1340_PLL_CLK_MASK, 0, 478 - &_lock); 476 + ARRAY_SIZE(vco_parents), CLK_SET_RATE_NO_REPARENT, 477 + SPEAR1340_PLL_CFG, SPEAR1340_PLL1_CLK_SHIFT, 478 + SPEAR1340_PLL_CLK_MASK, 0, &_lock); 479 479 clk_register_clkdev(clk, "vco1_mclk", NULL); 480 480 clk = clk_register_vco_pll("vco1_clk", "pll1_clk", NULL, "vco1_mclk", 0, 481 481 SPEAR1340_PLL1_CTR, SPEAR1340_PLL1_FRQ, pll_rtbl, ··· 484 484 clk_register_clkdev(clk1, "pll1_clk", NULL); 485 485 486 486 clk = clk_register_mux(NULL, "vco2_mclk", vco_parents, 487 - ARRAY_SIZE(vco_parents), 0, SPEAR1340_PLL_CFG, 488 - SPEAR1340_PLL2_CLK_SHIFT, SPEAR1340_PLL_CLK_MASK, 0, 489 - &_lock); 487 + ARRAY_SIZE(vco_parents), CLK_SET_RATE_NO_REPARENT, 488 + SPEAR1340_PLL_CFG, SPEAR1340_PLL2_CLK_SHIFT, 489 + SPEAR1340_PLL_CLK_MASK, 0, &_lock); 490 490 clk_register_clkdev(clk, "vco2_mclk", NULL); 491 491 clk = clk_register_vco_pll("vco2_clk", "pll2_clk", NULL, "vco2_mclk", 0, 492 492 SPEAR1340_PLL2_CTR, SPEAR1340_PLL2_FRQ, pll_rtbl, ··· 495 495 clk_register_clkdev(clk1, "pll2_clk", NULL); 496 496 497 497 clk = clk_register_mux(NULL, "vco3_mclk", vco_parents, 498 - ARRAY_SIZE(vco_parents), 0, SPEAR1340_PLL_CFG, 499 - SPEAR1340_PLL3_CLK_SHIFT, SPEAR1340_PLL_CLK_MASK, 0, 500 - &_lock); 498 + ARRAY_SIZE(vco_parents), CLK_SET_RATE_NO_REPARENT, 499 + SPEAR1340_PLL_CFG, SPEAR1340_PLL3_CLK_SHIFT, 500 + SPEAR1340_PLL_CLK_MASK, 0, &_lock); 501 501 clk_register_clkdev(clk, "vco3_mclk", NULL); 502 502 clk = clk_register_vco_pll("vco3_clk", "pll3_clk", NULL, "vco3_mclk", 0, 503 503 SPEAR1340_PLL3_CTR, SPEAR1340_PLL3_FRQ, pll_rtbl, ··· 561 561 clk_register_clkdev(clk, "amba_syn_clk", NULL); 562 562 563 563 clk = clk_register_mux(NULL, "sys_mclk", sys_parents, 564 - ARRAY_SIZE(sys_parents), 0, SPEAR1340_SYS_CLK_CTRL, 565 - SPEAR1340_SCLK_SRC_SEL_SHIFT, 564 + ARRAY_SIZE(sys_parents), CLK_SET_RATE_NO_REPARENT, 565 + SPEAR1340_SYS_CLK_CTRL, SPEAR1340_SCLK_SRC_SEL_SHIFT, 566 566 SPEAR1340_SCLK_SRC_SEL_MASK, 0, &_lock); 567 567 clk_register_clkdev(clk, "sys_mclk", NULL); 568 568 ··· 583 583 clk_register_clkdev(clk, NULL, "smp_twd"); 584 584 585 585 clk = clk_register_mux(NULL, "ahb_clk", ahb_parents, 586 - ARRAY_SIZE(ahb_parents), 0, SPEAR1340_SYS_CLK_CTRL, 587 - SPEAR1340_HCLK_SRC_SEL_SHIFT, 586 + ARRAY_SIZE(ahb_parents), CLK_SET_RATE_NO_REPARENT, 587 + SPEAR1340_SYS_CLK_CTRL, SPEAR1340_HCLK_SRC_SEL_SHIFT, 588 588 SPEAR1340_HCLK_SRC_SEL_MASK, 0, &_lock); 589 589 clk_register_clkdev(clk, "ahb_clk", NULL); 590 590 ··· 594 594 595 595 /* gpt clocks */ 596 596 clk = clk_register_mux(NULL, "gpt0_mclk", gpt_parents, 597 - ARRAY_SIZE(gpt_parents), 0, SPEAR1340_PERIP_CLK_CFG, 598 - SPEAR1340_GPT0_CLK_SHIFT, SPEAR1340_GPT_CLK_MASK, 0, 599 - &_lock); 597 + ARRAY_SIZE(gpt_parents), CLK_SET_RATE_NO_REPARENT, 598 + SPEAR1340_PERIP_CLK_CFG, SPEAR1340_GPT0_CLK_SHIFT, 599 + SPEAR1340_GPT_CLK_MASK, 0, &_lock); 600 600 clk_register_clkdev(clk, "gpt0_mclk", NULL); 601 601 clk = clk_register_gate(NULL, "gpt0_clk", "gpt0_mclk", 0, 602 602 SPEAR1340_PERIP1_CLK_ENB, SPEAR1340_GPT0_CLK_ENB, 0, ··· 604 604 clk_register_clkdev(clk, NULL, "gpt0"); 605 605 606 606 clk = clk_register_mux(NULL, "gpt1_mclk", gpt_parents, 607 - ARRAY_SIZE(gpt_parents), 0, SPEAR1340_PERIP_CLK_CFG, 608 - SPEAR1340_GPT1_CLK_SHIFT, SPEAR1340_GPT_CLK_MASK, 0, 609 - &_lock); 607 + ARRAY_SIZE(gpt_parents), CLK_SET_RATE_NO_REPARENT, 608 + SPEAR1340_PERIP_CLK_CFG, SPEAR1340_GPT1_CLK_SHIFT, 609 + SPEAR1340_GPT_CLK_MASK, 0, &_lock); 610 610 clk_register_clkdev(clk, "gpt1_mclk", NULL); 611 611 clk = clk_register_gate(NULL, "gpt1_clk", "gpt1_mclk", 0, 612 612 SPEAR1340_PERIP1_CLK_ENB, SPEAR1340_GPT1_CLK_ENB, 0, ··· 614 614 clk_register_clkdev(clk, NULL, "gpt1"); 615 615 616 616 clk = clk_register_mux(NULL, "gpt2_mclk", gpt_parents, 617 - ARRAY_SIZE(gpt_parents), 0, SPEAR1340_PERIP_CLK_CFG, 618 - SPEAR1340_GPT2_CLK_SHIFT, SPEAR1340_GPT_CLK_MASK, 0, 619 - &_lock); 617 + ARRAY_SIZE(gpt_parents), CLK_SET_RATE_NO_REPARENT, 618 + SPEAR1340_PERIP_CLK_CFG, SPEAR1340_GPT2_CLK_SHIFT, 619 + SPEAR1340_GPT_CLK_MASK, 0, &_lock); 620 620 clk_register_clkdev(clk, "gpt2_mclk", NULL); 621 621 clk = clk_register_gate(NULL, "gpt2_clk", "gpt2_mclk", 0, 622 622 SPEAR1340_PERIP2_CLK_ENB, SPEAR1340_GPT2_CLK_ENB, 0, ··· 624 624 clk_register_clkdev(clk, NULL, "gpt2"); 625 625 626 626 clk = clk_register_mux(NULL, "gpt3_mclk", gpt_parents, 627 - ARRAY_SIZE(gpt_parents), 0, SPEAR1340_PERIP_CLK_CFG, 628 - SPEAR1340_GPT3_CLK_SHIFT, SPEAR1340_GPT_CLK_MASK, 0, 629 - &_lock); 627 + ARRAY_SIZE(gpt_parents), CLK_SET_RATE_NO_REPARENT, 628 + SPEAR1340_PERIP_CLK_CFG, SPEAR1340_GPT3_CLK_SHIFT, 629 + SPEAR1340_GPT_CLK_MASK, 0, &_lock); 630 630 clk_register_clkdev(clk, "gpt3_mclk", NULL); 631 631 clk = clk_register_gate(NULL, "gpt3_clk", "gpt3_mclk", 0, 632 632 SPEAR1340_PERIP2_CLK_ENB, SPEAR1340_GPT3_CLK_ENB, 0, ··· 641 641 clk_register_clkdev(clk1, "uart0_syn_gclk", NULL); 642 642 643 643 clk = clk_register_mux(NULL, "uart0_mclk", uart0_parents, 644 - ARRAY_SIZE(uart0_parents), CLK_SET_RATE_PARENT, 644 + ARRAY_SIZE(uart0_parents), 645 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 645 646 SPEAR1340_PERIP_CLK_CFG, SPEAR1340_UART0_CLK_SHIFT, 646 647 SPEAR1340_UART_CLK_MASK, 0, &_lock); 647 648 clk_register_clkdev(clk, "uart0_mclk", NULL); ··· 659 658 clk_register_clkdev(clk1, "uart1_syn_gclk", NULL); 660 659 661 660 clk = clk_register_mux(NULL, "uart1_mclk", uart1_parents, 662 - ARRAY_SIZE(uart1_parents), 0, SPEAR1340_PERIP_CLK_CFG, 663 - SPEAR1340_UART1_CLK_SHIFT, SPEAR1340_UART_CLK_MASK, 0, 664 - &_lock); 661 + ARRAY_SIZE(uart1_parents), CLK_SET_RATE_NO_REPARENT, 662 + SPEAR1340_PERIP_CLK_CFG, SPEAR1340_UART1_CLK_SHIFT, 663 + SPEAR1340_UART_CLK_MASK, 0, &_lock); 665 664 clk_register_clkdev(clk, "uart1_mclk", NULL); 666 665 667 666 clk = clk_register_gate(NULL, "uart1_clk", "uart1_mclk", 0, ··· 699 698 clk_register_clkdev(clk1, "c3_syn_gclk", NULL); 700 699 701 700 clk = clk_register_mux(NULL, "c3_mclk", c3_parents, 702 - ARRAY_SIZE(c3_parents), CLK_SET_RATE_PARENT, 701 + ARRAY_SIZE(c3_parents), 702 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 703 703 SPEAR1340_PERIP_CLK_CFG, SPEAR1340_C3_CLK_SHIFT, 704 704 SPEAR1340_C3_CLK_MASK, 0, &_lock); 705 705 clk_register_clkdev(clk, "c3_mclk", NULL); ··· 712 710 713 711 /* gmac */ 714 712 clk = clk_register_mux(NULL, "phy_input_mclk", gmac_phy_input_parents, 715 - ARRAY_SIZE(gmac_phy_input_parents), 0, 716 - SPEAR1340_GMAC_CLK_CFG, 713 + ARRAY_SIZE(gmac_phy_input_parents), 714 + CLK_SET_RATE_NO_REPARENT, SPEAR1340_GMAC_CLK_CFG, 717 715 SPEAR1340_GMAC_PHY_INPUT_CLK_SHIFT, 718 716 SPEAR1340_GMAC_PHY_INPUT_CLK_MASK, 0, &_lock); 719 717 clk_register_clkdev(clk, "phy_input_mclk", NULL); ··· 725 723 clk_register_clkdev(clk1, "phy_syn_gclk", NULL); 726 724 727 725 clk = clk_register_mux(NULL, "phy_mclk", gmac_phy_parents, 728 - ARRAY_SIZE(gmac_phy_parents), 0, 726 + ARRAY_SIZE(gmac_phy_parents), CLK_SET_RATE_NO_REPARENT, 729 727 SPEAR1340_PERIP_CLK_CFG, SPEAR1340_GMAC_PHY_CLK_SHIFT, 730 728 SPEAR1340_GMAC_PHY_CLK_MASK, 0, &_lock); 731 729 clk_register_clkdev(clk, "stmmacphy.0", NULL); 732 730 733 731 /* clcd */ 734 732 clk = clk_register_mux(NULL, "clcd_syn_mclk", clcd_synth_parents, 735 - ARRAY_SIZE(clcd_synth_parents), 0, 736 - SPEAR1340_CLCD_CLK_SYNT, SPEAR1340_CLCD_SYNT_CLK_SHIFT, 733 + ARRAY_SIZE(clcd_synth_parents), 734 + CLK_SET_RATE_NO_REPARENT, SPEAR1340_CLCD_CLK_SYNT, 735 + SPEAR1340_CLCD_SYNT_CLK_SHIFT, 737 736 SPEAR1340_CLCD_SYNT_CLK_MASK, 0, &_lock); 738 737 clk_register_clkdev(clk, "clcd_syn_mclk", NULL); 739 738 ··· 744 741 clk_register_clkdev(clk, "clcd_syn_clk", NULL); 745 742 746 743 clk = clk_register_mux(NULL, "clcd_pixel_mclk", clcd_pixel_parents, 747 - ARRAY_SIZE(clcd_pixel_parents), CLK_SET_RATE_PARENT, 744 + ARRAY_SIZE(clcd_pixel_parents), 745 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 748 746 SPEAR1340_PERIP_CLK_CFG, SPEAR1340_CLCD_CLK_SHIFT, 749 747 SPEAR1340_CLCD_CLK_MASK, 0, &_lock); 750 748 clk_register_clkdev(clk, "clcd_pixel_mclk", NULL); ··· 757 753 758 754 /* i2s */ 759 755 clk = clk_register_mux(NULL, "i2s_src_mclk", i2s_src_parents, 760 - ARRAY_SIZE(i2s_src_parents), 0, SPEAR1340_I2S_CLK_CFG, 761 - SPEAR1340_I2S_SRC_CLK_SHIFT, SPEAR1340_I2S_SRC_CLK_MASK, 762 - 0, &_lock); 756 + ARRAY_SIZE(i2s_src_parents), CLK_SET_RATE_NO_REPARENT, 757 + SPEAR1340_I2S_CLK_CFG, SPEAR1340_I2S_SRC_CLK_SHIFT, 758 + SPEAR1340_I2S_SRC_CLK_MASK, 0, &_lock); 763 759 clk_register_clkdev(clk, "i2s_src_mclk", NULL); 764 760 765 761 clk = clk_register_aux("i2s_prs1_clk", NULL, "i2s_src_mclk", ··· 769 765 clk_register_clkdev(clk, "i2s_prs1_clk", NULL); 770 766 771 767 clk = clk_register_mux(NULL, "i2s_ref_mclk", i2s_ref_parents, 772 - ARRAY_SIZE(i2s_ref_parents), CLK_SET_RATE_PARENT, 768 + ARRAY_SIZE(i2s_ref_parents), 769 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 773 770 SPEAR1340_I2S_CLK_CFG, SPEAR1340_I2S_REF_SHIFT, 774 771 SPEAR1340_I2S_REF_SEL_MASK, 0, &_lock); 775 772 clk_register_clkdev(clk, "i2s_ref_mclk", NULL); ··· 896 891 897 892 /* RAS clks */ 898 893 clk = clk_register_mux(NULL, "gen_syn0_1_mclk", gen_synth0_1_parents, 899 - ARRAY_SIZE(gen_synth0_1_parents), 0, SPEAR1340_PLL_CFG, 894 + ARRAY_SIZE(gen_synth0_1_parents), 895 + CLK_SET_RATE_NO_REPARENT, SPEAR1340_PLL_CFG, 900 896 SPEAR1340_GEN_SYNT0_1_CLK_SHIFT, 901 897 SPEAR1340_GEN_SYNT_CLK_MASK, 0, &_lock); 902 898 clk_register_clkdev(clk, "gen_syn0_1_mclk", NULL); 903 899 904 900 clk = clk_register_mux(NULL, "gen_syn2_3_mclk", gen_synth2_3_parents, 905 - ARRAY_SIZE(gen_synth2_3_parents), 0, SPEAR1340_PLL_CFG, 901 + ARRAY_SIZE(gen_synth2_3_parents), 902 + CLK_SET_RATE_NO_REPARENT, SPEAR1340_PLL_CFG, 906 903 SPEAR1340_GEN_SYNT2_3_CLK_SHIFT, 907 904 SPEAR1340_GEN_SYNT_CLK_MASK, 0, &_lock); 908 905 clk_register_clkdev(clk, "gen_syn2_3_mclk", NULL); ··· 945 938 clk_register_clkdev(clk, NULL, "spear_cec.1"); 946 939 947 940 clk = clk_register_mux(NULL, "spdif_out_mclk", spdif_out_parents, 948 - ARRAY_SIZE(spdif_out_parents), CLK_SET_RATE_PARENT, 941 + ARRAY_SIZE(spdif_out_parents), 942 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 949 943 SPEAR1340_PERIP_CLK_CFG, SPEAR1340_SPDIF_OUT_CLK_SHIFT, 950 944 SPEAR1340_SPDIF_CLK_MASK, 0, &_lock); 951 945 clk_register_clkdev(clk, "spdif_out_mclk", NULL); ··· 957 949 clk_register_clkdev(clk, NULL, "d0000000.spdif-out"); 958 950 959 951 clk = clk_register_mux(NULL, "spdif_in_mclk", spdif_in_parents, 960 - ARRAY_SIZE(spdif_in_parents), CLK_SET_RATE_PARENT, 952 + ARRAY_SIZE(spdif_in_parents), 953 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 961 954 SPEAR1340_PERIP_CLK_CFG, SPEAR1340_SPDIF_IN_CLK_SHIFT, 962 955 SPEAR1340_SPDIF_CLK_MASK, 0, &_lock); 963 956 clk_register_clkdev(clk, "spdif_in_mclk", NULL);
+36 -21
drivers/clk/spear/spear3xx_clock.c
··· 294 294 clk_register_clkdev(clk, NULL, "a9400000.i2s"); 295 295 296 296 clk = clk_register_mux(NULL, "i2s_ref_clk", i2s_ref_parents, 297 - ARRAY_SIZE(i2s_ref_parents), CLK_SET_RATE_PARENT, 297 + ARRAY_SIZE(i2s_ref_parents), 298 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 298 299 SPEAR320_CONTROL_REG, I2S_REF_PCLK_SHIFT, 299 300 I2S_REF_PCLK_MASK, 0, &_lock); 300 301 clk_register_clkdev(clk, "i2s_ref_clk", NULL); ··· 314 313 clk_register_clkdev(clk, "hclk", "ab000000.eth"); 315 314 316 315 clk = clk_register_mux(NULL, "rs485_clk", uartx_parents, 317 - ARRAY_SIZE(uartx_parents), CLK_SET_RATE_PARENT, 316 + ARRAY_SIZE(uartx_parents), 317 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 318 318 SPEAR320_EXT_CTRL_REG, SPEAR320_RS485_PCLK_SHIFT, 319 319 SPEAR320_UARTX_PCLK_MASK, 0, &_lock); 320 320 clk_register_clkdev(clk, NULL, "a9300000.serial"); 321 321 322 322 clk = clk_register_mux(NULL, "sdhci_clk", sdhci_parents, 323 - ARRAY_SIZE(sdhci_parents), CLK_SET_RATE_PARENT, 323 + ARRAY_SIZE(sdhci_parents), 324 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 324 325 SPEAR320_CONTROL_REG, SDHCI_PCLK_SHIFT, SDHCI_PCLK_MASK, 325 326 0, &_lock); 326 327 clk_register_clkdev(clk, NULL, "70000000.sdhci"); 327 328 328 329 clk = clk_register_mux(NULL, "smii_pclk", smii0_parents, 329 - ARRAY_SIZE(smii0_parents), 0, SPEAR320_CONTROL_REG, 330 - SMII_PCLK_SHIFT, SMII_PCLK_MASK, 0, &_lock); 330 + ARRAY_SIZE(smii0_parents), CLK_SET_RATE_NO_REPARENT, 331 + SPEAR320_CONTROL_REG, SMII_PCLK_SHIFT, SMII_PCLK_MASK, 332 + 0, &_lock); 331 333 clk_register_clkdev(clk, NULL, "smii_pclk"); 332 334 333 335 clk = clk_register_fixed_factor(NULL, "smii_clk", "smii_pclk", 0, 1, 1); 334 336 clk_register_clkdev(clk, NULL, "smii"); 335 337 336 338 clk = clk_register_mux(NULL, "uart1_clk", uartx_parents, 337 - ARRAY_SIZE(uartx_parents), CLK_SET_RATE_PARENT, 339 + ARRAY_SIZE(uartx_parents), 340 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 338 341 SPEAR320_CONTROL_REG, UART1_PCLK_SHIFT, UART1_PCLK_MASK, 339 342 0, &_lock); 340 343 clk_register_clkdev(clk, NULL, "a3000000.serial"); 341 344 342 345 clk = clk_register_mux(NULL, "uart2_clk", uartx_parents, 343 - ARRAY_SIZE(uartx_parents), CLK_SET_RATE_PARENT, 346 + ARRAY_SIZE(uartx_parents), 347 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 344 348 SPEAR320_EXT_CTRL_REG, SPEAR320_UART2_PCLK_SHIFT, 345 349 SPEAR320_UARTX_PCLK_MASK, 0, &_lock); 346 350 clk_register_clkdev(clk, NULL, "a4000000.serial"); 347 351 348 352 clk = clk_register_mux(NULL, "uart3_clk", uartx_parents, 349 - ARRAY_SIZE(uartx_parents), CLK_SET_RATE_PARENT, 353 + ARRAY_SIZE(uartx_parents), 354 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 350 355 SPEAR320_EXT_CTRL_REG, SPEAR320_UART3_PCLK_SHIFT, 351 356 SPEAR320_UARTX_PCLK_MASK, 0, &_lock); 352 357 clk_register_clkdev(clk, NULL, "a9100000.serial"); 353 358 354 359 clk = clk_register_mux(NULL, "uart4_clk", uartx_parents, 355 - ARRAY_SIZE(uartx_parents), CLK_SET_RATE_PARENT, 360 + ARRAY_SIZE(uartx_parents), 361 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 356 362 SPEAR320_EXT_CTRL_REG, SPEAR320_UART4_PCLK_SHIFT, 357 363 SPEAR320_UARTX_PCLK_MASK, 0, &_lock); 358 364 clk_register_clkdev(clk, NULL, "a9200000.serial"); 359 365 360 366 clk = clk_register_mux(NULL, "uart5_clk", uartx_parents, 361 - ARRAY_SIZE(uartx_parents), CLK_SET_RATE_PARENT, 367 + ARRAY_SIZE(uartx_parents), 368 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 362 369 SPEAR320_EXT_CTRL_REG, SPEAR320_UART5_PCLK_SHIFT, 363 370 SPEAR320_UARTX_PCLK_MASK, 0, &_lock); 364 371 clk_register_clkdev(clk, NULL, "60000000.serial"); 365 372 366 373 clk = clk_register_mux(NULL, "uart6_clk", uartx_parents, 367 - ARRAY_SIZE(uartx_parents), CLK_SET_RATE_PARENT, 374 + ARRAY_SIZE(uartx_parents), 375 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 368 376 SPEAR320_EXT_CTRL_REG, SPEAR320_UART6_PCLK_SHIFT, 369 377 SPEAR320_UARTX_PCLK_MASK, 0, &_lock); 370 378 clk_register_clkdev(clk, NULL, "60100000.serial"); ··· 437 427 clk_register_clkdev(clk1, "uart_syn_gclk", NULL); 438 428 439 429 clk = clk_register_mux(NULL, "uart0_mclk", uart0_parents, 440 - ARRAY_SIZE(uart0_parents), CLK_SET_RATE_PARENT, 430 + ARRAY_SIZE(uart0_parents), 431 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 441 432 PERIP_CLK_CFG, UART_CLK_SHIFT, UART_CLK_MASK, 0, 442 433 &_lock); 443 434 clk_register_clkdev(clk, "uart0_mclk", NULL); ··· 455 444 clk_register_clkdev(clk1, "firda_syn_gclk", NULL); 456 445 457 446 clk = clk_register_mux(NULL, "firda_mclk", firda_parents, 458 - ARRAY_SIZE(firda_parents), CLK_SET_RATE_PARENT, 447 + ARRAY_SIZE(firda_parents), 448 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 459 449 PERIP_CLK_CFG, FIRDA_CLK_SHIFT, FIRDA_CLK_MASK, 0, 460 450 &_lock); 461 451 clk_register_clkdev(clk, "firda_mclk", NULL); ··· 470 458 clk_register_gpt("gpt0_syn_clk", "pll1_clk", 0, PRSC0_CLK_CFG, gpt_rtbl, 471 459 ARRAY_SIZE(gpt_rtbl), &_lock); 472 460 clk = clk_register_mux(NULL, "gpt0_clk", gpt0_parents, 473 - ARRAY_SIZE(gpt0_parents), CLK_SET_RATE_PARENT, 461 + ARRAY_SIZE(gpt0_parents), 462 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 474 463 PERIP_CLK_CFG, GPT0_CLK_SHIFT, GPT_CLK_MASK, 0, &_lock); 475 464 clk_register_clkdev(clk, NULL, "gpt0"); 476 465 477 466 clk_register_gpt("gpt1_syn_clk", "pll1_clk", 0, PRSC1_CLK_CFG, gpt_rtbl, 478 467 ARRAY_SIZE(gpt_rtbl), &_lock); 479 468 clk = clk_register_mux(NULL, "gpt1_mclk", gpt1_parents, 480 - ARRAY_SIZE(gpt1_parents), CLK_SET_RATE_PARENT, 469 + ARRAY_SIZE(gpt1_parents), 470 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 481 471 PERIP_CLK_CFG, GPT1_CLK_SHIFT, GPT_CLK_MASK, 0, &_lock); 482 472 clk_register_clkdev(clk, "gpt1_mclk", NULL); 483 473 clk = clk_register_gate(NULL, "gpt1_clk", "gpt1_mclk", ··· 490 476 clk_register_gpt("gpt2_syn_clk", "pll1_clk", 0, PRSC2_CLK_CFG, gpt_rtbl, 491 477 ARRAY_SIZE(gpt_rtbl), &_lock); 492 478 clk = clk_register_mux(NULL, "gpt2_mclk", gpt2_parents, 493 - ARRAY_SIZE(gpt2_parents), CLK_SET_RATE_PARENT, 479 + ARRAY_SIZE(gpt2_parents), 480 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 494 481 PERIP_CLK_CFG, GPT2_CLK_SHIFT, GPT_CLK_MASK, 0, &_lock); 495 482 clk_register_clkdev(clk, "gpt2_mclk", NULL); 496 483 clk = clk_register_gate(NULL, "gpt2_clk", "gpt2_mclk", ··· 513 498 clk_register_clkdev(clk1, "gen1_syn_gclk", NULL); 514 499 515 500 clk = clk_register_mux(NULL, "gen2_3_par_clk", gen2_3_parents, 516 - ARRAY_SIZE(gen2_3_parents), 0, CORE_CLK_CFG, 517 - GEN_SYNTH2_3_CLK_SHIFT, GEN_SYNTH2_3_CLK_MASK, 0, 518 - &_lock); 501 + ARRAY_SIZE(gen2_3_parents), CLK_SET_RATE_NO_REPARENT, 502 + CORE_CLK_CFG, GEN_SYNTH2_3_CLK_SHIFT, 503 + GEN_SYNTH2_3_CLK_MASK, 0, &_lock); 519 504 clk_register_clkdev(clk, "gen2_3_par_clk", NULL); 520 505 521 506 clk = clk_register_aux("gen2_syn_clk", "gen2_syn_gclk", ··· 555 540 clk_register_clkdev(clk, "ahbmult2_clk", NULL); 556 541 557 542 clk = clk_register_mux(NULL, "ddr_clk", ddr_parents, 558 - ARRAY_SIZE(ddr_parents), 0, PLL_CLK_CFG, MCTR_CLK_SHIFT, 559 - MCTR_CLK_MASK, 0, &_lock); 543 + ARRAY_SIZE(ddr_parents), CLK_SET_RATE_NO_REPARENT, 544 + PLL_CLK_CFG, MCTR_CLK_SHIFT, MCTR_CLK_MASK, 0, &_lock); 560 545 clk_register_clkdev(clk, "ddr_clk", NULL); 561 546 562 547 clk = clk_register_divider(NULL, "apb_clk", "ahb_clk",
+19 -16
drivers/clk/spear/spear6xx_clock.c
··· 169 169 clk_register_clkdev(clk1, "uart_syn_gclk", NULL); 170 170 171 171 clk = clk_register_mux(NULL, "uart_mclk", uart_parents, 172 - ARRAY_SIZE(uart_parents), 0, PERIP_CLK_CFG, 173 - UART_CLK_SHIFT, UART_CLK_MASK, 0, &_lock); 172 + ARRAY_SIZE(uart_parents), CLK_SET_RATE_NO_REPARENT, 173 + PERIP_CLK_CFG, UART_CLK_SHIFT, UART_CLK_MASK, 0, 174 + &_lock); 174 175 clk_register_clkdev(clk, "uart_mclk", NULL); 175 176 176 177 clk = clk_register_gate(NULL, "uart0", "uart_mclk", 0, PERIP1_CLK_ENB, ··· 189 188 clk_register_clkdev(clk1, "firda_syn_gclk", NULL); 190 189 191 190 clk = clk_register_mux(NULL, "firda_mclk", firda_parents, 192 - ARRAY_SIZE(firda_parents), 0, PERIP_CLK_CFG, 193 - FIRDA_CLK_SHIFT, FIRDA_CLK_MASK, 0, &_lock); 191 + ARRAY_SIZE(firda_parents), CLK_SET_RATE_NO_REPARENT, 192 + PERIP_CLK_CFG, FIRDA_CLK_SHIFT, FIRDA_CLK_MASK, 0, 193 + &_lock); 194 194 clk_register_clkdev(clk, "firda_mclk", NULL); 195 195 196 196 clk = clk_register_gate(NULL, "firda_clk", "firda_mclk", 0, ··· 205 203 clk_register_clkdev(clk1, "clcd_syn_gclk", NULL); 206 204 207 205 clk = clk_register_mux(NULL, "clcd_mclk", clcd_parents, 208 - ARRAY_SIZE(clcd_parents), 0, PERIP_CLK_CFG, 209 - CLCD_CLK_SHIFT, CLCD_CLK_MASK, 0, &_lock); 206 + ARRAY_SIZE(clcd_parents), CLK_SET_RATE_NO_REPARENT, 207 + PERIP_CLK_CFG, CLCD_CLK_SHIFT, CLCD_CLK_MASK, 0, 208 + &_lock); 210 209 clk_register_clkdev(clk, "clcd_mclk", NULL); 211 210 212 211 clk = clk_register_gate(NULL, "clcd_clk", "clcd_mclk", 0, ··· 220 217 clk_register_clkdev(clk, "gpt0_1_syn_clk", NULL); 221 218 222 219 clk = clk_register_mux(NULL, "gpt0_mclk", gpt0_1_parents, 223 - ARRAY_SIZE(gpt0_1_parents), 0, PERIP_CLK_CFG, 224 - GPT0_CLK_SHIFT, GPT_CLK_MASK, 0, &_lock); 220 + ARRAY_SIZE(gpt0_1_parents), CLK_SET_RATE_NO_REPARENT, 221 + PERIP_CLK_CFG, GPT0_CLK_SHIFT, GPT_CLK_MASK, 0, &_lock); 225 222 clk_register_clkdev(clk, NULL, "gpt0"); 226 223 227 224 clk = clk_register_mux(NULL, "gpt1_mclk", gpt0_1_parents, 228 - ARRAY_SIZE(gpt0_1_parents), 0, PERIP_CLK_CFG, 229 - GPT1_CLK_SHIFT, GPT_CLK_MASK, 0, &_lock); 225 + ARRAY_SIZE(gpt0_1_parents), CLK_SET_RATE_NO_REPARENT, 226 + PERIP_CLK_CFG, GPT1_CLK_SHIFT, GPT_CLK_MASK, 0, &_lock); 230 227 clk_register_clkdev(clk, "gpt1_mclk", NULL); 231 228 232 229 clk = clk_register_gate(NULL, "gpt1_clk", "gpt1_mclk", 0, ··· 238 235 clk_register_clkdev(clk, "gpt2_syn_clk", NULL); 239 236 240 237 clk = clk_register_mux(NULL, "gpt2_mclk", gpt2_parents, 241 - ARRAY_SIZE(gpt2_parents), 0, PERIP_CLK_CFG, 242 - GPT2_CLK_SHIFT, GPT_CLK_MASK, 0, &_lock); 238 + ARRAY_SIZE(gpt2_parents), CLK_SET_RATE_NO_REPARENT, 239 + PERIP_CLK_CFG, GPT2_CLK_SHIFT, GPT_CLK_MASK, 0, &_lock); 243 240 clk_register_clkdev(clk, "gpt2_mclk", NULL); 244 241 245 242 clk = clk_register_gate(NULL, "gpt2_clk", "gpt2_mclk", 0, ··· 251 248 clk_register_clkdev(clk, "gpt3_syn_clk", NULL); 252 249 253 250 clk = clk_register_mux(NULL, "gpt3_mclk", gpt3_parents, 254 - ARRAY_SIZE(gpt3_parents), 0, PERIP_CLK_CFG, 255 - GPT3_CLK_SHIFT, GPT_CLK_MASK, 0, &_lock); 251 + ARRAY_SIZE(gpt3_parents), CLK_SET_RATE_NO_REPARENT, 252 + PERIP_CLK_CFG, GPT3_CLK_SHIFT, GPT_CLK_MASK, 0, &_lock); 256 253 clk_register_clkdev(clk, "gpt3_mclk", NULL); 257 254 258 255 clk = clk_register_gate(NULL, "gpt3_clk", "gpt3_mclk", 0, ··· 280 277 clk_register_clkdev(clk, "ahbmult2_clk", NULL); 281 278 282 279 clk = clk_register_mux(NULL, "ddr_clk", ddr_parents, 283 - ARRAY_SIZE(ddr_parents), 0, PLL_CLK_CFG, MCTR_CLK_SHIFT, 284 - MCTR_CLK_MASK, 0, &_lock); 280 + ARRAY_SIZE(ddr_parents), CLK_SET_RATE_NO_REPARENT, 281 + PLL_CLK_CFG, MCTR_CLK_SHIFT, MCTR_CLK_MASK, 0, &_lock); 285 282 clk_register_clkdev(clk, "ddr_clk", NULL); 286 283 287 284 clk = clk_register_divider(NULL, "apb_clk", "ahb_clk",
+2 -1
drivers/clk/sunxi/clk-sunxi.c
··· 261 261 while (i < 5 && (parents[i] = of_clk_get_parent_name(node, i)) != NULL) 262 262 i++; 263 263 264 - clk = clk_register_mux(NULL, clk_name, parents, i, 0, reg, 264 + clk = clk_register_mux(NULL, clk_name, parents, i, 265 + CLK_SET_RATE_NO_REPARENT, reg, 265 266 data->shift, SUNXI_MUX_GATE_WIDTH, 266 267 0, &clk_lock); 267 268
+24 -12
drivers/clk/tegra/clk-tegra114.c
··· 1558 1558 1559 1559 /* audio0 */ 1560 1560 clk = clk_register_mux(NULL, "audio0_mux", mux_audio_sync_clk, 1561 - ARRAY_SIZE(mux_audio_sync_clk), 0, 1561 + ARRAY_SIZE(mux_audio_sync_clk), 1562 + CLK_SET_RATE_NO_REPARENT, 1562 1563 clk_base + AUDIO_SYNC_CLK_I2S0, 0, 3, 0, 1563 1564 NULL); 1564 1565 clks[audio0_mux] = clk; ··· 1571 1570 1572 1571 /* audio1 */ 1573 1572 clk = clk_register_mux(NULL, "audio1_mux", mux_audio_sync_clk, 1574 - ARRAY_SIZE(mux_audio_sync_clk), 0, 1573 + ARRAY_SIZE(mux_audio_sync_clk), 1574 + CLK_SET_RATE_NO_REPARENT, 1575 1575 clk_base + AUDIO_SYNC_CLK_I2S1, 0, 3, 0, 1576 1576 NULL); 1577 1577 clks[audio1_mux] = clk; ··· 1584 1582 1585 1583 /* audio2 */ 1586 1584 clk = clk_register_mux(NULL, "audio2_mux", mux_audio_sync_clk, 1587 - ARRAY_SIZE(mux_audio_sync_clk), 0, 1585 + ARRAY_SIZE(mux_audio_sync_clk), 1586 + CLK_SET_RATE_NO_REPARENT, 1588 1587 clk_base + AUDIO_SYNC_CLK_I2S2, 0, 3, 0, 1589 1588 NULL); 1590 1589 clks[audio2_mux] = clk; ··· 1597 1594 1598 1595 /* audio3 */ 1599 1596 clk = clk_register_mux(NULL, "audio3_mux", mux_audio_sync_clk, 1600 - ARRAY_SIZE(mux_audio_sync_clk), 0, 1597 + ARRAY_SIZE(mux_audio_sync_clk), 1598 + CLK_SET_RATE_NO_REPARENT, 1601 1599 clk_base + AUDIO_SYNC_CLK_I2S3, 0, 3, 0, 1602 1600 NULL); 1603 1601 clks[audio3_mux] = clk; ··· 1610 1606 1611 1607 /* audio4 */ 1612 1608 clk = clk_register_mux(NULL, "audio4_mux", mux_audio_sync_clk, 1613 - ARRAY_SIZE(mux_audio_sync_clk), 0, 1609 + ARRAY_SIZE(mux_audio_sync_clk), 1610 + CLK_SET_RATE_NO_REPARENT, 1614 1611 clk_base + AUDIO_SYNC_CLK_I2S4, 0, 3, 0, 1615 1612 NULL); 1616 1613 clks[audio4_mux] = clk; ··· 1623 1618 1624 1619 /* spdif */ 1625 1620 clk = clk_register_mux(NULL, "spdif_mux", mux_audio_sync_clk, 1626 - ARRAY_SIZE(mux_audio_sync_clk), 0, 1621 + ARRAY_SIZE(mux_audio_sync_clk), 1622 + CLK_SET_RATE_NO_REPARENT, 1627 1623 clk_base + AUDIO_SYNC_CLK_SPDIF, 0, 3, 0, 1628 1624 NULL); 1629 1625 clks[spdif_mux] = clk; ··· 1719 1713 1720 1714 /* clk_out_1 */ 1721 1715 clk = clk_register_mux(NULL, "clk_out_1_mux", clk_out1_parents, 1722 - ARRAY_SIZE(clk_out1_parents), 0, 1716 + ARRAY_SIZE(clk_out1_parents), 1717 + CLK_SET_RATE_NO_REPARENT, 1723 1718 pmc_base + PMC_CLK_OUT_CNTRL, 6, 3, 0, 1724 1719 &clk_out_lock); 1725 1720 clks[clk_out_1_mux] = clk; ··· 1732 1725 1733 1726 /* clk_out_2 */ 1734 1727 clk = clk_register_mux(NULL, "clk_out_2_mux", clk_out2_parents, 1735 - ARRAY_SIZE(clk_out2_parents), 0, 1728 + ARRAY_SIZE(clk_out2_parents), 1729 + CLK_SET_RATE_NO_REPARENT, 1736 1730 pmc_base + PMC_CLK_OUT_CNTRL, 14, 3, 0, 1737 1731 &clk_out_lock); 1738 1732 clks[clk_out_2_mux] = clk; ··· 1745 1737 1746 1738 /* clk_out_3 */ 1747 1739 clk = clk_register_mux(NULL, "clk_out_3_mux", clk_out3_parents, 1748 - ARRAY_SIZE(clk_out3_parents), 0, 1740 + ARRAY_SIZE(clk_out3_parents), 1741 + CLK_SET_RATE_NO_REPARENT, 1749 1742 pmc_base + PMC_CLK_OUT_CNTRL, 22, 3, 0, 1750 1743 &clk_out_lock); 1751 1744 clks[clk_out_3_mux] = clk; ··· 2064 2055 2065 2056 /* dsia */ 2066 2057 clk = clk_register_mux(NULL, "dsia_mux", mux_plld_out0_plld2_out0, 2067 - ARRAY_SIZE(mux_plld_out0_plld2_out0), 0, 2058 + ARRAY_SIZE(mux_plld_out0_plld2_out0), 2059 + CLK_SET_RATE_NO_REPARENT, 2068 2060 clk_base + PLLD_BASE, 25, 1, 0, &pll_d_lock); 2069 2061 clks[dsia_mux] = clk; 2070 2062 clk = tegra_clk_register_periph_gate("dsia", "dsia_mux", 0, clk_base, ··· 2075 2065 2076 2066 /* dsib */ 2077 2067 clk = clk_register_mux(NULL, "dsib_mux", mux_plld_out0_plld2_out0, 2078 - ARRAY_SIZE(mux_plld_out0_plld2_out0), 0, 2068 + ARRAY_SIZE(mux_plld_out0_plld2_out0), 2069 + CLK_SET_RATE_NO_REPARENT, 2079 2070 clk_base + PLLD2_BASE, 25, 1, 0, &pll_d2_lock); 2080 2071 clks[dsib_mux] = clk; 2081 2072 clk = tegra_clk_register_periph_gate("dsib", "dsib_mux", 0, clk_base, ··· 2113 2102 2114 2103 /* emc */ 2115 2104 clk = clk_register_mux(NULL, "emc_mux", mux_pllmcp_clkm, 2116 - ARRAY_SIZE(mux_pllmcp_clkm), 0, 2105 + ARRAY_SIZE(mux_pllmcp_clkm), 2106 + CLK_SET_RATE_NO_REPARENT, 2117 2107 clk_base + CLK_SOURCE_EMC, 2118 2108 29, 3, 0, NULL); 2119 2109 clk = tegra_clk_register_periph_gate("emc", "emc_mux", 0, clk_base,
+4 -2
drivers/clk/tegra/clk-tegra20.c
··· 778 778 779 779 /* audio */ 780 780 clk = clk_register_mux(NULL, "audio_mux", audio_parents, 781 - ARRAY_SIZE(audio_parents), 0, 781 + ARRAY_SIZE(audio_parents), 782 + CLK_SET_RATE_NO_REPARENT, 782 783 clk_base + AUDIO_SYNC_CLK, 0, 3, 0, NULL); 783 784 clk = clk_register_gate(NULL, "audio", "audio_mux", 0, 784 785 clk_base + AUDIO_SYNC_CLK, 4, ··· 942 941 943 942 /* emc */ 944 943 clk = clk_register_mux(NULL, "emc_mux", mux_pllmcp_clkm, 945 - ARRAY_SIZE(mux_pllmcp_clkm), 0, 944 + ARRAY_SIZE(mux_pllmcp_clkm), 945 + CLK_SET_RATE_NO_REPARENT, 946 946 clk_base + CLK_SOURCE_EMC, 947 947 30, 2, 0, NULL); 948 948 clk = tegra_clk_register_periph_gate("emc", "emc_mux", 0, clk_base, 0,
+22 -11
drivers/clk/tegra/clk-tegra30.c
··· 1026 1026 1027 1027 /* PLLE */ 1028 1028 clk = clk_register_mux(NULL, "pll_e_mux", pll_e_parents, 1029 - ARRAY_SIZE(pll_e_parents), 0, 1029 + ARRAY_SIZE(pll_e_parents), 1030 + CLK_SET_RATE_NO_REPARENT, 1030 1031 clk_base + PLLE_AUX, 2, 1, 0, NULL); 1031 1032 clk = tegra_clk_register_plle("pll_e", "pll_e_mux", clk_base, pmc_base, 1032 1033 CLK_GET_RATE_NOCACHE, 100000000, &pll_e_params, ··· 1087 1086 1088 1087 /* audio0 */ 1089 1088 clk = clk_register_mux(NULL, "audio0_mux", mux_audio_sync_clk, 1090 - ARRAY_SIZE(mux_audio_sync_clk), 0, 1089 + ARRAY_SIZE(mux_audio_sync_clk), 1090 + CLK_SET_RATE_NO_REPARENT, 1091 1091 clk_base + AUDIO_SYNC_CLK_I2S0, 0, 3, 0, NULL); 1092 1092 clk = clk_register_gate(NULL, "audio0", "audio0_mux", 0, 1093 1093 clk_base + AUDIO_SYNC_CLK_I2S0, 4, ··· 1098 1096 1099 1097 /* audio1 */ 1100 1098 clk = clk_register_mux(NULL, "audio1_mux", mux_audio_sync_clk, 1101 - ARRAY_SIZE(mux_audio_sync_clk), 0, 1099 + ARRAY_SIZE(mux_audio_sync_clk), 1100 + CLK_SET_RATE_NO_REPARENT, 1102 1101 clk_base + AUDIO_SYNC_CLK_I2S1, 0, 3, 0, NULL); 1103 1102 clk = clk_register_gate(NULL, "audio1", "audio1_mux", 0, 1104 1103 clk_base + AUDIO_SYNC_CLK_I2S1, 4, ··· 1109 1106 1110 1107 /* audio2 */ 1111 1108 clk = clk_register_mux(NULL, "audio2_mux", mux_audio_sync_clk, 1112 - ARRAY_SIZE(mux_audio_sync_clk), 0, 1109 + ARRAY_SIZE(mux_audio_sync_clk), 1110 + CLK_SET_RATE_NO_REPARENT, 1113 1111 clk_base + AUDIO_SYNC_CLK_I2S2, 0, 3, 0, NULL); 1114 1112 clk = clk_register_gate(NULL, "audio2", "audio2_mux", 0, 1115 1113 clk_base + AUDIO_SYNC_CLK_I2S2, 4, ··· 1120 1116 1121 1117 /* audio3 */ 1122 1118 clk = clk_register_mux(NULL, "audio3_mux", mux_audio_sync_clk, 1123 - ARRAY_SIZE(mux_audio_sync_clk), 0, 1119 + ARRAY_SIZE(mux_audio_sync_clk), 1120 + CLK_SET_RATE_NO_REPARENT, 1124 1121 clk_base + AUDIO_SYNC_CLK_I2S3, 0, 3, 0, NULL); 1125 1122 clk = clk_register_gate(NULL, "audio3", "audio3_mux", 0, 1126 1123 clk_base + AUDIO_SYNC_CLK_I2S3, 4, ··· 1131 1126 1132 1127 /* audio4 */ 1133 1128 clk = clk_register_mux(NULL, "audio4_mux", mux_audio_sync_clk, 1134 - ARRAY_SIZE(mux_audio_sync_clk), 0, 1129 + ARRAY_SIZE(mux_audio_sync_clk), 1130 + CLK_SET_RATE_NO_REPARENT, 1135 1131 clk_base + AUDIO_SYNC_CLK_I2S4, 0, 3, 0, NULL); 1136 1132 clk = clk_register_gate(NULL, "audio4", "audio4_mux", 0, 1137 1133 clk_base + AUDIO_SYNC_CLK_I2S4, 4, ··· 1142 1136 1143 1137 /* spdif */ 1144 1138 clk = clk_register_mux(NULL, "spdif_mux", mux_audio_sync_clk, 1145 - ARRAY_SIZE(mux_audio_sync_clk), 0, 1139 + ARRAY_SIZE(mux_audio_sync_clk), 1140 + CLK_SET_RATE_NO_REPARENT, 1146 1141 clk_base + AUDIO_SYNC_CLK_SPDIF, 0, 3, 0, NULL); 1147 1142 clk = clk_register_gate(NULL, "spdif", "spdif_mux", 0, 1148 1143 clk_base + AUDIO_SYNC_CLK_SPDIF, 4, ··· 1236 1229 1237 1230 /* clk_out_1 */ 1238 1231 clk = clk_register_mux(NULL, "clk_out_1_mux", clk_out1_parents, 1239 - ARRAY_SIZE(clk_out1_parents), 0, 1232 + ARRAY_SIZE(clk_out1_parents), 1233 + CLK_SET_RATE_NO_REPARENT, 1240 1234 pmc_base + PMC_CLK_OUT_CNTRL, 6, 3, 0, 1241 1235 &clk_out_lock); 1242 1236 clks[clk_out_1_mux] = clk; ··· 1249 1241 1250 1242 /* clk_out_2 */ 1251 1243 clk = clk_register_mux(NULL, "clk_out_2_mux", clk_out2_parents, 1252 - ARRAY_SIZE(clk_out2_parents), 0, 1244 + ARRAY_SIZE(clk_out2_parents), 1245 + CLK_SET_RATE_NO_REPARENT, 1253 1246 pmc_base + PMC_CLK_OUT_CNTRL, 14, 3, 0, 1254 1247 &clk_out_lock); 1255 1248 clk = clk_register_gate(NULL, "clk_out_2", "clk_out_2_mux", 0, ··· 1261 1252 1262 1253 /* clk_out_3 */ 1263 1254 clk = clk_register_mux(NULL, "clk_out_3_mux", clk_out3_parents, 1264 - ARRAY_SIZE(clk_out3_parents), 0, 1255 + ARRAY_SIZE(clk_out3_parents), 1256 + CLK_SET_RATE_NO_REPARENT, 1265 1257 pmc_base + PMC_CLK_OUT_CNTRL, 22, 3, 0, 1266 1258 &clk_out_lock); 1267 1259 clk = clk_register_gate(NULL, "clk_out_3", "clk_out_3_mux", 0, ··· 1689 1679 1690 1680 /* emc */ 1691 1681 clk = clk_register_mux(NULL, "emc_mux", mux_pllmcp_clkm, 1692 - ARRAY_SIZE(mux_pllmcp_clkm), 0, 1682 + ARRAY_SIZE(mux_pllmcp_clkm), 1683 + CLK_SET_RATE_NO_REPARENT, 1693 1684 clk_base + CLK_SOURCE_EMC, 1694 1685 30, 2, 0, NULL); 1695 1686 clk = tegra_clk_register_periph_gate("emc", "emc_mux", 0, clk_base, 0,
+2 -2
drivers/clk/versatile/clk-vexpress.c
··· 37 37 snprintf(name, ARRAY_SIZE(name), "timerclken%d", i); 38 38 39 39 vexpress_sp810_timerclken[i] = clk_register_mux(NULL, name, 40 - parents, 2, 0, base + SCCTRL, 41 - SCCTRL_TIMERENnSEL_SHIFT(i), 1, 40 + parents, 2, CLK_SET_RATE_NO_REPARENT, 41 + base + SCCTRL, SCCTRL_TIMERENnSEL_SHIFT(i), 1, 42 42 0, &vexpress_sp810_lock); 43 43 44 44 if (WARN_ON(IS_ERR(vexpress_sp810_timerclken[i])))
+50 -36
drivers/clk/zynq/clkc.c
··· 124 124 div0_name = kasprintf(GFP_KERNEL, "%s_div0", clk_name); 125 125 div1_name = kasprintf(GFP_KERNEL, "%s_div1", clk_name); 126 126 127 - clk = clk_register_mux(NULL, mux_name, parents, 4, 0, 128 - fclk_ctrl_reg, 4, 2, 0, fclk_lock); 127 + clk = clk_register_mux(NULL, mux_name, parents, 4, 128 + CLK_SET_RATE_NO_REPARENT, fclk_ctrl_reg, 4, 2, 0, 129 + fclk_lock); 129 130 130 131 clk = clk_register_divider(NULL, div0_name, mux_name, 131 132 0, fclk_ctrl_reg, 8, 6, CLK_DIVIDER_ONE_BASED | ··· 168 167 mux_name = kasprintf(GFP_KERNEL, "%s_mux", clk_name0); 169 168 div_name = kasprintf(GFP_KERNEL, "%s_div", clk_name0); 170 169 171 - clk = clk_register_mux(NULL, mux_name, parents, 4, 0, 172 - clk_ctrl, 4, 2, 0, lock); 170 + clk = clk_register_mux(NULL, mux_name, parents, 4, 171 + CLK_SET_RATE_NO_REPARENT, clk_ctrl, 4, 2, 0, lock); 173 172 174 173 clk = clk_register_divider(NULL, div_name, mux_name, 0, clk_ctrl, 8, 6, 175 174 CLK_DIVIDER_ONE_BASED | CLK_DIVIDER_ALLOW_ZERO, lock); ··· 236 235 clk = clk_register_zynq_pll("armpll_int", "ps_clk", SLCR_ARMPLL_CTRL, 237 236 SLCR_PLL_STATUS, 0, &armpll_lock); 238 237 clks[armpll] = clk_register_mux(NULL, clk_output_name[armpll], 239 - armpll_parents, 2, 0, SLCR_ARMPLL_CTRL, 4, 1, 0, 240 - &armpll_lock); 238 + armpll_parents, 2, CLK_SET_RATE_NO_REPARENT, 239 + SLCR_ARMPLL_CTRL, 4, 1, 0, &armpll_lock); 241 240 242 241 clk = clk_register_zynq_pll("ddrpll_int", "ps_clk", SLCR_DDRPLL_CTRL, 243 242 SLCR_PLL_STATUS, 1, &ddrpll_lock); 244 243 clks[ddrpll] = clk_register_mux(NULL, clk_output_name[ddrpll], 245 - ddrpll_parents, 2, 0, SLCR_DDRPLL_CTRL, 4, 1, 0, 246 - &ddrpll_lock); 244 + ddrpll_parents, 2, CLK_SET_RATE_NO_REPARENT, 245 + SLCR_DDRPLL_CTRL, 4, 1, 0, &ddrpll_lock); 247 246 248 247 clk = clk_register_zynq_pll("iopll_int", "ps_clk", SLCR_IOPLL_CTRL, 249 248 SLCR_PLL_STATUS, 2, &iopll_lock); 250 249 clks[iopll] = clk_register_mux(NULL, clk_output_name[iopll], 251 - iopll_parents, 2, 0, SLCR_IOPLL_CTRL, 4, 1, 0, 252 - &iopll_lock); 250 + iopll_parents, 2, CLK_SET_RATE_NO_REPARENT, 251 + SLCR_IOPLL_CTRL, 4, 1, 0, &iopll_lock); 253 252 254 253 /* CPU clocks */ 255 254 tmp = readl(SLCR_621_TRUE) & 1; 256 - clk = clk_register_mux(NULL, "cpu_mux", cpu_parents, 4, 0, 257 - SLCR_ARM_CLK_CTRL, 4, 2, 0, &armclk_lock); 255 + clk = clk_register_mux(NULL, "cpu_mux", cpu_parents, 4, 256 + CLK_SET_RATE_NO_REPARENT, SLCR_ARM_CLK_CTRL, 4, 2, 0, 257 + &armclk_lock); 258 258 clk = clk_register_divider(NULL, "cpu_div", "cpu_mux", 0, 259 259 SLCR_ARM_CLK_CTRL, 8, 6, CLK_DIVIDER_ONE_BASED | 260 260 CLK_DIVIDER_ALLOW_ZERO, &armclk_lock); ··· 294 292 swdt_ext_clk_mux_parents[i + 1] = dummy_nm; 295 293 } 296 294 clks[swdt] = clk_register_mux(NULL, clk_output_name[swdt], 297 - swdt_ext_clk_mux_parents, 2, CLK_SET_RATE_PARENT, 298 - SLCR_SWDT_CLK_SEL, 0, 1, 0, &gem0clk_lock); 295 + swdt_ext_clk_mux_parents, 2, CLK_SET_RATE_PARENT | 296 + CLK_SET_RATE_NO_REPARENT, SLCR_SWDT_CLK_SEL, 0, 1, 0, 297 + &gem0clk_lock); 299 298 300 299 /* DDR clocks */ 301 300 clk = clk_register_divider(NULL, "ddr2x_div", "ddrpll", 0, ··· 358 355 gem0_mux_parents[i + 1] = of_clk_get_parent_name(np, 359 356 idx); 360 357 } 361 - clk = clk_register_mux(NULL, "gem0_mux", periph_parents, 4, 0, 362 - SLCR_GEM0_CLK_CTRL, 4, 2, 0, &gem0clk_lock); 358 + clk = clk_register_mux(NULL, "gem0_mux", periph_parents, 4, 359 + CLK_SET_RATE_NO_REPARENT, SLCR_GEM0_CLK_CTRL, 4, 2, 0, 360 + &gem0clk_lock); 363 361 clk = clk_register_divider(NULL, "gem0_div0", "gem0_mux", 0, 364 362 SLCR_GEM0_CLK_CTRL, 8, 6, CLK_DIVIDER_ONE_BASED | 365 363 CLK_DIVIDER_ALLOW_ZERO, &gem0clk_lock); ··· 368 364 CLK_SET_RATE_PARENT, SLCR_GEM0_CLK_CTRL, 20, 6, 369 365 CLK_DIVIDER_ONE_BASED | CLK_DIVIDER_ALLOW_ZERO, 370 366 &gem0clk_lock); 371 - clk = clk_register_mux(NULL, "gem0_emio_mux", gem0_mux_parents, 2, 0, 372 - SLCR_GEM0_CLK_CTRL, 6, 1, 0, &gem0clk_lock); 367 + clk = clk_register_mux(NULL, "gem0_emio_mux", gem0_mux_parents, 2, 368 + CLK_SET_RATE_NO_REPARENT, SLCR_GEM0_CLK_CTRL, 6, 1, 0, 369 + &gem0clk_lock); 373 370 clks[gem0] = clk_register_gate(NULL, clk_output_name[gem0], 374 371 "gem0_emio_mux", CLK_SET_RATE_PARENT, 375 372 SLCR_GEM0_CLK_CTRL, 0, 0, &gem0clk_lock); ··· 382 377 gem1_mux_parents[i + 1] = of_clk_get_parent_name(np, 383 378 idx); 384 379 } 385 - clk = clk_register_mux(NULL, "gem1_mux", periph_parents, 4, 0, 386 - SLCR_GEM1_CLK_CTRL, 4, 2, 0, &gem1clk_lock); 380 + clk = clk_register_mux(NULL, "gem1_mux", periph_parents, 4, 381 + CLK_SET_RATE_NO_REPARENT, SLCR_GEM1_CLK_CTRL, 4, 2, 0, 382 + &gem1clk_lock); 387 383 clk = clk_register_divider(NULL, "gem1_div0", "gem1_mux", 0, 388 384 SLCR_GEM1_CLK_CTRL, 8, 6, CLK_DIVIDER_ONE_BASED | 389 385 CLK_DIVIDER_ALLOW_ZERO, &gem1clk_lock); ··· 392 386 CLK_SET_RATE_PARENT, SLCR_GEM1_CLK_CTRL, 20, 6, 393 387 CLK_DIVIDER_ONE_BASED | CLK_DIVIDER_ALLOW_ZERO, 394 388 &gem1clk_lock); 395 - clk = clk_register_mux(NULL, "gem1_emio_mux", gem1_mux_parents, 2, 0, 396 - SLCR_GEM1_CLK_CTRL, 6, 1, 0, &gem1clk_lock); 389 + clk = clk_register_mux(NULL, "gem1_emio_mux", gem1_mux_parents, 2, 390 + CLK_SET_RATE_NO_REPARENT, SLCR_GEM1_CLK_CTRL, 6, 1, 0, 391 + &gem1clk_lock); 397 392 clks[gem1] = clk_register_gate(NULL, clk_output_name[gem1], 398 393 "gem1_emio_mux", CLK_SET_RATE_PARENT, 399 394 SLCR_GEM1_CLK_CTRL, 0, 0, &gem1clk_lock); ··· 413 406 can_mio_mux_parents[i] = dummy_nm; 414 407 } 415 408 kfree(clk_name); 416 - clk = clk_register_mux(NULL, "can_mux", periph_parents, 4, 0, 417 - SLCR_CAN_CLK_CTRL, 4, 2, 0, &canclk_lock); 409 + clk = clk_register_mux(NULL, "can_mux", periph_parents, 4, 410 + CLK_SET_RATE_NO_REPARENT, SLCR_CAN_CLK_CTRL, 4, 2, 0, 411 + &canclk_lock); 418 412 clk = clk_register_divider(NULL, "can_div0", "can_mux", 0, 419 413 SLCR_CAN_CLK_CTRL, 8, 6, CLK_DIVIDER_ONE_BASED | 420 414 CLK_DIVIDER_ALLOW_ZERO, &canclk_lock); ··· 430 422 CLK_SET_RATE_PARENT, SLCR_CAN_CLK_CTRL, 1, 0, 431 423 &canclk_lock); 432 424 clk = clk_register_mux(NULL, "can0_mio_mux", 433 - can_mio_mux_parents, 54, CLK_SET_RATE_PARENT, 434 - SLCR_CAN_MIOCLK_CTRL, 0, 6, 0, &canmioclk_lock); 425 + can_mio_mux_parents, 54, CLK_SET_RATE_PARENT | 426 + CLK_SET_RATE_NO_REPARENT, SLCR_CAN_MIOCLK_CTRL, 0, 6, 0, 427 + &canmioclk_lock); 435 428 clk = clk_register_mux(NULL, "can1_mio_mux", 436 - can_mio_mux_parents, 54, CLK_SET_RATE_PARENT, 437 - SLCR_CAN_MIOCLK_CTRL, 16, 6, 0, &canmioclk_lock); 429 + can_mio_mux_parents, 54, CLK_SET_RATE_PARENT | 430 + CLK_SET_RATE_NO_REPARENT, SLCR_CAN_MIOCLK_CTRL, 16, 6, 431 + 0, &canmioclk_lock); 438 432 clks[can0] = clk_register_mux(NULL, clk_output_name[can0], 439 - can0_mio_mux2_parents, 2, CLK_SET_RATE_PARENT, 440 - SLCR_CAN_MIOCLK_CTRL, 6, 1, 0, &canmioclk_lock); 433 + can0_mio_mux2_parents, 2, CLK_SET_RATE_PARENT | 434 + CLK_SET_RATE_NO_REPARENT, SLCR_CAN_MIOCLK_CTRL, 6, 1, 0, 435 + &canmioclk_lock); 441 436 clks[can1] = clk_register_mux(NULL, clk_output_name[can1], 442 - can1_mio_mux2_parents, 2, CLK_SET_RATE_PARENT, 443 - SLCR_CAN_MIOCLK_CTRL, 22, 1, 0, &canmioclk_lock); 437 + can1_mio_mux2_parents, 2, CLK_SET_RATE_PARENT | 438 + CLK_SET_RATE_NO_REPARENT, SLCR_CAN_MIOCLK_CTRL, 22, 1, 439 + 0, &canmioclk_lock); 444 440 445 441 for (i = 0; i < ARRAY_SIZE(dbgtrc_emio_input_names); i++) { 446 442 int idx = of_property_match_string(np, "clock-names", ··· 453 441 dbg_emio_mux_parents[i + 1] = of_clk_get_parent_name(np, 454 442 idx); 455 443 } 456 - clk = clk_register_mux(NULL, "dbg_mux", periph_parents, 4, 0, 457 - SLCR_DBG_CLK_CTRL, 4, 2, 0, &dbgclk_lock); 444 + clk = clk_register_mux(NULL, "dbg_mux", periph_parents, 4, 445 + CLK_SET_RATE_NO_REPARENT, SLCR_DBG_CLK_CTRL, 4, 2, 0, 446 + &dbgclk_lock); 458 447 clk = clk_register_divider(NULL, "dbg_div", "dbg_mux", 0, 459 448 SLCR_DBG_CLK_CTRL, 8, 6, CLK_DIVIDER_ONE_BASED | 460 449 CLK_DIVIDER_ALLOW_ZERO, &dbgclk_lock); 461 - clk = clk_register_mux(NULL, "dbg_emio_mux", dbg_emio_mux_parents, 2, 0, 462 - SLCR_DBG_CLK_CTRL, 6, 1, 0, &dbgclk_lock); 450 + clk = clk_register_mux(NULL, "dbg_emio_mux", dbg_emio_mux_parents, 2, 451 + CLK_SET_RATE_NO_REPARENT, SLCR_DBG_CLK_CTRL, 6, 1, 0, 452 + &dbgclk_lock); 463 453 clks[dbg_trc] = clk_register_gate(NULL, clk_output_name[dbg_trc], 464 454 "dbg_emio_mux", CLK_SET_RATE_PARENT, SLCR_DBG_CLK_CTRL, 465 455 0, 0, &dbgclk_lock);
+1
include/linux/clk-provider.h
··· 27 27 #define CLK_IS_ROOT BIT(4) /* root clk, has no parent */ 28 28 #define CLK_IS_BASIC BIT(5) /* Basic clk, can't do a to_clk_foo() */ 29 29 #define CLK_GET_RATE_NOCACHE BIT(6) /* do not use the cached clk rate */ 30 + #define CLK_SET_RATE_NO_REPARENT BIT(7) /* don't re-parent on rate change */ 30 31 31 32 struct clk_hw; 32 33