All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Courtier-Dutton <James@superbug.co.uk>
To: ALSA development <alsa-devel@alsa-project.org>
Subject: 20K1 PCI bars, and mode switching info.
Date: Sun, 19 Oct 2008 17:07:08 +0100	[thread overview]
Message-ID: <48FB5B2C.3030008@superbug.co.uk> (raw)

This info should help the current snd-sbxfi driver to actually work with
the "Vista compatible" cards that it currently does not work with.
I believe the true UAA to 20K1 mode switch code is missing from the
current alsa snd-sbxfi driver.


PCI BARs

UAA mode, or Vista Compatibility mode.
	BAR0:	16K for UAA
		
  14h	BAR1:	2M for 20k1 (low 32 bit)
  18h		2M for 20k1 (high 32 bit)
  1Ch	BAR2:	Between 2 and 256M for 20k1 (low 32 bit)
  20h		Between 2 and 256M for 20k1 (high 32 bit)
  24h	BAR3:	32 bit I/O for 20K1

20K1 Mode
	BAR0:	32 bit I/O for 20K1
		
  14h	BAR1:	2M for 20k1 (low 32 bit)
  18h		2M for 20k1 (high 32 bit)
  1Ch	BAR2:	Between 2 and 256M for 20k1 (low 32 bit)
  20h		Between 2 and 256M for 20k1 (high 32 bit)
  24h		

"UAA/20K1 mode" and "config space selection" work independently of each
other.

1) Configuration space selection:

This allows the driver to talk to both the UAA and 20K1 configuration
space whichever mode (UAA or 20K1) the card is in.
Location: PCI Register 0xA0 for "20K1 Configuration Space Flag" register.

Value: 0x12345678 to select 20K1 without BAR0 exposed;
Value: 0x87654321 to select 20K1 with BAR0 exposed;
       (should disable immediately after using.)
Value: 0x00000000 to select UAA.

2) UAA/20K1 MODE CHANGE (controls who the bus master is):
The "Mode Change" register is located in the UAA configuration space at
location offset 0x3FFC. This location stores 4 values in a ring.
To switch from 20K1 mode to UAA mode write each DW value: CTLA, CTLZ,
CTLL, CTLA.
To switch from UAA mode to 20K1 mode write each DW value: CTLX, CTL-,
CTLF, CTLi
To read the current mode, the 4 value ring may be in any position, so
one might read for example:
CTLL, CTLA, CTLA, CTLZ

At power on, the card is in UAA mode.
In UAA mode, the UAA chip is the bus master.
In 20K1 mode, the 20K1 chip is the bus master.
Under either UAA mode or 20K1 mode, the driver can read and write the
configuration space of both UAA chip and 20K1 chip.

             reply	other threads:[~2008-10-19 16:07 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-19 16:07 James Courtier-Dutton [this message]
2008-10-19 16:23 ` 20K1 PCI bars, and mode switching info James Courtier-Dutton
2008-10-19 18:17 ` Vedran Miletić
2008-10-20  5:55   ` Takashi Iwai
     [not found] ` <fd3eb9bf0810191116i549d5995ke05193a1344f6594@mail.gmail.com>
2008-10-19 19:18   ` James Courtier-Dutton
2008-10-20  5:54     ` Takashi Iwai
2008-10-20  8:02 ` Takashi Iwai
2008-10-20 18:34   ` James Courtier-Dutton
2008-10-20 19:33     ` Takashi Iwai
2008-10-21 19:39       ` James Courtier-Dutton
2008-10-22  5:50         ` Takashi Iwai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=48FB5B2C.3030008@superbug.co.uk \
    --to=james@superbug.co.uk \
    --cc=alsa-devel@alsa-project.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.