aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/rio/riotable.c
diff options
context:
space:
mode:
authorAlan Cox <alan@lxorguk.ukuu.org.uk>2006-03-24 06:18:27 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-03-24 10:33:29 -0500
commite2b3afd676ad3e15ca2efca3b3605c7d817ec6e3 (patch)
treef6b7c9739e20a865b6f1f379ccbab67a63ddec53 /drivers/char/rio/riotable.c
parent27c6e526f34760a9c48a90112242b7165064fa85 (diff)
[PATCH] rio driver rework continued #2
First large chunk of code cleanup. The split between this and #3 and #4 is fairly arbitary and due to the message length limit on the list. These patches continue the process of ripping out macros and typedefs while cleaning up lots of 32bit assumptions. Several inlines for compatibility also get removed and that causes a lot of noise. Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/char/rio/riotable.c')
-rw-r--r--drivers/char/rio/riotable.c76
1 files changed, 33 insertions, 43 deletions
diff --git a/drivers/char/rio/riotable.c b/drivers/char/rio/riotable.c
index a86b216ab653..f1d50142b91d 100644
--- a/drivers/char/rio/riotable.c
+++ b/drivers/char/rio/riotable.c
@@ -91,8 +91,7 @@ static char *_riotable_c_sccs_ = "@(#)riotable.c 1.2";
91** A configuration table has been loaded. It is now up to us 91** A configuration table has been loaded. It is now up to us
92** to sort it out and use the information contained therein. 92** to sort it out and use the information contained therein.
93*/ 93*/
94int RIONewTable(p) 94int RIONewTable(struct rio_info *p)
95struct rio_info *p;
96{ 95{
97 int Host, Host1, Host2, NameIsUnique, Entry, SubEnt; 96 int Host, Host1, Host2, NameIsUnique, Entry, SubEnt;
98 struct Map *MapP; 97 struct Map *MapP;
@@ -298,9 +297,9 @@ struct rio_info *p;
298 */ 297 */
299 for (Host = 0; Host < RIO_HOSTS; Host++) { 298 for (Host = 0; Host < RIO_HOSTS; Host++) {
300 for (Entry = 0; Entry < MAX_RUP; Entry++) { 299 for (Entry = 0; Entry < MAX_RUP; Entry++) {
301 bzero((caddr_t) & p->RIOHosts[Host].Mapping[Entry], sizeof(struct Map)); 300 memset(&p->RIOHosts[Host].Mapping[Entry], 0, sizeof(struct Map));
302 } 301 }
303 bzero((caddr_t) & p->RIOHosts[Host].Name[0], sizeof(p->RIOHosts[Host].Name)); 302 memset(&p->RIOHosts[Host].Name[0], 0, sizeof(p->RIOHosts[Host].Name));
304 } 303 }
305 304
306 /* 305 /*
@@ -409,9 +408,10 @@ struct rio_info *p;
409/* 408/*
410** User process needs the config table - build it from first 409** User process needs the config table - build it from first
411** principles. 410** principles.
411**
412* FIXME: SMP locking
412*/ 413*/
413int RIOApel(p) 414int RIOApel(struct rio_info *p)
414struct rio_info *p;
415{ 415{
416 int Host; 416 int Host;
417 int link; 417 int link;
@@ -419,17 +419,17 @@ struct rio_info *p;
419 int Next = 0; 419 int Next = 0;
420 struct Map *MapP; 420 struct Map *MapP;
421 struct Host *HostP; 421 struct Host *HostP;
422 long oldspl; 422 unsigned long flags;
423
424 disable(oldspl); /* strange but true! */
425 423
426 rio_dprintk(RIO_DEBUG_TABLE, "Generating a table to return to config.rio\n"); 424 rio_dprintk(RIO_DEBUG_TABLE, "Generating a table to return to config.rio\n");
427 425
428 bzero((caddr_t) & p->RIOConnectTable[0], sizeof(struct Map) * TOTAL_MAP_ENTRIES); 426 memset(&p->RIOConnectTable[0], 0, sizeof(struct Map) * TOTAL_MAP_ENTRIES);
429 427
430 for (Host = 0; Host < RIO_HOSTS; Host++) { 428 for (Host = 0; Host < RIO_HOSTS; Host++) {
431 rio_dprintk(RIO_DEBUG_TABLE, "Processing host %d\n", Host); 429 rio_dprintk(RIO_DEBUG_TABLE, "Processing host %d\n", Host);
432 HostP = &p->RIOHosts[Host]; 430 HostP = &p->RIOHosts[Host];
431 rio_spin_lock_irqsave(&HostP->HostLock, flags);
432
433 MapP = &p->RIOConnectTable[Next++]; 433 MapP = &p->RIOConnectTable[Next++];
434 MapP->HostUniqueNum = HostP->UniqueNum; 434 MapP->HostUniqueNum = HostP->UniqueNum;
435 if ((HostP->Flags & RUN_STATE) != RC_RUNNING) 435 if ((HostP->Flags & RUN_STATE) != RC_RUNNING)
@@ -453,8 +453,8 @@ struct rio_info *p;
453 Next++; 453 Next++;
454 } 454 }
455 } 455 }
456 rio_spin_unlock_irqrestore(&HostP->HostLock, flags);
456 } 457 }
457 restore(oldspl);
458 return 0; 458 return 0;
459} 459}
460 460
@@ -463,9 +463,7 @@ struct rio_info *p;
463** if the entry is suitably inactive, then we can gob on it and remove 463** if the entry is suitably inactive, then we can gob on it and remove
464** it from the table. 464** it from the table.
465*/ 465*/
466int RIODeleteRta(p, MapP) 466int RIODeleteRta(struct rio_info *p, struct Map *MapP)
467struct rio_info *p;
468struct Map *MapP;
469{ 467{
470 int host, entry, port, link; 468 int host, entry, port, link;
471 int SysPort; 469 int SysPort;
@@ -543,7 +541,7 @@ struct Map *MapP;
543 if (PortP->SecondBlock) { 541 if (PortP->SecondBlock) {
544 ushort dest_unit = HostMapP->ID; 542 ushort dest_unit = HostMapP->ID;
545 ushort dest_port = port - SysPort; 543 ushort dest_port = port - SysPort;
546 WORD *TxPktP; 544 u16 *TxPktP;
547 PKT *Pkt; 545 PKT *Pkt;
548 546
549 for (TxPktP = PortP->TxStart; TxPktP <= PortP->TxEnd; TxPktP++) { 547 for (TxPktP = PortP->TxStart; TxPktP <= PortP->TxEnd; TxPktP++) {
@@ -554,19 +552,19 @@ struct Map *MapP;
554 ** a 32 bit pointer so it can be 552 ** a 32 bit pointer so it can be
555 ** accessed from the driver. 553 ** accessed from the driver.
556 */ 554 */
557 Pkt = (PKT *) RIO_PTR(HostP->Caddr, RWORD(*TxPktP)); 555 Pkt = (PKT *) RIO_PTR(HostP->Caddr, readw(&*TxPktP));
558 rio_dprintk(RIO_DEBUG_TABLE, "Tx packet (%x) destination: Old %x:%x New %x:%x\n", *TxPktP, Pkt->dest_unit, Pkt->dest_port, dest_unit, dest_port); 556 rio_dprintk(RIO_DEBUG_TABLE, "Tx packet (%x) destination: Old %x:%x New %x:%x\n", *TxPktP, Pkt->dest_unit, Pkt->dest_port, dest_unit, dest_port);
559 WWORD(Pkt->dest_unit, dest_unit); 557 writew(dest_unit, &Pkt->dest_unit);
560 WWORD(Pkt->dest_port, dest_port); 558 writew(dest_port, &Pkt->dest_port);
561 } 559 }
562 rio_dprintk(RIO_DEBUG_TABLE, "Port %d phb destination: Old %x:%x New %x:%x\n", port, PortP->PhbP->destination & 0xff, (PortP->PhbP->destination >> 8) & 0xff, dest_unit, dest_port); 560 rio_dprintk(RIO_DEBUG_TABLE, "Port %d phb destination: Old %x:%x New %x:%x\n", port, PortP->PhbP->destination & 0xff, (PortP->PhbP->destination >> 8) & 0xff, dest_unit, dest_port);
563 WWORD(PortP->PhbP->destination, dest_unit + (dest_port << 8)); 561 writew(dest_unit + (dest_port << 8), &PortP->PhbP->destination);
564 } 562 }
565 rio_spin_unlock_irqrestore(&PortP->portSem, sem_flags); 563 rio_spin_unlock_irqrestore(&PortP->portSem, sem_flags);
566 } 564 }
567 } 565 }
568 rio_dprintk(RIO_DEBUG_TABLE, "Entry nulled.\n"); 566 rio_dprintk(RIO_DEBUG_TABLE, "Entry nulled.\n");
569 bzero((char *) HostMapP, sizeof(struct Map)); 567 memset(HostMapP, 0, sizeof(struct Map));
570 work_done++; 568 work_done++;
571 } 569 }
572 } 570 }
@@ -576,11 +574,11 @@ struct Map *MapP;
576 /* XXXXX lock me up */ 574 /* XXXXX lock me up */
577 for (entry = 0; entry < TOTAL_MAP_ENTRIES; entry++) { 575 for (entry = 0; entry < TOTAL_MAP_ENTRIES; entry++) {
578 if (p->RIOSavedTable[entry].RtaUniqueNum == MapP->RtaUniqueNum) { 576 if (p->RIOSavedTable[entry].RtaUniqueNum == MapP->RtaUniqueNum) {
579 bzero((char *) &p->RIOSavedTable[entry], sizeof(struct Map)); 577 memset(&p->RIOSavedTable[entry], 0, sizeof(struct Map));
580 work_done++; 578 work_done++;
581 } 579 }
582 if (p->RIOConnectTable[entry].RtaUniqueNum == MapP->RtaUniqueNum) { 580 if (p->RIOConnectTable[entry].RtaUniqueNum == MapP->RtaUniqueNum) {
583 bzero((char *) &p->RIOConnectTable[entry], sizeof(struct Map)); 581 memset(&p->RIOConnectTable[entry], 0, sizeof(struct Map));
584 work_done++; 582 work_done++;
585 } 583 }
586 } 584 }
@@ -742,12 +740,9 @@ int RIOAssignRta(struct rio_info *p, struct Map *MapP)
742} 740}
743 741
744 742
745int RIOReMapPorts(p, HostP, HostMapP) 743int RIOReMapPorts(struct rio_info *p, struct Host *HostP, struct Map *HostMapP)
746struct rio_info *p;
747struct Host *HostP;
748struct Map *HostMapP;
749{ 744{
750 register struct Port *PortP; 745 struct Port *PortP;
751 uint SubEnt; 746 uint SubEnt;
752 uint HostPort; 747 uint HostPort;
753 uint SysPort; 748 uint SysPort;
@@ -794,12 +789,12 @@ struct Map *HostMapP;
794 */ 789 */
795 if ((HostP->Flags & RUN_STATE) == RC_RUNNING) { 790 if ((HostP->Flags & RUN_STATE) == RC_RUNNING) {
796 struct PHB *PhbP = PortP->PhbP = &HostP->PhbP[HostPort]; 791 struct PHB *PhbP = PortP->PhbP = &HostP->PhbP[HostPort];
797 PortP->TxAdd = (WORD *) RIO_PTR(HostP->Caddr, RWORD(PhbP->tx_add)); 792 PortP->TxAdd = (u16 *) RIO_PTR(HostP->Caddr, readw(&PhbP->tx_add));
798 PortP->TxStart = (WORD *) RIO_PTR(HostP->Caddr, RWORD(PhbP->tx_start)); 793 PortP->TxStart = (u16 *) RIO_PTR(HostP->Caddr, readw(&PhbP->tx_start));
799 PortP->TxEnd = (WORD *) RIO_PTR(HostP->Caddr, RWORD(PhbP->tx_end)); 794 PortP->TxEnd = (u16 *) RIO_PTR(HostP->Caddr, readw(&PhbP->tx_end));
800 PortP->RxRemove = (WORD *) RIO_PTR(HostP->Caddr, RWORD(PhbP->rx_remove)); 795 PortP->RxRemove = (u16 *) RIO_PTR(HostP->Caddr, readw(&PhbP->rx_remove));
801 PortP->RxStart = (WORD *) RIO_PTR(HostP->Caddr, RWORD(PhbP->rx_start)); 796 PortP->RxStart = (u16 *) RIO_PTR(HostP->Caddr, readw(&PhbP->rx_start));
802 PortP->RxEnd = (WORD *) RIO_PTR(HostP->Caddr, RWORD(PhbP->rx_end)); 797 PortP->RxEnd = (u16 *) RIO_PTR(HostP->Caddr, readw(&PhbP->rx_end));
803 } else 798 } else
804 PortP->PhbP = NULL; 799 PortP->PhbP = NULL;
805 800
@@ -866,9 +861,6 @@ struct Map *HostMapP;
866 PortP->RxDataStart = 0; 861 PortP->RxDataStart = 0;
867 PortP->Cor2Copy = 0; 862 PortP->Cor2Copy = 0;
868 PortP->Name = &HostMapP->Name[0]; 863 PortP->Name = &HostMapP->Name[0];
869#ifdef STATS
870 bzero((caddr_t) & PortP->Stat, sizeof(struct RIOStats));
871#endif
872 PortP->statsGather = 0; 864 PortP->statsGather = 0;
873 PortP->txchars = 0; 865 PortP->txchars = 0;
874 PortP->rxchars = 0; 866 PortP->rxchars = 0;
@@ -876,10 +868,10 @@ struct Map *HostMapP;
876 PortP->closes = 0; 868 PortP->closes = 0;
877 PortP->ioctls = 0; 869 PortP->ioctls = 0;
878 if (PortP->TxRingBuffer) 870 if (PortP->TxRingBuffer)
879 bzero(PortP->TxRingBuffer, p->RIOBufferSize); 871 memset(PortP->TxRingBuffer, 0, p->RIOBufferSize);
880 else if (p->RIOBufferSize) { 872 else if (p->RIOBufferSize) {
881 PortP->TxRingBuffer = sysbrk(p->RIOBufferSize); 873 PortP->TxRingBuffer = kmalloc(p->RIOBufferSize, GFP_KERNEL);
882 bzero(PortP->TxRingBuffer, p->RIOBufferSize); 874 memset(PortP->TxRingBuffer, 0, p->RIOBufferSize);
883 } 875 }
884 PortP->TxBufferOut = 0; 876 PortP->TxBufferOut = 0;
885 PortP->TxBufferIn = 0; 877 PortP->TxBufferIn = 0;
@@ -890,7 +882,7 @@ struct Map *HostMapP;
890 ** If the same, we have received the same rx pkt from the RTA 882 ** If the same, we have received the same rx pkt from the RTA
891 ** twice. Initialise to a value not equal to PHB_RX_TGL or 0. 883 ** twice. Initialise to a value not equal to PHB_RX_TGL or 0.
892 */ 884 */
893 PortP->LastRxTgl = ~(uchar) PHB_RX_TGL; 885 PortP->LastRxTgl = ~(u8) PHB_RX_TGL;
894 886
895 /* 887 /*
896 ** and mark the port as usable 888 ** and mark the port as usable
@@ -906,9 +898,7 @@ struct Map *HostMapP;
906 return 0; 898 return 0;
907} 899}
908 900
909int RIOChangeName(p, MapP) 901int RIOChangeName(struct rio_info *p, struct Map *MapP)
910struct rio_info *p;
911struct Map *MapP;
912{ 902{
913 int host; 903 int host;
914 struct Map *HostMapP; 904 struct Map *HostMapP;