diff options
author | Alexander Shiyan <shc_work@mail.ru> | 2013-11-29 15:39:30 +0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-12-08 22:41:48 -0800 |
commit | 001d1953eae7089ab148ec32e13848be8d0b3874 (patch) | |
tree | e9cb147ddb2e2d06888271c85af2e30c0b43bde0 | |
parent | 71531f55a83dcb79b89287f6b11fb2e4eb496d4d (diff) | |
download | linux-stable-001d1953eae7089ab148ec32e13848be8d0b3874.tar.gz linux-stable-001d1953eae7089ab148ec32e13848be8d0b3874.tar.bz2 linux-stable-001d1953eae7089ab148ec32e13848be8d0b3874.zip |
w1: mxc_w1: Check the clk_prepare_enable() return value
Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
Acked-by: Evgeniy Polyakov <zbr@ioremap.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/w1/masters/mxc_w1.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/w1/masters/mxc_w1.c b/drivers/w1/masters/mxc_w1.c index 953168c63392..1e5d94c5afc9 100644 --- a/drivers/w1/masters/mxc_w1.c +++ b/drivers/w1/masters/mxc_w1.c @@ -108,7 +108,7 @@ static int mxc_w1_probe(struct platform_device *pdev) unsigned long clkrate; struct resource *res; unsigned int clkdiv; - int err = 0; + int err; mdev = devm_kzalloc(&pdev->dev, sizeof(struct mxc_w1_device), GFP_KERNEL); @@ -135,20 +135,23 @@ static int mxc_w1_probe(struct platform_device *pdev) if (IS_ERR(mdev->regs)) return PTR_ERR(mdev->regs); - clk_prepare_enable(mdev->clk); + err = clk_prepare_enable(mdev->clk); + if (err) + return err; + __raw_writeb(clkdiv - 1, mdev->regs + MXC_W1_TIME_DIVIDER); mdev->bus_master.data = mdev; mdev->bus_master.reset_bus = mxc_w1_ds2_reset_bus; mdev->bus_master.touch_bit = mxc_w1_ds2_touch_bit; - err = w1_add_master_device(&mdev->bus_master); + platform_set_drvdata(pdev, mdev); + err = w1_add_master_device(&mdev->bus_master); if (err) - return err; + clk_disable_unprepare(mdev->clk); - platform_set_drvdata(pdev, mdev); - return 0; + return err; } /* |