15b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* serial.h - serial device interface */ 25b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* 35b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * GRUB -- GRand Unified Bootloader 45b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 55b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 65b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * This program is free software; you can redistribute it and/or modify 75b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * it under the terms of the GNU General Public License as published by 85b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * the Free Software Foundation; either version 2 of the License, or 95b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * (at your option) any later version. 105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * This program is distributed in the hope that it will be useful, 125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of 135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * GNU General Public License for more details. 155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * 165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * You should have received a copy of the GNU General Public License 175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * along with this program; if not, write to the Free Software 185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */ 205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifndef GRUB_SERIAL_HEADER 225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define GRUB_SERIAL_HEADER 1 235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Macros. */ 255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The offsets of UART registers. */ 275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_TX 0 285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_RX 0 295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_DLL 0 305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_IER 1 315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_DLH 1 325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_IIR 2 335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_FCR 2 345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_LCR 3 355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_MCR 4 365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_LSR 5 375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_MSR 6 385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_SR 7 395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* For LSR bits. */ 415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_DATA_READY 0x01 425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_EMPTY_TRANSMITTER 0x20 435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The type of parity. */ 455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_NO_PARITY 0x00 465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_ODD_PARITY 0x08 475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_EVEN_PARITY 0x18 485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The type of word length. */ 505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_5BITS_WORD 0x00 515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_6BITS_WORD 0x01 525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_7BITS_WORD 0x02 535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_8BITS_WORD 0x03 545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* The type of the length of stop bit. */ 565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_1_STOP_BIT 0x00 575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_2_STOP_BITS 0x04 585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* the switch of DLAB. */ 605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_DLAB 0x80 615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Enable the FIFO. */ 635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_ENABLE_FIFO 0xC7 645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Turn on DTR, RTS, and OUT2. */ 665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define UART_ENABLE_MODEM 0x0B 675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 695b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Function prototypes. */ 705b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 715b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Fetch a key. */ 725b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint serial_hw_fetch (void); 735b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 745b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Put a character. */ 755b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid serial_hw_put (int c); 765b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 775b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Insert a delay. */ 785b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid serial_hw_delay (void); 795b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 805b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Return the port number for the UNITth serial device. */ 815b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectunsigned short serial_hw_get_port (int unit); 825b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 835b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Initialize a serial device. */ 845b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectint serial_hw_init (unsigned short port, unsigned int speed, 855b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project int word_len, int parity, int stop_bit_len); 865b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 875b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifdef GRUB_UTIL 885b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Set the file name of a serial device (or a pty device). This is a 895b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project function specific to the grub shell. */ 905b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Projectvoid serial_set_device (const char *device); 915b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif /* GRUB_UTIL */ 925b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project 935b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif /* ! GRUB_SERIAL_HEADER */ 94