/* Put a char to host buffer and send IRQ if specified. */ void lpc_keyboard_put_char(uint8_t chr, int send_irq) { NPCX_HIKDO = chr; CPRINTS("KB put %02x", chr); /* Enable OBE interrupt to detect host read data out */ SET_BIT(NPCX_HICTRL, NPCX_HICTRL_OBECIE); task_enable_irq(NPCX_IRQ_KBC_OBE); if (send_irq) { keyboard_irq_assert(); } }
void lpc_keyboard_resume_irq(void) { if (lpc_keyboard_has_char()) { #ifdef CONFIG_KEYBOARD_IRQ_GPIO keyboard_irq_assert(); #else /* The IRQ1 is controlled by the IRQ1B bit in KBIRQR. */ IT83XX_KBC_KBHICR &= ~0x01; /* * When the OBFKIE bit in KBC Host Interface Control Register * (KBHICR) is 0, the bit directly controls the IRQ1 signal. */ IT83XX_KBC_KBIRQR |= 0x01; #endif task_clear_pending_irq(IT83XX_IRQ_KBC_OUT); task_enable_irq(IT83XX_IRQ_KBC_OUT); } }
void lpc_keyboard_put_char(uint8_t chr, int send_irq) { /* Clear programming data bit 7-4 */ IT83XX_KBC_KBHISR &= 0x0F; /* keyboard */ IT83XX_KBC_KBHISR |= 0x10; #ifdef CONFIG_KEYBOARD_IRQ_GPIO task_clear_pending_irq(IT83XX_IRQ_KBC_OUT); /* The data output to the KBC Data Output Register. */ IT83XX_KBC_KBHIKDOR = chr; task_enable_irq(IT83XX_IRQ_KBC_OUT); if (send_irq) keyboard_irq_assert(); #else /* * bit0 = 0, The IRQ1 is controlled by the IRQ1B bit in KBIRQR. * bit1 = 0, The IRQ12 is controlled by the IRQ12B bit in KBIRQR. */ IT83XX_KBC_KBHICR &= 0x3C; /* * Enable the interrupt to keyboard driver in the host processor * via SERIRQ when the output buffer is full. */ if (send_irq) IT83XX_KBC_KBHICR |= 0x01; udelay(16); task_clear_pending_irq(IT83XX_IRQ_KBC_OUT); /* The data output to the KBC Data Output Register. */ IT83XX_KBC_KBHIKDOR = chr; task_enable_irq(IT83XX_IRQ_KBC_OUT); #endif }
void lpc_keyboard_resume_irq(void) { if (lpc_keyboard_has_char()) keyboard_irq_assert(); }
void lpc_keyboard_put_char(uint8_t chr, int send_irq) { MEC1322_8042_E2H = chr; if (send_irq) keyboard_irq_assert(); }
/* Put a char to host buffer and send IRQ if specified. */ void lpc_keyboard_put_char(uint8_t chr, int send_irq) { LPC_POOL_KEYBOARD[1] = chr; if (send_irq) keyboard_irq_assert(); }