]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
spi: meson-spicc: set SPI clock flag CLK_SET_RATE_PARENT
authorXianwei Zhao <xianwei.zhao@amlogic.com>
Fri, 24 May 2024 06:35:09 +0000 (14:35 +0800)
committerMark Brown <broonie@kernel.org>
Mon, 10 Jun 2024 11:49:05 +0000 (12:49 +0100)
Add SPI clock flag CLK_SET_RATE_PARENT for using pclk as parent clock.
This gives SPI more flexibility in frequency selection.

Signed-off-by: Xianwei Zhao <xianwei.zhao@amlogic.com>
Signed-off-by: Sunny Luo <sunny.luo@amlogic.com>
Link: https://lore.kernel.org/r/20240524-spi_pclk_setparent-v1-1-99e0ce70b66f@amlogic.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-meson-spicc.c

index fc75492e50fff3ae07972e59299796aaeda5b4c8..8a4a8ba9dfede1f20d15404fa176f2b90ee3043e 100644 (file)
@@ -644,11 +644,13 @@ static int meson_spicc_pow2_clk_init(struct meson_spicc_device *spicc)
        snprintf(name, sizeof(name), "%s#pow2_fixed_div", dev_name(dev));
        init.name = name;
        init.ops = &clk_fixed_factor_ops;
-       init.flags = 0;
-       if (spicc->data->has_pclk)
+       if (spicc->data->has_pclk) {
+               init.flags = CLK_SET_RATE_PARENT;
                parent_data[0].hw = __clk_get_hw(spicc->pclk);
-       else
+       } else {
+               init.flags = 0;
                parent_data[0].hw = __clk_get_hw(spicc->core);
+       }
        init.num_parents = 1;
 
        pow2_fixed_div->mult = 1,
@@ -708,11 +710,13 @@ static int meson_spicc_enh_clk_init(struct meson_spicc_device *spicc)
        snprintf(name, sizeof(name), "%s#enh_fixed_div", dev_name(dev));
        init.name = name;
        init.ops = &clk_fixed_factor_ops;
-       init.flags = 0;
-       if (spicc->data->has_pclk)
+       if (spicc->data->has_pclk) {
+               init.flags = CLK_SET_RATE_PARENT;
                parent_data[0].hw = __clk_get_hw(spicc->pclk);
-       else
+       } else {
+               init.flags = 0;
                parent_data[0].hw = __clk_get_hw(spicc->core);
+       }
        init.num_parents = 1;
 
        enh_fixed_div->mult = 1,