regmap: Add one flag to indicate if a hwlock should be used
Since the hwlock id 0 is valid for hardware spinlock core, but now id 0 is treated as one invalid value for regmap. Thus we should add one extra flag for regmap config to indicate if a hardware spinlock should be used, then id 0 can be valid for regmap to request. Signed-off-by: Baolin Wang <baolin.wang@linaro.org> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
@@ -671,7 +671,7 @@ struct regmap *__regmap_init(struct device *dev,
|
|||||||
map->lock = config->lock;
|
map->lock = config->lock;
|
||||||
map->unlock = config->unlock;
|
map->unlock = config->unlock;
|
||||||
map->lock_arg = config->lock_arg;
|
map->lock_arg = config->lock_arg;
|
||||||
} else if (config->hwlock_id) {
|
} else if (config->use_hwlock) {
|
||||||
map->hwlock = hwspin_lock_request_specific(config->hwlock_id);
|
map->hwlock = hwspin_lock_request_specific(config->hwlock_id);
|
||||||
if (!map->hwlock) {
|
if (!map->hwlock) {
|
||||||
ret = -ENXIO;
|
ret = -ENXIO;
|
||||||
|
|||||||
@@ -317,6 +317,7 @@ typedef void (*regmap_unlock)(void *);
|
|||||||
*
|
*
|
||||||
* @ranges: Array of configuration entries for virtual address ranges.
|
* @ranges: Array of configuration entries for virtual address ranges.
|
||||||
* @num_ranges: Number of range configuration entries.
|
* @num_ranges: Number of range configuration entries.
|
||||||
|
* @use_hwlock: Indicate if a hardware spinlock should be used.
|
||||||
* @hwlock_id: Specify the hardware spinlock id.
|
* @hwlock_id: Specify the hardware spinlock id.
|
||||||
* @hwlock_mode: The hardware spinlock mode, should be HWLOCK_IRQSTATE,
|
* @hwlock_mode: The hardware spinlock mode, should be HWLOCK_IRQSTATE,
|
||||||
* HWLOCK_IRQ or 0.
|
* HWLOCK_IRQ or 0.
|
||||||
@@ -365,6 +366,7 @@ struct regmap_config {
|
|||||||
const struct regmap_range_cfg *ranges;
|
const struct regmap_range_cfg *ranges;
|
||||||
unsigned int num_ranges;
|
unsigned int num_ranges;
|
||||||
|
|
||||||
|
bool use_hwlock;
|
||||||
unsigned int hwlock_id;
|
unsigned int hwlock_id;
|
||||||
unsigned int hwlock_mode;
|
unsigned int hwlock_mode;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user