All of lore.kernel.org
 help / color / mirror / Atom feed
From: muli@il.ibm.com
To: ak@suse.de
Cc: linux-kernel@vger.kernel.org, discuss@x86-64.org,
	jdmason@kudzu.us, michaelv@il.ibm.com,
	guillaume.thouvenin@ext.bull.net, muli@il.ibm.com
Subject: [PATCH 7/15] x86-64: Calgary - add chip_ops and a quirk function for CalIOC2
Date: Tue, 22 May 2007 04:05:56 -0400	[thread overview]
Message-ID: <1179821167481-git-send-email-muli@il.ibm.com> (raw)
In-Reply-To: <11798211672108-git-send-email-muli@il.ibm.com>

From: Muli Ben-Yehuda <muli@il.ibm.com>

Signed-off-by: Muli Ben-Yehuda <muli@il.ibm.com>
---
 arch/x86_64/kernel/pci-calgary.c |   38 ++++++++++++++++++++++++++++++++++----
 1 files changed, 34 insertions(+), 4 deletions(-)

diff --git a/arch/x86_64/kernel/pci-calgary.c b/arch/x86_64/kernel/pci-calgary.c
index 3945437..ee0b52c 100644
--- a/arch/x86_64/kernel/pci-calgary.c
+++ b/arch/x86_64/kernel/pci-calgary.c
@@ -79,6 +79,9 @@ int use_calgary __read_mostly = 0;
 #define PHB_MEM_2_SIZE_LOW	0x02E0
 #define PHB_DOSHOLE_OFFSET	0x08E0
 
+/* CalIOC2 specific */
+#define PHB_SAVIOR_L2           0x0DB0
+
 /* PHB_CONFIG_RW */
 #define PHB_TCE_ENABLE		0x20000000
 #define PHB_SLOT_DISABLE	0x1C000000
@@ -157,11 +160,18 @@ struct calgary_bus_info {
 static void calgary_handle_quirks(struct iommu_table *tbl, struct pci_dev *dev);
 static void calgary_tce_cache_blast(struct iommu_table *tbl);
 
+static void calioc2_handle_quirks(struct iommu_table *tbl, struct pci_dev *dev);
+
 struct cal_chipset_ops calgary_chip_ops = {
 	.handle_quirks = calgary_handle_quirks,
 	.tce_cache_blast = calgary_tce_cache_blast
 };
 
+struct cal_chipset_ops calioc2_chip_ops = {
+	.handle_quirks = calioc2_handle_quirks,
+	.tce_cache_blast = NULL
+};
+
 static struct calgary_bus_info bus_info[MAX_PHB_BUS_NUM] = { { NULL, 0, 0 }, };
 
 /* enable this to stress test the chip's TCE cache */
@@ -743,7 +753,12 @@ static int __init calgary_setup_tar(stru
 	tbl->it_base = (unsigned long)bus_info[dev->bus->number].tce_space;
 	tce_free(tbl, 0, tbl->it_size);
 
-	tbl->chip_ops = &calgary_chip_ops;
+  	if (is_calgary(dev->device))
+  		tbl->chip_ops = &calgary_chip_ops;
+	else if (is_calioc2(dev->device))
+		tbl->chip_ops = &calioc2_chip_ops;
+  	else
+  		BUG();
 
 	calgary_reserve_regions(dev);
 
@@ -894,8 +909,23 @@ static void __init calgary_set_split_com
 	readq(target); /* flush */
 }
 
-static void __init calgary_handle_quirks(struct iommu_table *tbl,
-	struct pci_dev *dev)
+static void calioc2_handle_quirks(struct iommu_table *tbl, struct pci_dev *dev)
+{
+	unsigned char busnum = dev->bus->number;
+	void __iomem *bbar = tbl->bbar;
+	void __iomem *target;
+	u32 val;
+
+ 	/*
+ 	 * CalIOC2 designers recommend setting bit 8 in 0xnDB0 to 1
+ 	 */
+ 	target = calgary_reg(bbar, phb_offset(busnum) | PHB_SAVIOR_L2);
+ 	val = cpu_to_be32(readl(target));
+ 	val |= 0x00800000;
+ 	writel(cpu_to_be32(val), target);
+}
+
+static void calgary_handle_quirks(struct iommu_table *tbl, struct pci_dev *dev)
 {
 	unsigned char busnum = dev->bus->number;
 
@@ -903,7 +933,7 @@ static void __init calgary_handle_quirks
 	 * Give split completion a longer timeout on bus 1 for aic94xx
 	 * http://bugzilla.kernel.org/show_bug.cgi?id=7180
 	 */
-	if (busnum == 1)
+	if (is_calgary(dev->device) && (busnum == 1))
 		calgary_set_split_completion_timeout(tbl->bbar, busnum,
 						     CCR_2SEC_TIMEOUT);
 }
-- 
1.4.4


  reply	other threads:[~2007-05-22  8:10 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-22  8:05 Calgary updates for 2.6.23 muli
2007-05-22  8:05 ` [PATCH 1/15] x86-64: Calgary - generalize calgary_increase_split_completion_timeout muli
2007-05-22  8:05   ` [PATCH 2/15] x86-64: Calgary - update copyright notice muli
2007-05-22  8:05     ` [PATCH 3/15] x86-64: Calgary - introduce handle_quirks() for various chipset quirks muli
2007-05-22  8:05       ` [PATCH 4/15] x86-64: Calgary - introduce chipset specific ops muli
2007-05-22  8:05         ` [PATCH 5/15] x86-64: Calgary - abstract how we find the iommu_table for a device muli
2007-05-22  8:05           ` [PATCH 6/15] x86-64: Calgary - introduce CalIOC2 support muli
2007-05-22  8:05             ` muli [this message]
2007-05-22  8:05               ` [PATCH 8/15] x86-64: Calgary - implement CalIOC2 TCE cache flush sequence muli
2007-05-22  8:05                 ` [PATCH 9/15] x86-64: Calgary - make dump_error_regs a chip op muli
2007-05-22  8:05                   ` [PATCH 10/15] x86-64: Calgary - grab PLSSR too when a DMA error occurs muli
2007-05-22  8:06                     ` [PATCH 11/15] x86-64: Calgary - reserve TCEs with the same address as MEM regions muli
2007-05-22  8:06                       ` [PATCH 12/15] x86-64: Calgary - cleanup of unneeded macros muli
2007-05-22  8:06                         ` [PATCH 13/15] x86-64: Calgary - tabify and trim trailing whitespace muli
2007-05-22  8:06                           ` [PATCH 14/15] x86-64: Calgary - only reserve the first 1MB of IO space for CalIOC2 muli
2007-05-22  8:06                             ` [PATCH 15/15] x86-64: Calgary - tidy up debug printks muli
     [not found]           ` <20070604113344.0e71ca8c.akpm@linux-foundation.org>
2007-06-04 19:06             ` [PATCH 5/15] x86-64: Calgary - abstract how we find the iommu_table for a device Jeff Garzik
2007-06-04 19:13               ` Muli Ben-Yehuda
2007-06-04 19:31                 ` Jeff Garzik
2007-06-04 21:05                 ` [PATCH] stop x86 ->sysdata abuse; introduce pci_sysdata Jeff Garzik
2007-06-04 23:27                   ` Keshavamurthy, Anil S
2007-06-05 10:29                   ` Muli Ben-Yehuda
2007-06-06 21:03                     ` Muli Ben-Yehuda
2007-06-06 21:21                       ` Jeff Garzik
2007-06-06 21:26                         ` Muli Ben-Yehuda

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1179821167481-git-send-email-muli@il.ibm.com \
    --to=muli@il.ibm.com \
    --cc=ak@suse.de \
    --cc=discuss@x86-64.org \
    --cc=guillaume.thouvenin@ext.bull.net \
    --cc=jdmason@kudzu.us \
    --cc=linux-kernel@vger.kernel.org \
    --cc=michaelv@il.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.