LinuxPPC-Dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Jason McMullan <jason.mcmullan@timesys.com>
To: linuxppc-embedded <linuxppc-embedded@ozlabs.org>
Subject: [PATCH] MPC85xx FCC and I2C platform device support
Date: Tue, 22 Mar 2005 15:41:04 -0500	[thread overview]
Message-ID: <1111524064.2987.66.camel@ad.doubleclick.net> (raw)


[-- 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 --]

                 reply	other threads:[~2005-03-22 20:41 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=1111524064.2987.66.camel@ad.doubleclick.net \
    --to=jason.mcmullan@timesys.com \
    --cc=linuxppc-embedded@ozlabs.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