platform_early.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /* SPDX--License-Identifier: GPL-2.0 */
  2. #ifndef __PLATFORM_EARLY__
  3. #define __PLATFORM_EARLY__
  4. #include <linux/types.h>
  5. #include <linux/platform_device.h>
  6. #include <linux/pm_runtime.h>
  7. #include <linux/slab.h>
  8. struct sh_early_platform_driver {
  9. const char *class_str;
  10. struct platform_driver *pdrv;
  11. struct list_head list;
  12. int requested_id;
  13. char *buffer;
  14. int bufsize;
  15. };
  16. #define EARLY_PLATFORM_ID_UNSET -2
  17. #define EARLY_PLATFORM_ID_ERROR -3
  18. extern int sh_early_platform_driver_register(struct sh_early_platform_driver *epdrv,
  19. char *buf);
  20. extern void sh_early_platform_add_devices(struct platform_device **devs, int num);
  21. static inline int is_sh_early_platform_device(struct platform_device *pdev)
  22. {
  23. return !pdev->dev.driver;
  24. }
  25. extern void sh_early_platform_driver_register_all(char *class_str);
  26. extern int sh_early_platform_driver_probe(char *class_str,
  27. int nr_probe, int user_only);
  28. #define sh_early_platform_init(class_string, platdrv) \
  29. sh_early_platform_init_buffer(class_string, platdrv, NULL, 0)
  30. #ifndef MODULE
  31. #define sh_early_platform_init_buffer(class_string, platdrv, buf, bufsiz) \
  32. static __initdata struct sh_early_platform_driver early_driver = { \
  33. .class_str = class_string, \
  34. .buffer = buf, \
  35. .bufsize = bufsiz, \
  36. .pdrv = platdrv, \
  37. .requested_id = EARLY_PLATFORM_ID_UNSET, \
  38. }; \
  39. static int __init sh_early_platform_driver_setup_func(char *buffer) \
  40. { \
  41. return sh_early_platform_driver_register(&early_driver, buffer); \
  42. } \
  43. early_param(class_string, sh_early_platform_driver_setup_func)
  44. #else /* MODULE */
  45. #define sh_early_platform_init_buffer(class_string, platdrv, buf, bufsiz) \
  46. static inline char *sh_early_platform_driver_setup_func(void) \
  47. { \
  48. return bufsiz ? buf : NULL; \
  49. }
  50. #endif /* MODULE */
  51. #endif /* __PLATFORM_EARLY__ */