PXA270关于CF host口的驱动

yilingtang   2007-9-11 21:26 楼主
开发板处理器是PXA270的,现在想在板子上装一个CF无线网卡(NETGEAR MA701),因为板子是自己做的,所以需要修改一下pcmcia的接口驱动。
我是在drivers/pcmcia/pxa2xx_mainstone.c基础上修改的。
现在问题:
1.CF卡在开放板启动起来以后,CF卡上的灯是亮的。说明加上电了,但是用cardctl status 查询确是
  NO CARD
2.难道是里面的GPIO没有设置对?
3.板子启动起来以后,再插上CF网线网卡,开发板没有任何检测到CF网卡的反应。
4.只有在程序中写上GPDR3 |= (1<<8);  // setup GPIO104 as output  对应的是RESET管脚,才能供上电。WHY? 我没有想清楚。
5。关于CF卡的这部分电路 我也放在附件中。
  请各位大侠看看。给点建议!


下面修改的程序pxa2xx_panther.c一部分。完整我放在附件中。
static struct pcmcia_irqs irqs[] = {
        { 0, PANTHER_CF_DETECT_IRQ, "PCMCIA0 CD" },
};
static int pather_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{
        /* After clear RDH bit we can reset codec and read out ID now */
        PSSR |= PSSR_RDH;
       
        GPDR3 |= (1<<5); // setup GPIO101 as output  对应是我板子原理图上pcmcia电路上的一个锁存器
             GPCR3 |= (1<<5); // GPIO101 to output low

        GPDR3 |= (1<<8);  // setup GPIO104 as output  对应的是RESET管脚

        /*
         * Setup default state of GPIO level before we enable them as outputs.
         */
        GPSR(GPIO48_nPOE) = GPIO_bit(GPIO48_nPOE)          | GPIO_bit(GPIO49_nPWE)  |
                                                GPIO_bit(GPIO50_nPIOR)         | GPIO_bit(GPIO51_nPIOW);
#if 0       
        GPSR(GPIO79_pSKTSEL_MD) = GPIO_bit(GPIO79_pSKTSEL_MD);
        GPCR(GPIO79_pSKTSEL_MD) = GPIO_bit(GPIO79_pSKTSEL_MD);
#endif       
       
        GPSR(GPIO85_nPCE_1) = GPIO_bit(GPIO85_nPCE_1)| GPIO_bit(GPIO54_nPCE_2);

        pxa_gpio_mode(GPIO48_nPOE_MD);
        GPCR1 |= (1<<16); //OE to output low

        pxa_gpio_mode(GPIO49_nPWE_MD);
        pxa_gpio_mode(GPIO50_nPIOR_MD);
        pxa_gpio_mode(GPIO51_nPIOW_MD);
        pxa_gpio_mode(GPIO55_nPREG_MD);
        pxa_gpio_mode(GPIO56_nPWAIT_MD);
        pxa_gpio_mode(GPIO57_nIOIS16_MD);
        //pSKTSEL to output low
        pxa_gpio_mode(GPIO79_pSKTSEL_MD);
        GPCR2 |= (1<<15);

        //pxa_gpio_mode(GPIO102_nPCE_1_MD        );
        //pxa_gpio_mode(GPIO105_nPCE_2_MD        );

        pxa_gpio_mode(GPIO85_nPCE_1_MD);
        GPCR2 |= (1<<21); //CE1 to output low

        pxa_gpio_mode(GPIO54_nPCE_2_MD);
        GPCR1 |= (1<<22); //CE2 to output low


        skt->irq = IRQ_GPIO(107);  //GPIO107是对应的IREQ
        return soc_pcmcia_request_irqs(skt, irqs, ARRAY_SIZE(irqs));
}

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复