diff options
Diffstat (limited to 'drivers/char/rio')
-rw-r--r-- | drivers/char/rio/rioparam.c | 108 | ||||
-rw-r--r-- | drivers/char/rio/rioroute.c | 62 | ||||
-rw-r--r-- | drivers/char/rio/riotable.c | 76 | ||||
-rw-r--r-- | drivers/char/rio/riotty.c | 23 |
4 files changed, 115 insertions, 154 deletions
diff --git a/drivers/char/rio/rioparam.c b/drivers/char/rio/rioparam.c index c622f46d6d77..af25d2084f47 100644 --- a/drivers/char/rio/rioparam.c +++ b/drivers/char/rio/rioparam.c | |||
@@ -157,20 +157,16 @@ static char *_rioparam_c_sccs_ = "@(#)rioparam.c 1.3"; | |||
157 | ** NB. for MPX | 157 | ** NB. for MPX |
158 | ** tty lock must NOT have been previously acquired. | 158 | ** tty lock must NOT have been previously acquired. |
159 | */ | 159 | */ |
160 | int RIOParam(PortP, cmd, Modem, SleepFlag) | 160 | int RIOParam(struct Port *PortP, int cmd, int Modem, int SleepFlag) |
161 | struct Port *PortP; | ||
162 | int cmd; | ||
163 | int Modem; | ||
164 | int SleepFlag; | ||
165 | { | 161 | { |
166 | register struct tty_struct *TtyP; | 162 | struct tty_struct *TtyP; |
167 | int retval; | 163 | int retval; |
168 | register struct phb_param *phb_param_ptr; | 164 | struct phb_param *phb_param_ptr; |
169 | PKT *PacketP; | 165 | PKT *PacketP; |
170 | int res; | 166 | int res; |
171 | uchar Cor1 = 0, Cor2 = 0, Cor4 = 0, Cor5 = 0; | 167 | u8 Cor1 = 0, Cor2 = 0, Cor4 = 0, Cor5 = 0; |
172 | uchar TxXon = 0, TxXoff = 0, RxXon = 0, RxXoff = 0; | 168 | u8 TxXon = 0, TxXoff = 0, RxXon = 0, RxXoff = 0; |
173 | uchar LNext = 0, TxBaud = 0, RxBaud = 0; | 169 | u8 LNext = 0, TxBaud = 0, RxBaud = 0; |
174 | int retries = 0xff; | 170 | int retries = 0xff; |
175 | unsigned long flags; | 171 | unsigned long flags; |
176 | 172 | ||
@@ -226,15 +222,12 @@ int SleepFlag; | |||
226 | if (retval == RIO_FAIL) { | 222 | if (retval == RIO_FAIL) { |
227 | rio_dprintk(RIO_DEBUG_PARAM, "wait for can_add_transmit broken by signal\n"); | 223 | rio_dprintk(RIO_DEBUG_PARAM, "wait for can_add_transmit broken by signal\n"); |
228 | rio_spin_unlock_irqrestore(&PortP->portSem, flags); | 224 | rio_spin_unlock_irqrestore(&PortP->portSem, flags); |
229 | pseterr(EINTR); | ||
230 | func_exit(); | 225 | func_exit(); |
231 | 226 | return -EINTR; | |
232 | return RIO_FAIL; | ||
233 | } | 227 | } |
234 | if (PortP->State & RIO_DELETED) { | 228 | if (PortP->State & RIO_DELETED) { |
235 | rio_spin_unlock_irqrestore(&PortP->portSem, flags); | 229 | rio_spin_unlock_irqrestore(&PortP->portSem, flags); |
236 | func_exit(); | 230 | func_exit(); |
237 | |||
238 | return RIO_SUCCESS; | 231 | return RIO_SUCCESS; |
239 | } | 232 | } |
240 | } | 233 | } |
@@ -247,7 +240,7 @@ int SleepFlag; | |||
247 | } | 240 | } |
248 | 241 | ||
249 | rio_dprintk(RIO_DEBUG_PARAM, "can_add_transmit() returns %x\n", res); | 242 | rio_dprintk(RIO_DEBUG_PARAM, "can_add_transmit() returns %x\n", res); |
250 | rio_dprintk(RIO_DEBUG_PARAM, "Packet is 0x%x\n", (int) PacketP); | 243 | rio_dprintk(RIO_DEBUG_PARAM, "Packet is 0x%p\n", PacketP); |
251 | 244 | ||
252 | phb_param_ptr = (struct phb_param *) PacketP->data; | 245 | phb_param_ptr = (struct phb_param *) PacketP->data; |
253 | 246 | ||
@@ -474,9 +467,6 @@ int SleepFlag; | |||
474 | e(115200); /* e(230400);e(460800); e(921600); */ | 467 | e(115200); /* e(230400);e(460800); e(921600); */ |
475 | } | 468 | } |
476 | 469 | ||
477 | /* XXX MIssing conversion table. XXX */ | ||
478 | /* (TtyP->termios->c_cflag & V_CBAUD); */ | ||
479 | |||
480 | rio_dprintk(RIO_DEBUG_PARAM, "tx baud 0x%x, rx baud 0x%x\n", TxBaud, RxBaud); | 470 | rio_dprintk(RIO_DEBUG_PARAM, "tx baud 0x%x, rx baud 0x%x\n", TxBaud, RxBaud); |
481 | 471 | ||
482 | 472 | ||
@@ -552,23 +542,23 @@ int SleepFlag; | |||
552 | /* | 542 | /* |
553 | ** Actually write the info into the packet to be sent | 543 | ** Actually write the info into the packet to be sent |
554 | */ | 544 | */ |
555 | WBYTE(phb_param_ptr->Cmd, cmd); | 545 | writeb(cmd, &phb_param_ptr->Cmd); |
556 | WBYTE(phb_param_ptr->Cor1, Cor1); | 546 | writeb(Cor1, &phb_param_ptr->Cor1); |
557 | WBYTE(phb_param_ptr->Cor2, Cor2); | 547 | writeb(Cor2, &phb_param_ptr->Cor2); |
558 | WBYTE(phb_param_ptr->Cor4, Cor4); | 548 | writeb(Cor4, &phb_param_ptr->Cor4); |
559 | WBYTE(phb_param_ptr->Cor5, Cor5); | 549 | writeb(Cor5, &phb_param_ptr->Cor5); |
560 | WBYTE(phb_param_ptr->TxXon, TxXon); | 550 | writeb(TxXon, &phb_param_ptr->TxXon); |
561 | WBYTE(phb_param_ptr->RxXon, RxXon); | 551 | writeb(RxXon, &phb_param_ptr->RxXon); |
562 | WBYTE(phb_param_ptr->TxXoff, TxXoff); | 552 | writeb(TxXoff, &phb_param_ptr->TxXoff); |
563 | WBYTE(phb_param_ptr->RxXoff, RxXoff); | 553 | writeb(RxXoff, &phb_param_ptr->RxXoff); |
564 | WBYTE(phb_param_ptr->LNext, LNext); | 554 | writeb(LNext, &phb_param_ptr->LNext); |
565 | WBYTE(phb_param_ptr->TxBaud, TxBaud); | 555 | writeb(TxBaud, &phb_param_ptr->TxBaud); |
566 | WBYTE(phb_param_ptr->RxBaud, RxBaud); | 556 | writeb(RxBaud, &phb_param_ptr->RxBaud); |
567 | 557 | ||
568 | /* | 558 | /* |
569 | ** Set the length/command field | 559 | ** Set the length/command field |
570 | */ | 560 | */ |
571 | WBYTE(PacketP->len, 12 | PKT_CMD_BIT); | 561 | writeb(12 | PKT_CMD_BIT, &PacketP->len); |
572 | 562 | ||
573 | /* | 563 | /* |
574 | ** The packet is formed - now, whack it off | 564 | ** The packet is formed - now, whack it off |
@@ -597,15 +587,13 @@ int SleepFlag; | |||
597 | ** We can add another packet to a transmit queue if the packet pointer pointed | 587 | ** We can add another packet to a transmit queue if the packet pointer pointed |
598 | ** to by the TxAdd pointer has PKT_IN_USE clear in its address. | 588 | ** to by the TxAdd pointer has PKT_IN_USE clear in its address. |
599 | */ | 589 | */ |
600 | int can_add_transmit(PktP, PortP) | 590 | int can_add_transmit(PKT **PktP, struct Port *PortP) |
601 | PKT **PktP; | ||
602 | struct Port *PortP; | ||
603 | { | 591 | { |
604 | register PKT *tp; | 592 | PKT *tp; |
605 | 593 | ||
606 | *PktP = tp = (PKT *) RIO_PTR(PortP->Caddr, RWORD(*PortP->TxAdd)); | 594 | *PktP = tp = (PKT *) RIO_PTR(PortP->Caddr, readw(PortP->TxAdd)); |
607 | 595 | ||
608 | return !((uint) tp & PKT_IN_USE); | 596 | return !((unsigned long) tp & PKT_IN_USE); |
609 | } | 597 | } |
610 | 598 | ||
611 | /* | 599 | /* |
@@ -613,24 +601,21 @@ struct Port *PortP; | |||
613 | ** and then move the TxAdd pointer along one position to point to the next | 601 | ** and then move the TxAdd pointer along one position to point to the next |
614 | ** packet pointer. You must wrap the pointer from the end back to the start. | 602 | ** packet pointer. You must wrap the pointer from the end back to the start. |
615 | */ | 603 | */ |
616 | void add_transmit(PortP) | 604 | void add_transmit(struct Port *PortP) |
617 | struct Port *PortP; | ||
618 | { | 605 | { |
619 | if (RWORD(*PortP->TxAdd) & PKT_IN_USE) { | 606 | if (readw(PortP->TxAdd) & PKT_IN_USE) { |
620 | rio_dprintk(RIO_DEBUG_PARAM, "add_transmit: Packet has been stolen!"); | 607 | rio_dprintk(RIO_DEBUG_PARAM, "add_transmit: Packet has been stolen!"); |
621 | } | 608 | } |
622 | WWORD(*(ushort *) PortP->TxAdd, RWORD(*PortP->TxAdd) | PKT_IN_USE); | 609 | writew(readw(PortP->TxAdd) | PKT_IN_USE, PortP->TxAdd); |
623 | PortP->TxAdd = (PortP->TxAdd == PortP->TxEnd) ? PortP->TxStart : PortP->TxAdd + 1; | 610 | PortP->TxAdd = (PortP->TxAdd == PortP->TxEnd) ? PortP->TxStart : PortP->TxAdd + 1; |
624 | WWORD(PortP->PhbP->tx_add, RIO_OFF(PortP->Caddr, PortP->TxAdd)); | 611 | writew(RIO_OFF(PortP->Caddr, PortP->TxAdd), &PortP->PhbP->tx_add); |
625 | } | 612 | } |
626 | 613 | ||
627 | /**************************************** | 614 | /**************************************** |
628 | * Put a packet onto the end of the | 615 | * Put a packet onto the end of the |
629 | * free list | 616 | * free list |
630 | ****************************************/ | 617 | ****************************************/ |
631 | void put_free_end(HostP, PktP) | 618 | void put_free_end(struct Host *HostP, PKT *PktP) |
632 | struct Host *HostP; | ||
633 | PKT *PktP; | ||
634 | { | 619 | { |
635 | FREE_LIST *tmp_pointer; | 620 | FREE_LIST *tmp_pointer; |
636 | ushort old_end, new_end; | 621 | ushort old_end, new_end; |
@@ -643,21 +628,21 @@ PKT *PktP; | |||
643 | * | 628 | * |
644 | ************************************************/ | 629 | ************************************************/ |
645 | 630 | ||
646 | rio_dprintk(RIO_DEBUG_PFE, "put_free_end(PktP=%x)\n", (int) PktP); | 631 | rio_dprintk(RIO_DEBUG_PFE, "put_free_end(PktP=%p)\n", PktP); |
647 | 632 | ||
648 | if ((old_end = RWORD(HostP->ParmMapP->free_list_end)) != TPNULL) { | 633 | if ((old_end = readw(&HostP->ParmMapP->free_list_end)) != TPNULL) { |
649 | new_end = RIO_OFF(HostP->Caddr, PktP); | 634 | new_end = RIO_OFF(HostP->Caddr, PktP); |
650 | tmp_pointer = (FREE_LIST *) RIO_PTR(HostP->Caddr, old_end); | 635 | tmp_pointer = (FREE_LIST *) RIO_PTR(HostP->Caddr, old_end); |
651 | WWORD(tmp_pointer->next, new_end); | 636 | writew(new_end, &tmp_pointer->next); |
652 | WWORD(((FREE_LIST *) PktP)->prev, old_end); | 637 | writew(old_end, &((FREE_LIST *) PktP)->prev); |
653 | WWORD(((FREE_LIST *) PktP)->next, TPNULL); | 638 | writew(TPNULL, &((FREE_LIST *) PktP)->next); |
654 | WWORD(HostP->ParmMapP->free_list_end, new_end); | 639 | writew(new_end, &HostP->ParmMapP->free_list_end); |
655 | } else { /* First packet on the free list this should never happen! */ | 640 | } else { /* First packet on the free list this should never happen! */ |
656 | rio_dprintk(RIO_DEBUG_PFE, "put_free_end(): This should never happen\n"); | 641 | rio_dprintk(RIO_DEBUG_PFE, "put_free_end(): This should never happen\n"); |
657 | WWORD(HostP->ParmMapP->free_list_end, RIO_OFF(HostP->Caddr, PktP)); | 642 | writew(RIO_OFF(HostP->Caddr, PktP), &HostP->ParmMapP->free_list_end); |
658 | tmp_pointer = (FREE_LIST *) PktP; | 643 | tmp_pointer = (FREE_LIST *) PktP; |
659 | WWORD(tmp_pointer->prev, TPNULL); | 644 | writew(TPNULL, &tmp_pointer->prev); |
660 | WWORD(tmp_pointer->next, TPNULL); | 645 | writew(TPNULL, &tmp_pointer->next); |
661 | } | 646 | } |
662 | rio_dprintk(RIO_DEBUG_CMD, "Before unlock: %p\n", &HostP->HostLock); | 647 | rio_dprintk(RIO_DEBUG_CMD, "Before unlock: %p\n", &HostP->HostLock); |
663 | rio_spin_unlock_irqrestore(&HostP->HostLock, flags); | 648 | rio_spin_unlock_irqrestore(&HostP->HostLock, flags); |
@@ -669,12 +654,10 @@ PKT *PktP; | |||
669 | ** relevant packet, [having cleared the PKT_IN_USE bit]. If PKT_IN_USE is clear, | 654 | ** relevant packet, [having cleared the PKT_IN_USE bit]. If PKT_IN_USE is clear, |
670 | ** then can_remove_receive() returns 0. | 655 | ** then can_remove_receive() returns 0. |
671 | */ | 656 | */ |
672 | int can_remove_receive(PktP, PortP) | 657 | int can_remove_receive(PKT **PktP, struct Port *PortP) |
673 | PKT **PktP; | ||
674 | struct Port *PortP; | ||
675 | { | 658 | { |
676 | if (RWORD(*PortP->RxRemove) & PKT_IN_USE) { | 659 | if (readw(PortP->RxRemove) & PKT_IN_USE) { |
677 | *PktP = (PKT *) RIO_PTR(PortP->Caddr, RWORD(*PortP->RxRemove) & ~PKT_IN_USE); | 660 | *PktP = (PKT *) RIO_PTR(PortP->Caddr, readw(PortP->RxRemove) & ~PKT_IN_USE); |
678 | return 1; | 661 | return 1; |
679 | } | 662 | } |
680 | return 0; | 663 | return 0; |
@@ -685,10 +668,9 @@ struct Port *PortP; | |||
685 | ** and then bump the pointers. Once the pointers get to the end, they must | 668 | ** and then bump the pointers. Once the pointers get to the end, they must |
686 | ** be wrapped back to the start. | 669 | ** be wrapped back to the start. |
687 | */ | 670 | */ |
688 | void remove_receive(PortP) | 671 | void remove_receive(struct Port *PortP) |
689 | struct Port *PortP; | ||
690 | { | 672 | { |
691 | WWORD(*PortP->RxRemove, RWORD(*PortP->RxRemove) & ~PKT_IN_USE); | 673 | writew(readw(PortP->RxRemove) & ~PKT_IN_USE, PortP->RxRemove); |
692 | PortP->RxRemove = (PortP->RxRemove == PortP->RxEnd) ? PortP->RxStart : PortP->RxRemove + 1; | 674 | PortP->RxRemove = (PortP->RxRemove == PortP->RxEnd) ? PortP->RxStart : PortP->RxRemove + 1; |
693 | WWORD(PortP->PhbP->rx_remove, RIO_OFF(PortP->Caddr, PortP->RxRemove)); | 675 | writew(RIO_OFF(PortP->Caddr, PortP->RxRemove), &PortP->PhbP->rx_remove); |
694 | } | 676 | } |
diff --git a/drivers/char/rio/rioroute.c b/drivers/char/rio/rioroute.c index f98888f52659..874ac7462388 100644 --- a/drivers/char/rio/rioroute.c +++ b/drivers/char/rio/rioroute.c | |||
@@ -115,7 +115,7 @@ int RIORouteRup(struct rio_info *p, uint Rup, struct Host *HostP, PKT * PacketP) | |||
115 | /* | 115 | /* |
116 | ** Is this unit telling us it's current link topology? | 116 | ** Is this unit telling us it's current link topology? |
117 | */ | 117 | */ |
118 | if (RBYTE(PktCmdP->Command) == ROUTE_TOPOLOGY) { | 118 | if (readb(&PktCmdP->Command) == ROUTE_TOPOLOGY) { |
119 | MapP = HostP->Mapping; | 119 | MapP = HostP->Mapping; |
120 | 120 | ||
121 | /* | 121 | /* |
@@ -151,11 +151,11 @@ int RIORouteRup(struct rio_info *p, uint Rup, struct Host *HostP, PKT * PacketP) | |||
151 | ** it won't lie about network interconnect, total disconnects | 151 | ** it won't lie about network interconnect, total disconnects |
152 | ** and no-IDs. (or at least, it doesn't *matter* if it does) | 152 | ** and no-IDs. (or at least, it doesn't *matter* if it does) |
153 | */ | 153 | */ |
154 | if (RBYTE(PktCmdP->RouteTopology[ThisLink].Unit) > (ushort) MAX_RUP) | 154 | if (readb(&PktCmdP->RouteTopology[ThisLink].Unit) > (ushort) MAX_RUP) |
155 | continue; | 155 | continue; |
156 | 156 | ||
157 | for (NewLink = ThisLinkMin; NewLink < ThisLink; NewLink++) { | 157 | for (NewLink = ThisLinkMin; NewLink < ThisLink; NewLink++) { |
158 | if ((RBYTE(PktCmdP->RouteTopology[ThisLink].Unit) == RBYTE(PktCmdP->RouteTopology[NewLink].Unit)) && (RBYTE(PktCmdP->RouteTopology[ThisLink].Link) == RBYTE(PktCmdP->RouteTopology[NewLink].Link))) { | 158 | if ((readb(&PktCmdP->RouteTopology[ThisLink].Unit) == readb(&PktCmdP->RouteTopology[NewLink].Unit)) && (readb(&PktCmdP->RouteTopology[ThisLink].Link) == readb(&PktCmdP->RouteTopology[NewLink].Link))) { |
159 | Lies++; | 159 | Lies++; |
160 | } | 160 | } |
161 | } | 161 | } |
@@ -164,10 +164,10 @@ int RIORouteRup(struct rio_info *p, uint Rup, struct Host *HostP, PKT * PacketP) | |||
164 | if (Lies) { | 164 | if (Lies) { |
165 | rio_dprintk(RIO_DEBUG_ROUTE, "LIES! DAMN LIES! %d LIES!\n", Lies); | 165 | rio_dprintk(RIO_DEBUG_ROUTE, "LIES! DAMN LIES! %d LIES!\n", Lies); |
166 | rio_dprintk(RIO_DEBUG_ROUTE, "%d:%c %d:%c %d:%c %d:%c\n", | 166 | rio_dprintk(RIO_DEBUG_ROUTE, "%d:%c %d:%c %d:%c %d:%c\n", |
167 | RBYTE(PktCmdP->RouteTopology[0].Unit), | 167 | readb(&PktCmdP->RouteTopology[0].Unit), |
168 | 'A' + RBYTE(PktCmdP->RouteTopology[0].Link), | 168 | 'A' + readb(&PktCmdP->RouteTopology[0].Link), |
169 | RBYTE(PktCmdP->RouteTopology[1].Unit), | 169 | readb(&PktCmdP->RouteTopology[1].Unit), |
170 | 'A' + RBYTE(PktCmdP->RouteTopology[1].Link), RBYTE(PktCmdP->RouteTopology[2].Unit), 'A' + RBYTE(PktCmdP->RouteTopology[2].Link), RBYTE(PktCmdP->RouteTopology[3].Unit), 'A' + RBYTE(PktCmdP->RouteTopology[3].Link)); | 170 | 'A' + readb(&PktCmdP->RouteTopology[1].Link), readb(&PktCmdP->RouteTopology[2].Unit), 'A' + readb(&PktCmdP->RouteTopology[2].Link), readb(&PktCmdP->RouteTopology[3].Unit), 'A' + readb(&PktCmdP->RouteTopology[3].Link)); |
171 | return TRUE; | 171 | return TRUE; |
172 | } | 172 | } |
173 | 173 | ||
@@ -184,8 +184,8 @@ int RIORouteRup(struct rio_info *p, uint Rup, struct Host *HostP, PKT * PacketP) | |||
184 | /* | 184 | /* |
185 | ** this is what it is now connected to | 185 | ** this is what it is now connected to |
186 | */ | 186 | */ |
187 | NewUnit = RBYTE(PktCmdP->RouteTopology[ThisLink].Unit); | 187 | NewUnit = readb(&PktCmdP->RouteTopology[ThisLink].Unit); |
188 | NewLink = RBYTE(PktCmdP->RouteTopology[ThisLink].Link); | 188 | NewLink = readb(&PktCmdP->RouteTopology[ThisLink].Link); |
189 | 189 | ||
190 | if (OldUnit != NewUnit || OldLink != NewLink) { | 190 | if (OldUnit != NewUnit || OldLink != NewLink) { |
191 | /* | 191 | /* |
@@ -219,7 +219,7 @@ int RIORouteRup(struct rio_info *p, uint Rup, struct Host *HostP, PKT * PacketP) | |||
219 | 219 | ||
220 | if (NewUnit == ROUTE_INTERCONNECT) { | 220 | if (NewUnit == ROUTE_INTERCONNECT) { |
221 | if (!p->RIONoMessage) | 221 | if (!p->RIONoMessage) |
222 | cprintf("%s '%s' (%c) is connected to another network.\n", MyType, MyName, 'A' + ThisLink); | 222 | printk(KERN_DEBUG "rio: %s '%s' (%c) is connected to another network.\n", MyType, MyName, 'A' + ThisLink); |
223 | } | 223 | } |
224 | 224 | ||
225 | /* | 225 | /* |
@@ -264,12 +264,12 @@ int RIORouteRup(struct rio_info *p, uint Rup, struct Host *HostP, PKT * PacketP) | |||
264 | /* | 264 | /* |
265 | ** The only other command we recognise is a route_request command | 265 | ** The only other command we recognise is a route_request command |
266 | */ | 266 | */ |
267 | if (RBYTE(PktCmdP->Command) != ROUTE_REQUEST) { | 267 | if (readb(&PktCmdP->Command) != ROUTE_REQUEST) { |
268 | rio_dprintk(RIO_DEBUG_ROUTE, "Unknown command %d received on rup %d host %d ROUTE_RUP\n", RBYTE(PktCmdP->Command), Rup, (int) HostP); | 268 | rio_dprintk(RIO_DEBUG_ROUTE, "Unknown command %d received on rup %d host %p ROUTE_RUP\n", readb(&PktCmdP->Command), Rup, HostP); |
269 | return TRUE; | 269 | return TRUE; |
270 | } | 270 | } |
271 | 271 | ||
272 | RtaUniq = (RBYTE(PktCmdP->UniqNum[0])) + (RBYTE(PktCmdP->UniqNum[1]) << 8) + (RBYTE(PktCmdP->UniqNum[2]) << 16) + (RBYTE(PktCmdP->UniqNum[3]) << 24); | 272 | RtaUniq = (readb(&PktCmdP->UniqNum[0])) + (readb(&PktCmdP->UniqNum[1]) << 8) + (readb(&PktCmdP->UniqNum[2]) << 16) + (readb(&PktCmdP->UniqNum[3]) << 24); |
273 | 273 | ||
274 | /* | 274 | /* |
275 | ** Determine if 8 or 16 port RTA | 275 | ** Determine if 8 or 16 port RTA |
@@ -278,7 +278,7 @@ int RIORouteRup(struct rio_info *p, uint Rup, struct Host *HostP, PKT * PacketP) | |||
278 | 278 | ||
279 | rio_dprintk(RIO_DEBUG_ROUTE, "Received a request for an ID for serial number %x\n", RtaUniq); | 279 | rio_dprintk(RIO_DEBUG_ROUTE, "Received a request for an ID for serial number %x\n", RtaUniq); |
280 | 280 | ||
281 | Mod = RBYTE(PktCmdP->ModuleTypes); | 281 | Mod = readb(&PktCmdP->ModuleTypes); |
282 | Mod1 = LONYBLE(Mod); | 282 | Mod1 = LONYBLE(Mod); |
283 | if (RtaType == TYPE_RTA16) { | 283 | if (RtaType == TYPE_RTA16) { |
284 | /* | 284 | /* |
@@ -348,7 +348,7 @@ int RIORouteRup(struct rio_info *p, uint Rup, struct Host *HostP, PKT * PacketP) | |||
348 | if ((HostP->Mapping[ThisUnit].Flags & SLOT_IN_USE) && !(HostP->Mapping[ThisUnit].Flags & RTA_BOOTED)) { | 348 | if ((HostP->Mapping[ThisUnit].Flags & SLOT_IN_USE) && !(HostP->Mapping[ThisUnit].Flags & RTA_BOOTED)) { |
349 | if (!(HostP->Mapping[ThisUnit].Flags & MSG_DONE)) { | 349 | if (!(HostP->Mapping[ThisUnit].Flags & MSG_DONE)) { |
350 | if (!p->RIONoMessage) | 350 | if (!p->RIONoMessage) |
351 | cprintf("RTA '%s' is being updated.\n", HostP->Mapping[ThisUnit].Name); | 351 | printk(KERN_DEBUG "rio: RTA '%s' is being updated.\n", HostP->Mapping[ThisUnit].Name); |
352 | HostP->Mapping[ThisUnit].Flags |= MSG_DONE; | 352 | HostP->Mapping[ThisUnit].Flags |= MSG_DONE; |
353 | } | 353 | } |
354 | PktReplyP->Command = ROUTE_FOAD; | 354 | PktReplyP->Command = ROUTE_FOAD; |
@@ -475,7 +475,7 @@ int RIORouteRup(struct rio_info *p, uint Rup, struct Host *HostP, PKT * PacketP) | |||
475 | 475 | ||
476 | if (!UnknownMesgDone) { | 476 | if (!UnknownMesgDone) { |
477 | if (!p->RIONoMessage) | 477 | if (!p->RIONoMessage) |
478 | cprintf("One or more unknown RTAs are being updated.\n"); | 478 | printk(KERN_DEBUG "rio: One or more unknown RTAs are being updated.\n"); |
479 | UnknownMesgDone = 1; | 479 | UnknownMesgDone = 1; |
480 | } | 480 | } |
481 | 481 | ||
@@ -527,7 +527,7 @@ uint unit; | |||
527 | */ | 527 | */ |
528 | PortP = p->RIOPortp[HostP->Mapping[dest_unit - 1].SysPort]; | 528 | PortP = p->RIOPortp[HostP->Mapping[dest_unit - 1].SysPort]; |
529 | 529 | ||
530 | link = RWORD(PortP->PhbP->link); | 530 | link = readw(&PortP->PhbP->link); |
531 | 531 | ||
532 | for (port = 0; port < PORTS_PER_RTA; port++, PortN++) { | 532 | for (port = 0; port < PORTS_PER_RTA; port++, PortN++) { |
533 | ushort dest_port = port + 8; | 533 | ushort dest_port = port + 8; |
@@ -569,18 +569,18 @@ uint unit; | |||
569 | ** card. This needs to be translated into a 32 bit pointer | 569 | ** card. This needs to be translated into a 32 bit pointer |
570 | ** so it can be accessed from the driver. | 570 | ** so it can be accessed from the driver. |
571 | */ | 571 | */ |
572 | Pkt = (PKT *) RIO_PTR(HostP->Caddr, RINDW(TxPktP)); | 572 | Pkt = (PKT *) RIO_PTR(HostP->Caddr, readw(TxPktP)); |
573 | 573 | ||
574 | /* | 574 | /* |
575 | ** If the packet is used, reset it. | 575 | ** If the packet is used, reset it. |
576 | */ | 576 | */ |
577 | Pkt = (PKT *) ((uint) Pkt & ~PKT_IN_USE); | 577 | Pkt = (PKT *) ((unsigned long) Pkt & ~PKT_IN_USE); |
578 | WBYTE(Pkt->dest_unit, dest_unit); | 578 | writeb(dest_unit, &Pkt->dest_unit); |
579 | WBYTE(Pkt->dest_port, dest_port); | 579 | writeb(dest_port, &Pkt->dest_port); |
580 | } | 580 | } |
581 | rio_dprintk(RIO_DEBUG_ROUTE, "phb dest: Old %x:%x New %x:%x\n", RWORD(PortP->PhbP->destination) & 0xff, (RWORD(PortP->PhbP->destination) >> 8) & 0xff, dest_unit, dest_port); | 581 | rio_dprintk(RIO_DEBUG_ROUTE, "phb dest: Old %x:%x New %x:%x\n", readw(&PortP->PhbP->destination) & 0xff, (readw(&PortP->PhbP->destination) >> 8) & 0xff, dest_unit, dest_port); |
582 | WWORD(PortP->PhbP->destination, dest_unit + (dest_port << 8)); | 582 | writew(dest_unit + (dest_port << 8), &PortP->PhbP->destination); |
583 | WWORD(PortP->PhbP->link, link); | 583 | writew(link, &PortP->PhbP->link); |
584 | 584 | ||
585 | rio_spin_unlock_irqrestore(&PortP->portSem, flags); | 585 | rio_spin_unlock_irqrestore(&PortP->portSem, flags); |
586 | } | 586 | } |
@@ -590,9 +590,9 @@ uint unit; | |||
590 | */ | 590 | */ |
591 | if (link > 3) | 591 | if (link > 3) |
592 | return; | 592 | return; |
593 | if (((unit * 8) + 7) > RWORD(HostP->LinkStrP[link].last_port)) { | 593 | if (((unit * 8) + 7) > readw(&HostP->LinkStrP[link].last_port)) { |
594 | rio_dprintk(RIO_DEBUG_ROUTE, "last port on host link %d: %d\n", link, (unit * 8) + 7); | 594 | rio_dprintk(RIO_DEBUG_ROUTE, "last port on host link %d: %d\n", link, (unit * 8) + 7); |
595 | WWORD(HostP->LinkStrP[link].last_port, (unit * 8) + 7); | 595 | writew((unit * 8) + 7, &HostP->LinkStrP[link].last_port); |
596 | } | 596 | } |
597 | } | 597 | } |
598 | } | 598 | } |
@@ -818,7 +818,7 @@ int Change; | |||
818 | ToType = ToId ? "RTA" : "HOST"; | 818 | ToType = ToId ? "RTA" : "HOST"; |
819 | 819 | ||
820 | rio_dprintk(RIO_DEBUG_ROUTE, "Link between %s '%s' (%c) and %s '%s' (%c) %s.\n", FromType, FromName, 'A' + FromLink, ToType, ToName, 'A' + ToLink, (Change == CONNECT) ? "established" : "disconnected"); | 820 | rio_dprintk(RIO_DEBUG_ROUTE, "Link between %s '%s' (%c) and %s '%s' (%c) %s.\n", FromType, FromName, 'A' + FromLink, ToType, ToName, 'A' + ToLink, (Change == CONNECT) ? "established" : "disconnected"); |
821 | cprintf("Link between %s '%s' (%c) and %s '%s' (%c) %s.\n", FromType, FromName, 'A' + FromLink, ToType, ToName, 'A' + ToLink, (Change == CONNECT) ? "established" : "disconnected"); | 821 | printk(KERN_DEBUG "rio: Link between %s '%s' (%c) and %s '%s' (%c) %s.\n", FromType, FromName, 'A' + FromLink, ToType, ToName, 'A' + ToLink, (Change == CONNECT) ? "established" : "disconnected"); |
822 | } | 822 | } |
823 | 823 | ||
824 | /* | 824 | /* |
@@ -838,7 +838,7 @@ static int RIORemoveFromSavedTable(struct rio_info *p, struct Map *pMap) | |||
838 | */ | 838 | */ |
839 | for (entry = 0; entry < TOTAL_MAP_ENTRIES; entry++) { | 839 | for (entry = 0; entry < TOTAL_MAP_ENTRIES; entry++) { |
840 | if (p->RIOSavedTable[entry].RtaUniqueNum == pMap->RtaUniqueNum) { | 840 | if (p->RIOSavedTable[entry].RtaUniqueNum == pMap->RtaUniqueNum) { |
841 | bzero((caddr_t) & p->RIOSavedTable[entry], sizeof(struct Map)); | 841 | memset(&p->RIOSavedTable[entry], 0, sizeof(struct Map)); |
842 | } | 842 | } |
843 | } | 843 | } |
844 | return 0; | 844 | return 0; |
@@ -898,7 +898,7 @@ static int RIOFreeDisconnected(struct rio_info *p, struct Host *HostP, int unit) | |||
898 | int nOther = (HostP->Mapping[unit].ID2) - 1; | 898 | int nOther = (HostP->Mapping[unit].ID2) - 1; |
899 | 899 | ||
900 | rio_dprintk(RIO_DEBUG_ROUTE, "RioFreedis second slot %d.\n", nOther); | 900 | rio_dprintk(RIO_DEBUG_ROUTE, "RioFreedis second slot %d.\n", nOther); |
901 | bzero((caddr_t) & HostP->Mapping[nOther], sizeof(struct Map)); | 901 | memset(&HostP->Mapping[nOther], 0, sizeof(struct Map)); |
902 | } | 902 | } |
903 | RIORemoveFromSavedTable(p, &HostP->Mapping[unit]); | 903 | RIORemoveFromSavedTable(p, &HostP->Mapping[unit]); |
904 | 904 | ||
@@ -997,7 +997,7 @@ int RIOFindFreeID(struct rio_info *p, struct Host *HostP, uint * pID1, uint * pI | |||
997 | /* | 997 | /* |
998 | ** Clear out this slot now that we intend to use it. | 998 | ** Clear out this slot now that we intend to use it. |
999 | */ | 999 | */ |
1000 | bzero(&HostP->Mapping[unit], sizeof(struct Map)); | 1000 | memset(&HostP->Mapping[unit], 0, sizeof(struct Map)); |
1001 | 1001 | ||
1002 | /* | 1002 | /* |
1003 | ** If the second ID is not needed then we can return | 1003 | ** If the second ID is not needed then we can return |
@@ -1015,7 +1015,7 @@ int RIOFindFreeID(struct rio_info *p, struct Host *HostP, uint * pID1, uint * pI | |||
1015 | /* | 1015 | /* |
1016 | ** Clear out this slot now that we intend to use it. | 1016 | ** Clear out this slot now that we intend to use it. |
1017 | */ | 1017 | */ |
1018 | bzero(&HostP->Mapping[unit], sizeof(struct Map)); | 1018 | memset(&HostP->Mapping[unit], 0, sizeof(struct Map)); |
1019 | 1019 | ||
1020 | /* At this point under the right(wrong?) conditions | 1020 | /* At this point under the right(wrong?) conditions |
1021 | ** we may have a first unit ID being higher than the | 1021 | ** we may have a first unit ID being higher than the |
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 | */ |
94 | int RIONewTable(p) | 94 | int RIONewTable(struct rio_info *p) |
95 | struct 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 | */ |
413 | int RIOApel(p) | 414 | int RIOApel(struct rio_info *p) |
414 | struct 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 | */ |
466 | int RIODeleteRta(p, MapP) | 466 | int RIODeleteRta(struct rio_info *p, struct Map *MapP) |
467 | struct rio_info *p; | ||
468 | struct 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 | ||
745 | int RIOReMapPorts(p, HostP, HostMapP) | 743 | int RIOReMapPorts(struct rio_info *p, struct Host *HostP, struct Map *HostMapP) |
746 | struct rio_info *p; | ||
747 | struct Host *HostP; | ||
748 | struct 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 | ||
909 | int RIOChangeName(p, MapP) | 901 | int RIOChangeName(struct rio_info *p, struct Map *MapP) |
910 | struct rio_info *p; | ||
911 | struct Map *MapP; | ||
912 | { | 902 | { |
913 | int host; | 903 | int host; |
914 | struct Map *HostMapP; | 904 | struct Map *HostMapP; |
diff --git a/drivers/char/rio/riotty.c b/drivers/char/rio/riotty.c index 6379816ed173..0ca431b4c474 100644 --- a/drivers/char/rio/riotty.c +++ b/drivers/char/rio/riotty.c | |||
@@ -136,7 +136,7 @@ extern struct rio_info *p; | |||
136 | 136 | ||
137 | int riotopen(struct tty_struct *tty, struct file *filp) | 137 | int riotopen(struct tty_struct *tty, struct file *filp) |
138 | { | 138 | { |
139 | register uint SysPort; | 139 | unsigned int SysPort; |
140 | int Modem; | 140 | int Modem; |
141 | int repeat_this = 250; | 141 | int repeat_this = 250; |
142 | struct Port *PortP; /* pointer to the port structure */ | 142 | struct Port *PortP; /* pointer to the port structure */ |
@@ -155,7 +155,6 @@ int riotopen(struct tty_struct *tty, struct file *filp) | |||
155 | 155 | ||
156 | if (p->RIOFailed) { | 156 | if (p->RIOFailed) { |
157 | rio_dprintk(RIO_DEBUG_TTY, "System initialisation failed\n"); | 157 | rio_dprintk(RIO_DEBUG_TTY, "System initialisation failed\n"); |
158 | pseterr(ENXIO); | ||
159 | func_exit(); | 158 | func_exit(); |
160 | return -ENXIO; | 159 | return -ENXIO; |
161 | } | 160 | } |
@@ -170,7 +169,6 @@ int riotopen(struct tty_struct *tty, struct file *filp) | |||
170 | */ | 169 | */ |
171 | if (SysPort >= RIO_PORTS) { /* out of range ? */ | 170 | if (SysPort >= RIO_PORTS) { /* out of range ? */ |
172 | rio_dprintk(RIO_DEBUG_TTY, "Illegal port number %d\n", SysPort); | 171 | rio_dprintk(RIO_DEBUG_TTY, "Illegal port number %d\n", SysPort); |
173 | pseterr(ENXIO); | ||
174 | func_exit(); | 172 | func_exit(); |
175 | return -ENXIO; | 173 | return -ENXIO; |
176 | } | 174 | } |
@@ -187,7 +185,6 @@ int riotopen(struct tty_struct *tty, struct file *filp) | |||
187 | */ | 185 | */ |
188 | rio_dprintk(RIO_DEBUG_TTY, "port not mapped into system\n"); | 186 | rio_dprintk(RIO_DEBUG_TTY, "port not mapped into system\n"); |
189 | func_exit(); | 187 | func_exit(); |
190 | pseterr(ENXIO); | ||
191 | return -ENXIO; | 188 | return -ENXIO; |
192 | } | 189 | } |
193 | 190 | ||
@@ -209,7 +206,6 @@ int riotopen(struct tty_struct *tty, struct file *filp) | |||
209 | */ | 206 | */ |
210 | if ((PortP->HostP->Flags & RUN_STATE) != RC_RUNNING) { | 207 | if ((PortP->HostP->Flags & RUN_STATE) != RC_RUNNING) { |
211 | rio_dprintk(RIO_DEBUG_TTY, "Host not running\n"); | 208 | rio_dprintk(RIO_DEBUG_TTY, "Host not running\n"); |
212 | pseterr(ENXIO); | ||
213 | func_exit(); | 209 | func_exit(); |
214 | return -ENXIO; | 210 | return -ENXIO; |
215 | } | 211 | } |
@@ -429,9 +425,6 @@ int riotopen(struct tty_struct *tty, struct file *filp) | |||
429 | 425 | ||
430 | rio_dprintk(RIO_DEBUG_TTY, "high level open done\n"); | 426 | rio_dprintk(RIO_DEBUG_TTY, "high level open done\n"); |
431 | 427 | ||
432 | #ifdef STATS | ||
433 | PortP->Stat.OpenCnt++; | ||
434 | #endif | ||
435 | /* | 428 | /* |
436 | ** Count opens for port statistics reporting | 429 | ** Count opens for port statistics reporting |
437 | */ | 430 | */ |
@@ -466,10 +459,10 @@ int riotclose(void *ptr) | |||
466 | rio_dprintk(RIO_DEBUG_TTY, "port close SysPort %d\n", PortP->PortNum); | 459 | rio_dprintk(RIO_DEBUG_TTY, "port close SysPort %d\n", PortP->PortNum); |
467 | 460 | ||
468 | /* PortP = p->RIOPortp[SysPort]; */ | 461 | /* PortP = p->RIOPortp[SysPort]; */ |
469 | rio_dprintk(RIO_DEBUG_TTY, "Port is at address 0x%x\n", (int) PortP); | 462 | rio_dprintk(RIO_DEBUG_TTY, "Port is at address 0x%p\n", PortP); |
470 | /* tp = PortP->TtyP; *//* Get tty */ | 463 | /* tp = PortP->TtyP; *//* Get tty */ |
471 | tty = PortP->gs.tty; | 464 | tty = PortP->gs.tty; |
472 | rio_dprintk(RIO_DEBUG_TTY, "TTY is at address 0x%x\n", (int) tty); | 465 | rio_dprintk(RIO_DEBUG_TTY, "TTY is at address 0x%p\n", tty); |
473 | 466 | ||
474 | if (PortP->gs.closing_wait) | 467 | if (PortP->gs.closing_wait) |
475 | end_time = jiffies + PortP->gs.closing_wait; | 468 | end_time = jiffies + PortP->gs.closing_wait; |
@@ -536,7 +529,6 @@ int riotclose(void *ptr) | |||
536 | 529 | ||
537 | if (!deleted) | 530 | if (!deleted) |
538 | while ((PortP->InUse != NOT_INUSE) && !p->RIOHalted && (PortP->TxBufferIn != PortP->TxBufferOut)) { | 531 | while ((PortP->InUse != NOT_INUSE) && !p->RIOHalted && (PortP->TxBufferIn != PortP->TxBufferOut)) { |
539 | cprintf("Need to flush the ttyport\n"); | ||
540 | if (repeat_this-- <= 0) { | 532 | if (repeat_this-- <= 0) { |
541 | rv = -EINTR; | 533 | rv = -EINTR; |
542 | rio_dprintk(RIO_DEBUG_TTY, "Waiting for not idle closed broken by signal\n"); | 534 | rio_dprintk(RIO_DEBUG_TTY, "Waiting for not idle closed broken by signal\n"); |
@@ -615,9 +607,6 @@ int riotclose(void *ptr) | |||
615 | */ | 607 | */ |
616 | PortP->Config &= ~(RIO_CTSFLOW | RIO_RTSFLOW); | 608 | PortP->Config &= ~(RIO_CTSFLOW | RIO_RTSFLOW); |
617 | 609 | ||
618 | #ifdef STATS | ||
619 | PortP->Stat.CloseCnt++; | ||
620 | #endif | ||
621 | /* | 610 | /* |
622 | ** Count opens for port statistics reporting | 611 | ** Count opens for port statistics reporting |
623 | */ | 612 | */ |
@@ -722,15 +711,15 @@ int RIOShortCommand(struct rio_info *p, struct Port *PortP, int command, int len | |||
722 | /* | 711 | /* |
723 | ** set the command byte and the argument byte | 712 | ** set the command byte and the argument byte |
724 | */ | 713 | */ |
725 | WBYTE(PacketP->data[0], command); | 714 | writeb(command, &PacketP->data[0]); |
726 | 715 | ||
727 | if (len == 2) | 716 | if (len == 2) |
728 | WBYTE(PacketP->data[1], arg); | 717 | writeb(arg, &PacketP->data[1]); |
729 | 718 | ||
730 | /* | 719 | /* |
731 | ** set the length of the packet and set the command bit. | 720 | ** set the length of the packet and set the command bit. |
732 | */ | 721 | */ |
733 | WBYTE(PacketP->len, PKT_CMD_BIT | len); | 722 | writeb(PKT_CMD_BIT | len, &PacketP->len); |
734 | 723 | ||
735 | add_transmit(PortP); | 724 | add_transmit(PortP); |
736 | /* | 725 | /* |