Discussion:
[uClinux-dev] [PATCH 0/7] m68knommu: clean up and merge common ColdFire FEC code
gerg
2012-02-24 04:24:04 UTC
Permalink
The code to init and platform setup the ColdFire FEC devices is duplicated
throughout the CPU specific config.c files. It is all common, this is the
same FEC hardware block, just with different base addresses and IRQ numbers
used.

Cleanup and merge the common FEC platform code.


arch/m68k/platform/520x/config.c | 31 -------------
arch/m68k/platform/523x/config.c | 31 -------------
arch/m68k/platform/5272/config.c | 37 ---------------
arch/m68k/platform/527x/config.c | 65 ---------------------------
arch/m68k/platform/528x/config.c | 31 -------------
arch/m68k/platform/532x/config.c | 31 -------------
b/arch/m68k/include/asm/m520xsim.h | 11 +++-
b/arch/m68k/include/asm/m523xsim.h | 13 ++++-
b/arch/m68k/include/asm/m5272sim.h | 9 ++-
b/arch/m68k/include/asm/m527xsim.h | 15 ++++++
b/arch/m68k/include/asm/m528xsim.h | 11 +++-
b/arch/m68k/include/asm/m532xsim.h | 13 +++++
b/arch/m68k/platform/520x/config.c | 16 +++---
b/arch/m68k/platform/523x/config.c | 16 +++---
b/arch/m68k/platform/5272/config.c | 16 +++---
b/arch/m68k/platform/527x/config.c | 24 +++++-----
b/arch/m68k/platform/528x/config.c | 16 +++---
b/arch/m68k/platform/532x/config.c | 16 +++---
b/arch/m68k/platform/coldfire/device.c | 78 +++++++++++++++++++++++++++++++++
19 files changed, 192 insertions(+), 288 deletions(-)
gerg
2012-02-24 04:24:06 UTC
Permalink
From: Greg Ungerer <gerg at uclinux.org>

If we make all FEC (ethernet) addressing consistent across all ColdFire
family members then we will be able to remove the duplicated plaform data
and use a single setup for all.

So modify the ColdFire 523x FEC addressing so that:

. FECs are numbered from 0 up
. base addresses are absolute (not relative to MBAR peripheral register)
. use a common name for IRQs used

Signed-off-by: Greg Ungerer <gerg at uclinux.org>
---
arch/m68k/include/asm/m523xsim.h | 13 ++++++++++---
arch/m68k/platform/523x/config.c | 16 ++++++++--------
2 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/arch/m68k/include/asm/m523xsim.h b/arch/m68k/include/asm/m523xsim.h
index 919d115..e1988dd 100644
--- a/arch/m68k/include/asm/m523xsim.h
+++ b/arch/m68k/include/asm/m523xsim.h
@@ -37,13 +37,20 @@
#define MCFINT_UART0 13 /* Interrupt number for UART0 */
#define MCFINT_UART1 14 /* Interrupt number for UART1 */
#define MCFINT_UART2 15 /* Interrupt number for UART2 */
-#define MCFINT_PIT1 36 /* Interrupt number for PIT1 */
#define MCFINT_QSPI 18 /* Interrupt number for QSPI */
+#define MCFINT_FECRX0 23 /* Interrupt number for FEC */
+#define MCFINT_FECTX0 27 /* Interrupt number for FEC */
+#define MCFINT_FECENTC0 29 /* Interrupt number for FEC */
+#define MCFINT_PIT1 36 /* Interrupt number for PIT1 */

#define MCF_IRQ_UART0 (MCFINT_VECBASE + MCFINT_UART0)
#define MCF_IRQ_UART1 (MCFINT_VECBASE + MCFINT_UART1)
#define MCF_IRQ_UART2 (MCFINT_VECBASE + MCFINT_UART2)

+#define MCF_IRQ_FECRX0 (MCFINT_VECBASE + MCFINT_FECRX0)
+#define MCF_IRQ_FECTX0 (MCFINT_VECBASE + MCFINT_FECTX0)
+#define MCF_IRQ_FECENTC0 (MCFINT_VECBASE + MCFINT_FECENTC0)
+
/*
* SDRAM configuration registers.
*/
@@ -72,8 +79,8 @@
/*
* FEC ethernet module.
*/
-#define MCFFEC_BASE (MCF_IPSBAR + 0x1000)
-#define MCFFEC_SIZE 0x800
+#define MCFFEC_BASE0 (MCF_IPSBAR + 0x1000)
+#define MCFFEC_SIZE0 0x800

/*
* GPIO module.
diff --git a/arch/m68k/platform/523x/config.c b/arch/m68k/platform/523x/config.c
index 308aed1..5433c76 100644
--- a/arch/m68k/platform/523x/config.c
+++ b/arch/m68k/platform/523x/config.c
@@ -28,23 +28,23 @@

static struct resource m523x_fec_resources[] = {
{
- .start = MCFFEC_BASE,
- .end = MCFFEC_BASE + MCFFEC_SIZE - 1,
+ .start = MCFFEC_BASE0,
+ .end = MCFFEC_BASE0 + MCFFEC_SIZE0 - 1,
.flags = IORESOURCE_MEM,
},
{
- .start = 64 + 23,
- .end = 64 + 23,
+ .start = MCF_IRQ_FECRX0,
+ .end = MCF_IRQ_FECRX0,
.flags = IORESOURCE_IRQ,
},
{
- .start = 64 + 27,
- .end = 64 + 27,
+ .start = MCF_IRQ_FECTX0,
+ .end = MCF_IRQ_FECTX0,
.flags = IORESOURCE_IRQ,
},
{
- .start = 64 + 29,
- .end = 64 + 29,
+ .start = MCF_IRQ_FECENTC0,
+ .end = MCF_IRQ_FECENTC0,
.flags = IORESOURCE_IRQ,
},
};
--
1.7.0.4
gerg
2012-02-24 04:24:08 UTC
Permalink
From: Greg Ungerer <gerg at uclinux.org>

If we make all FEC (ethernet) addressing consistent across all ColdFire
family members then we will be able to remove the duplicated plaform data
and use a single setup for all.

So modify the ColdFire 527x FEC addressing so that:

. FECs are numbered from 0 up
. base addresses are absolute (not relative to MBAR peripheral register)
. use a common name for IRQs used

Signed-off-by: Greg Ungerer <gerg at uclinux.org>
---
arch/m68k/include/asm/m527xsim.h | 15 +++++++++++++++
arch/m68k/platform/527x/config.c | 24 ++++++++++++------------
2 files changed, 27 insertions(+), 12 deletions(-)

diff --git a/arch/m68k/include/asm/m527xsim.h b/arch/m68k/include/asm/m527xsim.h
index 7399968..59bb776 100644
--- a/arch/m68k/include/asm/m527xsim.h
+++ b/arch/m68k/include/asm/m527xsim.h
@@ -38,12 +38,27 @@
#define MCFINT_UART1 14 /* Interrupt number for UART1 */
#define MCFINT_UART2 15 /* Interrupt number for UART2 */
#define MCFINT_QSPI 18 /* Interrupt number for QSPI */
+#define MCFINT_FECRX0 23 /* Interrupt number for FEC0 */
+#define MCFINT_FECTX0 27 /* Interrupt number for FEC0 */
+#define MCFINT_FECENTC0 29 /* Interrupt number for FEC0 */
#define MCFINT_PIT1 36 /* Interrupt number for PIT1 */

+#define MCFINT2_VECBASE 128 /* Vector base number 2 */
+#define MCFINT2_FECRX1 23 /* Interrupt number for FEC1 */
+#define MCFINT2_FECTX1 27 /* Interrupt number for FEC1 */
+#define MCFINT2_FECENTC1 29 /* Interrupt number for FEC1 */
+
#define MCF_IRQ_UART0 (MCFINT_VECBASE + MCFINT_UART0)
#define MCF_IRQ_UART1 (MCFINT_VECBASE + MCFINT_UART1)
#define MCF_IRQ_UART2 (MCFINT_VECBASE + MCFINT_UART2)

+#define MCF_IRQ_FECRX0 (MCFINT_VECBASE + MCFINT_FECRX0)
+#define MCF_IRQ_FECTX0 (MCFINT_VECBASE + MCFINT_FECTX0)
+#define MCF_IRQ_FECENTC0 (MCFINT_VECBASE + MCFINT_FECENTC0)
+#define MCF_IRQ_FECRX1 (MCFINT2_VECBASE + MCFINT2_FECRX1)
+#define MCF_IRQ_FECTX1 (MCFINT2_VECBASE + MCFINT2_FECTX1)
+#define MCF_IRQ_FECENTC1 (MCFINT2_VECBASE + MCFINT2_FECENTC1)
+
/*
* SDRAM configuration registers.
*/
diff --git a/arch/m68k/platform/527x/config.c b/arch/m68k/platform/527x/config.c
index febff03..f395e8b 100644
--- a/arch/m68k/platform/527x/config.c
+++ b/arch/m68k/platform/527x/config.c
@@ -33,18 +33,18 @@ static struct resource m527x_fec0_resources[] = {
.flags = IORESOURCE_MEM,
},
{
- .start = 64 + 23,
- .end = 64 + 23,
+ .start = MCF_IRQ_FECRX0,
+ .end = MCF_IRQ_FECRX0,
.flags = IORESOURCE_IRQ,
},
{
- .start = 64 + 27,
- .end = 64 + 27,
+ .start = MCF_IRQ_FECTX0,
+ .end = MCF_IRQ_FECTX0,
.flags = IORESOURCE_IRQ,
},
{
- .start = 64 + 29,
- .end = 64 + 29,
+ .start = MCF_IRQ_FECENTC0,
+ .end = MCF_IRQ_FECENTC0,
.flags = IORESOURCE_IRQ,
},
};
@@ -56,18 +56,18 @@ static struct resource m527x_fec1_resources[] = {
.flags = IORESOURCE_MEM,
},
{
- .start = 128 + 23,
- .end = 128 + 23,
+ .start = MCF_IRQ_FECRX1,
+ .end = MCF_IRQ_FECRX1,
.flags = IORESOURCE_IRQ,
},
{
- .start = 128 + 27,
- .end = 128 + 27,
+ .start = MCF_IRQ_FECTX1,
+ .end = MCF_IRQ_FECTX1,
.flags = IORESOURCE_IRQ,
},
{
- .start = 128 + 29,
- .end = 128 + 29,
+ .start = MCF_IRQ_FECENTC1,
+ .end = MCF_IRQ_FECENTC1,
.flags = IORESOURCE_IRQ,
},
};
--
1.7.0.4
gerg
2012-02-24 04:24:05 UTC
Permalink
From: Greg Ungerer <gerg at uclinux.org>

If we make all FEC (ethernet) addressing consistent across all ColdFire
family members then we will be able to remove the duplicated plaform data
and use a single setup for all.

So modify the ColdFire 520x FEC addressing so that:

. FECs are numbered from 0 up
. base addresses are absolute (not relative to MBAR peripheral register)
. use a common name for IRQs used

Signed-off-by: Greg Ungerer <gerg at uclinux.org>
---
arch/m68k/include/asm/m520xsim.h | 11 +++++++++--
arch/m68k/platform/520x/config.c | 16 ++++++++--------
2 files changed, 17 insertions(+), 10 deletions(-)

diff --git a/arch/m68k/include/asm/m520xsim.h b/arch/m68k/include/asm/m520xsim.h
index 41ed4dc..b83cee2 100644
--- a/arch/m68k/include/asm/m520xsim.h
+++ b/arch/m68k/include/asm/m520xsim.h
@@ -48,12 +48,19 @@
#define MCFINT_UART1 27 /* Interrupt number for UART1 */
#define MCFINT_UART2 28 /* Interrupt number for UART2 */
#define MCFINT_QSPI 31 /* Interrupt number for QSPI */
+#define MCFINT_FECRX0 36 /* Interrupt number for FEC RX */
+#define MCFINT_FECTX0 40 /* Interrupt number for FEC RX */
+#define MCFINT_FECENTC0 42 /* Interrupt number for FEC RX */
#define MCFINT_PIT1 4 /* Interrupt number for PIT1 (PIT0 in processor) */

#define MCF_IRQ_UART0 (MCFINT_VECBASE + MCFINT_UART0)
#define MCF_IRQ_UART1 (MCFINT_VECBASE + MCFINT_UART1)
#define MCF_IRQ_UART2 (MCFINT_VECBASE + MCFINT_UART2)

+#define MCF_IRQ_FECRX0 (MCFINT_VECBASE + MCFINT_FECRX0)
+#define MCF_IRQ_FECTX0 (MCFINT_VECBASE + MCFINT_FECTX0)
+#define MCF_IRQ_FECENTC0 (MCFINT_VECBASE + MCFINT_FECENTC0)
+
/*
* SDRAM configuration registers.
*/
@@ -155,8 +162,8 @@
/*
* FEC module.
*/
-#define MCFFEC_BASE 0xFC030000 /* Base of FEC ethernet */
-#define MCFFEC_SIZE 0x800 /* Register set size */
+#define MCFFEC_BASE0 0xFC030000 /* Base of FEC ethernet */
+#define MCFFEC_SIZE0 0x800 /* Register set size */

/*
* Reset Control Unit.
diff --git a/arch/m68k/platform/520x/config.c b/arch/m68k/platform/520x/config.c
index e2bd2e9..b756315 100644
--- a/arch/m68k/platform/520x/config.c
+++ b/arch/m68k/platform/520x/config.c
@@ -27,23 +27,23 @@

static struct resource m520x_fec_resources[] = {
{
- .start = MCFFEC_BASE,
- .end = MCFFEC_BASE + MCFFEC_SIZE - 1,
+ .start = MCFFEC_BASE0,
+ .end = MCFFEC_BASE0 + MCFFEC_SIZE0 - 1,
.flags = IORESOURCE_MEM,
},
{
- .start = 64 + 36,
- .end = 64 + 36,
+ .start = MCF_IRQ_FEXRX0,
+ .end = MCF_IRQ_FECRX0,
.flags = IORESOURCE_IRQ,
},
{
- .start = 64 + 40,
- .end = 64 + 40,
+ .start = MCF_IRQ_FECTX0,
+ .end = MCF_IRQ_FECTX0,
.flags = IORESOURCE_IRQ,
},
{
- .start = 64 + 42,
- .end = 64 + 42,
+ .start = MCF_IRQ_FECENTC0,
+ .end = MCF_IRQ_FECENTC0,
.flags = IORESOURCE_IRQ,
},
};
--
1.7.0.4
gerg
2012-02-24 04:24:07 UTC
Permalink
From: Greg Ungerer <gerg at uclinux.org>

If we make all FEC (ethernet) addressing consistent across all ColdFire
family members then we will be able to remove the duplicated plaform data
and use a single setup for all.

So modify the ColdFire 5272 FEC addressing so that:

. FECs are numbered from 0 up
. base addresses are absolute (not relative to MBAR peripheral register)
. use a common name for IRQs used

Signed-off-by: Greg Ungerer <gerg at uclinux.org>
---
arch/m68k/include/asm/m5272sim.h | 9 ++++++---
arch/m68k/platform/5272/config.c | 16 ++++++++--------
2 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/arch/m68k/include/asm/m5272sim.h b/arch/m68k/include/asm/m5272sim.h
index 5c71bd4..a58f176 100644
--- a/arch/m68k/include/asm/m5272sim.h
+++ b/arch/m68k/include/asm/m5272sim.h
@@ -88,6 +88,9 @@
#define MCFTIMER_BASE3 (MCF_MBAR + 0x240) /* Base address TIMER4 */
#define MCFTIMER_BASE4 (MCF_MBAR + 0x260) /* Base address TIMER3 */

+#define MCFFEC_BASE0 (MCF_MBAR + 0x840) /* Base FEC ethernet */
+#define MCFFEC_SIZE0 0x1d0
+
/*
* Define system peripheral IRQ usage.
*/
@@ -114,9 +117,9 @@
#define MCF_IRQ_USB6 83 /* USB Endpoint 6 */
#define MCF_IRQ_USB7 84 /* USB Endpoint 7 */
#define MCF_IRQ_DMA 85 /* DMA Controller */
-#define MCF_IRQ_ERX 86 /* Ethernet Receiver */
-#define MCF_IRQ_ETX 87 /* Ethernet Transmitter */
-#define MCF_IRQ_ENTC 88 /* Ethernet Non-Time Critical */
+#define MCF_IRQ_FECRX0 86 /* Ethernet Receiver */
+#define MCF_IRQ_FECTX0 87 /* Ethernet Transmitter */
+#define MCF_IRQ_FECENTC0 88 /* Ethernet Non-Time Critical */
#define MCF_IRQ_QSPI 89 /* Queued Serial Interface */
#define MCF_IRQ_EINT5 90 /* External Interrupt 5 */
#define MCF_IRQ_EINT6 91 /* External Interrupt 6 */
diff --git a/arch/m68k/platform/5272/config.c b/arch/m68k/platform/5272/config.c
index 2199c00..8c77fee 100644
--- a/arch/m68k/platform/5272/config.c
+++ b/arch/m68k/platform/5272/config.c
@@ -32,23 +32,23 @@ unsigned char ledbank = 0xff;

static struct resource m5272_fec_resources[] = {
{
- .start = MCF_MBAR + 0x840,
- .end = MCF_MBAR + 0x840 + 0x1cf,
+ .start = MCFFEC_BASE0,
+ .end = MCFFEC_BASE0 + MCFFEC_SIZE0 - 1,
.flags = IORESOURCE_MEM,
},
{
- .start = MCF_IRQ_ERX,
- .end = MCF_IRQ_ERX,
+ .start = MCF_IRQ_FECRX0,
+ .end = MCF_IRQ_FECRX0,
.flags = IORESOURCE_IRQ,
},
{
- .start = MCF_IRQ_ETX,
- .end = MCF_IRQ_ETX,
+ .start = MCF_IRQ_FECTX0,
+ .end = MCF_IRQ_FECTX0,
.flags = IORESOURCE_IRQ,
},
{
- .start = MCF_IRQ_ENTC,
- .end = MCF_IRQ_ENTC,
+ .start = MCF_IRQ_FECENTC0,
+ .end = MCF_IRQ_FECENTC0,
.flags = IORESOURCE_IRQ,
},
};
--
1.7.0.4
gerg
2012-02-24 04:24:09 UTC
Permalink
From: Greg Ungerer <gerg at uclinux.org>

If we make all FEC (ethernet) addressing consistent across all ColdFire
family members then we will be able to remove the duplicated plaform data
and use a single setup for all.

So modify the ColdFire 528x FEC addressing so that:

. FECs are numbered from 0 up
. base addresses are absolute (not relative to MBAR peripheral register)
. use a common name for IRQs used

Signed-off-by: Greg Ungerer <gerg at uclinux.org>
---
arch/m68k/include/asm/m528xsim.h | 11 +++++++++--
arch/m68k/platform/528x/config.c | 16 ++++++++--------
2 files changed, 17 insertions(+), 10 deletions(-)

diff --git a/arch/m68k/include/asm/m528xsim.h b/arch/m68k/include/asm/m528xsim.h
index a5f0c14..a363c64 100644
--- a/arch/m68k/include/asm/m528xsim.h
+++ b/arch/m68k/include/asm/m528xsim.h
@@ -38,12 +38,19 @@
#define MCFINT_UART1 14 /* Interrupt number for UART1 */
#define MCFINT_UART2 15 /* Interrupt number for UART2 */
#define MCFINT_QSPI 18 /* Interrupt number for QSPI */
+#define MCFINT_FECRX0 23 /* Interrupt number for FEC */
+#define MCFINT_FECTX0 27 /* Interrupt number for FEC */
+#define MCFINT_FECENTC0 29 /* Interrupt number for FEC */
#define MCFINT_PIT1 55 /* Interrupt number for PIT1 */

#define MCF_IRQ_UART0 (MCFINT_VECBASE + MCFINT_UART0)
#define MCF_IRQ_UART1 (MCFINT_VECBASE + MCFINT_UART1)
#define MCF_IRQ_UART2 (MCFINT_VECBASE + MCFINT_UART2)

+#define MCF_IRQ_FECRX0 (MCFINT_VECBASE + MCFINT_FECRX0)
+#define MCF_IRQ_FECTX0 (MCFINT_VECBASE + MCFINT_FECTX0)
+#define MCF_IRQ_FECENTC0 (MCFINT_VECBASE + MCFINT_FECENTC0)
+
/*
* SDRAM configuration registers.
*/
@@ -71,8 +78,8 @@
/*
* FEC ethernet module.
*/
-#define MCFFEC_BASE (MCF_IPSBAR + 0x00001000)
-#define MCFFEC_SIZE 0x800
+#define MCFFEC_BASE0 (MCF_IPSBAR + 0x00001000)
+#define MCFFEC_SIZE0 0x800

/*
* GPIO registers
diff --git a/arch/m68k/platform/528x/config.c b/arch/m68k/platform/528x/config.c
index 8ed0f69..a391978 100644
--- a/arch/m68k/platform/528x/config.c
+++ b/arch/m68k/platform/528x/config.c
@@ -29,23 +29,23 @@

static struct resource m528x_fec_resources[] = {
{
- .start = MCFFEC_BASE,
- .end = MCFFEC_BASE + MCFFEC_SIZE - 1,
+ .start = MCFFEC_BASE0,
+ .end = MCFFEC_BASE0 + MCFFEC_SIZE0 - 1,
.flags = IORESOURCE_MEM,
},
{
- .start = 64 + 23,
- .end = 64 + 23,
+ .start = MCF_IRQ_FECRX0,
+ .end = MCF_IRQ_FECRX0,
.flags = IORESOURCE_IRQ,
},
{
- .start = 64 + 27,
- .end = 64 + 27,
+ .start = MCF_IRQ_FECTX0,
+ .end = MCF_IRQ_FECTX0,
.flags = IORESOURCE_IRQ,
},
{
- .start = 64 + 29,
- .end = 64 + 29,
+ .start = MCF_IRQ_FECENTC0,
+ .end = MCF_IRQ_FECENTC0,
.flags = IORESOURCE_IRQ,
},
};
--
1.7.0.4
gerg
2012-02-24 04:24:10 UTC
Permalink
From: Greg Ungerer <gerg at uclinux.org>

If we make all FEC (ethernet) addressing consistent across all ColdFire
family members then we will be able to remove the duplicated plaform data
and use a single setup for all.

So modify the ColdFire 532x FEC addressing so that:

. FECs are numbered from 0 up
. base addresses are absolute (not relative to MBAR peripheral register)
. use a common name for IRQs used

Signed-off-by: Greg Ungerer <gerg at uclinux.org>
---
arch/m68k/include/asm/m532xsim.h | 13 +++++++++++++
arch/m68k/platform/532x/config.c | 16 ++++++++--------
2 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/arch/m68k/include/asm/m532xsim.h b/arch/m68k/include/asm/m532xsim.h
index f963d64..f1c4fa8 100644
--- a/arch/m68k/include/asm/m532xsim.h
+++ b/arch/m68k/include/asm/m532xsim.h
@@ -24,11 +24,18 @@
#define MCFINT_UART1 27 /* Interrupt number for UART1 */
#define MCFINT_UART2 28 /* Interrupt number for UART2 */
#define MCFINT_QSPI 31 /* Interrupt number for QSPI */
+#define MCFINT_FECRX0 36 /* Interrupt number for FEC */
+#define MCFINT_FECTX0 40 /* Interrupt number for FEC */
+#define MCFINT_FECENTC0 42 /* Interrupt number for FEC */

#define MCF_IRQ_UART0 (MCFINT_VECBASE + MCFINT_UART0)
#define MCF_IRQ_UART1 (MCFINT_VECBASE + MCFINT_UART1)
#define MCF_IRQ_UART2 (MCFINT_VECBASE + MCFINT_UART2)

+#define MCF_IRQ_FECRX0 (MCFINT_VECBASE + MCFINT_FECRX0)
+#define MCF_IRQ_FECTX0 (MCFINT_VECBASE + MCFINT_FECTX0)
+#define MCF_IRQ_FECENTC0 (MCFINT_VECBASE + MCFINT_FECENTC0)
+
#define MCF_WTM_WCR MCF_REG16(0xFC098000)

/*
@@ -91,6 +98,12 @@
#define MCFUART_BASE2 0xFC068000 /* Base address of UART3 */

/*
+ * FEC module.
+ */
+#define MCFFEC_BASE0 0xFC030000 /* Base address of FEC0 */
+#define MCFFEC_SIZE0 0x800 /* Size of FEC0 region */
+
+/*
* Timer module.
*/
#define MCFTIMER_BASE1 0xFC070000 /* Base address of TIMER1 */
diff --git a/arch/m68k/platform/532x/config.c b/arch/m68k/platform/532x/config.c
index 32f8b82..69e2bc0 100644
--- a/arch/m68k/platform/532x/config.c
+++ b/arch/m68k/platform/532x/config.c
@@ -35,23 +35,23 @@

static struct resource m532x_fec_resources[] = {
{
- .start = 0xfc030000,
- .end = 0xfc0307ff,
+ .start = MCFFEC_BASE0,
+ .end = MCFFEC_BASE0 + MCFFEC_SIZE0 - 1,
.flags = IORESOURCE_MEM,
},
{
- .start = 64 + 36,
- .end = 64 + 36,
+ .start = MCF_IRQ_FECRX0,
+ .end = MCF_IRQ_FECRX0,
.flags = IORESOURCE_IRQ,
},
{
- .start = 64 + 40,
- .end = 64 + 40,
+ .start = MCF_IRQ_FECTX0,
+ .end = MCF_IRQ_FECTX0,
.flags = IORESOURCE_IRQ,
},
{
- .start = 64 + 42,
- .end = 64 + 42,
+ .start = MCF_IRQ_FECENTC0,
+ .end = MCF_IRQ_FECENTC0,
.flags = IORESOURCE_IRQ,
},
};
--
1.7.0.4
gerg
2012-02-24 04:24:11 UTC
Permalink
From: Greg Ungerer <gerg at uclinux.org>

The ColdFire FEC is common to quite a few ColdFire CPUs. No need to duplicate
its platform setup code for every CPU family member that has it. Merge all the
setup code into a single shared file.

Signed-off-by: Greg Ungerer <gerg at uclinux.org>
---
arch/m68k/platform/520x/config.c | 31 -------------
arch/m68k/platform/523x/config.c | 31 -------------
arch/m68k/platform/5272/config.c | 37 ----------------
arch/m68k/platform/527x/config.c | 65 ----------------------------
arch/m68k/platform/528x/config.c | 31 -------------
arch/m68k/platform/532x/config.c | 31 -------------
arch/m68k/platform/coldfire/device.c | 78 ++++++++++++++++++++++++++++++++++
7 files changed, 78 insertions(+), 226 deletions(-)

diff --git a/arch/m68k/platform/520x/config.c b/arch/m68k/platform/520x/config.c
index b756315..709291d 100644
--- a/arch/m68k/platform/520x/config.c
+++ b/arch/m68k/platform/520x/config.c
@@ -25,36 +25,6 @@

/***************************************************************************/

-static struct resource m520x_fec_resources[] = {
- {
- .start = MCFFEC_BASE0,
- .end = MCFFEC_BASE0 + MCFFEC_SIZE0 - 1,
- .flags = IORESOURCE_MEM,
- },
- {
- .start = MCF_IRQ_FEXRX0,
- .end = MCF_IRQ_FECRX0,
- .flags = IORESOURCE_IRQ,
- },
- {
- .start = MCF_IRQ_FECTX0,
- .end = MCF_IRQ_FECTX0,
- .flags = IORESOURCE_IRQ,
- },
- {
- .start = MCF_IRQ_FECENTC0,
- .end = MCF_IRQ_FECENTC0,
- .flags = IORESOURCE_IRQ,
- },
-};
-
-static struct platform_device m520x_fec = {
- .name = "fec",
- .id = 0,
- .num_resources = ARRAY_SIZE(m520x_fec_resources),
- .resource = m520x_fec_resources,
-};
-
#if defined(CONFIG_SPI_COLDFIRE_QSPI) || defined(CONFIG_SPI_COLDFIRE_QSPI_MODULE)
static struct resource m520x_qspi_resources[] = {
{
@@ -196,7 +166,6 @@ static void __init m520x_qspi_init(void)


static struct platform_device *m520x_devices[] __initdata = {
- &m520x_fec,
#if defined(CONFIG_SPI_COLDFIRE_QSPI) || defined(CONFIG_SPI_COLDFIRE_QSPI_MODULE)
&m520x_qspi,
#endif
diff --git a/arch/m68k/platform/523x/config.c b/arch/m68k/platform/523x/config.c
index 5433c76..371175d 100644
--- a/arch/m68k/platform/523x/config.c
+++ b/arch/m68k/platform/523x/config.c
@@ -26,36 +26,6 @@

/***************************************************************************/

-static struct resource m523x_fec_resources[] = {
- {
- .start = MCFFEC_BASE0,
- .end = MCFFEC_BASE0 + MCFFEC_SIZE0 - 1,
- .flags = IORESOURCE_MEM,
- },
- {
- .start = MCF_IRQ_FECRX0,
- .end = MCF_IRQ_FECRX0,
- .flags = IORESOURCE_IRQ,
- },
- {
- .start = MCF_IRQ_FECTX0,
- .end = MCF_IRQ_FECTX0,
- .flags = IORESOURCE_IRQ,
- },
- {
- .start = MCF_IRQ_FECENTC0,
- .end = MCF_IRQ_FECENTC0,
- .flags = IORESOURCE_IRQ,
- },
-};
-
-static struct platform_device m523x_fec = {
- .name = "fec",
- .id = 0,
- .num_resources = ARRAY_SIZE(m523x_fec_resources),
- .resource = m523x_fec_resources,
-};
-
#if defined(CONFIG_SPI_COLDFIRE_QSPI) || defined(CONFIG_SPI_COLDFIRE_QSPI_MODULE)
static struct resource m523x_qspi_resources[] = {
{
@@ -257,7 +227,6 @@ void __init config_BSP(char *commandp, int size)

static int __init init_BSP(void)
{
- m523x_fec_init();
#if defined(CONFIG_SPI_COLDFIRE_QSPI) || defined(CONFIG_SPI_COLDFIRE_QSPI_MODULE)
m523x_qspi_init();
#endif
diff --git a/arch/m68k/platform/5272/config.c b/arch/m68k/platform/5272/config.c
index 8c77fee..0a5f0b3 100644
--- a/arch/m68k/platform/5272/config.c
+++ b/arch/m68k/platform/5272/config.c
@@ -30,42 +30,6 @@ unsigned char ledbank = 0xff;

/***************************************************************************/

-static struct resource m5272_fec_resources[] = {
- {
- .start = MCFFEC_BASE0,
- .end = MCFFEC_BASE0 + MCFFEC_SIZE0 - 1,
- .flags = IORESOURCE_MEM,
- },
- {
- .start = MCF_IRQ_FECRX0,
- .end = MCF_IRQ_FECRX0,
- .flags = IORESOURCE_IRQ,
- },
- {
- .start = MCF_IRQ_FECTX0,
- .end = MCF_IRQ_FECTX0,
- .flags = IORESOURCE_IRQ,
- },
- {
- .start = MCF_IRQ_FECENTC0,
- .end = MCF_IRQ_FECENTC0,
- .flags = IORESOURCE_IRQ,
- },
-};
-
-static struct platform_device m5272_fec = {
- .name = "fec",
- .id = 0,
- .num_resources = ARRAY_SIZE(m5272_fec_resources),
- .resource = m5272_fec_resources,
-};
-
-static struct platform_device *m5272_devices[] __initdata = {
- &m5272_fec,
-};
-
-/***************************************************************************/
-
static void __init m5272_uarts_init(void)
{
u32 v;
@@ -137,7 +101,6 @@ static int __init init_BSP(void)
{
m5272_uarts_init();
fixed_phy_add(PHY_POLL, 0, &nettel_fixed_phy_status);
- platform_add_devices(m5272_devices, ARRAY_SIZE(m5272_devices));
return 0;
}

diff --git a/arch/m68k/platform/527x/config.c b/arch/m68k/platform/527x/config.c
index f395e8b..9f31c29 100644
--- a/arch/m68k/platform/527x/config.c
+++ b/arch/m68k/platform/527x/config.c
@@ -26,67 +26,6 @@

/***************************************************************************/

-static struct resource m527x_fec0_resources[] = {
- {
- .start = MCFFEC_BASE0,
- .end = MCFFEC_BASE0 + MCFFEC_SIZE0 - 1,
- .flags = IORESOURCE_MEM,
- },
- {
- .start = MCF_IRQ_FECRX0,
- .end = MCF_IRQ_FECRX0,
- .flags = IORESOURCE_IRQ,
- },
- {
- .start = MCF_IRQ_FECTX0,
- .end = MCF_IRQ_FECTX0,
- .flags = IORESOURCE_IRQ,
- },
- {
- .start = MCF_IRQ_FECENTC0,
- .end = MCF_IRQ_FECENTC0,
- .flags = IORESOURCE_IRQ,
- },
-};
-
-static struct resource m527x_fec1_resources[] = {
- {
- .start = MCFFEC_BASE1,
- .end = MCFFEC_BASE1 + MCFFEC_SIZE1 - 1,
- .flags = IORESOURCE_MEM,
- },
- {
- .start = MCF_IRQ_FECRX1,
- .end = MCF_IRQ_FECRX1,
- .flags = IORESOURCE_IRQ,
- },
- {
- .start = MCF_IRQ_FECTX1,
- .end = MCF_IRQ_FECTX1,
- .flags = IORESOURCE_IRQ,
- },
- {
- .start = MCF_IRQ_FECENTC1,
- .end = MCF_IRQ_FECENTC1,
- .flags = IORESOURCE_IRQ,
- },
-};
-
-static struct platform_device m527x_fec[] = {
- {
- .name = "fec",
- .id = 0,
- .num_resources = ARRAY_SIZE(m527x_fec0_resources),
- .resource = m527x_fec0_resources,
- },
- {
- .name = "fec",
- .id = 1,
- .num_resources = ARRAY_SIZE(m527x_fec1_resources),
- .resource = m527x_fec1_resources,
- },
-};
-
#if defined(CONFIG_SPI_COLDFIRE_QSPI) || defined(CONFIG_SPI_COLDFIRE_QSPI_MODULE)
static struct resource m527x_qspi_resources[] = {
{
@@ -261,10 +200,6 @@ static void __init m527x_qspi_init(void)
#endif /* defined(CONFIG_SPI_COLDFIRE_QSPI) || defined(CONFIG_SPI_COLDFIRE_QSPI_MODULE) */

static struct platform_device *m527x_devices[] __initdata = {
- &m527x_fec[0],
-#ifdef CONFIG_FEC2
- &m527x_fec[1],
-#endif
#if defined(CONFIG_SPI_COLDFIRE_QSPI) || defined(CONFIG_SPI_COLDFIRE_QSPI_MODULE)
&m527x_qspi,
#endif
diff --git a/arch/m68k/platform/528x/config.c b/arch/m68k/platform/528x/config.c
index a391978..9b10e33 100644
--- a/arch/m68k/platform/528x/config.c
+++ b/arch/m68k/platform/528x/config.c
@@ -27,36 +27,6 @@

/***************************************************************************/

-static struct resource m528x_fec_resources[] = {
- {
- .start = MCFFEC_BASE0,
- .end = MCFFEC_BASE0 + MCFFEC_SIZE0 - 1,
- .flags = IORESOURCE_MEM,
- },
- {
- .start = MCF_IRQ_FECRX0,
- .end = MCF_IRQ_FECRX0,
- .flags = IORESOURCE_IRQ,
- },
- {
- .start = MCF_IRQ_FECTX0,
- .end = MCF_IRQ_FECTX0,
- .flags = IORESOURCE_IRQ,
- },
- {
- .start = MCF_IRQ_FECENTC0,
- .end = MCF_IRQ_FECENTC0,
- .flags = IORESOURCE_IRQ,
- },
-};
-
-static struct platform_device m528x_fec = {
- .name = "fec",
- .id = 0,
- .num_resources = ARRAY_SIZE(m528x_fec_resources),
- .resource = m528x_fec_resources,
-};
-
#if defined(CONFIG_SPI_COLDFIRE_QSPI) || defined(CONFIG_SPI_COLDFIRE_QSPI_MODULE)
static struct resource m528x_qspi_resources[] = {
{
@@ -187,7 +157,6 @@ static void __init m528x_qspi_init(void)
#endif /* defined(CONFIG_SPI_COLDFIRE_QSPI) || defined(CONFIG_SPI_COLDFIRE_QSPI_MODULE) */

static struct platform_device *m528x_devices[] __initdata = {
- &m528x_fec,
#if defined(CONFIG_SPI_COLDFIRE_QSPI) || defined(CONFIG_SPI_COLDFIRE_QSPI_MODULE)
&m528x_qspi,
#endif
diff --git a/arch/m68k/platform/532x/config.c b/arch/m68k/platform/532x/config.c
index 69e2bc0..e340dac 100644
--- a/arch/m68k/platform/532x/config.c
+++ b/arch/m68k/platform/532x/config.c
@@ -33,36 +33,6 @@

/***************************************************************************/

-static struct resource m532x_fec_resources[] = {
- {
- .start = MCFFEC_BASE0,
- .end = MCFFEC_BASE0 + MCFFEC_SIZE0 - 1,
- .flags = IORESOURCE_MEM,
- },
- {
- .start = MCF_IRQ_FECRX0,
- .end = MCF_IRQ_FECRX0,
- .flags = IORESOURCE_IRQ,
- },
- {
- .start = MCF_IRQ_FECTX0,
- .end = MCF_IRQ_FECTX0,
- .flags = IORESOURCE_IRQ,
- },
- {
- .start = MCF_IRQ_FECENTC0,
- .end = MCF_IRQ_FECENTC0,
- .flags = IORESOURCE_IRQ,
- },
-};
-
-static struct platform_device m532x_fec = {
- .name = "fec",
- .id = 0,
- .num_resources = ARRAY_SIZE(m532x_fec_resources),
- .resource = m532x_fec_resources,
-};
-
#if defined(CONFIG_SPI_COLDFIRE_QSPI) || defined(CONFIG_SPI_COLDFIRE_QSPI_MODULE)
static struct resource m532x_qspi_resources[] = {
{
@@ -179,7 +149,6 @@ static void __init m532x_qspi_init(void)


static struct platform_device *m532x_devices[] __initdata = {
- &m532x_fec,
#if defined(CONFIG_SPI_COLDFIRE_QSPI) || defined(CONFIG_SPI_COLDFIRE_QSPI_MODULE)
&m532x_qspi,
#endif
diff --git a/arch/m68k/platform/coldfire/device.c b/arch/m68k/platform/coldfire/device.c
index b930192..24b0d5e 100644
--- a/arch/m68k/platform/coldfire/device.c
+++ b/arch/m68k/platform/coldfire/device.c
@@ -16,6 +16,9 @@
#include <asm/mcfsim.h>
#include <asm/mcfuart.h>

+/*
+ * All current ColdFire parts contain from 2, 3 or 4 UARTS.
+ */
static struct mcf_platform_uart mcf_uart_platform_data[] = {
{
.mapbase = MCFUART_BASE0,
@@ -46,8 +49,83 @@ static struct platform_device mcf_uart = {
.dev.platform_data = mcf_uart_platform_data,
};

+#ifdef CONFIG_FEC
+/*
+ * Some ColdFire cores contain the Fast Ethernet Controller (FEC)
+ * block. It is Freescale's own hardware block. Some ColdFires
+ * have 2 of these.
+ */
+static struct resource mcf_fec0_resources[] = {
+ {
+ .start = MCFFEC_BASE0,
+ .end = MCFFEC_BASE0 + MCFFEC_SIZE0 - 1,
+ .flags = IORESOURCE_MEM,
+ },
+ {
+ .start = MCF_IRQ_FECRX0,
+ .end = MCF_IRQ_FECRX0,
+ .flags = IORESOURCE_IRQ,
+ },
+ {
+ .start = MCF_IRQ_FECTX0,
+ .end = MCF_IRQ_FECTX0,
+ .flags = IORESOURCE_IRQ,
+ },
+ {
+ .start = MCF_IRQ_FECENTC0,
+ .end = MCF_IRQ_FECENTC0,
+ .flags = IORESOURCE_IRQ,
+ },
+};
+
+static struct platform_device mcf_fec0 = {
+ .name = "fec",
+ .id = 0,
+ .num_resources = ARRAY_SIZE(mcf_fec0_resources),
+ .resource = mcf_fec0_resources,
+};
+
+#ifdef MCFFEC_BASE1
+static struct resource mcf_fec1_resources[] = {
+ {
+ .start = MCFFEC_BASE1,
+ .end = MCFFEC_BASE1 + MCFFEC_SIZE1 - 1,
+ .flags = IORESOURCE_MEM,
+ },
+ {
+ .start = MCF_IRQ_FECRX1,
+ .end = MCF_IRQ_FECRX1,
+ .flags = IORESOURCE_IRQ,
+ },
+ {
+ .start = MCF_IRQ_FECTX1,
+ .end = MCF_IRQ_FECTX1,
+ .flags = IORESOURCE_IRQ,
+ },
+ {
+ .start = MCF_IRQ_FECENTC1,
+ .end = MCF_IRQ_FECENTC1,
+ .flags = IORESOURCE_IRQ,
+ },
+};
+
+static struct platform_device mcf_fec1 = {
+ .name = "fec",
+ .id = 0,
+ .num_resources = ARRAY_SIZE(mcf_fec1_resources),
+ .resource = mcf_fec1_resources,
+};
+#endif /* MCFFEC_BASE1 */
+#endif /* CONFIG_FEC */
+
static struct platform_device *mcf_devices[] __initdata = {
&mcf_uart,
+#ifdef CONFIG_FEC
+ &mcf_fec0,
+#ifdef MCFFEC_BASE1
+ &mcf_fec1,
+#endif
+#endif
};
--
1.7.0.4
Loading...