fio_flag.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. * Copyright 2005-2008 Analog Devices Inc.
  3. *
  4. * Licensed under the GPL-2 or later
  5. */
  6. #ifndef _MACH_FIO_FLAG_H
  7. #define _MACH_FIO_FLAG_H
  8. #include <asm/blackfin.h>
  9. #include <asm/irqflags.h>
  10. #if ANOMALY_05000311
  11. #define BFIN_WRITE_FIO_FLAG(name) \
  12. static inline void bfin_write_FIO_FLAG_##name(unsigned short val) \
  13. { \
  14. unsigned long flags; \
  15. local_irq_save_hw(flags); \
  16. bfin_write16(FIO_FLAG_##name, val); \
  17. bfin_read_CHIPID(); \
  18. local_irq_restore_hw(flags); \
  19. }
  20. BFIN_WRITE_FIO_FLAG(D)
  21. BFIN_WRITE_FIO_FLAG(C)
  22. BFIN_WRITE_FIO_FLAG(S)
  23. BFIN_WRITE_FIO_FLAG(T)
  24. #define BFIN_READ_FIO_FLAG(name) \
  25. static inline u16 bfin_read_FIO_FLAG_##name(void) \
  26. { \
  27. unsigned long flags; \
  28. u16 ret; \
  29. local_irq_save_hw(flags); \
  30. ret = bfin_read16(FIO_FLAG_##name); \
  31. bfin_read_CHIPID(); \
  32. local_irq_restore_hw(flags); \
  33. return ret; \
  34. }
  35. BFIN_READ_FIO_FLAG(D)
  36. BFIN_READ_FIO_FLAG(C)
  37. BFIN_READ_FIO_FLAG(S)
  38. BFIN_READ_FIO_FLAG(T)
  39. #else
  40. #define bfin_write_FIO_FLAG_D(val) bfin_write16(FIO_FLAG_D, val)
  41. #define bfin_write_FIO_FLAG_C(val) bfin_write16(FIO_FLAG_C, val)
  42. #define bfin_write_FIO_FLAG_S(val) bfin_write16(FIO_FLAG_S, val)
  43. #define bfin_write_FIO_FLAG_T(val) bfin_write16(FIO_FLAG_T, val)
  44. #define bfin_read_FIO_FLAG_T() bfin_read16(FIO_FLAG_T)
  45. #define bfin_read_FIO_FLAG_C() bfin_read16(FIO_FLAG_C)
  46. #define bfin_read_FIO_FLAG_S() bfin_read16(FIO_FLAG_S)
  47. #define bfin_read_FIO_FLAG_D() bfin_read16(FIO_FLAG_D)
  48. #endif
  49. #endif /* _MACH_FIO_FLAG_H */