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); }
static void mask_and_ack_gpio_irq(unsigned int irq) { __gpio_mask_irq(irq - IRQ_GPIO_0); __gpio_ack_irq(irq - IRQ_GPIO_0); }
static void disable_gpio_irq(unsigned int irq) { __gpio_mask_irq(irq - IRQ_GPIO_0); }
//SD/MMC hotplug!! void mmc_gpio_irq_handler(unsigned int arg) { __gpio_mask_irq(MMC_CD_PIN); OSSemPost(MMCGPIOEvent); }
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; }