List Info

Thread: "neo0: unknown int" / "ac97: codec id not read" on Dell Latitude LS




"neo0: unknown int" / "ac97: codec id not read" on Dell Latitude LS
country flaguser name
Czech Republic
2007-06-12 09:38:50
Hi all,

I am running 4.1 on a Dell Latitude LS notebook. This
machine uses the
"Neomagic MagicMedia 256AV" audio chip:

...
neo0 at pci1 dev 0 function 1 "Neomagic MagicMedia
256AV" rev 0x20
audio0 at neo0
...

Now, _sometimes_ the boot gets into an endless loop saying

	"neo0: unknown int"

Looking at the source, I see that (sys/dev/pci/neo.c)


/* The interrupt handler */
int
neo_intr(void *p)
{
	struct neo_softc *sc = (struct neo_softc *)p;
	int status, x;
	int rv = 0;

	status = nm_rd(sc, NM_INT_REG, sc->irsz);

	if (status & sc->playint) {
		status &= ~sc->playint;

		sc->pwmark += sc->pblksize;
		sc->pwmark %= sc->pbufsize;

		nm_wr(sc, NM_PBUFFER_WMARK, sc->pbuf + sc->pwmark,
4);

		nm_ackint(sc, sc->playint);

		if (sc->pintr)
			(*sc->pintr)(sc->parg);

		rv = 1;
	}
	if (status & sc->recint) {
		status &= ~sc->recint;

		sc->rwmark += sc->rblksize;
		sc->rwmark %= sc->rbufsize;

		nm_ackint(sc, sc->recint);
		if (sc->rintr)
			(*sc->rintr)(sc->rarg);

		rv = 1;
	}
	if (status & sc->misc1int) {
		status &= ~sc->misc1int;
		nm_ackint(sc, sc->misc1int);
		x = nm_rd(sc, 0x400, 1);
		nm_wr(sc, 0x400, x | 2, 1);
		printf("%s: misc int 1n",
sc->dev.dv_xname);
		rv = 1;
	}
	if (status & sc->misc2int) {
		status &= ~sc->misc2int;
		nm_ackint(sc, sc->misc2int);
		x = nm_rd(sc, 0x400, 1);
		nm_wr(sc, 0x400, x & ~2, 1);
		printf("%s: misc int 2n",
sc->dev.dv_xname);
		rv = 1;
	}
	if (status) {
		status &= ~sc->misc2int;
		nm_ackint(sc, sc->misc2int);
		printf("%s: unknown intn",
sc->dev.dv_xname);
		rv = 1;
	}

	return (rv);
}


How does such such a thing ever happen? Who writes into the
card's
NM_INT_REG register and how can an "unknown" value
ever get there?

In other cases, the machine boots and everything works,
except that

neo0 at pci1 dev 0 function 1 "Neomagic MagicMedia
256AV" rev 0x20
1:0:1 10c8:8005 pin B clink 0x01 irq 10 stage 0  WARNING:
preserving irq 10
pci_intr_route_link: route PIRQ 0x01 -> IRQ 10 preserved
BIOS setting
: irq 10
ac97: codec id not read
audio0 at neo0

and I am unable to use any audio. The sound stuff doesn't
even
appear in sysctl -a.

Does anybody have the same problem, or even a solution?

	Thanks

		Jan


Re: "neo0: unknown int" / "ac97: codec id not read" on Dell Latitude LS
user name
2007-06-14 18:37:33
On 6/12/07, Jan Stary <hansstare.cz> wrote:
> Now, _sometimes_ the boot gets into an endless loop
saying
>
>        "neo0: unknown int"
> How does such such a thing ever happen? Who writes into
the card's
> NM_INT_REG register and how can an "unknown"
value ever get there?

normally, the card writes into it.  there may be some other
device
creating interrupts if things aren't wired up right.  the
kernel
doesn't really know where it comes from, and assumes maybe
the neo
caused it.

> In other cases, the machine boots and everything works,
except that
>
> neo0 at pci1 dev 0 function 1 "Neomagic MagicMedia
256AV" rev 0x20
> 1:0:1 10c8:8005 pin B clink 0x01 irq 10 stage 0 
WARNING: preserving irq 10
> pci_intr_route_link: route PIRQ 0x01 -> IRQ 10
preserved BIOS setting
> : irq 10
> ac97: codec id not read
> audio0 at neo0

probably related.  same problem, different symptoms.

> and I am unable to use any audio. The sound stuff
doesn't even
> appear in sysctl -a.

it'd be in mixerctl.  trying current, or acpi, or both may
help.  or not.


[1-2]

about | contact  Other archives ( Real Estate discussion Medical topics )