> @@ -646,22 +646,19 @@ static int i2c_bfin_twi_probe(struct platform_device
> *pdev)
> res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> if (res == NULL) {
> dev_err(&pdev->dev, "Cannot get IORESOURCE_MEM\n");
> - rc = -ENOENT;
> - goto out_error_get_res;
> + return -ENOENT;
You don't need to check the resource. devm_ioremap_resource will do it.
> - iface->regs_base = ioremap(res->start, resource_size(res));
> - if (iface->regs_base == NULL) {
> + iface->regs_base = devm_ioremap_resource(&pdev->dev, res);
> + if (IS_ERR((void *)iface->regs_base)) {
> dev_err(&pdev->dev, "Cannot map IO\n");
> - rc = -ENXIO;
> - goto out_error_ioremap;
> + return PTR_ERR((void *)iface->regs_base);
Do we need the casts?
> @@ -740,8 +728,6 @@ static int i2c_bfin_twi_remove(struct platform_device
> *pdev)
> i2c_del_adapter(&(iface->adap));
> free_irq(iface->irq, iface);
> peripheral_free_list(dev_get_platdata(&pdev->dev));
> - iounmap(iface->regs_base);
> - kfree(iface);
You missed to remove the free irq.
Have you actually tried unloading the module?
signature.asc
Description: Digital signature
