ddbridge-io.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * ddbridge-io.h: Digital Devices bridge I/O inline functions
  4. *
  5. * Copyright (C) 2010-2017 Digital Devices GmbH
  6. * Ralph Metzler <[email protected]>
  7. * Marcus Metzler <[email protected]>
  8. */
  9. #ifndef __DDBRIDGE_IO_H__
  10. #define __DDBRIDGE_IO_H__
  11. #include <linux/io.h>
  12. #include "ddbridge.h"
  13. /******************************************************************************/
  14. static inline u32 ddblreadl(struct ddb_link *link, u32 adr)
  15. {
  16. return readl(link->dev->regs + adr);
  17. }
  18. static inline void ddblwritel(struct ddb_link *link, u32 val, u32 adr)
  19. {
  20. writel(val, link->dev->regs + adr);
  21. }
  22. static inline u32 ddbreadl(struct ddb *dev, u32 adr)
  23. {
  24. return readl(dev->regs + adr);
  25. }
  26. static inline void ddbwritel(struct ddb *dev, u32 val, u32 adr)
  27. {
  28. writel(val, dev->regs + adr);
  29. }
  30. static inline void ddbcpyto(struct ddb *dev, u32 adr, void *src, long count)
  31. {
  32. memcpy_toio(dev->regs + adr, src, count);
  33. }
  34. static inline void ddbcpyfrom(struct ddb *dev, void *dst, u32 adr, long count)
  35. {
  36. memcpy_fromio(dst, dev->regs + adr, count);
  37. }
  38. static inline u32 safe_ddbreadl(struct ddb *dev, u32 adr)
  39. {
  40. u32 val = ddbreadl(dev, adr);
  41. /* (ddb)readl returns (uint)-1 (all bits set) on failure, catch that */
  42. if (val == ~0) {
  43. dev_err(&dev->pdev->dev, "ddbreadl failure, adr=%08x\n", adr);
  44. return 0;
  45. }
  46. return val;
  47. }
  48. #endif /* __DDBRIDGE_IO_H__ */