diff options
Diffstat (limited to 'include/asm-arm')
145 files changed, 3775 insertions, 1521 deletions
diff --git a/include/asm-arm/arch-at91/at91_lcdc.h b/include/asm-arm/arch-at91/at91_lcdc.h deleted file mode 100644 index ab040a40d37b..000000000000 --- a/include/asm-arm/arch-at91/at91_lcdc.h +++ /dev/null | |||
@@ -1,148 +0,0 @@ | |||
1 | /* | ||
2 | * include/asm-arm/arch-at91/at91_lcdc.h | ||
3 | * | ||
4 | * LCD Controller (LCDC). | ||
5 | * Based on AT91SAM9261 datasheet revision E. | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | */ | ||
12 | |||
13 | #ifndef AT91_LCDC_H | ||
14 | #define AT91_LCDC_H | ||
15 | |||
16 | #define AT91_LCDC_DMABADDR1 0x00 /* DMA Base Address Register 1 */ | ||
17 | #define AT91_LCDC_DMABADDR2 0x04 /* DMA Base Address Register 2 */ | ||
18 | #define AT91_LCDC_DMAFRMPT1 0x08 /* DMA Frame Pointer Register 1 */ | ||
19 | #define AT91_LCDC_DMAFRMPT2 0x0c /* DMA Frame Pointer Register 2 */ | ||
20 | #define AT91_LCDC_DMAFRMADD1 0x10 /* DMA Frame Address Register 1 */ | ||
21 | #define AT91_LCDC_DMAFRMADD2 0x14 /* DMA Frame Address Register 2 */ | ||
22 | |||
23 | #define AT91_LCDC_DMAFRMCFG 0x18 /* DMA Frame Configuration Register */ | ||
24 | #define AT91_LCDC_FRSIZE (0x7fffff << 0) /* Frame Size */ | ||
25 | #define AT91_LCDC_BLENGTH (0x7f << 24) /* Burst Length */ | ||
26 | |||
27 | #define AT91_LCDC_DMACON 0x1c /* DMA Control Register */ | ||
28 | #define AT91_LCDC_DMAEN (0x1 << 0) /* DMA Enable */ | ||
29 | #define AT91_LCDC_DMARST (0x1 << 1) /* DMA Reset */ | ||
30 | #define AT91_LCDC_DMABUSY (0x1 << 2) /* DMA Busy */ | ||
31 | |||
32 | #define AT91_LCDC_LCDCON1 0x0800 /* LCD Control Register 1 */ | ||
33 | #define AT91_LCDC_BYPASS (1 << 0) /* Bypass lcd_dotck divider */ | ||
34 | #define AT91_LCDC_CLKVAL (0x1ff << 12) /* Clock Divider */ | ||
35 | #define AT91_LCDC_LINCNT (0x7ff << 21) /* Line Counter */ | ||
36 | |||
37 | #define AT91_LCDC_LCDCON2 0x0804 /* LCD Control Register 2 */ | ||
38 | #define AT91_LCDC_DISTYPE (3 << 0) /* Display Type */ | ||
39 | #define AT91_LCDC_DISTYPE_STNMONO (0 << 0) | ||
40 | #define AT91_LCDC_DISTYPE_STNCOLOR (1 << 0) | ||
41 | #define AT91_LCDC_DISTYPE_TFT (2 << 0) | ||
42 | #define AT91_LCDC_SCANMOD (1 << 2) /* Scan Mode */ | ||
43 | #define AT91_LCDC_SCANMOD_SINGLE (0 << 2) | ||
44 | #define AT91_LCDC_SCANMOD_DUAL (1 << 2) | ||
45 | #define AT91_LCDC_IFWIDTH (3 << 3) /*Interface Width */ | ||
46 | #define AT91_LCDC_IFWIDTH_4 (0 << 3) | ||
47 | #define AT91_LCDC_IFWIDTH_8 (1 << 3) | ||
48 | #define AT91_LCDC_IFWIDTH_16 (2 << 3) | ||
49 | #define AT91_LCDC_PIXELSIZE (7 << 5) /* Bits per pixel */ | ||
50 | #define AT91_LCDC_PIXELSIZE_1 (0 << 5) | ||
51 | #define AT91_LCDC_PIXELSIZE_2 (1 << 5) | ||
52 | #define AT91_LCDC_PIXELSIZE_4 (2 << 5) | ||
53 | #define AT91_LCDC_PIXELSIZE_8 (3 << 5) | ||
54 | #define AT91_LCDC_PIXELSIZE_16 (4 << 5) | ||
55 | #define AT91_LCDC_PIXELSIZE_24 (5 << 5) | ||
56 | #define AT91_LCDC_INVVD (1 << 8) /* LCD Data polarity */ | ||
57 | #define AT91_LCDC_INVVD_NORMAL (0 << 8) | ||
58 | #define AT91_LCDC_INVVD_INVERTED (1 << 8) | ||
59 | #define AT91_LCDC_INVFRAME (1 << 9 ) /* LCD VSync polarity */ | ||
60 | #define AT91_LCDC_INVFRAME_NORMAL (0 << 9) | ||
61 | #define AT91_LCDC_INVFRAME_INVERTED (1 << 9) | ||
62 | #define AT91_LCDC_INVLINE (1 << 10) /* LCD HSync polarity */ | ||
63 | #define AT91_LCDC_INVLINE_NORMAL (0 << 10) | ||
64 | #define AT91_LCDC_INVLINE_INVERTED (1 << 10) | ||
65 | #define AT91_LCDC_INVCLK (1 << 11) /* LCD dotclk polarity */ | ||
66 | #define AT91_LCDC_INVCLK_NORMAL (0 << 11) | ||
67 | #define AT91_LCDC_INVCLK_INVERTED (1 << 11) | ||
68 | #define AT91_LCDC_INVDVAL (1 << 12) /* LCD dval polarity */ | ||
69 | #define AT91_LCDC_INVDVAL_NORMAL (0 << 12) | ||
70 | #define AT91_LCDC_INVDVAL_INVERTED (1 << 12) | ||
71 | #define AT91_LCDC_CLKMOD (1 << 15) /* LCD dotclk mode */ | ||
72 | #define AT91_LCDC_CLKMOD_ACTIVEDISPLAY (0 << 15) | ||
73 | #define AT91_LCDC_CLKMOD_ALWAYSACTIVE (1 << 15) | ||
74 | #define AT91_LCDC_MEMOR (1 << 31) /* Memory Ordering Format */ | ||
75 | #define AT91_LCDC_MEMOR_BIG (0 << 31) | ||
76 | #define AT91_LCDC_MEMOR_LITTLE (1 << 31) | ||
77 | |||
78 | #define AT91_LCDC_TIM1 0x0808 /* LCD Timing Register 1 */ | ||
79 | #define AT91_LCDC_VFP (0xff << 0) /* Vertical Front Porch */ | ||
80 | #define AT91_LCDC_VBP (0xff << 8) /* Vertical Back Porch */ | ||
81 | #define AT91_LCDC_VPW (0x3f << 16) /* Vertical Synchronization Pulse Width */ | ||
82 | #define AT91_LCDC_VHDLY (0xf << 24) /* Vertical to Horizontal Delay */ | ||
83 | |||
84 | #define AT91_LCDC_TIM2 0x080c /* LCD Timing Register 2 */ | ||
85 | #define AT91_LCDC_HBP (0xff << 0) /* Horizontal Back Porch */ | ||
86 | #define AT91_LCDC_HPW (0x3f << 8) /* Horizontal Synchronization Pulse Width */ | ||
87 | #define AT91_LCDC_HFP (0x7ff << 21) /* Horizontal Front Porch */ | ||
88 | |||
89 | #define AT91_LCDC_LCDFRMCFG 0x0810 /* LCD Frame Configuration Register */ | ||
90 | #define AT91_LCDC_LINEVAL (0x7ff << 0) /* Vertical Size of LCD Module */ | ||
91 | #define AT91_LCDC_HOZVAL (0x7ff << 21) /* Horizontal Size of LCD Module */ | ||
92 | |||
93 | #define AT91_LCDC_FIFO 0x0814 /* LCD FIFO Register */ | ||
94 | #define AT91_LCDC_FIFOTH (0xffff) /* FIFO Threshold */ | ||
95 | |||
96 | #define AT91_LCDC_DP1_2 0x081c /* Dithering Pattern DP1_2 Register */ | ||
97 | #define AT91_LCDC_DP4_7 0x0820 /* Dithering Pattern DP4_7 Register */ | ||
98 | #define AT91_LCDC_DP3_5 0x0824 /* Dithering Pattern DP3_5 Register */ | ||
99 | #define AT91_LCDC_DP2_3 0x0828 /* Dithering Pattern DP2_3 Register */ | ||
100 | #define AT91_LCDC_DP5_7 0x082c /* Dithering Pattern DP5_7 Register */ | ||
101 | #define AT91_LCDC_DP3_4 0x0830 /* Dithering Pattern DP3_4 Register */ | ||
102 | #define AT91_LCDC_DP4_5 0x0834 /* Dithering Pattern DP4_5 Register */ | ||
103 | #define AT91_LCDC_DP6_7 0x0838 /* Dithering Pattern DP6_7 Register */ | ||
104 | #define AT91_LCDC_DP1_2_VAL (0xff) | ||
105 | #define AT91_LCDC_DP4_7_VAL (0xfffffff) | ||
106 | #define AT91_LCDC_DP3_5_VAL (0xfffff) | ||
107 | #define AT91_LCDC_DP2_3_VAL (0xfff) | ||
108 | #define AT91_LCDC_DP5_7_VAL (0xfffffff) | ||
109 | #define AT91_LCDC_DP3_4_VAL (0xffff) | ||
110 | #define AT91_LCDC_DP4_5_VAL (0xfffff) | ||
111 | #define AT91_LCDC_DP6_7_VAL (0xfffffff) | ||
112 | |||
113 | #define AT91_LCDC_PWRCON 0x083c /* Power Control Register */ | ||
114 | #define AT91_LCDC_PWR (1 << 0) /* LCD Module Power Control */ | ||
115 | #define AT91_LCDC_GUARDT (0x7f << 1) /* Delay in Frame Period */ | ||
116 | #define AT91_LCDC_BUSY (1 << 31) /* LCD Busy */ | ||
117 | |||
118 | #define AT91_LCDC_CONTRAST_CTR 0x0840 /* Contrast Control Register */ | ||
119 | #define AT91_LCDC_PS (3 << 0) /* Contrast Counter Prescaler */ | ||
120 | #define AT91_LCDC_PS_DIV1 (0 << 0) | ||
121 | #define AT91_LCDC_PS_DIV2 (1 << 0) | ||
122 | #define AT91_LCDC_PS_DIV4 (2 << 0) | ||
123 | #define AT91_LCDC_PS_DIV8 (3 << 0) | ||
124 | #define AT91_LCDC_POL (1 << 2) /* Polarity of output Pulse */ | ||
125 | #define AT91_LCDC_POL_NEGATIVE (0 << 2) | ||
126 | #define AT91_LCDC_POL_POSITIVE (1 << 2) | ||
127 | #define AT91_LCDC_ENA (1 << 3) /* PWM generator Control */ | ||
128 | #define AT91_LCDC_ENA_PWMDISABLE (0 << 3) | ||
129 | #define AT91_LCDC_ENA_PWMENABLE (1 << 3) | ||
130 | |||
131 | #define AT91_LCDC_CONTRAST_VAL 0x0844 /* Contrast Value Register */ | ||
132 | #define AT91_LCDC_CVAL (0xff) /* PWM compare value */ | ||
133 | |||
134 | #define AT91_LCDC_IER 0x0848 /* Interrupt Enable Register */ | ||
135 | #define AT91_LCDC_IDR 0x084c /* Interrupt Disable Register */ | ||
136 | #define AT91_LCDC_IMR 0x0850 /* Interrupt Mask Register */ | ||
137 | #define AT91_LCDC_ISR 0x0854 /* Interrupt Enable Register */ | ||
138 | #define AT91_LCDC_ICR 0x0858 /* Interrupt Clear Register */ | ||
139 | #define AT91_LCDC_LNI (1 << 0) /* Line Interrupt */ | ||
140 | #define AT91_LCDC_LSTLNI (1 << 1) /* Last Line Interrupt */ | ||
141 | #define AT91_LCDC_EOFI (1 << 2) /* DMA End Of Frame Interrupt */ | ||
142 | #define AT91_LCDC_UFLWI (1 << 4) /* FIFO Underflow Interrupt */ | ||
143 | #define AT91_LCDC_OWRI (1 << 5) /* FIFO Overwrite Interrupt */ | ||
144 | #define AT91_LCDC_MERI (1 << 6) /* DMA Memory Error Interrupt */ | ||
145 | |||
146 | #define AT91_LCDC_LUT_(n) (0x0c00 + ((n)*4)) /* Palette Entry 0..255 */ | ||
147 | |||
148 | #endif | ||
diff --git a/include/asm-arm/arch-at91/at91_mci.h b/include/asm-arm/arch-at91/at91_mci.h index c2e11cc374ba..1551fc24eb43 100644 --- a/include/asm-arm/arch-at91/at91_mci.h +++ b/include/asm-arm/arch-at91/at91_mci.h | |||
@@ -89,7 +89,7 @@ | |||
89 | #define AT91_MCI_ENDRX (1 << 6) /* End of RX Buffer */ | 89 | #define AT91_MCI_ENDRX (1 << 6) /* End of RX Buffer */ |
90 | #define AT91_MCI_ENDTX (1 << 7) /* End fo TX Buffer */ | 90 | #define AT91_MCI_ENDTX (1 << 7) /* End fo TX Buffer */ |
91 | #define AT91_MCI_SDIOIRQA (1 << 8) /* SDIO Interrupt for Slot A */ | 91 | #define AT91_MCI_SDIOIRQA (1 << 8) /* SDIO Interrupt for Slot A */ |
92 | #define At91_MCI_SDIOIRQB (1 << 9) /* SDIO Interrupt for Slot B [AT91RM9200 only] */ | 92 | #define AT91_MCI_SDIOIRQB (1 << 9) /* SDIO Interrupt for Slot B */ |
93 | #define AT91_MCI_RXBUFF (1 << 14) /* RX Buffer Full */ | 93 | #define AT91_MCI_RXBUFF (1 << 14) /* RX Buffer Full */ |
94 | #define AT91_MCI_TXBUFE (1 << 15) /* TX Buffer Empty */ | 94 | #define AT91_MCI_TXBUFE (1 << 15) /* TX Buffer Empty */ |
95 | #define AT91_MCI_RINDE (1 << 16) /* Response Index Error */ | 95 | #define AT91_MCI_RINDE (1 << 16) /* Response Index Error */ |
diff --git a/include/asm-arm/arch-at91/at91_pmc.h b/include/asm-arm/arch-at91/at91_pmc.h index 33ff5b6798ee..52cd8e5dabc9 100644 --- a/include/asm-arm/arch-at91/at91_pmc.h +++ b/include/asm-arm/arch-at91/at91_pmc.h | |||
@@ -25,6 +25,7 @@ | |||
25 | #define AT91RM9200_PMC_MCKUDP (1 << 2) /* USB Device Port Master Clock Automatic Disable on Suspend [AT91RM9200 only] */ | 25 | #define AT91RM9200_PMC_MCKUDP (1 << 2) /* USB Device Port Master Clock Automatic Disable on Suspend [AT91RM9200 only] */ |
26 | #define AT91RM9200_PMC_UHP (1 << 4) /* USB Host Port Clock [AT91RM9200 only] */ | 26 | #define AT91RM9200_PMC_UHP (1 << 4) /* USB Host Port Clock [AT91RM9200 only] */ |
27 | #define AT91SAM926x_PMC_UHP (1 << 6) /* USB Host Port Clock [AT91SAM926x only] */ | 27 | #define AT91SAM926x_PMC_UHP (1 << 6) /* USB Host Port Clock [AT91SAM926x only] */ |
28 | #define AT91CAP9_PMC_UHP (1 << 6) /* USB Host Port Clock [AT91CAP9 only] */ | ||
28 | #define AT91SAM926x_PMC_UDP (1 << 7) /* USB Devcice Port Clock [AT91SAM926x only] */ | 29 | #define AT91SAM926x_PMC_UDP (1 << 7) /* USB Devcice Port Clock [AT91SAM926x only] */ |
29 | #define AT91_PMC_PCK0 (1 << 8) /* Programmable Clock 0 */ | 30 | #define AT91_PMC_PCK0 (1 << 8) /* Programmable Clock 0 */ |
30 | #define AT91_PMC_PCK1 (1 << 9) /* Programmable Clock 1 */ | 31 | #define AT91_PMC_PCK1 (1 << 9) /* Programmable Clock 1 */ |
@@ -37,7 +38,9 @@ | |||
37 | #define AT91_PMC_PCDR (AT91_PMC + 0x14) /* Peripheral Clock Disable Register */ | 38 | #define AT91_PMC_PCDR (AT91_PMC + 0x14) /* Peripheral Clock Disable Register */ |
38 | #define AT91_PMC_PCSR (AT91_PMC + 0x18) /* Peripheral Clock Status Register */ | 39 | #define AT91_PMC_PCSR (AT91_PMC + 0x18) /* Peripheral Clock Status Register */ |
39 | 40 | ||
40 | #define AT91_CKGR_MOR (AT91_PMC + 0x20) /* Main Oscillator Register */ | 41 | #define AT91_CKGR_UCKR (AT91_PMC + 0x1C) /* UTMI Clock Register [SAM9RL, CAP9] */ |
42 | |||
43 | #define AT91_CKGR_MOR (AT91_PMC + 0x20) /* Main Oscillator Register [not on SAM9RL] */ | ||
41 | #define AT91_PMC_MOSCEN (1 << 0) /* Main Oscillator Enable */ | 44 | #define AT91_PMC_MOSCEN (1 << 0) /* Main Oscillator Enable */ |
42 | #define AT91_PMC_OSCBYPASS (1 << 1) /* Oscillator Bypass [AT91SAM926x only] */ | 45 | #define AT91_PMC_OSCBYPASS (1 << 1) /* Oscillator Bypass [AT91SAM926x only] */ |
43 | #define AT91_PMC_OSCOUNT (0xff << 8) /* Main Oscillator Start-up Time */ | 46 | #define AT91_PMC_OSCOUNT (0xff << 8) /* Main Oscillator Start-up Time */ |
@@ -52,6 +55,10 @@ | |||
52 | #define AT91_PMC_PLLCOUNT (0x3f << 8) /* PLL Counter */ | 55 | #define AT91_PMC_PLLCOUNT (0x3f << 8) /* PLL Counter */ |
53 | #define AT91_PMC_OUT (3 << 14) /* PLL Clock Frequency Range */ | 56 | #define AT91_PMC_OUT (3 << 14) /* PLL Clock Frequency Range */ |
54 | #define AT91_PMC_MUL (0x7ff << 16) /* PLL Multiplier */ | 57 | #define AT91_PMC_MUL (0x7ff << 16) /* PLL Multiplier */ |
58 | #define AT91_PMC_USBDIV (3 << 28) /* USB Divisor (PLLB only) */ | ||
59 | #define AT91_PMC_USBDIV_1 (0 << 28) | ||
60 | #define AT91_PMC_USBDIV_2 (1 << 28) | ||
61 | #define AT91_PMC_USBDIV_4 (2 << 28) | ||
55 | #define AT91_PMC_USB96M (1 << 28) /* Divider by 2 Enable (PLLB only) */ | 62 | #define AT91_PMC_USB96M (1 << 28) /* Divider by 2 Enable (PLLB only) */ |
56 | 63 | ||
57 | #define AT91_PMC_MCKR (AT91_PMC + 0x30) /* Master Clock Register */ | 64 | #define AT91_PMC_MCKR (AT91_PMC + 0x30) /* Master Clock Register */ |
diff --git a/include/asm-arm/arch-at91/at91_rtt.h b/include/asm-arm/arch-at91/at91_rtt.h index bae1103fbbb2..39a32633b275 100644 --- a/include/asm-arm/arch-at91/at91_rtt.h +++ b/include/asm-arm/arch-at91/at91_rtt.h | |||
@@ -13,19 +13,19 @@ | |||
13 | #ifndef AT91_RTT_H | 13 | #ifndef AT91_RTT_H |
14 | #define AT91_RTT_H | 14 | #define AT91_RTT_H |
15 | 15 | ||
16 | #define AT91_RTT_MR (AT91_RTT + 0x00) /* Real-time Mode Register */ | 16 | #define AT91_RTT_MR 0x00 /* Real-time Mode Register */ |
17 | #define AT91_RTT_RTPRES (0xffff << 0) /* Real-time Timer Prescaler Value */ | 17 | #define AT91_RTT_RTPRES (0xffff << 0) /* Real-time Timer Prescaler Value */ |
18 | #define AT91_RTT_ALMIEN (1 << 16) /* Alarm Interrupt Enable */ | 18 | #define AT91_RTT_ALMIEN (1 << 16) /* Alarm Interrupt Enable */ |
19 | #define AT91_RTT_RTTINCIEN (1 << 17) /* Real Time Timer Increment Interrupt Enable */ | 19 | #define AT91_RTT_RTTINCIEN (1 << 17) /* Real Time Timer Increment Interrupt Enable */ |
20 | #define AT91_RTT_RTTRST (1 << 18) /* Real Time Timer Restart */ | 20 | #define AT91_RTT_RTTRST (1 << 18) /* Real Time Timer Restart */ |
21 | 21 | ||
22 | #define AT91_RTT_AR (AT91_RTT + 0x04) /* Real-time Alarm Register */ | 22 | #define AT91_RTT_AR 0x04 /* Real-time Alarm Register */ |
23 | #define AT91_RTT_ALMV (0xffffffff) /* Alarm Value */ | 23 | #define AT91_RTT_ALMV (0xffffffff) /* Alarm Value */ |
24 | 24 | ||
25 | #define AT91_RTT_VR (AT91_RTT + 0x08) /* Real-time Value Register */ | 25 | #define AT91_RTT_VR 0x08 /* Real-time Value Register */ |
26 | #define AT91_RTT_CRTV (0xffffffff) /* Current Real-time Value */ | 26 | #define AT91_RTT_CRTV (0xffffffff) /* Current Real-time Value */ |
27 | 27 | ||
28 | #define AT91_RTT_SR (AT91_RTT + 0x0c) /* Real-time Status Register */ | 28 | #define AT91_RTT_SR 0x0c /* Real-time Status Register */ |
29 | #define AT91_RTT_ALMS (1 << 0) /* Real-time Alarm Status */ | 29 | #define AT91_RTT_ALMS (1 << 0) /* Real-time Alarm Status */ |
30 | #define AT91_RTT_RTTINC (1 << 1) /* Real-time Timer Increment */ | 30 | #define AT91_RTT_RTTINC (1 << 1) /* Real-time Timer Increment */ |
31 | 31 | ||
diff --git a/include/asm-arm/arch-at91/at91_twi.h b/include/asm-arm/arch-at91/at91_twi.h index ca9a90733456..f9f2e3cd95c5 100644 --- a/include/asm-arm/arch-at91/at91_twi.h +++ b/include/asm-arm/arch-at91/at91_twi.h | |||
@@ -21,6 +21,8 @@ | |||
21 | #define AT91_TWI_STOP (1 << 1) /* Send a Stop Condition */ | 21 | #define AT91_TWI_STOP (1 << 1) /* Send a Stop Condition */ |
22 | #define AT91_TWI_MSEN (1 << 2) /* Master Transfer Enable */ | 22 | #define AT91_TWI_MSEN (1 << 2) /* Master Transfer Enable */ |
23 | #define AT91_TWI_MSDIS (1 << 3) /* Master Transfer Disable */ | 23 | #define AT91_TWI_MSDIS (1 << 3) /* Master Transfer Disable */ |
24 | #define AT91_TWI_SVEN (1 << 4) /* Slave Transfer Enable [SAM9260 only] */ | ||
25 | #define AT91_TWI_SVDIS (1 << 5) /* Slave Transfer Disable [SAM9260 only] */ | ||
24 | #define AT91_TWI_SWRST (1 << 7) /* Software Reset */ | 26 | #define AT91_TWI_SWRST (1 << 7) /* Software Reset */ |
25 | 27 | ||
26 | #define AT91_TWI_MMR 0x04 /* Master Mode Register */ | 28 | #define AT91_TWI_MMR 0x04 /* Master Mode Register */ |
@@ -32,6 +34,9 @@ | |||
32 | #define AT91_TWI_MREAD (1 << 12) /* Master Read Direction */ | 34 | #define AT91_TWI_MREAD (1 << 12) /* Master Read Direction */ |
33 | #define AT91_TWI_DADR (0x7f << 16) /* Device Address */ | 35 | #define AT91_TWI_DADR (0x7f << 16) /* Device Address */ |
34 | 36 | ||
37 | #define AT91_TWI_SMR 0x08 /* Slave Mode Register [SAM9260 only] */ | ||
38 | #define AT91_TWI_SADR (0x7f << 16) /* Slave Address */ | ||
39 | |||
35 | #define AT91_TWI_IADR 0x0c /* Internal Address Register */ | 40 | #define AT91_TWI_IADR 0x0c /* Internal Address Register */ |
36 | 41 | ||
37 | #define AT91_TWI_CWGR 0x10 /* Clock Waveform Generator Register */ | 42 | #define AT91_TWI_CWGR 0x10 /* Clock Waveform Generator Register */ |
@@ -43,9 +48,15 @@ | |||
43 | #define AT91_TWI_TXCOMP (1 << 0) /* Transmission Complete */ | 48 | #define AT91_TWI_TXCOMP (1 << 0) /* Transmission Complete */ |
44 | #define AT91_TWI_RXRDY (1 << 1) /* Receive Holding Register Ready */ | 49 | #define AT91_TWI_RXRDY (1 << 1) /* Receive Holding Register Ready */ |
45 | #define AT91_TWI_TXRDY (1 << 2) /* Transmit Holding Register Ready */ | 50 | #define AT91_TWI_TXRDY (1 << 2) /* Transmit Holding Register Ready */ |
51 | #define AT91_TWI_SVREAD (1 << 3) /* Slave Read [SAM9260 only] */ | ||
52 | #define AT91_TWI_SVACC (1 << 4) /* Slave Access [SAM9260 only] */ | ||
53 | #define AT91_TWI_GACC (1 << 5) /* General Call Access [SAM9260 only] */ | ||
46 | #define AT91_TWI_OVRE (1 << 6) /* Overrun Error [AT91RM9200 only] */ | 54 | #define AT91_TWI_OVRE (1 << 6) /* Overrun Error [AT91RM9200 only] */ |
47 | #define AT91_TWI_UNRE (1 << 7) /* Underrun Error [AT91RM9200 only] */ | 55 | #define AT91_TWI_UNRE (1 << 7) /* Underrun Error [AT91RM9200 only] */ |
48 | #define AT91_TWI_NACK (1 << 8) /* Not Acknowledged */ | 56 | #define AT91_TWI_NACK (1 << 8) /* Not Acknowledged */ |
57 | #define AT91_TWI_ARBLST (1 << 9) /* Arbitration Lost [SAM9260 only] */ | ||
58 | #define AT91_TWI_SCLWS (1 << 10) /* Clock Wait State [SAM9260 only] */ | ||
59 | #define AT91_TWI_EOSACC (1 << 11) /* End of Slave Address [SAM9260 only] */ | ||
49 | 60 | ||
50 | #define AT91_TWI_IER 0x24 /* Interrupt Enable Register */ | 61 | #define AT91_TWI_IER 0x24 /* Interrupt Enable Register */ |
51 | #define AT91_TWI_IDR 0x28 /* Interrupt Disable Register */ | 62 | #define AT91_TWI_IDR 0x28 /* Interrupt Disable Register */ |
diff --git a/include/asm-arm/arch-at91/at91cap9.h b/include/asm-arm/arch-at91/at91cap9.h new file mode 100644 index 000000000000..73e1fcf4a0aa --- /dev/null +++ b/include/asm-arm/arch-at91/at91cap9.h | |||
@@ -0,0 +1,121 @@ | |||
1 | /* | ||
2 | * include/asm-arm/arch-at91/at91cap9.h | ||
3 | * | ||
4 | * Copyright (C) 2007 Stelian Pop <stelian.pop@leadtechdesign.com> | ||
5 | * Copyright (C) 2007 Lead Tech Design <www.leadtechdesign.com> | ||
6 | * Copyright (C) 2007 Atmel Corporation. | ||
7 | * | ||
8 | * Common definitions. | ||
9 | * Based on AT91CAP9 datasheet revision B (Preliminary). | ||
10 | * | ||
11 | * This program is free software; you can redistribute it and/or modify | ||
12 | * it under the terms of the GNU General Public License as published by | ||
13 | * the Free Software Foundation; either version 2 of the License, or | ||
14 | * (at your option) any later version. | ||
15 | */ | ||
16 | |||
17 | #ifndef AT91CAP9_H | ||
18 | #define AT91CAP9_H | ||
19 | |||
20 | /* | ||
21 | * Peripheral identifiers/interrupts. | ||
22 | */ | ||
23 | #define AT91_ID_FIQ 0 /* Advanced Interrupt Controller (FIQ) */ | ||
24 | #define AT91_ID_SYS 1 /* System Peripherals */ | ||
25 | #define AT91CAP9_ID_PIOABCD 2 /* Parallel IO Controller A, B, C and D */ | ||
26 | #define AT91CAP9_ID_MPB0 3 /* MP Block Peripheral 0 */ | ||
27 | #define AT91CAP9_ID_MPB1 4 /* MP Block Peripheral 1 */ | ||
28 | #define AT91CAP9_ID_MPB2 5 /* MP Block Peripheral 2 */ | ||
29 | #define AT91CAP9_ID_MPB3 6 /* MP Block Peripheral 3 */ | ||
30 | #define AT91CAP9_ID_MPB4 7 /* MP Block Peripheral 4 */ | ||
31 | #define AT91CAP9_ID_US0 8 /* USART 0 */ | ||
32 | #define AT91CAP9_ID_US1 9 /* USART 1 */ | ||
33 | #define AT91CAP9_ID_US2 10 /* USART 2 */ | ||
34 | #define AT91CAP9_ID_MCI0 11 /* Multimedia Card Interface 0 */ | ||
35 | #define AT91CAP9_ID_MCI1 12 /* Multimedia Card Interface 1 */ | ||
36 | #define AT91CAP9_ID_CAN 13 /* CAN */ | ||
37 | #define AT91CAP9_ID_TWI 14 /* Two-Wire Interface */ | ||
38 | #define AT91CAP9_ID_SPI0 15 /* Serial Peripheral Interface 0 */ | ||
39 | #define AT91CAP9_ID_SPI1 16 /* Serial Peripheral Interface 0 */ | ||
40 | #define AT91CAP9_ID_SSC0 17 /* Serial Synchronous Controller 0 */ | ||
41 | #define AT91CAP9_ID_SSC1 18 /* Serial Synchronous Controller 1 */ | ||
42 | #define AT91CAP9_ID_AC97C 19 /* AC97 Controller */ | ||
43 | #define AT91CAP9_ID_TCB 20 /* Timer Counter 0, 1 and 2 */ | ||
44 | #define AT91CAP9_ID_PWMC 21 /* Pulse Width Modulation Controller */ | ||
45 | #define AT91CAP9_ID_EMAC 22 /* Ethernet */ | ||
46 | #define AT91CAP9_ID_AESTDES 23 /* Advanced Encryption Standard, Triple DES */ | ||
47 | #define AT91CAP9_ID_ADC 24 /* Analog-to-Digital Converter */ | ||
48 | #define AT91CAP9_ID_ISI 25 /* Image Sensor Interface */ | ||
49 | #define AT91CAP9_ID_LCDC 26 /* LCD Controller */ | ||
50 | #define AT91CAP9_ID_DMA 27 /* DMA Controller */ | ||
51 | #define AT91CAP9_ID_UDPHS 28 /* USB High Speed Device Port */ | ||
52 | #define AT91CAP9_ID_UHP 29 /* USB Host Port */ | ||
53 | #define AT91CAP9_ID_IRQ0 30 /* Advanced Interrupt Controller (IRQ0) */ | ||
54 | #define AT91CAP9_ID_IRQ1 31 /* Advanced Interrupt Controller (IRQ1) */ | ||
55 | |||
56 | /* | ||
57 | * User Peripheral physical base addresses. | ||
58 | */ | ||
59 | #define AT91CAP9_BASE_UDPHS 0xfff78000 | ||
60 | #define AT91CAP9_BASE_TCB0 0xfff7c000 | ||
61 | #define AT91CAP9_BASE_TC0 0xfff7c000 | ||
62 | #define AT91CAP9_BASE_TC1 0xfff7c040 | ||
63 | #define AT91CAP9_BASE_TC2 0xfff7c080 | ||
64 | #define AT91CAP9_BASE_MCI0 0xfff80000 | ||
65 | #define AT91CAP9_BASE_MCI1 0xfff84000 | ||
66 | #define AT91CAP9_BASE_TWI 0xfff88000 | ||
67 | #define AT91CAP9_BASE_US0 0xfff8c000 | ||
68 | #define AT91CAP9_BASE_US1 0xfff90000 | ||
69 | #define AT91CAP9_BASE_US2 0xfff94000 | ||
70 | #define AT91CAP9_BASE_SSC0 0xfff98000 | ||
71 | #define AT91CAP9_BASE_SSC1 0xfff9c000 | ||
72 | #define AT91CAP9_BASE_AC97C 0xfffa0000 | ||
73 | #define AT91CAP9_BASE_SPI0 0xfffa4000 | ||
74 | #define AT91CAP9_BASE_SPI1 0xfffa8000 | ||
75 | #define AT91CAP9_BASE_CAN 0xfffac000 | ||
76 | #define AT91CAP9_BASE_PWMC 0xfffb8000 | ||
77 | #define AT91CAP9_BASE_EMAC 0xfffbc000 | ||
78 | #define AT91CAP9_BASE_ADC 0xfffc0000 | ||
79 | #define AT91CAP9_BASE_ISI 0xfffc4000 | ||
80 | #define AT91_BASE_SYS 0xffffe200 | ||
81 | |||
82 | /* | ||
83 | * System Peripherals (offset from AT91_BASE_SYS) | ||
84 | */ | ||
85 | #define AT91_ECC (0xffffe200 - AT91_BASE_SYS) | ||
86 | #define AT91_BCRAMC (0xffffe400 - AT91_BASE_SYS) | ||
87 | #define AT91_DDRSDRC (0xffffe600 - AT91_BASE_SYS) | ||
88 | #define AT91_SMC (0xffffe800 - AT91_BASE_SYS) | ||
89 | #define AT91_MATRIX (0xffffea00 - AT91_BASE_SYS) | ||
90 | #define AT91_CCFG (0xffffeb10 - AT91_BASE_SYS) | ||
91 | #define AT91_DMA (0xffffec00 - AT91_BASE_SYS) | ||
92 | #define AT91_DBGU (0xffffee00 - AT91_BASE_SYS) | ||
93 | #define AT91_AIC (0xfffff000 - AT91_BASE_SYS) | ||
94 | #define AT91_PIOA (0xfffff200 - AT91_BASE_SYS) | ||
95 | #define AT91_PIOB (0xfffff400 - AT91_BASE_SYS) | ||
96 | #define AT91_PIOC (0xfffff600 - AT91_BASE_SYS) | ||
97 | #define AT91_PIOD (0xfffff800 - AT91_BASE_SYS) | ||
98 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) | ||
99 | #define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS) | ||
100 | #define AT91_SHDC (0xfffffd10 - AT91_BASE_SYS) | ||
101 | #define AT91_RTT (0xfffffd20 - AT91_BASE_SYS) | ||
102 | #define AT91_PIT (0xfffffd30 - AT91_BASE_SYS) | ||
103 | #define AT91_WDT (0xfffffd40 - AT91_BASE_SYS) | ||
104 | #define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS) | ||
105 | |||
106 | /* | ||
107 | * Internal Memory. | ||
108 | */ | ||
109 | #define AT91CAP9_SRAM_BASE 0x00100000 /* Internal SRAM base address */ | ||
110 | #define AT91CAP9_SRAM_SIZE (32 * SZ_1K) /* Internal SRAM size (32Kb) */ | ||
111 | |||
112 | #define AT91CAP9_ROM_BASE 0x00400000 /* Internal ROM base address */ | ||
113 | #define AT91CAP9_ROM_SIZE (32 * SZ_1K) /* Internal ROM size (32Kb) */ | ||
114 | |||
115 | #define AT91CAP9_LCDC_BASE 0x00500000 /* LCD Controller */ | ||
116 | #define AT91CAP9_UDPHS_BASE 0x00600000 /* USB High Speed Device Port */ | ||
117 | #define AT91CAP9_UHP_BASE 0x00700000 /* USB Host controller */ | ||
118 | |||
119 | #define CONFIG_DRAM_BASE AT91_CHIPSELECT_6 | ||
120 | |||
121 | #endif | ||
diff --git a/include/asm-arm/arch-at91/at91cap9_matrix.h b/include/asm-arm/arch-at91/at91cap9_matrix.h new file mode 100644 index 000000000000..a641686b6c3d --- /dev/null +++ b/include/asm-arm/arch-at91/at91cap9_matrix.h | |||
@@ -0,0 +1,132 @@ | |||
1 | /* | ||
2 | * include/asm-arm/arch-at91/at91cap9_matrix.h | ||
3 | * | ||
4 | * Copyright (C) 2007 Stelian Pop <stelian.pop@leadtechdesign.com> | ||
5 | * Copyright (C) 2007 Lead Tech Design <www.leadtechdesign.com> | ||
6 | * Copyright (C) 2006 Atmel Corporation. | ||
7 | * | ||
8 | * Memory Controllers (MATRIX, EBI) - System peripherals registers. | ||
9 | * Based on AT91CAP9 datasheet revision B (Preliminary). | ||
10 | * | ||
11 | * This program is free software; you can redistribute it and/or modify | ||
12 | * it under the terms of the GNU General Public License as published by | ||
13 | * the Free Software Foundation; either version 2 of the License, or | ||
14 | * (at your option) any later version. | ||
15 | */ | ||
16 | |||
17 | #ifndef AT91CAP9_MATRIX_H | ||
18 | #define AT91CAP9_MATRIX_H | ||
19 | |||
20 | #define AT91_MATRIX_MCFG0 (AT91_MATRIX + 0x00) /* Master Configuration Register 0 */ | ||
21 | #define AT91_MATRIX_MCFG1 (AT91_MATRIX + 0x04) /* Master Configuration Register 1 */ | ||
22 | #define AT91_MATRIX_MCFG2 (AT91_MATRIX + 0x08) /* Master Configuration Register 2 */ | ||
23 | #define AT91_MATRIX_MCFG3 (AT91_MATRIX + 0x0C) /* Master Configuration Register 3 */ | ||
24 | #define AT91_MATRIX_MCFG4 (AT91_MATRIX + 0x10) /* Master Configuration Register 4 */ | ||
25 | #define AT91_MATRIX_MCFG5 (AT91_MATRIX + 0x14) /* Master Configuration Register 5 */ | ||
26 | #define AT91_MATRIX_MCFG6 (AT91_MATRIX + 0x18) /* Master Configuration Register 6 */ | ||
27 | #define AT91_MATRIX_MCFG7 (AT91_MATRIX + 0x1C) /* Master Configuration Register 7 */ | ||
28 | #define AT91_MATRIX_MCFG8 (AT91_MATRIX + 0x20) /* Master Configuration Register 8 */ | ||
29 | #define AT91_MATRIX_MCFG9 (AT91_MATRIX + 0x24) /* Master Configuration Register 9 */ | ||
30 | #define AT91_MATRIX_MCFG10 (AT91_MATRIX + 0x28) /* Master Configuration Register 10 */ | ||
31 | #define AT91_MATRIX_MCFG11 (AT91_MATRIX + 0x2C) /* Master Configuration Register 11 */ | ||
32 | #define AT91_MATRIX_ULBT (7 << 0) /* Undefined Length Burst Type */ | ||
33 | #define AT91_MATRIX_ULBT_INFINITE (0 << 0) | ||
34 | #define AT91_MATRIX_ULBT_SINGLE (1 << 0) | ||
35 | #define AT91_MATRIX_ULBT_FOUR (2 << 0) | ||
36 | #define AT91_MATRIX_ULBT_EIGHT (3 << 0) | ||
37 | #define AT91_MATRIX_ULBT_SIXTEEN (4 << 0) | ||
38 | |||
39 | #define AT91_MATRIX_SCFG0 (AT91_MATRIX + 0x40) /* Slave Configuration Register 0 */ | ||
40 | #define AT91_MATRIX_SCFG1 (AT91_MATRIX + 0x44) /* Slave Configuration Register 1 */ | ||
41 | #define AT91_MATRIX_SCFG2 (AT91_MATRIX + 0x48) /* Slave Configuration Register 2 */ | ||
42 | #define AT91_MATRIX_SCFG3 (AT91_MATRIX + 0x4C) /* Slave Configuration Register 3 */ | ||
43 | #define AT91_MATRIX_SCFG4 (AT91_MATRIX + 0x50) /* Slave Configuration Register 4 */ | ||
44 | #define AT91_MATRIX_SCFG5 (AT91_MATRIX + 0x54) /* Slave Configuration Register 5 */ | ||
45 | #define AT91_MATRIX_SCFG6 (AT91_MATRIX + 0x58) /* Slave Configuration Register 6 */ | ||
46 | #define AT91_MATRIX_SCFG7 (AT91_MATRIX + 0x5C) /* Slave Configuration Register 7 */ | ||
47 | #define AT91_MATRIX_SCFG8 (AT91_MATRIX + 0x60) /* Slave Configuration Register 8 */ | ||
48 | #define AT91_MATRIX_SCFG9 (AT91_MATRIX + 0x64) /* Slave Configuration Register 9 */ | ||
49 | #define AT91_MATRIX_SLOT_CYCLE (0xff << 0) /* Maximum Number of Allowed Cycles for a Burst */ | ||
50 | #define AT91_MATRIX_DEFMSTR_TYPE (3 << 16) /* Default Master Type */ | ||
51 | #define AT91_MATRIX_DEFMSTR_TYPE_NONE (0 << 16) | ||
52 | #define AT91_MATRIX_DEFMSTR_TYPE_LAST (1 << 16) | ||
53 | #define AT91_MATRIX_DEFMSTR_TYPE_FIXED (2 << 16) | ||
54 | #define AT91_MATRIX_FIXED_DEFMSTR (0xf << 18) /* Fixed Index of Default Master */ | ||
55 | #define AT91_MATRIX_ARBT (3 << 24) /* Arbitration Type */ | ||
56 | #define AT91_MATRIX_ARBT_ROUND_ROBIN (0 << 24) | ||
57 | #define AT91_MATRIX_ARBT_FIXED_PRIORITY (1 << 24) | ||
58 | |||
59 | #define AT91_MATRIX_PRAS0 (AT91_MATRIX + 0x80) /* Priority Register A for Slave 0 */ | ||
60 | #define AT91_MATRIX_PRBS0 (AT91_MATRIX + 0x84) /* Priority Register B for Slave 0 */ | ||
61 | #define AT91_MATRIX_PRAS1 (AT91_MATRIX + 0x88) /* Priority Register A for Slave 1 */ | ||
62 | #define AT91_MATRIX_PRBS1 (AT91_MATRIX + 0x8C) /* Priority Register B for Slave 1 */ | ||
63 | #define AT91_MATRIX_PRAS2 (AT91_MATRIX + 0x90) /* Priority Register A for Slave 2 */ | ||
64 | #define AT91_MATRIX_PRBS2 (AT91_MATRIX + 0x94) /* Priority Register B for Slave 2 */ | ||
65 | #define AT91_MATRIX_PRAS3 (AT91_MATRIX + 0x98) /* Priority Register A for Slave 3 */ | ||
66 | #define AT91_MATRIX_PRBS3 (AT91_MATRIX + 0x9C) /* Priority Register B for Slave 3 */ | ||
67 | #define AT91_MATRIX_PRAS4 (AT91_MATRIX + 0xA0) /* Priority Register A for Slave 4 */ | ||
68 | #define AT91_MATRIX_PRBS4 (AT91_MATRIX + 0xA4) /* Priority Register B for Slave 4 */ | ||
69 | #define AT91_MATRIX_PRAS5 (AT91_MATRIX + 0xA8) /* Priority Register A for Slave 5 */ | ||
70 | #define AT91_MATRIX_PRBS5 (AT91_MATRIX + 0xAC) /* Priority Register B for Slave 5 */ | ||
71 | #define AT91_MATRIX_PRAS6 (AT91_MATRIX + 0xB0) /* Priority Register A for Slave 6 */ | ||
72 | #define AT91_MATRIX_PRBS6 (AT91_MATRIX + 0xB4) /* Priority Register B for Slave 6 */ | ||
73 | #define AT91_MATRIX_PRAS7 (AT91_MATRIX + 0xB8) /* Priority Register A for Slave 7 */ | ||
74 | #define AT91_MATRIX_PRBS7 (AT91_MATRIX + 0xBC) /* Priority Register B for Slave 7 */ | ||
75 | #define AT91_MATRIX_PRAS8 (AT91_MATRIX + 0xC0) /* Priority Register A for Slave 8 */ | ||
76 | #define AT91_MATRIX_PRBS8 (AT91_MATRIX + 0xC4) /* Priority Register B for Slave 8 */ | ||
77 | #define AT91_MATRIX_PRAS9 (AT91_MATRIX + 0xC8) /* Priority Register A for Slave 9 */ | ||
78 | #define AT91_MATRIX_PRBS9 (AT91_MATRIX + 0xCC) /* Priority Register B for Slave 9 */ | ||
79 | #define AT91_MATRIX_M0PR (3 << 0) /* Master 0 Priority */ | ||
80 | #define AT91_MATRIX_M1PR (3 << 4) /* Master 1 Priority */ | ||
81 | #define AT91_MATRIX_M2PR (3 << 8) /* Master 2 Priority */ | ||
82 | #define AT91_MATRIX_M3PR (3 << 12) /* Master 3 Priority */ | ||
83 | #define AT91_MATRIX_M4PR (3 << 16) /* Master 4 Priority */ | ||
84 | #define AT91_MATRIX_M5PR (3 << 20) /* Master 5 Priority */ | ||
85 | #define AT91_MATRIX_M6PR (3 << 24) /* Master 6 Priority */ | ||
86 | #define AT91_MATRIX_M7PR (3 << 28) /* Master 7 Priority */ | ||
87 | #define AT91_MATRIX_M8PR (3 << 0) /* Master 8 Priority (in Register B) */ | ||
88 | #define AT91_MATRIX_M9PR (3 << 4) /* Master 9 Priority (in Register B) */ | ||
89 | #define AT91_MATRIX_M10PR (3 << 8) /* Master 10 Priority (in Register B) */ | ||
90 | #define AT91_MATRIX_M11PR (3 << 12) /* Master 11 Priority (in Register B) */ | ||
91 | |||
92 | #define AT91_MATRIX_MRCR (AT91_MATRIX + 0x100) /* Master Remap Control Register */ | ||
93 | #define AT91_MATRIX_RCB0 (1 << 0) /* Remap Command for AHB Master 0 (ARM926EJ-S Instruction Master) */ | ||
94 | #define AT91_MATRIX_RCB1 (1 << 1) /* Remap Command for AHB Master 1 (ARM926EJ-S Data Master) */ | ||
95 | #define AT91_MATRIX_RCB2 (1 << 2) | ||
96 | #define AT91_MATRIX_RCB3 (1 << 3) | ||
97 | #define AT91_MATRIX_RCB4 (1 << 4) | ||
98 | #define AT91_MATRIX_RCB5 (1 << 5) | ||
99 | #define AT91_MATRIX_RCB6 (1 << 6) | ||
100 | #define AT91_MATRIX_RCB7 (1 << 7) | ||
101 | #define AT91_MATRIX_RCB8 (1 << 8) | ||
102 | #define AT91_MATRIX_RCB9 (1 << 9) | ||
103 | #define AT91_MATRIX_RCB10 (1 << 10) | ||
104 | #define AT91_MATRIX_RCB11 (1 << 11) | ||
105 | |||
106 | #define AT91_MPBS0_SFR (AT91_MATRIX + 0x114) /* MPBlock Slave 0 Special Function Register */ | ||
107 | #define AT91_MPBS1_SFR (AT91_MATRIX + 0x11C) /* MPBlock Slave 1 Special Function Register */ | ||
108 | |||
109 | #define AT91_MATRIX_EBICSA (AT91_MATRIX + 0x120) /* EBI Chip Select Assignment Register */ | ||
110 | #define AT91_MATRIX_EBI_CS1A (1 << 1) /* Chip Select 1 Assignment */ | ||
111 | #define AT91_MATRIX_EBI_CS1A_SMC (0 << 1) | ||
112 | #define AT91_MATRIX_EBI_CS1A_BCRAMC (1 << 1) | ||
113 | #define AT91_MATRIX_EBI_CS3A (1 << 3) /* Chip Select 3 Assignment */ | ||
114 | #define AT91_MATRIX_EBI_CS3A_SMC (0 << 3) | ||
115 | #define AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA (1 << 3) | ||
116 | #define AT91_MATRIX_EBI_CS4A (1 << 4) /* Chip Select 4 Assignment */ | ||
117 | #define AT91_MATRIX_EBI_CS4A_SMC (0 << 4) | ||
118 | #define AT91_MATRIX_EBI_CS4A_SMC_CF1 (1 << 4) | ||
119 | #define AT91_MATRIX_EBI_CS5A (1 << 5) /* Chip Select 5 Assignment */ | ||
120 | #define AT91_MATRIX_EBI_CS5A_SMC (0 << 5) | ||
121 | #define AT91_MATRIX_EBI_CS5A_SMC_CF2 (1 << 5) | ||
122 | #define AT91_MATRIX_EBI_DBPUC (1 << 8) /* Data Bus Pull-up Configuration */ | ||
123 | #define AT91_MATRIX_EBI_DQSPDC (1 << 9) /* Data Qualifier Strobe Pull-Down Configuration */ | ||
124 | #define AT91_MATRIX_EBI_VDDIOMSEL (1 << 16) /* Memory voltage selection */ | ||
125 | #define AT91_MATRIX_EBI_VDDIOMSEL_1_8V (0 << 16) | ||
126 | #define AT91_MATRIX_EBI_VDDIOMSEL_3_3V (1 << 16) | ||
127 | |||
128 | #define AT91_MPBS2_SFR (AT91_MATRIX + 0x12C) /* MPBlock Slave 2 Special Function Register */ | ||
129 | #define AT91_MPBS3_SFR (AT91_MATRIX + 0x130) /* MPBlock Slave 3 Special Function Register */ | ||
130 | #define AT91_APB_SFR (AT91_MATRIX + 0x134) /* APB Bridge Special Function Register */ | ||
131 | |||
132 | #endif | ||
diff --git a/include/asm-arm/arch-at91/at91rm9200.h b/include/asm-arm/arch-at91/at91rm9200.h index 802891a9cd81..e8fc0b1c33f4 100644 --- a/include/asm-arm/arch-at91/at91rm9200.h +++ b/include/asm-arm/arch-at91/at91rm9200.h | |||
@@ -93,6 +93,11 @@ | |||
93 | #define AT91_RTC (0xfffffe00 - AT91_BASE_SYS) /* Real-Time Clock */ | 93 | #define AT91_RTC (0xfffffe00 - AT91_BASE_SYS) /* Real-Time Clock */ |
94 | #define AT91_MC (0xffffff00 - AT91_BASE_SYS) /* Memory Controllers */ | 94 | #define AT91_MC (0xffffff00 - AT91_BASE_SYS) /* Memory Controllers */ |
95 | 95 | ||
96 | #define AT91_USART0 AT91RM9200_BASE_US0 | ||
97 | #define AT91_USART1 AT91RM9200_BASE_US1 | ||
98 | #define AT91_USART2 AT91RM9200_BASE_US2 | ||
99 | #define AT91_USART3 AT91RM9200_BASE_US3 | ||
100 | |||
96 | #define AT91_MATRIX 0 /* not supported */ | 101 | #define AT91_MATRIX 0 /* not supported */ |
97 | 102 | ||
98 | /* | 103 | /* |
diff --git a/include/asm-arm/arch-at91/at91sam9260.h b/include/asm-arm/arch-at91/at91sam9260.h index 0427f8698c07..c8934fe34dc5 100644 --- a/include/asm-arm/arch-at91/at91sam9260.h +++ b/include/asm-arm/arch-at91/at91sam9260.h | |||
@@ -99,6 +99,13 @@ | |||
99 | #define AT91_WDT (0xfffffd40 - AT91_BASE_SYS) | 99 | #define AT91_WDT (0xfffffd40 - AT91_BASE_SYS) |
100 | #define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS) | 100 | #define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS) |
101 | 101 | ||
102 | #define AT91_USART0 AT91SAM9260_BASE_US0 | ||
103 | #define AT91_USART1 AT91SAM9260_BASE_US1 | ||
104 | #define AT91_USART2 AT91SAM9260_BASE_US2 | ||
105 | #define AT91_USART3 AT91SAM9260_BASE_US3 | ||
106 | #define AT91_USART4 AT91SAM9260_BASE_US4 | ||
107 | #define AT91_USART5 AT91SAM9260_BASE_US5 | ||
108 | |||
102 | 109 | ||
103 | /* | 110 | /* |
104 | * Internal Memory. | 111 | * Internal Memory. |
diff --git a/include/asm-arm/arch-at91/at91sam9260_matrix.h b/include/asm-arm/arch-at91/at91sam9260_matrix.h index aacb1e976422..a8e9fec6c735 100644 --- a/include/asm-arm/arch-at91/at91sam9260_matrix.h +++ b/include/asm-arm/arch-at91/at91sam9260_matrix.h | |||
@@ -67,7 +67,7 @@ | |||
67 | #define AT91_MATRIX_CS4A (1 << 4) /* Chip Select 4 Assignment */ | 67 | #define AT91_MATRIX_CS4A (1 << 4) /* Chip Select 4 Assignment */ |
68 | #define AT91_MATRIX_CS4A_SMC (0 << 4) | 68 | #define AT91_MATRIX_CS4A_SMC (0 << 4) |
69 | #define AT91_MATRIX_CS4A_SMC_CF1 (1 << 4) | 69 | #define AT91_MATRIX_CS4A_SMC_CF1 (1 << 4) |
70 | #define AT91_MATRIX_CS5A (1 << 5 ) /* Chip Select 5 Assignment */ | 70 | #define AT91_MATRIX_CS5A (1 << 5) /* Chip Select 5 Assignment */ |
71 | #define AT91_MATRIX_CS5A_SMC (0 << 5) | 71 | #define AT91_MATRIX_CS5A_SMC (0 << 5) |
72 | #define AT91_MATRIX_CS5A_SMC_CF2 (1 << 5) | 72 | #define AT91_MATRIX_CS5A_SMC_CF2 (1 << 5) |
73 | #define AT91_MATRIX_DBPUC (1 << 8) /* Data Bus Pull-up Configuration */ | 73 | #define AT91_MATRIX_DBPUC (1 << 8) /* Data Bus Pull-up Configuration */ |
diff --git a/include/asm-arm/arch-at91/at91sam9261.h b/include/asm-arm/arch-at91/at91sam9261.h index 9eb459570330..c7c4778dac49 100644 --- a/include/asm-arm/arch-at91/at91sam9261.h +++ b/include/asm-arm/arch-at91/at91sam9261.h | |||
@@ -84,6 +84,10 @@ | |||
84 | #define AT91_WDT (0xfffffd40 - AT91_BASE_SYS) | 84 | #define AT91_WDT (0xfffffd40 - AT91_BASE_SYS) |
85 | #define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS) | 85 | #define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS) |
86 | 86 | ||
87 | #define AT91_USART0 AT91SAM9261_BASE_US0 | ||
88 | #define AT91_USART1 AT91SAM9261_BASE_US1 | ||
89 | #define AT91_USART2 AT91SAM9261_BASE_US2 | ||
90 | |||
87 | 91 | ||
88 | /* | 92 | /* |
89 | * Internal Memory. | 93 | * Internal Memory. |
diff --git a/include/asm-arm/arch-at91/at91sam9263.h b/include/asm-arm/arch-at91/at91sam9263.h index 115c47ac7ebb..018a647311da 100644 --- a/include/asm-arm/arch-at91/at91sam9263.h +++ b/include/asm-arm/arch-at91/at91sam9263.h | |||
@@ -101,6 +101,10 @@ | |||
101 | #define AT91_RTT1 (0xfffffd50 - AT91_BASE_SYS) | 101 | #define AT91_RTT1 (0xfffffd50 - AT91_BASE_SYS) |
102 | #define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS) | 102 | #define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS) |
103 | 103 | ||
104 | #define AT91_USART0 AT91SAM9263_BASE_US0 | ||
105 | #define AT91_USART1 AT91SAM9263_BASE_US1 | ||
106 | #define AT91_USART2 AT91SAM9263_BASE_US2 | ||
107 | |||
104 | #define AT91_SMC AT91_SMC0 | 108 | #define AT91_SMC AT91_SMC0 |
105 | 109 | ||
106 | /* | 110 | /* |
diff --git a/include/asm-arm/arch-at91/at91sam9263_matrix.h b/include/asm-arm/arch-at91/at91sam9263_matrix.h index 6fc6e4be624e..72f6e668e414 100644 --- a/include/asm-arm/arch-at91/at91sam9263_matrix.h +++ b/include/asm-arm/arch-at91/at91sam9263_matrix.h | |||
@@ -44,7 +44,7 @@ | |||
44 | #define AT91_MATRIX_DEFMSTR_TYPE_NONE (0 << 16) | 44 | #define AT91_MATRIX_DEFMSTR_TYPE_NONE (0 << 16) |
45 | #define AT91_MATRIX_DEFMSTR_TYPE_LAST (1 << 16) | 45 | #define AT91_MATRIX_DEFMSTR_TYPE_LAST (1 << 16) |
46 | #define AT91_MATRIX_DEFMSTR_TYPE_FIXED (2 << 16) | 46 | #define AT91_MATRIX_DEFMSTR_TYPE_FIXED (2 << 16) |
47 | #define AT91_MATRIX_FIXED_DEFMSTR (7 << 18) /* Fixed Index of Default Master */ | 47 | #define AT91_MATRIX_FIXED_DEFMSTR (0xf << 18) /* Fixed Index of Default Master */ |
48 | #define AT91_MATRIX_ARBT (3 << 24) /* Arbitration Type */ | 48 | #define AT91_MATRIX_ARBT (3 << 24) /* Arbitration Type */ |
49 | #define AT91_MATRIX_ARBT_ROUND_ROBIN (0 << 24) | 49 | #define AT91_MATRIX_ARBT_ROUND_ROBIN (0 << 24) |
50 | #define AT91_MATRIX_ARBT_FIXED_PRIORITY (1 << 24) | 50 | #define AT91_MATRIX_ARBT_FIXED_PRIORITY (1 << 24) |
diff --git a/include/asm-arm/arch-at91/at91sam9rl.h b/include/asm-arm/arch-at91/at91sam9rl.h index 8a9708a370c6..16d2832f6c0a 100644 --- a/include/asm-arm/arch-at91/at91sam9rl.h +++ b/include/asm-arm/arch-at91/at91sam9rl.h | |||
@@ -94,6 +94,11 @@ | |||
94 | #define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS) | 94 | #define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS) |
95 | #define AT91_RTC (0xfffffe00 - AT91_BASE_SYS) | 95 | #define AT91_RTC (0xfffffe00 - AT91_BASE_SYS) |
96 | 96 | ||
97 | #define AT91_USART0 AT91SAM9RL_BASE_US0 | ||
98 | #define AT91_USART1 AT91SAM9RL_BASE_US1 | ||
99 | #define AT91_USART2 AT91SAM9RL_BASE_US2 | ||
100 | #define AT91_USART3 AT91SAM9RL_BASE_US3 | ||
101 | |||
97 | 102 | ||
98 | /* | 103 | /* |
99 | * Internal Memory. | 104 | * Internal Memory. |
diff --git a/include/asm-arm/arch-at91/at91sam9rl_matrix.h b/include/asm-arm/arch-at91/at91sam9rl_matrix.h index b15f11b7c08d..84224174e6a1 100644 --- a/include/asm-arm/arch-at91/at91sam9rl_matrix.h +++ b/include/asm-arm/arch-at91/at91sam9rl_matrix.h | |||
@@ -38,7 +38,7 @@ | |||
38 | #define AT91_MATRIX_DEFMSTR_TYPE_NONE (0 << 16) | 38 | #define AT91_MATRIX_DEFMSTR_TYPE_NONE (0 << 16) |
39 | #define AT91_MATRIX_DEFMSTR_TYPE_LAST (1 << 16) | 39 | #define AT91_MATRIX_DEFMSTR_TYPE_LAST (1 << 16) |
40 | #define AT91_MATRIX_DEFMSTR_TYPE_FIXED (2 << 16) | 40 | #define AT91_MATRIX_DEFMSTR_TYPE_FIXED (2 << 16) |
41 | #define AT91_MATRIX_FIXED_DEFMSTR (7 << 18) /* Fixed Index of Default Master */ | 41 | #define AT91_MATRIX_FIXED_DEFMSTR (0xf << 18) /* Fixed Index of Default Master */ |
42 | #define AT91_MATRIX_ARBT (3 << 24) /* Arbitration Type */ | 42 | #define AT91_MATRIX_ARBT (3 << 24) /* Arbitration Type */ |
43 | #define AT91_MATRIX_ARBT_ROUND_ROBIN (0 << 24) | 43 | #define AT91_MATRIX_ARBT_ROUND_ROBIN (0 << 24) |
44 | #define AT91_MATRIX_ARBT_FIXED_PRIORITY (1 << 24) | 44 | #define AT91_MATRIX_ARBT_FIXED_PRIORITY (1 << 24) |
diff --git a/include/asm-arm/arch-at91/board.h b/include/asm-arm/arch-at91/board.h index d96b10fd449f..dc189f01c5b3 100644 --- a/include/asm-arm/arch-at91/board.h +++ b/include/asm-arm/arch-at91/board.h | |||
@@ -33,12 +33,15 @@ | |||
33 | 33 | ||
34 | #include <linux/mtd/partitions.h> | 34 | #include <linux/mtd/partitions.h> |
35 | #include <linux/device.h> | 35 | #include <linux/device.h> |
36 | #include <linux/i2c.h> | ||
37 | #include <linux/leds.h> | ||
36 | #include <linux/spi/spi.h> | 38 | #include <linux/spi/spi.h> |
37 | 39 | ||
38 | /* USB Device */ | 40 | /* USB Device */ |
39 | struct at91_udc_data { | 41 | struct at91_udc_data { |
40 | u8 vbus_pin; /* high == host powering us */ | 42 | u8 vbus_pin; /* high == host powering us */ |
41 | u8 pullup_pin; /* high == D+ pulled up */ | 43 | u8 pullup_pin; /* active == D+ pulled up */ |
44 | u8 pullup_active_low; /* true == pullup_pin is active low */ | ||
42 | }; | 45 | }; |
43 | extern void __init at91_add_device_udc(struct at91_udc_data *data); | 46 | extern void __init at91_add_device_udc(struct at91_udc_data *data); |
44 | 47 | ||
@@ -70,7 +73,7 @@ struct at91_eth_data { | |||
70 | }; | 73 | }; |
71 | extern void __init at91_add_device_eth(struct at91_eth_data *data); | 74 | extern void __init at91_add_device_eth(struct at91_eth_data *data); |
72 | 75 | ||
73 | #if defined(CONFIG_ARCH_AT91SAM9260) || defined(CONFIG_ARCH_AT91SAM9263) | 76 | #if defined(CONFIG_ARCH_AT91SAM9260) || defined(CONFIG_ARCH_AT91SAM9263) || defined(CONFIG_ARCH_AT91CAP9) |
74 | #define eth_platform_data at91_eth_data | 77 | #define eth_platform_data at91_eth_data |
75 | #endif | 78 | #endif |
76 | 79 | ||
@@ -94,19 +97,29 @@ struct at91_nand_data { | |||
94 | extern void __init at91_add_device_nand(struct at91_nand_data *data); | 97 | extern void __init at91_add_device_nand(struct at91_nand_data *data); |
95 | 98 | ||
96 | /* I2C*/ | 99 | /* I2C*/ |
97 | extern void __init at91_add_device_i2c(void); | 100 | extern void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices); |
98 | 101 | ||
99 | /* SPI */ | 102 | /* SPI */ |
100 | extern void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices); | 103 | extern void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices); |
101 | 104 | ||
102 | /* Serial */ | 105 | /* Serial */ |
106 | #define ATMEL_UART_CTS 0x01 | ||
107 | #define ATMEL_UART_RTS 0x02 | ||
108 | #define ATMEL_UART_DSR 0x04 | ||
109 | #define ATMEL_UART_DTR 0x08 | ||
110 | #define ATMEL_UART_DCD 0x10 | ||
111 | #define ATMEL_UART_RI 0x20 | ||
112 | |||
113 | extern void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins); | ||
114 | extern void __init at91_set_serial_console(unsigned portnr); | ||
115 | |||
103 | struct at91_uart_config { | 116 | struct at91_uart_config { |
104 | unsigned short console_tty; /* tty number of serial console */ | 117 | unsigned short console_tty; /* tty number of serial console */ |
105 | unsigned short nr_tty; /* number of serial tty's */ | 118 | unsigned short nr_tty; /* number of serial tty's */ |
106 | short tty_map[]; /* map UART to tty number */ | 119 | short tty_map[]; /* map UART to tty number */ |
107 | }; | 120 | }; |
108 | extern struct platform_device *atmel_default_console_device; | 121 | extern struct platform_device *atmel_default_console_device; |
109 | extern void __init at91_init_serial(struct at91_uart_config *config); | 122 | extern void __init __deprecated at91_init_serial(struct at91_uart_config *config); |
110 | 123 | ||
111 | struct atmel_uart_data { | 124 | struct atmel_uart_data { |
112 | short use_dma_tx; /* use transmit DMA? */ | 125 | short use_dma_tx; /* use transmit DMA? */ |
@@ -115,6 +128,23 @@ struct atmel_uart_data { | |||
115 | }; | 128 | }; |
116 | extern void __init at91_add_device_serial(void); | 129 | extern void __init at91_add_device_serial(void); |
117 | 130 | ||
131 | /* | ||
132 | * SSC -- accessed through ssc_request(id). Drivers don't bind to SSC | ||
133 | * platform devices. Their SSC ID is part of their configuration data, | ||
134 | * along with information about which SSC signals they should use. | ||
135 | */ | ||
136 | #define ATMEL_SSC_TK 0x01 | ||
137 | #define ATMEL_SSC_TF 0x02 | ||
138 | #define ATMEL_SSC_TD 0x04 | ||
139 | #define ATMEL_SSC_TX (ATMEL_SSC_TK | ATMEL_SSC_TF | ATMEL_SSC_TD) | ||
140 | |||
141 | #define ATMEL_SSC_RK 0x10 | ||
142 | #define ATMEL_SSC_RF 0x20 | ||
143 | #define ATMEL_SSC_RD 0x40 | ||
144 | #define ATMEL_SSC_RX (ATMEL_SSC_RK | ATMEL_SSC_RF | ATMEL_SSC_RD) | ||
145 | |||
146 | extern void __init at91_add_device_ssc(unsigned id, unsigned pins); | ||
147 | |||
118 | /* LCD Controller */ | 148 | /* LCD Controller */ |
119 | struct atmel_lcdfb_info; | 149 | struct atmel_lcdfb_info; |
120 | extern void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data); | 150 | extern void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data); |
@@ -125,9 +155,14 @@ struct atmel_ac97_data { | |||
125 | }; | 155 | }; |
126 | extern void __init at91_add_device_ac97(struct atmel_ac97_data *data); | 156 | extern void __init at91_add_device_ac97(struct atmel_ac97_data *data); |
127 | 157 | ||
158 | /* ISI */ | ||
159 | extern void __init at91_add_device_isi(void); | ||
160 | |||
128 | /* LEDs */ | 161 | /* LEDs */ |
129 | extern u8 at91_leds_cpu; | ||
130 | extern u8 at91_leds_timer; | ||
131 | extern void __init at91_init_leds(u8 cpu_led, u8 timer_led); | 162 | extern void __init at91_init_leds(u8 cpu_led, u8 timer_led); |
163 | extern void __init at91_gpio_leds(struct gpio_led *leds, int nr); | ||
164 | |||
165 | /* FIXME: this needs a better location, but gets stuff building again */ | ||
166 | extern int at91_suspend_entering_slow_clock(void); | ||
132 | 167 | ||
133 | #endif | 168 | #endif |
diff --git a/include/asm-arm/arch-at91/cpu.h b/include/asm-arm/arch-at91/cpu.h index 080cbb401a87..7145166826a2 100644 --- a/include/asm-arm/arch-at91/cpu.h +++ b/include/asm-arm/arch-at91/cpu.h | |||
@@ -21,13 +21,13 @@ | |||
21 | #define ARCH_ID_AT91SAM9260 0x019803a0 | 21 | #define ARCH_ID_AT91SAM9260 0x019803a0 |
22 | #define ARCH_ID_AT91SAM9261 0x019703a0 | 22 | #define ARCH_ID_AT91SAM9261 0x019703a0 |
23 | #define ARCH_ID_AT91SAM9263 0x019607a0 | 23 | #define ARCH_ID_AT91SAM9263 0x019607a0 |
24 | #define ARCH_ID_AT91SAM9RL64 0x019b03a0 | ||
25 | #define ARCH_ID_AT91CAP9 0x039A03A0 | ||
24 | 26 | ||
25 | #define ARCH_ID_AT91SAM9XE128 0x329973a0 | 27 | #define ARCH_ID_AT91SAM9XE128 0x329973a0 |
26 | #define ARCH_ID_AT91SAM9XE256 0x329a93a0 | 28 | #define ARCH_ID_AT91SAM9XE256 0x329a93a0 |
27 | #define ARCH_ID_AT91SAM9XE512 0x329aa3a0 | 29 | #define ARCH_ID_AT91SAM9XE512 0x329aa3a0 |
28 | 30 | ||
29 | #define ARCH_ID_AT91SAM9RL64 0x019b03a0 | ||
30 | |||
31 | #define ARCH_ID_AT91M40800 0x14080044 | 31 | #define ARCH_ID_AT91M40800 0x14080044 |
32 | #define ARCH_ID_AT91R40807 0x44080746 | 32 | #define ARCH_ID_AT91R40807 0x44080746 |
33 | #define ARCH_ID_AT91M40807 0x14080745 | 33 | #define ARCH_ID_AT91M40807 0x14080745 |
@@ -81,6 +81,11 @@ static inline unsigned long at91_arch_identify(void) | |||
81 | #define cpu_is_at91sam9rl() (0) | 81 | #define cpu_is_at91sam9rl() (0) |
82 | #endif | 82 | #endif |
83 | 83 | ||
84 | #ifdef CONFIG_ARCH_AT91CAP9 | ||
85 | #define cpu_is_at91cap9() (at91_cpu_identify() == ARCH_ID_AT91CAP9) | ||
86 | #else | ||
87 | #define cpu_is_at91cap9() (0) | ||
88 | #endif | ||
84 | 89 | ||
85 | /* | 90 | /* |
86 | * Since this is ARM, we will never run on any AVR32 CPU. But these | 91 | * Since this is ARM, we will never run on any AVR32 CPU. But these |
diff --git a/include/asm-arm/arch-at91/entry-macro.S b/include/asm-arm/arch-at91/entry-macro.S index cc1d850a0788..1005eee6219b 100644 --- a/include/asm-arm/arch-at91/entry-macro.S +++ b/include/asm-arm/arch-at91/entry-macro.S | |||
@@ -17,13 +17,13 @@ | |||
17 | .endm | 17 | .endm |
18 | 18 | ||
19 | .macro get_irqnr_preamble, base, tmp | 19 | .macro get_irqnr_preamble, base, tmp |
20 | ldr \base, =(AT91_VA_BASE_SYS + AT91_AIC) @ base virtual address of AIC peripheral | ||
20 | .endm | 21 | .endm |
21 | 22 | ||
22 | .macro arch_ret_to_user, tmp1, tmp2 | 23 | .macro arch_ret_to_user, tmp1, tmp2 |
23 | .endm | 24 | .endm |
24 | 25 | ||
25 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp | 26 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp |
26 | ldr \base, =(AT91_VA_BASE_SYS + AT91_AIC) @ base virtual address of AIC peripheral | ||
27 | ldr \irqnr, [\base, #(AT91_AIC_IVR - AT91_AIC)] @ read IRQ vector register: de-asserts nIRQ to processor (and clears interrupt) | 27 | ldr \irqnr, [\base, #(AT91_AIC_IVR - AT91_AIC)] @ read IRQ vector register: de-asserts nIRQ to processor (and clears interrupt) |
28 | ldr \irqstat, [\base, #(AT91_AIC_ISR - AT91_AIC)] @ read interrupt source number | 28 | ldr \irqstat, [\base, #(AT91_AIC_ISR - AT91_AIC)] @ read interrupt source number |
29 | teq \irqstat, #0 @ ISR is 0 when no current interrupt, or spurious interrupt | 29 | teq \irqstat, #0 @ ISR is 0 when no current interrupt, or spurious interrupt |
diff --git a/include/asm-arm/arch-at91/hardware.h b/include/asm-arm/arch-at91/hardware.h index 8f1cdd38a969..2c826d8247a3 100644 --- a/include/asm-arm/arch-at91/hardware.h +++ b/include/asm-arm/arch-at91/hardware.h | |||
@@ -26,6 +26,8 @@ | |||
26 | #include <asm/arch/at91sam9263.h> | 26 | #include <asm/arch/at91sam9263.h> |
27 | #elif defined(CONFIG_ARCH_AT91SAM9RL) | 27 | #elif defined(CONFIG_ARCH_AT91SAM9RL) |
28 | #include <asm/arch/at91sam9rl.h> | 28 | #include <asm/arch/at91sam9rl.h> |
29 | #elif defined(CONFIG_ARCH_AT91CAP9) | ||
30 | #include <asm/arch/at91cap9.h> | ||
29 | #elif defined(CONFIG_ARCH_AT91X40) | 31 | #elif defined(CONFIG_ARCH_AT91X40) |
30 | #include <asm/arch/at91x40.h> | 32 | #include <asm/arch/at91x40.h> |
31 | #else | 33 | #else |
diff --git a/include/asm-arm/arch-at91/timex.h b/include/asm-arm/arch-at91/timex.h index a310698fb4da..f1933b0fa43f 100644 --- a/include/asm-arm/arch-at91/timex.h +++ b/include/asm-arm/arch-at91/timex.h | |||
@@ -42,6 +42,11 @@ | |||
42 | #define AT91SAM9_MASTER_CLOCK 100000000 | 42 | #define AT91SAM9_MASTER_CLOCK 100000000 |
43 | #define CLOCK_TICK_RATE (AT91SAM9_MASTER_CLOCK/16) | 43 | #define CLOCK_TICK_RATE (AT91SAM9_MASTER_CLOCK/16) |
44 | 44 | ||
45 | #elif defined(CONFIG_ARCH_AT91CAP9) | ||
46 | |||
47 | #define AT91CAP9_MASTER_CLOCK 100000000 | ||
48 | #define CLOCK_TICK_RATE (AT91CAP9_MASTER_CLOCK/16) | ||
49 | |||
45 | #elif defined(CONFIG_ARCH_AT91X40) | 50 | #elif defined(CONFIG_ARCH_AT91X40) |
46 | 51 | ||
47 | #define AT91X40_MASTER_CLOCK 40000000 | 52 | #define AT91X40_MASTER_CLOCK 40000000 |
diff --git a/include/asm-arm/arch-at91/uncompress.h b/include/asm-arm/arch-at91/uncompress.h index 272a7e0dc6cf..f5636a8f6132 100644 --- a/include/asm-arm/arch-at91/uncompress.h +++ b/include/asm-arm/arch-at91/uncompress.h | |||
@@ -22,7 +22,23 @@ | |||
22 | #define __ASM_ARCH_UNCOMPRESS_H | 22 | #define __ASM_ARCH_UNCOMPRESS_H |
23 | 23 | ||
24 | #include <asm/io.h> | 24 | #include <asm/io.h> |
25 | #include <asm/arch/at91_dbgu.h> | 25 | #include <linux/atmel_serial.h> |
26 | |||
27 | #if defined(CONFIG_AT91_EARLY_DBGU) | ||
28 | #define UART_OFFSET (AT91_DBGU + AT91_BASE_SYS) | ||
29 | #elif defined(CONFIG_AT91_EARLY_USART0) | ||
30 | #define UART_OFFSET AT91_USART0 | ||
31 | #elif defined(CONFIG_AT91_EARLY_USART1) | ||
32 | #define UART_OFFSET AT91_USART1 | ||
33 | #elif defined(CONFIG_AT91_EARLY_USART2) | ||
34 | #define UART_OFFSET AT91_USART2 | ||
35 | #elif defined(CONFIG_AT91_EARLY_USART3) | ||
36 | #define UART_OFFSET AT91_USART3 | ||
37 | #elif defined(CONFIG_AT91_EARLY_USART4) | ||
38 | #define UART_OFFSET AT91_USART4 | ||
39 | #elif defined(CONFIG_AT91_EARLY_USART5) | ||
40 | #define UART_OFFSET AT91_USART5 | ||
41 | #endif | ||
26 | 42 | ||
27 | /* | 43 | /* |
28 | * The following code assumes the serial port has already been | 44 | * The following code assumes the serial port has already been |
@@ -33,22 +49,22 @@ | |||
33 | */ | 49 | */ |
34 | static void putc(int c) | 50 | static void putc(int c) |
35 | { | 51 | { |
36 | #ifdef AT91_DBGU | 52 | #ifdef UART_OFFSET |
37 | void __iomem *sys = (void __iomem *) AT91_BASE_SYS; /* physical address */ | 53 | void __iomem *sys = (void __iomem *) UART_OFFSET; /* physical address */ |
38 | 54 | ||
39 | while (!(__raw_readl(sys + AT91_DBGU_SR) & AT91_DBGU_TXRDY)) | 55 | while (!(__raw_readl(sys + ATMEL_US_CSR) & ATMEL_US_TXRDY)) |
40 | barrier(); | 56 | barrier(); |
41 | __raw_writel(c, sys + AT91_DBGU_THR); | 57 | __raw_writel(c, sys + ATMEL_US_THR); |
42 | #endif | 58 | #endif |
43 | } | 59 | } |
44 | 60 | ||
45 | static inline void flush(void) | 61 | static inline void flush(void) |
46 | { | 62 | { |
47 | #ifdef AT91_DBGU | 63 | #ifdef UART_OFFSET |
48 | void __iomem *sys = (void __iomem *) AT91_BASE_SYS; /* physical address */ | 64 | void __iomem *sys = (void __iomem *) UART_OFFSET; /* physical address */ |
49 | 65 | ||
50 | /* wait for transmission to complete */ | 66 | /* wait for transmission to complete */ |
51 | while (!(__raw_readl(sys + AT91_DBGU_SR) & AT91_DBGU_TXEMPTY)) | 67 | while (!(__raw_readl(sys + ATMEL_US_CSR) & ATMEL_US_TXEMPTY)) |
52 | barrier(); | 68 | barrier(); |
53 | #endif | 69 | #endif |
54 | } | 70 | } |
diff --git a/include/asm-arm/arch-davinci/gpio.h b/include/asm-arm/arch-davinci/gpio.h index ea24a0e0bfd6..ff8de30b2fb3 100644 --- a/include/asm-arm/arch-davinci/gpio.h +++ b/include/asm-arm/arch-davinci/gpio.h | |||
@@ -13,6 +13,9 @@ | |||
13 | #ifndef __DAVINCI_GPIO_H | 13 | #ifndef __DAVINCI_GPIO_H |
14 | #define __DAVINCI_GPIO_H | 14 | #define __DAVINCI_GPIO_H |
15 | 15 | ||
16 | #include <linux/io.h> | ||
17 | #include <asm/hardware.h> | ||
18 | |||
16 | /* | 19 | /* |
17 | * basic gpio routines | 20 | * basic gpio routines |
18 | * | 21 | * |
diff --git a/include/asm-arm/arch-ep93xx/gpio.h b/include/asm-arm/arch-ep93xx/gpio.h index 1ee14a14cba0..9b1864bbd9a8 100644 --- a/include/asm-arm/arch-ep93xx/gpio.h +++ b/include/asm-arm/arch-ep93xx/gpio.h | |||
@@ -5,16 +5,6 @@ | |||
5 | #ifndef __ASM_ARCH_GPIO_H | 5 | #ifndef __ASM_ARCH_GPIO_H |
6 | #define __ASM_ARCH_GPIO_H | 6 | #define __ASM_ARCH_GPIO_H |
7 | 7 | ||
8 | #define GPIO_IN 0 | ||
9 | #define GPIO_OUT 1 | ||
10 | |||
11 | #define EP93XX_GPIO_LOW 0 | ||
12 | #define EP93XX_GPIO_HIGH 1 | ||
13 | |||
14 | extern void gpio_line_config(int line, int direction); | ||
15 | extern int gpio_line_get(int line); | ||
16 | extern void gpio_line_set(int line, int value); | ||
17 | |||
18 | /* GPIO port A. */ | 8 | /* GPIO port A. */ |
19 | #define EP93XX_GPIO_LINE_A(x) ((x) + 0) | 9 | #define EP93XX_GPIO_LINE_A(x) ((x) + 0) |
20 | #define EP93XX_GPIO_LINE_EGPIO0 EP93XX_GPIO_LINE_A(0) | 10 | #define EP93XX_GPIO_LINE_EGPIO0 EP93XX_GPIO_LINE_A(0) |
@@ -38,7 +28,7 @@ extern void gpio_line_set(int line, int value); | |||
38 | #define EP93XX_GPIO_LINE_EGPIO15 EP93XX_GPIO_LINE_B(7) | 28 | #define EP93XX_GPIO_LINE_EGPIO15 EP93XX_GPIO_LINE_B(7) |
39 | 29 | ||
40 | /* GPIO port C. */ | 30 | /* GPIO port C. */ |
41 | #define EP93XX_GPIO_LINE_C(x) ((x) + 16) | 31 | #define EP93XX_GPIO_LINE_C(x) ((x) + 40) |
42 | #define EP93XX_GPIO_LINE_ROW0 EP93XX_GPIO_LINE_C(0) | 32 | #define EP93XX_GPIO_LINE_ROW0 EP93XX_GPIO_LINE_C(0) |
43 | #define EP93XX_GPIO_LINE_ROW1 EP93XX_GPIO_LINE_C(1) | 33 | #define EP93XX_GPIO_LINE_ROW1 EP93XX_GPIO_LINE_C(1) |
44 | #define EP93XX_GPIO_LINE_ROW2 EP93XX_GPIO_LINE_C(2) | 34 | #define EP93XX_GPIO_LINE_ROW2 EP93XX_GPIO_LINE_C(2) |
@@ -71,7 +61,7 @@ extern void gpio_line_set(int line, int value); | |||
71 | #define EP93XX_GPIO_LINE_IDEDA2 EP93XX_GPIO_LINE_E(7) | 61 | #define EP93XX_GPIO_LINE_IDEDA2 EP93XX_GPIO_LINE_E(7) |
72 | 62 | ||
73 | /* GPIO port F. */ | 63 | /* GPIO port F. */ |
74 | #define EP93XX_GPIO_LINE_F(x) ((x) + 40) | 64 | #define EP93XX_GPIO_LINE_F(x) ((x) + 16) |
75 | #define EP93XX_GPIO_LINE_WP EP93XX_GPIO_LINE_F(0) | 65 | #define EP93XX_GPIO_LINE_WP EP93XX_GPIO_LINE_F(0) |
76 | #define EP93XX_GPIO_LINE_MCCD1 EP93XX_GPIO_LINE_F(1) | 66 | #define EP93XX_GPIO_LINE_MCCD1 EP93XX_GPIO_LINE_F(1) |
77 | #define EP93XX_GPIO_LINE_MCCD2 EP93XX_GPIO_LINE_F(2) | 67 | #define EP93XX_GPIO_LINE_MCCD2 EP93XX_GPIO_LINE_F(2) |
@@ -103,5 +93,49 @@ extern void gpio_line_set(int line, int value); | |||
103 | #define EP93XX_GPIO_LINE_DD6 EP93XX_GPIO_LINE_H(6) | 93 | #define EP93XX_GPIO_LINE_DD6 EP93XX_GPIO_LINE_H(6) |
104 | #define EP93XX_GPIO_LINE_DD7 EP93XX_GPIO_LINE_H(7) | 94 | #define EP93XX_GPIO_LINE_DD7 EP93XX_GPIO_LINE_H(7) |
105 | 95 | ||
96 | /* maximum value for gpio line identifiers */ | ||
97 | #define EP93XX_GPIO_LINE_MAX EP93XX_GPIO_LINE_H(7) | ||
98 | |||
99 | /* maximum value for irq capable line identifiers */ | ||
100 | #define EP93XX_GPIO_LINE_MAX_IRQ EP93XX_GPIO_LINE_F(7) | ||
101 | |||
102 | /* new generic GPIO API - see Documentation/gpio.txt */ | ||
103 | |||
104 | static inline int gpio_request(unsigned gpio, const char *label) | ||
105 | { | ||
106 | if (gpio > EP93XX_GPIO_LINE_MAX) | ||
107 | return -EINVAL; | ||
108 | return 0; | ||
109 | } | ||
110 | |||
111 | static inline void gpio_free(unsigned gpio) | ||
112 | { | ||
113 | } | ||
114 | |||
115 | int gpio_direction_input(unsigned gpio); | ||
116 | int gpio_direction_output(unsigned gpio, int value); | ||
117 | int gpio_get_value(unsigned gpio); | ||
118 | void gpio_set_value(unsigned gpio, int value); | ||
119 | |||
120 | #include <asm-generic/gpio.h> /* cansleep wrappers */ | ||
121 | |||
122 | /* | ||
123 | * Map GPIO A0..A7 (0..7) to irq 64..71, | ||
124 | * B0..B7 (7..15) to irq 72..79, and | ||
125 | * F0..F7 (16..24) to irq 80..87. | ||
126 | */ | ||
127 | |||
128 | static inline int gpio_to_irq(unsigned gpio) | ||
129 | { | ||
130 | if (gpio <= EP93XX_GPIO_LINE_MAX_IRQ) | ||
131 | return 64 + gpio; | ||
132 | |||
133 | return -EINVAL; | ||
134 | } | ||
135 | |||
136 | static inline int irq_to_gpio(unsigned irq) | ||
137 | { | ||
138 | return irq - gpio_to_irq(0); | ||
139 | } | ||
106 | 140 | ||
107 | #endif | 141 | #endif |
diff --git a/include/asm-arm/arch-ep93xx/irqs.h b/include/asm-arm/arch-ep93xx/irqs.h index 2a8c63638c5e..53d4a68bfc88 100644 --- a/include/asm-arm/arch-ep93xx/irqs.h +++ b/include/asm-arm/arch-ep93xx/irqs.h | |||
@@ -67,12 +67,6 @@ | |||
67 | #define IRQ_EP93XX_SAI 60 | 67 | #define IRQ_EP93XX_SAI 60 |
68 | #define EP93XX_VIC2_VALID_IRQ_MASK 0x1fffffff | 68 | #define EP93XX_VIC2_VALID_IRQ_MASK 0x1fffffff |
69 | 69 | ||
70 | /* | ||
71 | * Map GPIO A0..A7 to irq 64..71, B0..B7 to 72..79, and | ||
72 | * F0..F7 to 80..87. | ||
73 | */ | ||
74 | #define IRQ_EP93XX_GPIO(x) (64 + (((x) + (((x) >> 2) & 8)) & 0x1f)) | ||
75 | |||
76 | #define NR_EP93XX_IRQS (64 + 24) | 70 | #define NR_EP93XX_IRQS (64 + 24) |
77 | 71 | ||
78 | #define EP93XX_BOARD_IRQ(x) (NR_EP93XX_IRQS + (x)) | 72 | #define EP93XX_BOARD_IRQ(x) (NR_EP93XX_IRQS + (x)) |
diff --git a/include/asm-arm/arch-iop13xx/adma.h b/include/asm-arm/arch-iop13xx/adma.h index 04006c1c5fd7..efd9a5eb1008 100644 --- a/include/asm-arm/arch-iop13xx/adma.h +++ b/include/asm-arm/arch-iop13xx/adma.h | |||
@@ -247,7 +247,7 @@ static inline u32 iop_desc_get_src_count(struct iop_adma_desc_slot *desc, | |||
247 | } | 247 | } |
248 | 248 | ||
249 | static inline void | 249 | static inline void |
250 | iop_desc_init_memcpy(struct iop_adma_desc_slot *desc, int int_en) | 250 | iop_desc_init_memcpy(struct iop_adma_desc_slot *desc, unsigned long flags) |
251 | { | 251 | { |
252 | struct iop13xx_adma_desc_hw *hw_desc = desc->hw_desc; | 252 | struct iop13xx_adma_desc_hw *hw_desc = desc->hw_desc; |
253 | union { | 253 | union { |
@@ -257,13 +257,13 @@ iop_desc_init_memcpy(struct iop_adma_desc_slot *desc, int int_en) | |||
257 | 257 | ||
258 | u_desc_ctrl.value = 0; | 258 | u_desc_ctrl.value = 0; |
259 | u_desc_ctrl.field.xfer_dir = 3; /* local to internal bus */ | 259 | u_desc_ctrl.field.xfer_dir = 3; /* local to internal bus */ |
260 | u_desc_ctrl.field.int_en = int_en; | 260 | u_desc_ctrl.field.int_en = flags & DMA_PREP_INTERRUPT; |
261 | hw_desc->desc_ctrl = u_desc_ctrl.value; | 261 | hw_desc->desc_ctrl = u_desc_ctrl.value; |
262 | hw_desc->crc_addr = 0; | 262 | hw_desc->crc_addr = 0; |
263 | } | 263 | } |
264 | 264 | ||
265 | static inline void | 265 | static inline void |
266 | iop_desc_init_memset(struct iop_adma_desc_slot *desc, int int_en) | 266 | iop_desc_init_memset(struct iop_adma_desc_slot *desc, unsigned long flags) |
267 | { | 267 | { |
268 | struct iop13xx_adma_desc_hw *hw_desc = desc->hw_desc; | 268 | struct iop13xx_adma_desc_hw *hw_desc = desc->hw_desc; |
269 | union { | 269 | union { |
@@ -274,14 +274,15 @@ iop_desc_init_memset(struct iop_adma_desc_slot *desc, int int_en) | |||
274 | u_desc_ctrl.value = 0; | 274 | u_desc_ctrl.value = 0; |
275 | u_desc_ctrl.field.xfer_dir = 3; /* local to internal bus */ | 275 | u_desc_ctrl.field.xfer_dir = 3; /* local to internal bus */ |
276 | u_desc_ctrl.field.block_fill_en = 1; | 276 | u_desc_ctrl.field.block_fill_en = 1; |
277 | u_desc_ctrl.field.int_en = int_en; | 277 | u_desc_ctrl.field.int_en = flags & DMA_PREP_INTERRUPT; |
278 | hw_desc->desc_ctrl = u_desc_ctrl.value; | 278 | hw_desc->desc_ctrl = u_desc_ctrl.value; |
279 | hw_desc->crc_addr = 0; | 279 | hw_desc->crc_addr = 0; |
280 | } | 280 | } |
281 | 281 | ||
282 | /* to do: support buffers larger than ADMA_MAX_BYTE_COUNT */ | 282 | /* to do: support buffers larger than ADMA_MAX_BYTE_COUNT */ |
283 | static inline void | 283 | static inline void |
284 | iop_desc_init_xor(struct iop_adma_desc_slot *desc, int src_cnt, int int_en) | 284 | iop_desc_init_xor(struct iop_adma_desc_slot *desc, int src_cnt, |
285 | unsigned long flags) | ||
285 | { | 286 | { |
286 | struct iop13xx_adma_desc_hw *hw_desc = desc->hw_desc; | 287 | struct iop13xx_adma_desc_hw *hw_desc = desc->hw_desc; |
287 | union { | 288 | union { |
@@ -292,7 +293,7 @@ iop_desc_init_xor(struct iop_adma_desc_slot *desc, int src_cnt, int int_en) | |||
292 | u_desc_ctrl.value = 0; | 293 | u_desc_ctrl.value = 0; |
293 | u_desc_ctrl.field.src_select = src_cnt - 1; | 294 | u_desc_ctrl.field.src_select = src_cnt - 1; |
294 | u_desc_ctrl.field.xfer_dir = 3; /* local to internal bus */ | 295 | u_desc_ctrl.field.xfer_dir = 3; /* local to internal bus */ |
295 | u_desc_ctrl.field.int_en = int_en; | 296 | u_desc_ctrl.field.int_en = flags & DMA_PREP_INTERRUPT; |
296 | hw_desc->desc_ctrl = u_desc_ctrl.value; | 297 | hw_desc->desc_ctrl = u_desc_ctrl.value; |
297 | hw_desc->crc_addr = 0; | 298 | hw_desc->crc_addr = 0; |
298 | 299 | ||
@@ -301,7 +302,8 @@ iop_desc_init_xor(struct iop_adma_desc_slot *desc, int src_cnt, int int_en) | |||
301 | 302 | ||
302 | /* to do: support buffers larger than ADMA_MAX_BYTE_COUNT */ | 303 | /* to do: support buffers larger than ADMA_MAX_BYTE_COUNT */ |
303 | static inline int | 304 | static inline int |
304 | iop_desc_init_zero_sum(struct iop_adma_desc_slot *desc, int src_cnt, int int_en) | 305 | iop_desc_init_zero_sum(struct iop_adma_desc_slot *desc, int src_cnt, |
306 | unsigned long flags) | ||
305 | { | 307 | { |
306 | struct iop13xx_adma_desc_hw *hw_desc = desc->hw_desc; | 308 | struct iop13xx_adma_desc_hw *hw_desc = desc->hw_desc; |
307 | union { | 309 | union { |
@@ -314,7 +316,7 @@ iop_desc_init_zero_sum(struct iop_adma_desc_slot *desc, int src_cnt, int int_en) | |||
314 | u_desc_ctrl.field.xfer_dir = 3; /* local to internal bus */ | 316 | u_desc_ctrl.field.xfer_dir = 3; /* local to internal bus */ |
315 | u_desc_ctrl.field.zero_result = 1; | 317 | u_desc_ctrl.field.zero_result = 1; |
316 | u_desc_ctrl.field.status_write_back_en = 1; | 318 | u_desc_ctrl.field.status_write_back_en = 1; |
317 | u_desc_ctrl.field.int_en = int_en; | 319 | u_desc_ctrl.field.int_en = flags & DMA_PREP_INTERRUPT; |
318 | hw_desc->desc_ctrl = u_desc_ctrl.value; | 320 | hw_desc->desc_ctrl = u_desc_ctrl.value; |
319 | hw_desc->crc_addr = 0; | 321 | hw_desc->crc_addr = 0; |
320 | 322 | ||
diff --git a/include/asm-arm/arch-ixp23xx/irqs.h b/include/asm-arm/arch-ixp23xx/irqs.h index e69639585721..27c580898958 100644 --- a/include/asm-arm/arch-ixp23xx/irqs.h +++ b/include/asm-arm/arch-ixp23xx/irqs.h | |||
@@ -153,7 +153,7 @@ | |||
153 | */ | 153 | */ |
154 | #define NR_IXP23XX_MACH_IRQS 32 | 154 | #define NR_IXP23XX_MACH_IRQS 32 |
155 | 155 | ||
156 | #define NR_IRQS NR_IXP23XX_IRQS + NR_IXP23XX_MACH_IRQS | 156 | #define NR_IRQS (NR_IXP23XX_IRQS + NR_IXP23XX_MACH_IRQS) |
157 | 157 | ||
158 | #define IXP23XX_MACH_IRQ(irq) (NR_IXP23XX_IRQ + (irq)) | 158 | #define IXP23XX_MACH_IRQ(irq) (NR_IXP23XX_IRQ + (irq)) |
159 | 159 | ||
diff --git a/include/asm-arm/arch-ixp4xx/cpu.h b/include/asm-arm/arch-ixp4xx/cpu.h index d2523b326c6c..2fa3d6b8dbb8 100644 --- a/include/asm-arm/arch-ixp4xx/cpu.h +++ b/include/asm-arm/arch-ixp4xx/cpu.h | |||
@@ -28,4 +28,19 @@ extern unsigned int processor_id; | |||
28 | #define cpu_is_ixp46x() ((processor_id & IXP4XX_PROCESSOR_ID_MASK) == \ | 28 | #define cpu_is_ixp46x() ((processor_id & IXP4XX_PROCESSOR_ID_MASK) == \ |
29 | IXP465_PROCESSOR_ID_VALUE) | 29 | IXP465_PROCESSOR_ID_VALUE) |
30 | 30 | ||
31 | static inline u32 ixp4xx_read_feature_bits(void) | ||
32 | { | ||
33 | unsigned int val = ~*IXP4XX_EXP_CFG2; | ||
34 | val &= ~IXP4XX_FEATURE_RESERVED; | ||
35 | if (!cpu_is_ixp46x()) | ||
36 | val &= ~IXP4XX_FEATURE_IXP46X_ONLY; | ||
37 | |||
38 | return val; | ||
39 | } | ||
40 | |||
41 | static inline void ixp4xx_write_feature_bits(u32 value) | ||
42 | { | ||
43 | *IXP4XX_EXP_CFG2 = ~value; | ||
44 | } | ||
45 | |||
31 | #endif /* _ASM_ARCH_CPU_H */ | 46 | #endif /* _ASM_ARCH_CPU_H */ |
diff --git a/include/asm-arm/arch-ixp4xx/dsmg600.h b/include/asm-arm/arch-ixp4xx/dsmg600.h index a19605ad240d..b7673e171abe 100644 --- a/include/asm-arm/arch-ixp4xx/dsmg600.h +++ b/include/asm-arm/arch-ixp4xx/dsmg600.h | |||
@@ -40,18 +40,13 @@ | |||
40 | /* Buttons */ | 40 | /* Buttons */ |
41 | 41 | ||
42 | #define DSMG600_PB_GPIO 15 /* power button */ | 42 | #define DSMG600_PB_GPIO 15 /* power button */ |
43 | #define DSMG600_PB_BM (1L << DSMG600_PB_GPIO) | ||
44 | |||
45 | #define DSMG600_RB_GPIO 3 /* reset button */ | 43 | #define DSMG600_RB_GPIO 3 /* reset button */ |
46 | 44 | ||
47 | #define DSMG600_RB_IRQ IRQ_IXP4XX_GPIO3 | 45 | /* Power control */ |
48 | 46 | ||
49 | #define DSMG600_PO_GPIO 2 /* power off */ | 47 | #define DSMG600_PO_GPIO 2 /* power off */ |
50 | 48 | ||
51 | /* LEDs */ | 49 | /* LEDs */ |
52 | 50 | ||
53 | #define DSMG600_LED_PWR_GPIO 0 | 51 | #define DSMG600_LED_PWR_GPIO 0 |
54 | #define DSMG600_LED_PWR_BM (1L << DSMG600_LED_PWR_GPIO) | ||
55 | |||
56 | #define DSMG600_LED_WLAN_GPIO 14 | 52 | #define DSMG600_LED_WLAN_GPIO 14 |
57 | #define DSMG600_LED_WLAN_BM (1L << DSMG600_LED_WLAN_GPIO) | ||
diff --git a/include/asm-arm/arch-ixp4xx/hardware.h b/include/asm-arm/arch-ixp4xx/hardware.h index 297ceda08b61..73e8dc36f6a4 100644 --- a/include/asm-arm/arch-ixp4xx/hardware.h +++ b/include/asm-arm/arch-ixp4xx/hardware.h | |||
@@ -27,13 +27,13 @@ | |||
27 | 27 | ||
28 | #define pcibios_assign_all_busses() 1 | 28 | #define pcibios_assign_all_busses() 1 |
29 | 29 | ||
30 | /* Register locations and bits */ | ||
31 | #include "ixp4xx-regs.h" | ||
32 | |||
30 | #ifndef __ASSEMBLER__ | 33 | #ifndef __ASSEMBLER__ |
31 | #include <asm/arch/cpu.h> | 34 | #include <asm/arch/cpu.h> |
32 | #endif | 35 | #endif |
33 | 36 | ||
34 | /* Register locations and bits */ | ||
35 | #include "ixp4xx-regs.h" | ||
36 | |||
37 | /* Platform helper functions and definitions */ | 37 | /* Platform helper functions and definitions */ |
38 | #include "platform.h" | 38 | #include "platform.h" |
39 | 39 | ||
diff --git a/include/asm-arm/arch-ixp4xx/io.h b/include/asm-arm/arch-ixp4xx/io.h index eeeea90cd5a9..de181ce958db 100644 --- a/include/asm-arm/arch-ixp4xx/io.h +++ b/include/asm-arm/arch-ixp4xx/io.h | |||
@@ -13,6 +13,8 @@ | |||
13 | #ifndef __ASM_ARM_ARCH_IO_H | 13 | #ifndef __ASM_ARM_ARCH_IO_H |
14 | #define __ASM_ARM_ARCH_IO_H | 14 | #define __ASM_ARM_ARCH_IO_H |
15 | 15 | ||
16 | #include <linux/bitops.h> | ||
17 | |||
16 | #include <asm/hardware.h> | 18 | #include <asm/hardware.h> |
17 | 19 | ||
18 | #define IO_SPACE_LIMIT 0xffff0000 | 20 | #define IO_SPACE_LIMIT 0xffff0000 |
@@ -61,13 +63,13 @@ __ixp4xx_ioremap(unsigned long addr, size_t size, unsigned int mtype) | |||
61 | if((addr < PCIBIOS_MIN_MEM) || (addr > 0x4fffffff)) | 63 | if((addr < PCIBIOS_MIN_MEM) || (addr > 0x4fffffff)) |
62 | return __arm_ioremap(addr, size, mtype); | 64 | return __arm_ioremap(addr, size, mtype); |
63 | 65 | ||
64 | return (void *)addr; | 66 | return (void __iomem *)addr; |
65 | } | 67 | } |
66 | 68 | ||
67 | static inline void | 69 | static inline void |
68 | __ixp4xx_iounmap(void __iomem *addr) | 70 | __ixp4xx_iounmap(void __iomem *addr) |
69 | { | 71 | { |
70 | if ((u32)addr >= VMALLOC_START) | 72 | if ((__force u32)addr >= VMALLOC_START) |
71 | __iounmap(addr); | 73 | __iounmap(addr); |
72 | } | 74 | } |
73 | 75 | ||
@@ -141,9 +143,9 @@ __ixp4xx_writesw(volatile void __iomem *bus_addr, const u16 *vaddr, int count) | |||
141 | static inline void | 143 | static inline void |
142 | __ixp4xx_writel(u32 value, volatile void __iomem *p) | 144 | __ixp4xx_writel(u32 value, volatile void __iomem *p) |
143 | { | 145 | { |
144 | u32 addr = (u32)p; | 146 | u32 addr = (__force u32)p; |
145 | if (addr >= VMALLOC_START) { | 147 | if (addr >= VMALLOC_START) { |
146 | __raw_writel(value, addr); | 148 | __raw_writel(value, p); |
147 | return; | 149 | return; |
148 | } | 150 | } |
149 | 151 | ||
@@ -208,11 +210,11 @@ __ixp4xx_readsw(const volatile void __iomem *bus_addr, u16 *vaddr, u32 count) | |||
208 | static inline unsigned long | 210 | static inline unsigned long |
209 | __ixp4xx_readl(const volatile void __iomem *p) | 211 | __ixp4xx_readl(const volatile void __iomem *p) |
210 | { | 212 | { |
211 | u32 addr = (u32)p; | 213 | u32 addr = (__force u32)p; |
212 | u32 data; | 214 | u32 data; |
213 | 215 | ||
214 | if (addr >= VMALLOC_START) | 216 | if (addr >= VMALLOC_START) |
215 | return __raw_readl(addr); | 217 | return __raw_readl(p); |
216 | 218 | ||
217 | if (ixp4xx_pci_read(addr, NP_CMD_MEMREAD, &data)) | 219 | if (ixp4xx_pci_read(addr, NP_CMD_MEMREAD, &data)) |
218 | return 0xffffffff; | 220 | return 0xffffffff; |
@@ -438,7 +440,7 @@ __ixp4xx_ioread32(const void __iomem *addr) | |||
438 | return (unsigned int)__ixp4xx_inl(port & PIO_MASK); | 440 | return (unsigned int)__ixp4xx_inl(port & PIO_MASK); |
439 | else { | 441 | else { |
440 | #ifndef CONFIG_IXP4XX_INDIRECT_PCI | 442 | #ifndef CONFIG_IXP4XX_INDIRECT_PCI |
441 | return le32_to_cpu(__raw_readl((u32)port)); | 443 | return le32_to_cpu((__force __le32)__raw_readl(addr)); |
442 | #else | 444 | #else |
443 | return (unsigned int)__ixp4xx_readl(addr); | 445 | return (unsigned int)__ixp4xx_readl(addr); |
444 | #endif | 446 | #endif |
@@ -523,7 +525,7 @@ __ixp4xx_iowrite32(u32 value, void __iomem *addr) | |||
523 | __ixp4xx_outl(value, port & PIO_MASK); | 525 | __ixp4xx_outl(value, port & PIO_MASK); |
524 | else | 526 | else |
525 | #ifndef CONFIG_IXP4XX_INDIRECT_PCI | 527 | #ifndef CONFIG_IXP4XX_INDIRECT_PCI |
526 | __raw_writel(cpu_to_le32(value), port); | 528 | __raw_writel((u32 __force)cpu_to_le32(value), addr); |
527 | #else | 529 | #else |
528 | __ixp4xx_writel(value, addr); | 530 | __ixp4xx_writel(value, addr); |
529 | #endif | 531 | #endif |
diff --git a/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h b/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h index 5d949d763a91..68aca8554f5a 100644 --- a/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h +++ b/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h | |||
@@ -15,10 +15,6 @@ | |||
15 | * | 15 | * |
16 | */ | 16 | */ |
17 | 17 | ||
18 | #ifndef __ASM_ARCH_HARDWARE_H__ | ||
19 | #error "Do not include this directly, instead #include <asm/hardware.h>" | ||
20 | #endif | ||
21 | |||
22 | #ifndef _ASM_ARM_IXP4XX_H_ | 18 | #ifndef _ASM_ARM_IXP4XX_H_ |
23 | #define _ASM_ARM_IXP4XX_H_ | 19 | #define _ASM_ARM_IXP4XX_H_ |
24 | 20 | ||
@@ -587,24 +583,56 @@ | |||
587 | #define UICR1_IM14 (1 << 6) /* Interrupt mask ep 14 */ | 583 | #define UICR1_IM14 (1 << 6) /* Interrupt mask ep 14 */ |
588 | #define UICR1_IM15 (1 << 7) /* Interrupt mask ep 15 */ | 584 | #define UICR1_IM15 (1 << 7) /* Interrupt mask ep 15 */ |
589 | 585 | ||
590 | #define USIR0_IR0 (1 << 0) /* Interrup request ep 0 */ | 586 | #define USIR0_IR0 (1 << 0) /* Interrupt request ep 0 */ |
591 | #define USIR0_IR1 (1 << 1) /* Interrup request ep 1 */ | 587 | #define USIR0_IR1 (1 << 1) /* Interrupt request ep 1 */ |
592 | #define USIR0_IR2 (1 << 2) /* Interrup request ep 2 */ | 588 | #define USIR0_IR2 (1 << 2) /* Interrupt request ep 2 */ |
593 | #define USIR0_IR3 (1 << 3) /* Interrup request ep 3 */ | 589 | #define USIR0_IR3 (1 << 3) /* Interrupt request ep 3 */ |
594 | #define USIR0_IR4 (1 << 4) /* Interrup request ep 4 */ | 590 | #define USIR0_IR4 (1 << 4) /* Interrupt request ep 4 */ |
595 | #define USIR0_IR5 (1 << 5) /* Interrup request ep 5 */ | 591 | #define USIR0_IR5 (1 << 5) /* Interrupt request ep 5 */ |
596 | #define USIR0_IR6 (1 << 6) /* Interrup request ep 6 */ | 592 | #define USIR0_IR6 (1 << 6) /* Interrupt request ep 6 */ |
597 | #define USIR0_IR7 (1 << 7) /* Interrup request ep 7 */ | 593 | #define USIR0_IR7 (1 << 7) /* Interrupt request ep 7 */ |
598 | 594 | ||
599 | #define USIR1_IR8 (1 << 0) /* Interrup request ep 8 */ | 595 | #define USIR1_IR8 (1 << 0) /* Interrupt request ep 8 */ |
600 | #define USIR1_IR9 (1 << 1) /* Interrup request ep 9 */ | 596 | #define USIR1_IR9 (1 << 1) /* Interrupt request ep 9 */ |
601 | #define USIR1_IR10 (1 << 2) /* Interrup request ep 10 */ | 597 | #define USIR1_IR10 (1 << 2) /* Interrupt request ep 10 */ |
602 | #define USIR1_IR11 (1 << 3) /* Interrup request ep 11 */ | 598 | #define USIR1_IR11 (1 << 3) /* Interrupt request ep 11 */ |
603 | #define USIR1_IR12 (1 << 4) /* Interrup request ep 12 */ | 599 | #define USIR1_IR12 (1 << 4) /* Interrupt request ep 12 */ |
604 | #define USIR1_IR13 (1 << 5) /* Interrup request ep 13 */ | 600 | #define USIR1_IR13 (1 << 5) /* Interrupt request ep 13 */ |
605 | #define USIR1_IR14 (1 << 6) /* Interrup request ep 14 */ | 601 | #define USIR1_IR14 (1 << 6) /* Interrupt request ep 14 */ |
606 | #define USIR1_IR15 (1 << 7) /* Interrup request ep 15 */ | 602 | #define USIR1_IR15 (1 << 7) /* Interrupt request ep 15 */ |
607 | 603 | ||
608 | #define DCMD_LENGTH 0x01fff /* length mask (max = 8K - 1) */ | 604 | #define DCMD_LENGTH 0x01fff /* length mask (max = 8K - 1) */ |
609 | 605 | ||
606 | /* "fuse" bits of IXP_EXP_CFG2 */ | ||
607 | #define IXP4XX_FEATURE_RCOMP (1 << 0) | ||
608 | #define IXP4XX_FEATURE_USB_DEVICE (1 << 1) | ||
609 | #define IXP4XX_FEATURE_HASH (1 << 2) | ||
610 | #define IXP4XX_FEATURE_AES (1 << 3) | ||
611 | #define IXP4XX_FEATURE_DES (1 << 4) | ||
612 | #define IXP4XX_FEATURE_HDLC (1 << 5) | ||
613 | #define IXP4XX_FEATURE_AAL (1 << 6) | ||
614 | #define IXP4XX_FEATURE_HSS (1 << 7) | ||
615 | #define IXP4XX_FEATURE_UTOPIA (1 << 8) | ||
616 | #define IXP4XX_FEATURE_NPEB_ETH0 (1 << 9) | ||
617 | #define IXP4XX_FEATURE_NPEC_ETH (1 << 10) | ||
618 | #define IXP4XX_FEATURE_RESET_NPEA (1 << 11) | ||
619 | #define IXP4XX_FEATURE_RESET_NPEB (1 << 12) | ||
620 | #define IXP4XX_FEATURE_RESET_NPEC (1 << 13) | ||
621 | #define IXP4XX_FEATURE_PCI (1 << 14) | ||
622 | #define IXP4XX_FEATURE_ECC_TIMESYNC (1 << 15) | ||
623 | #define IXP4XX_FEATURE_UTOPIA_PHY_LIMIT (3 << 16) | ||
624 | #define IXP4XX_FEATURE_USB_HOST (1 << 18) | ||
625 | #define IXP4XX_FEATURE_NPEA_ETH (1 << 19) | ||
626 | #define IXP4XX_FEATURE_NPEB_ETH_1_TO_3 (1 << 20) | ||
627 | #define IXP4XX_FEATURE_RSA (1 << 21) | ||
628 | #define IXP4XX_FEATURE_XSCALE_MAX_FREQ (3 << 22) | ||
629 | #define IXP4XX_FEATURE_RESERVED (0xFF << 24) | ||
630 | |||
631 | #define IXP4XX_FEATURE_IXP46X_ONLY (IXP4XX_FEATURE_ECC_TIMESYNC | \ | ||
632 | IXP4XX_FEATURE_USB_HOST | \ | ||
633 | IXP4XX_FEATURE_NPEA_ETH | \ | ||
634 | IXP4XX_FEATURE_NPEB_ETH_1_TO_3 | \ | ||
635 | IXP4XX_FEATURE_RSA | \ | ||
636 | IXP4XX_FEATURE_XSCALE_MAX_FREQ) | ||
637 | |||
610 | #endif | 638 | #endif |
diff --git a/include/asm-arm/arch-ixp4xx/nas100d.h b/include/asm-arm/arch-ixp4xx/nas100d.h index 131e0a1d0df3..98d937897bce 100644 --- a/include/asm-arm/arch-ixp4xx/nas100d.h +++ b/include/asm-arm/arch-ixp4xx/nas100d.h | |||
@@ -38,15 +38,15 @@ | |||
38 | 38 | ||
39 | /* Buttons */ | 39 | /* Buttons */ |
40 | 40 | ||
41 | #define NAS100D_PB_GPIO 14 | 41 | #define NAS100D_PB_GPIO 14 /* power button */ |
42 | #define NAS100D_RB_GPIO 4 | 42 | #define NAS100D_RB_GPIO 4 /* reset button */ |
43 | |||
44 | /* Power control */ | ||
45 | |||
43 | #define NAS100D_PO_GPIO 12 /* power off */ | 46 | #define NAS100D_PO_GPIO 12 /* power off */ |
44 | 47 | ||
45 | #define NAS100D_PB_IRQ IRQ_IXP4XX_GPIO14 | 48 | /* LEDs */ |
46 | #define NAS100D_RB_IRQ IRQ_IXP4XX_GPIO4 | ||
47 | 49 | ||
48 | /* | 50 | #define NAS100D_LED_WLAN_GPIO 0 |
49 | #define NAS100D_PB_BM (1L << NAS100D_PB_GPIO) | 51 | #define NAS100D_LED_DISK_GPIO 3 |
50 | #define NAS100D_PO_BM (1L << NAS100D_PO_GPIO) | 52 | #define NAS100D_LED_PWR_GPIO 15 |
51 | #define NAS100D_RB_BM (1L << NAS100D_RB_GPIO) | ||
52 | */ | ||
diff --git a/include/asm-arm/arch-ixp4xx/npe.h b/include/asm-arm/arch-ixp4xx/npe.h new file mode 100644 index 000000000000..37d0511689dc --- /dev/null +++ b/include/asm-arm/arch-ixp4xx/npe.h | |||
@@ -0,0 +1,39 @@ | |||
1 | #ifndef __IXP4XX_NPE_H | ||
2 | #define __IXP4XX_NPE_H | ||
3 | |||
4 | #include <linux/kernel.h> | ||
5 | |||
6 | extern const char *npe_names[]; | ||
7 | |||
8 | struct npe_regs { | ||
9 | u32 exec_addr, exec_data, exec_status_cmd, exec_count; | ||
10 | u32 action_points[4]; | ||
11 | u32 watchpoint_fifo, watch_count; | ||
12 | u32 profile_count; | ||
13 | u32 messaging_status, messaging_control; | ||
14 | u32 mailbox_status, /*messaging_*/ in_out_fifo; | ||
15 | }; | ||
16 | |||
17 | struct npe { | ||
18 | struct resource *mem_res; | ||
19 | struct npe_regs __iomem *regs; | ||
20 | u32 regs_phys; | ||
21 | int id; | ||
22 | int valid; | ||
23 | }; | ||
24 | |||
25 | |||
26 | static inline const char *npe_name(struct npe *npe) | ||
27 | { | ||
28 | return npe_names[npe->id]; | ||
29 | } | ||
30 | |||
31 | int npe_running(struct npe *npe); | ||
32 | int npe_send_message(struct npe *npe, const void *msg, const char *what); | ||
33 | int npe_recv_message(struct npe *npe, void *msg, const char *what); | ||
34 | int npe_send_recv_message(struct npe *npe, void *msg, const char *what); | ||
35 | int npe_load_firmware(struct npe *npe, const char *name, struct device *dev); | ||
36 | struct npe *npe_request(int id); | ||
37 | void npe_release(struct npe *npe); | ||
38 | |||
39 | #endif /* __IXP4XX_NPE_H */ | ||
diff --git a/include/asm-arm/arch-ixp4xx/nslu2.h b/include/asm-arm/arch-ixp4xx/nslu2.h index 850fdc5b45da..714bbc65126a 100644 --- a/include/asm-arm/arch-ixp4xx/nslu2.h +++ b/include/asm-arm/arch-ixp4xx/nslu2.h | |||
@@ -39,34 +39,17 @@ | |||
39 | 39 | ||
40 | /* Buttons */ | 40 | /* Buttons */ |
41 | 41 | ||
42 | #define NSLU2_PB_GPIO 5 | 42 | #define NSLU2_PB_GPIO 5 /* power button */ |
43 | #define NSLU2_PO_GPIO 8 /* power off */ | 43 | #define NSLU2_PO_GPIO 8 /* power off */ |
44 | #define NSLU2_RB_GPIO 12 | 44 | #define NSLU2_RB_GPIO 12 /* reset button */ |
45 | |||
46 | #define NSLU2_PB_IRQ IRQ_IXP4XX_GPIO5 | ||
47 | #define NSLU2_RB_IRQ IRQ_IXP4XX_GPIO12 | ||
48 | |||
49 | #define NSLU2_PB_BM (1L << NSLU2_PB_GPIO) | ||
50 | #define NSLU2_PO_BM (1L << NSLU2_PO_GPIO) | ||
51 | #define NSLU2_RB_BM (1L << NSLU2_RB_GPIO) | ||
52 | 45 | ||
53 | /* Buzzer */ | 46 | /* Buzzer */ |
54 | 47 | ||
55 | #define NSLU2_GPIO_BUZZ 4 | 48 | #define NSLU2_GPIO_BUZZ 4 |
56 | #define NSLU2_BZ_BM (1L << NSLU2_GPIO_BUZZ) | ||
57 | 49 | ||
58 | /* LEDs */ | 50 | /* LEDs */ |
59 | 51 | ||
60 | #define NSLU2_LED_RED_GPIO 0 | 52 | #define NSLU2_LED_RED_GPIO 0 |
61 | #define NSLU2_LED_GRN_GPIO 1 | 53 | #define NSLU2_LED_GRN_GPIO 1 |
62 | |||
63 | #define NSLU2_LED_RED_BM (1L << NSLU2_LED_RED_GPIO) | ||
64 | #define NSLU2_LED_GRN_BM (1L << NSLU2_LED_GRN_GPIO) | ||
65 | |||
66 | #define NSLU2_LED_DISK1_GPIO 3 | 54 | #define NSLU2_LED_DISK1_GPIO 3 |
67 | #define NSLU2_LED_DISK2_GPIO 2 | 55 | #define NSLU2_LED_DISK2_GPIO 2 |
68 | |||
69 | #define NSLU2_LED_DISK1_BM (1L << NSLU2_LED_DISK1_GPIO) | ||
70 | #define NSLU2_LED_DISK2_BM (1L << NSLU2_LED_DISK2_GPIO) | ||
71 | |||
72 | |||
diff --git a/include/asm-arm/arch-ixp4xx/platform.h b/include/asm-arm/arch-ixp4xx/platform.h index 2a44d3d67980..a1f2b5404db1 100644 --- a/include/asm-arm/arch-ixp4xx/platform.h +++ b/include/asm-arm/arch-ixp4xx/platform.h | |||
@@ -76,17 +76,6 @@ extern unsigned long ixp4xx_exp_bus_size; | |||
76 | #define IXP4XX_UART_XTAL 14745600 | 76 | #define IXP4XX_UART_XTAL 14745600 |
77 | 77 | ||
78 | /* | 78 | /* |
79 | * The IXP4xx chips do not have an I2C unit, so GPIO lines are just | ||
80 | * used to | ||
81 | * Used as platform_data to provide GPIO pin information to the ixp42x | ||
82 | * I2C driver. | ||
83 | */ | ||
84 | struct ixp4xx_i2c_pins { | ||
85 | unsigned long sda_pin; | ||
86 | unsigned long scl_pin; | ||
87 | }; | ||
88 | |||
89 | /* | ||
90 | * This structure provide a means for the board setup code | 79 | * This structure provide a means for the board setup code |
91 | * to give information to th pata_ixp4xx driver. It is | 80 | * to give information to th pata_ixp4xx driver. It is |
92 | * passed as platform_data. | 81 | * passed as platform_data. |
@@ -102,6 +91,27 @@ struct ixp4xx_pata_data { | |||
102 | 91 | ||
103 | struct sys_timer; | 92 | struct sys_timer; |
104 | 93 | ||
94 | #define IXP4XX_ETH_NPEA 0x00 | ||
95 | #define IXP4XX_ETH_NPEB 0x10 | ||
96 | #define IXP4XX_ETH_NPEC 0x20 | ||
97 | |||
98 | /* Information about built-in Ethernet MAC interfaces */ | ||
99 | struct eth_plat_info { | ||
100 | u8 phy; /* MII PHY ID, 0 - 31 */ | ||
101 | u8 rxq; /* configurable, currently 0 - 31 only */ | ||
102 | u8 txreadyq; | ||
103 | u8 hwaddr[6]; | ||
104 | }; | ||
105 | |||
106 | /* Information about built-in HSS (synchronous serial) interfaces */ | ||
107 | struct hss_plat_info { | ||
108 | int (*set_clock)(int port, unsigned int clock_type); | ||
109 | int (*open)(int port, void *pdev, | ||
110 | void (*set_carrier_cb)(void *pdev, int carrier)); | ||
111 | void (*close)(int port, void *pdev); | ||
112 | u8 txreadyq; | ||
113 | }; | ||
114 | |||
105 | /* | 115 | /* |
106 | * Frequency of clock used for primary clocksource | 116 | * Frequency of clock used for primary clocksource |
107 | */ | 117 | */ |
diff --git a/include/asm-arm/arch-ixp4xx/qmgr.h b/include/asm-arm/arch-ixp4xx/qmgr.h new file mode 100644 index 000000000000..1e52b95cede5 --- /dev/null +++ b/include/asm-arm/arch-ixp4xx/qmgr.h | |||
@@ -0,0 +1,126 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2007 Krzysztof Halasa <khc@pm.waw.pl> | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify it | ||
5 | * under the terms of version 2 of the GNU General Public License | ||
6 | * as published by the Free Software Foundation. | ||
7 | */ | ||
8 | |||
9 | #ifndef IXP4XX_QMGR_H | ||
10 | #define IXP4XX_QMGR_H | ||
11 | |||
12 | #include <linux/io.h> | ||
13 | #include <linux/kernel.h> | ||
14 | |||
15 | #define HALF_QUEUES 32 | ||
16 | #define QUEUES 64 /* only 32 lower queues currently supported */ | ||
17 | #define MAX_QUEUE_LENGTH 4 /* in dwords */ | ||
18 | |||
19 | #define QUEUE_STAT1_EMPTY 1 /* queue status bits */ | ||
20 | #define QUEUE_STAT1_NEARLY_EMPTY 2 | ||
21 | #define QUEUE_STAT1_NEARLY_FULL 4 | ||
22 | #define QUEUE_STAT1_FULL 8 | ||
23 | #define QUEUE_STAT2_UNDERFLOW 1 | ||
24 | #define QUEUE_STAT2_OVERFLOW 2 | ||
25 | |||
26 | #define QUEUE_WATERMARK_0_ENTRIES 0 | ||
27 | #define QUEUE_WATERMARK_1_ENTRY 1 | ||
28 | #define QUEUE_WATERMARK_2_ENTRIES 2 | ||
29 | #define QUEUE_WATERMARK_4_ENTRIES 3 | ||
30 | #define QUEUE_WATERMARK_8_ENTRIES 4 | ||
31 | #define QUEUE_WATERMARK_16_ENTRIES 5 | ||
32 | #define QUEUE_WATERMARK_32_ENTRIES 6 | ||
33 | #define QUEUE_WATERMARK_64_ENTRIES 7 | ||
34 | |||
35 | /* queue interrupt request conditions */ | ||
36 | #define QUEUE_IRQ_SRC_EMPTY 0 | ||
37 | #define QUEUE_IRQ_SRC_NEARLY_EMPTY 1 | ||
38 | #define QUEUE_IRQ_SRC_NEARLY_FULL 2 | ||
39 | #define QUEUE_IRQ_SRC_FULL 3 | ||
40 | #define QUEUE_IRQ_SRC_NOT_EMPTY 4 | ||
41 | #define QUEUE_IRQ_SRC_NOT_NEARLY_EMPTY 5 | ||
42 | #define QUEUE_IRQ_SRC_NOT_NEARLY_FULL 6 | ||
43 | #define QUEUE_IRQ_SRC_NOT_FULL 7 | ||
44 | |||
45 | struct qmgr_regs { | ||
46 | u32 acc[QUEUES][MAX_QUEUE_LENGTH]; /* 0x000 - 0x3FF */ | ||
47 | u32 stat1[4]; /* 0x400 - 0x40F */ | ||
48 | u32 stat2[2]; /* 0x410 - 0x417 */ | ||
49 | u32 statne_h; /* 0x418 - queue nearly empty */ | ||
50 | u32 statf_h; /* 0x41C - queue full */ | ||
51 | u32 irqsrc[4]; /* 0x420 - 0x42F IRC source */ | ||
52 | u32 irqen[2]; /* 0x430 - 0x437 IRQ enabled */ | ||
53 | u32 irqstat[2]; /* 0x438 - 0x43F - IRQ access only */ | ||
54 | u32 reserved[1776]; | ||
55 | u32 sram[2048]; /* 0x2000 - 0x3FFF - config and buffer */ | ||
56 | }; | ||
57 | |||
58 | void qmgr_set_irq(unsigned int queue, int src, | ||
59 | void (*handler)(void *pdev), void *pdev); | ||
60 | void qmgr_enable_irq(unsigned int queue); | ||
61 | void qmgr_disable_irq(unsigned int queue); | ||
62 | |||
63 | /* request_ and release_queue() must be called from non-IRQ context */ | ||
64 | int qmgr_request_queue(unsigned int queue, unsigned int len /* dwords */, | ||
65 | unsigned int nearly_empty_watermark, | ||
66 | unsigned int nearly_full_watermark); | ||
67 | void qmgr_release_queue(unsigned int queue); | ||
68 | |||
69 | |||
70 | static inline void qmgr_put_entry(unsigned int queue, u32 val) | ||
71 | { | ||
72 | extern struct qmgr_regs __iomem *qmgr_regs; | ||
73 | __raw_writel(val, &qmgr_regs->acc[queue][0]); | ||
74 | } | ||
75 | |||
76 | static inline u32 qmgr_get_entry(unsigned int queue) | ||
77 | { | ||
78 | extern struct qmgr_regs __iomem *qmgr_regs; | ||
79 | return __raw_readl(&qmgr_regs->acc[queue][0]); | ||
80 | } | ||
81 | |||
82 | static inline int qmgr_get_stat1(unsigned int queue) | ||
83 | { | ||
84 | extern struct qmgr_regs __iomem *qmgr_regs; | ||
85 | return (__raw_readl(&qmgr_regs->stat1[queue >> 3]) | ||
86 | >> ((queue & 7) << 2)) & 0xF; | ||
87 | } | ||
88 | |||
89 | static inline int qmgr_get_stat2(unsigned int queue) | ||
90 | { | ||
91 | extern struct qmgr_regs __iomem *qmgr_regs; | ||
92 | return (__raw_readl(&qmgr_regs->stat2[queue >> 4]) | ||
93 | >> ((queue & 0xF) << 1)) & 0x3; | ||
94 | } | ||
95 | |||
96 | static inline int qmgr_stat_empty(unsigned int queue) | ||
97 | { | ||
98 | return !!(qmgr_get_stat1(queue) & QUEUE_STAT1_EMPTY); | ||
99 | } | ||
100 | |||
101 | static inline int qmgr_stat_nearly_empty(unsigned int queue) | ||
102 | { | ||
103 | return !!(qmgr_get_stat1(queue) & QUEUE_STAT1_NEARLY_EMPTY); | ||
104 | } | ||
105 | |||
106 | static inline int qmgr_stat_nearly_full(unsigned int queue) | ||
107 | { | ||
108 | return !!(qmgr_get_stat1(queue) & QUEUE_STAT1_NEARLY_FULL); | ||
109 | } | ||
110 | |||
111 | static inline int qmgr_stat_full(unsigned int queue) | ||
112 | { | ||
113 | return !!(qmgr_get_stat1(queue) & QUEUE_STAT1_FULL); | ||
114 | } | ||
115 | |||
116 | static inline int qmgr_stat_underflow(unsigned int queue) | ||
117 | { | ||
118 | return !!(qmgr_get_stat2(queue) & QUEUE_STAT2_UNDERFLOW); | ||
119 | } | ||
120 | |||
121 | static inline int qmgr_stat_overflow(unsigned int queue) | ||
122 | { | ||
123 | return !!(qmgr_get_stat2(queue) & QUEUE_STAT2_OVERFLOW); | ||
124 | } | ||
125 | |||
126 | #endif | ||
diff --git a/include/asm-arm/arch-ixp4xx/uncompress.h b/include/asm-arm/arch-ixp4xx/uncompress.h index f7a35b78823f..34ef48fe327e 100644 --- a/include/asm-arm/arch-ixp4xx/uncompress.h +++ b/include/asm-arm/arch-ixp4xx/uncompress.h | |||
@@ -13,7 +13,7 @@ | |||
13 | #ifndef _ARCH_UNCOMPRESS_H_ | 13 | #ifndef _ARCH_UNCOMPRESS_H_ |
14 | #define _ARCH_UNCOMPRESS_H_ | 14 | #define _ARCH_UNCOMPRESS_H_ |
15 | 15 | ||
16 | #include <asm/hardware.h> | 16 | #include "ixp4xx-regs.h" |
17 | #include <asm/mach-types.h> | 17 | #include <asm/mach-types.h> |
18 | #include <linux/serial_reg.h> | 18 | #include <linux/serial_reg.h> |
19 | 19 | ||
diff --git a/include/asm-arm/arch-ks8695/regs-gpio.h b/include/asm-arm/arch-ks8695/regs-gpio.h index 57fcf9fc82e4..6b95d77aea19 100644 --- a/include/asm-arm/arch-ks8695/regs-gpio.h +++ b/include/asm-arm/arch-ks8695/regs-gpio.h | |||
@@ -49,5 +49,7 @@ | |||
49 | #define IOPC_TM_FALLING (4) /* Falling Edge Detection */ | 49 | #define IOPC_TM_FALLING (4) /* Falling Edge Detection */ |
50 | #define IOPC_TM_EDGE (6) /* Both Edge Detection */ | 50 | #define IOPC_TM_EDGE (6) /* Both Edge Detection */ |
51 | 51 | ||
52 | /* Port Data Register */ | ||
53 | #define IOPD_(x) (1 << (x)) /* Signal Level of GPIO Pin x */ | ||
52 | 54 | ||
53 | #endif | 55 | #endif |
diff --git a/include/asm-arm/arch-msm/board.h b/include/asm-arm/arch-msm/board.h new file mode 100644 index 000000000000..763051f8ba14 --- /dev/null +++ b/include/asm-arm/arch-msm/board.h | |||
@@ -0,0 +1,37 @@ | |||
1 | /* linux/include/asm-arm/arch-msm/board.h | ||
2 | * | ||
3 | * Copyright (C) 2007 Google, Inc. | ||
4 | * Author: Brian Swetland <swetland@google.com> | ||
5 | * | ||
6 | * This software is licensed under the terms of the GNU General Public | ||
7 | * License version 2, as published by the Free Software Foundation, and | ||
8 | * may be copied, distributed, and modified under those terms. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | * | ||
15 | */ | ||
16 | |||
17 | #ifndef __ASM_ARCH_MSM_BOARD_H | ||
18 | #define __ASM_ARCH_MSM_BOARD_H | ||
19 | |||
20 | #include <linux/types.h> | ||
21 | |||
22 | /* platform device data structures */ | ||
23 | |||
24 | struct msm_mddi_platform_data | ||
25 | { | ||
26 | void (*panel_power)(int on); | ||
27 | unsigned has_vsync_irq:1; | ||
28 | }; | ||
29 | |||
30 | /* common init routines for use by arch/arm/mach-msm/board-*.c */ | ||
31 | |||
32 | void __init msm_add_devices(void); | ||
33 | void __init msm_map_common_io(void); | ||
34 | void __init msm_init_irq(void); | ||
35 | void __init msm_init_gpio(void); | ||
36 | |||
37 | #endif | ||
diff --git a/include/asm-arm/arch-msm/debug-macro.S b/include/asm-arm/arch-msm/debug-macro.S new file mode 100644 index 000000000000..393d5272e506 --- /dev/null +++ b/include/asm-arm/arch-msm/debug-macro.S | |||
@@ -0,0 +1,40 @@ | |||
1 | /* include/asm-arm/arch-msm7200/debug-macro.S | ||
2 | * | ||
3 | * Copyright (C) 2007 Google, Inc. | ||
4 | * Author: Brian Swetland <swetland@google.com> | ||
5 | * | ||
6 | * This software is licensed under the terms of the GNU General Public | ||
7 | * License version 2, as published by the Free Software Foundation, and | ||
8 | * may be copied, distributed, and modified under those terms. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | * | ||
15 | */ | ||
16 | |||
17 | #include <asm/hardware.h> | ||
18 | #include <asm/arch/msm_iomap.h> | ||
19 | |||
20 | .macro addruart,rx | ||
21 | @ see if the MMU is enabled and select appropriate base address | ||
22 | mrc p15, 0, \rx, c1, c0 | ||
23 | tst \rx, #1 | ||
24 | ldreq \rx, =MSM_UART1_PHYS | ||
25 | ldrne \rx, =MSM_UART1_BASE | ||
26 | .endm | ||
27 | |||
28 | .macro senduart,rd,rx | ||
29 | str \rd, [\rx, #0x0C] | ||
30 | .endm | ||
31 | |||
32 | .macro waituart,rd,rx | ||
33 | @ wait for TX_READY | ||
34 | 1: ldr \rd, [\rx, #0x08] | ||
35 | tst \rd, #0x04 | ||
36 | beq 1b | ||
37 | .endm | ||
38 | |||
39 | .macro busyuart,rd,rx | ||
40 | .endm | ||
diff --git a/include/asm-arm/arch-msm/dma.h b/include/asm-arm/arch-msm/dma.h new file mode 100644 index 000000000000..e4b565b27b35 --- /dev/null +++ b/include/asm-arm/arch-msm/dma.h | |||
@@ -0,0 +1,151 @@ | |||
1 | /* linux/include/asm-arm/arch-msm/dma.h | ||
2 | * | ||
3 | * Copyright (C) 2007 Google, Inc. | ||
4 | * | ||
5 | * This software is licensed under the terms of the GNU General Public | ||
6 | * License version 2, as published by the Free Software Foundation, and | ||
7 | * may be copied, distributed, and modified under those terms. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | */ | ||
15 | |||
16 | #ifndef __ASM_ARCH_MSM_DMA_H | ||
17 | |||
18 | #include <linux/list.h> | ||
19 | #include <asm/arch/msm_iomap.h> | ||
20 | |||
21 | struct msm_dmov_cmd { | ||
22 | struct list_head list; | ||
23 | unsigned int cmdptr; | ||
24 | void (*complete_func)(struct msm_dmov_cmd *cmd, unsigned int result); | ||
25 | /* void (*user_result_func)(struct msm_dmov_cmd *cmd); */ | ||
26 | }; | ||
27 | |||
28 | void msm_dmov_enqueue_cmd(unsigned id, struct msm_dmov_cmd *cmd); | ||
29 | void msm_dmov_stop_cmd(unsigned id, struct msm_dmov_cmd *cmd); | ||
30 | int msm_dmov_exec_cmd(unsigned id, unsigned int cmdptr); | ||
31 | /* int msm_dmov_exec_cmd_etc(unsigned id, unsigned int cmdptr, int timeout, int interruptible); */ | ||
32 | |||
33 | |||
34 | |||
35 | #define DMOV_SD0(off, ch) (MSM_DMOV_BASE + 0x0000 + (off) + ((ch) << 2)) | ||
36 | #define DMOV_SD1(off, ch) (MSM_DMOV_BASE + 0x0400 + (off) + ((ch) << 2)) | ||
37 | #define DMOV_SD2(off, ch) (MSM_DMOV_BASE + 0x0800 + (off) + ((ch) << 2)) | ||
38 | #define DMOV_SD3(off, ch) (MSM_DMOV_BASE + 0x0C00 + (off) + ((ch) << 2)) | ||
39 | |||
40 | /* only security domain 3 is available to the ARM11 | ||
41 | * SD0 -> mARM trusted, SD1 -> mARM nontrusted, SD2 -> aDSP, SD3 -> aARM | ||
42 | */ | ||
43 | |||
44 | #define DMOV_CMD_PTR(ch) DMOV_SD3(0x000, ch) | ||
45 | #define DMOV_CMD_LIST (0 << 29) /* does not work */ | ||
46 | #define DMOV_CMD_PTR_LIST (1 << 29) /* works */ | ||
47 | #define DMOV_CMD_INPUT_CFG (2 << 29) /* untested */ | ||
48 | #define DMOV_CMD_OUTPUT_CFG (3 << 29) /* untested */ | ||
49 | #define DMOV_CMD_ADDR(addr) ((addr) >> 3) | ||
50 | |||
51 | #define DMOV_RSLT(ch) DMOV_SD3(0x040, ch) | ||
52 | #define DMOV_RSLT_VALID (1 << 31) /* 0 == host has empties result fifo */ | ||
53 | #define DMOV_RSLT_ERROR (1 << 3) | ||
54 | #define DMOV_RSLT_FLUSH (1 << 2) | ||
55 | #define DMOV_RSLT_DONE (1 << 1) /* top pointer done */ | ||
56 | #define DMOV_RSLT_USER (1 << 0) /* command with FR force result */ | ||
57 | |||
58 | #define DMOV_FLUSH0(ch) DMOV_SD3(0x080, ch) | ||
59 | #define DMOV_FLUSH1(ch) DMOV_SD3(0x0C0, ch) | ||
60 | #define DMOV_FLUSH2(ch) DMOV_SD3(0x100, ch) | ||
61 | #define DMOV_FLUSH3(ch) DMOV_SD3(0x140, ch) | ||
62 | #define DMOV_FLUSH4(ch) DMOV_SD3(0x180, ch) | ||
63 | #define DMOV_FLUSH5(ch) DMOV_SD3(0x1C0, ch) | ||
64 | |||
65 | #define DMOV_STATUS(ch) DMOV_SD3(0x200, ch) | ||
66 | #define DMOV_STATUS_RSLT_COUNT(n) (((n) >> 29)) | ||
67 | #define DMOV_STATUS_CMD_COUNT(n) (((n) >> 27) & 3) | ||
68 | #define DMOV_STATUS_RSLT_VALID (1 << 1) | ||
69 | #define DMOV_STATUS_CMD_PTR_RDY (1 << 0) | ||
70 | |||
71 | #define DMOV_ISR DMOV_SD3(0x380, 0) | ||
72 | |||
73 | #define DMOV_CONFIG(ch) DMOV_SD3(0x300, ch) | ||
74 | #define DMOV_CONFIG_FORCE_TOP_PTR_RSLT (1 << 2) | ||
75 | #define DMOV_CONFIG_FORCE_FLUSH_RSLT (1 << 1) | ||
76 | #define DMOV_CONFIG_IRQ_EN (1 << 0) | ||
77 | |||
78 | /* channel assignments */ | ||
79 | |||
80 | #define DMOV_NAND_CHAN 7 | ||
81 | #define DMOV_NAND_CRCI_CMD 5 | ||
82 | #define DMOV_NAND_CRCI_DATA 4 | ||
83 | |||
84 | #define DMOV_SDC1_CHAN 8 | ||
85 | #define DMOV_SDC1_CRCI 6 | ||
86 | |||
87 | #define DMOV_SDC2_CHAN 8 | ||
88 | #define DMOV_SDC2_CRCI 7 | ||
89 | |||
90 | #define DMOV_TSIF_CHAN 10 | ||
91 | #define DMOV_TSIF_CRCI 10 | ||
92 | |||
93 | #define DMOV_USB_CHAN 11 | ||
94 | |||
95 | /* no client rate control ifc (eg, ram) */ | ||
96 | #define DMOV_NONE_CRCI 0 | ||
97 | |||
98 | |||
99 | /* If the CMD_PTR register has CMD_PTR_LIST selected, the data mover | ||
100 | * is going to walk a list of 32bit pointers as described below. Each | ||
101 | * pointer points to a *array* of dmov_s, etc structs. The last pointer | ||
102 | * in the list is marked with CMD_PTR_LP. The last struct in each array | ||
103 | * is marked with CMD_LC (see below). | ||
104 | */ | ||
105 | #define CMD_PTR_ADDR(addr) ((addr) >> 3) | ||
106 | #define CMD_PTR_LP (1 << 31) /* last pointer */ | ||
107 | #define CMD_PTR_PT (3 << 29) /* ? */ | ||
108 | |||
109 | /* Single Item Mode */ | ||
110 | typedef struct { | ||
111 | unsigned cmd; | ||
112 | unsigned src; | ||
113 | unsigned dst; | ||
114 | unsigned len; | ||
115 | } dmov_s; | ||
116 | |||
117 | /* Scatter/Gather Mode */ | ||
118 | typedef struct { | ||
119 | unsigned cmd; | ||
120 | unsigned src_dscr; | ||
121 | unsigned dst_dscr; | ||
122 | unsigned _reserved; | ||
123 | } dmov_sg; | ||
124 | |||
125 | /* bits for the cmd field of the above structures */ | ||
126 | |||
127 | #define CMD_LC (1 << 31) /* last command */ | ||
128 | #define CMD_FR (1 << 22) /* force result -- does not work? */ | ||
129 | #define CMD_OCU (1 << 21) /* other channel unblock */ | ||
130 | #define CMD_OCB (1 << 20) /* other channel block */ | ||
131 | #define CMD_TCB (1 << 19) /* ? */ | ||
132 | #define CMD_DAH (1 << 18) /* destination address hold -- does not work?*/ | ||
133 | #define CMD_SAH (1 << 17) /* source address hold -- does not work? */ | ||
134 | |||
135 | #define CMD_MODE_SINGLE (0 << 0) /* dmov_s structure used */ | ||
136 | #define CMD_MODE_SG (1 << 0) /* untested */ | ||
137 | #define CMD_MODE_IND_SG (2 << 0) /* untested */ | ||
138 | #define CMD_MODE_BOX (3 << 0) /* untested */ | ||
139 | |||
140 | #define CMD_DST_SWAP_BYTES (1 << 14) /* exchange each byte n with byte n+1 */ | ||
141 | #define CMD_DST_SWAP_SHORTS (1 << 15) /* exchange each short n with short n+1 */ | ||
142 | #define CMD_DST_SWAP_WORDS (1 << 16) /* exchange each word n with word n+1 */ | ||
143 | |||
144 | #define CMD_SRC_SWAP_BYTES (1 << 11) /* exchange each byte n with byte n+1 */ | ||
145 | #define CMD_SRC_SWAP_SHORTS (1 << 12) /* exchange each short n with short n+1 */ | ||
146 | #define CMD_SRC_SWAP_WORDS (1 << 13) /* exchange each word n with word n+1 */ | ||
147 | |||
148 | #define CMD_DST_CRCI(n) (((n) & 15) << 7) | ||
149 | #define CMD_SRC_CRCI(n) (((n) & 15) << 3) | ||
150 | |||
151 | #endif | ||
diff --git a/include/asm-arm/arch-msm/entry-macro.S b/include/asm-arm/arch-msm/entry-macro.S new file mode 100644 index 000000000000..ee24aece4cb0 --- /dev/null +++ b/include/asm-arm/arch-msm/entry-macro.S | |||
@@ -0,0 +1,38 @@ | |||
1 | /* include/asm-arm/arch-msm7200/entry-macro.S | ||
2 | * | ||
3 | * Copyright (C) 2007 Google, Inc. | ||
4 | * Author: Brian Swetland <swetland@google.com> | ||
5 | * | ||
6 | * This software is licensed under the terms of the GNU General Public | ||
7 | * License version 2, as published by the Free Software Foundation, and | ||
8 | * may be copied, distributed, and modified under those terms. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | * | ||
15 | */ | ||
16 | |||
17 | #include <asm/arch/msm_iomap.h> | ||
18 | |||
19 | .macro disable_fiq | ||
20 | .endm | ||
21 | |||
22 | .macro get_irqnr_preamble, base, tmp | ||
23 | @ enable imprecise aborts | ||
24 | cpsie a | ||
25 | mov \base, #MSM_VIC_BASE | ||
26 | .endm | ||
27 | |||
28 | .macro arch_ret_to_user, tmp1, tmp2 | ||
29 | .endm | ||
30 | |||
31 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp | ||
32 | @ 0xD0 has irq# or old irq# if the irq has been handled | ||
33 | @ 0xD4 has irq# or -1 if none pending *but* if you just | ||
34 | @ read 0xD4 you never get the first irq for some reason | ||
35 | ldr \irqnr, [\base, #0xD0] | ||
36 | ldr \irqnr, [\base, #0xD4] | ||
37 | cmp \irqnr, #0xffffffff | ||
38 | .endm | ||
diff --git a/include/asm-arm/arch-msm/hardware.h b/include/asm-arm/arch-msm/hardware.h new file mode 100644 index 000000000000..89af2b70182f --- /dev/null +++ b/include/asm-arm/arch-msm/hardware.h | |||
@@ -0,0 +1,18 @@ | |||
1 | /* linux/include/asm-arm/arch-msm/hardware.h | ||
2 | * | ||
3 | * Copyright (C) 2007 Google, Inc. | ||
4 | * | ||
5 | * This software is licensed under the terms of the GNU General Public | ||
6 | * License version 2, as published by the Free Software Foundation, and | ||
7 | * may be copied, distributed, and modified under those terms. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | */ | ||
15 | |||
16 | #ifndef __ASM_ARCH_MSM_HARDWARE_H | ||
17 | |||
18 | #endif | ||
diff --git a/include/asm-arm/arch-msm/io.h b/include/asm-arm/arch-msm/io.h new file mode 100644 index 000000000000..4645ae26b62a --- /dev/null +++ b/include/asm-arm/arch-msm/io.h | |||
@@ -0,0 +1,33 @@ | |||
1 | /* include/asm-arm/arch-msm/io.h | ||
2 | * | ||
3 | * Copyright (C) 2007 Google, Inc. | ||
4 | * | ||
5 | * This software is licensed under the terms of the GNU General Public | ||
6 | * License version 2, as published by the Free Software Foundation, and | ||
7 | * may be copied, distributed, and modified under those terms. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | */ | ||
15 | |||
16 | #ifndef __ASM_ARM_ARCH_IO_H | ||
17 | #define __ASM_ARM_ARCH_IO_H | ||
18 | |||
19 | #define IO_SPACE_LIMIT 0xffffffff | ||
20 | |||
21 | #define __arch_ioremap __msm_ioremap | ||
22 | #define __arch_iounmap __iounmap | ||
23 | |||
24 | void __iomem *__msm_ioremap(unsigned long phys_addr, size_t size, unsigned int mtype); | ||
25 | |||
26 | static inline void __iomem *__io(unsigned long addr) | ||
27 | { | ||
28 | return (void __iomem *)addr; | ||
29 | } | ||
30 | #define __io(a) __io(a) | ||
31 | #define __mem_pci(a) (a) | ||
32 | |||
33 | #endif | ||
diff --git a/include/asm-arm/arch-msm/irqs.h b/include/asm-arm/arch-msm/irqs.h new file mode 100644 index 000000000000..565430cfaa7e --- /dev/null +++ b/include/asm-arm/arch-msm/irqs.h | |||
@@ -0,0 +1,89 @@ | |||
1 | /* linux/include/asm-arm/arch-msm/irqs.h | ||
2 | * | ||
3 | * Copyright (C) 2007 Google, Inc. | ||
4 | * Author: Brian Swetland <swetland@google.com> | ||
5 | * | ||
6 | * This software is licensed under the terms of the GNU General Public | ||
7 | * License version 2, as published by the Free Software Foundation, and | ||
8 | * may be copied, distributed, and modified under those terms. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | * | ||
15 | */ | ||
16 | |||
17 | #ifndef __ASM_ARCH_MSM_IRQS_H | ||
18 | |||
19 | /* MSM ARM11 Interrupt Numbers */ | ||
20 | /* See 80-VE113-1 A, pp219-221 */ | ||
21 | |||
22 | #define INT_A9_M2A_0 0 | ||
23 | #define INT_A9_M2A_1 1 | ||
24 | #define INT_A9_M2A_2 2 | ||
25 | #define INT_A9_M2A_3 3 | ||
26 | #define INT_A9_M2A_4 4 | ||
27 | #define INT_A9_M2A_5 5 | ||
28 | #define INT_A9_M2A_6 6 | ||
29 | #define INT_GP_TIMER_EXP 7 | ||
30 | #define INT_DEBUG_TIMER_EXP 8 | ||
31 | #define INT_UART1 9 | ||
32 | #define INT_UART2 10 | ||
33 | #define INT_UART3 11 | ||
34 | #define INT_UART1_RX 12 | ||
35 | #define INT_UART2_RX 13 | ||
36 | #define INT_UART3_RX 14 | ||
37 | #define INT_USB_OTG 15 | ||
38 | #define INT_MDDI_PRI 16 | ||
39 | #define INT_MDDI_EXT 17 | ||
40 | #define INT_MDDI_CLIENT 18 | ||
41 | #define INT_MDP 19 | ||
42 | #define INT_GRAPHICS 20 | ||
43 | #define INT_ADM_AARM 21 | ||
44 | #define INT_ADSP_A11 22 | ||
45 | #define INT_ADSP_A9_A11 23 | ||
46 | #define INT_SDC1_0 24 | ||
47 | #define INT_SDC1_1 25 | ||
48 | #define INT_SDC2_0 26 | ||
49 | #define INT_SDC2_1 27 | ||
50 | #define INT_KEYSENSE 28 | ||
51 | #define INT_TCHSCRN_SSBI 29 | ||
52 | #define INT_TCHSCRN1 30 | ||
53 | #define INT_TCHSCRN2 31 | ||
54 | |||
55 | #define INT_GPIO_GROUP1 (32 + 0) | ||
56 | #define INT_GPIO_GROUP2 (32 + 1) | ||
57 | #define INT_PWB_I2C (32 + 2) | ||
58 | #define INT_SOFTRESET (32 + 3) | ||
59 | #define INT_NAND_WR_ER_DONE (32 + 4) | ||
60 | #define INT_NAND_OP_DONE (32 + 5) | ||
61 | #define INT_PBUS_ARM11 (32 + 6) | ||
62 | #define INT_AXI_MPU_SMI (32 + 7) | ||
63 | #define INT_AXI_MPU_EBI1 (32 + 8) | ||
64 | #define INT_AD_HSSD (32 + 9) | ||
65 | #define INT_ARM11_PMU (32 + 10) | ||
66 | #define INT_ARM11_DMA (32 + 11) | ||
67 | #define INT_TSIF_IRQ (32 + 12) | ||
68 | #define INT_UART1DM_IRQ (32 + 13) | ||
69 | #define INT_UART1DM_RX (32 + 14) | ||
70 | #define INT_USB_HS (32 + 15) | ||
71 | #define INT_SDC3_0 (32 + 16) | ||
72 | #define INT_SDC3_1 (32 + 17) | ||
73 | #define INT_SDC4_0 (32 + 18) | ||
74 | #define INT_SDC4_1 (32 + 19) | ||
75 | #define INT_UART2DM_RX (32 + 20) | ||
76 | #define INT_UART2DM_IRQ (32 + 21) | ||
77 | |||
78 | /* 22-31 are reserved */ | ||
79 | |||
80 | #define MSM_IRQ_BIT(irq) (1 << ((irq) & 31)) | ||
81 | |||
82 | #define NR_MSM_IRQS 64 | ||
83 | #define NR_GPIO_IRQS 122 | ||
84 | #define NR_BOARD_IRQS 64 | ||
85 | #define NR_IRQS (NR_MSM_IRQS + NR_GPIO_IRQS + NR_BOARD_IRQS) | ||
86 | |||
87 | #define MSM_GPIO_TO_INT(n) (NR_MSM_IRQS + (n)) | ||
88 | |||
89 | #endif | ||
diff --git a/include/asm-arm/arch-msm/memory.h b/include/asm-arm/arch-msm/memory.h new file mode 100644 index 000000000000..b5ce0e9ac86d --- /dev/null +++ b/include/asm-arm/arch-msm/memory.h | |||
@@ -0,0 +1,27 @@ | |||
1 | /* linux/include/asm-arm/arch-msm/memory.h | ||
2 | * | ||
3 | * Copyright (C) 2007 Google, Inc. | ||
4 | * | ||
5 | * This software is licensed under the terms of the GNU General Public | ||
6 | * License version 2, as published by the Free Software Foundation, and | ||
7 | * may be copied, distributed, and modified under those terms. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | */ | ||
15 | |||
16 | #ifndef __ASM_ARCH_MEMORY_H | ||
17 | #define __ASM_ARCH_MEMORY_H | ||
18 | |||
19 | /* physical offset of RAM */ | ||
20 | #define PHYS_OFFSET UL(0x10000000) | ||
21 | |||
22 | /* bus address and physical addresses are identical */ | ||
23 | #define __virt_to_bus(x) __virt_to_phys(x) | ||
24 | #define __bus_to_virt(x) __phys_to_virt(x) | ||
25 | |||
26 | #endif | ||
27 | |||
diff --git a/include/asm-arm/arch-msm/msm_iomap.h b/include/asm-arm/arch-msm/msm_iomap.h new file mode 100644 index 000000000000..b8955cc26fec --- /dev/null +++ b/include/asm-arm/arch-msm/msm_iomap.h | |||
@@ -0,0 +1,104 @@ | |||
1 | /* linux/include/asm-arm/arch-msm/msm_iomap.h | ||
2 | * | ||
3 | * Copyright (C) 2007 Google, Inc. | ||
4 | * Author: Brian Swetland <swetland@google.com> | ||
5 | * | ||
6 | * This software is licensed under the terms of the GNU General Public | ||
7 | * License version 2, as published by the Free Software Foundation, and | ||
8 | * may be copied, distributed, and modified under those terms. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | * | ||
15 | * | ||
16 | * The MSM peripherals are spread all over across 768MB of physical | ||
17 | * space, which makes just having a simple IO_ADDRESS macro to slide | ||
18 | * them into the right virtual location rough. Instead, we will | ||
19 | * provide a master phys->virt mapping for peripherals here. | ||
20 | * | ||
21 | */ | ||
22 | |||
23 | #ifndef __ASM_ARCH_MSM_IOMAP_H | ||
24 | #define __ASM_ARCH_MSM_IOMAP_H | ||
25 | |||
26 | #include <asm/sizes.h> | ||
27 | |||
28 | /* Physical base address and size of peripherals. | ||
29 | * Ordered by the virtual base addresses they will be mapped at. | ||
30 | * | ||
31 | * MSM_VIC_BASE must be an value that can be loaded via a "mov" | ||
32 | * instruction, otherwise entry-macro.S will not compile. | ||
33 | * | ||
34 | * If you add or remove entries here, you'll want to edit the | ||
35 | * msm_io_desc array in arch/arm/mach-msm/io.c to reflect your | ||
36 | * changes. | ||
37 | * | ||
38 | */ | ||
39 | |||
40 | #define MSM_VIC_BASE 0xE0000000 | ||
41 | #define MSM_VIC_PHYS 0xC0000000 | ||
42 | #define MSM_VIC_SIZE SZ_4K | ||
43 | |||
44 | #define MSM_CSR_BASE 0xE0001000 | ||
45 | #define MSM_CSR_PHYS 0xC0100000 | ||
46 | #define MSM_CSR_SIZE SZ_4K | ||
47 | |||
48 | #define MSM_GPT_PHYS MSM_CSR_PHYS | ||
49 | #define MSM_GPT_BASE MSM_CSR_BASE | ||
50 | #define MSM_GPT_SIZE SZ_4K | ||
51 | |||
52 | #define MSM_DMOV_BASE 0xE0002000 | ||
53 | #define MSM_DMOV_PHYS 0xA9700000 | ||
54 | #define MSM_DMOV_SIZE SZ_4K | ||
55 | |||
56 | #define MSM_UART1_BASE 0xE0003000 | ||
57 | #define MSM_UART1_PHYS 0xA9A00000 | ||
58 | #define MSM_UART1_SIZE SZ_4K | ||
59 | |||
60 | #define MSM_UART2_BASE 0xE0004000 | ||
61 | #define MSM_UART2_PHYS 0xA9B00000 | ||
62 | #define MSM_UART2_SIZE SZ_4K | ||
63 | |||
64 | #define MSM_UART3_BASE 0xE0005000 | ||
65 | #define MSM_UART3_PHYS 0xA9C00000 | ||
66 | #define MSM_UART3_SIZE SZ_4K | ||
67 | |||
68 | #define MSM_I2C_BASE 0xE0006000 | ||
69 | #define MSM_I2C_PHYS 0xA9900000 | ||
70 | #define MSM_I2C_SIZE SZ_4K | ||
71 | |||
72 | #define MSM_GPIO1_BASE 0xE0007000 | ||
73 | #define MSM_GPIO1_PHYS 0xA9200000 | ||
74 | #define MSM_GPIO1_SIZE SZ_4K | ||
75 | |||
76 | #define MSM_GPIO2_BASE 0xE0008000 | ||
77 | #define MSM_GPIO2_PHYS 0xA9300000 | ||
78 | #define MSM_GPIO2_SIZE SZ_4K | ||
79 | |||
80 | #define MSM_HSUSB_BASE 0xE0009000 | ||
81 | #define MSM_HSUSB_PHYS 0xA0800000 | ||
82 | #define MSM_HSUSB_SIZE SZ_4K | ||
83 | |||
84 | #define MSM_CLK_CTL_BASE 0xE000A000 | ||
85 | #define MSM_CLK_CTL_PHYS 0xA8600000 | ||
86 | #define MSM_CLK_CTL_SIZE SZ_4K | ||
87 | |||
88 | #define MSM_PMDH_BASE 0xE000B000 | ||
89 | #define MSM_PMDH_PHYS 0xAA600000 | ||
90 | #define MSM_PMDH_SIZE SZ_4K | ||
91 | |||
92 | #define MSM_EMDH_BASE 0xE000C000 | ||
93 | #define MSM_EMDH_PHYS 0xAA700000 | ||
94 | #define MSM_EMDH_SIZE SZ_4K | ||
95 | |||
96 | #define MSM_MDP_BASE 0xE0010000 | ||
97 | #define MSM_MDP_PHYS 0xAA200000 | ||
98 | #define MSM_MDP_SIZE 0x000F0000 | ||
99 | |||
100 | #define MSM_SHARED_RAM_BASE 0xE0100000 | ||
101 | #define MSM_SHARED_RAM_PHYS 0x01F00000 | ||
102 | #define MSM_SHARED_RAM_SIZE SZ_1M | ||
103 | |||
104 | #endif | ||
diff --git a/include/asm-arm/arch-msm/system.h b/include/asm-arm/arch-msm/system.h new file mode 100644 index 000000000000..7c5544bdd0c7 --- /dev/null +++ b/include/asm-arm/arch-msm/system.h | |||
@@ -0,0 +1,23 @@ | |||
1 | /* linux/include/asm-arm/arch-msm/system.h | ||
2 | * | ||
3 | * Copyright (C) 2007 Google, Inc. | ||
4 | * | ||
5 | * This software is licensed under the terms of the GNU General Public | ||
6 | * License version 2, as published by the Free Software Foundation, and | ||
7 | * may be copied, distributed, and modified under those terms. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | */ | ||
15 | |||
16 | #include <asm/hardware.h> | ||
17 | |||
18 | void arch_idle(void); | ||
19 | |||
20 | static inline void arch_reset(char mode) | ||
21 | { | ||
22 | for (;;) ; /* depends on IPC w/ other core */ | ||
23 | } | ||
diff --git a/include/asm-arm/arch-msm/timex.h b/include/asm-arm/arch-msm/timex.h new file mode 100644 index 000000000000..154b23fb3599 --- /dev/null +++ b/include/asm-arm/arch-msm/timex.h | |||
@@ -0,0 +1,20 @@ | |||
1 | /* linux/include/asm-arm/arch-msm/timex.h | ||
2 | * | ||
3 | * Copyright (C) 2007 Google, Inc. | ||
4 | * | ||
5 | * This software is licensed under the terms of the GNU General Public | ||
6 | * License version 2, as published by the Free Software Foundation, and | ||
7 | * may be copied, distributed, and modified under those terms. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | */ | ||
15 | |||
16 | #ifndef __ASM_ARCH_MSM_TIMEX_H | ||
17 | |||
18 | #define CLOCK_TICK_RATE 1000000 | ||
19 | |||
20 | #endif | ||
diff --git a/include/asm-arm/arch-msm/uncompress.h b/include/asm-arm/arch-msm/uncompress.h new file mode 100644 index 000000000000..e91ed786ffec --- /dev/null +++ b/include/asm-arm/arch-msm/uncompress.h | |||
@@ -0,0 +1,36 @@ | |||
1 | /* linux/include/asm-arm/arch-msm/uncompress.h | ||
2 | * | ||
3 | * Copyright (C) 2007 Google, Inc. | ||
4 | * | ||
5 | * This software is licensed under the terms of the GNU General Public | ||
6 | * License version 2, as published by the Free Software Foundation, and | ||
7 | * may be copied, distributed, and modified under those terms. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | */ | ||
15 | |||
16 | #ifndef __ASM_ARCH_MSM_UNCOMPRESS_H | ||
17 | |||
18 | #include "hardware.h" | ||
19 | |||
20 | static void putc(int c) | ||
21 | { | ||
22 | } | ||
23 | |||
24 | static inline void flush(void) | ||
25 | { | ||
26 | } | ||
27 | |||
28 | static inline void arch_decomp_setup(void) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | static inline void arch_decomp_wdog(void) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | #endif | ||
diff --git a/include/asm-arm/arch-msm/vmalloc.h b/include/asm-arm/arch-msm/vmalloc.h new file mode 100644 index 000000000000..60f8d910e825 --- /dev/null +++ b/include/asm-arm/arch-msm/vmalloc.h | |||
@@ -0,0 +1,22 @@ | |||
1 | /* linux/include/asm-arm/arch-msm/vmalloc.h | ||
2 | * | ||
3 | * Copyright (C) 2007 Google, Inc. | ||
4 | * | ||
5 | * This software is licensed under the terms of the GNU General Public | ||
6 | * License version 2, as published by the Free Software Foundation, and | ||
7 | * may be copied, distributed, and modified under those terms. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | */ | ||
15 | |||
16 | #ifndef __ASM_ARCH_MSM_VMALLOC_H | ||
17 | #define __ASM_ARCH_MSM_VMALLOC_H | ||
18 | |||
19 | #define VMALLOC_END (PAGE_OFFSET + 0x10000000) | ||
20 | |||
21 | #endif | ||
22 | |||
diff --git a/include/asm-arm/arch-omap/board-innovator.h b/include/asm-arm/arch-omap/board-innovator.h index b3cf33441f6e..56d2c98e143c 100644 --- a/include/asm-arm/arch-omap/board-innovator.h +++ b/include/asm-arm/arch-omap/board-innovator.h | |||
@@ -37,7 +37,7 @@ | |||
37 | #define OMAP1510P1_EMIFF_PRI_VALUE 0x00 | 37 | #define OMAP1510P1_EMIFF_PRI_VALUE 0x00 |
38 | 38 | ||
39 | #define NR_FPGA_IRQS 24 | 39 | #define NR_FPGA_IRQS 24 |
40 | #define NR_IRQS IH_BOARD_BASE + NR_FPGA_IRQS | 40 | #define NR_IRQS (IH_BOARD_BASE + NR_FPGA_IRQS) |
41 | 41 | ||
42 | #ifndef __ASSEMBLY__ | 42 | #ifndef __ASSEMBLY__ |
43 | void fpga_write(unsigned char val, int reg); | 43 | void fpga_write(unsigned char val, int reg); |
diff --git a/include/asm-arm/arch-omap/eac.h b/include/asm-arm/arch-omap/eac.h index 6662cb02bafc..ccee3b0700b3 100644 --- a/include/asm-arm/arch-omap/eac.h +++ b/include/asm-arm/arch-omap/eac.h | |||
@@ -31,7 +31,6 @@ | |||
31 | #include <asm/arch/hardware.h> | 31 | #include <asm/arch/hardware.h> |
32 | #include <asm/irq.h> | 32 | #include <asm/irq.h> |
33 | 33 | ||
34 | #include <sound/driver.h> | ||
35 | #include <sound/core.h> | 34 | #include <sound/core.h> |
36 | 35 | ||
37 | /* master codec clock source */ | 36 | /* master codec clock source */ |
diff --git a/include/asm-arm/arch-omap/omap-alsa.h b/include/asm-arm/arch-omap/omap-alsa.h index fcaf44c14714..faa0ed23d4ba 100644 --- a/include/asm-arm/arch-omap/omap-alsa.h +++ b/include/asm-arm/arch-omap/omap-alsa.h | |||
@@ -40,7 +40,6 @@ | |||
40 | #ifndef __OMAP_ALSA_H | 40 | #ifndef __OMAP_ALSA_H |
41 | #define __OMAP_ALSA_H | 41 | #define __OMAP_ALSA_H |
42 | 42 | ||
43 | #include <sound/driver.h> | ||
44 | #include <asm/arch/dma.h> | 43 | #include <asm/arch/dma.h> |
45 | #include <sound/core.h> | 44 | #include <sound/core.h> |
46 | #include <sound/pcm.h> | 45 | #include <sound/pcm.h> |
diff --git a/include/asm-arm/arch-omap/tps65010.h b/include/asm-arm/arch-omap/tps65010.h deleted file mode 100644 index b9aa2b3a3909..000000000000 --- a/include/asm-arm/arch-omap/tps65010.h +++ /dev/null | |||
@@ -1,156 +0,0 @@ | |||
1 | /* linux/include/asm-arm/arch-omap/tps65010.h | ||
2 | * | ||
3 | * Functions to access TPS65010 power management device. | ||
4 | * | ||
5 | * Copyright (C) 2004 Dirk Behme <dirk.behme@de.bosch.com> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify it | ||
8 | * under the terms of the GNU General Public License as published by the | ||
9 | * Free Software Foundation; either version 2 of the License, or (at your | ||
10 | * option) any later version. | ||
11 | * | ||
12 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED | ||
13 | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||
14 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN | ||
15 | * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
16 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
17 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | ||
18 | * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | ||
19 | * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
20 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
21 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
22 | * | ||
23 | * You should have received a copy of the GNU General Public License along | ||
24 | * with this program; if not, write to the Free Software Foundation, Inc., | ||
25 | * 675 Mass Ave, Cambridge, MA 02139, USA. | ||
26 | */ | ||
27 | |||
28 | #ifndef __ASM_ARCH_TPS65010_H | ||
29 | #define __ASM_ARCH_TPS65010_H | ||
30 | |||
31 | /* | ||
32 | * ---------------------------------------------------------------------------- | ||
33 | * Registers, all 8 bits | ||
34 | * ---------------------------------------------------------------------------- | ||
35 | */ | ||
36 | |||
37 | #define TPS_CHGSTATUS 0x01 | ||
38 | # define TPS_CHG_USB (1 << 7) | ||
39 | # define TPS_CHG_AC (1 << 6) | ||
40 | # define TPS_CHG_THERM (1 << 5) | ||
41 | # define TPS_CHG_TERM (1 << 4) | ||
42 | # define TPS_CHG_TAPER_TMO (1 << 3) | ||
43 | # define TPS_CHG_CHG_TMO (1 << 2) | ||
44 | # define TPS_CHG_PRECHG_TMO (1 << 1) | ||
45 | # define TPS_CHG_TEMP_ERR (1 << 0) | ||
46 | #define TPS_REGSTATUS 0x02 | ||
47 | # define TPS_REG_ONOFF (1 << 7) | ||
48 | # define TPS_REG_COVER (1 << 6) | ||
49 | # define TPS_REG_UVLO (1 << 5) | ||
50 | # define TPS_REG_NO_CHG (1 << 4) /* tps65013 */ | ||
51 | # define TPS_REG_PG_LD02 (1 << 3) | ||
52 | # define TPS_REG_PG_LD01 (1 << 2) | ||
53 | # define TPS_REG_PG_MAIN (1 << 1) | ||
54 | # define TPS_REG_PG_CORE (1 << 0) | ||
55 | #define TPS_MASK1 0x03 | ||
56 | #define TPS_MASK2 0x04 | ||
57 | #define TPS_ACKINT1 0x05 | ||
58 | #define TPS_ACKINT2 0x06 | ||
59 | #define TPS_CHGCONFIG 0x07 | ||
60 | # define TPS_CHARGE_POR (1 << 7) /* 65010/65012 */ | ||
61 | # define TPS65013_AUA (1 << 7) /* 65011/65013 */ | ||
62 | # define TPS_CHARGE_RESET (1 << 6) | ||
63 | # define TPS_CHARGE_FAST (1 << 5) | ||
64 | # define TPS_CHARGE_CURRENT (3 << 3) | ||
65 | # define TPS_VBUS_500MA (1 << 2) | ||
66 | # define TPS_VBUS_CHARGING (1 << 1) | ||
67 | # define TPS_CHARGE_ENABLE (1 << 0) | ||
68 | #define TPS_LED1_ON 0x08 | ||
69 | #define TPS_LED1_PER 0x09 | ||
70 | #define TPS_LED2_ON 0x0a | ||
71 | #define TPS_LED2_PER 0x0b | ||
72 | #define TPS_VDCDC1 0x0c | ||
73 | # define TPS_ENABLE_LP (1 << 3) | ||
74 | #define TPS_VDCDC2 0x0d | ||
75 | #define TPS_VREGS1 0x0e | ||
76 | # define TPS_LDO2_ENABLE (1 << 7) | ||
77 | # define TPS_LDO2_OFF (1 << 6) | ||
78 | # define TPS_VLDO2_3_0V (3 << 4) | ||
79 | # define TPS_VLDO2_2_75V (2 << 4) | ||
80 | # define TPS_VLDO2_2_5V (1 << 4) | ||
81 | # define TPS_VLDO2_1_8V (0 << 4) | ||
82 | # define TPS_LDO1_ENABLE (1 << 3) | ||
83 | # define TPS_LDO1_OFF (1 << 2) | ||
84 | # define TPS_VLDO1_3_0V (3 << 0) | ||
85 | # define TPS_VLDO1_2_75V (2 << 0) | ||
86 | # define TPS_VLDO1_2_5V (1 << 0) | ||
87 | # define TPS_VLDO1_ADJ (0 << 0) | ||
88 | #define TPS_MASK3 0x0f | ||
89 | #define TPS_DEFGPIO 0x10 | ||
90 | |||
91 | /* | ||
92 | * ---------------------------------------------------------------------------- | ||
93 | * Macros used by exported functions | ||
94 | * ---------------------------------------------------------------------------- | ||
95 | */ | ||
96 | |||
97 | #define LED1 1 | ||
98 | #define LED2 2 | ||
99 | #define OFF 0 | ||
100 | #define ON 1 | ||
101 | #define BLINK 2 | ||
102 | #define GPIO1 1 | ||
103 | #define GPIO2 2 | ||
104 | #define GPIO3 3 | ||
105 | #define GPIO4 4 | ||
106 | #define LOW 0 | ||
107 | #define HIGH 1 | ||
108 | |||
109 | /* | ||
110 | * ---------------------------------------------------------------------------- | ||
111 | * Exported functions | ||
112 | * ---------------------------------------------------------------------------- | ||
113 | */ | ||
114 | |||
115 | /* Draw from VBUS: | ||
116 | * 0 mA -- DON'T DRAW (might supply power instead) | ||
117 | * 100 mA -- usb unit load (slowest charge rate) | ||
118 | * 500 mA -- usb high power (fast battery charge) | ||
119 | */ | ||
120 | extern int tps65010_set_vbus_draw(unsigned mA); | ||
121 | |||
122 | /* tps65010_set_gpio_out_value parameter: | ||
123 | * gpio: GPIO1, GPIO2, GPIO3 or GPIO4 | ||
124 | * value: LOW or HIGH | ||
125 | */ | ||
126 | extern int tps65010_set_gpio_out_value(unsigned gpio, unsigned value); | ||
127 | |||
128 | /* tps65010_set_led parameter: | ||
129 | * led: LED1 or LED2 | ||
130 | * mode: ON, OFF or BLINK | ||
131 | */ | ||
132 | extern int tps65010_set_led(unsigned led, unsigned mode); | ||
133 | |||
134 | /* tps65010_set_vib parameter: | ||
135 | * value: ON or OFF | ||
136 | */ | ||
137 | extern int tps65010_set_vib(unsigned value); | ||
138 | |||
139 | /* tps65010_set_low_pwr parameter: | ||
140 | * mode: ON or OFF | ||
141 | */ | ||
142 | extern int tps65010_set_low_pwr(unsigned mode); | ||
143 | |||
144 | /* tps65010_config_vregs1 parameter: | ||
145 | * value to be written to VREGS1 register | ||
146 | * Note: The complete register is written, set all bits you need | ||
147 | */ | ||
148 | extern int tps65010_config_vregs1(unsigned value); | ||
149 | |||
150 | /* tps65013_set_low_pwr parameter: | ||
151 | * mode: ON or OFF | ||
152 | */ | ||
153 | extern int tps65013_set_low_pwr(unsigned mode); | ||
154 | |||
155 | #endif /* __ASM_ARCH_TPS65010_H */ | ||
156 | |||
diff --git a/include/asm-arm/arch-orion/debug-macro.S b/include/asm-arm/arch-orion/debug-macro.S new file mode 100644 index 000000000000..e2a80641f214 --- /dev/null +++ b/include/asm-arm/arch-orion/debug-macro.S | |||
@@ -0,0 +1,17 @@ | |||
1 | /* | ||
2 | * linux/include/asm-arm/arch-orion/debug-macro.S | ||
3 | * | ||
4 | * Debugging macro include header | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | |||
11 | .macro addruart,rx | ||
12 | mov \rx, #0xf1000000 | ||
13 | orr \rx, \rx, #0x00012000 | ||
14 | .endm | ||
15 | |||
16 | #define UART_SHIFT 2 | ||
17 | #include <asm/hardware/debug-8250.S> | ||
diff --git a/include/asm-arm/arch-orion/dma.h b/include/asm-arm/arch-orion/dma.h new file mode 100644 index 000000000000..40a8c178f10d --- /dev/null +++ b/include/asm-arm/arch-orion/dma.h | |||
@@ -0,0 +1 @@ | |||
/* empty */ | |||
diff --git a/include/asm-arm/arch-orion/entry-macro.S b/include/asm-arm/arch-orion/entry-macro.S new file mode 100644 index 000000000000..b76075a7e44b --- /dev/null +++ b/include/asm-arm/arch-orion/entry-macro.S | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * include/asm-arm/arch-orion/entry-macro.S | ||
3 | * | ||
4 | * Low-level IRQ helper macros for Orion platforms | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without any | ||
8 | * warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | #include <asm/arch/orion.h> | ||
12 | |||
13 | .macro disable_fiq | ||
14 | .endm | ||
15 | |||
16 | .macro arch_ret_to_user, tmp1, tmp2 | ||
17 | .endm | ||
18 | |||
19 | .macro get_irqnr_preamble, base, tmp | ||
20 | ldr \base, =MAIN_IRQ_CAUSE | ||
21 | .endm | ||
22 | |||
23 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp | ||
24 | ldr \irqstat, [\base, #0] @ main cause | ||
25 | ldr \tmp, [\base, #(MAIN_IRQ_MASK - MAIN_IRQ_CAUSE)] @ main mask | ||
26 | mov \irqnr, #0 @ default irqnr | ||
27 | @ find cause bits that are unmasked | ||
28 | ands \irqstat, \irqstat, \tmp @ clear Z flag if any | ||
29 | clzne \irqnr, \irqstat @ calc irqnr | ||
30 | rsbne \irqnr, \irqnr, #31 | ||
31 | .endm | ||
diff --git a/include/asm-arm/arch-orion/gpio.h b/include/asm-arm/arch-orion/gpio.h new file mode 100644 index 000000000000..d66284f9a14c --- /dev/null +++ b/include/asm-arm/arch-orion/gpio.h | |||
@@ -0,0 +1,28 @@ | |||
1 | /* | ||
2 | * include/asm-arm/arch-orion/gpio.h | ||
3 | * | ||
4 | * This file is licensed under the terms of the GNU General Public | ||
5 | * License version 2. This program is licensed "as is" without any | ||
6 | * warranty of any kind, whether express or implied. | ||
7 | */ | ||
8 | |||
9 | extern int gpio_request(unsigned pin, const char *label); | ||
10 | extern void gpio_free(unsigned pin); | ||
11 | extern int gpio_direction_input(unsigned pin); | ||
12 | extern int gpio_direction_output(unsigned pin, int value); | ||
13 | extern int gpio_get_value(unsigned pin); | ||
14 | extern void gpio_set_value(unsigned pin, int value); | ||
15 | extern void orion_gpio_set_blink(unsigned pin, int blink); | ||
16 | extern void gpio_display(void); /* debug */ | ||
17 | |||
18 | static inline int gpio_to_irq(int pin) | ||
19 | { | ||
20 | return pin + IRQ_ORION_GPIO_START; | ||
21 | } | ||
22 | |||
23 | static inline int irq_to_gpio(int irq) | ||
24 | { | ||
25 | return irq - IRQ_ORION_GPIO_START; | ||
26 | } | ||
27 | |||
28 | #include <asm-generic/gpio.h> /* cansleep wrappers */ | ||
diff --git a/include/asm-arm/arch-orion/hardware.h b/include/asm-arm/arch-orion/hardware.h new file mode 100644 index 000000000000..8a12d213fbdc --- /dev/null +++ b/include/asm-arm/arch-orion/hardware.h | |||
@@ -0,0 +1,24 @@ | |||
1 | /* | ||
2 | * include/asm-arm/arch-orion/hardware.h | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | * | ||
8 | */ | ||
9 | |||
10 | #ifndef __ASM_ARCH_HARDWARE_H__ | ||
11 | #define __ASM_ARCH_HARDWARE_H__ | ||
12 | |||
13 | #include "orion.h" | ||
14 | |||
15 | #define PCI_MEMORY_VADDR ORION_PCI_SYS_MEM_BASE | ||
16 | #define PCI_IO_VADDR ORION_PCI_SYS_IO_BASE | ||
17 | |||
18 | #define pcibios_assign_all_busses() 1 | ||
19 | |||
20 | #define PCIBIOS_MIN_IO 0x1000 | ||
21 | #define PCIBIOS_MIN_MEM 0x01000000 | ||
22 | #define PCIMEM_BASE PCI_MEMORY_VADDR /* mem base for VGA */ | ||
23 | |||
24 | #endif /* _ASM_ARCH_HARDWARE_H */ | ||
diff --git a/include/asm-arm/arch-orion/io.h b/include/asm-arm/arch-orion/io.h new file mode 100644 index 000000000000..e0b8c39b9167 --- /dev/null +++ b/include/asm-arm/arch-orion/io.h | |||
@@ -0,0 +1,27 @@ | |||
1 | /* | ||
2 | * include/asm-arm/arch-orion/io.h | ||
3 | * | ||
4 | * Tzachi Perelstein <tzachi@marvell.com> | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without any | ||
8 | * warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | #ifndef __ASM_ARM_ARCH_IO_H | ||
12 | #define __ASM_ARM_ARCH_IO_H | ||
13 | |||
14 | #include "orion.h" | ||
15 | |||
16 | #define IO_SPACE_LIMIT 0xffffffff | ||
17 | #define IO_SPACE_REMAP ORION_PCI_SYS_IO_BASE | ||
18 | |||
19 | static inline void __iomem *__io(unsigned long addr) | ||
20 | { | ||
21 | return (void __iomem *)addr; | ||
22 | } | ||
23 | |||
24 | #define __io(a) __io(a) | ||
25 | #define __mem_pci(a) (a) | ||
26 | |||
27 | #endif | ||
diff --git a/include/asm-arm/arch-orion/irqs.h b/include/asm-arm/arch-orion/irqs.h new file mode 100644 index 000000000000..eea65ca6076a --- /dev/null +++ b/include/asm-arm/arch-orion/irqs.h | |||
@@ -0,0 +1,61 @@ | |||
1 | /* | ||
2 | * include/asm-arm/arch-orion/irqs.h | ||
3 | * | ||
4 | * IRQ definitions for Orion SoC | ||
5 | * | ||
6 | * Maintainer: Tzachi Perelstein <tzachi@marvell.com> | ||
7 | * | ||
8 | * This file is licensed under the terms of the GNU General Public | ||
9 | * License version 2. This program is licensed "as is" without any | ||
10 | * warranty of any kind, whether express or implied. | ||
11 | */ | ||
12 | |||
13 | #ifndef __ASM_ARCH_IRQS_H__ | ||
14 | #define __ASM_ARCH_IRQS_H__ | ||
15 | |||
16 | #include "orion.h" /* need GPIO_MAX */ | ||
17 | |||
18 | /* | ||
19 | * Orion Main Interrupt Controller | ||
20 | */ | ||
21 | #define IRQ_ORION_BRIDGE 0 | ||
22 | #define IRQ_ORION_DOORBELL_H2C 1 | ||
23 | #define IRQ_ORION_DOORBELL_C2H 2 | ||
24 | #define IRQ_ORION_UART0 3 | ||
25 | #define IRQ_ORION_UART1 4 | ||
26 | #define IRQ_ORION_I2C 5 | ||
27 | #define IRQ_ORION_GPIO_0_7 6 | ||
28 | #define IRQ_ORION_GPIO_8_15 7 | ||
29 | #define IRQ_ORION_GPIO_16_23 8 | ||
30 | #define IRQ_ORION_GPIO_24_31 9 | ||
31 | #define IRQ_ORION_PCIE0_ERR 10 | ||
32 | #define IRQ_ORION_PCIE0_INT 11 | ||
33 | #define IRQ_ORION_USB1_CTRL 12 | ||
34 | #define IRQ_ORION_DEV_BUS_ERR 14 | ||
35 | #define IRQ_ORION_PCI_ERR 15 | ||
36 | #define IRQ_ORION_USB_BR_ERR 16 | ||
37 | #define IRQ_ORION_USB0_CTRL 17 | ||
38 | #define IRQ_ORION_ETH_RX 18 | ||
39 | #define IRQ_ORION_ETH_TX 19 | ||
40 | #define IRQ_ORION_ETH_MISC 20 | ||
41 | #define IRQ_ORION_ETH_SUM 21 | ||
42 | #define IRQ_ORION_ETH_ERR 22 | ||
43 | #define IRQ_ORION_IDMA_ERR 23 | ||
44 | #define IRQ_ORION_IDMA_0 24 | ||
45 | #define IRQ_ORION_IDMA_1 25 | ||
46 | #define IRQ_ORION_IDMA_2 26 | ||
47 | #define IRQ_ORION_IDMA_3 27 | ||
48 | #define IRQ_ORION_CESA 28 | ||
49 | #define IRQ_ORION_SATA 29 | ||
50 | #define IRQ_ORION_XOR0 30 | ||
51 | #define IRQ_ORION_XOR1 31 | ||
52 | |||
53 | /* | ||
54 | * Orion General Purpose Pins | ||
55 | */ | ||
56 | #define IRQ_ORION_GPIO_START 32 | ||
57 | #define NR_GPIO_IRQS GPIO_MAX | ||
58 | |||
59 | #define NR_IRQS (IRQ_ORION_GPIO_START + NR_GPIO_IRQS) | ||
60 | |||
61 | #endif /* __ASM_ARCH_IRQS_H__ */ | ||
diff --git a/include/asm-arm/arch-orion/memory.h b/include/asm-arm/arch-orion/memory.h new file mode 100644 index 000000000000..d954dba87ced --- /dev/null +++ b/include/asm-arm/arch-orion/memory.h | |||
@@ -0,0 +1,15 @@ | |||
1 | /* | ||
2 | * include/asm-arm/arch-orion/memory.h | ||
3 | * | ||
4 | * Marvell Orion memory definitions | ||
5 | */ | ||
6 | |||
7 | #ifndef __ASM_ARCH_MMU_H | ||
8 | #define __ASM_ARCH_MMU_H | ||
9 | |||
10 | #define PHYS_OFFSET UL(0x00000000) | ||
11 | |||
12 | #define __virt_to_bus(x) __virt_to_phys(x) | ||
13 | #define __bus_to_virt(x) __phys_to_virt(x) | ||
14 | |||
15 | #endif | ||
diff --git a/include/asm-arm/arch-orion/orion.h b/include/asm-arm/arch-orion/orion.h new file mode 100644 index 000000000000..f787f752e58c --- /dev/null +++ b/include/asm-arm/arch-orion/orion.h | |||
@@ -0,0 +1,143 @@ | |||
1 | /* | ||
2 | * include/asm-arm/arch-orion/orion.h | ||
3 | * | ||
4 | * Generic definitions of Orion SoC flavors: | ||
5 | * Orion-1, Orion-NAS, Orion-VoIP, and Orion-2. | ||
6 | * | ||
7 | * Maintainer: Tzachi Perelstein <tzachi@marvell.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __ASM_ARCH_ORION_H__ | ||
15 | #define __ASM_ARCH_ORION_H__ | ||
16 | |||
17 | /******************************************************************************* | ||
18 | * Orion Address Map | ||
19 | * Use the same mapping (1:1 virtual:physical) of internal registers and | ||
20 | * PCI system (PCI+PCIE) for all machines. | ||
21 | * Each machine defines the rest of its mapping (e.g. device bus flashes) | ||
22 | ******************************************************************************/ | ||
23 | #define ORION_REGS_BASE 0xf1000000 | ||
24 | #define ORION_REGS_SIZE SZ_1M | ||
25 | |||
26 | #define ORION_PCI_SYS_MEM_BASE 0xe0000000 | ||
27 | #define ORION_PCIE_MEM_BASE ORION_PCI_SYS_MEM_BASE | ||
28 | #define ORION_PCIE_MEM_SIZE SZ_128M | ||
29 | #define ORION_PCI_MEM_BASE (ORION_PCIE_MEM_BASE + ORION_PCIE_MEM_SIZE) | ||
30 | #define ORION_PCI_MEM_SIZE SZ_128M | ||
31 | |||
32 | #define ORION_PCI_SYS_IO_BASE 0xf2000000 | ||
33 | #define ORION_PCIE_IO_BASE ORION_PCI_SYS_IO_BASE | ||
34 | #define ORION_PCIE_IO_SIZE SZ_1M | ||
35 | #define ORION_PCIE_IO_REMAP (ORION_PCIE_IO_BASE - ORION_PCI_SYS_IO_BASE) | ||
36 | #define ORION_PCI_IO_BASE (ORION_PCIE_IO_BASE + ORION_PCIE_IO_SIZE) | ||
37 | #define ORION_PCI_IO_SIZE SZ_1M | ||
38 | #define ORION_PCI_IO_REMAP (ORION_PCI_IO_BASE - ORION_PCI_SYS_IO_BASE) | ||
39 | /* Relevant only for Orion-NAS */ | ||
40 | #define ORION_PCIE_WA_BASE 0xf0000000 | ||
41 | #define ORION_PCIE_WA_SIZE SZ_16M | ||
42 | |||
43 | /******************************************************************************* | ||
44 | * Supported Devices & Revisions | ||
45 | ******************************************************************************/ | ||
46 | /* Orion-1 (88F5181) */ | ||
47 | #define MV88F5181_DEV_ID 0x5181 | ||
48 | #define MV88F5181_REV_B1 3 | ||
49 | /* Orion-NAS (88F5182) */ | ||
50 | #define MV88F5182_DEV_ID 0x5182 | ||
51 | #define MV88F5182_REV_A2 2 | ||
52 | /* Orion-2 (88F5281) */ | ||
53 | #define MV88F5281_DEV_ID 0x5281 | ||
54 | #define MV88F5281_REV_D1 5 | ||
55 | #define MV88F5281_REV_D2 6 | ||
56 | |||
57 | /******************************************************************************* | ||
58 | * Orion Registers Map | ||
59 | ******************************************************************************/ | ||
60 | #define ORION_DDR_REG_BASE (ORION_REGS_BASE | 0x00000) | ||
61 | #define ORION_DEV_BUS_REG_BASE (ORION_REGS_BASE | 0x10000) | ||
62 | #define ORION_BRIDGE_REG_BASE (ORION_REGS_BASE | 0x20000) | ||
63 | #define ORION_PCI_REG_BASE (ORION_REGS_BASE | 0x30000) | ||
64 | #define ORION_PCIE_REG_BASE (ORION_REGS_BASE | 0x40000) | ||
65 | #define ORION_USB0_REG_BASE (ORION_REGS_BASE | 0x50000) | ||
66 | #define ORION_ETH_REG_BASE (ORION_REGS_BASE | 0x70000) | ||
67 | #define ORION_SATA_REG_BASE (ORION_REGS_BASE | 0x80000) | ||
68 | #define ORION_USB1_REG_BASE (ORION_REGS_BASE | 0xa0000) | ||
69 | |||
70 | #define ORION_DDR_REG(x) (ORION_DDR_REG_BASE | (x)) | ||
71 | #define ORION_DEV_BUS_REG(x) (ORION_DEV_BUS_REG_BASE | (x)) | ||
72 | #define ORION_BRIDGE_REG(x) (ORION_BRIDGE_REG_BASE | (x)) | ||
73 | #define ORION_PCI_REG(x) (ORION_PCI_REG_BASE | (x)) | ||
74 | #define ORION_PCIE_REG(x) (ORION_PCIE_REG_BASE | (x)) | ||
75 | #define ORION_USB0_REG(x) (ORION_USB0_REG_BASE | (x)) | ||
76 | #define ORION_USB1_REG(x) (ORION_USB1_REG_BASE | (x)) | ||
77 | #define ORION_ETH_REG(x) (ORION_ETH_REG_BASE | (x)) | ||
78 | #define ORION_SATA_REG(x) (ORION_SATA_REG_BASE | (x)) | ||
79 | |||
80 | /******************************************************************************* | ||
81 | * Device Bus Registers | ||
82 | ******************************************************************************/ | ||
83 | #define MPP_0_7_CTRL ORION_DEV_BUS_REG(0x000) | ||
84 | #define MPP_8_15_CTRL ORION_DEV_BUS_REG(0x004) | ||
85 | #define MPP_16_19_CTRL ORION_DEV_BUS_REG(0x050) | ||
86 | #define MPP_DEV_CTRL ORION_DEV_BUS_REG(0x008) | ||
87 | #define MPP_RESET_SAMPLE ORION_DEV_BUS_REG(0x010) | ||
88 | #define GPIO_OUT ORION_DEV_BUS_REG(0x100) | ||
89 | #define GPIO_IO_CONF ORION_DEV_BUS_REG(0x104) | ||
90 | #define GPIO_BLINK_EN ORION_DEV_BUS_REG(0x108) | ||
91 | #define GPIO_IN_POL ORION_DEV_BUS_REG(0x10c) | ||
92 | #define GPIO_DATA_IN ORION_DEV_BUS_REG(0x110) | ||
93 | #define GPIO_EDGE_CAUSE ORION_DEV_BUS_REG(0x114) | ||
94 | #define GPIO_EDGE_MASK ORION_DEV_BUS_REG(0x118) | ||
95 | #define GPIO_LEVEL_MASK ORION_DEV_BUS_REG(0x11c) | ||
96 | #define DEV_BANK_0_PARAM ORION_DEV_BUS_REG(0x45c) | ||
97 | #define DEV_BANK_1_PARAM ORION_DEV_BUS_REG(0x460) | ||
98 | #define DEV_BANK_2_PARAM ORION_DEV_BUS_REG(0x464) | ||
99 | #define DEV_BANK_BOOT_PARAM ORION_DEV_BUS_REG(0x46c) | ||
100 | #define DEV_BUS_CTRL ORION_DEV_BUS_REG(0x4c0) | ||
101 | #define DEV_BUS_INT_CAUSE ORION_DEV_BUS_REG(0x4d0) | ||
102 | #define DEV_BUS_INT_MASK ORION_DEV_BUS_REG(0x4d4) | ||
103 | #define I2C_BASE ORION_DEV_BUS_REG(0x1000) | ||
104 | #define UART0_BASE ORION_DEV_BUS_REG(0x2000) | ||
105 | #define UART1_BASE ORION_DEV_BUS_REG(0x2100) | ||
106 | #define GPIO_MAX 32 | ||
107 | |||
108 | /*************************************************************************** | ||
109 | * Orion CPU Bridge Registers | ||
110 | **************************************************************************/ | ||
111 | #define CPU_CONF ORION_BRIDGE_REG(0x100) | ||
112 | #define CPU_CTRL ORION_BRIDGE_REG(0x104) | ||
113 | #define CPU_RESET_MASK ORION_BRIDGE_REG(0x108) | ||
114 | #define CPU_SOFT_RESET ORION_BRIDGE_REG(0x10c) | ||
115 | #define POWER_MNG_CTRL_REG ORION_BRIDGE_REG(0x11C) | ||
116 | #define BRIDGE_CAUSE ORION_BRIDGE_REG(0x110) | ||
117 | #define BRIDGE_MASK ORION_BRIDGE_REG(0x114) | ||
118 | #define MAIN_IRQ_CAUSE ORION_BRIDGE_REG(0x200) | ||
119 | #define MAIN_IRQ_MASK ORION_BRIDGE_REG(0x204) | ||
120 | #define TIMER_CTRL ORION_BRIDGE_REG(0x300) | ||
121 | #define TIMER_VAL(x) ORION_BRIDGE_REG(0x314 + ((x) * 8)) | ||
122 | #define TIMER_VAL_RELOAD(x) ORION_BRIDGE_REG(0x310 + ((x) * 8)) | ||
123 | |||
124 | #ifndef __ASSEMBLY__ | ||
125 | |||
126 | /******************************************************************************* | ||
127 | * Helpers to access Orion registers | ||
128 | ******************************************************************************/ | ||
129 | #include <asm/types.h> | ||
130 | #include <asm/io.h> | ||
131 | |||
132 | #define orion_read(r) __raw_readl(r) | ||
133 | #define orion_write(r, val) __raw_writel(val, r) | ||
134 | |||
135 | /* | ||
136 | * These are not preempt safe. Locks, if needed, must be taken care by caller. | ||
137 | */ | ||
138 | #define orion_setbits(r, mask) orion_write((r), orion_read(r) | (mask)) | ||
139 | #define orion_clrbits(r, mask) orion_write((r), orion_read(r) & ~(mask)) | ||
140 | |||
141 | #endif /* __ASSEMBLY__ */ | ||
142 | |||
143 | #endif /* __ASM_ARCH_ORION_H__ */ | ||
diff --git a/include/asm-arm/arch-orion/platform.h b/include/asm-arm/arch-orion/platform.h new file mode 100644 index 000000000000..143c38e2fa0b --- /dev/null +++ b/include/asm-arm/arch-orion/platform.h | |||
@@ -0,0 +1,25 @@ | |||
1 | /* | ||
2 | * asm-arm/arch-orion/platform.h | ||
3 | * | ||
4 | * Tzachi Perelstein <tzachi@marvell.com> | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without any | ||
8 | * warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | #ifndef __ASM_ARCH_PLATFORM_H__ | ||
12 | #define __ASM_ARCH_PLATFORM_H__ | ||
13 | |||
14 | /* | ||
15 | * Device bus NAND private data | ||
16 | */ | ||
17 | struct orion_nand_data { | ||
18 | struct mtd_partition *parts; | ||
19 | u32 nr_parts; | ||
20 | u8 ale; /* address line number connected to ALE */ | ||
21 | u8 cle; /* address line number connected to CLE */ | ||
22 | u8 width; /* buswidth */ | ||
23 | }; | ||
24 | |||
25 | #endif | ||
diff --git a/include/asm-arm/arch-orion/system.h b/include/asm-arm/arch-orion/system.h new file mode 100644 index 000000000000..17704c68f90e --- /dev/null +++ b/include/asm-arm/arch-orion/system.h | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * include/asm-arm/arch-orion/system.h | ||
3 | * | ||
4 | * Tzachi Perelstein <tzachi@marvell.com> | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without any | ||
8 | * warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | #ifndef __ASM_ARCH_SYSTEM_H | ||
12 | #define __ASM_ARCH_SYSTEM_H | ||
13 | |||
14 | #include <asm/arch/hardware.h> | ||
15 | #include <asm/arch/orion.h> | ||
16 | |||
17 | static inline void arch_idle(void) | ||
18 | { | ||
19 | cpu_do_idle(); | ||
20 | } | ||
21 | |||
22 | static inline void arch_reset(char mode) | ||
23 | { | ||
24 | /* | ||
25 | * Enable and issue soft reset | ||
26 | */ | ||
27 | orion_setbits(CPU_RESET_MASK, (1 << 2)); | ||
28 | orion_setbits(CPU_SOFT_RESET, 1); | ||
29 | } | ||
30 | |||
31 | #endif | ||
diff --git a/include/asm-arm/arch-orion/timex.h b/include/asm-arm/arch-orion/timex.h new file mode 100644 index 000000000000..26c2c91eecf0 --- /dev/null +++ b/include/asm-arm/arch-orion/timex.h | |||
@@ -0,0 +1,12 @@ | |||
1 | /* | ||
2 | * include/asm-arm/arch-orion/timex.h | ||
3 | * | ||
4 | * Tzachi Perelstein <tzachi@marvell.com> | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without any | ||
8 | * warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | #define ORION_TCLK 166666667 | ||
12 | #define CLOCK_TICK_RATE ORION_TCLK | ||
diff --git a/include/asm-arm/arch-orion/uncompress.h b/include/asm-arm/arch-orion/uncompress.h new file mode 100644 index 000000000000..a1a222fb438c --- /dev/null +++ b/include/asm-arm/arch-orion/uncompress.h | |||
@@ -0,0 +1,44 @@ | |||
1 | /* | ||
2 | * include/asm-arm/arch-orion/uncompress.h | ||
3 | * | ||
4 | * Tzachi Perelstein <tzachi@marvell.com> | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without any | ||
8 | * warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | #include <asm/arch/orion.h> | ||
12 | |||
13 | #define MV_UART_LSR ((volatile unsigned char *)(UART0_BASE + 0x14)) | ||
14 | #define MV_UART_THR ((volatile unsigned char *)(UART0_BASE + 0x0)) | ||
15 | |||
16 | #define LSR_THRE 0x20 | ||
17 | |||
18 | static void putc(const char c) | ||
19 | { | ||
20 | int j = 0x1000; | ||
21 | while (--j && !(*MV_UART_LSR & LSR_THRE)) | ||
22 | barrier(); | ||
23 | *MV_UART_THR = c; | ||
24 | } | ||
25 | |||
26 | static void flush(void) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | static void orion_early_putstr(const char *ptr) | ||
31 | { | ||
32 | char c; | ||
33 | while ((c = *ptr++) != '\0') { | ||
34 | if (c == '\n') | ||
35 | putc('\r'); | ||
36 | putc(c); | ||
37 | } | ||
38 | } | ||
39 | |||
40 | /* | ||
41 | * nothing to do | ||
42 | */ | ||
43 | #define arch_decomp_setup() | ||
44 | #define arch_decomp_wdog() | ||
diff --git a/include/asm-arm/arch-orion/vmalloc.h b/include/asm-arm/arch-orion/vmalloc.h new file mode 100644 index 000000000000..23e2a102fe0c --- /dev/null +++ b/include/asm-arm/arch-orion/vmalloc.h | |||
@@ -0,0 +1,5 @@ | |||
1 | /* | ||
2 | * include/asm-arm/arch-orion/vmalloc.h | ||
3 | */ | ||
4 | |||
5 | #define VMALLOC_END 0xf0000000 | ||
diff --git a/include/asm-arm/arch-pxa/audio.h b/include/asm-arm/arch-pxa/audio.h index 17eccd720136..52bbe3bc25e1 100644 --- a/include/asm-arm/arch-pxa/audio.h +++ b/include/asm-arm/arch-pxa/audio.h | |||
@@ -1,7 +1,6 @@ | |||
1 | #ifndef __ASM_ARCH_AUDIO_H__ | 1 | #ifndef __ASM_ARCH_AUDIO_H__ |
2 | #define __ASM_ARCH_AUDIO_H__ | 2 | #define __ASM_ARCH_AUDIO_H__ |
3 | 3 | ||
4 | #include <sound/driver.h> | ||
5 | #include <sound/core.h> | 4 | #include <sound/core.h> |
6 | #include <sound/pcm.h> | 5 | #include <sound/pcm.h> |
7 | 6 | ||
diff --git a/include/asm-arm/arch-pxa/colibri.h b/include/asm-arm/arch-pxa/colibri.h new file mode 100644 index 000000000000..2ae373fb5675 --- /dev/null +++ b/include/asm-arm/arch-pxa/colibri.h | |||
@@ -0,0 +1,19 @@ | |||
1 | #ifndef _COLIBRI_H_ | ||
2 | #define _COLIBRI_H_ | ||
3 | |||
4 | /* physical memory regions */ | ||
5 | #define COLIBRI_FLASH_PHYS (PXA_CS0_PHYS) /* Flash region */ | ||
6 | #define COLIBRI_ETH_PHYS (PXA_CS2_PHYS) /* Ethernet DM9000 region */ | ||
7 | #define COLIBRI_SDRAM_BASE 0xa0000000 /* SDRAM region */ | ||
8 | |||
9 | /* virtual memory regions */ | ||
10 | #define COLIBRI_DISK_VIRT 0xF0000000 /* Disk On Chip region */ | ||
11 | |||
12 | /* size of flash */ | ||
13 | #define COLIBRI_FLASH_SIZE 0x02000000 /* Flash size 32 MB */ | ||
14 | |||
15 | /* Ethernet Controller Davicom DM9000 */ | ||
16 | #define GPIO_DM9000 114 | ||
17 | #define COLIBRI_ETH_IRQ IRQ_GPIO(GPIO_DM9000) | ||
18 | |||
19 | #endif /* _COLIBRI_H_ */ | ||
diff --git a/include/asm-arm/arch-pxa/corgi.h b/include/asm-arm/arch-pxa/corgi.h index e554caa0d18b..bf856503baf6 100644 --- a/include/asm-arm/arch-pxa/corgi.h +++ b/include/asm-arm/arch-pxa/corgi.h | |||
@@ -104,7 +104,6 @@ | |||
104 | */ | 104 | */ |
105 | extern struct platform_device corgiscoop_device; | 105 | extern struct platform_device corgiscoop_device; |
106 | extern struct platform_device corgissp_device; | 106 | extern struct platform_device corgissp_device; |
107 | extern struct platform_device corgifb_device; | ||
108 | 107 | ||
109 | #endif /* __ASM_ARCH_CORGI_H */ | 108 | #endif /* __ASM_ARCH_CORGI_H */ |
110 | 109 | ||
diff --git a/include/asm-arm/arch-pxa/gpio.h b/include/asm-arm/arch-pxa/gpio.h index 9dbc2dc794f7..bdbf5f9ffdd5 100644 --- a/include/asm-arm/arch-pxa/gpio.h +++ b/include/asm-arm/arch-pxa/gpio.h | |||
@@ -28,43 +28,35 @@ | |||
28 | #include <asm/irq.h> | 28 | #include <asm/irq.h> |
29 | #include <asm/hardware.h> | 29 | #include <asm/hardware.h> |
30 | 30 | ||
31 | static inline int gpio_request(unsigned gpio, const char *label) | 31 | #include <asm-generic/gpio.h> |
32 | { | ||
33 | return 0; | ||
34 | } | ||
35 | 32 | ||
36 | static inline void gpio_free(unsigned gpio) | ||
37 | { | ||
38 | return; | ||
39 | } | ||
40 | 33 | ||
41 | extern int gpio_direction_input(unsigned gpio); | 34 | /* NOTE: some PXAs have fewer on-chip GPIOs (like PXA255, with 85). |
42 | extern int gpio_direction_output(unsigned gpio, int value); | 35 | * Those cases currently cause holes in the GPIO number space. |
36 | */ | ||
37 | #define NR_BUILTIN_GPIO 128 | ||
43 | 38 | ||
44 | static inline int __gpio_get_value(unsigned gpio) | 39 | static inline int gpio_get_value(unsigned gpio) |
45 | { | 40 | { |
46 | return GPLR(gpio) & GPIO_bit(gpio); | 41 | if (__builtin_constant_p(gpio) && (gpio < NR_BUILTIN_GPIO)) |
42 | return GPLR(gpio) & GPIO_bit(gpio); | ||
43 | else | ||
44 | return __gpio_get_value(gpio); | ||
47 | } | 45 | } |
48 | 46 | ||
49 | #define gpio_get_value(gpio) \ | 47 | static inline void gpio_set_value(unsigned gpio, int value) |
50 | (__builtin_constant_p(gpio) ? \ | ||
51 | __gpio_get_value(gpio) : \ | ||
52 | pxa_gpio_get_value(gpio)) | ||
53 | |||
54 | static inline void __gpio_set_value(unsigned gpio, int value) | ||
55 | { | 48 | { |
56 | if (value) | 49 | if (__builtin_constant_p(gpio) && (gpio < NR_BUILTIN_GPIO)) { |
57 | GPSR(gpio) = GPIO_bit(gpio); | 50 | if (value) |
58 | else | 51 | GPSR(gpio) = GPIO_bit(gpio); |
59 | GPCR(gpio) = GPIO_bit(gpio); | 52 | else |
53 | GPCR(gpio) = GPIO_bit(gpio); | ||
54 | } else { | ||
55 | __gpio_set_value(gpio, value); | ||
56 | } | ||
60 | } | 57 | } |
61 | 58 | ||
62 | #define gpio_set_value(gpio,value) \ | 59 | #define gpio_cansleep __gpio_cansleep |
63 | (__builtin_constant_p(gpio) ? \ | ||
64 | __gpio_set_value(gpio, value) : \ | ||
65 | pxa_gpio_set_value(gpio, value)) | ||
66 | |||
67 | #include <asm-generic/gpio.h> /* cansleep wrappers */ | ||
68 | 60 | ||
69 | #define gpio_to_irq(gpio) IRQ_GPIO(gpio) | 61 | #define gpio_to_irq(gpio) IRQ_GPIO(gpio) |
70 | #define irq_to_gpio(irq) IRQ_TO_GPIO(irq) | 62 | #define irq_to_gpio(irq) IRQ_TO_GPIO(irq) |
diff --git a/include/asm-arm/arch-pxa/hardware.h b/include/asm-arm/arch-pxa/hardware.h index ab2d963e742a..e25558faa5a4 100644 --- a/include/asm-arm/arch-pxa/hardware.h +++ b/include/asm-arm/arch-pxa/hardware.h | |||
@@ -121,38 +121,32 @@ | |||
121 | 121 | ||
122 | #define cpu_is_pxa21x() \ | 122 | #define cpu_is_pxa21x() \ |
123 | ({ \ | 123 | ({ \ |
124 | unsigned int id = read_cpuid(CPUID_ID); \ | 124 | __cpu_is_pxa21x(read_cpuid_id()); \ |
125 | __cpu_is_pxa21x(id); \ | ||
126 | }) | 125 | }) |
127 | 126 | ||
128 | #define cpu_is_pxa25x() \ | 127 | #define cpu_is_pxa25x() \ |
129 | ({ \ | 128 | ({ \ |
130 | unsigned int id = read_cpuid(CPUID_ID); \ | 129 | __cpu_is_pxa25x(read_cpuid_id()); \ |
131 | __cpu_is_pxa25x(id); \ | ||
132 | }) | 130 | }) |
133 | 131 | ||
134 | #define cpu_is_pxa27x() \ | 132 | #define cpu_is_pxa27x() \ |
135 | ({ \ | 133 | ({ \ |
136 | unsigned int id = read_cpuid(CPUID_ID); \ | 134 | __cpu_is_pxa27x(read_cpuid_id()); \ |
137 | __cpu_is_pxa27x(id); \ | ||
138 | }) | 135 | }) |
139 | 136 | ||
140 | #define cpu_is_pxa300() \ | 137 | #define cpu_is_pxa300() \ |
141 | ({ \ | 138 | ({ \ |
142 | unsigned int id = read_cpuid(CPUID_ID); \ | 139 | __cpu_is_pxa300(read_cpuid_id()); \ |
143 | __cpu_is_pxa300(id); \ | ||
144 | }) | 140 | }) |
145 | 141 | ||
146 | #define cpu_is_pxa310() \ | 142 | #define cpu_is_pxa310() \ |
147 | ({ \ | 143 | ({ \ |
148 | unsigned int id = read_cpuid(CPUID_ID); \ | 144 | __cpu_is_pxa310(read_cpuid_id()); \ |
149 | __cpu_is_pxa310(id); \ | ||
150 | }) | 145 | }) |
151 | 146 | ||
152 | #define cpu_is_pxa320() \ | 147 | #define cpu_is_pxa320() \ |
153 | ({ \ | 148 | ({ \ |
154 | unsigned int id = read_cpuid(CPUID_ID); \ | 149 | __cpu_is_pxa320(read_cpuid_id()); \ |
155 | __cpu_is_pxa320(id); \ | ||
156 | }) | 150 | }) |
157 | 151 | ||
158 | /* | 152 | /* |
@@ -174,14 +168,12 @@ | |||
174 | 168 | ||
175 | #define cpu_is_pxa2xx() \ | 169 | #define cpu_is_pxa2xx() \ |
176 | ({ \ | 170 | ({ \ |
177 | unsigned int id = read_cpuid(CPUID_ID); \ | 171 | __cpu_is_pxa2xx(read_cpuid_id()); \ |
178 | __cpu_is_pxa2xx(id); \ | ||
179 | }) | 172 | }) |
180 | 173 | ||
181 | #define cpu_is_pxa3xx() \ | 174 | #define cpu_is_pxa3xx() \ |
182 | ({ \ | 175 | ({ \ |
183 | unsigned int id = read_cpuid(CPUID_ID); \ | 176 | __cpu_is_pxa3xx(read_cpuid_id()); \ |
184 | __cpu_is_pxa3xx(id); \ | ||
185 | }) | 177 | }) |
186 | 178 | ||
187 | /* | 179 | /* |
diff --git a/include/asm-arm/arch-pxa/i2c.h b/include/asm-arm/arch-pxa/i2c.h index e404b233d8a8..80596b013443 100644 --- a/include/asm-arm/arch-pxa/i2c.h +++ b/include/asm-arm/arch-pxa/i2c.h | |||
@@ -65,7 +65,13 @@ struct i2c_pxa_platform_data { | |||
65 | unsigned int slave_addr; | 65 | unsigned int slave_addr; |
66 | struct i2c_slave_client *slave; | 66 | struct i2c_slave_client *slave; |
67 | unsigned int class; | 67 | unsigned int class; |
68 | int use_pio; | ||
68 | }; | 69 | }; |
69 | 70 | ||
70 | extern void pxa_set_i2c_info(struct i2c_pxa_platform_data *info); | 71 | extern void pxa_set_i2c_info(struct i2c_pxa_platform_data *info); |
72 | |||
73 | #ifdef CONFIG_PXA27x | ||
74 | extern void pxa_set_i2c_power_info(struct i2c_pxa_platform_data *info); | ||
75 | #endif | ||
76 | |||
71 | #endif | 77 | #endif |
diff --git a/include/asm-arm/arch-pxa/irqs.h b/include/asm-arm/arch-pxa/irqs.h index 6238dbf7a236..c562b972a4a6 100644 --- a/include/asm-arm/arch-pxa/irqs.h +++ b/include/asm-arm/arch-pxa/irqs.h | |||
@@ -13,7 +13,7 @@ | |||
13 | 13 | ||
14 | #define PXA_IRQ(x) (x) | 14 | #define PXA_IRQ(x) (x) |
15 | 15 | ||
16 | #ifdef CONFIG_PXA27x | 16 | #if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx) |
17 | #define IRQ_SSP3 PXA_IRQ(0) /* SSP3 service request */ | 17 | #define IRQ_SSP3 PXA_IRQ(0) /* SSP3 service request */ |
18 | #define IRQ_MSL PXA_IRQ(1) /* MSL Interface interrupt */ | 18 | #define IRQ_MSL PXA_IRQ(1) /* MSL Interface interrupt */ |
19 | #define IRQ_USBH2 PXA_IRQ(2) /* USB Host interrupt 1 (OHCI) */ | 19 | #define IRQ_USBH2 PXA_IRQ(2) /* USB Host interrupt 1 (OHCI) */ |
@@ -52,11 +52,27 @@ | |||
52 | #define IRQ_RTC1Hz PXA_IRQ(30) /* RTC HZ Clock Tick */ | 52 | #define IRQ_RTC1Hz PXA_IRQ(30) /* RTC HZ Clock Tick */ |
53 | #define IRQ_RTCAlrm PXA_IRQ(31) /* RTC Alarm */ | 53 | #define IRQ_RTCAlrm PXA_IRQ(31) /* RTC Alarm */ |
54 | 54 | ||
55 | #ifdef CONFIG_PXA27x | 55 | #if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx) |
56 | #define IRQ_TPM PXA_IRQ(32) /* TPM interrupt */ | 56 | #define IRQ_TPM PXA_IRQ(32) /* TPM interrupt */ |
57 | #define IRQ_CAMERA PXA_IRQ(33) /* Camera Interface */ | 57 | #define IRQ_CAMERA PXA_IRQ(33) /* Camera Interface */ |
58 | #endif | 58 | #endif |
59 | 59 | ||
60 | #ifdef CONFIG_PXA3xx | ||
61 | #define IRQ_SSP4 PXA_IRQ(13) /* SSP4 service request */ | ||
62 | #define IRQ_CIR PXA_IRQ(34) /* Consumer IR */ | ||
63 | #define IRQ_TSI PXA_IRQ(36) /* Touch Screen Interface (PXA320) */ | ||
64 | #define IRQ_USIM2 PXA_IRQ(38) /* USIM2 Controller */ | ||
65 | #define IRQ_GRPHICS PXA_IRQ(39) /* Graphics Controller */ | ||
66 | #define IRQ_MMC2 PXA_IRQ(41) /* MMC2 Controller */ | ||
67 | #define IRQ_1WIRE PXA_IRQ(44) /* 1-Wire Controller */ | ||
68 | #define IRQ_NAND PXA_IRQ(45) /* NAND Controller */ | ||
69 | #define IRQ_USB2 PXA_IRQ(46) /* USB 2.0 Device Controller */ | ||
70 | #define IRQ_WAKEUP0 PXA_IRQ(49) /* EXT_WAKEUP0 */ | ||
71 | #define IRQ_WAKEUP1 PXA_IRQ(50) /* EXT_WAKEUP1 */ | ||
72 | #define IRQ_DMEMC PXA_IRQ(51) /* Dynamic Memory Controller */ | ||
73 | #define IRQ_MMC3 PXA_IRQ(55) /* MMC3 Controller (PXA310) */ | ||
74 | #endif | ||
75 | |||
60 | #define PXA_GPIO_IRQ_BASE (64) | 76 | #define PXA_GPIO_IRQ_BASE (64) |
61 | #define PXA_GPIO_IRQ_NUM (128) | 77 | #define PXA_GPIO_IRQ_NUM (128) |
62 | 78 | ||
@@ -164,7 +180,8 @@ | |||
164 | #define NR_IRQS (IRQ_LOCOMO_SPI_TEND + 1) | 180 | #define NR_IRQS (IRQ_LOCOMO_SPI_TEND + 1) |
165 | #elif defined(CONFIG_ARCH_LUBBOCK) || \ | 181 | #elif defined(CONFIG_ARCH_LUBBOCK) || \ |
166 | defined(CONFIG_MACH_LOGICPD_PXA270) || \ | 182 | defined(CONFIG_MACH_LOGICPD_PXA270) || \ |
167 | defined(CONFIG_MACH_MAINSTONE) | 183 | defined(CONFIG_MACH_MAINSTONE) || \ |
184 | defined(CONFIG_MACH_PCM027) | ||
168 | #define NR_IRQS (IRQ_BOARD_END) | 185 | #define NR_IRQS (IRQ_BOARD_END) |
169 | #else | 186 | #else |
170 | #define NR_IRQS (IRQ_BOARD_START) | 187 | #define NR_IRQS (IRQ_BOARD_START) |
@@ -211,6 +228,13 @@ | |||
211 | #define IRQ_LOCOMO_LT_BASE (IRQ_BOARD_START + 2) | 228 | #define IRQ_LOCOMO_LT_BASE (IRQ_BOARD_START + 2) |
212 | #define IRQ_LOCOMO_SPI_BASE (IRQ_BOARD_START + 3) | 229 | #define IRQ_LOCOMO_SPI_BASE (IRQ_BOARD_START + 3) |
213 | 230 | ||
231 | /* phyCORE-PXA270 (PCM027) Interrupts */ | ||
232 | #define PCM027_IRQ(x) (IRQ_BOARD_START + (x)) | ||
233 | #define PCM027_BTDET_IRQ PCM027_IRQ(0) | ||
234 | #define PCM027_FF_RI_IRQ PCM027_IRQ(1) | ||
235 | #define PCM027_MMCDET_IRQ PCM027_IRQ(2) | ||
236 | #define PCM027_PM_5V_IRQ PCM027_IRQ(3) | ||
237 | |||
214 | /* ITE8152 irqs */ | 238 | /* ITE8152 irqs */ |
215 | /* add IT8152 IRQs beyond BOARD_END */ | 239 | /* add IT8152 IRQs beyond BOARD_END */ |
216 | #ifdef CONFIG_PCI_HOST_ITE8152 | 240 | #ifdef CONFIG_PCI_HOST_ITE8152 |
diff --git a/include/asm-arm/arch-pxa/littleton.h b/include/asm-arm/arch-pxa/littleton.h new file mode 100644 index 000000000000..79d209b826f4 --- /dev/null +++ b/include/asm-arm/arch-pxa/littleton.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __ASM_ARCH_ZYLONITE_H | ||
2 | #define __ASM_ARCH_ZYLONITE_H | ||
3 | |||
4 | #define LITTLETON_ETH_PHYS 0x30000000 | ||
5 | |||
6 | #endif /* __ASM_ARCH_ZYLONITE_H */ | ||
diff --git a/include/asm-arm/arch-pxa/magician.h b/include/asm-arm/arch-pxa/magician.h new file mode 100644 index 000000000000..337f51f06b3a --- /dev/null +++ b/include/asm-arm/arch-pxa/magician.h | |||
@@ -0,0 +1,111 @@ | |||
1 | /* | ||
2 | * GPIO and IRQ definitions for HTC Magician PDA phones | ||
3 | * | ||
4 | * Copyright (c) 2007 Philipp Zabel | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | */ | ||
11 | |||
12 | #ifndef _MAGICIAN_H_ | ||
13 | #define _MAGICIAN_H_ | ||
14 | |||
15 | #include <asm/arch/pxa-regs.h> | ||
16 | |||
17 | /* | ||
18 | * PXA GPIOs | ||
19 | */ | ||
20 | |||
21 | #define GPIO0_MAGICIAN_KEY_POWER 0 | ||
22 | #define GPIO9_MAGICIAN_UNKNOWN 9 | ||
23 | #define GPIO10_MAGICIAN_GSM_IRQ 10 | ||
24 | #define GPIO11_MAGICIAN_GSM_OUT1 11 | ||
25 | #define GPIO13_MAGICIAN_CPLD_IRQ 13 | ||
26 | #define GPIO18_MAGICIAN_UNKNOWN 18 | ||
27 | #define GPIO22_MAGICIAN_VIBRA_EN 22 | ||
28 | #define GPIO26_MAGICIAN_GSM_POWER 26 | ||
29 | #define GPIO27_MAGICIAN_USBC_PUEN 27 | ||
30 | #define GPIO30_MAGICIAN_nCHARGE_EN 30 | ||
31 | #define GPIO37_MAGICIAN_KEY_HANGUP 37 | ||
32 | #define GPIO38_MAGICIAN_KEY_CONTACTS 38 | ||
33 | #define GPIO40_MAGICIAN_GSM_OUT2 40 | ||
34 | #define GPIO48_MAGICIAN_UNKNOWN 48 | ||
35 | #define GPIO56_MAGICIAN_UNKNOWN 56 | ||
36 | #define GPIO57_MAGICIAN_CAM_RESET 57 | ||
37 | #define GPIO83_MAGICIAN_nIR_EN 83 | ||
38 | #define GPIO86_MAGICIAN_GSM_RESET 86 | ||
39 | #define GPIO87_MAGICIAN_GSM_SELECT 87 | ||
40 | #define GPIO90_MAGICIAN_KEY_CALENDAR 90 | ||
41 | #define GPIO91_MAGICIAN_KEY_CAMERA 91 | ||
42 | #define GPIO93_MAGICIAN_KEY_UP 93 | ||
43 | #define GPIO94_MAGICIAN_KEY_DOWN 94 | ||
44 | #define GPIO95_MAGICIAN_KEY_LEFT 95 | ||
45 | #define GPIO96_MAGICIAN_KEY_RIGHT 96 | ||
46 | #define GPIO97_MAGICIAN_KEY_ENTER 97 | ||
47 | #define GPIO98_MAGICIAN_KEY_RECORD 98 | ||
48 | #define GPIO99_MAGICIAN_HEADPHONE_IN 99 | ||
49 | #define GPIO100_MAGICIAN_KEY_VOL_UP 100 | ||
50 | #define GPIO101_MAGICIAN_KEY_VOL_DOWN 101 | ||
51 | #define GPIO102_MAGICIAN_KEY_PHONE 102 | ||
52 | #define GPIO103_MAGICIAN_LED_KP 103 | ||
53 | #define GPIO104_MAGICIAN_LCD_POWER_1 104 | ||
54 | #define GPIO105_MAGICIAN_LCD_POWER_2 105 | ||
55 | #define GPIO106_MAGICIAN_LCD_POWER_3 106 | ||
56 | #define GPIO107_MAGICIAN_DS1WM_IRQ 107 | ||
57 | #define GPIO108_MAGICIAN_GSM_READY 108 | ||
58 | #define GPIO114_MAGICIAN_UNKNOWN 114 | ||
59 | #define GPIO115_MAGICIAN_nPEN_IRQ 115 | ||
60 | #define GPIO116_MAGICIAN_nCAM_EN 116 | ||
61 | #define GPIO119_MAGICIAN_UNKNOWN 119 | ||
62 | #define GPIO120_MAGICIAN_UNKNOWN 120 | ||
63 | |||
64 | /* | ||
65 | * PXA GPIO alternate function mode & direction | ||
66 | */ | ||
67 | |||
68 | #define GPIO0_MAGICIAN_KEY_POWER_MD (0 | GPIO_IN) | ||
69 | #define GPIO9_MAGICIAN_UNKNOWN_MD (9 | GPIO_IN) | ||
70 | #define GPIO10_MAGICIAN_GSM_IRQ_MD (10 | GPIO_IN) | ||
71 | #define GPIO11_MAGICIAN_GSM_OUT1_MD (11 | GPIO_OUT) | ||
72 | #define GPIO13_MAGICIAN_CPLD_IRQ_MD (13 | GPIO_IN) | ||
73 | #define GPIO18_MAGICIAN_UNKNOWN_MD (18 | GPIO_OUT) | ||
74 | #define GPIO22_MAGICIAN_VIBRA_EN_MD (22 | GPIO_OUT) | ||
75 | #define GPIO26_MAGICIAN_GSM_POWER_MD (26 | GPIO_OUT) | ||
76 | #define GPIO27_MAGICIAN_USBC_PUEN_MD (27 | GPIO_OUT) | ||
77 | #define GPIO30_MAGICIAN_nCHARGE_EN_MD (30 | GPIO_OUT) | ||
78 | #define GPIO37_MAGICIAN_KEY_HANGUP_MD (37 | GPIO_OUT) | ||
79 | #define GPIO38_MAGICIAN_KEY_CONTACTS_MD (38 | GPIO_OUT) | ||
80 | #define GPIO40_MAGICIAN_GSM_OUT2_MD (40 | GPIO_OUT) | ||
81 | #define GPIO48_MAGICIAN_UNKNOWN_MD (48 | GPIO_OUT) | ||
82 | #define GPIO56_MAGICIAN_UNKNOWN_MD (56 | GPIO_OUT) | ||
83 | #define GPIO57_MAGICIAN_CAM_RESET_MD (57 | GPIO_OUT) | ||
84 | #define GPIO83_MAGICIAN_nIR_EN_MD (83 | GPIO_OUT) | ||
85 | #define GPIO86_MAGICIAN_GSM_RESET_MD (86 | GPIO_OUT) | ||
86 | #define GPIO87_MAGICIAN_GSM_SELECT_MD (87 | GPIO_OUT) | ||
87 | #define GPIO90_MAGICIAN_KEY_CALENDAR_MD (90 | GPIO_OUT) | ||
88 | #define GPIO91_MAGICIAN_KEY_CAMERA_MD (91 | GPIO_OUT) | ||
89 | #define GPIO93_MAGICIAN_KEY_UP_MD (93 | GPIO_IN) | ||
90 | #define GPIO94_MAGICIAN_KEY_DOWN_MD (94 | GPIO_IN) | ||
91 | #define GPIO95_MAGICIAN_KEY_LEFT_MD (95 | GPIO_IN) | ||
92 | #define GPIO96_MAGICIAN_KEY_RIGHT_MD (96 | GPIO_IN) | ||
93 | #define GPIO97_MAGICIAN_KEY_ENTER_MD (97 | GPIO_IN) | ||
94 | #define GPIO98_MAGICIAN_KEY_RECORD_MD (98 | GPIO_IN) | ||
95 | #define GPIO99_MAGICIAN_HEADPHONE_IN_MD (99 | GPIO_IN) | ||
96 | #define GPIO100_MAGICIAN_KEY_VOL_UP_MD (100 | GPIO_IN) | ||
97 | #define GPIO101_MAGICIAN_KEY_VOL_DOWN_MD (101 | GPIO_IN) | ||
98 | #define GPIO102_MAGICIAN_KEY_PHONE_MD (102 | GPIO_IN) | ||
99 | #define GPIO103_MAGICIAN_LED_KP_MD (103 | GPIO_OUT) | ||
100 | #define GPIO104_MAGICIAN_LCD_POWER_1_MD (104 | GPIO_OUT) | ||
101 | #define GPIO105_MAGICIAN_LCD_POWER_2_MD (105 | GPIO_OUT) | ||
102 | #define GPIO106_MAGICIAN_LCD_POWER_3_MD (106 | GPIO_OUT) | ||
103 | #define GPIO107_MAGICIAN_DS1WM_IRQ_MD (107 | GPIO_IN) | ||
104 | #define GPIO108_MAGICIAN_GSM_READY_MD (108 | GPIO_IN) | ||
105 | #define GPIO114_MAGICIAN_UNKNOWN_MD (114 | GPIO_OUT) | ||
106 | #define GPIO115_MAGICIAN_nPEN_IRQ_MD (115 | GPIO_IN) | ||
107 | #define GPIO116_MAGICIAN_nCAM_EN_MD (116 | GPIO_OUT) | ||
108 | #define GPIO119_MAGICIAN_UNKNOWN_MD (119 | GPIO_OUT) | ||
109 | #define GPIO120_MAGICIAN_UNKNOWN_MD (120 | GPIO_OUT) | ||
110 | |||
111 | #endif /* _MAGICIAN_H_ */ | ||
diff --git a/include/asm-arm/arch-pxa/mfp-pxa300.h b/include/asm-arm/arch-pxa/mfp-pxa300.h index 7513c7a3402d..bb410313556f 100644 --- a/include/asm-arm/arch-pxa/mfp-pxa300.h +++ b/include/asm-arm/arch-pxa/mfp-pxa300.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * PXA300/PXA310 specific MFP configuration definitions | 4 | * PXA300/PXA310 specific MFP configuration definitions |
5 | * | 5 | * |
6 | * Copyright (C) 2007 Marvell International Ltd. | 6 | * Copyright (C) 2007 Marvell International Ltd. |
7 | * 2007-08-21: eric miao <eric.y.miao@gmail.com> | 7 | * 2007-08-21: eric miao <eric.miao@marvell.com> |
8 | * initial version | 8 | * initial version |
9 | * | 9 | * |
10 | * This program is free software; you can redistribute it and/or modify | 10 | * This program is free software; you can redistribute it and/or modify |
@@ -16,6 +16,7 @@ | |||
16 | #define __ASM_ARCH_MFP_PXA300_H | 16 | #define __ASM_ARCH_MFP_PXA300_H |
17 | 17 | ||
18 | #include <asm/arch/mfp.h> | 18 | #include <asm/arch/mfp.h> |
19 | #include <asm/arch/mfp-pxa3xx.h> | ||
19 | 20 | ||
20 | /* GPIO */ | 21 | /* GPIO */ |
21 | #define GPIO46_GPIO MFP_CFG(GPIO46, AF1) | 22 | #define GPIO46_GPIO MFP_CFG(GPIO46, AF1) |
@@ -179,7 +180,7 @@ | |||
179 | #define GPIO62_LCD_CS_N MFP_CFG_DRV(GPIO62, AF2, DS01X) | 180 | #define GPIO62_LCD_CS_N MFP_CFG_DRV(GPIO62, AF2, DS01X) |
180 | #define GPIO72_LCD_FCLK MFP_CFG_DRV(GPIO72, AF1, DS01X) | 181 | #define GPIO72_LCD_FCLK MFP_CFG_DRV(GPIO72, AF1, DS01X) |
181 | #define GPIO73_LCD_LCLK MFP_CFG_DRV(GPIO73, AF1, DS01X) | 182 | #define GPIO73_LCD_LCLK MFP_CFG_DRV(GPIO73, AF1, DS01X) |
182 | #define GPIO74_LCD_PCLK MFP_CFG_DRV(GPIO74, AF1, DS01X) | 183 | #define GPIO74_LCD_PCLK MFP_CFG_DRV(GPIO74, AF1, DS02X) |
183 | #define GPIO75_LCD_BIAS MFP_CFG_DRV(GPIO75, AF1, DS01X) | 184 | #define GPIO75_LCD_BIAS MFP_CFG_DRV(GPIO75, AF1, DS01X) |
184 | #define GPIO76_LCD_VSYNC MFP_CFG_DRV(GPIO76, AF2, DS01X) | 185 | #define GPIO76_LCD_VSYNC MFP_CFG_DRV(GPIO76, AF2, DS01X) |
185 | 186 | ||
diff --git a/include/asm-arm/arch-pxa/mfp-pxa320.h b/include/asm-arm/arch-pxa/mfp-pxa320.h index ae8ba34194cf..576aa46d90fc 100644 --- a/include/asm-arm/arch-pxa/mfp-pxa320.h +++ b/include/asm-arm/arch-pxa/mfp-pxa320.h | |||
@@ -4,7 +4,7 @@ | |||
4 | * PXA320 specific MFP configuration definitions | 4 | * PXA320 specific MFP configuration definitions |
5 | * | 5 | * |
6 | * Copyright (C) 2007 Marvell International Ltd. | 6 | * Copyright (C) 2007 Marvell International Ltd. |
7 | * 2007-08-21: eric miao <eric.y.miao@gmail.com> | 7 | * 2007-08-21: eric miao <eric.miao@marvell.com> |
8 | * initial version | 8 | * initial version |
9 | * | 9 | * |
10 | * This program is free software; you can redistribute it and/or modify | 10 | * This program is free software; you can redistribute it and/or modify |
@@ -16,9 +16,10 @@ | |||
16 | #define __ASM_ARCH_MFP_PXA320_H | 16 | #define __ASM_ARCH_MFP_PXA320_H |
17 | 17 | ||
18 | #include <asm/arch/mfp.h> | 18 | #include <asm/arch/mfp.h> |
19 | #include <asm/arch/mfp-pxa3xx.h> | ||
19 | 20 | ||
20 | /* GPIO */ | 21 | /* GPIO */ |
21 | #define GPIO46_GPIO MFP_CFG(GPIO6, AF0) | 22 | #define GPIO46_GPIO MFP_CFG(GPIO46, AF0) |
22 | #define GPIO49_GPIO MFP_CFG(GPIO49, AF0) | 23 | #define GPIO49_GPIO MFP_CFG(GPIO49, AF0) |
23 | #define GPIO50_GPIO MFP_CFG(GPIO50, AF0) | 24 | #define GPIO50_GPIO MFP_CFG(GPIO50, AF0) |
24 | #define GPIO51_GPIO MFP_CFG(GPIO51, AF0) | 25 | #define GPIO51_GPIO MFP_CFG(GPIO51, AF0) |
diff --git a/include/asm-arm/arch-pxa/mfp-pxa3xx.h b/include/asm-arm/arch-pxa/mfp-pxa3xx.h new file mode 100644 index 000000000000..1f6b35c015d0 --- /dev/null +++ b/include/asm-arm/arch-pxa/mfp-pxa3xx.h | |||
@@ -0,0 +1,252 @@ | |||
1 | #ifndef __ASM_ARCH_MFP_PXA3XX_H | ||
2 | #define __ASM_ARCH_MFP_PXA3XX_H | ||
3 | |||
4 | #define MFPR_BASE (0x40e10000) | ||
5 | #define MFPR_SIZE (PAGE_SIZE) | ||
6 | |||
7 | /* MFPR register bit definitions */ | ||
8 | #define MFPR_PULL_SEL (0x1 << 15) | ||
9 | #define MFPR_PULLUP_EN (0x1 << 14) | ||
10 | #define MFPR_PULLDOWN_EN (0x1 << 13) | ||
11 | #define MFPR_SLEEP_SEL (0x1 << 9) | ||
12 | #define MFPR_SLEEP_OE_N (0x1 << 7) | ||
13 | #define MFPR_EDGE_CLEAR (0x1 << 6) | ||
14 | #define MFPR_EDGE_FALL_EN (0x1 << 5) | ||
15 | #define MFPR_EDGE_RISE_EN (0x1 << 4) | ||
16 | |||
17 | #define MFPR_SLEEP_DATA(x) ((x) << 8) | ||
18 | #define MFPR_DRIVE(x) (((x) & 0x7) << 10) | ||
19 | #define MFPR_AF_SEL(x) (((x) & 0x7) << 0) | ||
20 | |||
21 | #define MFPR_EDGE_NONE (0) | ||
22 | #define MFPR_EDGE_RISE (MFPR_EDGE_RISE_EN) | ||
23 | #define MFPR_EDGE_FALL (MFPR_EDGE_FALL_EN) | ||
24 | #define MFPR_EDGE_BOTH (MFPR_EDGE_RISE | MFPR_EDGE_FALL) | ||
25 | |||
26 | /* | ||
27 | * Table that determines the low power modes outputs, with actual settings | ||
28 | * used in parentheses for don't-care values. Except for the float output, | ||
29 | * the configured driven and pulled levels match, so if there is a need for | ||
30 | * non-LPM pulled output, the same configuration could probably be used. | ||
31 | * | ||
32 | * Output value sleep_oe_n sleep_data pullup_en pulldown_en pull_sel | ||
33 | * (bit 7) (bit 8) (bit 14) (bit 13) (bit 15) | ||
34 | * | ||
35 | * Input 0 X(0) X(0) X(0) 0 | ||
36 | * Drive 0 0 0 0 X(1) 0 | ||
37 | * Drive 1 0 1 X(1) 0 0 | ||
38 | * Pull hi (1) 1 X(1) 1 0 0 | ||
39 | * Pull lo (0) 1 X(0) 0 1 0 | ||
40 | * Z (float) 1 X(0) 0 0 0 | ||
41 | */ | ||
42 | #define MFPR_LPM_INPUT (0) | ||
43 | #define MFPR_LPM_DRIVE_LOW (MFPR_SLEEP_DATA(0) | MFPR_PULLDOWN_EN) | ||
44 | #define MFPR_LPM_DRIVE_HIGH (MFPR_SLEEP_DATA(1) | MFPR_PULLUP_EN) | ||
45 | #define MFPR_LPM_PULL_LOW (MFPR_LPM_DRIVE_LOW | MFPR_SLEEP_OE_N) | ||
46 | #define MFPR_LPM_PULL_HIGH (MFPR_LPM_DRIVE_HIGH | MFPR_SLEEP_OE_N) | ||
47 | #define MFPR_LPM_FLOAT (MFPR_SLEEP_OE_N) | ||
48 | #define MFPR_LPM_MASK (0xe080) | ||
49 | |||
50 | /* | ||
51 | * The pullup and pulldown state of the MFP pin at run mode is by default | ||
52 | * determined by the selected alternate function. In case that some buggy | ||
53 | * devices need to override this default behavior, the definitions below | ||
54 | * indicates the setting of corresponding MFPR bits | ||
55 | * | ||
56 | * Definition pull_sel pullup_en pulldown_en | ||
57 | * MFPR_PULL_NONE 0 0 0 | ||
58 | * MFPR_PULL_LOW 1 0 1 | ||
59 | * MFPR_PULL_HIGH 1 1 0 | ||
60 | * MFPR_PULL_BOTH 1 1 1 | ||
61 | */ | ||
62 | #define MFPR_PULL_NONE (0) | ||
63 | #define MFPR_PULL_LOW (MFPR_PULL_SEL | MFPR_PULLDOWN_EN) | ||
64 | #define MFPR_PULL_BOTH (MFPR_PULL_LOW | MFPR_PULLUP_EN) | ||
65 | #define MFPR_PULL_HIGH (MFPR_PULL_SEL | MFPR_PULLUP_EN) | ||
66 | |||
67 | /* PXA3xx common MFP configurations - processor specific ones defined | ||
68 | * in mfp-pxa300.h and mfp-pxa320.h | ||
69 | */ | ||
70 | #define GPIO0_GPIO MFP_CFG(GPIO0, AF0) | ||
71 | #define GPIO1_GPIO MFP_CFG(GPIO1, AF0) | ||
72 | #define GPIO2_GPIO MFP_CFG(GPIO2, AF0) | ||
73 | #define GPIO3_GPIO MFP_CFG(GPIO3, AF0) | ||
74 | #define GPIO4_GPIO MFP_CFG(GPIO4, AF0) | ||
75 | #define GPIO5_GPIO MFP_CFG(GPIO5, AF0) | ||
76 | #define GPIO6_GPIO MFP_CFG(GPIO6, AF0) | ||
77 | #define GPIO7_GPIO MFP_CFG(GPIO7, AF0) | ||
78 | #define GPIO8_GPIO MFP_CFG(GPIO8, AF0) | ||
79 | #define GPIO9_GPIO MFP_CFG(GPIO9, AF0) | ||
80 | #define GPIO10_GPIO MFP_CFG(GPIO10, AF0) | ||
81 | #define GPIO11_GPIO MFP_CFG(GPIO11, AF0) | ||
82 | #define GPIO12_GPIO MFP_CFG(GPIO12, AF0) | ||
83 | #define GPIO13_GPIO MFP_CFG(GPIO13, AF0) | ||
84 | #define GPIO14_GPIO MFP_CFG(GPIO14, AF0) | ||
85 | #define GPIO15_GPIO MFP_CFG(GPIO15, AF0) | ||
86 | #define GPIO16_GPIO MFP_CFG(GPIO16, AF0) | ||
87 | #define GPIO17_GPIO MFP_CFG(GPIO17, AF0) | ||
88 | #define GPIO18_GPIO MFP_CFG(GPIO18, AF0) | ||
89 | #define GPIO19_GPIO MFP_CFG(GPIO19, AF0) | ||
90 | #define GPIO20_GPIO MFP_CFG(GPIO20, AF0) | ||
91 | #define GPIO21_GPIO MFP_CFG(GPIO21, AF0) | ||
92 | #define GPIO22_GPIO MFP_CFG(GPIO22, AF0) | ||
93 | #define GPIO23_GPIO MFP_CFG(GPIO23, AF0) | ||
94 | #define GPIO24_GPIO MFP_CFG(GPIO24, AF0) | ||
95 | #define GPIO25_GPIO MFP_CFG(GPIO25, AF0) | ||
96 | #define GPIO26_GPIO MFP_CFG(GPIO26, AF0) | ||
97 | #define GPIO27_GPIO MFP_CFG(GPIO27, AF0) | ||
98 | #define GPIO28_GPIO MFP_CFG(GPIO28, AF0) | ||
99 | #define GPIO29_GPIO MFP_CFG(GPIO29, AF0) | ||
100 | #define GPIO30_GPIO MFP_CFG(GPIO30, AF0) | ||
101 | #define GPIO31_GPIO MFP_CFG(GPIO31, AF0) | ||
102 | #define GPIO32_GPIO MFP_CFG(GPIO32, AF0) | ||
103 | #define GPIO33_GPIO MFP_CFG(GPIO33, AF0) | ||
104 | #define GPIO34_GPIO MFP_CFG(GPIO34, AF0) | ||
105 | #define GPIO35_GPIO MFP_CFG(GPIO35, AF0) | ||
106 | #define GPIO36_GPIO MFP_CFG(GPIO36, AF0) | ||
107 | #define GPIO37_GPIO MFP_CFG(GPIO37, AF0) | ||
108 | #define GPIO38_GPIO MFP_CFG(GPIO38, AF0) | ||
109 | #define GPIO39_GPIO MFP_CFG(GPIO39, AF0) | ||
110 | #define GPIO40_GPIO MFP_CFG(GPIO40, AF0) | ||
111 | #define GPIO41_GPIO MFP_CFG(GPIO41, AF0) | ||
112 | #define GPIO42_GPIO MFP_CFG(GPIO42, AF0) | ||
113 | #define GPIO43_GPIO MFP_CFG(GPIO43, AF0) | ||
114 | #define GPIO44_GPIO MFP_CFG(GPIO44, AF0) | ||
115 | #define GPIO45_GPIO MFP_CFG(GPIO45, AF0) | ||
116 | |||
117 | #define GPIO47_GPIO MFP_CFG(GPIO47, AF0) | ||
118 | #define GPIO48_GPIO MFP_CFG(GPIO48, AF0) | ||
119 | |||
120 | #define GPIO53_GPIO MFP_CFG(GPIO53, AF0) | ||
121 | #define GPIO54_GPIO MFP_CFG(GPIO54, AF0) | ||
122 | #define GPIO55_GPIO MFP_CFG(GPIO55, AF0) | ||
123 | |||
124 | #define GPIO57_GPIO MFP_CFG(GPIO57, AF0) | ||
125 | |||
126 | #define GPIO63_GPIO MFP_CFG(GPIO63, AF0) | ||
127 | #define GPIO64_GPIO MFP_CFG(GPIO64, AF0) | ||
128 | #define GPIO65_GPIO MFP_CFG(GPIO65, AF0) | ||
129 | #define GPIO66_GPIO MFP_CFG(GPIO66, AF0) | ||
130 | #define GPIO67_GPIO MFP_CFG(GPIO67, AF0) | ||
131 | #define GPIO68_GPIO MFP_CFG(GPIO68, AF0) | ||
132 | #define GPIO69_GPIO MFP_CFG(GPIO69, AF0) | ||
133 | #define GPIO70_GPIO MFP_CFG(GPIO70, AF0) | ||
134 | #define GPIO71_GPIO MFP_CFG(GPIO71, AF0) | ||
135 | #define GPIO72_GPIO MFP_CFG(GPIO72, AF0) | ||
136 | #define GPIO73_GPIO MFP_CFG(GPIO73, AF0) | ||
137 | #define GPIO74_GPIO MFP_CFG(GPIO74, AF0) | ||
138 | #define GPIO75_GPIO MFP_CFG(GPIO75, AF0) | ||
139 | #define GPIO76_GPIO MFP_CFG(GPIO76, AF0) | ||
140 | #define GPIO77_GPIO MFP_CFG(GPIO77, AF0) | ||
141 | #define GPIO78_GPIO MFP_CFG(GPIO78, AF0) | ||
142 | #define GPIO79_GPIO MFP_CFG(GPIO79, AF0) | ||
143 | #define GPIO80_GPIO MFP_CFG(GPIO80, AF0) | ||
144 | #define GPIO81_GPIO MFP_CFG(GPIO81, AF0) | ||
145 | #define GPIO82_GPIO MFP_CFG(GPIO82, AF0) | ||
146 | #define GPIO83_GPIO MFP_CFG(GPIO83, AF0) | ||
147 | #define GPIO84_GPIO MFP_CFG(GPIO84, AF0) | ||
148 | #define GPIO85_GPIO MFP_CFG(GPIO85, AF0) | ||
149 | #define GPIO86_GPIO MFP_CFG(GPIO86, AF0) | ||
150 | #define GPIO87_GPIO MFP_CFG(GPIO87, AF0) | ||
151 | #define GPIO88_GPIO MFP_CFG(GPIO88, AF0) | ||
152 | #define GPIO89_GPIO MFP_CFG(GPIO89, AF0) | ||
153 | #define GPIO90_GPIO MFP_CFG(GPIO90, AF0) | ||
154 | #define GPIO91_GPIO MFP_CFG(GPIO91, AF0) | ||
155 | #define GPIO92_GPIO MFP_CFG(GPIO92, AF0) | ||
156 | #define GPIO93_GPIO MFP_CFG(GPIO93, AF0) | ||
157 | #define GPIO94_GPIO MFP_CFG(GPIO94, AF0) | ||
158 | #define GPIO95_GPIO MFP_CFG(GPIO95, AF0) | ||
159 | #define GPIO96_GPIO MFP_CFG(GPIO96, AF0) | ||
160 | #define GPIO97_GPIO MFP_CFG(GPIO97, AF0) | ||
161 | #define GPIO98_GPIO MFP_CFG(GPIO98, AF0) | ||
162 | #define GPIO99_GPIO MFP_CFG(GPIO99, AF0) | ||
163 | #define GPIO100_GPIO MFP_CFG(GPIO100, AF0) | ||
164 | #define GPIO101_GPIO MFP_CFG(GPIO101, AF0) | ||
165 | #define GPIO102_GPIO MFP_CFG(GPIO102, AF0) | ||
166 | #define GPIO103_GPIO MFP_CFG(GPIO103, AF0) | ||
167 | #define GPIO104_GPIO MFP_CFG(GPIO104, AF0) | ||
168 | #define GPIO105_GPIO MFP_CFG(GPIO105, AF0) | ||
169 | #define GPIO106_GPIO MFP_CFG(GPIO106, AF0) | ||
170 | #define GPIO107_GPIO MFP_CFG(GPIO107, AF0) | ||
171 | #define GPIO108_GPIO MFP_CFG(GPIO108, AF0) | ||
172 | #define GPIO109_GPIO MFP_CFG(GPIO109, AF0) | ||
173 | #define GPIO110_GPIO MFP_CFG(GPIO110, AF0) | ||
174 | #define GPIO111_GPIO MFP_CFG(GPIO111, AF0) | ||
175 | #define GPIO112_GPIO MFP_CFG(GPIO112, AF0) | ||
176 | #define GPIO113_GPIO MFP_CFG(GPIO113, AF0) | ||
177 | #define GPIO114_GPIO MFP_CFG(GPIO114, AF0) | ||
178 | #define GPIO115_GPIO MFP_CFG(GPIO115, AF0) | ||
179 | #define GPIO116_GPIO MFP_CFG(GPIO116, AF0) | ||
180 | #define GPIO117_GPIO MFP_CFG(GPIO117, AF0) | ||
181 | #define GPIO118_GPIO MFP_CFG(GPIO118, AF0) | ||
182 | #define GPIO119_GPIO MFP_CFG(GPIO119, AF0) | ||
183 | #define GPIO120_GPIO MFP_CFG(GPIO120, AF0) | ||
184 | #define GPIO121_GPIO MFP_CFG(GPIO121, AF0) | ||
185 | #define GPIO122_GPIO MFP_CFG(GPIO122, AF0) | ||
186 | #define GPIO123_GPIO MFP_CFG(GPIO123, AF0) | ||
187 | #define GPIO124_GPIO MFP_CFG(GPIO124, AF0) | ||
188 | #define GPIO125_GPIO MFP_CFG(GPIO125, AF0) | ||
189 | #define GPIO126_GPIO MFP_CFG(GPIO126, AF0) | ||
190 | #define GPIO127_GPIO MFP_CFG(GPIO127, AF0) | ||
191 | |||
192 | #define GPIO0_2_GPIO MFP_CFG(GPIO0_2, AF0) | ||
193 | #define GPIO1_2_GPIO MFP_CFG(GPIO1_2, AF0) | ||
194 | #define GPIO2_2_GPIO MFP_CFG(GPIO2_2, AF0) | ||
195 | #define GPIO3_2_GPIO MFP_CFG(GPIO3_2, AF0) | ||
196 | #define GPIO4_2_GPIO MFP_CFG(GPIO4_2, AF0) | ||
197 | #define GPIO5_2_GPIO MFP_CFG(GPIO5_2, AF0) | ||
198 | #define GPIO6_2_GPIO MFP_CFG(GPIO6_2, AF0) | ||
199 | |||
200 | /* | ||
201 | * each MFP pin will have a MFPR register, since the offset of the | ||
202 | * register varies between processors, the processor specific code | ||
203 | * should initialize the pin offsets by pxa3xx_mfp_init_addr() | ||
204 | * | ||
205 | * pxa3xx_mfp_init_addr - accepts a table of "pxa3xx_mfp_addr_map" | ||
206 | * structure, which represents a range of MFP pins from "start" to | ||
207 | * "end", with the offset begining at "offset", to define a single | ||
208 | * pin, let "end" = -1 | ||
209 | * | ||
210 | * use | ||
211 | * | ||
212 | * MFP_ADDR_X() to define a range of pins | ||
213 | * MFP_ADDR() to define a single pin | ||
214 | * MFP_ADDR_END to signal the end of pin offset definitions | ||
215 | */ | ||
216 | struct pxa3xx_mfp_addr_map { | ||
217 | unsigned int start; | ||
218 | unsigned int end; | ||
219 | unsigned long offset; | ||
220 | }; | ||
221 | |||
222 | #define MFP_ADDR_X(start, end, offset) \ | ||
223 | { MFP_PIN_##start, MFP_PIN_##end, offset } | ||
224 | |||
225 | #define MFP_ADDR(pin, offset) \ | ||
226 | { MFP_PIN_##pin, -1, offset } | ||
227 | |||
228 | #define MFP_ADDR_END { MFP_PIN_INVALID, 0 } | ||
229 | |||
230 | /* | ||
231 | * pxa3xx_mfp_read()/pxa3xx_mfp_write() - for direct read/write access | ||
232 | * to the MFPR register | ||
233 | */ | ||
234 | unsigned long pxa3xx_mfp_read(int mfp); | ||
235 | void pxa3xx_mfp_write(int mfp, unsigned long mfpr_val); | ||
236 | |||
237 | /* | ||
238 | * pxa3xx_mfp_config - configure the MFPR registers | ||
239 | * | ||
240 | * used by board specific initialization code | ||
241 | */ | ||
242 | void pxa3xx_mfp_config(unsigned long *mfp_cfgs, int num); | ||
243 | |||
244 | /* | ||
245 | * pxa3xx_mfp_init_addr() - initialize the mapping between mfp pin | ||
246 | * index and MFPR register offset | ||
247 | * | ||
248 | * used by processor specific code | ||
249 | */ | ||
250 | void __init pxa3xx_mfp_init_addr(struct pxa3xx_mfp_addr_map *); | ||
251 | void __init pxa3xx_init_mfp(void); | ||
252 | #endif /* __ASM_ARCH_MFP_PXA3XX_H */ | ||
diff --git a/include/asm-arm/arch-pxa/mfp.h b/include/asm-arm/arch-pxa/mfp.h index 60291742ffdd..02f6157396d3 100644 --- a/include/asm-arm/arch-pxa/mfp.h +++ b/include/asm-arm/arch-pxa/mfp.h | |||
@@ -5,7 +5,7 @@ | |||
5 | * | 5 | * |
6 | * Copyright (C) 2007 Marvell International Ltd. | 6 | * Copyright (C) 2007 Marvell International Ltd. |
7 | * | 7 | * |
8 | * 2007-8-21: eric miao <eric.y.miao@gmail.com> | 8 | * 2007-8-21: eric miao <eric.miao@marvell.com> |
9 | * initial version | 9 | * initial version |
10 | * | 10 | * |
11 | * This program is free software; you can redistribute it and/or modify | 11 | * This program is free software; you can redistribute it and/or modify |
@@ -16,9 +16,6 @@ | |||
16 | #ifndef __ASM_ARCH_MFP_H | 16 | #ifndef __ASM_ARCH_MFP_H |
17 | #define __ASM_ARCH_MFP_H | 17 | #define __ASM_ARCH_MFP_H |
18 | 18 | ||
19 | #define MFPR_BASE (0x40e10000) | ||
20 | #define MFPR_SIZE (PAGE_SIZE) | ||
21 | |||
22 | #define mfp_to_gpio(m) ((m) % 128) | 19 | #define mfp_to_gpio(m) ((m) % 128) |
23 | 20 | ||
24 | /* list of all the configurable MFP pins */ | 21 | /* list of all the configurable MFP pins */ |
@@ -217,114 +214,21 @@ enum { | |||
217 | }; | 214 | }; |
218 | 215 | ||
219 | /* | 216 | /* |
220 | * Table that determines the low power modes outputs, with actual settings | ||
221 | * used in parentheses for don't-care values. Except for the float output, | ||
222 | * the configured driven and pulled levels match, so if there is a need for | ||
223 | * non-LPM pulled output, the same configuration could probably be used. | ||
224 | * | ||
225 | * Output value sleep_oe_n sleep_data pullup_en pulldown_en pull_sel | ||
226 | * (bit 7) (bit 8) (bit 14d) (bit 13d) | ||
227 | * | ||
228 | * Drive 0 0 0 0 X (1) 0 | ||
229 | * Drive 1 0 1 X (1) 0 0 | ||
230 | * Pull hi (1) 1 X(1) 1 0 0 | ||
231 | * Pull lo (0) 1 X(0) 0 1 0 | ||
232 | * Z (float) 1 X(0) 0 0 0 | ||
233 | */ | ||
234 | #define MFP_LPM_DRIVE_LOW 0x8 | ||
235 | #define MFP_LPM_DRIVE_HIGH 0x6 | ||
236 | #define MFP_LPM_PULL_HIGH 0x7 | ||
237 | #define MFP_LPM_PULL_LOW 0x9 | ||
238 | #define MFP_LPM_FLOAT 0x1 | ||
239 | #define MFP_LPM_PULL_NEITHER 0x0 | ||
240 | |||
241 | /* | ||
242 | * The pullup and pulldown state of the MFP pin is by default determined by | ||
243 | * selected alternate function. In case some buggy devices need to override | ||
244 | * this default behavior, pxa3xx_mfp_set_pull() can be invoked with one of | ||
245 | * the following definition as the parameter. | ||
246 | * | ||
247 | * Definition pull_sel pullup_en pulldown_en | ||
248 | * MFP_PULL_HIGH 1 1 0 | ||
249 | * MFP_PULL_LOW 1 0 1 | ||
250 | * MFP_PULL_BOTH 1 1 1 | ||
251 | * MFP_PULL_NONE 1 0 0 | ||
252 | * MFP_PULL_DEFAULT 0 X X | ||
253 | * | ||
254 | * NOTE: pxa3xx_mfp_set_pull() will modify the PULLUP_EN and PULLDOWN_EN | ||
255 | * bits, which will cause potential conflicts with the low power mode | ||
256 | * setting, device drivers should take care of this | ||
257 | */ | ||
258 | #define MFP_PULL_BOTH (0x7u) | ||
259 | #define MFP_PULL_HIGH (0x6u) | ||
260 | #define MFP_PULL_LOW (0x5u) | ||
261 | #define MFP_PULL_NONE (0x4u) | ||
262 | #define MFP_PULL_DEFAULT (0x0u) | ||
263 | |||
264 | #define MFP_AF0 (0) | ||
265 | #define MFP_AF1 (1) | ||
266 | #define MFP_AF2 (2) | ||
267 | #define MFP_AF3 (3) | ||
268 | #define MFP_AF4 (4) | ||
269 | #define MFP_AF5 (5) | ||
270 | #define MFP_AF6 (6) | ||
271 | #define MFP_AF7 (7) | ||
272 | |||
273 | #define MFP_DS01X (0) | ||
274 | #define MFP_DS02X (1) | ||
275 | #define MFP_DS03X (2) | ||
276 | #define MFP_DS04X (3) | ||
277 | #define MFP_DS06X (4) | ||
278 | #define MFP_DS08X (5) | ||
279 | #define MFP_DS10X (6) | ||
280 | #define MFP_DS12X (7) | ||
281 | |||
282 | #define MFP_EDGE_BOTH 0x3 | ||
283 | #define MFP_EDGE_RISE 0x2 | ||
284 | #define MFP_EDGE_FALL 0x1 | ||
285 | #define MFP_EDGE_NONE 0x0 | ||
286 | |||
287 | #define MFPR_AF_MASK 0x0007 | ||
288 | #define MFPR_DRV_MASK 0x1c00 | ||
289 | #define MFPR_RDH_MASK 0x0200 | ||
290 | #define MFPR_LPM_MASK 0xe180 | ||
291 | #define MFPR_PULL_MASK 0xe000 | ||
292 | #define MFPR_EDGE_MASK 0x0070 | ||
293 | |||
294 | #define MFPR_ALT_OFFSET 0 | ||
295 | #define MFPR_ERE_OFFSET 4 | ||
296 | #define MFPR_EFE_OFFSET 5 | ||
297 | #define MFPR_EC_OFFSET 6 | ||
298 | #define MFPR_SON_OFFSET 7 | ||
299 | #define MFPR_SD_OFFSET 8 | ||
300 | #define MFPR_SS_OFFSET 9 | ||
301 | #define MFPR_DRV_OFFSET 10 | ||
302 | #define MFPR_PD_OFFSET 13 | ||
303 | #define MFPR_PU_OFFSET 14 | ||
304 | #define MFPR_PS_OFFSET 15 | ||
305 | |||
306 | #define MFPR(af, drv, rdh, lpm, edge) \ | ||
307 | (((af) & 0x7) | (((drv) & 0x7) << 10) |\ | ||
308 | (((rdh) & 0x1) << 9) |\ | ||
309 | (((lpm) & 0x3) << 7) |\ | ||
310 | (((lpm) & 0x4) << 12)|\ | ||
311 | (((lpm) & 0x8) << 10)|\ | ||
312 | ((!(edge)) << 6) |\ | ||
313 | (((edge) & 0x1) << 5) |\ | ||
314 | (((edge) & 0x2) << 3)) | ||
315 | |||
316 | /* | ||
317 | * a possible MFP configuration is represented by a 32-bit integer | 217 | * a possible MFP configuration is represented by a 32-bit integer |
318 | * bit 0..15 - MFPR value (16-bit) | 218 | * |
319 | * bit 16..31 - mfp pin index (used to obtain the MFPR offset) | 219 | * bit 0.. 9 - MFP Pin Number (1024 Pins Maximum) |
220 | * bit 10..12 - Alternate Function Selection | ||
221 | * bit 13..15 - Drive Strength | ||
222 | * bit 16..18 - Low Power Mode State | ||
223 | * bit 19..20 - Low Power Mode Edge Detection | ||
224 | * bit 21..22 - Run Mode Pull State | ||
320 | * | 225 | * |
321 | * to facilitate the definition, the following macros are provided | 226 | * to facilitate the definition, the following macros are provided |
322 | * | 227 | * |
323 | * MFPR_DEFAULT - default MFPR value, with | 228 | * MFP_CFG_DEFAULT - default MFP configuration value, with |
324 | * alternate function = 0, | 229 | * alternate function = 0, |
325 | * drive strength = fast 1mA (MFP_DS01X) | 230 | * drive strength = fast 3mA (MFP_DS03X) |
326 | * low power mode = default | 231 | * low power mode = default |
327 | * release dalay hold = false (RDH bit) | ||
328 | * edge detection = none | 232 | * edge detection = none |
329 | * | 233 | * |
330 | * MFP_CFG - default MFPR value with alternate function | 234 | * MFP_CFG - default MFPR value with alternate function |
@@ -334,243 +238,74 @@ enum { | |||
334 | * low power mode | 238 | * low power mode |
335 | * MFP_CFG_X - default MFPR value with alternate function, | 239 | * MFP_CFG_X - default MFPR value with alternate function, |
336 | * pin drive strength and low power mode | 240 | * pin drive strength and low power mode |
337 | * | ||
338 | * use | ||
339 | * | ||
340 | * MFP_CFG_PIN - to get the MFP pin index | ||
341 | * MFP_CFG_VAL - to get the corresponding MFPR value | ||
342 | */ | 241 | */ |
343 | 242 | ||
344 | typedef uint32_t mfp_cfg_t; | 243 | typedef unsigned long mfp_cfg_t; |
345 | 244 | ||
346 | #define MFP_CFG_PIN(mfp_cfg) (((mfp_cfg) >> 16) & 0xffff) | 245 | #define MFP_PIN(x) ((x) & 0x3ff) |
347 | #define MFP_CFG_VAL(mfp_cfg) ((mfp_cfg) & 0xffff) | 246 | |
348 | 247 | #define MFP_AF0 (0x0 << 10) | |
349 | #define MFPR_DEFAULT (0x0000) | 248 | #define MFP_AF1 (0x1 << 10) |
249 | #define MFP_AF2 (0x2 << 10) | ||
250 | #define MFP_AF3 (0x3 << 10) | ||
251 | #define MFP_AF4 (0x4 << 10) | ||
252 | #define MFP_AF5 (0x5 << 10) | ||
253 | #define MFP_AF6 (0x6 << 10) | ||
254 | #define MFP_AF7 (0x7 << 10) | ||
255 | #define MFP_AF_MASK (0x7 << 10) | ||
256 | #define MFP_AF(x) (((x) >> 10) & 0x7) | ||
257 | |||
258 | #define MFP_DS01X (0x0 << 13) | ||
259 | #define MFP_DS02X (0x1 << 13) | ||
260 | #define MFP_DS03X (0x2 << 13) | ||
261 | #define MFP_DS04X (0x3 << 13) | ||
262 | #define MFP_DS06X (0x4 << 13) | ||
263 | #define MFP_DS08X (0x5 << 13) | ||
264 | #define MFP_DS10X (0x6 << 13) | ||
265 | #define MFP_DS13X (0x7 << 13) | ||
266 | #define MFP_DS_MASK (0x7 << 13) | ||
267 | #define MFP_DS(x) (((x) >> 13) & 0x7) | ||
268 | |||
269 | #define MFP_LPM_INPUT (0x0 << 16) | ||
270 | #define MFP_LPM_DRIVE_LOW (0x1 << 16) | ||
271 | #define MFP_LPM_DRIVE_HIGH (0x2 << 16) | ||
272 | #define MFP_LPM_PULL_LOW (0x3 << 16) | ||
273 | #define MFP_LPM_PULL_HIGH (0x4 << 16) | ||
274 | #define MFP_LPM_FLOAT (0x5 << 16) | ||
275 | #define MFP_LPM_STATE_MASK (0x7 << 16) | ||
276 | #define MFP_LPM_STATE(x) (((x) >> 16) & 0x7) | ||
277 | |||
278 | #define MFP_LPM_EDGE_NONE (0x0 << 19) | ||
279 | #define MFP_LPM_EDGE_RISE (0x1 << 19) | ||
280 | #define MFP_LPM_EDGE_FALL (0x2 << 19) | ||
281 | #define MFP_LPM_EDGE_BOTH (0x3 << 19) | ||
282 | #define MFP_LPM_EDGE_MASK (0x3 << 19) | ||
283 | #define MFP_LPM_EDGE(x) (((x) >> 19) & 0x3) | ||
284 | |||
285 | #define MFP_PULL_NONE (0x0 << 21) | ||
286 | #define MFP_PULL_LOW (0x1 << 21) | ||
287 | #define MFP_PULL_HIGH (0x2 << 21) | ||
288 | #define MFP_PULL_BOTH (0x3 << 21) | ||
289 | #define MFP_PULL_MASK (0x3 << 21) | ||
290 | #define MFP_PULL(x) (((x) >> 21) & 0x3) | ||
291 | |||
292 | #define MFP_CFG_DEFAULT (MFP_AF0 | MFP_DS03X | MFP_LPM_INPUT |\ | ||
293 | MFP_LPM_EDGE_NONE | MFP_PULL_NONE) | ||
350 | 294 | ||
351 | #define MFP_CFG(pin, af) \ | 295 | #define MFP_CFG(pin, af) \ |
352 | ((MFP_PIN_##pin << 16) | MFPR_DEFAULT | (MFP_##af)) | 296 | ((MFP_CFG_DEFAULT & ~MFP_AF_MASK) |\ |
297 | (MFP_PIN(MFP_PIN_##pin) | MFP_##af)) | ||
353 | 298 | ||
354 | #define MFP_CFG_DRV(pin, af, drv) \ | 299 | #define MFP_CFG_DRV(pin, af, drv) \ |
355 | ((MFP_PIN_##pin << 16) | MFPR_DEFAULT |\ | 300 | ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_DS_MASK)) |\ |
356 | ((MFP_##drv) << 10) | (MFP_##af)) | 301 | (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_##drv)) |
357 | 302 | ||
358 | #define MFP_CFG_LPM(pin, af, lpm) \ | 303 | #define MFP_CFG_LPM(pin, af, lpm) \ |
359 | ((MFP_PIN_##pin << 16) | MFPR_DEFAULT | (MFP_##af) |\ | 304 | ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_LPM_STATE_MASK)) |\ |
360 | (((MFP_LPM_##lpm) & 0x3) << 7) |\ | 305 | (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_LPM_##lpm)) |
361 | (((MFP_LPM_##lpm) & 0x4) << 12) |\ | ||
362 | (((MFP_LPM_##lpm) & 0x8) << 10)) | ||
363 | 306 | ||
364 | #define MFP_CFG_X(pin, af, drv, lpm) \ | 307 | #define MFP_CFG_X(pin, af, drv, lpm) \ |
365 | ((MFP_PIN_##pin << 16) | MFPR_DEFAULT |\ | 308 | ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_DS_MASK | MFP_LPM_STATE_MASK)) |\ |
366 | ((MFP_##drv) << 10) | (MFP_##af) |\ | 309 | (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_##drv | MFP_LPM_##lpm)) |
367 | (((MFP_LPM_##lpm) & 0x3) << 7) |\ | ||
368 | (((MFP_LPM_##lpm) & 0x4) << 12) |\ | ||
369 | (((MFP_LPM_##lpm) & 0x8) << 10)) | ||
370 | |||
371 | /* common MFP configurations - processor specific ones defined | ||
372 | * in mfp-pxa3xx.h | ||
373 | */ | ||
374 | #define GPIO0_GPIO MFP_CFG(GPIO0, AF0) | ||
375 | #define GPIO1_GPIO MFP_CFG(GPIO1, AF0) | ||
376 | #define GPIO2_GPIO MFP_CFG(GPIO2, AF0) | ||
377 | #define GPIO3_GPIO MFP_CFG(GPIO3, AF0) | ||
378 | #define GPIO4_GPIO MFP_CFG(GPIO4, AF0) | ||
379 | #define GPIO5_GPIO MFP_CFG(GPIO5, AF0) | ||
380 | #define GPIO6_GPIO MFP_CFG(GPIO6, AF0) | ||
381 | #define GPIO7_GPIO MFP_CFG(GPIO7, AF0) | ||
382 | #define GPIO8_GPIO MFP_CFG(GPIO8, AF0) | ||
383 | #define GPIO9_GPIO MFP_CFG(GPIO9, AF0) | ||
384 | #define GPIO10_GPIO MFP_CFG(GPIO10, AF0) | ||
385 | #define GPIO11_GPIO MFP_CFG(GPIO11, AF0) | ||
386 | #define GPIO12_GPIO MFP_CFG(GPIO12, AF0) | ||
387 | #define GPIO13_GPIO MFP_CFG(GPIO13, AF0) | ||
388 | #define GPIO14_GPIO MFP_CFG(GPIO14, AF0) | ||
389 | #define GPIO15_GPIO MFP_CFG(GPIO15, AF0) | ||
390 | #define GPIO16_GPIO MFP_CFG(GPIO16, AF0) | ||
391 | #define GPIO17_GPIO MFP_CFG(GPIO17, AF0) | ||
392 | #define GPIO18_GPIO MFP_CFG(GPIO18, AF0) | ||
393 | #define GPIO19_GPIO MFP_CFG(GPIO19, AF0) | ||
394 | #define GPIO20_GPIO MFP_CFG(GPIO20, AF0) | ||
395 | #define GPIO21_GPIO MFP_CFG(GPIO21, AF0) | ||
396 | #define GPIO22_GPIO MFP_CFG(GPIO22, AF0) | ||
397 | #define GPIO23_GPIO MFP_CFG(GPIO23, AF0) | ||
398 | #define GPIO24_GPIO MFP_CFG(GPIO24, AF0) | ||
399 | #define GPIO25_GPIO MFP_CFG(GPIO25, AF0) | ||
400 | #define GPIO26_GPIO MFP_CFG(GPIO26, AF0) | ||
401 | #define GPIO27_GPIO MFP_CFG(GPIO27, AF0) | ||
402 | #define GPIO28_GPIO MFP_CFG(GPIO28, AF0) | ||
403 | #define GPIO29_GPIO MFP_CFG(GPIO29, AF0) | ||
404 | #define GPIO30_GPIO MFP_CFG(GPIO30, AF0) | ||
405 | #define GPIO31_GPIO MFP_CFG(GPIO31, AF0) | ||
406 | #define GPIO32_GPIO MFP_CFG(GPIO32, AF0) | ||
407 | #define GPIO33_GPIO MFP_CFG(GPIO33, AF0) | ||
408 | #define GPIO34_GPIO MFP_CFG(GPIO34, AF0) | ||
409 | #define GPIO35_GPIO MFP_CFG(GPIO35, AF0) | ||
410 | #define GPIO36_GPIO MFP_CFG(GPIO36, AF0) | ||
411 | #define GPIO37_GPIO MFP_CFG(GPIO37, AF0) | ||
412 | #define GPIO38_GPIO MFP_CFG(GPIO38, AF0) | ||
413 | #define GPIO39_GPIO MFP_CFG(GPIO39, AF0) | ||
414 | #define GPIO40_GPIO MFP_CFG(GPIO40, AF0) | ||
415 | #define GPIO41_GPIO MFP_CFG(GPIO41, AF0) | ||
416 | #define GPIO42_GPIO MFP_CFG(GPIO42, AF0) | ||
417 | #define GPIO43_GPIO MFP_CFG(GPIO43, AF0) | ||
418 | #define GPIO44_GPIO MFP_CFG(GPIO44, AF0) | ||
419 | #define GPIO45_GPIO MFP_CFG(GPIO45, AF0) | ||
420 | |||
421 | #define GPIO47_GPIO MFP_CFG(GPIO47, AF0) | ||
422 | #define GPIO48_GPIO MFP_CFG(GPIO48, AF0) | ||
423 | |||
424 | #define GPIO53_GPIO MFP_CFG(GPIO53, AF0) | ||
425 | #define GPIO54_GPIO MFP_CFG(GPIO54, AF0) | ||
426 | #define GPIO55_GPIO MFP_CFG(GPIO55, AF0) | ||
427 | |||
428 | #define GPIO57_GPIO MFP_CFG(GPIO57, AF0) | ||
429 | |||
430 | #define GPIO63_GPIO MFP_CFG(GPIO63, AF0) | ||
431 | #define GPIO64_GPIO MFP_CFG(GPIO64, AF0) | ||
432 | #define GPIO65_GPIO MFP_CFG(GPIO65, AF0) | ||
433 | #define GPIO66_GPIO MFP_CFG(GPIO66, AF0) | ||
434 | #define GPIO67_GPIO MFP_CFG(GPIO67, AF0) | ||
435 | #define GPIO68_GPIO MFP_CFG(GPIO68, AF0) | ||
436 | #define GPIO69_GPIO MFP_CFG(GPIO69, AF0) | ||
437 | #define GPIO70_GPIO MFP_CFG(GPIO70, AF0) | ||
438 | #define GPIO71_GPIO MFP_CFG(GPIO71, AF0) | ||
439 | #define GPIO72_GPIO MFP_CFG(GPIO72, AF0) | ||
440 | #define GPIO73_GPIO MFP_CFG(GPIO73, AF0) | ||
441 | #define GPIO74_GPIO MFP_CFG(GPIO74, AF0) | ||
442 | #define GPIO75_GPIO MFP_CFG(GPIO75, AF0) | ||
443 | #define GPIO76_GPIO MFP_CFG(GPIO76, AF0) | ||
444 | #define GPIO77_GPIO MFP_CFG(GPIO77, AF0) | ||
445 | #define GPIO78_GPIO MFP_CFG(GPIO78, AF0) | ||
446 | #define GPIO79_GPIO MFP_CFG(GPIO79, AF0) | ||
447 | #define GPIO80_GPIO MFP_CFG(GPIO80, AF0) | ||
448 | #define GPIO81_GPIO MFP_CFG(GPIO81, AF0) | ||
449 | #define GPIO82_GPIO MFP_CFG(GPIO82, AF0) | ||
450 | #define GPIO83_GPIO MFP_CFG(GPIO83, AF0) | ||
451 | #define GPIO84_GPIO MFP_CFG(GPIO84, AF0) | ||
452 | #define GPIO85_GPIO MFP_CFG(GPIO85, AF0) | ||
453 | #define GPIO86_GPIO MFP_CFG(GPIO86, AF0) | ||
454 | #define GPIO87_GPIO MFP_CFG(GPIO87, AF0) | ||
455 | #define GPIO88_GPIO MFP_CFG(GPIO88, AF0) | ||
456 | #define GPIO89_GPIO MFP_CFG(GPIO89, AF0) | ||
457 | #define GPIO90_GPIO MFP_CFG(GPIO90, AF0) | ||
458 | #define GPIO91_GPIO MFP_CFG(GPIO91, AF0) | ||
459 | #define GPIO92_GPIO MFP_CFG(GPIO92, AF0) | ||
460 | #define GPIO93_GPIO MFP_CFG(GPIO93, AF0) | ||
461 | #define GPIO94_GPIO MFP_CFG(GPIO94, AF0) | ||
462 | #define GPIO95_GPIO MFP_CFG(GPIO95, AF0) | ||
463 | #define GPIO96_GPIO MFP_CFG(GPIO96, AF0) | ||
464 | #define GPIO97_GPIO MFP_CFG(GPIO97, AF0) | ||
465 | #define GPIO98_GPIO MFP_CFG(GPIO98, AF0) | ||
466 | #define GPIO99_GPIO MFP_CFG(GPIO99, AF0) | ||
467 | #define GPIO100_GPIO MFP_CFG(GPIO100, AF0) | ||
468 | #define GPIO101_GPIO MFP_CFG(GPIO101, AF0) | ||
469 | #define GPIO102_GPIO MFP_CFG(GPIO102, AF0) | ||
470 | #define GPIO103_GPIO MFP_CFG(GPIO103, AF0) | ||
471 | #define GPIO104_GPIO MFP_CFG(GPIO104, AF0) | ||
472 | #define GPIO105_GPIO MFP_CFG(GPIO105, AF0) | ||
473 | #define GPIO106_GPIO MFP_CFG(GPIO106, AF0) | ||
474 | #define GPIO107_GPIO MFP_CFG(GPIO107, AF0) | ||
475 | #define GPIO108_GPIO MFP_CFG(GPIO108, AF0) | ||
476 | #define GPIO109_GPIO MFP_CFG(GPIO109, AF0) | ||
477 | #define GPIO110_GPIO MFP_CFG(GPIO110, AF0) | ||
478 | #define GPIO111_GPIO MFP_CFG(GPIO111, AF0) | ||
479 | #define GPIO112_GPIO MFP_CFG(GPIO112, AF0) | ||
480 | #define GPIO113_GPIO MFP_CFG(GPIO113, AF0) | ||
481 | #define GPIO114_GPIO MFP_CFG(GPIO114, AF0) | ||
482 | #define GPIO115_GPIO MFP_CFG(GPIO115, AF0) | ||
483 | #define GPIO116_GPIO MFP_CFG(GPIO116, AF0) | ||
484 | #define GPIO117_GPIO MFP_CFG(GPIO117, AF0) | ||
485 | #define GPIO118_GPIO MFP_CFG(GPIO118, AF0) | ||
486 | #define GPIO119_GPIO MFP_CFG(GPIO119, AF0) | ||
487 | #define GPIO120_GPIO MFP_CFG(GPIO120, AF0) | ||
488 | #define GPIO121_GPIO MFP_CFG(GPIO121, AF0) | ||
489 | #define GPIO122_GPIO MFP_CFG(GPIO122, AF0) | ||
490 | #define GPIO123_GPIO MFP_CFG(GPIO123, AF0) | ||
491 | #define GPIO124_GPIO MFP_CFG(GPIO124, AF0) | ||
492 | #define GPIO125_GPIO MFP_CFG(GPIO125, AF0) | ||
493 | #define GPIO126_GPIO MFP_CFG(GPIO126, AF0) | ||
494 | #define GPIO127_GPIO MFP_CFG(GPIO127, AF0) | ||
495 | |||
496 | #define GPIO0_2_GPIO MFP_CFG(GPIO0_2, AF0) | ||
497 | #define GPIO1_2_GPIO MFP_CFG(GPIO1_2, AF0) | ||
498 | #define GPIO2_2_GPIO MFP_CFG(GPIO2_2, AF0) | ||
499 | #define GPIO3_2_GPIO MFP_CFG(GPIO3_2, AF0) | ||
500 | #define GPIO4_2_GPIO MFP_CFG(GPIO4_2, AF0) | ||
501 | #define GPIO5_2_GPIO MFP_CFG(GPIO5_2, AF0) | ||
502 | #define GPIO6_2_GPIO MFP_CFG(GPIO6_2, AF0) | ||
503 | |||
504 | /* | ||
505 | * each MFP pin will have a MFPR register, since the offset of the | ||
506 | * register varies between processors, the processor specific code | ||
507 | * should initialize the pin offsets by pxa3xx_mfp_init_addr() | ||
508 | * | ||
509 | * pxa3xx_mfp_init_addr - accepts a table of "pxa3xx_mfp_addr_map" | ||
510 | * structure, which represents a range of MFP pins from "start" to | ||
511 | * "end", with the offset begining at "offset", to define a single | ||
512 | * pin, let "end" = -1 | ||
513 | * | ||
514 | * use | ||
515 | * | ||
516 | * MFP_ADDR_X() to define a range of pins | ||
517 | * MFP_ADDR() to define a single pin | ||
518 | * MFP_ADDR_END to signal the end of pin offset definitions | ||
519 | */ | ||
520 | struct pxa3xx_mfp_addr_map { | ||
521 | unsigned int start; | ||
522 | unsigned int end; | ||
523 | unsigned long offset; | ||
524 | }; | ||
525 | |||
526 | #define MFP_ADDR_X(start, end, offset) \ | ||
527 | { MFP_PIN_##start, MFP_PIN_##end, offset } | ||
528 | |||
529 | #define MFP_ADDR(pin, offset) \ | ||
530 | { MFP_PIN_##pin, -1, offset } | ||
531 | |||
532 | #define MFP_ADDR_END { MFP_PIN_INVALID, 0 } | ||
533 | |||
534 | struct pxa3xx_mfp_pin { | ||
535 | unsigned long mfpr_off; /* MFPRxx register offset */ | ||
536 | unsigned long mfpr_val; /* MFPRxx register value */ | ||
537 | }; | ||
538 | |||
539 | /* | ||
540 | * pxa3xx_mfp_read()/pxa3xx_mfp_write() - for direct read/write access | ||
541 | * to the MFPR register | ||
542 | */ | ||
543 | unsigned long pxa3xx_mfp_read(int mfp); | ||
544 | void pxa3xx_mfp_write(int mfp, unsigned long mfpr_val); | ||
545 | |||
546 | /* | ||
547 | * pxa3xx_mfp_set_afds - set MFP alternate function and drive strength | ||
548 | * pxa3xx_mfp_set_rdh - set MFP release delay hold on/off | ||
549 | * pxa3xx_mfp_set_lpm - set MFP low power mode state | ||
550 | * pxa3xx_mfp_set_edge - set MFP edge detection in low power mode | ||
551 | * | ||
552 | * use these functions to override/change the default configuration | ||
553 | * done by pxa3xx_mfp_set_config(s) | ||
554 | */ | ||
555 | void pxa3xx_mfp_set_afds(int mfp, int af, int ds); | ||
556 | void pxa3xx_mfp_set_rdh(int mfp, int rdh); | ||
557 | void pxa3xx_mfp_set_lpm(int mfp, int lpm); | ||
558 | void pxa3xx_mfp_set_edge(int mfp, int edge); | ||
559 | |||
560 | /* | ||
561 | * pxa3xx_mfp_config - configure the MFPR registers | ||
562 | * | ||
563 | * used by board specific initialization code | ||
564 | */ | ||
565 | void pxa3xx_mfp_config(mfp_cfg_t *mfp_cfgs, int num); | ||
566 | |||
567 | /* | ||
568 | * pxa3xx_mfp_init_addr() - initialize the mapping between mfp pin | ||
569 | * index and MFPR register offset | ||
570 | * | ||
571 | * used by processor specific code | ||
572 | */ | ||
573 | void __init pxa3xx_mfp_init_addr(struct pxa3xx_mfp_addr_map *); | ||
574 | void __init pxa3xx_init_mfp(void); | ||
575 | 310 | ||
576 | #endif /* __ASM_ARCH_MFP_H */ | 311 | #endif /* __ASM_ARCH_MFP_H */ |
diff --git a/include/asm-arm/arch-pxa/mmc.h b/include/asm-arm/arch-pxa/mmc.h index ef4f570381d1..6d1304c9270f 100644 --- a/include/asm-arm/arch-pxa/mmc.h +++ b/include/asm-arm/arch-pxa/mmc.h | |||
@@ -17,5 +17,7 @@ struct pxamci_platform_data { | |||
17 | }; | 17 | }; |
18 | 18 | ||
19 | extern void pxa_set_mci_info(struct pxamci_platform_data *info); | 19 | extern void pxa_set_mci_info(struct pxamci_platform_data *info); |
20 | extern void pxa3xx_set_mci2_info(struct pxamci_platform_data *info); | ||
21 | extern void pxa3xx_set_mci3_info(struct pxamci_platform_data *info); | ||
20 | 22 | ||
21 | #endif | 23 | #endif |
diff --git a/include/asm-arm/arch-pxa/pcm027.h b/include/asm-arm/arch-pxa/pcm027.h new file mode 100644 index 000000000000..7beae1472c3e --- /dev/null +++ b/include/asm-arm/arch-pxa/pcm027.h | |||
@@ -0,0 +1,75 @@ | |||
1 | /* | ||
2 | * linux/include/asm-arm/arch-pxa/pcm027.h | ||
3 | * | ||
4 | * (c) 2003 Phytec Messtechnik GmbH <armlinux@phytec.de> | ||
5 | * (c) 2007 Juergen Beisert <j.beisert@pengutronix.de> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | * GNU General Public License for more details. | ||
16 | * | ||
17 | * You should have received a copy of the GNU General Public License | ||
18 | * along with this program; if not, write to the Free Software | ||
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
20 | */ | ||
21 | |||
22 | /* | ||
23 | * Definitions of CPU card resources only | ||
24 | */ | ||
25 | |||
26 | /* I2C RTC */ | ||
27 | #define PCM027_RTC_IRQ_GPIO 0 | ||
28 | #define PCM027_RTC_IRQ IRQ_GPIO(PCM027_RTC_IRQ_GPIO) | ||
29 | #define PCM027_RTC_IRQ_EDGE IRQ_TYPE_EDGE_FALLING | ||
30 | #define ADR_PCM027_RTC 0x51 /* I2C address */ | ||
31 | |||
32 | /* I2C EEPROM */ | ||
33 | #define ADR_PCM027_EEPROM 0x54 /* I2C address */ | ||
34 | |||
35 | /* Ethernet chip (SMSC91C111) */ | ||
36 | #define PCM027_ETH_IRQ_GPIO 52 | ||
37 | #define PCM027_ETH_IRQ IRQ_GPIO(PCM027_ETH_IRQ_GPIO) | ||
38 | #define PCM027_ETH_IRQ_EDGE IRQ_TYPE_EDGE_RISING | ||
39 | #define PCM027_ETH_PHYS PXA_CS5_PHYS | ||
40 | #define PCM027_ETH_SIZE (1*1024*1024) | ||
41 | |||
42 | /* CAN controller SJA1000 (unsupported yet) */ | ||
43 | #define PCM027_CAN_IRQ_GPIO 114 | ||
44 | #define PCM027_CAN_IRQ IRQ_GPIO(PCM027_CAN_IRQ_GPIO) | ||
45 | #define PCM027_CAN_IRQ_EDGE IRQ_TYPE_EDGE_FALLING | ||
46 | #define PCM027_CAN_PHYS 0x22000000 | ||
47 | #define PCM027_CAN_SIZE 0x100 | ||
48 | |||
49 | /* SPI GPIO expander (unsupported yet) */ | ||
50 | #define PCM027_EGPIO_IRQ_GPIO 27 | ||
51 | #define PCM027_EGPIO_IRQ IRQ_GPIO(PCM027_EGPIO_IRQ_GPIO) | ||
52 | #define PCM027_EGPIO_IRQ_EDGE IRQ_TYPE_EDGE_FALLING | ||
53 | #define PCM027_EGPIO_CS 24 | ||
54 | /* | ||
55 | * TODO: Switch this pin from dedicated usage to GPIO if | ||
56 | * more than the MAX7301 device is connected to this SPI bus | ||
57 | */ | ||
58 | #define PCM027_EGPIO_CS_MODE GPIO24_SFRM_MD | ||
59 | |||
60 | /* Flash memory */ | ||
61 | #define PCM027_FLASH_PHYS 0x00000000 | ||
62 | #define PCM027_FLASH_SIZE 0x02000000 | ||
63 | |||
64 | /* onboard LEDs connected to GPIO */ | ||
65 | #define PCM027_LED_CPU 90 | ||
66 | #define PCM027_LED_HEARD_BEAT 91 | ||
67 | |||
68 | /* | ||
69 | * This CPU module needs a baseboard to work. After basic initializing | ||
70 | * its own devices, it calls baseboard's init function. | ||
71 | * TODO: Add your own basebaord init function and call it from | ||
72 | * inside pcm027_init(). This example here is for the developmen board. | ||
73 | * Refer pcm990-baseboard.c | ||
74 | */ | ||
75 | extern void pcm990_baseboard_init(void); | ||
diff --git a/include/asm-arm/arch-pxa/pcm990_baseboard.h b/include/asm-arm/arch-pxa/pcm990_baseboard.h new file mode 100644 index 000000000000..b699d0d7bdb2 --- /dev/null +++ b/include/asm-arm/arch-pxa/pcm990_baseboard.h | |||
@@ -0,0 +1,275 @@ | |||
1 | /* | ||
2 | * include/asm-arm/arch-pxa/pcm990_baseboard.h | ||
3 | * | ||
4 | * (c) 2003 Phytec Messtechnik GmbH <armlinux@phytec.de> | ||
5 | * (c) 2007 Juergen Beisert <j.beisert@pengutronix.de> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | * GNU General Public License for more details. | ||
16 | * | ||
17 | * You should have received a copy of the GNU General Public License | ||
18 | * along with this program; if not, write to the Free Software | ||
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
20 | */ | ||
21 | |||
22 | #include <asm/arch/pcm027.h> | ||
23 | |||
24 | /* | ||
25 | * definitions relevant only when the PCM-990 | ||
26 | * development base board is in use | ||
27 | */ | ||
28 | |||
29 | /* CPLD's interrupt controller is connected to PCM-027 GPIO 9 */ | ||
30 | #define PCM990_CTRL_INT_IRQ_GPIO 9 | ||
31 | #define PCM990_CTRL_INT_IRQ IRQ_GPIO(PCM990_CTRL_INT_IRQ_GPIO) | ||
32 | #define PCM990_CTRL_INT_IRQ_EDGE IRQT_RISING | ||
33 | #define PCM990_CTRL_PHYS PXA_CS1_PHYS /* 16-Bit */ | ||
34 | #define PCM990_CTRL_BASE 0xea000000 | ||
35 | #define PCM990_CTRL_SIZE (1*1024*1024) | ||
36 | |||
37 | #define PCM990_CTRL_PWR_IRQ_GPIO 14 | ||
38 | #define PCM990_CTRL_PWR_IRQ IRQ_GPIO(PCM990_CTRL_PWR_IRQ_GPIO) | ||
39 | #define PCM990_CTRL_PWR_IRQ_EDGE IRQT_RISING | ||
40 | |||
41 | /* visible CPLD (U7) registers */ | ||
42 | #define PCM990_CTRL_REG0 0x0000 /* RESET REGISTER */ | ||
43 | #define PCM990_CTRL_SYSRES 0x0001 /* System RESET REGISTER */ | ||
44 | #define PCM990_CTRL_RESOUT 0x0002 /* RESETOUT Enable REGISTER */ | ||
45 | #define PCM990_CTRL_RESGPIO 0x0004 /* RESETGPIO Enable REGISTER */ | ||
46 | |||
47 | #define PCM990_CTRL_REG1 0x0002 /* Power REGISTER */ | ||
48 | #define PCM990_CTRL_5VOFF 0x0001 /* Disable 5V Regulators */ | ||
49 | #define PCM990_CTRL_CANPWR 0x0004 /* Enable CANPWR ADUM */ | ||
50 | #define PCM990_CTRL_PM_5V 0x0008 /* Read 5V OK */ | ||
51 | |||
52 | #define PCM990_CTRL_REG2 0x0004 /* LED REGISTER */ | ||
53 | #define PCM990_CTRL_LEDPWR 0x0001 /* POWER LED enable */ | ||
54 | #define PCM990_CTRL_LEDBAS 0x0002 /* BASIS LED enable */ | ||
55 | #define PCM990_CTRL_LEDUSR 0x0004 /* USER LED enable */ | ||
56 | |||
57 | #define PCM990_CTRL_REG3 0x0006 /* LCD CTRL REGISTER 3 */ | ||
58 | #define PCM990_CTRL_LCDPWR 0x0001 /* RW LCD Power on */ | ||
59 | #define PCM990_CTRL_LCDON 0x0002 /* RW LCD Latch on */ | ||
60 | #define PCM990_CTRL_LCDPOS1 0x0004 /* RW POS 1 */ | ||
61 | #define PCM990_CTRL_LCDPOS2 0x0008 /* RW POS 2 */ | ||
62 | |||
63 | #define PCM990_CTRL_REG4 0x0008 /* MMC1 CTRL REGISTER 4 */ | ||
64 | #define PCM990_CTRL_MMC1PWR 0x0001 /* RW MMC1 Power on */ | ||
65 | |||
66 | #define PCM990_CTRL_REG5 0x000A /* MMC2 CTRL REGISTER 5 */ | ||
67 | #define PCM990_CTRL_MMC2PWR 0x0001 /* RW MMC2 Power on */ | ||
68 | #define PCM990_CTRL_MMC2LED 0x0002 /* RW MMC2 LED */ | ||
69 | #define PCM990_CTRL_MMC2DE 0x0004 /* R MMC2 Card detect */ | ||
70 | #define PCM990_CTRL_MMC2WP 0x0008 /* R MMC2 Card write protect */ | ||
71 | |||
72 | #define PCM990_CTRL_REG6 0x000C /* Interrupt Clear REGISTER */ | ||
73 | #define PCM990_CTRL_INTC0 0x0001 /* Clear Reg BT Detect */ | ||
74 | #define PCM990_CTRL_INTC1 0x0002 /* Clear Reg FR RI */ | ||
75 | #define PCM990_CTRL_INTC2 0x0004 /* Clear Reg MMC1 Detect */ | ||
76 | #define PCM990_CTRL_INTC3 0x0008 /* Clear Reg PM_5V off */ | ||
77 | |||
78 | #define PCM990_CTRL_REG7 0x000E /* Interrupt Enable REGISTER */ | ||
79 | #define PCM990_CTRL_ENAINT0 0x0001 /* Enable Int BT Detect */ | ||
80 | #define PCM990_CTRL_ENAINT1 0x0002 /* Enable Int FR RI */ | ||
81 | #define PCM990_CTRL_ENAINT2 0x0004 /* Enable Int MMC1 Detect */ | ||
82 | #define PCM990_CTRL_ENAINT3 0x0008 /* Enable Int PM_5V off */ | ||
83 | |||
84 | #define PCM990_CTRL_REG8 0x0014 /* Uart REGISTER */ | ||
85 | #define PCM990_CTRL_FFSD 0x0001 /* BT Uart Enable */ | ||
86 | #define PCM990_CTRL_BTSD 0x0002 /* FF Uart Enable */ | ||
87 | #define PCM990_CTRL_FFRI 0x0004 /* FF Uart RI detect */ | ||
88 | #define PCM990_CTRL_BTRX 0x0008 /* BT Uart Rx detect */ | ||
89 | |||
90 | #define PCM990_CTRL_REG9 0x0010 /* AC97 Flash REGISTER */ | ||
91 | #define PCM990_CTRL_FLWP 0x0001 /* pC Flash Write Protect */ | ||
92 | #define PCM990_CTRL_FLDIS 0x0002 /* pC Flash Disable */ | ||
93 | #define PCM990_CTRL_AC97ENA 0x0004 /* Enable AC97 Expansion */ | ||
94 | |||
95 | #define PCM990_CTRL_REG10 0x0012 /* GPS-REGISTER */ | ||
96 | #define PCM990_CTRL_GPSPWR 0x0004 /* GPS-Modul Power on */ | ||
97 | #define PCM990_CTRL_GPSENA 0x0008 /* GPS-Modul Enable */ | ||
98 | |||
99 | #define PCM990_CTRL_REG11 0x0014 /* Accu REGISTER */ | ||
100 | #define PCM990_CTRL_ACENA 0x0001 /* Charge Enable */ | ||
101 | #define PCM990_CTRL_ACSEL 0x0002 /* Charge Akku -> DC Enable */ | ||
102 | #define PCM990_CTRL_ACPRES 0x0004 /* DC Present */ | ||
103 | #define PCM990_CTRL_ACALARM 0x0008 /* Error Akku */ | ||
104 | |||
105 | #define PCM990_CTRL_P2V(x) ((x) - PCM990_CTRL_PHYS + PCM990_CTRL_BASE) | ||
106 | #define PCM990_CTRL_V2P(x) ((x) - PCM990_CTRL_BASE + PCM990_CTRL_PHYS) | ||
107 | |||
108 | #ifndef __ASSEMBLY__ | ||
109 | # define __PCM990_CTRL_REG(x) \ | ||
110 | (*((volatile unsigned char *)PCM990_CTRL_P2V(x))) | ||
111 | #else | ||
112 | # define __PCM990_CTRL_REG(x) PCM990_CTRL_P2V(x) | ||
113 | #endif | ||
114 | |||
115 | #define PCM990_INTMSKENA __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG7) | ||
116 | #define PCM990_INTSETCLR __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG6) | ||
117 | #define PCM990_CTRL0 __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG0) | ||
118 | #define PCM990_CTRL1 __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG1) | ||
119 | #define PCM990_CTRL2 __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG2) | ||
120 | #define PCM990_CTRL3 __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG3) | ||
121 | #define PCM990_CTRL4 __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG4) | ||
122 | #define PCM990_CTRL5 __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG5) | ||
123 | #define PCM990_CTRL6 __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG6) | ||
124 | #define PCM990_CTRL7 __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG7) | ||
125 | #define PCM990_CTRL8 __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG8) | ||
126 | #define PCM990_CTRL9 __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG9) | ||
127 | #define PCM990_CTRL10 __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG10) | ||
128 | #define PCM990_CTRL11 __PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG11) | ||
129 | |||
130 | |||
131 | /* | ||
132 | * IDE | ||
133 | */ | ||
134 | #define PCM990_IDE_IRQ_GPIO 13 | ||
135 | #define PCM990_IDE_IRQ IRQ_GPIO(PCM990_IDE_IRQ_GPIO) | ||
136 | #define PCM990_IDE_IRQ_EDGE IRQT_RISING | ||
137 | #define PCM990_IDE_PLD_PHYS 0x20000000 /* 16 bit wide */ | ||
138 | #define PCM990_IDE_PLD_BASE 0xee000000 | ||
139 | #define PCM990_IDE_PLD_SIZE (1*1024*1024) | ||
140 | |||
141 | /* visible CPLD (U6) registers */ | ||
142 | #define PCM990_IDE_PLD_REG0 0x1000 /* OFFSET IDE REGISTER 0 */ | ||
143 | #define PCM990_IDE_PM5V 0x0004 /* R System VCC_5V */ | ||
144 | #define PCM990_IDE_STBY 0x0008 /* R System StandBy */ | ||
145 | |||
146 | #define PCM990_IDE_PLD_REG1 0x1002 /* OFFSET IDE REGISTER 1 */ | ||
147 | #define PCM990_IDE_IDEMODE 0x0001 /* R TrueIDE Mode */ | ||
148 | #define PCM990_IDE_DMAENA 0x0004 /* RW DMA Enable */ | ||
149 | #define PCM990_IDE_DMA1_0 0x0008 /* RW 1=DREQ1 0=DREQ0 */ | ||
150 | |||
151 | #define PCM990_IDE_PLD_REG2 0x1004 /* OFFSET IDE REGISTER 2 */ | ||
152 | #define PCM990_IDE_RESENA 0x0001 /* RW IDE Reset Bit enable */ | ||
153 | #define PCM990_IDE_RES 0x0002 /* RW IDE Reset Bit */ | ||
154 | #define PCM990_IDE_RDY 0x0008 /* RDY */ | ||
155 | |||
156 | #define PCM990_IDE_PLD_REG3 0x1006 /* OFFSET IDE REGISTER 3 */ | ||
157 | #define PCM990_IDE_IDEOE 0x0001 /* RW Latch on Databus */ | ||
158 | #define PCM990_IDE_IDEON 0x0002 /* RW Latch on Control Address */ | ||
159 | #define PCM990_IDE_IDEIN 0x0004 /* RW Latch on Interrupt usw. */ | ||
160 | |||
161 | #define PCM990_IDE_PLD_REG4 0x1008 /* OFFSET IDE REGISTER 4 */ | ||
162 | #define PCM990_IDE_PWRENA 0x0001 /* RW IDE Power enable */ | ||
163 | #define PCM990_IDE_5V 0x0002 /* R IDE Power 5V */ | ||
164 | #define PCM990_IDE_PWG 0x0008 /* R IDE Power is on */ | ||
165 | |||
166 | #define PCM990_IDE_PLD_P2V(x) ((x) - PCM990_IDE_PLD_PHYS + PCM990_IDE_PLD_BASE) | ||
167 | #define PCM990_IDE_PLD_V2P(x) ((x) - PCM990_IDE_PLD_BASE + PCM990_IDE_PLD_PHYS) | ||
168 | |||
169 | #ifndef __ASSEMBLY__ | ||
170 | # define __PCM990_IDE_PLD_REG(x) \ | ||
171 | (*((volatile unsigned char *)PCM990_IDE_PLD_P2V(x))) | ||
172 | #else | ||
173 | # define __PCM990_IDE_PLD_REG(x) PCM990_IDE_PLD_P2V(x) | ||
174 | #endif | ||
175 | |||
176 | #define PCM990_IDE0 \ | ||
177 | __PCM990_IDE_PLD_REG(PCM990_IDE_PLD_PHYS + PCM990_IDE_PLD_REG0) | ||
178 | #define PCM990_IDE1 \ | ||
179 | __PCM990_IDE_PLD_REG(PCM990_IDE_PLD_PHYS + PCM990_IDE_PLD_REG1) | ||
180 | #define PCM990_IDE2 \ | ||
181 | __PCM990_IDE_PLD_REG(PCM990_IDE_PLD_PHYS + PCM990_IDE_PLD_REG2) | ||
182 | #define PCM990_IDE3 \ | ||
183 | __PCM990_IDE_PLD_REG(PCM990_IDE_PLD_PHYS + PCM990_IDE_PLD_REG3) | ||
184 | #define PCM990_IDE4 \ | ||
185 | __PCM990_IDE_PLD_REG(PCM990_IDE_PLD_PHYS + PCM990_IDE_PLD_REG4) | ||
186 | |||
187 | /* | ||
188 | * Compact Flash | ||
189 | */ | ||
190 | #define PCM990_CF_IRQ_GPIO 11 | ||
191 | #define PCM990_CF_IRQ IRQ_GPIO(PCM990_CF_IRQ_GPIO) | ||
192 | #define PCM990_CF_IRQ_EDGE IRQT_RISING | ||
193 | |||
194 | #define PCM990_CF_CD_GPIO 12 | ||
195 | #define PCM990_CF_CD IRQ_GPIO(PCM990_CF_CD_GPIO) | ||
196 | #define PCM990_CF_CD_EDGE IRQT_RISING | ||
197 | |||
198 | #define PCM990_CF_PLD_PHYS 0x30000000 /* 16 bit wide */ | ||
199 | #define PCM990_CF_PLD_BASE 0xef000000 | ||
200 | #define PCM990_CF_PLD_SIZE (1*1024*1024) | ||
201 | #define PCM990_CF_PLD_P2V(x) ((x) - PCM990_CF_PLD_PHYS + PCM990_CF_PLD_BASE) | ||
202 | #define PCM990_CF_PLD_V2P(x) ((x) - PCM990_CF_PLD_BASE + PCM990_CF_PLD_PHYS) | ||
203 | |||
204 | /* visible CPLD (U6) registers */ | ||
205 | #define PCM990_CF_PLD_REG0 0x1000 /* OFFSET CF REGISTER 0 */ | ||
206 | #define PCM990_CF_REG0_LED 0x0001 /* RW LED on */ | ||
207 | #define PCM990_CF_REG0_BLK 0x0002 /* RW LED flash when access */ | ||
208 | #define PCM990_CF_REG0_PM5V 0x0004 /* R System VCC_5V enable */ | ||
209 | #define PCM990_CF_REG0_STBY 0x0008 /* R System StandBy */ | ||
210 | |||
211 | #define PCM990_CF_PLD_REG1 0x1002 /* OFFSET CF REGISTER 1 */ | ||
212 | #define PCM990_CF_REG1_IDEMODE 0x0001 /* RW CF card run as TrueIDE */ | ||
213 | #define PCM990_CF_REG1_CF0 0x0002 /* RW CF card at ADDR 0x28000000 */ | ||
214 | |||
215 | #define PCM990_CF_PLD_REG2 0x1004 /* OFFSET CF REGISTER 2 */ | ||
216 | #define PCM990_CF_REG2_RES 0x0002 /* RW CF RESET BIT */ | ||
217 | #define PCM990_CF_REG2_RDYENA 0x0004 /* RW Enable CF_RDY */ | ||
218 | #define PCM990_CF_REG2_RDY 0x0008 /* R CF_RDY auf PWAIT */ | ||
219 | |||
220 | #define PCM990_CF_PLD_REG3 0x1006 /* OFFSET CF REGISTER 3 */ | ||
221 | #define PCM990_CF_REG3_CFOE 0x0001 /* RW Latch on Databus */ | ||
222 | #define PCM990_CF_REG3_CFON 0x0002 /* RW Latch on Control Address */ | ||
223 | #define PCM990_CF_REG3_CFIN 0x0004 /* RW Latch on Interrupt usw. */ | ||
224 | #define PCM990_CF_REG3_CFCD 0x0008 /* RW Latch on CD1/2 VS1/2 usw */ | ||
225 | |||
226 | #define PCM990_CF_PLD_REG4 0x1008 /* OFFSET CF REGISTER 4 */ | ||
227 | #define PCM990_CF_REG4_PWRENA 0x0001 /* RW CF Power on (CD1/2 = "00") */ | ||
228 | #define PCM990_CF_REG4_5_3V 0x0002 /* RW 1 = 5V CF_VCC 0 = 3 V CF_VCC */ | ||
229 | #define PCM990_CF_REG4_3B 0x0004 /* RW 3.0V Backup from VCC (5_3V=0) */ | ||
230 | #define PCM990_CF_REG4_PWG 0x0008 /* R CF-Power is on */ | ||
231 | |||
232 | #define PCM990_CF_PLD_REG5 0x100A /* OFFSET CF REGISTER 5 */ | ||
233 | #define PCM990_CF_REG5_BVD1 0x0001 /* R CF /BVD1 */ | ||
234 | #define PCM990_CF_REG5_BVD2 0x0002 /* R CF /BVD2 */ | ||
235 | #define PCM990_CF_REG5_VS1 0x0004 /* R CF /VS1 */ | ||
236 | #define PCM990_CF_REG5_VS2 0x0008 /* R CF /VS2 */ | ||
237 | |||
238 | #define PCM990_CF_PLD_REG6 0x100C /* OFFSET CF REGISTER 6 */ | ||
239 | #define PCM990_CF_REG6_CD1 0x0001 /* R CF Card_Detect1 */ | ||
240 | #define PCM990_CF_REG6_CD2 0x0002 /* R CF Card_Detect2 */ | ||
241 | |||
242 | #ifndef __ASSEMBLY__ | ||
243 | # define __PCM990_CF_PLD_REG(x) \ | ||
244 | (*((volatile unsigned char *)PCM990_CF_PLD_P2V(x))) | ||
245 | #else | ||
246 | # define __PCM990_CF_PLD_REG(x) PCM990_CF_PLD_P2V(x) | ||
247 | #endif | ||
248 | |||
249 | #define PCM990_CF0 __PCM990_CF_PLD_REG(PCM990_CF_PLD_PHYS + PCM990_CF_PLD_REG0) | ||
250 | #define PCM990_CF1 __PCM990_CF_PLD_REG(PCM990_CF_PLD_PHYS + PCM990_CF_PLD_REG1) | ||
251 | #define PCM990_CF2 __PCM990_CF_PLD_REG(PCM990_CF_PLD_PHYS + PCM990_CF_PLD_REG2) | ||
252 | #define PCM990_CF3 __PCM990_CF_PLD_REG(PCM990_CF_PLD_PHYS + PCM990_CF_PLD_REG3) | ||
253 | #define PCM990_CF4 __PCM990_CF_PLD_REG(PCM990_CF_PLD_PHYS + PCM990_CF_PLD_REG4) | ||
254 | #define PCM990_CF5 __PCM990_CF_PLD_REG(PCM990_CF_PLD_PHYS + PCM990_CF_PLD_REG5) | ||
255 | #define PCM990_CF6 __PCM990_CF_PLD_REG(PCM990_CF_PLD_PHYS + PCM990_CF_PLD_REG6) | ||
256 | |||
257 | /* | ||
258 | * Wolfson AC97 Touch | ||
259 | */ | ||
260 | #define PCM990_AC97_IRQ_GPIO 10 | ||
261 | #define PCM990_AC97_IRQ IRQ_GPIO(PCM990_AC97_IRQ_GPIO) | ||
262 | #define PCM990_AC97_IRQ_EDGE IRQT_RISING | ||
263 | |||
264 | /* | ||
265 | * MMC phyCORE | ||
266 | */ | ||
267 | #define PCM990_MMC0_IRQ_GPIO 9 | ||
268 | #define PCM990_MMC0_IRQ IRQ_GPIO(PCM990_MMC0_IRQ_GPIO) | ||
269 | #define PCM990_MMC0_IRQ_EDGE IRQT_FALLING | ||
270 | |||
271 | /* | ||
272 | * USB phyCore | ||
273 | */ | ||
274 | #define PCM990_USB_OVERCURRENT (88 | GPIO_ALT_FN_1_IN) | ||
275 | #define PCM990_USB_PWR_EN (89 | GPIO_ALT_FN_2_OUT) | ||
diff --git a/include/asm-arm/arch-pxa/pxa-regs.h b/include/asm-arm/arch-pxa/pxa-regs.h index bb68b598c436..ac175b4d10cb 100644 --- a/include/asm-arm/arch-pxa/pxa-regs.h +++ b/include/asm-arm/arch-pxa/pxa-regs.h | |||
@@ -110,7 +110,10 @@ | |||
110 | #define DALGN __REG(0x400000a0) /* DMA Alignment Register */ | 110 | #define DALGN __REG(0x400000a0) /* DMA Alignment Register */ |
111 | #define DINT __REG(0x400000f0) /* DMA Interrupt Register */ | 111 | #define DINT __REG(0x400000f0) /* DMA Interrupt Register */ |
112 | 112 | ||
113 | #define DRCMR(n) __REG2(0x40000100, (n)<<2) | 113 | #define DRCMR(n) (*(((n) < 64) ? \ |
114 | &__REG2(0x40000100, ((n) & 0x3f) << 2) : \ | ||
115 | &__REG2(0x40001100, ((n) & 0x3f) << 2))) | ||
116 | |||
114 | #define DRCMR0 __REG(0x40000100) /* Request to Channel Map Register for DREQ 0 */ | 117 | #define DRCMR0 __REG(0x40000100) /* Request to Channel Map Register for DREQ 0 */ |
115 | #define DRCMR1 __REG(0x40000104) /* Request to Channel Map Register for DREQ 1 */ | 118 | #define DRCMR1 __REG(0x40000104) /* Request to Channel Map Register for DREQ 1 */ |
116 | #define DRCMR2 __REG(0x40000108) /* Request to Channel Map Register for I2S receive Request */ | 119 | #define DRCMR2 __REG(0x40000108) /* Request to Channel Map Register for I2S receive Request */ |
@@ -734,25 +737,25 @@ | |||
734 | 737 | ||
735 | #define USIR0 __REG(0x40600058) /* UDC Status Interrupt Register 0 */ | 738 | #define USIR0 __REG(0x40600058) /* UDC Status Interrupt Register 0 */ |
736 | 739 | ||
737 | #define USIR0_IR0 (1 << 0) /* Interrup request ep 0 */ | 740 | #define USIR0_IR0 (1 << 0) /* Interrupt request ep 0 */ |
738 | #define USIR0_IR1 (1 << 1) /* Interrup request ep 1 */ | 741 | #define USIR0_IR1 (1 << 1) /* Interrupt request ep 1 */ |
739 | #define USIR0_IR2 (1 << 2) /* Interrup request ep 2 */ | 742 | #define USIR0_IR2 (1 << 2) /* Interrupt request ep 2 */ |
740 | #define USIR0_IR3 (1 << 3) /* Interrup request ep 3 */ | 743 | #define USIR0_IR3 (1 << 3) /* Interrupt request ep 3 */ |
741 | #define USIR0_IR4 (1 << 4) /* Interrup request ep 4 */ | 744 | #define USIR0_IR4 (1 << 4) /* Interrupt request ep 4 */ |
742 | #define USIR0_IR5 (1 << 5) /* Interrup request ep 5 */ | 745 | #define USIR0_IR5 (1 << 5) /* Interrupt request ep 5 */ |
743 | #define USIR0_IR6 (1 << 6) /* Interrup request ep 6 */ | 746 | #define USIR0_IR6 (1 << 6) /* Interrupt request ep 6 */ |
744 | #define USIR0_IR7 (1 << 7) /* Interrup request ep 7 */ | 747 | #define USIR0_IR7 (1 << 7) /* Interrupt request ep 7 */ |
745 | 748 | ||
746 | #define USIR1 __REG(0x4060005C) /* UDC Status Interrupt Register 1 */ | 749 | #define USIR1 __REG(0x4060005C) /* UDC Status Interrupt Register 1 */ |
747 | 750 | ||
748 | #define USIR1_IR8 (1 << 0) /* Interrup request ep 8 */ | 751 | #define USIR1_IR8 (1 << 0) /* Interrupt request ep 8 */ |
749 | #define USIR1_IR9 (1 << 1) /* Interrup request ep 9 */ | 752 | #define USIR1_IR9 (1 << 1) /* Interrupt request ep 9 */ |
750 | #define USIR1_IR10 (1 << 2) /* Interrup request ep 10 */ | 753 | #define USIR1_IR10 (1 << 2) /* Interrupt request ep 10 */ |
751 | #define USIR1_IR11 (1 << 3) /* Interrup request ep 11 */ | 754 | #define USIR1_IR11 (1 << 3) /* Interrupt request ep 11 */ |
752 | #define USIR1_IR12 (1 << 4) /* Interrup request ep 12 */ | 755 | #define USIR1_IR12 (1 << 4) /* Interrupt request ep 12 */ |
753 | #define USIR1_IR13 (1 << 5) /* Interrup request ep 13 */ | 756 | #define USIR1_IR13 (1 << 5) /* Interrupt request ep 13 */ |
754 | #define USIR1_IR14 (1 << 6) /* Interrup request ep 14 */ | 757 | #define USIR1_IR14 (1 << 6) /* Interrupt request ep 14 */ |
755 | #define USIR1_IR15 (1 << 7) /* Interrup request ep 15 */ | 758 | #define USIR1_IR15 (1 << 7) /* Interrupt request ep 15 */ |
756 | 759 | ||
757 | #elif defined(CONFIG_PXA27x) | 760 | #elif defined(CONFIG_PXA27x) |
758 | 761 | ||
@@ -1017,7 +1020,7 @@ | |||
1017 | #define ICSR0 __REG(0x40800014) /* ICP Status Register 0 */ | 1020 | #define ICSR0 __REG(0x40800014) /* ICP Status Register 0 */ |
1018 | #define ICSR1 __REG(0x40800018) /* ICP Status Register 1 */ | 1021 | #define ICSR1 __REG(0x40800018) /* ICP Status Register 1 */ |
1019 | 1022 | ||
1020 | #define ICCR0_AME (1 << 7) /* Adress match enable */ | 1023 | #define ICCR0_AME (1 << 7) /* Address match enable */ |
1021 | #define ICCR0_TIE (1 << 6) /* Transmit FIFO interrupt enable */ | 1024 | #define ICCR0_TIE (1 << 6) /* Transmit FIFO interrupt enable */ |
1022 | #define ICCR0_RIE (1 << 5) /* Recieve FIFO interrupt enable */ | 1025 | #define ICCR0_RIE (1 << 5) /* Recieve FIFO interrupt enable */ |
1023 | #define ICCR0_RXE (1 << 4) /* Receive enable */ | 1026 | #define ICCR0_RXE (1 << 4) /* Receive enable */ |
@@ -1128,6 +1131,19 @@ | |||
1128 | * General Purpose I/O | 1131 | * General Purpose I/O |
1129 | */ | 1132 | */ |
1130 | 1133 | ||
1134 | #define GPIO0_BASE ((void __iomem *)io_p2v(0x40E00000)) | ||
1135 | #define GPIO1_BASE ((void __iomem *)io_p2v(0x40E00004)) | ||
1136 | #define GPIO2_BASE ((void __iomem *)io_p2v(0x40E00008)) | ||
1137 | #define GPIO3_BASE ((void __iomem *)io_p2v(0x40E00100)) | ||
1138 | |||
1139 | #define GPLR_OFFSET 0x00 | ||
1140 | #define GPDR_OFFSET 0x0C | ||
1141 | #define GPSR_OFFSET 0x18 | ||
1142 | #define GPCR_OFFSET 0x24 | ||
1143 | #define GRER_OFFSET 0x30 | ||
1144 | #define GFER_OFFSET 0x3C | ||
1145 | #define GEDR_OFFSET 0x48 | ||
1146 | |||
1131 | #define GPLR0 __REG(0x40E00000) /* GPIO Pin-Level Register GPIO<31:0> */ | 1147 | #define GPLR0 __REG(0x40E00000) /* GPIO Pin-Level Register GPIO<31:0> */ |
1132 | #define GPLR1 __REG(0x40E00004) /* GPIO Pin-Level Register GPIO<63:32> */ | 1148 | #define GPLR1 __REG(0x40E00004) /* GPIO Pin-Level Register GPIO<63:32> */ |
1133 | #define GPLR2 __REG(0x40E00008) /* GPIO Pin-Level Register GPIO<80:64> */ | 1149 | #define GPLR2 __REG(0x40E00008) /* GPIO Pin-Level Register GPIO<80:64> */ |
@@ -1594,176 +1610,10 @@ | |||
1594 | #define PWER_GPIO15 PWER_GPIO (15) /* GPIO [15] wake-up enable */ | 1610 | #define PWER_GPIO15 PWER_GPIO (15) /* GPIO [15] wake-up enable */ |
1595 | #define PWER_RTC 0x80000000 /* RTC alarm wake-up enable */ | 1611 | #define PWER_RTC 0x80000000 /* RTC alarm wake-up enable */ |
1596 | 1612 | ||
1597 | |||
1598 | /* | 1613 | /* |
1599 | * SSP Serial Port Registers | 1614 | * SSP Serial Port Registers - see include/asm-arm/arch-pxa/regs-ssp.h |
1600 | * PXA250, PXA255, PXA26x and PXA27x SSP controllers are all slightly different. | ||
1601 | * PXA255, PXA26x and PXA27x have extra ports, registers and bits. | ||
1602 | */ | 1615 | */ |
1603 | 1616 | ||
1604 | /* Common PXA2xx bits first */ | ||
1605 | #define SSCR0_DSS (0x0000000f) /* Data Size Select (mask) */ | ||
1606 | #define SSCR0_DataSize(x) ((x) - 1) /* Data Size Select [4..16] */ | ||
1607 | #define SSCR0_FRF (0x00000030) /* FRame Format (mask) */ | ||
1608 | #define SSCR0_Motorola (0x0 << 4) /* Motorola's Serial Peripheral Interface (SPI) */ | ||
1609 | #define SSCR0_TI (0x1 << 4) /* Texas Instruments' Synchronous Serial Protocol (SSP) */ | ||
1610 | #define SSCR0_National (0x2 << 4) /* National Microwire */ | ||
1611 | #define SSCR0_ECS (1 << 6) /* External clock select */ | ||
1612 | #define SSCR0_SSE (1 << 7) /* Synchronous Serial Port Enable */ | ||
1613 | #if defined(CONFIG_PXA25x) | ||
1614 | #define SSCR0_SCR (0x0000ff00) /* Serial Clock Rate (mask) */ | ||
1615 | #define SSCR0_SerClkDiv(x) ((((x) - 2)/2) << 8) /* Divisor [2..512] */ | ||
1616 | #elif defined(CONFIG_PXA27x) | ||
1617 | #define SSCR0_SCR (0x000fff00) /* Serial Clock Rate (mask) */ | ||
1618 | #define SSCR0_SerClkDiv(x) (((x) - 1) << 8) /* Divisor [1..4096] */ | ||
1619 | #define SSCR0_EDSS (1 << 20) /* Extended data size select */ | ||
1620 | #define SSCR0_NCS (1 << 21) /* Network clock select */ | ||
1621 | #define SSCR0_RIM (1 << 22) /* Receive FIFO overrrun interrupt mask */ | ||
1622 | #define SSCR0_TUM (1 << 23) /* Transmit FIFO underrun interrupt mask */ | ||
1623 | #define SSCR0_FRDC (0x07000000) /* Frame rate divider control (mask) */ | ||
1624 | #define SSCR0_SlotsPerFrm(x) (((x) - 1) << 24) /* Time slots per frame [1..8] */ | ||
1625 | #define SSCR0_ADC (1 << 30) /* Audio clock select */ | ||
1626 | #define SSCR0_MOD (1 << 31) /* Mode (normal or network) */ | ||
1627 | #endif | ||
1628 | |||
1629 | #define SSCR1_RIE (1 << 0) /* Receive FIFO Interrupt Enable */ | ||
1630 | #define SSCR1_TIE (1 << 1) /* Transmit FIFO Interrupt Enable */ | ||
1631 | #define SSCR1_LBM (1 << 2) /* Loop-Back Mode */ | ||
1632 | #define SSCR1_SPO (1 << 3) /* Motorola SPI SSPSCLK polarity setting */ | ||
1633 | #define SSCR1_SPH (1 << 4) /* Motorola SPI SSPSCLK phase setting */ | ||
1634 | #define SSCR1_MWDS (1 << 5) /* Microwire Transmit Data Size */ | ||
1635 | #define SSCR1_TFT (0x000003c0) /* Transmit FIFO Threshold (mask) */ | ||
1636 | #define SSCR1_TxTresh(x) (((x) - 1) << 6) /* level [1..16] */ | ||
1637 | #define SSCR1_RFT (0x00003c00) /* Receive FIFO Threshold (mask) */ | ||
1638 | #define SSCR1_RxTresh(x) (((x) - 1) << 10) /* level [1..16] */ | ||
1639 | |||
1640 | #define SSSR_TNF (1 << 2) /* Transmit FIFO Not Full */ | ||
1641 | #define SSSR_RNE (1 << 3) /* Receive FIFO Not Empty */ | ||
1642 | #define SSSR_BSY (1 << 4) /* SSP Busy */ | ||
1643 | #define SSSR_TFS (1 << 5) /* Transmit FIFO Service Request */ | ||
1644 | #define SSSR_RFS (1 << 6) /* Receive FIFO Service Request */ | ||
1645 | #define SSSR_ROR (1 << 7) /* Receive FIFO Overrun */ | ||
1646 | |||
1647 | #define SSCR0_TIM (1 << 23) /* Transmit FIFO Under Run Interrupt Mask */ | ||
1648 | #define SSCR0_RIM (1 << 22) /* Receive FIFO Over Run interrupt Mask */ | ||
1649 | #define SSCR0_NCS (1 << 21) /* Network Clock Select */ | ||
1650 | #define SSCR0_EDSS (1 << 20) /* Extended Data Size Select */ | ||
1651 | |||
1652 | /* extra bits in PXA255, PXA26x and PXA27x SSP ports */ | ||
1653 | #define SSCR0_TISSP (1 << 4) /* TI Sync Serial Protocol */ | ||
1654 | #define SSCR0_PSP (3 << 4) /* PSP - Programmable Serial Protocol */ | ||
1655 | #define SSCR1_TTELP (1 << 31) /* TXD Tristate Enable Last Phase */ | ||
1656 | #define SSCR1_TTE (1 << 30) /* TXD Tristate Enable */ | ||
1657 | #define SSCR1_EBCEI (1 << 29) /* Enable Bit Count Error interrupt */ | ||
1658 | #define SSCR1_SCFR (1 << 28) /* Slave Clock free Running */ | ||
1659 | #define SSCR1_ECRA (1 << 27) /* Enable Clock Request A */ | ||
1660 | #define SSCR1_ECRB (1 << 26) /* Enable Clock request B */ | ||
1661 | #define SSCR1_SCLKDIR (1 << 25) /* Serial Bit Rate Clock Direction */ | ||
1662 | #define SSCR1_SFRMDIR (1 << 24) /* Frame Direction */ | ||
1663 | #define SSCR1_RWOT (1 << 23) /* Receive Without Transmit */ | ||
1664 | #define SSCR1_TRAIL (1 << 22) /* Trailing Byte */ | ||
1665 | #define SSCR1_TSRE (1 << 21) /* Transmit Service Request Enable */ | ||
1666 | #define SSCR1_RSRE (1 << 20) /* Receive Service Request Enable */ | ||
1667 | #define SSCR1_TINTE (1 << 19) /* Receiver Time-out Interrupt enable */ | ||
1668 | #define SSCR1_PINTE (1 << 18) /* Peripheral Trailing Byte Interupt Enable */ | ||
1669 | #define SSCR1_STRF (1 << 15) /* Select FIFO or EFWR */ | ||
1670 | #define SSCR1_EFWR (1 << 14) /* Enable FIFO Write/Read */ | ||
1671 | |||
1672 | #define SSSR_BCE (1 << 23) /* Bit Count Error */ | ||
1673 | #define SSSR_CSS (1 << 22) /* Clock Synchronisation Status */ | ||
1674 | #define SSSR_TUR (1 << 21) /* Transmit FIFO Under Run */ | ||
1675 | #define SSSR_EOC (1 << 20) /* End Of Chain */ | ||
1676 | #define SSSR_TINT (1 << 19) /* Receiver Time-out Interrupt */ | ||
1677 | #define SSSR_PINT (1 << 18) /* Peripheral Trailing Byte Interrupt */ | ||
1678 | |||
1679 | #define SSPSP_FSRT (1 << 25) /* Frame Sync Relative Timing */ | ||
1680 | #define SSPSP_DMYSTOP(x) ((x) << 23) /* Dummy Stop */ | ||
1681 | #define SSPSP_SFRMWDTH(x) ((x) << 16) /* Serial Frame Width */ | ||
1682 | #define SSPSP_SFRMDLY(x) ((x) << 9) /* Serial Frame Delay */ | ||
1683 | #define SSPSP_DMYSTRT(x) ((x) << 7) /* Dummy Start */ | ||
1684 | #define SSPSP_STRTDLY(x) ((x) << 4) /* Start Delay */ | ||
1685 | #define SSPSP_ETDS (1 << 3) /* End of Transfer data State */ | ||
1686 | #define SSPSP_SFRMP (1 << 2) /* Serial Frame Polarity */ | ||
1687 | #define SSPSP_SCMODE(x) ((x) << 0) /* Serial Bit Rate Clock Mode */ | ||
1688 | |||
1689 | #define SSACD_SCDB (1 << 3) /* SSPSYSCLK Divider Bypass */ | ||
1690 | #define SSACD_ACPS(x) ((x) << 4) /* Audio clock PLL select */ | ||
1691 | #define SSACD_ACDS(x) ((x) << 0) /* Audio clock divider select */ | ||
1692 | |||
1693 | #define SSCR0_P1 __REG(0x41000000) /* SSP Port 1 Control Register 0 */ | ||
1694 | #define SSCR1_P1 __REG(0x41000004) /* SSP Port 1 Control Register 1 */ | ||
1695 | #define SSSR_P1 __REG(0x41000008) /* SSP Port 1 Status Register */ | ||
1696 | #define SSITR_P1 __REG(0x4100000C) /* SSP Port 1 Interrupt Test Register */ | ||
1697 | #define SSDR_P1 __REG(0x41000010) /* (Write / Read) SSP Port 1 Data Write Register/SSP Data Read Register */ | ||
1698 | |||
1699 | /* Support existing PXA25x drivers */ | ||
1700 | #define SSCR0 SSCR0_P1 /* SSP Control Register 0 */ | ||
1701 | #define SSCR1 SSCR1_P1 /* SSP Control Register 1 */ | ||
1702 | #define SSSR SSSR_P1 /* SSP Status Register */ | ||
1703 | #define SSITR SSITR_P1 /* SSP Interrupt Test Register */ | ||
1704 | #define SSDR SSDR_P1 /* (Write / Read) SSP Data Write Register/SSP Data Read Register */ | ||
1705 | |||
1706 | /* PXA27x ports */ | ||
1707 | #if defined (CONFIG_PXA27x) | ||
1708 | #define SSTO_P1 __REG(0x41000028) /* SSP Port 1 Time Out Register */ | ||
1709 | #define SSPSP_P1 __REG(0x4100002C) /* SSP Port 1 Programmable Serial Protocol */ | ||
1710 | #define SSTSA_P1 __REG(0x41000030) /* SSP Port 1 Tx Timeslot Active */ | ||
1711 | #define SSRSA_P1 __REG(0x41000034) /* SSP Port 1 Rx Timeslot Active */ | ||
1712 | #define SSTSS_P1 __REG(0x41000038) /* SSP Port 1 Timeslot Status */ | ||
1713 | #define SSACD_P1 __REG(0x4100003C) /* SSP Port 1 Audio Clock Divider */ | ||
1714 | #define SSCR0_P2 __REG(0x41700000) /* SSP Port 2 Control Register 0 */ | ||
1715 | #define SSCR1_P2 __REG(0x41700004) /* SSP Port 2 Control Register 1 */ | ||
1716 | #define SSSR_P2 __REG(0x41700008) /* SSP Port 2 Status Register */ | ||
1717 | #define SSITR_P2 __REG(0x4170000C) /* SSP Port 2 Interrupt Test Register */ | ||
1718 | #define SSDR_P2 __REG(0x41700010) /* (Write / Read) SSP Port 2 Data Write Register/SSP Data Read Register */ | ||
1719 | #define SSTO_P2 __REG(0x41700028) /* SSP Port 2 Time Out Register */ | ||
1720 | #define SSPSP_P2 __REG(0x4170002C) /* SSP Port 2 Programmable Serial Protocol */ | ||
1721 | #define SSTSA_P2 __REG(0x41700030) /* SSP Port 2 Tx Timeslot Active */ | ||
1722 | #define SSRSA_P2 __REG(0x41700034) /* SSP Port 2 Rx Timeslot Active */ | ||
1723 | #define SSTSS_P2 __REG(0x41700038) /* SSP Port 2 Timeslot Status */ | ||
1724 | #define SSACD_P2 __REG(0x4170003C) /* SSP Port 2 Audio Clock Divider */ | ||
1725 | #define SSCR0_P3 __REG(0x41900000) /* SSP Port 3 Control Register 0 */ | ||
1726 | #define SSCR1_P3 __REG(0x41900004) /* SSP Port 3 Control Register 1 */ | ||
1727 | #define SSSR_P3 __REG(0x41900008) /* SSP Port 3 Status Register */ | ||
1728 | #define SSITR_P3 __REG(0x4190000C) /* SSP Port 3 Interrupt Test Register */ | ||
1729 | #define SSDR_P3 __REG(0x41900010) /* (Write / Read) SSP Port 3 Data Write Register/SSP Data Read Register */ | ||
1730 | #define SSTO_P3 __REG(0x41900028) /* SSP Port 3 Time Out Register */ | ||
1731 | #define SSPSP_P3 __REG(0x4190002C) /* SSP Port 3 Programmable Serial Protocol */ | ||
1732 | #define SSTSA_P3 __REG(0x41900030) /* SSP Port 3 Tx Timeslot Active */ | ||
1733 | #define SSRSA_P3 __REG(0x41900034) /* SSP Port 3 Rx Timeslot Active */ | ||
1734 | #define SSTSS_P3 __REG(0x41900038) /* SSP Port 3 Timeslot Status */ | ||
1735 | #define SSACD_P3 __REG(0x4190003C) /* SSP Port 3 Audio Clock Divider */ | ||
1736 | #else /* PXA255 (only port 2) and PXA26x ports*/ | ||
1737 | #define SSTO_P1 __REG(0x41000028) /* SSP Port 1 Time Out Register */ | ||
1738 | #define SSPSP_P1 __REG(0x4100002C) /* SSP Port 1 Programmable Serial Protocol */ | ||
1739 | #define SSCR0_P2 __REG(0x41400000) /* SSP Port 2 Control Register 0 */ | ||
1740 | #define SSCR1_P2 __REG(0x41400004) /* SSP Port 2 Control Register 1 */ | ||
1741 | #define SSSR_P2 __REG(0x41400008) /* SSP Port 2 Status Register */ | ||
1742 | #define SSITR_P2 __REG(0x4140000C) /* SSP Port 2 Interrupt Test Register */ | ||
1743 | #define SSDR_P2 __REG(0x41400010) /* (Write / Read) SSP Port 2 Data Write Register/SSP Data Read Register */ | ||
1744 | #define SSTO_P2 __REG(0x41400028) /* SSP Port 2 Time Out Register */ | ||
1745 | #define SSPSP_P2 __REG(0x4140002C) /* SSP Port 2 Programmable Serial Protocol */ | ||
1746 | #define SSCR0_P3 __REG(0x41500000) /* SSP Port 3 Control Register 0 */ | ||
1747 | #define SSCR1_P3 __REG(0x41500004) /* SSP Port 3 Control Register 1 */ | ||
1748 | #define SSSR_P3 __REG(0x41500008) /* SSP Port 3 Status Register */ | ||
1749 | #define SSITR_P3 __REG(0x4150000C) /* SSP Port 3 Interrupt Test Register */ | ||
1750 | #define SSDR_P3 __REG(0x41500010) /* (Write / Read) SSP Port 3 Data Write Register/SSP Data Read Register */ | ||
1751 | #define SSTO_P3 __REG(0x41500028) /* SSP Port 3 Time Out Register */ | ||
1752 | #define SSPSP_P3 __REG(0x4150002C) /* SSP Port 3 Programmable Serial Protocol */ | ||
1753 | #endif | ||
1754 | |||
1755 | #define SSCR0_P(x) (*(((x) == 1) ? &SSCR0_P1 : ((x) == 2) ? &SSCR0_P2 : ((x) == 3) ? &SSCR0_P3 : NULL)) | ||
1756 | #define SSCR1_P(x) (*(((x) == 1) ? &SSCR1_P1 : ((x) == 2) ? &SSCR1_P2 : ((x) == 3) ? &SSCR1_P3 : NULL)) | ||
1757 | #define SSSR_P(x) (*(((x) == 1) ? &SSSR_P1 : ((x) == 2) ? &SSSR_P2 : ((x) == 3) ? &SSSR_P3 : NULL)) | ||
1758 | #define SSITR_P(x) (*(((x) == 1) ? &SSITR_P1 : ((x) == 2) ? &SSITR_P2 : ((x) == 3) ? &SSITR_P3 : NULL)) | ||
1759 | #define SSDR_P(x) (*(((x) == 1) ? &SSDR_P1 : ((x) == 2) ? &SSDR_P2 : ((x) == 3) ? &SSDR_P3 : NULL)) | ||
1760 | #define SSTO_P(x) (*(((x) == 1) ? &SSTO_P1 : ((x) == 2) ? &SSTO_P2 : ((x) == 3) ? &SSTO_P3 : NULL)) | ||
1761 | #define SSPSP_P(x) (*(((x) == 1) ? &SSPSP_P1 : ((x) == 2) ? &SSPSP_P2 : ((x) == 3) ? &SSPSP_P3 : NULL)) | ||
1762 | #define SSTSA_P(x) (*(((x) == 1) ? &SSTSA_P1 : ((x) == 2) ? &SSTSA_P2 : ((x) == 3) ? &SSTSA_P3 : NULL)) | ||
1763 | #define SSRSA_P(x) (*(((x) == 1) ? &SSRSA_P1 : ((x) == 2) ? &SSRSA_P2 : ((x) == 3) ? &SSRSA_P3 : NULL)) | ||
1764 | #define SSTSS_P(x) (*(((x) == 1) ? &SSTSS_P1 : ((x) == 2) ? &SSTSS_P2 : ((x) == 3) ? &SSTSS_P3 : NULL)) | ||
1765 | #define SSACD_P(x) (*(((x) == 1) ? &SSACD_P1 : ((x) == 2) ? &SSACD_P2 : ((x) == 3) ? &SSACD_P3 : NULL)) | ||
1766 | |||
1767 | /* | 1617 | /* |
1768 | * MultiMediaCard (MMC) controller - see drivers/mmc/host/pxamci.h | 1618 | * MultiMediaCard (MMC) controller - see drivers/mmc/host/pxamci.h |
1769 | */ | 1619 | */ |
@@ -1781,6 +1631,7 @@ | |||
1781 | #define CCCR_M_MASK 0x0060 /* Memory Frequency to Run Mode Frequency Multiplier */ | 1631 | #define CCCR_M_MASK 0x0060 /* Memory Frequency to Run Mode Frequency Multiplier */ |
1782 | #define CCCR_L_MASK 0x001f /* Crystal Frequency to Memory Frequency Multiplier */ | 1632 | #define CCCR_L_MASK 0x001f /* Crystal Frequency to Memory Frequency Multiplier */ |
1783 | 1633 | ||
1634 | #define CKEN_AC97CONF (31) /* AC97 Controller Configuration */ | ||
1784 | #define CKEN_CAMERA (24) /* Camera Interface Clock Enable */ | 1635 | #define CKEN_CAMERA (24) /* Camera Interface Clock Enable */ |
1785 | #define CKEN_SSP1 (23) /* SSP1 Unit Clock Enable */ | 1636 | #define CKEN_SSP1 (23) /* SSP1 Unit Clock Enable */ |
1786 | #define CKEN_MEMC (22) /* Memory Controller Clock Enable */ | 1637 | #define CKEN_MEMC (22) /* Memory Controller Clock Enable */ |
@@ -2010,71 +1861,8 @@ | |||
2010 | 1861 | ||
2011 | #define LDCMD_PAL (1 << 26) /* instructs DMA to load palette buffer */ | 1862 | #define LDCMD_PAL (1 << 26) /* instructs DMA to load palette buffer */ |
2012 | 1863 | ||
2013 | /* | ||
2014 | * Memory controller | ||
2015 | */ | ||
2016 | |||
2017 | #define MDCNFG __REG(0x48000000) /* SDRAM Configuration Register 0 */ | ||
2018 | #define MDREFR __REG(0x48000004) /* SDRAM Refresh Control Register */ | ||
2019 | #define MSC0 __REG(0x48000008) /* Static Memory Control Register 0 */ | ||
2020 | #define MSC1 __REG(0x4800000C) /* Static Memory Control Register 1 */ | ||
2021 | #define MSC2 __REG(0x48000010) /* Static Memory Control Register 2 */ | ||
2022 | #define MECR __REG(0x48000014) /* Expansion Memory (PCMCIA/Compact Flash) Bus Configuration */ | ||
2023 | #define SXLCR __REG(0x48000018) /* LCR value to be written to SDRAM-Timing Synchronous Flash */ | ||
2024 | #define SXCNFG __REG(0x4800001C) /* Synchronous Static Memory Control Register */ | ||
2025 | #define SXMRS __REG(0x48000024) /* MRS value to be written to Synchronous Flash or SMROM */ | ||
2026 | #define MCMEM0 __REG(0x48000028) /* Card interface Common Memory Space Socket 0 Timing */ | ||
2027 | #define MCMEM1 __REG(0x4800002C) /* Card interface Common Memory Space Socket 1 Timing */ | ||
2028 | #define MCATT0 __REG(0x48000030) /* Card interface Attribute Space Socket 0 Timing Configuration */ | ||
2029 | #define MCATT1 __REG(0x48000034) /* Card interface Attribute Space Socket 1 Timing Configuration */ | ||
2030 | #define MCIO0 __REG(0x48000038) /* Card interface I/O Space Socket 0 Timing Configuration */ | ||
2031 | #define MCIO1 __REG(0x4800003C) /* Card interface I/O Space Socket 1 Timing Configuration */ | ||
2032 | #define MDMRS __REG(0x48000040) /* MRS value to be written to SDRAM */ | ||
2033 | #define BOOT_DEF __REG(0x48000044) /* Read-Only Boot-Time Register. Contains BOOT_SEL and PKG_SEL */ | ||
2034 | |||
2035 | /* | ||
2036 | * More handy macros for PCMCIA | ||
2037 | * | ||
2038 | * Arg is socket number | ||
2039 | */ | ||
2040 | #define MCMEM(s) __REG2(0x48000028, (s)<<2 ) /* Card interface Common Memory Space Socket s Timing */ | ||
2041 | #define MCATT(s) __REG2(0x48000030, (s)<<2 ) /* Card interface Attribute Space Socket s Timing Configuration */ | ||
2042 | #define MCIO(s) __REG2(0x48000038, (s)<<2 ) /* Card interface I/O Space Socket s Timing Configuration */ | ||
2043 | |||
2044 | /* MECR register defines */ | ||
2045 | #define MECR_NOS (1 << 0) /* Number Of Sockets: 0 -> 1 sock, 1 -> 2 sock */ | ||
2046 | #define MECR_CIT (1 << 1) /* Card Is There: 0 -> no card, 1 -> card inserted */ | ||
2047 | |||
2048 | #define MDREFR_K0DB4 (1 << 29) /* SDCLK0 Divide by 4 Control/Status */ | ||
2049 | #define MDREFR_K2FREE (1 << 25) /* SDRAM Free-Running Control */ | ||
2050 | #define MDREFR_K1FREE (1 << 24) /* SDRAM Free-Running Control */ | ||
2051 | #define MDREFR_K0FREE (1 << 23) /* SDRAM Free-Running Control */ | ||
2052 | #define MDREFR_SLFRSH (1 << 22) /* SDRAM Self-Refresh Control/Status */ | ||
2053 | #define MDREFR_APD (1 << 20) /* SDRAM/SSRAM Auto-Power-Down Enable */ | ||
2054 | #define MDREFR_K2DB2 (1 << 19) /* SDCLK2 Divide by 2 Control/Status */ | ||
2055 | #define MDREFR_K2RUN (1 << 18) /* SDCLK2 Run Control/Status */ | ||
2056 | #define MDREFR_K1DB2 (1 << 17) /* SDCLK1 Divide by 2 Control/Status */ | ||
2057 | #define MDREFR_K1RUN (1 << 16) /* SDCLK1 Run Control/Status */ | ||
2058 | #define MDREFR_E1PIN (1 << 15) /* SDCKE1 Level Control/Status */ | ||
2059 | #define MDREFR_K0DB2 (1 << 14) /* SDCLK0 Divide by 2 Control/Status */ | ||
2060 | #define MDREFR_K0RUN (1 << 13) /* SDCLK0 Run Control/Status */ | ||
2061 | #define MDREFR_E0PIN (1 << 12) /* SDCKE0 Level Control/Status */ | ||
2062 | |||
2063 | |||
2064 | #ifdef CONFIG_PXA27x | 1864 | #ifdef CONFIG_PXA27x |
2065 | 1865 | ||
2066 | #define ARB_CNTRL __REG(0x48000048) /* Arbiter Control Register */ | ||
2067 | |||
2068 | #define ARB_DMA_SLV_PARK (1<<31) /* Be parked with DMA slave when idle */ | ||
2069 | #define ARB_CI_PARK (1<<30) /* Be parked with Camera Interface when idle */ | ||
2070 | #define ARB_EX_MEM_PARK (1<<29) /* Be parked with external MEMC when idle */ | ||
2071 | #define ARB_INT_MEM_PARK (1<<28) /* Be parked with internal MEMC when idle */ | ||
2072 | #define ARB_USB_PARK (1<<27) /* Be parked with USB when idle */ | ||
2073 | #define ARB_LCD_PARK (1<<26) /* Be parked with LCD when idle */ | ||
2074 | #define ARB_DMA_PARK (1<<25) /* Be parked with DMA when idle */ | ||
2075 | #define ARB_CORE_PARK (1<<24) /* Be parked with core when idle */ | ||
2076 | #define ARB_LOCK_FLAG (1<<23) /* Only Locking masters gain access to the bus */ | ||
2077 | |||
2078 | /* | 1866 | /* |
2079 | * Keypad | 1867 | * Keypad |
2080 | */ | 1868 | */ |
@@ -2131,74 +1919,6 @@ | |||
2131 | #define KPAS_SO (0x1 << 31) | 1919 | #define KPAS_SO (0x1 << 31) |
2132 | #define KPASMKPx_SO (0x1 << 31) | 1920 | #define KPASMKPx_SO (0x1 << 31) |
2133 | 1921 | ||
2134 | /* | ||
2135 | * UHC: USB Host Controller (OHCI-like) register definitions | ||
2136 | */ | ||
2137 | #define UHC_BASE_PHYS (0x4C000000) | ||
2138 | #define UHCREV __REG(0x4C000000) /* UHC HCI Spec Revision */ | ||
2139 | #define UHCHCON __REG(0x4C000004) /* UHC Host Control Register */ | ||
2140 | #define UHCCOMS __REG(0x4C000008) /* UHC Command Status Register */ | ||
2141 | #define UHCINTS __REG(0x4C00000C) /* UHC Interrupt Status Register */ | ||
2142 | #define UHCINTE __REG(0x4C000010) /* UHC Interrupt Enable */ | ||
2143 | #define UHCINTD __REG(0x4C000014) /* UHC Interrupt Disable */ | ||
2144 | #define UHCHCCA __REG(0x4C000018) /* UHC Host Controller Comm. Area */ | ||
2145 | #define UHCPCED __REG(0x4C00001C) /* UHC Period Current Endpt Descr */ | ||
2146 | #define UHCCHED __REG(0x4C000020) /* UHC Control Head Endpt Descr */ | ||
2147 | #define UHCCCED __REG(0x4C000024) /* UHC Control Current Endpt Descr */ | ||
2148 | #define UHCBHED __REG(0x4C000028) /* UHC Bulk Head Endpt Descr */ | ||
2149 | #define UHCBCED __REG(0x4C00002C) /* UHC Bulk Current Endpt Descr */ | ||
2150 | #define UHCDHEAD __REG(0x4C000030) /* UHC Done Head */ | ||
2151 | #define UHCFMI __REG(0x4C000034) /* UHC Frame Interval */ | ||
2152 | #define UHCFMR __REG(0x4C000038) /* UHC Frame Remaining */ | ||
2153 | #define UHCFMN __REG(0x4C00003C) /* UHC Frame Number */ | ||
2154 | #define UHCPERS __REG(0x4C000040) /* UHC Periodic Start */ | ||
2155 | #define UHCLS __REG(0x4C000044) /* UHC Low Speed Threshold */ | ||
2156 | |||
2157 | #define UHCRHDA __REG(0x4C000048) /* UHC Root Hub Descriptor A */ | ||
2158 | #define UHCRHDA_NOCP (1 << 12) /* No over current protection */ | ||
2159 | |||
2160 | #define UHCRHDB __REG(0x4C00004C) /* UHC Root Hub Descriptor B */ | ||
2161 | #define UHCRHS __REG(0x4C000050) /* UHC Root Hub Status */ | ||
2162 | #define UHCRHPS1 __REG(0x4C000054) /* UHC Root Hub Port 1 Status */ | ||
2163 | #define UHCRHPS2 __REG(0x4C000058) /* UHC Root Hub Port 2 Status */ | ||
2164 | #define UHCRHPS3 __REG(0x4C00005C) /* UHC Root Hub Port 3 Status */ | ||
2165 | |||
2166 | #define UHCSTAT __REG(0x4C000060) /* UHC Status Register */ | ||
2167 | #define UHCSTAT_UPS3 (1 << 16) /* USB Power Sense Port3 */ | ||
2168 | #define UHCSTAT_SBMAI (1 << 15) /* System Bus Master Abort Interrupt*/ | ||
2169 | #define UHCSTAT_SBTAI (1 << 14) /* System Bus Target Abort Interrupt*/ | ||
2170 | #define UHCSTAT_UPRI (1 << 13) /* USB Port Resume Interrupt */ | ||
2171 | #define UHCSTAT_UPS2 (1 << 12) /* USB Power Sense Port 2 */ | ||
2172 | #define UHCSTAT_UPS1 (1 << 11) /* USB Power Sense Port 1 */ | ||
2173 | #define UHCSTAT_HTA (1 << 10) /* HCI Target Abort */ | ||
2174 | #define UHCSTAT_HBA (1 << 8) /* HCI Buffer Active */ | ||
2175 | #define UHCSTAT_RWUE (1 << 7) /* HCI Remote Wake Up Event */ | ||
2176 | |||
2177 | #define UHCHR __REG(0x4C000064) /* UHC Reset Register */ | ||
2178 | #define UHCHR_SSEP3 (1 << 11) /* Sleep Standby Enable for Port3 */ | ||
2179 | #define UHCHR_SSEP2 (1 << 10) /* Sleep Standby Enable for Port2 */ | ||
2180 | #define UHCHR_SSEP1 (1 << 9) /* Sleep Standby Enable for Port1 */ | ||
2181 | #define UHCHR_PCPL (1 << 7) /* Power control polarity low */ | ||
2182 | #define UHCHR_PSPL (1 << 6) /* Power sense polarity low */ | ||
2183 | #define UHCHR_SSE (1 << 5) /* Sleep Standby Enable */ | ||
2184 | #define UHCHR_UIT (1 << 4) /* USB Interrupt Test */ | ||
2185 | #define UHCHR_SSDC (1 << 3) /* Simulation Scale Down Clock */ | ||
2186 | #define UHCHR_CGR (1 << 2) /* Clock Generation Reset */ | ||
2187 | #define UHCHR_FHR (1 << 1) /* Force Host Controller Reset */ | ||
2188 | #define UHCHR_FSBIR (1 << 0) /* Force System Bus Iface Reset */ | ||
2189 | |||
2190 | #define UHCHIE __REG(0x4C000068) /* UHC Interrupt Enable Register*/ | ||
2191 | #define UHCHIE_UPS3IE (1 << 14) /* Power Sense Port3 IntEn */ | ||
2192 | #define UHCHIE_UPRIE (1 << 13) /* Port Resume IntEn */ | ||
2193 | #define UHCHIE_UPS2IE (1 << 12) /* Power Sense Port2 IntEn */ | ||
2194 | #define UHCHIE_UPS1IE (1 << 11) /* Power Sense Port1 IntEn */ | ||
2195 | #define UHCHIE_TAIE (1 << 10) /* HCI Interface Transfer Abort | ||
2196 | Interrupt Enable*/ | ||
2197 | #define UHCHIE_HBAIE (1 << 8) /* HCI Buffer Active IntEn */ | ||
2198 | #define UHCHIE_RWIE (1 << 7) /* Remote Wake-up IntEn */ | ||
2199 | |||
2200 | #define UHCHIT __REG(0x4C00006C) /* UHC Interrupt Test register */ | ||
2201 | |||
2202 | /* Camera Interface */ | 1922 | /* Camera Interface */ |
2203 | #define CICR0 __REG(0x50000000) | 1923 | #define CICR0 __REG(0x50000000) |
2204 | #define CICR1 __REG(0x50000004) | 1924 | #define CICR1 __REG(0x50000004) |
@@ -2346,6 +2066,77 @@ | |||
2346 | 2066 | ||
2347 | #endif | 2067 | #endif |
2348 | 2068 | ||
2069 | #if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx) | ||
2070 | /* | ||
2071 | * UHC: USB Host Controller (OHCI-like) register definitions | ||
2072 | */ | ||
2073 | #define UHC_BASE_PHYS (0x4C000000) | ||
2074 | #define UHCREV __REG(0x4C000000) /* UHC HCI Spec Revision */ | ||
2075 | #define UHCHCON __REG(0x4C000004) /* UHC Host Control Register */ | ||
2076 | #define UHCCOMS __REG(0x4C000008) /* UHC Command Status Register */ | ||
2077 | #define UHCINTS __REG(0x4C00000C) /* UHC Interrupt Status Register */ | ||
2078 | #define UHCINTE __REG(0x4C000010) /* UHC Interrupt Enable */ | ||
2079 | #define UHCINTD __REG(0x4C000014) /* UHC Interrupt Disable */ | ||
2080 | #define UHCHCCA __REG(0x4C000018) /* UHC Host Controller Comm. Area */ | ||
2081 | #define UHCPCED __REG(0x4C00001C) /* UHC Period Current Endpt Descr */ | ||
2082 | #define UHCCHED __REG(0x4C000020) /* UHC Control Head Endpt Descr */ | ||
2083 | #define UHCCCED __REG(0x4C000024) /* UHC Control Current Endpt Descr */ | ||
2084 | #define UHCBHED __REG(0x4C000028) /* UHC Bulk Head Endpt Descr */ | ||
2085 | #define UHCBCED __REG(0x4C00002C) /* UHC Bulk Current Endpt Descr */ | ||
2086 | #define UHCDHEAD __REG(0x4C000030) /* UHC Done Head */ | ||
2087 | #define UHCFMI __REG(0x4C000034) /* UHC Frame Interval */ | ||
2088 | #define UHCFMR __REG(0x4C000038) /* UHC Frame Remaining */ | ||
2089 | #define UHCFMN __REG(0x4C00003C) /* UHC Frame Number */ | ||
2090 | #define UHCPERS __REG(0x4C000040) /* UHC Periodic Start */ | ||
2091 | #define UHCLS __REG(0x4C000044) /* UHC Low Speed Threshold */ | ||
2092 | |||
2093 | #define UHCRHDA __REG(0x4C000048) /* UHC Root Hub Descriptor A */ | ||
2094 | #define UHCRHDA_NOCP (1 << 12) /* No over current protection */ | ||
2095 | |||
2096 | #define UHCRHDB __REG(0x4C00004C) /* UHC Root Hub Descriptor B */ | ||
2097 | #define UHCRHS __REG(0x4C000050) /* UHC Root Hub Status */ | ||
2098 | #define UHCRHPS1 __REG(0x4C000054) /* UHC Root Hub Port 1 Status */ | ||
2099 | #define UHCRHPS2 __REG(0x4C000058) /* UHC Root Hub Port 2 Status */ | ||
2100 | #define UHCRHPS3 __REG(0x4C00005C) /* UHC Root Hub Port 3 Status */ | ||
2101 | |||
2102 | #define UHCSTAT __REG(0x4C000060) /* UHC Status Register */ | ||
2103 | #define UHCSTAT_UPS3 (1 << 16) /* USB Power Sense Port3 */ | ||
2104 | #define UHCSTAT_SBMAI (1 << 15) /* System Bus Master Abort Interrupt*/ | ||
2105 | #define UHCSTAT_SBTAI (1 << 14) /* System Bus Target Abort Interrupt*/ | ||
2106 | #define UHCSTAT_UPRI (1 << 13) /* USB Port Resume Interrupt */ | ||
2107 | #define UHCSTAT_UPS2 (1 << 12) /* USB Power Sense Port 2 */ | ||
2108 | #define UHCSTAT_UPS1 (1 << 11) /* USB Power Sense Port 1 */ | ||
2109 | #define UHCSTAT_HTA (1 << 10) /* HCI Target Abort */ | ||
2110 | #define UHCSTAT_HBA (1 << 8) /* HCI Buffer Active */ | ||
2111 | #define UHCSTAT_RWUE (1 << 7) /* HCI Remote Wake Up Event */ | ||
2112 | |||
2113 | #define UHCHR __REG(0x4C000064) /* UHC Reset Register */ | ||
2114 | #define UHCHR_SSEP3 (1 << 11) /* Sleep Standby Enable for Port3 */ | ||
2115 | #define UHCHR_SSEP2 (1 << 10) /* Sleep Standby Enable for Port2 */ | ||
2116 | #define UHCHR_SSEP1 (1 << 9) /* Sleep Standby Enable for Port1 */ | ||
2117 | #define UHCHR_PCPL (1 << 7) /* Power control polarity low */ | ||
2118 | #define UHCHR_PSPL (1 << 6) /* Power sense polarity low */ | ||
2119 | #define UHCHR_SSE (1 << 5) /* Sleep Standby Enable */ | ||
2120 | #define UHCHR_UIT (1 << 4) /* USB Interrupt Test */ | ||
2121 | #define UHCHR_SSDC (1 << 3) /* Simulation Scale Down Clock */ | ||
2122 | #define UHCHR_CGR (1 << 2) /* Clock Generation Reset */ | ||
2123 | #define UHCHR_FHR (1 << 1) /* Force Host Controller Reset */ | ||
2124 | #define UHCHR_FSBIR (1 << 0) /* Force System Bus Iface Reset */ | ||
2125 | |||
2126 | #define UHCHIE __REG(0x4C000068) /* UHC Interrupt Enable Register*/ | ||
2127 | #define UHCHIE_UPS3IE (1 << 14) /* Power Sense Port3 IntEn */ | ||
2128 | #define UHCHIE_UPRIE (1 << 13) /* Port Resume IntEn */ | ||
2129 | #define UHCHIE_UPS2IE (1 << 12) /* Power Sense Port2 IntEn */ | ||
2130 | #define UHCHIE_UPS1IE (1 << 11) /* Power Sense Port1 IntEn */ | ||
2131 | #define UHCHIE_TAIE (1 << 10) /* HCI Interface Transfer Abort | ||
2132 | Interrupt Enable*/ | ||
2133 | #define UHCHIE_HBAIE (1 << 8) /* HCI Buffer Active IntEn */ | ||
2134 | #define UHCHIE_RWIE (1 << 7) /* Remote Wake-up IntEn */ | ||
2135 | |||
2136 | #define UHCHIT __REG(0x4C00006C) /* UHC Interrupt Test register */ | ||
2137 | |||
2138 | #endif /* CONFIG_PXA27x || CONFIG_PXA3xx */ | ||
2139 | |||
2349 | /* PWRMODE register M field values */ | 2140 | /* PWRMODE register M field values */ |
2350 | 2141 | ||
2351 | #define PWRMODE_IDLE 0x1 | 2142 | #define PWRMODE_IDLE 0x1 |
diff --git a/include/asm-arm/arch-pxa/pxa2xx-regs.h b/include/asm-arm/arch-pxa/pxa2xx-regs.h new file mode 100644 index 000000000000..9553b54fa5bc --- /dev/null +++ b/include/asm-arm/arch-pxa/pxa2xx-regs.h | |||
@@ -0,0 +1,84 @@ | |||
1 | /* | ||
2 | * linux/include/asm-arm/arch-pxa/pxa2xx-regs.h | ||
3 | * | ||
4 | * Taken from pxa-regs.h by Russell King | ||
5 | * | ||
6 | * Author: Nicolas Pitre | ||
7 | * Copyright: MontaVista Software Inc. | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or modify | ||
10 | * it under the terms of the GNU General Public License version 2 as | ||
11 | * published by the Free Software Foundation. | ||
12 | */ | ||
13 | |||
14 | #ifndef __PXA2XX_REGS_H | ||
15 | #define __PXA2XX_REGS_H | ||
16 | |||
17 | /* | ||
18 | * Memory controller | ||
19 | */ | ||
20 | |||
21 | #define MDCNFG __REG(0x48000000) /* SDRAM Configuration Register 0 */ | ||
22 | #define MDREFR __REG(0x48000004) /* SDRAM Refresh Control Register */ | ||
23 | #define MSC0 __REG(0x48000008) /* Static Memory Control Register 0 */ | ||
24 | #define MSC1 __REG(0x4800000C) /* Static Memory Control Register 1 */ | ||
25 | #define MSC2 __REG(0x48000010) /* Static Memory Control Register 2 */ | ||
26 | #define MECR __REG(0x48000014) /* Expansion Memory (PCMCIA/Compact Flash) Bus Configuration */ | ||
27 | #define SXLCR __REG(0x48000018) /* LCR value to be written to SDRAM-Timing Synchronous Flash */ | ||
28 | #define SXCNFG __REG(0x4800001C) /* Synchronous Static Memory Control Register */ | ||
29 | #define SXMRS __REG(0x48000024) /* MRS value to be written to Synchronous Flash or SMROM */ | ||
30 | #define MCMEM0 __REG(0x48000028) /* Card interface Common Memory Space Socket 0 Timing */ | ||
31 | #define MCMEM1 __REG(0x4800002C) /* Card interface Common Memory Space Socket 1 Timing */ | ||
32 | #define MCATT0 __REG(0x48000030) /* Card interface Attribute Space Socket 0 Timing Configuration */ | ||
33 | #define MCATT1 __REG(0x48000034) /* Card interface Attribute Space Socket 1 Timing Configuration */ | ||
34 | #define MCIO0 __REG(0x48000038) /* Card interface I/O Space Socket 0 Timing Configuration */ | ||
35 | #define MCIO1 __REG(0x4800003C) /* Card interface I/O Space Socket 1 Timing Configuration */ | ||
36 | #define MDMRS __REG(0x48000040) /* MRS value to be written to SDRAM */ | ||
37 | #define BOOT_DEF __REG(0x48000044) /* Read-Only Boot-Time Register. Contains BOOT_SEL and PKG_SEL */ | ||
38 | |||
39 | /* | ||
40 | * More handy macros for PCMCIA | ||
41 | * | ||
42 | * Arg is socket number | ||
43 | */ | ||
44 | #define MCMEM(s) __REG2(0x48000028, (s)<<2 ) /* Card interface Common Memory Space Socket s Timing */ | ||
45 | #define MCATT(s) __REG2(0x48000030, (s)<<2 ) /* Card interface Attribute Space Socket s Timing Configuration */ | ||
46 | #define MCIO(s) __REG2(0x48000038, (s)<<2 ) /* Card interface I/O Space Socket s Timing Configuration */ | ||
47 | |||
48 | /* MECR register defines */ | ||
49 | #define MECR_NOS (1 << 0) /* Number Of Sockets: 0 -> 1 sock, 1 -> 2 sock */ | ||
50 | #define MECR_CIT (1 << 1) /* Card Is There: 0 -> no card, 1 -> card inserted */ | ||
51 | |||
52 | #define MDREFR_K0DB4 (1 << 29) /* SDCLK0 Divide by 4 Control/Status */ | ||
53 | #define MDREFR_K2FREE (1 << 25) /* SDRAM Free-Running Control */ | ||
54 | #define MDREFR_K1FREE (1 << 24) /* SDRAM Free-Running Control */ | ||
55 | #define MDREFR_K0FREE (1 << 23) /* SDRAM Free-Running Control */ | ||
56 | #define MDREFR_SLFRSH (1 << 22) /* SDRAM Self-Refresh Control/Status */ | ||
57 | #define MDREFR_APD (1 << 20) /* SDRAM/SSRAM Auto-Power-Down Enable */ | ||
58 | #define MDREFR_K2DB2 (1 << 19) /* SDCLK2 Divide by 2 Control/Status */ | ||
59 | #define MDREFR_K2RUN (1 << 18) /* SDCLK2 Run Control/Status */ | ||
60 | #define MDREFR_K1DB2 (1 << 17) /* SDCLK1 Divide by 2 Control/Status */ | ||
61 | #define MDREFR_K1RUN (1 << 16) /* SDCLK1 Run Control/Status */ | ||
62 | #define MDREFR_E1PIN (1 << 15) /* SDCKE1 Level Control/Status */ | ||
63 | #define MDREFR_K0DB2 (1 << 14) /* SDCLK0 Divide by 2 Control/Status */ | ||
64 | #define MDREFR_K0RUN (1 << 13) /* SDCLK0 Run Control/Status */ | ||
65 | #define MDREFR_E0PIN (1 << 12) /* SDCKE0 Level Control/Status */ | ||
66 | |||
67 | |||
68 | #ifdef CONFIG_PXA27x | ||
69 | |||
70 | #define ARB_CNTRL __REG(0x48000048) /* Arbiter Control Register */ | ||
71 | |||
72 | #define ARB_DMA_SLV_PARK (1<<31) /* Be parked with DMA slave when idle */ | ||
73 | #define ARB_CI_PARK (1<<30) /* Be parked with Camera Interface when idle */ | ||
74 | #define ARB_EX_MEM_PARK (1<<29) /* Be parked with external MEMC when idle */ | ||
75 | #define ARB_INT_MEM_PARK (1<<28) /* Be parked with internal MEMC when idle */ | ||
76 | #define ARB_USB_PARK (1<<27) /* Be parked with USB when idle */ | ||
77 | #define ARB_LCD_PARK (1<<26) /* Be parked with LCD when idle */ | ||
78 | #define ARB_DMA_PARK (1<<25) /* Be parked with DMA when idle */ | ||
79 | #define ARB_CORE_PARK (1<<24) /* Be parked with core when idle */ | ||
80 | #define ARB_LOCK_FLAG (1<<23) /* Only Locking masters gain access to the bus */ | ||
81 | |||
82 | #endif | ||
83 | |||
84 | #endif | ||
diff --git a/include/asm-arm/arch-pxa/pxa2xx_spi.h b/include/asm-arm/arch-pxa/pxa2xx_spi.h index acc7ec7a84a1..3459fb26ce97 100644 --- a/include/asm-arm/arch-pxa/pxa2xx_spi.h +++ b/include/asm-arm/arch-pxa/pxa2xx_spi.h | |||
@@ -22,32 +22,8 @@ | |||
22 | #define PXA2XX_CS_ASSERT (0x01) | 22 | #define PXA2XX_CS_ASSERT (0x01) |
23 | #define PXA2XX_CS_DEASSERT (0x02) | 23 | #define PXA2XX_CS_DEASSERT (0x02) |
24 | 24 | ||
25 | #if defined(CONFIG_PXA25x) | ||
26 | #define CLOCK_SPEED_HZ 3686400 | ||
27 | #define SSP1_SerClkDiv(x) (((CLOCK_SPEED_HZ/2/(x+1))<<8)&0x0000ff00) | ||
28 | #define SSP2_SerClkDiv(x) (((CLOCK_SPEED_HZ/(x+1))<<8)&0x000fff00) | ||
29 | #define SSP3_SerClkDiv(x) (((CLOCK_SPEED_HZ/(x+1))<<8)&0x000fff00) | ||
30 | #elif defined(CONFIG_PXA27x) | ||
31 | #define CLOCK_SPEED_HZ 13000000 | ||
32 | #define SSP1_SerClkDiv(x) (((CLOCK_SPEED_HZ/(x+1))<<8)&0x000fff00) | ||
33 | #define SSP2_SerClkDiv(x) (((CLOCK_SPEED_HZ/(x+1))<<8)&0x000fff00) | ||
34 | #define SSP3_SerClkDiv(x) (((CLOCK_SPEED_HZ/(x+1))<<8)&0x000fff00) | ||
35 | #endif | ||
36 | |||
37 | #define SSP1_VIRT ((void *)(io_p2v(__PREG(SSCR0_P(1))))) | ||
38 | #define SSP2_VIRT ((void *)(io_p2v(__PREG(SSCR0_P(2))))) | ||
39 | #define SSP3_VIRT ((void *)(io_p2v(__PREG(SSCR0_P(3))))) | ||
40 | |||
41 | enum pxa_ssp_type { | ||
42 | SSP_UNDEFINED = 0, | ||
43 | PXA25x_SSP, /* pxa 210, 250, 255, 26x */ | ||
44 | PXA25x_NSSP, /* pxa 255, 26x (including ASSP) */ | ||
45 | PXA27x_SSP, | ||
46 | }; | ||
47 | |||
48 | /* device.platform_data for SSP controller devices */ | 25 | /* device.platform_data for SSP controller devices */ |
49 | struct pxa2xx_spi_master { | 26 | struct pxa2xx_spi_master { |
50 | enum pxa_ssp_type ssp_type; | ||
51 | u32 clock_enable; | 27 | u32 clock_enable; |
52 | u16 num_chipselect; | 28 | u16 num_chipselect; |
53 | u8 enable_dma; | 29 | u8 enable_dma; |
diff --git a/include/asm-arm/arch-pxa/pxa3xx-regs.h b/include/asm-arm/arch-pxa/pxa3xx-regs.h index 3900a0ca0bc0..8e1b3ead827f 100644 --- a/include/asm-arm/arch-pxa/pxa3xx-regs.h +++ b/include/asm-arm/arch-pxa/pxa3xx-regs.h | |||
@@ -12,6 +12,105 @@ | |||
12 | 12 | ||
13 | #ifndef __ASM_ARCH_PXA3XX_REGS_H | 13 | #ifndef __ASM_ARCH_PXA3XX_REGS_H |
14 | #define __ASM_ARCH_PXA3XX_REGS_H | 14 | #define __ASM_ARCH_PXA3XX_REGS_H |
15 | /* | ||
16 | * Service Power Management Unit (MPMU) | ||
17 | */ | ||
18 | #define PMCR __REG(0x40F50000) /* Power Manager Control Register */ | ||
19 | #define PSR __REG(0x40F50004) /* Power Manager S2 Status Register */ | ||
20 | #define PSPR __REG(0x40F50008) /* Power Manager Scratch Pad Register */ | ||
21 | #define PCFR __REG(0x40F5000C) /* Power Manager General Configuration Register */ | ||
22 | #define PWER __REG(0x40F50010) /* Power Manager Wake-up Enable Register */ | ||
23 | #define PWSR __REG(0x40F50014) /* Power Manager Wake-up Status Register */ | ||
24 | #define PECR __REG(0x40F50018) /* Power Manager EXT_WAKEUP[1:0] Control Register */ | ||
25 | #define DCDCSR __REG(0x40F50080) /* DC-DC Controller Status Register */ | ||
26 | #define PVCR __REG(0x40F50100) /* Power Manager Voltage Change Control Register */ | ||
27 | #define PCMD(x) __REG(0x40F50110 + ((x) << 2)) | ||
28 | |||
29 | /* | ||
30 | * Slave Power Managment Unit | ||
31 | */ | ||
32 | #define ASCR __REG(0x40f40000) /* Application Subsystem Power Status/Configuration */ | ||
33 | #define ARSR __REG(0x40f40004) /* Application Subsystem Reset Status */ | ||
34 | #define AD3ER __REG(0x40f40008) /* Application Subsystem Wake-Up from D3 Enable */ | ||
35 | #define AD3SR __REG(0x40f4000c) /* Application Subsystem Wake-Up from D3 Status */ | ||
36 | #define AD2D0ER __REG(0x40f40010) /* Application Subsystem Wake-Up from D2 to D0 Enable */ | ||
37 | #define AD2D0SR __REG(0x40f40014) /* Application Subsystem Wake-Up from D2 to D0 Status */ | ||
38 | #define AD2D1ER __REG(0x40f40018) /* Application Subsystem Wake-Up from D2 to D1 Enable */ | ||
39 | #define AD2D1SR __REG(0x40f4001c) /* Application Subsystem Wake-Up from D2 to D1 Status */ | ||
40 | #define AD1D0ER __REG(0x40f40020) /* Application Subsystem Wake-Up from D1 to D0 Enable */ | ||
41 | #define AD1D0SR __REG(0x40f40024) /* Application Subsystem Wake-Up from D1 to D0 Status */ | ||
42 | #define AGENP __REG(0x40f4002c) /* Application Subsystem General Purpose */ | ||
43 | #define AD3R __REG(0x40f40030) /* Application Subsystem D3 Configuration */ | ||
44 | #define AD2R __REG(0x40f40034) /* Application Subsystem D2 Configuration */ | ||
45 | #define AD1R __REG(0x40f40038) /* Application Subsystem D1 Configuration */ | ||
46 | |||
47 | /* | ||
48 | * Application Subsystem Configuration bits. | ||
49 | */ | ||
50 | #define ASCR_RDH (1 << 31) | ||
51 | #define ASCR_D1S (1 << 2) | ||
52 | #define ASCR_D2S (1 << 1) | ||
53 | #define ASCR_D3S (1 << 0) | ||
54 | |||
55 | /* | ||
56 | * Application Reset Status bits. | ||
57 | */ | ||
58 | #define ARSR_GPR (1 << 3) | ||
59 | #define ARSR_LPMR (1 << 2) | ||
60 | #define ARSR_WDT (1 << 1) | ||
61 | #define ARSR_HWR (1 << 0) | ||
62 | |||
63 | /* | ||
64 | * Application Subsystem Wake-Up bits. | ||
65 | */ | ||
66 | #define ADXER_WRTC (1 << 31) /* RTC */ | ||
67 | #define ADXER_WOST (1 << 30) /* OS Timer */ | ||
68 | #define ADXER_WTSI (1 << 29) /* Touchscreen */ | ||
69 | #define ADXER_WUSBH (1 << 28) /* USB host */ | ||
70 | #define ADXER_WUSB2 (1 << 26) /* USB client 2.0 */ | ||
71 | #define ADXER_WMSL0 (1 << 24) /* MSL port 0*/ | ||
72 | #define ADXER_WDMUX3 (1 << 23) /* USB EDMUX3 */ | ||
73 | #define ADXER_WDMUX2 (1 << 22) /* USB EDMUX2 */ | ||
74 | #define ADXER_WKP (1 << 21) /* Keypad */ | ||
75 | #define ADXER_WUSIM1 (1 << 20) /* USIM Port 1 */ | ||
76 | #define ADXER_WUSIM0 (1 << 19) /* USIM Port 0 */ | ||
77 | #define ADXER_WOTG (1 << 16) /* USBOTG input */ | ||
78 | #define ADXER_MFP_WFLASH (1 << 15) /* MFP: Data flash busy */ | ||
79 | #define ADXER_MFP_GEN12 (1 << 14) /* MFP: MMC3/GPIO/OST inputs */ | ||
80 | #define ADXER_MFP_WMMC2 (1 << 13) /* MFP: MMC2 */ | ||
81 | #define ADXER_MFP_WMMC1 (1 << 12) /* MFP: MMC1 */ | ||
82 | #define ADXER_MFP_WI2C (1 << 11) /* MFP: I2C */ | ||
83 | #define ADXER_MFP_WSSP4 (1 << 10) /* MFP: SSP4 */ | ||
84 | #define ADXER_MFP_WSSP3 (1 << 9) /* MFP: SSP3 */ | ||
85 | #define ADXER_MFP_WMAXTRIX (1 << 8) /* MFP: matrix keypad */ | ||
86 | #define ADXER_MFP_WUART3 (1 << 7) /* MFP: UART3 */ | ||
87 | #define ADXER_MFP_WUART2 (1 << 6) /* MFP: UART2 */ | ||
88 | #define ADXER_MFP_WUART1 (1 << 5) /* MFP: UART1 */ | ||
89 | #define ADXER_MFP_WSSP2 (1 << 4) /* MFP: SSP2 */ | ||
90 | #define ADXER_MFP_WSSP1 (1 << 3) /* MFP: SSP1 */ | ||
91 | #define ADXER_MFP_WAC97 (1 << 2) /* MFP: AC97 */ | ||
92 | #define ADXER_WEXTWAKE1 (1 << 1) /* External Wake 1 */ | ||
93 | #define ADXER_WEXTWAKE0 (1 << 0) /* External Wake 0 */ | ||
94 | |||
95 | /* | ||
96 | * AD3R/AD2R/AD1R bits. R2-R5 are only defined for PXA320. | ||
97 | */ | ||
98 | #define ADXR_L2 (1 << 8) | ||
99 | #define ADXR_R5 (1 << 5) | ||
100 | #define ADXR_R4 (1 << 4) | ||
101 | #define ADXR_R3 (1 << 3) | ||
102 | #define ADXR_R2 (1 << 2) | ||
103 | #define ADXR_R1 (1 << 1) | ||
104 | #define ADXR_R0 (1 << 0) | ||
105 | |||
106 | /* | ||
107 | * Values for PWRMODE CP15 register | ||
108 | */ | ||
109 | #define PXA3xx_PM_S3D4C4 0x07 /* aka deep sleep */ | ||
110 | #define PXA3xx_PM_S2D3C4 0x06 /* aka sleep */ | ||
111 | #define PXA3xx_PM_S0D2C2 0x03 /* aka standby */ | ||
112 | #define PXA3xx_PM_S0D1C2 0x02 /* aka LCD refresh */ | ||
113 | #define PXA3xx_PM_S0D0C1 0x01 | ||
15 | 114 | ||
16 | /* | 115 | /* |
17 | * Application Subsystem Clock | 116 | * Application Subsystem Clock |
diff --git a/include/asm-arm/arch-pxa/regs-ssp.h b/include/asm-arm/arch-pxa/regs-ssp.h new file mode 100644 index 000000000000..991cb688db75 --- /dev/null +++ b/include/asm-arm/arch-pxa/regs-ssp.h | |||
@@ -0,0 +1,112 @@ | |||
1 | #ifndef __ASM_ARCH_REGS_SSP_H | ||
2 | #define __ASM_ARCH_REGS_SSP_H | ||
3 | |||
4 | /* | ||
5 | * SSP Serial Port Registers | ||
6 | * PXA250, PXA255, PXA26x and PXA27x SSP controllers are all slightly different. | ||
7 | * PXA255, PXA26x and PXA27x have extra ports, registers and bits. | ||
8 | */ | ||
9 | |||
10 | #define SSCR0 (0x00) /* SSP Control Register 0 */ | ||
11 | #define SSCR1 (0x04) /* SSP Control Register 1 */ | ||
12 | #define SSSR (0x08) /* SSP Status Register */ | ||
13 | #define SSITR (0x0C) /* SSP Interrupt Test Register */ | ||
14 | #define SSDR (0x10) /* SSP Data Write/Data Read Register */ | ||
15 | |||
16 | #define SSTO (0x28) /* SSP Time Out Register */ | ||
17 | #define SSPSP (0x2C) /* SSP Programmable Serial Protocol */ | ||
18 | #define SSTSA (0x30) /* SSP Tx Timeslot Active */ | ||
19 | #define SSRSA (0x34) /* SSP Rx Timeslot Active */ | ||
20 | #define SSTSS (0x38) /* SSP Timeslot Status */ | ||
21 | #define SSACD (0x3C) /* SSP Audio Clock Divider */ | ||
22 | |||
23 | /* Common PXA2xx bits first */ | ||
24 | #define SSCR0_DSS (0x0000000f) /* Data Size Select (mask) */ | ||
25 | #define SSCR0_DataSize(x) ((x) - 1) /* Data Size Select [4..16] */ | ||
26 | #define SSCR0_FRF (0x00000030) /* FRame Format (mask) */ | ||
27 | #define SSCR0_Motorola (0x0 << 4) /* Motorola's Serial Peripheral Interface (SPI) */ | ||
28 | #define SSCR0_TI (0x1 << 4) /* Texas Instruments' Synchronous Serial Protocol (SSP) */ | ||
29 | #define SSCR0_National (0x2 << 4) /* National Microwire */ | ||
30 | #define SSCR0_ECS (1 << 6) /* External clock select */ | ||
31 | #define SSCR0_SSE (1 << 7) /* Synchronous Serial Port Enable */ | ||
32 | #if defined(CONFIG_PXA25x) | ||
33 | #define SSCR0_SCR (0x0000ff00) /* Serial Clock Rate (mask) */ | ||
34 | #define SSCR0_SerClkDiv(x) ((((x) - 2)/2) << 8) /* Divisor [2..512] */ | ||
35 | #elif defined(CONFIG_PXA27x) | ||
36 | #define SSCR0_SCR (0x000fff00) /* Serial Clock Rate (mask) */ | ||
37 | #define SSCR0_SerClkDiv(x) (((x) - 1) << 8) /* Divisor [1..4096] */ | ||
38 | #define SSCR0_EDSS (1 << 20) /* Extended data size select */ | ||
39 | #define SSCR0_NCS (1 << 21) /* Network clock select */ | ||
40 | #define SSCR0_RIM (1 << 22) /* Receive FIFO overrrun interrupt mask */ | ||
41 | #define SSCR0_TUM (1 << 23) /* Transmit FIFO underrun interrupt mask */ | ||
42 | #define SSCR0_FRDC (0x07000000) /* Frame rate divider control (mask) */ | ||
43 | #define SSCR0_SlotsPerFrm(x) (((x) - 1) << 24) /* Time slots per frame [1..8] */ | ||
44 | #define SSCR0_ADC (1 << 30) /* Audio clock select */ | ||
45 | #define SSCR0_MOD (1 << 31) /* Mode (normal or network) */ | ||
46 | #endif | ||
47 | |||
48 | #define SSCR1_RIE (1 << 0) /* Receive FIFO Interrupt Enable */ | ||
49 | #define SSCR1_TIE (1 << 1) /* Transmit FIFO Interrupt Enable */ | ||
50 | #define SSCR1_LBM (1 << 2) /* Loop-Back Mode */ | ||
51 | #define SSCR1_SPO (1 << 3) /* Motorola SPI SSPSCLK polarity setting */ | ||
52 | #define SSCR1_SPH (1 << 4) /* Motorola SPI SSPSCLK phase setting */ | ||
53 | #define SSCR1_MWDS (1 << 5) /* Microwire Transmit Data Size */ | ||
54 | #define SSCR1_TFT (0x000003c0) /* Transmit FIFO Threshold (mask) */ | ||
55 | #define SSCR1_TxTresh(x) (((x) - 1) << 6) /* level [1..16] */ | ||
56 | #define SSCR1_RFT (0x00003c00) /* Receive FIFO Threshold (mask) */ | ||
57 | #define SSCR1_RxTresh(x) (((x) - 1) << 10) /* level [1..16] */ | ||
58 | |||
59 | #define SSSR_TNF (1 << 2) /* Transmit FIFO Not Full */ | ||
60 | #define SSSR_RNE (1 << 3) /* Receive FIFO Not Empty */ | ||
61 | #define SSSR_BSY (1 << 4) /* SSP Busy */ | ||
62 | #define SSSR_TFS (1 << 5) /* Transmit FIFO Service Request */ | ||
63 | #define SSSR_RFS (1 << 6) /* Receive FIFO Service Request */ | ||
64 | #define SSSR_ROR (1 << 7) /* Receive FIFO Overrun */ | ||
65 | |||
66 | #define SSCR0_TIM (1 << 23) /* Transmit FIFO Under Run Interrupt Mask */ | ||
67 | #define SSCR0_RIM (1 << 22) /* Receive FIFO Over Run interrupt Mask */ | ||
68 | #define SSCR0_NCS (1 << 21) /* Network Clock Select */ | ||
69 | #define SSCR0_EDSS (1 << 20) /* Extended Data Size Select */ | ||
70 | |||
71 | /* extra bits in PXA255, PXA26x and PXA27x SSP ports */ | ||
72 | #define SSCR0_TISSP (1 << 4) /* TI Sync Serial Protocol */ | ||
73 | #define SSCR0_PSP (3 << 4) /* PSP - Programmable Serial Protocol */ | ||
74 | #define SSCR1_TTELP (1 << 31) /* TXD Tristate Enable Last Phase */ | ||
75 | #define SSCR1_TTE (1 << 30) /* TXD Tristate Enable */ | ||
76 | #define SSCR1_EBCEI (1 << 29) /* Enable Bit Count Error interrupt */ | ||
77 | #define SSCR1_SCFR (1 << 28) /* Slave Clock free Running */ | ||
78 | #define SSCR1_ECRA (1 << 27) /* Enable Clock Request A */ | ||
79 | #define SSCR1_ECRB (1 << 26) /* Enable Clock request B */ | ||
80 | #define SSCR1_SCLKDIR (1 << 25) /* Serial Bit Rate Clock Direction */ | ||
81 | #define SSCR1_SFRMDIR (1 << 24) /* Frame Direction */ | ||
82 | #define SSCR1_RWOT (1 << 23) /* Receive Without Transmit */ | ||
83 | #define SSCR1_TRAIL (1 << 22) /* Trailing Byte */ | ||
84 | #define SSCR1_TSRE (1 << 21) /* Transmit Service Request Enable */ | ||
85 | #define SSCR1_RSRE (1 << 20) /* Receive Service Request Enable */ | ||
86 | #define SSCR1_TINTE (1 << 19) /* Receiver Time-out Interrupt enable */ | ||
87 | #define SSCR1_PINTE (1 << 18) /* Peripheral Trailing Byte Interupt Enable */ | ||
88 | #define SSCR1_STRF (1 << 15) /* Select FIFO or EFWR */ | ||
89 | #define SSCR1_EFWR (1 << 14) /* Enable FIFO Write/Read */ | ||
90 | |||
91 | #define SSSR_BCE (1 << 23) /* Bit Count Error */ | ||
92 | #define SSSR_CSS (1 << 22) /* Clock Synchronisation Status */ | ||
93 | #define SSSR_TUR (1 << 21) /* Transmit FIFO Under Run */ | ||
94 | #define SSSR_EOC (1 << 20) /* End Of Chain */ | ||
95 | #define SSSR_TINT (1 << 19) /* Receiver Time-out Interrupt */ | ||
96 | #define SSSR_PINT (1 << 18) /* Peripheral Trailing Byte Interrupt */ | ||
97 | |||
98 | #define SSPSP_FSRT (1 << 25) /* Frame Sync Relative Timing */ | ||
99 | #define SSPSP_DMYSTOP(x) ((x) << 23) /* Dummy Stop */ | ||
100 | #define SSPSP_SFRMWDTH(x) ((x) << 16) /* Serial Frame Width */ | ||
101 | #define SSPSP_SFRMDLY(x) ((x) << 9) /* Serial Frame Delay */ | ||
102 | #define SSPSP_DMYSTRT(x) ((x) << 7) /* Dummy Start */ | ||
103 | #define SSPSP_STRTDLY(x) ((x) << 4) /* Start Delay */ | ||
104 | #define SSPSP_ETDS (1 << 3) /* End of Transfer data State */ | ||
105 | #define SSPSP_SFRMP (1 << 2) /* Serial Frame Polarity */ | ||
106 | #define SSPSP_SCMODE(x) ((x) << 0) /* Serial Bit Rate Clock Mode */ | ||
107 | |||
108 | #define SSACD_SCDB (1 << 3) /* SSPSYSCLK Divider Bypass */ | ||
109 | #define SSACD_ACPS(x) ((x) << 4) /* Audio clock PLL select */ | ||
110 | #define SSACD_ACDS(x) ((x) << 0) /* Audio clock divider select */ | ||
111 | |||
112 | #endif /* __ASM_ARCH_REGS_SSP_H */ | ||
diff --git a/include/asm-arm/arch-pxa/sharpsl.h b/include/asm-arm/arch-pxa/sharpsl.h index 2b0fe773213a..3b1d4a72d4d1 100644 --- a/include/asm-arm/arch-pxa/sharpsl.h +++ b/include/asm-arm/arch-pxa/sharpsl.h | |||
@@ -16,7 +16,7 @@ int corgi_ssp_max1111_get(unsigned long data); | |||
16 | */ | 16 | */ |
17 | 17 | ||
18 | struct corgits_machinfo { | 18 | struct corgits_machinfo { |
19 | unsigned long (*get_hsync_len)(void); | 19 | unsigned long (*get_hsync_invperiod)(void); |
20 | void (*put_hsync)(void); | 20 | void (*put_hsync)(void); |
21 | void (*wait_hsync)(void); | 21 | void (*wait_hsync)(void); |
22 | }; | 22 | }; |
diff --git a/include/asm-arm/arch-pxa/spitz.h b/include/asm-arm/arch-pxa/spitz.h index 4953dd324d4d..bd14365f7ed5 100644 --- a/include/asm-arm/arch-pxa/spitz.h +++ b/include/asm-arm/arch-pxa/spitz.h | |||
@@ -156,5 +156,3 @@ extern struct platform_device spitzscoop_device; | |||
156 | extern struct platform_device spitzscoop2_device; | 156 | extern struct platform_device spitzscoop2_device; |
157 | extern struct platform_device spitzssp_device; | 157 | extern struct platform_device spitzssp_device; |
158 | extern struct sharpsl_charger_machinfo spitz_pm_machinfo; | 158 | extern struct sharpsl_charger_machinfo spitz_pm_machinfo; |
159 | |||
160 | extern void spitz_lcd_power(int on, struct fb_var_screeninfo *var); | ||
diff --git a/include/asm-arm/arch-pxa/ssp.h b/include/asm-arm/arch-pxa/ssp.h index ea200551a75f..a012882c9ee6 100644 --- a/include/asm-arm/arch-pxa/ssp.h +++ b/include/asm-arm/arch-pxa/ssp.h | |||
@@ -13,10 +13,37 @@ | |||
13 | * PXA255 SSP, NSSP | 13 | * PXA255 SSP, NSSP |
14 | * PXA26x SSP, NSSP, ASSP | 14 | * PXA26x SSP, NSSP, ASSP |
15 | * PXA27x SSP1, SSP2, SSP3 | 15 | * PXA27x SSP1, SSP2, SSP3 |
16 | * PXA3xx SSP1, SSP2, SSP3, SSP4 | ||
16 | */ | 17 | */ |
17 | 18 | ||
18 | #ifndef SSP_H | 19 | #ifndef __ASM_ARCH_SSP_H |
19 | #define SSP_H | 20 | #define __ASM_ARCH_SSP_H |
21 | |||
22 | #include <linux/list.h> | ||
23 | |||
24 | enum pxa_ssp_type { | ||
25 | SSP_UNDEFINED = 0, | ||
26 | PXA25x_SSP, /* pxa 210, 250, 255, 26x */ | ||
27 | PXA25x_NSSP, /* pxa 255, 26x (including ASSP) */ | ||
28 | PXA27x_SSP, | ||
29 | }; | ||
30 | |||
31 | struct ssp_device { | ||
32 | struct platform_device *pdev; | ||
33 | struct list_head node; | ||
34 | |||
35 | struct clk *clk; | ||
36 | void __iomem *mmio_base; | ||
37 | unsigned long phys_base; | ||
38 | |||
39 | const char *label; | ||
40 | int port_id; | ||
41 | int type; | ||
42 | int use_count; | ||
43 | int irq; | ||
44 | int drcmr_rx; | ||
45 | int drcmr_tx; | ||
46 | }; | ||
20 | 47 | ||
21 | /* | 48 | /* |
22 | * SSP initialisation flags | 49 | * SSP initialisation flags |
@@ -31,6 +58,7 @@ struct ssp_state { | |||
31 | }; | 58 | }; |
32 | 59 | ||
33 | struct ssp_dev { | 60 | struct ssp_dev { |
61 | struct ssp_device *ssp; | ||
34 | u32 port; | 62 | u32 port; |
35 | u32 mode; | 63 | u32 mode; |
36 | u32 flags; | 64 | u32 flags; |
@@ -50,4 +78,6 @@ int ssp_init(struct ssp_dev *dev, u32 port, u32 init_flags); | |||
50 | int ssp_config(struct ssp_dev *dev, u32 mode, u32 flags, u32 psp_flags, u32 speed); | 78 | int ssp_config(struct ssp_dev *dev, u32 mode, u32 flags, u32 psp_flags, u32 speed); |
51 | void ssp_exit(struct ssp_dev *dev); | 79 | void ssp_exit(struct ssp_dev *dev); |
52 | 80 | ||
53 | #endif | 81 | struct ssp_device *ssp_request(int port, const char *label); |
82 | void ssp_free(struct ssp_device *); | ||
83 | #endif /* __ASM_ARCH_SSP_H */ | ||
diff --git a/include/asm-arm/arch-pxa/uncompress.h b/include/asm-arm/arch-pxa/uncompress.h index 178aa2e073ac..dadf4c20b622 100644 --- a/include/asm-arm/arch-pxa/uncompress.h +++ b/include/asm-arm/arch-pxa/uncompress.h | |||
@@ -9,19 +9,21 @@ | |||
9 | * published by the Free Software Foundation. | 9 | * published by the Free Software Foundation. |
10 | */ | 10 | */ |
11 | 11 | ||
12 | #define FFUART ((volatile unsigned long *)0x40100000) | 12 | #include <linux/serial_reg.h> |
13 | #define BTUART ((volatile unsigned long *)0x40200000) | 13 | #include <asm/arch/pxa-regs.h> |
14 | #define STUART ((volatile unsigned long *)0x40700000) | 14 | |
15 | #define HWUART ((volatile unsigned long *)0x41600000) | 15 | #define __REG(x) ((volatile unsigned long *)x) |
16 | 16 | ||
17 | #define UART FFUART | 17 | #define UART FFUART |
18 | 18 | ||
19 | 19 | ||
20 | static inline void putc(char c) | 20 | static inline void putc(char c) |
21 | { | 21 | { |
22 | while (!(UART[5] & 0x20)) | 22 | if (!(UART[UART_IER] & IER_UUE)) |
23 | return; | ||
24 | while (!(UART[UART_LSR] & LSR_TDRQ)) | ||
23 | barrier(); | 25 | barrier(); |
24 | UART[0] = c; | 26 | UART[UART_TX] = c; |
25 | } | 27 | } |
26 | 28 | ||
27 | /* | 29 | /* |
diff --git a/include/asm-arm/arch-pxa/zylonite.h b/include/asm-arm/arch-pxa/zylonite.h index f58b59162b82..5f717d64ea7d 100644 --- a/include/asm-arm/arch-pxa/zylonite.h +++ b/include/asm-arm/arch-pxa/zylonite.h | |||
@@ -3,9 +3,18 @@ | |||
3 | 3 | ||
4 | #define ZYLONITE_ETH_PHYS 0x14000000 | 4 | #define ZYLONITE_ETH_PHYS 0x14000000 |
5 | 5 | ||
6 | #define EXT_GPIO(x) (128 + (x)) | ||
7 | |||
6 | /* the following variables are processor specific and initialized | 8 | /* the following variables are processor specific and initialized |
7 | * by the corresponding zylonite_pxa3xx_init() | 9 | * by the corresponding zylonite_pxa3xx_init() |
8 | */ | 10 | */ |
11 | struct platform_mmc_slot { | ||
12 | int gpio_cd; | ||
13 | int gpio_wp; | ||
14 | }; | ||
15 | |||
16 | extern struct platform_mmc_slot zylonite_mmc_slot[]; | ||
17 | |||
9 | extern int gpio_backlight; | 18 | extern int gpio_backlight; |
10 | extern int gpio_eth_irq; | 19 | extern int gpio_eth_irq; |
11 | 20 | ||
diff --git a/include/asm-arm/arch-realview/board-eb.h b/include/asm-arm/arch-realview/board-eb.h new file mode 100644 index 000000000000..3e437b7f425a --- /dev/null +++ b/include/asm-arm/arch-realview/board-eb.h | |||
@@ -0,0 +1,171 @@ | |||
1 | /* | ||
2 | * include/asm-arm/arch-realview/board-eb.h | ||
3 | * | ||
4 | * Copyright (C) 2007 ARM Limited | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | * | ||
15 | * You should have received a copy of the GNU General Public License | ||
16 | * along with this program; if not, write to the Free Software | ||
17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, | ||
18 | * MA 02110-1301, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef __ASM_ARCH_BOARD_EB_H | ||
22 | #define __ASM_ARCH_BOARD_EB_H | ||
23 | |||
24 | #include <asm/arch/platform.h> | ||
25 | |||
26 | /* | ||
27 | * RealView EB + ARM11MPCore peripheral addresses | ||
28 | */ | ||
29 | #ifdef CONFIG_REALVIEW_EB_ARM11MP_REVB | ||
30 | #define REALVIEW_EB11MP_SCU_BASE 0x10100000 /* SCU registers */ | ||
31 | #define REALVIEW_EB11MP_GIC_CPU_BASE 0x10100100 /* Generic interrupt controller CPU interface */ | ||
32 | #define REALVIEW_EB11MP_TWD_BASE 0x10100700 | ||
33 | #define REALVIEW_EB11MP_TWD_SIZE 0x00000100 | ||
34 | #define REALVIEW_EB11MP_GIC_DIST_BASE 0x10101000 /* Generic interrupt controller distributor */ | ||
35 | #define REALVIEW_EB11MP_L220_BASE 0x10102000 /* L220 registers */ | ||
36 | #define REALVIEW_EB11MP_SYS_PLD_CTRL1 0xD8 /* Register offset for MPCore sysctl */ | ||
37 | #else | ||
38 | #define REALVIEW_EB11MP_SCU_BASE 0x1F000000 /* SCU registers */ | ||
39 | #define REALVIEW_EB11MP_GIC_CPU_BASE 0x1F000100 /* Generic interrupt controller CPU interface */ | ||
40 | #define REALVIEW_EB11MP_TWD_BASE 0x1F000700 | ||
41 | #define REALVIEW_EB11MP_TWD_SIZE 0x00000100 | ||
42 | #define REALVIEW_EB11MP_GIC_DIST_BASE 0x1F001000 /* Generic interrupt controller distributor */ | ||
43 | #define REALVIEW_EB11MP_L220_BASE 0x1F002000 /* L220 registers */ | ||
44 | #define REALVIEW_EB11MP_SYS_PLD_CTRL1 0x74 /* Register offset for MPCore sysctl */ | ||
45 | #endif | ||
46 | |||
47 | #define IRQ_EB_GIC_START 32 | ||
48 | |||
49 | /* | ||
50 | * RealView EB interrupt sources | ||
51 | */ | ||
52 | #define IRQ_EB_WDOG (IRQ_EB_GIC_START + 0) /* Watchdog timer */ | ||
53 | #define IRQ_EB_SOFT (IRQ_EB_GIC_START + 1) /* Software interrupt */ | ||
54 | #define IRQ_EB_COMMRx (IRQ_EB_GIC_START + 2) /* Debug Comm Rx interrupt */ | ||
55 | #define IRQ_EB_COMMTx (IRQ_EB_GIC_START + 3) /* Debug Comm Tx interrupt */ | ||
56 | #define IRQ_EB_TIMER0_1 (IRQ_EB_GIC_START + 4) /* Timer 0 and 1 */ | ||
57 | #define IRQ_EB_TIMER2_3 (IRQ_EB_GIC_START + 5) /* Timer 2 and 3 */ | ||
58 | #define IRQ_EB_GPIO0 (IRQ_EB_GIC_START + 6) /* GPIO 0 */ | ||
59 | #define IRQ_EB_GPIO1 (IRQ_EB_GIC_START + 7) /* GPIO 1 */ | ||
60 | #define IRQ_EB_GPIO2 (IRQ_EB_GIC_START + 8) /* GPIO 2 */ | ||
61 | /* 9 reserved */ | ||
62 | #define IRQ_EB_RTC (IRQ_EB_GIC_START + 10) /* Real Time Clock */ | ||
63 | #define IRQ_EB_SSP (IRQ_EB_GIC_START + 11) /* Synchronous Serial Port */ | ||
64 | #define IRQ_EB_UART0 (IRQ_EB_GIC_START + 12) /* UART 0 on development chip */ | ||
65 | #define IRQ_EB_UART1 (IRQ_EB_GIC_START + 13) /* UART 1 on development chip */ | ||
66 | #define IRQ_EB_UART2 (IRQ_EB_GIC_START + 14) /* UART 2 on development chip */ | ||
67 | #define IRQ_EB_UART3 (IRQ_EB_GIC_START + 15) /* UART 3 on development chip */ | ||
68 | #define IRQ_EB_SCI (IRQ_EB_GIC_START + 16) /* Smart Card Interface */ | ||
69 | #define IRQ_EB_MMCI0A (IRQ_EB_GIC_START + 17) /* Multimedia Card 0A */ | ||
70 | #define IRQ_EB_MMCI0B (IRQ_EB_GIC_START + 18) /* Multimedia Card 0B */ | ||
71 | #define IRQ_EB_AACI (IRQ_EB_GIC_START + 19) /* Audio Codec */ | ||
72 | #define IRQ_EB_KMI0 (IRQ_EB_GIC_START + 20) /* Keyboard/Mouse port 0 */ | ||
73 | #define IRQ_EB_KMI1 (IRQ_EB_GIC_START + 21) /* Keyboard/Mouse port 1 */ | ||
74 | #define IRQ_EB_CHARLCD (IRQ_EB_GIC_START + 22) /* Character LCD */ | ||
75 | #define IRQ_EB_CLCD (IRQ_EB_GIC_START + 23) /* CLCD controller */ | ||
76 | #define IRQ_EB_DMA (IRQ_EB_GIC_START + 24) /* DMA controller */ | ||
77 | #define IRQ_EB_PWRFAIL (IRQ_EB_GIC_START + 25) /* Power failure */ | ||
78 | #define IRQ_EB_PISMO (IRQ_EB_GIC_START + 26) /* PISMO interface */ | ||
79 | #define IRQ_EB_DoC (IRQ_EB_GIC_START + 27) /* Disk on Chip memory controller */ | ||
80 | #define IRQ_EB_ETH (IRQ_EB_GIC_START + 28) /* Ethernet controller */ | ||
81 | #define IRQ_EB_USB (IRQ_EB_GIC_START + 29) /* USB controller */ | ||
82 | #define IRQ_EB_TSPEN (IRQ_EB_GIC_START + 30) /* Touchscreen pen */ | ||
83 | #define IRQ_EB_TSKPAD (IRQ_EB_GIC_START + 31) /* Touchscreen keypad */ | ||
84 | |||
85 | /* | ||
86 | * RealView EB + ARM11MPCore interrupt sources (primary GIC on the core tile) | ||
87 | */ | ||
88 | #define IRQ_EB11MP_AACI (IRQ_EB_GIC_START + 0) | ||
89 | #define IRQ_EB11MP_TIMER0_1 (IRQ_EB_GIC_START + 1) | ||
90 | #define IRQ_EB11MP_TIMER2_3 (IRQ_EB_GIC_START + 2) | ||
91 | #define IRQ_EB11MP_USB (IRQ_EB_GIC_START + 3) | ||
92 | #define IRQ_EB11MP_UART0 (IRQ_EB_GIC_START + 4) | ||
93 | #define IRQ_EB11MP_UART1 (IRQ_EB_GIC_START + 5) | ||
94 | #define IRQ_EB11MP_RTC (IRQ_EB_GIC_START + 6) | ||
95 | #define IRQ_EB11MP_KMI0 (IRQ_EB_GIC_START + 7) | ||
96 | #define IRQ_EB11MP_KMI1 (IRQ_EB_GIC_START + 8) | ||
97 | #define IRQ_EB11MP_ETH (IRQ_EB_GIC_START + 9) | ||
98 | #define IRQ_EB11MP_EB_IRQ1 (IRQ_EB_GIC_START + 10) /* main GIC */ | ||
99 | #define IRQ_EB11MP_EB_IRQ2 (IRQ_EB_GIC_START + 11) /* tile GIC */ | ||
100 | #define IRQ_EB11MP_EB_FIQ1 (IRQ_EB_GIC_START + 12) /* main GIC */ | ||
101 | #define IRQ_EB11MP_EB_FIQ2 (IRQ_EB_GIC_START + 13) /* tile GIC */ | ||
102 | #define IRQ_EB11MP_MMCI0A (IRQ_EB_GIC_START + 14) | ||
103 | #define IRQ_EB11MP_MMCI0B (IRQ_EB_GIC_START + 15) | ||
104 | |||
105 | #define IRQ_EB11MP_PMU_CPU0 (IRQ_EB_GIC_START + 17) | ||
106 | #define IRQ_EB11MP_PMU_CPU1 (IRQ_EB_GIC_START + 18) | ||
107 | #define IRQ_EB11MP_PMU_CPU2 (IRQ_EB_GIC_START + 19) | ||
108 | #define IRQ_EB11MP_PMU_CPU3 (IRQ_EB_GIC_START + 20) | ||
109 | #define IRQ_EB11MP_PMU_SCU0 (IRQ_EB_GIC_START + 21) | ||
110 | #define IRQ_EB11MP_PMU_SCU1 (IRQ_EB_GIC_START + 22) | ||
111 | #define IRQ_EB11MP_PMU_SCU2 (IRQ_EB_GIC_START + 23) | ||
112 | #define IRQ_EB11MP_PMU_SCU3 (IRQ_EB_GIC_START + 24) | ||
113 | #define IRQ_EB11MP_PMU_SCU4 (IRQ_EB_GIC_START + 25) | ||
114 | #define IRQ_EB11MP_PMU_SCU5 (IRQ_EB_GIC_START + 26) | ||
115 | #define IRQ_EB11MP_PMU_SCU6 (IRQ_EB_GIC_START + 27) | ||
116 | #define IRQ_EB11MP_PMU_SCU7 (IRQ_EB_GIC_START + 28) | ||
117 | |||
118 | #define IRQ_EB11MP_L220_EVENT (IRQ_EB_GIC_START + 29) | ||
119 | #define IRQ_EB11MP_L220_SLAVE (IRQ_EB_GIC_START + 30) | ||
120 | #define IRQ_EB11MP_L220_DECODE (IRQ_EB_GIC_START + 31) | ||
121 | |||
122 | #define IRQ_EB11MP_UART2 -1 | ||
123 | #define IRQ_EB11MP_UART3 -1 | ||
124 | #define IRQ_EB11MP_CLCD -1 | ||
125 | #define IRQ_EB11MP_DMA -1 | ||
126 | #define IRQ_EB11MP_WDOG -1 | ||
127 | #define IRQ_EB11MP_GPIO0 -1 | ||
128 | #define IRQ_EB11MP_GPIO1 -1 | ||
129 | #define IRQ_EB11MP_GPIO2 -1 | ||
130 | #define IRQ_EB11MP_SCI -1 | ||
131 | #define IRQ_EB11MP_SSP -1 | ||
132 | |||
133 | #define NR_GIC_EB11MP 2 | ||
134 | |||
135 | /* | ||
136 | * Only define NR_IRQS if less than NR_IRQS_EB | ||
137 | */ | ||
138 | #define NR_IRQS_EB (IRQ_EB_GIC_START + 96) | ||
139 | |||
140 | #if defined(CONFIG_MACH_REALVIEW_EB) \ | ||
141 | && (!defined(NR_IRQS) || (NR_IRQS < NR_IRQS_EB)) | ||
142 | #undef NR_IRQS | ||
143 | #define NR_IRQS NR_IRQS_EB | ||
144 | #endif | ||
145 | |||
146 | #if defined(CONFIG_REALVIEW_EB_ARM11MP) \ | ||
147 | && (!defined(MAX_GIC_NR) || (MAX_GIC_NR < NR_GIC_EB11MP)) | ||
148 | #undef MAX_GIC_NR | ||
149 | #define MAX_GIC_NR NR_GIC_EB11MP | ||
150 | #endif | ||
151 | |||
152 | /* | ||
153 | * Core tile identification (REALVIEW_SYS_PROCID) | ||
154 | */ | ||
155 | #define REALVIEW_EB_PROC_MASK 0xFF000000 | ||
156 | #define REALVIEW_EB_PROC_ARM7TDMI 0x00000000 | ||
157 | #define REALVIEW_EB_PROC_ARM9 0x02000000 | ||
158 | #define REALVIEW_EB_PROC_ARM11 0x04000000 | ||
159 | #define REALVIEW_EB_PROC_ARM11MP 0x06000000 | ||
160 | |||
161 | #define check_eb_proc(proc_type) \ | ||
162 | ((readl(__io_address(REALVIEW_SYS_PROCID)) & REALVIEW_EB_PROC_MASK) \ | ||
163 | == proc_type) | ||
164 | |||
165 | #ifdef CONFIG_REALVIEW_EB_ARM11MP | ||
166 | #define core_tile_eb11mp() check_eb_proc(REALVIEW_EB_PROC_ARM11MP) | ||
167 | #else | ||
168 | #define core_tile_eb11mp() 0 | ||
169 | #endif | ||
170 | |||
171 | #endif /* __ASM_ARCH_BOARD_EB_H */ | ||
diff --git a/include/asm-arm/arch-realview/entry-macro.S b/include/asm-arm/arch-realview/entry-macro.S index 3b4e2076603a..cd26306d8e57 100644 --- a/include/asm-arm/arch-realview/entry-macro.S +++ b/include/asm-arm/arch-realview/entry-macro.S | |||
@@ -14,7 +14,8 @@ | |||
14 | .endm | 14 | .endm |
15 | 15 | ||
16 | .macro get_irqnr_preamble, base, tmp | 16 | .macro get_irqnr_preamble, base, tmp |
17 | ldr \base, =IO_ADDRESS(REALVIEW_GIC_CPU_BASE) | 17 | ldr \base, =gic_cpu_base_addr |
18 | ldr \base, [\base] | ||
18 | .endm | 19 | .endm |
19 | 20 | ||
20 | .macro arch_ret_to_user, tmp1, tmp2 | 21 | .macro arch_ret_to_user, tmp1, tmp2 |
diff --git a/include/asm-arm/arch-realview/hardware.h b/include/asm-arm/arch-realview/hardware.h index aa78fe087ab2..bad8d7ce9bfe 100644 --- a/include/asm-arm/arch-realview/hardware.h +++ b/include/asm-arm/arch-realview/hardware.h | |||
@@ -23,7 +23,6 @@ | |||
23 | #define __ASM_ARCH_HARDWARE_H | 23 | #define __ASM_ARCH_HARDWARE_H |
24 | 24 | ||
25 | #include <asm/sizes.h> | 25 | #include <asm/sizes.h> |
26 | #include <asm/arch/platform.h> | ||
27 | 26 | ||
28 | /* macro to get at IO space when running virtually */ | 27 | /* macro to get at IO space when running virtually */ |
29 | #define IO_ADDRESS(x) ((((x) & 0x0effffff) | (((x) >> 4) & 0x0f000000)) + 0xf0000000) | 28 | #define IO_ADDRESS(x) ((((x) & 0x0effffff) | (((x) >> 4) & 0x0f000000)) + 0xf0000000) |
diff --git a/include/asm-arm/arch-realview/irqs.h b/include/asm-arm/arch-realview/irqs.h index 5a5db56f86b8..ad0c911002fc 100644 --- a/include/asm-arm/arch-realview/irqs.h +++ b/include/asm-arm/arch-realview/irqs.h | |||
@@ -19,103 +19,18 @@ | |||
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include <asm/arch/platform.h> | 22 | #ifndef __ASM_ARCH_IRQS_H |
23 | #define __ASM_ARCH_IRQS_H | ||
23 | 24 | ||
24 | #define IRQ_LOCALTIMER 29 | 25 | #include <asm/arch/board-eb.h> |
25 | #define IRQ_LOCALWDOG 30 | ||
26 | 26 | ||
27 | /* | 27 | #define IRQ_LOCALTIMER 29 |
28 | * IRQ interrupts definitions are the same the INT definitions | 28 | #define IRQ_LOCALWDOG 30 |
29 | * held within platform.h | ||
30 | */ | ||
31 | #define IRQ_GIC_START 32 | ||
32 | #define IRQ_WDOGINT (IRQ_GIC_START + INT_WDOGINT) | ||
33 | #define IRQ_SOFTINT (IRQ_GIC_START + INT_SOFTINT) | ||
34 | #define IRQ_COMMRx (IRQ_GIC_START + INT_COMMRx) | ||
35 | #define IRQ_COMMTx (IRQ_GIC_START + INT_COMMTx) | ||
36 | #define IRQ_TIMERINT0_1 (IRQ_GIC_START + INT_TIMERINT0_1) | ||
37 | #define IRQ_TIMERINT2_3 (IRQ_GIC_START + INT_TIMERINT2_3) | ||
38 | #define IRQ_GPIOINT0 (IRQ_GIC_START + INT_GPIOINT0) | ||
39 | #define IRQ_GPIOINT1 (IRQ_GIC_START + INT_GPIOINT1) | ||
40 | #define IRQ_GPIOINT2 (IRQ_GIC_START + INT_GPIOINT2) | ||
41 | #define IRQ_GPIOINT3 (IRQ_GIC_START + INT_GPIOINT3) | ||
42 | #define IRQ_RTCINT (IRQ_GIC_START + INT_RTCINT) | ||
43 | #define IRQ_SSPINT (IRQ_GIC_START + INT_SSPINT) | ||
44 | #define IRQ_UARTINT0 (IRQ_GIC_START + INT_UARTINT0) | ||
45 | #define IRQ_UARTINT1 (IRQ_GIC_START + INT_UARTINT1) | ||
46 | #define IRQ_UARTINT2 (IRQ_GIC_START + INT_UARTINT2) | ||
47 | #define IRQ_UART3 (IRQ_GIC_START + INT_UARTINT3) | ||
48 | #define IRQ_SCIINT (IRQ_GIC_START + INT_SCIINT) | ||
49 | #define IRQ_CLCDINT (IRQ_GIC_START + INT_CLCDINT) | ||
50 | #define IRQ_DMAINT (IRQ_GIC_START + INT_DMAINT) | ||
51 | #define IRQ_PWRFAILINT (IRQ_GIC_START + INT_PWRFAILINT) | ||
52 | #define IRQ_MBXINT (IRQ_GIC_START + INT_MBXINT) | ||
53 | #define IRQ_GNDINT (IRQ_GIC_START + INT_GNDINT) | ||
54 | #define IRQ_MMCI0B (IRQ_GIC_START + INT_MMCI0B) | ||
55 | #define IRQ_MMCI1B (IRQ_GIC_START + INT_MMCI1B) | ||
56 | #define IRQ_KMI0 (IRQ_GIC_START + INT_KMI0) | ||
57 | #define IRQ_KMI1 (IRQ_GIC_START + INT_KMI1) | ||
58 | #define IRQ_SCI3 (IRQ_GIC_START + INT_SCI3) | ||
59 | #define IRQ_CLCD (IRQ_GIC_START + INT_CLCD) | ||
60 | #define IRQ_TOUCH (IRQ_GIC_START + INT_TOUCH) | ||
61 | #define IRQ_KEYPAD (IRQ_GIC_START + INT_KEYPAD) | ||
62 | #define IRQ_DoC (IRQ_GIC_START + INT_DoC) | ||
63 | #define IRQ_MMCI0A (IRQ_GIC_START + INT_MMCI0A) | ||
64 | #define IRQ_MMCI1A (IRQ_GIC_START + INT_MMCI1A) | ||
65 | #define IRQ_AACI (IRQ_GIC_START + INT_AACI) | ||
66 | #define IRQ_ETH (IRQ_GIC_START + INT_ETH) | ||
67 | #define IRQ_USB (IRQ_GIC_START + INT_USB) | ||
68 | #define IRQ_PMU_CPU0 (IRQ_GIC_START + INT_PMU_CPU0) | ||
69 | #define IRQ_PMU_CPU1 (IRQ_GIC_START + INT_PMU_CPU1) | ||
70 | #define IRQ_PMU_CPU2 (IRQ_GIC_START + INT_PMU_CPU2) | ||
71 | #define IRQ_PMU_CPU3 (IRQ_GIC_START + INT_PMU_CPU3) | ||
72 | #define IRQ_PMU_SCU0 (IRQ_GIC_START + INT_PMU_SCU0) | ||
73 | #define IRQ_PMU_SCU1 (IRQ_GIC_START + INT_PMU_SCU1) | ||
74 | #define IRQ_PMU_SCU2 (IRQ_GIC_START + INT_PMU_SCU2) | ||
75 | #define IRQ_PMU_SCU3 (IRQ_GIC_START + INT_PMU_SCU3) | ||
76 | #define IRQ_PMU_SCU4 (IRQ_GIC_START + INT_PMU_SCU4) | ||
77 | #define IRQ_PMU_SCU5 (IRQ_GIC_START + INT_PMU_SCU5) | ||
78 | #define IRQ_PMU_SCU6 (IRQ_GIC_START + INT_PMU_SCU6) | ||
79 | #define IRQ_PMU_SCU7 (IRQ_GIC_START + INT_PMU_SCU7) | ||
80 | 29 | ||
81 | #define IRQ_EB_IRQ1 (IRQ_GIC_START + INT_EB_IRQ1) | 30 | #define IRQ_GIC_START 32 |
82 | #define IRQ_EB_IRQ2 (IRQ_GIC_START + INT_EB_IRQ2) | ||
83 | 31 | ||
84 | #define IRQMASK_WDOGINT INTMASK_WDOGINT | 32 | #ifndef NR_IRQS |
85 | #define IRQMASK_SOFTINT INTMASK_SOFTINT | 33 | #error "NR_IRQS not defined by the board-specific files" |
86 | #define IRQMASK_COMMRx INTMASK_COMMRx | 34 | #endif |
87 | #define IRQMASK_COMMTx INTMASK_COMMTx | ||
88 | #define IRQMASK_TIMERINT0_1 INTMASK_TIMERINT0_1 | ||
89 | #define IRQMASK_TIMERINT2_3 INTMASK_TIMERINT2_3 | ||
90 | #define IRQMASK_GPIOINT0 INTMASK_GPIOINT0 | ||
91 | #define IRQMASK_GPIOINT1 INTMASK_GPIOINT1 | ||
92 | #define IRQMASK_GPIOINT2 INTMASK_GPIOINT2 | ||
93 | #define IRQMASK_GPIOINT3 INTMASK_GPIOINT3 | ||
94 | #define IRQMASK_RTCINT INTMASK_RTCINT | ||
95 | #define IRQMASK_SSPINT INTMASK_SSPINT | ||
96 | #define IRQMASK_UARTINT0 INTMASK_UARTINT0 | ||
97 | #define IRQMASK_UARTINT1 INTMASK_UARTINT1 | ||
98 | #define IRQMASK_UARTINT2 INTMASK_UARTINT2 | ||
99 | #define IRQMASK_SCIINT INTMASK_SCIINT | ||
100 | #define IRQMASK_CLCDINT INTMASK_CLCDINT | ||
101 | #define IRQMASK_DMAINT INTMASK_DMAINT | ||
102 | #define IRQMASK_PWRFAILINT INTMASK_PWRFAILINT | ||
103 | #define IRQMASK_MBXINT INTMASK_MBXINT | ||
104 | #define IRQMASK_GNDINT INTMASK_GNDINT | ||
105 | #define IRQMASK_MMCI0B INTMASK_MMCI0B | ||
106 | #define IRQMASK_MMCI1B INTMASK_MMCI1B | ||
107 | #define IRQMASK_KMI0 INTMASK_KMI0 | ||
108 | #define IRQMASK_KMI1 INTMASK_KMI1 | ||
109 | #define IRQMASK_SCI3 INTMASK_SCI3 | ||
110 | #define IRQMASK_UART3 INTMASK_UART3 | ||
111 | #define IRQMASK_CLCD INTMASK_CLCD | ||
112 | #define IRQMASK_TOUCH INTMASK_TOUCH | ||
113 | #define IRQMASK_KEYPAD INTMASK_KEYPAD | ||
114 | #define IRQMASK_DoC INTMASK_DoC | ||
115 | #define IRQMASK_MMCI0A INTMASK_MMCI0A | ||
116 | #define IRQMASK_MMCI1A INTMASK_MMCI1A | ||
117 | #define IRQMASK_AACI INTMASK_AACI | ||
118 | #define IRQMASK_ETH INTMASK_ETH | ||
119 | #define IRQMASK_USB INTMASK_USB | ||
120 | 35 | ||
121 | #define NR_IRQS (IRQ_GIC_START + 96) | 36 | #endif |
diff --git a/include/asm-arm/arch-realview/platform.h b/include/asm-arm/arch-realview/platform.h index 6e0eab95a3a2..4fd351b5e4a2 100644 --- a/include/asm-arm/arch-realview/platform.h +++ b/include/asm-arm/arch-realview/platform.h | |||
@@ -18,8 +18,8 @@ | |||
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
19 | */ | 19 | */ |
20 | 20 | ||
21 | #ifndef __address_h | 21 | #ifndef __ASM_ARCH_PLATFORM_H |
22 | #define __address_h 1 | 22 | #define __ASM_ARCH_PLATFORM_H |
23 | 23 | ||
24 | /* | 24 | /* |
25 | * Memory definitions | 25 | * Memory definitions |
@@ -81,11 +81,12 @@ | |||
81 | #define REALVIEW_SYS_24MHz_OFFSET 0x5C | 81 | #define REALVIEW_SYS_24MHz_OFFSET 0x5C |
82 | #define REALVIEW_SYS_MISC_OFFSET 0x60 | 82 | #define REALVIEW_SYS_MISC_OFFSET 0x60 |
83 | #define REALVIEW_SYS_IOSEL_OFFSET 0x70 | 83 | #define REALVIEW_SYS_IOSEL_OFFSET 0x70 |
84 | #define REALVIEW_SYS_TEST_OSC0_OFFSET 0x80 | 84 | #define REALVIEW_SYS_PROCID_OFFSET 0x84 |
85 | #define REALVIEW_SYS_TEST_OSC1_OFFSET 0x84 | 85 | #define REALVIEW_SYS_TEST_OSC0_OFFSET 0xC0 |
86 | #define REALVIEW_SYS_TEST_OSC2_OFFSET 0x88 | 86 | #define REALVIEW_SYS_TEST_OSC1_OFFSET 0xC4 |
87 | #define REALVIEW_SYS_TEST_OSC3_OFFSET 0x8C | 87 | #define REALVIEW_SYS_TEST_OSC2_OFFSET 0xC8 |
88 | #define REALVIEW_SYS_TEST_OSC4_OFFSET 0x90 | 88 | #define REALVIEW_SYS_TEST_OSC3_OFFSET 0xCC |
89 | #define REALVIEW_SYS_TEST_OSC4_OFFSET 0xD0 | ||
89 | 90 | ||
90 | #define REALVIEW_SYS_BASE 0x10000000 | 91 | #define REALVIEW_SYS_BASE 0x10000000 |
91 | #define REALVIEW_SYS_ID (REALVIEW_SYS_BASE + REALVIEW_SYS_ID_OFFSET) | 92 | #define REALVIEW_SYS_ID (REALVIEW_SYS_BASE + REALVIEW_SYS_ID_OFFSET) |
@@ -114,6 +115,7 @@ | |||
114 | #define REALVIEW_SYS_24MHz (REALVIEW_SYS_BASE + REALVIEW_SYS_24MHz_OFFSET) | 115 | #define REALVIEW_SYS_24MHz (REALVIEW_SYS_BASE + REALVIEW_SYS_24MHz_OFFSET) |
115 | #define REALVIEW_SYS_MISC (REALVIEW_SYS_BASE + REALVIEW_SYS_MISC_OFFSET) | 116 | #define REALVIEW_SYS_MISC (REALVIEW_SYS_BASE + REALVIEW_SYS_MISC_OFFSET) |
116 | #define REALVIEW_SYS_IOSEL (REALVIEW_SYS_BASE + REALVIEW_SYS_IOSEL_OFFSET) | 117 | #define REALVIEW_SYS_IOSEL (REALVIEW_SYS_BASE + REALVIEW_SYS_IOSEL_OFFSET) |
118 | #define REALVIEW_SYS_PROCID (REALVIEW_SYS_BASE + REALVIEW_SYS_PROCID_OFFSET) | ||
117 | #define REALVIEW_SYS_TEST_OSC0 (REALVIEW_SYS_BASE + REALVIEW_SYS_TEST_OSC0_OFFSET) | 119 | #define REALVIEW_SYS_TEST_OSC0 (REALVIEW_SYS_BASE + REALVIEW_SYS_TEST_OSC0_OFFSET) |
118 | #define REALVIEW_SYS_TEST_OSC1 (REALVIEW_SYS_BASE + REALVIEW_SYS_TEST_OSC1_OFFSET) | 120 | #define REALVIEW_SYS_TEST_OSC1 (REALVIEW_SYS_BASE + REALVIEW_SYS_TEST_OSC1_OFFSET) |
119 | #define REALVIEW_SYS_TEST_OSC2 (REALVIEW_SYS_BASE + REALVIEW_SYS_TEST_OSC2_OFFSET) | 121 | #define REALVIEW_SYS_TEST_OSC2 (REALVIEW_SYS_BASE + REALVIEW_SYS_TEST_OSC2_OFFSET) |
@@ -203,30 +205,8 @@ | |||
203 | /* Reserved 0x1001A000 - 0x1001FFFF */ | 205 | /* Reserved 0x1001A000 - 0x1001FFFF */ |
204 | #define REALVIEW_CLCD_BASE 0x10020000 /* CLCD */ | 206 | #define REALVIEW_CLCD_BASE 0x10020000 /* CLCD */ |
205 | #define REALVIEW_DMAC_BASE 0x10030000 /* DMA controller */ | 207 | #define REALVIEW_DMAC_BASE 0x10030000 /* DMA controller */ |
206 | #ifndef CONFIG_REALVIEW_MPCORE | ||
207 | #define REALVIEW_GIC_CPU_BASE 0x10040000 /* Generic interrupt controller CPU interface */ | 208 | #define REALVIEW_GIC_CPU_BASE 0x10040000 /* Generic interrupt controller CPU interface */ |
208 | #define REALVIEW_GIC_DIST_BASE 0x10041000 /* Generic interrupt controller distributor */ | 209 | #define REALVIEW_GIC_DIST_BASE 0x10041000 /* Generic interrupt controller distributor */ |
209 | #else | ||
210 | #ifdef CONFIG_REALVIEW_MPCORE_REVB | ||
211 | #define REALVIEW_MPCORE_SCU_BASE 0x10100000 /* SCU registers */ | ||
212 | #define REALVIEW_GIC_CPU_BASE 0x10100100 /* Generic interrupt controller CPU interface */ | ||
213 | #define REALVIEW_TWD_BASE 0x10100700 | ||
214 | #define REALVIEW_TWD_SIZE 0x00000100 | ||
215 | #define REALVIEW_GIC_DIST_BASE 0x10101000 /* Generic interrupt controller distributor */ | ||
216 | #define REALVIEW_MPCORE_L220_BASE 0x10102000 /* L220 registers */ | ||
217 | #define REALVIEW_MPCORE_SYS_PLD_CTRL1 0xD8 /* Register offset for MPCore sysctl */ | ||
218 | #else | ||
219 | #define REALVIEW_MPCORE_SCU_BASE 0x1F000000 /* SCU registers */ | ||
220 | #define REALVIEW_GIC_CPU_BASE 0x1F000100 /* Generic interrupt controller CPU interface */ | ||
221 | #define REALVIEW_TWD_BASE 0x1F000700 | ||
222 | #define REALVIEW_TWD_SIZE 0x00000100 | ||
223 | #define REALVIEW_GIC_DIST_BASE 0x1F001000 /* Generic interrupt controller distributor */ | ||
224 | #define REALVIEW_MPCORE_L220_BASE 0x1F002000 /* L220 registers */ | ||
225 | #define REALVIEW_MPCORE_SYS_PLD_CTRL1 0x74 /* Register offset for MPCore sysctl */ | ||
226 | #endif | ||
227 | #define REALVIEW_GIC1_CPU_BASE 0x10040000 /* Generic interrupt controller CPU interface */ | ||
228 | #define REALVIEW_GIC1_DIST_BASE 0x10041000 /* Generic interrupt controller distributor */ | ||
229 | #endif | ||
230 | #define REALVIEW_SMC_BASE 0x10080000 /* SMC */ | 210 | #define REALVIEW_SMC_BASE 0x10080000 /* SMC */ |
231 | /* Reserved 0x10090000 - 0x100EFFFF */ | 211 | /* Reserved 0x10090000 - 0x100EFFFF */ |
232 | 212 | ||
@@ -283,134 +263,6 @@ | |||
283 | #define REALVIEW_INTREG_OFFSET 0x8 /* Interrupt control */ | 263 | #define REALVIEW_INTREG_OFFSET 0x8 /* Interrupt control */ |
284 | #define REALVIEW_DECODE_OFFSET 0xC /* Fitted logic modules */ | 264 | #define REALVIEW_DECODE_OFFSET 0xC /* Fitted logic modules */ |
285 | 265 | ||
286 | /* ------------------------------------------------------------------------ | ||
287 | * Interrupts - bit assignment (primary) | ||
288 | * ------------------------------------------------------------------------ | ||
289 | */ | ||
290 | #ifndef CONFIG_REALVIEW_MPCORE | ||
291 | #define INT_WDOGINT 0 /* Watchdog timer */ | ||
292 | #define INT_SOFTINT 1 /* Software interrupt */ | ||
293 | #define INT_COMMRx 2 /* Debug Comm Rx interrupt */ | ||
294 | #define INT_COMMTx 3 /* Debug Comm Tx interrupt */ | ||
295 | #define INT_TIMERINT0_1 4 /* Timer 0 and 1 */ | ||
296 | #define INT_TIMERINT2_3 5 /* Timer 2 and 3 */ | ||
297 | #define INT_GPIOINT0 6 /* GPIO 0 */ | ||
298 | #define INT_GPIOINT1 7 /* GPIO 1 */ | ||
299 | #define INT_GPIOINT2 8 /* GPIO 2 */ | ||
300 | /* 9 reserved */ | ||
301 | #define INT_RTCINT 10 /* Real Time Clock */ | ||
302 | #define INT_SSPINT 11 /* Synchronous Serial Port */ | ||
303 | #define INT_UARTINT0 12 /* UART 0 on development chip */ | ||
304 | #define INT_UARTINT1 13 /* UART 1 on development chip */ | ||
305 | #define INT_UARTINT2 14 /* UART 2 on development chip */ | ||
306 | #define INT_UARTINT3 15 /* UART 3 on development chip */ | ||
307 | #define INT_SCIINT 16 /* Smart Card Interface */ | ||
308 | #define INT_MMCI0A 17 /* Multimedia Card 0A */ | ||
309 | #define INT_MMCI0B 18 /* Multimedia Card 0B */ | ||
310 | #define INT_AACI 19 /* Audio Codec */ | ||
311 | #define INT_KMI0 20 /* Keyboard/Mouse port 0 */ | ||
312 | #define INT_KMI1 21 /* Keyboard/Mouse port 1 */ | ||
313 | #define INT_CHARLCD 22 /* Character LCD */ | ||
314 | #define INT_CLCDINT 23 /* CLCD controller */ | ||
315 | #define INT_DMAINT 24 /* DMA controller */ | ||
316 | #define INT_PWRFAILINT 25 /* Power failure */ | ||
317 | #define INT_PISMO 26 | ||
318 | #define INT_DoC 27 /* Disk on Chip memory controller */ | ||
319 | #define INT_ETH 28 /* Ethernet controller */ | ||
320 | #define INT_USB 29 /* USB controller */ | ||
321 | #define INT_TSPENINT 30 /* Touchscreen pen */ | ||
322 | #define INT_TSKPADINT 31 /* Touchscreen keypad */ | ||
323 | |||
324 | #else | ||
325 | |||
326 | #define MAX_GIC_NR 2 | ||
327 | |||
328 | #define INT_AACI 0 | ||
329 | #define INT_TIMERINT0_1 1 | ||
330 | #define INT_TIMERINT2_3 2 | ||
331 | #define INT_USB 3 | ||
332 | #define INT_UARTINT0 4 | ||
333 | #define INT_UARTINT1 5 | ||
334 | #define INT_RTCINT 6 | ||
335 | #define INT_KMI0 7 | ||
336 | #define INT_KMI1 8 | ||
337 | #define INT_ETH 9 | ||
338 | #define INT_EB_IRQ1 10 /* main GIC */ | ||
339 | #define INT_EB_IRQ2 11 /* tile GIC */ | ||
340 | #define INT_EB_FIQ1 12 /* main GIC */ | ||
341 | #define INT_EB_FIQ2 13 /* tile GIC */ | ||
342 | #define INT_MMCI0A 14 | ||
343 | #define INT_MMCI0B 15 | ||
344 | |||
345 | #define INT_PMU_CPU0 17 | ||
346 | #define INT_PMU_CPU1 18 | ||
347 | #define INT_PMU_CPU2 19 | ||
348 | #define INT_PMU_CPU3 20 | ||
349 | #define INT_PMU_SCU0 21 | ||
350 | #define INT_PMU_SCU1 22 | ||
351 | #define INT_PMU_SCU2 23 | ||
352 | #define INT_PMU_SCU3 24 | ||
353 | #define INT_PMU_SCU4 25 | ||
354 | #define INT_PMU_SCU5 26 | ||
355 | #define INT_PMU_SCU6 27 | ||
356 | #define INT_PMU_SCU7 28 | ||
357 | |||
358 | #define INT_L220_EVENT 29 | ||
359 | #define INT_L220_SLAVE 30 | ||
360 | #define INT_L220_DECODE 31 | ||
361 | |||
362 | #define INT_UARTINT2 -1 | ||
363 | #define INT_UARTINT3 -1 | ||
364 | #define INT_CLCDINT -1 | ||
365 | #define INT_DMAINT -1 | ||
366 | #define INT_WDOGINT -1 | ||
367 | #define INT_GPIOINT0 -1 | ||
368 | #define INT_GPIOINT1 -1 | ||
369 | #define INT_GPIOINT2 -1 | ||
370 | #define INT_SCIINT -1 | ||
371 | #define INT_SSPINT -1 | ||
372 | #endif | ||
373 | |||
374 | /* | ||
375 | * Interrupt bit positions | ||
376 | * | ||
377 | */ | ||
378 | #define INTMASK_WDOGINT (1 << INT_WDOGINT) | ||
379 | #define INTMASK_SOFTINT (1 << INT_SOFTINT) | ||
380 | #define INTMASK_COMMRx (1 << INT_COMMRx) | ||
381 | #define INTMASK_COMMTx (1 << INT_COMMTx) | ||
382 | #define INTMASK_TIMERINT0_1 (1 << INT_TIMERINT0_1) | ||
383 | #define INTMASK_TIMERINT2_3 (1 << INT_TIMERINT2_3) | ||
384 | #define INTMASK_GPIOINT0 (1 << INT_GPIOINT0) | ||
385 | #define INTMASK_GPIOINT1 (1 << INT_GPIOINT1) | ||
386 | #define INTMASK_GPIOINT2 (1 << INT_GPIOINT2) | ||
387 | #define INTMASK_RTCINT (1 << INT_RTCINT) | ||
388 | #define INTMASK_SSPINT (1 << INT_SSPINT) | ||
389 | #define INTMASK_UARTINT0 (1 << INT_UARTINT0) | ||
390 | #define INTMASK_UARTINT1 (1 << INT_UARTINT1) | ||
391 | #define INTMASK_UARTINT2 (1 << INT_UARTINT2) | ||
392 | #define INTMASK_UARTINT3 (1 << INT_UARTINT3) | ||
393 | #define INTMASK_SCIINT (1 << INT_SCIINT) | ||
394 | #define INTMASK_MMCI0A (1 << INT_MMCI0A) | ||
395 | #define INTMASK_MMCI0B (1 << INT_MMCI0B) | ||
396 | #define INTMASK_AACI (1 << INT_AACI) | ||
397 | #define INTMASK_KMI0 (1 << INT_KMI0) | ||
398 | #define INTMASK_KMI1 (1 << INT_KMI1) | ||
399 | #define INTMASK_CHARLCD (1 << INT_CHARLCD) | ||
400 | #define INTMASK_CLCDINT (1 << INT_CLCDINT) | ||
401 | #define INTMASK_DMAINT (1 << INT_DMAINT) | ||
402 | #define INTMASK_PWRFAILINT (1 << INT_PWRFAILINT) | ||
403 | #define INTMASK_PISMO (1 << INT_PISMO) | ||
404 | #define INTMASK_DoC (1 << INT_DoC) | ||
405 | #define INTMASK_ETH (1 << INT_ETH) | ||
406 | #define INTMASK_USB (1 << INT_USB) | ||
407 | #define INTMASK_TSPENINT (1 << INT_TSPENINT) | ||
408 | #define INTMASK_TSKPADINT (1 << INT_TSKPADINT) | ||
409 | |||
410 | #define MAXIRQNUM 31 | ||
411 | #define MAXFIQNUM 31 | ||
412 | #define MAXSWINUM 31 | ||
413 | |||
414 | /* | 266 | /* |
415 | * Application Flash | 267 | * Application Flash |
416 | * | 268 | * |
@@ -463,6 +315,4 @@ | |||
463 | #define REALVIEW_CSR_BASE 0x10000000 | 315 | #define REALVIEW_CSR_BASE 0x10000000 |
464 | #define REALVIEW_CSR_SIZE 0x10000000 | 316 | #define REALVIEW_CSR_SIZE 0x10000000 |
465 | 317 | ||
466 | #endif | 318 | #endif /* __ASM_ARCH_PLATFORM_H */ |
467 | |||
468 | /* END */ | ||
diff --git a/include/asm-arm/arch-realview/scu.h b/include/asm-arm/arch-realview/scu.h index cc293640178e..08b3db883c36 100644 --- a/include/asm-arm/arch-realview/scu.h +++ b/include/asm-arm/arch-realview/scu.h | |||
@@ -1,8 +1,8 @@ | |||
1 | #ifndef __ASMARM_ARCH_SCU_H | 1 | #ifndef __ASMARM_ARCH_SCU_H |
2 | #define __ASMARM_ARCH_SCU_H | 2 | #define __ASMARM_ARCH_SCU_H |
3 | 3 | ||
4 | #include <asm/arch/platform.h> | 4 | #include <asm/arch/board-eb.h> |
5 | 5 | ||
6 | #define SCU_BASE REALVIEW_MPCORE_SCU_BASE | 6 | #define SCU_BASE REALVIEW_EB11MP_SCU_BASE |
7 | 7 | ||
8 | #endif | 8 | #endif |
diff --git a/include/asm-arm/arch-realview/uncompress.h b/include/asm-arm/arch-realview/uncompress.h index f05631d76743..3d5c2db07a26 100644 --- a/include/asm-arm/arch-realview/uncompress.h +++ b/include/asm-arm/arch-realview/uncompress.h | |||
@@ -19,6 +19,8 @@ | |||
19 | */ | 19 | */ |
20 | #include <asm/hardware.h> | 20 | #include <asm/hardware.h> |
21 | 21 | ||
22 | #include <asm/arch/platform.h> | ||
23 | |||
22 | #define AMBA_UART_DR (*(volatile unsigned char *) (REALVIEW_UART0_BASE + 0x00)) | 24 | #define AMBA_UART_DR (*(volatile unsigned char *) (REALVIEW_UART0_BASE + 0x00)) |
23 | #define AMBA_UART_LCRH (*(volatile unsigned char *) (REALVIEW_UART0_BASE + 0x2c)) | 25 | #define AMBA_UART_LCRH (*(volatile unsigned char *) (REALVIEW_UART0_BASE + 0x2c)) |
24 | #define AMBA_UART_CR (*(volatile unsigned char *) (REALVIEW_UART0_BASE + 0x30)) | 26 | #define AMBA_UART_CR (*(volatile unsigned char *) (REALVIEW_UART0_BASE + 0x30)) |
diff --git a/include/asm-arm/arch-s3c2410/debug-macro.S b/include/asm-arm/arch-s3c2410/debug-macro.S index 9c8cd9abb82b..89076c322726 100644 --- a/include/asm-arm/arch-s3c2410/debug-macro.S +++ b/include/asm-arm/arch-s3c2410/debug-macro.S | |||
@@ -92,11 +92,9 @@ | |||
92 | #if defined(CONFIG_CPU_LLSERIAL_S3C2410_ONLY) | 92 | #if defined(CONFIG_CPU_LLSERIAL_S3C2410_ONLY) |
93 | #define fifo_full fifo_full_s3c2410 | 93 | #define fifo_full fifo_full_s3c2410 |
94 | #define fifo_level fifo_level_s3c2410 | 94 | #define fifo_level fifo_level_s3c2410 |
95 | #warning 2410only | ||
96 | #elif !defined(CONFIG_CPU_LLSERIAL_S3C2440_ONLY) | 95 | #elif !defined(CONFIG_CPU_LLSERIAL_S3C2440_ONLY) |
97 | #define fifo_full fifo_full_s3c24xx | 96 | #define fifo_full fifo_full_s3c24xx |
98 | #define fifo_level fifo_level_s3c24xx | 97 | #define fifo_level fifo_level_s3c24xx |
99 | #warning generic | ||
100 | #endif | 98 | #endif |
101 | 99 | ||
102 | /* include the reset of the code which will do the work */ | 100 | /* include the reset of the code which will do the work */ |
diff --git a/include/asm-arm/arch-s3c2410/dma.h b/include/asm-arm/arch-s3c2410/dma.h index c6e8d8f64938..4f291d9b7d93 100644 --- a/include/asm-arm/arch-s3c2410/dma.h +++ b/include/asm-arm/arch-s3c2410/dma.h | |||
@@ -214,6 +214,7 @@ struct s3c2410_dma_chan { | |||
214 | unsigned long dev_addr; | 214 | unsigned long dev_addr; |
215 | unsigned long load_timeout; | 215 | unsigned long load_timeout; |
216 | unsigned int flags; /* channel flags */ | 216 | unsigned int flags; /* channel flags */ |
217 | unsigned int hw_cfg; /* last hw config */ | ||
217 | 218 | ||
218 | struct s3c24xx_dma_map *map; /* channel hw maps */ | 219 | struct s3c24xx_dma_map *map; /* channel hw maps */ |
219 | 220 | ||
diff --git a/include/asm-arm/arch-s3c2410/hardware.h b/include/asm-arm/arch-s3c2410/hardware.h index 6dadf58ff984..29592c3ebf22 100644 --- a/include/asm-arm/arch-s3c2410/hardware.h +++ b/include/asm-arm/arch-s3c2410/hardware.h | |||
@@ -50,6 +50,17 @@ extern unsigned int s3c2410_gpio_getcfg(unsigned int pin); | |||
50 | 50 | ||
51 | extern int s3c2410_gpio_getirq(unsigned int pin); | 51 | extern int s3c2410_gpio_getirq(unsigned int pin); |
52 | 52 | ||
53 | /* s3c2410_gpio_irq2pin | ||
54 | * | ||
55 | * turn the given irq number into the corresponding GPIO number | ||
56 | * | ||
57 | * returns: | ||
58 | * < 0 = no pin | ||
59 | * >=0 = gpio pin number | ||
60 | */ | ||
61 | |||
62 | extern int s3c2410_gpio_irq2pin(unsigned int irq); | ||
63 | |||
53 | #ifdef CONFIG_CPU_S3C2400 | 64 | #ifdef CONFIG_CPU_S3C2400 |
54 | 65 | ||
55 | extern int s3c2400_gpio_getirq(unsigned int pin); | 66 | extern int s3c2400_gpio_getirq(unsigned int pin); |
@@ -87,6 +98,18 @@ extern int s3c2410_gpio_irqfilter(unsigned int pin, unsigned int on, | |||
87 | 98 | ||
88 | extern void s3c2410_gpio_pullup(unsigned int pin, unsigned int to); | 99 | extern void s3c2410_gpio_pullup(unsigned int pin, unsigned int to); |
89 | 100 | ||
101 | /* s3c2410_gpio_getpull | ||
102 | * | ||
103 | * Read the state of the pull-up on a given pin | ||
104 | * | ||
105 | * return: | ||
106 | * < 0 => error code | ||
107 | * 0 => enabled | ||
108 | * 1 => disabled | ||
109 | */ | ||
110 | |||
111 | extern int s3c2410_gpio_getpull(unsigned int pin); | ||
112 | |||
90 | extern void s3c2410_gpio_setpin(unsigned int pin, unsigned int to); | 113 | extern void s3c2410_gpio_setpin(unsigned int pin, unsigned int to); |
91 | 114 | ||
92 | extern unsigned int s3c2410_gpio_getpin(unsigned int pin); | 115 | extern unsigned int s3c2410_gpio_getpin(unsigned int pin); |
@@ -99,6 +122,11 @@ extern int s3c2440_set_dsc(unsigned int pin, unsigned int value); | |||
99 | 122 | ||
100 | #endif /* CONFIG_CPU_S3C2440 */ | 123 | #endif /* CONFIG_CPU_S3C2440 */ |
101 | 124 | ||
125 | #ifdef CONFIG_CPU_S3C2412 | ||
126 | |||
127 | extern int s3c2412_gpio_set_sleepcfg(unsigned int pin, unsigned int state); | ||
128 | |||
129 | #endif /* CONFIG_CPU_S3C2412 */ | ||
102 | 130 | ||
103 | #endif /* __ASSEMBLY__ */ | 131 | #endif /* __ASSEMBLY__ */ |
104 | 132 | ||
diff --git a/include/asm-arm/arch-s3c2410/irqs.h b/include/asm-arm/arch-s3c2410/irqs.h index 996f65488d2d..d858b3eb5547 100644 --- a/include/asm-arm/arch-s3c2410/irqs.h +++ b/include/asm-arm/arch-s3c2410/irqs.h | |||
@@ -160,4 +160,7 @@ | |||
160 | #define NR_IRQS (IRQ_S3C2440_AC97+1) | 160 | #define NR_IRQS (IRQ_S3C2440_AC97+1) |
161 | #endif | 161 | #endif |
162 | 162 | ||
163 | /* Our FIQs are routable from IRQ_EINT0 to IRQ_ADCPARENT */ | ||
164 | #define FIQ_START IRQ_EINT0 | ||
165 | |||
163 | #endif /* __ASM_ARCH_IRQ_H */ | 166 | #endif /* __ASM_ARCH_IRQ_H */ |
diff --git a/include/asm-arm/arch-s3c2410/regs-clock.h b/include/asm-arm/arch-s3c2410/regs-clock.h index e39656b7a086..dba9df9d8713 100644 --- a/include/asm-arm/arch-s3c2410/regs-clock.h +++ b/include/asm-arm/arch-s3c2410/regs-clock.h | |||
@@ -138,6 +138,8 @@ s3c2410_get_pll(unsigned int pllval, unsigned int baseclk) | |||
138 | #define S3C2412_CLKDIVN_PDIVN (1<<2) | 138 | #define S3C2412_CLKDIVN_PDIVN (1<<2) |
139 | #define S3C2412_CLKDIVN_HDIVN_MASK (3<<0) | 139 | #define S3C2412_CLKDIVN_HDIVN_MASK (3<<0) |
140 | #define S3C2421_CLKDIVN_ARMDIVN (1<<3) | 140 | #define S3C2421_CLKDIVN_ARMDIVN (1<<3) |
141 | #define S3C2412_CLKDIVN_DVSEN (1<<4) | ||
142 | #define S3C2412_CLKDIVN_HALFHCLK (1<<5) | ||
141 | #define S3C2412_CLKDIVN_USB48DIV (1<<6) | 143 | #define S3C2412_CLKDIVN_USB48DIV (1<<6) |
142 | #define S3C2412_CLKDIVN_UARTDIV_MASK (15<<8) | 144 | #define S3C2412_CLKDIVN_UARTDIV_MASK (15<<8) |
143 | #define S3C2412_CLKDIVN_UARTDIV_SHIFT (8) | 145 | #define S3C2412_CLKDIVN_UARTDIV_SHIFT (8) |
diff --git a/include/asm-arm/arch-s3c2410/regs-dsc.h b/include/asm-arm/arch-s3c2410/regs-dsc.h index c0748511edbc..1235df70f34e 100644 --- a/include/asm-arm/arch-s3c2410/regs-dsc.h +++ b/include/asm-arm/arch-s3c2410/regs-dsc.h | |||
@@ -19,7 +19,7 @@ | |||
19 | #define S3C2412_DSC1 S3C2410_GPIOREG(0xe0) | 19 | #define S3C2412_DSC1 S3C2410_GPIOREG(0xe0) |
20 | #endif | 20 | #endif |
21 | 21 | ||
22 | #if defined(CONFIG_CPU_S3C2440) | 22 | #if defined(CONFIG_CPU_S3C244X) |
23 | 23 | ||
24 | #define S3C2440_DSC0 S3C2410_GPIOREG(0xc4) | 24 | #define S3C2440_DSC0 S3C2410_GPIOREG(0xc4) |
25 | #define S3C2440_DSC1 S3C2410_GPIOREG(0xc8) | 25 | #define S3C2440_DSC1 S3C2410_GPIOREG(0xc8) |
diff --git a/include/asm-arm/arch-s3c2410/regs-gpio.h b/include/asm-arm/arch-s3c2410/regs-gpio.h index b693158b2d3c..0ad75d716ded 100644 --- a/include/asm-arm/arch-s3c2410/regs-gpio.h +++ b/include/asm-arm/arch-s3c2410/regs-gpio.h | |||
@@ -1133,12 +1133,16 @@ | |||
1133 | #define S3C2412_GPBSLPCON S3C2410_GPIOREG(0x1C) | 1133 | #define S3C2412_GPBSLPCON S3C2410_GPIOREG(0x1C) |
1134 | #define S3C2412_GPCSLPCON S3C2410_GPIOREG(0x2C) | 1134 | #define S3C2412_GPCSLPCON S3C2410_GPIOREG(0x2C) |
1135 | #define S3C2412_GPDSLPCON S3C2410_GPIOREG(0x3C) | 1135 | #define S3C2412_GPDSLPCON S3C2410_GPIOREG(0x3C) |
1136 | #define S3C2412_GPESLPCON S3C2410_GPIOREG(0x4C) | ||
1137 | #define S3C2412_GPFSLPCON S3C2410_GPIOREG(0x5C) | 1136 | #define S3C2412_GPFSLPCON S3C2410_GPIOREG(0x5C) |
1138 | #define S3C2412_GPGSLPCON S3C2410_GPIOREG(0x6C) | 1137 | #define S3C2412_GPGSLPCON S3C2410_GPIOREG(0x6C) |
1139 | #define S3C2412_GPHSLPCON S3C2410_GPIOREG(0x7C) | 1138 | #define S3C2412_GPHSLPCON S3C2410_GPIOREG(0x7C) |
1140 | 1139 | ||
1141 | /* definitions for each pin bit */ | 1140 | /* definitions for each pin bit */ |
1141 | #define S3C2412_GPIO_SLPCON_LOW ( 0x00 ) | ||
1142 | #define S3C2412_GPIO_SLPCON_HIGH ( 0x01 ) | ||
1143 | #define S3C2412_GPIO_SLPCON_IN ( 0x02 ) | ||
1144 | #define S3C2412_GPIO_SLPCON_PULL ( 0x03 ) | ||
1145 | |||
1142 | #define S3C2412_SLPCON_LOW(x) ( 0x00 << ((x) * 2)) | 1146 | #define S3C2412_SLPCON_LOW(x) ( 0x00 << ((x) * 2)) |
1143 | #define S3C2412_SLPCON_HIGH(x) ( 0x01 << ((x) * 2)) | 1147 | #define S3C2412_SLPCON_HIGH(x) ( 0x01 << ((x) * 2)) |
1144 | #define S3C2412_SLPCON_IN(x) ( 0x02 << ((x) * 2)) | 1148 | #define S3C2412_SLPCON_IN(x) ( 0x02 << ((x) * 2)) |
diff --git a/include/asm-arm/arch-s3c2410/regs-lcd.h b/include/asm-arm/arch-s3c2410/regs-lcd.h index 76fe5f693426..bd854845697f 100644 --- a/include/asm-arm/arch-s3c2410/regs-lcd.h +++ b/include/asm-arm/arch-s3c2410/regs-lcd.h | |||
@@ -147,7 +147,16 @@ | |||
147 | 147 | ||
148 | #define S3C2412_FRCPAT(x) S3C2410_LCDREG(0xB4 + ((x)*4)) | 148 | #define S3C2412_FRCPAT(x) S3C2410_LCDREG(0xB4 + ((x)*4)) |
149 | 149 | ||
150 | #endif /* ___ASM_ARCH_REGS_LCD_H */ | 150 | /* general registers */ |
151 | |||
152 | /* base of the LCD registers, where INTPND, INTSRC and then INTMSK | ||
153 | * are available. */ | ||
151 | 154 | ||
155 | #define S3C2410_LCDINTBASE S3C2410_LCDREG(0x54) | ||
156 | #define S3C2412_LCDINTBASE S3C2410_LCDREG(0x24) | ||
152 | 157 | ||
158 | #define S3C24XX_LCDINTPND (0x00) | ||
159 | #define S3C24XX_LCDSRCPND (0x04) | ||
160 | #define S3C24XX_LCDINTMSK (0x08) | ||
153 | 161 | ||
162 | #endif /* ___ASM_ARCH_REGS_LCD_H */ | ||
diff --git a/include/asm-arm/arch-s3c2410/regs-mem.h b/include/asm-arm/arch-s3c2410/regs-mem.h index e4d82341f7ba..312ff93b63c6 100644 --- a/include/asm-arm/arch-s3c2410/regs-mem.h +++ b/include/asm-arm/arch-s3c2410/regs-mem.h | |||
@@ -98,16 +98,19 @@ | |||
98 | #define S3C2410_BANKCON_Tacp3 (0x1 << 2) | 98 | #define S3C2410_BANKCON_Tacp3 (0x1 << 2) |
99 | #define S3C2410_BANKCON_Tacp4 (0x2 << 2) | 99 | #define S3C2410_BANKCON_Tacp4 (0x2 << 2) |
100 | #define S3C2410_BANKCON_Tacp6 (0x3 << 2) | 100 | #define S3C2410_BANKCON_Tacp6 (0x3 << 2) |
101 | #define S3C2410_BANKCON_Tacp_SHIFT (2) | ||
101 | 102 | ||
102 | #define S3C2410_BANKCON_Tcah0 (0x0 << 4) | 103 | #define S3C2410_BANKCON_Tcah0 (0x0 << 4) |
103 | #define S3C2410_BANKCON_Tcah1 (0x1 << 4) | 104 | #define S3C2410_BANKCON_Tcah1 (0x1 << 4) |
104 | #define S3C2410_BANKCON_Tcah2 (0x2 << 4) | 105 | #define S3C2410_BANKCON_Tcah2 (0x2 << 4) |
105 | #define S3C2410_BANKCON_Tcah4 (0x3 << 4) | 106 | #define S3C2410_BANKCON_Tcah4 (0x3 << 4) |
107 | #define S3C2410_BANKCON_Tcah_SHIFT (4) | ||
106 | 108 | ||
107 | #define S3C2410_BANKCON_Tcoh0 (0x0 << 6) | 109 | #define S3C2410_BANKCON_Tcoh0 (0x0 << 6) |
108 | #define S3C2410_BANKCON_Tcoh1 (0x1 << 6) | 110 | #define S3C2410_BANKCON_Tcoh1 (0x1 << 6) |
109 | #define S3C2410_BANKCON_Tcoh2 (0x2 << 6) | 111 | #define S3C2410_BANKCON_Tcoh2 (0x2 << 6) |
110 | #define S3C2410_BANKCON_Tcoh4 (0x3 << 6) | 112 | #define S3C2410_BANKCON_Tcoh4 (0x3 << 6) |
113 | #define S3C2410_BANKCON_Tcoh_SHIFT (6) | ||
111 | 114 | ||
112 | #define S3C2410_BANKCON_Tacc1 (0x0 << 8) | 115 | #define S3C2410_BANKCON_Tacc1 (0x0 << 8) |
113 | #define S3C2410_BANKCON_Tacc2 (0x1 << 8) | 116 | #define S3C2410_BANKCON_Tacc2 (0x1 << 8) |
@@ -117,16 +120,19 @@ | |||
117 | #define S3C2410_BANKCON_Tacc8 (0x5 << 8) | 120 | #define S3C2410_BANKCON_Tacc8 (0x5 << 8) |
118 | #define S3C2410_BANKCON_Tacc10 (0x6 << 8) | 121 | #define S3C2410_BANKCON_Tacc10 (0x6 << 8) |
119 | #define S3C2410_BANKCON_Tacc14 (0x7 << 8) | 122 | #define S3C2410_BANKCON_Tacc14 (0x7 << 8) |
123 | #define S3C2410_BANKCON_Tacc_SHIFT (8) | ||
120 | 124 | ||
121 | #define S3C2410_BANKCON_Tcos0 (0x0 << 11) | 125 | #define S3C2410_BANKCON_Tcos0 (0x0 << 11) |
122 | #define S3C2410_BANKCON_Tcos1 (0x1 << 11) | 126 | #define S3C2410_BANKCON_Tcos1 (0x1 << 11) |
123 | #define S3C2410_BANKCON_Tcos2 (0x2 << 11) | 127 | #define S3C2410_BANKCON_Tcos2 (0x2 << 11) |
124 | #define S3C2410_BANKCON_Tcos4 (0x3 << 11) | 128 | #define S3C2410_BANKCON_Tcos4 (0x3 << 11) |
129 | #define S3C2410_BANKCON_Tcos_SHIFT (11) | ||
125 | 130 | ||
126 | #define S3C2410_BANKCON_Tacs0 (0x0 << 13) | 131 | #define S3C2410_BANKCON_Tacs0 (0x0 << 13) |
127 | #define S3C2410_BANKCON_Tacs1 (0x1 << 13) | 132 | #define S3C2410_BANKCON_Tacs1 (0x1 << 13) |
128 | #define S3C2410_BANKCON_Tacs2 (0x2 << 13) | 133 | #define S3C2410_BANKCON_Tacs2 (0x2 << 13) |
129 | #define S3C2410_BANKCON_Tacs4 (0x3 << 13) | 134 | #define S3C2410_BANKCON_Tacs4 (0x3 << 13) |
135 | #define S3C2410_BANKCON_Tacs_SHIFT (13) | ||
130 | 136 | ||
131 | #define S3C2410_BANKCON_SRAM (0x0 << 15) | 137 | #define S3C2410_BANKCON_SRAM (0x0 << 15) |
132 | #define S3C2400_BANKCON_EDODRAM (0x2 << 15) | 138 | #define S3C2400_BANKCON_EDODRAM (0x2 << 15) |
diff --git a/include/asm-arm/arch-s3c2410/regs-power.h b/include/asm-arm/arch-s3c2410/regs-power.h index f79987be55e8..13d13b7cfe98 100644 --- a/include/asm-arm/arch-s3c2410/regs-power.h +++ b/include/asm-arm/arch-s3c2410/regs-power.h | |||
@@ -23,7 +23,8 @@ | |||
23 | #define S3C2412_INFORM2 S3C24XX_PWRREG(0x78) | 23 | #define S3C2412_INFORM2 S3C24XX_PWRREG(0x78) |
24 | #define S3C2412_INFORM3 S3C24XX_PWRREG(0x7C) | 24 | #define S3C2412_INFORM3 S3C24XX_PWRREG(0x7C) |
25 | 25 | ||
26 | #define S3C2412_PWRCFG_BATF_IGNORE (0<<0) | 26 | #define S3C2412_PWRCFG_BATF_IRQ (1<<0) |
27 | #define S3C2412_PWRCFG_BATF_IGNORE (2<<0) | ||
27 | #define S3C2412_PWRCFG_BATF_SLEEP (3<<0) | 28 | #define S3C2412_PWRCFG_BATF_SLEEP (3<<0) |
28 | #define S3C2412_PWRCFG_BATF_MASK (3<<0) | 29 | #define S3C2412_PWRCFG_BATF_MASK (3<<0) |
29 | 30 | ||
diff --git a/include/asm-arm/arch-s3c2410/spi-gpio.h b/include/asm-arm/arch-s3c2410/spi-gpio.h index c1e4db7c9710..73803731142a 100644 --- a/include/asm-arm/arch-s3c2410/spi-gpio.h +++ b/include/asm-arm/arch-s3c2410/spi-gpio.h | |||
@@ -13,16 +13,12 @@ | |||
13 | #ifndef __ASM_ARCH_SPIGPIO_H | 13 | #ifndef __ASM_ARCH_SPIGPIO_H |
14 | #define __ASM_ARCH_SPIGPIO_H __FILE__ | 14 | #define __ASM_ARCH_SPIGPIO_H __FILE__ |
15 | 15 | ||
16 | struct s3c2410_spigpio_info; | ||
17 | struct spi_board_info; | ||
18 | |||
19 | struct s3c2410_spigpio_info { | 16 | struct s3c2410_spigpio_info { |
20 | unsigned long pin_clk; | 17 | unsigned long pin_clk; |
21 | unsigned long pin_mosi; | 18 | unsigned long pin_mosi; |
22 | unsigned long pin_miso; | 19 | unsigned long pin_miso; |
23 | 20 | ||
24 | unsigned long board_size; | 21 | int bus_num; |
25 | struct spi_board_info *board_info; | ||
26 | 22 | ||
27 | void (*chip_select)(struct s3c2410_spigpio_info *spi, int cs); | 23 | void (*chip_select)(struct s3c2410_spigpio_info *spi, int cs); |
28 | }; | 24 | }; |
diff --git a/include/asm-arm/arch-s3c2410/spi.h b/include/asm-arm/arch-s3c2410/spi.h index 4029a1a1ab40..7ca0ed97a6d0 100644 --- a/include/asm-arm/arch-s3c2410/spi.h +++ b/include/asm-arm/arch-s3c2410/spi.h | |||
@@ -13,15 +13,9 @@ | |||
13 | #ifndef __ASM_ARCH_SPI_H | 13 | #ifndef __ASM_ARCH_SPI_H |
14 | #define __ASM_ARCH_SPI_H __FILE__ | 14 | #define __ASM_ARCH_SPI_H __FILE__ |
15 | 15 | ||
16 | struct s3c2410_spi_info; | ||
17 | struct spi_board_info; | ||
18 | |||
19 | struct s3c2410_spi_info { | 16 | struct s3c2410_spi_info { |
20 | unsigned long pin_cs; /* simple gpio cs */ | 17 | unsigned long pin_cs; /* simple gpio cs */ |
21 | 18 | ||
22 | unsigned long board_size; | ||
23 | struct spi_board_info *board_info; | ||
24 | |||
25 | void (*set_cs)(struct s3c2410_spi_info *spi, int cs, int pol); | 19 | void (*set_cs)(struct s3c2410_spi_info *spi, int cs, int pol); |
26 | }; | 20 | }; |
27 | 21 | ||
diff --git a/include/asm-arm/arch-s3c2410/system.h b/include/asm-arm/arch-s3c2410/system.h index 63891786dfa0..14de4e596f87 100644 --- a/include/asm-arm/arch-s3c2410/system.h +++ b/include/asm-arm/arch-s3c2410/system.h | |||
@@ -20,6 +20,9 @@ | |||
20 | #include <asm/plat-s3c/regs-watchdog.h> | 20 | #include <asm/plat-s3c/regs-watchdog.h> |
21 | #include <asm/arch/regs-clock.h> | 21 | #include <asm/arch/regs-clock.h> |
22 | 22 | ||
23 | #include <linux/clk.h> | ||
24 | #include <linux/err.h> | ||
25 | |||
23 | void (*s3c24xx_idle)(void); | 26 | void (*s3c24xx_idle)(void); |
24 | void (*s3c24xx_reset_hook)(void); | 27 | void (*s3c24xx_reset_hook)(void); |
25 | 28 | ||
@@ -59,6 +62,8 @@ static void arch_idle(void) | |||
59 | static void | 62 | static void |
60 | arch_reset(char mode) | 63 | arch_reset(char mode) |
61 | { | 64 | { |
65 | struct clk *wdtclk; | ||
66 | |||
62 | if (mode == 's') { | 67 | if (mode == 's') { |
63 | cpu_reset(0); | 68 | cpu_reset(0); |
64 | } | 69 | } |
@@ -70,19 +75,28 @@ arch_reset(char mode) | |||
70 | 75 | ||
71 | __raw_writel(0, S3C2410_WTCON); /* disable watchdog, to be safe */ | 76 | __raw_writel(0, S3C2410_WTCON); /* disable watchdog, to be safe */ |
72 | 77 | ||
78 | wdtclk = clk_get(NULL, "watchdog"); | ||
79 | if (!IS_ERR(wdtclk)) { | ||
80 | clk_enable(wdtclk); | ||
81 | } else | ||
82 | printk(KERN_WARNING "%s: warning: cannot get watchdog clock\n", __func__); | ||
83 | |||
73 | /* put initial values into count and data */ | 84 | /* put initial values into count and data */ |
74 | __raw_writel(0x100, S3C2410_WTCNT); | 85 | __raw_writel(0x80, S3C2410_WTCNT); |
75 | __raw_writel(0x100, S3C2410_WTDAT); | 86 | __raw_writel(0x80, S3C2410_WTDAT); |
76 | 87 | ||
77 | /* set the watchdog to go and reset... */ | 88 | /* set the watchdog to go and reset... */ |
78 | __raw_writel(S3C2410_WTCON_ENABLE|S3C2410_WTCON_DIV16|S3C2410_WTCON_RSTEN | | 89 | __raw_writel(S3C2410_WTCON_ENABLE|S3C2410_WTCON_DIV16|S3C2410_WTCON_RSTEN | |
79 | S3C2410_WTCON_PRESCALE(0x20), S3C2410_WTCON); | 90 | S3C2410_WTCON_PRESCALE(0x20), S3C2410_WTCON); |
80 | 91 | ||
81 | /* wait for reset to assert... */ | 92 | /* wait for reset to assert... */ |
82 | mdelay(5000); | 93 | mdelay(500); |
83 | 94 | ||
84 | printk(KERN_ERR "Watchdog reset failed to assert reset\n"); | 95 | printk(KERN_ERR "Watchdog reset failed to assert reset\n"); |
85 | 96 | ||
97 | /* delay to allow the serial port to show the message */ | ||
98 | mdelay(50); | ||
99 | |||
86 | /* we'll take a jump through zero as a poor second */ | 100 | /* we'll take a jump through zero as a poor second */ |
87 | cpu_reset(0); | 101 | cpu_reset(0); |
88 | } | 102 | } |
diff --git a/include/asm-arm/arch-versatile/irqs.h b/include/asm-arm/arch-versatile/irqs.h index 745aa841b31a..f7263b99403b 100644 --- a/include/asm-arm/arch-versatile/irqs.h +++ b/include/asm-arm/arch-versatile/irqs.h | |||
@@ -22,7 +22,7 @@ | |||
22 | #include <asm/arch/platform.h> | 22 | #include <asm/arch/platform.h> |
23 | 23 | ||
24 | /* | 24 | /* |
25 | * IRQ interrupts definitions are the same the INT definitions | 25 | * IRQ interrupts definitions are the same as the INT definitions |
26 | * held within platform.h | 26 | * held within platform.h |
27 | */ | 27 | */ |
28 | #define IRQ_VIC_START 0 | 28 | #define IRQ_VIC_START 0 |
@@ -94,7 +94,7 @@ | |||
94 | #define IRQMASK_VICSOURCE31 INTMASK_VICSOURCE31 | 94 | #define IRQMASK_VICSOURCE31 INTMASK_VICSOURCE31 |
95 | 95 | ||
96 | /* | 96 | /* |
97 | * FIQ interrupts definitions are the same the INT definitions. | 97 | * FIQ interrupts definitions are the same as the INT definitions. |
98 | */ | 98 | */ |
99 | #define FIQ_WDOGINT INT_WDOGINT | 99 | #define FIQ_WDOGINT INT_WDOGINT |
100 | #define FIQ_SOFTINT INT_SOFTINT | 100 | #define FIQ_SOFTINT INT_SOFTINT |
diff --git a/include/asm-arm/bitops.h b/include/asm-arm/bitops.h index 47a6b086eee2..5c60bfc1a84d 100644 --- a/include/asm-arm/bitops.h +++ b/include/asm-arm/bitops.h | |||
@@ -310,6 +310,8 @@ static inline int constant_fls(int x) | |||
310 | _find_first_zero_bit_le(p,sz) | 310 | _find_first_zero_bit_le(p,sz) |
311 | #define ext2_find_next_zero_bit(p,sz,off) \ | 311 | #define ext2_find_next_zero_bit(p,sz,off) \ |
312 | _find_next_zero_bit_le(p,sz,off) | 312 | _find_next_zero_bit_le(p,sz,off) |
313 | #define ext2_find_next_bit(p, sz, off) \ | ||
314 | _find_next_bit_le(p, sz, off) | ||
313 | 315 | ||
314 | /* | 316 | /* |
315 | * Minix is defined to use little-endian byte ordering. | 317 | * Minix is defined to use little-endian byte ordering. |
diff --git a/include/asm-arm/cacheflush.h b/include/asm-arm/cacheflush.h index 6c1c968b2987..759a97b56eed 100644 --- a/include/asm-arm/cacheflush.h +++ b/include/asm-arm/cacheflush.h | |||
@@ -94,6 +94,14 @@ | |||
94 | # endif | 94 | # endif |
95 | #endif | 95 | #endif |
96 | 96 | ||
97 | #if defined(CONFIG_CPU_FEROCEON) | ||
98 | # ifdef _CACHE | ||
99 | # define MULTI_CACHE 1 | ||
100 | # else | ||
101 | # define _CACHE feroceon | ||
102 | # endif | ||
103 | #endif | ||
104 | |||
97 | #if defined(CONFIG_CPU_V6) | 105 | #if defined(CONFIG_CPU_V6) |
98 | //# ifdef _CACHE | 106 | //# ifdef _CACHE |
99 | # define MULTI_CACHE 1 | 107 | # define MULTI_CACHE 1 |
diff --git a/include/asm-arm/elf.h b/include/asm-arm/elf.h index ec1c685562ce..4ca751627489 100644 --- a/include/asm-arm/elf.h +++ b/include/asm-arm/elf.h | |||
@@ -41,7 +41,6 @@ typedef struct user_fp elf_fpregset_t; | |||
41 | #endif | 41 | #endif |
42 | #define ELF_ARCH EM_ARM | 42 | #define ELF_ARCH EM_ARM |
43 | 43 | ||
44 | #ifdef __KERNEL__ | ||
45 | #ifndef __ASSEMBLY__ | 44 | #ifndef __ASSEMBLY__ |
46 | /* | 45 | /* |
47 | * This yields a string that ld.so will use to load implementation | 46 | * This yields a string that ld.so will use to load implementation |
@@ -115,5 +114,3 @@ extern char elf_platform[]; | |||
115 | } while (0) | 114 | } while (0) |
116 | 115 | ||
117 | #endif | 116 | #endif |
118 | |||
119 | #endif | ||
diff --git a/include/asm-arm/flat.h b/include/asm-arm/flat.h index 16f5375e57b8..9918aa46d9e5 100644 --- a/include/asm-arm/flat.h +++ b/include/asm-arm/flat.h | |||
@@ -11,8 +11,9 @@ | |||
11 | #define flat_argvp_envp_on_stack() 1 | 11 | #define flat_argvp_envp_on_stack() 1 |
12 | #define flat_old_ram_flag(flags) (flags) | 12 | #define flat_old_ram_flag(flags) (flags) |
13 | #define flat_reloc_valid(reloc, size) ((reloc) <= (size)) | 13 | #define flat_reloc_valid(reloc, size) ((reloc) <= (size)) |
14 | #define flat_get_addr_from_rp(rp, relval, flags) get_unaligned(rp) | 14 | #define flat_get_addr_from_rp(rp, relval, flags, persistent) get_unaligned(rp) |
15 | #define flat_put_addr_at_rp(rp, val, relval) put_unaligned(val,rp) | 15 | #define flat_put_addr_at_rp(rp, val, relval) put_unaligned(val,rp) |
16 | #define flat_get_relocate_addr(rel) (rel) | 16 | #define flat_get_relocate_addr(rel) (rel) |
17 | #define flat_set_persistent(relval, p) 0 | ||
17 | 18 | ||
18 | #endif /* __ARM_FLAT_H__ */ | 19 | #endif /* __ARM_FLAT_H__ */ |
diff --git a/include/asm-arm/fpstate.h b/include/asm-arm/fpstate.h index f31cda5a55ee..392eb5332323 100644 --- a/include/asm-arm/fpstate.h +++ b/include/asm-arm/fpstate.h | |||
@@ -17,14 +17,18 @@ | |||
17 | /* | 17 | /* |
18 | * VFP storage area has: | 18 | * VFP storage area has: |
19 | * - FPEXC, FPSCR, FPINST and FPINST2. | 19 | * - FPEXC, FPSCR, FPINST and FPINST2. |
20 | * - 16 double precision data registers | 20 | * - 16 or 32 double precision data registers |
21 | * - an implementation-dependant word of state for FLDMX/FSTMX | 21 | * - an implementation-dependant word of state for FLDMX/FSTMX (pre-ARMv6) |
22 | * | 22 | * |
23 | * FPEXC will always be non-zero once the VFP has been used in this process. | 23 | * FPEXC will always be non-zero once the VFP has been used in this process. |
24 | */ | 24 | */ |
25 | 25 | ||
26 | struct vfp_hard_struct { | 26 | struct vfp_hard_struct { |
27 | #ifdef CONFIG_VFPv3 | ||
28 | __u64 fpregs[32]; | ||
29 | #else | ||
27 | __u64 fpregs[16]; | 30 | __u64 fpregs[16]; |
31 | #endif | ||
28 | #if __LINUX_ARM_ARCH__ < 6 | 32 | #if __LINUX_ARM_ARCH__ < 6 |
29 | __u32 fpmx_state; | 33 | __u32 fpmx_state; |
30 | #endif | 34 | #endif |
@@ -35,6 +39,7 @@ struct vfp_hard_struct { | |||
35 | */ | 39 | */ |
36 | __u32 fpinst; | 40 | __u32 fpinst; |
37 | __u32 fpinst2; | 41 | __u32 fpinst2; |
42 | |||
38 | #ifdef CONFIG_SMP | 43 | #ifdef CONFIG_SMP |
39 | __u32 cpu; | 44 | __u32 cpu; |
40 | #endif | 45 | #endif |
diff --git a/include/asm-arm/hardware/arm_twd.h b/include/asm-arm/hardware/arm_twd.h index 131d5b40e072..e521b70713c8 100644 --- a/include/asm-arm/hardware/arm_twd.h +++ b/include/asm-arm/hardware/arm_twd.h | |||
@@ -1,7 +1,7 @@ | |||
1 | #ifndef __ASM_HARDWARE_TWD_H | 1 | #ifndef __ASM_HARDWARE_TWD_H |
2 | #define __ASM_HARDWARE_TWD_H | 2 | #define __ASM_HARDWARE_TWD_H |
3 | 3 | ||
4 | #define TWD_TIMER_LOAD 0x00 | 4 | #define TWD_TIMER_LOAD 0x00 |
5 | #define TWD_TIMER_COUNTER 0x04 | 5 | #define TWD_TIMER_COUNTER 0x04 |
6 | #define TWD_TIMER_CONTROL 0x08 | 6 | #define TWD_TIMER_CONTROL 0x08 |
7 | #define TWD_TIMER_INTSTAT 0x0C | 7 | #define TWD_TIMER_INTSTAT 0x0C |
@@ -13,4 +13,9 @@ | |||
13 | #define TWD_WDOG_RESETSTAT 0x30 | 13 | #define TWD_WDOG_RESETSTAT 0x30 |
14 | #define TWD_WDOG_DISABLE 0x34 | 14 | #define TWD_WDOG_DISABLE 0x34 |
15 | 15 | ||
16 | #define TWD_TIMER_CONTROL_ENABLE (1 << 0) | ||
17 | #define TWD_TIMER_CONTROL_ONESHOT (0 << 1) | ||
18 | #define TWD_TIMER_CONTROL_PERIODIC (1 << 1) | ||
19 | #define TWD_TIMER_CONTROL_IT_ENABLE (1 << 2) | ||
20 | |||
16 | #endif | 21 | #endif |
diff --git a/include/asm-arm/hardware/iop3xx-adma.h b/include/asm-arm/hardware/iop3xx-adma.h index 10834b54f681..5c529e6a5e3b 100644 --- a/include/asm-arm/hardware/iop3xx-adma.h +++ b/include/asm-arm/hardware/iop3xx-adma.h | |||
@@ -414,7 +414,7 @@ static inline void iop3xx_aau_desc_set_src_addr(struct iop3xx_desc_aau *hw_desc, | |||
414 | } | 414 | } |
415 | 415 | ||
416 | static inline void | 416 | static inline void |
417 | iop_desc_init_memcpy(struct iop_adma_desc_slot *desc, int int_en) | 417 | iop_desc_init_memcpy(struct iop_adma_desc_slot *desc, unsigned long flags) |
418 | { | 418 | { |
419 | struct iop3xx_desc_dma *hw_desc = desc->hw_desc; | 419 | struct iop3xx_desc_dma *hw_desc = desc->hw_desc; |
420 | union { | 420 | union { |
@@ -425,14 +425,14 @@ iop_desc_init_memcpy(struct iop_adma_desc_slot *desc, int int_en) | |||
425 | u_desc_ctrl.value = 0; | 425 | u_desc_ctrl.value = 0; |
426 | u_desc_ctrl.field.mem_to_mem_en = 1; | 426 | u_desc_ctrl.field.mem_to_mem_en = 1; |
427 | u_desc_ctrl.field.pci_transaction = 0xe; /* memory read block */ | 427 | u_desc_ctrl.field.pci_transaction = 0xe; /* memory read block */ |
428 | u_desc_ctrl.field.int_en = int_en; | 428 | u_desc_ctrl.field.int_en = flags & DMA_PREP_INTERRUPT; |
429 | hw_desc->desc_ctrl = u_desc_ctrl.value; | 429 | hw_desc->desc_ctrl = u_desc_ctrl.value; |
430 | hw_desc->upper_pci_src_addr = 0; | 430 | hw_desc->upper_pci_src_addr = 0; |
431 | hw_desc->crc_addr = 0; | 431 | hw_desc->crc_addr = 0; |
432 | } | 432 | } |
433 | 433 | ||
434 | static inline void | 434 | static inline void |
435 | iop_desc_init_memset(struct iop_adma_desc_slot *desc, int int_en) | 435 | iop_desc_init_memset(struct iop_adma_desc_slot *desc, unsigned long flags) |
436 | { | 436 | { |
437 | struct iop3xx_desc_aau *hw_desc = desc->hw_desc; | 437 | struct iop3xx_desc_aau *hw_desc = desc->hw_desc; |
438 | union { | 438 | union { |
@@ -443,12 +443,13 @@ iop_desc_init_memset(struct iop_adma_desc_slot *desc, int int_en) | |||
443 | u_desc_ctrl.value = 0; | 443 | u_desc_ctrl.value = 0; |
444 | u_desc_ctrl.field.blk1_cmd_ctrl = 0x2; /* memory block fill */ | 444 | u_desc_ctrl.field.blk1_cmd_ctrl = 0x2; /* memory block fill */ |
445 | u_desc_ctrl.field.dest_write_en = 1; | 445 | u_desc_ctrl.field.dest_write_en = 1; |
446 | u_desc_ctrl.field.int_en = int_en; | 446 | u_desc_ctrl.field.int_en = flags & DMA_PREP_INTERRUPT; |
447 | hw_desc->desc_ctrl = u_desc_ctrl.value; | 447 | hw_desc->desc_ctrl = u_desc_ctrl.value; |
448 | } | 448 | } |
449 | 449 | ||
450 | static inline u32 | 450 | static inline u32 |
451 | iop3xx_desc_init_xor(struct iop3xx_desc_aau *hw_desc, int src_cnt, int int_en) | 451 | iop3xx_desc_init_xor(struct iop3xx_desc_aau *hw_desc, int src_cnt, |
452 | unsigned long flags) | ||
452 | { | 453 | { |
453 | int i, shift; | 454 | int i, shift; |
454 | u32 edcr; | 455 | u32 edcr; |
@@ -509,21 +510,23 @@ iop3xx_desc_init_xor(struct iop3xx_desc_aau *hw_desc, int src_cnt, int int_en) | |||
509 | 510 | ||
510 | u_desc_ctrl.field.dest_write_en = 1; | 511 | u_desc_ctrl.field.dest_write_en = 1; |
511 | u_desc_ctrl.field.blk1_cmd_ctrl = 0x7; /* direct fill */ | 512 | u_desc_ctrl.field.blk1_cmd_ctrl = 0x7; /* direct fill */ |
512 | u_desc_ctrl.field.int_en = int_en; | 513 | u_desc_ctrl.field.int_en = flags & DMA_PREP_INTERRUPT; |
513 | hw_desc->desc_ctrl = u_desc_ctrl.value; | 514 | hw_desc->desc_ctrl = u_desc_ctrl.value; |
514 | 515 | ||
515 | return u_desc_ctrl.value; | 516 | return u_desc_ctrl.value; |
516 | } | 517 | } |
517 | 518 | ||
518 | static inline void | 519 | static inline void |
519 | iop_desc_init_xor(struct iop_adma_desc_slot *desc, int src_cnt, int int_en) | 520 | iop_desc_init_xor(struct iop_adma_desc_slot *desc, int src_cnt, |
521 | unsigned long flags) | ||
520 | { | 522 | { |
521 | iop3xx_desc_init_xor(desc->hw_desc, src_cnt, int_en); | 523 | iop3xx_desc_init_xor(desc->hw_desc, src_cnt, flags); |
522 | } | 524 | } |
523 | 525 | ||
524 | /* return the number of operations */ | 526 | /* return the number of operations */ |
525 | static inline int | 527 | static inline int |
526 | iop_desc_init_zero_sum(struct iop_adma_desc_slot *desc, int src_cnt, int int_en) | 528 | iop_desc_init_zero_sum(struct iop_adma_desc_slot *desc, int src_cnt, |
529 | unsigned long flags) | ||
527 | { | 530 | { |
528 | int slot_cnt = desc->slot_cnt, slots_per_op = desc->slots_per_op; | 531 | int slot_cnt = desc->slot_cnt, slots_per_op = desc->slots_per_op; |
529 | struct iop3xx_desc_aau *hw_desc, *prev_hw_desc, *iter; | 532 | struct iop3xx_desc_aau *hw_desc, *prev_hw_desc, *iter; |
@@ -538,10 +541,10 @@ iop_desc_init_zero_sum(struct iop_adma_desc_slot *desc, int src_cnt, int int_en) | |||
538 | for (i = 0, j = 0; (slot_cnt -= slots_per_op) >= 0; | 541 | for (i = 0, j = 0; (slot_cnt -= slots_per_op) >= 0; |
539 | i += slots_per_op, j++) { | 542 | i += slots_per_op, j++) { |
540 | iter = iop_hw_desc_slot_idx(hw_desc, i); | 543 | iter = iop_hw_desc_slot_idx(hw_desc, i); |
541 | u_desc_ctrl.value = iop3xx_desc_init_xor(iter, src_cnt, int_en); | 544 | u_desc_ctrl.value = iop3xx_desc_init_xor(iter, src_cnt, flags); |
542 | u_desc_ctrl.field.dest_write_en = 0; | 545 | u_desc_ctrl.field.dest_write_en = 0; |
543 | u_desc_ctrl.field.zero_result_en = 1; | 546 | u_desc_ctrl.field.zero_result_en = 1; |
544 | u_desc_ctrl.field.int_en = int_en; | 547 | u_desc_ctrl.field.int_en = flags & DMA_PREP_INTERRUPT; |
545 | iter->desc_ctrl = u_desc_ctrl.value; | 548 | iter->desc_ctrl = u_desc_ctrl.value; |
546 | 549 | ||
547 | /* for the subsequent descriptors preserve the store queue | 550 | /* for the subsequent descriptors preserve the store queue |
@@ -559,7 +562,8 @@ iop_desc_init_zero_sum(struct iop_adma_desc_slot *desc, int src_cnt, int int_en) | |||
559 | } | 562 | } |
560 | 563 | ||
561 | static inline void | 564 | static inline void |
562 | iop_desc_init_null_xor(struct iop_adma_desc_slot *desc, int src_cnt, int int_en) | 565 | iop_desc_init_null_xor(struct iop_adma_desc_slot *desc, int src_cnt, |
566 | unsigned long flags) | ||
563 | { | 567 | { |
564 | struct iop3xx_desc_aau *hw_desc = desc->hw_desc; | 568 | struct iop3xx_desc_aau *hw_desc = desc->hw_desc; |
565 | union { | 569 | union { |
@@ -591,7 +595,7 @@ iop_desc_init_null_xor(struct iop_adma_desc_slot *desc, int src_cnt, int int_en) | |||
591 | } | 595 | } |
592 | 596 | ||
593 | u_desc_ctrl.field.dest_write_en = 0; | 597 | u_desc_ctrl.field.dest_write_en = 0; |
594 | u_desc_ctrl.field.int_en = int_en; | 598 | u_desc_ctrl.field.int_en = flags & DMA_PREP_INTERRUPT; |
595 | hw_desc->desc_ctrl = u_desc_ctrl.value; | 599 | hw_desc->desc_ctrl = u_desc_ctrl.value; |
596 | } | 600 | } |
597 | 601 | ||
diff --git a/include/asm-arm/hardware/iop3xx.h b/include/asm-arm/hardware/iop3xx.h index fb90b421f31c..ede377ec9147 100644 --- a/include/asm-arm/hardware/iop3xx.h +++ b/include/asm-arm/hardware/iop3xx.h | |||
@@ -231,7 +231,7 @@ extern int init_atu; | |||
231 | IOP3XX_PCI_IO_WINDOW_SIZE - 1) | 231 | IOP3XX_PCI_IO_WINDOW_SIZE - 1) |
232 | #define IOP3XX_PCI_UPPER_IO_VA (IOP3XX_PCI_LOWER_IO_VA +\ | 232 | #define IOP3XX_PCI_UPPER_IO_VA (IOP3XX_PCI_LOWER_IO_VA +\ |
233 | IOP3XX_PCI_IO_WINDOW_SIZE - 1) | 233 | IOP3XX_PCI_IO_WINDOW_SIZE - 1) |
234 | #define IOP3XX_PCI_IO_PHYS_TO_VIRT(addr) (((u32) addr -\ | 234 | #define IOP3XX_PCI_IO_PHYS_TO_VIRT(addr) (((u32) (addr) -\ |
235 | IOP3XX_PCI_LOWER_IO_PA) +\ | 235 | IOP3XX_PCI_LOWER_IO_PA) +\ |
236 | IOP3XX_PCI_LOWER_IO_VA) | 236 | IOP3XX_PCI_LOWER_IO_VA) |
237 | 237 | ||
diff --git a/include/asm-arm/hardware/it8152.h b/include/asm-arm/hardware/it8152.h index aaebb61aca48..74b5fff7f575 100644 --- a/include/asm-arm/hardware/it8152.h +++ b/include/asm-arm/hardware/it8152.h | |||
@@ -42,7 +42,7 @@ extern unsigned long it8152_base_address; | |||
42 | #define IT8152_GPIO_GPDR __REG_IT8152(0x3f00500) | 42 | #define IT8152_GPIO_GPDR __REG_IT8152(0x3f00500) |
43 | 43 | ||
44 | /* | 44 | /* |
45 | Interrup contoler per register summary: | 45 | Interrupt controller per register summary: |
46 | --------------------------------------- | 46 | --------------------------------------- |
47 | LCDNIRR: | 47 | LCDNIRR: |
48 | IT8152_LD_IRQ(8) PCICLK stop | 48 | IT8152_LD_IRQ(8) PCICLK stop |
diff --git a/include/asm-arm/kexec.h b/include/asm-arm/kexec.h index 46dcc4d0b9bd..1ee17b6951d0 100644 --- a/include/asm-arm/kexec.h +++ b/include/asm-arm/kexec.h | |||
@@ -16,6 +16,9 @@ | |||
16 | 16 | ||
17 | #define KEXEC_BOOT_PARAMS_SIZE 1536 | 17 | #define KEXEC_BOOT_PARAMS_SIZE 1536 |
18 | 18 | ||
19 | #define KEXEC_ARM_ATAGS_OFFSET 0x1000 | ||
20 | #define KEXEC_ARM_ZIMAGE_OFFSET 0x8000 | ||
21 | |||
19 | #ifndef __ASSEMBLY__ | 22 | #ifndef __ASSEMBLY__ |
20 | 23 | ||
21 | struct kimage; | 24 | struct kimage; |
diff --git a/include/asm-arm/kprobes.h b/include/asm-arm/kprobes.h new file mode 100644 index 000000000000..4e7bd32288ae --- /dev/null +++ b/include/asm-arm/kprobes.h | |||
@@ -0,0 +1,79 @@ | |||
1 | /* | ||
2 | * include/asm-arm/kprobes.h | ||
3 | * | ||
4 | * Copyright (C) 2006, 2007 Motorola Inc. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
13 | * General Public License for more details. | ||
14 | */ | ||
15 | |||
16 | #ifndef _ARM_KPROBES_H | ||
17 | #define _ARM_KPROBES_H | ||
18 | |||
19 | #include <linux/types.h> | ||
20 | #include <linux/ptrace.h> | ||
21 | #include <linux/percpu.h> | ||
22 | |||
23 | #define ARCH_SUPPORTS_KRETPROBES | ||
24 | #define __ARCH_WANT_KPROBES_INSN_SLOT | ||
25 | #define MAX_INSN_SIZE 2 | ||
26 | #define MAX_STACK_SIZE 64 /* 32 would probably be OK */ | ||
27 | |||
28 | /* | ||
29 | * This undefined instruction must be unique and | ||
30 | * reserved solely for kprobes' use. | ||
31 | */ | ||
32 | #define KPROBE_BREAKPOINT_INSTRUCTION 0xe7f001f8 | ||
33 | |||
34 | #define regs_return_value(regs) ((regs)->ARM_r0) | ||
35 | #define flush_insn_slot(p) do { } while (0) | ||
36 | #define kretprobe_blacklist_size 0 | ||
37 | |||
38 | typedef u32 kprobe_opcode_t; | ||
39 | |||
40 | struct kprobe; | ||
41 | typedef void (kprobe_insn_handler_t)(struct kprobe *, struct pt_regs *); | ||
42 | |||
43 | /* Architecture specific copy of original instruction. */ | ||
44 | struct arch_specific_insn { | ||
45 | kprobe_opcode_t *insn; | ||
46 | kprobe_insn_handler_t *insn_handler; | ||
47 | }; | ||
48 | |||
49 | struct prev_kprobe { | ||
50 | struct kprobe *kp; | ||
51 | unsigned int status; | ||
52 | }; | ||
53 | |||
54 | /* per-cpu kprobe control block */ | ||
55 | struct kprobe_ctlblk { | ||
56 | unsigned int kprobe_status; | ||
57 | struct prev_kprobe prev_kprobe; | ||
58 | struct pt_regs jprobe_saved_regs; | ||
59 | char jprobes_stack[MAX_STACK_SIZE]; | ||
60 | }; | ||
61 | |||
62 | void arch_remove_kprobe(struct kprobe *); | ||
63 | |||
64 | int kprobe_trap_handler(struct pt_regs *regs, unsigned int instr); | ||
65 | int kprobe_fault_handler(struct pt_regs *regs, unsigned int fsr); | ||
66 | int kprobe_exceptions_notify(struct notifier_block *self, | ||
67 | unsigned long val, void *data); | ||
68 | |||
69 | enum kprobe_insn { | ||
70 | INSN_REJECTED, | ||
71 | INSN_GOOD, | ||
72 | INSN_GOOD_NO_SLOT | ||
73 | }; | ||
74 | |||
75 | enum kprobe_insn arm_kprobe_decode_insn(kprobe_opcode_t, | ||
76 | struct arch_specific_insn *); | ||
77 | void __init arm_kprobe_decode_init(void); | ||
78 | |||
79 | #endif /* _ARM_KPROBES_H */ | ||
diff --git a/include/asm-arm/mach/udc_pxa2xx.h b/include/asm-arm/mach/udc_pxa2xx.h index ff0a95715a07..f9f3606986c2 100644 --- a/include/asm-arm/mach/udc_pxa2xx.h +++ b/include/asm-arm/mach/udc_pxa2xx.h | |||
@@ -16,10 +16,12 @@ struct pxa2xx_udc_mach_info { | |||
16 | #define PXA2XX_UDC_CMD_DISCONNECT 1 /* so host won't see us */ | 16 | #define PXA2XX_UDC_CMD_DISCONNECT 1 /* so host won't see us */ |
17 | 17 | ||
18 | /* Boards following the design guidelines in the developer's manual, | 18 | /* Boards following the design guidelines in the developer's manual, |
19 | * with on-chip GPIOs not Lubbock's wierd hardware, can have a sane | 19 | * with on-chip GPIOs not Lubbock's weird hardware, can have a sane |
20 | * VBUS IRQ and omit the methods above. Store the GPIO number | 20 | * VBUS IRQ and omit the methods above. Store the GPIO number |
21 | * here; for GPIO 0, also mask in one of the pxa_gpio_mode() bits. | 21 | * here; for GPIO 0, also mask in one of the pxa_gpio_mode() bits. |
22 | * Note that sometimes the signals go through inverters... | ||
22 | */ | 23 | */ |
24 | bool gpio_vbus_inverted; | ||
23 | u16 gpio_vbus; /* high == vbus present */ | 25 | u16 gpio_vbus; /* high == vbus present */ |
24 | u16 gpio_pullup; /* high == pullup activated */ | 26 | u16 gpio_pullup; /* high == pullup activated */ |
25 | }; | 27 | }; |
diff --git a/include/asm-arm/page.h b/include/asm-arm/page.h index 7e85db77d99b..31ff12f4ffb7 100644 --- a/include/asm-arm/page.h +++ b/include/asm-arm/page.h | |||
@@ -10,9 +10,6 @@ | |||
10 | #ifndef _ASMARM_PAGE_H | 10 | #ifndef _ASMARM_PAGE_H |
11 | #define _ASMARM_PAGE_H | 11 | #define _ASMARM_PAGE_H |
12 | 12 | ||
13 | |||
14 | #ifdef __KERNEL__ | ||
15 | |||
16 | /* PAGE_SHIFT determines the page size */ | 13 | /* PAGE_SHIFT determines the page size */ |
17 | #define PAGE_SHIFT 12 | 14 | #define PAGE_SHIFT 12 |
18 | #define PAGE_SIZE (1UL << PAGE_SHIFT) | 15 | #define PAGE_SIZE (1UL << PAGE_SHIFT) |
@@ -192,6 +189,4 @@ typedef unsigned long pgprot_t; | |||
192 | 189 | ||
193 | #include <asm-generic/page.h> | 190 | #include <asm-generic/page.h> |
194 | 191 | ||
195 | #endif /* __KERNEL__ */ | ||
196 | |||
197 | #endif | 192 | #endif |
diff --git a/include/asm-arm/pgalloc.h b/include/asm-arm/pgalloc.h index 4d4394552911..fb6c6e3222bd 100644 --- a/include/asm-arm/pgalloc.h +++ b/include/asm-arm/pgalloc.h | |||
@@ -27,14 +27,14 @@ | |||
27 | * Since we have only two-level page tables, these are trivial | 27 | * Since we have only two-level page tables, these are trivial |
28 | */ | 28 | */ |
29 | #define pmd_alloc_one(mm,addr) ({ BUG(); ((pmd_t *)2); }) | 29 | #define pmd_alloc_one(mm,addr) ({ BUG(); ((pmd_t *)2); }) |
30 | #define pmd_free(pmd) do { } while (0) | 30 | #define pmd_free(mm, pmd) do { } while (0) |
31 | #define pgd_populate(mm,pmd,pte) BUG() | 31 | #define pgd_populate(mm,pmd,pte) BUG() |
32 | 32 | ||
33 | extern pgd_t *get_pgd_slow(struct mm_struct *mm); | 33 | extern pgd_t *get_pgd_slow(struct mm_struct *mm); |
34 | extern void free_pgd_slow(pgd_t *pgd); | 34 | extern void free_pgd_slow(struct mm_struct *mm, pgd_t *pgd); |
35 | 35 | ||
36 | #define pgd_alloc(mm) get_pgd_slow(mm) | 36 | #define pgd_alloc(mm) get_pgd_slow(mm) |
37 | #define pgd_free(pgd) free_pgd_slow(pgd) | 37 | #define pgd_free(mm, pgd) free_pgd_slow(mm, pgd) |
38 | 38 | ||
39 | /* | 39 | /* |
40 | * Allocate one PTE table. | 40 | * Allocate one PTE table. |
@@ -83,7 +83,7 @@ pte_alloc_one(struct mm_struct *mm, unsigned long addr) | |||
83 | /* | 83 | /* |
84 | * Free one PTE table. | 84 | * Free one PTE table. |
85 | */ | 85 | */ |
86 | static inline void pte_free_kernel(pte_t *pte) | 86 | static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte) |
87 | { | 87 | { |
88 | if (pte) { | 88 | if (pte) { |
89 | pte -= PTRS_PER_PTE; | 89 | pte -= PTRS_PER_PTE; |
@@ -91,7 +91,7 @@ static inline void pte_free_kernel(pte_t *pte) | |||
91 | } | 91 | } |
92 | } | 92 | } |
93 | 93 | ||
94 | static inline void pte_free(struct page *pte) | 94 | static inline void pte_free(struct mm_struct *mm, struct page *pte) |
95 | { | 95 | { |
96 | __free_page(pte); | 96 | __free_page(pte); |
97 | } | 97 | } |
diff --git a/include/asm-arm/pgtable.h b/include/asm-arm/pgtable.h index d2e8171d1d4e..5e0182485d8c 100644 --- a/include/asm-arm/pgtable.h +++ b/include/asm-arm/pgtable.h | |||
@@ -249,7 +249,7 @@ extern struct page *empty_zero_page; | |||
249 | #define set_pte_ext(ptep,pte,ext) cpu_set_pte_ext(ptep,pte,ext) | 249 | #define set_pte_ext(ptep,pte,ext) cpu_set_pte_ext(ptep,pte,ext) |
250 | 250 | ||
251 | #define set_pte_at(mm,addr,ptep,pteval) do { \ | 251 | #define set_pte_at(mm,addr,ptep,pteval) do { \ |
252 | set_pte_ext(ptep, pteval, (addr) >= PAGE_OFFSET ? 0 : PTE_EXT_NG); \ | 252 | set_pte_ext(ptep, pteval, (addr) >= TASK_SIZE ? 0 : PTE_EXT_NG); \ |
253 | } while (0) | 253 | } while (0) |
254 | 254 | ||
255 | /* | 255 | /* |
diff --git a/include/asm-arm/plat-s3c/regs-nand.h b/include/asm-arm/plat-s3c/regs-nand.h index b824d371ae0b..d742205ac172 100644 --- a/include/asm-arm/plat-s3c/regs-nand.h +++ b/include/asm-arm/plat-s3c/regs-nand.h | |||
@@ -35,7 +35,7 @@ | |||
35 | #define S3C2440_NFESTAT1 S3C2410_NFREG(0x28) | 35 | #define S3C2440_NFESTAT1 S3C2410_NFREG(0x28) |
36 | #define S3C2440_NFMECC0 S3C2410_NFREG(0x2C) | 36 | #define S3C2440_NFMECC0 S3C2410_NFREG(0x2C) |
37 | #define S3C2440_NFMECC1 S3C2410_NFREG(0x30) | 37 | #define S3C2440_NFMECC1 S3C2410_NFREG(0x30) |
38 | #define S3C2440_NFSECC S3C24E10_NFREG(0x34) | 38 | #define S3C2440_NFSECC S3C2410_NFREG(0x34) |
39 | #define S3C2440_NFSBLK S3C2410_NFREG(0x38) | 39 | #define S3C2440_NFSBLK S3C2410_NFREG(0x38) |
40 | #define S3C2440_NFEBLK S3C2410_NFREG(0x3C) | 40 | #define S3C2440_NFEBLK S3C2410_NFREG(0x3C) |
41 | 41 | ||
diff --git a/include/asm-arm/plat-s3c24xx/dma.h b/include/asm-arm/plat-s3c24xx/dma.h index 2c59406435e5..c78efe316fc8 100644 --- a/include/asm-arm/plat-s3c24xx/dma.h +++ b/include/asm-arm/plat-s3c24xx/dma.h | |||
@@ -32,6 +32,7 @@ struct s3c24xx_dma_map { | |||
32 | struct s3c24xx_dma_addr hw_addr; | 32 | struct s3c24xx_dma_addr hw_addr; |
33 | 33 | ||
34 | unsigned long channels[S3C2410_DMA_CHANNELS]; | 34 | unsigned long channels[S3C2410_DMA_CHANNELS]; |
35 | unsigned long channels_rx[S3C2410_DMA_CHANNELS]; | ||
35 | }; | 36 | }; |
36 | 37 | ||
37 | struct s3c24xx_dma_selection { | 38 | struct s3c24xx_dma_selection { |
@@ -41,6 +42,10 @@ struct s3c24xx_dma_selection { | |||
41 | 42 | ||
42 | void (*select)(struct s3c2410_dma_chan *chan, | 43 | void (*select)(struct s3c2410_dma_chan *chan, |
43 | struct s3c24xx_dma_map *map); | 44 | struct s3c24xx_dma_map *map); |
45 | |||
46 | void (*direction)(struct s3c2410_dma_chan *chan, | ||
47 | struct s3c24xx_dma_map *map, | ||
48 | enum s3c2410_dmasrc dir); | ||
44 | }; | 49 | }; |
45 | 50 | ||
46 | extern int s3c24xx_dma_init_map(struct s3c24xx_dma_selection *sel); | 51 | extern int s3c24xx_dma_init_map(struct s3c24xx_dma_selection *sel); |
diff --git a/include/asm-arm/plat-s3c24xx/irq.h b/include/asm-arm/plat-s3c24xx/irq.h index 8af6d9579b31..45746a995343 100644 --- a/include/asm-arm/plat-s3c24xx/irq.h +++ b/include/asm-arm/plat-s3c24xx/irq.h | |||
@@ -15,7 +15,9 @@ | |||
15 | 15 | ||
16 | #define EXTINT_OFF (IRQ_EINT4 - 4) | 16 | #define EXTINT_OFF (IRQ_EINT4 - 4) |
17 | 17 | ||
18 | /* these are exported for arch/arm/mach-* usage */ | ||
18 | extern struct irq_chip s3c_irq_level_chip; | 19 | extern struct irq_chip s3c_irq_level_chip; |
20 | extern struct irq_chip s3c_irq_chip; | ||
19 | 21 | ||
20 | static inline void | 22 | static inline void |
21 | s3c_irqsub_mask(unsigned int irqno, unsigned int parentbit, | 23 | s3c_irqsub_mask(unsigned int irqno, unsigned int parentbit, |
diff --git a/include/asm-arm/plat-s3c24xx/regs-s3c2412-iis.h b/include/asm-arm/plat-s3c24xx/regs-s3c2412-iis.h new file mode 100644 index 000000000000..25d4058bcfed --- /dev/null +++ b/include/asm-arm/plat-s3c24xx/regs-s3c2412-iis.h | |||
@@ -0,0 +1,72 @@ | |||
1 | /* linux/include/asm-arm/plat-s3c24xx/regs-s3c2412-iis.h | ||
2 | * | ||
3 | * Copyright 2007 Simtec Electronics <linux@simtec.co.uk> | ||
4 | * http://armlinux.simtec.co.uk/ | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | * S3C2412 IIS register definition | ||
11 | */ | ||
12 | |||
13 | #ifndef __ASM_ARCH_REGS_S3C2412_IIS_H | ||
14 | #define __ASM_ARCH_REGS_S3C2412_IIS_H | ||
15 | |||
16 | #define S3C2412_IISCON (0x00) | ||
17 | #define S3C2412_IISMOD (0x04) | ||
18 | #define S3C2412_IISFIC (0x08) | ||
19 | #define S3C2412_IISPSR (0x0C) | ||
20 | #define S3C2412_IISTXD (0x10) | ||
21 | #define S3C2412_IISRXD (0x14) | ||
22 | |||
23 | #define S3C2412_IISCON_LRINDEX (1 << 11) | ||
24 | #define S3C2412_IISCON_TXFIFO_EMPTY (1 << 10) | ||
25 | #define S3C2412_IISCON_RXFIFO_EMPTY (1 << 9) | ||
26 | #define S3C2412_IISCON_TXFIFO_FULL (1 << 8) | ||
27 | #define S3C2412_IISCON_RXFIFO_FULL (1 << 7) | ||
28 | #define S3C2412_IISCON_TXDMA_PAUSE (1 << 6) | ||
29 | #define S3C2412_IISCON_RXDMA_PAUSE (1 << 5) | ||
30 | #define S3C2412_IISCON_TXCH_PAUSE (1 << 4) | ||
31 | #define S3C2412_IISCON_RXCH_PAUSE (1 << 3) | ||
32 | #define S3C2412_IISCON_TXDMA_ACTIVE (1 << 2) | ||
33 | #define S3C2412_IISCON_RXDMA_ACTIVE (1 << 1) | ||
34 | #define S3C2412_IISCON_IIS_ACTIVE (1 << 0) | ||
35 | |||
36 | #define S3C2412_IISMOD_MASTER_INTERNAL (0 << 10) | ||
37 | #define S3C2412_IISMOD_MASTER_EXTERNAL (1 << 10) | ||
38 | #define S3C2412_IISMOD_SLAVE (2 << 10) | ||
39 | #define S3C2412_IISMOD_MASTER_MASK (3 << 10) | ||
40 | #define S3C2412_IISMOD_MODE_TXONLY (0 << 8) | ||
41 | #define S3C2412_IISMOD_MODE_RXONLY (1 << 8) | ||
42 | #define S3C2412_IISMOD_MODE_TXRX (2 << 8) | ||
43 | #define S3C2412_IISMOD_MODE_MASK (3 << 8) | ||
44 | #define S3C2412_IISMOD_LR_LLOW (0 << 7) | ||
45 | #define S3C2412_IISMOD_LR_RLOW (1 << 7) | ||
46 | #define S3C2412_IISMOD_SDF_IIS (0 << 5) | ||
47 | #define S3C2412_IISMOD_SDF_MSB (0 << 5) | ||
48 | #define S3C2412_IISMOD_SDF_LSB (0 << 5) | ||
49 | #define S3C2412_IISMOD_SDF_MASK (3 << 5) | ||
50 | #define S3C2412_IISMOD_RCLK_256FS (0 << 3) | ||
51 | #define S3C2412_IISMOD_RCLK_512FS (1 << 3) | ||
52 | #define S3C2412_IISMOD_RCLK_384FS (2 << 3) | ||
53 | #define S3C2412_IISMOD_RCLK_768FS (3 << 3) | ||
54 | #define S3C2412_IISMOD_RCLK_MASK (3 << 3) | ||
55 | #define S3C2412_IISMOD_BCLK_32FS (0 << 1) | ||
56 | #define S3C2412_IISMOD_BCLK_48FS (1 << 1) | ||
57 | #define S3C2412_IISMOD_BCLK_16FS (2 << 1) | ||
58 | #define S3C2412_IISMOD_BCLK_24FS (3 << 1) | ||
59 | #define S3C2412_IISMOD_BCLK_MASK (3 << 1) | ||
60 | #define S3C2412_IISMOD_8BIT (1 << 0) | ||
61 | |||
62 | #define S3C2412_IISPSR_PSREN (1 << 15) | ||
63 | |||
64 | #define S3C2412_IISFIC_TXFLUSH (1 << 15) | ||
65 | #define S3C2412_IISFIC_RXFLUSH (1 << 7) | ||
66 | #define S3C2412_IISFIC_TXCOUNT(x) (((x) >> 8) & 0xf) | ||
67 | #define S3C2412_IISFIC_RXCOUNT(x) (((x) >> 0) & 0xf) | ||
68 | |||
69 | |||
70 | |||
71 | #endif /* __ASM_ARCH_REGS_S3C2412_IIS_H */ | ||
72 | |||
diff --git a/include/asm-arm/plat-s3c24xx/regs-spi.h b/include/asm-arm/plat-s3c24xx/regs-spi.h index 4a499a138256..ea565b007d04 100644 --- a/include/asm-arm/plat-s3c24xx/regs-spi.h +++ b/include/asm-arm/plat-s3c24xx/regs-spi.h | |||
@@ -17,6 +17,21 @@ | |||
17 | 17 | ||
18 | #define S3C2410_SPCON (0x00) | 18 | #define S3C2410_SPCON (0x00) |
19 | 19 | ||
20 | #define S3C2412_SPCON_RXFIFO_RB2 (0<<14) | ||
21 | #define S3C2412_SPCON_RXFIFO_RB4 (1<<14) | ||
22 | #define S3C2412_SPCON_RXFIFO_RB12 (2<<14) | ||
23 | #define S3C2412_SPCON_RXFIFO_RB14 (3<<14) | ||
24 | #define S3C2412_SPCON_TXFIFO_RB2 (0<<12) | ||
25 | #define S3C2412_SPCON_TXFIFO_RB4 (1<<12) | ||
26 | #define S3C2412_SPCON_TXFIFO_RB12 (2<<12) | ||
27 | #define S3C2412_SPCON_TXFIFO_RB14 (3<<12) | ||
28 | #define S3C2412_SPCON_RXFIFO_RESET (1<<11) /* RxFIFO reset */ | ||
29 | #define S3C2412_SPCON_TXFIFO_RESET (1<<10) /* TxFIFO reset */ | ||
30 | #define S3C2412_SPCON_RXFIFO_EN (1<<9) /* RxFIFO Enable */ | ||
31 | #define S3C2412_SPCON_TXFIFO_EN (1<<8) /* TxFIFO Enable */ | ||
32 | |||
33 | #define S3C2412_SPCON_DIRC_RX (1<<7) | ||
34 | |||
20 | #define S3C2410_SPCON_SMOD_DMA (2<<5) /* DMA mode */ | 35 | #define S3C2410_SPCON_SMOD_DMA (2<<5) /* DMA mode */ |
21 | #define S3C2410_SPCON_SMOD_INT (1<<5) /* interrupt mode */ | 36 | #define S3C2410_SPCON_SMOD_INT (1<<5) /* interrupt mode */ |
22 | #define S3C2410_SPCON_SMOD_POLL (0<<5) /* polling mode */ | 37 | #define S3C2410_SPCON_SMOD_POLL (0<<5) /* polling mode */ |
@@ -34,10 +49,19 @@ | |||
34 | 49 | ||
35 | #define S3C2410_SPSTA (0x04) | 50 | #define S3C2410_SPSTA (0x04) |
36 | 51 | ||
52 | #define S3C2412_SPSTA_RXFIFO_AE (1<<11) | ||
53 | #define S3C2412_SPSTA_TXFIFO_AE (1<<10) | ||
54 | #define S3C2412_SPSTA_RXFIFO_ERROR (1<<9) | ||
55 | #define S3C2412_SPSTA_TXFIFO_ERROR (1<<8) | ||
56 | #define S3C2412_SPSTA_RXFIFO_FIFO (1<<7) | ||
57 | #define S3C2412_SPSTA_RXFIFO_EMPTY (1<<6) | ||
58 | #define S3C2412_SPSTA_TXFIFO_NFULL (1<<5) | ||
59 | #define S3C2412_SPSTA_TXFIFO_EMPTY (1<<4) | ||
60 | |||
37 | #define S3C2410_SPSTA_DCOL (1<<2) /* Data Collision Error */ | 61 | #define S3C2410_SPSTA_DCOL (1<<2) /* Data Collision Error */ |
38 | #define S3C2410_SPSTA_MULD (1<<1) /* Multi Master Error */ | 62 | #define S3C2410_SPSTA_MULD (1<<1) /* Multi Master Error */ |
39 | #define S3C2410_SPSTA_READY (1<<0) /* Data Tx/Rx ready */ | 63 | #define S3C2410_SPSTA_READY (1<<0) /* Data Tx/Rx ready */ |
40 | 64 | #define S3C2412_SPSTA_READY_ORG (1<<3) | |
41 | 65 | ||
42 | #define S3C2410_SPPIN (0x08) | 66 | #define S3C2410_SPPIN (0x08) |
43 | 67 | ||
@@ -46,9 +70,13 @@ | |||
46 | #define S3C2400_SPPIN_nCS (1<<1) /* SPI Card Select */ | 70 | #define S3C2400_SPPIN_nCS (1<<1) /* SPI Card Select */ |
47 | #define S3C2410_SPPIN_KEEP (1<<0) /* Master Out keep */ | 71 | #define S3C2410_SPPIN_KEEP (1<<0) /* Master Out keep */ |
48 | 72 | ||
49 | |||
50 | #define S3C2410_SPPRE (0x0C) | 73 | #define S3C2410_SPPRE (0x0C) |
51 | #define S3C2410_SPTDAT (0x10) | 74 | #define S3C2410_SPTDAT (0x10) |
52 | #define S3C2410_SPRDAT (0x14) | 75 | #define S3C2410_SPRDAT (0x14) |
53 | 76 | ||
77 | #define S3C2412_TXFIFO (0x18) | ||
78 | #define S3C2412_RXFIFO (0x18) | ||
79 | #define S3C2412_SPFIC (0x24) | ||
80 | |||
81 | |||
54 | #endif /* __ASM_ARCH_REGS_SPI_H */ | 82 | #endif /* __ASM_ARCH_REGS_SPI_H */ |
diff --git a/include/asm-arm/proc-fns.h b/include/asm-arm/proc-fns.h index 5599d4e5e708..a4ce457199d3 100644 --- a/include/asm-arm/proc-fns.h +++ b/include/asm-arm/proc-fns.h | |||
@@ -185,6 +185,14 @@ | |||
185 | # define CPU_NAME cpu_xsc3 | 185 | # define CPU_NAME cpu_xsc3 |
186 | # endif | 186 | # endif |
187 | # endif | 187 | # endif |
188 | # ifdef CONFIG_CPU_FEROCEON | ||
189 | # ifdef CPU_NAME | ||
190 | # undef MULTI_CPU | ||
191 | # define MULTI_CPU | ||
192 | # else | ||
193 | # define CPU_NAME cpu_feroceon | ||
194 | # endif | ||
195 | # endif | ||
188 | # ifdef CONFIG_CPU_V6 | 196 | # ifdef CONFIG_CPU_V6 |
189 | # ifdef CPU_NAME | 197 | # ifdef CPU_NAME |
190 | # undef MULTI_CPU | 198 | # undef MULTI_CPU |
diff --git a/include/asm-arm/smp.h b/include/asm-arm/smp.h index f67acce387e7..af99636db400 100644 --- a/include/asm-arm/smp.h +++ b/include/asm-arm/smp.h | |||
@@ -61,6 +61,11 @@ extern void smp_cross_call(cpumask_t callmap); | |||
61 | extern void smp_send_timer(void); | 61 | extern void smp_send_timer(void); |
62 | 62 | ||
63 | /* | 63 | /* |
64 | * Broadcast a clock event to other CPUs. | ||
65 | */ | ||
66 | extern void smp_timer_broadcast(cpumask_t mask); | ||
67 | |||
68 | /* | ||
64 | * Boot a secondary CPU, and assign it the specified idle task. | 69 | * Boot a secondary CPU, and assign it the specified idle task. |
65 | * This also gives us the initial stack to use for this CPU. | 70 | * This also gives us the initial stack to use for this CPU. |
66 | */ | 71 | */ |
@@ -96,11 +101,12 @@ extern void platform_cpu_die(unsigned int cpu); | |||
96 | extern int platform_cpu_kill(unsigned int cpu); | 101 | extern int platform_cpu_kill(unsigned int cpu); |
97 | extern void platform_cpu_enable(unsigned int cpu); | 102 | extern void platform_cpu_enable(unsigned int cpu); |
98 | 103 | ||
99 | #ifdef CONFIG_LOCAL_TIMERS | ||
100 | /* | 104 | /* |
101 | * Setup a local timer interrupt for a CPU. | 105 | * Local timer interrupt handling function (can be IPI'ed). |
102 | */ | 106 | */ |
103 | extern void local_timer_setup(unsigned int cpu); | 107 | extern void local_timer_interrupt(void); |
108 | |||
109 | #ifdef CONFIG_LOCAL_TIMERS | ||
104 | 110 | ||
105 | /* | 111 | /* |
106 | * Stop a local timer interrupt. | 112 | * Stop a local timer interrupt. |
@@ -114,10 +120,6 @@ extern int local_timer_ack(void); | |||
114 | 120 | ||
115 | #else | 121 | #else |
116 | 122 | ||
117 | static inline void local_timer_setup(unsigned int cpu) | ||
118 | { | ||
119 | } | ||
120 | |||
121 | static inline void local_timer_stop(unsigned int cpu) | 123 | static inline void local_timer_stop(unsigned int cpu) |
122 | { | 124 | { |
123 | } | 125 | } |
@@ -125,6 +127,11 @@ static inline void local_timer_stop(unsigned int cpu) | |||
125 | #endif | 127 | #endif |
126 | 128 | ||
127 | /* | 129 | /* |
130 | * Setup a local timer interrupt for a CPU. | ||
131 | */ | ||
132 | extern void local_timer_setup(unsigned int cpu); | ||
133 | |||
134 | /* | ||
128 | * show local interrupt info | 135 | * show local interrupt info |
129 | */ | 136 | */ |
130 | extern void show_local_irqs(struct seq_file *); | 137 | extern void show_local_irqs(struct seq_file *); |
diff --git a/include/asm-arm/socket.h b/include/asm-arm/socket.h index 65a1a64bf934..6817be9573a6 100644 --- a/include/asm-arm/socket.h +++ b/include/asm-arm/socket.h | |||
@@ -52,4 +52,6 @@ | |||
52 | #define SO_TIMESTAMPNS 35 | 52 | #define SO_TIMESTAMPNS 35 |
53 | #define SCM_TIMESTAMPNS SO_TIMESTAMPNS | 53 | #define SCM_TIMESTAMPNS SO_TIMESTAMPNS |
54 | 54 | ||
55 | #define SO_MARK 36 | ||
56 | |||
55 | #endif /* _ASM_SOCKET_H */ | 57 | #endif /* _ASM_SOCKET_H */ |
diff --git a/include/asm-arm/system.h b/include/asm-arm/system.h index 94ea8c6dc1a4..6335de9a2bb3 100644 --- a/include/asm-arm/system.h +++ b/include/asm-arm/system.h | |||
@@ -75,8 +75,21 @@ | |||
75 | #ifndef __ASSEMBLY__ | 75 | #ifndef __ASSEMBLY__ |
76 | 76 | ||
77 | #include <linux/linkage.h> | 77 | #include <linux/linkage.h> |
78 | #include <linux/stringify.h> | ||
78 | #include <linux/irqflags.h> | 79 | #include <linux/irqflags.h> |
79 | 80 | ||
81 | /* | ||
82 | * The CPU ID never changes at run time, so we might as well tell the | ||
83 | * compiler that it's constant. Use this function to read the CPU ID | ||
84 | * rather than directly reading processor_id or read_cpuid() directly. | ||
85 | */ | ||
86 | static inline unsigned int read_cpuid_id(void) __attribute_const__; | ||
87 | |||
88 | static inline unsigned int read_cpuid_id(void) | ||
89 | { | ||
90 | return read_cpuid(CPUID_ID); | ||
91 | } | ||
92 | |||
80 | #define __exception __attribute__((section(".exception.text"))) | 93 | #define __exception __attribute__((section(".exception.text"))) |
81 | 94 | ||
82 | struct thread_info; | 95 | struct thread_info; |
@@ -350,6 +363,21 @@ static inline unsigned long __xchg(unsigned long x, volatile void *ptr, int size | |||
350 | extern void disable_hlt(void); | 363 | extern void disable_hlt(void); |
351 | extern void enable_hlt(void); | 364 | extern void enable_hlt(void); |
352 | 365 | ||
366 | #include <asm-generic/cmpxchg-local.h> | ||
367 | |||
368 | /* | ||
369 | * cmpxchg_local and cmpxchg64_local are atomic wrt current CPU. Always make | ||
370 | * them available. | ||
371 | */ | ||
372 | #define cmpxchg_local(ptr, o, n) \ | ||
373 | ((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), (unsigned long)(o),\ | ||
374 | (unsigned long)(n), sizeof(*(ptr)))) | ||
375 | #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) | ||
376 | |||
377 | #ifndef CONFIG_SMP | ||
378 | #include <asm-generic/cmpxchg.h> | ||
379 | #endif | ||
380 | |||
353 | #endif /* __ASSEMBLY__ */ | 381 | #endif /* __ASSEMBLY__ */ |
354 | 382 | ||
355 | #define arch_align_stack(x) (x) | 383 | #define arch_align_stack(x) (x) |
diff --git a/include/asm-arm/tlb.h b/include/asm-arm/tlb.h index cb740025d413..36bd402a21cb 100644 --- a/include/asm-arm/tlb.h +++ b/include/asm-arm/tlb.h | |||
@@ -85,8 +85,8 @@ tlb_end_vma(struct mmu_gather *tlb, struct vm_area_struct *vma) | |||
85 | } | 85 | } |
86 | 86 | ||
87 | #define tlb_remove_page(tlb,page) free_page_and_swap_cache(page) | 87 | #define tlb_remove_page(tlb,page) free_page_and_swap_cache(page) |
88 | #define pte_free_tlb(tlb,ptep) pte_free(ptep) | 88 | #define pte_free_tlb(tlb, ptep) pte_free((tlb)->mm, ptep) |
89 | #define pmd_free_tlb(tlb,pmdp) pmd_free(pmdp) | 89 | #define pmd_free_tlb(tlb, pmdp) pmd_free((tlb)->mm, pmdp) |
90 | 90 | ||
91 | #define tlb_migrate_finish(mm) do { } while (0) | 91 | #define tlb_migrate_finish(mm) do { } while (0) |
92 | 92 | ||
diff --git a/include/asm-arm/traps.h b/include/asm-arm/traps.h index d4f34dc83eb0..f1541afcf85c 100644 --- a/include/asm-arm/traps.h +++ b/include/asm-arm/traps.h | |||
@@ -15,4 +15,13 @@ struct undef_hook { | |||
15 | void register_undef_hook(struct undef_hook *hook); | 15 | void register_undef_hook(struct undef_hook *hook); |
16 | void unregister_undef_hook(struct undef_hook *hook); | 16 | void unregister_undef_hook(struct undef_hook *hook); |
17 | 17 | ||
18 | static inline int in_exception_text(unsigned long ptr) | ||
19 | { | ||
20 | extern char __exception_text_start[]; | ||
21 | extern char __exception_text_end[]; | ||
22 | |||
23 | return ptr >= (unsigned long)&__exception_text_start && | ||
24 | ptr < (unsigned long)&__exception_text_end; | ||
25 | } | ||
26 | |||
18 | #endif | 27 | #endif |
diff --git a/include/asm-arm/user.h b/include/asm-arm/user.h index 3e8b0f879159..825c1e7c582d 100644 --- a/include/asm-arm/user.h +++ b/include/asm-arm/user.h | |||
@@ -67,7 +67,7 @@ struct user{ | |||
67 | esp register. */ | 67 | esp register. */ |
68 | long int signal; /* Signal that caused the core dump. */ | 68 | long int signal; /* Signal that caused the core dump. */ |
69 | int reserved; /* No longer used */ | 69 | int reserved; /* No longer used */ |
70 | struct pt_regs * u_ar0; /* Used by gdb to help find the values for */ | 70 | unsigned long u_ar0; /* Used by gdb to help find the values for */ |
71 | /* the registers. */ | 71 | /* the registers. */ |
72 | unsigned long magic; /* To uniquely identify a core file */ | 72 | unsigned long magic; /* To uniquely identify a core file */ |
73 | char u_comm[32]; /* User command that was responsible */ | 73 | char u_comm[32]; /* User command that was responsible */ |
diff --git a/include/asm-arm/vfp.h b/include/asm-arm/vfp.h index bd6be9d7f772..5f9a2cb3d452 100644 --- a/include/asm-arm/vfp.h +++ b/include/asm-arm/vfp.h | |||
@@ -7,7 +7,11 @@ | |||
7 | 7 | ||
8 | #define FPSID cr0 | 8 | #define FPSID cr0 |
9 | #define FPSCR cr1 | 9 | #define FPSCR cr1 |
10 | #define MVFR1 cr6 | ||
11 | #define MVFR0 cr7 | ||
10 | #define FPEXC cr8 | 12 | #define FPEXC cr8 |
13 | #define FPINST cr9 | ||
14 | #define FPINST2 cr10 | ||
11 | 15 | ||
12 | /* FPSID bits */ | 16 | /* FPSID bits */ |
13 | #define FPSID_IMPLEMENTER_BIT (24) | 17 | #define FPSID_IMPLEMENTER_BIT (24) |
@@ -28,6 +32,19 @@ | |||
28 | /* FPEXC bits */ | 32 | /* FPEXC bits */ |
29 | #define FPEXC_EX (1 << 31) | 33 | #define FPEXC_EX (1 << 31) |
30 | #define FPEXC_EN (1 << 30) | 34 | #define FPEXC_EN (1 << 30) |
35 | #define FPEXC_DEX (1 << 29) | ||
36 | #define FPEXC_FP2V (1 << 28) | ||
37 | #define FPEXC_VV (1 << 27) | ||
38 | #define FPEXC_TFV (1 << 26) | ||
39 | #define FPEXC_LENGTH_BIT (8) | ||
40 | #define FPEXC_LENGTH_MASK (7 << FPEXC_LENGTH_BIT) | ||
41 | #define FPEXC_IDF (1 << 7) | ||
42 | #define FPEXC_IXF (1 << 4) | ||
43 | #define FPEXC_UFF (1 << 3) | ||
44 | #define FPEXC_OFF (1 << 2) | ||
45 | #define FPEXC_DZF (1 << 1) | ||
46 | #define FPEXC_IOF (1 << 0) | ||
47 | #define FPEXC_TRAP_MASK (FPEXC_IDF|FPEXC_IXF|FPEXC_UFF|FPEXC_OFF|FPEXC_DZF|FPEXC_IOF) | ||
31 | 48 | ||
32 | /* FPSCR bits */ | 49 | /* FPSCR bits */ |
33 | #define FPSCR_DEFAULT_NAN (1<<25) | 50 | #define FPSCR_DEFAULT_NAN (1<<25) |
@@ -55,20 +72,9 @@ | |||
55 | #define FPSCR_IXC (1<<4) | 72 | #define FPSCR_IXC (1<<4) |
56 | #define FPSCR_IDC (1<<7) | 73 | #define FPSCR_IDC (1<<7) |
57 | 74 | ||
58 | /* | 75 | /* MVFR0 bits */ |
59 | * VFP9-S specific. | 76 | #define MVFR0_A_SIMD_BIT (0) |
60 | */ | 77 | #define MVFR0_A_SIMD_MASK (0xf << MVFR0_A_SIMD_BIT) |
61 | #define FPINST cr9 | ||
62 | #define FPINST2 cr10 | ||
63 | |||
64 | /* FPEXC bits */ | ||
65 | #define FPEXC_FPV2 (1<<28) | ||
66 | #define FPEXC_LENGTH_BIT (8) | ||
67 | #define FPEXC_LENGTH_MASK (7 << FPEXC_LENGTH_BIT) | ||
68 | #define FPEXC_INV (1 << 7) | ||
69 | #define FPEXC_UFC (1 << 3) | ||
70 | #define FPEXC_OFC (1 << 2) | ||
71 | #define FPEXC_IOC (1 << 0) | ||
72 | 78 | ||
73 | /* Bit patterns for decoding the packaged operation descriptors */ | 79 | /* Bit patterns for decoding the packaged operation descriptors */ |
74 | #define VFPOPDESC_LENGTH_BIT (9) | 80 | #define VFPOPDESC_LENGTH_BIT (9) |
diff --git a/include/asm-arm/vfpmacros.h b/include/asm-arm/vfpmacros.h index 27fe028b4e72..cccb3892e73c 100644 --- a/include/asm-arm/vfpmacros.h +++ b/include/asm-arm/vfpmacros.h | |||
@@ -15,19 +15,33 @@ | |||
15 | .endm | 15 | .endm |
16 | 16 | ||
17 | @ read all the working registers back into the VFP | 17 | @ read all the working registers back into the VFP |
18 | .macro VFPFLDMIA, base | 18 | .macro VFPFLDMIA, base, tmp |
19 | #if __LINUX_ARM_ARCH__ < 6 | 19 | #if __LINUX_ARM_ARCH__ < 6 |
20 | LDC p11, cr0, [\base],#33*4 @ FLDMIAX \base!, {d0-d15} | 20 | LDC p11, cr0, [\base],#33*4 @ FLDMIAX \base!, {d0-d15} |
21 | #else | 21 | #else |
22 | LDC p11, cr0, [\base],#32*4 @ FLDMIAD \base!, {d0-d15} | 22 | LDC p11, cr0, [\base],#32*4 @ FLDMIAD \base!, {d0-d15} |
23 | #endif | 23 | #endif |
24 | #ifdef CONFIG_VFPv3 | ||
25 | VFPFMRX \tmp, MVFR0 @ Media and VFP Feature Register 0 | ||
26 | and \tmp, \tmp, #MVFR0_A_SIMD_MASK @ A_SIMD field | ||
27 | cmp \tmp, #2 @ 32 x 64bit registers? | ||
28 | ldceql p11, cr0, [\base],#32*4 @ FLDMIAD \base!, {d16-d31} | ||
29 | addne \base, \base, #32*4 @ step over unused register space | ||
30 | #endif | ||
24 | .endm | 31 | .endm |
25 | 32 | ||
26 | @ write all the working registers out of the VFP | 33 | @ write all the working registers out of the VFP |
27 | .macro VFPFSTMIA, base | 34 | .macro VFPFSTMIA, base, tmp |
28 | #if __LINUX_ARM_ARCH__ < 6 | 35 | #if __LINUX_ARM_ARCH__ < 6 |
29 | STC p11, cr0, [\base],#33*4 @ FSTMIAX \base!, {d0-d15} | 36 | STC p11, cr0, [\base],#33*4 @ FSTMIAX \base!, {d0-d15} |
30 | #else | 37 | #else |
31 | STC p11, cr0, [\base],#32*4 @ FSTMIAD \base!, {d0-d15} | 38 | STC p11, cr0, [\base],#32*4 @ FSTMIAD \base!, {d0-d15} |
32 | #endif | 39 | #endif |
40 | #ifdef CONFIG_VFPv3 | ||
41 | VFPFMRX \tmp, MVFR0 @ Media and VFP Feature Register 0 | ||
42 | and \tmp, \tmp, #MVFR0_A_SIMD_MASK @ A_SIMD field | ||
43 | cmp \tmp, #2 @ 32 x 64bit registers? | ||
44 | stceql p11, cr0, [\base],#32*4 @ FSTMIAD \base!, {d16-d31} | ||
45 | addne \base, \base, #32*4 @ step over unused register space | ||
46 | #endif | ||
33 | .endm | 47 | .endm |