]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
spi: rockchip-sfc: Support ACPI
authorJon Lin <jon.lin@rock-chips.com>
Wed, 20 Nov 2024 01:22:08 +0000 (09:22 +0800)
committerMark Brown <broonie@kernel.org>
Mon, 2 Dec 2024 00:32:31 +0000 (00:32 +0000)
Compatible with ACPI.

Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
Link: https://patch.msgid.link/20241120012208.1193034-1-jon.lin@rock-chips.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-rockchip-sfc.c

index 69d0f21755684a8a01724c29eb97123044dcf6ae..138508d2c736692eb804868000ac947bd613cddf 100644 (file)
@@ -491,7 +491,7 @@ static int rockchip_sfc_exec_mem_op(struct spi_mem *mem, const struct spi_mem_op
        u32 len = op->data.nbytes;
        int ret;
 
-       if (unlikely(mem->spi->max_speed_hz != sfc->frequency)) {
+       if (unlikely(mem->spi->max_speed_hz != sfc->frequency) && !has_acpi_companion(sfc->dev)) {
                ret = clk_set_rate(sfc->clk, mem->spi->max_speed_hz);
                if (ret)
                        return ret;
@@ -579,16 +579,24 @@ static int rockchip_sfc_probe(struct platform_device *pdev)
        if (IS_ERR(sfc->regbase))
                return PTR_ERR(sfc->regbase);
 
-       sfc->clk = devm_clk_get(&pdev->dev, "clk_sfc");
+       if (!has_acpi_companion(&pdev->dev))
+               sfc->clk = devm_clk_get(&pdev->dev, "clk_sfc");
        if (IS_ERR(sfc->clk))
                return dev_err_probe(&pdev->dev, PTR_ERR(sfc->clk),
                                     "Failed to get sfc interface clk\n");
 
-       sfc->hclk = devm_clk_get(&pdev->dev, "hclk_sfc");
+       if (!has_acpi_companion(&pdev->dev))
+               sfc->hclk = devm_clk_get(&pdev->dev, "hclk_sfc");
        if (IS_ERR(sfc->hclk))
                return dev_err_probe(&pdev->dev, PTR_ERR(sfc->hclk),
                                     "Failed to get sfc ahb clk\n");
 
+       if (has_acpi_companion(&pdev->dev)) {
+               ret = device_property_read_u32(&pdev->dev, "clock-frequency", &sfc->frequency);
+               if (ret)
+                       return dev_err_probe(&pdev->dev, ret, "Failed to find clock-frequency\n");
+       }
+
        sfc->use_dma = !of_property_read_bool(sfc->dev->of_node, "rockchip,sfc-no-dma");
 
        if (sfc->use_dma) {