VME driver problem on MVME6100
Konstantin Boyanov
kkboyanov at gmail.com
Fri May 26 09:33:55 EST 2006
2006/5/25, Konstantin Boyanov <kkboyanov at gmail.com>:
>
> Hi again,
>
> The problem persist even with the new driver for 2.6 ... :(
> It is obvious that the driver cannot allocate memory for the window... It
> fails that thing called __ioremap(), whatever it might be used for:
>
> [mvme6100]# vme_setoutboundwin -h
> vme_setoutboundwin
> Usage: vme_setoutboundwin <options>
> -w <window> window(where 0<=window<=6)
> -m <mode> address mode (where
> 0=A16,1=A24,2=A32,3=A64,4=CRCSR)
> -p <protocol> protocol (where
> 1=SCT,2=BLT,4=MBLT,8=2eVME,0x10=2eSST)
> -a <VME addr> VME address
> -d <data width> data width (8, 16, 32, 64)
> -s <window size> window size (where 0 < window_size <=
> 0x400000)
> -v Be more verbose
> -h Give this (short) help
>
> [mvme6100]# vme_setoutboundwin -w0 -m0 -p8 -a0x8800 -d16 -s400000 -v
> window = 0, mode = 0 protocol 0x8 vme_addr = 0x8800 data width = 16
> __ioremap(): phys addr 01000000 is RAM lr d100be34
> vmedrv: No memory for outbound window
> ioctl VME_IOCTL_SET_OUTBOUND failed.: Cannot allocate memory
>
> While searching on the web for information about __ioremap I found this:
>
> /*
> * Remap an arbitrary physical address space into the kernel virtual
> * address space. Needed when the kernel wants to access high addresses
> * directly.
> *
>
> * NOTE! We need to allow non-page-aligned mappings too: we will obviously
> * have to convert them into an offset in a page-aligned mapping, but the
> * caller shouldn't need to know that small detail.
> */
>
>
> And another thing - people should not be using __ioremap() unless they
> have a _good_ _reason_ in their driver. They should be using ioremap()
> instead. __ioremap() is an architecture implementation detail which
>
> has no interface stability guarantees _at all_.
>
> How's that? So it seems that the kernel can't translate the accesses to
> the VME bus propperly. Any ideas how to fix that?
> Actually I cant figure out why configuring a single outbound window is so
> damn tough to achieve.e maybe I'm missing some crutial settings. I tried
> to set up the window attribute register, and the outbound translation offset
> register in the hope to fit in the needed size for the window, but again
> failed. I'm trying to get frustrated about that...
>
> Best regards,
> Konstantin
>
> P.S. I forgot to say that on the target I'm booting a bare kernel with
not much functionality. Could it be that there are missing some settings for
the virtual memory management, which are crutial for the VME driver? I mean
the above message "phys addr 01000000 is RAM lr d100be34" is somehow
connected to misconfiguration (or lack of it at all) for the virtual memory
pages? That's what I can think of som late in the night...
Thank you anyways.
Best regards,
Konstantin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://ozlabs.org/pipermail/linuxppc-embedded/attachments/20060526/448d7a5e/attachment.htm
More information about the Linuxppc-embedded
mailing list