void lpc_keyboard_clear_buffer(void) { uint32_t int_mask = get_int_mask(); interrupt_disable(); /* bit6, write-1 clear OBF */ IT83XX_KBC_KBHICR |= (1 << 6); IT83XX_KBC_KBHICR &= ~(1 << 6); set_int_mask(int_mask); }
/* static void tsu6721_muic_usb_detect(struct work_struct *work) { struct tsu6721_muic_data *muic_data = container_of(work, struct tsu6721_muic_data, usb_work.work); struct muic_platform_data *pdata = muic_data->pdata; struct sec_switch_data *switch_data = muic_data->switch_data; pr_info("%s:%s pdata->usb_path(%d)\n", MUIC_DEV_NAME, __func__, pdata->usb_path); mutex_lock(&muic_data->muic_mutex); muic_data->is_usb_ready = true; if (pdata->usb_path != MUIC_PATH_USB_CP) { if (switch_data->usb_cb) { switch ((int)muic_data->attached_dev) { case ATTACHED_DEV_USB_MUIC: case ATTACHED_DEV_CDP_MUIC: case ATTACHED_DEV_JIG_USB_OFF_MUIC: case ATTACHED_DEV_JIG_USB_ON_MUIC: switch_data->usb_cb(USB_CABLE_ATTACHED); break; case ATTACHED_DEV_OTG_MUIC: switch_data->usb_cb(USB_OTGHOST_ATTACHED); break; } } } mutex_unlock(&muic_data->muic_mutex); } */ static void tsu6721_muic_init_detect(struct work_struct *work) { struct tsu6721_muic_data *muic_data = container_of(work, struct tsu6721_muic_data, init_work.work); pr_info("%s:%s\n", MUIC_DEV_NAME, __func__); /* MUIC Interrupt On */ set_int_mask(muic_data, false); tsu6721_muic_irq_thread(-1, muic_data); }
void gpio_set_level(enum gpio_signal signal, int value) { uint32_t int_mask = get_int_mask(); /* critical section with interrupts off */ interrupt_disable(); if (value) IT83XX_GPIO_DATA(gpio_list[signal].port) |= gpio_list[signal].mask; else IT83XX_GPIO_DATA(gpio_list[signal].port) &= ~gpio_list[signal].mask; /* restore interrupts */ set_int_mask(int_mask); }
/* EC2I write */ enum ec2i_message ec2i_write(enum host_pnpcfg_index index, uint8_t data) { enum ec2i_message ret = EC2I_WRITE_ERROR; uint32_t int_mask = get_int_mask(); /* critical section with interrupts off */ interrupt_disable(); /* Set index */ if (ec2i_write_pnpcfg(EC2I_ACCESS_INDEX, index) == EC2I_WRITE_SUCCESS) /* Set data */ ret = ec2i_write_pnpcfg(EC2I_ACCESS_DATA, data); /* restore interrupts */ set_int_mask(int_mask); return ret; }