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

CLK: SPEAr: Set CLK_SET_RATE_PARENT for few clocks

Flag CLK_SET_RATE_PARENT is required for a clock, where we want to
propagate clk_set_rate to its parent. This patch adds this to multiple clocks.

Signed-off-by: Vipul Kumar Samar <vipulkumar.samar@st.com>
Signed-off-by: Shiraz Hashim <shiraz.hashim@st.com>
Signed-off-by: Rajeev Kumar <rajeev-dlh.kumar@st.com>
Signed-off-by: Vijay Kumar Mishra <vijay.kumar@st.com>
Signed-off-by: Vijay Kumar Mishra <vijay.kumar@st.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Mike Turquette <mturquette@linaro.org>

authored by

Vipul Kumar Samar and committed by
Mike Turquette
12499792 463f9e20

+133 -114
+2 -1
drivers/clk/spear/clk-aux-synth.c
··· 179 179 if (gate_name) { 180 180 struct clk *tgate_clk; 181 181 182 - tgate_clk = clk_register_gate(NULL, gate_name, aux_name, 0, reg, 182 + tgate_clk = clk_register_gate(NULL, gate_name, aux_name, 183 + CLK_SET_RATE_PARENT, reg, 183 184 aux->masks->enable_bit, 0, lock); 184 185 if (IS_ERR_OR_NULL(tgate_clk)) 185 186 goto free_aux;
+25 -24
drivers/clk/spear/spear1310_clock.c
··· 483 483 clk_register_clkdev(clk, "ddr_clk", NULL); 484 484 485 485 /* clock derived from pll1 clk */ 486 - clk = clk_register_fixed_factor(NULL, "cpu_clk", "pll1_clk", 0, 1, 2); 486 + clk = clk_register_fixed_factor(NULL, "cpu_clk", "pll1_clk", 487 + CLK_SET_RATE_PARENT, 1, 2); 487 488 clk_register_clkdev(clk, "cpu_clk", NULL); 488 489 489 490 clk = clk_register_fixed_factor(NULL, "wdt_clk", "cpu_clk", 0, 1, ··· 548 547 clk_register_clkdev(clk1, "uart_syn_gclk", NULL); 549 548 550 549 clk = clk_register_mux(NULL, "uart0_mclk", uart0_parents, 551 - ARRAY_SIZE(uart0_parents), 0, SPEAR1310_PERIP_CLK_CFG, 552 - SPEAR1310_UART_CLK_SHIFT, SPEAR1310_UART_CLK_MASK, 0, 553 - &_lock); 550 + ARRAY_SIZE(uart0_parents), CLK_SET_RATE_PARENT, 551 + SPEAR1310_PERIP_CLK_CFG, SPEAR1310_UART_CLK_SHIFT, 552 + SPEAR1310_UART_CLK_MASK, 0, &_lock); 554 553 clk_register_clkdev(clk, "uart0_mclk", NULL); 555 554 556 - clk = clk_register_gate(NULL, "uart0_clk", "uart0_mclk", 0, 557 - SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_UART_CLK_ENB, 0, 558 - &_lock); 555 + clk = clk_register_gate(NULL, "uart0_clk", "uart0_mclk", 556 + CLK_SET_RATE_PARENT, SPEAR1310_PERIP1_CLK_ENB, 557 + SPEAR1310_UART_CLK_ENB, 0, &_lock); 559 558 clk_register_clkdev(clk, NULL, "e0000000.serial"); 560 559 561 560 clk = clk_register_aux("sdhci_syn_clk", "sdhci_syn_gclk", ··· 564 563 clk_register_clkdev(clk, "sdhci_syn_clk", NULL); 565 564 clk_register_clkdev(clk1, "sdhci_syn_gclk", NULL); 566 565 567 - clk = clk_register_gate(NULL, "sdhci_clk", "sdhci_syn_gclk", 0, 568 - SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_SDHCI_CLK_ENB, 0, 569 - &_lock); 566 + clk = clk_register_gate(NULL, "sdhci_clk", "sdhci_syn_gclk", 567 + CLK_SET_RATE_PARENT, SPEAR1310_PERIP1_CLK_ENB, 568 + SPEAR1310_SDHCI_CLK_ENB, 0, &_lock); 570 569 clk_register_clkdev(clk, NULL, "b3000000.sdhci"); 571 570 572 571 clk = clk_register_aux("cfxd_syn_clk", "cfxd_syn_gclk", "vco1div2_clk", ··· 575 574 clk_register_clkdev(clk, "cfxd_syn_clk", NULL); 576 575 clk_register_clkdev(clk1, "cfxd_syn_gclk", NULL); 577 576 578 - clk = clk_register_gate(NULL, "cfxd_clk", "cfxd_syn_gclk", 0, 579 - SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_CFXD_CLK_ENB, 0, 580 - &_lock); 577 + clk = clk_register_gate(NULL, "cfxd_clk", "cfxd_syn_gclk", 578 + CLK_SET_RATE_PARENT, SPEAR1310_PERIP1_CLK_ENB, 579 + SPEAR1310_CFXD_CLK_ENB, 0, &_lock); 581 580 clk_register_clkdev(clk, NULL, "b2800000.cf"); 582 581 clk_register_clkdev(clk, NULL, "arasan_xd"); 583 582 ··· 588 587 clk_register_clkdev(clk1, "c3_syn_gclk", NULL); 589 588 590 589 clk = clk_register_mux(NULL, "c3_mclk", c3_parents, 591 - ARRAY_SIZE(c3_parents), 0, SPEAR1310_PERIP_CLK_CFG, 592 - SPEAR1310_C3_CLK_SHIFT, SPEAR1310_C3_CLK_MASK, 0, 593 - &_lock); 590 + ARRAY_SIZE(c3_parents), CLK_SET_RATE_PARENT, 591 + SPEAR1310_PERIP_CLK_CFG, SPEAR1310_C3_CLK_SHIFT, 592 + SPEAR1310_C3_CLK_MASK, 0, &_lock); 594 593 clk_register_clkdev(clk, "c3_mclk", NULL); 595 594 596 595 clk = clk_register_gate(NULL, "c3_clk", "c3_mclk", 0, ··· 631 630 clk_register_clkdev(clk, "clcd_syn_clk", NULL); 632 631 633 632 clk = clk_register_mux(NULL, "clcd_pixel_mclk", clcd_pixel_parents, 634 - ARRAY_SIZE(clcd_pixel_parents), 0, 633 + ARRAY_SIZE(clcd_pixel_parents), CLK_SET_RATE_PARENT, 635 634 SPEAR1310_PERIP_CLK_CFG, SPEAR1310_CLCD_CLK_SHIFT, 636 635 SPEAR1310_CLCD_CLK_MASK, 0, &_lock); 637 636 clk_register_clkdev(clk, "clcd_pixel_mclk", NULL); ··· 654 653 clk_register_clkdev(clk, "i2s_prs1_clk", NULL); 655 654 656 655 clk = clk_register_mux(NULL, "i2s_ref_mclk", i2s_ref_parents, 657 - ARRAY_SIZE(i2s_ref_parents), 0, SPEAR1310_I2S_CLK_CFG, 658 - SPEAR1310_I2S_REF_SHIFT, SPEAR1310_I2S_REF_SEL_MASK, 0, 659 - &_lock); 660 - clk_register_clkdev(clk, "i2s_ref_clk", NULL); 656 + ARRAY_SIZE(i2s_ref_parents), CLK_SET_RATE_PARENT, 657 + SPEAR1310_I2S_CLK_CFG, SPEAR1310_I2S_REF_SHIFT, 658 + SPEAR1310_I2S_REF_SEL_MASK, 0, &_lock); 659 + clk_register_clkdev(clk, "i2s_ref_mclk", NULL); 661 660 662 661 clk = clk_register_gate(NULL, "i2s_ref_pad_clk", "i2s_ref_mclk", 0, 663 662 SPEAR1310_PERIP2_CLK_ENB, SPEAR1310_I2S_REF_PAD_CLK_ENB, ··· 754 753 clk_register_clkdev(clk, "adc_syn_clk", NULL); 755 754 clk_register_clkdev(clk1, "adc_syn_gclk", NULL); 756 755 757 - clk = clk_register_gate(NULL, "adc_clk", "adc_syn_gclk", 0, 758 - SPEAR1310_PERIP1_CLK_ENB, SPEAR1310_ADC_CLK_ENB, 0, 759 - &_lock); 756 + clk = clk_register_gate(NULL, "adc_clk", "adc_syn_gclk", 757 + CLK_SET_RATE_PARENT, SPEAR1310_PERIP1_CLK_ENB, 758 + SPEAR1310_ADC_CLK_ENB, 0, &_lock); 760 759 clk_register_clkdev(clk, NULL, "e0080000.adc"); 761 760 762 761 /* clock derived from apb clk */
+37 -36
drivers/clk/spear/spear1340_clock.c
··· 594 594 clk_register_clkdev(clk1, "uart0_syn_gclk", NULL); 595 595 596 596 clk = clk_register_mux(NULL, "uart0_mclk", uart0_parents, 597 - ARRAY_SIZE(uart0_parents), 0, SPEAR1340_PERIP_CLK_CFG, 598 - SPEAR1340_UART0_CLK_SHIFT, SPEAR1340_UART_CLK_MASK, 0, 599 - &_lock); 597 + ARRAY_SIZE(uart0_parents), CLK_SET_RATE_PARENT, 598 + SPEAR1340_PERIP_CLK_CFG, SPEAR1340_UART0_CLK_SHIFT, 599 + SPEAR1340_UART_CLK_MASK, 0, &_lock); 600 600 clk_register_clkdev(clk, "uart0_mclk", NULL); 601 601 602 - clk = clk_register_gate(NULL, "uart0_clk", "uart0_mclk", 0, 603 - SPEAR1340_PERIP1_CLK_ENB, SPEAR1340_UART0_CLK_ENB, 0, 604 - &_lock); 602 + clk = clk_register_gate(NULL, "uart0_clk", "uart0_mclk", 603 + CLK_SET_RATE_PARENT, SPEAR1340_PERIP1_CLK_ENB, 604 + SPEAR1340_UART0_CLK_ENB, 0, &_lock); 605 605 clk_register_clkdev(clk, NULL, "e0000000.serial"); 606 606 607 607 clk = clk_register_aux("uart1_syn_clk", "uart1_syn_gclk", ··· 627 627 clk_register_clkdev(clk, "sdhci_syn_clk", NULL); 628 628 clk_register_clkdev(clk1, "sdhci_syn_gclk", NULL); 629 629 630 - clk = clk_register_gate(NULL, "sdhci_clk", "sdhci_syn_gclk", 0, 631 - SPEAR1340_PERIP1_CLK_ENB, SPEAR1340_SDHCI_CLK_ENB, 0, 632 - &_lock); 630 + clk = clk_register_gate(NULL, "sdhci_clk", "sdhci_syn_gclk", 631 + CLK_SET_RATE_PARENT, SPEAR1340_PERIP1_CLK_ENB, 632 + SPEAR1340_SDHCI_CLK_ENB, 0, &_lock); 633 633 clk_register_clkdev(clk, NULL, "b3000000.sdhci"); 634 634 635 635 clk = clk_register_aux("cfxd_syn_clk", "cfxd_syn_gclk", "vco1div2_clk", ··· 638 638 clk_register_clkdev(clk, "cfxd_syn_clk", NULL); 639 639 clk_register_clkdev(clk1, "cfxd_syn_gclk", NULL); 640 640 641 - clk = clk_register_gate(NULL, "cfxd_clk", "cfxd_syn_gclk", 0, 642 - SPEAR1340_PERIP1_CLK_ENB, SPEAR1340_CFXD_CLK_ENB, 0, 643 - &_lock); 641 + clk = clk_register_gate(NULL, "cfxd_clk", "cfxd_syn_gclk", 642 + CLK_SET_RATE_PARENT, SPEAR1340_PERIP1_CLK_ENB, 643 + SPEAR1340_CFXD_CLK_ENB, 0, &_lock); 644 644 clk_register_clkdev(clk, NULL, "b2800000.cf"); 645 645 clk_register_clkdev(clk, NULL, "arasan_xd"); 646 646 ··· 651 651 clk_register_clkdev(clk1, "c3_syn_gclk", NULL); 652 652 653 653 clk = clk_register_mux(NULL, "c3_mclk", c3_parents, 654 - ARRAY_SIZE(c3_parents), 0, SPEAR1340_PERIP_CLK_CFG, 655 - SPEAR1340_C3_CLK_SHIFT, SPEAR1340_C3_CLK_MASK, 0, 656 - &_lock); 654 + ARRAY_SIZE(c3_parents), CLK_SET_RATE_PARENT, 655 + SPEAR1340_PERIP_CLK_CFG, SPEAR1340_C3_CLK_SHIFT, 656 + SPEAR1340_C3_CLK_MASK, 0, &_lock); 657 657 clk_register_clkdev(clk, "c3_mclk", NULL); 658 658 659 - clk = clk_register_gate(NULL, "c3_clk", "c3_mclk", 0, 659 + clk = clk_register_gate(NULL, "c3_clk", "c3_mclk", CLK_SET_RATE_PARENT, 660 660 SPEAR1340_PERIP1_CLK_ENB, SPEAR1340_C3_CLK_ENB, 0, 661 661 &_lock); 662 662 clk_register_clkdev(clk, NULL, "e1800000.c3"); ··· 694 694 clk_register_clkdev(clk, "clcd_syn_clk", NULL); 695 695 696 696 clk = clk_register_mux(NULL, "clcd_pixel_mclk", clcd_pixel_parents, 697 - ARRAY_SIZE(clcd_pixel_parents), 0, 697 + ARRAY_SIZE(clcd_pixel_parents), CLK_SET_RATE_PARENT, 698 698 SPEAR1340_PERIP_CLK_CFG, SPEAR1340_CLCD_CLK_SHIFT, 699 699 SPEAR1340_CLCD_CLK_MASK, 0, &_lock); 700 700 clk_register_clkdev(clk, "clcd_pixel_mclk", NULL); ··· 711 711 0, &_lock); 712 712 clk_register_clkdev(clk, "i2s_src_mclk", NULL); 713 713 714 - clk = clk_register_aux("i2s_prs1_clk", NULL, "i2s_src_mclk", 0, 715 - SPEAR1340_I2S_CLK_CFG, &i2s_prs1_masks, i2s_prs1_rtbl, 714 + clk = clk_register_aux("i2s_prs1_clk", NULL, "i2s_src_mclk", 715 + CLK_SET_RATE_PARENT, SPEAR1340_I2S_CLK_CFG, 716 + &i2s_prs1_masks, i2s_prs1_rtbl, 716 717 ARRAY_SIZE(i2s_prs1_rtbl), &_lock, NULL); 717 718 clk_register_clkdev(clk, "i2s_prs1_clk", NULL); 718 719 719 720 clk = clk_register_mux(NULL, "i2s_ref_mclk", i2s_ref_parents, 720 - ARRAY_SIZE(i2s_ref_parents), 0, SPEAR1340_I2S_CLK_CFG, 721 - SPEAR1340_I2S_REF_SHIFT, SPEAR1340_I2S_REF_SEL_MASK, 0, 722 - &_lock); 721 + ARRAY_SIZE(i2s_ref_parents), CLK_SET_RATE_PARENT, 722 + SPEAR1340_I2S_CLK_CFG, SPEAR1340_I2S_REF_SHIFT, 723 + SPEAR1340_I2S_REF_SEL_MASK, 0, &_lock); 723 724 clk_register_clkdev(clk, "i2s_ref_mclk", NULL); 724 725 725 726 clk = clk_register_gate(NULL, "i2s_ref_pad_clk", "i2s_ref_mclk", 0, ··· 806 805 clk_register_clkdev(clk, "adc_syn_clk", NULL); 807 806 clk_register_clkdev(clk1, "adc_syn_gclk", NULL); 808 807 809 - clk = clk_register_gate(NULL, "adc_clk", "adc_syn_gclk", 0, 810 - SPEAR1340_PERIP1_CLK_ENB, SPEAR1340_ADC_CLK_ENB, 0, 811 - &_lock); 808 + clk = clk_register_gate(NULL, "adc_clk", "adc_syn_gclk", 809 + CLK_SET_RATE_PARENT, SPEAR1340_PERIP1_CLK_ENB, 810 + SPEAR1340_ADC_CLK_ENB, 0, &_lock); 812 811 clk_register_clkdev(clk, NULL, "e0080000.adc"); 813 812 814 813 /* clock derived from apb clk */ ··· 875 874 &_lock); 876 875 clk_register_clkdev(clk, "gen_syn3_clk", NULL); 877 876 878 - clk = clk_register_gate(NULL, "mali_clk", "gen_syn3_clk", 0, 879 - SPEAR1340_PERIP3_CLK_ENB, SPEAR1340_MALI_CLK_ENB, 0, 880 - &_lock); 877 + clk = clk_register_gate(NULL, "mali_clk", "gen_syn3_clk", 878 + CLK_SET_RATE_PARENT, SPEAR1340_PERIP3_CLK_ENB, 879 + SPEAR1340_MALI_CLK_ENB, 0, &_lock); 881 880 clk_register_clkdev(clk, NULL, "mali"); 882 881 883 882 clk = clk_register_gate(NULL, "cec0_clk", "ahb_clk", 0, ··· 891 890 clk_register_clkdev(clk, NULL, "spear_cec.1"); 892 891 893 892 clk = clk_register_mux(NULL, "spdif_out_mclk", spdif_out_parents, 894 - ARRAY_SIZE(spdif_out_parents), 0, 893 + ARRAY_SIZE(spdif_out_parents), CLK_SET_RATE_PARENT, 895 894 SPEAR1340_PERIP_CLK_CFG, SPEAR1340_SPDIF_OUT_CLK_SHIFT, 896 895 SPEAR1340_SPDIF_CLK_MASK, 0, &_lock); 897 896 clk_register_clkdev(clk, "spdif_out_mclk", NULL); 898 897 899 - clk = clk_register_gate(NULL, "spdif_out_clk", "spdif_out_mclk", 0, 900 - SPEAR1340_PERIP3_CLK_ENB, SPEAR1340_SPDIF_OUT_CLK_ENB, 901 - 0, &_lock); 898 + clk = clk_register_gate(NULL, "spdif_out_clk", "spdif_out_mclk", 899 + CLK_SET_RATE_PARENT, SPEAR1340_PERIP3_CLK_ENB, 900 + SPEAR1340_SPDIF_OUT_CLK_ENB, 0, &_lock); 902 901 clk_register_clkdev(clk, NULL, "d0000000.spdif-out"); 903 902 904 903 clk = clk_register_mux(NULL, "spdif_in_mclk", spdif_in_parents, 905 - ARRAY_SIZE(spdif_in_parents), 0, 904 + ARRAY_SIZE(spdif_in_parents), CLK_SET_RATE_PARENT, 906 905 SPEAR1340_PERIP_CLK_CFG, SPEAR1340_SPDIF_IN_CLK_SHIFT, 907 906 SPEAR1340_SPDIF_CLK_MASK, 0, &_lock); 908 907 clk_register_clkdev(clk, "spdif_in_mclk", NULL); 909 908 910 - clk = clk_register_gate(NULL, "spdif_in_clk", "spdif_in_mclk", 0, 911 - SPEAR1340_PERIP3_CLK_ENB, SPEAR1340_SPDIF_IN_CLK_ENB, 0, 912 - &_lock); 909 + clk = clk_register_gate(NULL, "spdif_in_clk", "spdif_in_mclk", 910 + CLK_SET_RATE_PARENT, SPEAR1340_PERIP3_CLK_ENB, 911 + SPEAR1340_SPDIF_IN_CLK_ENB, 0, &_lock); 913 912 clk_register_clkdev(clk, NULL, "d0100000.spdif-in"); 914 913 915 914 clk = clk_register_gate(NULL, "acp_clk", "acp_mclk", 0,
+67 -52
drivers/clk/spear/spear3xx_clock.c
··· 278 278 clk_register_clkdev(clk, NULL, "a9400000.i2s"); 279 279 280 280 clk = clk_register_mux(NULL, "i2s_ref_clk", i2s_ref_parents, 281 - ARRAY_SIZE(i2s_ref_parents), 0, SPEAR320_CONTROL_REG, 282 - I2S_REF_PCLK_SHIFT, I2S_REF_PCLK_MASK, 0, &_lock); 281 + ARRAY_SIZE(i2s_ref_parents), CLK_SET_RATE_PARENT, 282 + SPEAR320_CONTROL_REG, I2S_REF_PCLK_SHIFT, 283 + I2S_REF_PCLK_MASK, 0, &_lock); 283 284 clk_register_clkdev(clk, "i2s_ref_clk", NULL); 284 285 285 - clk = clk_register_fixed_factor(NULL, "i2s_sclk", "i2s_ref_clk", 0, 1, 286 + clk = clk_register_fixed_factor(NULL, "i2s_sclk", "i2s_ref_clk", 287 + CLK_SET_RATE_PARENT, 1, 286 288 4); 287 289 clk_register_clkdev(clk, "i2s_sclk", NULL); 288 290 289 291 clk = clk_register_mux(NULL, "rs485_clk", uartx_parents, 290 - ARRAY_SIZE(uartx_parents), 0, SPEAR320_EXT_CTRL_REG, 291 - SPEAR320_RS485_PCLK_SHIFT, SPEAR320_UARTX_PCLK_MASK, 0, 292 - &_lock); 292 + ARRAY_SIZE(uartx_parents), CLK_SET_RATE_PARENT, 293 + SPEAR320_EXT_CTRL_REG, SPEAR320_RS485_PCLK_SHIFT, 294 + SPEAR320_UARTX_PCLK_MASK, 0, &_lock); 293 295 clk_register_clkdev(clk, NULL, "a9300000.serial"); 294 296 295 297 clk = clk_register_mux(NULL, "sdhci_clk", sdhci_parents, 296 - ARRAY_SIZE(sdhci_parents), 0, SPEAR320_CONTROL_REG, 297 - SDHCI_PCLK_SHIFT, SDHCI_PCLK_MASK, 0, &_lock); 298 + ARRAY_SIZE(sdhci_parents), CLK_SET_RATE_PARENT, 299 + SPEAR320_CONTROL_REG, SDHCI_PCLK_SHIFT, SDHCI_PCLK_MASK, 300 + 0, &_lock); 298 301 clk_register_clkdev(clk, NULL, "70000000.sdhci"); 299 302 300 303 clk = clk_register_mux(NULL, "smii_pclk", smii0_parents, ··· 309 306 clk_register_clkdev(clk, NULL, "smii"); 310 307 311 308 clk = clk_register_mux(NULL, "uart1_clk", uartx_parents, 312 - ARRAY_SIZE(uartx_parents), 0, SPEAR320_CONTROL_REG, 313 - UART1_PCLK_SHIFT, UART1_PCLK_MASK, 0, &_lock); 309 + ARRAY_SIZE(uartx_parents), CLK_SET_RATE_PARENT, 310 + SPEAR320_CONTROL_REG, UART1_PCLK_SHIFT, UART1_PCLK_MASK, 311 + 0, &_lock); 314 312 clk_register_clkdev(clk, NULL, "a3000000.serial"); 315 313 316 314 clk = clk_register_mux(NULL, "uart2_clk", uartx_parents, 317 - ARRAY_SIZE(uartx_parents), 0, SPEAR320_EXT_CTRL_REG, 318 - SPEAR320_UART2_PCLK_SHIFT, SPEAR320_UARTX_PCLK_MASK, 0, 319 - &_lock); 315 + ARRAY_SIZE(uartx_parents), CLK_SET_RATE_PARENT, 316 + SPEAR320_EXT_CTRL_REG, SPEAR320_UART2_PCLK_SHIFT, 317 + SPEAR320_UARTX_PCLK_MASK, 0, &_lock); 320 318 clk_register_clkdev(clk, NULL, "a4000000.serial"); 321 319 322 320 clk = clk_register_mux(NULL, "uart3_clk", uartx_parents, 323 - ARRAY_SIZE(uartx_parents), 0, SPEAR320_EXT_CTRL_REG, 324 - SPEAR320_UART3_PCLK_SHIFT, SPEAR320_UARTX_PCLK_MASK, 0, 325 - &_lock); 321 + ARRAY_SIZE(uartx_parents), CLK_SET_RATE_PARENT, 322 + SPEAR320_EXT_CTRL_REG, SPEAR320_UART3_PCLK_SHIFT, 323 + SPEAR320_UARTX_PCLK_MASK, 0, &_lock); 326 324 clk_register_clkdev(clk, NULL, "a9100000.serial"); 327 325 328 326 clk = clk_register_mux(NULL, "uart4_clk", uartx_parents, 329 - ARRAY_SIZE(uartx_parents), 0, SPEAR320_EXT_CTRL_REG, 330 - SPEAR320_UART4_PCLK_SHIFT, SPEAR320_UARTX_PCLK_MASK, 0, 331 - &_lock); 327 + ARRAY_SIZE(uartx_parents), CLK_SET_RATE_PARENT, 328 + SPEAR320_EXT_CTRL_REG, SPEAR320_UART4_PCLK_SHIFT, 329 + SPEAR320_UARTX_PCLK_MASK, 0, &_lock); 332 330 clk_register_clkdev(clk, NULL, "a9200000.serial"); 333 331 334 332 clk = clk_register_mux(NULL, "uart5_clk", uartx_parents, 335 - ARRAY_SIZE(uartx_parents), 0, SPEAR320_EXT_CTRL_REG, 336 - SPEAR320_UART5_PCLK_SHIFT, SPEAR320_UARTX_PCLK_MASK, 0, 337 - &_lock); 333 + ARRAY_SIZE(uartx_parents), CLK_SET_RATE_PARENT, 334 + SPEAR320_EXT_CTRL_REG, SPEAR320_UART5_PCLK_SHIFT, 335 + SPEAR320_UARTX_PCLK_MASK, 0, &_lock); 338 336 clk_register_clkdev(clk, NULL, "60000000.serial"); 339 337 340 338 clk = clk_register_mux(NULL, "uart6_clk", uartx_parents, 341 - ARRAY_SIZE(uartx_parents), 0, SPEAR320_EXT_CTRL_REG, 342 - SPEAR320_UART6_PCLK_SHIFT, SPEAR320_UARTX_PCLK_MASK, 0, 343 - &_lock); 339 + ARRAY_SIZE(uartx_parents), CLK_SET_RATE_PARENT, 340 + SPEAR320_EXT_CTRL_REG, SPEAR320_UART6_PCLK_SHIFT, 341 + SPEAR320_UARTX_PCLK_MASK, 0, &_lock); 344 342 clk_register_clkdev(clk, NULL, "60100000.serial"); 345 343 } 346 344 #else ··· 390 386 clk_register_clkdev(clk1, "pll2_clk", NULL); 391 387 392 388 /* clock derived from pll1 clk */ 393 - clk = clk_register_fixed_factor(NULL, "cpu_clk", "pll1_clk", 0, 1, 1); 389 + clk = clk_register_fixed_factor(NULL, "cpu_clk", "pll1_clk", 390 + CLK_SET_RATE_PARENT, 1, 1); 394 391 clk_register_clkdev(clk, "cpu_clk", NULL); 395 392 396 393 clk = clk_register_divider(NULL, "ahb_clk", "pll1_clk", ··· 406 401 clk_register_clkdev(clk1, "uart_syn_gclk", NULL); 407 402 408 403 clk = clk_register_mux(NULL, "uart0_mclk", uart0_parents, 409 - ARRAY_SIZE(uart0_parents), 0, PERIP_CLK_CFG, 410 - UART_CLK_SHIFT, UART_CLK_MASK, 0, &_lock); 404 + ARRAY_SIZE(uart0_parents), CLK_SET_RATE_PARENT, 405 + PERIP_CLK_CFG, UART_CLK_SHIFT, UART_CLK_MASK, 0, 406 + &_lock); 411 407 clk_register_clkdev(clk, "uart0_mclk", NULL); 412 408 413 - clk = clk_register_gate(NULL, "uart0", "uart0_mclk", 0, PERIP1_CLK_ENB, 414 - UART_CLK_ENB, 0, &_lock); 409 + clk = clk_register_gate(NULL, "uart0", "uart0_mclk", 410 + CLK_SET_RATE_PARENT, PERIP1_CLK_ENB, UART_CLK_ENB, 0, 411 + &_lock); 415 412 clk_register_clkdev(clk, NULL, "d0000000.serial"); 416 413 417 414 clk = clk_register_aux("firda_syn_clk", "firda_syn_gclk", "pll1_clk", 0, ··· 423 416 clk_register_clkdev(clk1, "firda_syn_gclk", NULL); 424 417 425 418 clk = clk_register_mux(NULL, "firda_mclk", firda_parents, 426 - ARRAY_SIZE(firda_parents), 0, PERIP_CLK_CFG, 427 - FIRDA_CLK_SHIFT, FIRDA_CLK_MASK, 0, &_lock); 419 + ARRAY_SIZE(firda_parents), CLK_SET_RATE_PARENT, 420 + PERIP_CLK_CFG, FIRDA_CLK_SHIFT, FIRDA_CLK_MASK, 0, 421 + &_lock); 428 422 clk_register_clkdev(clk, "firda_mclk", NULL); 429 423 430 - clk = clk_register_gate(NULL, "firda_clk", "firda_mclk", 0, 431 - PERIP1_CLK_ENB, FIRDA_CLK_ENB, 0, &_lock); 424 + clk = clk_register_gate(NULL, "firda_clk", "firda_mclk", 425 + CLK_SET_RATE_PARENT, PERIP1_CLK_ENB, FIRDA_CLK_ENB, 0, 426 + &_lock); 432 427 clk_register_clkdev(clk, NULL, "firda"); 433 428 434 429 /* gpt clocks */ 435 430 clk_register_gpt("gpt0_syn_clk", "pll1_clk", 0, PRSC0_CLK_CFG, gpt_rtbl, 436 431 ARRAY_SIZE(gpt_rtbl), &_lock); 437 432 clk = clk_register_mux(NULL, "gpt0_clk", gpt0_parents, 438 - ARRAY_SIZE(gpt0_parents), 0, PERIP_CLK_CFG, 439 - GPT0_CLK_SHIFT, GPT_CLK_MASK, 0, &_lock); 433 + ARRAY_SIZE(gpt0_parents), CLK_SET_RATE_PARENT, 434 + PERIP_CLK_CFG, GPT0_CLK_SHIFT, GPT_CLK_MASK, 0, &_lock); 440 435 clk_register_clkdev(clk, NULL, "gpt0"); 441 436 442 437 clk_register_gpt("gpt1_syn_clk", "pll1_clk", 0, PRSC1_CLK_CFG, gpt_rtbl, 443 438 ARRAY_SIZE(gpt_rtbl), &_lock); 444 439 clk = clk_register_mux(NULL, "gpt1_mclk", gpt1_parents, 445 - ARRAY_SIZE(gpt1_parents), 0, PERIP_CLK_CFG, 446 - GPT1_CLK_SHIFT, GPT_CLK_MASK, 0, &_lock); 440 + ARRAY_SIZE(gpt1_parents), CLK_SET_RATE_PARENT, 441 + PERIP_CLK_CFG, GPT1_CLK_SHIFT, GPT_CLK_MASK, 0, &_lock); 447 442 clk_register_clkdev(clk, "gpt1_mclk", NULL); 448 - clk = clk_register_gate(NULL, "gpt1_clk", "gpt1_mclk", 0, 449 - PERIP1_CLK_ENB, GPT1_CLK_ENB, 0, &_lock); 443 + clk = clk_register_gate(NULL, "gpt1_clk", "gpt1_mclk", 444 + CLK_SET_RATE_PARENT, PERIP1_CLK_ENB, GPT1_CLK_ENB, 0, 445 + &_lock); 450 446 clk_register_clkdev(clk, NULL, "gpt1"); 451 447 452 448 clk_register_gpt("gpt2_syn_clk", "pll1_clk", 0, PRSC2_CLK_CFG, gpt_rtbl, 453 449 ARRAY_SIZE(gpt_rtbl), &_lock); 454 450 clk = clk_register_mux(NULL, "gpt2_mclk", gpt2_parents, 455 - ARRAY_SIZE(gpt2_parents), 0, PERIP_CLK_CFG, 456 - GPT2_CLK_SHIFT, GPT_CLK_MASK, 0, &_lock); 451 + ARRAY_SIZE(gpt2_parents), CLK_SET_RATE_PARENT, 452 + PERIP_CLK_CFG, GPT2_CLK_SHIFT, GPT_CLK_MASK, 0, &_lock); 457 453 clk_register_clkdev(clk, "gpt2_mclk", NULL); 458 - clk = clk_register_gate(NULL, "gpt2_clk", "gpt2_mclk", 0, 459 - PERIP1_CLK_ENB, GPT2_CLK_ENB, 0, &_lock); 454 + clk = clk_register_gate(NULL, "gpt2_clk", "gpt2_mclk", 455 + CLK_SET_RATE_PARENT, PERIP1_CLK_ENB, GPT2_CLK_ENB, 0, 456 + &_lock); 460 457 clk_register_clkdev(clk, NULL, "gpt2"); 461 458 462 459 /* general synths clocks */ ··· 598 587 RAS_CLK_ENB, RAS_48M_CLK_ENB, 0, &_lock); 599 588 clk_register_clkdev(clk, "ras_pll3_clk", NULL); 600 589 601 - clk = clk_register_gate(NULL, "ras_syn0_gclk", "gen0_syn_gclk", 0, 602 - RAS_CLK_ENB, RAS_SYNT0_CLK_ENB, 0, &_lock); 590 + clk = clk_register_gate(NULL, "ras_syn0_gclk", "gen0_syn_gclk", 591 + CLK_SET_RATE_PARENT, RAS_CLK_ENB, RAS_SYNT0_CLK_ENB, 0, 592 + &_lock); 603 593 clk_register_clkdev(clk, "ras_syn0_gclk", NULL); 604 594 605 - clk = clk_register_gate(NULL, "ras_syn1_gclk", "gen1_syn_gclk", 0, 606 - RAS_CLK_ENB, RAS_SYNT1_CLK_ENB, 0, &_lock); 595 + clk = clk_register_gate(NULL, "ras_syn1_gclk", "gen1_syn_gclk", 596 + CLK_SET_RATE_PARENT, RAS_CLK_ENB, RAS_SYNT1_CLK_ENB, 0, 597 + &_lock); 607 598 clk_register_clkdev(clk, "ras_syn1_gclk", NULL); 608 599 609 - clk = clk_register_gate(NULL, "ras_syn2_gclk", "gen2_syn_gclk", 0, 610 - RAS_CLK_ENB, RAS_SYNT2_CLK_ENB, 0, &_lock); 600 + clk = clk_register_gate(NULL, "ras_syn2_gclk", "gen2_syn_gclk", 601 + CLK_SET_RATE_PARENT, RAS_CLK_ENB, RAS_SYNT2_CLK_ENB, 0, 602 + &_lock); 611 603 clk_register_clkdev(clk, "ras_syn2_gclk", NULL); 612 604 613 - clk = clk_register_gate(NULL, "ras_syn3_gclk", "gen3_syn_gclk", 0, 614 - RAS_CLK_ENB, RAS_SYNT3_CLK_ENB, 0, &_lock); 605 + clk = clk_register_gate(NULL, "ras_syn3_gclk", "gen3_syn_gclk", 606 + CLK_SET_RATE_PARENT, RAS_CLK_ENB, RAS_SYNT3_CLK_ENB, 0, 607 + &_lock); 615 608 clk_register_clkdev(clk, "ras_syn3_gclk", NULL); 616 609 617 610 if (of_machine_is_compatible("st,spear300"))
+2 -1
drivers/clk/spear/spear6xx_clock.c
··· 156 156 clk_register_clkdev(clk, NULL, "wdt"); 157 157 158 158 /* clock derived from pll1 clk */ 159 - clk = clk_register_fixed_factor(NULL, "cpu_clk", "pll1_clk", 0, 1, 1); 159 + clk = clk_register_fixed_factor(NULL, "cpu_clk", "pll1_clk", 160 + CLK_SET_RATE_PARENT, 1, 1); 160 161 clk_register_clkdev(clk, "cpu_clk", NULL); 161 162 162 163 clk = clk_register_divider(NULL, "ahb_clk", "pll1_clk",