rn5t567.c 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /*
  2. * Copyright (C) 2016 Toradex AG
  3. * Stefan Agner <stefan.agner@toradex.com>
  4. *
  5. * SPDX-License-Identifier: GPL-2.0+
  6. */
  7. #include <common.h>
  8. #include <dm.h>
  9. #include <errno.h>
  10. #include <fdtdec.h>
  11. #include <libfdt.h>
  12. #include <power/rn5t567_pmic.h>
  13. #include <power/pmic.h>
  14. static int rn5t567_reg_count(struct udevice *dev)
  15. {
  16. return RN5T567_NUM_OF_REGS;
  17. }
  18. static int rn5t567_write(struct udevice *dev, uint reg, const uint8_t *buff,
  19. int len)
  20. {
  21. int ret;
  22. ret = dm_i2c_write(dev, reg, buff, len);
  23. if (ret) {
  24. debug("write error to device: %p register: %#x!", dev, reg);
  25. return ret;
  26. }
  27. return 0;
  28. }
  29. static int rn5t567_read(struct udevice *dev, uint reg, uint8_t *buff, int len)
  30. {
  31. int ret;
  32. ret = dm_i2c_read(dev, reg, buff, len);
  33. if (ret) {
  34. debug("read error from device: %p register: %#x!", dev, reg);
  35. return ret;
  36. }
  37. return 0;
  38. }
  39. static struct dm_pmic_ops rn5t567_ops = {
  40. .reg_count = rn5t567_reg_count,
  41. .read = rn5t567_read,
  42. .write = rn5t567_write,
  43. };
  44. static const struct udevice_id rn5t567_ids[] = {
  45. { .compatible = "ricoh,rn5t567" },
  46. { }
  47. };
  48. U_BOOT_DRIVER(pmic_rn5t567) = {
  49. .name = "rn5t567 pmic",
  50. .id = UCLASS_PMIC,
  51. .of_match = rn5t567_ids,
  52. .ops = &rn5t567_ops,
  53. };