Commit 01c496c1 authored by Alessandro Rubini's avatar Alessandro Rubini

patches: removed v2 material (it's in v2 branch, if needed)

parent d01edc4a
This diff is collapsed.
From a2e39cf1c95a637ec71a43aefcc7e584349b091c Mon Sep 17 00:00:00 2001
From: Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
Date: Sat, 11 Sep 2010 20:24:01 +0200
Subject: [PATCH] WR switch: support for all 10 ports
---
arch/arm/mach-at91/board-whiterabbit-mch.c | 70 ++++++++++------------------
1 files changed, 25 insertions(+), 45 deletions(-)
diff --git a/arch/arm/mach-at91/board-whiterabbit-mch.c b/arch/arm/mach-at91/board-whiterabbit-mch.c
index c1cbe11..2e5d458 100644
--- a/arch/arm/mach-at91/board-whiterabbit-mch.c
+++ b/arch/arm/mach-at91/board-whiterabbit-mch.c
@@ -121,55 +121,27 @@ static struct at91_eth_data wr_mch_macb_data __initdata = {
#define WR_MINIC_BASE_UP0 0x700a0000
#define WR_MINIC_BASE_UP1 0x70080000
+#define WR_MINIC_BASE_DP0 0x700c0000
+#define WR_MINIC_BASE_DP1 0x700e0000
+#define WR_MINIC_BASE_DP2 0x70100000
+#define WR_MINIC_BASE_DP3 0x70120000
+#define WR_MINIC_BASE_DP4 0x70140000
+#define WR_MINIC_BASE_DP5 0x70160000
+#define WR_MINIC_BASE_DP6 0x70180000
+#define WR_MINIC_BASE_DP7 0x701a0000
+
#define WR_MINIC_SIZE 0x20000
#define WR_MINIC_IRQ_UP0 0
#define WR_MINIC_IRQ_UP1 1
-
-#if 0
-
-static struct resource wr_minic_up1_resources[] = {
- [0] = {
- .start = WR_MINIC_BASE_UP1,
- .end = WR_MINIC_BASE_UP1 + WR_MINIC_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
- [1] = {
- .start = WR_MINIC_IRQ_UP1,
- .end = WR_MINIC_IRQ_UP1,
- .flags = IORESOURCE_IRQ,
- },
-};
-
-static struct resource wr_minic_up0_resources[] = {
- [0] = {
- .start = WR_MINIC_BASE_UP0,
- .end = WR_MINIC_BASE_UP0 + WR_MINIC_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
- [1] = {
- .start = WR_MINIC_IRQ_UP0,
- .end = WR_MINIC_IRQ_UP0,
- .flags = IORESOURCE_IRQ,
- },
-};
-
-
-
-static struct platform_device wr_minic_up1_device = {
- .name = "wr-minic",
- .id = -1,
- .dev = {
- .dma_mask = &wr_minic_dmamask,
- .coherent_dma_mask = DMA_BIT_MASK(32),
- .platform_data = NULL,
- },
-
- .resource = wr_minic_up0_resources,
- .num_resources = ARRAY_SIZE(wr_minic_up1_resources),
-};
-
-#endif
+#define WR_MINIC_IRQ_DP0 2
+#define WR_MINIC_IRQ_DP1 3
+#define WR_MINIC_IRQ_DP2 4
+#define WR_MINIC_IRQ_DP3 5
+#define WR_MINIC_IRQ_DP4 6
+#define WR_MINIC_IRQ_DP5 7
+#define WR_MINIC_IRQ_DP6 8
+#define WR_MINIC_IRQ_DP7 9
static u64 wr_minic_dmamask = DMA_BIT_MASK(32);
@@ -353,6 +325,14 @@ static void __init wr_mch_board_init(void)
/* initialise the NIC */
wr_mch_register_minic_port(0, PORT_UP, 0, WR_MINIC_BASE_UP0, WR_MINIC_IRQ_UP0);
wr_mch_register_minic_port(1, PORT_UP, 1, WR_MINIC_BASE_UP1, WR_MINIC_IRQ_UP1);
+ wr_mch_register_minic_port(2, PORT_DOWN, 0, WR_MINIC_BASE_DP0, WR_MINIC_IRQ_DP0);
+ wr_mch_register_minic_port(3, PORT_DOWN, 1, WR_MINIC_BASE_DP1, WR_MINIC_IRQ_DP1);
+ wr_mch_register_minic_port(4, PORT_DOWN, 2, WR_MINIC_BASE_DP2, WR_MINIC_IRQ_DP2);
+ wr_mch_register_minic_port(5, PORT_DOWN, 3, WR_MINIC_BASE_DP3, WR_MINIC_IRQ_DP3);
+ wr_mch_register_minic_port(6, PORT_DOWN, 4, WR_MINIC_BASE_DP4, WR_MINIC_IRQ_DP4);
+ wr_mch_register_minic_port(7, PORT_DOWN, 5, WR_MINIC_BASE_DP5, WR_MINIC_IRQ_DP5);
+ wr_mch_register_minic_port(8, PORT_DOWN, 6, WR_MINIC_BASE_DP6, WR_MINIC_IRQ_DP6);
+ wr_mch_register_minic_port(9, PORT_DOWN, 7, WR_MINIC_BASE_DP7, WR_MINIC_IRQ_DP7);
/* shutdown controller, wakeup button (5 msec low) */
at91_sys_write(AT91_SHDW_MR, AT91_SHDW_CPTWK0_(10) |
--
1.5.6.5
From a5a61f90ebdee0a1a718802a27fdc3a7fcdba785 Mon Sep 17 00:00:00 2001
From: Alessandro Rubini <rubini@gnudd.com>
Date: Wed, 17 Nov 2010 12:49:30 +0100
Subject: [PATCH] WR switch: new board-mch changes by Tom
---
arch/arm/mach-at91/board-whiterabbit-mch.c | 86 +++++++++++++++++----------
1 files changed, 54 insertions(+), 32 deletions(-)
diff --git a/arch/arm/mach-at91/board-whiterabbit-mch.c b/arch/arm/mach-at91/board-whiterabbit-mch.c
index 2e5d458..e19ab93 100644
--- a/arch/arm/mach-at91/board-whiterabbit-mch.c
+++ b/arch/arm/mach-at91/board-whiterabbit-mch.c
@@ -97,13 +97,21 @@ static struct flash_platform_data wr_mch_flash_platform __initdata = {
};
static struct spi_board_info wr_mch_spi_devices[] __initdata = {
- {
- .modalias = "mtd_dataflash",
- .chip_select = 0,
- .max_speed_hz = 5 * 1000 * 1000,
- .bus_num = 0,
- .platform_data = &wr_mch_flash_platform
- }
+ {
+ .modalias = "mtd_dataflash",
+ .chip_select = 0,
+ .max_speed_hz = 5 * 1000 * 1000,
+ .bus_num = 0,
+ .platform_data = &wr_mch_flash_platform
+ },
+ {
+ .modalias = "spidev",
+ .chip_select = 0,
+ .max_speed_hz = 20 * 1000,
+ .bus_num = 1
+ }
+
+
};
/*
@@ -118,19 +126,28 @@ static struct at91_eth_data wr_mch_macb_data __initdata = {
* WhiteRabbit NIC (wr-nic) stub
*/
-#define WR_MINIC_BASE_UP0 0x700a0000
-#define WR_MINIC_BASE_UP1 0x70080000
-
-#define WR_MINIC_BASE_DP0 0x700c0000
-#define WR_MINIC_BASE_DP1 0x700e0000
-#define WR_MINIC_BASE_DP2 0x70100000
-#define WR_MINIC_BASE_DP3 0x70120000
-#define WR_MINIC_BASE_DP4 0x70140000
-#define WR_MINIC_BASE_DP5 0x70160000
-#define WR_MINIC_BASE_DP6 0x70180000
-#define WR_MINIC_BASE_DP7 0x701a0000
-
-#define WR_MINIC_SIZE 0x20000
+#define _FPGA_BUS_2_ADDR(bus) (0x70000000 + (bus) * 0x10000)
+
+#define FPGA_BASE_REVID _FPGA_BUS_2_ADDR(0)
+#define FPGA_BASE_GPIO _FPGA_BUS_2_ADDR(1)
+#define FPGA_BASE_SPIM _FPGA_BUS_2_ADDR(2)
+#define FPGA_BASE_VIC _FPGA_BUS_2_ADDR(3)
+#define FPGA_BASE_MINIC_UP1 _FPGA_BUS_2_ADDR(4)
+#define FPGA_BASE_MINIC_UP0 _FPGA_BUS_2_ADDR(5)
+#define FPGA_BASE_MINIC_DP0 _FPGA_BUS_2_ADDR(6)
+#define FPGA_BASE_MINIC_DP1 _FPGA_BUS_2_ADDR(7)
+#define FPGA_BASE_MINIC_DP2 _FPGA_BUS_2_ADDR(8)
+#define FPGA_BASE_MINIC_DP3 _FPGA_BUS_2_ADDR(9)
+#define FPGA_BASE_MINIC_DP4 _FPGA_BUS_2_ADDR(10)
+#define FPGA_BASE_MINIC_DP5 _FPGA_BUS_2_ADDR(11)
+#define FPGA_BASE_MINIC_DP6 _FPGA_BUS_2_ADDR(12)
+#define FPGA_BASE_MINIC_DP7 _FPGA_BUS_2_ADDR(13)
+#define FPGA_BASE_PPS_GEN _FPGA_BUS_2_ADDR(14)
+#define FPGA_BASE_CALIBRATOR _FPGA_BUS_2_ADDR(15)
+#define FPGA_BASE_RTU _FPGA_BUS_2_ADDR(16)
+#define FPGA_BASE_RTU_TESTUNIT _FPGA_BUS_2_ADDR(17)
+
+#define WR_MINIC_SIZE 0x10000
#define WR_MINIC_IRQ_UP0 0
#define WR_MINIC_IRQ_UP1 1
@@ -165,7 +182,7 @@ static void __init wr_mch_register_minic_port(int id, int mode, int index, u32 b
snprintf(buf, sizeof(buf), "wr%c%d", (mode == PORT_UP ? 'u' : 'd'), index);
pdev = kzalloc(sizeof(struct platform_device), GFP_KERNEL); // FIXME: add error checking
- res_list = kzalloc(2 * sizeof(struct resource), GFP_KERNEL);
+ res_list = kzalloc(3 * sizeof(struct resource), GFP_KERNEL);
pdev->name = my_strdup("wr_minic");
pdev->id = id;
@@ -173,7 +190,7 @@ static void __init wr_mch_register_minic_port(int id, int mode, int index, u32 b
pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32);
pdev->dev.platform_data = (void *) my_strdup(buf);
pdev->resource = res_list;
- pdev->num_resources = 2;
+ pdev->num_resources = 3;
res_list[0].start = base_addr;
res_list[0].end = base_addr + WR_MINIC_SIZE - 1;
@@ -183,6 +200,11 @@ static void __init wr_mch_register_minic_port(int id, int mode, int index, u32 b
res_list[1].end = interrupt;
res_list[1].flags = IORESOURCE_IRQ;
+ res_list[2].start = FPGA_BASE_PPS_GEN;
+ res_list[2].end = FPGA_BASE_PPS_GEN + 0x1000-1;
+ res_list[2].flags = IORESOURCE_MEM;
+
+
platform_device_register(pdev);
}
@@ -323,16 +345,16 @@ static void __init wr_mch_board_init(void)
at91_add_device_i2c(NULL, 0);
/* initialise the NIC */
- wr_mch_register_minic_port(0, PORT_UP, 0, WR_MINIC_BASE_UP0, WR_MINIC_IRQ_UP0);
- wr_mch_register_minic_port(1, PORT_UP, 1, WR_MINIC_BASE_UP1, WR_MINIC_IRQ_UP1);
- wr_mch_register_minic_port(2, PORT_DOWN, 0, WR_MINIC_BASE_DP0, WR_MINIC_IRQ_DP0);
- wr_mch_register_minic_port(3, PORT_DOWN, 1, WR_MINIC_BASE_DP1, WR_MINIC_IRQ_DP1);
- wr_mch_register_minic_port(4, PORT_DOWN, 2, WR_MINIC_BASE_DP2, WR_MINIC_IRQ_DP2);
- wr_mch_register_minic_port(5, PORT_DOWN, 3, WR_MINIC_BASE_DP3, WR_MINIC_IRQ_DP3);
- wr_mch_register_minic_port(6, PORT_DOWN, 4, WR_MINIC_BASE_DP4, WR_MINIC_IRQ_DP4);
- wr_mch_register_minic_port(7, PORT_DOWN, 5, WR_MINIC_BASE_DP5, WR_MINIC_IRQ_DP5);
- wr_mch_register_minic_port(8, PORT_DOWN, 6, WR_MINIC_BASE_DP6, WR_MINIC_IRQ_DP6);
- wr_mch_register_minic_port(9, PORT_DOWN, 7, WR_MINIC_BASE_DP7, WR_MINIC_IRQ_DP7);
+ wr_mch_register_minic_port(0, PORT_UP, 0, FPGA_BASE_MINIC_UP0, WR_MINIC_IRQ_UP0);
+ wr_mch_register_minic_port(1, PORT_UP, 1, FPGA_BASE_MINIC_UP1, WR_MINIC_IRQ_UP1);
+ wr_mch_register_minic_port(2, PORT_DOWN, 0, FPGA_BASE_MINIC_DP0, WR_MINIC_IRQ_DP0);
+ wr_mch_register_minic_port(3, PORT_DOWN, 1, FPGA_BASE_MINIC_DP1, WR_MINIC_IRQ_DP1);
+ wr_mch_register_minic_port(4, PORT_DOWN, 2, FPGA_BASE_MINIC_DP2, WR_MINIC_IRQ_DP2);
+ wr_mch_register_minic_port(5, PORT_DOWN, 3, FPGA_BASE_MINIC_DP3, WR_MINIC_IRQ_DP3);
+ wr_mch_register_minic_port(6, PORT_DOWN, 4, FPGA_BASE_MINIC_DP4, WR_MINIC_IRQ_DP4);
+ wr_mch_register_minic_port(7, PORT_DOWN, 5, FPGA_BASE_MINIC_DP5, WR_MINIC_IRQ_DP5);
+ wr_mch_register_minic_port(8, PORT_DOWN, 6, FPGA_BASE_MINIC_DP6, WR_MINIC_IRQ_DP6);
+ wr_mch_register_minic_port(9, PORT_DOWN, 7, FPGA_BASE_MINIC_DP7, WR_MINIC_IRQ_DP7);
/* shutdown controller, wakeup button (5 msec low) */
at91_sys_write(AT91_SHDW_MR, AT91_SHDW_CPTWK0_(10) |
--
1.5.6.5
From 4e4080233a2843d405a8c0574209a8245baa7de5 Mon Sep 17 00:00:00 2001
From: Alessandro Rubini <rubini@gnudd.com>
Date: Sat, 20 Nov 2010 13:15:48 +0100
Subject: [PATCH] initramfs: stop after one cpio archive
---
init/initramfs.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/init/initramfs.c b/init/initramfs.c
index 4b9c202..9b446ff 100644
--- a/init/initramfs.c
+++ b/init/initramfs.c
@@ -461,6 +461,7 @@ static char * __init unpack_to_rootfs(char *buf, unsigned len)
error("junk in compressed archive");
if (state != Reset)
error("junk in compressed archive");
+ break; /* so we can use a bigger initrd size in the cmdline */
this_header = saved_offset + my_inptr;
buf += my_inptr;
len -= my_inptr;
--
1.5.6.5
From 440da8b0b0384a59da9161595586200edbd86bca Mon Sep 17 00:00:00 2001
From: Alessandro Rubini <rubini@gnudd.com>
Date: Mon, 22 Nov 2010 15:45:30 +0100
Subject: [PATCH] at91 NR_IRQS: increase by 64 to fit custom muxes
---
arch/arm/mach-at91/include/mach/irqs.h | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/arch/arm/mach-at91/include/mach/irqs.h b/arch/arm/mach-at91/include/mach/irqs.h
index 36bd55f..04a080c 100644
--- a/arch/arm/mach-at91/include/mach/irqs.h
+++ b/arch/arm/mach-at91/include/mach/irqs.h
@@ -40,7 +40,11 @@
* symbols in gpio.h for ones handled indirectly as GPIOs.
* We make provision for 5 banks of GPIO.
*/
-#define NR_IRQS (NR_AIC_IRQS + (5 * 32))
+#if 0
+ #define NR_IRQS (NR_AIC_IRQS + (5 * 32))
+#else /* Actually, we want to allow a pair of board-specific multiplexers */
+ #define NR_IRQS (NR_AIC_IRQS + (5 * 32) + (2 * 32))
+#endif
/* FIQ is AIC source 0. */
#define FIQ_START AT91_ID_FIQ
--
1.5.6.5
From f4ea42c0afc36348ad45e6cf1198773c2222da86 Mon Sep 17 00:00:00 2001
From: Alessandro Rubini <rubini@gnudd.com>
Date: Mon, 22 Nov 2010 15:56:36 +0100
Subject: [PATCH] IRQ: export two symbols needed by external irq_chip
---
arch/arm/kernel/irq.c | 1 +
kernel/irq/handle.c | 1 +
2 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c
index 3b3d2c8..bd57e41 100644
--- a/arch/arm/kernel/irq.c
+++ b/arch/arm/kernel/irq.c
@@ -148,6 +148,7 @@ void set_irq_flags(unsigned int irq, unsigned int iflags)
desc->status &= ~IRQ_NOAUTOEN;
raw_spin_unlock_irqrestore(&desc->lock, flags);
}
+EXPORT_SYMBOL_GPL(set_irq_flags); /* Temporary: needed for WRVIC */
void __init init_IRQ(void)
{
diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c
index 27e5c69..49e7565 100644
--- a/kernel/irq/handle.c
+++ b/kernel/irq/handle.c
@@ -276,6 +276,7 @@ struct irq_desc *irq_to_desc(unsigned int irq)
{
return (irq < NR_IRQS) ? irq_desc + irq : NULL;
}
+EXPORT_SYMBOL_GPL(irq_to_desc); /* Temporary: needed for WRVIC */
struct irq_desc *irq_to_desc_alloc_node(unsigned int irq, int node)
{
--
1.5.6.5
From c99a8d1f7ee6f925223b3022c6583238023401dd Mon Sep 17 00:00:00 2001
From: Alessandro Rubini <rubini@gnudd.com>
Date: Tue, 12 Apr 2011 14:02:24 +0200
Subject: [PATCH] IRQ: export handle_bad_irq for WR switch modules
---
kernel/irq/handle.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c
index 49e7565..3b514a3 100644
--- a/kernel/irq/handle.c
+++ b/kernel/irq/handle.c
@@ -42,6 +42,7 @@ void handle_bad_irq(unsigned int irq, struct irq_desc *desc)
kstat_incr_irqs_this_cpu(irq, desc);
ack_bad_irq(irq);
}
+EXPORT_SYMBOL_GPL(handle_bad_irq); /* Temporary: needed for WRVIC */
#if defined(CONFIG_SMP) && defined(CONFIG_GENERIC_HARDIRQS)
static void __init init_irq_default_affinity(void)
--
1.5.6.5
From 1a730512f5e6bb1dcdaf5d2e57176ab87c61d481 Mon Sep 17 00:00:00 2001
From: Alessandro Rubini <rubini@gnudd.com>
Date: Tue, 12 Apr 2011 14:03:48 +0200
Subject: [PATCH] WR switch: added MMC support
---
arch/arm/mach-at91/board-whiterabbit-mch.c | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-at91/board-whiterabbit-mch.c b/arch/arm/mach-at91/board-whiterabbit-mch.c
index e19ab93..66a6aa7 100644
--- a/arch/arm/mach-at91/board-whiterabbit-mch.c
+++ b/arch/arm/mach-at91/board-whiterabbit-mch.c
@@ -123,6 +123,16 @@ static struct at91_eth_data wr_mch_macb_data __initdata = {
};
/*
+ * MCI (SD/MMC)
+ */
+static struct at91_mmc_data __initdata ek_mmc_data = {
+ .wire4 = 1,
+ .det_pin = AT91_PIN_PE18,
+ .wp_pin = AT91_PIN_PE19,
+// .vcc_pin = ... not connected
+};
+
+/*
* WhiteRabbit NIC (wr-nic) stub
*/
@@ -344,6 +354,8 @@ static void __init wr_mch_board_init(void)
*/
at91_add_device_i2c(NULL, 0);
+ at91_add_device_mmc(1, &ek_mmc_data);
+
/* initialise the NIC */
wr_mch_register_minic_port(0, PORT_UP, 0, FPGA_BASE_MINIC_UP0, WR_MINIC_IRQ_UP0);
wr_mch_register_minic_port(1, PORT_UP, 1, FPGA_BASE_MINIC_UP1, WR_MINIC_IRQ_UP1);
--
1.5.6.5
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment