From patchwork Tue Nov 17 18:23:40 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ondrej Zary X-Patchwork-Id: 7640311 Return-Path: X-Original-To: patchwork-linux-scsi@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 819579F2EC for ; Tue, 17 Nov 2015 18:24:54 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 6540B20499 for ; Tue, 17 Nov 2015 18:24:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 331C8204AF for ; Tue, 17 Nov 2015 18:24:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754518AbbKQSYu (ORCPT ); Tue, 17 Nov 2015 13:24:50 -0500 Received: from ns.gsystem.sk ([62.176.172.50]:56414 "EHLO gsystem.sk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754496AbbKQSYr (ORCPT ); Tue, 17 Nov 2015 13:24:47 -0500 Received: from stip-static-68.213-81-217.telecom.sk ([213.81.217.68] helo=gsql.ggedos.sk) by gsystem.sk with esmtpsa (TLS1.1:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.80) (envelope-from ) id 1Zykvs-0006dg-UU; Tue, 17 Nov 2015 19:24:45 +0100 From: Ondrej Zary To: "Martin K. Petersen" Cc: Christoph Hellwig , linux-scsi@vger.kernel.org Subject: [PATCH 04/52] atp870u: Untangle tmport #2 Date: Tue, 17 Nov 2015 19:23:40 +0100 Message-Id: <1447784668-23713-5-git-send-email-linux@rainbow-software.org> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1447784668-23713-1-git-send-email-linux@rainbow-software.org> References: <1447784668-23713-1-git-send-email-linux@rainbow-software.org> Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org X-Spam-Status: No, score=-7.5 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Untangle the tmport crap so it becomes obvious what ports are accessed. Signed-off-by: Ondrej Zary --- drivers/scsi/atp870u.c | 79 ++++++++++++++++++++---------------------------- 1 file changed, 32 insertions(+), 47 deletions(-) diff --git a/drivers/scsi/atp870u.c b/drivers/scsi/atp870u.c index a25a300..7112337 100644 --- a/drivers/scsi/atp870u.c +++ b/drivers/scsi/atp870u.c @@ -562,7 +562,7 @@ static int atp870u_queuecommand_lck(struct scsi_cmnd *req_p, void (*done) (struct scsi_cmnd *)) { unsigned char c; - unsigned int tmport,m; + unsigned int m; struct atp_unit *dev; struct Scsi_Host *host; @@ -631,11 +631,10 @@ static int atp870u_queuecommand_lck(struct scsi_cmnd *req_p, return 0; } dev->quereq[c][dev->quend[c]] = req_p; - tmport = dev->ioport[c] + 0x1c; #ifdef ED_DBGP - printk("dev->ioport[c] = %x inb(tmport) = %x dev->in_int[%d] = %d dev->in_snd[%d] = %d\n",dev->ioport[c],inb(tmport),c,dev->in_int[c],c,dev->in_snd[c]); + printk("dev->ioport[c] = %x inb(dev->ioport[c] + 0x1c) = %x dev->in_int[%d] = %d dev->in_snd[%d] = %d\n",dev->ioport[c],inb(dev->ioport[c] + 0x1c),c,dev->in_int[c],c,dev->in_snd[c]); #endif - if ((inb(tmport) == 0) && (dev->in_int[c] == 0) && (dev->in_snd[c] == 0)) { + if ((inb(dev->ioport[c] + 0x1c) == 0) && (dev->in_int[c] == 0) && (dev->in_snd[c] == 0)) { #ifdef ED_DBGP printk("Call sent_s870(atp870u_queuecommand)\n"); #endif @@ -660,7 +659,6 @@ static DEF_SCSI_QCMD(atp870u_queuecommand) */ static void send_s870(struct atp_unit *dev,unsigned char c) { - unsigned int tmport; struct scsi_cmnd *workreq; unsigned int i;//,k; unsigned char j, target_id; @@ -712,12 +710,10 @@ static void send_s870(struct atp_unit *dev,unsigned char c) dev->in_snd[c] = 0; return; cmd_subp: - tmport = dev->ioport[c] + 0x1f; - if ((inb(tmport) & 0xb0) != 0) { + if ((inb(dev->ioport[c] + 0x1f) & 0xb0) != 0) { goto abortsnd; } - tmport = dev->ioport[c] + 0x1c; - if (inb(tmport) == 0) { + if (inb(dev->ioport[c] + 0x1c) == 0) { goto oktosend; } abortsnd: @@ -752,7 +748,6 @@ oktosend: l = 0; } - tmport = dev->ioport[c] + 0x1b; j = 0; target_id = scmd_id(workreq); @@ -764,9 +759,9 @@ oktosend: if ((w & dev->wide_id[c]) != 0) { j |= 0x01; } - outb(j, tmport); - while ((inb(tmport) & 0x01) != j) { - outb(j,tmport); + outb(j, dev->ioport[c] + 0x1b); + while ((inb(dev->ioport[c] + 0x1b) & 0x01) != j) { + outb(j,dev->ioport[c] + 0x1b); #ifdef ED_DBGP printk("send_s870 while loop 1\n"); #endif @@ -775,24 +770,21 @@ oktosend: * Write the command */ - tmport = dev->ioport[c]; - outb(workreq->cmd_len, tmport++); - outb(0x2c, tmport++); + outb(workreq->cmd_len, dev->ioport[c] + 0x00); + outb(0x2c, dev->ioport[c] + 0x01); if (dev->dev_id == ATP885_DEVID) { - outb(0x7f, tmport++); + outb(0x7f, dev->ioport[c] + 0x02); } else { - outb(0xcf, tmport++); + outb(0xcf, dev->ioport[c] + 0x02); } for (i = 0; i < workreq->cmd_len; i++) { - outb(workreq->cmnd[i], tmport++); + outb(workreq->cmnd[i], dev->ioport[c] + 0x03 + i); } - tmport = dev->ioport[c] + 0x0f; - outb(workreq->device->lun, tmport); - tmport += 0x02; + outb(workreq->device->lun, dev->ioport[c] + 0x0f); /* * Write the target */ - outb(dev->id[c][target_id].devsp, tmport++); + outb(dev->id[c][target_id].devsp, dev->ioport[c] + 0x11); #ifdef ED_DBGP printk("dev->id[%d][%d].devsp = %2x\n",c,target_id,dev->id[c][target_id].devsp); #endif @@ -801,9 +793,9 @@ oktosend: /* * Write transfer size */ - outb((unsigned char) (((unsigned char *) (&l))[2]), tmport++); - outb((unsigned char) (((unsigned char *) (&l))[1]), tmport++); - outb((unsigned char) (((unsigned char *) (&l))[0]), tmport++); + outb((unsigned char) (((unsigned char *) (&l))[2]), dev->ioport[c] + 0x12); + outb((unsigned char) (((unsigned char *) (&l))[1]), dev->ioport[c] + 0x13); + outb((unsigned char) (((unsigned char *) (&l))[0]), dev->ioport[c] + 0x14); j = target_id; dev->id[c][j].last_len = l; dev->id[c][j].tran_len = 0; @@ -820,21 +812,19 @@ oktosend: * Check transfer direction */ if (workreq->sc_data_direction == DMA_TO_DEVICE) { - outb((unsigned char) (j | 0x20), tmport++); + outb((unsigned char) (j | 0x20), dev->ioport[c] + 0x15); } else { - outb(j, tmport++); + outb(j, dev->ioport[c] + 0x15); } - outb((unsigned char) (inb(tmport) | 0x80), tmport); - outb(0x80, tmport); - tmport = dev->ioport[c] + 0x1c; + outb((unsigned char) (inb(dev->ioport[c] + 0x16) | 0x80), dev->ioport[c] + 0x16); + outb(0x80, dev->ioport[c] + 0x16); dev->id[c][target_id].dirct = 0; if (l == 0) { - if (inb(tmport) == 0) { - tmport = dev->ioport[c] + 0x18; + if (inb(dev->ioport[c] + 0x1c) == 0) { #ifdef ED_DBGP printk("change SCSI_CMD_REG 0x08\n"); #endif - outb(0x08, tmport); + outb(0x08, dev->ioport[c] + 0x18); } else { dev->last_cmd[c] |= 0x40; } @@ -899,28 +889,24 @@ oktosend: } else if ((dev->dev_id == ATP880_DEVID1) || (dev->dev_id == ATP880_DEVID2)) { tmpcip =tmpcip -2; - tmport = dev->ioport[c] - 0x05; if ((workreq->cmnd[0] == 0x08) || (workreq->cmnd[0] == 0x28) || (workreq->cmnd[0] == 0x0a) || (workreq->cmnd[0] == 0x2a)) { - outb((unsigned char) ((inb(tmport) & 0x3f) | 0xc0), tmport); + outb((unsigned char) ((inb(dev->ioport[c] - 0x05) & 0x3f) | 0xc0), dev->ioport[c] - 0x05); } else { - outb((unsigned char) (inb(tmport) & 0x3f), tmport); + outb((unsigned char) (inb(dev->ioport[c] - 0x05) & 0x3f), dev->ioport[c] - 0x05); } } else { tmpcip =tmpcip -2; - tmport = dev->ioport[c] + 0x3a; if ((workreq->cmnd[0] == 0x08) || (workreq->cmnd[0] == 0x28) || (workreq->cmnd[0] == 0x0a) || (workreq->cmnd[0] == 0x2a)) { - outb((inb(tmport) & 0xf3) | 0x08, tmport); + outb((inb(dev->ioport[c] + 0x3a) & 0xf3) | 0x08, dev->ioport[c] + 0x3a); } else { - outb(inb(tmport) & 0xf3, tmport); + outb(inb(dev->ioport[c] + 0x3a) & 0xf3, dev->ioport[c] + 0x3a); } } - tmport = dev->ioport[c] + 0x1c; if(workreq->sc_data_direction == DMA_TO_DEVICE) { dev->id[c][target_id].dirct = 0x20; - if (inb(tmport) == 0) { - tmport = dev->ioport[c] + 0x18; - outb(0x08, tmport); + if (inb(dev->ioport[c] + 0x1c) == 0) { + outb(0x08, dev->ioport[c] + 0x18); outb(0x01, tmpcip); #ifdef ED_DBGP printk( "start DMA(to target)\n"); @@ -931,9 +917,8 @@ oktosend: dev->in_snd[c] = 0; return; } - if (inb(tmport) == 0) { - tmport = dev->ioport[c] + 0x18; - outb(0x08, tmport); + if (inb(dev->ioport[c] + 0x1c) == 0) { + outb(0x08, dev->ioport[c] + 0x18); outb(0x09, tmpcip); #ifdef ED_DBGP printk( "start DMA(to host)\n");