From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takashi Iwai Subject: Re: [PATCH 1/2] snd-cs8427: separate HW initialization Date: Thu, 03 Apr 2014 08:22:46 +0200 Message-ID: References: <1396470933-2618-1-git-send-email-linux@rainbow-software.org> Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by alsa0.perex.cz (Postfix) with ESMTP id 39F77265549 for ; Thu, 3 Apr 2014 08:22:47 +0200 (CEST) In-Reply-To: <1396470933-2618-1-git-send-email-linux@rainbow-software.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: Ondrej Zary Cc: alsa-devel@alsa-project.org List-Id: alsa-devel@alsa-project.org At Wed, 2 Apr 2014 22:35:32 +0200, Ondrej Zary wrote: > > Separate HW initialization from device creation. > This is needed for suspend/resume support. > > Signed-off-by: Ondrej Zary Could you make your patch checkpatch-clean? thanks, Takashi > --- > include/sound/cs8427.h | 1 + > sound/i2c/cs8427.c | 57 ++++++++++++++++++++++++++++++++-------------- -- > 2 files changed, 39 insertions(+), 19 deletions(-) > > diff --git a/include/sound/cs8427.h b/include/sound/cs8427.h > index f862cff..0b6a187 100644 > --- a/include/sound/cs8427.h > +++ b/include/sound/cs8427.h > @@ -188,6 +188,7 @@ > > struct snd_pcm_substream; > > +int snd_cs8427_init(struct snd_i2c_bus *bus, struct snd_i2c_device *device); > int snd_cs8427_create(struct snd_i2c_bus *bus, unsigned char addr, > unsigned int reset_timeout, struct snd_i2c_device **r_cs8427); > int snd_cs8427_reg_write(struct snd_i2c_device *device, unsigned char reg, > diff --git a/sound/i2c/cs8427.c b/sound/i2c/cs8427.c > index 6c2dc38..d9c15d9 100644 > --- a/sound/i2c/cs8427.c > +++ b/sound/i2c/cs8427.c > @@ -150,10 +150,8 @@ static void snd_cs8427_free(struct snd_i2c_device *device) > kfree(device->private_data); > } > > -int snd_cs8427_create(struct snd_i2c_bus *bus, > - unsigned char addr, > - unsigned int reset_timeout, > - struct snd_i2c_device **r_cs8427) > +int snd_cs8427_init(struct snd_i2c_bus *bus, > + struct snd_i2c_device *device) > { > static unsigned char initvals1[] = { > CS8427_REG_CONTROL1 | CS8427_REG_AUTOINC, > @@ -200,22 +198,10 @@ int snd_cs8427_create(struct snd_i2c_bus *bus, > Inhibit E->F transfers. */ > CS8427_UD | CS8427_EFTUI | CS8427_DETUI, > }; > + struct cs8427 *chip = device->private_data; > int err; > - struct cs8427 *chip; > - struct snd_i2c_device *device; > unsigned char buf[24]; > > - if ((err = snd_i2c_device_create(bus, "CS8427", > - CS8427_ADDR | (addr & 7), > - &device)) < 0) > - return err; > - chip = device->private_data = kzalloc(sizeof(*chip), GFP_KERNEL); > - if (chip == NULL) { > - snd_i2c_device_free(device); > - return -ENOMEM; > - } > - device->private_free = snd_cs8427_free; > - > snd_i2c_lock(bus); > err = snd_cs8427_reg_read(device, CS8427_REG_ID_AND_VER); > if (err != CS8427_VER8427A) { > @@ -264,10 +250,44 @@ int snd_cs8427_create(struct snd_i2c_bus *bus, > snd_i2c_unlock(bus); > > /* turn on run bit and rock'n'roll */ > + snd_cs8427_reset(device); > + > + return 0; > + > + __fail: > + snd_i2c_unlock(bus); > + > + return err; > +} > + > +EXPORT_SYMBOL(snd_cs8427_init); > + > +int snd_cs8427_create(struct snd_i2c_bus *bus, > + unsigned char addr, > + unsigned int reset_timeout, > + struct snd_i2c_device **r_cs8427) > +{ > + int err; > + struct cs8427 *chip; > + struct snd_i2c_device *device; > + > + if ((err = snd_i2c_device_create(bus, "CS8427", > + CS8427_ADDR | (addr & 7), > + &device)) < 0) > + return err; > + chip = device->private_data = kzalloc(sizeof(*chip), GFP_KERNEL); > + if (chip == NULL) { > + snd_i2c_device_free(device); > + return -ENOMEM; > + } > + device->private_free = snd_cs8427_free; > + > if (reset_timeout < 1) > reset_timeout = 1; > chip->reset_timeout = reset_timeout; > - snd_cs8427_reset(device); > + > + if ((err = snd_cs8427_init(bus, device))) > + goto __fail; > > #if 0 // it's nice for read tests > { > @@ -286,7 +306,6 @@ int snd_cs8427_create(struct snd_i2c_bus *bus, > return 0; > > __fail: > - snd_i2c_unlock(bus); > snd_i2c_device_free(device); > return err < 0 ? err : -EIO; > } > -- > Ondrej Zary > > _______________________________________________ > Alsa-devel mailing list > Alsa-devel@alsa-project.org > http://mailman.alsa-project.org/mailman/listinfo/alsa-devel >