static INT32 pan_direct_gpio_open(struct pan_device *dev) { struct pan_hw_info *tp = (struct pan_hw_info *)dev->priv; #if (SYS_IRP_MOUDLE != SYS_DEFINE_NULL) if (tp->type_irp != 0) irc_m6303irc_init(tp); #endif #ifdef SUPPORT_FIRMWARE_CONFIG pan_set_gpio(POS_GPIO_STANDBY_KEY, !POS_GPIO_STANDBY_KEY_POLAR); pan_set_gpio(POS_GPIO_CHANNEL_UP_KEY, !POS_GPIO_CHANNEL_UP_KEY_POLAR); pan_set_gpio(POS_GPIO_CHANNEL_DOWN_KEY, !POS_GPIO_CHANNEL_DOWN_KEY_POLAR); pan_get_gpio(POS_GPIO_STANDBY_KEY); pan_get_gpio(POS_GPIO_CHANNEL_UP_KEY); pan_get_gpio(POS_GPIO_CHANNEL_DOWN_KEY); #endif /* Register an 1mS cycle interrupt ISR */ osal_interrupt_register_lsr(7, pan_direct_gpio_interrupt, (UINT32)dev); #if 0 HAL_GPIO_BIT_DIR_SET(POS_GPIO_STANDBY_KEY, HAL_GPIO_I_DIR); HAL_GPIO_BIT_DIR_SET(POS_GPIO_CHANNEL_UP_KEY, HAL_GPIO_I_DIR); HAL_GPIO_BIT_DIR_SET(POS_GPIO_CHANNEL_DOWN_KEY, HAL_GPIO_I_DIR); HAL_GPIO_BIT_DIR_SET(POS_GPIO_POWER_LED, HAL_GPIO_O_DIR); HAL_GPIO_BIT_DIR_SET(POS_GPIO_STANDBY_LED, HAL_GPIO_O_DIR); #endif pan_set_gpio(POS_GPIO_POWER_LED, POS_GPIO_POWER_LED_POLAR); //turn on power led pan_set_gpio(POS_GPIO_STANDBY_LED, !POS_GPIO_STANDBY_LED_POLAR); //turn off standby led // soc_printf("sta:%08x\n", *(UINT32*)0xb8000058); return SUCCESS; }
static INT32 pan_ch455_open(struct pan_device *dev) { struct pan_ch455_private *tp = (struct pan_ch455_private *)dev->priv; struct pan_hw_info *hp = tp->hw_info; UINT32 re; UINT8 i; tp->task_id = OSAL_INVALID_ID; //Set i2c type id. //tp->i2c_id = I2C_TYPE_SCB1; //Config CH455 working mode. tp->mode = CH455_MODE; //Set bit mask for keyboard scan. tp->mask_status = CH455_KEY_STATUS_MASK; tp->mask_row = CH455_KEY_ROW_MASK; tp->mask_column = CH455_KEY_COLUMN_MASK; tp->key_cnt = 1; tp->keypress_cnt = 0; //Set repeat key interval to 300 ms. tp->keypress_intv = 3; tp->keypress_bak = PAN_KEY_INVALID; //Set back status to up. tp->bak_status = CH455_STATUS_UP; re = pan_ch455_mode_set(dev); if (tp->is_local == 1) irc_m6303irc_init(tp->hw_info); if (re) return ERR_FAILUE; // set the default display string. for(i = 0; i < 8; i++) { tp->lock[i] = 0; tp->disp_buff[i] = 0; } #ifdef _DEBUG_VERSION_ OSAL_T_CTSK task_param; //creat ch455 task for keyboard scan. task_param.task = (FP)panel_ch455_task; task_param.stksz = 0x1000; task_param.quantum = 10; task_param.itskpri = OSAL_PRI_NORMAL; task_param.para1= (UINT32)dev; task_param.para2 = 0; tp->task_id = osal_task_create(&task_param); if(OSAL_INVALID_ID == tp->task_id) { PAN_CH455_PRINTF("%s()=>Create panel_ch455_task FAILED!\n", __FUNCTION__); return ERR_FAILUE; } #endif return SUCCESS; }