[PATCH] pps-gpio: add device-tree binding and support
Arnd Bergmann
arnd at arndb.de
Sat Jun 1 05:15:19 EST 2013
On Friday 31 May 2013 20:46:55 Jan Luebbe wrote:
>
> +#ifdef CONFIG_OF
> +static const struct of_device_id pps_gpio_dt_ids[] = {
> + { .compatible = "pps-gpio", },
> + { /* sentinel */ }
> +};
> +MODULE_DEVICE_TABLE(of, pps_gpio_dt_ids);
> +
> +static struct pps_gpio_platform_data *
> +of_get_pps_gpio_pdata(struct platform_device *pdev)
> +{
> + struct device_node *np = pdev->dev.of_node;
> + struct pps_gpio_platform_data *pdata;
> + int ret;
> +
> + pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL);
> + if (!pdata)
> + return NULL;
> +
> + ret = of_get_gpio(np, 0);
> + if (ret < 0) {
> + pr_err("failed to get GPIO from device tree\n");
> + return NULL;
> + }
> +
> + pdata->gpio_pin = ret;
> + pdata->gpio_label = PPS_GPIO_NAME;
> +
> + if (of_get_property(np, "assert-falling-edge", NULL))
> + pdata->assert_falling_edge = true;
> +
> + return pdata;
> +}
> +#else
> +static struct pps_gpio_platform_data *
> +of_get_pps_gpio_pdata(struct platform_device *pdev)
> +{
> + return NULL;
> +}
> +#endif
I don't think it's worth the effort of doing a dynamic
allocation if you just need to store two integers and a flag.
I would just put them all into pps_gpio_device_data, which also
gets rid of a couple of indirect pointer accesses and the #ifdef
above.
Arnd
More information about the devicetree-discuss
mailing list