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: <abbo...@mev.co.uk> )=-
-=(                          Web: http://www.mev.co.uk/  )=-
_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to