示例#1
0
void mmc_detect_init()
{
	MMCGPIOEvent = OSSemCreate(0);

	__gpio_mask_irq(MMC_CD_PIN);
	__gpio_as_input(MMC_CD_PIN);
	__gpio_disable_pull(MMC_CD_PIN);
	request_irq(48 + MMC_CD_PIN, mmc_gpio_irq_handler, 0);
	__gpio_unmask_irq(MMC_CD_PIN);
	cardexsit = 0;
	mmcsrc.GetRequest = GetRequest;
	mmcsrc.Response = Response;
	mmcsrc.Name = "MMC";
	printf("Register Midware SRC MMC! \n");
	RegisterMidSrc(&mmcsrc);
	mmcid = mmcsrc.ID;
	printf("mmc ID %d \n",mmcsrc.ID);

	MMC_Initialize();
	OSTaskCreate(MMCGpioTask, (void *)0,
		     (void *)&MGTaskStack[MMC_GPIO_TASK_STK_SIZE - 1],
		     MMC_GPIO_TASK_PRIO);

}
示例#2
0
static void mask_and_ack_gpio_irq(unsigned int irq)
{
	__gpio_mask_irq(irq - IRQ_GPIO_0);
	__gpio_ack_irq(irq - IRQ_GPIO_0);
}
示例#3
0
static void disable_gpio_irq(unsigned int irq)
{
	__gpio_mask_irq(irq - IRQ_GPIO_0);
}
示例#4
0
//SD/MMC  hotplug!!
void mmc_gpio_irq_handler(unsigned int arg)
{
	__gpio_mask_irq(MMC_CD_PIN);
	OSSemPost(MMCGPIOEvent);
}
示例#5
0
文件: tpanel.c 项目: HackLinux/jz4725
void TPanelInit()
{
	int i;
	unsigned char data1;
	int retval;

	/* Disable INT that connected to ATA2508's TINT.*/
	__gpio_as_i2c();
	__gpio_as_output(TP_KEY_RST);
	__gpio_set_pin(TP_KEY_RST);
	mdelay(100);
	__gpio_clear_pin(TP_KEY_RST);
	mdelay(800);
	__gpio_set_pin(TP_KEY_RST);
	
	__gpio_mask_irq(TP_KEY_TINT);

	/* usage : I2C_WRITE( register_address, data);*/
	for(i=0; i<13; i++)
	{
		data1 = init_data_alpha[i];
		write_reg(i, data1);
	}
	
	for(i=13; i<63; i++)
	{
		data1 = init_data_burst[i-13];
		write_reg(i, data1);
	}
#if 0
	for (i = 0; i < 63; i++)
	{
		data1 = read_reg(i);
		printf("REG0x%02x = 0x%02x\n", i, data1);
	}
#endif
	
	/*wait for 1 ms*/
	mdelay(1);
#if 0
	while(1)
	{
		data1 = read_reg(0x68);
		printf("REG0x68 = %d\n", data1);
		data1 = read_reg(0x75);
		printf("REG0x75 = 0x%02x\n", data1);
		data1 = read_reg(0x76);
		printf("REG0x76 = 0x%02x\n", data1);
		mdelay(2000);
	}
#endif
	/*to activate all the new settings, give a WARM RESET.*/
	write_reg(ADDR_WARM_RESET, 0x00);	//ADDR_WARM_RESET=0xFF
//	printf("the return value of write reg 0xff is %d\n", ret);
#if 0
	data1 = read_reg(0x68);
	printf("REG0x68 = %d\n", data1);
#endif
	/*wait for 1 ~ 10 ms.*/
	mdelay(10);
	/*Enable INT that connected to ATA2508's TINT.*/
	__gpio_as_irq_rise_edge(TP_KEY_TINT);

	request_irq(TP_TINT_IRQ, tp_tint_irq, 0);

	printf("Lyra touch panel register!\n");
//	return;
//	return 0;
}