Patchwork KS8851 SPI Driver Integration

login
register
mail settings
Submitter Abraham Arce
Date Dec. 3, 2009, 6:26 p.m.
Message ID <cb8016980912031026h33551c2bo10d525f0df621e3f@mail.gmail.com>
Download mbox | patch
Permalink /patch/40189/
State RFC
Delegated to: David Miller
Headers show

Comments

Abraham Arce - Dec. 3, 2009, 6:26 p.m.
Hi,

> I am currently working with ks8851snl driver and facing some issues,
> the system integrated with is OMAP4, a ARM Cortex A9 Dual Core. I am
> using the following commit as latest

I have integrated latest patches from networking tree... driver is
functional with some minor changes at spi and ks8851 level described
below

> * Driver won't be able to get ip address via dhcp if SMP/Preemption/L2
> Cache are enabled, I have not enabled/disabled one by one to narrow
> down the problem...
>

The problem was in in mcspi l2 cache flush operation...

http://dev.omapzoom.org/?p=integration/kernel-omap4.git;a=commit;h=e351961969285d9069fcca9e22f748bb0f20f71d

> * Kernel NULL pointer when trying to mount a nfs directory using
> bootargs or after some time of pinging to any other ip

The following patch needed

http://dev.omapzoom.org/?p=integration/kernel-omap4.git;a=commitdiff;h=dd28c3d44322e98b25e2eb28f51e2e74dffec692


Best Regards
Abraham
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

--- a/drivers/net/ks8851.c
+++ b/drivers/net/ks8851.c
@@ -722,12 +722,14 @@  static void ks8851_tx_work(struct work_struct *work)
               txb = skb_dequeue(&ks->txq);
               last = skb_queue_empty(&ks->txq);

-               ks8851_wrreg16(ks, KS_RXQCR, ks->rc_rxqcr | RXQCR_SDA);
-               ks8851_wrpkt(ks, txb, last);
-               ks8851_wrreg16(ks, KS_RXQCR, ks->rc_rxqcr);
-               ks8851_wrreg16(ks, KS_TXQCR, TXQCR_METFE);
+               if (txb != NULL) {
+                       ks8851_wrreg16(ks, KS_RXQCR, ks->rc_rxqcr | RXQCR_SDA);
+                       ks8851_wrpkt(ks, txb, last);
+                       ks8851_wrreg16(ks, KS_RXQCR, ks->rc_rxqcr);
+                       ks8851_wrreg16(ks, KS_TXQCR, TXQCR_METFE);

-               ks8851_done_tx(ks, txb);
+                       ks8851_done_tx(ks, txb);
+               }
       }

       mutex_unlock(&ks->lock);