From patchwork Wed Sep 7 16:23:18 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dan McGee X-Patchwork-Id: 113790 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 6BB0CB6F81 for ; Thu, 8 Sep 2011 02:24:35 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756525Ab1IGQXl (ORCPT ); Wed, 7 Sep 2011 12:23:41 -0400 Received: from mail-yi0-f46.google.com ([209.85.218.46]:57783 "EHLO mail-yi0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756479Ab1IGQXj (ORCPT ); Wed, 7 Sep 2011 12:23:39 -0400 Received: by yie30 with SMTP id 30so5078247yie.19 for ; Wed, 07 Sep 2011 09:23:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; bh=41eQRQtq8lBGQ9NVchu8vbzPA8e0hcwmCdMPixOhcjY=; b=gy3mrgBcQ0fgZfu9wXh5GrinvMnJUMRaNDMAu7De39U0Xz1CNOy0lNW9TYKkghDjuw nwyR46B/hpfGVPzzY52uvRbd+vwxmNLNwOjWVpMjRTkRcGhWFuYlRDLm+wkJamuxzCG2 RUvr8Os8ZCbxbdPsz1I1gaCdLjSwiTZOceORo= Received: by 10.236.176.33 with SMTP id a21mr33043344yhm.108.1315412608242; Wed, 07 Sep 2011 09:23:28 -0700 (PDT) Received: from localhost (c-71-239-242-45.hsd1.il.comcast.net [71.239.242.45]) by mx.google.com with ESMTPS id o43sm721233yhe.11.2011.09.07.09.23.26 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 07 Sep 2011 09:23:27 -0700 (PDT) From: Dan McGee To: linux-ide@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Jeff Garzik , Bartlomiej Zolnierkiewicz Subject: [PATCH 1/5] pata_sis: extract a sis_port_base() method Date: Wed, 7 Sep 2011 11:23:18 -0500 Message-Id: <1315412602-6560-2-git-send-email-dpmcgee@gmail.com> X-Mailer: git-send-email 1.7.6.1 In-Reply-To: <1315412602-6560-1-git-send-email-dpmcgee@gmail.com> References: <1315412602-6560-1-git-send-email-dpmcgee@gmail.com> Sender: linux-ide-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ide@vger.kernel.org This is similar to the existing sis_old_port_base() method. We do this same calculation and logic in multiple places (with one more to come in a future patch), so extracting it into a method makes sense. Reviewed-by: Bartlomiej Zolnierkiewicz Signed-off-by: Dan McGee --- drivers/ata/pata_sis.c | 46 ++++++++++++++++++++++++++++------------------ 1 files changed, 28 insertions(+), 18 deletions(-) diff --git a/drivers/ata/pata_sis.c b/drivers/ata/pata_sis.c index 533f2ae..10af293 100644 --- a/drivers/ata/pata_sis.c +++ b/drivers/ata/pata_sis.c @@ -89,6 +89,29 @@ static int sis_old_port_base(struct ata_device *adev) } /** + * sis_port_base - return PCI configuration base for dev + * @adev: device + * + * Returns the base of the PCI configuration registers for this port + * number. + */ + +static int sis_port_base(struct ata_device *adev) +{ + struct ata_port *ap = adev->link->ap; + struct pci_dev *pdev = to_pci_dev(ap->host->dev); + int port = 0x40; + u32 reg54; + + /* If bit 30 is set then the registers are mapped at 0x70 not 0x40 */ + pci_read_config_dword(pdev, 0x54, ®54); + if (reg54 & 0x40000000) + port = 0x70; + + return port + (8 * ap->port_no) + (4 * adev->devno); +} + +/** * sis_133_cable_detect - check for 40/80 pin * @ap: Port * @deadline: deadline jiffies for the operation @@ -266,9 +289,8 @@ static void sis_100_set_piomode (struct ata_port *ap, struct ata_device *adev) static void sis_133_set_piomode (struct ata_port *ap, struct ata_device *adev) { struct pci_dev *pdev = to_pci_dev(ap->host->dev); - int port = 0x40; + int port; u32 t1; - u32 reg54; int speed = adev->pio_mode - XFER_PIO_0; const u32 timing133[] = { @@ -288,12 +310,7 @@ static void sis_133_set_piomode (struct ata_port *ap, struct ata_device *adev) sis_set_fifo(ap, adev); - /* If bit 14 is set then the registers are mapped at 0x70 not 0x40 */ - pci_read_config_dword(pdev, 0x54, ®54); - if (reg54 & 0x40000000) - port = 0x70; - port += 8 * ap->port_no + 4 * adev->devno; - + port = sis_port_base(adev); pci_read_config_dword(pdev, port, &t1); t1 &= 0xC0C00FFF; /* Mask out timing */ @@ -465,21 +482,14 @@ static void sis_133_early_set_dmamode (struct ata_port *ap, struct ata_device *a static void sis_133_set_dmamode (struct ata_port *ap, struct ata_device *adev) { struct pci_dev *pdev = to_pci_dev(ap->host->dev); - int speed = adev->dma_mode - XFER_MW_DMA_0; - int port = 0x40; + int port; u32 t1; - u32 reg54; /* bits 4- cycle time 8 - cvs time */ static const u32 timing_u100[] = { 0x6B0, 0x470, 0x350, 0x140, 0x120, 0x110, 0x000 }; static const u32 timing_u133[] = { 0x9F0, 0x6A0, 0x470, 0x250, 0x230, 0x220, 0x210 }; - /* If bit 14 is set then the registers are mapped at 0x70 not 0x40 */ - pci_read_config_dword(pdev, 0x54, ®54); - if (reg54 & 0x40000000) - port = 0x70; - port += (8 * ap->port_no) + (4 * adev->devno); - + port = sis_port_base(adev); pci_read_config_dword(pdev, port, &t1); if (adev->dma_mode < XFER_UDMA_0) { @@ -487,7 +497,7 @@ static void sis_133_set_dmamode (struct ata_port *ap, struct ata_device *adev) /* FIXME: need data sheet to add MWDMA here. Also lacking on ide/pci driver */ } else { - speed = adev->dma_mode - XFER_UDMA_0; + int speed = adev->dma_mode - XFER_UDMA_0; /* if & 8 no UDMA133 - need info for ... */ t1 &= ~0x00000FF0; t1 |= 0x00000004;