On Wed, Mar 21, 2012 at 09:22:50PM +0530, Ashish Chavan wrote: > +#if defined(CONFIG_SPI_MASTER) > + /* Dummy read to give two pulses over nCS */ > + regmap_read(da7210->regmap, DA7210_STATUS, &val); > + regmap_read(da7210->regmap, DA7210_STATUS, &val); > + regmap_read(da7210->regmap, DA7210_STATUS, &val); > +#endif This ifdef stuff should all be runtime configured based on the bus type, unless the cost of the reads is considered immaterial in which case it should be unconditional. > +#if defined(CONFIG_SPI_MASTER) > + snd_soc_write(codec, 0x00, 0x80); > +#endif Hrm? > /* unlock */ > regmap_write(da7210->regmap, DA7210_A_HID_UNLOCK, 0x8B); > @@ -1035,6 +1056,10 @@ static int da7210_probe(struct snd_soc_codec *codec) > regmap_write(da7210->regmap, DA7210_A_HID_UNLOCK, 0x00); > regmap_write(da7210->regmap, DA7210_A_TEST_UNLOCK, 0x00); I also note that you've not yet updated this to use a regmap patch as was previously requested. > +#if defined(CONFIG_SPI_MASTER) > +static int __devinit da7210_spi_probe(struct spi_device *spi) > +{ > + struct da7210_priv *da7210; > + int ret; > + > + da7210 = kzalloc(sizeof(struct da7210_priv), GFP_KERNEL); > + if (!da7210) > + return -ENOMEM; devm_kzalloc(). > + da7210_regmap.read_flag_mask = 0x01; > + da7210_regmap.write_flag_mask = 0x00; Just have a second, static, regmap variable. The regmap should be declared const. > + da7210->regmap = regmap_init_spi(spi, &da7210_regmap); devm_regmap_init_spi() (will come in in the merge window). > +static struct spi_driver da7210_spi_driver = { > + .driver = { > + .name = "da7210-codec", No -codec.