Thread (10 messages) flat view 10 messages, 4 authors, 2011-08-09

RE: [PATCH 4/4] [powerpc] Add flexcan device support for p1010rdb.

From: U Bhaskar-B22300 <hidden>
Date: 2011-08-09 14:46:20
Also in: netdev

Hi Robin,
	Where are you doing the irq handling ie request_irq() for the powerpc base=
d P1010.
	Or the existing code of ARM based FlexCAN will work for P1010 ??
--Bhaskar
quoted hunk ↗ jump to hunk
-----Original Message-----
From: Robin Holt [mailto:holt@sgi.com]
Sent: Tuesday, August 09, 2011 5:58 PM
To: Robin Holt; Marc Kleine-Budde; Wolfgang Grandegger; U Bhaskar-B22300
Cc: Robin Holt; socketcan-core@lists.berlios.de; netdev@vger.kernel.org;
PPC list
Subject: [PATCH 4/4] [powerpc] Add flexcan device support for p1010rdb.
=20
I added a simple clock source for the p1010rdb so the flexcan driver
could determine a clock frequency.  The p1010 can device only has an
oscillator of system bus frequency divided by 2.
=20
Signed-off-by: Robin Holt <redacted>
To: Marc Kleine-Budde <mkl@pengutronix.de>,
To: Wolfgang Grandegger <redacted>,
To: U Bhaskar-B22300 <redacted>
Cc: socketcan-core@lists.berlios.de,
Cc: netdev@vger.kernel.org,
Cc: PPC list <redacted>
---
 arch/powerpc/platforms/85xx/Kconfig    |    2 +
 arch/powerpc/platforms/85xx/Makefile   |    2 +
 arch/powerpc/platforms/85xx/clock.c    |   42
++++++++++++++++++++++++++++++++
 arch/powerpc/platforms/85xx/p1010rdb.c |    8 ++++++
 4 files changed, 54 insertions(+), 0 deletions(-)  create mode 100644
arch/powerpc/platforms/85xx/clock.c
=20
diff --git a/arch/powerpc/platforms/85xx/Kconfig
b/arch/powerpc/platforms/85xx/Kconfig
index 498534c..c4304ae 100644
--- a/arch/powerpc/platforms/85xx/Kconfig
+++ b/arch/powerpc/platforms/85xx/Kconfig
@@ -70,6 +70,8 @@ config MPC85xx_RDB
 config P1010_RDB
 	bool "Freescale P1010RDB"
 	select DEFAULT_UIMAGE
+	select HAVE_CAN_FLEXCAN if NET && CAN
+	select PPC_CLOCK if CAN_FLEXCAN
 	help
 	  This option enables support for the MPC85xx RDB (P1010 RDB) board
=20
diff --git a/arch/powerpc/platforms/85xx/Makefile
b/arch/powerpc/platforms/85xx/Makefile
index a971b32..cc7f381 100644
--- a/arch/powerpc/platforms/85xx/Makefile
+++ b/arch/powerpc/platforms/85xx/Makefile
@@ -3,6 +3,8 @@
 #
 obj-$(CONFIG_SMP) +=3D smp.o
=20
+obj-$(CONFIG_PPC_CLOCK)   +=3D clock.o
+
 obj-$(CONFIG_MPC8540_ADS) +=3D mpc85xx_ads.o
 obj-$(CONFIG_MPC8560_ADS) +=3D mpc85xx_ads.o
 obj-$(CONFIG_MPC85xx_CDS) +=3D mpc85xx_cds.o diff --git
a/arch/powerpc/platforms/85xx/clock.c
b/arch/powerpc/platforms/85xx/clock.c
new file mode 100644
index 0000000..a6fd2c8
--- /dev/null
+++ b/arch/powerpc/platforms/85xx/clock.c
@@ -0,0 +1,42 @@
+
+#include <linux/device.h>
+#include <linux/err.h>
+
+#include <asm/clk_interface.h>
+
+#include <sysdev/fsl_soc.h>
+
+/*
+ * p1010 needs to provide a clock source for the flexcan driver. The
+ * oscillator for the p1010 processor is only ever the system clock / 2.
+ */
+
+static struct clk *mpc85xx_clk_get(struct device *dev, const char *id)
+{
+	if (!dev)
+		return ERR_PTR(-ENOENT);
+
+	return NULL;
+}
+
+static void mpc85xx_clk_put(struct clk *clk) {
+	return;
+}
+
+static unsigned long mpc85xx_clk_get_rate(struct clk *clk) {
+	return fsl_get_sys_freq() / 2;
+}
+
+static struct clk_interface mpc85xx_clk_functions =3D {
+	.clk_get		=3D mpc85xx_clk_get,
+	.clk_get_rate		=3D mpc85xx_clk_get_rate,
+	.clk_put		=3D mpc85xx_clk_put,
+};
+
+void __init mpc85xx_clk_init(void)
+{
+	clk_functions =3D mpc85xx_clk_functions; }
+
diff --git a/arch/powerpc/platforms/85xx/p1010rdb.c
b/arch/powerpc/platforms/85xx/p1010rdb.c
index d7387fa..5e52122 100644
--- a/arch/powerpc/platforms/85xx/p1010rdb.c
+++ b/arch/powerpc/platforms/85xx/p1010rdb.c
@@ -81,6 +81,13 @@ static void __init p1010_rdb_setup_arch(void)
 	printk(KERN_INFO "P1010 RDB board from Freescale Semiconductor\n");
}
=20
+extern void mpc85xx_clk_init(void);
+
+static void __init p1010_rdb_init(void) {
+	mpc85xx_clk_init();
+}
+
 static struct of_device_id __initdata p1010rdb_ids[] =3D {
 	{ .type =3D "soc", },
 	{ .compatible =3D "soc", },
@@ -111,6 +118,7 @@ define_machine(p1010_rdb) {
 	.name			=3D "P1010 RDB",
 	.probe			=3D p1010_rdb_probe,
 	.setup_arch		=3D p1010_rdb_setup_arch,
+	.init			=3D p1010_rdb_init,
 	.init_IRQ		=3D p1010_rdb_pic_init,
 #ifdef CONFIG_PCI
 	.pcibios_fixup_bus	=3D fsl_pcibios_fixup_bus,
--
1.7.2.1
=20
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help