Lines Matching +full:omap4 +full:- +full:mcpdm
1 // SPDX-License-Identifier: GPL-2.0-only
3 * TWL6040 clock module driver for OMAP4 McPDM functional clock
13 #include <linux/clk-provider.h>
27 return pdmclk->enabled; in twl6040_pdmclk_is_prepared()
36 ret = twl6040_set_bits(pdmclk->twl6040, reg, reset_mask); in twl6040_pdmclk_reset_one_clock()
40 ret = twl6040_clear_bits(pdmclk->twl6040, reg, reset_mask); in twl6040_pdmclk_reset_one_clock()
73 ret = twl6040_power(pdmclk->twl6040, 1); in twl6040_pdmclk_prepare()
81 pdmclk->enabled = 1; in twl6040_pdmclk_prepare()
86 dev_err(pdmclk->dev, "%s: error %i\n", __func__, ret); in twl6040_pdmclk_prepare()
87 twl6040_power(pdmclk->twl6040, 0); in twl6040_pdmclk_prepare()
98 ret = twl6040_power(pdmclk->twl6040, 0); in twl6040_pdmclk_unprepare()
100 pdmclk->enabled = 0; in twl6040_pdmclk_unprepare()
110 return twl6040_get_sysclk(pdmclk->twl6040); in twl6040_pdmclk_recalc_rate()
128 struct twl6040 *twl6040 = dev_get_drvdata(pdev->dev.parent); in twl6040_pdmclk_probe()
132 clkdata = devm_kzalloc(&pdev->dev, sizeof(*clkdata), GFP_KERNEL); in twl6040_pdmclk_probe()
134 return -ENOMEM; in twl6040_pdmclk_probe()
136 clkdata->dev = &pdev->dev; in twl6040_pdmclk_probe()
137 clkdata->twl6040 = twl6040; in twl6040_pdmclk_probe()
139 clkdata->pdmclk_hw.init = &twl6040_pdmclk_init; in twl6040_pdmclk_probe()
140 ret = devm_clk_hw_register(&pdev->dev, &clkdata->pdmclk_hw); in twl6040_pdmclk_probe()
146 return devm_of_clk_add_hw_provider(&pdev->dev, of_clk_hw_simple_get, in twl6040_pdmclk_probe()
147 &clkdata->pdmclk_hw); in twl6040_pdmclk_probe()
152 .name = "twl6040-pdmclk",
159 MODULE_DESCRIPTION("TWL6040 clock driver for McPDM functional clock");
161 MODULE_ALIAS("platform:twl6040-pdmclk");