diff options
Diffstat (limited to 'arch/blackfin/mach-bf533/include/mach/cdefBF532.h')
-rw-r--r-- | arch/blackfin/mach-bf533/include/mach/cdefBF532.h | 177 |
1 files changed, 89 insertions, 88 deletions
diff --git a/arch/blackfin/mach-bf533/include/mach/cdefBF532.h b/arch/blackfin/mach-bf533/include/mach/cdefBF532.h index 3d8978a52c17..bbc3c8386d48 100644 --- a/arch/blackfin/mach-bf533/include/mach/cdefBF532.h +++ b/arch/blackfin/mach-bf533/include/mach/cdefBF532.h | |||
@@ -39,31 +39,8 @@ | |||
39 | /*include core specific register pointer definitions*/ | 39 | /*include core specific register pointer definitions*/ |
40 | #include <asm/cdef_LPBlackfin.h> | 40 | #include <asm/cdef_LPBlackfin.h> |
41 | 41 | ||
42 | #include <asm/system.h> | ||
43 | |||
44 | /* Clock and System Control (0xFFC0 0400-0xFFC0 07FF) */ | 42 | /* Clock and System Control (0xFFC0 0400-0xFFC0 07FF) */ |
45 | #define bfin_read_PLL_CTL() bfin_read16(PLL_CTL) | 43 | #define bfin_read_PLL_CTL() bfin_read16(PLL_CTL) |
46 | /* Writing to PLL_CTL initiates a PLL relock sequence. */ | ||
47 | static __inline__ void bfin_write_PLL_CTL(unsigned int val) | ||
48 | { | ||
49 | unsigned long flags, iwr; | ||
50 | |||
51 | if (val == bfin_read_PLL_CTL()) | ||
52 | return; | ||
53 | |||
54 | local_irq_save(flags); | ||
55 | /* Enable the PLL Wakeup bit in SIC IWR */ | ||
56 | iwr = bfin_read32(SIC_IWR); | ||
57 | /* Only allow PPL Wakeup) */ | ||
58 | bfin_write32(SIC_IWR, IWR_ENABLE(0)); | ||
59 | |||
60 | bfin_write16(PLL_CTL, val); | ||
61 | SSYNC(); | ||
62 | asm("IDLE;"); | ||
63 | |||
64 | bfin_write32(SIC_IWR, iwr); | ||
65 | local_irq_restore(flags); | ||
66 | } | ||
67 | #define bfin_read_PLL_STAT() bfin_read16(PLL_STAT) | 44 | #define bfin_read_PLL_STAT() bfin_read16(PLL_STAT) |
68 | #define bfin_write_PLL_STAT(val) bfin_write16(PLL_STAT,val) | 45 | #define bfin_write_PLL_STAT(val) bfin_write16(PLL_STAT,val) |
69 | #define bfin_read_PLL_LOCKCNT() bfin_read16(PLL_LOCKCNT) | 46 | #define bfin_read_PLL_LOCKCNT() bfin_read16(PLL_LOCKCNT) |
@@ -72,27 +49,6 @@ static __inline__ void bfin_write_PLL_CTL(unsigned int val) | |||
72 | #define bfin_read_PLL_DIV() bfin_read16(PLL_DIV) | 49 | #define bfin_read_PLL_DIV() bfin_read16(PLL_DIV) |
73 | #define bfin_write_PLL_DIV(val) bfin_write16(PLL_DIV,val) | 50 | #define bfin_write_PLL_DIV(val) bfin_write16(PLL_DIV,val) |
74 | #define bfin_read_VR_CTL() bfin_read16(VR_CTL) | 51 | #define bfin_read_VR_CTL() bfin_read16(VR_CTL) |
75 | /* Writing to VR_CTL initiates a PLL relock sequence. */ | ||
76 | static __inline__ void bfin_write_VR_CTL(unsigned int val) | ||
77 | { | ||
78 | unsigned long flags, iwr; | ||
79 | |||
80 | if (val == bfin_read_VR_CTL()) | ||
81 | return; | ||
82 | |||
83 | local_irq_save(flags); | ||
84 | /* Enable the PLL Wakeup bit in SIC IWR */ | ||
85 | iwr = bfin_read32(SIC_IWR); | ||
86 | /* Only allow PPL Wakeup) */ | ||
87 | bfin_write32(SIC_IWR, IWR_ENABLE(0)); | ||
88 | |||
89 | bfin_write16(VR_CTL, val); | ||
90 | SSYNC(); | ||
91 | asm("IDLE;"); | ||
92 | |||
93 | bfin_write32(SIC_IWR, iwr); | ||
94 | local_irq_restore(flags); | ||
95 | } | ||
96 | 52 | ||
97 | /* System Interrupt Controller (0xFFC0 0C00-0xFFC0 0FFF) */ | 53 | /* System Interrupt Controller (0xFFC0 0C00-0xFFC0 0FFF) */ |
98 | #define bfin_read_SWRST() bfin_read16(SWRST) | 54 | #define bfin_read_SWRST() bfin_read16(SWRST) |
@@ -178,50 +134,6 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val) | |||
178 | #define bfin_read_FIO_MASKB_T() bfin_read16(FIO_MASKB_T) | 134 | #define bfin_read_FIO_MASKB_T() bfin_read16(FIO_MASKB_T) |
179 | #define bfin_write_FIO_MASKB_T(val) bfin_write16(FIO_MASKB_T,val) | 135 | #define bfin_write_FIO_MASKB_T(val) bfin_write16(FIO_MASKB_T,val) |
180 | 136 | ||
181 | |||
182 | #if ANOMALY_05000311 | ||
183 | #define BFIN_WRITE_FIO_FLAG(name) \ | ||
184 | static __inline__ void bfin_write_FIO_FLAG_ ## name (unsigned short val)\ | ||
185 | {\ | ||
186 | unsigned long flags;\ | ||
187 | local_irq_save(flags);\ | ||
188 | bfin_write16(FIO_FLAG_ ## name,val);\ | ||
189 | bfin_read_CHIPID();\ | ||
190 | local_irq_restore(flags);\ | ||
191 | } | ||
192 | BFIN_WRITE_FIO_FLAG(D) | ||
193 | BFIN_WRITE_FIO_FLAG(C) | ||
194 | BFIN_WRITE_FIO_FLAG(S) | ||
195 | BFIN_WRITE_FIO_FLAG(T) | ||
196 | |||
197 | #define BFIN_READ_FIO_FLAG(name) \ | ||
198 | static __inline__ unsigned short bfin_read_FIO_FLAG_ ## name (void)\ | ||
199 | {\ | ||
200 | unsigned long flags;\ | ||
201 | unsigned short ret;\ | ||
202 | local_irq_save(flags);\ | ||
203 | ret = bfin_read16(FIO_FLAG_ ## name);\ | ||
204 | bfin_read_CHIPID();\ | ||
205 | local_irq_restore(flags);\ | ||
206 | return ret;\ | ||
207 | } | ||
208 | BFIN_READ_FIO_FLAG(D) | ||
209 | BFIN_READ_FIO_FLAG(C) | ||
210 | BFIN_READ_FIO_FLAG(S) | ||
211 | BFIN_READ_FIO_FLAG(T) | ||
212 | |||
213 | #else | ||
214 | #define bfin_write_FIO_FLAG_D(val) bfin_write16(FIO_FLAG_D,val) | ||
215 | #define bfin_write_FIO_FLAG_C(val) bfin_write16(FIO_FLAG_C,val) | ||
216 | #define bfin_write_FIO_FLAG_S(val) bfin_write16(FIO_FLAG_S,val) | ||
217 | #define bfin_write_FIO_FLAG_T(val) bfin_write16(FIO_FLAG_T,val) | ||
218 | #define bfin_read_FIO_FLAG_T() bfin_read16(FIO_FLAG_T) | ||
219 | #define bfin_read_FIO_FLAG_C() bfin_read16(FIO_FLAG_C) | ||
220 | #define bfin_read_FIO_FLAG_S() bfin_read16(FIO_FLAG_S) | ||
221 | #define bfin_read_FIO_FLAG_D() bfin_read16(FIO_FLAG_D) | ||
222 | #endif | ||
223 | |||
224 | |||
225 | /* DMA Controller */ | 137 | /* DMA Controller */ |
226 | #define bfin_read_DMA0_CONFIG() bfin_read16(DMA0_CONFIG) | 138 | #define bfin_read_DMA0_CONFIG() bfin_read16(DMA0_CONFIG) |
227 | #define bfin_write_DMA0_CONFIG(val) bfin_write16(DMA0_CONFIG,val) | 139 | #define bfin_write_DMA0_CONFIG(val) bfin_write16(DMA0_CONFIG,val) |
@@ -764,4 +676,93 @@ BFIN_READ_FIO_FLAG(T) | |||
764 | #define bfin_read_PPI_FRAME() bfin_read16(PPI_FRAME) | 676 | #define bfin_read_PPI_FRAME() bfin_read16(PPI_FRAME) |
765 | #define bfin_write_PPI_FRAME(val) bfin_write16(PPI_FRAME,val) | 677 | #define bfin_write_PPI_FRAME(val) bfin_write16(PPI_FRAME,val) |
766 | 678 | ||
679 | /* These need to be last due to the cdef/linux inter-dependencies */ | ||
680 | #include <asm/irq.h> | ||
681 | |||
682 | #if ANOMALY_05000311 | ||
683 | #define BFIN_WRITE_FIO_FLAG(name) \ | ||
684 | static inline void bfin_write_FIO_FLAG_##name(unsigned short val) \ | ||
685 | { \ | ||
686 | unsigned long flags; \ | ||
687 | local_irq_save_hw(flags); \ | ||
688 | bfin_write16(FIO_FLAG_##name, val); \ | ||
689 | bfin_read_CHIPID(); \ | ||
690 | local_irq_restore_hw(flags); \ | ||
691 | } | ||
692 | BFIN_WRITE_FIO_FLAG(D) | ||
693 | BFIN_WRITE_FIO_FLAG(C) | ||
694 | BFIN_WRITE_FIO_FLAG(S) | ||
695 | BFIN_WRITE_FIO_FLAG(T) | ||
696 | |||
697 | #define BFIN_READ_FIO_FLAG(name) \ | ||
698 | static inline u16 bfin_read_FIO_FLAG_##name(void) \ | ||
699 | { \ | ||
700 | unsigned long flags; \ | ||
701 | u16 ret; \ | ||
702 | local_irq_save_hw(flags); \ | ||
703 | ret = bfin_read16(FIO_FLAG_##name); \ | ||
704 | bfin_read_CHIPID(); \ | ||
705 | local_irq_restore_hw(flags); \ | ||
706 | return ret; \ | ||
707 | } | ||
708 | BFIN_READ_FIO_FLAG(D) | ||
709 | BFIN_READ_FIO_FLAG(C) | ||
710 | BFIN_READ_FIO_FLAG(S) | ||
711 | BFIN_READ_FIO_FLAG(T) | ||
712 | |||
713 | #else | ||
714 | #define bfin_write_FIO_FLAG_D(val) bfin_write16(FIO_FLAG_D, val) | ||
715 | #define bfin_write_FIO_FLAG_C(val) bfin_write16(FIO_FLAG_C, val) | ||
716 | #define bfin_write_FIO_FLAG_S(val) bfin_write16(FIO_FLAG_S, val) | ||
717 | #define bfin_write_FIO_FLAG_T(val) bfin_write16(FIO_FLAG_T, val) | ||
718 | #define bfin_read_FIO_FLAG_T() bfin_read16(FIO_FLAG_T) | ||
719 | #define bfin_read_FIO_FLAG_C() bfin_read16(FIO_FLAG_C) | ||
720 | #define bfin_read_FIO_FLAG_S() bfin_read16(FIO_FLAG_S) | ||
721 | #define bfin_read_FIO_FLAG_D() bfin_read16(FIO_FLAG_D) | ||
722 | #endif | ||
723 | |||
724 | /* Writing to PLL_CTL initiates a PLL relock sequence. */ | ||
725 | static __inline__ void bfin_write_PLL_CTL(unsigned int val) | ||
726 | { | ||
727 | unsigned long flags, iwr; | ||
728 | |||
729 | if (val == bfin_read_PLL_CTL()) | ||
730 | return; | ||
731 | |||
732 | local_irq_save_hw(flags); | ||
733 | /* Enable the PLL Wakeup bit in SIC IWR */ | ||
734 | iwr = bfin_read32(SIC_IWR); | ||
735 | /* Only allow PPL Wakeup) */ | ||
736 | bfin_write32(SIC_IWR, IWR_ENABLE(0)); | ||
737 | |||
738 | bfin_write16(PLL_CTL, val); | ||
739 | SSYNC(); | ||
740 | asm("IDLE;"); | ||
741 | |||
742 | bfin_write32(SIC_IWR, iwr); | ||
743 | local_irq_restore_hw(flags); | ||
744 | } | ||
745 | |||
746 | /* Writing to VR_CTL initiates a PLL relock sequence. */ | ||
747 | static __inline__ void bfin_write_VR_CTL(unsigned int val) | ||
748 | { | ||
749 | unsigned long flags, iwr; | ||
750 | |||
751 | if (val == bfin_read_VR_CTL()) | ||
752 | return; | ||
753 | |||
754 | local_irq_save_hw(flags); | ||
755 | /* Enable the PLL Wakeup bit in SIC IWR */ | ||
756 | iwr = bfin_read32(SIC_IWR); | ||
757 | /* Only allow PPL Wakeup) */ | ||
758 | bfin_write32(SIC_IWR, IWR_ENABLE(0)); | ||
759 | |||
760 | bfin_write16(VR_CTL, val); | ||
761 | SSYNC(); | ||
762 | asm("IDLE;"); | ||
763 | |||
764 | bfin_write32(SIC_IWR, iwr); | ||
765 | local_irq_restore_hw(flags); | ||
766 | } | ||
767 | |||
767 | #endif /* _CDEF_BF532_H */ | 768 | #endif /* _CDEF_BF532_H */ |