diff options
Diffstat (limited to 'drivers/char/cyclades.c')
-rw-r--r-- | drivers/char/cyclades.c | 315 |
1 files changed, 150 insertions, 165 deletions
diff --git a/drivers/char/cyclades.c b/drivers/char/cyclades.c index 3b62962b3512..9bf0fb2fa0d4 100644 --- a/drivers/char/cyclades.c +++ b/drivers/char/cyclades.c | |||
@@ -675,13 +675,13 @@ static void cy_send_xchar(struct tty_struct *tty, char ch); | |||
675 | #define IS_CYC_Z(card) ((card).num_chips == -1) | 675 | #define IS_CYC_Z(card) ((card).num_chips == -1) |
676 | 676 | ||
677 | #define Z_FPGA_CHECK(card) \ | 677 | #define Z_FPGA_CHECK(card) \ |
678 | ((cy_readl(&((struct RUNTIME_9060 __iomem *) \ | 678 | ((readl(&((struct RUNTIME_9060 __iomem *) \ |
679 | ((card).ctl_addr))->init_ctrl) & (1<<17)) != 0) | 679 | ((card).ctl_addr))->init_ctrl) & (1<<17)) != 0) |
680 | 680 | ||
681 | #define ISZLOADED(card) (((ZO_V1==cy_readl(&((struct RUNTIME_9060 __iomem *) \ | 681 | #define ISZLOADED(card) (((ZO_V1==readl(&((struct RUNTIME_9060 __iomem *) \ |
682 | ((card).ctl_addr))->mail_box_0)) || \ | 682 | ((card).ctl_addr))->mail_box_0)) || \ |
683 | Z_FPGA_CHECK(card)) && \ | 683 | Z_FPGA_CHECK(card)) && \ |
684 | (ZFIRM_ID==cy_readl(&((struct FIRM_ID __iomem *) \ | 684 | (ZFIRM_ID==readl(&((struct FIRM_ID __iomem *) \ |
685 | ((card).base_addr+ID_ADDRESS))->signature))) | 685 | ((card).base_addr+ID_ADDRESS))->signature))) |
686 | 686 | ||
687 | #ifndef SERIAL_XMIT_SIZE | 687 | #ifndef SERIAL_XMIT_SIZE |
@@ -972,7 +972,7 @@ static int cyy_issue_cmd(void __iomem * base_addr, u_char cmd, int index) | |||
972 | 972 | ||
973 | /* Check to see that the previous command has completed */ | 973 | /* Check to see that the previous command has completed */ |
974 | for (i = 0; i < 100; i++) { | 974 | for (i = 0; i < 100; i++) { |
975 | if (cy_readb(base_addr + (CyCCR << index)) == 0) { | 975 | if (readb(base_addr + (CyCCR << index)) == 0) { |
976 | break; | 976 | break; |
977 | } | 977 | } |
978 | udelay(10L); | 978 | udelay(10L); |
@@ -1015,7 +1015,7 @@ static unsigned detect_isa_irq(void __iomem * address) | |||
1015 | 1015 | ||
1016 | cy_writeb(address + (CyCAR << index), 0); | 1016 | cy_writeb(address + (CyCAR << index), 0); |
1017 | cy_writeb(address + (CySRER << index), | 1017 | cy_writeb(address + (CySRER << index), |
1018 | cy_readb(address + (CySRER << index)) | CyTxRdy); | 1018 | readb(address + (CySRER << index)) | CyTxRdy); |
1019 | local_irq_restore(flags); | 1019 | local_irq_restore(flags); |
1020 | 1020 | ||
1021 | /* Wait ... */ | 1021 | /* Wait ... */ |
@@ -1025,11 +1025,11 @@ static unsigned detect_isa_irq(void __iomem * address) | |||
1025 | irq = probe_irq_off(irqs); | 1025 | irq = probe_irq_off(irqs); |
1026 | 1026 | ||
1027 | /* Clean up */ | 1027 | /* Clean up */ |
1028 | save_xir = (u_char) cy_readb(address + (CyTIR << index)); | 1028 | save_xir = (u_char) readb(address + (CyTIR << index)); |
1029 | save_car = cy_readb(address + (CyCAR << index)); | 1029 | save_car = readb(address + (CyCAR << index)); |
1030 | cy_writeb(address + (CyCAR << index), (save_xir & 0x3)); | 1030 | cy_writeb(address + (CyCAR << index), (save_xir & 0x3)); |
1031 | cy_writeb(address + (CySRER << index), | 1031 | cy_writeb(address + (CySRER << index), |
1032 | cy_readb(address + (CySRER << index)) & ~CyTxRdy); | 1032 | readb(address + (CySRER << index)) & ~CyTxRdy); |
1033 | cy_writeb(address + (CyTIR << index), (save_xir & 0x3f)); | 1033 | cy_writeb(address + (CyTIR << index), (save_xir & 0x3f)); |
1034 | cy_writeb(address + (CyCAR << index), (save_car)); | 1034 | cy_writeb(address + (CyCAR << index), (save_car)); |
1035 | cy_writeb(address + (Cy_ClrIntr << index), 0); | 1035 | cy_writeb(address + (Cy_ClrIntr << index), 0); |
@@ -1055,34 +1055,34 @@ static void cyy_intr_chip(struct cyclades_card *cinfo, int chip, | |||
1055 | #endif | 1055 | #endif |
1056 | /* determine the channel & change to that context */ | 1056 | /* determine the channel & change to that context */ |
1057 | spin_lock(&cinfo->card_lock); | 1057 | spin_lock(&cinfo->card_lock); |
1058 | save_xir = (u_char) cy_readb(base_addr + (CyRIR << index)); | 1058 | save_xir = (u_char) readb(base_addr + (CyRIR << index)); |
1059 | channel = (u_short) (save_xir & CyIRChannel); | 1059 | channel = (u_short) (save_xir & CyIRChannel); |
1060 | i = channel + chip * 4 + cinfo->first_line; | 1060 | i = channel + chip * 4 + cinfo->first_line; |
1061 | info = &cy_port[i]; | 1061 | info = &cy_port[i]; |
1062 | info->last_active = jiffies; | 1062 | info->last_active = jiffies; |
1063 | save_car = cy_readb(base_addr + (CyCAR << index)); | 1063 | save_car = readb(base_addr + (CyCAR << index)); |
1064 | cy_writeb(base_addr + (CyCAR << index), save_xir); | 1064 | cy_writeb(base_addr + (CyCAR << index), save_xir); |
1065 | 1065 | ||
1066 | /* if there is nowhere to put the data, discard it */ | 1066 | /* if there is nowhere to put the data, discard it */ |
1067 | if (info->tty == 0) { | 1067 | if (info->tty == 0) { |
1068 | j = (cy_readb(base_addr + (CyRIVR << index)) & | 1068 | j = (readb(base_addr + (CyRIVR << index)) & |
1069 | CyIVRMask); | 1069 | CyIVRMask); |
1070 | if (j == CyIVRRxEx) { /* exception */ | 1070 | if (j == CyIVRRxEx) { /* exception */ |
1071 | data = cy_readb(base_addr + (CyRDSR << index)); | 1071 | data = readb(base_addr + (CyRDSR << index)); |
1072 | } else { /* normal character reception */ | 1072 | } else { /* normal character reception */ |
1073 | char_count = cy_readb(base_addr + | 1073 | char_count = readb(base_addr + |
1074 | (CyRDCR << index)); | 1074 | (CyRDCR << index)); |
1075 | while (char_count--) { | 1075 | while (char_count--) { |
1076 | data = cy_readb(base_addr + | 1076 | data = readb(base_addr + |
1077 | (CyRDSR << index)); | 1077 | (CyRDSR << index)); |
1078 | } | 1078 | } |
1079 | } | 1079 | } |
1080 | } else { /* there is an open port for this data */ | 1080 | } else { /* there is an open port for this data */ |
1081 | tty = info->tty; | 1081 | tty = info->tty; |
1082 | j = (cy_readb(base_addr + (CyRIVR << index)) & | 1082 | j = (readb(base_addr + (CyRIVR << index)) & |
1083 | CyIVRMask); | 1083 | CyIVRMask); |
1084 | if (j == CyIVRRxEx) { /* exception */ | 1084 | if (j == CyIVRRxEx) { /* exception */ |
1085 | data = cy_readb(base_addr + (CyRDSR << index)); | 1085 | data = readb(base_addr + (CyRDSR << index)); |
1086 | 1086 | ||
1087 | /* For statistics only */ | 1087 | /* For statistics only */ |
1088 | if (data & CyBREAK) | 1088 | if (data & CyBREAK) |
@@ -1103,7 +1103,7 @@ static void cyy_intr_chip(struct cyclades_card *cinfo, int chip, | |||
1103 | if (data & CyBREAK) { | 1103 | if (data & CyBREAK) { |
1104 | tty_insert_flip_char( | 1104 | tty_insert_flip_char( |
1105 | tty, | 1105 | tty, |
1106 | cy_readb( | 1106 | readb( |
1107 | base_addr + | 1107 | base_addr + |
1108 | (CyRDSR << | 1108 | (CyRDSR << |
1109 | index)), | 1109 | index)), |
@@ -1116,7 +1116,7 @@ static void cyy_intr_chip(struct cyclades_card *cinfo, int chip, | |||
1116 | } else if (data & CyFRAME) { | 1116 | } else if (data & CyFRAME) { |
1117 | tty_insert_flip_char( | 1117 | tty_insert_flip_char( |
1118 | tty, | 1118 | tty, |
1119 | cy_readb( | 1119 | readb( |
1120 | base_addr + | 1120 | base_addr + |
1121 | (CyRDSR << | 1121 | (CyRDSR << |
1122 | index)), | 1122 | index)), |
@@ -1128,7 +1128,7 @@ static void cyy_intr_chip(struct cyclades_card *cinfo, int chip, | |||
1128 | /* Pieces of seven... */ | 1128 | /* Pieces of seven... */ |
1129 | tty_insert_flip_char( | 1129 | tty_insert_flip_char( |
1130 | tty, | 1130 | tty, |
1131 | cy_readb( | 1131 | readb( |
1132 | base_addr + | 1132 | base_addr + |
1133 | (CyRDSR << | 1133 | (CyRDSR << |
1134 | index)), | 1134 | index)), |
@@ -1147,7 +1147,7 @@ static void cyy_intr_chip(struct cyclades_card *cinfo, int chip, | |||
1147 | */ | 1147 | */ |
1148 | tty_insert_flip_char( | 1148 | tty_insert_flip_char( |
1149 | tty, | 1149 | tty, |
1150 | cy_readb( | 1150 | readb( |
1151 | base_addr + | 1151 | base_addr + |
1152 | (CyRDSR << | 1152 | (CyRDSR << |
1153 | index)), | 1153 | index)), |
@@ -1179,7 +1179,7 @@ static void cyy_intr_chip(struct cyclades_card *cinfo, int chip, | |||
1179 | } | 1179 | } |
1180 | } else { /* normal character reception */ | 1180 | } else { /* normal character reception */ |
1181 | /* load # chars available from the chip */ | 1181 | /* load # chars available from the chip */ |
1182 | char_count = cy_readb(base_addr + | 1182 | char_count = readb(base_addr + |
1183 | (CyRDCR << index)); | 1183 | (CyRDCR << index)); |
1184 | 1184 | ||
1185 | #ifdef CY_ENABLE_MONITORING | 1185 | #ifdef CY_ENABLE_MONITORING |
@@ -1191,7 +1191,7 @@ static void cyy_intr_chip(struct cyclades_card *cinfo, int chip, | |||
1191 | #endif | 1191 | #endif |
1192 | len = tty_buffer_request_room(tty, char_count); | 1192 | len = tty_buffer_request_room(tty, char_count); |
1193 | while (len--) { | 1193 | while (len--) { |
1194 | data = cy_readb(base_addr + | 1194 | data = readb(base_addr + |
1195 | (CyRDSR << index)); | 1195 | (CyRDSR << index)); |
1196 | tty_insert_flip_char(tty, data, | 1196 | tty_insert_flip_char(tty, data, |
1197 | TTY_NORMAL); | 1197 | TTY_NORMAL); |
@@ -1221,16 +1221,16 @@ static void cyy_intr_chip(struct cyclades_card *cinfo, int chip, | |||
1221 | 1221 | ||
1222 | /* determine the channel & change to that context */ | 1222 | /* determine the channel & change to that context */ |
1223 | spin_lock(&cinfo->card_lock); | 1223 | spin_lock(&cinfo->card_lock); |
1224 | save_xir = (u_char) cy_readb(base_addr + (CyTIR << index)); | 1224 | save_xir = (u_char) readb(base_addr + (CyTIR << index)); |
1225 | channel = (u_short) (save_xir & CyIRChannel); | 1225 | channel = (u_short) (save_xir & CyIRChannel); |
1226 | i = channel + chip * 4 + cinfo->first_line; | 1226 | i = channel + chip * 4 + cinfo->first_line; |
1227 | save_car = cy_readb(base_addr + (CyCAR << index)); | 1227 | save_car = readb(base_addr + (CyCAR << index)); |
1228 | cy_writeb(base_addr + (CyCAR << index), save_xir); | 1228 | cy_writeb(base_addr + (CyCAR << index), save_xir); |
1229 | 1229 | ||
1230 | /* validate the port# (as configured and open) */ | 1230 | /* validate the port# (as configured and open) */ |
1231 | if ((i < 0) || (NR_PORTS <= i)) { | 1231 | if ((i < 0) || (NR_PORTS <= i)) { |
1232 | cy_writeb(base_addr + (CySRER << index), | 1232 | cy_writeb(base_addr + (CySRER << index), |
1233 | cy_readb(base_addr + (CySRER << index)) & | 1233 | readb(base_addr + (CySRER << index)) & |
1234 | ~CyTxRdy); | 1234 | ~CyTxRdy); |
1235 | goto txend; | 1235 | goto txend; |
1236 | } | 1236 | } |
@@ -1238,7 +1238,7 @@ static void cyy_intr_chip(struct cyclades_card *cinfo, int chip, | |||
1238 | info->last_active = jiffies; | 1238 | info->last_active = jiffies; |
1239 | if (info->tty == 0) { | 1239 | if (info->tty == 0) { |
1240 | cy_writeb(base_addr + (CySRER << index), | 1240 | cy_writeb(base_addr + (CySRER << index), |
1241 | cy_readb(base_addr + (CySRER << index)) & | 1241 | readb(base_addr + (CySRER << index)) & |
1242 | ~CyTxRdy); | 1242 | ~CyTxRdy); |
1243 | goto txdone; | 1243 | goto txdone; |
1244 | } | 1244 | } |
@@ -1271,15 +1271,15 @@ static void cyy_intr_chip(struct cyclades_card *cinfo, int chip, | |||
1271 | 1271 | ||
1272 | while (char_count-- > 0) { | 1272 | while (char_count-- > 0) { |
1273 | if (!info->xmit_cnt) { | 1273 | if (!info->xmit_cnt) { |
1274 | if (cy_readb(base_addr + (CySRER << index)) & | 1274 | if (readb(base_addr + (CySRER << index)) & |
1275 | CyTxMpty) { | 1275 | CyTxMpty) { |
1276 | cy_writeb(base_addr + (CySRER << index), | 1276 | cy_writeb(base_addr + (CySRER << index), |
1277 | cy_readb(base_addr + | 1277 | readb(base_addr + |
1278 | (CySRER << index)) & | 1278 | (CySRER << index)) & |
1279 | ~CyTxMpty); | 1279 | ~CyTxMpty); |
1280 | } else { | 1280 | } else { |
1281 | cy_writeb(base_addr + (CySRER << index), | 1281 | cy_writeb(base_addr + (CySRER << index), |
1282 | (cy_readb(base_addr + | 1282 | (readb(base_addr + |
1283 | (CySRER << index)) & | 1283 | (CySRER << index)) & |
1284 | ~CyTxRdy) | CyTxMpty); | 1284 | ~CyTxRdy) | CyTxMpty); |
1285 | } | 1285 | } |
@@ -1287,13 +1287,13 @@ static void cyy_intr_chip(struct cyclades_card *cinfo, int chip, | |||
1287 | } | 1287 | } |
1288 | if (info->xmit_buf == 0) { | 1288 | if (info->xmit_buf == 0) { |
1289 | cy_writeb(base_addr + (CySRER << index), | 1289 | cy_writeb(base_addr + (CySRER << index), |
1290 | cy_readb(base_addr + (CySRER << index))& | 1290 | readb(base_addr + (CySRER << index)) & |
1291 | ~CyTxRdy); | 1291 | ~CyTxRdy); |
1292 | goto txdone; | 1292 | goto txdone; |
1293 | } | 1293 | } |
1294 | if (info->tty->stopped || info->tty->hw_stopped) { | 1294 | if (info->tty->stopped || info->tty->hw_stopped) { |
1295 | cy_writeb(base_addr + (CySRER << index), | 1295 | cy_writeb(base_addr + (CySRER << index), |
1296 | cy_readb(base_addr + (CySRER << index))& | 1296 | readb(base_addr + (CySRER << index)) & |
1297 | ~CyTxRdy); | 1297 | ~CyTxRdy); |
1298 | goto txdone; | 1298 | goto txdone; |
1299 | } | 1299 | } |
@@ -1346,15 +1346,15 @@ txend: | |||
1346 | 1346 | ||
1347 | /* determine the channel & change to that context */ | 1347 | /* determine the channel & change to that context */ |
1348 | spin_lock(&cinfo->card_lock); | 1348 | spin_lock(&cinfo->card_lock); |
1349 | save_xir = (u_char) cy_readb(base_addr + (CyMIR << index)); | 1349 | save_xir = (u_char) readb(base_addr + (CyMIR << index)); |
1350 | channel = (u_short) (save_xir & CyIRChannel); | 1350 | channel = (u_short) (save_xir & CyIRChannel); |
1351 | info = &cy_port[channel + chip * 4 + cinfo->first_line]; | 1351 | info = &cy_port[channel + chip * 4 + cinfo->first_line]; |
1352 | info->last_active = jiffies; | 1352 | info->last_active = jiffies; |
1353 | save_car = cy_readb(base_addr + (CyCAR << index)); | 1353 | save_car = readb(base_addr + (CyCAR << index)); |
1354 | cy_writeb(base_addr + (CyCAR << index), save_xir); | 1354 | cy_writeb(base_addr + (CyCAR << index), save_xir); |
1355 | 1355 | ||
1356 | mdm_change = cy_readb(base_addr + (CyMISR << index)); | 1356 | mdm_change = readb(base_addr + (CyMISR << index)); |
1357 | mdm_status = cy_readb(base_addr + (CyMSVR1 << index)); | 1357 | mdm_status = readb(base_addr + (CyMSVR1 << index)); |
1358 | 1358 | ||
1359 | if (info->tty == 0) { /* no place for data, ignore it */ | 1359 | if (info->tty == 0) { /* no place for data, ignore it */ |
1360 | ; | 1360 | ; |
@@ -1391,7 +1391,7 @@ txend: | |||
1391 | info->tty->hw_stopped = 0; | 1391 | info->tty->hw_stopped = 0; |
1392 | cy_writeb(base_addr + | 1392 | cy_writeb(base_addr + |
1393 | (CySRER << index), | 1393 | (CySRER << index), |
1394 | cy_readb(base_addr + | 1394 | readb(base_addr + |
1395 | (CySRER << | 1395 | (CySRER << |
1396 | index))| | 1396 | index))| |
1397 | CyTxRdy); | 1397 | CyTxRdy); |
@@ -1405,7 +1405,7 @@ txend: | |||
1405 | info->tty->hw_stopped = 1; | 1405 | info->tty->hw_stopped = 1; |
1406 | cy_writeb(base_addr + | 1406 | cy_writeb(base_addr + |
1407 | (CySRER << index), | 1407 | (CySRER << index), |
1408 | cy_readb(base_addr + | 1408 | readb(base_addr + |
1409 | (CySRER << | 1409 | (CySRER << |
1410 | index)) & | 1410 | index)) & |
1411 | ~CyTxRdy); | 1411 | ~CyTxRdy); |
@@ -1459,7 +1459,7 @@ static irqreturn_t cyy_interrupt(int irq, void *dev_id) | |||
1459 | base_addr = cinfo->base_addr + | 1459 | base_addr = cinfo->base_addr + |
1460 | (cy_chip_offset[chip] << index); | 1460 | (cy_chip_offset[chip] << index); |
1461 | too_many = 0; | 1461 | too_many = 0; |
1462 | while ((status = cy_readb(base_addr + | 1462 | while ((status = readb(base_addr + |
1463 | (CySVRR << index))) != 0x00) { | 1463 | (CySVRR << index))) != 0x00) { |
1464 | had_work++; | 1464 | had_work++; |
1465 | /* The purpose of the following test is to ensure that | 1465 | /* The purpose of the following test is to ensure that |
@@ -1502,16 +1502,15 @@ cyz_fetch_msg(struct cyclades_card *cinfo, | |||
1502 | if (!ISZLOADED(*cinfo)) { | 1502 | if (!ISZLOADED(*cinfo)) { |
1503 | return -1; | 1503 | return -1; |
1504 | } | 1504 | } |
1505 | zfw_ctrl = cinfo->base_addr + (cy_readl(&firm_id->zfwctrl_addr) & | 1505 | zfw_ctrl = cinfo->base_addr + (readl(&firm_id->zfwctrl_addr) & 0xfffff); |
1506 | 0xfffff); | ||
1507 | board_ctrl = &zfw_ctrl->board_ctrl; | 1506 | board_ctrl = &zfw_ctrl->board_ctrl; |
1508 | 1507 | ||
1509 | loc_doorbell = cy_readl(&((struct RUNTIME_9060 __iomem *) | 1508 | loc_doorbell = readl(&((struct RUNTIME_9060 __iomem *) |
1510 | (cinfo->ctl_addr))->loc_doorbell); | 1509 | (cinfo->ctl_addr))->loc_doorbell); |
1511 | if (loc_doorbell) { | 1510 | if (loc_doorbell) { |
1512 | *cmd = (char)(0xff & loc_doorbell); | 1511 | *cmd = (char)(0xff & loc_doorbell); |
1513 | *channel = cy_readl(&board_ctrl->fwcmd_channel); | 1512 | *channel = readl(&board_ctrl->fwcmd_channel); |
1514 | *param = (__u32) cy_readl(&board_ctrl->fwcmd_param); | 1513 | *param = (__u32) readl(&board_ctrl->fwcmd_param); |
1515 | cy_writel(&((struct RUNTIME_9060 __iomem *)(cinfo->ctl_addr))-> | 1514 | cy_writel(&((struct RUNTIME_9060 __iomem *)(cinfo->ctl_addr))-> |
1516 | loc_doorbell, 0xffffffff); | 1515 | loc_doorbell, 0xffffffff); |
1517 | return 1; | 1516 | return 1; |
@@ -1533,16 +1532,15 @@ cyz_issue_cmd(struct cyclades_card *cinfo, | |||
1533 | if (!ISZLOADED(*cinfo)) { | 1532 | if (!ISZLOADED(*cinfo)) { |
1534 | return -1; | 1533 | return -1; |
1535 | } | 1534 | } |
1536 | zfw_ctrl = cinfo->base_addr + (cy_readl(&firm_id->zfwctrl_addr) & | 1535 | zfw_ctrl = cinfo->base_addr + (readl(&firm_id->zfwctrl_addr) & 0xfffff); |
1537 | 0xfffff); | ||
1538 | board_ctrl = &zfw_ctrl->board_ctrl; | 1536 | board_ctrl = &zfw_ctrl->board_ctrl; |
1539 | 1537 | ||
1540 | index = 0; | 1538 | index = 0; |
1541 | pci_doorbell = | 1539 | pci_doorbell = |
1542 | &((struct RUNTIME_9060 __iomem *)(cinfo->ctl_addr))->pci_doorbell; | 1540 | &((struct RUNTIME_9060 __iomem *)(cinfo->ctl_addr))->pci_doorbell; |
1543 | while ((cy_readl(pci_doorbell) & 0xff) != 0) { | 1541 | while ((readl(pci_doorbell) & 0xff) != 0) { |
1544 | if (index++ == 1000) { | 1542 | if (index++ == 1000) { |
1545 | return (int)(cy_readl(pci_doorbell) & 0xff); | 1543 | return (int)(readl(pci_doorbell) & 0xff); |
1546 | } | 1544 | } |
1547 | udelay(50L); | 1545 | udelay(50L); |
1548 | } | 1546 | } |
@@ -1569,10 +1567,10 @@ cyz_handle_rx(struct cyclades_port *info, | |||
1569 | #endif | 1567 | #endif |
1570 | volatile __u32 rx_put, rx_get, new_rx_get, rx_bufsize, rx_bufaddr; | 1568 | volatile __u32 rx_put, rx_get, new_rx_get, rx_bufsize, rx_bufaddr; |
1571 | 1569 | ||
1572 | rx_get = new_rx_get = cy_readl(&buf_ctrl->rx_get); | 1570 | rx_get = new_rx_get = readl(&buf_ctrl->rx_get); |
1573 | rx_put = cy_readl(&buf_ctrl->rx_put); | 1571 | rx_put = readl(&buf_ctrl->rx_put); |
1574 | rx_bufsize = cy_readl(&buf_ctrl->rx_bufsize); | 1572 | rx_bufsize = readl(&buf_ctrl->rx_bufsize); |
1575 | rx_bufaddr = cy_readl(&buf_ctrl->rx_bufaddr); | 1573 | rx_bufaddr = readl(&buf_ctrl->rx_bufaddr); |
1576 | if (rx_put >= rx_get) | 1574 | if (rx_put >= rx_get) |
1577 | char_count = rx_put - rx_get; | 1575 | char_count = rx_put - rx_get; |
1578 | else | 1576 | else |
@@ -1622,7 +1620,7 @@ cyz_handle_rx(struct cyclades_port *info, | |||
1622 | #else | 1620 | #else |
1623 | len = tty_buffer_request_room(tty, char_count); | 1621 | len = tty_buffer_request_room(tty, char_count); |
1624 | while (len--) { | 1622 | while (len--) { |
1625 | data = cy_readb(cinfo->base_addr + rx_bufaddr + | 1623 | data = readb(cinfo->base_addr + rx_bufaddr + |
1626 | new_rx_get); | 1624 | new_rx_get); |
1627 | new_rx_get = (new_rx_get + 1)& (rx_bufsize - 1); | 1625 | new_rx_get = (new_rx_get + 1)& (rx_bufsize - 1); |
1628 | tty_insert_flip_char(tty, data, TTY_NORMAL); | 1626 | tty_insert_flip_char(tty, data, TTY_NORMAL); |
@@ -1633,13 +1631,12 @@ cyz_handle_rx(struct cyclades_port *info, | |||
1633 | #ifdef CONFIG_CYZ_INTR | 1631 | #ifdef CONFIG_CYZ_INTR |
1634 | /* Recalculate the number of chars in the RX buffer and issue | 1632 | /* Recalculate the number of chars in the RX buffer and issue |
1635 | a cmd in case it's higher than the RX high water mark */ | 1633 | a cmd in case it's higher than the RX high water mark */ |
1636 | rx_put = cy_readl(&buf_ctrl->rx_put); | 1634 | rx_put = readl(&buf_ctrl->rx_put); |
1637 | if (rx_put >= rx_get) | 1635 | if (rx_put >= rx_get) |
1638 | char_count = rx_put - rx_get; | 1636 | char_count = rx_put - rx_get; |
1639 | else | 1637 | else |
1640 | char_count = rx_put - rx_get + rx_bufsize; | 1638 | char_count = rx_put - rx_get + rx_bufsize; |
1641 | if (char_count >= (int)cy_readl(&buf_ctrl-> | 1639 | if (char_count >= (int)readl(&buf_ctrl->rx_threshold)) { |
1642 | rx_threshold)) { | ||
1643 | cy_sched_event(info, Cy_EVENT_Z_RX_FULL); | 1640 | cy_sched_event(info, Cy_EVENT_Z_RX_FULL); |
1644 | } | 1641 | } |
1645 | #endif | 1642 | #endif |
@@ -1668,10 +1665,10 @@ cyz_handle_tx(struct cyclades_port *info, | |||
1668 | if (info->xmit_cnt <= 0) /* Nothing to transmit */ | 1665 | if (info->xmit_cnt <= 0) /* Nothing to transmit */ |
1669 | return; | 1666 | return; |
1670 | 1667 | ||
1671 | tx_get = cy_readl(&buf_ctrl->tx_get); | 1668 | tx_get = readl(&buf_ctrl->tx_get); |
1672 | tx_put = cy_readl(&buf_ctrl->tx_put); | 1669 | tx_put = readl(&buf_ctrl->tx_put); |
1673 | tx_bufsize = cy_readl(&buf_ctrl->tx_bufsize); | 1670 | tx_bufsize = readl(&buf_ctrl->tx_bufsize); |
1674 | tx_bufaddr = cy_readl(&buf_ctrl->tx_bufaddr); | 1671 | tx_bufaddr = readl(&buf_ctrl->tx_bufaddr); |
1675 | if (tx_put >= tx_get) | 1672 | if (tx_put >= tx_get) |
1676 | char_count = tx_get - tx_put - 1 + tx_bufsize; | 1673 | char_count = tx_get - tx_put - 1 + tx_bufsize; |
1677 | else | 1674 | else |
@@ -1756,11 +1753,10 @@ static void cyz_handle_cmd(struct cyclades_card *cinfo) | |||
1756 | int delta_count; | 1753 | int delta_count; |
1757 | 1754 | ||
1758 | firm_id = cinfo->base_addr + ID_ADDRESS; | 1755 | firm_id = cinfo->base_addr + ID_ADDRESS; |
1759 | zfw_ctrl = cinfo->base_addr + (cy_readl(&firm_id->zfwctrl_addr) & | 1756 | zfw_ctrl = cinfo->base_addr + (readl(&firm_id->zfwctrl_addr) & 0xfffff); |
1760 | 0xfffff); | ||
1761 | board_ctrl = &zfw_ctrl->board_ctrl; | 1757 | board_ctrl = &zfw_ctrl->board_ctrl; |
1762 | fw_ver = cy_readl(&board_ctrl->fw_version); | 1758 | fw_ver = readl(&board_ctrl->fw_version); |
1763 | hw_ver = cy_readl(&((struct RUNTIME_9060 __iomem *)(cinfo->ctl_addr))-> | 1759 | hw_ver = readl(&((struct RUNTIME_9060 __iomem *)(cinfo->ctl_addr))-> |
1764 | mail_box_0); | 1760 | mail_box_0); |
1765 | 1761 | ||
1766 | while (cyz_fetch_msg(cinfo, &channel, &cmd, ¶m) == 1) { | 1762 | while (cyz_fetch_msg(cinfo, &channel, &cmd, ¶m) == 1) { |
@@ -1794,7 +1790,7 @@ static void cyz_handle_cmd(struct cyclades_card *cinfo) | |||
1794 | delta_count++; | 1790 | delta_count++; |
1795 | if (info->flags & ASYNC_CHECK_CD) { | 1791 | if (info->flags & ASYNC_CHECK_CD) { |
1796 | if ((fw_ver > 241 ? ((u_long) param) : | 1792 | if ((fw_ver > 241 ? ((u_long) param) : |
1797 | cy_readl(&ch_ctrl->rs_status)) & | 1793 | readl(&ch_ctrl->rs_status)) & |
1798 | C_RS_DCD) { | 1794 | C_RS_DCD) { |
1799 | cy_sched_event(info, | 1795 | cy_sched_event(info, |
1800 | Cy_EVENT_OPEN_WAKEUP); | 1796 | Cy_EVENT_OPEN_WAKEUP); |
@@ -1923,12 +1919,12 @@ static void cyz_poll(unsigned long arg) | |||
1923 | 1919 | ||
1924 | firm_id = cinfo->base_addr + ID_ADDRESS; | 1920 | firm_id = cinfo->base_addr + ID_ADDRESS; |
1925 | zfw_ctrl = cinfo->base_addr + | 1921 | zfw_ctrl = cinfo->base_addr + |
1926 | (cy_readl(&firm_id->zfwctrl_addr) & 0xfffff); | 1922 | (readl(&firm_id->zfwctrl_addr) & 0xfffff); |
1927 | board_ctrl = &(zfw_ctrl->board_ctrl); | 1923 | board_ctrl = &(zfw_ctrl->board_ctrl); |
1928 | 1924 | ||
1929 | /* Skip first polling cycle to avoid racing conditions with the FW */ | 1925 | /* Skip first polling cycle to avoid racing conditions with the FW */ |
1930 | if (!cinfo->intr_enabled) { | 1926 | if (!cinfo->intr_enabled) { |
1931 | cinfo->nports = (int)cy_readl(&board_ctrl->n_channel); | 1927 | cinfo->nports = (int)readl(&board_ctrl->n_channel); |
1932 | cinfo->intr_enabled = 1; | 1928 | cinfo->intr_enabled = 1; |
1933 | continue; | 1929 | continue; |
1934 | } | 1930 | } |
@@ -2029,12 +2025,12 @@ static int startup(struct cyclades_port *info) | |||
2029 | #ifdef CY_DEBUG_DTR | 2025 | #ifdef CY_DEBUG_DTR |
2030 | printk("cyc:startup raising DTR\n"); | 2026 | printk("cyc:startup raising DTR\n"); |
2031 | printk(" status: 0x%x, 0x%x\n", | 2027 | printk(" status: 0x%x, 0x%x\n", |
2032 | cy_readb(base_addr + (CyMSVR1 << index)), | 2028 | readb(base_addr + (CyMSVR1 << index)), |
2033 | cy_readb(base_addr + (CyMSVR2 << index))); | 2029 | readb(base_addr + (CyMSVR2 << index))); |
2034 | #endif | 2030 | #endif |
2035 | 2031 | ||
2036 | cy_writeb(base_addr + (CySRER << index), | 2032 | cy_writeb(base_addr + (CySRER << index), |
2037 | cy_readb(base_addr + (CySRER << index)) | CyRxData); | 2033 | readb(base_addr + (CySRER << index)) | CyRxData); |
2038 | info->flags |= ASYNC_INITIALIZED; | 2034 | info->flags |= ASYNC_INITIALIZED; |
2039 | 2035 | ||
2040 | if (info->tty) { | 2036 | if (info->tty) { |
@@ -2064,7 +2060,7 @@ static int startup(struct cyclades_port *info) | |||
2064 | } | 2060 | } |
2065 | 2061 | ||
2066 | zfw_ctrl = cy_card[card].base_addr + | 2062 | zfw_ctrl = cy_card[card].base_addr + |
2067 | (cy_readl(&firm_id->zfwctrl_addr) & 0xfffff); | 2063 | (readl(&firm_id->zfwctrl_addr) & 0xfffff); |
2068 | board_ctrl = &zfw_ctrl->board_ctrl; | 2064 | board_ctrl = &zfw_ctrl->board_ctrl; |
2069 | ch_ctrl = zfw_ctrl->ch_ctrl; | 2065 | ch_ctrl = zfw_ctrl->ch_ctrl; |
2070 | 2066 | ||
@@ -2112,7 +2108,7 @@ static int startup(struct cyclades_port *info) | |||
2112 | /* set timeout !!! */ | 2108 | /* set timeout !!! */ |
2113 | /* set RTS and DTR !!! */ | 2109 | /* set RTS and DTR !!! */ |
2114 | cy_writel(&ch_ctrl[channel].rs_control, | 2110 | cy_writel(&ch_ctrl[channel].rs_control, |
2115 | cy_readl(&ch_ctrl[channel].rs_control) | C_RS_RTS | | 2111 | readl(&ch_ctrl[channel].rs_control) | C_RS_RTS | |
2116 | C_RS_DTR); | 2112 | C_RS_DTR); |
2117 | retval = cyz_issue_cmd(&cy_card[info->card], channel, | 2113 | retval = cyz_issue_cmd(&cy_card[info->card], channel, |
2118 | C_CM_IOCTLM, 0L); | 2114 | C_CM_IOCTLM, 0L); |
@@ -2168,7 +2164,7 @@ static void start_xmit(struct cyclades_port *info) | |||
2168 | CY_LOCK(info, flags); | 2164 | CY_LOCK(info, flags); |
2169 | cy_writeb(base_addr + (CyCAR << index), channel); | 2165 | cy_writeb(base_addr + (CyCAR << index), channel); |
2170 | cy_writeb(base_addr + (CySRER << index), | 2166 | cy_writeb(base_addr + (CySRER << index), |
2171 | cy_readb(base_addr + (CySRER << index)) | CyTxRdy); | 2167 | readb(base_addr + (CySRER << index)) | CyTxRdy); |
2172 | CY_UNLOCK(info, flags); | 2168 | CY_UNLOCK(info, flags); |
2173 | } else { | 2169 | } else { |
2174 | #ifdef CONFIG_CYZ_INTR | 2170 | #ifdef CONFIG_CYZ_INTR |
@@ -2235,8 +2231,8 @@ static void shutdown(struct cyclades_port *info) | |||
2235 | #ifdef CY_DEBUG_DTR | 2231 | #ifdef CY_DEBUG_DTR |
2236 | printk("cyc shutdown dropping DTR\n"); | 2232 | printk("cyc shutdown dropping DTR\n"); |
2237 | printk(" status: 0x%x, 0x%x\n", | 2233 | printk(" status: 0x%x, 0x%x\n", |
2238 | cy_readb(base_addr + (CyMSVR1 << index)), | 2234 | readb(base_addr + (CyMSVR1 << index)), |
2239 | cy_readb(base_addr + (CyMSVR2 << index))); | 2235 | readb(base_addr + (CyMSVR2 << index))); |
2240 | #endif | 2236 | #endif |
2241 | } | 2237 | } |
2242 | cyy_issue_cmd(base_addr, CyCHAN_CTL | CyDIS_RCVR, index); | 2238 | cyy_issue_cmd(base_addr, CyCHAN_CTL | CyDIS_RCVR, index); |
@@ -2267,7 +2263,7 @@ static void shutdown(struct cyclades_port *info) | |||
2267 | } | 2263 | } |
2268 | 2264 | ||
2269 | zfw_ctrl = cy_card[card].base_addr + | 2265 | zfw_ctrl = cy_card[card].base_addr + |
2270 | (cy_readl(&firm_id->zfwctrl_addr) & 0xfffff); | 2266 | (readl(&firm_id->zfwctrl_addr) & 0xfffff); |
2271 | board_ctrl = &zfw_ctrl->board_ctrl; | 2267 | board_ctrl = &zfw_ctrl->board_ctrl; |
2272 | ch_ctrl = zfw_ctrl->ch_ctrl; | 2268 | ch_ctrl = zfw_ctrl->ch_ctrl; |
2273 | 2269 | ||
@@ -2282,7 +2278,7 @@ static void shutdown(struct cyclades_port *info) | |||
2282 | 2278 | ||
2283 | if (!info->tty || (info->tty->termios->c_cflag & HUPCL)) { | 2279 | if (!info->tty || (info->tty->termios->c_cflag & HUPCL)) { |
2284 | cy_writel(&ch_ctrl[channel].rs_control, | 2280 | cy_writel(&ch_ctrl[channel].rs_control, |
2285 | (__u32)(cy_readl(&ch_ctrl[channel].rs_control)& | 2281 | (__u32)(readl(&ch_ctrl[channel].rs_control) & |
2286 | ~(C_RS_RTS | C_RS_DTR))); | 2282 | ~(C_RS_RTS | C_RS_DTR))); |
2287 | retval = cyz_issue_cmd(&cy_card[info->card], channel, | 2283 | retval = cyz_issue_cmd(&cy_card[info->card], channel, |
2288 | C_CM_IOCTLM, 0L); | 2284 | C_CM_IOCTLM, 0L); |
@@ -2390,10 +2386,8 @@ block_til_ready(struct tty_struct *tty, struct file *filp, | |||
2390 | #ifdef CY_DEBUG_DTR | 2386 | #ifdef CY_DEBUG_DTR |
2391 | printk("cyc:block_til_ready raising DTR\n"); | 2387 | printk("cyc:block_til_ready raising DTR\n"); |
2392 | printk(" status: 0x%x, 0x%x\n", | 2388 | printk(" status: 0x%x, 0x%x\n", |
2393 | cy_readb(base_addr + | 2389 | readb(base_addr + (CyMSVR1 << index)), |
2394 | (CyMSVR1 << index)), | 2390 | readb(base_addr + (CyMSVR2 << index))); |
2395 | cy_readb(base_addr + | ||
2396 | (CyMSVR2 << index))); | ||
2397 | #endif | 2391 | #endif |
2398 | } | 2392 | } |
2399 | CY_UNLOCK(info, flags); | 2393 | CY_UNLOCK(info, flags); |
@@ -2410,7 +2404,7 @@ block_til_ready(struct tty_struct *tty, struct file *filp, | |||
2410 | cy_writeb(base_addr + (CyCAR << index), | 2404 | cy_writeb(base_addr + (CyCAR << index), |
2411 | (u_char) channel); | 2405 | (u_char) channel); |
2412 | if (!(info->flags & ASYNC_CLOSING) && (C_CLOCAL(tty) || | 2406 | if (!(info->flags & ASYNC_CLOSING) && (C_CLOCAL(tty) || |
2413 | (cy_readb(base_addr + | 2407 | (readb(base_addr + |
2414 | (CyMSVR1 << index)) & CyDCD))) { | 2408 | (CyMSVR1 << index)) & CyDCD))) { |
2415 | CY_UNLOCK(info, flags); | 2409 | CY_UNLOCK(info, flags); |
2416 | break; | 2410 | break; |
@@ -2444,19 +2438,17 @@ block_til_ready(struct tty_struct *tty, struct file *filp, | |||
2444 | return -EINVAL; | 2438 | return -EINVAL; |
2445 | } | 2439 | } |
2446 | 2440 | ||
2447 | zfw_ctrl = base_addr + (cy_readl(&firm_id->zfwctrl_addr) & | 2441 | zfw_ctrl = base_addr + (readl(&firm_id->zfwctrl_addr)& 0xfffff); |
2448 | 0xfffff); | ||
2449 | board_ctrl = &zfw_ctrl->board_ctrl; | 2442 | board_ctrl = &zfw_ctrl->board_ctrl; |
2450 | ch_ctrl = zfw_ctrl->ch_ctrl; | 2443 | ch_ctrl = zfw_ctrl->ch_ctrl; |
2451 | 2444 | ||
2452 | while (1) { | 2445 | while (1) { |
2453 | if ((tty->termios->c_cflag & CBAUD)) { | 2446 | if ((tty->termios->c_cflag & CBAUD)) { |
2454 | cy_writel(&ch_ctrl[channel].rs_control, | 2447 | cy_writel(&ch_ctrl[channel].rs_control, |
2455 | cy_readl(&ch_ctrl[channel]. | 2448 | readl(&ch_ctrl[channel].rs_control) | |
2456 | rs_control) | (C_RS_RTS | | 2449 | C_RS_RTS | C_RS_DTR); |
2457 | C_RS_DTR)); | ||
2458 | retval = cyz_issue_cmd(&cy_card[info->card], | 2450 | retval = cyz_issue_cmd(&cy_card[info->card], |
2459 | channel, C_CM_IOCTLM, 0L); | 2451 | channel, C_CM_IOCTLM, 0L); |
2460 | if (retval != 0) { | 2452 | if (retval != 0) { |
2461 | printk("cyc:block_til_ready retval on " | 2453 | printk("cyc:block_til_ready retval on " |
2462 | "ttyC%d was %x\n", | 2454 | "ttyC%d was %x\n", |
@@ -2475,7 +2467,7 @@ block_til_ready(struct tty_struct *tty, struct file *filp, | |||
2475 | break; | 2467 | break; |
2476 | } | 2468 | } |
2477 | if (!(info->flags & ASYNC_CLOSING) && (C_CLOCAL(tty) || | 2469 | if (!(info->flags & ASYNC_CLOSING) && (C_CLOCAL(tty) || |
2478 | (cy_readl(&ch_ctrl[channel].rs_status) & | 2470 | (readl(&ch_ctrl[channel].rs_status) & |
2479 | C_RS_DCD))) { | 2471 | C_RS_DCD))) { |
2480 | break; | 2472 | break; |
2481 | } | 2473 | } |
@@ -2540,11 +2532,10 @@ static int cy_open(struct tty_struct *tty, struct file *filp) | |||
2540 | struct FIRM_ID __iomem *firm_id = cinfo->base_addr + ID_ADDRESS; | 2532 | struct FIRM_ID __iomem *firm_id = cinfo->base_addr + ID_ADDRESS; |
2541 | 2533 | ||
2542 | if (!ISZLOADED(*cinfo)) { | 2534 | if (!ISZLOADED(*cinfo)) { |
2543 | if (((ZE_V1 == cy_readl( | 2535 | if (((ZE_V1 == readl(&((struct RUNTIME_9060 __iomem *) |
2544 | &((struct RUNTIME_9060 __iomem *) | ||
2545 | (cinfo->ctl_addr))->mail_box_0)) && | 2536 | (cinfo->ctl_addr))->mail_box_0)) && |
2546 | Z_FPGA_CHECK(*cinfo)) && | 2537 | Z_FPGA_CHECK(*cinfo)) && |
2547 | (ZFIRM_HLT == cy_readl( | 2538 | (ZFIRM_HLT == readl( |
2548 | &firm_id->signature))) { | 2539 | &firm_id->signature))) { |
2549 | printk("cyc:Cyclades-Z Error: you need an " | 2540 | printk("cyc:Cyclades-Z Error: you need an " |
2550 | "external power supply for this number " | 2541 | "external power supply for this number " |
@@ -2565,15 +2556,14 @@ static int cy_open(struct tty_struct *tty, struct file *filp) | |||
2565 | struct BOARD_CTRL __iomem *board_ctrl; | 2556 | struct BOARD_CTRL __iomem *board_ctrl; |
2566 | 2557 | ||
2567 | zfw_ctrl = cinfo->base_addr + | 2558 | zfw_ctrl = cinfo->base_addr + |
2568 | (cy_readl(&firm_id->zfwctrl_addr) & | 2559 | (readl(&firm_id->zfwctrl_addr) & |
2569 | 0xfffff); | 2560 | 0xfffff); |
2570 | 2561 | ||
2571 | board_ctrl = &zfw_ctrl->board_ctrl; | 2562 | board_ctrl = &zfw_ctrl->board_ctrl; |
2572 | 2563 | ||
2573 | /* Enable interrupts on the PLX chip */ | 2564 | /* Enable interrupts on the PLX chip */ |
2574 | cy_writew(cinfo->ctl_addr + 0x68, | 2565 | cy_writew(cinfo->ctl_addr + 0x68, |
2575 | cy_readw(cinfo->ctl_addr + | 2566 | readw(cinfo->ctl_addr + 0x68) | 0x0900); |
2576 | 0x68) | 0x0900); | ||
2577 | /* Enable interrupts on the FW */ | 2567 | /* Enable interrupts on the FW */ |
2578 | retval = cyz_issue_cmd(cinfo, 0, | 2568 | retval = cyz_issue_cmd(cinfo, 0, |
2579 | C_CM_IRQ_ENBL, 0L); | 2569 | C_CM_IRQ_ENBL, 0L); |
@@ -2582,7 +2572,7 @@ static int cy_open(struct tty_struct *tty, struct file *filp) | |||
2582 | retval); | 2572 | retval); |
2583 | } | 2573 | } |
2584 | cinfo->nports = | 2574 | cinfo->nports = |
2585 | (int)cy_readl(&board_ctrl->n_channel); | 2575 | (int)readl(&board_ctrl->n_channel); |
2586 | cinfo->intr_enabled = 1; | 2576 | cinfo->intr_enabled = 1; |
2587 | } | 2577 | } |
2588 | } | 2578 | } |
@@ -2701,7 +2691,7 @@ static void cy_wait_until_sent(struct tty_struct *tty, int timeout) | |||
2701 | index = cy_card[card].bus_index; | 2691 | index = cy_card[card].bus_index; |
2702 | base_addr = | 2692 | base_addr = |
2703 | cy_card[card].base_addr + (cy_chip_offset[chip] << index); | 2693 | cy_card[card].base_addr + (cy_chip_offset[chip] << index); |
2704 | while (cy_readb(base_addr + (CySRER << index)) & CyTxRdy) { | 2694 | while (readb(base_addr + (CySRER << index)) & CyTxRdy) { |
2705 | #ifdef CY_DEBUG_WAIT_UNTIL_SENT | 2695 | #ifdef CY_DEBUG_WAIT_UNTIL_SENT |
2706 | printk("Not clean (jiff=%lu)...", jiffies); | 2696 | printk("Not clean (jiff=%lu)...", jiffies); |
2707 | #endif | 2697 | #endif |
@@ -2794,7 +2784,7 @@ static void cy_close(struct tty_struct *tty, struct file *filp) | |||
2794 | channel &= 0x03; | 2784 | channel &= 0x03; |
2795 | cy_writeb(base_addr + (CyCAR << index), (u_char) channel); | 2785 | cy_writeb(base_addr + (CyCAR << index), (u_char) channel); |
2796 | cy_writeb(base_addr + (CySRER << index), | 2786 | cy_writeb(base_addr + (CySRER << index), |
2797 | cy_readb(base_addr + (CySRER << index)) & ~CyRxData); | 2787 | readb(base_addr + (CySRER << index)) & ~CyRxData); |
2798 | if (info->flags & ASYNC_INITIALIZED) { | 2788 | if (info->flags & ASYNC_INITIALIZED) { |
2799 | /* Waiting for on-board buffers to be empty before closing | 2789 | /* Waiting for on-board buffers to be empty before closing |
2800 | the port */ | 2790 | the port */ |
@@ -2808,12 +2798,12 @@ static void cy_close(struct tty_struct *tty, struct file *filp) | |||
2808 | void __iomem *base_addr = cy_card[info->card].base_addr; | 2798 | void __iomem *base_addr = cy_card[info->card].base_addr; |
2809 | struct FIRM_ID __iomem *firm_id = base_addr + ID_ADDRESS; | 2799 | struct FIRM_ID __iomem *firm_id = base_addr + ID_ADDRESS; |
2810 | struct ZFW_CTRL __iomem *zfw_ctrl = | 2800 | struct ZFW_CTRL __iomem *zfw_ctrl = |
2811 | base_addr + (cy_readl(&firm_id->zfwctrl_addr) & 0xfffff); | 2801 | base_addr + (readl(&firm_id->zfwctrl_addr) & 0xfffff); |
2812 | struct CH_CTRL __iomem *ch_ctrl = zfw_ctrl->ch_ctrl; | 2802 | struct CH_CTRL __iomem *ch_ctrl = zfw_ctrl->ch_ctrl; |
2813 | int channel = info->line - cy_card[info->card].first_line; | 2803 | int channel = info->line - cy_card[info->card].first_line; |
2814 | int retval; | 2804 | int retval; |
2815 | 2805 | ||
2816 | if (cy_readl(&ch_ctrl[channel].flow_status) != C_FS_TXIDLE) { | 2806 | if (readl(&ch_ctrl[channel].flow_status) != C_FS_TXIDLE) { |
2817 | retval = cyz_issue_cmd(&cy_card[info->card], channel, | 2807 | retval = cyz_issue_cmd(&cy_card[info->card], channel, |
2818 | C_CM_IOCTLW, 0L); | 2808 | C_CM_IOCTLW, 0L); |
2819 | if (retval != 0) { | 2809 | if (retval != 0) { |
@@ -3023,13 +3013,13 @@ static int cy_chars_in_buffer(struct tty_struct *tty) | |||
3023 | 3013 | ||
3024 | firm_id = cy_card[card].base_addr + ID_ADDRESS; | 3014 | firm_id = cy_card[card].base_addr + ID_ADDRESS; |
3025 | zfw_ctrl = cy_card[card].base_addr + | 3015 | zfw_ctrl = cy_card[card].base_addr + |
3026 | (cy_readl(&firm_id->zfwctrl_addr) & 0xfffff); | 3016 | (readl(&firm_id->zfwctrl_addr) & 0xfffff); |
3027 | ch_ctrl = &(zfw_ctrl->ch_ctrl[channel]); | 3017 | ch_ctrl = &(zfw_ctrl->ch_ctrl[channel]); |
3028 | buf_ctrl = &(zfw_ctrl->buf_ctrl[channel]); | 3018 | buf_ctrl = &(zfw_ctrl->buf_ctrl[channel]); |
3029 | 3019 | ||
3030 | tx_get = cy_readl(&buf_ctrl->tx_get); | 3020 | tx_get = readl(&buf_ctrl->tx_get); |
3031 | tx_put = cy_readl(&buf_ctrl->tx_put); | 3021 | tx_put = readl(&buf_ctrl->tx_put); |
3032 | tx_bufsize = cy_readl(&buf_ctrl->tx_bufsize); | 3022 | tx_bufsize = readl(&buf_ctrl->tx_bufsize); |
3033 | if (tx_put >= tx_get) | 3023 | if (tx_put >= tx_get) |
3034 | char_count = tx_put - tx_get; | 3024 | char_count = tx_put - tx_get; |
3035 | else | 3025 | else |
@@ -3269,8 +3259,7 @@ static void set_line_char(struct cyclades_port *info) | |||
3269 | if (C_CLOCAL(info->tty)) { | 3259 | if (C_CLOCAL(info->tty)) { |
3270 | /* without modem intr */ | 3260 | /* without modem intr */ |
3271 | cy_writeb(base_addr + (CySRER << index), | 3261 | cy_writeb(base_addr + (CySRER << index), |
3272 | cy_readb(base_addr + | 3262 | readb(base_addr + (CySRER << index)) | CyMdmCh); |
3273 | (CySRER << index)) | CyMdmCh); | ||
3274 | /* act on 1->0 modem transitions */ | 3263 | /* act on 1->0 modem transitions */ |
3275 | if ((cflag & CRTSCTS) && info->rflow) { | 3264 | if ((cflag & CRTSCTS) && info->rflow) { |
3276 | cy_writeb(base_addr + (CyMCOR1 << index), | 3265 | cy_writeb(base_addr + (CyMCOR1 << index), |
@@ -3284,7 +3273,7 @@ static void set_line_char(struct cyclades_port *info) | |||
3284 | } else { | 3273 | } else { |
3285 | /* without modem intr */ | 3274 | /* without modem intr */ |
3286 | cy_writeb(base_addr + (CySRER << index), | 3275 | cy_writeb(base_addr + (CySRER << index), |
3287 | cy_readb(base_addr + | 3276 | readb(base_addr + |
3288 | (CySRER << index)) | CyMdmCh); | 3277 | (CySRER << index)) | CyMdmCh); |
3289 | /* act on 1->0 modem transitions */ | 3278 | /* act on 1->0 modem transitions */ |
3290 | if ((cflag & CRTSCTS) && info->rflow) { | 3279 | if ((cflag & CRTSCTS) && info->rflow) { |
@@ -3311,8 +3300,8 @@ static void set_line_char(struct cyclades_port *info) | |||
3311 | #ifdef CY_DEBUG_DTR | 3300 | #ifdef CY_DEBUG_DTR |
3312 | printk("cyc:set_line_char dropping DTR\n"); | 3301 | printk("cyc:set_line_char dropping DTR\n"); |
3313 | printk(" status: 0x%x, 0x%x\n", | 3302 | printk(" status: 0x%x, 0x%x\n", |
3314 | cy_readb(base_addr + (CyMSVR1 << index)), | 3303 | readb(base_addr + (CyMSVR1 << index)), |
3315 | cy_readb(base_addr + (CyMSVR2 << index))); | 3304 | readb(base_addr + (CyMSVR2 << index))); |
3316 | #endif | 3305 | #endif |
3317 | } else { | 3306 | } else { |
3318 | if (info->rtsdtr_inv) { | 3307 | if (info->rtsdtr_inv) { |
@@ -3325,8 +3314,8 @@ static void set_line_char(struct cyclades_port *info) | |||
3325 | #ifdef CY_DEBUG_DTR | 3314 | #ifdef CY_DEBUG_DTR |
3326 | printk("cyc:set_line_char raising DTR\n"); | 3315 | printk("cyc:set_line_char raising DTR\n"); |
3327 | printk(" status: 0x%x, 0x%x\n", | 3316 | printk(" status: 0x%x, 0x%x\n", |
3328 | cy_readb(base_addr + (CyMSVR1 << index)), | 3317 | readb(base_addr + (CyMSVR1 << index)), |
3329 | cy_readb(base_addr + (CyMSVR2 << index))); | 3318 | readb(base_addr + (CyMSVR2 << index))); |
3330 | #endif | 3319 | #endif |
3331 | } | 3320 | } |
3332 | 3321 | ||
@@ -3350,7 +3339,7 @@ static void set_line_char(struct cyclades_port *info) | |||
3350 | } | 3339 | } |
3351 | 3340 | ||
3352 | zfw_ctrl = cy_card[card].base_addr + | 3341 | zfw_ctrl = cy_card[card].base_addr + |
3353 | (cy_readl(&firm_id->zfwctrl_addr) & 0xfffff); | 3342 | (readl(&firm_id->zfwctrl_addr) & 0xfffff); |
3354 | board_ctrl = &zfw_ctrl->board_ctrl; | 3343 | board_ctrl = &zfw_ctrl->board_ctrl; |
3355 | ch_ctrl = &(zfw_ctrl->ch_ctrl[channel]); | 3344 | ch_ctrl = &(zfw_ctrl->ch_ctrl[channel]); |
3356 | buf_ctrl = &zfw_ctrl->buf_ctrl[channel]; | 3345 | buf_ctrl = &zfw_ctrl->buf_ctrl[channel]; |
@@ -3401,10 +3390,10 @@ static void set_line_char(struct cyclades_port *info) | |||
3401 | } | 3390 | } |
3402 | if (cflag & CSTOPB) { | 3391 | if (cflag & CSTOPB) { |
3403 | cy_writel(&ch_ctrl->comm_data_l, | 3392 | cy_writel(&ch_ctrl->comm_data_l, |
3404 | cy_readl(&ch_ctrl->comm_data_l) | C_DL_2STOP); | 3393 | readl(&ch_ctrl->comm_data_l) | C_DL_2STOP); |
3405 | } else { | 3394 | } else { |
3406 | cy_writel(&ch_ctrl->comm_data_l, | 3395 | cy_writel(&ch_ctrl->comm_data_l, |
3407 | cy_readl(&ch_ctrl->comm_data_l) | C_DL_1STOP); | 3396 | readl(&ch_ctrl->comm_data_l) | C_DL_1STOP); |
3408 | } | 3397 | } |
3409 | if (cflag & PARENB) { | 3398 | if (cflag & PARENB) { |
3410 | if (cflag & PARODD) { | 3399 | if (cflag & PARODD) { |
@@ -3419,12 +3408,10 @@ static void set_line_char(struct cyclades_port *info) | |||
3419 | /* CTS flow control flag */ | 3408 | /* CTS flow control flag */ |
3420 | if (cflag & CRTSCTS) { | 3409 | if (cflag & CRTSCTS) { |
3421 | cy_writel(&ch_ctrl->hw_flow, | 3410 | cy_writel(&ch_ctrl->hw_flow, |
3422 | cy_readl(&ch_ctrl-> | 3411 | readl(&ch_ctrl->hw_flow) | C_RS_CTS | C_RS_RTS); |
3423 | hw_flow) | C_RS_CTS | C_RS_RTS); | ||
3424 | } else { | 3412 | } else { |
3425 | cy_writel(&ch_ctrl->hw_flow, | 3413 | cy_writel(&ch_ctrl->hw_flow, readl(&ch_ctrl->hw_flow) & |
3426 | cy_readl(&ch_ctrl-> | 3414 | ~(C_RS_CTS | C_RS_RTS)); |
3427 | hw_flow) & ~(C_RS_CTS | C_RS_RTS)); | ||
3428 | } | 3415 | } |
3429 | /* As the HW flow control is done in firmware, the driver | 3416 | /* As the HW flow control is done in firmware, the driver |
3430 | doesn't need to care about it */ | 3417 | doesn't need to care about it */ |
@@ -3454,13 +3441,13 @@ static void set_line_char(struct cyclades_port *info) | |||
3454 | 3441 | ||
3455 | if (baud == 0) { /* baud rate is zero, turn off line */ | 3442 | if (baud == 0) { /* baud rate is zero, turn off line */ |
3456 | cy_writel(&ch_ctrl->rs_control, | 3443 | cy_writel(&ch_ctrl->rs_control, |
3457 | cy_readl(&ch_ctrl->rs_control) & ~C_RS_DTR); | 3444 | readl(&ch_ctrl->rs_control) & ~C_RS_DTR); |
3458 | #ifdef CY_DEBUG_DTR | 3445 | #ifdef CY_DEBUG_DTR |
3459 | printk("cyc:set_line_char dropping Z DTR\n"); | 3446 | printk("cyc:set_line_char dropping Z DTR\n"); |
3460 | #endif | 3447 | #endif |
3461 | } else { | 3448 | } else { |
3462 | cy_writel(&ch_ctrl->rs_control, | 3449 | cy_writel(&ch_ctrl->rs_control, |
3463 | cy_readl(&ch_ctrl->rs_control) | C_RS_DTR); | 3450 | readl(&ch_ctrl->rs_control) | C_RS_DTR); |
3464 | #ifdef CY_DEBUG_DTR | 3451 | #ifdef CY_DEBUG_DTR |
3465 | printk("cyc:set_line_char raising Z DTR\n"); | 3452 | printk("cyc:set_line_char raising Z DTR\n"); |
3466 | #endif | 3453 | #endif |
@@ -3575,7 +3562,7 @@ static int get_lsr_info(struct cyclades_port *info, unsigned int __user * value) | |||
3575 | cy_card[card].base_addr + (cy_chip_offset[chip] << index); | 3562 | cy_card[card].base_addr + (cy_chip_offset[chip] << index); |
3576 | 3563 | ||
3577 | CY_LOCK(info, flags); | 3564 | CY_LOCK(info, flags); |
3578 | status = cy_readb(base_addr + (CySRER << index)) & | 3565 | status = readb(base_addr + (CySRER << index)) & |
3579 | (CyTxRdy | CyTxMpty); | 3566 | (CyTxRdy | CyTxMpty); |
3580 | CY_UNLOCK(info, flags); | 3567 | CY_UNLOCK(info, flags); |
3581 | result = (status ? 0 : TIOCSER_TEMT); | 3568 | result = (status ? 0 : TIOCSER_TEMT); |
@@ -3614,8 +3601,8 @@ static int cy_tiocmget(struct tty_struct *tty, struct file *file) | |||
3614 | 3601 | ||
3615 | CY_LOCK(info, flags); | 3602 | CY_LOCK(info, flags); |
3616 | cy_writeb(base_addr + (CyCAR << index), (u_char) channel); | 3603 | cy_writeb(base_addr + (CyCAR << index), (u_char) channel); |
3617 | status = cy_readb(base_addr + (CyMSVR1 << index)); | 3604 | status = readb(base_addr + (CyMSVR1 << index)); |
3618 | status |= cy_readb(base_addr + (CyMSVR2 << index)); | 3605 | status |= readb(base_addr + (CyMSVR2 << index)); |
3619 | CY_UNLOCK(info, flags); | 3606 | CY_UNLOCK(info, flags); |
3620 | 3607 | ||
3621 | if (info->rtsdtr_inv) { | 3608 | if (info->rtsdtr_inv) { |
@@ -3639,10 +3626,10 @@ static int cy_tiocmget(struct tty_struct *tty, struct file *file) | |||
3639 | firm_id = cy_card[card].base_addr + ID_ADDRESS; | 3626 | firm_id = cy_card[card].base_addr + ID_ADDRESS; |
3640 | if (ISZLOADED(cy_card[card])) { | 3627 | if (ISZLOADED(cy_card[card])) { |
3641 | zfw_ctrl = cy_card[card].base_addr + | 3628 | zfw_ctrl = cy_card[card].base_addr + |
3642 | (cy_readl(&firm_id->zfwctrl_addr) & 0xfffff); | 3629 | (readl(&firm_id->zfwctrl_addr) & 0xfffff); |
3643 | board_ctrl = &zfw_ctrl->board_ctrl; | 3630 | board_ctrl = &zfw_ctrl->board_ctrl; |
3644 | ch_ctrl = zfw_ctrl->ch_ctrl; | 3631 | ch_ctrl = zfw_ctrl->ch_ctrl; |
3645 | lstatus = cy_readl(&ch_ctrl[channel].rs_status); | 3632 | lstatus = readl(&ch_ctrl[channel].rs_status); |
3646 | result = ((lstatus & C_RS_RTS) ? TIOCM_RTS : 0) | | 3633 | result = ((lstatus & C_RS_RTS) ? TIOCM_RTS : 0) | |
3647 | ((lstatus & C_RS_DTR) ? TIOCM_DTR : 0) | | 3634 | ((lstatus & C_RS_DTR) ? TIOCM_DTR : 0) | |
3648 | ((lstatus & C_RS_DCD) ? TIOCM_CAR : 0) | | 3635 | ((lstatus & C_RS_DCD) ? TIOCM_CAR : 0) | |
@@ -3724,8 +3711,8 @@ cy_tiocmset(struct tty_struct *tty, struct file *file, | |||
3724 | #ifdef CY_DEBUG_DTR | 3711 | #ifdef CY_DEBUG_DTR |
3725 | printk("cyc:set_modem_info raising DTR\n"); | 3712 | printk("cyc:set_modem_info raising DTR\n"); |
3726 | printk(" status: 0x%x, 0x%x\n", | 3713 | printk(" status: 0x%x, 0x%x\n", |
3727 | cy_readb(base_addr + (CyMSVR1 << index)), | 3714 | readb(base_addr + (CyMSVR1 << index)), |
3728 | cy_readb(base_addr + (CyMSVR2 << index))); | 3715 | readb(base_addr + (CyMSVR2 << index))); |
3729 | #endif | 3716 | #endif |
3730 | CY_UNLOCK(info, flags); | 3717 | CY_UNLOCK(info, flags); |
3731 | } | 3718 | } |
@@ -3744,8 +3731,8 @@ cy_tiocmset(struct tty_struct *tty, struct file *file, | |||
3744 | #ifdef CY_DEBUG_DTR | 3731 | #ifdef CY_DEBUG_DTR |
3745 | printk("cyc:set_modem_info dropping DTR\n"); | 3732 | printk("cyc:set_modem_info dropping DTR\n"); |
3746 | printk(" status: 0x%x, 0x%x\n", | 3733 | printk(" status: 0x%x, 0x%x\n", |
3747 | cy_readb(base_addr + (CyMSVR1 << index)), | 3734 | readb(base_addr + (CyMSVR1 << index)), |
3748 | cy_readb(base_addr + (CyMSVR2 << index))); | 3735 | readb(base_addr + (CyMSVR2 << index))); |
3749 | #endif | 3736 | #endif |
3750 | CY_UNLOCK(info, flags); | 3737 | CY_UNLOCK(info, flags); |
3751 | } | 3738 | } |
@@ -3755,29 +3742,29 @@ cy_tiocmset(struct tty_struct *tty, struct file *file, | |||
3755 | firm_id = cy_card[card].base_addr + ID_ADDRESS; | 3742 | firm_id = cy_card[card].base_addr + ID_ADDRESS; |
3756 | if (ISZLOADED(cy_card[card])) { | 3743 | if (ISZLOADED(cy_card[card])) { |
3757 | zfw_ctrl = cy_card[card].base_addr + | 3744 | zfw_ctrl = cy_card[card].base_addr + |
3758 | (cy_readl(&firm_id->zfwctrl_addr) & 0xfffff); | 3745 | (readl(&firm_id->zfwctrl_addr) & 0xfffff); |
3759 | board_ctrl = &zfw_ctrl->board_ctrl; | 3746 | board_ctrl = &zfw_ctrl->board_ctrl; |
3760 | ch_ctrl = zfw_ctrl->ch_ctrl; | 3747 | ch_ctrl = zfw_ctrl->ch_ctrl; |
3761 | 3748 | ||
3762 | if (set & TIOCM_RTS) { | 3749 | if (set & TIOCM_RTS) { |
3763 | CY_LOCK(info, flags); | 3750 | CY_LOCK(info, flags); |
3764 | cy_writel(&ch_ctrl[channel].rs_control, | 3751 | cy_writel(&ch_ctrl[channel].rs_control, |
3765 | cy_readl(&ch_ctrl[channel]. | 3752 | readl(&ch_ctrl[channel].rs_control) | |
3766 | rs_control) | C_RS_RTS); | 3753 | C_RS_RTS); |
3767 | CY_UNLOCK(info, flags); | 3754 | CY_UNLOCK(info, flags); |
3768 | } | 3755 | } |
3769 | if (clear & TIOCM_RTS) { | 3756 | if (clear & TIOCM_RTS) { |
3770 | CY_LOCK(info, flags); | 3757 | CY_LOCK(info, flags); |
3771 | cy_writel(&ch_ctrl[channel].rs_control, | 3758 | cy_writel(&ch_ctrl[channel].rs_control, |
3772 | cy_readl(&ch_ctrl[channel]. | 3759 | readl(&ch_ctrl[channel].rs_control) & |
3773 | rs_control) & ~C_RS_RTS); | 3760 | ~C_RS_RTS); |
3774 | CY_UNLOCK(info, flags); | 3761 | CY_UNLOCK(info, flags); |
3775 | } | 3762 | } |
3776 | if (set & TIOCM_DTR) { | 3763 | if (set & TIOCM_DTR) { |
3777 | CY_LOCK(info, flags); | 3764 | CY_LOCK(info, flags); |
3778 | cy_writel(&ch_ctrl[channel].rs_control, | 3765 | cy_writel(&ch_ctrl[channel].rs_control, |
3779 | cy_readl(&ch_ctrl[channel]. | 3766 | readl(&ch_ctrl[channel].rs_control) | |
3780 | rs_control) | C_RS_DTR); | 3767 | C_RS_DTR); |
3781 | #ifdef CY_DEBUG_DTR | 3768 | #ifdef CY_DEBUG_DTR |
3782 | printk("cyc:set_modem_info raising Z DTR\n"); | 3769 | printk("cyc:set_modem_info raising Z DTR\n"); |
3783 | #endif | 3770 | #endif |
@@ -3786,8 +3773,8 @@ cy_tiocmset(struct tty_struct *tty, struct file *file, | |||
3786 | if (clear & TIOCM_DTR) { | 3773 | if (clear & TIOCM_DTR) { |
3787 | CY_LOCK(info, flags); | 3774 | CY_LOCK(info, flags); |
3788 | cy_writel(&ch_ctrl[channel].rs_control, | 3775 | cy_writel(&ch_ctrl[channel].rs_control, |
3789 | cy_readl(&ch_ctrl[channel]. | 3776 | readl(&ch_ctrl[channel].rs_control) & |
3790 | rs_control) & ~C_RS_DTR); | 3777 | ~C_RS_DTR); |
3791 | #ifdef CY_DEBUG_DTR | 3778 | #ifdef CY_DEBUG_DTR |
3792 | printk("cyc:set_modem_info clearing Z DTR\n"); | 3779 | printk("cyc:set_modem_info clearing Z DTR\n"); |
3793 | #endif | 3780 | #endif |
@@ -3924,7 +3911,7 @@ get_threshold(struct cyclades_port *info, unsigned long __user * value) | |||
3924 | base_addr = | 3911 | base_addr = |
3925 | cy_card[card].base_addr + (cy_chip_offset[chip] << index); | 3912 | cy_card[card].base_addr + (cy_chip_offset[chip] << index); |
3926 | 3913 | ||
3927 | tmp = cy_readb(base_addr + (CyCOR3 << index)) & CyREC_FIFO; | 3914 | tmp = readb(base_addr + (CyCOR3 << index)) & CyREC_FIFO; |
3928 | return put_user(tmp, value); | 3915 | return put_user(tmp, value); |
3929 | } else { | 3916 | } else { |
3930 | /* Nothing to do! */ | 3917 | /* Nothing to do! */ |
@@ -3984,7 +3971,7 @@ static int get_timeout(struct cyclades_port *info, unsigned long __user * value) | |||
3984 | base_addr = | 3971 | base_addr = |
3985 | cy_card[card].base_addr + (cy_chip_offset[chip] << index); | 3972 | cy_card[card].base_addr + (cy_chip_offset[chip] << index); |
3986 | 3973 | ||
3987 | tmp = cy_readb(base_addr + (CyRTPR << index)); | 3974 | tmp = readb(base_addr + (CyRTPR << index)); |
3988 | return put_user(tmp, value); | 3975 | return put_user(tmp, value); |
3989 | } else { | 3976 | } else { |
3990 | /* Nothing to do! */ | 3977 | /* Nothing to do! */ |
@@ -4410,7 +4397,7 @@ static void cy_stop(struct tty_struct *tty) | |||
4410 | cy_writeb(base_addr + (CyCAR << index), | 4397 | cy_writeb(base_addr + (CyCAR << index), |
4411 | (u_char)(channel & 0x0003)); /* index channel */ | 4398 | (u_char)(channel & 0x0003)); /* index channel */ |
4412 | cy_writeb(base_addr + (CySRER << index), | 4399 | cy_writeb(base_addr + (CySRER << index), |
4413 | cy_readb(base_addr + (CySRER << index)) & ~CyTxRdy); | 4400 | readb(base_addr + (CySRER << index)) & ~CyTxRdy); |
4414 | CY_UNLOCK(info, flags); | 4401 | CY_UNLOCK(info, flags); |
4415 | } else { | 4402 | } else { |
4416 | /* Nothing to do! */ | 4403 | /* Nothing to do! */ |
@@ -4444,7 +4431,7 @@ static void cy_start(struct tty_struct *tty) | |||
4444 | CY_LOCK(info, flags); | 4431 | CY_LOCK(info, flags); |
4445 | cy_writeb(base_addr + (CyCAR << index), (u_char) (channel & 0x0003)); /* index channel */ | 4432 | cy_writeb(base_addr + (CyCAR << index), (u_char) (channel & 0x0003)); /* index channel */ |
4446 | cy_writeb(base_addr + (CySRER << index), | 4433 | cy_writeb(base_addr + (CySRER << index), |
4447 | cy_readb(base_addr + (CySRER << index)) | CyTxRdy); | 4434 | readb(base_addr + (CySRER << index)) | CyTxRdy); |
4448 | CY_UNLOCK(info, flags); | 4435 | CY_UNLOCK(info, flags); |
4449 | } else { | 4436 | } else { |
4450 | /* Nothing to do! */ | 4437 | /* Nothing to do! */ |
@@ -4537,7 +4524,7 @@ cyy_init_card(void __iomem * true_base_addr, int index) | |||
4537 | base_addr = | 4524 | base_addr = |
4538 | true_base_addr + (cy_chip_offset[chip_number] << index); | 4525 | true_base_addr + (cy_chip_offset[chip_number] << index); |
4539 | mdelay(1); | 4526 | mdelay(1); |
4540 | if (cy_readb(base_addr + (CyCCR << index)) != 0x00) { | 4527 | if (readb(base_addr + (CyCCR << index)) != 0x00) { |
4541 | /************* | 4528 | /************* |
4542 | printk(" chip #%d at %#6lx is never idle (CCR != 0)\n", | 4529 | printk(" chip #%d at %#6lx is never idle (CCR != 0)\n", |
4543 | chip_number, (unsigned long)base_addr); | 4530 | chip_number, (unsigned long)base_addr); |
@@ -4554,7 +4541,7 @@ cyy_init_card(void __iomem * true_base_addr, int index) | |||
4554 | chip 4 GFRCR register appears at chip 0, there is no chip 4 | 4541 | chip 4 GFRCR register appears at chip 0, there is no chip 4 |
4555 | and this must be a Cyclom-16Y, not a Cyclom-32Ye. | 4542 | and this must be a Cyclom-16Y, not a Cyclom-32Ye. |
4556 | */ | 4543 | */ |
4557 | if (chip_number == 4 && cy_readb(true_base_addr + | 4544 | if (chip_number == 4 && readb(true_base_addr + |
4558 | (cy_chip_offset[0] << index) + | 4545 | (cy_chip_offset[0] << index) + |
4559 | (CyGFRCR << index)) == 0) { | 4546 | (CyGFRCR << index)) == 0) { |
4560 | return chip_number; | 4547 | return chip_number; |
@@ -4563,7 +4550,7 @@ cyy_init_card(void __iomem * true_base_addr, int index) | |||
4563 | cy_writeb(base_addr + (CyCCR << index), CyCHIP_RESET); | 4550 | cy_writeb(base_addr + (CyCCR << index), CyCHIP_RESET); |
4564 | mdelay(1); | 4551 | mdelay(1); |
4565 | 4552 | ||
4566 | if (cy_readb(base_addr + (CyGFRCR << index)) == 0x00) { | 4553 | if (readb(base_addr + (CyGFRCR << index)) == 0x00) { |
4567 | /* | 4554 | /* |
4568 | printk(" chip #%d at %#6lx is not responding ", | 4555 | printk(" chip #%d at %#6lx is not responding ", |
4569 | chip_number, (unsigned long)base_addr); | 4556 | chip_number, (unsigned long)base_addr); |
@@ -4571,7 +4558,7 @@ cyy_init_card(void __iomem * true_base_addr, int index) | |||
4571 | */ | 4558 | */ |
4572 | return chip_number; | 4559 | return chip_number; |
4573 | } | 4560 | } |
4574 | if ((0xf0 & (cy_readb(base_addr + (CyGFRCR << index)))) != | 4561 | if ((0xf0 & (readb(base_addr + (CyGFRCR << index)))) != |
4575 | 0x40) { | 4562 | 0x40) { |
4576 | /* | 4563 | /* |
4577 | printk(" chip #%d at %#6lx is not valid (GFRCR == " | 4564 | printk(" chip #%d at %#6lx is not valid (GFRCR == " |
@@ -4582,7 +4569,7 @@ cyy_init_card(void __iomem * true_base_addr, int index) | |||
4582 | return chip_number; | 4569 | return chip_number; |
4583 | } | 4570 | } |
4584 | cy_writeb(base_addr + (CyGCR << index), CyCH0_SERIAL); | 4571 | cy_writeb(base_addr + (CyGCR << index), CyCH0_SERIAL); |
4585 | if (cy_readb(base_addr + (CyGFRCR << index)) >= CD1400_REV_J) { | 4572 | if (readb(base_addr + (CyGFRCR << index)) >= CD1400_REV_J) { |
4586 | /* It is a CD1400 rev. J or later */ | 4573 | /* It is a CD1400 rev. J or later */ |
4587 | /* Impossible to reach 5ms with this chip. | 4574 | /* Impossible to reach 5ms with this chip. |
4588 | Changed to 2ms instead (f = 500 Hz). */ | 4575 | Changed to 2ms instead (f = 500 Hz). */ |
@@ -4595,7 +4582,7 @@ cyy_init_card(void __iomem * true_base_addr, int index) | |||
4595 | /* | 4582 | /* |
4596 | printk(" chip #%d at %#6lx is rev 0x%2x\n", | 4583 | printk(" chip #%d at %#6lx is rev 0x%2x\n", |
4597 | chip_number, (unsigned long)base_addr, | 4584 | chip_number, (unsigned long)base_addr, |
4598 | cy_readb(base_addr+(CyGFRCR<<index))); | 4585 | readb(base_addr+(CyGFRCR<<index))); |
4599 | */ | 4586 | */ |
4600 | } | 4587 | } |
4601 | return chip_number; | 4588 | return chip_number; |
@@ -4717,14 +4704,14 @@ static int __init cy_detect_isa(void) | |||
4717 | static void plx_init(void __iomem * addr, __u32 initctl) | 4704 | static void plx_init(void __iomem * addr, __u32 initctl) |
4718 | { | 4705 | { |
4719 | /* Reset PLX */ | 4706 | /* Reset PLX */ |
4720 | cy_writel(addr + initctl, cy_readl(addr + initctl) | 0x40000000); | 4707 | cy_writel(addr + initctl, readl(addr + initctl) | 0x40000000); |
4721 | udelay(100L); | 4708 | udelay(100L); |
4722 | cy_writel(addr + initctl, cy_readl(addr + initctl) & ~0x40000000); | 4709 | cy_writel(addr + initctl, readl(addr + initctl) & ~0x40000000); |
4723 | 4710 | ||
4724 | /* Reload Config. Registers from EEPROM */ | 4711 | /* Reload Config. Registers from EEPROM */ |
4725 | cy_writel(addr + initctl, cy_readl(addr + initctl) | 0x20000000); | 4712 | cy_writel(addr + initctl, readl(addr + initctl) | 0x20000000); |
4726 | udelay(100L); | 4713 | udelay(100L); |
4727 | cy_writel(addr + initctl, cy_readl(addr + initctl) & ~0x20000000); | 4714 | cy_writel(addr + initctl, readl(addr + initctl) & ~0x20000000); |
4728 | } | 4715 | } |
4729 | 4716 | ||
4730 | /* | 4717 | /* |
@@ -4879,7 +4866,7 @@ static int __init cy_detect_pci(void) | |||
4879 | cy_card[j].pdev = pdev; | 4866 | cy_card[j].pdev = pdev; |
4880 | 4867 | ||
4881 | /* enable interrupts in the PCI interface */ | 4868 | /* enable interrupts in the PCI interface */ |
4882 | plx_ver = cy_readb(cy_pci_addr2 + CyPLX_VER) & 0x0f; | 4869 | plx_ver = readb(cy_pci_addr2 + CyPLX_VER) & 0x0f; |
4883 | switch (plx_ver) { | 4870 | switch (plx_ver) { |
4884 | case PLX_9050: | 4871 | case PLX_9050: |
4885 | 4872 | ||
@@ -4900,8 +4887,7 @@ static int __init cy_detect_pci(void) | |||
4900 | cy_pci_irq); | 4887 | cy_pci_irq); |
4901 | 4888 | ||
4902 | cy_writew(cy_pci_addr0 + 0x68, | 4889 | cy_writew(cy_pci_addr0 + 0x68, |
4903 | cy_readw(cy_pci_addr0 + | 4890 | readw(cy_pci_addr0 + 0x68) | 0x0900); |
4904 | 0x68) | 0x0900); | ||
4905 | break; | 4891 | break; |
4906 | } | 4892 | } |
4907 | 4893 | ||
@@ -4940,7 +4926,7 @@ static int __init cy_detect_pci(void) | |||
4940 | 4926 | ||
4941 | /* Disable interrupts on the PLX before resetting it */ | 4927 | /* Disable interrupts on the PLX before resetting it */ |
4942 | cy_writew(cy_pci_addr0 + 0x68, | 4928 | cy_writew(cy_pci_addr0 + 0x68, |
4943 | cy_readw(cy_pci_addr0 + 0x68) & ~0x0900); | 4929 | readw(cy_pci_addr0 + 0x68) & ~0x0900); |
4944 | 4930 | ||
4945 | plx_init(cy_pci_addr0, 0x6c); | 4931 | plx_init(cy_pci_addr0, 0x6c); |
4946 | /* For some yet unknown reason, once the PLX9060 reloads | 4932 | /* For some yet unknown reason, once the PLX9060 reloads |
@@ -4951,9 +4937,8 @@ static int __init cy_detect_pci(void) | |||
4951 | pci_write_config_byte(pdev, PCI_INTERRUPT_LINE, | 4937 | pci_write_config_byte(pdev, PCI_INTERRUPT_LINE, |
4952 | cy_pci_irq); | 4938 | cy_pci_irq); |
4953 | 4939 | ||
4954 | mailbox = | 4940 | mailbox = (__u32)readl(&((struct RUNTIME_9060 __iomem *) |
4955 | (__u32)cy_readl(&((struct RUNTIME_9060 __iomem *) | 4941 | cy_pci_addr0)->mail_box_0); |
4956 | cy_pci_addr0)->mail_box_0); | ||
4957 | 4942 | ||
4958 | if (pci_resource_flags(pdev, 2) & IORESOURCE_IO) { | 4943 | if (pci_resource_flags(pdev, 2) & IORESOURCE_IO) { |
4959 | printk(" Warning: PCI I/O bit incorrectly " | 4944 | printk(" Warning: PCI I/O bit incorrectly " |
@@ -5005,10 +4990,10 @@ static int __init cy_detect_pci(void) | |||
5005 | WIN_CREG); | 4990 | WIN_CREG); |
5006 | printk("Cyclades-8Zo/PCI: FPGA id %lx, ver " | 4991 | printk("Cyclades-8Zo/PCI: FPGA id %lx, ver " |
5007 | "%lx\n", (ulong) (0xff & | 4992 | "%lx\n", (ulong) (0xff & |
5008 | cy_readl(&((struct CUSTOM_REG *) | 4993 | readl(&((struct CUSTOM_REG *) |
5009 | (cy_pci_addr2))->fpga_id)), | 4994 | (cy_pci_addr2))->fpga_id)), |
5010 | (ulong)(0xff & | 4995 | (ulong)(0xff & |
5011 | cy_readl(&((struct CUSTOM_REG *) | 4996 | readl(&((struct CUSTOM_REG *) |
5012 | (cy_pci_addr2))-> | 4997 | (cy_pci_addr2))-> |
5013 | fpga_version))); | 4998 | fpga_version))); |
5014 | cy_writel(&((struct RUNTIME_9060 *) | 4999 | cy_writel(&((struct RUNTIME_9060 *) |
@@ -5113,7 +5098,7 @@ static int __init cy_detect_pci(void) | |||
5113 | Ze_pdev[j] = Ze_pdev[j + 1]; | 5098 | Ze_pdev[j] = Ze_pdev[j + 1]; |
5114 | } | 5099 | } |
5115 | ZeIndex--; | 5100 | ZeIndex--; |
5116 | mailbox = (__u32)cy_readl(&((struct RUNTIME_9060 __iomem *) | 5101 | mailbox = (__u32)readl(&((struct RUNTIME_9060 __iomem *) |
5117 | cy_pci_addr0)->mail_box_0); | 5102 | cy_pci_addr0)->mail_box_0); |
5118 | #ifdef CY_PCI_DEBUG | 5103 | #ifdef CY_PCI_DEBUG |
5119 | printk("Cyclades-Z/PCI: relocate winaddr=0x%lx ctladdr=0x%lx\n", | 5104 | printk("Cyclades-Z/PCI: relocate winaddr=0x%lx ctladdr=0x%lx\n", |
@@ -5382,7 +5367,7 @@ static int __init cy_init(void) | |||
5382 | cinfo = &cy_card[board]; | 5367 | cinfo = &cy_card[board]; |
5383 | if (cinfo->num_chips == -1) { /* Cyclades-Z */ | 5368 | if (cinfo->num_chips == -1) { /* Cyclades-Z */ |
5384 | number_z_boards++; | 5369 | number_z_boards++; |
5385 | mailbox = cy_readl(&((struct RUNTIME_9060 __iomem *) | 5370 | mailbox = readl(&((struct RUNTIME_9060 __iomem *) |
5386 | cy_card[board].ctl_addr)-> | 5371 | cy_card[board].ctl_addr)-> |
5387 | mail_box_0); | 5372 | mail_box_0); |
5388 | nports = (mailbox == ZE_V1) ? ZE_V1_NPORTS : 8; | 5373 | nports = (mailbox == ZE_V1) ? ZE_V1_NPORTS : 8; |
@@ -5478,7 +5463,7 @@ static int __init cy_init(void) | |||
5478 | info->icount.overrun = info->icount.brk = 0; | 5463 | info->icount.overrun = info->icount.brk = 0; |
5479 | chip_number = (port - cinfo->first_line) / 4; | 5464 | chip_number = (port - cinfo->first_line) / 4; |
5480 | if ((info->chip_rev = | 5465 | if ((info->chip_rev = |
5481 | cy_readb(cinfo->base_addr + | 5466 | readb(cinfo->base_addr + |
5482 | (cy_chip_offset[chip_number] << | 5467 | (cy_chip_offset[chip_number] << |
5483 | index) + (CyGFRCR << index))) >= | 5468 | index) + (CyGFRCR << index))) >= |
5484 | CD1400_REV_J) { | 5469 | CD1400_REV_J) { |