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 All,

Thanks for your reply.  I have been away the last few weeks.

Dan, I am using 64 bit Debian 3.2.57.  So I am not using the latest
kernel.  Would this be a problem?

Martyn, I don't have a bus analyzer.  I believe I have understood a
few more things about my setup, but I still manage to hang the bus.  I
have the following questions for now:

1. Is there a way to find out if the tsi148 driver is working correctly?

2. Addressing?! I am still not clear on the addressing scheme. From
the documentation of the slave (ZMI 4104 card) given it's set in slot
2 with Geographical Addressing enabled, the 24 bits of it's VME bus
address are:

A(23:20) -> 'b0000   [Board jumpers set to zero]
A(19:15) -> 'b00010 [Geographical address set to 2, as the slave is in slot 2]
A(14)      -> 'b0         [0 if Geo Addressing enabled]

AFAIK, this sets the base of the window to, 0x10000.  Am I correct to
assume this?

> Does the board expect user/data cycles?

The slave board responds to address modifier codes 0x39 (A24
non-privileged data access), and 0x3D (A24 supervisory data access),
hence I set:
master.cycle = 0x2000 | 0x8000; // user/data access

Cheers!

On Wed, Jun 11, 2014 at 10:36 AM, Martyn Welch <martyn.welch@xxxxxx> wrote:
> 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