Re: PCIE

From: Roland Dreier
Date: Wed May 23 2007 - 19:51:23 EST


> It looks so, from the logs. The only problem is i can't disable the
> interrupts, if i write "0" to 0x500, the interrupt/enable register, it
> gives me a solid freeze. If i read from the handler, commenting out the
> disable interrupts in init, that read also gives me a solid freeze. This
> lead me to think that there could be some problem with the MMIO block
> access.

OK, this looks reasonable:

> #define saa716x_write(dat, addr) writel((dat), (saa716x->mmio)+(addr))

although

a) your driver has no hope of working on a system with more than one
device of this type; and
b) there's really no point in obfuscating a simple use of writel()
this way.

Why does the device come up in a state where it generates a stream of
interrupts as soon as you enable the PCI device? That's somewhat
unusual behavior, although certainly not unheard of.

This really has the feel of a typical driver bug to me, not anything
related to general PCIe access. I've definitely wedged my system many
times while trying to poke a device the right way.

Also, where are you getting the offset of 0x500 from? Is it possible
that the offset is really being given to you in bits (so you should
use 0x500 / 8) or 32-bit words (so you should use an offset of 0x500 *
4)? Are the datasheet / programming docs available for this device?
I actually have:

02:00.0 Multimedia controller: Philips Semiconductors Unknown device 7162

in one of my systems so I'd be somewhat interested in getting a driver
working too.

- R.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/