mirror of
				https://git.proxmox.com/git/grub2
				synced 2025-10-30 05:07:13 +00:00 
			
		
		
		
	 036985b8ce
			
		
	
	
		036985b8ce
		
	
	
	
	
		
			
			be used directly if it's really a module and GRUB_MOD_INIT shouldn't
	be used on non-modules.
	* grub-core/commands/boot.c (GRUB_MOD_INIT) [LOONGSON || QEMU_MIPS]:
	Rename to grub_boot_init.
	(GRUB_MOD_FINI) [LOONGSON || QEMU_MIPS]: Rename to grub_boot_fini.
	* grub-core/commands/keylayouts.c (GRUB_MOD_INIT)
	[LOONGSON || QEMU_MIPS]: Rename to grub_keylayouts_init.
	(GRUB_MOD_FINI) [LOONGSON || QEMU_MIPS]: Rename to grub_keylayouts_fini.
	* grub-core/font/font_cmd.c (GRUB_MOD_INIT)
	[LOONGSON || QEMU_MIPS]: Rename to grub_font_init.
	(GRUB_MOD_FINI) [LOONGSON || QEMU_MIPS]: Rename to grub_font_fini.
	* grub-core/kern/mips/loongson/init.c: Replace explicit protos with
	includes.
	(grub_machine_init): Remove empty inits.
	* grub-core/kern/mips/qemu_mips/init.c: Replace explicit protos with
	includes.
	(grub_machine_init): Remove empty inits.
	* grub-core/term/arc/console.c: Remove explicit proto.
	* grub-core/term/at_keyboard.c (GRUB_MOD_INIT)
	[LOONGSON || QEMU_MIPS]: Rename to grub_at_keyboard_init.
	(GRUB_MOD_FINI) [LOONGSON || QEMU_MIPS]: Rename to
	grub_at_keyboard_fini.
	* grub-core/term/gfxterm.c (GRUB_MOD_INIT)
	[LOONGSON || QEMU_MIPS]: Rename to grub_gfxterm_init.
	(GRUB_MOD_FINI) [LOONGSON || QEMU_MIPS]: Rename to
	grub_gfxterm_fini.
	* grub-core/term/i386/pc/vga_text.c (GRUB_MOD_INIT)
	[LOONGSON || QEMU_MIPS]: Rename to grub_vgatext_init.
	(GRUB_MOD_FINI) [LOONGSON || QEMU_MIPS]: Rename to
	grub_vgatext_fini.
	* grub-core/term/ieee1275/console.c: Remove explicit proto.
	* grub-core/term/serial.c (GRUB_MOD_INIT)
	[LOONGSON || QEMU_MIPS]: Rename to grub_serial_init.
	(GRUB_MOD_FINI) [LOONGSON || QEMU_MIPS]: Rename to
	grub_serial_fini.
	* grub-core/term/terminfo.c (GRUB_MOD_INIT)
	[LOONGSON || QEMU_MIPS]: Rename to grub_terminfo_init.
	(GRUB_MOD_FINI) [LOONGSON || QEMU_MIPS]: Rename to
	grub_terminfo_fini.
	* grub-core/video/bitmap.c (GRUB_MOD_INIT): Removed.
	(GRUB_MOD_FINI): Likewise.
	* grub-core/video/radeon_fuloong2e.c (GRUB_MOD_INIT)
	[LOONGSON]: Rename to grub_video_radeon_fuloong2e_init.
	(GRUB_MOD_FINI) [LOONGSON]: Rename to
	grub_video_radeon_fuloong2e_fini.
	* grub-core/video/sis315pro.c (GRUB_MOD_INIT)
	[LOONGSON]: Rename to grub_video_sis315pro_init.
	(GRUB_MOD_FINI) [LOONGSON]: Rename to
	grub_video_sis315pro_fini.
	* grub-core/video/sm712.c (GRUB_MOD_INIT)
	[LOONGSON]: Rename to grub_video_sm712_init.
	(GRUB_MOD_FINI) [LOONGSON]: Rename to
	grub_video_sm712_fini.
	* include/grub/at_keyboard.h (grub_at_keyboard_init): New proto.
	(grub_at_keyboard_fini): Likewise.
	* include/grub/dl.h (GRUB_MOD_INIT) [!GRUB_UTIL && !EMU]:
	Don't declare grub_{modname}_init.
	(GRUB_MOD_INIT) [!GRUB_UTIL && !EMU]: Don't declare grub_{modname}_fini.
	* include/grub/keyboard_layouts.h (grub_keylayouts_init) [!EMU]:
	New proto.
	(grub_keylayouts_fini) [!EMU]: Likewise.
	* include/grub/serial.h (grub_serial_init) [!EMU]:
	New proto.
	(grub_serial_fini) [!EMU]: Likewise.
	* include/grub/terminfo.h (grub_terminfo_init) [!EMU]:
	New proto.
	(grub_terminfo_fini) [!EMU]: Likewise.
	* include/grub/video.h (grub_font_init) [!EMU]:
	New proto.
	(grub_font_fini) [!EMU]: Likewise.
	(grub_gfxterm_init) [!EMU]: Likewise.
	(grub_gfxterm_fini) [!EMU]: Likewise.
	(grub_video_sm712_init) [!EMU]: Likewise.
	(grub_video_sm712_fini) [!EMU]: Likewise.
	(grub_video_sis315pro_init) [!EMU]: Likewise.
	(grub_video_sis315pro_fini) [!EMU]: Likewise.
	(grub_video_radeon_fuloong2e_init) [!EMU]: Likewise.
	(grub_video_radeon_fuloong2e_fini) [!EMU]: Likewise.
		
	
			
		
			
				
	
	
		
			182 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			182 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* serial.h - serial device interface */
 | |
| /*
 | |
|  *  GRUB  --  GRand Unified Bootloader
 | |
|  *  Copyright (C) 2010  Free Software Foundation, Inc.
 | |
|  *
 | |
|  *  GRUB is free software: you can redistribute it and/or modify
 | |
|  *  it under the terms of the GNU General Public License as published by
 | |
|  *  the Free Software Foundation, either version 3 of the License, or
 | |
|  *  (at your option) any later version.
 | |
|  *
 | |
|  *  GRUB is distributed in the hope that it will be useful,
 | |
|  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
|  *  GNU General Public License for more details.
 | |
|  *
 | |
|  *  You should have received a copy of the GNU General Public License
 | |
|  *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
 | |
|  */
 | |
| 
 | |
| #ifndef GRUB_SERIAL_HEADER
 | |
| #define GRUB_SERIAL_HEADER	1
 | |
| 
 | |
| #include <grub/types.h>
 | |
| #if defined(__mips__) || defined (__i386__) || defined (__x86_64__)
 | |
| #include <grub/cpu/io.h>
 | |
| #endif
 | |
| #include <grub/usb.h>
 | |
| #include <grub/list.h>
 | |
| #include <grub/term.h>
 | |
| #ifdef GRUB_MACHINE_IEEE1275
 | |
| #include <grub/ieee1275/ieee1275.h>
 | |
| #endif
 | |
| 
 | |
| struct grub_serial_port;
 | |
| struct grub_serial_config;
 | |
| 
 | |
| struct grub_serial_driver
 | |
| {
 | |
|   grub_err_t (*configure) (struct grub_serial_port *port,
 | |
| 			   struct grub_serial_config *config);
 | |
|   int (*fetch) (struct grub_serial_port *port);
 | |
|   void (*put) (struct grub_serial_port *port, const int c);
 | |
|   void (*fini) (struct grub_serial_port *port);
 | |
| };
 | |
| 
 | |
| /* The type of parity.  */
 | |
| typedef enum
 | |
|   {
 | |
|     GRUB_SERIAL_PARITY_NONE,
 | |
|     GRUB_SERIAL_PARITY_ODD,
 | |
|     GRUB_SERIAL_PARITY_EVEN,
 | |
|   } grub_serial_parity_t;
 | |
| 
 | |
| typedef enum
 | |
|   {
 | |
|     GRUB_SERIAL_STOP_BITS_1,
 | |
|     GRUB_SERIAL_STOP_BITS_2,
 | |
|   } grub_serial_stop_bits_t;
 | |
| 
 | |
| struct grub_serial_config
 | |
| {
 | |
|   unsigned speed;
 | |
|   int word_len;
 | |
|   grub_serial_parity_t parity;
 | |
|   grub_serial_stop_bits_t stop_bits;
 | |
| };
 | |
| 
 | |
| struct grub_serial_port
 | |
| {
 | |
|   struct grub_serial_port *next;
 | |
|   struct grub_serial_port **prev;
 | |
|   char *name;
 | |
|   struct grub_serial_driver *driver;
 | |
|   struct grub_serial_config config;
 | |
|   int configured;
 | |
|   int broken;
 | |
| 
 | |
|   /* This should be void *data but since serial is useful as an early console
 | |
|      when malloc isn't available it's a union.
 | |
|    */
 | |
|   union
 | |
|   {
 | |
| #if defined(__mips__) || defined (__i386__) || defined (__x86_64__)
 | |
|     grub_port_t port;
 | |
| #endif
 | |
|     struct
 | |
|     {
 | |
|       grub_usb_device_t usbdev;
 | |
|       int configno;
 | |
|       int interfno;
 | |
|       char buf[64];
 | |
|       int bufstart, bufend;
 | |
|       struct grub_usb_desc_endp *in_endp;
 | |
|       struct grub_usb_desc_endp *out_endp;
 | |
|     };
 | |
| #ifdef GRUB_MACHINE_IEEE1275
 | |
|     struct
 | |
|     {
 | |
|       grub_ieee1275_ihandle_t handle;
 | |
|       struct ofserial_hash_ent *elem;
 | |
|     };
 | |
| #endif
 | |
| #ifdef GRUB_MACHINE_EFI
 | |
|     struct grub_efi_serial_io_interface *interface;
 | |
| #endif
 | |
|   };
 | |
|   grub_term_output_t term_out;
 | |
|   grub_term_input_t term_in;
 | |
| };
 | |
| 
 | |
| grub_err_t EXPORT_FUNC(grub_serial_register) (struct grub_serial_port *port);
 | |
| 
 | |
| void EXPORT_FUNC(grub_serial_unregister) (struct grub_serial_port *port);
 | |
| 
 | |
|   /* Convenience functions to perform primitive operations on a port.  */
 | |
| static inline grub_err_t
 | |
| grub_serial_port_configure (struct grub_serial_port *port,
 | |
| 			    struct grub_serial_config *config)
 | |
| {
 | |
|   return port->driver->configure (port, config);
 | |
| }
 | |
| 
 | |
| static inline int
 | |
| grub_serial_port_fetch (struct grub_serial_port *port)
 | |
| {
 | |
|   return port->driver->fetch (port);
 | |
| }
 | |
| 
 | |
| static inline void
 | |
| grub_serial_port_put (struct grub_serial_port *port, const int c)
 | |
| {
 | |
|   port->driver->put (port, c);
 | |
| }
 | |
| 
 | |
| static inline void
 | |
| grub_serial_port_fini (struct grub_serial_port *port)
 | |
| {
 | |
|   port->driver->fini (port);
 | |
| }
 | |
| 
 | |
|   /* Set default settings.  */
 | |
| static inline grub_err_t
 | |
| grub_serial_config_defaults (struct grub_serial_port *port)
 | |
| {
 | |
|   struct grub_serial_config config =
 | |
|     {
 | |
| #ifdef GRUB_MACHINE_MIPS_LOONGSON
 | |
|       .speed = 115200,
 | |
| #else
 | |
|       .speed = 9600,
 | |
| #endif
 | |
|       .word_len = 8,
 | |
|       .parity = GRUB_SERIAL_PARITY_NONE,
 | |
|       .stop_bits = GRUB_SERIAL_STOP_BITS_1
 | |
|     };
 | |
| 
 | |
|   return port->driver->configure (port, &config);
 | |
| }
 | |
| 
 | |
| #if defined(__mips__) || defined (__i386__) || defined (__x86_64__)
 | |
| void grub_ns8250_init (void);
 | |
| char *grub_serial_ns8250_add_port (grub_port_t port);
 | |
| #endif
 | |
| #ifdef GRUB_MACHINE_IEEE1275
 | |
| void grub_ofserial_init (void);
 | |
| #endif
 | |
| #ifdef GRUB_MACHINE_EFI
 | |
| void
 | |
| grub_efiserial_init (void);
 | |
| #endif
 | |
| 
 | |
| struct grub_serial_port *grub_serial_find (const char *name);
 | |
| extern struct grub_serial_driver grub_ns8250_driver;
 | |
| void EXPORT_FUNC(grub_serial_unregister_driver) (struct grub_serial_driver *driver);
 | |
| 
 | |
| #ifndef GRUB_MACHINE_EMU
 | |
| extern void grub_serial_init (void);
 | |
| extern void grub_serial_fini (void);
 | |
| #endif
 | |
| 
 | |
| #endif
 |