linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* My collection of IXP4xx patches for the next window
@ 2012-09-20 19:33 Krzysztof Halasa
  2012-09-20 20:16 ` [PATCH 1/10] IXP4xx: Fix Goramo MultiLink platform compilation Krzysztof Halasa
                   ` (9 more replies)
  0 siblings, 10 replies; 11+ messages in thread
From: Krzysztof Halasa @ 2012-09-20 19:33 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

this is (more or less) what I wish to push in the next window:

Arnd Bergmann (1):
      ARM: IXP4xx: use __iomem pointers for MMIO

Krzysztof Ha?asa (10):
      IXP4xx: Fix Goramo MultiLink platform compilation.
      IXP4xx: Fix off-by-one bug in Goramo MultiLink platform.
      IXP4xx: HW pseudo-random generator is available on IXP45x/46x only.
      IXP4xx: ixp4xx_crypto driver requires Queue Manager and NPE drivers.
      ARM: fix DMA-bounce code to allow sync from_device and to_device with bidirectional mappings.
      IXP4xx: Remove time limit for PCI TRDY to enable use of slow devices.
      WAN: Remove redundant HDLC info printed by IXP4xx HSS driver.
      IXP4xx crypto: MOD_AES{128,192,256} already include key size.
      IXP4xx: Always ioremap() Queue Manager MMIO region at boot.
      IXP4xx: map CPU config registers within VMALLOC region.

Tim Gardner (1):
      ixp4xx: Declare MODULE_FIRMWARE usage

I will send not yet posted patches. Please comment.
-- 
Krzysztof Halasa

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 1/10] IXP4xx: Fix Goramo MultiLink platform compilation.
  2012-09-20 19:33 My collection of IXP4xx patches for the next window Krzysztof Halasa
@ 2012-09-20 20:16 ` Krzysztof Halasa
  2012-09-20 20:16 ` [PATCH 2/10] IXP4xx: Fix off-by-one bug in Goramo MultiLink platform Krzysztof Halasa
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: Krzysztof Halasa @ 2012-09-20 20:16 UTC (permalink / raw)
  To: linux-arm-kernel

--- a/arch/arm/mach-ixp4xx/goramo_mlr.c
+++ b/arch/arm/mach-ixp4xx/goramo_mlr.c
@@ -15,6 +15,7 @@
 #include <asm/mach/arch.h>
 #include <asm/mach/flash.h>
 #include <asm/mach/pci.h>
+#include <asm/system_info.h>
 
 #define SLOT_ETHA		0x0B	/* IDSEL = AD21 */
 #define SLOT_ETHB		0x0C	/* IDSEL = AD20 */

-- 
Krzysztof Halasa

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 2/10] IXP4xx: Fix off-by-one bug in Goramo MultiLink platform.
  2012-09-20 19:33 My collection of IXP4xx patches for the next window Krzysztof Halasa
  2012-09-20 20:16 ` [PATCH 1/10] IXP4xx: Fix Goramo MultiLink platform compilation Krzysztof Halasa
@ 2012-09-20 20:16 ` Krzysztof Halasa
  2012-09-20 20:17 ` [PATCH 3/10] IXP4xx: HW pseudo-random generator is available on IXP45x/46x only Krzysztof Halasa
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: Krzysztof Halasa @ 2012-09-20 20:16 UTC (permalink / raw)
  To: linux-arm-kernel

--- a/arch/arm/mach-ixp4xx/goramo_mlr.c
+++ b/arch/arm/mach-ixp4xx/goramo_mlr.c
@@ -330,7 +330,7 @@ static struct platform_device device_hss_tab[] = {
 };
 
 
-static struct platform_device *device_tab[6] __initdata = {
+static struct platform_device *device_tab[7] __initdata = {
 	&device_flash,		/* index 0 */
 };
 

-- 
Krzysztof Halasa

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 3/10] IXP4xx: HW pseudo-random generator is available on IXP45x/46x only.
  2012-09-20 19:33 My collection of IXP4xx patches for the next window Krzysztof Halasa
  2012-09-20 20:16 ` [PATCH 1/10] IXP4xx: Fix Goramo MultiLink platform compilation Krzysztof Halasa
  2012-09-20 20:16 ` [PATCH 2/10] IXP4xx: Fix off-by-one bug in Goramo MultiLink platform Krzysztof Halasa
@ 2012-09-20 20:17 ` Krzysztof Halasa
  2012-09-20 20:18 ` [PATCH 4/10] IXP4xx: ixp4xx_crypto driver requires Queue Manager and NPE drivers Krzysztof Halasa
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: Krzysztof Halasa @ 2012-09-20 20:17 UTC (permalink / raw)
  To: linux-arm-kernel

--- a/drivers/char/hw_random/Kconfig
+++ b/drivers/char/hw_random/Kconfig
@@ -127,12 +127,12 @@ config HW_RANDOM_VIA
 	  If unsure, say Y.
 
 config HW_RANDOM_IXP4XX
-	tristate "Intel IXP4xx NPU HW Random Number Generator support"
+	tristate "Intel IXP4xx NPU HW Pseudo-Random Number Generator support"
 	depends on HW_RANDOM && ARCH_IXP4XX
 	default HW_RANDOM
 	---help---
-	  This driver provides kernel-side support for the Random
-	  Number Generator hardware found on the Intel IXP4xx NPU.
+	  This driver provides kernel-side support for the Pseudo-Random
+	  Number Generator hardware found on the Intel IXP45x/46x NPU.
 
 	  To compile this driver as a module, choose M here: the
 	  module will be called ixp4xx-rng.
--- a/drivers/char/hw_random/ixp4xx-rng.c
+++ b/drivers/char/hw_random/ixp4xx-rng.c
@@ -45,6 +45,9 @@ static int __init ixp4xx_rng_init(void)
 	void __iomem * rng_base;
 	int err;
 
+	if (!cpu_is_ixp46x()) /* includes IXP455 */
+		return -ENOSYS;
+
 	rng_base = ioremap(0x70002100, 4);
 	if (!rng_base)
 		return -ENOMEM;
@@ -68,5 +71,5 @@ module_init(ixp4xx_rng_init);
 module_exit(ixp4xx_rng_exit);
 
 MODULE_AUTHOR("Deepak Saxena <dsaxena@plexity.net>");
-MODULE_DESCRIPTION("H/W Random Number Generator (RNG) driver for IXP4xx");
+MODULE_DESCRIPTION("H/W Pseudo-Random Number Generator (RNG) driver for IXP45x/46x");
 MODULE_LICENSE("GPL");

-- 
Krzysztof Halasa

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 4/10] IXP4xx: ixp4xx_crypto driver requires Queue Manager and NPE drivers.
  2012-09-20 19:33 My collection of IXP4xx patches for the next window Krzysztof Halasa
                   ` (2 preceding siblings ...)
  2012-09-20 20:17 ` [PATCH 3/10] IXP4xx: HW pseudo-random generator is available on IXP45x/46x only Krzysztof Halasa
@ 2012-09-20 20:18 ` Krzysztof Halasa
  2012-09-20 20:19 ` [PATCH 5/10] ARM: fix DMA-bounce code to allow sync from_device and to_device with bidirectional mappings Krzysztof Halasa
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: Krzysztof Halasa @ 2012-09-20 20:18 UTC (permalink / raw)
  To: linux-arm-kernel

--- a/drivers/crypto/Kconfig
+++ b/drivers/crypto/Kconfig
@@ -224,7 +224,7 @@ config CRYPTO_DEV_TALITOS
 
 config CRYPTO_DEV_IXP4XX
 	tristate "Driver for IXP4xx crypto hardware acceleration"
-	depends on ARCH_IXP4XX
+	depends on ARCH_IXP4XX && IXP4XX_QMGR && IXP4XX_NPE
 	select CRYPTO_DES
 	select CRYPTO_ALGAPI
 	select CRYPTO_AUTHENC

-- 
Krzysztof Halasa

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 5/10] ARM: fix DMA-bounce code to allow sync from_device and to_device with bidirectional mappings.
  2012-09-20 19:33 My collection of IXP4xx patches for the next window Krzysztof Halasa
                   ` (3 preceding siblings ...)
  2012-09-20 20:18 ` [PATCH 4/10] IXP4xx: ixp4xx_crypto driver requires Queue Manager and NPE drivers Krzysztof Halasa
@ 2012-09-20 20:19 ` Krzysztof Halasa
  2012-09-20 20:19 ` [PATCH 6/10] IXP4xx: Remove time limit for PCI TRDY to enable use of slow devices Krzysztof Halasa
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: Krzysztof Halasa @ 2012-09-20 20:19 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: Krzysztof Ha?asa <khc@pm.waw.pl>

--- a/arch/arm/common/dmabounce.c
+++ b/arch/arm/common/dmabounce.c
@@ -375,7 +375,7 @@ static int __dmabounce_sync_for_cpu(struct device *dev, dma_addr_t addr,
 
 	off = addr - buf->safe_dma_addr;
 
-	BUG_ON(buf->direction != dir);
+	BUG_ON(buf->direction != dir && buf->direction != DMA_BIDIRECTIONAL);
 
 	dev_dbg(dev, "%s: unsafe buffer %p (dma=%#x off=%#lx) mapped to %p (dma=%#x)\n",
 		__func__, buf->ptr, virt_to_dma(dev, buf->ptr), off,
@@ -415,7 +415,7 @@ static int __dmabounce_sync_for_device(struct device *dev, dma_addr_t addr,
 
 	off = addr - buf->safe_dma_addr;
 
-	BUG_ON(buf->direction != dir);
+	BUG_ON(buf->direction != dir && buf->direction != DMA_BIDIRECTIONAL);
 
 	dev_dbg(dev, "%s: unsafe buffer %p (dma=%#x off=%#lx) mapped to %p (dma=%#x)\n",
 		__func__, buf->ptr, virt_to_dma(dev, buf->ptr), off,

-- 
Krzysztof Halasa

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 6/10] IXP4xx: Remove time limit for PCI TRDY to enable use of slow devices.
  2012-09-20 19:33 My collection of IXP4xx patches for the next window Krzysztof Halasa
                   ` (4 preceding siblings ...)
  2012-09-20 20:19 ` [PATCH 5/10] ARM: fix DMA-bounce code to allow sync from_device and to_device with bidirectional mappings Krzysztof Halasa
@ 2012-09-20 20:19 ` Krzysztof Halasa
  2012-09-20 20:19 ` [PATCH 7/10] WAN: Remove redundant HDLC info printed by IXP4xx HSS driver Krzysztof Halasa
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: Krzysztof Halasa @ 2012-09-20 20:19 UTC (permalink / raw)
  To: linux-arm-kernel

--- a/arch/arm/mach-ixp4xx/common-pci.c
+++ b/arch/arm/mach-ixp4xx/common-pci.c
@@ -410,6 +410,7 @@ void __init ixp4xx_pci_preinit(void)
 		 * Enable the IO window to be way up high, at 0xfffffc00
 		 */
 		local_write_config(PCI_BASE_ADDRESS_5, 4, 0xfffffc01);
+		local_write_config(0x40, 4, 0x000080FF); /* No TRDY time limit */
 	} else {
 		printk("PCI: IXP4xx is target - No bus scan performed\n");
 	}

-- 
Krzysztof Halasa

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 7/10] WAN: Remove redundant HDLC info printed by IXP4xx HSS driver.
  2012-09-20 19:33 My collection of IXP4xx patches for the next window Krzysztof Halasa
                   ` (5 preceding siblings ...)
  2012-09-20 20:19 ` [PATCH 6/10] IXP4xx: Remove time limit for PCI TRDY to enable use of slow devices Krzysztof Halasa
@ 2012-09-20 20:19 ` Krzysztof Halasa
  2012-09-20 20:21 ` [PATCH 8/10] IXP4xx crypto: MOD_AES{128, 192, 256} already include key size Krzysztof Halasa
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: Krzysztof Halasa @ 2012-09-20 20:19 UTC (permalink / raw)
  To: linux-arm-kernel

--- a/drivers/net/wan/ixp4xx_hss.c
+++ b/drivers/net/wan/ixp4xx_hss.c
@@ -1363,7 +1363,7 @@ static int __devinit hss_init_one(struct platform_device *pdev)
 
 	platform_set_drvdata(pdev, port);
 
-	netdev_info(dev, "HSS-%i\n", port->id);
+	netdev_info(dev, "initialized\n");
 	return 0;
 
 err_free_netdev:

-- 
Krzysztof Halasa

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 8/10] IXP4xx crypto: MOD_AES{128, 192, 256} already include key size.
  2012-09-20 19:33 My collection of IXP4xx patches for the next window Krzysztof Halasa
                   ` (6 preceding siblings ...)
  2012-09-20 20:19 ` [PATCH 7/10] WAN: Remove redundant HDLC info printed by IXP4xx HSS driver Krzysztof Halasa
@ 2012-09-20 20:21 ` Krzysztof Halasa
  2012-09-20 20:21 ` [PATCH 9/10] IXP4xx: Always ioremap() Queue Manager MMIO region at boot Krzysztof Halasa
  2012-09-20 20:21 ` [PATCH 10/10] IXP4xx: map CPU config registers within VMALLOC region Krzysztof Halasa
  9 siblings, 0 replies; 11+ messages in thread
From: Krzysztof Halasa @ 2012-09-20 20:21 UTC (permalink / raw)
  To: linux-arm-kernel

--- a/drivers/crypto/ixp4xx_crypto.c
+++ b/drivers/crypto/ixp4xx_crypto.c
@@ -750,12 +750,12 @@ static int setup_cipher(struct crypto_tfm *tfm, int encrypt,
 	}
 	if (cipher_cfg & MOD_AES) {
 		switch (key_len) {
-			case 16: keylen_cfg = MOD_AES128 | KEYLEN_128; break;
-			case 24: keylen_cfg = MOD_AES192 | KEYLEN_192; break;
-			case 32: keylen_cfg = MOD_AES256 | KEYLEN_256; break;
-			default:
-				*flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
-				return -EINVAL;
+		case 16: keylen_cfg = MOD_AES128; break;
+		case 24: keylen_cfg = MOD_AES192; break;
+		case 32: keylen_cfg = MOD_AES256; break;
+		default:
+			*flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
+			return -EINVAL;
 		}
 		cipher_cfg |= keylen_cfg;
 	} else if (cipher_cfg & MOD_3DES) {

-- 
Krzysztof Halasa

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 9/10] IXP4xx: Always ioremap() Queue Manager MMIO region at boot.
  2012-09-20 19:33 My collection of IXP4xx patches for the next window Krzysztof Halasa
                   ` (7 preceding siblings ...)
  2012-09-20 20:21 ` [PATCH 8/10] IXP4xx crypto: MOD_AES{128, 192, 256} already include key size Krzysztof Halasa
@ 2012-09-20 20:21 ` Krzysztof Halasa
  2012-09-20 20:21 ` [PATCH 10/10] IXP4xx: map CPU config registers within VMALLOC region Krzysztof Halasa
  9 siblings, 0 replies; 11+ messages in thread
From: Krzysztof Halasa @ 2012-09-20 20:21 UTC (permalink / raw)
  To: linux-arm-kernel

It doesn't make much sense to map QMgr dynamically - we almost always need it
and the static mapping will be needed for little-endian data-coherent operation
(to make QMgr region value-coherent).

--- a/arch/arm/mach-ixp4xx/common.c
+++ b/arch/arm/mach-ixp4xx/common.c
@@ -67,6 +67,11 @@ static struct map_desc ixp4xx_io_desc[] __initdata = {
 		.pfn		= __phys_to_pfn(IXP4XX_PCI_CFG_BASE_PHYS),
 		.length		= IXP4XX_PCI_CFG_REGION_SIZE,
 		.type		= MT_DEVICE
+	}, {	/* Queue Manager */
+		.virtual	= IXP4XX_QMGR_BASE_VIRT,
+		.pfn		= __phys_to_pfn(IXP4XX_QMGR_BASE_PHYS),
+		.length		= IXP4XX_QMGR_REGION_SIZE,
+		.type		= MT_DEVICE
 	},
 #ifdef CONFIG_DEBUG_LL
 	{	/* Debug UART mapping */
--- a/arch/arm/mach-ixp4xx/include/mach/ixp4xx-regs.h
+++ b/arch/arm/mach-ixp4xx/include/mach/ixp4xx-regs.h
@@ -30,19 +30,20 @@
  *
  * 0x50000000	0x10000000	ioremap'd	EXP BUS
  *
- * 0x6000000	0x00004000	ioremap'd	QMgr
+ * 0x60000000	0x00004000	0xffbe7000	QMgr
  *
- * 0xC0000000	0x00001000	0xffbff000	PCI CFG
+ * 0xC8000000	0x00013000	0xffbeb000	On-Chip Peripherals
  *
  * 0xC4000000	0x00001000	0xffbfe000	EXP CFG
  *
- * 0xC8000000	0x00013000	0xffbeb000	On-Chip Peripherals
+ * 0xC0000000	0x00001000	0xffbff000	PCI CFG
  */
 
 /*
  * Queue Manager
  */
 #define IXP4XX_QMGR_BASE_PHYS		(0x60000000)
+#define IXP4XX_QMGR_BASE_VIRT		IOMEM(0xFFBE7000)
 #define IXP4XX_QMGR_REGION_SIZE		(0x00004000)
 
 /*
--- a/arch/arm/mach-ixp4xx/include/mach/qmgr.h
+++ b/arch/arm/mach-ixp4xx/include/mach/qmgr.h
@@ -86,7 +86,7 @@ void qmgr_release_queue(unsigned int queue);
 
 static inline void qmgr_put_entry(unsigned int queue, u32 val)
 {
-	extern struct qmgr_regs __iomem *qmgr_regs;
+	const struct qmgr_regs __iomem *qmgr_regs = (void __iomem *)IXP4XX_QMGR_BASE_VIRT;
 #if DEBUG_QMGR
 	BUG_ON(!qmgr_queue_descs[queue]); /* not yet requested */
 
@@ -99,7 +99,7 @@ static inline void qmgr_put_entry(unsigned int queue, u32 val)
 static inline u32 qmgr_get_entry(unsigned int queue)
 {
 	u32 val;
-	extern struct qmgr_regs __iomem *qmgr_regs;
+	const struct qmgr_regs __iomem *qmgr_regs = (void __iomem *)IXP4XX_QMGR_BASE_VIRT;
 	val = __raw_readl(&qmgr_regs->acc[queue][0]);
 #if DEBUG_QMGR
 	BUG_ON(!qmgr_queue_descs[queue]); /* not yet requested */
@@ -112,14 +112,14 @@ static inline u32 qmgr_get_entry(unsigned int queue)
 
 static inline int __qmgr_get_stat1(unsigned int queue)
 {
-	extern struct qmgr_regs __iomem *qmgr_regs;
+	const struct qmgr_regs __iomem *qmgr_regs = (void __iomem *)IXP4XX_QMGR_BASE_VIRT;
 	return (__raw_readl(&qmgr_regs->stat1[queue >> 3])
 		>> ((queue & 7) << 2)) & 0xF;
 }
 
 static inline int __qmgr_get_stat2(unsigned int queue)
 {
-	extern struct qmgr_regs __iomem *qmgr_regs;
+	const struct qmgr_regs __iomem *qmgr_regs = (void __iomem *)IXP4XX_QMGR_BASE_VIRT;
 	BUG_ON(queue >= HALF_QUEUES);
 	return (__raw_readl(&qmgr_regs->stat2[queue >> 4])
 		>> ((queue & 0xF) << 1)) & 0x3;
@@ -145,7 +145,7 @@ static inline int qmgr_stat_empty(unsigned int queue)
  */
 static inline int qmgr_stat_below_low_watermark(unsigned int queue)
 {
-	extern struct qmgr_regs __iomem *qmgr_regs;
+	const struct qmgr_regs __iomem *qmgr_regs = (void __iomem *)IXP4XX_QMGR_BASE_VIRT;
 	if (queue >= HALF_QUEUES)
 		return (__raw_readl(&qmgr_regs->statne_h) >>
 			(queue - HALF_QUEUES)) & 0x01;
@@ -172,7 +172,7 @@ static inline int qmgr_stat_above_high_watermark(unsigned int queue)
  */
 static inline int qmgr_stat_full(unsigned int queue)
 {
-	extern struct qmgr_regs __iomem *qmgr_regs;
+	const struct qmgr_regs __iomem *qmgr_regs = (void __iomem *)IXP4XX_QMGR_BASE_VIRT;
 	if (queue >= HALF_QUEUES)
 		return (__raw_readl(&qmgr_regs->statf_h) >>
 			(queue - HALF_QUEUES)) & 0x01;
--- a/arch/arm/mach-ixp4xx/ixp4xx_qmgr.c
+++ b/arch/arm/mach-ixp4xx/ixp4xx_qmgr.c
@@ -14,7 +14,7 @@
 #include <linux/module.h>
 #include <mach/qmgr.h>
 
-struct qmgr_regs __iomem *qmgr_regs;
+static const struct qmgr_regs __iomem *qmgr_regs = (void __iomem *)IXP4XX_QMGR_BASE_VIRT;
 static struct resource *mem_res;
 static spinlock_t qmgr_lock;
 static u32 used_sram_bitmap[4]; /* 128 16-dword pages */
@@ -32,7 +32,7 @@ void qmgr_set_irq(unsigned int queue, int src,
 
 	spin_lock_irqsave(&qmgr_lock, flags);
 	if (queue < HALF_QUEUES) {
-		u32 __iomem *reg;
+		const u32 __iomem *reg;
 		int bit;
 		BUG_ON(src > QUEUE_IRQ_SRC_NOT_FULL);
 		reg = &qmgr_regs->irqsrc[queue >> 3]; /* 8 queues per u32 */
@@ -293,12 +293,6 @@ static int qmgr_init(void)
 	if (mem_res == NULL)
 		return -EBUSY;
 
-	qmgr_regs = ioremap(IXP4XX_QMGR_BASE_PHYS, IXP4XX_QMGR_REGION_SIZE);
-	if (qmgr_regs == NULL) {
-		err = -ENOMEM;
-		goto error_map;
-	}
-
 	/* reset qmgr registers */
 	for (i = 0; i < 4; i++) {
 		__raw_writel(0x33333333, &qmgr_regs->stat1[i]);
@@ -347,8 +341,6 @@ static int qmgr_init(void)
 error_irq2:
 	free_irq(IRQ_IXP4XX_QM1, NULL);
 error_irq:
-	iounmap(qmgr_regs);
-error_map:
 	release_mem_region(IXP4XX_QMGR_BASE_PHYS, IXP4XX_QMGR_REGION_SIZE);
 	return err;
 }
@@ -359,7 +351,6 @@ static void qmgr_remove(void)
 	free_irq(IRQ_IXP4XX_QM2, NULL);
 	synchronize_irq(IRQ_IXP4XX_QM1);
 	synchronize_irq(IRQ_IXP4XX_QM2);
-	iounmap(qmgr_regs);
 	release_mem_region(IXP4XX_QMGR_BASE_PHYS, IXP4XX_QMGR_REGION_SIZE);
 }
 
@@ -369,7 +360,6 @@ module_exit(qmgr_remove);
 MODULE_LICENSE("GPL v2");
 MODULE_AUTHOR("Krzysztof Halasa");
 
-EXPORT_SYMBOL(qmgr_regs);
 EXPORT_SYMBOL(qmgr_set_irq);
 EXPORT_SYMBOL(qmgr_enable_irq);
 EXPORT_SYMBOL(qmgr_disable_irq);

-- 
Krzysztof Halasa

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 10/10] IXP4xx: map CPU config registers within VMALLOC region.
  2012-09-20 19:33 My collection of IXP4xx patches for the next window Krzysztof Halasa
                   ` (8 preceding siblings ...)
  2012-09-20 20:21 ` [PATCH 9/10] IXP4xx: Always ioremap() Queue Manager MMIO region at boot Krzysztof Halasa
@ 2012-09-20 20:21 ` Krzysztof Halasa
  9 siblings, 0 replies; 11+ messages in thread
From: Krzysztof Halasa @ 2012-09-20 20:21 UTC (permalink / raw)
  To: linux-arm-kernel

The extra 1MB-aligned debug console mapping is no longer needed as well.

--- a/arch/arm/mach-ixp4xx/common.c
+++ b/arch/arm/mach-ixp4xx/common.c
@@ -73,14 +73,6 @@ static struct map_desc ixp4xx_io_desc[] __initdata = {
 		.length		= IXP4XX_QMGR_REGION_SIZE,
 		.type		= MT_DEVICE
 	},
-#ifdef CONFIG_DEBUG_LL
-	{	/* Debug UART mapping */
-		.virtual	= (unsigned long)IXP4XX_DEBUG_UART_BASE_VIRT,
-		.pfn		= __phys_to_pfn(IXP4XX_DEBUG_UART_BASE_PHYS),
-		.length		= IXP4XX_DEBUG_UART_REGION_SIZE,
-		.type		= MT_DEVICE
-	}
-#endif
 };
 
 void __init ixp4xx_map_io(void)
--- a/arch/arm/mach-ixp4xx/include/mach/debug-macro.S
+++ b/arch/arm/mach-ixp4xx/include/mach/debug-macro.S
@@ -17,8 +17,8 @@
 #else
 		mov	\rp, #0
 #endif
-                orr     \rv, \rp, #0xff000000	@ virtual
-		orr	\rv, \rv, #0x00b00000
+		orr	\rv, \rp, #0xfe000000	@ virtual
+		orr	\rv, \rv, #0x00f00000
                 orr     \rp, \rp, #0xc8000000	@ physical
                 .endm
 
--- a/arch/arm/mach-ixp4xx/include/mach/ixp4xx-regs.h
+++ b/arch/arm/mach-ixp4xx/include/mach/ixp4xx-regs.h
@@ -30,52 +30,43 @@
  *
  * 0x50000000	0x10000000	ioremap'd	EXP BUS
  *
- * 0x60000000	0x00004000	0xffbe7000	QMgr
+ * 0xC8000000	0x00013000	0xFEF00000	On-Chip Peripherals
  *
- * 0xC8000000	0x00013000	0xffbeb000	On-Chip Peripherals
+ * 0xC0000000	0x00001000	0xFEF13000	PCI CFG
  *
- * 0xC4000000	0x00001000	0xffbfe000	EXP CFG
+ * 0xC4000000	0x00001000	0xFEF14000	EXP CFG
  *
- * 0xC0000000	0x00001000	0xffbff000	PCI CFG
+ * 0x60000000	0x00004000	0xFEF15000	QMgr
  */
 
 /*
  * Queue Manager
  */
-#define IXP4XX_QMGR_BASE_PHYS		(0x60000000)
-#define IXP4XX_QMGR_BASE_VIRT		IOMEM(0xFFBE7000)
-#define IXP4XX_QMGR_REGION_SIZE		(0x00004000)
+#define IXP4XX_QMGR_BASE_PHYS		0x60000000
+#define IXP4XX_QMGR_BASE_VIRT		IOMEM(0xFEF15000)
+#define IXP4XX_QMGR_REGION_SIZE		0x00004000
 
 /*
- * Expansion BUS Configuration registers
+ * Peripheral space, including debug UART. Must be section-aligned so that
+ * it can be used with the low-level debug code.
  */
-#define IXP4XX_EXP_CFG_BASE_PHYS	(0xC4000000)
-#define IXP4XX_EXP_CFG_BASE_VIRT	IOMEM(0xFFBFE000)
-#define IXP4XX_EXP_CFG_REGION_SIZE	(0x00001000)
+#define IXP4XX_PERIPHERAL_BASE_PHYS	0xC8000000
+#define IXP4XX_PERIPHERAL_BASE_VIRT	IOMEM(0xFEF00000)
+#define IXP4XX_PERIPHERAL_REGION_SIZE	0x00013000
 
 /*
  * PCI Config registers
  */
-#define IXP4XX_PCI_CFG_BASE_PHYS	(0xC0000000)
-#define	IXP4XX_PCI_CFG_BASE_VIRT	IOMEM(0xFFBFF000)
-#define IXP4XX_PCI_CFG_REGION_SIZE	(0x00001000)
-
-/*
- * Peripheral space
- */
-#define IXP4XX_PERIPHERAL_BASE_PHYS	(0xC8000000)
-#define IXP4XX_PERIPHERAL_BASE_VIRT	IOMEM(0xFFBEB000)
-#define IXP4XX_PERIPHERAL_REGION_SIZE	(0x00013000)
+#define IXP4XX_PCI_CFG_BASE_PHYS	0xC0000000
+#define IXP4XX_PCI_CFG_BASE_VIRT	IOMEM(0xFEF13000)
+#define IXP4XX_PCI_CFG_REGION_SIZE	0x00001000
 
 /*
- * Debug UART
- *
- * This is basically a remap of UART1 into a region that is section
- * aligned so that it * can be used with the low-level debug code.
+ * Expansion BUS Configuration registers
  */
-#define	IXP4XX_DEBUG_UART_BASE_PHYS	(0xC8000000)
-#define	IXP4XX_DEBUG_UART_BASE_VIRT	IOMEM(0xffb00000)
-#define	IXP4XX_DEBUG_UART_REGION_SIZE	(0x00001000)
+#define IXP4XX_EXP_CFG_BASE_PHYS	0xC4000000
+#define IXP4XX_EXP_CFG_BASE_VIRT	0xFEF14000
+#define IXP4XX_EXP_CFG_REGION_SIZE	0x00001000
 
 #define IXP4XX_EXP_CS0_OFFSET	0x00
 #define IXP4XX_EXP_CS1_OFFSET   0x04

-- 
Krzysztof Halasa

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2012-09-20 20:21 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-20 19:33 My collection of IXP4xx patches for the next window Krzysztof Halasa
2012-09-20 20:16 ` [PATCH 1/10] IXP4xx: Fix Goramo MultiLink platform compilation Krzysztof Halasa
2012-09-20 20:16 ` [PATCH 2/10] IXP4xx: Fix off-by-one bug in Goramo MultiLink platform Krzysztof Halasa
2012-09-20 20:17 ` [PATCH 3/10] IXP4xx: HW pseudo-random generator is available on IXP45x/46x only Krzysztof Halasa
2012-09-20 20:18 ` [PATCH 4/10] IXP4xx: ixp4xx_crypto driver requires Queue Manager and NPE drivers Krzysztof Halasa
2012-09-20 20:19 ` [PATCH 5/10] ARM: fix DMA-bounce code to allow sync from_device and to_device with bidirectional mappings Krzysztof Halasa
2012-09-20 20:19 ` [PATCH 6/10] IXP4xx: Remove time limit for PCI TRDY to enable use of slow devices Krzysztof Halasa
2012-09-20 20:19 ` [PATCH 7/10] WAN: Remove redundant HDLC info printed by IXP4xx HSS driver Krzysztof Halasa
2012-09-20 20:21 ` [PATCH 8/10] IXP4xx crypto: MOD_AES{128, 192, 256} already include key size Krzysztof Halasa
2012-09-20 20:21 ` [PATCH 9/10] IXP4xx: Always ioremap() Queue Manager MMIO region at boot Krzysztof Halasa
2012-09-20 20:21 ` [PATCH 10/10] IXP4xx: map CPU config registers within VMALLOC region Krzysztof Halasa

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).