mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
Merge remote-tracking branches 'regmap/topic/core' and 'regmap/topic/devm' into regmap-next
This commit is contained in:
commit
e1c1c69c8f
@ -111,4 +111,21 @@ struct regmap *regmap_init_i2c(struct i2c_client *i2c,
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(regmap_init_i2c);
|
EXPORT_SYMBOL_GPL(regmap_init_i2c);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* devm_regmap_init_i2c(): Initialise managed register map
|
||||||
|
*
|
||||||
|
* @i2c: Device that will be interacted with
|
||||||
|
* @config: Configuration for register map
|
||||||
|
*
|
||||||
|
* The return value will be an ERR_PTR() on error or a valid pointer
|
||||||
|
* to a struct regmap. The regmap will be automatically freed by the
|
||||||
|
* device management code.
|
||||||
|
*/
|
||||||
|
struct regmap *devm_regmap_init_i2c(struct i2c_client *i2c,
|
||||||
|
const struct regmap_config *config)
|
||||||
|
{
|
||||||
|
return devm_regmap_init(&i2c->dev, ®map_i2c, config);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(devm_regmap_init_i2c);
|
||||||
|
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
@ -70,4 +70,21 @@ struct regmap *regmap_init_spi(struct spi_device *spi,
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(regmap_init_spi);
|
EXPORT_SYMBOL_GPL(regmap_init_spi);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* devm_regmap_init_spi(): Initialise register map
|
||||||
|
*
|
||||||
|
* @spi: Device that will be interacted with
|
||||||
|
* @config: Configuration for register map
|
||||||
|
*
|
||||||
|
* The return value will be an ERR_PTR() on error or a valid pointer
|
||||||
|
* to a struct regmap. The map will be automatically freed by the
|
||||||
|
* device management code.
|
||||||
|
*/
|
||||||
|
struct regmap *devm_regmap_init_spi(struct spi_device *spi,
|
||||||
|
const struct regmap_config *config)
|
||||||
|
{
|
||||||
|
return devm_regmap_init(&spi->dev, ®map_spi, config);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(devm_regmap_init_spi);
|
||||||
|
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
@ -306,6 +306,45 @@ err:
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(regmap_init);
|
EXPORT_SYMBOL_GPL(regmap_init);
|
||||||
|
|
||||||
|
static void devm_regmap_release(struct device *dev, void *res)
|
||||||
|
{
|
||||||
|
regmap_exit(*(struct regmap **)res);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* devm_regmap_init(): Initialise managed register map
|
||||||
|
*
|
||||||
|
* @dev: Device that will be interacted with
|
||||||
|
* @bus: Bus-specific callbacks to use with device
|
||||||
|
* @config: Configuration for register map
|
||||||
|
*
|
||||||
|
* The return value will be an ERR_PTR() on error or a valid pointer
|
||||||
|
* to a struct regmap. This function should generally not be called
|
||||||
|
* directly, it should be called by bus-specific init functions. The
|
||||||
|
* map will be automatically freed by the device management code.
|
||||||
|
*/
|
||||||
|
struct regmap *devm_regmap_init(struct device *dev,
|
||||||
|
const struct regmap_bus *bus,
|
||||||
|
const struct regmap_config *config)
|
||||||
|
{
|
||||||
|
struct regmap **ptr, *regmap;
|
||||||
|
|
||||||
|
ptr = devres_alloc(devm_regmap_release, sizeof(*ptr), GFP_KERNEL);
|
||||||
|
if (!ptr)
|
||||||
|
return ERR_PTR(-ENOMEM);
|
||||||
|
|
||||||
|
regmap = regmap_init(dev, bus, config);
|
||||||
|
if (!IS_ERR(regmap)) {
|
||||||
|
*ptr = regmap;
|
||||||
|
devres_add(dev, ptr);
|
||||||
|
} else {
|
||||||
|
devres_free(ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
return regmap;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(devm_regmap_init);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* regmap_reinit_cache(): Reinitialise the current register cache
|
* regmap_reinit_cache(): Reinitialise the current register cache
|
||||||
*
|
*
|
||||||
|
@ -132,6 +132,14 @@ struct regmap *regmap_init_i2c(struct i2c_client *i2c,
|
|||||||
struct regmap *regmap_init_spi(struct spi_device *dev,
|
struct regmap *regmap_init_spi(struct spi_device *dev,
|
||||||
const struct regmap_config *config);
|
const struct regmap_config *config);
|
||||||
|
|
||||||
|
struct regmap *devm_regmap_init(struct device *dev,
|
||||||
|
const struct regmap_bus *bus,
|
||||||
|
const struct regmap_config *config);
|
||||||
|
struct regmap *devm_regmap_init_i2c(struct i2c_client *i2c,
|
||||||
|
const struct regmap_config *config);
|
||||||
|
struct regmap *devm_regmap_init_spi(struct spi_device *dev,
|
||||||
|
const struct regmap_config *config);
|
||||||
|
|
||||||
void regmap_exit(struct regmap *map);
|
void regmap_exit(struct regmap *map);
|
||||||
int regmap_reinit_cache(struct regmap *map,
|
int regmap_reinit_cache(struct regmap *map,
|
||||||
const struct regmap_config *config);
|
const struct regmap_config *config);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user