FINALLY !!!!!!!!!!!!!!!!!
I was able to make it work this morning...
By playing around with the registers, I figured out that in order to
correct the media select routine, we had to do
a two step programming of the csr6 register.
Unfortunately, the driver plays around with this register and it was
not possible to configure
it from the media select routine.
I decided to put the final configuration of csr6 in the sysLanIntEnable
routine...
That did it !!!!!!
Here are my mediaSelect and sysLanIntEnable routines...
/***********************************************************************
********
*
* sysDec21143MediaSelect - hook routine for dec21x4xStart
*
* This is hook routine for dec21x4xStart(). This routine selects a
media for
* dec21143 board.
*
* RETURNS: OK, always.
*/
STATUS sysDec21143MediaSelect
(
DEC21X4X_DRV_CTRL * pDrvCtrl, /* Driver control */
UINT * pCsr6Val /* CSR6 return value */
)
{
ULONG * csrReg;
ULONG csrData;
/* set CSR6 value */
*pCsr6Val |= CSR6_2114X_MB1;
/* Led/Control selection */
csrReg = (ULONG *)(pDrvCtrl->devAdrs + (CSR15 *
DECPCI_REG_OFFSET));
csrData = (CSR15_21143_CWE | CSR15_21143_LG3 | CSR15_21143_LG1
|
CSR15_MD_MSK);
*csrReg = (csrData);
csrData = (CSR15_21143_LG3 | CSR15_21143_LG1 | CSR15_MODE_10);
*csrReg = (csrData);
/* force 10Base-T halh duplex configuration */
/* set SIA registers */
csrReg = (ULONG *)(pDrvCtrl->devAdrs + (CSR14 *
DECPCI_REG_OFFSET));
csrData = (*csrReg);
csrData &= ~(CSR14_21143_T4 | CSR14_21143_TXF| CSR14_21143_TXH |
CSR14_21143_TAS | CSR14_21143_TH |
CSR14_21143_ANE);
*csrReg = (csrData);
csrReg = (ULONG *)(pDrvCtrl->devAdrs + (CSR13 *
DECPCI_REG_OFFSET));
csrData = (*csrReg);
csrData |= CSR13_SRL_SIA;
*csrReg = (csrData);
return (OK);
}
/***********************************************************************
********
*
* sysLanIntEnable - enable dec21X4X interrupts
*
* This routine enables dec21X4X interrupts. This may involve
operations on
* interrupt control hardware.
*
* RETURNS: OK or ERROR for invalid arguments.
*/
STATUS sysLanIntEnable
(
int level /* level number */
)
{
ULONG * csrReg;
ULONG csrData;
/* Complete the MII port configuration
/* set CSR6 value */
csrReg = (ULONG *)(dcDevAdrs + (CSR6 * DECPCI_REG_OFFSET));
csrData = *csrReg;
csrData |= CSR6_2114X_PS;
*csrReg = (csrData);
return (sysIntEnablePIC(level));
}
--------------------------------------------------------
> Hi,
> You are correct to switch; the driver was a 10Mbps only configuration
> (although you have the media select function in the BSP so you should
be
> able to update it if you so choose).
> A better solution would be to ask WR customer support if they have the
> dec21x40End driver available for your version of the OS and
> architecture. I am assuming that you're using ARM, in which case you
> need some mods to the 40 driver to make it work (ARM-specific
alignment
> issues). The newest 40 driver also supports some of the newer 21143
> devices properly.
> Hope that helps,
> John...
> > We had the problem that this driver seems not to be working on a
> 100MBit Hub
> > :-((.
> > We solved it by buying old 10Mbit hubs that work fine (but is not
> > satisfactory.)
> > regards
> > Jan
> > >I am having problems setting up the dec21x4xEnd driver. I dont have
> the
> > >source file so I am only playing with the configuration of the
> driver.
> > >After lots of work, I was able to make the driver attach to the mux
> and
> > >attach protocols to it.
> > >I had lots of problem with getting the link to be indicated on the
> > >hub... I had to play around with a mediaSelect routine..
> > >Problem is, the hub sees the link but the dec21x doesnt seem to see
> the
> > >hub. By looking at the status registers, I see link failures and
> > >autonegociation that is not completed...
> > >Need some help please...
> > >Sent via Deja.com http://www.deja.com/
> > >Before you buy.
> Sent via Deja.com http://www.deja.com/
> Before you buy.
Sent via Deja.com http://www.deja.com/
Before you buy.