* [PATH 0/3] Add mpc8272ads to powerpc
@ 2006-09-22 2:46 Vitaly Bordug
2006-09-22 2:48 ` [PATCH 1/3] POWERPC: Added devicetree for mpc8272ads board Vitaly Bordug
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Vitaly Bordug @ 2006-09-22 2:46 UTC (permalink / raw)
To: Paul Mackerras; +Cc: linuxppc-dev@ozlabs.org
[-- Attachment #1: Type: text/plain, Size: 278 bytes --]
The following series adds support for the Freescale mpc8272ads
board under arch/powerpc. Assuming 8560 series applied.
Relevant patches are also available in
git:/git.kernel.org/pub/scm/linux/kernel/git/vitb/linux-2.6-PQ.git in testing
branch.
--
Sincerely, Vitaly
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/3] POWERPC: Added devicetree for mpc8272ads board
2006-09-22 2:46 [PATH 0/3] Add mpc8272ads to powerpc Vitaly Bordug
@ 2006-09-22 2:48 ` Vitaly Bordug
2006-09-22 4:55 ` Kumar Gala
2006-09-22 2:48 ` [PATCH 2/3] POWERPC: 8272ads merge to powerpc: common stuff Vitaly Bordug
2006-09-22 2:48 ` [PATCH 3/3] POWERPC: mpc8272ads merge: board-specific/platform stuff Vitaly Bordug
2 siblings, 1 reply; 7+ messages in thread
From: Vitaly Bordug @ 2006-09-22 2:48 UTC (permalink / raw)
To: Paul Mackerras; +Cc: linuxppc-dev
This adds current dts file used with MPC8272ADS,
introducing new mdio bitbang defines, as well as
fully-CPM2-SoC board design.
Signed-off-by: Vitaly Bordug <vbordug@ru.mvista.com>
---
arch/powerpc/boot/dts/mpc8272ads.dts | 236 ++++++++++++++++++++++++++++++++++
1 files changed, 236 insertions(+), 0 deletions(-)
diff --git a/arch/powerpc/boot/dts/mpc8272ads.dts b/arch/powerpc/boot/dts/mpc8272ads.dts
new file mode 100644
index 0000000..6d72b7d
--- /dev/null
+++ b/arch/powerpc/boot/dts/mpc8272ads.dts
@@ -0,0 +1,236 @@
+/*
+ * MPC8272 ADS Device Tree Source
+ *
+ * Copyright 2005 Freescale Semiconductor Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ */
+
+
+/*
+/memreserve/ 00000000 4000000;
+*/
+
+/ {
+ model = "MPC8272ADS";
+ compatible = "MPC8260ADS";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ linux,phandle = <100>;
+
+ cpus {
+ #cpus = <1>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ linux,phandle = <200>;
+
+ PowerPC,8272@0 {
+ device_type = "cpu";
+ reg = <0>;
+ d-cache-line-size = <20>; // 32 bytes
+ i-cache-line-size = <20>; // 32 bytes
+ d-cache-size = <4000>; // L1, 16K
+ i-cache-size = <4000>; // L1, 16K
+ timebase-frequency = <17d7840>;
+ bus-frequency = <5f5e100>;
+ clock-frequency = <17D78400>;
+ 32-bit;
+ linux,phandle = <201>;
+ linux,boot-cpu;
+ };
+ };
+
+ interrupt-controller@f8200000 {
+ linux,phandle = <f8200000>;
+ #address-cells = <0>;
+ #interrupt-cells = <2>;
+ interrupt-controller;
+ reg = <f8200000 f8200004>;
+ built-in;
+ device_type = "pci-pic";
+ };
+ memory {
+ device_type = "memory";
+ linux,phandle = <300>;
+ reg = <00000000 4000000 f4500000 00000020>;
+ };
+
+ chosen {
+ name = "chosen";
+ bootargs = "root=/dev/nfs rw ip=on";
+ linux,stdout-path = "/dev/ttyCPM0";
+ linux,platform = <0>;
+ interrupt-controller = <10c00>;
+ linux,phandle = <400>;
+ };
+
+ soc8272@f0000000 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ #interrupt-cells = <2>;
+ device_type = "soc";
+ ranges = < 0 0 2 00000000 f0000000 00053000>;
+ reg = <f0000000 0>;
+
+ mdio@0 {
+ device_type = "mdio";
+ compatible = "fs_enet";
+ reg = <0 0>;
+ linux,phandle = <24520>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ ethernet-phy@0 {
+ linux,phandle = <2452000>;
+ interrupt-parent = <10c00>;
+ interrupts = <19 1>;
+ reg = <0>;
+ bitbang = [ 12 12 13 02 02 01 ];
+ device_type = "ethernet-phy";
+ };
+ ethernet-phy@1 {
+ linux,phandle = <2452001>;
+ interrupt-parent = <10c00>;
+ interrupts = <19 1>;
+ bitbang = [ 12 12 13 02 02 01 ];
+ reg = <3>;
+ device_type = "ethernet-phy";
+ };
+ };
+
+ ethernet@24000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ device_type = "network";
+ device-id = <2>;
+ compatible = "fs_enet";
+ model = "FCC";
+ reg = <11300 20 8400 100 11380 30>;
+ mac-address = [ 00 11 2F 99 43 54 ];
+ interrupts = <20 2>;
+ interrupt-parent = <10c00>;
+ phy-handle = <2452000>;
+ rx-clock = <13>;
+ tx-clock = <12>;
+ };
+
+ ethernet@25000 {
+ device_type = "network";
+ device-id = <3>;
+ compatible = "fs_enet";
+ model = "FCC";
+ reg = <11320 20 8500 100 113b0 30>;
+ mac-address = [ 00 11 2F 99 44 54 ];
+ interrupts = <21 2>;
+ interrupt-parent = <10c00>;
+ phy-handle = <2452001>;
+ rx-clock = <17>;
+ tx-clock = <18>;
+ };
+
+ cpm@f0000000 {
+ linux,phandle = <f0000000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ #interrupt-cells = <2>;
+ device_type = "cpm";
+ model = "CPM2";
+ ranges = <00000000 00000000 3ffff>;
+ reg = <10d80 3280>;
+ command-proc = <119c0>;
+ brg-frequency = <17D7840>;
+ cpm_clk = <BEBC200>;
+
+ scc@11a00 {
+ device_type = "serial";
+ compatible = "cpm_uart";
+ model = "SCC";
+ device-id = <2>;
+ reg = <11a00 20 8000 100>;
+ current-speed = <1c200>;
+ interrupts = <28 2>;
+ interrupt-parent = <10c00>;
+ clock-setup = <0 00ffffff>;
+ rx-clock = <1>;
+ tx-clock = <1>;
+ };
+
+ scc@11a60 {
+ device_type = "serial";
+ compatible = "cpm_uart";
+ model = "SCC";
+ device-id = <5>;
+ reg = <11a60 20 8300 100>;
+ current-speed = <1c200>;
+ interrupts = <2b 2>;
+ interrupt-parent = <10c00>;
+ clock-setup = <1b ffffff00>;
+ rx-clock = <4>;
+ tx-clock = <4>;
+ };
+
+ };
+ interrupt-controller@10c00 {
+ linux,phandle = <10c00>;
+ #address-cells = <0>;
+ #interrupt-cells = <2>;
+ interrupt-controller;
+ reg = <10c00 80>;
+ built-in;
+ device_type = "cpm-pic";
+ };
+ pci@0500 {
+ linux,phandle = <0500>;
+ #interrupt-cells = <1>;
+ #size-cells = <2>;
+ #address-cells = <3>;
+ compatible = "8272";
+ device_type = "pci";
+ reg = <10430 4dc>;
+ clock-frequency = <3f940aa>;
+ interrupt-map-mask = <f800 0 0 7>;
+ interrupt-map = <
+
+ /* IDSEL 0x16 */
+ b000 0 0 1 f8200000 40 0
+ b000 0 0 2 f8200000 41 0
+ b000 0 0 3 f8200000 42 0
+ b000 0 0 4 f8200000 43 0
+
+ /* IDSEL 0x17 */
+ b800 0 0 1 f8200000 43 0
+ b800 0 0 2 f8200000 40 0
+ b800 0 0 3 f8200000 41 0
+ b800 0 0 4 f8200000 42 0
+
+ /* IDSEL 0x18 */
+ c000 0 0 1 f8200000 42 0
+ c000 0 0 2 f8200000 43 0
+ c000 0 0 3 f8200000 40 0
+ c000 0 0 4 f8200000 41 0>;
+ interrupt-parent = <10c00>;
+ interrupts = <14 3>;
+ bus-range = <0 0>;
+ ranges = <02000000 0 80000000 80000000 0 40000000
+ 01000000 0 00000000 f6000000 0 02000000>;
+ };
+
+/* May need to remove if on a part without crypto engine */
+ crypto@30000 {
+ device_type = "crypto";
+ model = "SEC2";
+ compatible = "talitos";
+ reg = <30000 10000>;
+ interrupts = <b 0>;
+ interrupt-parent = <10c00>;
+ num-channels = <4>;
+ channel-fifo-len = <18>;
+ exec-units-mask = <0000007e>;
+/* desc mask is for rev1.x, we need runtime fixup for >=2.x */
+ descriptor-types-mask = <01010ebf>;
+ };
+
+ };
+};
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/3] POWERPC: 8272ads merge to powerpc: common stuff
2006-09-22 2:46 [PATH 0/3] Add mpc8272ads to powerpc Vitaly Bordug
2006-09-22 2:48 ` [PATCH 1/3] POWERPC: Added devicetree for mpc8272ads board Vitaly Bordug
@ 2006-09-22 2:48 ` Vitaly Bordug
2006-09-22 2:48 ` [PATCH 3/3] POWERPC: mpc8272ads merge: board-specific/platform stuff Vitaly Bordug
2 siblings, 0 replies; 7+ messages in thread
From: Vitaly Bordug @ 2006-09-22 2:48 UTC (permalink / raw)
To: Paul Mackerras; +Cc: linuxppc-dev
This has modules of common directories related to the
mpc8272ADS board, mainly common cpm2 changes and fsl_soc.c
portions related to the bitbang MDIO and other mechanisms specific
for this family.
Signed-off-by: Vitaly Bordug <vbordug@ru.mvista.com>
---
arch/powerpc/Kconfig | 1 +
arch/powerpc/sysdev/cpm2_pic.c | 2 +
arch/powerpc/sysdev/cpm2_pic.h | 2 +
arch/powerpc/sysdev/fsl_soc.c | 68 ++++++++++++++++++++++++++++++++++++----
4 files changed, 64 insertions(+), 9 deletions(-)
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index de1ef2f..1810216 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -594,6 +594,7 @@ endmenu
source arch/powerpc/platforms/embedded6xx/Kconfig
source arch/powerpc/platforms/4xx/Kconfig
+source arch/powerpc/platforms/82xx/Kconfig
source arch/powerpc/platforms/83xx/Kconfig
source arch/powerpc/platforms/85xx/Kconfig
source arch/powerpc/platforms/86xx/Kconfig
diff --git a/arch/powerpc/sysdev/cpm2_pic.c b/arch/powerpc/sysdev/cpm2_pic.c
index 5175299..28b0189 100644
--- a/arch/powerpc/sysdev/cpm2_pic.c
+++ b/arch/powerpc/sysdev/cpm2_pic.c
@@ -147,7 +147,7 @@ static struct irq_chip cpm2_pic = {
.end = cpm2_end_irq,
};
-int cpm2_get_irq(struct pt_regs *regs)
+unsigned int cpm2_get_irq(struct pt_regs *regs)
{
int irq;
unsigned long bits;
diff --git a/arch/powerpc/sysdev/cpm2_pic.h b/arch/powerpc/sysdev/cpm2_pic.h
index d63e45d..3c513e5 100644
--- a/arch/powerpc/sysdev/cpm2_pic.h
+++ b/arch/powerpc/sysdev/cpm2_pic.h
@@ -3,7 +3,7 @@ #define _PPC_KERNEL_CPM2_H
extern intctl_cpm2_t *cpm2_intctl;
-extern int cpm2_get_irq(struct pt_regs *regs);
+extern unsigned int cpm2_get_irq(struct pt_regs *regs);
extern void cpm2_pic_init(struct device_node*);
diff --git a/arch/powerpc/sysdev/fsl_soc.c b/arch/powerpc/sysdev/fsl_soc.c
index 022ed27..39b76f9 100644
--- a/arch/powerpc/sysdev/fsl_soc.c
+++ b/arch/powerpc/sysdev/fsl_soc.c
@@ -37,6 +37,7 @@ #include <mm/mmu_decl.h>
#include <asm/cpm2.h>
extern void init_fcc_ioports(struct fs_platform_info*);
+extern void init_scc_ioports(struct fs_uart_platform_info*);
static phys_addr_t immrbase = -1;
phys_addr_t get_immrbase(void)
@@ -566,7 +567,7 @@ static int __init fs_enet_of_init(void)
struct resource r[4];
struct device_node *phy, *mdio;
struct fs_platform_info fs_enet_data;
- const unsigned int *id, *phy_addr;
+ const unsigned int *id, *phy_addr, phy_irq;
const void *mac_addr;
const phandle *ph;
const char *model;
@@ -588,6 +589,7 @@ static int __init fs_enet_of_init(void)
if (ret)
goto err;
r[2].name = fcc_regs_c;
+ fs_enet_data.fcc_regs_c = r[2].start;
r[3].start = r[3].end = irq_of_parse_and_map(np, 0);
r[3].flags = IORESOURCE_IRQ;
@@ -620,6 +622,8 @@ static int __init fs_enet_of_init(void)
phy_addr = get_property(phy, "reg", NULL);
fs_enet_data.phy_addr = *phy_addr;
+ phy_irq = get_property(phy, "interrupts", NULL);
+
id = get_property(np, "device-id", NULL);
fs_enet_data.fs_no = *id;
strcpy(fs_enet_data.fs_type, model);
@@ -637,6 +641,7 @@ static int __init fs_enet_of_init(void)
if (strstr(model, "FCC")) {
int fcc_index = *id - 1;
+ unsigned char* mdio_bb_prop;
fs_enet_data.dpram_offset = (u32)cpm_dpram_addr(0);
fs_enet_data.rx_ring = 32;
@@ -652,14 +657,63 @@ static int __init fs_enet_of_init(void)
(u32)res.start, fs_enet_data.phy_addr);
fs_enet_data.bus_id = (char*)&bus_id[(*id)];
fs_enet_data.init_ioports = init_fcc_ioports;
- }
- of_node_put(phy);
- of_node_put(mdio);
+ mdio_bb_prop = get_property(phy, "bitbang", NULL);
+ if (mdio_bb_prop) {
+ struct platform_device *fs_enet_mdio_bb_dev;
+ struct fs_mii_bb_platform_info fs_enet_mdio_bb_data;
+
+ fs_enet_mdio_bb_dev =
+ platform_device_register_simple("fsl-bb-mdio",
+ i, NULL, 0);
+ memset(&fs_enet_mdio_bb_data, 0,
+ sizeof(struct fs_mii_bb_platform_info));
+ fs_enet_mdio_bb_data.mdio_dat.bit =
+ mdio_bb_prop[0];
+ fs_enet_mdio_bb_data.mdio_dir.bit =
+ mdio_bb_prop[1];
+ fs_enet_mdio_bb_data.mdc_dat.bit =
+ mdio_bb_prop[2];
+ fs_enet_mdio_bb_data.mdio_port =
+ mdio_bb_prop[3];
+ fs_enet_mdio_bb_data.mdc_port =
+ mdio_bb_prop[4];
+ fs_enet_mdio_bb_data.delay =
+ mdio_bb_prop[5];
+
+ fs_enet_mdio_bb_data.irq[0] = phy_irq[0];
+ fs_enet_mdio_bb_data.irq[1] = -1;
+ fs_enet_mdio_bb_data.irq[2] = -1;
+ fs_enet_mdio_bb_data.irq[3] = phy_irq[0];
+ fs_enet_mdio_bb_data.irq[31] = -1;
+
+ fs_enet_mdio_bb_data.mdio_dat.offset =
+ (u32)&cpm2_immr->im_ioport.iop_pdatc;
+ fs_enet_mdio_bb_data.mdio_dir.offset =
+ (u32)&cpm2_immr->im_ioport.iop_pdirc;
+ fs_enet_mdio_bb_data.mdc_dat.offset =
+ (u32)&cpm2_immr->im_ioport.iop_pdatc;
+
+ ret = platform_device_add_data(
+ fs_enet_mdio_bb_dev,
+ &fs_enet_mdio_bb_data,
+ sizeof(struct fs_mii_bb_platform_info));
+ if (ret)
+ goto unreg;
+ } else {
+ printk(KERN_ERR
+ "mii-properties isn't found in device tree\n");
+ ret = -ENODEV;
+ goto unreg;
+ }
+ }
- ret = platform_device_add_data(fs_enet_dev, &fs_enet_data,
- sizeof(struct
- fs_platform_info));
+ of_node_put(phy);
+ of_node_put(mdio);
+
+ ret = platform_device_add_data(fs_enet_dev, &fs_enet_data,
+ sizeof(struct
+ fs_platform_info));
if (ret)
goto unreg;
}
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/3] POWERPC: mpc8272ads merge: board-specific/platform stuff
2006-09-22 2:46 [PATH 0/3] Add mpc8272ads to powerpc Vitaly Bordug
2006-09-22 2:48 ` [PATCH 1/3] POWERPC: Added devicetree for mpc8272ads board Vitaly Bordug
2006-09-22 2:48 ` [PATCH 2/3] POWERPC: 8272ads merge to powerpc: common stuff Vitaly Bordug
@ 2006-09-22 2:48 ` Vitaly Bordug
2006-09-22 13:12 ` Vitaly Bordug
2 siblings, 1 reply; 7+ messages in thread
From: Vitaly Bordug @ 2006-09-22 2:48 UTC (permalink / raw)
To: Paul Mackerras; +Cc: linuxppc-dev
This intruduces 82xx family in arch/powerpc/platforms,
and has all the board-specific code to represent regression-less
transaction from ppc. The functionality is apparently the same, including
PCI controller.
Signed-off-by: Vitaly Bordug <vbordug@ru.mvista.com>
---
arch/powerpc/Kconfig | 1
arch/powerpc/boot/dts/mpc8272ads.dts | 236 ----------------------------------
arch/powerpc/sysdev/cpm2_pic.c | 2
arch/powerpc/sysdev/cpm2_pic.h | 2
arch/powerpc/sysdev/fsl_soc.c | 68 +---------
5 files changed, 9 insertions(+), 300 deletions(-)
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 1810216..de1ef2f 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -594,7 +594,6 @@ endmenu
source arch/powerpc/platforms/embedded6xx/Kconfig
source arch/powerpc/platforms/4xx/Kconfig
-source arch/powerpc/platforms/82xx/Kconfig
source arch/powerpc/platforms/83xx/Kconfig
source arch/powerpc/platforms/85xx/Kconfig
source arch/powerpc/platforms/86xx/Kconfig
diff --git a/arch/powerpc/boot/dts/mpc8272ads.dts b/arch/powerpc/boot/dts/mpc8272ads.dts
deleted file mode 100644
index 6d72b7d..0000000
--- a/arch/powerpc/boot/dts/mpc8272ads.dts
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * MPC8272 ADS Device Tree Source
- *
- * Copyright 2005 Freescale Semiconductor Inc.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- */
-
-
-/*
-/memreserve/ 00000000 4000000;
-*/
-
-/ {
- model = "MPC8272ADS";
- compatible = "MPC8260ADS";
- #address-cells = <1>;
- #size-cells = <1>;
- linux,phandle = <100>;
-
- cpus {
- #cpus = <1>;
- #address-cells = <1>;
- #size-cells = <0>;
- linux,phandle = <200>;
-
- PowerPC,8272@0 {
- device_type = "cpu";
- reg = <0>;
- d-cache-line-size = <20>; // 32 bytes
- i-cache-line-size = <20>; // 32 bytes
- d-cache-size = <4000>; // L1, 16K
- i-cache-size = <4000>; // L1, 16K
- timebase-frequency = <17d7840>;
- bus-frequency = <5f5e100>;
- clock-frequency = <17D78400>;
- 32-bit;
- linux,phandle = <201>;
- linux,boot-cpu;
- };
- };
-
- interrupt-controller@f8200000 {
- linux,phandle = <f8200000>;
- #address-cells = <0>;
- #interrupt-cells = <2>;
- interrupt-controller;
- reg = <f8200000 f8200004>;
- built-in;
- device_type = "pci-pic";
- };
- memory {
- device_type = "memory";
- linux,phandle = <300>;
- reg = <00000000 4000000 f4500000 00000020>;
- };
-
- chosen {
- name = "chosen";
- bootargs = "root=/dev/nfs rw ip=on";
- linux,stdout-path = "/dev/ttyCPM0";
- linux,platform = <0>;
- interrupt-controller = <10c00>;
- linux,phandle = <400>;
- };
-
- soc8272@f0000000 {
- #address-cells = <1>;
- #size-cells = <1>;
- #interrupt-cells = <2>;
- device_type = "soc";
- ranges = < 0 0 2 00000000 f0000000 00053000>;
- reg = <f0000000 0>;
-
- mdio@0 {
- device_type = "mdio";
- compatible = "fs_enet";
- reg = <0 0>;
- linux,phandle = <24520>;
- #address-cells = <1>;
- #size-cells = <0>;
- ethernet-phy@0 {
- linux,phandle = <2452000>;
- interrupt-parent = <10c00>;
- interrupts = <19 1>;
- reg = <0>;
- bitbang = [ 12 12 13 02 02 01 ];
- device_type = "ethernet-phy";
- };
- ethernet-phy@1 {
- linux,phandle = <2452001>;
- interrupt-parent = <10c00>;
- interrupts = <19 1>;
- bitbang = [ 12 12 13 02 02 01 ];
- reg = <3>;
- device_type = "ethernet-phy";
- };
- };
-
- ethernet@24000 {
- #address-cells = <1>;
- #size-cells = <0>;
- device_type = "network";
- device-id = <2>;
- compatible = "fs_enet";
- model = "FCC";
- reg = <11300 20 8400 100 11380 30>;
- mac-address = [ 00 11 2F 99 43 54 ];
- interrupts = <20 2>;
- interrupt-parent = <10c00>;
- phy-handle = <2452000>;
- rx-clock = <13>;
- tx-clock = <12>;
- };
-
- ethernet@25000 {
- device_type = "network";
- device-id = <3>;
- compatible = "fs_enet";
- model = "FCC";
- reg = <11320 20 8500 100 113b0 30>;
- mac-address = [ 00 11 2F 99 44 54 ];
- interrupts = <21 2>;
- interrupt-parent = <10c00>;
- phy-handle = <2452001>;
- rx-clock = <17>;
- tx-clock = <18>;
- };
-
- cpm@f0000000 {
- linux,phandle = <f0000000>;
- #address-cells = <1>;
- #size-cells = <1>;
- #interrupt-cells = <2>;
- device_type = "cpm";
- model = "CPM2";
- ranges = <00000000 00000000 3ffff>;
- reg = <10d80 3280>;
- command-proc = <119c0>;
- brg-frequency = <17D7840>;
- cpm_clk = <BEBC200>;
-
- scc@11a00 {
- device_type = "serial";
- compatible = "cpm_uart";
- model = "SCC";
- device-id = <2>;
- reg = <11a00 20 8000 100>;
- current-speed = <1c200>;
- interrupts = <28 2>;
- interrupt-parent = <10c00>;
- clock-setup = <0 00ffffff>;
- rx-clock = <1>;
- tx-clock = <1>;
- };
-
- scc@11a60 {
- device_type = "serial";
- compatible = "cpm_uart";
- model = "SCC";
- device-id = <5>;
- reg = <11a60 20 8300 100>;
- current-speed = <1c200>;
- interrupts = <2b 2>;
- interrupt-parent = <10c00>;
- clock-setup = <1b ffffff00>;
- rx-clock = <4>;
- tx-clock = <4>;
- };
-
- };
- interrupt-controller@10c00 {
- linux,phandle = <10c00>;
- #address-cells = <0>;
- #interrupt-cells = <2>;
- interrupt-controller;
- reg = <10c00 80>;
- built-in;
- device_type = "cpm-pic";
- };
- pci@0500 {
- linux,phandle = <0500>;
- #interrupt-cells = <1>;
- #size-cells = <2>;
- #address-cells = <3>;
- compatible = "8272";
- device_type = "pci";
- reg = <10430 4dc>;
- clock-frequency = <3f940aa>;
- interrupt-map-mask = <f800 0 0 7>;
- interrupt-map = <
-
- /* IDSEL 0x16 */
- b000 0 0 1 f8200000 40 0
- b000 0 0 2 f8200000 41 0
- b000 0 0 3 f8200000 42 0
- b000 0 0 4 f8200000 43 0
-
- /* IDSEL 0x17 */
- b800 0 0 1 f8200000 43 0
- b800 0 0 2 f8200000 40 0
- b800 0 0 3 f8200000 41 0
- b800 0 0 4 f8200000 42 0
-
- /* IDSEL 0x18 */
- c000 0 0 1 f8200000 42 0
- c000 0 0 2 f8200000 43 0
- c000 0 0 3 f8200000 40 0
- c000 0 0 4 f8200000 41 0>;
- interrupt-parent = <10c00>;
- interrupts = <14 3>;
- bus-range = <0 0>;
- ranges = <02000000 0 80000000 80000000 0 40000000
- 01000000 0 00000000 f6000000 0 02000000>;
- };
-
-/* May need to remove if on a part without crypto engine */
- crypto@30000 {
- device_type = "crypto";
- model = "SEC2";
- compatible = "talitos";
- reg = <30000 10000>;
- interrupts = <b 0>;
- interrupt-parent = <10c00>;
- num-channels = <4>;
- channel-fifo-len = <18>;
- exec-units-mask = <0000007e>;
-/* desc mask is for rev1.x, we need runtime fixup for >=2.x */
- descriptor-types-mask = <01010ebf>;
- };
-
- };
-};
diff --git a/arch/powerpc/sysdev/cpm2_pic.c b/arch/powerpc/sysdev/cpm2_pic.c
index 28b0189..5175299 100644
--- a/arch/powerpc/sysdev/cpm2_pic.c
+++ b/arch/powerpc/sysdev/cpm2_pic.c
@@ -147,7 +147,7 @@ static struct irq_chip cpm2_pic = {
.end = cpm2_end_irq,
};
-unsigned int cpm2_get_irq(struct pt_regs *regs)
+int cpm2_get_irq(struct pt_regs *regs)
{
int irq;
unsigned long bits;
diff --git a/arch/powerpc/sysdev/cpm2_pic.h b/arch/powerpc/sysdev/cpm2_pic.h
index 3c513e5..d63e45d 100644
--- a/arch/powerpc/sysdev/cpm2_pic.h
+++ b/arch/powerpc/sysdev/cpm2_pic.h
@@ -3,7 +3,7 @@ #define _PPC_KERNEL_CPM2_H
extern intctl_cpm2_t *cpm2_intctl;
-extern unsigned int cpm2_get_irq(struct pt_regs *regs);
+extern int cpm2_get_irq(struct pt_regs *regs);
extern void cpm2_pic_init(struct device_node*);
diff --git a/arch/powerpc/sysdev/fsl_soc.c b/arch/powerpc/sysdev/fsl_soc.c
index 39b76f9..022ed27 100644
--- a/arch/powerpc/sysdev/fsl_soc.c
+++ b/arch/powerpc/sysdev/fsl_soc.c
@@ -37,7 +37,6 @@ #include <mm/mmu_decl.h>
#include <asm/cpm2.h>
extern void init_fcc_ioports(struct fs_platform_info*);
-extern void init_scc_ioports(struct fs_uart_platform_info*);
static phys_addr_t immrbase = -1;
phys_addr_t get_immrbase(void)
@@ -567,7 +566,7 @@ static int __init fs_enet_of_init(void)
struct resource r[4];
struct device_node *phy, *mdio;
struct fs_platform_info fs_enet_data;
- const unsigned int *id, *phy_addr, phy_irq;
+ const unsigned int *id, *phy_addr;
const void *mac_addr;
const phandle *ph;
const char *model;
@@ -589,7 +588,6 @@ static int __init fs_enet_of_init(void)
if (ret)
goto err;
r[2].name = fcc_regs_c;
- fs_enet_data.fcc_regs_c = r[2].start;
r[3].start = r[3].end = irq_of_parse_and_map(np, 0);
r[3].flags = IORESOURCE_IRQ;
@@ -622,8 +620,6 @@ static int __init fs_enet_of_init(void)
phy_addr = get_property(phy, "reg", NULL);
fs_enet_data.phy_addr = *phy_addr;
- phy_irq = get_property(phy, "interrupts", NULL);
-
id = get_property(np, "device-id", NULL);
fs_enet_data.fs_no = *id;
strcpy(fs_enet_data.fs_type, model);
@@ -641,7 +637,6 @@ static int __init fs_enet_of_init(void)
if (strstr(model, "FCC")) {
int fcc_index = *id - 1;
- unsigned char* mdio_bb_prop;
fs_enet_data.dpram_offset = (u32)cpm_dpram_addr(0);
fs_enet_data.rx_ring = 32;
@@ -657,63 +652,14 @@ static int __init fs_enet_of_init(void)
(u32)res.start, fs_enet_data.phy_addr);
fs_enet_data.bus_id = (char*)&bus_id[(*id)];
fs_enet_data.init_ioports = init_fcc_ioports;
+ }
- mdio_bb_prop = get_property(phy, "bitbang", NULL);
- if (mdio_bb_prop) {
- struct platform_device *fs_enet_mdio_bb_dev;
- struct fs_mii_bb_platform_info fs_enet_mdio_bb_data;
-
- fs_enet_mdio_bb_dev =
- platform_device_register_simple("fsl-bb-mdio",
- i, NULL, 0);
- memset(&fs_enet_mdio_bb_data, 0,
- sizeof(struct fs_mii_bb_platform_info));
- fs_enet_mdio_bb_data.mdio_dat.bit =
- mdio_bb_prop[0];
- fs_enet_mdio_bb_data.mdio_dir.bit =
- mdio_bb_prop[1];
- fs_enet_mdio_bb_data.mdc_dat.bit =
- mdio_bb_prop[2];
- fs_enet_mdio_bb_data.mdio_port =
- mdio_bb_prop[3];
- fs_enet_mdio_bb_data.mdc_port =
- mdio_bb_prop[4];
- fs_enet_mdio_bb_data.delay =
- mdio_bb_prop[5];
-
- fs_enet_mdio_bb_data.irq[0] = phy_irq[0];
- fs_enet_mdio_bb_data.irq[1] = -1;
- fs_enet_mdio_bb_data.irq[2] = -1;
- fs_enet_mdio_bb_data.irq[3] = phy_irq[0];
- fs_enet_mdio_bb_data.irq[31] = -1;
-
- fs_enet_mdio_bb_data.mdio_dat.offset =
- (u32)&cpm2_immr->im_ioport.iop_pdatc;
- fs_enet_mdio_bb_data.mdio_dir.offset =
- (u32)&cpm2_immr->im_ioport.iop_pdirc;
- fs_enet_mdio_bb_data.mdc_dat.offset =
- (u32)&cpm2_immr->im_ioport.iop_pdatc;
-
- ret = platform_device_add_data(
- fs_enet_mdio_bb_dev,
- &fs_enet_mdio_bb_data,
- sizeof(struct fs_mii_bb_platform_info));
- if (ret)
- goto unreg;
- } else {
- printk(KERN_ERR
- "mii-properties isn't found in device tree\n");
- ret = -ENODEV;
- goto unreg;
- }
- }
-
- of_node_put(phy);
- of_node_put(mdio);
+ of_node_put(phy);
+ of_node_put(mdio);
- ret = platform_device_add_data(fs_enet_dev, &fs_enet_data,
- sizeof(struct
- fs_platform_info));
+ ret = platform_device_add_data(fs_enet_dev, &fs_enet_data,
+ sizeof(struct
+ fs_platform_info));
if (ret)
goto unreg;
}
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/3] POWERPC: Added devicetree for mpc8272ads board
2006-09-22 2:48 ` [PATCH 1/3] POWERPC: Added devicetree for mpc8272ads board Vitaly Bordug
@ 2006-09-22 4:55 ` Kumar Gala
2006-09-22 8:00 ` Vitaly Bordug
0 siblings, 1 reply; 7+ messages in thread
From: Kumar Gala @ 2006-09-22 4:55 UTC (permalink / raw)
To: Vitaly Bordug; +Cc: linuxppc-dev, Paul Mackerras
On Sep 21, 2006, at 9:48 PM, Vitaly Bordug wrote:
>
> This adds current dts file used with MPC8272ADS,
> introducing new mdio bitbang defines, as well as
> fully-CPM2-SoC board design.
>
> Signed-off-by: Vitaly Bordug <vbordug@ru.mvista.com>
> ---
>
> arch/powerpc/boot/dts/mpc8272ads.dts | 236 +++++++++++++++++++++++
> +++++++++++
> 1 files changed, 236 insertions(+), 0 deletions(-)
>
> diff --git a/arch/powerpc/boot/dts/mpc8272ads.dts b/arch/powerpc/
> boot/dts/mpc8272ads.dts
> new file mode 100644
> index 0000000..6d72b7d
> --- /dev/null
> +++ b/arch/powerpc/boot/dts/mpc8272ads.dts
> @@ -0,0 +1,236 @@
> +/*
> + * MPC8272 ADS Device Tree Source
> + *
> + * Copyright 2005 Freescale Semiconductor Inc.
> + *
> + * This program is free software; you can redistribute it and/or
> modify it
> + * under the terms of the GNU General Public License as
> published by the
> + * Free Software Foundation; either version 2 of the License, or
> (at your
> + * option) any later version.
> + */
> +
> +
> +/*
> +/memreserve/ 00000000 4000000;
> +*/
Is this needed?
> +
> +/ {
> + model = "MPC8272ADS";
> + compatible = "MPC8260ADS";
> + #address-cells = <1>;
> + #size-cells = <1>;
> + linux,phandle = <100>;
> +
> + cpus {
> + #cpus = <1>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + linux,phandle = <200>;
> +
> + PowerPC,8272@0 {
> + device_type = "cpu";
> + reg = <0>;
> + d-cache-line-size = <20>; // 32 bytes
> + i-cache-line-size = <20>; // 32 bytes
> + d-cache-size = <4000>; // L1, 16K
> + i-cache-size = <4000>; // L1, 16K
> + timebase-frequency = <17d7840>;
> + bus-frequency = <5f5e100>;
> + clock-frequency = <17D78400>;
Are the freq's really fixed? if not having these values as 0, maybe
be better.
> + 32-bit;
> + linux,phandle = <201>;
> + linux,boot-cpu;
> + };
> + };
> +
> + interrupt-controller@f8200000 {
> + linux,phandle = <f8200000>;
> + #address-cells = <0>;
> + #interrupt-cells = <2>;
> + interrupt-controller;
> + reg = <f8200000 f8200004>;
> + built-in;
> + device_type = "pci-pic";
> + };
> + memory {
> + device_type = "memory";
> + linux,phandle = <300>;
> + reg = <00000000 4000000 f4500000 00000020>;
> + };
> +
> + chosen {
> + name = "chosen";
> + bootargs = "root=/dev/nfs rw ip=on";
Seems bad form to put bootargs in the .dts directly like this.
> + linux,stdout-path = "/dev/ttyCPM0";
I thought this was the 'of' path, not a dev path.
> + linux,platform = <0>;
> + interrupt-controller = <10c00>;
> + linux,phandle = <400>;
> + };
> +
> + soc8272@f0000000 {
> + #address-cells = <1>;
> + #size-cells = <1>;
> + #interrupt-cells = <2>;
> + device_type = "soc";
> + ranges = < 0 0 2 00000000 f0000000 00053000>;
> + reg = <f0000000 0>;
> +
> + mdio@0 {
> + device_type = "mdio";
> + compatible = "fs_enet";
> + reg = <0 0>;
> + linux,phandle = <24520>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + ethernet-phy@0 {
> + linux,phandle = <2452000>;
> + interrupt-parent = <10c00>;
> + interrupts = <19 1>;
> + reg = <0>;
> + bitbang = [ 12 12 13 02 02 01 ];
> + device_type = "ethernet-phy";
> + };
> + ethernet-phy@1 {
> + linux,phandle = <2452001>;
> + interrupt-parent = <10c00>;
> + interrupts = <19 1>;
> + bitbang = [ 12 12 13 02 02 01 ];
> + reg = <3>;
> + device_type = "ethernet-phy";
> + };
> + };
> +
> + ethernet@24000 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + device_type = "network";
> + device-id = <2>;
> + compatible = "fs_enet";
> + model = "FCC";
> + reg = <11300 20 8400 100 11380 30>;
> + mac-address = [ 00 11 2F 99 43 54 ];
> + interrupts = <20 2>;
> + interrupt-parent = <10c00>;
> + phy-handle = <2452000>;
> + rx-clock = <13>;
> + tx-clock = <12>;
> + };
> +
> + ethernet@25000 {
> + device_type = "network";
> + device-id = <3>;
> + compatible = "fs_enet";
> + model = "FCC";
> + reg = <11320 20 8500 100 113b0 30>;
> + mac-address = [ 00 11 2F 99 44 54 ];
> + interrupts = <21 2>;
> + interrupt-parent = <10c00>;
> + phy-handle = <2452001>;
> + rx-clock = <17>;
> + tx-clock = <18>;
> + };
> +
> + cpm@f0000000 {
> + linux,phandle = <f0000000>;
> + #address-cells = <1>;
> + #size-cells = <1>;
> + #interrupt-cells = <2>;
> + device_type = "cpm";
> + model = "CPM2";
> + ranges = <00000000 00000000 3ffff>;
> + reg = <10d80 3280>;
> + command-proc = <119c0>;
> + brg-frequency = <17D7840>;
> + cpm_clk = <BEBC200>;
> +
> + scc@11a00 {
> + device_type = "serial";
> + compatible = "cpm_uart";
> + model = "SCC";
> + device-id = <2>;
> + reg = <11a00 20 8000 100>;
> + current-speed = <1c200>;
> + interrupts = <28 2>;
> + interrupt-parent = <10c00>;
> + clock-setup = <0 00ffffff>;
> + rx-clock = <1>;
> + tx-clock = <1>;
> + };
> +
> + scc@11a60 {
> + device_type = "serial";
> + compatible = "cpm_uart";
> + model = "SCC";
> + device-id = <5>;
> + reg = <11a60 20 8300 100>;
> + current-speed = <1c200>;
> + interrupts = <2b 2>;
> + interrupt-parent = <10c00>;
> + clock-setup = <1b ffffff00>;
> + rx-clock = <4>;
> + tx-clock = <4>;
> + };
> +
> + };
> + interrupt-controller@10c00 {
> + linux,phandle = <10c00>;
> + #address-cells = <0>;
> + #interrupt-cells = <2>;
> + interrupt-controller;
> + reg = <10c00 80>;
> + built-in;
> + device_type = "cpm-pic";
> + };
Do we need to distinguish cpm2-pic from cpm-pic (8xx)?
> + pci@0500 {
> + linux,phandle = <0500>;
> + #interrupt-cells = <1>;
> + #size-cells = <2>;
> + #address-cells = <3>;
> + compatible = "8272";
> + device_type = "pci";
> + reg = <10430 4dc>;
> + clock-frequency = <3f940aa>;
> + interrupt-map-mask = <f800 0 0 7>;
> + interrupt-map = <
> +
> + /* IDSEL 0x16 */
> + b000 0 0 1 f8200000 40 0
> + b000 0 0 2 f8200000 41 0
> + b000 0 0 3 f8200000 42 0
> + b000 0 0 4 f8200000 43 0
> +
> + /* IDSEL 0x17 */
> + b800 0 0 1 f8200000 43 0
> + b800 0 0 2 f8200000 40 0
> + b800 0 0 3 f8200000 41 0
> + b800 0 0 4 f8200000 42 0
> +
> + /* IDSEL 0x18 */
> + c000 0 0 1 f8200000 42 0
> + c000 0 0 2 f8200000 43 0
> + c000 0 0 3 f8200000 40 0
> + c000 0 0 4 f8200000 41 0>;
> + interrupt-parent = <10c00>;
> + interrupts = <14 3>;
> + bus-range = <0 0>;
> + ranges = <02000000 0 80000000 80000000 0
> 40000000
> + 01000000 0 00000000 f6000000 0
> 02000000>;
> + };
> +
> +/* May need to remove if on a part without crypto engine */
> + crypto@30000 {
> + device_type = "crypto";
> + model = "SEC2";
> + compatible = "talitos";
> + reg = <30000 10000>;
> + interrupts = <b 0>;
> + interrupt-parent = <10c00>;
> + num-channels = <4>;
> + channel-fifo-len = <18>;
> + exec-units-mask = <0000007e>;
> +/* desc mask is for rev1.x, we need runtime fixup for >=2.x */
> + descriptor-types-mask = <01010ebf>;
> + };
> +
> + };
> +};
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/3] POWERPC: Added devicetree for mpc8272ads board
2006-09-22 4:55 ` Kumar Gala
@ 2006-09-22 8:00 ` Vitaly Bordug
0 siblings, 0 replies; 7+ messages in thread
From: Vitaly Bordug @ 2006-09-22 8:00 UTC (permalink / raw)
To: Kumar Gala; +Cc: linuxppc-dev, Paul Mackerras
[-- Attachment #1: Type: text/plain, Size: 12314 bytes --]
Kumar,
Thanks a lot for extracting some time and glance at this approach...
My comments below.
On Thu, 21 Sep 2006 23:55:36 -0500
Kumar Gala wrote:
>
> On Sep 21, 2006, at 9:48 PM, Vitaly Bordug wrote:
>
> >
> > This adds current dts file used with MPC8272ADS,
> > introducing new mdio bitbang defines, as well as
> > fully-CPM2-SoC board design.
> >
> > Signed-off-by: Vitaly Bordug <vbordug@ru.mvista.com>
> > ---
> >
> > arch/powerpc/boot/dts/mpc8272ads.dts | 236
> > +++++++++++++++++++++++ +++++++++++
> > 1 files changed, 236 insertions(+), 0 deletions(-)
> >
> > diff --git a/arch/powerpc/boot/dts/mpc8272ads.dts b/arch/powerpc/
> > boot/dts/mpc8272ads.dts
> > new file mode 100644
> > index 0000000..6d72b7d
> > --- /dev/null
> > +++ b/arch/powerpc/boot/dts/mpc8272ads.dts
> > @@ -0,0 +1,236 @@
> > +/*
> > + * MPC8272 ADS Device Tree Source
> > + *
> > + * Copyright 2005 Freescale Semiconductor Inc.
> > + *
> > + * This program is free software; you can redistribute it and/or
> > modify it
> > + * under the terms of the GNU General Public License as
> > published by the
> > + * Free Software Foundation; either version 2 of the License,
> > or (at your
> > + * option) any later version.
> > + */
> > +
> > +
> > +/*
> > +/memreserve/ 00000000 4000000;
> > +*/
>
> Is this needed?
>
not necessarily-will clean up.
> > +
> > +/ {
> > + model = "MPC8272ADS";
> > + compatible = "MPC8260ADS";
> > + #address-cells = <1>;
> > + #size-cells = <1>;
> > + linux,phandle = <100>;
> > +
> > + cpus {
> > + #cpus = <1>;
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > + linux,phandle = <200>;
> > +
> > + PowerPC,8272@0 {
> > + device_type = "cpu";
> > + reg = <0>;
> > + d-cache-line-size = <20>; // 32 bytes
> > + i-cache-line-size = <20>; // 32 bytes
> > + d-cache-size = <4000>; // L1, 16K
> > + i-cache-size = <4000>; // L1, 16K
> > + timebase-frequency = <17d7840>;
> > + bus-frequency = <5f5e100>;
> > + clock-frequency = <17D78400>;
>
> Are the freq's really fixed? if not having these values as 0, maybe
> be better.
>
On some path u-boot messed the frequencies, that's why here resides fixed approach. Eventually will be put back to <0> once it will definitely work.
> > + 32-bit;
> > + linux,phandle = <201>;
> > + linux,boot-cpu;
> > + };
> > + };
> > +
> > + interrupt-controller@f8200000 {
> > + linux,phandle = <f8200000>;
> > + #address-cells = <0>;
> > + #interrupt-cells = <2>;
> > + interrupt-controller;
> > + reg = <f8200000 f8200004>;
> > + built-in;
> > + device_type = "pci-pic";
> > + };
> > + memory {
> > + device_type = "memory";
> > + linux,phandle = <300>;
> > + reg = <00000000 4000000 f4500000 00000020>;
> > + };
> > +
> > + chosen {
> > + name = "chosen";
> > + bootargs = "root=/dev/nfs rw ip=on";
>
> Seems bad form to put bootargs in the .dts directly like this.
>
> > + linux,stdout-path = "/dev/ttyCPM0";
>
> I thought this was the 'of' path, not a dev path.
>
I was about to remove the upper stuff, and at the last moment missed that. Will clean up.
> > + linux,platform = <0>;
> > + interrupt-controller = <10c00>;
> > + linux,phandle = <400>;
> > + };
> > +
> > + soc8272@f0000000 {
> > + #address-cells = <1>;
> > + #size-cells = <1>;
> > + #interrupt-cells = <2>;
> > + device_type = "soc";
> > + ranges = < 0 0 2 00000000 f0000000 00053000>;
> > + reg = <f0000000 0>;
> > +
> > + mdio@0 {
> > + device_type = "mdio";
> > + compatible = "fs_enet";
> > + reg = <0 0>;
> > + linux,phandle = <24520>;
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > + ethernet-phy@0 {
> > + linux,phandle = <2452000>;
> > + interrupt-parent = <10c00>;
> > + interrupts = <19 1>;
> > + reg = <0>;
> > + bitbang = [ 12 12 13 02 02 01 ];
> > + device_type = "ethernet-phy";
> > + };
> > + ethernet-phy@1 {
> > + linux,phandle = <2452001>;
> > + interrupt-parent = <10c00>;
> > + interrupts = <19 1>;
> > + bitbang = [ 12 12 13 02 02 01 ];
> > + reg = <3>;
> > + device_type = "ethernet-phy";
> > + };
> > + };
> > +
> > + ethernet@24000 {
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > + device_type = "network";
> > + device-id = <2>;
> > + compatible = "fs_enet";
> > + model = "FCC";
> > + reg = <11300 20 8400 100 11380 30>;
> > + mac-address = [ 00 11 2F 99 43 54 ];
> > + interrupts = <20 2>;
> > + interrupt-parent = <10c00>;
> > + phy-handle = <2452000>;
> > + rx-clock = <13>;
> > + tx-clock = <12>;
> > + };
> > +
> > + ethernet@25000 {
> > + device_type = "network";
> > + device-id = <3>;
> > + compatible = "fs_enet";
> > + model = "FCC";
> > + reg = <11320 20 8500 100 113b0 30>;
> > + mac-address = [ 00 11 2F 99 44 54 ];
> > + interrupts = <21 2>;
> > + interrupt-parent = <10c00>;
> > + phy-handle = <2452001>;
> > + rx-clock = <17>;
> > + tx-clock = <18>;
> > + };
> > +
> > + cpm@f0000000 {
> > + linux,phandle = <f0000000>;
> > + #address-cells = <1>;
> > + #size-cells = <1>;
> > + #interrupt-cells = <2>;
> > + device_type = "cpm";
> > + model = "CPM2";
> > + ranges = <00000000 00000000 3ffff>;
> > + reg = <10d80 3280>;
> > + command-proc = <119c0>;
> > + brg-frequency = <17D7840>;
> > + cpm_clk = <BEBC200>;
> > +
> > + scc@11a00 {
> > + device_type = "serial";
> > + compatible = "cpm_uart";
> > + model = "SCC";
> > + device-id = <2>;
> > + reg = <11a00 20 8000 100>;
> > + current-speed = <1c200>;
> > + interrupts = <28 2>;
> > + interrupt-parent = <10c00>;
> > + clock-setup = <0 00ffffff>;
> > + rx-clock = <1>;
> > + tx-clock = <1>;
> > + };
> > +
> > + scc@11a60 {
> > + device_type = "serial";
> > + compatible = "cpm_uart";
> > + model = "SCC";
> > + device-id = <5>;
> > + reg = <11a60 20 8300 100>;
> > + current-speed = <1c200>;
> > + interrupts = <2b 2>;
> > + interrupt-parent = <10c00>;
> > + clock-setup = <1b ffffff00>;
> > + rx-clock = <4>;
> > + tx-clock = <4>;
> > + };
> > +
> > + };
> > + interrupt-controller@10c00 {
> > + linux,phandle = <10c00>;
> > + #address-cells = <0>;
> > + #interrupt-cells = <2>;
> > + interrupt-controller;
> > + reg = <10c00 80>;
> > + built-in;
> > + device_type = "cpm-pic";
> > + };
>
> Do we need to distinguish cpm2-pic from cpm-pic (8xx)?
>
IIRC, no, but I'll double-check.
> > + pci@0500 {
> > + linux,phandle = <0500>;
> > + #interrupt-cells = <1>;
> > + #size-cells = <2>;
> > + #address-cells = <3>;
> > + compatible = "8272";
> > + device_type = "pci";
> > + reg = <10430 4dc>;
> > + clock-frequency = <3f940aa>;
> > + interrupt-map-mask = <f800 0 0 7>;
> > + interrupt-map = <
> > +
> > + /* IDSEL 0x16 */
> > + b000 0 0 1 f8200000 40 0
> > + b000 0 0 2 f8200000 41 0
> > + b000 0 0 3 f8200000 42 0
> > + b000 0 0 4 f8200000 43 0
> > +
> > + /* IDSEL 0x17 */
> > + b800 0 0 1 f8200000 43 0
> > + b800 0 0 2 f8200000 40 0
> > + b800 0 0 3 f8200000 41 0
> > + b800 0 0 4 f8200000 42 0
> > +
> > + /* IDSEL 0x18 */
> > + c000 0 0 1 f8200000 42 0
> > + c000 0 0 2 f8200000 43 0
> > + c000 0 0 3 f8200000 40 0
> > + c000 0 0 4 f8200000 41 0>;
> > + interrupt-parent = <10c00>;
> > + interrupts = <14 3>;
> > + bus-range = <0 0>;
> > + ranges = <02000000 0 80000000 80000000 0
> > 40000000
> > + 01000000 0 00000000 f6000000 0
> > 02000000>;
> > + };
> > +
> > +/* May need to remove if on a part without crypto engine */
> > + crypto@30000 {
> > + device_type = "crypto";
> > + model = "SEC2";
> > + compatible = "talitos";
> > + reg = <30000 10000>;
> > + interrupts = <b 0>;
> > + interrupt-parent = <10c00>;
> > + num-channels = <4>;
> > + channel-fifo-len = <18>;
> > + exec-units-mask = <0000007e>;
> > +/* desc mask is for rev1.x, we need runtime fixup for >=2.x */
> > + descriptor-types-mask = <01010ebf>;
> > + };
> > +
> > + };
> > +};
>
>
Sincerely, Vitaly
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 3/3] POWERPC: mpc8272ads merge: board-specific/platform stuff
2006-09-22 2:48 ` [PATCH 3/3] POWERPC: mpc8272ads merge: board-specific/platform stuff Vitaly Bordug
@ 2006-09-22 13:12 ` Vitaly Bordug
0 siblings, 0 replies; 7+ messages in thread
From: Vitaly Bordug @ 2006-09-22 13:12 UTC (permalink / raw)
To: Vitaly Bordug; +Cc: linuxppc-dev, Paul Mackerras
Paul,
Sorry, this patch is broken - something screwed up git commit it seems...
I'll resend ASAP.
-Vitaly
On Fri, 22 Sep 2006 06:48:44 +0400
Vitaly Bordug <vbordug@ru.mvista.com> wrote:
>
> This intruduces 82xx family in arch/powerpc/platforms,
> and has all the board-specific code to represent regression-less
> transaction from ppc. The functionality is apparently the same, including
> PCI controller.
>
> Signed-off-by: Vitaly Bordug <vbordug@ru.mvista.com>
> ---
>
> arch/powerpc/Kconfig | 1
> arch/powerpc/boot/dts/mpc8272ads.dts | 236 ----------------------------------
> arch/powerpc/sysdev/cpm2_pic.c | 2
> arch/powerpc/sysdev/cpm2_pic.h | 2
> arch/powerpc/sysdev/fsl_soc.c | 68 +---------
> 5 files changed, 9 insertions(+), 300 deletions(-)
>
> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
> index 1810216..de1ef2f 100644
> --- a/arch/powerpc/Kconfig
> +++ b/arch/powerpc/Kconfig
> @@ -594,7 +594,6 @@ endmenu
>
> source arch/powerpc/platforms/embedded6xx/Kconfig
> source arch/powerpc/platforms/4xx/Kconfig
> -source arch/powerpc/platforms/82xx/Kconfig
> source arch/powerpc/platforms/83xx/Kconfig
> source arch/powerpc/platforms/85xx/Kconfig
> source arch/powerpc/platforms/86xx/Kconfig
> diff --git a/arch/powerpc/boot/dts/mpc8272ads.dts b/arch/powerpc/boot/dts/mpc8272ads.dts
> deleted file mode 100644
> index 6d72b7d..0000000
> --- a/arch/powerpc/boot/dts/mpc8272ads.dts
> +++ /dev/null
> @@ -1,236 +0,0 @@
> -/*
> - * MPC8272 ADS Device Tree Source
> - *
> - * Copyright 2005 Freescale Semiconductor Inc.
> - *
> - * This program is free software; you can redistribute it and/or modify it
> - * under the terms of the GNU General Public License as published by the
> - * Free Software Foundation; either version 2 of the License, or (at your
> - * option) any later version.
> - */
> -
> -
> -/*
> -/memreserve/ 00000000 4000000;
> -*/
> -
> -/ {
> - model = "MPC8272ADS";
> - compatible = "MPC8260ADS";
> - #address-cells = <1>;
> - #size-cells = <1>;
> - linux,phandle = <100>;
> -
> - cpus {
> - #cpus = <1>;
> - #address-cells = <1>;
> - #size-cells = <0>;
> - linux,phandle = <200>;
> -
> - PowerPC,8272@0 {
> - device_type = "cpu";
> - reg = <0>;
> - d-cache-line-size = <20>; // 32 bytes
> - i-cache-line-size = <20>; // 32 bytes
> - d-cache-size = <4000>; // L1, 16K
> - i-cache-size = <4000>; // L1, 16K
> - timebase-frequency = <17d7840>;
> - bus-frequency = <5f5e100>;
> - clock-frequency = <17D78400>;
> - 32-bit;
> - linux,phandle = <201>;
> - linux,boot-cpu;
> - };
> - };
> -
> - interrupt-controller@f8200000 {
> - linux,phandle = <f8200000>;
> - #address-cells = <0>;
> - #interrupt-cells = <2>;
> - interrupt-controller;
> - reg = <f8200000 f8200004>;
> - built-in;
> - device_type = "pci-pic";
> - };
> - memory {
> - device_type = "memory";
> - linux,phandle = <300>;
> - reg = <00000000 4000000 f4500000 00000020>;
> - };
> -
> - chosen {
> - name = "chosen";
> - bootargs = "root=/dev/nfs rw ip=on";
> - linux,stdout-path = "/dev/ttyCPM0";
> - linux,platform = <0>;
> - interrupt-controller = <10c00>;
> - linux,phandle = <400>;
> - };
> -
> - soc8272@f0000000 {
> - #address-cells = <1>;
> - #size-cells = <1>;
> - #interrupt-cells = <2>;
> - device_type = "soc";
> - ranges = < 0 0 2 00000000 f0000000 00053000>;
> - reg = <f0000000 0>;
> -
> - mdio@0 {
> - device_type = "mdio";
> - compatible = "fs_enet";
> - reg = <0 0>;
> - linux,phandle = <24520>;
> - #address-cells = <1>;
> - #size-cells = <0>;
> - ethernet-phy@0 {
> - linux,phandle = <2452000>;
> - interrupt-parent = <10c00>;
> - interrupts = <19 1>;
> - reg = <0>;
> - bitbang = [ 12 12 13 02 02 01 ];
> - device_type = "ethernet-phy";
> - };
> - ethernet-phy@1 {
> - linux,phandle = <2452001>;
> - interrupt-parent = <10c00>;
> - interrupts = <19 1>;
> - bitbang = [ 12 12 13 02 02 01 ];
> - reg = <3>;
> - device_type = "ethernet-phy";
> - };
> - };
> -
> - ethernet@24000 {
> - #address-cells = <1>;
> - #size-cells = <0>;
> - device_type = "network";
> - device-id = <2>;
> - compatible = "fs_enet";
> - model = "FCC";
> - reg = <11300 20 8400 100 11380 30>;
> - mac-address = [ 00 11 2F 99 43 54 ];
> - interrupts = <20 2>;
> - interrupt-parent = <10c00>;
> - phy-handle = <2452000>;
> - rx-clock = <13>;
> - tx-clock = <12>;
> - };
> -
> - ethernet@25000 {
> - device_type = "network";
> - device-id = <3>;
> - compatible = "fs_enet";
> - model = "FCC";
> - reg = <11320 20 8500 100 113b0 30>;
> - mac-address = [ 00 11 2F 99 44 54 ];
> - interrupts = <21 2>;
> - interrupt-parent = <10c00>;
> - phy-handle = <2452001>;
> - rx-clock = <17>;
> - tx-clock = <18>;
> - };
> -
> - cpm@f0000000 {
> - linux,phandle = <f0000000>;
> - #address-cells = <1>;
> - #size-cells = <1>;
> - #interrupt-cells = <2>;
> - device_type = "cpm";
> - model = "CPM2";
> - ranges = <00000000 00000000 3ffff>;
> - reg = <10d80 3280>;
> - command-proc = <119c0>;
> - brg-frequency = <17D7840>;
> - cpm_clk = <BEBC200>;
> -
> - scc@11a00 {
> - device_type = "serial";
> - compatible = "cpm_uart";
> - model = "SCC";
> - device-id = <2>;
> - reg = <11a00 20 8000 100>;
> - current-speed = <1c200>;
> - interrupts = <28 2>;
> - interrupt-parent = <10c00>;
> - clock-setup = <0 00ffffff>;
> - rx-clock = <1>;
> - tx-clock = <1>;
> - };
> -
> - scc@11a60 {
> - device_type = "serial";
> - compatible = "cpm_uart";
> - model = "SCC";
> - device-id = <5>;
> - reg = <11a60 20 8300 100>;
> - current-speed = <1c200>;
> - interrupts = <2b 2>;
> - interrupt-parent = <10c00>;
> - clock-setup = <1b ffffff00>;
> - rx-clock = <4>;
> - tx-clock = <4>;
> - };
> -
> - };
> - interrupt-controller@10c00 {
> - linux,phandle = <10c00>;
> - #address-cells = <0>;
> - #interrupt-cells = <2>;
> - interrupt-controller;
> - reg = <10c00 80>;
> - built-in;
> - device_type = "cpm-pic";
> - };
> - pci@0500 {
> - linux,phandle = <0500>;
> - #interrupt-cells = <1>;
> - #size-cells = <2>;
> - #address-cells = <3>;
> - compatible = "8272";
> - device_type = "pci";
> - reg = <10430 4dc>;
> - clock-frequency = <3f940aa>;
> - interrupt-map-mask = <f800 0 0 7>;
> - interrupt-map = <
> -
> - /* IDSEL 0x16 */
> - b000 0 0 1 f8200000 40 0
> - b000 0 0 2 f8200000 41 0
> - b000 0 0 3 f8200000 42 0
> - b000 0 0 4 f8200000 43 0
> -
> - /* IDSEL 0x17 */
> - b800 0 0 1 f8200000 43 0
> - b800 0 0 2 f8200000 40 0
> - b800 0 0 3 f8200000 41 0
> - b800 0 0 4 f8200000 42 0
> -
> - /* IDSEL 0x18 */
> - c000 0 0 1 f8200000 42 0
> - c000 0 0 2 f8200000 43 0
> - c000 0 0 3 f8200000 40 0
> - c000 0 0 4 f8200000 41 0>;
> - interrupt-parent = <10c00>;
> - interrupts = <14 3>;
> - bus-range = <0 0>;
> - ranges = <02000000 0 80000000 80000000 0 40000000
> - 01000000 0 00000000 f6000000 0 02000000>;
> - };
> -
> -/* May need to remove if on a part without crypto engine */
> - crypto@30000 {
> - device_type = "crypto";
> - model = "SEC2";
> - compatible = "talitos";
> - reg = <30000 10000>;
> - interrupts = <b 0>;
> - interrupt-parent = <10c00>;
> - num-channels = <4>;
> - channel-fifo-len = <18>;
> - exec-units-mask = <0000007e>;
> -/* desc mask is for rev1.x, we need runtime fixup for >=2.x */
> - descriptor-types-mask = <01010ebf>;
> - };
> -
> - };
> -};
> diff --git a/arch/powerpc/sysdev/cpm2_pic.c b/arch/powerpc/sysdev/cpm2_pic.c
> index 28b0189..5175299 100644
> --- a/arch/powerpc/sysdev/cpm2_pic.c
> +++ b/arch/powerpc/sysdev/cpm2_pic.c
> @@ -147,7 +147,7 @@ static struct irq_chip cpm2_pic = {
> .end = cpm2_end_irq,
> };
>
> -unsigned int cpm2_get_irq(struct pt_regs *regs)
> +int cpm2_get_irq(struct pt_regs *regs)
> {
> int irq;
> unsigned long bits;
> diff --git a/arch/powerpc/sysdev/cpm2_pic.h b/arch/powerpc/sysdev/cpm2_pic.h
> index 3c513e5..d63e45d 100644
> --- a/arch/powerpc/sysdev/cpm2_pic.h
> +++ b/arch/powerpc/sysdev/cpm2_pic.h
> @@ -3,7 +3,7 @@ #define _PPC_KERNEL_CPM2_H
>
> extern intctl_cpm2_t *cpm2_intctl;
>
> -extern unsigned int cpm2_get_irq(struct pt_regs *regs);
> +extern int cpm2_get_irq(struct pt_regs *regs);
>
> extern void cpm2_pic_init(struct device_node*);
>
> diff --git a/arch/powerpc/sysdev/fsl_soc.c b/arch/powerpc/sysdev/fsl_soc.c
> index 39b76f9..022ed27 100644
> --- a/arch/powerpc/sysdev/fsl_soc.c
> +++ b/arch/powerpc/sysdev/fsl_soc.c
> @@ -37,7 +37,6 @@ #include <mm/mmu_decl.h>
> #include <asm/cpm2.h>
>
> extern void init_fcc_ioports(struct fs_platform_info*);
> -extern void init_scc_ioports(struct fs_uart_platform_info*);
> static phys_addr_t immrbase = -1;
>
> phys_addr_t get_immrbase(void)
> @@ -567,7 +566,7 @@ static int __init fs_enet_of_init(void)
> struct resource r[4];
> struct device_node *phy, *mdio;
> struct fs_platform_info fs_enet_data;
> - const unsigned int *id, *phy_addr, phy_irq;
> + const unsigned int *id, *phy_addr;
> const void *mac_addr;
> const phandle *ph;
> const char *model;
> @@ -589,7 +588,6 @@ static int __init fs_enet_of_init(void)
> if (ret)
> goto err;
> r[2].name = fcc_regs_c;
> - fs_enet_data.fcc_regs_c = r[2].start;
>
> r[3].start = r[3].end = irq_of_parse_and_map(np, 0);
> r[3].flags = IORESOURCE_IRQ;
> @@ -622,8 +620,6 @@ static int __init fs_enet_of_init(void)
> phy_addr = get_property(phy, "reg", NULL);
> fs_enet_data.phy_addr = *phy_addr;
>
> - phy_irq = get_property(phy, "interrupts", NULL);
> -
> id = get_property(np, "device-id", NULL);
> fs_enet_data.fs_no = *id;
> strcpy(fs_enet_data.fs_type, model);
> @@ -641,7 +637,6 @@ static int __init fs_enet_of_init(void)
>
> if (strstr(model, "FCC")) {
> int fcc_index = *id - 1;
> - unsigned char* mdio_bb_prop;
>
> fs_enet_data.dpram_offset = (u32)cpm_dpram_addr(0);
> fs_enet_data.rx_ring = 32;
> @@ -657,63 +652,14 @@ static int __init fs_enet_of_init(void)
> (u32)res.start, fs_enet_data.phy_addr);
> fs_enet_data.bus_id = (char*)&bus_id[(*id)];
> fs_enet_data.init_ioports = init_fcc_ioports;
> + }
>
> - mdio_bb_prop = get_property(phy, "bitbang", NULL);
> - if (mdio_bb_prop) {
> - struct platform_device *fs_enet_mdio_bb_dev;
> - struct fs_mii_bb_platform_info fs_enet_mdio_bb_data;
> -
> - fs_enet_mdio_bb_dev =
> - platform_device_register_simple("fsl-bb-mdio",
> - i, NULL, 0);
> - memset(&fs_enet_mdio_bb_data, 0,
> - sizeof(struct fs_mii_bb_platform_info));
> - fs_enet_mdio_bb_data.mdio_dat.bit =
> - mdio_bb_prop[0];
> - fs_enet_mdio_bb_data.mdio_dir.bit =
> - mdio_bb_prop[1];
> - fs_enet_mdio_bb_data.mdc_dat.bit =
> - mdio_bb_prop[2];
> - fs_enet_mdio_bb_data.mdio_port =
> - mdio_bb_prop[3];
> - fs_enet_mdio_bb_data.mdc_port =
> - mdio_bb_prop[4];
> - fs_enet_mdio_bb_data.delay =
> - mdio_bb_prop[5];
> -
> - fs_enet_mdio_bb_data.irq[0] = phy_irq[0];
> - fs_enet_mdio_bb_data.irq[1] = -1;
> - fs_enet_mdio_bb_data.irq[2] = -1;
> - fs_enet_mdio_bb_data.irq[3] = phy_irq[0];
> - fs_enet_mdio_bb_data.irq[31] = -1;
> -
> - fs_enet_mdio_bb_data.mdio_dat.offset =
> - (u32)&cpm2_immr->im_ioport.iop_pdatc;
> - fs_enet_mdio_bb_data.mdio_dir.offset =
> - (u32)&cpm2_immr->im_ioport.iop_pdirc;
> - fs_enet_mdio_bb_data.mdc_dat.offset =
> - (u32)&cpm2_immr->im_ioport.iop_pdatc;
> -
> - ret = platform_device_add_data(
> - fs_enet_mdio_bb_dev,
> - &fs_enet_mdio_bb_data,
> - sizeof(struct fs_mii_bb_platform_info));
> - if (ret)
> - goto unreg;
> - } else {
> - printk(KERN_ERR
> - "mii-properties isn't found in device tree\n");
> - ret = -ENODEV;
> - goto unreg;
> - }
> - }
> -
> - of_node_put(phy);
> - of_node_put(mdio);
> + of_node_put(phy);
> + of_node_put(mdio);
>
> - ret = platform_device_add_data(fs_enet_dev, &fs_enet_data,
> - sizeof(struct
> - fs_platform_info));
> + ret = platform_device_add_data(fs_enet_dev, &fs_enet_data,
> + sizeof(struct
> + fs_platform_info));
> if (ret)
> goto unreg;
> }
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-dev
>
>
--
Sincerely,
Vitaly
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2006-09-22 13:12 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-09-22 2:46 [PATH 0/3] Add mpc8272ads to powerpc Vitaly Bordug
2006-09-22 2:48 ` [PATCH 1/3] POWERPC: Added devicetree for mpc8272ads board Vitaly Bordug
2006-09-22 4:55 ` Kumar Gala
2006-09-22 8:00 ` Vitaly Bordug
2006-09-22 2:48 ` [PATCH 2/3] POWERPC: 8272ads merge to powerpc: common stuff Vitaly Bordug
2006-09-22 2:48 ` [PATCH 3/3] POWERPC: mpc8272ads merge: board-specific/platform stuff Vitaly Bordug
2006-09-22 13:12 ` Vitaly Bordug
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).