From: Lennert Buytenhek <buytenh-OLH4Qvv75CYX/NnBR394Jw@public.gmane.org>
To: linux-arch-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: Saeed Bishara <saeed-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org>,
Dale Farnsworth <dale-1viX+2+OPRFcxvNqPlePQg@public.gmane.org>,
Russell King <linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org>,
Tzachi Perelstein
<tzachi-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org>,
Nicolas Pitre <nico-mo2vmkxb4K0@public.gmane.org>
Subject: [PATCH 6/7] sata_mv: mbus decode window support
Date: Fri, 7 Mar 2008 11:23:10 +0100 [thread overview]
Message-ID: <20080307102310.GF11977@xi.wantstofly.org> (raw)
In-Reply-To: <20080307101913.GA11918-mfnYTeDhw6uOVk/H6u/4e9i2O/JbrIOy@public.gmane.org>
Make it possible to pass mbus_dram_target_info to the sata_mv
driver via the platform data, and make the sata_mv driver program
the window registers based on this data if it is passed in.
Signed-off-by: Lennert Buytenhek <buytenh-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org>
Index: linux-2.6.25-rc4/drivers/ata/sata_mv.c
===================================================================
--- linux-2.6.25-rc4.orig/drivers/ata/sata_mv.c
+++ linux-2.6.25-rc4/drivers/ata/sata_mv.c
@@ -74,6 +74,7 @@
#include <linux/device.h>
#include <linux/platform_device.h>
#include <linux/ata_platform.h>
+#include <linux/mbus.h>
#include <scsi/scsi_host.h>
#include <scsi/scsi_cmnd.h>
#include <scsi/scsi_device.h>
@@ -352,6 +353,9 @@ enum {
#define IS_GEN_IIE(hpriv) ((hpriv)->hp_flags & MV_HP_GEN_IIE)
#define HAS_PCI(host) (!((host)->ports[0]->flags & MV_FLAG_SOC))
+#define WINDOW_CTRL(i) (0x20030 + ((i) << 4))
+#define WINDOW_BASE(i) (0x20034 + ((i) << 4))
+
enum {
/* DMA boundary 0xffff is required by the s/g splitting
* we need on /length/ in mv_fill-sg().
@@ -2897,6 +2901,27 @@ static int mv_create_dma_pools(struct mv
return 0;
}
+static void mv_conf_mbus_windows(struct mv_host_priv *hpriv,
+ struct mbus_dram_target_info *dram)
+{
+ int i;
+
+ for (i = 0; i < 4; i++) {
+ writel(0, hpriv->base + WINDOW_CTRL(i));
+ writel(0, hpriv->base + WINDOW_BASE(i));
+ }
+
+ for (i = 0; i < dram->num_cs; i++) {
+ struct mbus_dram_window *cs = dram->cs + i;
+
+ writel(((cs->size - 1) & 0xffff0000) |
+ (cs->mbus_attr << 8) |
+ (dram->mbus_dram_target_id << 4) | 1,
+ hpriv->base + WINDOW_CTRL(i));
+ writel(cs->base, hpriv->base + WINDOW_BASE(i));
+ }
+}
+
/**
* mv_platform_probe - handle a positive probe of an soc Marvell
* host
@@ -2951,6 +2976,12 @@ static int mv_platform_probe(struct plat
res->end - res->start + 1);
hpriv->base -= MV_SATAHC0_REG_BASE;
+ /*
+ * (Re-)program MBUS remapping windows if we are asked to.
+ */
+ if (mv_platform_data->dram != NULL)
+ mv_conf_mbus_windows(hpriv, mv_platform_data->dram);
+
rc = mv_create_dma_pools(hpriv, &pdev->dev);
if (rc)
return rc;
Index: linux-2.6.25-rc4/include/linux/ata_platform.h
===================================================================
--- linux-2.6.25-rc4.orig/include/linux/ata_platform.h
+++ linux-2.6.25-rc4/include/linux/ata_platform.h
@@ -27,7 +27,10 @@ extern int __devexit __pata_platform_rem
/*
* Marvell SATA private data
*/
+struct mbus_dram_target_info;
+
struct mv_sata_platform_data {
+ struct mbus_dram_target_info *dram;
int n_ports; /* number of sata ports */
};
--
To unsubscribe from this list: send the line "unsubscribe linux-arch" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: Lennert Buytenhek <buytenh@wantstofly.org>
To: linux-arch@vger.kernel.org
Cc: Saeed Bishara <saeed@marvell.com>,
Dale Farnsworth <dale@farnsworth.org>,
Russell King <linux@arm.linux.org.uk>,
Tzachi Perelstein <tzachi@marvell.com>,
Nicolas Pitre <nico@cam.org>
Subject: [PATCH 6/7] sata_mv: mbus decode window support
Date: Fri, 7 Mar 2008 11:23:10 +0100 [thread overview]
Message-ID: <20080307102310.GF11977@xi.wantstofly.org> (raw)
Message-ID: <20080307102310.Lj_IqlgJ8xqnEgeyNy2P3l2BfK-SQw-X4Yr0F9dDFjg@z> (raw)
In-Reply-To: <20080307101913.GA11918@xi.wantstofly.org>
Make it possible to pass mbus_dram_target_info to the sata_mv
driver via the platform data, and make the sata_mv driver program
the window registers based on this data if it is passed in.
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Index: linux-2.6.25-rc4/drivers/ata/sata_mv.c
===================================================================
--- linux-2.6.25-rc4.orig/drivers/ata/sata_mv.c
+++ linux-2.6.25-rc4/drivers/ata/sata_mv.c
@@ -74,6 +74,7 @@
#include <linux/device.h>
#include <linux/platform_device.h>
#include <linux/ata_platform.h>
+#include <linux/mbus.h>
#include <scsi/scsi_host.h>
#include <scsi/scsi_cmnd.h>
#include <scsi/scsi_device.h>
@@ -352,6 +353,9 @@ enum {
#define IS_GEN_IIE(hpriv) ((hpriv)->hp_flags & MV_HP_GEN_IIE)
#define HAS_PCI(host) (!((host)->ports[0]->flags & MV_FLAG_SOC))
+#define WINDOW_CTRL(i) (0x20030 + ((i) << 4))
+#define WINDOW_BASE(i) (0x20034 + ((i) << 4))
+
enum {
/* DMA boundary 0xffff is required by the s/g splitting
* we need on /length/ in mv_fill-sg().
@@ -2897,6 +2901,27 @@ static int mv_create_dma_pools(struct mv
return 0;
}
+static void mv_conf_mbus_windows(struct mv_host_priv *hpriv,
+ struct mbus_dram_target_info *dram)
+{
+ int i;
+
+ for (i = 0; i < 4; i++) {
+ writel(0, hpriv->base + WINDOW_CTRL(i));
+ writel(0, hpriv->base + WINDOW_BASE(i));
+ }
+
+ for (i = 0; i < dram->num_cs; i++) {
+ struct mbus_dram_window *cs = dram->cs + i;
+
+ writel(((cs->size - 1) & 0xffff0000) |
+ (cs->mbus_attr << 8) |
+ (dram->mbus_dram_target_id << 4) | 1,
+ hpriv->base + WINDOW_CTRL(i));
+ writel(cs->base, hpriv->base + WINDOW_BASE(i));
+ }
+}
+
/**
* mv_platform_probe - handle a positive probe of an soc Marvell
* host
@@ -2951,6 +2976,12 @@ static int mv_platform_probe(struct plat
res->end - res->start + 1);
hpriv->base -= MV_SATAHC0_REG_BASE;
+ /*
+ * (Re-)program MBUS remapping windows if we are asked to.
+ */
+ if (mv_platform_data->dram != NULL)
+ mv_conf_mbus_windows(hpriv, mv_platform_data->dram);
+
rc = mv_create_dma_pools(hpriv, &pdev->dev);
if (rc)
return rc;
Index: linux-2.6.25-rc4/include/linux/ata_platform.h
===================================================================
--- linux-2.6.25-rc4.orig/include/linux/ata_platform.h
+++ linux-2.6.25-rc4/include/linux/ata_platform.h
@@ -27,7 +27,10 @@ extern int __devexit __pata_platform_rem
/*
* Marvell SATA private data
*/
+struct mbus_dram_target_info;
+
struct mv_sata_platform_data {
+ struct mbus_dram_target_info *dram;
int n_ports; /* number of sata ports */
};
next prev parent reply other threads:[~2008-03-07 10:23 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-07 10:19 [PATCH 0/7][RFC] Move Marvell MBUS window handling into drivers Lennert Buytenhek
2008-03-07 10:19 ` Lennert Buytenhek
[not found] ` <20080307101913.GA11918-mfnYTeDhw6uOVk/H6u/4e9i2O/JbrIOy@public.gmane.org>
2008-03-07 10:20 ` [PATCH 1/7] introduce mbus DRAM target info abstraction Lennert Buytenhek
2008-03-07 10:20 ` Lennert Buytenhek
2008-03-07 10:21 ` [PATCH 2/7] Orion: initialise mbus DRAM target info on boot Lennert Buytenhek
2008-03-07 10:21 ` Lennert Buytenhek
2008-03-07 10:22 ` [PATCH 3/7] Orion: make PCIe/PCI support use mbus DRAM info Lennert Buytenhek
2008-03-07 10:22 ` Lennert Buytenhek
2008-03-07 10:22 ` [PATCH 4/7] ehci-orion: mbus decode window support Lennert Buytenhek
2008-03-07 10:22 ` Lennert Buytenhek
2008-03-07 10:22 ` [PATCH 5/7] mv643xx_eth: " Lennert Buytenhek
2008-03-07 10:22 ` Lennert Buytenhek
2008-03-07 10:23 ` Lennert Buytenhek [this message]
2008-03-07 10:23 ` [PATCH 6/7] sata_mv: " Lennert Buytenhek
2008-03-07 10:23 ` [PATCH 7/7] Orion: leave peripheral window programming up to drivers Lennert Buytenhek
2008-03-07 10:23 ` Lennert Buytenhek
2008-03-10 8:31 ` [PATCH 0/7][RFC] Move Marvell MBUS window handling into drivers Tzachi Perelstein
2008-03-10 8:31 ` Tzachi Perelstein
2008-03-16 11:59 ` Russell King - ARM Linux
2008-03-16 11:59 ` Russell King - ARM Linux
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=20080307102310.GF11977@xi.wantstofly.org \
--to=buytenh-olh4qvv75cyx/nnbr394jw@public.gmane.org \
--cc=dale-1viX+2+OPRFcxvNqPlePQg@public.gmane.org \
--cc=linux-arch-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org \
--cc=nico-mo2vmkxb4K0@public.gmane.org \
--cc=saeed-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org \
--cc=tzachi-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox