static void set_scancodes (void) { /* You must have visited computer museum. Keyboard without scancode set knowledge. Assume XT. */ if (!grub_keyboard_orig_set) { grub_dprintf ("atkeyb", "No sets support assumed\n"); current_set = 1; return; } grub_keyboard_controller_write (grub_keyboard_controller_orig & ~KEYBOARD_AT_TRANSLATE); write_mode (2); current_set = query_mode (); grub_dprintf ("atkeyb", "returned set %d\n", current_set); if (current_set == 2) return; write_mode (1); current_set = query_mode (); grub_dprintf ("atkeyb", "returned set %d\n", current_set); if (current_set == 1) return; grub_printf ("No supported scancode set found\n"); }
static int query_mode (void) { grub_uint8_t ret; int e; e = write_mode (0); if (!e) return 0; keyboard_controller_wait_until_ready (); do ret = grub_inb (KEYBOARD_REG_DATA); while (ret == GRUB_AT_ACK); /* QEMU translates the set even in no-translate mode. */ if (ret == 0x43 || ret == 1) return 1; if (ret == 0x41 || ret == 2) return 2; if (ret == 0x3f || ret == 3) return 3; return 0; }
void Extsram::write_single_byte(uint16_t addr, uint8_t data){ write_mode(); set_address(addr); *data_p = data; default_mode(); }
int board_nand_init(struct nand_chip *nand) { nand->ecc.mode = NAND_ECC_SOFT; /* Reference hardware control function */ nand->cmd_ctrl = kpn_nand_hwcontrol; nand->read_byte = kpn_nand_read_byte; nand->write_buf = kpn_nand_write_buf; nand->read_buf = kpn_nand_read_buf; nand->dev_ready = kpn_nand_dev_ready; nand->chip_delay = KPN_DEFAULT_CHIP_DELAY; /* reset mode register */ write_mode(KPN_CE1N + KPN_CE2N + KPN_WPN); return 0; }
static void kpn_nand_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl) { u8 reg_val = read_mode(); if (ctrl & NAND_CTRL_CHANGE) { reg_val = reg_val & ~(KPN_ALE + KPN_CLE); if (ctrl & NAND_CLE) reg_val = reg_val | KPN_CLE; if (ctrl & NAND_ALE) reg_val = reg_val | KPN_ALE; if (ctrl & NAND_NCE) reg_val = reg_val & ~KPN_CE1N; else reg_val = reg_val | KPN_CE1N; write_mode(reg_val); } if (cmd != NAND_CMD_NONE) write_data(cmd); /* wait until flash is ready */ kpn_wait_rdy(); }