Re: mc13xxx-core: kernel hangs after 'regmap_read'

From: Shawn Guo
Date: Wed May 23 2012 - 12:22:21 EST


On Wed, May 23, 2012 at 09:49:46AM +0100, Mark Brown wrote:
> On Tue, May 22, 2012 at 11:05:35PM -0300, Fabio Estevam wrote:
>
> > Should the spi->mode and spi->bits_per_word be passed differently?
>
> > Maybe via "struct regmap_config" ?
>
> You shouldn't be setting bits_per_word at all, that'll corrupt the data
> that regmap has formatted. Does removing that alone resolve the issue?

Removing that alone does not resolve the issue, but with additional
.write_flag_mask setting it does for me.

Regards,
Shawn

diff --git a/drivers/mfd/mc13xxx-spi.c b/drivers/mfd/mc13xxx-spi.c
index 3fcdab3..5d1969f 100644
--- a/drivers/mfd/mc13xxx-spi.c
+++ b/drivers/mfd/mc13xxx-spi.c
@@ -49,6 +49,7 @@ static struct regmap_config mc13xxx_regmap_spi_config = {
.reg_bits = 7,
.pad_bits = 1,
.val_bits = 24,
+ .write_flag_mask = 0x80,

.max_register = MC13XXX_NUMREGS,

@@ -73,7 +74,6 @@ static int mc13xxx_spi_probe(struct spi_device *spi)

dev_set_drvdata(&spi->dev, mc13xxx);
spi->mode = SPI_MODE_0 | SPI_CS_HIGH;
- spi->bits_per_word = 32;

mc13xxx->dev = &spi->dev;
mutex_init(&mc13xxx->lock);


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/