isa.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /*
  2. * ISA bus.
  3. */
  4. #ifndef __LINUX_ISA_H
  5. #define __LINUX_ISA_H
  6. #include <linux/device.h>
  7. #include <linux/kernel.h>
  8. struct isa_driver {
  9. int (*match)(struct device *, unsigned int);
  10. int (*probe)(struct device *, unsigned int);
  11. int (*remove)(struct device *, unsigned int);
  12. void (*shutdown)(struct device *, unsigned int);
  13. int (*suspend)(struct device *, unsigned int, pm_message_t);
  14. int (*resume)(struct device *, unsigned int);
  15. struct device_driver driver;
  16. struct device *devices;
  17. };
  18. #define to_isa_driver(x) container_of((x), struct isa_driver, driver)
  19. #ifdef CONFIG_ISA
  20. int isa_register_driver(struct isa_driver *, unsigned int);
  21. void isa_unregister_driver(struct isa_driver *);
  22. #else
  23. static inline int isa_register_driver(struct isa_driver *d, unsigned int i)
  24. {
  25. return 0;
  26. }
  27. static inline void isa_unregister_driver(struct isa_driver *d)
  28. {
  29. }
  30. #endif
  31. /**
  32. * module_isa_driver() - Helper macro for registering a ISA driver
  33. * @__isa_driver: isa_driver struct
  34. * @__num_isa_dev: number of devices to register
  35. *
  36. * Helper macro for ISA drivers which do not do anything special in module
  37. * init/exit. This eliminates a lot of boilerplate code. Each module may only
  38. * use this macro once, and calling it replaces module_init and module_exit.
  39. */
  40. #define module_isa_driver(__isa_driver, __num_isa_dev) \
  41. static int __init __isa_driver##_init(void) \
  42. { \
  43. return isa_register_driver(&(__isa_driver), __num_isa_dev); \
  44. } \
  45. module_init(__isa_driver##_init); \
  46. static void __exit __isa_driver##_exit(void) \
  47. { \
  48. isa_unregister_driver(&(__isa_driver)); \
  49. } \
  50. module_exit(__isa_driver##_exit);
  51. /**
  52. * max_num_isa_dev() - Maximum possible number registered of an ISA device
  53. * @__ida_dev_ext: ISA device address extent
  54. *
  55. * The highest base address possible for an ISA device is 0x3FF; this results in
  56. * 1024 possible base addresses. Dividing the number of possible base addresses
  57. * by the address extent taken by each device results in the maximum number of
  58. * devices on a system.
  59. */
  60. #define max_num_isa_dev(__isa_dev_ext) (1024 / __isa_dev_ext)
  61. #endif /* __LINUX_ISA_H */