Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f2b31737 authored by Sasha Khapyorsky's avatar Sasha Khapyorsky Committed by Jaroslav Kysela
Browse files

[ALSA] au88x0: codec access procs for multiple AC97 codecs



Modules: au88x0 driver

This patch extends au88x0 AC97 codec access procedures to handle multiple
codecs properly.

Signed-off-by: default avatarSasha Khapyorsky <sashak@smlink.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 21be3d16
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -178,11 +178,6 @@
#define		EN_SPDIF	0x000c0000

#define VORTEX_CODEC_CHN 	0x29080
#define VORTEX_CODEC_WRITE	0x00800000
#define VORTEX_CODEC_ADDSHIFT 	16
#define VORTEX_CODEC_ADDMASK	0x7f0000	/* 0x000f0000 */
#define VORTEX_CODEC_DATSHIFT	0
#define VORTEX_CODEC_DATMASK	0xffff
#define VORTEX_CODEC_IO		0x29188

/* SPDIF */
+0 −5
Original line number Diff line number Diff line
@@ -162,11 +162,6 @@
#define		EN_SPORT	0x00030000
#define		EN_SPDIF	0x000c0000
#define VORTEX_CODEC_CHN 0x11880
#define VORTEX_CODEC_WRITE 0x00800000
#define VORTEX_CODEC_ADDSHIFT 16
#define VORTEX_CODEC_ADDMASK 0x7f0000	/* 0x000f0000 */
#define VORTEX_CODEC_DATSHIFT 0
#define VORTEX_CODEC_DATMASK 0xffff
#define VORTEX_CODEC_IO 0x11988

#define VORTEX_SPDIF_FLAGS		0x1005c	/* FIXME */
+0 −5
Original line number Diff line number Diff line
@@ -194,11 +194,6 @@

#define VORTEX_CODEC_CTRL 0x29184
#define VORTEX_CODEC_IO 0x29188
#define 	VORTEX_CODEC_WRITE 0x00800000
#define 	VORTEX_CODEC_ADDSHIFT 16
#define 	VORTEX_CODEC_ADDMASK 0x7f0000	/* 0x000f0000 */
#define 	VORTEX_CODEC_DATSHIFT 0
#define 	VORTEX_CODEC_DATMASK 0xffff

#define VORTEX_CODEC_SPORTCTRL 0x2918c

+8 −0
Original line number Diff line number Diff line
@@ -79,6 +79,14 @@
#define VORTEX_RESOURCE_A3D	0x00000004
#define VORTEX_RESOURCE_LAST	0x00000005

/* codec io: VORTEX_CODEC_IO bits */
#define VORTEX_CODEC_ID_SHIFT	24
#define VORTEX_CODEC_WRITE	0x00800000
#define VORTEX_CODEC_ADDSHIFT 	16
#define VORTEX_CODEC_ADDMASK	0x7f0000
#define VORTEX_CODEC_DATSHIFT	0
#define VORTEX_CODEC_DATMASK	0xffff

/* Check for SDAC bit in "Extended audio ID" AC97 register */
//#define VORTEX_IS_QUAD(x) (((x)->codec == NULL) ?  0 : ((x)->codec->ext_id&0x80))
#define VORTEX_IS_QUAD(x) ((x)->isquad)
+4 −2
Original line number Diff line number Diff line
@@ -2532,7 +2532,8 @@ vortex_codec_write(ac97_t * codec, unsigned short addr, unsigned short data)
	hwwrite(card->mmio, VORTEX_CODEC_IO,
		((addr << VORTEX_CODEC_ADDSHIFT) & VORTEX_CODEC_ADDMASK) |
		((data << VORTEX_CODEC_DATSHIFT) & VORTEX_CODEC_DATMASK) |
		VORTEX_CODEC_WRITE);
		VORTEX_CODEC_WRITE |
		(codec->num << VORTEX_CODEC_ID_SHIFT) );

	/* Flush Caches. */
	hwread(card->mmio, VORTEX_CODEC_IO);
@@ -2554,7 +2555,8 @@ static unsigned short vortex_codec_read(ac97_t * codec, unsigned short addr)
		}
	}
	/* set up read address */
	read_addr = ((addr << VORTEX_CODEC_ADDSHIFT) & VORTEX_CODEC_ADDMASK);
	read_addr = ((addr << VORTEX_CODEC_ADDSHIFT) & VORTEX_CODEC_ADDMASK) |
		(codec->num << VORTEX_CODEC_ID_SHIFT) ;
	hwwrite(card->mmio, VORTEX_CODEC_IO, read_addr);

	/* wait for address */