data->dev = &pdev->dev;
 
-       data->pctl_dev = pinctrl_register(&wmt_desc, &pdev->dev, data);
+       data->pctl_dev = devm_pinctrl_register(&pdev->dev, &wmt_desc, data);
        if (IS_ERR(data->pctl_dev)) {
                dev_err(&pdev->dev, "Failed to register pinctrl\n");
                return PTR_ERR(data->pctl_dev);
        err = gpiochip_add_data(&data->gpio_chip, data);
        if (err) {
                dev_err(&pdev->dev, "could not add GPIO chip\n");
-               goto fail_gpio;
+               return err;
        }
 
        err = gpiochip_add_pin_range(&data->gpio_chip, dev_name(data->dev),
 
 fail_range:
        gpiochip_remove(&data->gpio_chip);
-fail_gpio:
-       pinctrl_unregister(data->pctl_dev);
        return err;
 }
 
        struct wmt_pinctrl_data *data = platform_get_drvdata(pdev);
 
        gpiochip_remove(&data->gpio_chip);
-       pinctrl_unregister(data->pctl_dev);
 
        return 0;
 }