Re: XVME 6300 with TSI148 bridge on 64 bit Debian (Linux 3.2.57) vme_user issue

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Maurice,

On 04/06/14 22:43, Maurice Moss wrote:
Dear All,

I came across the link here and decided to write to you, as I am
facing a very similar problem:
http://driverdev.linuxdriverproject.org/pipermail/driverdev-devel/2013-May/037941.html

With the above linux, I have recompiled the kernel and booting the
image with a vme_user.bus=0 vme_tsi148.geoid=1 vme_tsi148.err_chk=1
flags.  I am just starting to get familiar with VME.

Using XVME 6300 (sitting in Slot 1), I am trying to access a ZMI 4100
board (in slot 2, only 2 slots on the chassis whose back plane
supports GA) via geographical addressing.

If the backplane supports geographical addressing, you don't need to set geoid (unless your SBC doesn't support geoid that is).

The ZMI board (supports
only A24, D16/32, GA, NO CS/CSR).  I pretty much have the same code as
mentioned in the thread, however all I read are 0xff's and my system
hangs every once in a while (needs hard reset).  This makes debugging
very hard.  I am trying to read valid registers at a given offset (in
this case 0x003C).

My master struct is setup as below and I hope you can help me with the
following questions:
         master.enable = 1;
         master.vme_addr = 0x10000;
         master.size = 0x10000;
         master.aspace = 2; // VME_A24
         master.cycle = 0x2000 | 0x8000;// user/data access
         master.dwidth = 2; // 16 bit word access

Is this offset 0x003C in the VME address space or 0x1003C? You have the base of the window set to 0x10000.

Does the board expect user/data cycles?

0. I suspect my master struct is packed wrong.

struct vme_master {
         int enable;                     /* State of Window */
         unsigned long long vme_addr;    /* Starting Address on the VMEbus */
         unsigned long long size;        /* Window Size */
         vme_address_t aspace;           /* Address Space */
         vme_cycle_t cycle;              /* Cycle properties */
         vme_width_t dwidth;             /* Maximum Data Width */
};


I'm not sure I follow.

1. I don't believe accessing 64k of the ZMI's VME address space is a
valid operation, could this be causing the bus to hang?  Actually, I
have this doubt because I am unsure how exactly the master window is
setup.


Are you reading the whole of the 64k? From memory, the tsi148 has a minimum window size of 64k, this should be fine as long as you don't read outside the devices registers.

2. From the documentation of ZMI 4100, it is claimed that the board
supports VME64 and VME64X.  However, I am not sure if master.cycle
bits for 2eVME need to be set or not?!


If you want to use the high speed block transfer modes, set them as required in the cycle properties.

3. Is there away to prevent the bus from hanging by modifying tsi148
device code?


I'm not sure why it's hanging, I'm not familiar with the hardware which doesn't help. Do you have a VME analyser to see what is actually happening on the bus?

Thanks for reading this far, and any help is sincerely appreciated!

Hope that helps,

Martyn

--
Martyn Welch (Lead Software Engineer)  | Registered in England and Wales
GE Intelligent Platforms               | (3828642) at 100 Barbirolli Square
T +44(0)1327322748                     | Manchester, M2 3AB
E martyn.welch@xxxxxx                  | VAT:GB 927559189
_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel




[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux