* [PATCH 1/6] powerpc: update flash size and partition in mpc8272ads dts
@ 2008-08-06 7:04 Li Yang
2008-08-06 7:04 ` [PATCH 2/6] powerpc: export cpm2_immr symbol for CPM2 drivers to compile as module Li Yang
0 siblings, 1 reply; 20+ messages in thread
From: Li Yang @ 2008-08-06 7:04 UTC (permalink / raw)
To: linuxppc-dev, galak; +Cc: Li Yang
Make the flash size 8M to be consistent with the module comes with board.
Add predefined partitions for the flash. Add ethernet port aliases.
Signed-off-by: Li Yang <leoli@freescale.com>
---
arch/powerpc/boot/dts/mpc8272ads.dts | 38 +++++++++++++++++++++++++++++----
1 files changed, 33 insertions(+), 5 deletions(-)
diff --git a/arch/powerpc/boot/dts/mpc8272ads.dts b/arch/powerpc/boot/dts/mpc8272ads.dts
index 2a1929a..b2ce4c0 100644
--- a/arch/powerpc/boot/dts/mpc8272ads.dts
+++ b/arch/powerpc/boot/dts/mpc8272ads.dts
@@ -17,6 +17,11 @@
#address-cells = <1>;
#size-cells = <1>;
+ aliases {
+ ethernet0 = &enet0;
+ ethernet1 = &enet1;
+ };
+
cpus {
#address-cells = <1>;
#size-cells = <0>;
@@ -46,15 +51,38 @@
#size-cells = <1>;
reg = <0xf0010100 0x40>;
- ranges = <0x0 0x0 0xfe000000 0x2000000
+ ranges = <0x0 0x0 0xff800000 0x800000
0x1 0x0 0xf4500000 0x8000
0x3 0x0 0xf8200000 0x8000>;
flash@0,0 {
- compatible = "jedec-flash";
- reg = <0x0 0x0 0x2000000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "cfi-flash";
+ probe-type = "CFI";
+ reg = <0x0 0x0 0x800000>;
bank-width = <4>;
device-width = <1>;
+ hrcw@0 {
+ label = "hrcw";
+ reg = <0x0 0x40000>;
+ };
+ fs@40000 {
+ label = "fs";
+ reg = <0x40000 0x540000>;
+ };
+ kernel@580000 {
+ label = "kernel";
+ reg = <0x580000 0x180000>;
+ };
+ u-boot@700000 {
+ label = "u-boot";
+ reg = <0x700000 0x40000>;
+ };
+ u-boot-env@740000 {
+ label = "u-boot-env";
+ reg = <0x740000 0x40000>;
+ };
};
board-control@1,0 {
@@ -192,7 +220,7 @@
};
};
- ethernet@11300 {
+ enet0: ethernet@11300 {
device_type = "network";
compatible = "fsl,mpc8272-fcc-enet",
"fsl,cpm2-fcc-enet";
@@ -205,7 +233,7 @@
fsl,cpm-command = <0x12000300>;
};
- ethernet@11320 {
+ enet1: ethernet@11320 {
device_type = "network";
compatible = "fsl,mpc8272-fcc-enet",
"fsl,cpm2-fcc-enet";
--
1.5.5.1.248.g4b17
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 2/6] powerpc: export cpm2_immr symbol for CPM2 drivers to compile as module
2008-08-06 7:04 [PATCH 1/6] powerpc: update flash size and partition in mpc8272ads dts Li Yang
@ 2008-08-06 7:04 ` Li Yang
2008-08-06 7:04 ` [PATCH 3/6] powerpc: update QE/CPM2 headers for USB support Li Yang
2008-08-06 15:24 ` [PATCH 2/6] powerpc: export cpm2_immr symbol for CPM2 drivers to compile as module Anton Vorontsov
0 siblings, 2 replies; 20+ messages in thread
From: Li Yang @ 2008-08-06 7:04 UTC (permalink / raw)
To: linuxppc-dev, galak; +Cc: Li Yang
Signed-off-by: Li Yang <leoli@freescale.com>
---
arch/powerpc/sysdev/cpm2.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/arch/powerpc/sysdev/cpm2.c b/arch/powerpc/sysdev/cpm2.c
index f1c3395..021480e 100644
--- a/arch/powerpc/sysdev/cpm2.c
+++ b/arch/powerpc/sysdev/cpm2.c
@@ -52,6 +52,7 @@ cpm_cpm2_t __iomem *cpmp; /* Pointer to comm processor space */
* the communication processor devices.
*/
cpm2_map_t __iomem *cpm2_immr;
+EXPORT_SYMBOL(cpm2_immr);
#define CPM_MAP_SIZE (0x40000) /* 256k - the PQ3 reserve this amount
of space for CPM as it is larger
--
1.5.5.1.248.g4b17
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 3/6] powerpc: update QE/CPM2 headers for USB support
2008-08-06 7:04 ` [PATCH 2/6] powerpc: export cpm2_immr symbol for CPM2 drivers to compile as module Li Yang
@ 2008-08-06 7:04 ` Li Yang
2008-08-06 7:04 ` [PATCH 4/6] powerpc: add USB peripheral support to MPC8272ADS Li Yang
2008-08-06 15:24 ` [PATCH 2/6] powerpc: export cpm2_immr symbol for CPM2 drivers to compile as module Anton Vorontsov
1 sibling, 1 reply; 20+ messages in thread
From: Li Yang @ 2008-08-06 7:04 UTC (permalink / raw)
To: linuxppc-dev, galak; +Cc: Li Yang
Signed-off-by: Li Yang <leoli@freescale.com>
---
arch/powerpc/include/asm/immap_cpm2.h | 9 +++------
arch/powerpc/include/asm/immap_qe.h | 9 +++------
2 files changed, 6 insertions(+), 12 deletions(-)
diff --git a/arch/powerpc/include/asm/immap_cpm2.h b/arch/powerpc/include/asm/immap_cpm2.h
index 4080bab..d4f069b 100644
--- a/arch/powerpc/include/asm/immap_cpm2.h
+++ b/arch/powerpc/include/asm/immap_cpm2.h
@@ -554,14 +554,11 @@ typedef struct usb_ctlr {
u8 usb_usadr;
u8 usb_uscom;
u8 res1[1];
- u16 usb_usep1;
- u16 usb_usep2;
- u16 usb_usep3;
- u16 usb_usep4;
+ __be16 usb_usep[4];
u8 res2[4];
- u16 usb_usber;
+ __be16 usb_usber;
u8 res3[2];
- u16 usb_usbmr;
+ __be16 usb_usbmr;
u8 usb_usbs;
u8 res4[7];
} usb_cpm2_t;
diff --git a/arch/powerpc/include/asm/immap_qe.h b/arch/powerpc/include/asm/immap_qe.h
index 3c2fced..08d616a 100644
--- a/arch/powerpc/include/asm/immap_qe.h
+++ b/arch/powerpc/include/asm/immap_qe.h
@@ -215,10 +215,7 @@ struct usb_ctlr {
u8 usb_usadr;
u8 usb_uscom;
u8 res1[1];
- __be16 usb_usep1;
- __be16 usb_usep2;
- __be16 usb_usep3;
- __be16 usb_usep4;
+ __be16 usb_usep[4];
u8 res2[4];
__be16 usb_usber;
u8 res3[2];
@@ -472,8 +469,8 @@ extern phys_addr_t get_qe_base(void);
static inline unsigned long immrbar_virt_to_phys(void *address)
{
- if ( ((u32)address >= (u32)qe_immr) &&
- ((u32)address < ((u32)qe_immr + QE_IMMAP_SIZE)) )
+ if (((u32)address >= (u32)qe_immr) &&
+ ((u32)address < ((u32)qe_immr + QE_IMMAP_SIZE)))
return (unsigned long)(address - (u32)qe_immr +
(u32)get_qe_base());
return (unsigned long)virt_to_phys(address);
--
1.5.5.1.248.g4b17
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 4/6] powerpc: add USB peripheral support to MPC8272ADS
2008-08-06 7:04 ` [PATCH 3/6] powerpc: update QE/CPM2 headers for USB support Li Yang
@ 2008-08-06 7:04 ` Li Yang
2008-08-06 7:04 ` [PATCH 5/6] powerpc: add USB peripheral support to MPC836xMDS Li Yang
` (2 more replies)
0 siblings, 3 replies; 20+ messages in thread
From: Li Yang @ 2008-08-06 7:04 UTC (permalink / raw)
To: linuxppc-dev, galak; +Cc: Li Yang
Signed-off-by: Li Yang <leoli@freescale.com>
---
arch/powerpc/boot/dts/mpc8272ads.dts | 8 ++++++++
arch/powerpc/platforms/82xx/mpc8272_ads.c | 25 +++++++++++++++++++++++++
arch/powerpc/platforms/82xx/pq2ads.h | 3 +++
3 files changed, 36 insertions(+), 0 deletions(-)
diff --git a/arch/powerpc/boot/dts/mpc8272ads.dts b/arch/powerpc/boot/dts/mpc8272ads.dts
index b2ce4c0..75cc94c 100644
--- a/arch/powerpc/boot/dts/mpc8272ads.dts
+++ b/arch/powerpc/boot/dts/mpc8272ads.dts
@@ -256,6 +256,14 @@
#address-cells = <1>;
#size-cells = <0>;
};
+
+ usb@11b60 {
+ compatible = "fsl,qe_udc";
+ reg = <0x11b60 0x40 0x8b00 0x100>;
+ interrupts = <11 8>;
+ interrupt-parent = <&PIC>;
+ mode = "slave";
+ };
};
PIC: interrupt-controller@10c00 {
diff --git a/arch/powerpc/platforms/82xx/mpc8272_ads.c b/arch/powerpc/platforms/82xx/mpc8272_ads.c
index 8054c68..69781e6 100644
--- a/arch/powerpc/platforms/82xx/mpc8272_ads.c
+++ b/arch/powerpc/platforms/82xx/mpc8272_ads.c
@@ -23,6 +23,7 @@
#include <asm/udbg.h>
#include <asm/machdep.h>
#include <asm/time.h>
+#include <asm/fs_pd.h>
#include <platforms/82xx/pq2.h>
@@ -100,11 +101,22 @@ static struct cpm_pin mpc8272_ads_pins[] = {
/* I2C */
{3, 14, CPM_PIN_INPUT | CPM_PIN_SECONDARY | CPM_PIN_OPENDRAIN},
{3, 15, CPM_PIN_INPUT | CPM_PIN_SECONDARY | CPM_PIN_OPENDRAIN},
+
+ /* USB */
+ {2, 20, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, /* output enable */
+ {2, 11, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, /* RP */
+ {2, 10, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, /* RN */
+ {3, 25, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, /* Rxd */
+ {3, 24, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, /* TN */
+ {3, 23, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, /* TP */
+ {2, 24, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, /* Usb_clk */
};
static void __init init_ioports(void)
{
int i;
+ cpmux_t __iomem *im_cpmux;
+ u32 reg;
for (i = 0; i < ARRAY_SIZE(mpc8272_ads_pins); i++) {
struct cpm_pin *pin = &mpc8272_ads_pins[i];
@@ -119,6 +131,13 @@ static void __init init_ioports(void)
cpm2_clk_setup(CPM_CLK_FCC1, CPM_CLK10, CPM_CLK_TX);
cpm2_clk_setup(CPM_CLK_FCC2, CPM_CLK15, CPM_CLK_RX);
cpm2_clk_setup(CPM_CLK_FCC2, CPM_CLK16, CPM_CLK_TX);
+
+ /* USB use clock of SCC3 */
+ cpm2_clk_setup(CPM_CLK_SCC3, CPM_CLK8, CPM_CLK_TX);
+ /* SCC3 cannot be used in NMSI mode */
+ im_cpmux = cpm2_map(im_cpmux);
+ reg = in_be32(&im_cpmux->cmx_scr);
+ out_be32(&im_cpmux->cmx_scr, reg | CMXSCR_SC3);
}
static void __init mpc8272_ads_setup_arch(void)
@@ -150,6 +169,12 @@ static void __init mpc8272_ads_setup_arch(void)
clrbits32(&bcsr[3], BCSR3_FETHIEN2);
setbits32(&bcsr[3], BCSR3_FETH2_RST);
+ /* Enabling USB support in BCSR */
+ np = of_find_compatible_node(NULL, NULL, "fsl,qe_udc");
+ if (np != NULL) {
+ clrbits32(&bcsr[3], BCSR3_USB_EN);
+ clrbits32(&bcsr[3], BCSR3_USB_HI_SPEED);
+ }
iounmap(bcsr);
init_ioports();
diff --git a/arch/powerpc/platforms/82xx/pq2ads.h b/arch/powerpc/platforms/82xx/pq2ads.h
index 984db42..d0e82e2 100644
--- a/arch/powerpc/platforms/82xx/pq2ads.h
+++ b/arch/powerpc/platforms/82xx/pq2ads.h
@@ -43,6 +43,9 @@
#define BCSR1_RS232_EN2 ((uint)0x01000000) /* 0 ==enable */
#define BCSR3_FETHIEN2 ((uint)0x10000000) /* 0 == enable*/
#define BCSR3_FETH2_RST ((uint)0x80000000) /* 0 == reset */
+#define BCSR3_USB_EN ((uint)0x80000000) /* 0 == enable*/
+#define BCSR3_USB_HI_SPEED ((uint)0x40000000) /* 0 == highspeed */
+#define BCSR3_USBVCC ((uint)0x20000000) /* 0 == disable */
/* cpm serial driver works with constants below */
--
1.5.5.1.248.g4b17
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 5/6] powerpc: add USB peripheral support to MPC836xMDS
2008-08-06 7:04 ` [PATCH 4/6] powerpc: add USB peripheral support to MPC8272ADS Li Yang
@ 2008-08-06 7:04 ` Li Yang
2008-08-06 7:04 ` [PATCH 6/6] powerpc: add 82xx platform level support to SEC engine Li Yang
` (3 more replies)
2008-08-06 7:48 ` [PATCH 4/6] powerpc: add USB peripheral support to MPC8272ADS Stephen Rothwell
2008-08-06 17:19 ` Scott Wood
2 siblings, 4 replies; 20+ messages in thread
From: Li Yang @ 2008-08-06 7:04 UTC (permalink / raw)
To: linuxppc-dev, galak; +Cc: Li Yang
Signed-off-by: Li Yang <leoli@freescale.com>
---
arch/powerpc/boot/dts/mpc836x_mds.dts | 15 ++++++-
arch/powerpc/platforms/83xx/mpc836x_mds.c | 19 ++++++++-
arch/powerpc/platforms/83xx/mpc83xx.h | 1 +
arch/powerpc/platforms/83xx/usb.c | 67 +++++++++++++++++++++++++++++
4 files changed, 100 insertions(+), 2 deletions(-)
diff --git a/arch/powerpc/boot/dts/mpc836x_mds.dts b/arch/powerpc/boot/dts/mpc836x_mds.dts
index a3b76a7..596377b 100644
--- a/arch/powerpc/boot/dts/mpc836x_mds.dts
+++ b/arch/powerpc/boot/dts/mpc836x_mds.dts
@@ -235,6 +235,17 @@
0 2 1 0 1 0>; /* MDC */
};
+ pio_usb: usb_pin@01 {
+ pio-map = <
+ /* port pin dir open_drain assignment has_irq */
+ 1 2 1 0 3 0 /* USBOE */
+ 1 3 1 0 3 0 /* USBTP */
+ 1 8 1 0 1 0 /* USBTN */
+ 1 10 2 0 3 0 /* USBRXD */
+ 1 9 2 1 3 0 /* USBRP */
+ 1 11 2 1 3 0>; /* USBRN */
+ };
+
};
};
@@ -280,11 +291,13 @@
};
usb@6c0 {
- compatible = "qe_udc";
+ compatible = "fsl,qe_udc";
reg = <0x6c0 0x40 0x8b00 0x100>;
interrupts = <11>;
interrupt-parent = <&qeic>;
mode = "slave";
+ usb-clock = <21>;
+ pio-handle = <&pio_usb>;
};
enet0: ucc@2000 {
diff --git a/arch/powerpc/platforms/83xx/mpc836x_mds.c b/arch/powerpc/platforms/83xx/mpc836x_mds.c
index 9d46e5b..92afd40 100644
--- a/arch/powerpc/platforms/83xx/mpc836x_mds.c
+++ b/arch/powerpc/platforms/83xx/mpc836x_mds.c
@@ -93,6 +93,12 @@ static void __init mpc836x_mds_setup_arch(void)
for (np = NULL; (np = of_find_node_by_name(np, "ucc")) != NULL;)
par_io_of_config(np);
+
+ np = of_find_compatible_node(NULL, NULL, "fsl,qe_udc");
+ if (np) {
+ par_io_of_config(np);
+ qe_usb_clock_set(np);
+ }
}
if ((np = of_find_compatible_node(NULL, "network", "ucc_geth"))
@@ -127,9 +133,20 @@ static void __init mpc836x_mds_setup_arch(void)
iounmap(immap);
}
- iounmap(bcsr_regs);
of_node_put(np);
}
+
+ np = of_find_compatible_node(NULL, NULL, "fsl,qe_udc");
+ if (np != NULL) {
+ /* Set the TESCs run on RGMII mode */
+ bcsr_regs[8] &= ~0xf0;
+ /* Enable the USB Device PHY */
+ bcsr_regs[13] &= ~0x0f;
+ udelay(1000);
+ bcsr_regs[13] |= 0x05;
+ of_node_put(np);
+ }
+ iounmap(bcsr_regs);
#endif /* CONFIG_QUICC_ENGINE */
}
diff --git a/arch/powerpc/platforms/83xx/mpc83xx.h b/arch/powerpc/platforms/83xx/mpc83xx.h
index 2a7cbab..d025b47 100644
--- a/arch/powerpc/platforms/83xx/mpc83xx.h
+++ b/arch/powerpc/platforms/83xx/mpc83xx.h
@@ -63,5 +63,6 @@ extern void mpc83xx_restart(char *cmd);
extern long mpc83xx_time_init(void);
extern int mpc834x_usb_cfg(void);
extern int mpc831x_usb_cfg(void);
+extern int qe_usb_clock_set(struct device_node *np);
#endif /* __MPC83XX_H__ */
diff --git a/arch/powerpc/platforms/83xx/usb.c b/arch/powerpc/platforms/83xx/usb.c
index cc99c28..3d04ab5 100644
--- a/arch/powerpc/platforms/83xx/usb.c
+++ b/arch/powerpc/platforms/83xx/usb.c
@@ -18,6 +18,7 @@
#include <asm/io.h>
#include <asm/prom.h>
#include <sysdev/fsl_soc.h>
+#include <asm/qe.h>
#include "mpc83xx.h"
@@ -240,3 +241,69 @@ int mpc837x_usb_cfg(void)
return ret;
}
#endif /* CONFIG_PPC_MPC837x */
+
+#ifdef CONFIG_QUICC_ENGINE
+/* QE USB_CLOCK configure functions */
+int qe_usb_clock_set(struct device_node *np)
+{
+ u32 tmpreg = 0;
+ struct qe_mux *qemux = NULL;
+ const int *clock;
+
+ qemux = &qe_immr->qmx;
+
+ clock = of_get_property(np, "usb-clock", NULL);
+ if (!clock)
+ return -EINVAL;
+
+ /* CLK21 -> USBCLK on MPC8360-PB*/
+ tmpreg = in_be32(&qemux->cmxgcr) & ~QE_CMXGCR_USBCS;
+ switch (*clock) {
+ case 21:
+ tmpreg |= 0x8;
+ out_be32(&qemux->cmxgcr, tmpreg);
+ par_io_config_pin(2, 20, 2, 0, 1, 0); /* PC20 for CLK21 */
+ break;
+ case 19:
+ tmpreg |= 0x7;
+ out_be32(&qemux->cmxgcr, tmpreg);
+ par_io_config_pin(2, 18, 2, 0, 1, 0); /* PC18 for CLK19 */
+ break;
+ case 17:
+ tmpreg |= 0x6;
+ out_be32(&qemux->cmxgcr, tmpreg);
+ par_io_config_pin(2, 16, 2, 0, 1, 0); /* PC16 for CLK17 */
+ break;
+ case 13:
+ tmpreg |= 0x5;
+ out_be32(&qemux->cmxgcr, tmpreg);
+ par_io_config_pin(2, 12, 2, 0, 1, 0); /* PC12 for CLK13 */
+ break;
+ case 9:
+ tmpreg |= 0x4;
+ out_be32(&qemux->cmxgcr, tmpreg);
+ par_io_config_pin(2, 8, 2, 0, 1, 0); /* PC8 for CLK9 */
+ break;
+ case 7:
+ tmpreg |= 0x3;
+ out_be32(&qemux->cmxgcr, tmpreg);
+ par_io_config_pin(2, 6, 2, 0, 1, 0); /* PC6 for CLK7 */
+ break;
+ case 5:
+ tmpreg |= 0x2;
+ out_be32(&qemux->cmxgcr, tmpreg);
+ par_io_config_pin(2, 4, 2, 0, 1, 0); /* PC4 for CLK5 */
+ break;
+ case 3:
+ tmpreg |= 0x1;
+ out_be32(&qemux->cmxgcr, tmpreg);
+ par_io_config_pin(2, 2, 2, 0, 1, 0); /* PC2 for CLK3 */
+ break;
+ default:
+ printk(KERN_ERR "Unsupport usb-clock input pin\n");
+ }
+
+ return 0;
+}
+#endif
+
--
1.5.5.1.248.g4b17
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 6/6] powerpc: add 82xx platform level support to SEC engine
2008-08-06 7:04 ` [PATCH 5/6] powerpc: add USB peripheral support to MPC836xMDS Li Yang
@ 2008-08-06 7:04 ` Li Yang
2008-08-06 17:27 ` Scott Wood
2008-08-06 7:50 ` [PATCH 5/6] powerpc: add USB peripheral support to MPC836xMDS Stephen Rothwell
` (2 subsequent siblings)
3 siblings, 1 reply; 20+ messages in thread
From: Li Yang @ 2008-08-06 7:04 UTC (permalink / raw)
To: linuxppc-dev, galak; +Cc: Li Yang
Initialize base and size of SEC memory region and bus priority for SEC.
Signed-off-by: Li Yang <leoli@freescale.com>
---
arch/powerpc/include/asm/immap_cpm2.h | 7 +++++--
arch/powerpc/platforms/82xx/mpc8272_ads.c | 1 +
arch/powerpc/platforms/82xx/pq2.c | 19 +++++++++++++++++++
arch/powerpc/platforms/82xx/pq2.h | 1 +
4 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/arch/powerpc/include/asm/immap_cpm2.h b/arch/powerpc/include/asm/immap_cpm2.h
index d4f069b..71de9d0 100644
--- a/arch/powerpc/include/asm/immap_cpm2.h
+++ b/arch/powerpc/include/asm/immap_cpm2.h
@@ -115,10 +115,13 @@ typedef struct mem_ctlr {
u32 memc_immr;
u32 memc_pcibr0;
u32 memc_pcibr1;
- u8 res10[16];
+ u32 secbr;
+ u8 res10[4];
+ u32 secmr;
+ u8 res11[4];
u32 memc_pcimsk0;
u32 memc_pcimsk1;
- u8 res11[52];
+ u8 res12[52];
} memctl_cpm2_t;
/* System Integration Timers.
diff --git a/arch/powerpc/platforms/82xx/mpc8272_ads.c b/arch/powerpc/platforms/82xx/mpc8272_ads.c
index 69781e6..a98d97c 100644
--- a/arch/powerpc/platforms/82xx/mpc8272_ads.c
+++ b/arch/powerpc/platforms/82xx/mpc8272_ads.c
@@ -179,6 +179,7 @@ static void __init mpc8272_ads_setup_arch(void)
init_ioports();
pq2_init_pci();
+ pq2_init_sec();
if (ppc_md.progress)
ppc_md.progress("mpc8272_ads_setup_arch(), finish", 0);
diff --git a/arch/powerpc/platforms/82xx/pq2.c b/arch/powerpc/platforms/82xx/pq2.c
index 1b75902..bacb136 100644
--- a/arch/powerpc/platforms/82xx/pq2.c
+++ b/arch/powerpc/platforms/82xx/pq2.c
@@ -22,6 +22,8 @@
#include <platforms/82xx/pq2.h>
#define RMR_CSRE 0x00000001
+#define PQ2_SECMR_128K 0xfffe0000
+#define PQ2_ALRH_SEC 0x30126745
void pq2_restart(char *cmd)
{
@@ -35,6 +37,23 @@ void pq2_restart(char *cmd)
panic("Restart failed\n");
}
+void __init pq2_init_sec(void)
+{
+ struct device_node *np = NULL;
+ struct resource res;
+
+ np = of_find_compatible_node(NULL, NULL, "fsl,talitos");
+ if (!np)
+ return;
+
+ of_address_to_resource(np, 0, &res);
+ printk(KERN_INFO "Setting SECBR and SECMR\n");
+ out_be32(&cpm2_immr->im_memctl.secbr, (u32)res.start);
+ out_be32(&cpm2_immr->im_memctl.secmr, PQ2_SECMR_128K);
+ out_be32(&cpm2_immr->im_siu_conf.siu_82xx.sc_ppc_alrh, PQ2_ALRH_SEC);
+ of_node_put(np);
+}
+
#ifdef CONFIG_PCI
static int pq2_pci_exclude_device(struct pci_controller *hose,
u_char bus, u8 devfn)
diff --git a/arch/powerpc/platforms/82xx/pq2.h b/arch/powerpc/platforms/82xx/pq2.h
index a41f84a..98d3c3c 100644
--- a/arch/powerpc/platforms/82xx/pq2.h
+++ b/arch/powerpc/platforms/82xx/pq2.h
@@ -2,6 +2,7 @@
#define _PQ2_H
void pq2_restart(char *cmd);
+void pq2_init_sec(void);
#ifdef CONFIG_PCI
int pq2ads_pci_init_irq(void);
--
1.5.5.1.248.g4b17
^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 4/6] powerpc: add USB peripheral support to MPC8272ADS
2008-08-06 7:04 ` [PATCH 4/6] powerpc: add USB peripheral support to MPC8272ADS Li Yang
2008-08-06 7:04 ` [PATCH 5/6] powerpc: add USB peripheral support to MPC836xMDS Li Yang
@ 2008-08-06 7:48 ` Stephen Rothwell
2008-08-06 17:19 ` Scott Wood
2 siblings, 0 replies; 20+ messages in thread
From: Stephen Rothwell @ 2008-08-06 7:48 UTC (permalink / raw)
To: Li Yang; +Cc: linuxppc-dev
[-- Attachment #1: Type: text/plain, Size: 598 bytes --]
Hi Li,
On Wed, 6 Aug 2008 15:04:43 +0800 Li Yang <leoli@freescale.com> wrote:
>
> @@ -150,6 +169,12 @@ static void __init mpc8272_ads_setup_arch(void)
> clrbits32(&bcsr[3], BCSR3_FETHIEN2);
> setbits32(&bcsr[3], BCSR3_FETH2_RST);
>
> + /* Enabling USB support in BCSR */
> + np = of_find_compatible_node(NULL, NULL, "fsl,qe_udc");
> + if (np != NULL) {
of_node_put(np);
> + clrbits32(&bcsr[3], BCSR3_USB_EN);
> + clrbits32(&bcsr[3], BCSR3_USB_HI_SPEED);
> + }
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 5/6] powerpc: add USB peripheral support to MPC836xMDS
2008-08-06 7:04 ` [PATCH 5/6] powerpc: add USB peripheral support to MPC836xMDS Li Yang
2008-08-06 7:04 ` [PATCH 6/6] powerpc: add 82xx platform level support to SEC engine Li Yang
@ 2008-08-06 7:50 ` Stephen Rothwell
2008-08-06 12:07 ` Anton Vorontsov
2008-08-06 17:29 ` Scott Wood
3 siblings, 0 replies; 20+ messages in thread
From: Stephen Rothwell @ 2008-08-06 7:50 UTC (permalink / raw)
To: Li Yang; +Cc: linuxppc-dev
[-- Attachment #1: Type: text/plain, Size: 542 bytes --]
Hi Li,
On Wed, 6 Aug 2008 15:04:44 +0800 Li Yang <leoli@freescale.com> wrote:
>
> @@ -93,6 +93,12 @@ static void __init mpc836x_mds_setup_arch(void)
>
> for (np = NULL; (np = of_find_node_by_name(np, "ucc")) != NULL;)
> par_io_of_config(np);
> +
> + np = of_find_compatible_node(NULL, NULL, "fsl,qe_udc");
> + if (np) {
> + par_io_of_config(np);
> + qe_usb_clock_set(np);
of_node_put(np);
> + }
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 5/6] powerpc: add USB peripheral support to MPC836xMDS
2008-08-06 7:04 ` [PATCH 5/6] powerpc: add USB peripheral support to MPC836xMDS Li Yang
2008-08-06 7:04 ` [PATCH 6/6] powerpc: add 82xx platform level support to SEC engine Li Yang
2008-08-06 7:50 ` [PATCH 5/6] powerpc: add USB peripheral support to MPC836xMDS Stephen Rothwell
@ 2008-08-06 12:07 ` Anton Vorontsov
2008-08-07 9:31 ` Li Yang
2008-08-06 17:29 ` Scott Wood
3 siblings, 1 reply; 20+ messages in thread
From: Anton Vorontsov @ 2008-08-06 12:07 UTC (permalink / raw)
To: Li Yang; +Cc: linuxppc-dev
Hello Li,
On Wed, Aug 06, 2008 at 03:04:44PM +0800, Li Yang wrote:
> Signed-off-by: Li Yang <leoli@freescale.com>
> ---
> arch/powerpc/boot/dts/mpc836x_mds.dts | 15 ++++++-
> arch/powerpc/platforms/83xx/mpc836x_mds.c | 19 ++++++++-
> arch/powerpc/platforms/83xx/mpc83xx.h | 1 +
> arch/powerpc/platforms/83xx/usb.c | 67 +++++++++++++++++++++++++++++
> 4 files changed, 100 insertions(+), 2 deletions(-)
>
> diff --git a/arch/powerpc/boot/dts/mpc836x_mds.dts b/arch/powerpc/boot/dts/mpc836x_mds.dts
> index a3b76a7..596377b 100644
> --- a/arch/powerpc/boot/dts/mpc836x_mds.dts
> +++ b/arch/powerpc/boot/dts/mpc836x_mds.dts
> @@ -235,6 +235,17 @@
> 0 2 1 0 1 0>; /* MDC */
> };
>
> + pio_usb: usb_pin@01 {
> + pio-map = <
> + /* port pin dir open_drain assignment has_irq */
> + 1 2 1 0 3 0 /* USBOE */
> + 1 3 1 0 3 0 /* USBTP */
> + 1 8 1 0 1 0 /* USBTN */
> + 1 10 2 0 3 0 /* USBRXD */
> + 1 9 2 1 3 0 /* USBRP */
> + 1 11 2 1 3 0>; /* USBRN */
> + };
> +
> };
> };
>
> @@ -280,11 +291,13 @@
> };
>
> usb@6c0 {
> - compatible = "qe_udc";
> + compatible = "fsl,qe_udc";
You might want to reuse existing bindings as described in
Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe/usb.txt.
> reg = <0x6c0 0x40 0x8b00 0x100>;
> interrupts = <11>;
> interrupt-parent = <&qeic>;
> mode = "slave";
I'd suggest to rename this to "peripheral" as we use for fsl dual-role
usb controller.
> + usb-clock = <21>;
> + pio-handle = <&pio_usb>;
Can we not introduce new pio maps? The pio setup should be done
by the firmware, or at least fixed up via the board file, as in
arch/powerpc/platforms/83xx/mpc832x_rdb.c.
[...]
> +#ifdef CONFIG_QUICC_ENGINE
> +/* QE USB_CLOCK configure functions */
> +int qe_usb_clock_set(struct device_node *np)
We already have this function, in arch/powerpc/sysdev/qe_lib/usb.c
It does not parse any of properties though, driver should do this.
> +{
> + u32 tmpreg = 0;
> + struct qe_mux *qemux = NULL;
> + const int *clock;
> +
> + qemux = &qe_immr->qmx;
> +
> + clock = of_get_property(np, "usb-clock", NULL);
> + if (!clock)
> + return -EINVAL;
> +
> + /* CLK21 -> USBCLK on MPC8360-PB*/
> + tmpreg = in_be32(&qemux->cmxgcr) & ~QE_CMXGCR_USBCS;
> + switch (*clock) {
> + case 21:
> + tmpreg |= 0x8;
> + out_be32(&qemux->cmxgcr, tmpreg);
> + par_io_config_pin(2, 20, 2, 0, 1, 0); /* PC20 for CLK21 */
No, pio config is very board-specific. This should be done by the
firmware (ideally) or by the board file.
Thanks,
--
Anton Vorontsov
email: cbouatmailru@gmail.com
irc://irc.freenode.net/bd2
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/6] powerpc: export cpm2_immr symbol for CPM2 drivers to compile as module
2008-08-06 7:04 ` [PATCH 2/6] powerpc: export cpm2_immr symbol for CPM2 drivers to compile as module Li Yang
2008-08-06 7:04 ` [PATCH 3/6] powerpc: update QE/CPM2 headers for USB support Li Yang
@ 2008-08-06 15:24 ` Anton Vorontsov
2008-08-07 10:19 ` Li Yang
1 sibling, 1 reply; 20+ messages in thread
From: Anton Vorontsov @ 2008-08-06 15:24 UTC (permalink / raw)
To: Li Yang; +Cc: linuxppc-dev
On Wed, Aug 06, 2008 at 03:04:41PM +0800, Li Yang wrote:
> Signed-off-by: Li Yang <leoli@freescale.com>
> ---
> arch/powerpc/sysdev/cpm2.c | 1 +
> 1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/arch/powerpc/sysdev/cpm2.c b/arch/powerpc/sysdev/cpm2.c
> index f1c3395..021480e 100644
> --- a/arch/powerpc/sysdev/cpm2.c
> +++ b/arch/powerpc/sysdev/cpm2.c
> @@ -52,6 +52,7 @@ cpm_cpm2_t __iomem *cpmp; /* Pointer to comm processor space */
> * the communication processor devices.
> */
> cpm2_map_t __iomem *cpm2_immr;
> +EXPORT_SYMBOL(cpm2_immr);
This is uneeded if you'll start using cpm_muram_* functions
from include/asm-powerpc/cpm.h.
--
Anton Vorontsov
email: cbouatmailru@gmail.com
irc://irc.freenode.net/bd2
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 4/6] powerpc: add USB peripheral support to MPC8272ADS
2008-08-06 7:04 ` [PATCH 4/6] powerpc: add USB peripheral support to MPC8272ADS Li Yang
2008-08-06 7:04 ` [PATCH 5/6] powerpc: add USB peripheral support to MPC836xMDS Li Yang
2008-08-06 7:48 ` [PATCH 4/6] powerpc: add USB peripheral support to MPC8272ADS Stephen Rothwell
@ 2008-08-06 17:19 ` Scott Wood
2008-08-07 3:50 ` Li Yang
2 siblings, 1 reply; 20+ messages in thread
From: Scott Wood @ 2008-08-06 17:19 UTC (permalink / raw)
To: Li Yang; +Cc: linuxppc-dev
On Wed, Aug 06, 2008 at 03:04:43PM +0800, Li Yang wrote:
> Signed-off-by: Li Yang <leoli@freescale.com>
> ---
> arch/powerpc/boot/dts/mpc8272ads.dts | 8 ++++++++
> arch/powerpc/platforms/82xx/mpc8272_ads.c | 25 +++++++++++++++++++++++++
> arch/powerpc/platforms/82xx/pq2ads.h | 3 +++
> 3 files changed, 36 insertions(+), 0 deletions(-)
>
> diff --git a/arch/powerpc/boot/dts/mpc8272ads.dts b/arch/powerpc/boot/dts/mpc8272ads.dts
> index b2ce4c0..75cc94c 100644
> --- a/arch/powerpc/boot/dts/mpc8272ads.dts
> +++ b/arch/powerpc/boot/dts/mpc8272ads.dts
> @@ -256,6 +256,14 @@
> #address-cells = <1>;
> #size-cells = <0>;
> };
> +
> + usb@11b60 {
> + compatible = "fsl,qe_udc";
"fsl,mpc8272-usb", "fsl,cpm2-usb".
Where is fsl,qe_udc documented or used (other than in the BCSR setup)?
What does "udc" mean (the only reference to it in the 8272 manual is
under ATM)?
> + mode = "slave";
Please document this property.
-Scott
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 6/6] powerpc: add 82xx platform level support to SEC engine
2008-08-06 7:04 ` [PATCH 6/6] powerpc: add 82xx platform level support to SEC engine Li Yang
@ 2008-08-06 17:27 ` Scott Wood
0 siblings, 0 replies; 20+ messages in thread
From: Scott Wood @ 2008-08-06 17:27 UTC (permalink / raw)
To: Li Yang; +Cc: linuxppc-dev
On Wed, Aug 06, 2008 at 03:04:45PM +0800, Li Yang wrote:
> diff --git a/arch/powerpc/platforms/82xx/pq2.c b/arch/powerpc/platforms/82xx/pq2.c
> index 1b75902..bacb136 100644
> --- a/arch/powerpc/platforms/82xx/pq2.c
> +++ b/arch/powerpc/platforms/82xx/pq2.c
> @@ -22,6 +22,8 @@
> #include <platforms/82xx/pq2.h>
>
> #define RMR_CSRE 0x00000001
> +#define PQ2_SECMR_128K 0xfffe0000
> +#define PQ2_ALRH_SEC 0x30126745
>
> void pq2_restart(char *cmd)
> {
> @@ -35,6 +37,23 @@ void pq2_restart(char *cmd)
> panic("Restart failed\n");
> }
>
> +void __init pq2_init_sec(void)
> +{
> + struct device_node *np = NULL;
> + struct resource res;
> +
> + np = of_find_compatible_node(NULL, NULL, "fsl,talitos");
This is an obsolete binding.
See "Documentation/powerpc/dts-bindings/fsl/sec.txt".
> + if (!np)
> + return;
> +
> + of_address_to_resource(np, 0, &res);
> + printk(KERN_INFO "Setting SECBR and SECMR\n");
This is an unnecessary printk().
> + out_be32(&cpm2_immr->im_memctl.secbr, (u32)res.start);
> + out_be32(&cpm2_immr->im_memctl.secmr, PQ2_SECMR_128K);
> + out_be32(&cpm2_immr->im_siu_conf.siu_82xx.sc_ppc_alrh, PQ2_ALRH_SEC);
Please put some comments here explaining what you're doing, such as
/* Map the SEC registers */, and /* Lower the SEC arbitration priority */.
-Scott
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 5/6] powerpc: add USB peripheral support to MPC836xMDS
2008-08-06 7:04 ` [PATCH 5/6] powerpc: add USB peripheral support to MPC836xMDS Li Yang
` (2 preceding siblings ...)
2008-08-06 12:07 ` Anton Vorontsov
@ 2008-08-06 17:29 ` Scott Wood
2008-08-07 3:32 ` Li Yang
3 siblings, 1 reply; 20+ messages in thread
From: Scott Wood @ 2008-08-06 17:29 UTC (permalink / raw)
To: Li Yang; +Cc: linuxppc-dev
On Wed, Aug 06, 2008 at 03:04:44PM +0800, Li Yang wrote:
> usb@6c0 {
> - compatible = "qe_udc";
> + compatible = "fsl,qe_udc";
[snip]
> +
> + np = of_find_compatible_node(NULL, NULL, "fsl,qe_udc");
> + if (np) {
> + par_io_of_config(np);
> + qe_usb_clock_set(np);
> + }
What about existing device trees in use?
> + printk(KERN_ERR "Unsupport usb-clock input pin\n");
s/Unsupport/Unsupported/
-Scott
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 5/6] powerpc: add USB peripheral support to MPC836xMDS
2008-08-06 17:29 ` Scott Wood
@ 2008-08-07 3:32 ` Li Yang
0 siblings, 0 replies; 20+ messages in thread
From: Li Yang @ 2008-08-07 3:32 UTC (permalink / raw)
To: Scott Wood; +Cc: linuxppc-dev
On Wed, 2008-08-06 at 12:29 -0500, Scott Wood wrote:
> On Wed, Aug 06, 2008 at 03:04:44PM +0800, Li Yang wrote:
> > usb@6c0 {
> > - compatible = "qe_udc";
> > + compatible = "fsl,qe_udc";
> [snip]
> > +
> > + np = of_find_compatible_node(NULL, NULL, "fsl,qe_udc");
> > + if (np) {
> > + par_io_of_config(np);
> > + qe_usb_clock_set(np);
> > + }
>
> What about existing device trees in use?
This node was never used in existing device trees for mainline kernel.
- Leo
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 4/6] powerpc: add USB peripheral support to MPC8272ADS
2008-08-06 17:19 ` Scott Wood
@ 2008-08-07 3:50 ` Li Yang
2008-08-07 14:19 ` Scott Wood
0 siblings, 1 reply; 20+ messages in thread
From: Li Yang @ 2008-08-07 3:50 UTC (permalink / raw)
To: Scott Wood; +Cc: linuxppc-dev
On Wed, 2008-08-06 at 12:19 -0500, Scott Wood wrote:
> On Wed, Aug 06, 2008 at 03:04:43PM +0800, Li Yang wrote:
> > Signed-off-by: Li Yang <leoli@freescale.com>
> > ---
> > arch/powerpc/boot/dts/mpc8272ads.dts | 8 ++++++++
> > arch/powerpc/platforms/82xx/mpc8272_ads.c | 25 +++++++++++++++++++++++++
> > arch/powerpc/platforms/82xx/pq2ads.h | 3 +++
> > 3 files changed, 36 insertions(+), 0 deletions(-)
> >
> > diff --git a/arch/powerpc/boot/dts/mpc8272ads.dts b/arch/powerpc/boot/dts/mpc8272ads.dts
> > index b2ce4c0..75cc94c 100644
> > --- a/arch/powerpc/boot/dts/mpc8272ads.dts
> > +++ b/arch/powerpc/boot/dts/mpc8272ads.dts
> > @@ -256,6 +256,14 @@
> > #address-cells = <1>;
> > #size-cells = <0>;
> > };
> > +
> > + usb@11b60 {
> > + compatible = "fsl,qe_udc";
>
> "fsl,mpc8272-usb", "fsl,cpm2-usb".
>
> Where is fsl,qe_udc documented or used (other than in the BCSR setup)?
> What does "udc" mean (the only reference to it in the 8272 manual is
> under ATM)?
udc is a common name for USB device mode drivers to work with Linux
gadget. We will have two separate drivers for USB host and device.
Probably we can have two compatibles "fsl,qe_udc" and "fsl,qe-usb-host"
- Leo
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 5/6] powerpc: add USB peripheral support to MPC836xMDS
2008-08-06 12:07 ` Anton Vorontsov
@ 2008-08-07 9:31 ` Li Yang
2008-08-07 13:23 ` Anton Vorontsov
0 siblings, 1 reply; 20+ messages in thread
From: Li Yang @ 2008-08-07 9:31 UTC (permalink / raw)
To: avorontsov; +Cc: linuxppc-dev
Hi Anton,
On Wed, 2008-08-06 at 16:07 +0400, Anton Vorontsov wrote:
> Hello Li,
>
> On Wed, Aug 06, 2008 at 03:04:44PM +0800, Li Yang wrote:
> > Signed-off-by: Li Yang <leoli@freescale.com>
> > ---
> > arch/powerpc/boot/dts/mpc836x_mds.dts | 15 ++++++-
> > arch/powerpc/platforms/83xx/mpc836x_mds.c | 19 ++++++++-
> > arch/powerpc/platforms/83xx/mpc83xx.h | 1 +
> > arch/powerpc/platforms/83xx/usb.c | 67 +++++++++++++++++++++++++++++
> > 4 files changed, 100 insertions(+), 2 deletions(-)
> >
> > diff --git a/arch/powerpc/boot/dts/mpc836x_mds.dts b/arch/powerpc/boot/dts/mpc836x_mds.dts
> > index a3b76a7..596377b 100644
> > --- a/arch/powerpc/boot/dts/mpc836x_mds.dts
> > +++ b/arch/powerpc/boot/dts/mpc836x_mds.dts
> > @@ -235,6 +235,17 @@
> > 0 2 1 0 1 0>; /* MDC */
> > };
> >
> > + pio_usb: usb_pin@01 {
> > + pio-map = <
> > + /* port pin dir open_drain assignment has_irq */
> > + 1 2 1 0 3 0 /* USBOE */
> > + 1 3 1 0 3 0 /* USBTP */
> > + 1 8 1 0 1 0 /* USBTN */
> > + 1 10 2 0 3 0 /* USBRXD */
> > + 1 9 2 1 3 0 /* USBRP */
> > + 1 11 2 1 3 0>; /* USBRN */
> > + };
> > +
> > };
> > };
> >
> > @@ -280,11 +291,13 @@
> > };
> >
> > usb@6c0 {
> > - compatible = "qe_udc";
> > + compatible = "fsl,qe_udc";
>
> You might want to reuse existing bindings as described in
> Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe/usb.txt.
Ok. I didn't notice your addition to the binding. I will try to update
it for device mode.
>
> > reg = <0x6c0 0x40 0x8b00 0x100>;
> > interrupts = <11>;
> > interrupt-parent = <&qeic>;
> > mode = "slave";
>
> I'd suggest to rename this to "peripheral" as we use for fsl dual-role
> usb controller.
As there will be two drivers chosen by compatible, I'm now inclined to
put this information in compatible.
>
> > + usb-clock = <21>;
> > + pio-handle = <&pio_usb>;
>
> Can we not introduce new pio maps? The pio setup should be done
> by the firmware, or at least fixed up via the board file, as in
> arch/powerpc/platforms/83xx/mpc832x_rdb.c.
Actually I am more apt to leaving full hardware access to kernel than
firmware, especially for devices that are not used in firmware. The
reason why I made the pin-configuration flexible is that for development
boards the role of pins are often changeable.
>
> [...]
> > +#ifdef CONFIG_QUICC_ENGINE
> > +/* QE USB_CLOCK configure functions */
> > +int qe_usb_clock_set(struct device_node *np)
>
> We already have this function, in arch/powerpc/sysdev/qe_lib/usb.c
I just saw this. Will try to reuse it.
>
> It does not parse any of properties though, driver should do this.
>
> > +{
> > + u32 tmpreg = 0;
> > + struct qe_mux *qemux = NULL;
> > + const int *clock;
> > +
> > + qemux = &qe_immr->qmx;
> > +
> > + clock = of_get_property(np, "usb-clock", NULL);
> > + if (!clock)
> > + return -EINVAL;
> > +
> > + /* CLK21 -> USBCLK on MPC8360-PB*/
> > + tmpreg = in_be32(&qemux->cmxgcr) & ~QE_CMXGCR_USBCS;
> > + switch (*clock) {
> > + case 21:
> > + tmpreg |= 0x8;
> > + out_be32(&qemux->cmxgcr, tmpreg);
> > + par_io_config_pin(2, 20, 2, 0, 1, 0); /* PC20 for CLK21 */
>
> No, pio config is very board-specific. This should be done by the
> firmware (ideally) or by the board file.
Pio config is board and board configuration specific. It's better to
make it configurable by device tree.
- Leo
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/6] powerpc: export cpm2_immr symbol for CPM2 drivers to compile as module
2008-08-06 15:24 ` [PATCH 2/6] powerpc: export cpm2_immr symbol for CPM2 drivers to compile as module Anton Vorontsov
@ 2008-08-07 10:19 ` Li Yang
2008-08-07 11:38 ` Anton Vorontsov
0 siblings, 1 reply; 20+ messages in thread
From: Li Yang @ 2008-08-07 10:19 UTC (permalink / raw)
To: avorontsov; +Cc: linuxppc-dev
On Wed, 2008-08-06 at 19:24 +0400, Anton Vorontsov wrote:
> On Wed, Aug 06, 2008 at 03:04:41PM +0800, Li Yang wrote:
> > Signed-off-by: Li Yang <leoli@freescale.com>
> > ---
> > arch/powerpc/sysdev/cpm2.c | 1 +
> > 1 files changed, 1 insertions(+), 0 deletions(-)
> >
> > diff --git a/arch/powerpc/sysdev/cpm2.c b/arch/powerpc/sysdev/cpm2.c
> > index f1c3395..021480e 100644
> > --- a/arch/powerpc/sysdev/cpm2.c
> > +++ b/arch/powerpc/sysdev/cpm2.c
> > @@ -52,6 +52,7 @@ cpm_cpm2_t __iomem *cpmp; /* Pointer to comm processor space */
> > * the communication processor devices.
> > */
> > cpm2_map_t __iomem *cpm2_immr;
> > +EXPORT_SYMBOL(cpm2_immr);
>
> This is uneeded if you'll start using cpm_muram_* functions
> from include/asm-powerpc/cpm.h.
Right. But there are still a few in tree drivers rely on this such as
fs_enet.
Ps: In your cpm_muram_init() you re-mapped the muram space separately .
Are we planning to get rid of cpm2_immr completely and manage memory
mapping by each block?
- Leo
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/6] powerpc: export cpm2_immr symbol for CPM2 drivers to compile as module
2008-08-07 10:19 ` Li Yang
@ 2008-08-07 11:38 ` Anton Vorontsov
0 siblings, 0 replies; 20+ messages in thread
From: Anton Vorontsov @ 2008-08-07 11:38 UTC (permalink / raw)
To: Li Yang; +Cc: linuxppc-dev
On Thu, Aug 07, 2008 at 06:19:22PM +0800, Li Yang wrote:
> On Wed, 2008-08-06 at 19:24 +0400, Anton Vorontsov wrote:
> > On Wed, Aug 06, 2008 at 03:04:41PM +0800, Li Yang wrote:
> > > Signed-off-by: Li Yang <leoli@freescale.com>
> > > ---
> > > arch/powerpc/sysdev/cpm2.c | 1 +
> > > 1 files changed, 1 insertions(+), 0 deletions(-)
> > >
> > > diff --git a/arch/powerpc/sysdev/cpm2.c b/arch/powerpc/sysdev/cpm2.c
> > > index f1c3395..021480e 100644
> > > --- a/arch/powerpc/sysdev/cpm2.c
> > > +++ b/arch/powerpc/sysdev/cpm2.c
> > > @@ -52,6 +52,7 @@ cpm_cpm2_t __iomem *cpmp; /* Pointer to comm processor space */
> > > * the communication processor devices.
> > > */
> > > cpm2_map_t __iomem *cpm2_immr;
> > > +EXPORT_SYMBOL(cpm2_immr);
> >
> > This is uneeded if you'll start using cpm_muram_* functions
> > from include/asm-powerpc/cpm.h.
>
> Right. But there are still a few in tree drivers rely on this such as
> fs_enet.
Probably they should be fixed... Only two users left:
$ git-grep cpm2_immr drivers/
drivers/mtd/maps/wr_sbc82xx_flash.c: volatile memctl_cpm2_t *mc = &cpm2_immr->im_memctl;
drivers/mtd/maps/wr_sbc82xx_flash.c: mc = &cpm2_immr->im_memctl;
drivers/net/fs_enet/fs_enet-main.c: fs_enet_immap = cpm2_immr;
drivers/net/fs_enet/mac-fcc.c: fep->fcc.mem = (void __iomem *)cpm2_immr;
I think wr_sbc82xx_flash.c is superseded by the physmap_of driver. There
is no single CONFIG_MTD_SBC8240 enabled in the powerpc/configs.
Plus, I wonder how they didn't break the build all that time w/o
EXPORT_SYMBOL(). Probably nobody tried to build them as modules.
> Ps: In your cpm_muram_init() you re-mapped the muram space separately .
> Are we planning to get rid of cpm2_immr completely and manage memory
> mapping by each block?
At least I always thought so...
Thanks,
--
Anton Vorontsov
email: cbouatmailru@gmail.com
irc://irc.freenode.net/bd2
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 5/6] powerpc: add USB peripheral support to MPC836xMDS
2008-08-07 9:31 ` Li Yang
@ 2008-08-07 13:23 ` Anton Vorontsov
0 siblings, 0 replies; 20+ messages in thread
From: Anton Vorontsov @ 2008-08-07 13:23 UTC (permalink / raw)
To: Li Yang; +Cc: linuxppc-dev
On Thu, Aug 07, 2008 at 05:31:44PM +0800, Li Yang wrote:
[...]
> >
> > > reg = <0x6c0 0x40 0x8b00 0x100>;
> > > interrupts = <11>;
> > > interrupt-parent = <&qeic>;
> > > mode = "slave";
> >
> > I'd suggest to rename this to "peripheral" as we use for fsl dual-role
> > usb controller.
>
> As there will be two drivers chosen by compatible, I'm now inclined to
> put this information in compatible.
Please don't. I deliberately wrote bindings w/o specifing "udc" or
"host" in the compatible entry.
"udc"/"host" is the modes of an USB controller, but the controller
itself is the same: "fsl,mpc8323-qe-usb" (the first chip with QE USB).
So the driver should always match this device, but it can return
-ENODEV if mode is unspecified or !peripheral.
> > > + usb-clock = <21>;
> > > + pio-handle = <&pio_usb>;
> >
> > Can we not introduce new pio maps? The pio setup should be done
> > by the firmware, or at least fixed up via the board file, as in
> > arch/powerpc/platforms/83xx/mpc832x_rdb.c.
>
> Actually I am more apt to leaving full hardware access to kernel than
> firmware, especially for devices that are not used in firmware. The
> reason why I made the pin-configuration flexible is that for development
> boards the role of pins are often changeable.
[...]
> Pio config is board and board configuration specific. It's better to
> make it configurable by device tree.
Device tree isn't configuration file. The bad thing about pio-map is that
it is passing raw values instead of actually describing the hardware.
For example,
pio-map = <1 6 2 0 1 0>;
The thing describes bankB/pin6.. but you'll can't tell what exactly
this pin supposed to do. :-/
Basically "pio-map" is expanded version of this:
fsl,cpodr-reg = <0x...>;
fsl,cppar1-reg = <0x...>;
fsl,cppar2-reg = <0x...>;
...
Instead, it would be great to have something like this:
usb@... {
/*
* gpio/pinmux pin
* controller
*/
pio-map = <&pinmuxA 1 /* bindings says first pin is clk */
&pinmuxB 14 /* bindings says second pin is usboe */
...>;
};
ucc@... {
pio-map = <&pinmuxA 2 /* bindings says first pin is clk */
&pinmuxB 24 /* bindings says second pin is rxd0 */
&pinmuxB 21 /* bindings says second pin is rxd1 */
...>;
};
Then drivers would call something like this in probe():
clk = qe_get_clock(node, "fsl,fullspeed-clock");
qe_set_pinmux(pin0, QE_PIN_FUNC_CLK(clk));
qe_set_pinmux(pin1, QE_PIN_FUNC_USB_OE);
...or ucc ethernet...
qe_set_pinmux(pin[rx_n], QE_PIN_FUNC_UCC_RXD(ucc_num, rx_n));
Obviously, this is quite hard to implement (and expensive, too), since
each SoC implementation has its own function<->pin<->regvalue mapping..
Thus nobody even think to bother with this.
Anyway, I'm not that opposed to the current pio-maps, but it
would be great if we could avoid them where possible.
--
Anton Vorontsov
email: cbouatmailru@gmail.com
irc://irc.freenode.net/bd2
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 4/6] powerpc: add USB peripheral support to MPC8272ADS
2008-08-07 3:50 ` Li Yang
@ 2008-08-07 14:19 ` Scott Wood
0 siblings, 0 replies; 20+ messages in thread
From: Scott Wood @ 2008-08-07 14:19 UTC (permalink / raw)
To: Li Yang; +Cc: linuxppc-dev
On Thu, Aug 07, 2008 at 11:50:14AM +0800, Li Yang wrote:
> udc is a common name for USB device mode drivers to work with Linux
> gadget. We will have two separate drivers for USB host and device.
> Probably we can have two compatibles "fsl,qe_udc" and "fsl,qe-usb-host"
1. If you have separate compatibles, what do you need the "mode" property
for?
2. mpc8272 is not QE.
3. fsl,cpm2-usb-slave would be much more readable than fsl,qe_udc.
-Scott
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2008-08-07 14:19 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-08-06 7:04 [PATCH 1/6] powerpc: update flash size and partition in mpc8272ads dts Li Yang
2008-08-06 7:04 ` [PATCH 2/6] powerpc: export cpm2_immr symbol for CPM2 drivers to compile as module Li Yang
2008-08-06 7:04 ` [PATCH 3/6] powerpc: update QE/CPM2 headers for USB support Li Yang
2008-08-06 7:04 ` [PATCH 4/6] powerpc: add USB peripheral support to MPC8272ADS Li Yang
2008-08-06 7:04 ` [PATCH 5/6] powerpc: add USB peripheral support to MPC836xMDS Li Yang
2008-08-06 7:04 ` [PATCH 6/6] powerpc: add 82xx platform level support to SEC engine Li Yang
2008-08-06 17:27 ` Scott Wood
2008-08-06 7:50 ` [PATCH 5/6] powerpc: add USB peripheral support to MPC836xMDS Stephen Rothwell
2008-08-06 12:07 ` Anton Vorontsov
2008-08-07 9:31 ` Li Yang
2008-08-07 13:23 ` Anton Vorontsov
2008-08-06 17:29 ` Scott Wood
2008-08-07 3:32 ` Li Yang
2008-08-06 7:48 ` [PATCH 4/6] powerpc: add USB peripheral support to MPC8272ADS Stephen Rothwell
2008-08-06 17:19 ` Scott Wood
2008-08-07 3:50 ` Li Yang
2008-08-07 14:19 ` Scott Wood
2008-08-06 15:24 ` [PATCH 2/6] powerpc: export cpm2_immr symbol for CPM2 drivers to compile as module Anton Vorontsov
2008-08-07 10:19 ` Li Yang
2008-08-07 11:38 ` Anton Vorontsov
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).