aboutsummaryrefslogtreecommitdiff
path: root/drivers/base/regmap
AgeCommit message (Collapse)AuthorFilesLines
2011-08-08Merge branches 'regmap-linus' and 'regmap-interface' into regmap-nextMark Brown1-1/+10
2011-08-08regmap: Just send the buffer directly for single register writesMark Brown1-3/+9
When doing a single register write we use work_buf for both the register and the value with the buffer formatted for sending directly to the device so we can just do a write() directly. This saves allocating a temporary buffer if we can't do gather writes and is likely to be faster than doing a gather write. Signed-off-by: Mark Brown <[email protected]>
2011-08-08regmap: Allow devices to specify which registers are accessibleMark Brown1-0/+9
This is currently unused but we need to know which registers exist and their properties in order to implement diagnostics like register map dumps and the cache features. We use callbacks partly because properties can vary at runtime (eg, through access locks on registers) and partly because big switch statements are a good compromise between readable code and small data size for providing information on big register maps. Signed-off-by: Mark Brown <[email protected]>
2011-07-24regmap: Fix bulk readsMark Brown1-1/+1
We should be reading the number of bytes we were asked for, not the size of a single register. Signed-off-by: Mark Brown <[email protected]>
2011-07-23regmap: Add SPI bus supportMark Brown3-1/+77
Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]> Acked-by: Wolfram Sang <[email protected]> Acked-by: Grant Likely <[email protected]>
2011-07-23regmap: Add I2C bus supportMark Brown3-0/+120
Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]> Acked-by: Wolfram Sang <[email protected]> Acked-by: Grant Likely <[email protected]>
2011-07-23regmap: Add generic non-memory mapped register access APIMark Brown3-0/+462
There are many places in the tree where we implement register access for devices on non-memory mapped buses, especially I2C and SPI. Since hardware designers seem to have settled on a relatively consistent set of register interfaces this can be effectively factored out into shared code. There are a standard set of formats for marshalling data for exchange with the device, with the actual I/O mechanisms generally being simple byte streams. We create an abstraction for marshaling data into formats which can be sent on the control interfaces, and create a standard method for plugging in actual transport underneath that. This is mostly a refactoring and renaming of the bottom level of the existing code for sharing register I/O which we have in ASoC. A subsequent patch in this series converts ASoC to use this. The main difference in interface is that reads return values by writing to a location provided by a pointer rather than in the return value, ensuring we can use the full range of the type for register data. We also use unsigned types rather than ints for the same reason. As some of the devices can have very large register maps the existing ASoC code also contains infrastructure for managing register caches. This cache work will be moved over in a future stage to allow for separate review, the current patch only deals with the physical I/O. Signed-off-by: Mark Brown <[email protected]> Acked-by: Liam Girdwood <[email protected]> Acked-by: Greg Kroah-Hartman <[email protected]> Acked-by: Wolfram Sang <[email protected]> Acked-by: Grant Likely <[email protected]>