On Fri, Mar 6, 2015 at 7:36 PM, Lars-Peter Clausen <lars@xxxxxxxxxx> wrote:
On 03/06/2015 06:26 PM, Daniel Baluta wrote:
[...]
I can reproduce the problem with:
static struct reg_default xxx_reg_defaults[] = {
{ XXX_REG_CTRL0, 0x00 },
{ XXX_REG_CTRL1, 0x00 },
{ XXX_REG_STATUS, 0x00 },
};
but, not if the reg default definition is:
static struct reg_default xxx_reg_defaults[] = {
{ XXX_REG_STATUS, 0x00 },
{ XXX_REG_CTRL0, 0x00 },
{ XXX_REG_CTRL1, 0x00 },
};
Is this normal?
That's a rhetorical question, right?
It might be that there is a bug when growing a rbblock to the left. It
probably went unnoticed because everybody has their reg defaults ordered in
ascending order.
Try to put a few debug printks into regcache_rbtree_write() and
regcache_rbtree_insert_to_block() to see what exactly is going on when a new
register is inserted into the block. How do base_reg and top_reg change.
I cannot test is right now because I don't have access to the physical device.
Is there a way to use to test the regmap API without an I2C/SPI device?