diff options
| -rw-r--r-- | drivers/char/rio/daemon.h | 12 | ||||
| -rw-r--r-- | drivers/char/rio/func.h | 25 | ||||
| -rw-r--r-- | drivers/char/rio/host.h | 16 | ||||
| -rw-r--r-- | drivers/char/rio/port.h | 16 | ||||
| -rw-r--r-- | drivers/char/rio/rio.h | 4 | ||||
| -rw-r--r-- | drivers/char/rio/rio_linux.c | 31 | ||||
| -rw-r--r-- | drivers/char/rio/rio_linux.h | 20 | ||||
| -rw-r--r-- | drivers/char/rio/rioboot.c | 54 | ||||
| -rw-r--r-- | drivers/char/rio/riocmd.c | 36 | ||||
| -rw-r--r-- | drivers/char/rio/rioctrl.c | 182 | ||||
| -rw-r--r-- | drivers/char/rio/rioinit.c | 28 | ||||
| -rw-r--r-- | drivers/char/rio/riointr.c | 42 | ||||
| -rw-r--r-- | drivers/char/rio/rioparam.c | 28 | ||||
| -rw-r--r-- | drivers/char/rio/rioroute.c | 22 | ||||
| -rw-r--r-- | drivers/char/rio/riotable.c | 24 | ||||
| -rw-r--r-- | drivers/char/rio/riotty.c | 2 | ||||
| -rw-r--r-- | drivers/char/rio/unixrup.h | 2 |
17 files changed, 283 insertions, 261 deletions
diff --git a/drivers/char/rio/daemon.h b/drivers/char/rio/daemon.h index 5818a8aa46e0..6e63f8b2c479 100644 --- a/drivers/char/rio/daemon.h +++ b/drivers/char/rio/daemon.h | |||
| @@ -51,7 +51,7 @@ struct Error { | |||
| 51 | }; | 51 | }; |
| 52 | 52 | ||
| 53 | struct DownLoad { | 53 | struct DownLoad { |
| 54 | char *DataP; | 54 | char __user *DataP; |
| 55 | unsigned int Count; | 55 | unsigned int Count; |
| 56 | unsigned int ProductCode; | 56 | unsigned int ProductCode; |
| 57 | }; | 57 | }; |
| @@ -83,18 +83,18 @@ struct PortSetup { | |||
| 83 | struct LpbReq { | 83 | struct LpbReq { |
| 84 | unsigned int Host; | 84 | unsigned int Host; |
| 85 | unsigned int Link; | 85 | unsigned int Link; |
| 86 | struct LPB *LpbP; | 86 | struct LPB __user *LpbP; |
| 87 | }; | 87 | }; |
| 88 | 88 | ||
| 89 | struct RupReq { | 89 | struct RupReq { |
| 90 | unsigned int HostNum; | 90 | unsigned int HostNum; |
| 91 | unsigned int RupNum; | 91 | unsigned int RupNum; |
| 92 | struct RUP *RupP; | 92 | struct RUP __user *RupP; |
| 93 | }; | 93 | }; |
| 94 | 94 | ||
| 95 | struct PortReq { | 95 | struct PortReq { |
| 96 | unsigned int SysPort; | 96 | unsigned int SysPort; |
| 97 | struct Port *PortP; | 97 | struct Port __user *PortP; |
| 98 | }; | 98 | }; |
| 99 | 99 | ||
| 100 | struct StreamInfo { | 100 | struct StreamInfo { |
| @@ -105,12 +105,12 @@ struct StreamInfo { | |||
| 105 | 105 | ||
| 106 | struct HostReq { | 106 | struct HostReq { |
| 107 | unsigned int HostNum; | 107 | unsigned int HostNum; |
| 108 | struct Host *HostP; | 108 | struct Host __user *HostP; |
| 109 | }; | 109 | }; |
| 110 | 110 | ||
| 111 | struct HostDpRam { | 111 | struct HostDpRam { |
| 112 | unsigned int HostNum; | 112 | unsigned int HostNum; |
| 113 | struct DpRam *DpRamP; | 113 | struct DpRam __user *DpRamP; |
| 114 | }; | 114 | }; |
| 115 | 115 | ||
| 116 | struct DebugCtrl { | 116 | struct DebugCtrl { |
diff --git a/drivers/char/rio/func.h b/drivers/char/rio/func.h index e64fe9912394..6b039186856d 100644 --- a/drivers/char/rio/func.h +++ b/drivers/char/rio/func.h | |||
| @@ -46,7 +46,7 @@ int RIOBootCodeRTA(struct rio_info *, struct DownLoad *); | |||
| 46 | int RIOBootCodeHOST(struct rio_info *, struct DownLoad *); | 46 | int RIOBootCodeHOST(struct rio_info *, struct DownLoad *); |
| 47 | int RIOBootCodeUNKNOWN(struct rio_info *, struct DownLoad *); | 47 | int RIOBootCodeUNKNOWN(struct rio_info *, struct DownLoad *); |
| 48 | void msec_timeout(struct Host *); | 48 | void msec_timeout(struct Host *); |
| 49 | int RIOBootRup(struct rio_info *, unsigned int, struct Host *, struct PKT *); | 49 | int RIOBootRup(struct rio_info *, unsigned int, struct Host *, struct PKT __iomem *); |
| 50 | int RIOBootOk(struct rio_info *, struct Host *, unsigned long); | 50 | int RIOBootOk(struct rio_info *, struct Host *, unsigned long); |
| 51 | int RIORtaBound(struct rio_info *, unsigned int); | 51 | int RIORtaBound(struct rio_info *, unsigned int); |
| 52 | void rio_fill_host_slot(int, int, unsigned int, struct Host *); | 52 | void rio_fill_host_slot(int, int, unsigned int, struct Host *); |
| @@ -55,8 +55,8 @@ void rio_fill_host_slot(int, int, unsigned int, struct Host *); | |||
| 55 | int RIOFoadRta(struct Host *, struct Map *); | 55 | int RIOFoadRta(struct Host *, struct Map *); |
| 56 | int RIOZombieRta(struct Host *, struct Map *); | 56 | int RIOZombieRta(struct Host *, struct Map *); |
| 57 | int RIOCommandRta(struct rio_info *, unsigned long, int (*func) (struct Host *, struct Map *)); | 57 | int RIOCommandRta(struct rio_info *, unsigned long, int (*func) (struct Host *, struct Map *)); |
| 58 | int RIOIdentifyRta(struct rio_info *, void *); | 58 | int RIOIdentifyRta(struct rio_info *, void __user *); |
| 59 | int RIOKillNeighbour(struct rio_info *, void *); | 59 | int RIOKillNeighbour(struct rio_info *, void __user *); |
| 60 | int RIOSuspendBootRta(struct Host *, int, int); | 60 | int RIOSuspendBootRta(struct Host *, int, int); |
| 61 | int RIOFoadWakeup(struct rio_info *); | 61 | int RIOFoadWakeup(struct rio_info *); |
| 62 | struct CmdBlk *RIOGetCmdBlk(void); | 62 | struct CmdBlk *RIOGetCmdBlk(void); |
| @@ -68,7 +68,8 @@ int RIORFlushEnable(unsigned long, struct CmdBlk *); | |||
| 68 | int RIOUnUse(unsigned long, struct CmdBlk *); | 68 | int RIOUnUse(unsigned long, struct CmdBlk *); |
| 69 | 69 | ||
| 70 | /* rioctrl.c */ | 70 | /* rioctrl.c */ |
| 71 | int riocontrol(struct rio_info *, dev_t, int, caddr_t, int); | 71 | int riocontrol(struct rio_info *, dev_t, int, unsigned long, int); |
| 72 | |||
| 72 | int RIOPreemptiveCmd(struct rio_info *, struct Port *, unsigned char); | 73 | int RIOPreemptiveCmd(struct rio_info *, struct Port *, unsigned char); |
| 73 | 74 | ||
| 74 | /* rioinit.c */ | 75 | /* rioinit.c */ |
| @@ -77,13 +78,13 @@ void RIOInitHosts(struct rio_info *, struct RioHostInfo *); | |||
| 77 | void RIOISAinit(struct rio_info *, int); | 78 | void RIOISAinit(struct rio_info *, int); |
| 78 | int RIODoAT(struct rio_info *, int, int); | 79 | int RIODoAT(struct rio_info *, int, int); |
| 79 | caddr_t RIOCheckForATCard(int); | 80 | caddr_t RIOCheckForATCard(int); |
| 80 | int RIOAssignAT(struct rio_info *, int, caddr_t, int); | 81 | int RIOAssignAT(struct rio_info *, int, void __iomem *, int); |
| 81 | int RIOBoardTest(unsigned long, caddr_t, unsigned char, int); | 82 | int RIOBoardTest(unsigned long, void __iomem *, unsigned char, int); |
| 82 | void RIOAllocDataStructs(struct rio_info *); | 83 | void RIOAllocDataStructs(struct rio_info *); |
| 83 | void RIOSetupDataStructs(struct rio_info *); | 84 | void RIOSetupDataStructs(struct rio_info *); |
| 84 | int RIODefaultName(struct rio_info *, struct Host *, unsigned int); | 85 | int RIODefaultName(struct rio_info *, struct Host *, unsigned int); |
| 85 | struct rioVersion *RIOVersid(void); | 86 | struct rioVersion *RIOVersid(void); |
| 86 | void RIOHostReset(unsigned int, struct DpRam *, unsigned int); | 87 | void RIOHostReset(unsigned int, struct DpRam __iomem *, unsigned int); |
| 87 | 88 | ||
| 88 | /* riointr.c */ | 89 | /* riointr.c */ |
| 89 | void RIOTxEnable(char *); | 90 | void RIOTxEnable(char *); |
| @@ -95,14 +96,14 @@ int RIOParam(struct Port *, int, int, int); | |||
| 95 | int RIODelay(struct Port *PortP, int); | 96 | int RIODelay(struct Port *PortP, int); |
| 96 | int RIODelay_ni(struct Port *PortP, int); | 97 | int RIODelay_ni(struct Port *PortP, int); |
| 97 | void ms_timeout(struct Port *); | 98 | void ms_timeout(struct Port *); |
| 98 | int can_add_transmit(struct PKT **, struct Port *); | 99 | int can_add_transmit(struct PKT __iomem **, struct Port *); |
| 99 | void add_transmit(struct Port *); | 100 | void add_transmit(struct Port *); |
| 100 | void put_free_end(struct Host *, struct PKT *); | 101 | void put_free_end(struct Host *, struct PKT __iomem *); |
| 101 | int can_remove_receive(struct PKT **, struct Port *); | 102 | int can_remove_receive(struct PKT __iomem **, struct Port *); |
| 102 | void remove_receive(struct Port *); | 103 | void remove_receive(struct Port *); |
| 103 | 104 | ||
| 104 | /* rioroute.c */ | 105 | /* rioroute.c */ |
| 105 | int RIORouteRup(struct rio_info *, unsigned int, struct Host *, struct PKT *); | 106 | int RIORouteRup(struct rio_info *, unsigned int, struct Host *, struct PKT __iomem *); |
| 106 | void RIOFixPhbs(struct rio_info *, struct Host *, unsigned int); | 107 | void RIOFixPhbs(struct rio_info *, struct Host *, unsigned int); |
| 107 | unsigned int GetUnitType(unsigned int); | 108 | unsigned int GetUnitType(unsigned int); |
| 108 | int RIOSetChange(struct rio_info *); | 109 | int RIOSetChange(struct rio_info *); |
| @@ -139,7 +140,7 @@ int rio_isr_thread(char *); | |||
| 139 | struct rio_info *rio_info_store(int cmd, struct rio_info *p); | 140 | struct rio_info *rio_info_store(int cmd, struct rio_info *p); |
| 140 | #endif | 141 | #endif |
| 141 | 142 | ||
| 142 | extern void rio_copy_to_card(void *to, void *from, int len); | 143 | extern void rio_copy_to_card(void *from, void __iomem *to, int len); |
| 143 | extern int rio_minor(struct tty_struct *tty); | 144 | extern int rio_minor(struct tty_struct *tty); |
| 144 | extern int rio_ismodem(struct tty_struct *tty); | 145 | extern int rio_ismodem(struct tty_struct *tty); |
| 145 | 146 | ||
diff --git a/drivers/char/rio/host.h b/drivers/char/rio/host.h index 179cdbea712b..ee2ddea7a63a 100644 --- a/drivers/char/rio/host.h +++ b/drivers/char/rio/host.h | |||
| @@ -48,8 +48,8 @@ struct Host { | |||
| 48 | unsigned char Ivec; /* POLLED or ivec number */ | 48 | unsigned char Ivec; /* POLLED or ivec number */ |
| 49 | unsigned char Mode; /* Control stuff */ | 49 | unsigned char Mode; /* Control stuff */ |
| 50 | unsigned char Slot; /* Slot */ | 50 | unsigned char Slot; /* Slot */ |
| 51 | caddr_t Caddr; /* KV address of DPRAM */ | 51 | void __iomem *Caddr; /* KV address of DPRAM */ |
| 52 | struct DpRam *CardP; /* KV address of DPRAM, with overlay */ | 52 | struct DpRam __iomem *CardP; /* KV address of DPRAM, with overlay */ |
| 53 | unsigned long PaddrP; /* Phys. address of DPRAM */ | 53 | unsigned long PaddrP; /* Phys. address of DPRAM */ |
| 54 | char Name[MAX_NAME_LEN]; /* The name of the host */ | 54 | char Name[MAX_NAME_LEN]; /* The name of the host */ |
| 55 | unsigned int UniqueNum; /* host unique number */ | 55 | unsigned int UniqueNum; /* host unique number */ |
| @@ -57,7 +57,7 @@ struct Host { | |||
| 57 | unsigned int WorkToBeDone; /* set to true each interrupt */ | 57 | unsigned int WorkToBeDone; /* set to true each interrupt */ |
| 58 | unsigned int InIntr; /* Being serviced? */ | 58 | unsigned int InIntr; /* Being serviced? */ |
| 59 | unsigned int IntSrvDone; /* host's interrupt has been serviced */ | 59 | unsigned int IntSrvDone; /* host's interrupt has been serviced */ |
| 60 | void (*Copy) (void *, void *, int); /* copy func */ | 60 | void (*Copy) (void *, void __iomem *, int); /* copy func */ |
| 61 | struct timer_list timer; | 61 | struct timer_list timer; |
| 62 | /* | 62 | /* |
| 63 | ** I M P O R T A N T ! | 63 | ** I M P O R T A N T ! |
| @@ -83,11 +83,11 @@ struct Host { | |||
| 83 | 83 | ||
| 84 | struct Top Topology[LINKS_PER_UNIT]; /* one per link */ | 84 | struct Top Topology[LINKS_PER_UNIT]; /* one per link */ |
| 85 | struct Map Mapping[MAX_RUP]; /* Mappings for host */ | 85 | struct Map Mapping[MAX_RUP]; /* Mappings for host */ |
| 86 | struct PHB *PhbP; /* Pointer to the PHB array */ | 86 | struct PHB __iomem *PhbP; /* Pointer to the PHB array */ |
| 87 | unsigned short *PhbNumP; /* Ptr to Number of PHB's */ | 87 | unsigned short __iomem *PhbNumP; /* Ptr to Number of PHB's */ |
| 88 | struct LPB *LinkStrP; /* Link Structure Array */ | 88 | struct LPB __iomem *LinkStrP; /* Link Structure Array */ |
| 89 | struct RUP *RupP; /* Sixteen real rups here */ | 89 | struct RUP __iomem *RupP; /* Sixteen real rups here */ |
| 90 | struct PARM_MAP *ParmMapP; /* points to the parmmap */ | 90 | struct PARM_MAP __iomem *ParmMapP; /* points to the parmmap */ |
| 91 | unsigned int ExtraUnits[MAX_EXTRA_UNITS]; /* unknown things */ | 91 | unsigned int ExtraUnits[MAX_EXTRA_UNITS]; /* unknown things */ |
| 92 | unsigned int NumExtraBooted; /* how many of the above */ | 92 | unsigned int NumExtraBooted; /* how many of the above */ |
| 93 | /* | 93 | /* |
diff --git a/drivers/char/rio/port.h b/drivers/char/rio/port.h index 9b5fa3eb0402..49cf6d15ee54 100644 --- a/drivers/char/rio/port.h +++ b/drivers/char/rio/port.h | |||
| @@ -40,7 +40,7 @@ struct Port { | |||
| 40 | struct gs_port gs; | 40 | struct gs_port gs; |
| 41 | int PortNum; /* RIO port no., 0-511 */ | 41 | int PortNum; /* RIO port no., 0-511 */ |
| 42 | struct Host *HostP; | 42 | struct Host *HostP; |
| 43 | caddr_t Caddr; | 43 | void __iomem *Caddr; |
| 44 | unsigned short HostPort; /* Port number on host card */ | 44 | unsigned short HostPort; /* Port number on host card */ |
| 45 | unsigned char RupNum; /* Number of RUP for port */ | 45 | unsigned char RupNum; /* Number of RUP for port */ |
| 46 | unsigned char ID2; /* Second ID of RTA for port */ | 46 | unsigned char ID2; /* Second ID of RTA for port */ |
| @@ -92,13 +92,13 @@ struct Port { | |||
| 92 | #define RIO_RTSFLOW 0x0400 /* RIO's own RTSFLOW flag */ | 92 | #define RIO_RTSFLOW 0x0400 /* RIO's own RTSFLOW flag */ |
| 93 | 93 | ||
| 94 | 94 | ||
| 95 | struct PHB *PhbP; /* pointer to PHB for port */ | 95 | struct PHB __iomem *PhbP; /* pointer to PHB for port */ |
| 96 | u16 *TxAdd; /* Add packets here */ | 96 | u16 __iomem *TxAdd; /* Add packets here */ |
| 97 | u16 *TxStart; /* Start of add array */ | 97 | u16 __iomem *TxStart; /* Start of add array */ |
| 98 | u16 *TxEnd; /* End of add array */ | 98 | u16 __iomem *TxEnd; /* End of add array */ |
| 99 | u16 *RxRemove; /* Remove packets here */ | 99 | u16 __iomem *RxRemove; /* Remove packets here */ |
| 100 | u16 *RxStart; /* Start of remove array */ | 100 | u16 __iomem *RxStart; /* Start of remove array */ |
| 101 | u16 *RxEnd; /* End of remove array */ | 101 | u16 __iomem *RxEnd; /* End of remove array */ |
| 102 | unsigned int RtaUniqueNum; /* Unique number of RTA */ | 102 | unsigned int RtaUniqueNum; /* Unique number of RTA */ |
| 103 | unsigned short PortState; /* status of port */ | 103 | unsigned short PortState; /* status of port */ |
| 104 | unsigned short ModemState; /* status of modem lines */ | 104 | unsigned short ModemState; /* status of modem lines */ |
diff --git a/drivers/char/rio/rio.h b/drivers/char/rio/rio.h index b4c91871ba28..1bf36223a4e8 100644 --- a/drivers/char/rio/rio.h +++ b/drivers/char/rio/rio.h | |||
| @@ -129,8 +129,8 @@ | |||
| 129 | ** RIO_OBJ takes hostp->Caddr and a UNIX pointer to an object and | 129 | ** RIO_OBJ takes hostp->Caddr and a UNIX pointer to an object and |
| 130 | ** returns the offset into the DP RAM area. | 130 | ** returns the offset into the DP RAM area. |
| 131 | */ | 131 | */ |
| 132 | #define RIO_PTR(C,O) (((unsigned char *)(C))+(0xFFFF&(O))) | 132 | #define RIO_PTR(C,O) (((unsigned char __iomem *)(C))+(0xFFFF&(O))) |
| 133 | #define RIO_OFF(C,O) ((long)(O)-(long)(C)) | 133 | #define RIO_OFF(C,O) ((unsigned char __iomem *)(O)-(unsigned char __iomem *)(C)) |
| 134 | 134 | ||
| 135 | /* | 135 | /* |
| 136 | ** How to convert from various different device number formats: | 136 | ** How to convert from various different device number formats: |
diff --git a/drivers/char/rio/rio_linux.c b/drivers/char/rio/rio_linux.c index 78dd856534ce..aa43436d5d1b 100644 --- a/drivers/char/rio/rio_linux.c +++ b/drivers/char/rio/rio_linux.c | |||
| @@ -333,9 +333,9 @@ int RIODelay_ni(struct Port *PortP, int njiffies) | |||
| 333 | return !RIO_FAIL; | 333 | return !RIO_FAIL; |
| 334 | } | 334 | } |
| 335 | 335 | ||
| 336 | void rio_copy_to_card(void *to, void *from, int len) | 336 | void rio_copy_to_card(void *from, void __iomem *to, int len) |
| 337 | { | 337 | { |
| 338 | rio_memcpy_toio(NULL, to, from, len); | 338 | rio_copy_toio(to, from, len); |
| 339 | } | 339 | } |
| 340 | 340 | ||
| 341 | int rio_minor(struct tty_struct *tty) | 341 | int rio_minor(struct tty_struct *tty) |
| @@ -573,7 +573,7 @@ static int rio_fw_ioctl(struct inode *inode, struct file *filp, unsigned int cmd | |||
| 573 | func_enter(); | 573 | func_enter(); |
| 574 | 574 | ||
| 575 | /* The "dev" argument isn't used. */ | 575 | /* The "dev" argument isn't used. */ |
| 576 | rc = riocontrol(p, 0, cmd, (void *) arg, capable(CAP_SYS_ADMIN)); | 576 | rc = riocontrol(p, 0, cmd, arg, capable(CAP_SYS_ADMIN)); |
| 577 | 577 | ||
| 578 | func_exit(); | 578 | func_exit(); |
| 579 | return rc; | 579 | return rc; |
| @@ -583,6 +583,7 @@ extern int RIOShortCommand(struct rio_info *p, struct Port *PortP, int command, | |||
| 583 | 583 | ||
| 584 | static int rio_ioctl(struct tty_struct *tty, struct file *filp, unsigned int cmd, unsigned long arg) | 584 | static int rio_ioctl(struct tty_struct *tty, struct file *filp, unsigned int cmd, unsigned long arg) |
| 585 | { | 585 | { |
| 586 | void __user *argp = (void __user *)arg; | ||
| 586 | int rc; | 587 | int rc; |
| 587 | struct Port *PortP; | 588 | struct Port *PortP; |
| 588 | int ival; | 589 | int ival; |
| @@ -594,14 +595,14 @@ static int rio_ioctl(struct tty_struct *tty, struct file *filp, unsigned int cmd | |||
| 594 | rc = 0; | 595 | rc = 0; |
| 595 | switch (cmd) { | 596 | switch (cmd) { |
| 596 | case TIOCSSOFTCAR: | 597 | case TIOCSSOFTCAR: |
| 597 | if ((rc = get_user(ival, (unsigned int *) arg)) == 0) { | 598 | if ((rc = get_user(ival, (unsigned __user *) argp)) == 0) { |
| 598 | tty->termios->c_cflag = (tty->termios->c_cflag & ~CLOCAL) | (ival ? CLOCAL : 0); | 599 | tty->termios->c_cflag = (tty->termios->c_cflag & ~CLOCAL) | (ival ? CLOCAL : 0); |
| 599 | } | 600 | } |
| 600 | break; | 601 | break; |
| 601 | case TIOCGSERIAL: | 602 | case TIOCGSERIAL: |
| 602 | rc = -EFAULT; | 603 | rc = -EFAULT; |
| 603 | if (access_ok(VERIFY_WRITE, (void *) arg, sizeof(struct serial_struct))) | 604 | if (access_ok(VERIFY_WRITE, argp, sizeof(struct serial_struct))) |
| 604 | rc = gs_getserial(&PortP->gs, (struct serial_struct *) arg); | 605 | rc = gs_getserial(&PortP->gs, argp); |
| 605 | break; | 606 | break; |
| 606 | case TCSBRK: | 607 | case TCSBRK: |
| 607 | if (PortP->State & RIO_DELETED) { | 608 | if (PortP->State & RIO_DELETED) { |
| @@ -631,8 +632,8 @@ static int rio_ioctl(struct tty_struct *tty, struct file *filp, unsigned int cmd | |||
| 631 | break; | 632 | break; |
| 632 | case TIOCSSERIAL: | 633 | case TIOCSSERIAL: |
| 633 | rc = -EFAULT; | 634 | rc = -EFAULT; |
| 634 | if (access_ok(VERIFY_READ, (void *) arg, sizeof(struct serial_struct))) | 635 | if (access_ok(VERIFY_READ, argp, sizeof(struct serial_struct))) |
| 635 | rc = gs_setserial(&PortP->gs, (struct serial_struct *) arg); | 636 | rc = gs_setserial(&PortP->gs, argp); |
| 636 | break; | 637 | break; |
| 637 | default: | 638 | default: |
| 638 | rc = -ENOIOCTLCMD; | 639 | rc = -ENOIOCTLCMD; |
| @@ -919,7 +920,7 @@ static void __exit rio_release_drivers(void) | |||
| 919 | static void fix_rio_pci(struct pci_dev *pdev) | 920 | static void fix_rio_pci(struct pci_dev *pdev) |
| 920 | { | 921 | { |
| 921 | unsigned long hwbase; | 922 | unsigned long hwbase; |
| 922 | unsigned char *rebase; | 923 | unsigned char __iomem *rebase; |
| 923 | unsigned int t; | 924 | unsigned int t; |
| 924 | 925 | ||
| 925 | #define CNTRL_REG_OFFSET 0x50 | 926 | #define CNTRL_REG_OFFSET 0x50 |
| @@ -999,7 +1000,7 @@ static int __init rio_init(void) | |||
| 999 | if (((1 << hp->Ivec) & rio_irqmask) == 0) | 1000 | if (((1 << hp->Ivec) & rio_irqmask) == 0) |
| 1000 | hp->Ivec = 0; | 1001 | hp->Ivec = 0; |
| 1001 | hp->Caddr = ioremap(p->RIOHosts[p->RIONumHosts].PaddrP, RIO_WINDOW_LEN); | 1002 | hp->Caddr = ioremap(p->RIOHosts[p->RIONumHosts].PaddrP, RIO_WINDOW_LEN); |
| 1002 | hp->CardP = (struct DpRam *) hp->Caddr; | 1003 | hp->CardP = (struct DpRam __iomem *) hp->Caddr; |
| 1003 | hp->Type = RIO_PCI; | 1004 | hp->Type = RIO_PCI; |
| 1004 | hp->Copy = rio_copy_to_card; | 1005 | hp->Copy = rio_copy_to_card; |
| 1005 | hp->Mode = RIO_PCI_BOOT_FROM_RAM; | 1006 | hp->Mode = RIO_PCI_BOOT_FROM_RAM; |
| @@ -1021,7 +1022,7 @@ static int __init rio_init(void) | |||
| 1021 | p->RIONumHosts++; | 1022 | p->RIONumHosts++; |
| 1022 | found++; | 1023 | found++; |
| 1023 | } else { | 1024 | } else { |
| 1024 | iounmap((char *) (p->RIOHosts[p->RIONumHosts].Caddr)); | 1025 | iounmap(p->RIOHosts[p->RIONumHosts].Caddr); |
| 1025 | } | 1026 | } |
| 1026 | } | 1027 | } |
| 1027 | 1028 | ||
| @@ -1047,7 +1048,7 @@ static int __init rio_init(void) | |||
| 1047 | hp->Ivec = 0; | 1048 | hp->Ivec = 0; |
| 1048 | hp->Ivec |= 0x8000; /* Mark as non-sharable */ | 1049 | hp->Ivec |= 0x8000; /* Mark as non-sharable */ |
| 1049 | hp->Caddr = ioremap(p->RIOHosts[p->RIONumHosts].PaddrP, RIO_WINDOW_LEN); | 1050 | hp->Caddr = ioremap(p->RIOHosts[p->RIONumHosts].PaddrP, RIO_WINDOW_LEN); |
| 1050 | hp->CardP = (struct DpRam *) hp->Caddr; | 1051 | hp->CardP = (struct DpRam __iomem *) hp->Caddr; |
| 1051 | hp->Type = RIO_PCI; | 1052 | hp->Type = RIO_PCI; |
| 1052 | hp->Copy = rio_copy_to_card; | 1053 | hp->Copy = rio_copy_to_card; |
| 1053 | hp->Mode = RIO_PCI_BOOT_FROM_RAM; | 1054 | hp->Mode = RIO_PCI_BOOT_FROM_RAM; |
| @@ -1070,7 +1071,7 @@ static int __init rio_init(void) | |||
| 1070 | p->RIONumHosts++; | 1071 | p->RIONumHosts++; |
| 1071 | found++; | 1072 | found++; |
| 1072 | } else { | 1073 | } else { |
| 1073 | iounmap((char *) (p->RIOHosts[p->RIONumHosts].Caddr)); | 1074 | iounmap(p->RIOHosts[p->RIONumHosts].Caddr); |
| 1074 | } | 1075 | } |
| 1075 | #else | 1076 | #else |
| 1076 | printk(KERN_ERR "Found an older RIO PCI card, but the driver is not " "compiled to support it.\n"); | 1077 | printk(KERN_ERR "Found an older RIO PCI card, but the driver is not " "compiled to support it.\n"); |
| @@ -1085,7 +1086,7 @@ static int __init rio_init(void) | |||
| 1085 | /* There was something about the IRQs of these cards. 'Forget what.--REW */ | 1086 | /* There was something about the IRQs of these cards. 'Forget what.--REW */ |
| 1086 | hp->Ivec = 0; | 1087 | hp->Ivec = 0; |
| 1087 | hp->Caddr = ioremap(p->RIOHosts[p->RIONumHosts].PaddrP, RIO_WINDOW_LEN); | 1088 | hp->Caddr = ioremap(p->RIOHosts[p->RIONumHosts].PaddrP, RIO_WINDOW_LEN); |
| 1088 | hp->CardP = (struct DpRam *) hp->Caddr; | 1089 | hp->CardP = (struct DpRam __iomem *) hp->Caddr; |
| 1089 | hp->Type = RIO_AT; | 1090 | hp->Type = RIO_AT; |
| 1090 | hp->Copy = rio_copy_to_card; /* AT card PCI???? - PVDL | 1091 | hp->Copy = rio_copy_to_card; /* AT card PCI???? - PVDL |
| 1091 | * -- YES! this is now a normal copy. Only the | 1092 | * -- YES! this is now a normal copy. Only the |
| @@ -1111,7 +1112,7 @@ static int __init rio_init(void) | |||
| 1111 | } | 1112 | } |
| 1112 | 1113 | ||
| 1113 | if (!okboard) | 1114 | if (!okboard) |
| 1114 | iounmap((char *) (hp->Caddr)); | 1115 | iounmap(hp->Caddr); |
| 1115 | } | 1116 | } |
| 1116 | } | 1117 | } |
| 1117 | 1118 | ||
diff --git a/drivers/char/rio/rio_linux.h b/drivers/char/rio/rio_linux.h index 4ce77fb1fae5..55b9c97e8477 100644 --- a/drivers/char/rio/rio_linux.h +++ b/drivers/char/rio/rio_linux.h | |||
| @@ -131,9 +131,9 @@ struct vpd_prom { | |||
| 131 | 131 | ||
| 132 | 132 | ||
| 133 | #ifdef CONFIG_RIO_OLDPCI | 133 | #ifdef CONFIG_RIO_OLDPCI |
| 134 | static inline void *rio_memcpy_toio(void *dummy, void *dest, void *source, int n) | 134 | static inline void __iomem *rio_memcpy_toio(void __iomem *dummy, void __iomem *dest, void *source, int n) |
| 135 | { | 135 | { |
| 136 | char *dst = dest; | 136 | char __iomem *dst = dest; |
| 137 | char *src = source; | 137 | char *src = source; |
| 138 | 138 | ||
| 139 | while (n--) { | 139 | while (n--) { |
| @@ -144,11 +144,22 @@ static inline void *rio_memcpy_toio(void *dummy, void *dest, void *source, int n | |||
| 144 | return dest; | 144 | return dest; |
| 145 | } | 145 | } |
| 146 | 146 | ||
| 147 | static inline void __iomem *rio_copy_toio(void __iomem *dest, void *source, int n) | ||
| 148 | { | ||
| 149 | char __iomem *dst = dest; | ||
| 150 | char *src = source; | ||
| 151 | |||
| 152 | while (n--) | ||
| 153 | writeb(*src++, dst++); | ||
| 147 | 154 | ||
| 148 | static inline void *rio_memcpy_fromio(void *dest, void *source, int n) | 155 | return dest; |
| 156 | } | ||
| 157 | |||
| 158 | |||
| 159 | static inline void *rio_memcpy_fromio(void *dest, void __iomem *source, int n) | ||
| 149 | { | 160 | { |
| 150 | char *dst = dest; | 161 | char *dst = dest; |
| 151 | char *src = source; | 162 | char __iomem *src = source; |
| 152 | 163 | ||
| 153 | while (n--) | 164 | while (n--) |
| 154 | *dst++ = readb(src++); | 165 | *dst++ = readb(src++); |
| @@ -158,6 +169,7 @@ static inline void *rio_memcpy_fromio(void *dest, void *source, int n) | |||
| 158 | 169 | ||
| 159 | #else | 170 | #else |
| 160 | #define rio_memcpy_toio(dummy,dest,source,n) memcpy_toio(dest, source, n) | 171 | #define rio_memcpy_toio(dummy,dest,source,n) memcpy_toio(dest, source, n) |
| 172 | #define rio_copy_toio memcpy_toio | ||
| 161 | #define rio_memcpy_fromio memcpy_fromio | 173 | #define rio_memcpy_fromio memcpy_fromio |
| 162 | #endif | 174 | #endif |
| 163 | 175 | ||
diff --git a/drivers/char/rio/rioboot.c b/drivers/char/rio/rioboot.c index 290143addd34..eca2b95343e2 100644 --- a/drivers/char/rio/rioboot.c +++ b/drivers/char/rio/rioboot.c | |||
| @@ -71,7 +71,7 @@ | |||
| 71 | #include "cmdblk.h" | 71 | #include "cmdblk.h" |
| 72 | #include "route.h" | 72 | #include "route.h" |
| 73 | 73 | ||
| 74 | static int RIOBootComplete(struct rio_info *p, struct Host *HostP, unsigned int Rup, struct PktCmd *PktCmdP); | 74 | static int RIOBootComplete(struct rio_info *p, struct Host *HostP, unsigned int Rup, struct PktCmd __iomem *PktCmdP); |
| 75 | 75 | ||
| 76 | static const unsigned char RIOAtVec2Ctrl[] = { | 76 | static const unsigned char RIOAtVec2Ctrl[] = { |
| 77 | /* 0 */ INTERRUPT_DISABLE, | 77 | /* 0 */ INTERRUPT_DISABLE, |
| @@ -204,13 +204,13 @@ void rio_start_card_running(struct Host *HostP) | |||
| 204 | int RIOBootCodeHOST(struct rio_info *p, struct DownLoad *rbp) | 204 | int RIOBootCodeHOST(struct rio_info *p, struct DownLoad *rbp) |
| 205 | { | 205 | { |
| 206 | struct Host *HostP; | 206 | struct Host *HostP; |
| 207 | u8 *Cad; | 207 | u8 __iomem *Cad; |
| 208 | PARM_MAP *ParmMapP; | 208 | PARM_MAP __iomem *ParmMapP; |
| 209 | int RupN; | 209 | int RupN; |
| 210 | int PortN; | 210 | int PortN; |
| 211 | unsigned int host; | 211 | unsigned int host; |
| 212 | u8 *StartP; | 212 | u8 __iomem *StartP; |
| 213 | u8 *DestP; | 213 | u8 __iomem *DestP; |
| 214 | int wait_count; | 214 | int wait_count; |
| 215 | u16 OldParmMap; | 215 | u16 OldParmMap; |
| 216 | u16 offset; /* It is very important that this is a u16 */ | 216 | u16 offset; /* It is very important that this is a u16 */ |
| @@ -262,7 +262,7 @@ int RIOBootCodeHOST(struct rio_info *p, struct DownLoad *rbp) | |||
| 262 | ** Ensure that the host really is stopped. | 262 | ** Ensure that the host really is stopped. |
| 263 | ** Disable it's external bus & twang its reset line. | 263 | ** Disable it's external bus & twang its reset line. |
| 264 | */ | 264 | */ |
| 265 | RIOHostReset(HostP->Type, (struct DpRam *) HostP->CardP, HostP->Slot); | 265 | RIOHostReset(HostP->Type, HostP->CardP, HostP->Slot); |
| 266 | 266 | ||
| 267 | /* | 267 | /* |
| 268 | ** Copy the data directly from user space to the SRAM. | 268 | ** Copy the data directly from user space to the SRAM. |
| @@ -280,7 +280,7 @@ int RIOBootCodeHOST(struct rio_info *p, struct DownLoad *rbp) | |||
| 280 | func_exit(); | 280 | func_exit(); |
| 281 | return -ENOMEM; | 281 | return -ENOMEM; |
| 282 | } | 282 | } |
| 283 | if (copy_from_user(rbp->DataP, DownCode, rbp->Count)) { | 283 | if (copy_from_user(DownCode, rbp->DataP, rbp->Count)) { |
| 284 | kfree(DownCode); | 284 | kfree(DownCode); |
| 285 | p->RIOError.Error = COPYIN_FAILED; | 285 | p->RIOError.Error = COPYIN_FAILED; |
| 286 | func_exit(); | 286 | func_exit(); |
| @@ -366,7 +366,7 @@ int RIOBootCodeHOST(struct rio_info *p, struct DownLoad *rbp) | |||
| 366 | ** a short branch to 0x7FF8, where a long branch is coded. | 366 | ** a short branch to 0x7FF8, where a long branch is coded. |
| 367 | */ | 367 | */ |
| 368 | 368 | ||
| 369 | DestP = (u8 *) &Cad[0x7FF8]; /* <<<---- READ THE ABOVE COMMENTS */ | 369 | DestP = &Cad[0x7FF8]; /* <<<---- READ THE ABOVE COMMENTS */ |
| 370 | 370 | ||
| 371 | #define NFIX(N) (0x60 | (N)) /* .O = (~(.O + N))<<4 */ | 371 | #define NFIX(N) (0x60 | (N)) /* .O = (~(.O + N))<<4 */ |
| 372 | #define PFIX(N) (0x20 | (N)) /* .O = (.O + N)<<4 */ | 372 | #define PFIX(N) (0x20 | (N)) /* .O = (.O + N)<<4 */ |
| @@ -438,7 +438,7 @@ int RIOBootCodeHOST(struct rio_info *p, struct DownLoad *rbp) | |||
| 438 | rio_dprintk(RIO_DEBUG_BOOT, "RIO Mesg Run Fail\n"); | 438 | rio_dprintk(RIO_DEBUG_BOOT, "RIO Mesg Run Fail\n"); |
| 439 | HostP->Flags &= ~RUN_STATE; | 439 | HostP->Flags &= ~RUN_STATE; |
| 440 | HostP->Flags |= RC_STUFFED; | 440 | HostP->Flags |= RC_STUFFED; |
| 441 | RIOHostReset( HostP->Type, (struct DpRam *)HostP->CardP, HostP->Slot ); | 441 | RIOHostReset( HostP->Type, HostP->CardP, HostP->Slot ); |
| 442 | continue; | 442 | continue; |
| 443 | } | 443 | } |
| 444 | 444 | ||
| @@ -453,9 +453,9 @@ int RIOBootCodeHOST(struct rio_info *p, struct DownLoad *rbp) | |||
| 453 | /* | 453 | /* |
| 454 | ** Grab a 32 bit pointer to the parmmap structure | 454 | ** Grab a 32 bit pointer to the parmmap structure |
| 455 | */ | 455 | */ |
| 456 | ParmMapP = (PARM_MAP *) RIO_PTR(Cad, readw(&HostP->__ParmMapR)); | 456 | ParmMapP = (PARM_MAP __iomem *) RIO_PTR(Cad, readw(&HostP->__ParmMapR)); |
| 457 | rio_dprintk(RIO_DEBUG_BOOT, "ParmMapP : %p\n", ParmMapP); | 457 | rio_dprintk(RIO_DEBUG_BOOT, "ParmMapP : %p\n", ParmMapP); |
| 458 | ParmMapP = (PARM_MAP *) ((unsigned long) Cad + readw(&HostP->__ParmMapR)); | 458 | ParmMapP = (PARM_MAP __iomem *)(Cad + readw(&HostP->__ParmMapR)); |
| 459 | rio_dprintk(RIO_DEBUG_BOOT, "ParmMapP : %p\n", ParmMapP); | 459 | rio_dprintk(RIO_DEBUG_BOOT, "ParmMapP : %p\n", ParmMapP); |
| 460 | 460 | ||
| 461 | /* | 461 | /* |
| @@ -468,7 +468,7 @@ int RIOBootCodeHOST(struct rio_info *p, struct DownLoad *rbp) | |||
| 468 | rio_dprintk(RIO_DEBUG_BOOT, "Links = 0x%x\n", readw(&ParmMapP->links)); | 468 | rio_dprintk(RIO_DEBUG_BOOT, "Links = 0x%x\n", readw(&ParmMapP->links)); |
| 469 | HostP->Flags &= ~RUN_STATE; | 469 | HostP->Flags &= ~RUN_STATE; |
| 470 | HostP->Flags |= RC_STUFFED; | 470 | HostP->Flags |= RC_STUFFED; |
| 471 | RIOHostReset( HostP->Type, (struct DpRam *)HostP->CardP, HostP->Slot ); | 471 | RIOHostReset( HostP->Type, HostP->CardP, HostP->Slot ); |
| 472 | continue; | 472 | continue; |
| 473 | } | 473 | } |
| 474 | 474 | ||
| @@ -491,7 +491,7 @@ int RIOBootCodeHOST(struct rio_info *p, struct DownLoad *rbp) | |||
| 491 | rio_dprintk(RIO_DEBUG_BOOT, "Timedout waiting for init_done\n"); | 491 | rio_dprintk(RIO_DEBUG_BOOT, "Timedout waiting for init_done\n"); |
| 492 | HostP->Flags &= ~RUN_STATE; | 492 | HostP->Flags &= ~RUN_STATE; |
| 493 | HostP->Flags |= RC_STUFFED; | 493 | HostP->Flags |= RC_STUFFED; |
| 494 | RIOHostReset( HostP->Type, (struct DpRam *)HostP->CardP, HostP->Slot ); | 494 | RIOHostReset( HostP->Type, HostP->CardP, HostP->Slot ); |
| 495 | continue; | 495 | continue; |
| 496 | } | 496 | } |
| 497 | 497 | ||
| @@ -512,10 +512,10 @@ int RIOBootCodeHOST(struct rio_info *p, struct DownLoad *rbp) | |||
| 512 | ** 32 bit pointers for the driver in ioremap space. | 512 | ** 32 bit pointers for the driver in ioremap space. |
| 513 | */ | 513 | */ |
| 514 | HostP->ParmMapP = ParmMapP; | 514 | HostP->ParmMapP = ParmMapP; |
| 515 | HostP->PhbP = (struct PHB *) RIO_PTR(Cad, readw(&ParmMapP->phb_ptr)); | 515 | HostP->PhbP = (struct PHB __iomem *) RIO_PTR(Cad, readw(&ParmMapP->phb_ptr)); |
| 516 | HostP->RupP = (struct RUP *) RIO_PTR(Cad, readw(&ParmMapP->rups)); | 516 | HostP->RupP = (struct RUP __iomem *) RIO_PTR(Cad, readw(&ParmMapP->rups)); |
| 517 | HostP->PhbNumP = (unsigned short *) RIO_PTR(Cad, readw(&ParmMapP->phb_num_ptr)); | 517 | HostP->PhbNumP = (unsigned short __iomem *) RIO_PTR(Cad, readw(&ParmMapP->phb_num_ptr)); |
| 518 | HostP->LinkStrP = (struct LPB *) RIO_PTR(Cad, readw(&ParmMapP->link_str_ptr)); | 518 | HostP->LinkStrP = (struct LPB __iomem *) RIO_PTR(Cad, readw(&ParmMapP->link_str_ptr)); |
| 519 | 519 | ||
| 520 | /* | 520 | /* |
| 521 | ** point the UnixRups at the real Rups | 521 | ** point the UnixRups at the real Rups |
| @@ -540,7 +540,7 @@ int RIOBootCodeHOST(struct rio_info *p, struct DownLoad *rbp) | |||
| 540 | for (PortN = p->RIOFirstPortsMapped; PortN < p->RIOLastPortsMapped + PORTS_PER_RTA; PortN++) { | 540 | for (PortN = p->RIOFirstPortsMapped; PortN < p->RIOLastPortsMapped + PORTS_PER_RTA; PortN++) { |
| 541 | if (p->RIOPortp[PortN]->HostP == HostP) { | 541 | if (p->RIOPortp[PortN]->HostP == HostP) { |
| 542 | struct Port *PortP = p->RIOPortp[PortN]; | 542 | struct Port *PortP = p->RIOPortp[PortN]; |
| 543 | struct PHB *PhbP; | 543 | struct PHB __iomem *PhbP; |
| 544 | /* int oldspl; */ | 544 | /* int oldspl; */ |
| 545 | 545 | ||
| 546 | if (!PortP->Mapped) | 546 | if (!PortP->Mapped) |
| @@ -551,12 +551,12 @@ int RIOBootCodeHOST(struct rio_info *p, struct DownLoad *rbp) | |||
| 551 | 551 | ||
| 552 | PortP->PhbP = PhbP; | 552 | PortP->PhbP = PhbP; |
| 553 | 553 | ||
| 554 | PortP->TxAdd = (u16 *) RIO_PTR(Cad, readw(&PhbP->tx_add)); | 554 | PortP->TxAdd = (u16 __iomem *) RIO_PTR(Cad, readw(&PhbP->tx_add)); |
| 555 | PortP->TxStart = (u16 *) RIO_PTR(Cad, readw(&PhbP->tx_start)); | 555 | PortP->TxStart = (u16 __iomem *) RIO_PTR(Cad, readw(&PhbP->tx_start)); |
| 556 | PortP->TxEnd = (u16 *) RIO_PTR(Cad, readw(&PhbP->tx_end)); | 556 | PortP->TxEnd = (u16 __iomem *) RIO_PTR(Cad, readw(&PhbP->tx_end)); |
| 557 | PortP->RxRemove = (u16 *) RIO_PTR(Cad, readw(&PhbP->rx_remove)); | 557 | PortP->RxRemove = (u16 __iomem *) RIO_PTR(Cad, readw(&PhbP->rx_remove)); |
| 558 | PortP->RxStart = (u16 *) RIO_PTR(Cad, readw(&PhbP->rx_start)); | 558 | PortP->RxStart = (u16 __iomem *) RIO_PTR(Cad, readw(&PhbP->rx_start)); |
| 559 | PortP->RxEnd = (u16 *) RIO_PTR(Cad, readw(&PhbP->rx_end)); | 559 | PortP->RxEnd = (u16 __iomem *) RIO_PTR(Cad, readw(&PhbP->rx_end)); |
| 560 | 560 | ||
| 561 | rio_spin_unlock_irqrestore(&PortP->portSem, flags); | 561 | rio_spin_unlock_irqrestore(&PortP->portSem, flags); |
| 562 | /* | 562 | /* |
| @@ -601,9 +601,9 @@ int RIOBootCodeHOST(struct rio_info *p, struct DownLoad *rbp) | |||
| 601 | * return 1. If we havent, then return 0. | 601 | * return 1. If we havent, then return 0. |
| 602 | */ | 602 | */ |
| 603 | 603 | ||
| 604 | int RIOBootRup(struct rio_info *p, unsigned int Rup, struct Host *HostP, struct PKT *PacketP) | 604 | int RIOBootRup(struct rio_info *p, unsigned int Rup, struct Host *HostP, struct PKT __iomem *PacketP) |
| 605 | { | 605 | { |
| 606 | struct PktCmd *PktCmdP = (struct PktCmd *) PacketP->data; | 606 | struct PktCmd __iomem *PktCmdP = (struct PktCmd __iomem *) PacketP->data; |
| 607 | struct PktCmd_M *PktReplyP; | 607 | struct PktCmd_M *PktReplyP; |
| 608 | struct CmdBlk *CmdBlkP; | 608 | struct CmdBlk *CmdBlkP; |
| 609 | unsigned int sequence; | 609 | unsigned int sequence; |
| @@ -722,7 +722,7 @@ int RIOBootRup(struct rio_info *p, unsigned int Rup, struct Host *HostP, struct | |||
| 722 | * RtaUniq is the booted RTA. | 722 | * RtaUniq is the booted RTA. |
| 723 | */ | 723 | */ |
| 724 | 724 | ||
| 725 | static int RIOBootComplete(struct rio_info *p, struct Host *HostP, unsigned int Rup, struct PktCmd *PktCmdP) | 725 | static int RIOBootComplete(struct rio_info *p, struct Host *HostP, unsigned int Rup, struct PktCmd __iomem *PktCmdP) |
| 726 | { | 726 | { |
| 727 | struct Map *MapP = NULL; | 727 | struct Map *MapP = NULL; |
| 728 | struct Map *MapP2 = NULL; | 728 | struct Map *MapP2 = NULL; |
diff --git a/drivers/char/rio/riocmd.c b/drivers/char/rio/riocmd.c index e6d2b14b5e65..4df6ab2206a1 100644 --- a/drivers/char/rio/riocmd.c +++ b/drivers/char/rio/riocmd.c | |||
| @@ -180,7 +180,7 @@ int RIOCommandRta(struct rio_info *p, unsigned long RtaUnique, int (*func) (stru | |||
| 180 | } | 180 | } |
| 181 | 181 | ||
| 182 | 182 | ||
| 183 | int RIOIdentifyRta(struct rio_info *p, void * arg) | 183 | int RIOIdentifyRta(struct rio_info *p, void __user * arg) |
| 184 | { | 184 | { |
| 185 | unsigned int Host; | 185 | unsigned int Host; |
| 186 | 186 | ||
| @@ -245,7 +245,7 @@ int RIOIdentifyRta(struct rio_info *p, void * arg) | |||
| 245 | } | 245 | } |
| 246 | 246 | ||
| 247 | 247 | ||
| 248 | int RIOKillNeighbour(struct rio_info *p, void * arg) | 248 | int RIOKillNeighbour(struct rio_info *p, void __user * arg) |
| 249 | { | 249 | { |
| 250 | uint Host; | 250 | uint Host; |
| 251 | uint ID; | 251 | uint ID; |
| @@ -370,9 +370,9 @@ int RIOFoadWakeup(struct rio_info *p) | |||
| 370 | /* | 370 | /* |
| 371 | ** Incoming command on the COMMAND_RUP to be processed. | 371 | ** Incoming command on the COMMAND_RUP to be processed. |
| 372 | */ | 372 | */ |
| 373 | static int RIOCommandRup(struct rio_info *p, uint Rup, struct Host *HostP, struct PKT * PacketP) | 373 | static int RIOCommandRup(struct rio_info *p, uint Rup, struct Host *HostP, struct PKT __iomem *PacketP) |
| 374 | { | 374 | { |
| 375 | struct PktCmd *PktCmdP = (struct PktCmd *) PacketP->data; | 375 | struct PktCmd __iomem *PktCmdP = (struct PktCmd __iomem *)PacketP->data; |
| 376 | struct Port *PortP; | 376 | struct Port *PortP; |
| 377 | struct UnixRup *UnixRupP; | 377 | struct UnixRup *UnixRupP; |
| 378 | unsigned short SysPort; | 378 | unsigned short SysPort; |
| @@ -407,12 +407,12 @@ static int RIOCommandRup(struct rio_info *p, uint Rup, struct Host *HostP, struc | |||
| 407 | } else | 407 | } else |
| 408 | rio_dprintk(RIO_DEBUG_CMD, "CONTROL information: This is the RUP for link ``%c'' of host ``%s''\n", ('A' + Rup - MAX_RUP), HostP->Name); | 408 | rio_dprintk(RIO_DEBUG_CMD, "CONTROL information: This is the RUP for link ``%c'' of host ``%s''\n", ('A' + Rup - MAX_RUP), HostP->Name); |
| 409 | 409 | ||
| 410 | rio_dprintk(RIO_DEBUG_CMD, "PACKET information: Destination 0x%x:0x%x\n", PacketP->dest_unit, PacketP->dest_port); | 410 | rio_dprintk(RIO_DEBUG_CMD, "PACKET information: Destination 0x%x:0x%x\n", readb(&PacketP->dest_unit), readb(&PacketP->dest_port)); |
| 411 | rio_dprintk(RIO_DEBUG_CMD, "PACKET information: Source 0x%x:0x%x\n", PacketP->src_unit, PacketP->src_port); | 411 | rio_dprintk(RIO_DEBUG_CMD, "PACKET information: Source 0x%x:0x%x\n", readb(&PacketP->src_unit), readb(&PacketP->src_port)); |
| 412 | rio_dprintk(RIO_DEBUG_CMD, "PACKET information: Length 0x%x (%d)\n", PacketP->len, PacketP->len); | 412 | rio_dprintk(RIO_DEBUG_CMD, "PACKET information: Length 0x%x (%d)\n", readb(&PacketP->len), readb(&PacketP->len)); |
| 413 | rio_dprintk(RIO_DEBUG_CMD, "PACKET information: Control 0x%x (%d)\n", PacketP->control, PacketP->control); | 413 | rio_dprintk(RIO_DEBUG_CMD, "PACKET information: Control 0x%x (%d)\n", readb(&PacketP->control), readb(&PacketP->control)); |
| 414 | rio_dprintk(RIO_DEBUG_CMD, "PACKET information: Check 0x%x (%d)\n", PacketP->csum, PacketP->csum); | 414 | rio_dprintk(RIO_DEBUG_CMD, "PACKET information: Check 0x%x (%d)\n", readw(&PacketP->csum), readw(&PacketP->csum)); |
| 415 | rio_dprintk(RIO_DEBUG_CMD, "COMMAND information: Host Port Number 0x%x, " "Command Code 0x%x\n", PktCmdP->PhbNum, PktCmdP->Command); | 415 | rio_dprintk(RIO_DEBUG_CMD, "COMMAND information: Host Port Number 0x%x, " "Command Code 0x%x\n", readb(&PktCmdP->PhbNum), readb(&PktCmdP->Command)); |
| 416 | return 1; | 416 | return 1; |
| 417 | } | 417 | } |
| 418 | PortP = p->RIOPortp[SysPort]; | 418 | PortP = p->RIOPortp[SysPort]; |
| @@ -601,7 +601,7 @@ int RIOQueueCmdBlk(struct Host *HostP, uint Rup, struct CmdBlk *CmdBlkP) | |||
| 601 | /* | 601 | /* |
| 602 | ** Whammy! blat that pack! | 602 | ** Whammy! blat that pack! |
| 603 | */ | 603 | */ |
| 604 | HostP->Copy((caddr_t) & CmdBlkP->Packet, RIO_PTR(HostP->Caddr, UnixRupP->RupP->txpkt), sizeof(struct PKT)); | 604 | HostP->Copy(&CmdBlkP->Packet, RIO_PTR(HostP->Caddr, readw(&UnixRupP->RupP->txpkt)), sizeof(struct PKT)); |
| 605 | 605 | ||
| 606 | /* | 606 | /* |
| 607 | ** place command packet on the pending position. | 607 | ** place command packet on the pending position. |
| @@ -655,7 +655,7 @@ void RIOPollHostCommands(struct rio_info *p, struct Host *HostP) | |||
| 655 | { | 655 | { |
| 656 | struct CmdBlk *CmdBlkP; | 656 | struct CmdBlk *CmdBlkP; |
| 657 | struct UnixRup *UnixRupP; | 657 | struct UnixRup *UnixRupP; |
| 658 | struct PKT *PacketP; | 658 | struct PKT __iomem *PacketP; |
| 659 | unsigned short Rup; | 659 | unsigned short Rup; |
| 660 | unsigned long flags; | 660 | unsigned long flags; |
| 661 | 661 | ||
| @@ -676,7 +676,7 @@ void RIOPollHostCommands(struct rio_info *p, struct Host *HostP) | |||
| 676 | if (readw(&UnixRupP->RupP->rxcontrol) != RX_RUP_INACTIVE) { | 676 | if (readw(&UnixRupP->RupP->rxcontrol) != RX_RUP_INACTIVE) { |
| 677 | int FreeMe; | 677 | int FreeMe; |
| 678 | 678 | ||
| 679 | PacketP = (struct PKT *) RIO_PTR(HostP->Caddr, readw(&UnixRupP->RupP->rxpkt)); | 679 | PacketP = (struct PKT __iomem *) RIO_PTR(HostP->Caddr, readw(&UnixRupP->RupP->rxpkt)); |
| 680 | 680 | ||
| 681 | switch (readb(&PacketP->dest_port)) { | 681 | switch (readb(&PacketP->dest_port)) { |
| 682 | case BOOT_RUP: | 682 | case BOOT_RUP: |
| @@ -694,9 +694,9 @@ void RIOPollHostCommands(struct rio_info *p, struct Host *HostP) | |||
| 694 | */ | 694 | */ |
| 695 | rio_spin_unlock_irqrestore(&UnixRupP->RupLock, flags); | 695 | rio_spin_unlock_irqrestore(&UnixRupP->RupLock, flags); |
| 696 | FreeMe = RIOCommandRup(p, Rup, HostP, PacketP); | 696 | FreeMe = RIOCommandRup(p, Rup, HostP, PacketP); |
| 697 | if (PacketP->data[5] == MEMDUMP) { | 697 | if (readb(&PacketP->data[5]) == MEMDUMP) { |
| 698 | rio_dprintk(RIO_DEBUG_CMD, "Memdump from 0x%x complete\n", *(unsigned short *) & (PacketP->data[6])); | 698 | rio_dprintk(RIO_DEBUG_CMD, "Memdump from 0x%x complete\n", readw(&(PacketP->data[6]))); |
| 699 | HostP->Copy((caddr_t) & (PacketP->data[8]), (caddr_t) p->RIOMemDump, 32); | 699 | rio_memcpy_fromio(p->RIOMemDump, &(PacketP->data[8]), 32); |
| 700 | } | 700 | } |
| 701 | rio_spin_lock_irqsave(&UnixRupP->RupLock, flags); | 701 | rio_spin_lock_irqsave(&UnixRupP->RupLock, flags); |
| 702 | break; | 702 | break; |
| @@ -782,7 +782,7 @@ void RIOPollHostCommands(struct rio_info *p, struct Host *HostP) | |||
| 782 | /* | 782 | /* |
| 783 | ** Whammy! blat that pack! | 783 | ** Whammy! blat that pack! |
| 784 | */ | 784 | */ |
| 785 | HostP->Copy((caddr_t) & CmdBlkP->Packet, RIO_PTR(HostP->Caddr, UnixRupP->RupP->txpkt), sizeof(struct PKT)); | 785 | HostP->Copy(&CmdBlkP->Packet, RIO_PTR(HostP->Caddr, readw(&UnixRupP->RupP->txpkt)), sizeof(struct PKT)); |
| 786 | 786 | ||
| 787 | /* | 787 | /* |
| 788 | ** remove the command from the rup command queue... | 788 | ** remove the command from the rup command queue... |
| @@ -824,7 +824,7 @@ int RIOWFlushMark(unsigned long iPortP, struct CmdBlk *CmdBlkP) | |||
| 824 | int RIORFlushEnable(unsigned long iPortP, struct CmdBlk *CmdBlkP) | 824 | int RIORFlushEnable(unsigned long iPortP, struct CmdBlk *CmdBlkP) |
| 825 | { | 825 | { |
| 826 | struct Port *PortP = (struct Port *) iPortP; | 826 | struct Port *PortP = (struct Port *) iPortP; |
| 827 | struct PKT *PacketP; | 827 | struct PKT __iomem *PacketP; |
| 828 | unsigned long flags; | 828 | unsigned long flags; |
| 829 | 829 | ||
| 830 | rio_spin_lock_irqsave(&PortP->portSem, flags); | 830 | rio_spin_lock_irqsave(&PortP->portSem, flags); |
diff --git a/drivers/char/rio/rioctrl.c b/drivers/char/rio/rioctrl.c index 75b2557c37ec..052e8120a471 100644 --- a/drivers/char/rio/rioctrl.c +++ b/drivers/char/rio/rioctrl.c | |||
| @@ -80,7 +80,7 @@ static char *_rioctrl_c_sccs_ = "@(#)rioctrl.c 1.3"; | |||
| 80 | static struct LpbReq LpbReq; | 80 | static struct LpbReq LpbReq; |
| 81 | static struct RupReq RupReq; | 81 | static struct RupReq RupReq; |
| 82 | static struct PortReq PortReq; | 82 | static struct PortReq PortReq; |
| 83 | static struct HostReq HostReq; | 83 | static struct HostReq HostReq; /* oh really? global? and no locking? */ |
| 84 | static struct HostDpRam HostDpRam; | 84 | static struct HostDpRam HostDpRam; |
| 85 | static struct DebugCtrl DebugCtrl; | 85 | static struct DebugCtrl DebugCtrl; |
| 86 | static struct Map MapEnt; | 86 | static struct Map MapEnt; |
| @@ -126,12 +126,19 @@ static int | |||
| 126 | 126 | ||
| 127 | #define drv_makedev(maj, min) ((((uint) maj & 0xff) << 8) | ((uint) min & 0xff)) | 127 | #define drv_makedev(maj, min) ((((uint) maj & 0xff) << 8) | ((uint) min & 0xff)) |
| 128 | 128 | ||
| 129 | int riocontrol(p, dev, cmd, arg, su) | 129 | static int copy_from_io(void __user *to, void __iomem *from, size_t size) |
| 130 | struct rio_info *p; | 130 | { |
| 131 | dev_t dev; | 131 | void *buf = kmalloc(size, GFP_KERNEL); |
| 132 | int cmd; | 132 | int res = -ENOMEM; |
| 133 | caddr_t arg; | 133 | if (buf) { |
| 134 | int su; | 134 | rio_memcpy_fromio(buf, from, size); |
| 135 | res = copy_to_user(to, buf, size); | ||
| 136 | kfree(buf); | ||
| 137 | } | ||
| 138 | return res; | ||
| 139 | } | ||
| 140 | |||
| 141 | int riocontrol(struct rio_info *p, dev_t dev, int cmd, unsigned long arg, int su) | ||
| 135 | { | 142 | { |
| 136 | uint Host; /* leave me unsigned! */ | 143 | uint Host; /* leave me unsigned! */ |
| 137 | uint port; /* and me! */ | 144 | uint port; /* and me! */ |
| @@ -139,9 +146,10 @@ int su; | |||
| 139 | ushort loop; | 146 | ushort loop; |
| 140 | int Entry; | 147 | int Entry; |
| 141 | struct Port *PortP; | 148 | struct Port *PortP; |
| 142 | struct PKT *PacketP; | 149 | struct PKT __iomem *PacketP; |
| 143 | int retval = 0; | 150 | int retval = 0; |
| 144 | unsigned long flags; | 151 | unsigned long flags; |
| 152 | void __user *argp = (void __user *)arg; | ||
| 145 | 153 | ||
| 146 | func_enter(); | 154 | func_enter(); |
| 147 | 155 | ||
| @@ -149,7 +157,7 @@ int su; | |||
| 149 | Host = 0; | 157 | Host = 0; |
| 150 | PortP = NULL; | 158 | PortP = NULL; |
| 151 | 159 | ||
| 152 | rio_dprintk(RIO_DEBUG_CTRL, "control ioctl cmd: 0x%x arg: %p\n", cmd, arg); | 160 | rio_dprintk(RIO_DEBUG_CTRL, "control ioctl cmd: 0x%x arg: %p\n", cmd, argp); |
| 153 | 161 | ||
| 154 | switch (cmd) { | 162 | switch (cmd) { |
| 155 | /* | 163 | /* |
| @@ -160,11 +168,11 @@ int su; | |||
| 160 | ** otherwise just the specified host card will be changed. | 168 | ** otherwise just the specified host card will be changed. |
| 161 | */ | 169 | */ |
| 162 | case RIO_SET_TIMER: | 170 | case RIO_SET_TIMER: |
| 163 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_SET_TIMER to %ldms\n", (unsigned long)arg); | 171 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_SET_TIMER to %ldms\n", arg); |
| 164 | { | 172 | { |
| 165 | int host, value; | 173 | int host, value; |
| 166 | host = ((unsigned long) arg >> 16) & 0x0000FFFF; | 174 | host = (arg >> 16) & 0x0000FFFF; |
| 167 | value = (unsigned long) arg & 0x0000ffff; | 175 | value = arg & 0x0000ffff; |
| 168 | if (host == -1) { | 176 | if (host == -1) { |
| 169 | for (host = 0; host < p->RIONumHosts; host++) { | 177 | for (host = 0; host < p->RIONumHosts; host++) { |
| 170 | if (p->RIOHosts[host].Flags == RC_RUNNING) { | 178 | if (p->RIOHosts[host].Flags == RC_RUNNING) { |
| @@ -183,26 +191,26 @@ int su; | |||
| 183 | 191 | ||
| 184 | case RIO_FOAD_RTA: | 192 | case RIO_FOAD_RTA: |
| 185 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_FOAD_RTA\n"); | 193 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_FOAD_RTA\n"); |
| 186 | return RIOCommandRta(p, (unsigned long)arg, RIOFoadRta); | 194 | return RIOCommandRta(p, arg, RIOFoadRta); |
| 187 | 195 | ||
| 188 | case RIO_ZOMBIE_RTA: | 196 | case RIO_ZOMBIE_RTA: |
| 189 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_ZOMBIE_RTA\n"); | 197 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_ZOMBIE_RTA\n"); |
| 190 | return RIOCommandRta(p, (unsigned long)arg, RIOZombieRta); | 198 | return RIOCommandRta(p, arg, RIOZombieRta); |
| 191 | 199 | ||
| 192 | case RIO_IDENTIFY_RTA: | 200 | case RIO_IDENTIFY_RTA: |
| 193 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_IDENTIFY_RTA\n"); | 201 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_IDENTIFY_RTA\n"); |
| 194 | return RIOIdentifyRta(p, arg); | 202 | return RIOIdentifyRta(p, argp); |
| 195 | 203 | ||
| 196 | case RIO_KILL_NEIGHBOUR: | 204 | case RIO_KILL_NEIGHBOUR: |
| 197 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_KILL_NEIGHBOUR\n"); | 205 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_KILL_NEIGHBOUR\n"); |
| 198 | return RIOKillNeighbour(p, arg); | 206 | return RIOKillNeighbour(p, argp); |
| 199 | 207 | ||
| 200 | case SPECIAL_RUP_CMD: | 208 | case SPECIAL_RUP_CMD: |
| 201 | { | 209 | { |
| 202 | struct CmdBlk *CmdBlkP; | 210 | struct CmdBlk *CmdBlkP; |
| 203 | 211 | ||
| 204 | rio_dprintk(RIO_DEBUG_CTRL, "SPECIAL_RUP_CMD\n"); | 212 | rio_dprintk(RIO_DEBUG_CTRL, "SPECIAL_RUP_CMD\n"); |
| 205 | if (copy_from_user(&SpecialRupCmd, arg, sizeof(SpecialRupCmd))) { | 213 | if (copy_from_user(&SpecialRupCmd, argp, sizeof(SpecialRupCmd))) { |
| 206 | rio_dprintk(RIO_DEBUG_CTRL, "SPECIAL_RUP_CMD copy failed\n"); | 214 | rio_dprintk(RIO_DEBUG_CTRL, "SPECIAL_RUP_CMD copy failed\n"); |
| 207 | p->RIOError.Error = COPYIN_FAILED; | 215 | p->RIOError.Error = COPYIN_FAILED; |
| 208 | return -EFAULT; | 216 | return -EFAULT; |
| @@ -239,7 +247,7 @@ int su; | |||
| 239 | if ((retval = RIOApel(p)) != 0) | 247 | if ((retval = RIOApel(p)) != 0) |
| 240 | return retval; | 248 | return retval; |
| 241 | 249 | ||
| 242 | if (copy_to_user(arg, p->RIOConnectTable, TOTAL_MAP_ENTRIES * sizeof(struct Map))) { | 250 | if (copy_to_user(argp, p->RIOConnectTable, TOTAL_MAP_ENTRIES * sizeof(struct Map))) { |
| 243 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_GET_TABLE copy failed\n"); | 251 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_GET_TABLE copy failed\n"); |
| 244 | p->RIOError.Error = COPYOUT_FAILED; | 252 | p->RIOError.Error = COPYOUT_FAILED; |
| 245 | return -EFAULT; | 253 | return -EFAULT; |
| @@ -284,7 +292,7 @@ int su; | |||
| 284 | p->RIOError.Error = NOT_SUPER_USER; | 292 | p->RIOError.Error = NOT_SUPER_USER; |
| 285 | return -EPERM; | 293 | return -EPERM; |
| 286 | } | 294 | } |
| 287 | if (copy_from_user(&p->RIOConnectTable[0], arg, TOTAL_MAP_ENTRIES * sizeof(struct Map))) { | 295 | if (copy_from_user(&p->RIOConnectTable[0], argp, TOTAL_MAP_ENTRIES * sizeof(struct Map))) { |
| 288 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_PUT_TABLE copy failed\n"); | 296 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_PUT_TABLE copy failed\n"); |
| 289 | p->RIOError.Error = COPYIN_FAILED; | 297 | p->RIOError.Error = COPYIN_FAILED; |
| 290 | return -EFAULT; | 298 | return -EFAULT; |
| @@ -330,7 +338,7 @@ int su; | |||
| 330 | p->RIOError.Error = NOT_SUPER_USER; | 338 | p->RIOError.Error = NOT_SUPER_USER; |
| 331 | return -EPERM; | 339 | return -EPERM; |
| 332 | } | 340 | } |
| 333 | if (copy_to_user(arg, p->RIOBindTab, (sizeof(ulong) * MAX_RTA_BINDINGS))) { | 341 | if (copy_to_user(argp, p->RIOBindTab, (sizeof(ulong) * MAX_RTA_BINDINGS))) { |
| 334 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_GET_BINDINGS copy failed\n"); | 342 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_GET_BINDINGS copy failed\n"); |
| 335 | p->RIOError.Error = COPYOUT_FAILED; | 343 | p->RIOError.Error = COPYOUT_FAILED; |
| 336 | return -EFAULT; | 344 | return -EFAULT; |
| @@ -349,7 +357,7 @@ int su; | |||
| 349 | p->RIOError.Error = NOT_SUPER_USER; | 357 | p->RIOError.Error = NOT_SUPER_USER; |
| 350 | return -EPERM; | 358 | return -EPERM; |
| 351 | } | 359 | } |
| 352 | if (copy_from_user(&p->RIOBindTab[0], arg, (sizeof(ulong) * MAX_RTA_BINDINGS))) { | 360 | if (copy_from_user(&p->RIOBindTab[0], argp, (sizeof(ulong) * MAX_RTA_BINDINGS))) { |
| 353 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_PUT_BINDINGS copy failed\n"); | 361 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_PUT_BINDINGS copy failed\n"); |
| 354 | p->RIOError.Error = COPYIN_FAILED; | 362 | p->RIOError.Error = COPYIN_FAILED; |
| 355 | return -EFAULT; | 363 | return -EFAULT; |
| @@ -373,12 +381,12 @@ int su; | |||
| 373 | for (Entry = 0; Entry < MAX_RTA_BINDINGS; Entry++) { | 381 | for (Entry = 0; Entry < MAX_RTA_BINDINGS; Entry++) { |
| 374 | if ((EmptySlot == -1) && (p->RIOBindTab[Entry] == 0L)) | 382 | if ((EmptySlot == -1) && (p->RIOBindTab[Entry] == 0L)) |
| 375 | EmptySlot = Entry; | 383 | EmptySlot = Entry; |
| 376 | else if (p->RIOBindTab[Entry] == (long)arg) { | 384 | else if (p->RIOBindTab[Entry] == arg) { |
| 377 | /* | 385 | /* |
| 378 | ** Already exists - delete | 386 | ** Already exists - delete |
| 379 | */ | 387 | */ |
| 380 | p->RIOBindTab[Entry] = 0L; | 388 | p->RIOBindTab[Entry] = 0L; |
| 381 | rio_dprintk(RIO_DEBUG_CTRL, "Removing Rta %ld from p->RIOBindTab\n", (unsigned long)arg); | 389 | rio_dprintk(RIO_DEBUG_CTRL, "Removing Rta %ld from p->RIOBindTab\n", arg); |
| 382 | return 0; | 390 | return 0; |
| 383 | } | 391 | } |
| 384 | } | 392 | } |
| @@ -386,10 +394,10 @@ int su; | |||
| 386 | ** Dosen't exist - add | 394 | ** Dosen't exist - add |
| 387 | */ | 395 | */ |
| 388 | if (EmptySlot != -1) { | 396 | if (EmptySlot != -1) { |
| 389 | p->RIOBindTab[EmptySlot] = (unsigned long)arg; | 397 | p->RIOBindTab[EmptySlot] = arg; |
| 390 | rio_dprintk(RIO_DEBUG_CTRL, "Adding Rta %lx to p->RIOBindTab\n", (unsigned long) arg); | 398 | rio_dprintk(RIO_DEBUG_CTRL, "Adding Rta %lx to p->RIOBindTab\n", arg); |
| 391 | } else { | 399 | } else { |
| 392 | rio_dprintk(RIO_DEBUG_CTRL, "p->RIOBindTab full! - Rta %lx not added\n", (unsigned long) arg); | 400 | rio_dprintk(RIO_DEBUG_CTRL, "p->RIOBindTab full! - Rta %lx not added\n", arg); |
| 393 | return -ENOMEM; | 401 | return -ENOMEM; |
| 394 | } | 402 | } |
| 395 | return 0; | 403 | return 0; |
| @@ -397,7 +405,7 @@ int su; | |||
| 397 | 405 | ||
| 398 | case RIO_RESUME: | 406 | case RIO_RESUME: |
| 399 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_RESUME\n"); | 407 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_RESUME\n"); |
| 400 | port = (unsigned long) arg; | 408 | port = arg; |
| 401 | if ((port < 0) || (port > 511)) { | 409 | if ((port < 0) || (port > 511)) { |
| 402 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_RESUME: Bad port number %d\n", port); | 410 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_RESUME: Bad port number %d\n", port); |
| 403 | p->RIOError.Error = PORT_NUMBER_OUT_OF_RANGE; | 411 | p->RIOError.Error = PORT_NUMBER_OUT_OF_RANGE; |
| @@ -433,7 +441,7 @@ int su; | |||
| 433 | p->RIOError.Error = NOT_SUPER_USER; | 441 | p->RIOError.Error = NOT_SUPER_USER; |
| 434 | return -EPERM; | 442 | return -EPERM; |
| 435 | } | 443 | } |
| 436 | if (copy_from_user(&MapEnt, arg, sizeof(MapEnt))) { | 444 | if (copy_from_user(&MapEnt, argp, sizeof(MapEnt))) { |
| 437 | rio_dprintk(RIO_DEBUG_CTRL, "Copy from user space failed\n"); | 445 | rio_dprintk(RIO_DEBUG_CTRL, "Copy from user space failed\n"); |
| 438 | p->RIOError.Error = COPYIN_FAILED; | 446 | p->RIOError.Error = COPYIN_FAILED; |
| 439 | return -EFAULT; | 447 | return -EFAULT; |
| @@ -447,7 +455,7 @@ int su; | |||
| 447 | p->RIOError.Error = NOT_SUPER_USER; | 455 | p->RIOError.Error = NOT_SUPER_USER; |
| 448 | return -EPERM; | 456 | return -EPERM; |
| 449 | } | 457 | } |
| 450 | if (copy_from_user(&MapEnt, arg, sizeof(MapEnt))) { | 458 | if (copy_from_user(&MapEnt, argp, sizeof(MapEnt))) { |
| 451 | rio_dprintk(RIO_DEBUG_CTRL, "Copy from user space failed\n"); | 459 | rio_dprintk(RIO_DEBUG_CTRL, "Copy from user space failed\n"); |
| 452 | p->RIOError.Error = COPYIN_FAILED; | 460 | p->RIOError.Error = COPYIN_FAILED; |
| 453 | return -EFAULT; | 461 | return -EFAULT; |
| @@ -461,7 +469,7 @@ int su; | |||
| 461 | p->RIOError.Error = NOT_SUPER_USER; | 469 | p->RIOError.Error = NOT_SUPER_USER; |
| 462 | return -EPERM; | 470 | return -EPERM; |
| 463 | } | 471 | } |
| 464 | if (copy_from_user(&MapEnt, arg, sizeof(MapEnt))) { | 472 | if (copy_from_user(&MapEnt, argp, sizeof(MapEnt))) { |
| 465 | rio_dprintk(RIO_DEBUG_CTRL, "Copy from data space failed\n"); | 473 | rio_dprintk(RIO_DEBUG_CTRL, "Copy from data space failed\n"); |
| 466 | p->RIOError.Error = COPYIN_FAILED; | 474 | p->RIOError.Error = COPYIN_FAILED; |
| 467 | return -EFAULT; | 475 | return -EFAULT; |
| @@ -469,14 +477,14 @@ int su; | |||
| 469 | return RIODeleteRta(p, &MapEnt); | 477 | return RIODeleteRta(p, &MapEnt); |
| 470 | 478 | ||
| 471 | case RIO_QUICK_CHECK: | 479 | case RIO_QUICK_CHECK: |
| 472 | if (copy_to_user(arg, &p->RIORtaDisCons, sizeof(unsigned int))) { | 480 | if (copy_to_user(argp, &p->RIORtaDisCons, sizeof(unsigned int))) { |
| 473 | p->RIOError.Error = COPYOUT_FAILED; | 481 | p->RIOError.Error = COPYOUT_FAILED; |
| 474 | return -EFAULT; | 482 | return -EFAULT; |
| 475 | } | 483 | } |
| 476 | return 0; | 484 | return 0; |
| 477 | 485 | ||
| 478 | case RIO_LAST_ERROR: | 486 | case RIO_LAST_ERROR: |
| 479 | if (copy_to_user(arg, &p->RIOError, sizeof(struct Error))) | 487 | if (copy_to_user(argp, &p->RIOError, sizeof(struct Error))) |
| 480 | return -EFAULT; | 488 | return -EFAULT; |
| 481 | return 0; | 489 | return 0; |
| 482 | 490 | ||
| @@ -485,7 +493,7 @@ int su; | |||
| 485 | return -EINVAL; | 493 | return -EINVAL; |
| 486 | 494 | ||
| 487 | case RIO_GET_MODTYPE: | 495 | case RIO_GET_MODTYPE: |
| 488 | if (copy_from_user(&port, arg, sizeof(unsigned int))) { | 496 | if (copy_from_user(&port, argp, sizeof(unsigned int))) { |
| 489 | p->RIOError.Error = COPYIN_FAILED; | 497 | p->RIOError.Error = COPYIN_FAILED; |
| 490 | return -EFAULT; | 498 | return -EFAULT; |
| 491 | } | 499 | } |
| @@ -505,7 +513,7 @@ int su; | |||
| 505 | ** Return module type of port | 513 | ** Return module type of port |
| 506 | */ | 514 | */ |
| 507 | port = PortP->HostP->UnixRups[PortP->RupNum].ModTypes; | 515 | port = PortP->HostP->UnixRups[PortP->RupNum].ModTypes; |
| 508 | if (copy_to_user(arg, &port, sizeof(unsigned int))) { | 516 | if (copy_to_user(argp, &port, sizeof(unsigned int))) { |
| 509 | p->RIOError.Error = COPYOUT_FAILED; | 517 | p->RIOError.Error = COPYOUT_FAILED; |
| 510 | return -EFAULT; | 518 | return -EFAULT; |
| 511 | } | 519 | } |
| @@ -521,7 +529,7 @@ int su; | |||
| 521 | 529 | ||
| 522 | case RIO_SETUP_PORTS: | 530 | case RIO_SETUP_PORTS: |
| 523 | rio_dprintk(RIO_DEBUG_CTRL, "Setup ports\n"); | 531 | rio_dprintk(RIO_DEBUG_CTRL, "Setup ports\n"); |
| 524 | if (copy_from_user(&PortSetup, arg, sizeof(PortSetup))) { | 532 | if (copy_from_user(&PortSetup, argp, sizeof(PortSetup))) { |
| 525 | p->RIOError.Error = COPYIN_FAILED; | 533 | p->RIOError.Error = COPYIN_FAILED; |
| 526 | rio_dprintk(RIO_DEBUG_CTRL, "EFAULT"); | 534 | rio_dprintk(RIO_DEBUG_CTRL, "EFAULT"); |
| 527 | return -EFAULT; | 535 | return -EFAULT; |
| @@ -551,7 +559,7 @@ int su; | |||
| 551 | 559 | ||
| 552 | case RIO_GET_PORT_SETUP: | 560 | case RIO_GET_PORT_SETUP: |
| 553 | rio_dprintk(RIO_DEBUG_CTRL, "Get port setup\n"); | 561 | rio_dprintk(RIO_DEBUG_CTRL, "Get port setup\n"); |
| 554 | if (copy_from_user(&PortSetup, arg, sizeof(PortSetup))) { | 562 | if (copy_from_user(&PortSetup, argp, sizeof(PortSetup))) { |
| 555 | p->RIOError.Error = COPYIN_FAILED; | 563 | p->RIOError.Error = COPYIN_FAILED; |
| 556 | return -EFAULT; | 564 | return -EFAULT; |
| 557 | } | 565 | } |
| @@ -572,7 +580,7 @@ int su; | |||
| 572 | PortSetup.XpOn[MAX_XP_CTRL_LEN - 1] = '\0'; | 580 | PortSetup.XpOn[MAX_XP_CTRL_LEN - 1] = '\0'; |
| 573 | PortSetup.XpOff[MAX_XP_CTRL_LEN - 1] = '\0'; | 581 | PortSetup.XpOff[MAX_XP_CTRL_LEN - 1] = '\0'; |
| 574 | 582 | ||
| 575 | if (copy_to_user(arg, &PortSetup, sizeof(PortSetup))) { | 583 | if (copy_to_user(argp, &PortSetup, sizeof(PortSetup))) { |
| 576 | p->RIOError.Error = COPYOUT_FAILED; | 584 | p->RIOError.Error = COPYOUT_FAILED; |
| 577 | return -EFAULT; | 585 | return -EFAULT; |
| 578 | } | 586 | } |
| @@ -580,7 +588,7 @@ int su; | |||
| 580 | 588 | ||
| 581 | case RIO_GET_PORT_PARAMS: | 589 | case RIO_GET_PORT_PARAMS: |
| 582 | rio_dprintk(RIO_DEBUG_CTRL, "Get port params\n"); | 590 | rio_dprintk(RIO_DEBUG_CTRL, "Get port params\n"); |
| 583 | if (copy_from_user(&PortParams, arg, sizeof(struct PortParams))) { | 591 | if (copy_from_user(&PortParams, argp, sizeof(struct PortParams))) { |
| 584 | p->RIOError.Error = COPYIN_FAILED; | 592 | p->RIOError.Error = COPYIN_FAILED; |
| 585 | return -EFAULT; | 593 | return -EFAULT; |
| 586 | } | 594 | } |
| @@ -593,7 +601,7 @@ int su; | |||
| 593 | PortParams.State = PortP->State; | 601 | PortParams.State = PortP->State; |
| 594 | rio_dprintk(RIO_DEBUG_CTRL, "Port %d\n", PortParams.Port); | 602 | rio_dprintk(RIO_DEBUG_CTRL, "Port %d\n", PortParams.Port); |
| 595 | 603 | ||
| 596 | if (copy_to_user(arg, &PortParams, sizeof(struct PortParams))) { | 604 | if (copy_to_user(argp, &PortParams, sizeof(struct PortParams))) { |
| 597 | p->RIOError.Error = COPYOUT_FAILED; | 605 | p->RIOError.Error = COPYOUT_FAILED; |
| 598 | return -EFAULT; | 606 | return -EFAULT; |
| 599 | } | 607 | } |
| @@ -601,7 +609,7 @@ int su; | |||
| 601 | 609 | ||
| 602 | case RIO_GET_PORT_TTY: | 610 | case RIO_GET_PORT_TTY: |
| 603 | rio_dprintk(RIO_DEBUG_CTRL, "Get port tty\n"); | 611 | rio_dprintk(RIO_DEBUG_CTRL, "Get port tty\n"); |
| 604 | if (copy_from_user(&PortTty, arg, sizeof(struct PortTty))) { | 612 | if (copy_from_user(&PortTty, argp, sizeof(struct PortTty))) { |
| 605 | p->RIOError.Error = COPYIN_FAILED; | 613 | p->RIOError.Error = COPYIN_FAILED; |
| 606 | return -EFAULT; | 614 | return -EFAULT; |
| 607 | } | 615 | } |
| @@ -612,14 +620,14 @@ int su; | |||
| 612 | 620 | ||
| 613 | rio_dprintk(RIO_DEBUG_CTRL, "Port %d\n", PortTty.port); | 621 | rio_dprintk(RIO_DEBUG_CTRL, "Port %d\n", PortTty.port); |
| 614 | PortP = (p->RIOPortp[PortTty.port]); | 622 | PortP = (p->RIOPortp[PortTty.port]); |
| 615 | if (copy_to_user(arg, &PortTty, sizeof(struct PortTty))) { | 623 | if (copy_to_user(argp, &PortTty, sizeof(struct PortTty))) { |
| 616 | p->RIOError.Error = COPYOUT_FAILED; | 624 | p->RIOError.Error = COPYOUT_FAILED; |
| 617 | return -EFAULT; | 625 | return -EFAULT; |
| 618 | } | 626 | } |
| 619 | return retval; | 627 | return retval; |
| 620 | 628 | ||
| 621 | case RIO_SET_PORT_TTY: | 629 | case RIO_SET_PORT_TTY: |
| 622 | if (copy_from_user(&PortTty, arg, sizeof(struct PortTty))) { | 630 | if (copy_from_user(&PortTty, argp, sizeof(struct PortTty))) { |
| 623 | p->RIOError.Error = COPYIN_FAILED; | 631 | p->RIOError.Error = COPYIN_FAILED; |
| 624 | return -EFAULT; | 632 | return -EFAULT; |
| 625 | } | 633 | } |
| @@ -634,7 +642,7 @@ int su; | |||
| 634 | 642 | ||
| 635 | case RIO_SET_PORT_PARAMS: | 643 | case RIO_SET_PORT_PARAMS: |
| 636 | rio_dprintk(RIO_DEBUG_CTRL, "Set port params\n"); | 644 | rio_dprintk(RIO_DEBUG_CTRL, "Set port params\n"); |
| 637 | if (copy_from_user(&PortParams, arg, sizeof(PortParams))) { | 645 | if (copy_from_user(&PortParams, argp, sizeof(PortParams))) { |
| 638 | p->RIOError.Error = COPYIN_FAILED; | 646 | p->RIOError.Error = COPYIN_FAILED; |
| 639 | return -EFAULT; | 647 | return -EFAULT; |
| 640 | } | 648 | } |
| @@ -650,7 +658,7 @@ int su; | |||
| 650 | 658 | ||
| 651 | case RIO_GET_PORT_STATS: | 659 | case RIO_GET_PORT_STATS: |
| 652 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_GET_PORT_STATS\n"); | 660 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_GET_PORT_STATS\n"); |
| 653 | if (copy_from_user(&portStats, arg, sizeof(struct portStats))) { | 661 | if (copy_from_user(&portStats, argp, sizeof(struct portStats))) { |
| 654 | p->RIOError.Error = COPYIN_FAILED; | 662 | p->RIOError.Error = COPYIN_FAILED; |
| 655 | return -EFAULT; | 663 | return -EFAULT; |
| 656 | } | 664 | } |
| @@ -665,14 +673,14 @@ int su; | |||
| 665 | portStats.opens = PortP->opens; | 673 | portStats.opens = PortP->opens; |
| 666 | portStats.closes = PortP->closes; | 674 | portStats.closes = PortP->closes; |
| 667 | portStats.ioctls = PortP->ioctls; | 675 | portStats.ioctls = PortP->ioctls; |
| 668 | if (copy_to_user(arg, &portStats, sizeof(struct portStats))) { | 676 | if (copy_to_user(argp, &portStats, sizeof(struct portStats))) { |
| 669 | p->RIOError.Error = COPYOUT_FAILED; | 677 | p->RIOError.Error = COPYOUT_FAILED; |
| 670 | return -EFAULT; | 678 | return -EFAULT; |
| 671 | } | 679 | } |
| 672 | return retval; | 680 | return retval; |
| 673 | 681 | ||
| 674 | case RIO_RESET_PORT_STATS: | 682 | case RIO_RESET_PORT_STATS: |
| 675 | port = (unsigned long) arg; | 683 | port = arg; |
| 676 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_RESET_PORT_STATS\n"); | 684 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_RESET_PORT_STATS\n"); |
| 677 | if (port >= RIO_PORTS) { | 685 | if (port >= RIO_PORTS) { |
| 678 | p->RIOError.Error = PORT_NUMBER_OUT_OF_RANGE; | 686 | p->RIOError.Error = PORT_NUMBER_OUT_OF_RANGE; |
| @@ -690,7 +698,7 @@ int su; | |||
| 690 | 698 | ||
| 691 | case RIO_GATHER_PORT_STATS: | 699 | case RIO_GATHER_PORT_STATS: |
| 692 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_GATHER_PORT_STATS\n"); | 700 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_GATHER_PORT_STATS\n"); |
| 693 | if (copy_from_user(&portStats, arg, sizeof(struct portStats))) { | 701 | if (copy_from_user(&portStats, argp, sizeof(struct portStats))) { |
| 694 | p->RIOError.Error = COPYIN_FAILED; | 702 | p->RIOError.Error = COPYIN_FAILED; |
| 695 | return -EFAULT; | 703 | return -EFAULT; |
| 696 | } | 704 | } |
| @@ -706,7 +714,7 @@ int su; | |||
| 706 | 714 | ||
| 707 | case RIO_READ_CONFIG: | 715 | case RIO_READ_CONFIG: |
| 708 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_READ_CONFIG\n"); | 716 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_READ_CONFIG\n"); |
| 709 | if (copy_to_user(arg, &p->RIOConf, sizeof(struct Conf))) { | 717 | if (copy_to_user(argp, &p->RIOConf, sizeof(struct Conf))) { |
| 710 | p->RIOError.Error = COPYOUT_FAILED; | 718 | p->RIOError.Error = COPYOUT_FAILED; |
| 711 | return -EFAULT; | 719 | return -EFAULT; |
| 712 | } | 720 | } |
| @@ -718,7 +726,7 @@ int su; | |||
| 718 | p->RIOError.Error = NOT_SUPER_USER; | 726 | p->RIOError.Error = NOT_SUPER_USER; |
| 719 | return -EPERM; | 727 | return -EPERM; |
| 720 | } | 728 | } |
| 721 | if (copy_from_user(&p->RIOConf, arg, sizeof(struct Conf))) { | 729 | if (copy_from_user(&p->RIOConf, argp, sizeof(struct Conf))) { |
| 722 | p->RIOError.Error = COPYIN_FAILED; | 730 | p->RIOError.Error = COPYIN_FAILED; |
| 723 | return -EFAULT; | 731 | return -EFAULT; |
| 724 | } | 732 | } |
| @@ -746,7 +754,7 @@ int su; | |||
| 746 | case RIO_SETDEBUG: | 754 | case RIO_SETDEBUG: |
| 747 | case RIO_GETDEBUG: | 755 | case RIO_GETDEBUG: |
| 748 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_SETDEBUG/RIO_GETDEBUG\n"); | 756 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_SETDEBUG/RIO_GETDEBUG\n"); |
| 749 | if (copy_from_user(&DebugCtrl, arg, sizeof(DebugCtrl))) { | 757 | if (copy_from_user(&DebugCtrl, argp, sizeof(DebugCtrl))) { |
| 750 | p->RIOError.Error = COPYIN_FAILED; | 758 | p->RIOError.Error = COPYIN_FAILED; |
| 751 | return -EFAULT; | 759 | return -EFAULT; |
| 752 | } | 760 | } |
| @@ -763,7 +771,7 @@ int su; | |||
| 763 | rio_dprintk(RIO_DEBUG_CTRL, "Get global debug 0x%x wait 0x%x\n", p->rio_debug, p->RIODebugWait); | 771 | rio_dprintk(RIO_DEBUG_CTRL, "Get global debug 0x%x wait 0x%x\n", p->rio_debug, p->RIODebugWait); |
| 764 | DebugCtrl.Debug = p->rio_debug; | 772 | DebugCtrl.Debug = p->rio_debug; |
| 765 | DebugCtrl.Wait = p->RIODebugWait; | 773 | DebugCtrl.Wait = p->RIODebugWait; |
| 766 | if (copy_to_user(arg, &DebugCtrl, sizeof(DebugCtrl))) { | 774 | if (copy_to_user(argp, &DebugCtrl, sizeof(DebugCtrl))) { |
| 767 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_SET/GET DEBUG: bad port number %d\n", DebugCtrl.SysPort); | 775 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_SET/GET DEBUG: bad port number %d\n", DebugCtrl.SysPort); |
| 768 | p->RIOError.Error = COPYOUT_FAILED; | 776 | p->RIOError.Error = COPYOUT_FAILED; |
| 769 | return -EFAULT; | 777 | return -EFAULT; |
| @@ -785,7 +793,7 @@ int su; | |||
| 785 | } else { | 793 | } else { |
| 786 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_GETDEBUG 0x%x\n", p->RIOPortp[DebugCtrl.SysPort]->Debug); | 794 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_GETDEBUG 0x%x\n", p->RIOPortp[DebugCtrl.SysPort]->Debug); |
| 787 | DebugCtrl.Debug = p->RIOPortp[DebugCtrl.SysPort]->Debug; | 795 | DebugCtrl.Debug = p->RIOPortp[DebugCtrl.SysPort]->Debug; |
| 788 | if (copy_to_user(arg, &DebugCtrl, sizeof(DebugCtrl))) { | 796 | if (copy_to_user(argp, &DebugCtrl, sizeof(DebugCtrl))) { |
| 789 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_GETDEBUG: Bad copy to user space\n"); | 797 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_GETDEBUG: Bad copy to user space\n"); |
| 790 | p->RIOError.Error = COPYOUT_FAILED; | 798 | p->RIOError.Error = COPYOUT_FAILED; |
| 791 | return -EFAULT; | 799 | return -EFAULT; |
| @@ -800,7 +808,7 @@ int su; | |||
| 800 | ** textual null terminated string. | 808 | ** textual null terminated string. |
| 801 | */ | 809 | */ |
| 802 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_VERSID\n"); | 810 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_VERSID\n"); |
| 803 | if (copy_to_user(arg, RIOVersid(), sizeof(struct rioVersion))) { | 811 | if (copy_to_user(argp, RIOVersid(), sizeof(struct rioVersion))) { |
| 804 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_VERSID: Bad copy to user space (host=%d)\n", Host); | 812 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_VERSID: Bad copy to user space (host=%d)\n", Host); |
| 805 | p->RIOError.Error = COPYOUT_FAILED; | 813 | p->RIOError.Error = COPYOUT_FAILED; |
| 806 | return -EFAULT; | 814 | return -EFAULT; |
| @@ -813,7 +821,7 @@ int su; | |||
| 813 | ** at init time. | 821 | ** at init time. |
| 814 | */ | 822 | */ |
| 815 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_NUM_HOSTS\n"); | 823 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_NUM_HOSTS\n"); |
| 816 | if (copy_to_user(arg, &p->RIONumHosts, sizeof(p->RIONumHosts))) { | 824 | if (copy_to_user(argp, &p->RIONumHosts, sizeof(p->RIONumHosts))) { |
| 817 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_NUM_HOSTS: Bad copy to user space\n"); | 825 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_NUM_HOSTS: Bad copy to user space\n"); |
| 818 | p->RIOError.Error = COPYOUT_FAILED; | 826 | p->RIOError.Error = COPYOUT_FAILED; |
| 819 | return -EFAULT; | 827 | return -EFAULT; |
| @@ -824,7 +832,7 @@ int su; | |||
| 824 | /* | 832 | /* |
| 825 | ** Kill host. This may not be in the final version... | 833 | ** Kill host. This may not be in the final version... |
| 826 | */ | 834 | */ |
| 827 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_FOAD %ld\n", (unsigned long) arg); | 835 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_FOAD %ld\n", arg); |
| 828 | if (!su) { | 836 | if (!su) { |
| 829 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_FOAD: Not super user\n"); | 837 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_FOAD: Not super user\n"); |
| 830 | p->RIOError.Error = NOT_SUPER_USER; | 838 | p->RIOError.Error = NOT_SUPER_USER; |
| @@ -858,7 +866,7 @@ int su; | |||
| 858 | p->RIOError.Error = NOT_SUPER_USER; | 866 | p->RIOError.Error = NOT_SUPER_USER; |
| 859 | return -EPERM; | 867 | return -EPERM; |
| 860 | } | 868 | } |
| 861 | if (copy_from_user(&DownLoad, arg, sizeof(DownLoad))) { | 869 | if (copy_from_user(&DownLoad, argp, sizeof(DownLoad))) { |
| 862 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_DOWNLOAD: Copy in from user space failed\n"); | 870 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_DOWNLOAD: Copy in from user space failed\n"); |
| 863 | p->RIOError.Error = COPYIN_FAILED; | 871 | p->RIOError.Error = COPYIN_FAILED; |
| 864 | return -EFAULT; | 872 | return -EFAULT; |
| @@ -888,7 +896,7 @@ int su; | |||
| 888 | { | 896 | { |
| 889 | unsigned int host; | 897 | unsigned int host; |
| 890 | 898 | ||
| 891 | if (copy_from_user(&host, arg, sizeof(host))) { | 899 | if (copy_from_user(&host, argp, sizeof(host))) { |
| 892 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_REQ: Copy in from user space failed\n"); | 900 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_REQ: Copy in from user space failed\n"); |
| 893 | p->RIOError.Error = COPYIN_FAILED; | 901 | p->RIOError.Error = COPYIN_FAILED; |
| 894 | return -EFAULT; | 902 | return -EFAULT; |
| @@ -897,7 +905,7 @@ int su; | |||
| 897 | ** Fetch the parmmap | 905 | ** Fetch the parmmap |
| 898 | */ | 906 | */ |
| 899 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_PARMS\n"); | 907 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_PARMS\n"); |
| 900 | if (copy_to_user(arg, p->RIOHosts[host].ParmMapP, sizeof(PARM_MAP))) { | 908 | if (copy_from_io(argp, p->RIOHosts[host].ParmMapP, sizeof(PARM_MAP))) { |
| 901 | p->RIOError.Error = COPYOUT_FAILED; | 909 | p->RIOError.Error = COPYOUT_FAILED; |
| 902 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_PARMS: Copy out to user space failed\n"); | 910 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_PARMS: Copy out to user space failed\n"); |
| 903 | return -EFAULT; | 911 | return -EFAULT; |
| @@ -907,7 +915,7 @@ int su; | |||
| 907 | 915 | ||
| 908 | case RIO_HOST_REQ: | 916 | case RIO_HOST_REQ: |
| 909 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_REQ\n"); | 917 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_REQ\n"); |
| 910 | if (copy_from_user(&HostReq, arg, sizeof(HostReq))) { | 918 | if (copy_from_user(&HostReq, argp, sizeof(HostReq))) { |
| 911 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_REQ: Copy in from user space failed\n"); | 919 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_REQ: Copy in from user space failed\n"); |
| 912 | p->RIOError.Error = COPYIN_FAILED; | 920 | p->RIOError.Error = COPYIN_FAILED; |
| 913 | return -EFAULT; | 921 | return -EFAULT; |
| @@ -928,7 +936,7 @@ int su; | |||
| 928 | 936 | ||
| 929 | case RIO_HOST_DPRAM: | 937 | case RIO_HOST_DPRAM: |
| 930 | rio_dprintk(RIO_DEBUG_CTRL, "Request for DPRAM\n"); | 938 | rio_dprintk(RIO_DEBUG_CTRL, "Request for DPRAM\n"); |
| 931 | if (copy_from_user(&HostDpRam, arg, sizeof(HostDpRam))) { | 939 | if (copy_from_user(&HostDpRam, argp, sizeof(HostDpRam))) { |
| 932 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_DPRAM: Copy in from user space failed\n"); | 940 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_DPRAM: Copy in from user space failed\n"); |
| 933 | p->RIOError.Error = COPYIN_FAILED; | 941 | p->RIOError.Error = COPYIN_FAILED; |
| 934 | return -EFAULT; | 942 | return -EFAULT; |
| @@ -945,13 +953,13 @@ int su; | |||
| 945 | /* It's hardware like this that really gets on my tits. */ | 953 | /* It's hardware like this that really gets on my tits. */ |
| 946 | static unsigned char copy[sizeof(struct DpRam)]; | 954 | static unsigned char copy[sizeof(struct DpRam)]; |
| 947 | for (off = 0; off < sizeof(struct DpRam); off++) | 955 | for (off = 0; off < sizeof(struct DpRam); off++) |
| 948 | copy[off] = readb(&p->RIOHosts[HostDpRam.HostNum].Caddr[off]); | 956 | copy[off] = readb(p->RIOHosts[HostDpRam.HostNum].Caddr + off); |
| 949 | if (copy_to_user(HostDpRam.DpRamP, copy, sizeof(struct DpRam))) { | 957 | if (copy_to_user(HostDpRam.DpRamP, copy, sizeof(struct DpRam))) { |
| 950 | p->RIOError.Error = COPYOUT_FAILED; | 958 | p->RIOError.Error = COPYOUT_FAILED; |
| 951 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_DPRAM: Bad copy to user space\n"); | 959 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_DPRAM: Bad copy to user space\n"); |
| 952 | return -EFAULT; | 960 | return -EFAULT; |
| 953 | } | 961 | } |
| 954 | } else if (copy_to_user(HostDpRam.DpRamP, p->RIOHosts[HostDpRam.HostNum].Caddr, sizeof(struct DpRam))) { | 962 | } else if (copy_from_io(HostDpRam.DpRamP, p->RIOHosts[HostDpRam.HostNum].Caddr, sizeof(struct DpRam))) { |
| 955 | p->RIOError.Error = COPYOUT_FAILED; | 963 | p->RIOError.Error = COPYOUT_FAILED; |
| 956 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_DPRAM: Bad copy to user space\n"); | 964 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_DPRAM: Bad copy to user space\n"); |
| 957 | return -EFAULT; | 965 | return -EFAULT; |
| @@ -960,13 +968,13 @@ int su; | |||
| 960 | 968 | ||
| 961 | case RIO_SET_BUSY: | 969 | case RIO_SET_BUSY: |
| 962 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_SET_BUSY\n"); | 970 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_SET_BUSY\n"); |
| 963 | if ((unsigned long) arg > 511) { | 971 | if (arg > 511) { |
| 964 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_SET_BUSY: Bad port number %ld\n", (unsigned long) arg); | 972 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_SET_BUSY: Bad port number %ld\n", arg); |
| 965 | p->RIOError.Error = PORT_NUMBER_OUT_OF_RANGE; | 973 | p->RIOError.Error = PORT_NUMBER_OUT_OF_RANGE; |
| 966 | return -EINVAL; | 974 | return -EINVAL; |
| 967 | } | 975 | } |
| 968 | rio_spin_lock_irqsave(&PortP->portSem, flags); | 976 | rio_spin_lock_irqsave(&PortP->portSem, flags); |
| 969 | p->RIOPortp[(unsigned long) arg]->State |= RIO_BUSY; | 977 | p->RIOPortp[arg]->State |= RIO_BUSY; |
| 970 | rio_spin_unlock_irqrestore(&PortP->portSem, flags); | 978 | rio_spin_unlock_irqrestore(&PortP->portSem, flags); |
| 971 | return retval; | 979 | return retval; |
| 972 | 980 | ||
| @@ -976,7 +984,7 @@ int su; | |||
| 976 | ** (probably for debug reasons) | 984 | ** (probably for debug reasons) |
| 977 | */ | 985 | */ |
| 978 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_PORT\n"); | 986 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_PORT\n"); |
| 979 | if (copy_from_user(&PortReq, arg, sizeof(PortReq))) { | 987 | if (copy_from_user(&PortReq, argp, sizeof(PortReq))) { |
| 980 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_PORT: Copy in from user space failed\n"); | 988 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_PORT: Copy in from user space failed\n"); |
| 981 | p->RIOError.Error = COPYIN_FAILED; | 989 | p->RIOError.Error = COPYIN_FAILED; |
| 982 | return -EFAULT; | 990 | return -EFAULT; |
| @@ -1001,7 +1009,7 @@ int su; | |||
| 1001 | ** (probably for debug reasons) | 1009 | ** (probably for debug reasons) |
| 1002 | */ | 1010 | */ |
| 1003 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_RUP\n"); | 1011 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_RUP\n"); |
| 1004 | if (copy_from_user(&RupReq, arg, sizeof(RupReq))) { | 1012 | if (copy_from_user(&RupReq, argp, sizeof(RupReq))) { |
| 1005 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_RUP: Copy in from user space failed\n"); | 1013 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_RUP: Copy in from user space failed\n"); |
| 1006 | p->RIOError.Error = COPYIN_FAILED; | 1014 | p->RIOError.Error = COPYIN_FAILED; |
| 1007 | return -EFAULT; | 1015 | return -EFAULT; |
| @@ -1025,7 +1033,7 @@ int su; | |||
| 1025 | } | 1033 | } |
| 1026 | rio_dprintk(RIO_DEBUG_CTRL, "Request for rup %d from host %d\n", RupReq.RupNum, RupReq.HostNum); | 1034 | rio_dprintk(RIO_DEBUG_CTRL, "Request for rup %d from host %d\n", RupReq.RupNum, RupReq.HostNum); |
| 1027 | 1035 | ||
| 1028 | if (copy_to_user(HostP->UnixRups[RupReq.RupNum].RupP, RupReq.RupP, sizeof(struct RUP))) { | 1036 | if (copy_from_io(RupReq.RupP, HostP->UnixRups[RupReq.RupNum].RupP, sizeof(struct RUP))) { |
| 1029 | p->RIOError.Error = COPYOUT_FAILED; | 1037 | p->RIOError.Error = COPYOUT_FAILED; |
| 1030 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_RUP: Bad copy to user space\n"); | 1038 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_RUP: Bad copy to user space\n"); |
| 1031 | return -EFAULT; | 1039 | return -EFAULT; |
| @@ -1038,7 +1046,7 @@ int su; | |||
| 1038 | ** (probably for debug reasons) | 1046 | ** (probably for debug reasons) |
| 1039 | */ | 1047 | */ |
| 1040 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_LPB\n"); | 1048 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_LPB\n"); |
| 1041 | if (copy_from_user(&LpbReq, arg, sizeof(LpbReq))) { | 1049 | if (copy_from_user(&LpbReq, argp, sizeof(LpbReq))) { |
| 1042 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_LPB: Bad copy from user space\n"); | 1050 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_LPB: Bad copy from user space\n"); |
| 1043 | p->RIOError.Error = COPYIN_FAILED; | 1051 | p->RIOError.Error = COPYIN_FAILED; |
| 1044 | return -EFAULT; | 1052 | return -EFAULT; |
| @@ -1062,7 +1070,7 @@ int su; | |||
| 1062 | } | 1070 | } |
| 1063 | rio_dprintk(RIO_DEBUG_CTRL, "Request for lpb %d from host %d\n", LpbReq.Link, LpbReq.Host); | 1071 | rio_dprintk(RIO_DEBUG_CTRL, "Request for lpb %d from host %d\n", LpbReq.Link, LpbReq.Host); |
| 1064 | 1072 | ||
| 1065 | if (copy_to_user(LpbReq.LpbP, &HostP->LinkStrP[LpbReq.Link], sizeof(struct LPB))) { | 1073 | if (copy_from_io(LpbReq.LpbP, &HostP->LinkStrP[LpbReq.Link], sizeof(struct LPB))) { |
| 1066 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_LPB: Bad copy to user space\n"); | 1074 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_HOST_LPB: Bad copy to user space\n"); |
| 1067 | p->RIOError.Error = COPYOUT_FAILED; | 1075 | p->RIOError.Error = COPYOUT_FAILED; |
| 1068 | return -EFAULT; | 1076 | return -EFAULT; |
| @@ -1136,7 +1144,7 @@ int su; | |||
| 1136 | case RIO_MAP_B110_TO_110: | 1144 | case RIO_MAP_B110_TO_110: |
| 1137 | case RIO_MAP_B110_TO_115200: | 1145 | case RIO_MAP_B110_TO_115200: |
| 1138 | rio_dprintk(RIO_DEBUG_CTRL, "Baud rate mapping\n"); | 1146 | rio_dprintk(RIO_DEBUG_CTRL, "Baud rate mapping\n"); |
| 1139 | port = (unsigned long) arg; | 1147 | port = arg; |
| 1140 | if (port < 0 || port > 511) { | 1148 | if (port < 0 || port > 511) { |
| 1141 | rio_dprintk(RIO_DEBUG_CTRL, "Baud rate mapping: Bad port number %d\n", port); | 1149 | rio_dprintk(RIO_DEBUG_CTRL, "Baud rate mapping: Bad port number %d\n", port); |
| 1142 | p->RIOError.Error = PORT_NUMBER_OUT_OF_RANGE; | 1150 | p->RIOError.Error = PORT_NUMBER_OUT_OF_RANGE; |
| @@ -1166,7 +1174,7 @@ int su; | |||
| 1166 | 1174 | ||
| 1167 | case RIO_SEND_PACKET: | 1175 | case RIO_SEND_PACKET: |
| 1168 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_SEND_PACKET\n"); | 1176 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_SEND_PACKET\n"); |
| 1169 | if (copy_from_user(&SendPack, arg, sizeof(SendPack))) { | 1177 | if (copy_from_user(&SendPack, argp, sizeof(SendPack))) { |
| 1170 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_SEND_PACKET: Bad copy from user space\n"); | 1178 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_SEND_PACKET: Bad copy from user space\n"); |
| 1171 | p->RIOError.Error = COPYIN_FAILED; | 1179 | p->RIOError.Error = COPYIN_FAILED; |
| 1172 | return -EFAULT; | 1180 | return -EFAULT; |
| @@ -1210,7 +1218,7 @@ int su; | |||
| 1210 | return su ? 0 : -EPERM; | 1218 | return su ? 0 : -EPERM; |
| 1211 | 1219 | ||
| 1212 | case RIO_WHAT_MESG: | 1220 | case RIO_WHAT_MESG: |
| 1213 | if (copy_to_user(arg, &p->RIONoMessage, sizeof(p->RIONoMessage))) { | 1221 | if (copy_to_user(argp, &p->RIONoMessage, sizeof(p->RIONoMessage))) { |
| 1214 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_WHAT_MESG: Bad copy to user space\n"); | 1222 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_WHAT_MESG: Bad copy to user space\n"); |
| 1215 | p->RIOError.Error = COPYOUT_FAILED; | 1223 | p->RIOError.Error = COPYOUT_FAILED; |
| 1216 | return -EFAULT; | 1224 | return -EFAULT; |
| @@ -1218,7 +1226,7 @@ int su; | |||
| 1218 | return 0; | 1226 | return 0; |
| 1219 | 1227 | ||
| 1220 | case RIO_MEM_DUMP: | 1228 | case RIO_MEM_DUMP: |
| 1221 | if (copy_from_user(&SubCmd, arg, sizeof(struct SubCmdStruct))) { | 1229 | if (copy_from_user(&SubCmd, argp, sizeof(struct SubCmdStruct))) { |
| 1222 | p->RIOError.Error = COPYIN_FAILED; | 1230 | p->RIOError.Error = COPYIN_FAILED; |
| 1223 | return -EFAULT; | 1231 | return -EFAULT; |
| 1224 | } | 1232 | } |
| @@ -1248,7 +1256,7 @@ int su; | |||
| 1248 | PortP->State |= RIO_BUSY; | 1256 | PortP->State |= RIO_BUSY; |
| 1249 | 1257 | ||
| 1250 | rio_spin_unlock_irqrestore(&PortP->portSem, flags); | 1258 | rio_spin_unlock_irqrestore(&PortP->portSem, flags); |
| 1251 | if (copy_to_user(arg, p->RIOMemDump, MEMDUMP_SIZE)) { | 1259 | if (copy_to_user(argp, p->RIOMemDump, MEMDUMP_SIZE)) { |
| 1252 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_MEM_DUMP copy failed\n"); | 1260 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_MEM_DUMP copy failed\n"); |
| 1253 | p->RIOError.Error = COPYOUT_FAILED; | 1261 | p->RIOError.Error = COPYOUT_FAILED; |
| 1254 | return -EFAULT; | 1262 | return -EFAULT; |
| @@ -1256,30 +1264,30 @@ int su; | |||
| 1256 | return 0; | 1264 | return 0; |
| 1257 | 1265 | ||
| 1258 | case RIO_TICK: | 1266 | case RIO_TICK: |
| 1259 | if ((unsigned long) arg >= p->RIONumHosts) | 1267 | if (arg >= p->RIONumHosts) |
| 1260 | return -EINVAL; | 1268 | return -EINVAL; |
| 1261 | rio_dprintk(RIO_DEBUG_CTRL, "Set interrupt for host %ld\n", (unsigned long) arg); | 1269 | rio_dprintk(RIO_DEBUG_CTRL, "Set interrupt for host %ld\n", arg); |
| 1262 | writeb(0xFF, &p->RIOHosts[(unsigned long) arg].SetInt); | 1270 | writeb(0xFF, &p->RIOHosts[arg].SetInt); |
| 1263 | return 0; | 1271 | return 0; |
| 1264 | 1272 | ||
| 1265 | case RIO_TOCK: | 1273 | case RIO_TOCK: |
| 1266 | if ((unsigned long) arg >= p->RIONumHosts) | 1274 | if (arg >= p->RIONumHosts) |
| 1267 | return -EINVAL; | 1275 | return -EINVAL; |
| 1268 | rio_dprintk(RIO_DEBUG_CTRL, "Clear interrupt for host %ld\n", (unsigned long) arg); | 1276 | rio_dprintk(RIO_DEBUG_CTRL, "Clear interrupt for host %ld\n", arg); |
| 1269 | writeb(0xFF, &p->RIOHosts[(unsigned long) arg].ResetInt); | 1277 | writeb(0xFF, &p->RIOHosts[arg].ResetInt); |
| 1270 | return 0; | 1278 | return 0; |
| 1271 | 1279 | ||
| 1272 | case RIO_READ_CHECK: | 1280 | case RIO_READ_CHECK: |
| 1273 | /* Check reads for pkts with data[0] the same */ | 1281 | /* Check reads for pkts with data[0] the same */ |
| 1274 | p->RIOReadCheck = !p->RIOReadCheck; | 1282 | p->RIOReadCheck = !p->RIOReadCheck; |
| 1275 | if (copy_to_user(arg, &p->RIOReadCheck, sizeof(unsigned int))) { | 1283 | if (copy_to_user(argp, &p->RIOReadCheck, sizeof(unsigned int))) { |
| 1276 | p->RIOError.Error = COPYOUT_FAILED; | 1284 | p->RIOError.Error = COPYOUT_FAILED; |
| 1277 | return -EFAULT; | 1285 | return -EFAULT; |
| 1278 | } | 1286 | } |
| 1279 | return 0; | 1287 | return 0; |
| 1280 | 1288 | ||
| 1281 | case RIO_READ_REGISTER: | 1289 | case RIO_READ_REGISTER: |
| 1282 | if (copy_from_user(&SubCmd, arg, sizeof(struct SubCmdStruct))) { | 1290 | if (copy_from_user(&SubCmd, argp, sizeof(struct SubCmdStruct))) { |
| 1283 | p->RIOError.Error = COPYIN_FAILED; | 1291 | p->RIOError.Error = COPYIN_FAILED; |
| 1284 | return -EFAULT; | 1292 | return -EFAULT; |
| 1285 | } | 1293 | } |
| @@ -1314,7 +1322,7 @@ int su; | |||
| 1314 | PortP->State |= RIO_BUSY; | 1322 | PortP->State |= RIO_BUSY; |
| 1315 | 1323 | ||
| 1316 | rio_spin_unlock_irqrestore(&PortP->portSem, flags); | 1324 | rio_spin_unlock_irqrestore(&PortP->portSem, flags); |
| 1317 | if (copy_to_user(arg, &p->CdRegister, sizeof(unsigned int))) { | 1325 | if (copy_to_user(argp, &p->CdRegister, sizeof(unsigned int))) { |
| 1318 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_READ_REGISTER copy failed\n"); | 1326 | rio_dprintk(RIO_DEBUG_CTRL, "RIO_READ_REGISTER copy failed\n"); |
| 1319 | p->RIOError.Error = COPYOUT_FAILED; | 1327 | p->RIOError.Error = COPYOUT_FAILED; |
| 1320 | return -EFAULT; | 1328 | return -EFAULT; |
| @@ -1327,10 +1335,10 @@ int su; | |||
| 1327 | */ | 1335 | */ |
| 1328 | case RIO_MAKE_DEV: | 1336 | case RIO_MAKE_DEV: |
| 1329 | { | 1337 | { |
| 1330 | unsigned int port = (unsigned long) arg & RIO_MODEM_MASK; | 1338 | unsigned int port = arg & RIO_MODEM_MASK; |
| 1331 | unsigned int ret; | 1339 | unsigned int ret; |
| 1332 | 1340 | ||
| 1333 | switch ((unsigned long) arg & RIO_DEV_MASK) { | 1341 | switch (arg & RIO_DEV_MASK) { |
| 1334 | case RIO_DEV_DIRECT: | 1342 | case RIO_DEV_DIRECT: |
| 1335 | ret = drv_makedev(MAJOR(dev), port); | 1343 | ret = drv_makedev(MAJOR(dev), port); |
| 1336 | rio_dprintk(RIO_DEBUG_CTRL, "Makedev direct 0x%x is 0x%x\n", port, ret); | 1344 | rio_dprintk(RIO_DEBUG_CTRL, "Makedev direct 0x%x is 0x%x\n", port, ret); |
| @@ -1358,7 +1366,7 @@ int su; | |||
| 1358 | int mino; | 1366 | int mino; |
| 1359 | unsigned long ret; | 1367 | unsigned long ret; |
| 1360 | 1368 | ||
| 1361 | dv = (dev_t) ((unsigned long) arg); | 1369 | dv = (dev_t) (arg); |
| 1362 | mino = RIO_UNMODEM(dv); | 1370 | mino = RIO_UNMODEM(dv); |
| 1363 | 1371 | ||
| 1364 | if (RIO_ISMODEM(dv)) { | 1372 | if (RIO_ISMODEM(dv)) { |
diff --git a/drivers/char/rio/rioinit.c b/drivers/char/rio/rioinit.c index 24d2992154cc..12e34bc3f7ce 100644 --- a/drivers/char/rio/rioinit.c +++ b/drivers/char/rio/rioinit.c | |||
| @@ -79,7 +79,7 @@ static char *_rioinit_c_sccs_ = "@(#)rioinit.c 1.3"; | |||
| 79 | 79 | ||
| 80 | int RIOPCIinit(struct rio_info *p, int Mode); | 80 | int RIOPCIinit(struct rio_info *p, int Mode); |
| 81 | 81 | ||
| 82 | static int RIOScrub(int, u8 *, int); | 82 | static int RIOScrub(int, u8 __iomem *, int); |
| 83 | 83 | ||
| 84 | 84 | ||
| 85 | /** | 85 | /** |
| @@ -92,10 +92,10 @@ static int RIOScrub(int, u8 *, int); | |||
| 92 | ** bits > 0 indicates 16 bit operation. | 92 | ** bits > 0 indicates 16 bit operation. |
| 93 | */ | 93 | */ |
| 94 | 94 | ||
| 95 | int RIOAssignAT(struct rio_info *p, int Base, caddr_t virtAddr, int mode) | 95 | int RIOAssignAT(struct rio_info *p, int Base, void __iomem *virtAddr, int mode) |
| 96 | { | 96 | { |
| 97 | int bits; | 97 | int bits; |
| 98 | struct DpRam *cardp = (struct DpRam *)virtAddr; | 98 | struct DpRam __iomem *cardp = (struct DpRam __iomem *)virtAddr; |
| 99 | 99 | ||
| 100 | if ((Base < ONE_MEG) || (mode & BYTE_ACCESS_MODE)) | 100 | if ((Base < ONE_MEG) || (mode & BYTE_ACCESS_MODE)) |
| 101 | bits = BYTE_OPERATION; | 101 | bits = BYTE_OPERATION; |
| @@ -107,7 +107,7 @@ int RIOAssignAT(struct rio_info *p, int Base, caddr_t virtAddr, int mode) | |||
| 107 | ** transient stuff. | 107 | ** transient stuff. |
| 108 | */ | 108 | */ |
| 109 | p->RIOHosts[p->RIONumHosts].Caddr = virtAddr; | 109 | p->RIOHosts[p->RIONumHosts].Caddr = virtAddr; |
| 110 | p->RIOHosts[p->RIONumHosts].CardP = (struct DpRam *)virtAddr; | 110 | p->RIOHosts[p->RIONumHosts].CardP = virtAddr; |
| 111 | 111 | ||
| 112 | /* | 112 | /* |
| 113 | ** Revision 01 AT host cards don't support WORD operations, | 113 | ** Revision 01 AT host cards don't support WORD operations, |
| @@ -151,10 +151,10 @@ static u8 val[] = { | |||
| 151 | ** RAM test a board. | 151 | ** RAM test a board. |
| 152 | ** Nothing too complicated, just enough to check it out. | 152 | ** Nothing too complicated, just enough to check it out. |
| 153 | */ | 153 | */ |
| 154 | int RIOBoardTest(unsigned long paddr, caddr_t caddr, unsigned char type, int slot) | 154 | int RIOBoardTest(unsigned long paddr, void __iomem *caddr, unsigned char type, int slot) |
| 155 | { | 155 | { |
| 156 | struct DpRam *DpRam = (struct DpRam *)caddr; | 156 | struct DpRam __iomem *DpRam = caddr; |
| 157 | char *ram[4]; | 157 | void __iomem *ram[4]; |
| 158 | int size[4]; | 158 | int size[4]; |
| 159 | int op, bank; | 159 | int op, bank; |
| 160 | int nbanks; | 160 | int nbanks; |
| @@ -179,12 +179,12 @@ int RIOBoardTest(unsigned long paddr, caddr_t caddr, unsigned char type, int slo | |||
| 179 | size[2] = DP_SRAM3_SIZE; | 179 | size[2] = DP_SRAM3_SIZE; |
| 180 | size[3] = DP_SCRATCH_SIZE; | 180 | size[3] = DP_SCRATCH_SIZE; |
| 181 | 181 | ||
| 182 | ram[0] = (char *)&DpRam->DpSram1[0]; | 182 | ram[0] = DpRam->DpSram1; |
| 183 | ram[1] = (char *)&DpRam->DpSram2[0]; | 183 | ram[1] = DpRam->DpSram2; |
| 184 | ram[2] = (char *)&DpRam->DpSram3[0]; | 184 | ram[2] = DpRam->DpSram3; |
| 185 | nbanks = (type == RIO_PCI) ? 3 : 4; | 185 | nbanks = (type == RIO_PCI) ? 3 : 4; |
| 186 | if (nbanks == 4) | 186 | if (nbanks == 4) |
| 187 | ram[3] = (char *)&DpRam->DpScratch[0]; | 187 | ram[3] = DpRam->DpScratch; |
| 188 | 188 | ||
| 189 | 189 | ||
| 190 | if (nbanks == 3) { | 190 | if (nbanks == 3) { |
| @@ -202,7 +202,7 @@ int RIOBoardTest(unsigned long paddr, caddr_t caddr, unsigned char type, int slo | |||
| 202 | */ | 202 | */ |
| 203 | for (op=0; op<TEST_END; op++) { | 203 | for (op=0; op<TEST_END; op++) { |
| 204 | for (bank=0; bank<nbanks; bank++) { | 204 | for (bank=0; bank<nbanks; bank++) { |
| 205 | if (RIOScrub(op, (u8 *)ram[bank], size[bank]) == RIO_FAIL) { | 205 | if (RIOScrub(op, ram[bank], size[bank]) == RIO_FAIL) { |
| 206 | rio_dprintk (RIO_DEBUG_INIT, "RIO-init: RIOScrub band %d, op %d failed\n", | 206 | rio_dprintk (RIO_DEBUG_INIT, "RIO-init: RIOScrub band %d, op %d failed\n", |
| 207 | bank, op); | 207 | bank, op); |
| 208 | return RIO_FAIL; | 208 | return RIO_FAIL; |
| @@ -227,7 +227,7 @@ int RIOBoardTest(unsigned long paddr, caddr_t caddr, unsigned char type, int slo | |||
| 227 | ** to check that the data from the previous phase was retained. | 227 | ** to check that the data from the previous phase was retained. |
| 228 | */ | 228 | */ |
| 229 | 229 | ||
| 230 | static int RIOScrub(int op, u8 *ram, int size) | 230 | static int RIOScrub(int op, u8 __iomem *ram, int size) |
| 231 | { | 231 | { |
| 232 | int off; | 232 | int off; |
| 233 | unsigned char oldbyte; | 233 | unsigned char oldbyte; |
| @@ -393,7 +393,7 @@ struct rioVersion *RIOVersid(void) | |||
| 393 | return &stVersion; | 393 | return &stVersion; |
| 394 | } | 394 | } |
| 395 | 395 | ||
| 396 | void RIOHostReset(unsigned int Type, struct DpRam *DpRamP, unsigned int Slot) | 396 | void RIOHostReset(unsigned int Type, struct DpRam __iomem *DpRamP, unsigned int Slot) |
| 397 | { | 397 | { |
| 398 | /* | 398 | /* |
| 399 | ** Reset the Tpu | 399 | ** Reset the Tpu |
diff --git a/drivers/char/rio/riointr.c b/drivers/char/rio/riointr.c index 97f0fa550652..eec1fea0cb92 100644 --- a/drivers/char/rio/riointr.c +++ b/drivers/char/rio/riointr.c | |||
| @@ -102,7 +102,7 @@ void RIOTxEnable(char *en) | |||
| 102 | struct rio_info *p; | 102 | struct rio_info *p; |
| 103 | struct tty_struct *tty; | 103 | struct tty_struct *tty; |
| 104 | int c; | 104 | int c; |
| 105 | struct PKT *PacketP; | 105 | struct PKT __iomem *PacketP; |
| 106 | unsigned long flags; | 106 | unsigned long flags; |
| 107 | 107 | ||
| 108 | PortP = (struct Port *) en; | 108 | PortP = (struct Port *) en; |
| @@ -144,7 +144,7 @@ void RIOTxEnable(char *en) | |||
| 144 | if (c == 0) | 144 | if (c == 0) |
| 145 | break; | 145 | break; |
| 146 | 146 | ||
| 147 | rio_memcpy_toio(PortP->HostP->Caddr, (caddr_t) PacketP->data, PortP->gs.xmit_buf + PortP->gs.xmit_tail, c); | 147 | rio_memcpy_toio(PortP->HostP->Caddr, PacketP->data, PortP->gs.xmit_buf + PortP->gs.xmit_tail, c); |
| 148 | /* udelay (1); */ | 148 | /* udelay (1); */ |
| 149 | 149 | ||
| 150 | writeb(c, &(PacketP->len)); | 150 | writeb(c, &(PacketP->len)); |
| @@ -219,7 +219,7 @@ void RIOServiceHost(struct rio_info *p, struct Host *HostP, int From) | |||
| 219 | for (port = p->RIOFirstPortsBooted; port < p->RIOLastPortsBooted + PORTS_PER_RTA; port++) { | 219 | for (port = p->RIOFirstPortsBooted; port < p->RIOLastPortsBooted + PORTS_PER_RTA; port++) { |
| 220 | struct Port *PortP = p->RIOPortp[port]; | 220 | struct Port *PortP = p->RIOPortp[port]; |
| 221 | struct tty_struct *ttyP; | 221 | struct tty_struct *ttyP; |
| 222 | struct PKT *PacketP; | 222 | struct PKT __iomem *PacketP; |
| 223 | 223 | ||
| 224 | /* | 224 | /* |
| 225 | ** not mapped in - most of the RIOPortp[] information | 225 | ** not mapped in - most of the RIOPortp[] information |
| @@ -298,7 +298,7 @@ void RIOServiceHost(struct rio_info *p, struct Host *HostP, int From) | |||
| 298 | for (port = p->RIOFirstPortsBooted; port < p->RIOLastPortsBooted + PORTS_PER_RTA; port++) { | 298 | for (port = p->RIOFirstPortsBooted; port < p->RIOLastPortsBooted + PORTS_PER_RTA; port++) { |
| 299 | struct Port *PortP = p->RIOPortp[port]; | 299 | struct Port *PortP = p->RIOPortp[port]; |
| 300 | struct tty_struct *ttyP; | 300 | struct tty_struct *ttyP; |
| 301 | struct PKT *PacketP; | 301 | struct PKT __iomem *PacketP; |
| 302 | 302 | ||
| 303 | /* | 303 | /* |
| 304 | ** not mapped in - most of the RIOPortp[] information | 304 | ** not mapped in - most of the RIOPortp[] information |
| @@ -427,13 +427,13 @@ void RIOServiceHost(struct rio_info *p, struct Host *HostP, int From) | |||
| 427 | 427 | ||
| 428 | while (PortP->WflushFlag && can_add_transmit(&PacketP, PortP) && (PortP->InUse == NOT_INUSE)) { | 428 | while (PortP->WflushFlag && can_add_transmit(&PacketP, PortP) && (PortP->InUse == NOT_INUSE)) { |
| 429 | int p; | 429 | int p; |
| 430 | struct PktCmd *PktCmdP; | 430 | struct PktCmd __iomem *PktCmdP; |
| 431 | 431 | ||
| 432 | rio_dprintk(RIO_DEBUG_INTR, "Add WFLUSH marker to data queue\n"); | 432 | rio_dprintk(RIO_DEBUG_INTR, "Add WFLUSH marker to data queue\n"); |
| 433 | /* | 433 | /* |
| 434 | ** make it look just like a WFLUSH command | 434 | ** make it look just like a WFLUSH command |
| 435 | */ | 435 | */ |
| 436 | PktCmdP = (struct PktCmd *) &PacketP->data[0]; | 436 | PktCmdP = (struct PktCmd __iomem *) &PacketP->data[0]; |
| 437 | 437 | ||
| 438 | writeb(WFLUSH, &PktCmdP->Command); | 438 | writeb(WFLUSH, &PktCmdP->Command); |
| 439 | 439 | ||
| @@ -525,9 +525,9 @@ static void RIOReceive(struct rio_info *p, struct Port *PortP) | |||
| 525 | { | 525 | { |
| 526 | struct tty_struct *TtyP; | 526 | struct tty_struct *TtyP; |
| 527 | unsigned short transCount; | 527 | unsigned short transCount; |
| 528 | struct PKT *PacketP; | 528 | struct PKT __iomem *PacketP; |
| 529 | register unsigned int DataCnt; | 529 | register unsigned int DataCnt; |
| 530 | unsigned char *ptr; | 530 | unsigned char __iomem *ptr; |
| 531 | unsigned char *buf; | 531 | unsigned char *buf; |
| 532 | int copied = 0; | 532 | int copied = 0; |
| 533 | 533 | ||
| @@ -585,19 +585,19 @@ static void RIOReceive(struct rio_info *p, struct Port *PortP) | |||
| 585 | /* | 585 | /* |
| 586 | ** check that it is not a command! | 586 | ** check that it is not a command! |
| 587 | */ | 587 | */ |
| 588 | if (PacketP->len & PKT_CMD_BIT) { | 588 | if (readb(&PacketP->len) & PKT_CMD_BIT) { |
| 589 | rio_dprintk(RIO_DEBUG_INTR, "RIO: unexpected command packet received on PHB\n"); | 589 | rio_dprintk(RIO_DEBUG_INTR, "RIO: unexpected command packet received on PHB\n"); |
| 590 | /* rio_dprint(RIO_DEBUG_INTR, (" sysport = %d\n", p->RIOPortp->PortNum)); */ | 590 | /* rio_dprint(RIO_DEBUG_INTR, (" sysport = %d\n", p->RIOPortp->PortNum)); */ |
| 591 | rio_dprintk(RIO_DEBUG_INTR, " dest_unit = %d\n", PacketP->dest_unit); | 591 | rio_dprintk(RIO_DEBUG_INTR, " dest_unit = %d\n", readb(&PacketP->dest_unit)); |
| 592 | rio_dprintk(RIO_DEBUG_INTR, " dest_port = %d\n", PacketP->dest_port); | 592 | rio_dprintk(RIO_DEBUG_INTR, " dest_port = %d\n", readb(&PacketP->dest_port)); |
| 593 | rio_dprintk(RIO_DEBUG_INTR, " src_unit = %d\n", PacketP->src_unit); | 593 | rio_dprintk(RIO_DEBUG_INTR, " src_unit = %d\n", readb(&PacketP->src_unit)); |
| 594 | rio_dprintk(RIO_DEBUG_INTR, " src_port = %d\n", PacketP->src_port); | 594 | rio_dprintk(RIO_DEBUG_INTR, " src_port = %d\n", readb(&PacketP->src_port)); |
| 595 | rio_dprintk(RIO_DEBUG_INTR, " len = %d\n", PacketP->len); | 595 | rio_dprintk(RIO_DEBUG_INTR, " len = %d\n", readb(&PacketP->len)); |
| 596 | rio_dprintk(RIO_DEBUG_INTR, " control = %d\n", PacketP->control); | 596 | rio_dprintk(RIO_DEBUG_INTR, " control = %d\n", readb(&PacketP->control)); |
| 597 | rio_dprintk(RIO_DEBUG_INTR, " csum = %d\n", PacketP->csum); | 597 | rio_dprintk(RIO_DEBUG_INTR, " csum = %d\n", readw(&PacketP->csum)); |
| 598 | rio_dprintk(RIO_DEBUG_INTR, " data bytes: "); | 598 | rio_dprintk(RIO_DEBUG_INTR, " data bytes: "); |
| 599 | for (DataCnt = 0; DataCnt < PKT_MAX_DATA_LEN; DataCnt++) | 599 | for (DataCnt = 0; DataCnt < PKT_MAX_DATA_LEN; DataCnt++) |
| 600 | rio_dprintk(RIO_DEBUG_INTR, "%d\n", PacketP->data[DataCnt]); | 600 | rio_dprintk(RIO_DEBUG_INTR, "%d\n", readb(&PacketP->data[DataCnt])); |
| 601 | remove_receive(PortP); | 601 | remove_receive(PortP); |
| 602 | put_free_end(PortP->HostP, PacketP); | 602 | put_free_end(PortP->HostP, PacketP); |
| 603 | continue; /* with next packet */ | 603 | continue; /* with next packet */ |
| @@ -618,24 +618,24 @@ static void RIOReceive(struct rio_info *p, struct Port *PortP) | |||
| 618 | ** and available space. | 618 | ** and available space. |
| 619 | */ | 619 | */ |
| 620 | 620 | ||
| 621 | transCount = tty_buffer_request_room(TtyP, PacketP->len & PKT_LEN_MASK); | 621 | transCount = tty_buffer_request_room(TtyP, readb(&PacketP->len) & PKT_LEN_MASK); |
| 622 | rio_dprintk(RIO_DEBUG_REC, "port %d: Copy %d bytes\n", PortP->PortNum, transCount); | 622 | rio_dprintk(RIO_DEBUG_REC, "port %d: Copy %d bytes\n", PortP->PortNum, transCount); |
| 623 | /* | 623 | /* |
| 624 | ** To use the following 'kkprintfs' for debugging - change the '#undef' | 624 | ** To use the following 'kkprintfs' for debugging - change the '#undef' |
| 625 | ** to '#define', (this is the only place ___DEBUG_IT___ occurs in the | 625 | ** to '#define', (this is the only place ___DEBUG_IT___ occurs in the |
| 626 | ** driver). | 626 | ** driver). |
| 627 | */ | 627 | */ |
| 628 | ptr = (unsigned char *) PacketP->data + PortP->RxDataStart; | 628 | ptr = (unsigned char __iomem *) PacketP->data + PortP->RxDataStart; |
| 629 | 629 | ||
| 630 | tty_prepare_flip_string(TtyP, &buf, transCount); | 630 | tty_prepare_flip_string(TtyP, &buf, transCount); |
| 631 | rio_memcpy_fromio(buf, ptr, transCount); | 631 | rio_memcpy_fromio(buf, ptr, transCount); |
| 632 | PortP->RxDataStart += transCount; | 632 | PortP->RxDataStart += transCount; |
| 633 | PacketP->len -= transCount; | 633 | writeb(readb(&PacketP->len)-transCount, &PacketP->len); |
| 634 | copied += transCount; | 634 | copied += transCount; |
| 635 | 635 | ||
| 636 | 636 | ||
| 637 | 637 | ||
| 638 | if (PacketP->len == 0) { | 638 | if (readb(&PacketP->len) == 0) { |
| 639 | /* | 639 | /* |
| 640 | ** If we have emptied the packet, then we can | 640 | ** If we have emptied the packet, then we can |
| 641 | ** free it, and reset the start pointer for | 641 | ** free it, and reset the start pointer for |
diff --git a/drivers/char/rio/rioparam.c b/drivers/char/rio/rioparam.c index d2e8092cdb29..1066d9760704 100644 --- a/drivers/char/rio/rioparam.c +++ b/drivers/char/rio/rioparam.c | |||
| @@ -154,8 +154,8 @@ int RIOParam(struct Port *PortP, int cmd, int Modem, int SleepFlag) | |||
| 154 | { | 154 | { |
| 155 | struct tty_struct *TtyP; | 155 | struct tty_struct *TtyP; |
| 156 | int retval; | 156 | int retval; |
| 157 | struct phb_param *phb_param_ptr; | 157 | struct phb_param __iomem *phb_param_ptr; |
| 158 | struct PKT *PacketP; | 158 | struct PKT __iomem *PacketP; |
| 159 | int res; | 159 | int res; |
| 160 | u8 Cor1 = 0, Cor2 = 0, Cor4 = 0, Cor5 = 0; | 160 | u8 Cor1 = 0, Cor2 = 0, Cor4 = 0, Cor5 = 0; |
| 161 | u8 TxXon = 0, TxXoff = 0, RxXon = 0, RxXoff = 0; | 161 | u8 TxXon = 0, TxXoff = 0, RxXon = 0, RxXoff = 0; |
| @@ -235,7 +235,7 @@ int RIOParam(struct Port *PortP, int cmd, int Modem, int SleepFlag) | |||
| 235 | rio_dprintk(RIO_DEBUG_PARAM, "can_add_transmit() returns %x\n", res); | 235 | rio_dprintk(RIO_DEBUG_PARAM, "can_add_transmit() returns %x\n", res); |
| 236 | rio_dprintk(RIO_DEBUG_PARAM, "Packet is %p\n", PacketP); | 236 | rio_dprintk(RIO_DEBUG_PARAM, "Packet is %p\n", PacketP); |
| 237 | 237 | ||
| 238 | phb_param_ptr = (struct phb_param *) PacketP->data; | 238 | phb_param_ptr = (struct phb_param __iomem *) PacketP->data; |
| 239 | 239 | ||
| 240 | 240 | ||
| 241 | switch (TtyP->termios->c_cflag & CSIZE) { | 241 | switch (TtyP->termios->c_cflag & CSIZE) { |
| @@ -580,11 +580,11 @@ int RIOParam(struct Port *PortP, int cmd, int Modem, int SleepFlag) | |||
| 580 | ** We can add another packet to a transmit queue if the packet pointer pointed | 580 | ** We can add another packet to a transmit queue if the packet pointer pointed |
| 581 | ** to by the TxAdd pointer has PKT_IN_USE clear in its address. | 581 | ** to by the TxAdd pointer has PKT_IN_USE clear in its address. |
| 582 | */ | 582 | */ |
| 583 | int can_add_transmit(struct PKT **PktP, struct Port *PortP) | 583 | int can_add_transmit(struct PKT __iomem **PktP, struct Port *PortP) |
| 584 | { | 584 | { |
| 585 | struct PKT *tp; | 585 | struct PKT __iomem *tp; |
| 586 | 586 | ||
| 587 | *PktP = tp = (struct PKT *) RIO_PTR(PortP->Caddr, readw(PortP->TxAdd)); | 587 | *PktP = tp = (struct PKT __iomem *) RIO_PTR(PortP->Caddr, readw(PortP->TxAdd)); |
| 588 | 588 | ||
| 589 | return !((unsigned long) tp & PKT_IN_USE); | 589 | return !((unsigned long) tp & PKT_IN_USE); |
| 590 | } | 590 | } |
| @@ -608,9 +608,9 @@ void add_transmit(struct Port *PortP) | |||
| 608 | * Put a packet onto the end of the | 608 | * Put a packet onto the end of the |
| 609 | * free list | 609 | * free list |
| 610 | ****************************************/ | 610 | ****************************************/ |
| 611 | void put_free_end(struct Host *HostP, struct PKT *PktP) | 611 | void put_free_end(struct Host *HostP, struct PKT __iomem *PktP) |
| 612 | { | 612 | { |
| 613 | struct rio_free_list *tmp_pointer; | 613 | struct rio_free_list __iomem *tmp_pointer; |
| 614 | unsigned short old_end, new_end; | 614 | unsigned short old_end, new_end; |
| 615 | unsigned long flags; | 615 | unsigned long flags; |
| 616 | 616 | ||
| @@ -625,15 +625,15 @@ void put_free_end(struct Host *HostP, struct PKT *PktP) | |||
| 625 | 625 | ||
| 626 | if ((old_end = readw(&HostP->ParmMapP->free_list_end)) != TPNULL) { | 626 | if ((old_end = readw(&HostP->ParmMapP->free_list_end)) != TPNULL) { |
| 627 | new_end = RIO_OFF(HostP->Caddr, PktP); | 627 | new_end = RIO_OFF(HostP->Caddr, PktP); |
| 628 | tmp_pointer = (struct rio_free_list *) RIO_PTR(HostP->Caddr, old_end); | 628 | tmp_pointer = (struct rio_free_list __iomem *) RIO_PTR(HostP->Caddr, old_end); |
| 629 | writew(new_end, &tmp_pointer->next); | 629 | writew(new_end, &tmp_pointer->next); |
| 630 | writew(old_end, &((struct rio_free_list *) PktP)->prev); | 630 | writew(old_end, &((struct rio_free_list __iomem *) PktP)->prev); |
| 631 | writew(TPNULL, &((struct rio_free_list *) PktP)->next); | 631 | writew(TPNULL, &((struct rio_free_list __iomem *) PktP)->next); |
| 632 | writew(new_end, &HostP->ParmMapP->free_list_end); | 632 | writew(new_end, &HostP->ParmMapP->free_list_end); |
| 633 | } else { /* First packet on the free list this should never happen! */ | 633 | } else { /* First packet on the free list this should never happen! */ |
| 634 | rio_dprintk(RIO_DEBUG_PFE, "put_free_end(): This should never happen\n"); | 634 | rio_dprintk(RIO_DEBUG_PFE, "put_free_end(): This should never happen\n"); |
| 635 | writew(RIO_OFF(HostP->Caddr, PktP), &HostP->ParmMapP->free_list_end); | 635 | writew(RIO_OFF(HostP->Caddr, PktP), &HostP->ParmMapP->free_list_end); |
| 636 | tmp_pointer = (struct rio_free_list *) PktP; | 636 | tmp_pointer = (struct rio_free_list __iomem *) PktP; |
| 637 | writew(TPNULL, &tmp_pointer->prev); | 637 | writew(TPNULL, &tmp_pointer->prev); |
| 638 | writew(TPNULL, &tmp_pointer->next); | 638 | writew(TPNULL, &tmp_pointer->next); |
| 639 | } | 639 | } |
| @@ -647,10 +647,10 @@ void put_free_end(struct Host *HostP, struct PKT *PktP) | |||
| 647 | ** relevant packet, [having cleared the PKT_IN_USE bit]. If PKT_IN_USE is clear, | 647 | ** relevant packet, [having cleared the PKT_IN_USE bit]. If PKT_IN_USE is clear, |
| 648 | ** then can_remove_receive() returns 0. | 648 | ** then can_remove_receive() returns 0. |
| 649 | */ | 649 | */ |
| 650 | int can_remove_receive(struct PKT **PktP, struct Port *PortP) | 650 | int can_remove_receive(struct PKT __iomem **PktP, struct Port *PortP) |
| 651 | { | 651 | { |
| 652 | if (readw(PortP->RxRemove) & PKT_IN_USE) { | 652 | if (readw(PortP->RxRemove) & PKT_IN_USE) { |
| 653 | *PktP = (struct PKT *) RIO_PTR(PortP->Caddr, readw(PortP->RxRemove) & ~PKT_IN_USE); | 653 | *PktP = (struct PKT __iomem *) RIO_PTR(PortP->Caddr, readw(PortP->RxRemove) & ~PKT_IN_USE); |
| 654 | return 1; | 654 | return 1; |
| 655 | } | 655 | } |
| 656 | return 0; | 656 | return 0; |
diff --git a/drivers/char/rio/rioroute.c b/drivers/char/rio/rioroute.c index 357085337942..a99f3d9d7d65 100644 --- a/drivers/char/rio/rioroute.c +++ b/drivers/char/rio/rioroute.c | |||
| @@ -86,9 +86,9 @@ static void RIOConCon(struct rio_info *, struct Host *, unsigned int, unsigned i | |||
| 86 | ** Incoming on the ROUTE_RUP | 86 | ** Incoming on the ROUTE_RUP |
| 87 | ** I wrote this while I was tired. Forgive me. | 87 | ** I wrote this while I was tired. Forgive me. |
| 88 | */ | 88 | */ |
| 89 | int RIORouteRup(struct rio_info *p, unsigned int Rup, struct Host *HostP, struct PKT * PacketP) | 89 | int RIORouteRup(struct rio_info *p, unsigned int Rup, struct Host *HostP, struct PKT __iomem * PacketP) |
| 90 | { | 90 | { |
| 91 | struct PktCmd *PktCmdP = (struct PktCmd *) PacketP->data; | 91 | struct PktCmd __iomem *PktCmdP = (struct PktCmd __iomem *) PacketP->data; |
| 92 | struct PktCmd_M *PktReplyP; | 92 | struct PktCmd_M *PktReplyP; |
| 93 | struct CmdBlk *CmdBlkP; | 93 | struct CmdBlk *CmdBlkP; |
| 94 | struct Port *PortP; | 94 | struct Port *PortP; |
| @@ -307,7 +307,7 @@ int RIORouteRup(struct rio_info *p, unsigned int Rup, struct Host *HostP, struct | |||
| 307 | if (!RIOBootOk(p, HostP, RtaUniq)) { | 307 | if (!RIOBootOk(p, HostP, RtaUniq)) { |
| 308 | rio_dprintk(RIO_DEBUG_ROUTE, "RTA %x tried to get an ID, but does not belong - FOAD it!\n", RtaUniq); | 308 | rio_dprintk(RIO_DEBUG_ROUTE, "RTA %x tried to get an ID, but does not belong - FOAD it!\n", RtaUniq); |
| 309 | PktReplyP->Command = ROUTE_FOAD; | 309 | PktReplyP->Command = ROUTE_FOAD; |
| 310 | HostP->Copy("RT_FOAD", PktReplyP->CommandText, 7); | 310 | memcpy(PktReplyP->CommandText, "RT_FOAD", 7); |
| 311 | RIOQueueCmdBlk(HostP, Rup, CmdBlkP); | 311 | RIOQueueCmdBlk(HostP, Rup, CmdBlkP); |
| 312 | return 1; | 312 | return 1; |
| 313 | } | 313 | } |
| @@ -341,7 +341,7 @@ int RIORouteRup(struct rio_info *p, unsigned int Rup, struct Host *HostP, struct | |||
| 341 | HostP->Mapping[ThisUnit].Flags |= MSG_DONE; | 341 | HostP->Mapping[ThisUnit].Flags |= MSG_DONE; |
| 342 | } | 342 | } |
| 343 | PktReplyP->Command = ROUTE_FOAD; | 343 | PktReplyP->Command = ROUTE_FOAD; |
| 344 | HostP->Copy("RT_FOAD", PktReplyP->CommandText, 7); | 344 | memcpy(PktReplyP->CommandText, "RT_FOAD", 7); |
| 345 | RIOQueueCmdBlk(HostP, Rup, CmdBlkP); | 345 | RIOQueueCmdBlk(HostP, Rup, CmdBlkP); |
| 346 | return 1; | 346 | return 1; |
| 347 | } | 347 | } |
| @@ -367,7 +367,7 @@ int RIORouteRup(struct rio_info *p, unsigned int Rup, struct Host *HostP, struct | |||
| 367 | PktReplyP->IDNum2 = ROUTE_NO_ID; | 367 | PktReplyP->IDNum2 = ROUTE_NO_ID; |
| 368 | rio_dprintk(RIO_DEBUG_ROUTE, "RTA '%s' has been allocated ID %d\n", HostP->Mapping[ThisUnit].Name, PktReplyP->IDNum); | 368 | rio_dprintk(RIO_DEBUG_ROUTE, "RTA '%s' has been allocated ID %d\n", HostP->Mapping[ThisUnit].Name, PktReplyP->IDNum); |
| 369 | } | 369 | } |
| 370 | HostP->Copy("RT_ALLOCAT", PktReplyP->CommandText, 10); | 370 | memcpy(PktReplyP->CommandText, "RT_ALLOCAT", 10); |
| 371 | 371 | ||
| 372 | RIOQueueCmdBlk(HostP, Rup, CmdBlkP); | 372 | RIOQueueCmdBlk(HostP, Rup, CmdBlkP); |
| 373 | 373 | ||
| @@ -469,7 +469,7 @@ int RIORouteRup(struct rio_info *p, unsigned int Rup, struct Host *HostP, struct | |||
| 469 | } | 469 | } |
| 470 | 470 | ||
| 471 | PktReplyP->Command = ROUTE_FOAD; | 471 | PktReplyP->Command = ROUTE_FOAD; |
| 472 | HostP->Copy("RT_FOAD", PktReplyP->CommandText, 7); | 472 | memcpy(PktReplyP->CommandText, "RT_FOAD", 7); |
| 473 | } else { | 473 | } else { |
| 474 | /* | 474 | /* |
| 475 | ** we did boot it (as an extra), and there may now be a table | 475 | ** we did boot it (as an extra), and there may now be a table |
| @@ -489,7 +489,7 @@ int RIORouteRup(struct rio_info *p, unsigned int Rup, struct Host *HostP, struct | |||
| 489 | } | 489 | } |
| 490 | } | 490 | } |
| 491 | PktReplyP->Command = ROUTE_USED; | 491 | PktReplyP->Command = ROUTE_USED; |
| 492 | HostP->Copy("RT_USED", PktReplyP->CommandText, 7); | 492 | memcpy(PktReplyP->CommandText, "RT_USED", 7); |
| 493 | } | 493 | } |
| 494 | RIOQueueCmdBlk(HostP, Rup, CmdBlkP); | 494 | RIOQueueCmdBlk(HostP, Rup, CmdBlkP); |
| 495 | return 1; | 495 | return 1; |
| @@ -517,8 +517,8 @@ void RIOFixPhbs(struct rio_info *p, struct Host *HostP, unsigned int unit) | |||
| 517 | 517 | ||
| 518 | for (port = 0; port < PORTS_PER_RTA; port++, PortN++) { | 518 | for (port = 0; port < PORTS_PER_RTA; port++, PortN++) { |
| 519 | unsigned short dest_port = port + 8; | 519 | unsigned short dest_port = port + 8; |
| 520 | u16 *TxPktP; | 520 | u16 __iomem *TxPktP; |
| 521 | struct PKT *Pkt; | 521 | struct PKT __iomem *Pkt; |
| 522 | 522 | ||
| 523 | PortP = p->RIOPortp[PortN]; | 523 | PortP = p->RIOPortp[PortN]; |
| 524 | 524 | ||
| @@ -555,12 +555,12 @@ void RIOFixPhbs(struct rio_info *p, struct Host *HostP, unsigned int unit) | |||
| 555 | ** card. This needs to be translated into a 32 bit pointer | 555 | ** card. This needs to be translated into a 32 bit pointer |
| 556 | ** so it can be accessed from the driver. | 556 | ** so it can be accessed from the driver. |
| 557 | */ | 557 | */ |
| 558 | Pkt = (struct PKT *) RIO_PTR(HostP->Caddr, readw(TxPktP)); | 558 | Pkt = (struct PKT __iomem *) RIO_PTR(HostP->Caddr, readw(TxPktP)); |
| 559 | 559 | ||
| 560 | /* | 560 | /* |
| 561 | ** If the packet is used, reset it. | 561 | ** If the packet is used, reset it. |
| 562 | */ | 562 | */ |
| 563 | Pkt = (struct PKT *) ((unsigned long) Pkt & ~PKT_IN_USE); | 563 | Pkt = (struct PKT __iomem *) ((unsigned long) Pkt & ~PKT_IN_USE); |
| 564 | writeb(dest_unit, &Pkt->dest_unit); | 564 | writeb(dest_unit, &Pkt->dest_unit); |
| 565 | writeb(dest_port, &Pkt->dest_port); | 565 | writeb(dest_port, &Pkt->dest_port); |
| 566 | } | 566 | } |
diff --git a/drivers/char/rio/riotable.c b/drivers/char/rio/riotable.c index d3abe0d37d64..7e988357326e 100644 --- a/drivers/char/rio/riotable.c +++ b/drivers/char/rio/riotable.c | |||
| @@ -534,8 +534,8 @@ int RIODeleteRta(struct rio_info *p, struct Map *MapP) | |||
| 534 | if (PortP->SecondBlock) { | 534 | if (PortP->SecondBlock) { |
| 535 | u16 dest_unit = HostMapP->ID; | 535 | u16 dest_unit = HostMapP->ID; |
| 536 | u16 dest_port = port - SysPort; | 536 | u16 dest_port = port - SysPort; |
| 537 | u16 *TxPktP; | 537 | u16 __iomem *TxPktP; |
| 538 | struct PKT *Pkt; | 538 | struct PKT __iomem *Pkt; |
| 539 | 539 | ||
| 540 | for (TxPktP = PortP->TxStart; TxPktP <= PortP->TxEnd; TxPktP++) { | 540 | for (TxPktP = PortP->TxStart; TxPktP <= PortP->TxEnd; TxPktP++) { |
| 541 | /* | 541 | /* |
| @@ -545,12 +545,12 @@ int RIODeleteRta(struct rio_info *p, struct Map *MapP) | |||
| 545 | ** a 32 bit pointer so it can be | 545 | ** a 32 bit pointer so it can be |
| 546 | ** accessed from the driver. | 546 | ** accessed from the driver. |
| 547 | */ | 547 | */ |
| 548 | Pkt = (struct PKT *) RIO_PTR(HostP->Caddr, readw(&*TxPktP)); | 548 | Pkt = (struct PKT __iomem *) RIO_PTR(HostP->Caddr, readw(&*TxPktP)); |
| 549 | 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); | 549 | rio_dprintk(RIO_DEBUG_TABLE, "Tx packet (%x) destination: Old %x:%x New %x:%x\n", readw(TxPktP), readb(&Pkt->dest_unit), readb(&Pkt->dest_port), dest_unit, dest_port); |
| 550 | writew(dest_unit, &Pkt->dest_unit); | 550 | writew(dest_unit, &Pkt->dest_unit); |
| 551 | writew(dest_port, &Pkt->dest_port); | 551 | writew(dest_port, &Pkt->dest_port); |
| 552 | } | 552 | } |
| 553 | 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); | 553 | rio_dprintk(RIO_DEBUG_TABLE, "Port %d phb destination: Old %x:%x New %x:%x\n", port, readb(&PortP->PhbP->destination) & 0xff, (readb(&PortP->PhbP->destination) >> 8) & 0xff, dest_unit, dest_port); |
| 554 | writew(dest_unit + (dest_port << 8), &PortP->PhbP->destination); | 554 | writew(dest_unit + (dest_port << 8), &PortP->PhbP->destination); |
| 555 | } | 555 | } |
| 556 | rio_spin_unlock_irqrestore(&PortP->portSem, sem_flags); | 556 | rio_spin_unlock_irqrestore(&PortP->portSem, sem_flags); |
| @@ -781,13 +781,13 @@ int RIOReMapPorts(struct rio_info *p, struct Host *HostP, struct Map *HostMapP) | |||
| 781 | ** unless the host has been booted | 781 | ** unless the host has been booted |
| 782 | */ | 782 | */ |
| 783 | if ((HostP->Flags & RUN_STATE) == RC_RUNNING) { | 783 | if ((HostP->Flags & RUN_STATE) == RC_RUNNING) { |
| 784 | struct PHB *PhbP = PortP->PhbP = &HostP->PhbP[HostPort]; | 784 | struct PHB __iomem *PhbP = PortP->PhbP = &HostP->PhbP[HostPort]; |
| 785 | PortP->TxAdd = (u16 *) RIO_PTR(HostP->Caddr, readw(&PhbP->tx_add)); | 785 | PortP->TxAdd = (u16 __iomem *) RIO_PTR(HostP->Caddr, readw(&PhbP->tx_add)); |
| 786 | PortP->TxStart = (u16 *) RIO_PTR(HostP->Caddr, readw(&PhbP->tx_start)); | 786 | PortP->TxStart = (u16 __iomem *) RIO_PTR(HostP->Caddr, readw(&PhbP->tx_start)); |
| 787 | PortP->TxEnd = (u16 *) RIO_PTR(HostP->Caddr, readw(&PhbP->tx_end)); | 787 | PortP->TxEnd = (u16 __iomem *) RIO_PTR(HostP->Caddr, readw(&PhbP->tx_end)); |
| 788 | PortP->RxRemove = (u16 *) RIO_PTR(HostP->Caddr, readw(&PhbP->rx_remove)); | 788 | PortP->RxRemove = (u16 __iomem *) RIO_PTR(HostP->Caddr, readw(&PhbP->rx_remove)); |
| 789 | PortP->RxStart = (u16 *) RIO_PTR(HostP->Caddr, readw(&PhbP->rx_start)); | 789 | PortP->RxStart = (u16 __iomem *) RIO_PTR(HostP->Caddr, readw(&PhbP->rx_start)); |
| 790 | PortP->RxEnd = (u16 *) RIO_PTR(HostP->Caddr, readw(&PhbP->rx_end)); | 790 | PortP->RxEnd = (u16 __iomem *) RIO_PTR(HostP->Caddr, readw(&PhbP->rx_end)); |
| 791 | } else | 791 | } else |
| 792 | PortP->PhbP = NULL; | 792 | PortP->PhbP = NULL; |
| 793 | 793 | ||
diff --git a/drivers/char/rio/riotty.c b/drivers/char/rio/riotty.c index 204267613c9c..a4f0b1e3e7fa 100644 --- a/drivers/char/rio/riotty.c +++ b/drivers/char/rio/riotty.c | |||
| @@ -576,7 +576,7 @@ static void RIOClearUp(struct Port *PortP) | |||
| 576 | */ | 576 | */ |
| 577 | int RIOShortCommand(struct rio_info *p, struct Port *PortP, int command, int len, int arg) | 577 | int RIOShortCommand(struct rio_info *p, struct Port *PortP, int command, int len, int arg) |
| 578 | { | 578 | { |
| 579 | struct PKT *PacketP; | 579 | struct PKT __iomem *PacketP; |
| 580 | int retries = 20; /* at 10 per second -> 2 seconds */ | 580 | int retries = 20; /* at 10 per second -> 2 seconds */ |
| 581 | unsigned long flags; | 581 | unsigned long flags; |
| 582 | 582 | ||
diff --git a/drivers/char/rio/unixrup.h b/drivers/char/rio/unixrup.h index 4306e01dbf01..46bd532f7746 100644 --- a/drivers/char/rio/unixrup.h +++ b/drivers/char/rio/unixrup.h | |||
| @@ -44,7 +44,7 @@ static char *_unixrup_h_sccs_ = "@(#)unixrup.h 1.2"; | |||
| 44 | struct UnixRup { | 44 | struct UnixRup { |
| 45 | struct CmdBlk *CmdsWaitingP; /* Commands waiting to be done */ | 45 | struct CmdBlk *CmdsWaitingP; /* Commands waiting to be done */ |
| 46 | struct CmdBlk *CmdPendingP; /* The command currently being sent */ | 46 | struct CmdBlk *CmdPendingP; /* The command currently being sent */ |
| 47 | struct RUP *RupP; /* the Rup to send it to */ | 47 | struct RUP __iomem *RupP; /* the Rup to send it to */ |
| 48 | unsigned int Id; /* Id number */ | 48 | unsigned int Id; /* Id number */ |
| 49 | unsigned int BaseSysPort; /* SysPort of first tty on this RTA */ | 49 | unsigned int BaseSysPort; /* SysPort of first tty on this RTA */ |
| 50 | unsigned int ModTypes; /* Modules on this RTA */ | 50 | unsigned int ModTypes; /* Modules on this RTA */ |
