-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge tag 'regmap-3.9' of git://git.kernel.org/pub/scm/linux/kernel/g…
…it/broonie/regmap Pull regmap updates from Mark Brown: "Several nice new features and performance improvements here, especially the first: - Support for using the cache infrastructure without the physical I/O, allowing devices which don't fit the physical model regmap has to take advantage of the cache infrastructure, contributed by Andrey Smirnov. - Several small improvements to the support for wake capable IRQs. - Support for asynchronous I/O, allowing us to come much closer to saturating fast buses like SPI. - Support for simple array caches, giving higher performance for use with MMIO devices. - Restoration of the use of bulk reads for handling interrupts, giving a performance improvement. - Support for 24 bit register addresses. - More performance improvements for debugfs." * tag 'regmap-3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap: (24 commits) regmap: mmio: add register clock support regmap: debugfs: Factor out debugfs_tot_len calc into a function regmap: debugfs: Optimize seeking within blocks of registers regmap: debugfs: Add a `max_reg' member in struct regmap_debugfs_off_cache regmap: debugfs: Fix reading in register field units regmap: spi: Handle allocation failures gracefully regmap: Export regmap_async_complete() regmap: Export regmap_async_complete_cb regmap: include linux/sched.h to fix build regmap: spi: Support asynchronous I/O for SPI regmap: Add asynchronous I/O support regmap: Add "no-bus" option for regmap API regmap: regmap: avoid spurious warning in regmap_read_debugfs regmap: Add provisions to have user-defined write operation regmap: Add provisions to have user-defined read operation regmap: Add support for 24 bit wide register addresses mfd: wm5110: Mark wakes as inverted mfd: wm5102: Mark wakes as inverted regmap: irq: Support wake IRQ mask inversion regmap: irq: Fix sync of wake statuses to hardware ...
- Loading branch information
Showing
12 changed files
with
737 additions
and
118 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
/* | ||
* Register cache access API - flat caching support | ||
* | ||
* Copyright 2012 Wolfson Microelectronics plc | ||
* | ||
* Author: Mark Brown <broonie@opensource.wolfsonmicro.com> | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
|
||
#include <linux/slab.h> | ||
#include <linux/device.h> | ||
#include <linux/seq_file.h> | ||
|
||
#include "internal.h" | ||
|
||
static int regcache_flat_init(struct regmap *map) | ||
{ | ||
int i; | ||
unsigned int *cache; | ||
|
||
map->cache = kzalloc(sizeof(unsigned int) * (map->max_register + 1), | ||
GFP_KERNEL); | ||
if (!map->cache) | ||
return -ENOMEM; | ||
|
||
cache = map->cache; | ||
|
||
for (i = 0; i < map->num_reg_defaults; i++) | ||
cache[map->reg_defaults[i].reg] = map->reg_defaults[i].def; | ||
|
||
return 0; | ||
} | ||
|
||
static int regcache_flat_exit(struct regmap *map) | ||
{ | ||
kfree(map->cache); | ||
map->cache = NULL; | ||
|
||
return 0; | ||
} | ||
|
||
static int regcache_flat_read(struct regmap *map, | ||
unsigned int reg, unsigned int *value) | ||
{ | ||
unsigned int *cache = map->cache; | ||
|
||
*value = cache[reg]; | ||
|
||
return 0; | ||
} | ||
|
||
static int regcache_flat_write(struct regmap *map, unsigned int reg, | ||
unsigned int value) | ||
{ | ||
unsigned int *cache = map->cache; | ||
|
||
cache[reg] = value; | ||
|
||
return 0; | ||
} | ||
|
||
struct regcache_ops regcache_flat_ops = { | ||
.type = REGCACHE_FLAT, | ||
.name = "flat", | ||
.init = regcache_flat_init, | ||
.exit = regcache_flat_exit, | ||
.read = regcache_flat_read, | ||
.write = regcache_flat_write, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.