> +static int __init u300_pmx_probe(struct platform_device *pdev) > +{ > + int ret; > + struct u300_pmx *upmx; > + struct resource *res; > + > + /* Create state holders etc for this driver */ > + upmx = devm_kzalloc(&pdev->dev, sizeof(struct u300_pmx), GFP_KERNEL);
and this would be "devm_kzalloc(&pdev->dev, sizeof(*upmx), GFP_KERNEL); " ? > + if (!upmx) > + return -ENOMEM; > + > + upmx->dev = &pdev->dev; > + > + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > + if (!res) { > + ret = -ENOENT; > + goto out_no_resource; > + } > + upmx->phybase = res->start; > + upmx->physize = resource_size(res); > + > + if (request_mem_region(upmx->phybase, upmx->physize, > + DRIVER_NAME) == NULL) { > + ret = -EBUSY; > + goto out_no_memregion; > + } > + > + upmx->virtbase = ioremap(upmx->phybase, upmx->physize); > + if (!upmx->virtbase) { > + ret = -ENOMEM; > + goto out_no_remap; > + } > + > + upmx->pctl = pinctrl_register(&u300_pmx_desc, &pdev->dev, upmx); > + if (IS_ERR(upmx->pctl)) { > + dev_err(&pdev->dev, "could not register U300 pinmux > driver\n"); > + ret = PTR_ERR(upmx->pctl); > + goto out_no_pmx; > + } > + > + /* We will handle a range of GPIO pins */ > + pinctrl_add_gpio_range(upmx->pctl, &u300_gpio_range); > + > + platform_set_drvdata(pdev, upmx); > + > + u300_pmx_dumpregs(upmx); > + > + dev_info(&pdev->dev, "initialized U300 pinmux driver\n"); > + > + return 0; > + > +out_no_pmx: > + iounmap(upmx->virtbase); > +out_no_remap: > + platform_set_drvdata(pdev, NULL); > +out_no_memregion: > + release_mem_region(upmx->phybase, upmx->physize); > +out_no_resource: > + devm_kfree(&pdev->dev, upmx); > + return ret; > +} > + -barry _______________________________________________ linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev