I have a problem for using Linux 2.4.2x on my laptop, and it may happen on
some other laptops.
My laptop has PemtiumIII-M 933Hz CPU and CyberAlladin(XP?) chipset
(contains an Ali5451 sound chip). If it ran Linux with AC-powered, system
hangs up on loading trident.o. But, If without AC-powered, system doesn't
hang up. (good)
I think the different is CPU clocks. I guessed that PentiumIII-M ran low
clock rate without AC-powered, so delaying code works fine. But if with
AC-powered, that doesn't works fine and takes hanging-up.
(messages on fine cases:)
Trident 4DWave/SiS 7018/ALi 5451,Tvia CyberPro PCI Audio, version 0.14.10h, 16:45:46 May 13 2003
ALi Audio Accelerator found at IO 0xe000, IRQ 11
ac97_codec: AC97 Audio codec, id: ADS116(Unknown)
ac97_codec: AC97 Audio codec, id: ADS116(Unknown)
(messages on bad cases:)
Trident 4DWave/SiS 7018/ALi 5451,Tvia CyberPro PCI Audio, version 0.14.10h, 16:45:46 May 13 2003
ALi Audio Accelerator found at IO 0xe000, IRQ 11
(and system freezes)
I tried to find the problem point with printk(). It seems below:
--- static int ali_reset_5451(struct trident_card *card) { struct pci_dev *pci_dev = NULL; unsigned int dwVal; unsigned short wCount, wReg;pci_dev = pci_find_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, pci_dev); if (pci_dev == NULL) return -1; pci_read_config_dword(pci_dev, 0x7c, &dwVal); pci_write_config_dword(pci_dev, 0x7c, dwVal | 0x08000000); /* the last working printk() */ udelay(5000); /* non-working printk() */ pci_read_config_dword(pci_dev, 0x7c, &dwVal); pci_write_config_dword(pci_dev, 0x7c, dwVal & 0xf7ffffff); udelay(5000);
pci_dev = card->pci_dev; if (pci_dev == NULL) return -1;
---Any advice? Thank you.
A.Yoshiyama <yosshy@debian.or.jp> - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/