home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-ppc / ppc_sys.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  3.3 KB  |  113 lines

  1. /*
  2.  * include/asm-ppc/ppc_sys.h
  3.  *
  4.  * PPC system definitions and library functions
  5.  *
  6.  * Maintainer: Kumar Gala <galak@kernel.crashing.org>
  7.  *
  8.  * Copyright 2005 Freescale Semiconductor, Inc
  9.  *
  10.  * This program is free software; you can redistribute  it and/or modify it
  11.  * under  the terms of  the GNU General  Public License as published by the
  12.  * Free Software Foundation;  either version 2 of the  License, or (at your
  13.  * option) any later version.
  14.  */
  15.  
  16. #ifdef __KERNEL__
  17. #ifndef __ASM_PPC_SYS_H
  18. #define __ASM_PPC_SYS_H
  19.  
  20. #include <linux/init.h>
  21. #include <linux/platform_device.h>
  22. #include <linux/types.h>
  23.  
  24. #if defined(CONFIG_8260)
  25. #include <asm/mpc8260.h>
  26. #elif defined(CONFIG_83xx)
  27. #include <asm/mpc83xx.h>
  28. #elif defined(CONFIG_85xx)
  29. #include <asm/mpc85xx.h>
  30. #elif defined(CONFIG_8xx)
  31. #include <asm/mpc8xx.h>
  32. #elif defined(CONFIG_PPC_MPC52xx)
  33. #include <asm/mpc52xx.h>
  34. #elif defined(CONFIG_MPC10X_BRIDGE)
  35. #include <asm/mpc10x.h>
  36. #elif defined(CONFIG_XILINX_VIRTEX)
  37. #include <platforms/4xx/virtex.h>
  38. #else
  39. #error "need definition of ppc_sys_devices"
  40. #endif
  41.  
  42. #define PPC_SYS_IORESOURCE_FIXUPPED    0x00000001    
  43.  
  44. struct ppc_sys_spec {
  45.     /* PPC sys is matched via (ID & mask) == value, id could be
  46.      * PVR, SVR, IMMR, * etc. */
  47.     u32             mask;
  48.     u32             value;
  49.     u32             num_devices;
  50.     char             *ppc_sys_name;
  51.     u8            config[NUM_PPC_SYS_DEVS];
  52.     enum ppc_sys_devices     *device_list;
  53. };
  54.  
  55. struct platform_notify_dev_map {
  56.     const char *bus_id;
  57.     void (*rtn)(struct platform_device * pdev, int idx);
  58. };
  59.  
  60. enum platform_device_func {
  61.     PPC_SYS_FUNC_DUMMY = 0,
  62.     PPC_SYS_FUNC_ETH = 1,
  63.     PPC_SYS_FUNC_UART = 2,
  64.     PPC_SYS_FUNC_HLDC = 3,
  65.     PPC_SYS_FUNC_USB = 4,
  66.     PPC_SYS_FUNC_IRDA = 5,
  67. };
  68.  
  69. #define PPC_SYS_CONFIG_DISABLED        1
  70.  
  71. /* describes all specific chips and which devices they have on them */
  72. extern struct ppc_sys_spec ppc_sys_specs[];
  73. extern struct ppc_sys_spec *cur_ppc_sys_spec;
  74.  
  75. /* determine which specific SOC we are */
  76. extern void identify_ppc_sys_by_id(u32 id) __init;
  77. extern void identify_ppc_sys_by_name(char *name) __init;
  78. extern void identify_ppc_sys_by_name_and_id(char *name, u32 id) __init;
  79.  
  80. /* describes all devices that may exist in a given family of processors */
  81. extern struct platform_device ppc_sys_platform_devices[];
  82.  
  83. /* allow any platform_device fixup to occur before device is registered */
  84. extern int (*ppc_sys_device_fixup) (struct platform_device * pdev);
  85.  
  86. /* Update all memory resources by paddr, call before platform_device_register */
  87. extern void ppc_sys_fixup_mem_resource(struct platform_device *pdev,
  88.                        phys_addr_t paddr) __init;
  89.  
  90. /* Get platform_data pointer out of platform device, call before platform_device_register */
  91. extern void *ppc_sys_get_pdata(enum ppc_sys_devices dev) __init;
  92.  
  93. /* remove a device from the system */
  94. extern void ppc_sys_device_remove(enum ppc_sys_devices dev);
  95.  
  96. /* Function assignment stuff */
  97. void ppc_sys_device_initfunc(void);
  98. void ppc_sys_device_setfunc(enum ppc_sys_devices dev,
  99.                 enum platform_device_func func);
  100. void ppc_sys_device_set_func_all(enum platform_device_func func);
  101.  
  102. void platform_notify_map(const struct platform_notify_dev_map *map,
  103.              struct device *dev);
  104.  
  105. /* Enable / disable stuff */
  106. void ppc_sys_device_disable(enum ppc_sys_devices dev);
  107. void ppc_sys_device_enable(enum ppc_sys_devices dev);
  108. void ppc_sys_device_enable_all(void);
  109. void ppc_sys_device_disable_all(void);
  110.  
  111. #endif                /* __ASM_PPC_SYS_H */
  112. #endif                /* __KERNEL__ */
  113.