开发板处理器是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));
}