IXP Bus Endian Mode

Naik, Uday uday.naik at intel.com
Thu Dec 7 22:35:47 EST 2000


I believe setting the IXBUS in Little Endian mode does not work. But
you can set the Endian registers in the PCI bus controller for the IXP1200,
to swap the data corectly as it goes over the bus.

Uday

-----Original Message-----
From: Joe, Robert [mailto:robert.joe at intel.com]
Sent: Thursday, December 07, 2000 7:32 PM
To: IXP1200 Users; 'ixp1200 at CS.Princeton.EDU'
Subject: IXP Bus Endian Mode


I am setting bit 5 in RDYBUS_TEMPLATE_CTL, but the IXP bus still appears to
be running in Big Endian mode. Here are the details:

	B0 board in eval chassis
	Proprietary OS with the ARM running in Little Endian mode.
	1.0 pwd_2f with only changes to the SDRAM packet base address
	In hw_init.uc just after the ready bus has been programmed 
		immed[$xfer2, 0xF20]
		csr[write, $xfer2, RDYBUS_TEMPLATE_CTL], CTX_SWAP

I have ARM code running which dequeues packets off SRAM/SDRAM as they were
placed by the microengine receive threads. Ultimately I want to DMA the
packet data across the PCI bus. However, because the IX bus is running in
Big Endian mode, the packets appear in SDRAM byte swapped on longword
boundaries (see HRM, pg 6-55).

I know if I do a longword copy of the packet, the copied packet will appear
in the correct order. But I want to avoid this overhead. In fact, this is
probably the reason the PETH driver works?

My thinking is, if I can get the IX bus running in Little Endian mode, the
packet data will be in the correct order for my DMA over the PCI bus. Agree?

Has anyone run pwd_2f with LITTLE_ENDIAN defined and Little Endian (bit 5)
set in the RDYBUS_TEMPLATE_CTL?
If you have:
	Where did you set the RDYBUS_TEMPLATE_CTL?
	What OS are you running and do you have the ARM running in Little or
Big Endian (although this should not matter??)
	Are you seeing the packet data in Little Endian format?

Robert Joe
(858) 391 1849





More information about the ixp1200 mailing list