Loading drivers/base/regmap/regmap.c +28 −13 Original line number Diff line number Diff line Loading @@ -380,6 +380,28 @@ static void regmap_range_exit(struct regmap *map) kfree(map->selector_work_buf); } int regmap_attach_dev(struct device *dev, struct regmap *map, const struct regmap_config *config) { struct regmap **m; map->dev = dev; regmap_debugfs_init(map, config->name); /* Add a devres resource for dev_get_regmap() */ m = devres_alloc(dev_get_regmap_release, sizeof(*m), GFP_KERNEL); if (!m) { regmap_debugfs_exit(map); return -ENOMEM; } *m = map; devres_add(dev, m); return 0; } EXPORT_SYMBOL_GPL(regmap_attach_dev); /** * regmap_init(): Initialise register map * Loading @@ -397,7 +419,7 @@ struct regmap *regmap_init(struct device *dev, void *bus_context, const struct regmap_config *config) { struct regmap *map, **m; struct regmap *map; int ret = -EINVAL; enum regmap_endian reg_endian, val_endian; int i, j; Loading Loading @@ -734,25 +756,18 @@ struct regmap *regmap_init(struct device *dev, } } regmap_debugfs_init(map, config->name); ret = regcache_init(map, config); if (ret != 0) goto err_range; /* Add a devres resource for dev_get_regmap() */ m = devres_alloc(dev_get_regmap_release, sizeof(*m), GFP_KERNEL); if (!m) { ret = -ENOMEM; goto err_debugfs; } *m = map; devres_add(dev, m); if (dev) ret = regmap_attach_dev(dev, map, config); if (ret != 0) goto err_regcache; return map; err_debugfs: regmap_debugfs_exit(map); err_regcache: regcache_exit(map); err_range: regmap_range_exit(map); Loading include/linux/regmap.h +2 −0 Original line number Diff line number Diff line Loading @@ -317,6 +317,8 @@ struct regmap *regmap_init(struct device *dev, const struct regmap_bus *bus, void *bus_context, const struct regmap_config *config); int regmap_attach_dev(struct device *dev, struct regmap *map, const struct regmap_config *config); struct regmap *regmap_init_i2c(struct i2c_client *i2c, const struct regmap_config *config); struct regmap *regmap_init_spi(struct spi_device *dev, Loading Loading
drivers/base/regmap/regmap.c +28 −13 Original line number Diff line number Diff line Loading @@ -380,6 +380,28 @@ static void regmap_range_exit(struct regmap *map) kfree(map->selector_work_buf); } int regmap_attach_dev(struct device *dev, struct regmap *map, const struct regmap_config *config) { struct regmap **m; map->dev = dev; regmap_debugfs_init(map, config->name); /* Add a devres resource for dev_get_regmap() */ m = devres_alloc(dev_get_regmap_release, sizeof(*m), GFP_KERNEL); if (!m) { regmap_debugfs_exit(map); return -ENOMEM; } *m = map; devres_add(dev, m); return 0; } EXPORT_SYMBOL_GPL(regmap_attach_dev); /** * regmap_init(): Initialise register map * Loading @@ -397,7 +419,7 @@ struct regmap *regmap_init(struct device *dev, void *bus_context, const struct regmap_config *config) { struct regmap *map, **m; struct regmap *map; int ret = -EINVAL; enum regmap_endian reg_endian, val_endian; int i, j; Loading Loading @@ -734,25 +756,18 @@ struct regmap *regmap_init(struct device *dev, } } regmap_debugfs_init(map, config->name); ret = regcache_init(map, config); if (ret != 0) goto err_range; /* Add a devres resource for dev_get_regmap() */ m = devres_alloc(dev_get_regmap_release, sizeof(*m), GFP_KERNEL); if (!m) { ret = -ENOMEM; goto err_debugfs; } *m = map; devres_add(dev, m); if (dev) ret = regmap_attach_dev(dev, map, config); if (ret != 0) goto err_regcache; return map; err_debugfs: regmap_debugfs_exit(map); err_regcache: regcache_exit(map); err_range: regmap_range_exit(map); Loading
include/linux/regmap.h +2 −0 Original line number Diff line number Diff line Loading @@ -317,6 +317,8 @@ struct regmap *regmap_init(struct device *dev, const struct regmap_bus *bus, void *bus_context, const struct regmap_config *config); int regmap_attach_dev(struct device *dev, struct regmap *map, const struct regmap_config *config); struct regmap *regmap_init_i2c(struct i2c_client *i2c, const struct regmap_config *config); struct regmap *regmap_init_spi(struct spi_device *dev, Loading