From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752425AbbKAQlT (ORCPT ); Sun, 1 Nov 2015 11:41:19 -0500 Received: from mx2.suse.de ([195.135.220.15]:46868 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752015AbbKAQlS (ORCPT ); Sun, 1 Nov 2015 11:41:18 -0500 Date: Sun, 01 Nov 2015 17:41:16 +0100 Message-ID: From: Takashi Iwai To: "Ondrej Zary" Cc: , "Kernel development list" Subject: Re: [PATCH] snd-maestro3: Enable docking support for Dell Latitude C810 In-Reply-To: <1446384723-29765-1-git-send-email-linux@rainbow-software.org> References: <1446384723-29765-1-git-send-email-linux@rainbow-software.org> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.8 Emacs/24.5 (x86_64-suse-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, 01 Nov 2015 14:32:03 +0100, Ondrej Zary wrote: > > Enable I2S docking for Dell Latitude C810. > This allows the audio output on C/Port II to work (and probably also > the audio inputs on C/Dock II). > > The volume can't be adjusted - none of the mixer controls currently > supported affects the I2S output (they belong to the STAC9721/23 AC'97 > codec responsible for the laptop internal connectors & speakers). > > Signed-off-by: Ondrej Zary Applied, thanks. Takashi > --- > sound/pci/maestro3.c | 15 +++++++++++---- > 1 file changed, 11 insertions(+), 4 deletions(-) > > diff --git a/sound/pci/maestro3.c b/sound/pci/maestro3.c > index 72e89ce..965d5c6 100644 > --- a/sound/pci/maestro3.c > +++ b/sound/pci/maestro3.c > @@ -1932,12 +1932,19 @@ snd_m3_ac97_write(struct snd_ac97 *ac97, unsigned short reg, unsigned short val) > } > > > -static void snd_m3_remote_codec_config(int io, int isremote) > +static void snd_m3_remote_codec_config(struct snd_m3 *chip, int isremote) > { > + int io = chip->iobase; > + u16 tmp; > + > isremote = isremote ? 1 : 0; > > - outw((inw(io + RING_BUS_CTRL_B) & ~SECOND_CODEC_ID_MASK) | isremote, > - io + RING_BUS_CTRL_B); > + tmp = inw(io + RING_BUS_CTRL_B) & ~SECOND_CODEC_ID_MASK; > + /* enable dock on Dell Latitude C810 */ > + if (chip->pci->subsystem_vendor == 0x1028 && > + chip->pci->subsystem_device == 0x00e5) > + tmp |= M3I_DOCK_ENABLE; > + outw(tmp | isremote, io + RING_BUS_CTRL_B); > outw((inw(io + SDO_OUT_DEST_CTRL) & ~COMMAND_ADDR_OUT) | isremote, > io + SDO_OUT_DEST_CTRL); > outw((inw(io + SDO_IN_DEST_CTRL) & ~STATUS_ADDR_IN) | isremote, > @@ -1989,7 +1996,7 @@ static void snd_m3_ac97_reset(struct snd_m3 *chip) > if (!chip->irda_workaround) > dir |= 0x10; /* assuming pci bus master? */ > > - snd_m3_remote_codec_config(io, 0); > + snd_m3_remote_codec_config(chip, 0); > > outw(IO_SRAM_ENABLE, io + RING_BUS_CTRL_A); > udelay(20); > -- > Ondrej Zary > >