spmi.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #ifndef _SPMI_SPMI_H
  2. #define _SPMI_SPMI_H
  3. /**
  4. * struct dm_spmi_ops - SPMI device I/O interface
  5. *
  6. * Should be implemented by UCLASS_SPMI device drivers. The standard
  7. * device operations provides the I/O interface for it's childs.
  8. *
  9. * @read: read register 'reg' of slave 'usid' and peripheral 'pid'
  10. * @write: write register 'reg' of slave 'usid' and peripheral 'pid'
  11. *
  12. * Each register is 8-bit, both read and write can return negative values
  13. * on error.
  14. */
  15. struct dm_spmi_ops {
  16. int (*read)(struct udevice *dev, int usid, int pid, int reg);
  17. int (*write)(struct udevice *dev, int usid, int pid, int reg,
  18. uint8_t value);
  19. };
  20. /**
  21. * spmi_reg_read() - read a register from specific slave/peripheral
  22. *
  23. * @dev: SPMI bus to read
  24. * @usid SlaveID
  25. * @pid Peripheral ID
  26. * @reg: Register to read
  27. * @return value read on success or negative value of errno.
  28. */
  29. int spmi_reg_read(struct udevice *dev, int usid, int pid, int reg);
  30. /**
  31. * spmi_reg_write() - write a register of specific slave/peripheral
  32. *
  33. * @dev: SPMI bus to write
  34. * @usid SlaveID
  35. * @pid Peripheral ID
  36. * @reg: Register to write
  37. * @value: Value to write
  38. * @return 0 on success or negative value of errno.
  39. */
  40. int spmi_reg_write(struct udevice *dev, int usid, int pid, int reg,
  41. uint8_t value);
  42. #endif