diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-20 18:38:12 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-20 18:38:12 -0400 |
commit | 077e98945db7e54a9865b5f29a1f02f531eca414 (patch) | |
tree | bb24d180075a2d5ac35bd0d893bdc867405bee03 /drivers | |
parent | d9eaec9e295a84a80b663996d0489fcff3a1dca9 (diff) | |
parent | 92af11cdec410f5de4e8d702d24e1672ce26a1f6 (diff) |
Merge branch 'rio.b19' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/bird
* 'rio.b19' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/bird:
[PATCH] missing readb/readw in rio
[PATCH] copy_to_user() from iomem is a bad thing
[PATCH] forgotten swap of copyout() arguments
[PATCH] handling rio MEMDUMP
[PATCH] fix rio_copy_to_card() for OLDPCI case
[PATCH] uses of ->Copy() in rioroute are bogus
[PATCH] bogus order of copy_from_user() arguments
[PATCH] rio ->Copy() expects the sourse as first argument
[PATCH] trivial annotations in rio
Diffstat (limited to 'drivers')
-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 */ |