Messages in this thread | | | Date | Sat, 07 Mar 2015 17:07:39 +0100 | From | Lars-Peter Clausen <> | Subject | Re: Using regmap_update_bits to update a write only register |
| |
On 03/06/2015 08:48 PM, Daniel Baluta wrote: > On Fri, Mar 6, 2015 at 7:36 PM, Lars-Peter Clausen <lars@metafoo.de> 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?
I did some quick testing today, and the resizing the present bitmap definitely broken with the current code. Patch will follow shortly.
- Lars
| |