Lines Matching +full:pl353 +full:- +full:smc +full:- +full:r2p1

1 // SPDX-License-Identifier: GPL-2.0
3 * ARM PL353 SMC driver
5 * Copyright (C) 2012 - 2018 Xilinx, Inc
19 * struct pl353_smc_data - Private smc driver structure
32 clk_disable(pl353_smc->memclk); in pl353_smc_suspend()
33 clk_disable(pl353_smc->aclk); in pl353_smc_suspend()
43 ret = clk_enable(pl353_smc->aclk); in pl353_smc_resume()
49 ret = clk_enable(pl353_smc->memclk); in pl353_smc_resume()
52 clk_disable(pl353_smc->aclk); in pl353_smc_resume()
64 .compatible = "cfi-flash"
67 .compatible = "arm,pl353-nand-r2p1",
74 struct device_node *of_node = adev->dev.of_node; in pl353_smc_probe()
80 pl353_smc = devm_kzalloc(&adev->dev, sizeof(*pl353_smc), GFP_KERNEL); in pl353_smc_probe()
82 return -ENOMEM; in pl353_smc_probe()
84 pl353_smc->aclk = devm_clk_get(&adev->dev, "apb_pclk"); in pl353_smc_probe()
85 if (IS_ERR(pl353_smc->aclk)) { in pl353_smc_probe()
86 dev_err(&adev->dev, "aclk clock not found.\n"); in pl353_smc_probe()
87 return PTR_ERR(pl353_smc->aclk); in pl353_smc_probe()
90 pl353_smc->memclk = devm_clk_get(&adev->dev, "memclk"); in pl353_smc_probe()
91 if (IS_ERR(pl353_smc->memclk)) { in pl353_smc_probe()
92 dev_err(&adev->dev, "memclk clock not found.\n"); in pl353_smc_probe()
93 return PTR_ERR(pl353_smc->memclk); in pl353_smc_probe()
96 err = clk_prepare_enable(pl353_smc->aclk); in pl353_smc_probe()
98 dev_err(&adev->dev, "Unable to enable AXI clock.\n"); in pl353_smc_probe()
102 err = clk_prepare_enable(pl353_smc->memclk); in pl353_smc_probe()
104 dev_err(&adev->dev, "Unable to enable memory clock.\n"); in pl353_smc_probe()
114 dev_warn(&adev->dev, "unsupported child node\n"); in pl353_smc_probe()
120 err = -ENODEV; in pl353_smc_probe()
121 dev_err(&adev->dev, "no matching children\n"); in pl353_smc_probe()
125 of_platform_device_create(child, NULL, &adev->dev); in pl353_smc_probe()
131 clk_disable_unprepare(pl353_smc->memclk); in pl353_smc_probe()
133 clk_disable_unprepare(pl353_smc->aclk); in pl353_smc_probe()
142 clk_disable_unprepare(pl353_smc->memclk); in pl353_smc_remove()
143 clk_disable_unprepare(pl353_smc->aclk); in pl353_smc_remove()
158 .name = "pl353-smc",
169 MODULE_DESCRIPTION("ARM PL353 SMC Driver");