/*
         * Check LCM_EN1/2_GPIO is configured.
         * Those pins are used for enabling VPOS/VNEG LDOs.
+        * Do not use devm* here: the regulator core takes over the
+        * lifecycle management of the GPIO descriptor.
         */
        switch (id) {
        case LM3632_LDO_POS:
-               return devm_gpiod_get_index_optional(dev, "enable", 0,
+               return gpiod_get_index_optional(dev, "enable", 0,
                                GPIOD_OUT_LOW | GPIOD_FLAGS_BIT_NONEXCLUSIVE);
        case LM3632_LDO_NEG:
-               return devm_gpiod_get_index_optional(dev, "enable", 1,
+               return gpiod_get_index_optional(dev, "enable", 1,
                                GPIOD_OUT_LOW | GPIOD_FLAGS_BIT_NONEXCLUSIVE);
        default:
                return NULL;
                                         LM3632_EXT_EN_MASK,
                                         LM3632_EXT_EN_MASK);
                if (ret) {
+                       if (gpiod)
+                               gpiod_put(gpiod);
                        dev_err(dev, "External pin err: %d\n", ret);
                        return ret;
                }