From 001d1953eae7089ab148ec32e13848be8d0b3874 Mon Sep 17 00:00:00 2001 From: Alexander Shiyan Date: Fri, 29 Nov 2013 15:39:30 +0400 Subject: w1: mxc_w1: Check the clk_prepare_enable() return value Signed-off-by: Alexander Shiyan Acked-by: Evgeniy Polyakov Signed-off-by: Greg Kroah-Hartman --- drivers/w1/masters/mxc_w1.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'drivers/w1') diff --git a/drivers/w1/masters/mxc_w1.c b/drivers/w1/masters/mxc_w1.c index 953168c..1e5d94c 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; } /* -- cgit v1.1