.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
};
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);
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);
/* 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 */