Staging/iio/adc/touchscreen/MXS: add proper clock handling
The delay units inside the LRADC depend on the presence of a 2 kHz clock. This change enables the clock to be able to use the delay unit for the touchscreen part of the driver. Signed-off-by: Juergen Beisert <jbe@pengutronix.de> Tested-by: Marek Vasut <marex@denx.de> Acked-by: Marek Vasut <marex@denx.de> Tested-by: Lothar Waßmann <LW@KARO-electronics.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
This commit is contained in:
parent
dd28e48278
commit
18da755de5
|
@ -430,6 +430,7 @@
|
|||
reg = <0x80050000 0x2000>;
|
||||
interrupts = <36 37 38 39 40 41 42 43 44>;
|
||||
status = "disabled";
|
||||
clocks = <&clks 26>;
|
||||
};
|
||||
|
||||
spdif@80054000 {
|
||||
|
|
|
@ -902,6 +902,7 @@
|
|||
interrupts = <10 14 15 16 17 18 19
|
||||
20 21 22 23 24 25>;
|
||||
status = "disabled";
|
||||
clocks = <&clks 41>;
|
||||
};
|
||||
|
||||
spdif: spdif@80054000 {
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
#include <linux/completion.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/clk.h>
|
||||
|
||||
#include <linux/iio/iio.h>
|
||||
#include <linux/iio/buffer.h>
|
||||
|
@ -134,6 +135,8 @@ struct mxs_lradc {
|
|||
void __iomem *base;
|
||||
int irq[13];
|
||||
|
||||
struct clk *clk;
|
||||
|
||||
uint32_t *buffer;
|
||||
struct iio_trigger *trig;
|
||||
|
||||
|
@ -922,6 +925,17 @@ static int mxs_lradc_probe(struct platform_device *pdev)
|
|||
if (IS_ERR(lradc->base))
|
||||
return PTR_ERR(lradc->base);
|
||||
|
||||
lradc->clk = devm_clk_get(&pdev->dev, NULL);
|
||||
if (IS_ERR(lradc->clk)) {
|
||||
dev_err(dev, "Failed to get the delay unit clock\n");
|
||||
return PTR_ERR(lradc->clk);
|
||||
}
|
||||
ret = clk_prepare_enable(lradc->clk);
|
||||
if (ret != 0) {
|
||||
dev_err(dev, "Failed to enable the delay unit clock\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
INIT_WORK(&lradc->ts_work, mxs_lradc_ts_work);
|
||||
|
||||
/* Check if touchscreen is enabled in DT. */
|
||||
|
@ -1014,6 +1028,7 @@ static int mxs_lradc_remove(struct platform_device *pdev)
|
|||
mxs_lradc_trigger_remove(iio);
|
||||
iio_triggered_buffer_cleanup(iio);
|
||||
|
||||
clk_disable_unprepare(lradc->clk);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue