diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2008-01-28 08:21:38 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2008-01-28 08:21:38 -0500 |
commit | 0ff66f0c7a5f1f4f5a0d91341b6f71fd2a49f0fa (patch) | |
tree | 7c4d74a76bf4f49e87d769c236fdd2db77fb241d /include/asm-arm/arch-pxa | |
parent | c00d4ffdbace1bdc9fdd888e4ba6d207ffa3b679 (diff) | |
parent | 4e4fc05a2b6e7bd2e0facd96e0c18dceb34d9349 (diff) |
Merge branch 'pxa-plat' into devel
* pxa-plat: (53 commits)
[ARM] 4762/1: Basic support for Toradex Colibri module
[ARM] pxa: fix mci_init functions returning -1
[ARM] 4737/1: Refactor corgi_lcd to improve readability + bugfix
[ARM] 4747/1: pcm027: support for pcm990 baseboard for phyCORE-PXA270
[ARM] 4746/1: pcm027: network support for phyCORE-PXA270
[ARM] 4745/1: pcm027: default configuration
[ARM] 4744/1: pcm027: add support for phyCORE-PXA270 CPU module
[NET] smc91x: Make smc91x use IRQ resource trigger flags
[ARM] pxa: add default config for littleton
[ARM] pxa: add basic support for Littleton (PXA3xx Form Factor Platform)
[ARM] 4664/1: Add basic support for HTC Magician PDA phones
[ARM] 4649/1: Base support for pxa-based Toshiba e-series PDAs.
[ARM] pxa: skip registers saving/restoring if entering standby mode
[ARM] pxa: fix PXA27x resume
[ARM] pxa: Avoid fiddling with CKEN register on suspend
[ARM] pxa: Add PXA3 standby code hooked into the IRQ wake scheme
[ARM] pxa: Add zylonite MFP wakeup configurations
[ARM] pxa: program MFPs for low power mode when suspending
[ARM] pxa: make MFP configuration processor independent
[ARM] pxa: remove un-used pxa3xx_mfp_set_xxx() functions
...
Conflicts:
arch/arm/mach-pxa/ssp.c
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'include/asm-arm/arch-pxa')
22 files changed, 1224 insertions, 677 deletions
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/irqs.h b/include/asm-arm/arch-pxa/irqs.h index b76ee6d1f5b4..c562b972a4a6 100644 --- a/include/asm-arm/arch-pxa/irqs.h +++ b/include/asm-arm/arch-pxa/irqs.h | |||
@@ -180,7 +180,8 @@ | |||
180 | #define NR_IRQS (IRQ_LOCOMO_SPI_TEND + 1) | 180 | #define NR_IRQS (IRQ_LOCOMO_SPI_TEND + 1) |
181 | #elif defined(CONFIG_ARCH_LUBBOCK) || \ | 181 | #elif defined(CONFIG_ARCH_LUBBOCK) || \ |
182 | defined(CONFIG_MACH_LOGICPD_PXA270) || \ | 182 | defined(CONFIG_MACH_LOGICPD_PXA270) || \ |
183 | defined(CONFIG_MACH_MAINSTONE) | 183 | defined(CONFIG_MACH_MAINSTONE) || \ |
184 | defined(CONFIG_MACH_PCM027) | ||
184 | #define NR_IRQS (IRQ_BOARD_END) | 185 | #define NR_IRQS (IRQ_BOARD_END) |
185 | #else | 186 | #else |
186 | #define NR_IRQS (IRQ_BOARD_START) | 187 | #define NR_IRQS (IRQ_BOARD_START) |
@@ -227,6 +228,13 @@ | |||
227 | #define IRQ_LOCOMO_LT_BASE (IRQ_BOARD_START + 2) | 228 | #define IRQ_LOCOMO_LT_BASE (IRQ_BOARD_START + 2) |
228 | #define IRQ_LOCOMO_SPI_BASE (IRQ_BOARD_START + 3) | 229 | #define IRQ_LOCOMO_SPI_BASE (IRQ_BOARD_START + 3) |
229 | 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 | |||
230 | /* ITE8152 irqs */ | 238 | /* ITE8152 irqs */ |
231 | /* add IT8152 IRQs beyond BOARD_END */ | 239 | /* add IT8152 IRQs beyond BOARD_END */ |
232 | #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 a20996649889..bb410313556f 100644 --- a/include/asm-arm/arch-pxa/mfp-pxa300.h +++ b/include/asm-arm/arch-pxa/mfp-pxa300.h | |||
@@ -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) |
diff --git a/include/asm-arm/arch-pxa/mfp-pxa320.h b/include/asm-arm/arch-pxa/mfp-pxa320.h index 52deedcaf3bd..576aa46d90fc 100644 --- a/include/asm-arm/arch-pxa/mfp-pxa320.h +++ b/include/asm-arm/arch-pxa/mfp-pxa320.h | |||
@@ -16,6 +16,7 @@ | |||
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(GPIO46, AF0) | 22 | #define GPIO46_GPIO MFP_CFG(GPIO46, 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 03c508d94f0e..02f6157396d3 100644 --- a/include/asm-arm/arch-pxa/mfp.h +++ b/include/asm-arm/arch-pxa/mfp.h | |||
@@ -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,251 +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 | /* | 248 | #define MFP_AF1 (0x1 << 10) |
350 | * MFP register defaults to | 249 | #define MFP_AF2 (0x2 << 10) |
351 | * drive strength fast 3mA (010'b) | 250 | #define MFP_AF3 (0x3 << 10) |
352 | * edge detection logic disabled | 251 | #define MFP_AF4 (0x4 << 10) |
353 | * alternate function 0 | 252 | #define MFP_AF5 (0x5 << 10) |
354 | */ | 253 | #define MFP_AF6 (0x6 << 10) |
355 | #define MFPR_DEFAULT (0x0840) | 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) | ||
356 | 294 | ||
357 | #define MFP_CFG(pin, af) \ | 295 | #define MFP_CFG(pin, af) \ |
358 | ((MFP_PIN_##pin << 16) | MFPR_DEFAULT | (MFP_##af)) | 296 | ((MFP_CFG_DEFAULT & ~MFP_AF_MASK) |\ |
297 | (MFP_PIN(MFP_PIN_##pin) | MFP_##af)) | ||
359 | 298 | ||
360 | #define MFP_CFG_DRV(pin, af, drv) \ | 299 | #define MFP_CFG_DRV(pin, af, drv) \ |
361 | ((MFP_PIN_##pin << 16) | (MFPR_DEFAULT & ~MFPR_DRV_MASK) |\ | 300 | ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_DS_MASK)) |\ |
362 | ((MFP_##drv) << 10) | (MFP_##af)) | 301 | (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_##drv)) |
363 | 302 | ||
364 | #define MFP_CFG_LPM(pin, af, lpm) \ | 303 | #define MFP_CFG_LPM(pin, af, lpm) \ |
365 | ((MFP_PIN_##pin << 16) | (MFPR_DEFAULT & ~MFPR_LPM_MASK) |\ | 304 | ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_LPM_STATE_MASK)) |\ |
366 | (((MFP_LPM_##lpm) & 0x3) << 7) |\ | 305 | (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_LPM_##lpm)) |
367 | (((MFP_LPM_##lpm) & 0x4) << 12) |\ | ||
368 | (((MFP_LPM_##lpm) & 0x8) << 10) |\ | ||
369 | (MFP_##af)) | ||
370 | 306 | ||
371 | #define MFP_CFG_X(pin, af, drv, lpm) \ | 307 | #define MFP_CFG_X(pin, af, drv, lpm) \ |
372 | ((MFP_PIN_##pin << 16) |\ | 308 | ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_DS_MASK | MFP_LPM_STATE_MASK)) |\ |
373 | (MFPR_DEFAULT & ~(MFPR_DRV_MASK | MFPR_LPM_MASK)) |\ | 309 | (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_##drv | MFP_LPM_##lpm)) |
374 | ((MFP_##drv) << 10) | (MFP_##af) |\ | ||
375 | (((MFP_LPM_##lpm) & 0x3) << 7) |\ | ||
376 | (((MFP_LPM_##lpm) & 0x4) << 12) |\ | ||
377 | (((MFP_LPM_##lpm) & 0x8) << 10)) | ||
378 | |||
379 | /* common MFP configurations - processor specific ones defined | ||
380 | * in mfp-pxa3xx.h | ||
381 | */ | ||
382 | #define GPIO0_GPIO MFP_CFG(GPIO0, AF0) | ||
383 | #define GPIO1_GPIO MFP_CFG(GPIO1, AF0) | ||
384 | #define GPIO2_GPIO MFP_CFG(GPIO2, AF0) | ||
385 | #define GPIO3_GPIO MFP_CFG(GPIO3, AF0) | ||
386 | #define GPIO4_GPIO MFP_CFG(GPIO4, AF0) | ||
387 | #define GPIO5_GPIO MFP_CFG(GPIO5, AF0) | ||
388 | #define GPIO6_GPIO MFP_CFG(GPIO6, AF0) | ||
389 | #define GPIO7_GPIO MFP_CFG(GPIO7, AF0) | ||
390 | #define GPIO8_GPIO MFP_CFG(GPIO8, AF0) | ||
391 | #define GPIO9_GPIO MFP_CFG(GPIO9, AF0) | ||
392 | #define GPIO10_GPIO MFP_CFG(GPIO10, AF0) | ||
393 | #define GPIO11_GPIO MFP_CFG(GPIO11, AF0) | ||
394 | #define GPIO12_GPIO MFP_CFG(GPIO12, AF0) | ||
395 | #define GPIO13_GPIO MFP_CFG(GPIO13, AF0) | ||
396 | #define GPIO14_GPIO MFP_CFG(GPIO14, AF0) | ||
397 | #define GPIO15_GPIO MFP_CFG(GPIO15, AF0) | ||
398 | #define GPIO16_GPIO MFP_CFG(GPIO16, AF0) | ||
399 | #define GPIO17_GPIO MFP_CFG(GPIO17, AF0) | ||
400 | #define GPIO18_GPIO MFP_CFG(GPIO18, AF0) | ||
401 | #define GPIO19_GPIO MFP_CFG(GPIO19, AF0) | ||
402 | #define GPIO20_GPIO MFP_CFG(GPIO20, AF0) | ||
403 | #define GPIO21_GPIO MFP_CFG(GPIO21, AF0) | ||
404 | #define GPIO22_GPIO MFP_CFG(GPIO22, AF0) | ||
405 | #define GPIO23_GPIO MFP_CFG(GPIO23, AF0) | ||
406 | #define GPIO24_GPIO MFP_CFG(GPIO24, AF0) | ||
407 | #define GPIO25_GPIO MFP_CFG(GPIO25, AF0) | ||
408 | #define GPIO26_GPIO MFP_CFG(GPIO26, AF0) | ||
409 | #define GPIO27_GPIO MFP_CFG(GPIO27, AF0) | ||
410 | #define GPIO28_GPIO MFP_CFG(GPIO28, AF0) | ||
411 | #define GPIO29_GPIO MFP_CFG(GPIO29, AF0) | ||
412 | #define GPIO30_GPIO MFP_CFG(GPIO30, AF0) | ||
413 | #define GPIO31_GPIO MFP_CFG(GPIO31, AF0) | ||
414 | #define GPIO32_GPIO MFP_CFG(GPIO32, AF0) | ||
415 | #define GPIO33_GPIO MFP_CFG(GPIO33, AF0) | ||
416 | #define GPIO34_GPIO MFP_CFG(GPIO34, AF0) | ||
417 | #define GPIO35_GPIO MFP_CFG(GPIO35, AF0) | ||
418 | #define GPIO36_GPIO MFP_CFG(GPIO36, AF0) | ||
419 | #define GPIO37_GPIO MFP_CFG(GPIO37, AF0) | ||
420 | #define GPIO38_GPIO MFP_CFG(GPIO38, AF0) | ||
421 | #define GPIO39_GPIO MFP_CFG(GPIO39, AF0) | ||
422 | #define GPIO40_GPIO MFP_CFG(GPIO40, AF0) | ||
423 | #define GPIO41_GPIO MFP_CFG(GPIO41, AF0) | ||
424 | #define GPIO42_GPIO MFP_CFG(GPIO42, AF0) | ||
425 | #define GPIO43_GPIO MFP_CFG(GPIO43, AF0) | ||
426 | #define GPIO44_GPIO MFP_CFG(GPIO44, AF0) | ||
427 | #define GPIO45_GPIO MFP_CFG(GPIO45, AF0) | ||
428 | |||
429 | #define GPIO47_GPIO MFP_CFG(GPIO47, AF0) | ||
430 | #define GPIO48_GPIO MFP_CFG(GPIO48, AF0) | ||
431 | |||
432 | #define GPIO53_GPIO MFP_CFG(GPIO53, AF0) | ||
433 | #define GPIO54_GPIO MFP_CFG(GPIO54, AF0) | ||
434 | #define GPIO55_GPIO MFP_CFG(GPIO55, AF0) | ||
435 | |||
436 | #define GPIO57_GPIO MFP_CFG(GPIO57, AF0) | ||
437 | |||
438 | #define GPIO63_GPIO MFP_CFG(GPIO63, AF0) | ||
439 | #define GPIO64_GPIO MFP_CFG(GPIO64, AF0) | ||
440 | #define GPIO65_GPIO MFP_CFG(GPIO65, AF0) | ||
441 | #define GPIO66_GPIO MFP_CFG(GPIO66, AF0) | ||
442 | #define GPIO67_GPIO MFP_CFG(GPIO67, AF0) | ||
443 | #define GPIO68_GPIO MFP_CFG(GPIO68, AF0) | ||
444 | #define GPIO69_GPIO MFP_CFG(GPIO69, AF0) | ||
445 | #define GPIO70_GPIO MFP_CFG(GPIO70, AF0) | ||
446 | #define GPIO71_GPIO MFP_CFG(GPIO71, AF0) | ||
447 | #define GPIO72_GPIO MFP_CFG(GPIO72, AF0) | ||
448 | #define GPIO73_GPIO MFP_CFG(GPIO73, AF0) | ||
449 | #define GPIO74_GPIO MFP_CFG(GPIO74, AF0) | ||
450 | #define GPIO75_GPIO MFP_CFG(GPIO75, AF0) | ||
451 | #define GPIO76_GPIO MFP_CFG(GPIO76, AF0) | ||
452 | #define GPIO77_GPIO MFP_CFG(GPIO77, AF0) | ||
453 | #define GPIO78_GPIO MFP_CFG(GPIO78, AF0) | ||
454 | #define GPIO79_GPIO MFP_CFG(GPIO79, AF0) | ||
455 | #define GPIO80_GPIO MFP_CFG(GPIO80, AF0) | ||
456 | #define GPIO81_GPIO MFP_CFG(GPIO81, AF0) | ||
457 | #define GPIO82_GPIO MFP_CFG(GPIO82, AF0) | ||
458 | #define GPIO83_GPIO MFP_CFG(GPIO83, AF0) | ||
459 | #define GPIO84_GPIO MFP_CFG(GPIO84, AF0) | ||
460 | #define GPIO85_GPIO MFP_CFG(GPIO85, AF0) | ||
461 | #define GPIO86_GPIO MFP_CFG(GPIO86, AF0) | ||
462 | #define GPIO87_GPIO MFP_CFG(GPIO87, AF0) | ||
463 | #define GPIO88_GPIO MFP_CFG(GPIO88, AF0) | ||
464 | #define GPIO89_GPIO MFP_CFG(GPIO89, AF0) | ||
465 | #define GPIO90_GPIO MFP_CFG(GPIO90, AF0) | ||
466 | #define GPIO91_GPIO MFP_CFG(GPIO91, AF0) | ||
467 | #define GPIO92_GPIO MFP_CFG(GPIO92, AF0) | ||
468 | #define GPIO93_GPIO MFP_CFG(GPIO93, AF0) | ||
469 | #define GPIO94_GPIO MFP_CFG(GPIO94, AF0) | ||
470 | #define GPIO95_GPIO MFP_CFG(GPIO95, AF0) | ||
471 | #define GPIO96_GPIO MFP_CFG(GPIO96, AF0) | ||
472 | #define GPIO97_GPIO MFP_CFG(GPIO97, AF0) | ||
473 | #define GPIO98_GPIO MFP_CFG(GPIO98, AF0) | ||
474 | #define GPIO99_GPIO MFP_CFG(GPIO99, AF0) | ||
475 | #define GPIO100_GPIO MFP_CFG(GPIO100, AF0) | ||
476 | #define GPIO101_GPIO MFP_CFG(GPIO101, AF0) | ||
477 | #define GPIO102_GPIO MFP_CFG(GPIO102, AF0) | ||
478 | #define GPIO103_GPIO MFP_CFG(GPIO103, AF0) | ||
479 | #define GPIO104_GPIO MFP_CFG(GPIO104, AF0) | ||
480 | #define GPIO105_GPIO MFP_CFG(GPIO105, AF0) | ||
481 | #define GPIO106_GPIO MFP_CFG(GPIO106, AF0) | ||
482 | #define GPIO107_GPIO MFP_CFG(GPIO107, AF0) | ||
483 | #define GPIO108_GPIO MFP_CFG(GPIO108, AF0) | ||
484 | #define GPIO109_GPIO MFP_CFG(GPIO109, AF0) | ||
485 | #define GPIO110_GPIO MFP_CFG(GPIO110, AF0) | ||
486 | #define GPIO111_GPIO MFP_CFG(GPIO111, AF0) | ||
487 | #define GPIO112_GPIO MFP_CFG(GPIO112, AF0) | ||
488 | #define GPIO113_GPIO MFP_CFG(GPIO113, AF0) | ||
489 | #define GPIO114_GPIO MFP_CFG(GPIO114, AF0) | ||
490 | #define GPIO115_GPIO MFP_CFG(GPIO115, AF0) | ||
491 | #define GPIO116_GPIO MFP_CFG(GPIO116, AF0) | ||
492 | #define GPIO117_GPIO MFP_CFG(GPIO117, AF0) | ||
493 | #define GPIO118_GPIO MFP_CFG(GPIO118, AF0) | ||
494 | #define GPIO119_GPIO MFP_CFG(GPIO119, AF0) | ||
495 | #define GPIO120_GPIO MFP_CFG(GPIO120, AF0) | ||
496 | #define GPIO121_GPIO MFP_CFG(GPIO121, AF0) | ||
497 | #define GPIO122_GPIO MFP_CFG(GPIO122, AF0) | ||
498 | #define GPIO123_GPIO MFP_CFG(GPIO123, AF0) | ||
499 | #define GPIO124_GPIO MFP_CFG(GPIO124, AF0) | ||
500 | #define GPIO125_GPIO MFP_CFG(GPIO125, AF0) | ||
501 | #define GPIO126_GPIO MFP_CFG(GPIO126, AF0) | ||
502 | #define GPIO127_GPIO MFP_CFG(GPIO127, AF0) | ||
503 | |||
504 | #define GPIO0_2_GPIO MFP_CFG(GPIO0_2, AF0) | ||
505 | #define GPIO1_2_GPIO MFP_CFG(GPIO1_2, AF0) | ||
506 | #define GPIO2_2_GPIO MFP_CFG(GPIO2_2, AF0) | ||
507 | #define GPIO3_2_GPIO MFP_CFG(GPIO3_2, AF0) | ||
508 | #define GPIO4_2_GPIO MFP_CFG(GPIO4_2, AF0) | ||
509 | #define GPIO5_2_GPIO MFP_CFG(GPIO5_2, AF0) | ||
510 | #define GPIO6_2_GPIO MFP_CFG(GPIO6_2, AF0) | ||
511 | |||
512 | /* | ||
513 | * each MFP pin will have a MFPR register, since the offset of the | ||
514 | * register varies between processors, the processor specific code | ||
515 | * should initialize the pin offsets by pxa3xx_mfp_init_addr() | ||
516 | * | ||
517 | * pxa3xx_mfp_init_addr - accepts a table of "pxa3xx_mfp_addr_map" | ||
518 | * structure, which represents a range of MFP pins from "start" to | ||
519 | * "end", with the offset begining at "offset", to define a single | ||
520 | * pin, let "end" = -1 | ||
521 | * | ||
522 | * use | ||
523 | * | ||
524 | * MFP_ADDR_X() to define a range of pins | ||
525 | * MFP_ADDR() to define a single pin | ||
526 | * MFP_ADDR_END to signal the end of pin offset definitions | ||
527 | */ | ||
528 | struct pxa3xx_mfp_addr_map { | ||
529 | unsigned int start; | ||
530 | unsigned int end; | ||
531 | unsigned long offset; | ||
532 | }; | ||
533 | |||
534 | #define MFP_ADDR_X(start, end, offset) \ | ||
535 | { MFP_PIN_##start, MFP_PIN_##end, offset } | ||
536 | |||
537 | #define MFP_ADDR(pin, offset) \ | ||
538 | { MFP_PIN_##pin, -1, offset } | ||
539 | |||
540 | #define MFP_ADDR_END { MFP_PIN_INVALID, 0 } | ||
541 | |||
542 | struct pxa3xx_mfp_pin { | ||
543 | unsigned long mfpr_off; /* MFPRxx register offset */ | ||
544 | unsigned long mfpr_val; /* MFPRxx register value */ | ||
545 | }; | ||
546 | |||
547 | /* | ||
548 | * pxa3xx_mfp_read()/pxa3xx_mfp_write() - for direct read/write access | ||
549 | * to the MFPR register | ||
550 | */ | ||
551 | unsigned long pxa3xx_mfp_read(int mfp); | ||
552 | void pxa3xx_mfp_write(int mfp, unsigned long mfpr_val); | ||
553 | |||
554 | /* | ||
555 | * pxa3xx_mfp_set_afds - set MFP alternate function and drive strength | ||
556 | * pxa3xx_mfp_set_rdh - set MFP release delay hold on/off | ||
557 | * pxa3xx_mfp_set_lpm - set MFP low power mode state | ||
558 | * pxa3xx_mfp_set_edge - set MFP edge detection in low power mode | ||
559 | * | ||
560 | * use these functions to override/change the default configuration | ||
561 | * done by pxa3xx_mfp_set_config(s) | ||
562 | */ | ||
563 | void pxa3xx_mfp_set_afds(int mfp, int af, int ds); | ||
564 | void pxa3xx_mfp_set_rdh(int mfp, int rdh); | ||
565 | void pxa3xx_mfp_set_lpm(int mfp, int lpm); | ||
566 | void pxa3xx_mfp_set_edge(int mfp, int edge); | ||
567 | |||
568 | /* | ||
569 | * pxa3xx_mfp_config - configure the MFPR registers | ||
570 | * | ||
571 | * used by board specific initialization code | ||
572 | */ | ||
573 | void pxa3xx_mfp_config(mfp_cfg_t *mfp_cfgs, int num); | ||
574 | |||
575 | /* | ||
576 | * pxa3xx_mfp_init_addr() - initialize the mapping between mfp pin | ||
577 | * index and MFPR register offset | ||
578 | * | ||
579 | * used by processor specific code | ||
580 | */ | ||
581 | void __init pxa3xx_mfp_init_addr(struct pxa3xx_mfp_addr_map *); | ||
582 | void __init pxa3xx_init_mfp(void); | ||
583 | 310 | ||
584 | #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 1bd398da07da..442494d71f12 100644 --- a/include/asm-arm/arch-pxa/pxa-regs.h +++ b/include/asm-arm/arch-pxa/pxa-regs.h | |||
@@ -1597,176 +1597,10 @@ | |||
1597 | #define PWER_GPIO15 PWER_GPIO (15) /* GPIO [15] wake-up enable */ | 1597 | #define PWER_GPIO15 PWER_GPIO (15) /* GPIO [15] wake-up enable */ |
1598 | #define PWER_RTC 0x80000000 /* RTC alarm wake-up enable */ | 1598 | #define PWER_RTC 0x80000000 /* RTC alarm wake-up enable */ |
1599 | 1599 | ||
1600 | |||
1601 | /* | 1600 | /* |
1602 | * SSP Serial Port Registers | 1601 | * SSP Serial Port Registers - see include/asm-arm/arch-pxa/regs-ssp.h |
1603 | * PXA250, PXA255, PXA26x and PXA27x SSP controllers are all slightly different. | ||
1604 | * PXA255, PXA26x and PXA27x have extra ports, registers and bits. | ||
1605 | */ | 1602 | */ |
1606 | 1603 | ||
1607 | /* Common PXA2xx bits first */ | ||
1608 | #define SSCR0_DSS (0x0000000f) /* Data Size Select (mask) */ | ||
1609 | #define SSCR0_DataSize(x) ((x) - 1) /* Data Size Select [4..16] */ | ||
1610 | #define SSCR0_FRF (0x00000030) /* FRame Format (mask) */ | ||
1611 | #define SSCR0_Motorola (0x0 << 4) /* Motorola's Serial Peripheral Interface (SPI) */ | ||
1612 | #define SSCR0_TI (0x1 << 4) /* Texas Instruments' Synchronous Serial Protocol (SSP) */ | ||
1613 | #define SSCR0_National (0x2 << 4) /* National Microwire */ | ||
1614 | #define SSCR0_ECS (1 << 6) /* External clock select */ | ||
1615 | #define SSCR0_SSE (1 << 7) /* Synchronous Serial Port Enable */ | ||
1616 | #if defined(CONFIG_PXA25x) | ||
1617 | #define SSCR0_SCR (0x0000ff00) /* Serial Clock Rate (mask) */ | ||
1618 | #define SSCR0_SerClkDiv(x) ((((x) - 2)/2) << 8) /* Divisor [2..512] */ | ||
1619 | #elif defined(CONFIG_PXA27x) | ||
1620 | #define SSCR0_SCR (0x000fff00) /* Serial Clock Rate (mask) */ | ||
1621 | #define SSCR0_SerClkDiv(x) (((x) - 1) << 8) /* Divisor [1..4096] */ | ||
1622 | #define SSCR0_EDSS (1 << 20) /* Extended data size select */ | ||
1623 | #define SSCR0_NCS (1 << 21) /* Network clock select */ | ||
1624 | #define SSCR0_RIM (1 << 22) /* Receive FIFO overrrun interrupt mask */ | ||
1625 | #define SSCR0_TUM (1 << 23) /* Transmit FIFO underrun interrupt mask */ | ||
1626 | #define SSCR0_FRDC (0x07000000) /* Frame rate divider control (mask) */ | ||
1627 | #define SSCR0_SlotsPerFrm(x) (((x) - 1) << 24) /* Time slots per frame [1..8] */ | ||
1628 | #define SSCR0_ADC (1 << 30) /* Audio clock select */ | ||
1629 | #define SSCR0_MOD (1 << 31) /* Mode (normal or network) */ | ||
1630 | #endif | ||
1631 | |||
1632 | #define SSCR1_RIE (1 << 0) /* Receive FIFO Interrupt Enable */ | ||
1633 | #define SSCR1_TIE (1 << 1) /* Transmit FIFO Interrupt Enable */ | ||
1634 | #define SSCR1_LBM (1 << 2) /* Loop-Back Mode */ | ||
1635 | #define SSCR1_SPO (1 << 3) /* Motorola SPI SSPSCLK polarity setting */ | ||
1636 | #define SSCR1_SPH (1 << 4) /* Motorola SPI SSPSCLK phase setting */ | ||
1637 | #define SSCR1_MWDS (1 << 5) /* Microwire Transmit Data Size */ | ||
1638 | #define SSCR1_TFT (0x000003c0) /* Transmit FIFO Threshold (mask) */ | ||
1639 | #define SSCR1_TxTresh(x) (((x) - 1) << 6) /* level [1..16] */ | ||
1640 | #define SSCR1_RFT (0x00003c00) /* Receive FIFO Threshold (mask) */ | ||
1641 | #define SSCR1_RxTresh(x) (((x) - 1) << 10) /* level [1..16] */ | ||
1642 | |||
1643 | #define SSSR_TNF (1 << 2) /* Transmit FIFO Not Full */ | ||
1644 | #define SSSR_RNE (1 << 3) /* Receive FIFO Not Empty */ | ||
1645 | #define SSSR_BSY (1 << 4) /* SSP Busy */ | ||
1646 | #define SSSR_TFS (1 << 5) /* Transmit FIFO Service Request */ | ||
1647 | #define SSSR_RFS (1 << 6) /* Receive FIFO Service Request */ | ||
1648 | #define SSSR_ROR (1 << 7) /* Receive FIFO Overrun */ | ||
1649 | |||
1650 | #define SSCR0_TIM (1 << 23) /* Transmit FIFO Under Run Interrupt Mask */ | ||
1651 | #define SSCR0_RIM (1 << 22) /* Receive FIFO Over Run interrupt Mask */ | ||
1652 | #define SSCR0_NCS (1 << 21) /* Network Clock Select */ | ||
1653 | #define SSCR0_EDSS (1 << 20) /* Extended Data Size Select */ | ||
1654 | |||
1655 | /* extra bits in PXA255, PXA26x and PXA27x SSP ports */ | ||
1656 | #define SSCR0_TISSP (1 << 4) /* TI Sync Serial Protocol */ | ||
1657 | #define SSCR0_PSP (3 << 4) /* PSP - Programmable Serial Protocol */ | ||
1658 | #define SSCR1_TTELP (1 << 31) /* TXD Tristate Enable Last Phase */ | ||
1659 | #define SSCR1_TTE (1 << 30) /* TXD Tristate Enable */ | ||
1660 | #define SSCR1_EBCEI (1 << 29) /* Enable Bit Count Error interrupt */ | ||
1661 | #define SSCR1_SCFR (1 << 28) /* Slave Clock free Running */ | ||
1662 | #define SSCR1_ECRA (1 << 27) /* Enable Clock Request A */ | ||
1663 | #define SSCR1_ECRB (1 << 26) /* Enable Clock request B */ | ||
1664 | #define SSCR1_SCLKDIR (1 << 25) /* Serial Bit Rate Clock Direction */ | ||
1665 | #define SSCR1_SFRMDIR (1 << 24) /* Frame Direction */ | ||
1666 | #define SSCR1_RWOT (1 << 23) /* Receive Without Transmit */ | ||
1667 | #define SSCR1_TRAIL (1 << 22) /* Trailing Byte */ | ||
1668 | #define SSCR1_TSRE (1 << 21) /* Transmit Service Request Enable */ | ||
1669 | #define SSCR1_RSRE (1 << 20) /* Receive Service Request Enable */ | ||
1670 | #define SSCR1_TINTE (1 << 19) /* Receiver Time-out Interrupt enable */ | ||
1671 | #define SSCR1_PINTE (1 << 18) /* Peripheral Trailing Byte Interupt Enable */ | ||
1672 | #define SSCR1_STRF (1 << 15) /* Select FIFO or EFWR */ | ||
1673 | #define SSCR1_EFWR (1 << 14) /* Enable FIFO Write/Read */ | ||
1674 | |||
1675 | #define SSSR_BCE (1 << 23) /* Bit Count Error */ | ||
1676 | #define SSSR_CSS (1 << 22) /* Clock Synchronisation Status */ | ||
1677 | #define SSSR_TUR (1 << 21) /* Transmit FIFO Under Run */ | ||
1678 | #define SSSR_EOC (1 << 20) /* End Of Chain */ | ||
1679 | #define SSSR_TINT (1 << 19) /* Receiver Time-out Interrupt */ | ||
1680 | #define SSSR_PINT (1 << 18) /* Peripheral Trailing Byte Interrupt */ | ||
1681 | |||
1682 | #define SSPSP_FSRT (1 << 25) /* Frame Sync Relative Timing */ | ||
1683 | #define SSPSP_DMYSTOP(x) ((x) << 23) /* Dummy Stop */ | ||
1684 | #define SSPSP_SFRMWDTH(x) ((x) << 16) /* Serial Frame Width */ | ||
1685 | #define SSPSP_SFRMDLY(x) ((x) << 9) /* Serial Frame Delay */ | ||
1686 | #define SSPSP_DMYSTRT(x) ((x) << 7) /* Dummy Start */ | ||
1687 | #define SSPSP_STRTDLY(x) ((x) << 4) /* Start Delay */ | ||
1688 | #define SSPSP_ETDS (1 << 3) /* End of Transfer data State */ | ||
1689 | #define SSPSP_SFRMP (1 << 2) /* Serial Frame Polarity */ | ||
1690 | #define SSPSP_SCMODE(x) ((x) << 0) /* Serial Bit Rate Clock Mode */ | ||
1691 | |||
1692 | #define SSACD_SCDB (1 << 3) /* SSPSYSCLK Divider Bypass */ | ||
1693 | #define SSACD_ACPS(x) ((x) << 4) /* Audio clock PLL select */ | ||
1694 | #define SSACD_ACDS(x) ((x) << 0) /* Audio clock divider select */ | ||
1695 | |||
1696 | #define SSCR0_P1 __REG(0x41000000) /* SSP Port 1 Control Register 0 */ | ||
1697 | #define SSCR1_P1 __REG(0x41000004) /* SSP Port 1 Control Register 1 */ | ||
1698 | #define SSSR_P1 __REG(0x41000008) /* SSP Port 1 Status Register */ | ||
1699 | #define SSITR_P1 __REG(0x4100000C) /* SSP Port 1 Interrupt Test Register */ | ||
1700 | #define SSDR_P1 __REG(0x41000010) /* (Write / Read) SSP Port 1 Data Write Register/SSP Data Read Register */ | ||
1701 | |||
1702 | /* Support existing PXA25x drivers */ | ||
1703 | #define SSCR0 SSCR0_P1 /* SSP Control Register 0 */ | ||
1704 | #define SSCR1 SSCR1_P1 /* SSP Control Register 1 */ | ||
1705 | #define SSSR SSSR_P1 /* SSP Status Register */ | ||
1706 | #define SSITR SSITR_P1 /* SSP Interrupt Test Register */ | ||
1707 | #define SSDR SSDR_P1 /* (Write / Read) SSP Data Write Register/SSP Data Read Register */ | ||
1708 | |||
1709 | /* PXA27x ports */ | ||
1710 | #if defined (CONFIG_PXA27x) | ||
1711 | #define SSTO_P1 __REG(0x41000028) /* SSP Port 1 Time Out Register */ | ||
1712 | #define SSPSP_P1 __REG(0x4100002C) /* SSP Port 1 Programmable Serial Protocol */ | ||
1713 | #define SSTSA_P1 __REG(0x41000030) /* SSP Port 1 Tx Timeslot Active */ | ||
1714 | #define SSRSA_P1 __REG(0x41000034) /* SSP Port 1 Rx Timeslot Active */ | ||
1715 | #define SSTSS_P1 __REG(0x41000038) /* SSP Port 1 Timeslot Status */ | ||
1716 | #define SSACD_P1 __REG(0x4100003C) /* SSP Port 1 Audio Clock Divider */ | ||
1717 | #define SSCR0_P2 __REG(0x41700000) /* SSP Port 2 Control Register 0 */ | ||
1718 | #define SSCR1_P2 __REG(0x41700004) /* SSP Port 2 Control Register 1 */ | ||
1719 | #define SSSR_P2 __REG(0x41700008) /* SSP Port 2 Status Register */ | ||
1720 | #define SSITR_P2 __REG(0x4170000C) /* SSP Port 2 Interrupt Test Register */ | ||
1721 | #define SSDR_P2 __REG(0x41700010) /* (Write / Read) SSP Port 2 Data Write Register/SSP Data Read Register */ | ||
1722 | #define SSTO_P2 __REG(0x41700028) /* SSP Port 2 Time Out Register */ | ||
1723 | #define SSPSP_P2 __REG(0x4170002C) /* SSP Port 2 Programmable Serial Protocol */ | ||
1724 | #define SSTSA_P2 __REG(0x41700030) /* SSP Port 2 Tx Timeslot Active */ | ||
1725 | #define SSRSA_P2 __REG(0x41700034) /* SSP Port 2 Rx Timeslot Active */ | ||
1726 | #define SSTSS_P2 __REG(0x41700038) /* SSP Port 2 Timeslot Status */ | ||
1727 | #define SSACD_P2 __REG(0x4170003C) /* SSP Port 2 Audio Clock Divider */ | ||
1728 | #define SSCR0_P3 __REG(0x41900000) /* SSP Port 3 Control Register 0 */ | ||
1729 | #define SSCR1_P3 __REG(0x41900004) /* SSP Port 3 Control Register 1 */ | ||
1730 | #define SSSR_P3 __REG(0x41900008) /* SSP Port 3 Status Register */ | ||
1731 | #define SSITR_P3 __REG(0x4190000C) /* SSP Port 3 Interrupt Test Register */ | ||
1732 | #define SSDR_P3 __REG(0x41900010) /* (Write / Read) SSP Port 3 Data Write Register/SSP Data Read Register */ | ||
1733 | #define SSTO_P3 __REG(0x41900028) /* SSP Port 3 Time Out Register */ | ||
1734 | #define SSPSP_P3 __REG(0x4190002C) /* SSP Port 3 Programmable Serial Protocol */ | ||
1735 | #define SSTSA_P3 __REG(0x41900030) /* SSP Port 3 Tx Timeslot Active */ | ||
1736 | #define SSRSA_P3 __REG(0x41900034) /* SSP Port 3 Rx Timeslot Active */ | ||
1737 | #define SSTSS_P3 __REG(0x41900038) /* SSP Port 3 Timeslot Status */ | ||
1738 | #define SSACD_P3 __REG(0x4190003C) /* SSP Port 3 Audio Clock Divider */ | ||
1739 | #else /* PXA255 (only port 2) and PXA26x ports*/ | ||
1740 | #define SSTO_P1 __REG(0x41000028) /* SSP Port 1 Time Out Register */ | ||
1741 | #define SSPSP_P1 __REG(0x4100002C) /* SSP Port 1 Programmable Serial Protocol */ | ||
1742 | #define SSCR0_P2 __REG(0x41400000) /* SSP Port 2 Control Register 0 */ | ||
1743 | #define SSCR1_P2 __REG(0x41400004) /* SSP Port 2 Control Register 1 */ | ||
1744 | #define SSSR_P2 __REG(0x41400008) /* SSP Port 2 Status Register */ | ||
1745 | #define SSITR_P2 __REG(0x4140000C) /* SSP Port 2 Interrupt Test Register */ | ||
1746 | #define SSDR_P2 __REG(0x41400010) /* (Write / Read) SSP Port 2 Data Write Register/SSP Data Read Register */ | ||
1747 | #define SSTO_P2 __REG(0x41400028) /* SSP Port 2 Time Out Register */ | ||
1748 | #define SSPSP_P2 __REG(0x4140002C) /* SSP Port 2 Programmable Serial Protocol */ | ||
1749 | #define SSCR0_P3 __REG(0x41500000) /* SSP Port 3 Control Register 0 */ | ||
1750 | #define SSCR1_P3 __REG(0x41500004) /* SSP Port 3 Control Register 1 */ | ||
1751 | #define SSSR_P3 __REG(0x41500008) /* SSP Port 3 Status Register */ | ||
1752 | #define SSITR_P3 __REG(0x4150000C) /* SSP Port 3 Interrupt Test Register */ | ||
1753 | #define SSDR_P3 __REG(0x41500010) /* (Write / Read) SSP Port 3 Data Write Register/SSP Data Read Register */ | ||
1754 | #define SSTO_P3 __REG(0x41500028) /* SSP Port 3 Time Out Register */ | ||
1755 | #define SSPSP_P3 __REG(0x4150002C) /* SSP Port 3 Programmable Serial Protocol */ | ||
1756 | #endif | ||
1757 | |||
1758 | #define SSCR0_P(x) (*(((x) == 1) ? &SSCR0_P1 : ((x) == 2) ? &SSCR0_P2 : ((x) == 3) ? &SSCR0_P3 : NULL)) | ||
1759 | #define SSCR1_P(x) (*(((x) == 1) ? &SSCR1_P1 : ((x) == 2) ? &SSCR1_P2 : ((x) == 3) ? &SSCR1_P3 : NULL)) | ||
1760 | #define SSSR_P(x) (*(((x) == 1) ? &SSSR_P1 : ((x) == 2) ? &SSSR_P2 : ((x) == 3) ? &SSSR_P3 : NULL)) | ||
1761 | #define SSITR_P(x) (*(((x) == 1) ? &SSITR_P1 : ((x) == 2) ? &SSITR_P2 : ((x) == 3) ? &SSITR_P3 : NULL)) | ||
1762 | #define SSDR_P(x) (*(((x) == 1) ? &SSDR_P1 : ((x) == 2) ? &SSDR_P2 : ((x) == 3) ? &SSDR_P3 : NULL)) | ||
1763 | #define SSTO_P(x) (*(((x) == 1) ? &SSTO_P1 : ((x) == 2) ? &SSTO_P2 : ((x) == 3) ? &SSTO_P3 : NULL)) | ||
1764 | #define SSPSP_P(x) (*(((x) == 1) ? &SSPSP_P1 : ((x) == 2) ? &SSPSP_P2 : ((x) == 3) ? &SSPSP_P3 : NULL)) | ||
1765 | #define SSTSA_P(x) (*(((x) == 1) ? &SSTSA_P1 : ((x) == 2) ? &SSTSA_P2 : ((x) == 3) ? &SSTSA_P3 : NULL)) | ||
1766 | #define SSRSA_P(x) (*(((x) == 1) ? &SSRSA_P1 : ((x) == 2) ? &SSRSA_P2 : ((x) == 3) ? &SSRSA_P3 : NULL)) | ||
1767 | #define SSTSS_P(x) (*(((x) == 1) ? &SSTSS_P1 : ((x) == 2) ? &SSTSS_P2 : ((x) == 3) ? &SSTSS_P3 : NULL)) | ||
1768 | #define SSACD_P(x) (*(((x) == 1) ? &SSACD_P1 : ((x) == 2) ? &SSACD_P2 : ((x) == 3) ? &SSACD_P3 : NULL)) | ||
1769 | |||
1770 | /* | 1604 | /* |
1771 | * MultiMediaCard (MMC) controller - see drivers/mmc/host/pxamci.h | 1605 | * MultiMediaCard (MMC) controller - see drivers/mmc/host/pxamci.h |
1772 | */ | 1606 | */ |
@@ -2014,71 +1848,8 @@ | |||
2014 | 1848 | ||
2015 | #define LDCMD_PAL (1 << 26) /* instructs DMA to load palette buffer */ | 1849 | #define LDCMD_PAL (1 << 26) /* instructs DMA to load palette buffer */ |
2016 | 1850 | ||
2017 | /* | ||
2018 | * Memory controller | ||
2019 | */ | ||
2020 | |||
2021 | #define MDCNFG __REG(0x48000000) /* SDRAM Configuration Register 0 */ | ||
2022 | #define MDREFR __REG(0x48000004) /* SDRAM Refresh Control Register */ | ||
2023 | #define MSC0 __REG(0x48000008) /* Static Memory Control Register 0 */ | ||
2024 | #define MSC1 __REG(0x4800000C) /* Static Memory Control Register 1 */ | ||
2025 | #define MSC2 __REG(0x48000010) /* Static Memory Control Register 2 */ | ||
2026 | #define MECR __REG(0x48000014) /* Expansion Memory (PCMCIA/Compact Flash) Bus Configuration */ | ||
2027 | #define SXLCR __REG(0x48000018) /* LCR value to be written to SDRAM-Timing Synchronous Flash */ | ||
2028 | #define SXCNFG __REG(0x4800001C) /* Synchronous Static Memory Control Register */ | ||
2029 | #define SXMRS __REG(0x48000024) /* MRS value to be written to Synchronous Flash or SMROM */ | ||
2030 | #define MCMEM0 __REG(0x48000028) /* Card interface Common Memory Space Socket 0 Timing */ | ||
2031 | #define MCMEM1 __REG(0x4800002C) /* Card interface Common Memory Space Socket 1 Timing */ | ||
2032 | #define MCATT0 __REG(0x48000030) /* Card interface Attribute Space Socket 0 Timing Configuration */ | ||
2033 | #define MCATT1 __REG(0x48000034) /* Card interface Attribute Space Socket 1 Timing Configuration */ | ||
2034 | #define MCIO0 __REG(0x48000038) /* Card interface I/O Space Socket 0 Timing Configuration */ | ||
2035 | #define MCIO1 __REG(0x4800003C) /* Card interface I/O Space Socket 1 Timing Configuration */ | ||
2036 | #define MDMRS __REG(0x48000040) /* MRS value to be written to SDRAM */ | ||
2037 | #define BOOT_DEF __REG(0x48000044) /* Read-Only Boot-Time Register. Contains BOOT_SEL and PKG_SEL */ | ||
2038 | |||
2039 | /* | ||
2040 | * More handy macros for PCMCIA | ||
2041 | * | ||
2042 | * Arg is socket number | ||
2043 | */ | ||
2044 | #define MCMEM(s) __REG2(0x48000028, (s)<<2 ) /* Card interface Common Memory Space Socket s Timing */ | ||
2045 | #define MCATT(s) __REG2(0x48000030, (s)<<2 ) /* Card interface Attribute Space Socket s Timing Configuration */ | ||
2046 | #define MCIO(s) __REG2(0x48000038, (s)<<2 ) /* Card interface I/O Space Socket s Timing Configuration */ | ||
2047 | |||
2048 | /* MECR register defines */ | ||
2049 | #define MECR_NOS (1 << 0) /* Number Of Sockets: 0 -> 1 sock, 1 -> 2 sock */ | ||
2050 | #define MECR_CIT (1 << 1) /* Card Is There: 0 -> no card, 1 -> card inserted */ | ||
2051 | |||
2052 | #define MDREFR_K0DB4 (1 << 29) /* SDCLK0 Divide by 4 Control/Status */ | ||
2053 | #define MDREFR_K2FREE (1 << 25) /* SDRAM Free-Running Control */ | ||
2054 | #define MDREFR_K1FREE (1 << 24) /* SDRAM Free-Running Control */ | ||
2055 | #define MDREFR_K0FREE (1 << 23) /* SDRAM Free-Running Control */ | ||
2056 | #define MDREFR_SLFRSH (1 << 22) /* SDRAM Self-Refresh Control/Status */ | ||
2057 | #define MDREFR_APD (1 << 20) /* SDRAM/SSRAM Auto-Power-Down Enable */ | ||
2058 | #define MDREFR_K2DB2 (1 << 19) /* SDCLK2 Divide by 2 Control/Status */ | ||
2059 | #define MDREFR_K2RUN (1 << 18) /* SDCLK2 Run Control/Status */ | ||
2060 | #define MDREFR_K1DB2 (1 << 17) /* SDCLK1 Divide by 2 Control/Status */ | ||
2061 | #define MDREFR_K1RUN (1 << 16) /* SDCLK1 Run Control/Status */ | ||
2062 | #define MDREFR_E1PIN (1 << 15) /* SDCKE1 Level Control/Status */ | ||
2063 | #define MDREFR_K0DB2 (1 << 14) /* SDCLK0 Divide by 2 Control/Status */ | ||
2064 | #define MDREFR_K0RUN (1 << 13) /* SDCLK0 Run Control/Status */ | ||
2065 | #define MDREFR_E0PIN (1 << 12) /* SDCKE0 Level Control/Status */ | ||
2066 | |||
2067 | |||
2068 | #ifdef CONFIG_PXA27x | 1851 | #ifdef CONFIG_PXA27x |
2069 | 1852 | ||
2070 | #define ARB_CNTRL __REG(0x48000048) /* Arbiter Control Register */ | ||
2071 | |||
2072 | #define ARB_DMA_SLV_PARK (1<<31) /* Be parked with DMA slave when idle */ | ||
2073 | #define ARB_CI_PARK (1<<30) /* Be parked with Camera Interface when idle */ | ||
2074 | #define ARB_EX_MEM_PARK (1<<29) /* Be parked with external MEMC when idle */ | ||
2075 | #define ARB_INT_MEM_PARK (1<<28) /* Be parked with internal MEMC when idle */ | ||
2076 | #define ARB_USB_PARK (1<<27) /* Be parked with USB when idle */ | ||
2077 | #define ARB_LCD_PARK (1<<26) /* Be parked with LCD when idle */ | ||
2078 | #define ARB_DMA_PARK (1<<25) /* Be parked with DMA when idle */ | ||
2079 | #define ARB_CORE_PARK (1<<24) /* Be parked with core when idle */ | ||
2080 | #define ARB_LOCK_FLAG (1<<23) /* Only Locking masters gain access to the bus */ | ||
2081 | |||
2082 | /* | 1853 | /* |
2083 | * Keypad | 1854 | * Keypad |
2084 | */ | 1855 | */ |
@@ -2135,74 +1906,6 @@ | |||
2135 | #define KPAS_SO (0x1 << 31) | 1906 | #define KPAS_SO (0x1 << 31) |
2136 | #define KPASMKPx_SO (0x1 << 31) | 1907 | #define KPASMKPx_SO (0x1 << 31) |
2137 | 1908 | ||
2138 | /* | ||
2139 | * UHC: USB Host Controller (OHCI-like) register definitions | ||
2140 | */ | ||
2141 | #define UHC_BASE_PHYS (0x4C000000) | ||
2142 | #define UHCREV __REG(0x4C000000) /* UHC HCI Spec Revision */ | ||
2143 | #define UHCHCON __REG(0x4C000004) /* UHC Host Control Register */ | ||
2144 | #define UHCCOMS __REG(0x4C000008) /* UHC Command Status Register */ | ||
2145 | #define UHCINTS __REG(0x4C00000C) /* UHC Interrupt Status Register */ | ||
2146 | #define UHCINTE __REG(0x4C000010) /* UHC Interrupt Enable */ | ||
2147 | #define UHCINTD __REG(0x4C000014) /* UHC Interrupt Disable */ | ||
2148 | #define UHCHCCA __REG(0x4C000018) /* UHC Host Controller Comm. Area */ | ||
2149 | #define UHCPCED __REG(0x4C00001C) /* UHC Period Current Endpt Descr */ | ||
2150 | #define UHCCHED __REG(0x4C000020) /* UHC Control Head Endpt Descr */ | ||
2151 | #define UHCCCED __REG(0x4C000024) /* UHC Control Current Endpt Descr */ | ||
2152 | #define UHCBHED __REG(0x4C000028) /* UHC Bulk Head Endpt Descr */ | ||
2153 | #define UHCBCED __REG(0x4C00002C) /* UHC Bulk Current Endpt Descr */ | ||
2154 | #define UHCDHEAD __REG(0x4C000030) /* UHC Done Head */ | ||
2155 | #define UHCFMI __REG(0x4C000034) /* UHC Frame Interval */ | ||
2156 | #define UHCFMR __REG(0x4C000038) /* UHC Frame Remaining */ | ||
2157 | #define UHCFMN __REG(0x4C00003C) /* UHC Frame Number */ | ||
2158 | #define UHCPERS __REG(0x4C000040) /* UHC Periodic Start */ | ||
2159 | #define UHCLS __REG(0x4C000044) /* UHC Low Speed Threshold */ | ||
2160 | |||
2161 | #define UHCRHDA __REG(0x4C000048) /* UHC Root Hub Descriptor A */ | ||
2162 | #define UHCRHDA_NOCP (1 << 12) /* No over current protection */ | ||
2163 | |||
2164 | #define UHCRHDB __REG(0x4C00004C) /* UHC Root Hub Descriptor B */ | ||
2165 | #define UHCRHS __REG(0x4C000050) /* UHC Root Hub Status */ | ||
2166 | #define UHCRHPS1 __REG(0x4C000054) /* UHC Root Hub Port 1 Status */ | ||
2167 | #define UHCRHPS2 __REG(0x4C000058) /* UHC Root Hub Port 2 Status */ | ||
2168 | #define UHCRHPS3 __REG(0x4C00005C) /* UHC Root Hub Port 3 Status */ | ||
2169 | |||
2170 | #define UHCSTAT __REG(0x4C000060) /* UHC Status Register */ | ||
2171 | #define UHCSTAT_UPS3 (1 << 16) /* USB Power Sense Port3 */ | ||
2172 | #define UHCSTAT_SBMAI (1 << 15) /* System Bus Master Abort Interrupt*/ | ||
2173 | #define UHCSTAT_SBTAI (1 << 14) /* System Bus Target Abort Interrupt*/ | ||
2174 | #define UHCSTAT_UPRI (1 << 13) /* USB Port Resume Interrupt */ | ||
2175 | #define UHCSTAT_UPS2 (1 << 12) /* USB Power Sense Port 2 */ | ||
2176 | #define UHCSTAT_UPS1 (1 << 11) /* USB Power Sense Port 1 */ | ||
2177 | #define UHCSTAT_HTA (1 << 10) /* HCI Target Abort */ | ||
2178 | #define UHCSTAT_HBA (1 << 8) /* HCI Buffer Active */ | ||
2179 | #define UHCSTAT_RWUE (1 << 7) /* HCI Remote Wake Up Event */ | ||
2180 | |||
2181 | #define UHCHR __REG(0x4C000064) /* UHC Reset Register */ | ||
2182 | #define UHCHR_SSEP3 (1 << 11) /* Sleep Standby Enable for Port3 */ | ||
2183 | #define UHCHR_SSEP2 (1 << 10) /* Sleep Standby Enable for Port2 */ | ||
2184 | #define UHCHR_SSEP1 (1 << 9) /* Sleep Standby Enable for Port1 */ | ||
2185 | #define UHCHR_PCPL (1 << 7) /* Power control polarity low */ | ||
2186 | #define UHCHR_PSPL (1 << 6) /* Power sense polarity low */ | ||
2187 | #define UHCHR_SSE (1 << 5) /* Sleep Standby Enable */ | ||
2188 | #define UHCHR_UIT (1 << 4) /* USB Interrupt Test */ | ||
2189 | #define UHCHR_SSDC (1 << 3) /* Simulation Scale Down Clock */ | ||
2190 | #define UHCHR_CGR (1 << 2) /* Clock Generation Reset */ | ||
2191 | #define UHCHR_FHR (1 << 1) /* Force Host Controller Reset */ | ||
2192 | #define UHCHR_FSBIR (1 << 0) /* Force System Bus Iface Reset */ | ||
2193 | |||
2194 | #define UHCHIE __REG(0x4C000068) /* UHC Interrupt Enable Register*/ | ||
2195 | #define UHCHIE_UPS3IE (1 << 14) /* Power Sense Port3 IntEn */ | ||
2196 | #define UHCHIE_UPRIE (1 << 13) /* Port Resume IntEn */ | ||
2197 | #define UHCHIE_UPS2IE (1 << 12) /* Power Sense Port2 IntEn */ | ||
2198 | #define UHCHIE_UPS1IE (1 << 11) /* Power Sense Port1 IntEn */ | ||
2199 | #define UHCHIE_TAIE (1 << 10) /* HCI Interface Transfer Abort | ||
2200 | Interrupt Enable*/ | ||
2201 | #define UHCHIE_HBAIE (1 << 8) /* HCI Buffer Active IntEn */ | ||
2202 | #define UHCHIE_RWIE (1 << 7) /* Remote Wake-up IntEn */ | ||
2203 | |||
2204 | #define UHCHIT __REG(0x4C00006C) /* UHC Interrupt Test register */ | ||
2205 | |||
2206 | /* Camera Interface */ | 1909 | /* Camera Interface */ |
2207 | #define CICR0 __REG(0x50000000) | 1910 | #define CICR0 __REG(0x50000000) |
2208 | #define CICR1 __REG(0x50000004) | 1911 | #define CICR1 __REG(0x50000004) |
@@ -2350,6 +2053,77 @@ | |||
2350 | 2053 | ||
2351 | #endif | 2054 | #endif |
2352 | 2055 | ||
2056 | #if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx) | ||
2057 | /* | ||
2058 | * UHC: USB Host Controller (OHCI-like) register definitions | ||
2059 | */ | ||
2060 | #define UHC_BASE_PHYS (0x4C000000) | ||
2061 | #define UHCREV __REG(0x4C000000) /* UHC HCI Spec Revision */ | ||
2062 | #define UHCHCON __REG(0x4C000004) /* UHC Host Control Register */ | ||
2063 | #define UHCCOMS __REG(0x4C000008) /* UHC Command Status Register */ | ||
2064 | #define UHCINTS __REG(0x4C00000C) /* UHC Interrupt Status Register */ | ||
2065 | #define UHCINTE __REG(0x4C000010) /* UHC Interrupt Enable */ | ||
2066 | #define UHCINTD __REG(0x4C000014) /* UHC Interrupt Disable */ | ||
2067 | #define UHCHCCA __REG(0x4C000018) /* UHC Host Controller Comm. Area */ | ||
2068 | #define UHCPCED __REG(0x4C00001C) /* UHC Period Current Endpt Descr */ | ||
2069 | #define UHCCHED __REG(0x4C000020) /* UHC Control Head Endpt Descr */ | ||
2070 | #define UHCCCED __REG(0x4C000024) /* UHC Control Current Endpt Descr */ | ||
2071 | #define UHCBHED __REG(0x4C000028) /* UHC Bulk Head Endpt Descr */ | ||
2072 | #define UHCBCED __REG(0x4C00002C) /* UHC Bulk Current Endpt Descr */ | ||
2073 | #define UHCDHEAD __REG(0x4C000030) /* UHC Done Head */ | ||
2074 | #define UHCFMI __REG(0x4C000034) /* UHC Frame Interval */ | ||
2075 | #define UHCFMR __REG(0x4C000038) /* UHC Frame Remaining */ | ||
2076 | #define UHCFMN __REG(0x4C00003C) /* UHC Frame Number */ | ||
2077 | #define UHCPERS __REG(0x4C000040) /* UHC Periodic Start */ | ||
2078 | #define UHCLS __REG(0x4C000044) /* UHC Low Speed Threshold */ | ||
2079 | |||
2080 | #define UHCRHDA __REG(0x4C000048) /* UHC Root Hub Descriptor A */ | ||
2081 | #define UHCRHDA_NOCP (1 << 12) /* No over current protection */ | ||
2082 | |||
2083 | #define UHCRHDB __REG(0x4C00004C) /* UHC Root Hub Descriptor B */ | ||
2084 | #define UHCRHS __REG(0x4C000050) /* UHC Root Hub Status */ | ||
2085 | #define UHCRHPS1 __REG(0x4C000054) /* UHC Root Hub Port 1 Status */ | ||
2086 | #define UHCRHPS2 __REG(0x4C000058) /* UHC Root Hub Port 2 Status */ | ||
2087 | #define UHCRHPS3 __REG(0x4C00005C) /* UHC Root Hub Port 3 Status */ | ||
2088 | |||
2089 | #define UHCSTAT __REG(0x4C000060) /* UHC Status Register */ | ||
2090 | #define UHCSTAT_UPS3 (1 << 16) /* USB Power Sense Port3 */ | ||
2091 | #define UHCSTAT_SBMAI (1 << 15) /* System Bus Master Abort Interrupt*/ | ||
2092 | #define UHCSTAT_SBTAI (1 << 14) /* System Bus Target Abort Interrupt*/ | ||
2093 | #define UHCSTAT_UPRI (1 << 13) /* USB Port Resume Interrupt */ | ||
2094 | #define UHCSTAT_UPS2 (1 << 12) /* USB Power Sense Port 2 */ | ||
2095 | #define UHCSTAT_UPS1 (1 << 11) /* USB Power Sense Port 1 */ | ||
2096 | #define UHCSTAT_HTA (1 << 10) /* HCI Target Abort */ | ||
2097 | #define UHCSTAT_HBA (1 << 8) /* HCI Buffer Active */ | ||
2098 | #define UHCSTAT_RWUE (1 << 7) /* HCI Remote Wake Up Event */ | ||
2099 | |||
2100 | #define UHCHR __REG(0x4C000064) /* UHC Reset Register */ | ||
2101 | #define UHCHR_SSEP3 (1 << 11) /* Sleep Standby Enable for Port3 */ | ||
2102 | #define UHCHR_SSEP2 (1 << 10) /* Sleep Standby Enable for Port2 */ | ||
2103 | #define UHCHR_SSEP1 (1 << 9) /* Sleep Standby Enable for Port1 */ | ||
2104 | #define UHCHR_PCPL (1 << 7) /* Power control polarity low */ | ||
2105 | #define UHCHR_PSPL (1 << 6) /* Power sense polarity low */ | ||
2106 | #define UHCHR_SSE (1 << 5) /* Sleep Standby Enable */ | ||
2107 | #define UHCHR_UIT (1 << 4) /* USB Interrupt Test */ | ||
2108 | #define UHCHR_SSDC (1 << 3) /* Simulation Scale Down Clock */ | ||
2109 | #define UHCHR_CGR (1 << 2) /* Clock Generation Reset */ | ||
2110 | #define UHCHR_FHR (1 << 1) /* Force Host Controller Reset */ | ||
2111 | #define UHCHR_FSBIR (1 << 0) /* Force System Bus Iface Reset */ | ||
2112 | |||
2113 | #define UHCHIE __REG(0x4C000068) /* UHC Interrupt Enable Register*/ | ||
2114 | #define UHCHIE_UPS3IE (1 << 14) /* Power Sense Port3 IntEn */ | ||
2115 | #define UHCHIE_UPRIE (1 << 13) /* Port Resume IntEn */ | ||
2116 | #define UHCHIE_UPS2IE (1 << 12) /* Power Sense Port2 IntEn */ | ||
2117 | #define UHCHIE_UPS1IE (1 << 11) /* Power Sense Port1 IntEn */ | ||
2118 | #define UHCHIE_TAIE (1 << 10) /* HCI Interface Transfer Abort | ||
2119 | Interrupt Enable*/ | ||
2120 | #define UHCHIE_HBAIE (1 << 8) /* HCI Buffer Active IntEn */ | ||
2121 | #define UHCHIE_RWIE (1 << 7) /* Remote Wake-up IntEn */ | ||
2122 | |||
2123 | #define UHCHIT __REG(0x4C00006C) /* UHC Interrupt Test register */ | ||
2124 | |||
2125 | #endif /* CONFIG_PXA27x || CONFIG_PXA3xx */ | ||
2126 | |||
2353 | /* PWRMODE register M field values */ | 2127 | /* PWRMODE register M field values */ |
2354 | 2128 | ||
2355 | #define PWRMODE_IDLE 0x1 | 2129 | #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..66d54119757c 100644 --- a/include/asm-arm/arch-pxa/pxa3xx-regs.h +++ b/include/asm-arm/arch-pxa/pxa3xx-regs.h | |||
@@ -14,6 +14,92 @@ | |||
14 | #define __ASM_ARCH_PXA3XX_REGS_H | 14 | #define __ASM_ARCH_PXA3XX_REGS_H |
15 | 15 | ||
16 | /* | 16 | /* |
17 | * Slave Power Managment Unit | ||
18 | */ | ||
19 | #define ASCR __REG(0x40f40000) /* Application Subsystem Power Status/Configuration */ | ||
20 | #define ARSR __REG(0x40f40004) /* Application Subsystem Reset Status */ | ||
21 | #define AD3ER __REG(0x40f40008) /* Application Subsystem Wake-Up from D3 Enable */ | ||
22 | #define AD3SR __REG(0x40f4000c) /* Application Subsystem Wake-Up from D3 Status */ | ||
23 | #define AD2D0ER __REG(0x40f40010) /* Application Subsystem Wake-Up from D2 to D0 Enable */ | ||
24 | #define AD2D0SR __REG(0x40f40014) /* Application Subsystem Wake-Up from D2 to D0 Status */ | ||
25 | #define AD2D1ER __REG(0x40f40018) /* Application Subsystem Wake-Up from D2 to D1 Enable */ | ||
26 | #define AD2D1SR __REG(0x40f4001c) /* Application Subsystem Wake-Up from D2 to D1 Status */ | ||
27 | #define AD1D0ER __REG(0x40f40020) /* Application Subsystem Wake-Up from D1 to D0 Enable */ | ||
28 | #define AD1D0SR __REG(0x40f40024) /* Application Subsystem Wake-Up from D1 to D0 Status */ | ||
29 | #define AGENP __REG(0x40f4002c) /* Application Subsystem General Purpose */ | ||
30 | #define AD3R __REG(0x40f40030) /* Application Subsystem D3 Configuration */ | ||
31 | #define AD2R __REG(0x40f40034) /* Application Subsystem D2 Configuration */ | ||
32 | #define AD1R __REG(0x40f40038) /* Application Subsystem D1 Configuration */ | ||
33 | |||
34 | /* | ||
35 | * Application Subsystem Configuration bits. | ||
36 | */ | ||
37 | #define ASCR_RDH (1 << 31) | ||
38 | #define ASCR_D1S (1 << 2) | ||
39 | #define ASCR_D2S (1 << 1) | ||
40 | #define ASCR_D3S (1 << 0) | ||
41 | |||
42 | /* | ||
43 | * Application Reset Status bits. | ||
44 | */ | ||
45 | #define ARSR_GPR (1 << 3) | ||
46 | #define ARSR_LPMR (1 << 2) | ||
47 | #define ARSR_WDT (1 << 1) | ||
48 | #define ARSR_HWR (1 << 0) | ||
49 | |||
50 | /* | ||
51 | * Application Subsystem Wake-Up bits. | ||
52 | */ | ||
53 | #define ADXER_WRTC (1 << 31) /* RTC */ | ||
54 | #define ADXER_WOST (1 << 30) /* OS Timer */ | ||
55 | #define ADXER_WTSI (1 << 29) /* Touchscreen */ | ||
56 | #define ADXER_WUSBH (1 << 28) /* USB host */ | ||
57 | #define ADXER_WUSB2 (1 << 26) /* USB client 2.0 */ | ||
58 | #define ADXER_WMSL0 (1 << 24) /* MSL port 0*/ | ||
59 | #define ADXER_WDMUX3 (1 << 23) /* USB EDMUX3 */ | ||
60 | #define ADXER_WDMUX2 (1 << 22) /* USB EDMUX2 */ | ||
61 | #define ADXER_WKP (1 << 21) /* Keypad */ | ||
62 | #define ADXER_WUSIM1 (1 << 20) /* USIM Port 1 */ | ||
63 | #define ADXER_WUSIM0 (1 << 19) /* USIM Port 0 */ | ||
64 | #define ADXER_WOTG (1 << 16) /* USBOTG input */ | ||
65 | #define ADXER_MFP_WFLASH (1 << 15) /* MFP: Data flash busy */ | ||
66 | #define ADXER_MFP_GEN12 (1 << 14) /* MFP: MMC3/GPIO/OST inputs */ | ||
67 | #define ADXER_MFP_WMMC2 (1 << 13) /* MFP: MMC2 */ | ||
68 | #define ADXER_MFP_WMMC1 (1 << 12) /* MFP: MMC1 */ | ||
69 | #define ADXER_MFP_WI2C (1 << 11) /* MFP: I2C */ | ||
70 | #define ADXER_MFP_WSSP4 (1 << 10) /* MFP: SSP4 */ | ||
71 | #define ADXER_MFP_WSSP3 (1 << 9) /* MFP: SSP3 */ | ||
72 | #define ADXER_MFP_WMAXTRIX (1 << 8) /* MFP: matrix keypad */ | ||
73 | #define ADXER_MFP_WUART3 (1 << 7) /* MFP: UART3 */ | ||
74 | #define ADXER_MFP_WUART2 (1 << 6) /* MFP: UART2 */ | ||
75 | #define ADXER_MFP_WUART1 (1 << 5) /* MFP: UART1 */ | ||
76 | #define ADXER_MFP_WSSP2 (1 << 4) /* MFP: SSP2 */ | ||
77 | #define ADXER_MFP_WSSP1 (1 << 3) /* MFP: SSP1 */ | ||
78 | #define ADXER_MFP_WAC97 (1 << 2) /* MFP: AC97 */ | ||
79 | #define ADXER_WEXTWAKE1 (1 << 1) /* External Wake 1 */ | ||
80 | #define ADXER_WEXTWAKE0 (1 << 0) /* External Wake 0 */ | ||
81 | |||
82 | /* | ||
83 | * AD3R/AD2R/AD1R bits. R2-R5 are only defined for PXA320. | ||
84 | */ | ||
85 | #define ADXR_L2 (1 << 8) | ||
86 | #define ADXR_R5 (1 << 5) | ||
87 | #define ADXR_R4 (1 << 4) | ||
88 | #define ADXR_R3 (1 << 3) | ||
89 | #define ADXR_R2 (1 << 2) | ||
90 | #define ADXR_R1 (1 << 1) | ||
91 | #define ADXR_R0 (1 << 0) | ||
92 | |||
93 | /* | ||
94 | * Values for PWRMODE CP15 register | ||
95 | */ | ||
96 | #define PXA3xx_PM_S3D4C4 0x07 /* aka deep sleep */ | ||
97 | #define PXA3xx_PM_S2D3C4 0x06 /* aka sleep */ | ||
98 | #define PXA3xx_PM_S0D2C2 0x03 /* aka standby */ | ||
99 | #define PXA3xx_PM_S0D1C2 0x02 /* aka LCD refresh */ | ||
100 | #define PXA3xx_PM_S0D0C1 0x01 | ||
101 | |||
102 | /* | ||
17 | * Application Subsystem Clock | 103 | * Application Subsystem Clock |
18 | */ | 104 | */ |
19 | #define ACCR __REG(0x41340000) /* Application Subsystem Clock Configuration Register */ | 105 | #define ACCR __REG(0x41340000) /* Application Subsystem Clock Configuration Register */ |
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 | ||