|
|
|
@ -24,8 +24,6 @@ |
|
|
|
|
* MA 02111-1307 USA |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
#define DEBUG |
|
|
|
|
|
|
|
|
|
#include <common.h> |
|
|
|
|
#include <command.h> |
|
|
|
|
#include <malloc.h> |
|
|
|
@ -85,7 +83,8 @@ int tsi148_init(void) |
|
|
|
|
debug("Tsi148: Base : %p\n", dev->uregs); |
|
|
|
|
|
|
|
|
|
/* check mapping */ |
|
|
|
|
debug("Tsi148: Read via mapping, PCI_ID = %08X\n", readl(&dev->uregs->pci_id)); |
|
|
|
|
debug("Tsi148: Read via mapping, PCI_ID = %08X\n", |
|
|
|
|
readl(&dev->uregs->pci_id)); |
|
|
|
|
if (((PCI_DEVICE << 16) | PCI_VENDOR) != readl(&dev->uregs->pci_id)) { |
|
|
|
|
printf("Tsi148: Cannot read PCI-ID via Mapping: %08x\n", |
|
|
|
|
readl(&dev->uregs->pci_id)); |
|
|
|
@ -106,10 +105,12 @@ int tsi148_init(void) |
|
|
|
|
/* Tsi148 VME timeout etc */ |
|
|
|
|
__raw_writel(htonl(0x00000084), &dev->uregs->vctrl); |
|
|
|
|
|
|
|
|
|
#ifdef DEBUG |
|
|
|
|
if ((__raw_readl(&dev->uregs->vstat) & 0x00000100) != 0) |
|
|
|
|
debug("Tsi148: System Controller!\n"); |
|
|
|
|
printf("Tsi148: System Controller!\n"); |
|
|
|
|
else |
|
|
|
|
debug("Tsi148: Not System Controller!\n"); |
|
|
|
|
printf("Tsi148: Not System Controller!\n"); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Lets turn off interrupts |
|
|
|
@ -147,7 +148,8 @@ int tsi148_init(void) |
|
|
|
|
/*
|
|
|
|
|
* Create pci slave window (access: pci -> vme) |
|
|
|
|
*/ |
|
|
|
|
int tsi148_pci_slave_window(unsigned int pciAddr, unsigned int vmeAddr, int size, int vam, int vdw) |
|
|
|
|
int tsi148_pci_slave_window(unsigned int pciAddr, unsigned int vmeAddr, |
|
|
|
|
int size, int vam, int vdw) |
|
|
|
|
{ |
|
|
|
|
int result, i; |
|
|
|
|
unsigned int ctl = 0; |
|
|
|
@ -172,7 +174,6 @@ int tsi148_pci_slave_window(unsigned int pciAddr, unsigned int vmeAddr, int size |
|
|
|
|
|
|
|
|
|
printf("Tsi148: Pci addr %08x\n", pciAddr); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
__raw_writel(htonl(pciAddr), &dev->uregs->outbound[i].otsal); |
|
|
|
|
__raw_writel(0x00000000, &dev->uregs->outbound[i].otsau); |
|
|
|
|
__raw_writel(htonl(pciAddr + size), &dev->uregs->outbound[i].oteal); |
|
|
|
@ -272,7 +273,8 @@ unsigned int tsi148_eval_vam(int vam) |
|
|
|
|
/*
|
|
|
|
|
* Create vme slave window (access: vme -> pci) |
|
|
|
|
*/ |
|
|
|
|
int tsi148_vme_slave_window(unsigned int vmeAddr, unsigned int pciAddr, int size, int vam) |
|
|
|
|
int tsi148_vme_slave_window(unsigned int vmeAddr, unsigned int pciAddr, |
|
|
|
|
int size, int vam) |
|
|
|
|
{ |
|
|
|
|
int result, i; |
|
|
|
|
unsigned int ctl = 0; |
|
|
|
@ -373,7 +375,6 @@ int tsi148_vme_crcsr_window(unsigned int vmeAddr) |
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Create vme slave window (access: vme -> crg) |
|
|
|
|
*/ |
|
|
|
@ -424,11 +425,13 @@ int do_tsi148(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) |
|
|
|
|
case 'c': |
|
|
|
|
if (strcmp(argv[1], "crg") == 0) { |
|
|
|
|
vam = addr2; |
|
|
|
|
printf("Tsi148: Configuring VME CRG Window (VME->CRG):\n"); |
|
|
|
|
printf("Tsi148: Configuring VME CRG Window " |
|
|
|
|
"(VME->CRG):\n"); |
|
|
|
|
printf(" vme=%08lx vam=%02lx\n", addr1, vam); |
|
|
|
|
tsi148_vme_crg_window(addr1, vam); |
|
|
|
|
} else { |
|
|
|
|
printf("Tsi148: Configuring VME CR/CSR Window (VME->CR/CSR):\n"); |
|
|
|
|
printf("Tsi148: Configuring VME CR/CSR Window " |
|
|
|
|
"(VME->CR/CSR):\n"); |
|
|
|
|
printf(" pci=%08lx\n", addr1); |
|
|
|
|
tsi148_vme_crcsr_window(addr1); |
|
|
|
|
} |
|
|
|
@ -463,7 +466,7 @@ int do_tsi148(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) |
|
|
|
|
|
|
|
|
|
U_BOOT_CMD( |
|
|
|
|
tsi148, 8, 1, do_tsi148, |
|
|
|
|
"tsi148 - initialize and configure Turndra Tsi148\n", |
|
|
|
|
"initialize and configure Turndra Tsi148\n", |
|
|
|
|
"init\n" |
|
|
|
|
" - initialize tsi148\n" |
|
|
|
|
"tsi148 vme [vme_addr] [pci_addr] [size] [vam]\n" |
|
|
|
|