gio_device.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #include <linux/device.h>
  3. #include <linux/mod_devicetable.h>
  4. struct gio_device_id {
  5. __u8 id;
  6. };
  7. struct gio_device {
  8. struct device dev;
  9. struct resource resource;
  10. unsigned int irq;
  11. unsigned int slotno;
  12. const char *name;
  13. struct gio_device_id id;
  14. unsigned id32:1;
  15. unsigned gio64:1;
  16. };
  17. #define to_gio_device(d) container_of(d, struct gio_device, dev)
  18. struct gio_driver {
  19. const char *name;
  20. struct module *owner;
  21. const struct gio_device_id *id_table;
  22. int (*probe)(struct gio_device *, const struct gio_device_id *);
  23. void (*remove)(struct gio_device *);
  24. void (*shutdown)(struct gio_device *);
  25. struct device_driver driver;
  26. };
  27. #define to_gio_driver(drv) container_of(drv, struct gio_driver, driver)
  28. extern struct gio_device *gio_dev_get(struct gio_device *);
  29. extern void gio_dev_put(struct gio_device *);
  30. extern int gio_device_register(struct gio_device *);
  31. extern void gio_device_unregister(struct gio_device *);
  32. extern void gio_release_dev(struct device *);
  33. static inline void gio_device_free(struct gio_device *dev)
  34. {
  35. gio_release_dev(&dev->dev);
  36. }
  37. extern int gio_register_driver(struct gio_driver *);
  38. extern void gio_unregister_driver(struct gio_driver *);
  39. #define gio_get_drvdata(_dev) dev_get_drvdata(&(_dev)->dev)
  40. #define gio_set_drvdata(_dev, data) dev_set_drvdata(&(_dev)->dev, (data))
  41. extern void gio_set_master(struct gio_device *);