* [PATCH] MPC85xx FCC and I2C platform device support
@ 2005-03-22 20:41 Jason McMullan
0 siblings, 0 replies; only message in thread
From: Jason McMullan @ 2005-03-22 20:41 UTC (permalink / raw)
To: linuxppc-embedded
[-- Attachment #1.1: Type: text/plain, Size: 167 bytes --]
Adds platform support for default FCC mac addresses/phy information, and
I2C param info
--
Jason McMullan <jason.mcmullan@timesys.com>
TimeSys Corporation
[-- Attachment #1.2: cpu-ppc-mpc85xx.patch --]
[-- Type: text/x-patch, Size: 6370 bytes --]
#### Auto-generated patch ####
Date: Tue, 22 Mar 2005 15:23:37 -0500
Maintainer: Jason McMullan <jmcmullan@timesys.com>
Summary: MPC85xx series CPU support
Description: MPC85xx series CPU support
###############################
--- linux-orig/arch/ppc/platforms/85xx/mpc85xx_devices.c
+++ linux/arch/ppc/platforms/85xx/mpc85xx_devices.c
@@ -19,6 +19,8 @@
#include <linux/serial_8250.h>
#include <linux/fsl_devices.h>
#include <asm/mpc85xx.h>
+#include <asm/cpm2.h>
+#include <asm/immap_cpm2.h>
#include <asm/irq.h>
#include <asm/ppc_sys.h>
@@ -61,8 +63,26 @@
.iotype = UPIO_MEM,
.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | UPF_SHARE_IRQ,
},
+ [2] = {
+ .flags = 0
+ }
};
+static struct fcc_platform_data fcc_platform_data[] = {
+ [0] = {
+ .mac_addr = { 0x90, 0x00, 0x00, 0x00, 0x00, 0x00 },
+ },
+ [1] = {
+ .mac_addr = { 0x90, 0x00, 0x00, 0x00, 0x00, 0x01 },
+ },
+ [2] = {
+ .mac_addr = { 0x90, 0x00, 0x00, 0x00, 0x00, 0x02 },
+ }
+};
+
+#define CPM2_OFFSET(t) ((void *)(&((cpm2_map_t *)NULL)->t)-NULL)
+#define CPM2_END(t) (CPM2_OFFSET(t)+(sizeof(((cpm2_map_t *)NULL)->t))-1)
+
struct platform_device ppc_sys_platform_devices[] = {
[MPC85xx_TSEC1] = {
.name = "fsl-gianfar",
@@ -284,16 +304,22 @@
[MPC85xx_CPM_FCC1] = {
.name = "fsl-cpm-fcc",
.id = 1,
- .num_resources = 3,
+ .num_resources = 4,
+ .dev.platform_data = &fcc_platform_data[0],
.resource = (struct resource[]) {
{
- .start = 0x91300,
- .end = 0x9131F,
+ .start = CPM2_OFFSET(im_fcc[0]),
+ .end = CPM2_END(im_fcc[0]),
+ .flags = IORESOURCE_MEM,
+ },
+ {
+ .start = CPM2_OFFSET(im_fcc_c[0]),
+ .end = CPM2_END(im_fcc_c[0]),
.flags = IORESOURCE_MEM,
},
{
- .start = 0x91380,
- .end = 0x9139F,
+ .start = CPM2_OFFSET(im_dprambase[PROFF_FCC1+0x000]),
+ .end = CPM2_OFFSET(im_dprambase[PROFF_FCC1+0x000])+0xff,
.flags = IORESOURCE_MEM,
},
{
@@ -306,16 +332,22 @@
[MPC85xx_CPM_FCC2] = {
.name = "fsl-cpm-fcc",
.id = 2,
- .num_resources = 3,
+ .num_resources = 4,
+ .dev.platform_data = &fcc_platform_data[1],
.resource = (struct resource[]) {
{
- .start = 0x91320,
- .end = 0x9133F,
+ .start = CPM2_OFFSET(im_fcc[1]),
+ .end = CPM2_END(im_fcc[1]),
+ .flags = IORESOURCE_MEM,
+ },
+ {
+ .start = CPM2_OFFSET(im_fcc_c[1]),
+ .end = CPM2_END(im_fcc_c[1]),
.flags = IORESOURCE_MEM,
},
{
- .start = 0x913A0,
- .end = 0x913CF,
+ .start = CPM2_OFFSET(im_dprambase[PROFF_FCC1+0x100]),
+ .end = CPM2_OFFSET(im_dprambase[PROFF_FCC1+0x100])+0xff,
.flags = IORESOURCE_MEM,
},
{
@@ -328,16 +360,22 @@
[MPC85xx_CPM_FCC3] = {
.name = "fsl-cpm-fcc",
.id = 3,
- .num_resources = 3,
+ .num_resources = 4,
+ .dev.platform_data = &fcc_platform_data[2],
.resource = (struct resource[]) {
{
- .start = 0x91340,
- .end = 0x9135F,
+ .start = CPM2_OFFSET(im_fcc[2]),
+ .end = CPM2_END(im_fcc[2]),
+ .flags = IORESOURCE_MEM,
+ },
+ {
+ .start = CPM2_OFFSET(im_fcc_c[2]),
+ .end = CPM2_END(im_fcc_c[2]),
.flags = IORESOURCE_MEM,
},
{
- .start = 0x913D0,
- .end = 0x913FF,
+ .start = CPM2_OFFSET(im_dprambase[PROFF_FCC1+0x200]),
+ .end = CPM2_OFFSET(im_dprambase[PROFF_FCC1+0x200])+0xff,
.flags = IORESOURCE_MEM,
},
{
@@ -350,14 +388,21 @@
[MPC85xx_CPM_I2C] = {
.name = "fsl-cpm-i2c",
.id = 1,
- .num_resources = 2,
+ .num_resources = 3,
.resource = (struct resource[]) {
{
+ .name = "i2c",
.start = 0x91860,
.end = 0x918BF,
.flags = IORESOURCE_MEM,
},
{
+ .name = "iic",
+ .start = 0,
+ .end = 0,
+ .flags = 0,
+ },
+ {
.start = SIU_INT_I2C,
.end = SIU_INT_I2C,
.flags = IORESOURCE_IRQ,
@@ -539,6 +584,13 @@
static int __init mach_mpc85xx_fixup(struct platform_device *pdev)
{
+ if (strcmp(pdev->name,"fsl-cpm-i2c")==0) {
+ uint16_t i2c_dpram = *(uint16_t *)cpm_dpram_addr(PROFF_I2C_BASE);
+ printk(KERN_INFO "%s: Relocated to 0x%.4x\n",pdev->name,i2c_dpram);
+ pdev->resource[1].start = CPM2_OFFSET(im_dprambase[i2c_dpram]);
+ pdev->resource[1].end = CPM2_OFFSET(im_dprambase[i2c_dpram])+sizeof(iic_t)-1;
+ pdev->resource[1].flags = IORESOURCE_MEM;
+ }
ppc_sys_fixup_mem_resource(pdev, CCSRBAR);
return 0;
}
--- linux-orig/arch/ppc/platforms/85xx/mpc85xx_sys.c
+++ linux/arch/ppc/platforms/85xx/mpc85xx_sys.c
@@ -80,7 +80,7 @@
.ppc_sys_name = "MPC8555",
.mask = 0xFFFF0000,
.value = 0x80710000,
- .num_devices = 20,
+ .num_devices = 19,
.device_list = (enum ppc_sys_devices[])
{
MPC85xx_TSEC1, MPC85xx_TSEC2, MPC85xx_IIC1,
@@ -88,7 +88,7 @@
MPC85xx_PERFMON, MPC85xx_DUART,
MPC85xx_CPM_SPI, MPC85xx_CPM_I2C, MPC85xx_CPM_SCC1,
MPC85xx_CPM_SCC2, MPC85xx_CPM_SCC3,
- MPC85xx_CPM_FCC1, MPC85xx_CPM_FCC2, MPC85xx_CPM_FCC3,
+ MPC85xx_CPM_FCC1, MPC85xx_CPM_FCC2,
MPC85xx_CPM_SMC1, MPC85xx_CPM_SMC2,
MPC85xx_CPM_USB,
},
@@ -97,7 +97,7 @@
.ppc_sys_name = "MPC8555E",
.mask = 0xFFFF0000,
.value = 0x80790000,
- .num_devices = 21,
+ .num_devices = 20,
.device_list = (enum ppc_sys_devices[])
{
MPC85xx_TSEC1, MPC85xx_TSEC2, MPC85xx_IIC1,
@@ -105,7 +105,7 @@
MPC85xx_PERFMON, MPC85xx_DUART, MPC85xx_SEC2,
MPC85xx_CPM_SPI, MPC85xx_CPM_I2C, MPC85xx_CPM_SCC1,
MPC85xx_CPM_SCC2, MPC85xx_CPM_SCC3,
- MPC85xx_CPM_FCC1, MPC85xx_CPM_FCC2, MPC85xx_CPM_FCC3,
+ MPC85xx_CPM_FCC1, MPC85xx_CPM_FCC2,
MPC85xx_CPM_SMC1, MPC85xx_CPM_SMC2,
MPC85xx_CPM_USB,
},
--- linux-orig/include/linux/fsl_devices.h
+++ linux/include/linux/fsl_devices.h
@@ -65,6 +65,21 @@
/* Flags in gianfar_platform_data */
#define FSL_GIANFAR_BRD_HAS_PHY_INTR 0x00000001 /* if not set use a timer */
+struct fcc_platform_data {
+ /* device specific information */
+
+ /* board speficfic flags */
+ u32 mode;
+ u32 flags;
+ u32 phyid;
+ u8 mac_addr[6];
+};
+
+#define FSL_FCC_BRD_MODE_DISABLED 0
+#define FSL_FCC_BRD_MODE_ETHERNET 1
+
+#define FSL_FCC_BRD_FLAGS_HAS_PHY 0x00000001
+
struct fsl_i2c_platform_data {
/* device specific information */
u32 device_flags;
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2005-03-22 20:41 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-03-22 20:41 [PATCH] MPC85xx FCC and I2C platform device support Jason McMullan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox