]> rtime.felk.cvut.cz Git - socketcan-devel.git/commitdiff
softing_cs: fix for net-next-2.6 (2.6.33+)
authorhartkopp <hartkopp@030b6a49-0b11-0410-94ab-b0dab22257f2>
Thu, 25 Feb 2010 17:10:40 +0000 (17:10 +0000)
committerhartkopp <hartkopp@030b6a49-0b11-0410-94ab-b0dab22257f2>
Thu, 25 Feb 2010 17:10:40 +0000 (17:10 +0000)
The pcmcia_request_window() is postponed a little, as some flags must be
set before this call (I believe). It is a small change, but with some
noise in the patch. Same with softing_card_irq().

The netif_start_queue() is omitted, as softing_cycle() does a
netif_wake_queue().

Signed-off-by: Kurt Van Dijck <kurt.van.dijck@eia.be>
Signed-off-by: Oliver Hartkopp <oliver@hartkopp.net>
git-svn-id: svn://svn.berlios.de//socketcan/trunk@1146 030b6a49-0b11-0410-94ab-b0dab22257f2

kernel/2.6/drivers/net/can/softing/softing_cs.c
kernel/2.6/drivers/net/can/softing/softing_fw.c
kernel/2.6/drivers/net/can/softing/softing_main.c

index b69a7d78ffbd40cf1b6ff2eba93406451f2ad31b..b939fdc5b331882adda88686a8fe0282deb57ad2 100644 (file)
@@ -356,21 +356,26 @@ static int dev_conf_check(struct pcmcia_device *pdev,
                csdev->win.Base = mem->win[0].host_addr;
                csdev->win.Size = mem->win[0].len;
                csdev->win.AccessSpeed = 0;
-               ret = pcmcia_request_window(&pdev, &csdev->win, &pdev->win);
-               if (ret) {
-                       dev_alert(&pdev->dev,
-                               "pcmcia_request_window() mismatch\n");
-                       goto do_next;
-               }
                /* softing specific: choose slower access for old cards */
                if (sdev->desc->generation < 2) {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 33)
                        pdev->win->ctl.flags
                                = MAP_ACTIVE | MAP_USE_WAIT;
                        pdev->win->ctl.speed = 3;
+#else
+                       csdev->win.Attributes |= WIN_USE_WAIT;
+                       csdev->win.AccessSpeed = 3;
+#endif
+               }
+               ret = pcmcia_request_window(pdev, &csdev->win, &pdev->win);
+               if (ret) {
+                       dev_alert(&pdev->dev,
+                               "pcmcia_request_window() mismatch\n");
+                       goto do_next;
                }
                map.Page = 0;
                map.CardOffset = mem->win[0].card_addr;
-               if (pcmcia_map_mem_page(pdev->win, &map)) {
+               if (pcmcia_map_mem_page(pdev, pdev->win, &map)) {
                        dev_alert(&pdev->dev,
                                "pcmcia_map_mem_page() mismatch\n");
                        goto do_next_win;
@@ -435,7 +440,9 @@ static int __devinit driver_probe(struct pcmcia_device *pcmcia)
        card->nbus = 2;
        /* pcmcia presets */
        pcmcia->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 33)
        pcmcia->irq.IRQInfo1 = IRQ_LEVEL_ID;
+#endif
        pcmcia->irq.Handler     = 0;
        pcmcia->conf.Attributes = 0;
        pcmcia->conf.IntType = INT_MEMORY_AND_IO;
index dff1885f2133a484b54810c6fe17338e98be92ed..5a6460b63763c1a01b1894f73f11858e5b07987c 100644 (file)
@@ -597,13 +597,6 @@ int softing_cycle(struct softing *card, struct softing_priv *bus, int up)
 
        softing_initialize_timestamp(card);
 
-       /*run once */
-       /*the bottom halve will start flushing the tx-queue too */
-       /*tasklet_schedule(&card->irq.bh);*/
-       ret = softing_card_irq(card, 1);
-       if (ret)
-               goto failed;
-
        /*
         * do socketcan notifications/status changes
         * from here, no errors should occur, or the failed: part
@@ -627,6 +620,11 @@ int softing_cycle(struct softing *card, struct softing_priv *bus, int up)
                }
                netif_wake_queue(pbus->netdev);
        }
+
+       /* enable interrupts */
+       ret = softing_card_irq(card, 1);
+       if (ret)
+               goto failed;
 card_done:
        mutex_unlock(&card->fw.lock);
        return 0;
index 90b0d8569f55ca6ee55e834bbdb17794c19d84e7..045b8fb075ef449676070071264b8d44d5313137 100644 (file)
@@ -427,7 +427,6 @@ static int netdev_open(struct net_device *ndev)
        ret = softing_cycle(card, priv, 1);
        if (ret)
                goto failed;
-       netif_start_queue(ndev);
        return 0;
 failed:
        return ret;
@@ -478,12 +477,11 @@ int softing_card_irq(struct softing *card, int enable)
        }
        if (!card->irq.requested && (card->irq.nr)) {
                irqreturn_t(*fn) (int, void *);
-               unsigned int flags;
-               flags = IRQF_DISABLED | IRQF_SHARED;/*| IRQF_TRIGGER_LOW; */
                fn = dev_interrupt_nshared;
                if (card->desc->generation >= 2)
                        fn = dev_interrupt_shared;
-               ret = request_irq(card->irq.nr, fn, flags, card->id.name, card);
+               ret = request_irq(card->irq.nr, fn, IRQF_SHARED,
+                               card->id.name, card);
                if (ret) {
                        dev_alert(card->dev, "%s, request_irq(%u) failed\n",
                                card->id.name, card->irq.nr);