modify dm9000 for raho board
authorlyx <lyx@rock-chips.com>
Tue, 27 Jul 2010 03:15:17 +0000 (20:15 -0700)
committerlyx <lyx@rock-chips.com>
Tue, 27 Jul 2010 03:16:32 +0000 (20:16 -0700)
arch/arm/mach-rk2818/devices.c [changed mode: 0644->0755]
drivers/net/dm9000.c [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index 001c368..ccc428f
@@ -286,11 +286,19 @@ static struct resource dm9k_resource[] = {
                .end   = RK2818_NANDC_PHYS + 0x800 + (1*0x100 + 0x4) + 3,
                .flags = IORESOURCE_MEM,
        },
+       #ifdef CONFIG_MACH_RK2818MID
        [2] = {
                .start = RK2818_PIN_PE2,        //use pe2 as interrupt
                .end   = RK2818_PIN_PE2,
                .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
        }
+       #else   
+       [2] = {
+               .start = RK2818_PIN_PA1,        //use pa1 as interrupt
+               .end   = RK2818_PIN_PA1,
+               .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
+       }
+       #endif
 
 };
 
old mode 100644 (file)
new mode 100755 (executable)
index 909822a..5044b51
@@ -961,9 +961,13 @@ dm9000_rx(struct net_device *dev)
 
                udelay(1);//add by lyx@20100713,or dm9000_rx will be error in high frequence
 
-               /* Get most updated data */
+               #if 1
+               /* Get most updated data */             
+               rxbyte = ior(db, DM9000_MRCMDX);        /* Dummy read */
+               #else
                rxbyte = readb(db->io_data);
-
+               #endif
+               
                /* Status check: this byte must be 0 or 1 */
                if (rxbyte & DM9000_PKT_ERR) {
                        dev_warn(db->dev, "status check fail: %d\n", rxbyte);
@@ -976,9 +980,11 @@ dm9000_rx(struct net_device *dev)
                        return;
                }
 
-               if (!(rxbyte & DM9000_PKT_RDY))
+               if (!(rxbyte & DM9000_PKT_RDY)) {
+                       //printk("packet not ready to receive\n");
                        return;
-
+               }
+               
                /* A packet ready now  & Get status/length */
                GoodPacket = true;
                writeb(DM9000_MRCMD, db->io_addr);
@@ -1504,11 +1510,19 @@ dm9000_probe(struct platform_device *pdev)
        /* fill in parameters for net-dev structure */
        ndev->base_addr = (unsigned long)db->io_addr;
 
-       #if 0
-       ndev->irq       = db->irq_res->start;
-       #else//modify by liuyx@20100510
+       #ifdef CONFIG_MACH_RK2818MID
        rk2818_mux_api_set(GPIOE_SPI1_FLASH_SEL1_NAME, IOMUXA_GPIO1_A12);       
        ndev->irq = gpio_to_irq(db->irq_res->start);
+       #else
+       rk2818_mux_api_set(GPIOA1_HOSTDATA17_SEL_NAME, IOMUXB_GPIO0_A1);
+       if (gpio_request(db->irq_res->start, "dm9000 interrupt")) {
+               gpio_free(db->irq_res->start);
+               dev_err(db->dev, "failed to request gpio\n");
+               ret = -EINVAL;
+               goto out;
+       }       
+       gpio_pull_updown(db->irq_res->start, GPIOPullDown);
+       ndev->irq = gpio_to_irq(db->irq_res->start);
        #endif
        
        /* ensure at least we have a default set of IO routines */