[Armadeus-commitlog] SF.net SVN: armadeus:[1090] trunk/buildroot/target/device/armadeus/linux/ ker
Brought to you by:
sszy
|
From: <th...@us...> - 2009-02-24 14:57:41
|
Revision: 1090
http://armadeus.svn.sourceforge.net/armadeus/?rev=1090&view=rev
Author: thom25
Date: 2009-02-24 14:57:28 +0000 (Tue, 24 Feb 2009)
Log Message:
-----------
[LINUX] make MCP251x working again
Modified Paths:
--------------
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.27.13/088-can-mcp2515.patch
Modified: trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.27.13/088-can-mcp2515.patch
===================================================================
--- trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.27.13/088-can-mcp2515.patch 2009-02-24 14:02:17 UTC (rev 1089)
+++ trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.27.13/088-can-mcp2515.patch 2009-02-24 14:57:28 UTC (rev 1090)
@@ -29,7 +29,7 @@
index 0000000..43be336
--- /dev/null
+++ b/drivers/net/can/mcp251x.c
-@@ -0,0 +1,1000 @@
+@@ -0,0 +1,1006 @@
+/* drivers/net/can/mcp251x.c
+ *
+ * Driver for Microchip MCP251x CAN Controller with SPI Interface
@@ -458,7 +458,6 @@
+static void mcp251x_hw_wakeup(struct spi_device *spi)
+{
+ struct mcp251x_priv *priv = dev_get_drvdata(&spi->dev);
-+
+ priv->wake = 1;
+
+ /* Can only wake up by generating a wake-up interrupt. */
@@ -531,6 +530,7 @@
+ /* Put device into loopback mode */
+ mcp251x_write_reg(spi, CANCTRL, CANCTRL_REQOP_LOOPBACK);
+ } else {
++
+ /* Put device into normal mode */
+ mcp251x_write_reg(spi, CANCTRL, CANCTRL_REQOP_NORMAL);
+
@@ -635,13 +635,19 @@
+ u8 intf;
+
+ for (;;) {
++
+ if (priv->wake) {
+ /* Wait whilst the device wakes up */
-+ udelay(200 * (128 * USEC_PER_SEC / pdata->oscillator_frequency));
++ int i = 200 * (128 * USEC_PER_SEC / pdata->oscillator_frequency);
++ if( i> 1000 ) /*large delay, use mdelay*/
++ mdelay( (i+500)/1000);
++ else
++ udelay(i);
+ priv->wake = 0;
+ }
+
+ intf = mcp251x_read_reg(spi, CANINTF);
++
+ if (intf == 0x00)
+ break;
+
@@ -737,9 +743,9 @@
+ /* Clear everything except RX bits, don't want to miss any */
+ mcp251x_write_bits(spi, CANINTF, intf & ~(CANINTF_RX0IF | CANINTF_RX1IF), 0x00);
+ }
-+
++
+ mcp251x_read_reg(spi, CANSTAT);
-+
++
+ dev_dbg(&spi->dev, "interrupt ended\n");
+}
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|