public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* regmap: Question about devices with unequal register sizes
@ 2013-02-16 17:03 Daniel Mack
  2013-02-17 16:23 ` Mark Brown
  0 siblings, 1 reply; 4+ messages in thread
From: Daniel Mack @ 2013-02-16 17:03 UTC (permalink / raw)
  To: Mark Brown; +Cc: LKML, Dimitris Papastamos

Hi Mark and everyone,

I'm writing a driver for an I2C audio codec which has an unusual
register map. The datasheet can be found here:

  http://www.ti.com/lit/gpn/tas5086

The register layout is described on page 26, and they call their
registers 'subaddresses'. Up to sub-address 0x1c, I see no problem
mapping that to a simple 8-bit regmap layout, but above that, access
gets trickier because registers change their sizes, which breaks the cache.

So for example, in order to set the 'Downmix input MUX register', the
host is expected to send the sub-address 0x21, followed by 4 consecutive
bytes containing the values. 0x21 is, however, not the correct offset in
the register cache, as 0x20 ('Input MUX register') is also 4 bytes in
size. Higher registers also have to be written in 20 byte blocks.

I thought about registering multiple regmaps with the i2c device, but
that turns out not to play well with ASoC, which always takes the first
regmap for the device.

Are ranges within in the regmap_config what I want here? I haven't yet
figured how to use them accordingly though.

Thanks for sharing any ideas.


Best regards,
Daniel

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-05-06 19:37 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-16 17:03 regmap: Question about devices with unequal register sizes Daniel Mack
2013-02-17 16:23 ` Mark Brown
2013-05-06 16:32   ` Daniel Mack
2013-05-06 19:36     ` Mark Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox