setup.c
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:3k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * Platform dependent support for DIG64 platforms.
  3.  *
  4.  * Copyright (C) 1999 Intel Corp.
  5.  * Copyright (C) 1999, 2001 Hewlett-Packard Co
  6.  * Copyright (C) 1999, 2001 David Mosberger-Tang <davidm@hpl.hp.com>
  7.  * Copyright (C) 1999 VA Linux Systems
  8.  * Copyright (C) 1999 Walt Drummond <drummond@valinux.com>
  9.  * Copyright (C) 1999 Vijay Chander <vijay@engr.sgi.com>
  10.  */
  11. #include <linux/config.h>
  12. #include <linux/init.h>
  13. #include <linux/delay.h>
  14. #include <linux/kernel.h>
  15. #include <linux/kdev_t.h>
  16. #include <linux/string.h>
  17. #include <linux/tty.h>
  18. #include <linux/console.h>
  19. #include <linux/timex.h>
  20. #include <linux/sched.h>
  21. #include <asm/io.h>
  22. #include <asm/machvec.h>
  23. #include <asm/system.h>
  24. /*
  25.  * This is here so we can use the CMOS detection in ide-probe.c to
  26.  * determine what drives are present.  In theory, we don't need this
  27.  * as the auto-detection could be done via ide-probe.c:do_probe() but
  28.  * in practice that would be much slower, which is painful when
  29.  * running in the simulator.  Note that passing zeroes in DRIVE_INFO
  30.  * is sufficient (the IDE driver will autodetect the drive geometry).
  31.  */
  32. char drive_info[4*16];
  33. unsigned char aux_device_present = 0xaa; /* XXX remove this when legacy I/O is gone */
  34. void __init
  35. dig_setup (char **cmdline_p)
  36. {
  37. unsigned int orig_x, orig_y, num_cols, num_rows, font_height;
  38. /*
  39.  * Default to /dev/sda2.  This assumes that the EFI partition
  40.  * is physical disk 1 partition 1 and the Linux root disk is
  41.  * physical disk 1 partition 2.
  42.  */
  43. ROOT_DEV = to_kdev_t(0x0802); /* default to second partition on first drive */
  44. #ifdef CONFIG_SMP
  45. init_smp_config();
  46. #endif
  47. memset(&screen_info, 0, sizeof(screen_info));
  48. if (!ia64_boot_param->console_info.num_rows
  49.     || !ia64_boot_param->console_info.num_cols)
  50. {
  51. printk("dig_setup: warning: invalid screen-info, guessing 80x25n");
  52. orig_x = 0;
  53. orig_y = 0;
  54. num_cols = 80;
  55. num_rows = 25;
  56. font_height = 16;
  57. } else {
  58. orig_x = ia64_boot_param->console_info.orig_x;
  59. orig_y = ia64_boot_param->console_info.orig_y;
  60. num_cols = ia64_boot_param->console_info.num_cols;
  61. num_rows = ia64_boot_param->console_info.num_rows;
  62. font_height = 400 / num_rows;
  63. }
  64. screen_info.orig_x = orig_x;
  65. screen_info.orig_y = orig_y;
  66. screen_info.orig_video_cols  = num_cols;
  67. screen_info.orig_video_lines = num_rows;
  68. screen_info.orig_video_points = font_height;
  69. screen_info.orig_video_mode = 3; /* XXX fake */
  70. screen_info.orig_video_isVGA = 1; /* XXX fake */
  71. screen_info.orig_video_ega_bx = 3; /* XXX fake */
  72. }
  73. void
  74. dig_irq_init (void)
  75. {
  76. /*
  77.  * Disable the compatibility mode interrupts (8259 style), needs IN/OUT support
  78.  * enabled.
  79.  */
  80. outb(0xff, 0xA1);
  81. outb(0xff, 0x21);
  82. }