📄 config.c
字号:
/* * linux/arch/m68k/mac/config.c * * This file is subject to the terms and conditions of the GNU General Public * License. See the file COPYING in the main directory of this archive * for more details. *//* * Miscellaneous linux stuff */#include <linux/config.h>#include <linux/types.h>#include <linux/mm.h>#include <linux/kd.h>#include <linux/tty.h>#include <linux/console.h>#include <linux/interrupt.h>/* keyb */#include <linux/random.h>#include <linux/delay.h>/* keyb */#include <linux/init.h>#define BOOTINFO_COMPAT_1_0#include <asm/setup.h>#include <asm/bootinfo.h>#include <asm/system.h>#include <asm/io.h>#include <asm/irq.h>#include <asm/pgtable.h>#include <asm/machdep.h>#include <asm/macintosh.h>#include <asm/macints.h>#include <asm/machw.h>#include <asm/mac_iop.h>#include <asm/mac_via.h>#include <asm/mac_oss.h>#include <asm/mac_psc.h>/* Mac bootinfo struct */struct mac_booter_data mac_bi_data = {0,};int mac_bisize = sizeof mac_bi_data;/* New m68k bootinfo stuff and videobase */extern int m68k_num_memory;extern struct mem_info m68k_memory[NUM_MEMINFO];extern struct mem_info m68k_ramdisk;extern char m68k_command_line[CL_SIZE];void *mac_env; /* Loaded by the boot asm *//* The phys. video addr. - might be bogus on some machines */unsigned long mac_orig_videoaddr;/* Mac specific timer functions */extern void mac_gettod (int *, int *, int *, int *, int *, int *);extern unsigned long mac_gettimeoffset (void);extern int mac_hwclk (int, struct hwclk_time *);extern int mac_set_clock_mmss (unsigned long);extern int mac_get_irq_list(char *);extern void iop_preinit(void);extern void iop_init(void);extern void via_init(void);extern void via_init_clock(void (*func)(int, void *, struct pt_regs *));extern void via_flush_cache(void);extern void oss_init(void);extern void psc_init(void);extern void baboon_init(void);extern void (*kd_mksound)(unsigned int, unsigned int);extern void mac_mksound(unsigned int, unsigned int);extern int mac_floppy_init(void);extern void mac_floppy_setup(char *,int *);extern void nubus_sweep_video(void);/* Mac specific debug functions (in debug.c) */extern void mac_debug_init(void);extern void mac_debugging_long(int, long);extern void (*kd_mksound)(unsigned int, unsigned int);extern int mackbd_init_hw(void);extern void mackbd_leds(unsigned int leds);extern int mackbd_translate(unsigned char keycode, unsigned char *keycodep, char raw_mode);extern void mac_hid_init_hw(void);extern int mac_hid_kbd_translate(unsigned char scancode, unsigned char *keycode, char raw_mode);#ifdef CONFIG_MAGIC_SYSRQextern unsigned char mac_hid_kbd_sysrq_xlate[128];extern unsigned char pckbd_sysrq_xlate[128];extern unsigned char mackbd_sysrq_xlate[128];#endif /* CONFIG_MAGIC_SYSRQ */static void mac_get_model(char *str);void mac_bang(int irq, void *vector, struct pt_regs *p){ printk("Resetting ...\n"); mac_reset();}static void mac_sched_init(void (*vector)(int, void *, struct pt_regs *)){ via_init_clock(vector);}#if 0void mac_waitbut (void){ ;}#endifextern struct fb_info *mac_fb_init(long *);extern void mac_default_handler(int, void *, struct pt_regs *);void (*mac_handlers[8])(int, void *, struct pt_regs *)={ mac_default_handler, mac_default_handler, mac_default_handler, mac_default_handler, mac_default_handler, mac_default_handler, mac_default_handler, mac_default_handler};/* * Parse a Macintosh-specific record in the bootinfo */int __init mac_parse_bootinfo(const struct bi_record *record){ int unknown = 0; const u_long *data = record->data; switch (record->tag) { case BI_MAC_MODEL: mac_bi_data.id = *data; break; case BI_MAC_VADDR: mac_bi_data.videoaddr = *data; break; case BI_MAC_VDEPTH: mac_bi_data.videodepth = *data; break; case BI_MAC_VROW: mac_bi_data.videorow = *data; break; case BI_MAC_VDIM: mac_bi_data.dimensions = *data; break; case BI_MAC_VLOGICAL: mac_bi_data.videological = VIDEOMEMBASE + (*data & ~VIDEOMEMMASK); mac_orig_videoaddr = *data; break; case BI_MAC_SCCBASE: mac_bi_data.sccbase = *data; break; case BI_MAC_BTIME: mac_bi_data.boottime = *data; break; case BI_MAC_GMTBIAS: mac_bi_data.gmtbias = *data; break; case BI_MAC_MEMSIZE: mac_bi_data.memsize = *data; break; case BI_MAC_CPUID: mac_bi_data.cpuid = *data; break; case BI_MAC_ROMBASE: mac_bi_data.rombase = *data; break; default: unknown = 1; } return(unknown);}/* * Flip into 24bit mode for an instant - flushes the L2 cache card. We * have to disable interrupts for this. Our IRQ handlers will crap * themselves if they take an IRQ in 24bit mode! */static void mac_cache_card_flush(int writeback){ unsigned long cpu_flags; save_flags(cpu_flags); cli(); via_flush_cache(); restore_flags(cpu_flags);}void __init config_mac(void){ if (!MACH_IS_MAC) { printk("ERROR: no Mac, but config_mac() called!! \n"); } #ifdef CONFIG_VT#ifdef CONFIG_INPUT_ADBHID mach_keyb_init = mac_hid_init_hw; mach_kbd_translate = mac_hid_kbd_translate;#ifdef CONFIG_MAGIC_SYSRQ#ifdef CONFIG_MAC_ADBKEYCODES if (!keyboard_sends_linux_keycodes) { mach_sysrq_xlate = mac_hid_kbd_sysrq_xlate; SYSRQ_KEY = 0x69; } else#endif /* CONFIG_MAC_ADBKEYCODES */ { mach_sysrq_xlate = pckbd_sysrq_xlate; SYSRQ_KEY = 0x54; }#endif /* CONFIG_MAGIC_SYSRQ */#elif defined(CONFIG_ADB_KEYBOARD) mach_keyb_init = mackbd_init_hw; mach_kbd_leds = mackbd_leds; mach_kbd_translate = mackbd_translate; mach_sysrq_xlate = mackbd_sysrq_xlate; SYSRQ_KEY = 0x69;#endif /* CONFIG_INPUT_ADBHID */#endif /* CONFIG_VT */ mach_sched_init = mac_sched_init; mach_init_IRQ = mac_init_IRQ; mach_request_irq = mac_request_irq; mach_free_irq = mac_free_irq; enable_irq = mac_enable_irq; disable_irq = mac_disable_irq; mach_get_model = mac_get_model; mach_default_handler = &mac_handlers; mach_get_irq_list = mac_get_irq_list; mach_gettimeoffset = mac_gettimeoffset; mach_gettod = mac_gettod; mach_hwclk = mac_hwclk; mach_set_clock_mmss = mac_set_clock_mmss;#if 0 mach_mksound = mac_mksound;#endif mach_reset = mac_reset; mach_halt = mac_poweroff; mach_power_off = mac_poweroff; conswitchp = &dummy_con; mach_max_dma_address = 0xffffffff;#if 0 mach_debug_init = mac_debug_init;#endif kd_mksound = mac_mksound;#ifdef CONFIG_HEARTBEAT#if 0 mach_heartbeat = mac_heartbeat; mach_heartbeat_irq = IRQ_MAC_TIMER;#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -