|
|
|
@ -78,36 +78,30 @@ static int weim_probe(struct platform_device *pdev) |
|
|
|
|
struct resource *res; |
|
|
|
|
struct clk *clk; |
|
|
|
|
void __iomem *base; |
|
|
|
|
int ret = -EINVAL; |
|
|
|
|
int ret; |
|
|
|
|
|
|
|
|
|
/* get the resource */ |
|
|
|
|
res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
|
|
|
|
base = devm_ioremap_resource(&pdev->dev, res); |
|
|
|
|
if (IS_ERR(base)) { |
|
|
|
|
ret = PTR_ERR(base); |
|
|
|
|
goto weim_err; |
|
|
|
|
} |
|
|
|
|
if (IS_ERR(base)) |
|
|
|
|
return PTR_ERR(base); |
|
|
|
|
|
|
|
|
|
/* get the clock */ |
|
|
|
|
clk = devm_clk_get(&pdev->dev, NULL); |
|
|
|
|
if (IS_ERR(clk)) |
|
|
|
|
goto weim_err; |
|
|
|
|
return PTR_ERR(clk); |
|
|
|
|
|
|
|
|
|
ret = clk_prepare_enable(clk); |
|
|
|
|
if (ret) |
|
|
|
|
goto weim_err; |
|
|
|
|
return ret; |
|
|
|
|
|
|
|
|
|
/* parse the device node */ |
|
|
|
|
ret = weim_parse_dt(pdev, base); |
|
|
|
|
if (ret) { |
|
|
|
|
if (ret) |
|
|
|
|
clk_disable_unprepare(clk); |
|
|
|
|
goto weim_err; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
dev_info(&pdev->dev, "WEIM driver registered.\n"); |
|
|
|
|
return 0; |
|
|
|
|
else |
|
|
|
|
dev_info(&pdev->dev, "Driver registered.\n"); |
|
|
|
|
|
|
|
|
|
weim_err: |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|