diff options
Diffstat (limited to 'arch/blackfin/mach-bf561')
-rw-r--r-- | arch/blackfin/mach-bf561/include/mach/cdefBF561.h | 103 |
1 files changed, 53 insertions, 50 deletions
diff --git a/arch/blackfin/mach-bf561/include/mach/cdefBF561.h b/arch/blackfin/mach-bf561/include/mach/cdefBF561.h index c14d63402e70..eb349ca88cc4 100644 --- a/arch/blackfin/mach-bf561/include/mach/cdefBF561.h +++ b/arch/blackfin/mach-bf561/include/mach/cdefBF561.h | |||
@@ -39,65 +39,15 @@ | |||
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 | /*********************************************************************************** */ | 42 | /*********************************************************************************** */ |
45 | /* System MMR Register Map */ | 43 | /* System MMR Register Map */ |
46 | /*********************************************************************************** */ | 44 | /*********************************************************************************** */ |
47 | 45 | ||
48 | /* Clock and System Control (0xFFC00000 - 0xFFC000FF) */ | 46 | /* Clock and System Control (0xFFC00000 - 0xFFC000FF) */ |
49 | #define bfin_read_PLL_CTL() bfin_read16(PLL_CTL) | 47 | #define bfin_read_PLL_CTL() bfin_read16(PLL_CTL) |
50 | /* Writing to PLL_CTL initiates a PLL relock sequence. */ | ||
51 | static __inline__ void bfin_write_PLL_CTL(unsigned int val) | ||
52 | { | ||
53 | unsigned long flags, iwr0, iwr1; | ||
54 | |||
55 | if (val == bfin_read_PLL_CTL()) | ||
56 | return; | ||
57 | |||
58 | local_irq_save(flags); | ||
59 | /* Enable the PLL Wakeup bit in SIC IWR */ | ||
60 | iwr0 = bfin_read32(SICA_IWR0); | ||
61 | iwr1 = bfin_read32(SICA_IWR1); | ||
62 | /* Only allow PPL Wakeup) */ | ||
63 | bfin_write32(SICA_IWR0, IWR_ENABLE(0)); | ||
64 | bfin_write32(SICA_IWR1, 0); | ||
65 | |||
66 | bfin_write16(PLL_CTL, val); | ||
67 | SSYNC(); | ||
68 | asm("IDLE;"); | ||
69 | |||
70 | bfin_write32(SICA_IWR0, iwr0); | ||
71 | bfin_write32(SICA_IWR1, iwr1); | ||
72 | local_irq_restore(flags); | ||
73 | } | ||
74 | #define bfin_read_PLL_DIV() bfin_read16(PLL_DIV) | 48 | #define bfin_read_PLL_DIV() bfin_read16(PLL_DIV) |
75 | #define bfin_write_PLL_DIV(val) bfin_write16(PLL_DIV,val) | 49 | #define bfin_write_PLL_DIV(val) bfin_write16(PLL_DIV,val) |
76 | #define bfin_read_VR_CTL() bfin_read16(VR_CTL) | 50 | #define bfin_read_VR_CTL() bfin_read16(VR_CTL) |
77 | /* Writing to VR_CTL initiates a PLL relock sequence. */ | ||
78 | static __inline__ void bfin_write_VR_CTL(unsigned int val) | ||
79 | { | ||
80 | unsigned long flags, iwr0, iwr1; | ||
81 | |||
82 | if (val == bfin_read_VR_CTL()) | ||
83 | return; | ||
84 | |||
85 | local_irq_save(flags); | ||
86 | /* Enable the PLL Wakeup bit in SIC IWR */ | ||
87 | iwr0 = bfin_read32(SICA_IWR0); | ||
88 | iwr1 = bfin_read32(SICA_IWR1); | ||
89 | /* Only allow PPL Wakeup) */ | ||
90 | bfin_write32(SICA_IWR0, IWR_ENABLE(0)); | ||
91 | bfin_write32(SICA_IWR1, 0); | ||
92 | |||
93 | bfin_write16(VR_CTL, val); | ||
94 | SSYNC(); | ||
95 | asm("IDLE;"); | ||
96 | |||
97 | bfin_write32(SICA_IWR0, iwr0); | ||
98 | bfin_write32(SICA_IWR1, iwr1); | ||
99 | local_irq_restore(flags); | ||
100 | } | ||
101 | #define bfin_read_PLL_STAT() bfin_read16(PLL_STAT) | 51 | #define bfin_read_PLL_STAT() bfin_read16(PLL_STAT) |
102 | #define bfin_write_PLL_STAT(val) bfin_write16(PLL_STAT,val) | 52 | #define bfin_write_PLL_STAT(val) bfin_write16(PLL_STAT,val) |
103 | #define bfin_read_PLL_LOCKCNT() bfin_read16(PLL_LOCKCNT) | 53 | #define bfin_read_PLL_LOCKCNT() bfin_read16(PLL_LOCKCNT) |
@@ -1576,4 +1526,57 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val) | |||
1576 | #define bfin_read_MDMA_D0_START_ADDR() bfin_read_MDMA1_D0_START_ADDR() | 1526 | #define bfin_read_MDMA_D0_START_ADDR() bfin_read_MDMA1_D0_START_ADDR() |
1577 | #define bfin_write_MDMA_D0_START_ADDR(val) bfin_write_MDMA1_D0_START_ADDR(val) | 1527 | #define bfin_write_MDMA_D0_START_ADDR(val) bfin_write_MDMA1_D0_START_ADDR(val) |
1578 | 1528 | ||
1529 | /* These need to be last due to the cdef/linux inter-dependencies */ | ||
1530 | #include <asm/system.h> | ||
1531 | |||
1532 | /* Writing to PLL_CTL initiates a PLL relock sequence. */ | ||
1533 | static __inline__ void bfin_write_PLL_CTL(unsigned int val) | ||
1534 | { | ||
1535 | unsigned long flags, iwr0, iwr1; | ||
1536 | |||
1537 | if (val == bfin_read_PLL_CTL()) | ||
1538 | return; | ||
1539 | |||
1540 | local_irq_save(flags); | ||
1541 | /* Enable the PLL Wakeup bit in SIC IWR */ | ||
1542 | iwr0 = bfin_read32(SICA_IWR0); | ||
1543 | iwr1 = bfin_read32(SICA_IWR1); | ||
1544 | /* Only allow PPL Wakeup) */ | ||
1545 | bfin_write32(SICA_IWR0, IWR_ENABLE(0)); | ||
1546 | bfin_write32(SICA_IWR1, 0); | ||
1547 | |||
1548 | bfin_write16(PLL_CTL, val); | ||
1549 | SSYNC(); | ||
1550 | asm("IDLE;"); | ||
1551 | |||
1552 | bfin_write32(SICA_IWR0, iwr0); | ||
1553 | bfin_write32(SICA_IWR1, iwr1); | ||
1554 | local_irq_restore(flags); | ||
1555 | } | ||
1556 | |||
1557 | /* Writing to VR_CTL initiates a PLL relock sequence. */ | ||
1558 | static __inline__ void bfin_write_VR_CTL(unsigned int val) | ||
1559 | { | ||
1560 | unsigned long flags, iwr0, iwr1; | ||
1561 | |||
1562 | if (val == bfin_read_VR_CTL()) | ||
1563 | return; | ||
1564 | |||
1565 | local_irq_save(flags); | ||
1566 | /* Enable the PLL Wakeup bit in SIC IWR */ | ||
1567 | iwr0 = bfin_read32(SICA_IWR0); | ||
1568 | iwr1 = bfin_read32(SICA_IWR1); | ||
1569 | /* Only allow PPL Wakeup) */ | ||
1570 | bfin_write32(SICA_IWR0, IWR_ENABLE(0)); | ||
1571 | bfin_write32(SICA_IWR1, 0); | ||
1572 | |||
1573 | bfin_write16(VR_CTL, val); | ||
1574 | SSYNC(); | ||
1575 | asm("IDLE;"); | ||
1576 | |||
1577 | bfin_write32(SICA_IWR0, iwr0); | ||
1578 | bfin_write32(SICA_IWR1, iwr1); | ||
1579 | local_irq_restore(flags); | ||
1580 | } | ||
1581 | |||
1579 | #endif /* _CDEF_BF561_H */ | 1582 | #endif /* _CDEF_BF561_H */ |