On 21/10/14 18:15, Hartley Sweeten wrote:
In addition, in apci1564_interrupt() the dev->iobase (BAR1) is used for: s->state = inl(dev->iobase + APCI1564_DI_INT_STATUS_REG) & 0xffff; But is apci1564_reset() and apci1564_cos_insn_config() that register is accessed using devpriv->amcc_iobase (BAR0): inl(devpriv->amcc_iobase + APCI1564_DI_INT_STATUS_REG); The register should not be accessible from both BARs so BAR1 must be the real base address for the boards main registers. dev->iobase (BAR1) is currently used to access the counter register (other than the one access to APCI1564_DI_INT_STATUS_REG listed above). The mapping of those registers would overlay the boards main registers so my guess is they should really use BAR2 as the base address. I need to dig thru the git history to see if the screw up was caused by various patches to the driver or if the problem existed from when it was initially merged.
Looks like commit 860ba36cbeadee9064e2925be11dfb8368b9b25d ("staging: comedi: addi_apci_1564: move apci1564_interrupt() into addi_apci_1564.c") is the culprit.
-- -=( Ian Abbott @ MEV Ltd. E-mail: <abbotti@xxxxxxxxx> )=- -=( Web: http://www.mev.co.uk/ )=- _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel