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

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * BK Id: SCCS/s.machdep.h 1.27 12/01/01 20:09:11 benh
  3.  */
  4. #ifdef __KERNEL__
  5. #ifndef _PPC_MACHDEP_H
  6. #define _PPC_MACHDEP_H
  7. #include <linux/config.h>
  8. #ifdef CONFIG_APUS
  9. #include <asm-m68k/machdep.h>
  10. #endif
  11. struct pt_regs;
  12. struct pci_bus;
  13. struct pci_dev;
  14. struct seq_file;
  15. /* We export this macro for external modules like Alsa to know if
  16.  * ppc_md.feature_call is implemented or not
  17.  */
  18. #define CONFIG_PPC_HAS_FEATURE_CALLS
  19. struct machdep_calls {
  20. void (*setup_arch)(void);
  21. /* Optional, may be NULL. */
  22. int (*show_cpuinfo)(struct seq_file *m);
  23. int (*show_percpuinfo)(struct seq_file *m, int i);
  24. /* Optional, may be NULL. */
  25. unsigned int (*irq_cannonicalize)(unsigned int irq);
  26. void (*init_IRQ)(void);
  27. int (*get_irq)(struct pt_regs *);
  28. /* A general init function, called by ppc_init in init/main.c.
  29.    May be NULL. */
  30. void (*init)(void);
  31. void (*restart)(char *cmd);
  32. void (*power_off)(void);
  33. void (*halt)(void);
  34. long (*time_init)(void); /* Optional, may be NULL */
  35. int (*set_rtc_time)(unsigned long nowtime);
  36. unsigned long (*get_rtc_time)(void);
  37. void (*calibrate_decr)(void);
  38. void (*heartbeat)(void);
  39. unsigned long heartbeat_reset;
  40. unsigned long heartbeat_count;
  41. unsigned long (*find_end_of_memory)(void);
  42. void (*setup_io_mappings)(void);
  43.    void (*progress)(char *, unsigned short);
  44. unsigned char  (*nvram_read_val)(int addr);
  45. void (*nvram_write_val)(int addr, unsigned char val);
  46. /* Tons of keyboard stuff. */
  47. int (*kbd_setkeycode)(unsigned int scancode,
  48. unsigned int keycode);
  49. int (*kbd_getkeycode)(unsigned int scancode);
  50. int (*kbd_translate)(unsigned char scancode,
  51. unsigned char *keycode,
  52. char raw_mode);
  53. char (*kbd_unexpected_up)(unsigned char keycode);
  54. void (*kbd_leds)(unsigned char leds);
  55. void (*kbd_init_hw)(void);
  56. unsigned char  *ppc_kbd_sysrq_xlate;
  57. /*
  58.  * optional PCI "hooks"
  59.  */
  60. /* Called after scanning the bus, before allocating resources */
  61. void (*pcibios_fixup)(void);
  62. /* Called after PPC generic resource fixup to perform
  63.    machine specific fixups */
  64. void (*pcibios_fixup_resources)(struct pci_dev *);
  65. /* Called for each PCI bus in the system when it's probed */
  66. void (*pcibios_fixup_bus)(struct pci_bus *);
  67. /* Called when pci_enable_device() is called (initial=0) or
  68.  * when a device with no assigned resource is found (initial=1).
  69.  * Returns 0 to allow assignment/enabling of the device. */
  70. int  (*pcibios_enable_device_hook)(struct pci_dev *, int initial);
  71. /* For interrupt routing */
  72. unsigned char (*pci_swizzle)(struct pci_dev *, unsigned char *);
  73. int (*pci_map_irq)(struct pci_dev *, unsigned char, unsigned char);
  74. /* Called in indirect_* to avoid touching devices */
  75. int (*pci_exclude_device)(unsigned char, unsigned char);
  76. /* Called at then very end of pcibios_init() */
  77. void (*pcibios_after_init)(void);
  78. /* this is for modules, since _machine can be a define -- Cort */
  79. int ppc_machine;
  80. /* Motherboard/chipset features. This is a kind of general purpose
  81.  * hook used to control some machine specific features (like reset
  82.  * lines, chip power control, etc...).
  83.  */
  84. int (*feature_call)(unsigned int feature, ...);
  85. #ifdef CONFIG_SMP
  86. /* functions for dealing with other cpus */
  87. struct smp_ops_t *smp_ops;
  88. #endif /* CONFIG_SMP */
  89. };
  90. extern struct machdep_calls ppc_md;
  91. extern char cmd_line[512];
  92. extern void setup_pci_ptrs(void);
  93. /*
  94.  * Power macintoshes have either a CUDA or a PMU controlling
  95.  * system reset, power, NVRAM, RTC.
  96.  */
  97. typedef enum sys_ctrler_kind {
  98. SYS_CTRLER_UNKNOWN = 0,
  99. SYS_CTRLER_CUDA = 1,
  100. SYS_CTRLER_PMU = 2,
  101. } sys_ctrler_t;
  102. extern sys_ctrler_t sys_ctrler;
  103. #ifdef CONFIG_SMP
  104. struct smp_ops_t {
  105. void  (*message_pass)(int target, int msg, unsigned long data, int wait);
  106. int   (*probe)(void);
  107. void  (*kick_cpu)(int nr);
  108. void  (*setup_cpu)(int nr);
  109. };
  110. #endif /* CONFIG_SMP */
  111. #endif /* _PPC_MACHDEP_H */
  112. #endif /* __KERNEL__ */