diff options
author | Mike Frysinger <vapier.adi@gmail.com> | 2008-11-18 04:48:22 -0500 |
---|---|---|
committer | Bryan Wu <cooloney@kernel.org> | 2008-11-18 04:48:22 -0500 |
commit | 53442e1cbdc1559cd39e0076adae6df64af36a3e (patch) | |
tree | 6513ffea1fcfdf488d5ec5e96f78fb2c2bc4b9f2 /arch/blackfin/mach-bf548/include | |
parent | b94919e2da2f7acde842972a57fcd6dcc4a528db (diff) |
Blackfin arch: delay PLL_CTL/VR_CTL wrappers
Delay PLL_CTL/VR_CTL wrappers as much as possible to avoid
the inter-dependency problems with cdef and common headers
Signed-off-by: Mike Frysinger <vapier.adi@gmail.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
Diffstat (limited to 'arch/blackfin/mach-bf548/include')
-rw-r--r-- | arch/blackfin/mach-bf548/include/mach/cdefBF54x_base.h | 114 |
1 files changed, 59 insertions, 55 deletions
diff --git a/arch/blackfin/mach-bf548/include/mach/cdefBF54x_base.h b/arch/blackfin/mach-bf548/include/mach/cdefBF54x_base.h index 57ac8cb9b1f6..c376fb7acda0 100644 --- a/arch/blackfin/mach-bf548/include/mach/cdefBF54x_base.h +++ b/arch/blackfin/mach-bf548/include/mach/cdefBF54x_base.h | |||
@@ -34,7 +34,6 @@ | |||
34 | #include <asm/blackfin.h> | 34 | #include <asm/blackfin.h> |
35 | 35 | ||
36 | #include "defBF54x_base.h" | 36 | #include "defBF54x_base.h" |
37 | #include <asm/system.h> | ||
38 | 37 | ||
39 | /* ************************************************************** */ | 38 | /* ************************************************************** */ |
40 | /* SYSTEM & MMR ADDRESS DEFINITIONS COMMON TO ALL ADSP-BF54x */ | 39 | /* SYSTEM & MMR ADDRESS DEFINITIONS COMMON TO ALL ADSP-BF54x */ |
@@ -43,63 +42,9 @@ | |||
43 | /* PLL Registers */ | 42 | /* PLL Registers */ |
44 | 43 | ||
45 | #define bfin_read_PLL_CTL() bfin_read16(PLL_CTL) | 44 | #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, iwr0, iwr1, iwr2; | ||
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 | iwr0 = bfin_read32(SIC_IWR0); | ||
57 | iwr1 = bfin_read32(SIC_IWR1); | ||
58 | iwr2 = bfin_read32(SIC_IWR2); | ||
59 | /* Only allow PPL Wakeup) */ | ||
60 | bfin_write32(SIC_IWR0, IWR_ENABLE(0)); | ||
61 | bfin_write32(SIC_IWR1, 0); | ||
62 | bfin_write32(SIC_IWR2, 0); | ||
63 | |||
64 | bfin_write16(PLL_CTL, val); | ||
65 | SSYNC(); | ||
66 | asm("IDLE;"); | ||
67 | |||
68 | bfin_write32(SIC_IWR0, iwr0); | ||
69 | bfin_write32(SIC_IWR1, iwr1); | ||
70 | bfin_write32(SIC_IWR2, iwr2); | ||
71 | local_irq_restore(flags); | ||
72 | } | ||
73 | #define bfin_read_PLL_DIV() bfin_read16(PLL_DIV) | 45 | #define bfin_read_PLL_DIV() bfin_read16(PLL_DIV) |
74 | #define bfin_write_PLL_DIV(val) bfin_write16(PLL_DIV, val) | 46 | #define bfin_write_PLL_DIV(val) bfin_write16(PLL_DIV, val) |
75 | #define bfin_read_VR_CTL() bfin_read16(VR_CTL) | 47 | #define bfin_read_VR_CTL() bfin_read16(VR_CTL) |
76 | /* Writing to VR_CTL initiates a PLL relock sequence. */ | ||
77 | static __inline__ void bfin_write_VR_CTL(unsigned int val) | ||
78 | { | ||
79 | unsigned long flags, iwr0, iwr1, iwr2; | ||
80 | |||
81 | if (val == bfin_read_VR_CTL()) | ||
82 | return; | ||
83 | |||
84 | local_irq_save(flags); | ||
85 | /* Enable the PLL Wakeup bit in SIC IWR */ | ||
86 | iwr0 = bfin_read32(SIC_IWR0); | ||
87 | iwr1 = bfin_read32(SIC_IWR1); | ||
88 | iwr2 = bfin_read32(SIC_IWR2); | ||
89 | /* Only allow PPL Wakeup) */ | ||
90 | bfin_write32(SIC_IWR0, IWR_ENABLE(0)); | ||
91 | bfin_write32(SIC_IWR1, 0); | ||
92 | bfin_write32(SIC_IWR2, 0); | ||
93 | |||
94 | bfin_write16(VR_CTL, val); | ||
95 | SSYNC(); | ||
96 | asm("IDLE;"); | ||
97 | |||
98 | bfin_write32(SIC_IWR0, iwr0); | ||
99 | bfin_write32(SIC_IWR1, iwr1); | ||
100 | bfin_write32(SIC_IWR2, iwr2); | ||
101 | local_irq_restore(flags); | ||
102 | } | ||
103 | #define bfin_read_PLL_STAT() bfin_read16(PLL_STAT) | 48 | #define bfin_read_PLL_STAT() bfin_read16(PLL_STAT) |
104 | #define bfin_write_PLL_STAT(val) bfin_write16(PLL_STAT, val) | 49 | #define bfin_write_PLL_STAT(val) bfin_write16(PLL_STAT, val) |
105 | #define bfin_read_PLL_LOCKCNT() bfin_read16(PLL_LOCKCNT) | 50 | #define bfin_read_PLL_LOCKCNT() bfin_read16(PLL_LOCKCNT) |
@@ -2746,5 +2691,64 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val) | |||
2746 | #define bfin_read_PINT3_IRQ bfin_read_PINT3_REQUEST | 2691 | #define bfin_read_PINT3_IRQ bfin_read_PINT3_REQUEST |
2747 | #define bfin_write_PINT3_IRQ bfin_write_PINT3_REQUEST | 2692 | #define bfin_write_PINT3_IRQ bfin_write_PINT3_REQUEST |
2748 | 2693 | ||
2694 | /* These need to be last due to the cdef/linux inter-dependencies */ | ||
2695 | #include <asm/system.h> | ||
2696 | |||
2697 | /* Writing to PLL_CTL initiates a PLL relock sequence. */ | ||
2698 | static __inline__ void bfin_write_PLL_CTL(unsigned int val) | ||
2699 | { | ||
2700 | unsigned long flags, iwr0, iwr1, iwr2; | ||
2701 | |||
2702 | if (val == bfin_read_PLL_CTL()) | ||
2703 | return; | ||
2704 | |||
2705 | local_irq_save(flags); | ||
2706 | /* Enable the PLL Wakeup bit in SIC IWR */ | ||
2707 | iwr0 = bfin_read32(SIC_IWR0); | ||
2708 | iwr1 = bfin_read32(SIC_IWR1); | ||
2709 | iwr2 = bfin_read32(SIC_IWR2); | ||
2710 | /* Only allow PPL Wakeup) */ | ||
2711 | bfin_write32(SIC_IWR0, IWR_ENABLE(0)); | ||
2712 | bfin_write32(SIC_IWR1, 0); | ||
2713 | bfin_write32(SIC_IWR2, 0); | ||
2714 | |||
2715 | bfin_write16(PLL_CTL, val); | ||
2716 | SSYNC(); | ||
2717 | asm("IDLE;"); | ||
2718 | |||
2719 | bfin_write32(SIC_IWR0, iwr0); | ||
2720 | bfin_write32(SIC_IWR1, iwr1); | ||
2721 | bfin_write32(SIC_IWR2, iwr2); | ||
2722 | local_irq_restore(flags); | ||
2723 | } | ||
2724 | |||
2725 | /* Writing to VR_CTL initiates a PLL relock sequence. */ | ||
2726 | static __inline__ void bfin_write_VR_CTL(unsigned int val) | ||
2727 | { | ||
2728 | unsigned long flags, iwr0, iwr1, iwr2; | ||
2729 | |||
2730 | if (val == bfin_read_VR_CTL()) | ||
2731 | return; | ||
2732 | |||
2733 | local_irq_save(flags); | ||
2734 | /* Enable the PLL Wakeup bit in SIC IWR */ | ||
2735 | iwr0 = bfin_read32(SIC_IWR0); | ||
2736 | iwr1 = bfin_read32(SIC_IWR1); | ||
2737 | iwr2 = bfin_read32(SIC_IWR2); | ||
2738 | /* Only allow PPL Wakeup) */ | ||
2739 | bfin_write32(SIC_IWR0, IWR_ENABLE(0)); | ||
2740 | bfin_write32(SIC_IWR1, 0); | ||
2741 | bfin_write32(SIC_IWR2, 0); | ||
2742 | |||
2743 | bfin_write16(VR_CTL, val); | ||
2744 | SSYNC(); | ||
2745 | asm("IDLE;"); | ||
2746 | |||
2747 | bfin_write32(SIC_IWR0, iwr0); | ||
2748 | bfin_write32(SIC_IWR1, iwr1); | ||
2749 | bfin_write32(SIC_IWR2, iwr2); | ||
2750 | local_irq_restore(flags); | ||
2751 | } | ||
2752 | |||
2749 | #endif /* _CDEF_BF54X_H */ | 2753 | #endif /* _CDEF_BF54X_H */ |
2750 | 2754 | ||