diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-08 18:33:45 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-08 18:33:45 -0500 |
commit | 04a94babd68952a4e3cdd54ebf8ce8891f9b0f2e (patch) | |
tree | 9d4a01f6b6d0093397c2122c4d85abbb57f3e349 | |
parent | 765cdb6cef63c0b41c3f6c9285769080b3f41bb0 (diff) | |
parent | 920e526f93009a81e09809edb7a755a5b22e907d (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6: (24 commits)
[Blackfin] arch: import defines for BF547 -- it is just like the BF548, but no CAN
[Blackfin] arch: fix build fails only include header files when enabled
[Blackfin] arch: declare default INSTALL_PATH for Blackfin ports
[Blackfin] arch: Encourage users to use the spidev character driver: Provide platform support
[Blackfin] arch: Enable UART2 and UART3 for bf548
[Blackfin] arch: Enable NET2272 on BF561-EZkit - remove request_mem_region
[Blackfin] arch:Fix BUG [#3876] pfbutton test for BTN3 on bf533 don't show complete info
[Blackfin] arch: remove duplicated definitions of the line discipline numbers N_* in asm-blackfin/termios.h
[Blackfin] arch: fix building with mtd uclinux by putting the mtd_phys option into the function it actually gets used in
[Blackfin] arch: simpler header and update dates
[Blackfin] arch: move the init sections to the end of memory
[Blackfin] arch: change the trace buffer control start/stop logic in the exception handlers
[Blackfin] arch: fix typo in printk message
[Blackfin] arch: this is an ezkit, not a stamp, so fixup the init function name
[Blackfin] arch: add slightly better help text for CPLB_INFO
[Blackfin] arch: Fix BUG - Enable ISP1362 driver to work ok with BF561
[Blackfin] arch: Fix header file information
[Blackfin] arch: Add Support for ISP1362
[Blackfin] arch: add support for cmdline partitioning to the BF533-STAMP flash map driver and enable it as a module by default
[Blackfin] arch: hook up set_irq_wake in Blackfin's irq code
...
38 files changed, 3185 insertions, 866 deletions
diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig index ba21e33b8b1f..368bc7fe167e 100644 --- a/arch/blackfin/Kconfig +++ b/arch/blackfin/Kconfig | |||
@@ -544,7 +544,7 @@ config EXCPT_IRQ_SYSC_L1 | |||
544 | default y | 544 | default y |
545 | help | 545 | help |
546 | If enabled, the entire ASM lowlevel exception and interrupt entry code | 546 | If enabled, the entire ASM lowlevel exception and interrupt entry code |
547 | (STORE/RESTORE CONTEXT) is linked into L1 instruction memory. | 547 | (STORE/RESTORE CONTEXT) is linked into L1 instruction memory. |
548 | (less latency) | 548 | (less latency) |
549 | 549 | ||
550 | config DO_IRQ_L1 | 550 | config DO_IRQ_L1 |
@@ -904,29 +904,38 @@ config ARCH_SUSPEND_POSSIBLE | |||
904 | depends on !SMP | 904 | depends on !SMP |
905 | 905 | ||
906 | choice | 906 | choice |
907 | prompt "Select PM Wakeup Event Source" | 907 | prompt "Default Power Saving Mode" |
908 | default PM_WAKEUP_GPIO_BY_SIC_IWR | ||
909 | depends on PM | 908 | depends on PM |
910 | help | 909 | default PM_BFIN_SLEEP_DEEPER |
911 | If you have a GPIO already configured as input with the corresponding PORTx_MASK | 910 | config PM_BFIN_SLEEP_DEEPER |
912 | bit set - "Specify Wakeup Event by SIC_IWR value" | 911 | bool "Sleep Deeper" |
912 | help | ||
913 | Sleep "Deeper" Mode (High Power Savings) - This mode reduces dynamic | ||
914 | power dissipation by disabling the clock to the processor core (CCLK). | ||
915 | Furthermore, Standby sets the internal power supply voltage (VDDINT) | ||
916 | to 0.85 V to provide the greatest power savings, while preserving the | ||
917 | processor state. | ||
918 | The PLL and system clock (SCLK) continue to operate at a very low | ||
919 | frequency of about 3.3 MHz. To preserve data integrity in the SDRAM, | ||
920 | the SDRAM is put into Self Refresh Mode. Typically an external event | ||
921 | such as GPIO interrupt or RTC activity wakes up the processor. | ||
922 | Various Peripherals such as UART, SPORT, PPI may not function as | ||
923 | normal during Sleep Deeper, due to the reduced SCLK frequency. | ||
924 | When in the sleep mode, system DMA access to L1 memory is not supported. | ||
925 | |||
926 | config PM_BFIN_SLEEP | ||
927 | bool "Sleep" | ||
928 | help | ||
929 | Sleep Mode (High Power Savings) - The sleep mode reduces power | ||
930 | dissipation by disabling the clock to the processor core (CCLK). | ||
931 | The PLL and system clock (SCLK), however, continue to operate in | ||
932 | this mode. Typically an external event or RTC activity will wake | ||
933 | up the processor. When in the sleep mode, | ||
934 | system DMA access to L1 memory is not supported. | ||
935 | endchoice | ||
913 | 936 | ||
914 | config PM_WAKEUP_GPIO_BY_SIC_IWR | ||
915 | bool "Specify Wakeup Event by SIC_IWR value" | ||
916 | config PM_WAKEUP_BY_GPIO | 937 | config PM_WAKEUP_BY_GPIO |
917 | bool "Cause Wakeup Event by GPIO" | 938 | bool "Cause Wakeup Event by GPIO" |
918 | config PM_WAKEUP_GPIO_API | ||
919 | bool "Configure Wakeup Event by PM GPIO API" | ||
920 | |||
921 | endchoice | ||
922 | |||
923 | config PM_WAKEUP_SIC_IWR | ||
924 | hex "Wakeup Events (SIC_IWR)" | ||
925 | depends on PM_WAKEUP_GPIO_BY_SIC_IWR | ||
926 | default 0x8 if (BF537 || BF536 || BF534) | ||
927 | default 0x80 if (BF533 || BF532 || BF531) | ||
928 | default 0x80 if (BF54x) | ||
929 | default 0x80 if (BF52x) | ||
930 | 939 | ||
931 | config PM_WAKEUP_GPIO_NUMBER | 940 | config PM_WAKEUP_GPIO_NUMBER |
932 | int "Wakeup GPIO number" | 941 | int "Wakeup GPIO number" |
diff --git a/arch/blackfin/Kconfig.debug b/arch/blackfin/Kconfig.debug index 59b87a483c68..c61bdebb9974 100644 --- a/arch/blackfin/Kconfig.debug +++ b/arch/blackfin/Kconfig.debug | |||
@@ -164,7 +164,7 @@ config DUAL_CORE_TEST_MODULE | |||
164 | config CPLB_INFO | 164 | config CPLB_INFO |
165 | bool "Display the CPLB information" | 165 | bool "Display the CPLB information" |
166 | help | 166 | help |
167 | Display the CPLB information. | 167 | Display the CPLB information via /proc/cplbinfo. |
168 | 168 | ||
169 | config ACCESS_CHECK | 169 | config ACCESS_CHECK |
170 | bool "Check the user pointer address" | 170 | bool "Check the user pointer address" |
diff --git a/arch/blackfin/Makefile b/arch/blackfin/Makefile index 0edc402fef54..fe254f886a6e 100644 --- a/arch/blackfin/Makefile +++ b/arch/blackfin/Makefile | |||
@@ -119,6 +119,7 @@ archclean: | |||
119 | $(Q)$(MAKE) $(clean)=$(boot) | 119 | $(Q)$(MAKE) $(clean)=$(boot) |
120 | 120 | ||
121 | 121 | ||
122 | INSTALL_PATH ?= /tftpboot | ||
122 | boot := arch/$(ARCH)/boot | 123 | boot := arch/$(ARCH)/boot |
123 | BOOT_TARGETS = vmImage | 124 | BOOT_TARGETS = vmImage |
124 | PHONY += $(BOOT_TARGETS) install | 125 | PHONY += $(BOOT_TARGETS) install |
diff --git a/arch/blackfin/configs/BF533-STAMP_defconfig b/arch/blackfin/configs/BF533-STAMP_defconfig index 9b7123cf27a3..198f4123af4b 100644 --- a/arch/blackfin/configs/BF533-STAMP_defconfig +++ b/arch/blackfin/configs/BF533-STAMP_defconfig | |||
@@ -216,8 +216,6 @@ CONFIG_MEM_SIZE=128 | |||
216 | CONFIG_MEM_ADD_WIDTH=11 | 216 | CONFIG_MEM_ADD_WIDTH=11 |
217 | CONFIG_ENET_FLASH_PIN=0 | 217 | CONFIG_ENET_FLASH_PIN=0 |
218 | CONFIG_BOOT_LOAD=0x1000 | 218 | CONFIG_BOOT_LOAD=0x1000 |
219 | |||
220 | |||
221 | CONFIG_BFIN_SCRATCH_REG_RETN=y | 219 | CONFIG_BFIN_SCRATCH_REG_RETN=y |
222 | # CONFIG_BFIN_SCRATCH_REG_RETE is not set | 220 | # CONFIG_BFIN_SCRATCH_REG_RETE is not set |
223 | # CONFIG_BFIN_SCRATCH_REG_CYCLES is not set | 221 | # CONFIG_BFIN_SCRATCH_REG_CYCLES is not set |
@@ -483,7 +481,7 @@ CONFIG_MTD=y | |||
483 | # CONFIG_MTD_CONCAT is not set | 481 | # CONFIG_MTD_CONCAT is not set |
484 | CONFIG_MTD_PARTITIONS=y | 482 | CONFIG_MTD_PARTITIONS=y |
485 | # CONFIG_MTD_REDBOOT_PARTS is not set | 483 | # CONFIG_MTD_REDBOOT_PARTS is not set |
486 | # CONFIG_MTD_CMDLINE_PARTS is not set | 484 | CONFIG_MTD_CMDLINE_PARTS=y |
487 | 485 | ||
488 | # | 486 | # |
489 | # User Modules And Translation Layers | 487 | # User Modules And Translation Layers |
@@ -500,8 +498,8 @@ CONFIG_MTD_BLOCK=y | |||
500 | # | 498 | # |
501 | # RAM/ROM/Flash chip drivers | 499 | # RAM/ROM/Flash chip drivers |
502 | # | 500 | # |
503 | # CONFIG_MTD_CFI is not set | 501 | CONFIG_MTD_CFI=m |
504 | CONFIG_MTD_JEDECPROBE=m | 502 | # CONFIG_MTD_JEDECPROBE is not set |
505 | CONFIG_MTD_GEN_PROBE=m | 503 | CONFIG_MTD_GEN_PROBE=m |
506 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | 504 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set |
507 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | 505 | CONFIG_MTD_MAP_BANK_WIDTH_1=y |
@@ -515,8 +513,9 @@ CONFIG_MTD_CFI_I2=y | |||
515 | # CONFIG_MTD_CFI_I4 is not set | 513 | # CONFIG_MTD_CFI_I4 is not set |
516 | # CONFIG_MTD_CFI_I8 is not set | 514 | # CONFIG_MTD_CFI_I8 is not set |
517 | # CONFIG_MTD_CFI_INTELEXT is not set | 515 | # CONFIG_MTD_CFI_INTELEXT is not set |
518 | # CONFIG_MTD_CFI_AMDSTD is not set | 516 | CONFIG_MTD_CFI_AMDSTD=m |
519 | # CONFIG_MTD_CFI_STAA is not set | 517 | # CONFIG_MTD_CFI_STAA is not set |
518 | CONFIG_MTD_CFI_UTIL=m | ||
520 | CONFIG_MTD_RAM=y | 519 | CONFIG_MTD_RAM=y |
521 | CONFIG_MTD_ROM=m | 520 | CONFIG_MTD_ROM=m |
522 | # CONFIG_MTD_ABSENT is not set | 521 | # CONFIG_MTD_ABSENT is not set |
@@ -526,6 +525,11 @@ CONFIG_MTD_ROM=m | |||
526 | # | 525 | # |
527 | CONFIG_MTD_COMPLEX_MAPPINGS=y | 526 | CONFIG_MTD_COMPLEX_MAPPINGS=y |
528 | # CONFIG_MTD_PHYSMAP is not set | 527 | # CONFIG_MTD_PHYSMAP is not set |
528 | CONFIG_MTD_BF5xx=m | ||
529 | CONFIG_BFIN_FLASH_BANK_0=0x7BB0 | ||
530 | CONFIG_BFIN_FLASH_BANK_1=0x7BB0 | ||
531 | CONFIG_BFIN_FLASH_BANK_2=0x7BB0 | ||
532 | CONFIG_BFIN_FLASH_BANK_3=0x7BB0 | ||
529 | # CONFIG_MTD_UCLINUX is not set | 533 | # CONFIG_MTD_UCLINUX is not set |
530 | # CONFIG_MTD_PLATRAM is not set | 534 | # CONFIG_MTD_PLATRAM is not set |
531 | 535 | ||
diff --git a/arch/blackfin/kernel/bfin_dma_5xx.c b/arch/blackfin/kernel/bfin_dma_5xx.c index fa9debe8d5f4..5453bc3664fc 100644 --- a/arch/blackfin/kernel/bfin_dma_5xx.c +++ b/arch/blackfin/kernel/bfin_dma_5xx.c | |||
@@ -104,6 +104,16 @@ int request_dma(unsigned int channel, char *device_id) | |||
104 | 104 | ||
105 | mutex_unlock(&(dma_ch[channel].dmalock)); | 105 | mutex_unlock(&(dma_ch[channel].dmalock)); |
106 | 106 | ||
107 | #ifdef CONFIG_BF54x | ||
108 | if (channel >= CH_UART2_RX && channel <= CH_UART3_TX && | ||
109 | strncmp(device_id, "BFIN_UART", 9) == 0) | ||
110 | dma_ch[channel].regs->peripheral_map |= | ||
111 | (channel - CH_UART2_RX + 0xC); | ||
112 | else | ||
113 | dma_ch[channel].regs->peripheral_map |= | ||
114 | (channel - CH_UART2_RX + 0x6); | ||
115 | #endif | ||
116 | |||
107 | dma_ch[channel].device_id = device_id; | 117 | dma_ch[channel].device_id = device_id; |
108 | dma_ch[channel].irq_callback = NULL; | 118 | dma_ch[channel].irq_callback = NULL; |
109 | 119 | ||
diff --git a/arch/blackfin/kernel/bfin_gpio.c b/arch/blackfin/kernel/bfin_gpio.c index 6bbe0a2fccb8..08788f7bbfba 100644 --- a/arch/blackfin/kernel/bfin_gpio.c +++ b/arch/blackfin/kernel/bfin_gpio.c | |||
@@ -186,7 +186,7 @@ static struct str_ident { | |||
186 | char name[RESOURCE_LABEL_SIZE]; | 186 | char name[RESOURCE_LABEL_SIZE]; |
187 | } str_ident[MAX_RESOURCES]; | 187 | } str_ident[MAX_RESOURCES]; |
188 | 188 | ||
189 | #ifdef CONFIG_PM | 189 | #if defined(CONFIG_PM) && !defined(CONFIG_BF54x) |
190 | static unsigned short wakeup_map[gpio_bank(MAX_BLACKFIN_GPIOS)]; | 190 | static unsigned short wakeup_map[gpio_bank(MAX_BLACKFIN_GPIOS)]; |
191 | static unsigned char wakeup_flags_map[MAX_BLACKFIN_GPIOS]; | 191 | static unsigned char wakeup_flags_map[MAX_BLACKFIN_GPIOS]; |
192 | static struct gpio_port_s gpio_bank_saved[gpio_bank(MAX_BLACKFIN_GPIOS)]; | 192 | static struct gpio_port_s gpio_bank_saved[gpio_bank(MAX_BLACKFIN_GPIOS)]; |
@@ -696,9 +696,8 @@ static int bfin_gpio_wakeup_type(unsigned gpio, unsigned char type) | |||
696 | return 0; | 696 | return 0; |
697 | } | 697 | } |
698 | 698 | ||
699 | u32 gpio_pm_setup(void) | 699 | u32 bfin_pm_setup(void) |
700 | { | 700 | { |
701 | u32 sic_iwr = 0; | ||
702 | u16 bank, mask, i, gpio; | 701 | u16 bank, mask, i, gpio; |
703 | 702 | ||
704 | for (i = 0; i < MAX_BLACKFIN_GPIOS; i += GPIO_BANKSIZE) { | 703 | for (i = 0; i < MAX_BLACKFIN_GPIOS; i += GPIO_BANKSIZE) { |
@@ -723,7 +722,8 @@ u32 gpio_pm_setup(void) | |||
723 | gpio = i; | 722 | gpio = i; |
724 | 723 | ||
725 | while (mask) { | 724 | while (mask) { |
726 | if (mask & 1) { | 725 | if ((mask & 1) && (wakeup_flags_map[gpio] != |
726 | PM_WAKE_IGNORE)) { | ||
727 | reserved_gpio_map[gpio_bank(gpio)] |= | 727 | reserved_gpio_map[gpio_bank(gpio)] |= |
728 | gpio_bit(gpio); | 728 | gpio_bit(gpio); |
729 | bfin_gpio_wakeup_type(gpio, | 729 | bfin_gpio_wakeup_type(gpio, |
@@ -734,21 +734,17 @@ u32 gpio_pm_setup(void) | |||
734 | mask >>= 1; | 734 | mask >>= 1; |
735 | } | 735 | } |
736 | 736 | ||
737 | sic_iwr |= 1 << | 737 | bfin_internal_set_wake(sic_iwr_irqs[bank], 1); |
738 | (sic_iwr_irqs[bank] - (IRQ_CORETMR + 1)); | ||
739 | gpio_bankb[bank]->maskb_set = wakeup_map[gpio_bank(i)]; | 738 | gpio_bankb[bank]->maskb_set = wakeup_map[gpio_bank(i)]; |
740 | } | 739 | } |
741 | } | 740 | } |
742 | 741 | ||
743 | AWA_DUMMY_READ(maskb_set); | 742 | AWA_DUMMY_READ(maskb_set); |
744 | 743 | ||
745 | if (sic_iwr) | 744 | return 0; |
746 | return sic_iwr; | ||
747 | else | ||
748 | return IWR_ENABLE_ALL; | ||
749 | } | 745 | } |
750 | 746 | ||
751 | void gpio_pm_restore(void) | 747 | void bfin_pm_restore(void) |
752 | { | 748 | { |
753 | u16 bank, mask, i; | 749 | u16 bank, mask, i; |
754 | 750 | ||
@@ -768,7 +764,7 @@ void gpio_pm_restore(void) | |||
768 | 764 | ||
769 | reserved_gpio_map[bank] = | 765 | reserved_gpio_map[bank] = |
770 | gpio_bank_saved[bank].reserved; | 766 | gpio_bank_saved[bank].reserved; |
771 | 767 | bfin_internal_set_wake(sic_iwr_irqs[bank], 0); | |
772 | } | 768 | } |
773 | 769 | ||
774 | gpio_bankb[bank]->maskb = gpio_bank_saved[bank].maskb; | 770 | gpio_bankb[bank]->maskb = gpio_bank_saved[bank].maskb; |
diff --git a/arch/blackfin/kernel/cplb-mpu/cplbinit.c b/arch/blackfin/kernel/cplb-mpu/cplbinit.c index e2e2b5079f5b..dc6e8a7a8bda 100644 --- a/arch/blackfin/kernel/cplb-mpu/cplbinit.c +++ b/arch/blackfin/kernel/cplb-mpu/cplbinit.c | |||
@@ -26,6 +26,10 @@ | |||
26 | #include <asm/cplb.h> | 26 | #include <asm/cplb.h> |
27 | #include <asm/cplbinit.h> | 27 | #include <asm/cplbinit.h> |
28 | 28 | ||
29 | #if ANOMALY_05000263 | ||
30 | # error the MPU will not function safely while Anomaly 05000263 applies | ||
31 | #endif | ||
32 | |||
29 | struct cplb_entry icplb_tbl[MAX_CPLBS]; | 33 | struct cplb_entry icplb_tbl[MAX_CPLBS]; |
30 | struct cplb_entry dcplb_tbl[MAX_CPLBS]; | 34 | struct cplb_entry dcplb_tbl[MAX_CPLBS]; |
31 | 35 | ||
diff --git a/arch/blackfin/kernel/init_task.c b/arch/blackfin/kernel/init_task.c index 673c860ffc23..c640154030e2 100644 --- a/arch/blackfin/kernel/init_task.c +++ b/arch/blackfin/kernel/init_task.c | |||
@@ -57,5 +57,5 @@ EXPORT_SYMBOL(init_task); | |||
57 | * "init_task" linker map entry. | 57 | * "init_task" linker map entry. |
58 | */ | 58 | */ |
59 | union thread_union init_thread_union | 59 | union thread_union init_thread_union |
60 | __attribute__ ((__section__(".data.init_task"))) = { | 60 | __attribute__ ((__section__(".init_task.data"))) = { |
61 | INIT_THREAD_INFO(init_task)}; | 61 | INIT_THREAD_INFO(init_task)}; |
diff --git a/arch/blackfin/kernel/setup.c b/arch/blackfin/kernel/setup.c index 289ea9d7fcdb..8229b1090eb9 100644 --- a/arch/blackfin/kernel/setup.c +++ b/arch/blackfin/kernel/setup.c | |||
@@ -1,30 +1,11 @@ | |||
1 | /* | 1 | /* |
2 | * File: arch/blackfin/kernel/setup.c | 2 | * arch/blackfin/kernel/setup.c |
3 | * Based on: | ||
4 | * Author: | ||
5 | * | 3 | * |
6 | * Created: | 4 | * Copyright 2004-2006 Analog Devices Inc. |
7 | * Description: | ||
8 | * | 5 | * |
9 | * Modified: | 6 | * Enter bugs at http://blackfin.uclinux.org/ |
10 | * Copyright 2004-2006 Analog Devices Inc. | ||
11 | * | 7 | * |
12 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | 8 | * Licensed under the GPL-2 or later. |
13 | * | ||
14 | * This program is free software; you can redistribute it and/or modify | ||
15 | * it under the terms of the GNU General Public License as published by | ||
16 | * the Free Software Foundation; either version 2 of the License, or | ||
17 | * (at your option) any later version. | ||
18 | * | ||
19 | * This program is distributed in the hope that it will be useful, | ||
20 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
21 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
22 | * GNU General Public License for more details. | ||
23 | * | ||
24 | * You should have received a copy of the GNU General Public License | ||
25 | * along with this program; if not, see the file COPYING, or write | ||
26 | * to the Free Software Foundation, Inc., | ||
27 | * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
28 | */ | 9 | */ |
29 | 10 | ||
30 | #include <linux/delay.h> | 11 | #include <linux/delay.h> |
@@ -34,6 +15,7 @@ | |||
34 | #include <linux/cpu.h> | 15 | #include <linux/cpu.h> |
35 | #include <linux/module.h> | 16 | #include <linux/module.h> |
36 | #include <linux/tty.h> | 17 | #include <linux/tty.h> |
18 | #include <linux/pfn.h> | ||
37 | 19 | ||
38 | #include <linux/ext2_fs.h> | 20 | #include <linux/ext2_fs.h> |
39 | #include <linux/cramfs_fs.h> | 21 | #include <linux/cramfs_fs.h> |
@@ -47,6 +29,8 @@ | |||
47 | #include <asm/fixed_code.h> | 29 | #include <asm/fixed_code.h> |
48 | #include <asm/early_printk.h> | 30 | #include <asm/early_printk.h> |
49 | 31 | ||
32 | static DEFINE_PER_CPU(struct cpu, cpu_devices); | ||
33 | |||
50 | u16 _bfin_swrst; | 34 | u16 _bfin_swrst; |
51 | 35 | ||
52 | unsigned long memory_start, memory_end, physical_mem_end; | 36 | unsigned long memory_start, memory_end, physical_mem_end; |
@@ -67,6 +51,29 @@ EXPORT_SYMBOL(mtd_size); | |||
67 | 51 | ||
68 | char __initdata command_line[COMMAND_LINE_SIZE]; | 52 | char __initdata command_line[COMMAND_LINE_SIZE]; |
69 | 53 | ||
54 | /* boot memmap, for parsing "memmap=" */ | ||
55 | #define BFIN_MEMMAP_MAX 128 /* number of entries in bfin_memmap */ | ||
56 | #define BFIN_MEMMAP_RAM 1 | ||
57 | #define BFIN_MEMMAP_RESERVED 2 | ||
58 | struct bfin_memmap { | ||
59 | int nr_map; | ||
60 | struct bfin_memmap_entry { | ||
61 | unsigned long long addr; /* start of memory segment */ | ||
62 | unsigned long long size; | ||
63 | unsigned long type; | ||
64 | } map[BFIN_MEMMAP_MAX]; | ||
65 | } bfin_memmap __initdata; | ||
66 | |||
67 | /* for memmap sanitization */ | ||
68 | struct change_member { | ||
69 | struct bfin_memmap_entry *pentry; /* pointer to original entry */ | ||
70 | unsigned long long addr; /* address for this change point */ | ||
71 | }; | ||
72 | static struct change_member change_point_list[2*BFIN_MEMMAP_MAX] __initdata; | ||
73 | static struct change_member *change_point[2*BFIN_MEMMAP_MAX] __initdata; | ||
74 | static struct bfin_memmap_entry *overlap_list[BFIN_MEMMAP_MAX] __initdata; | ||
75 | static struct bfin_memmap_entry new_map[BFIN_MEMMAP_MAX] __initdata; | ||
76 | |||
70 | void __init bf53x_cache_init(void) | 77 | void __init bf53x_cache_init(void) |
71 | { | 78 | { |
72 | #if defined(CONFIG_BFIN_DCACHE) || defined(CONFIG_BFIN_ICACHE) | 79 | #if defined(CONFIG_BFIN_DCACHE) || defined(CONFIG_BFIN_ICACHE) |
@@ -123,12 +130,224 @@ void __init bf53x_relocate_l1_mem(void) | |||
123 | 130 | ||
124 | } | 131 | } |
125 | 132 | ||
133 | /* add_memory_region to memmap */ | ||
134 | static void __init add_memory_region(unsigned long long start, | ||
135 | unsigned long long size, int type) | ||
136 | { | ||
137 | int i; | ||
138 | |||
139 | i = bfin_memmap.nr_map; | ||
140 | |||
141 | if (i == BFIN_MEMMAP_MAX) { | ||
142 | printk(KERN_ERR "Ooops! Too many entries in the memory map!\n"); | ||
143 | return; | ||
144 | } | ||
145 | |||
146 | bfin_memmap.map[i].addr = start; | ||
147 | bfin_memmap.map[i].size = size; | ||
148 | bfin_memmap.map[i].type = type; | ||
149 | bfin_memmap.nr_map++; | ||
150 | } | ||
151 | |||
152 | /* | ||
153 | * Sanitize the boot memmap, removing overlaps. | ||
154 | */ | ||
155 | static int __init sanitize_memmap(struct bfin_memmap_entry *map, int *pnr_map) | ||
156 | { | ||
157 | struct change_member *change_tmp; | ||
158 | unsigned long current_type, last_type; | ||
159 | unsigned long long last_addr; | ||
160 | int chgidx, still_changing; | ||
161 | int overlap_entries; | ||
162 | int new_entry; | ||
163 | int old_nr, new_nr, chg_nr; | ||
164 | int i; | ||
165 | |||
166 | /* | ||
167 | Visually we're performing the following (1,2,3,4 = memory types) | ||
168 | |||
169 | Sample memory map (w/overlaps): | ||
170 | ____22__________________ | ||
171 | ______________________4_ | ||
172 | ____1111________________ | ||
173 | _44_____________________ | ||
174 | 11111111________________ | ||
175 | ____________________33__ | ||
176 | ___________44___________ | ||
177 | __________33333_________ | ||
178 | ______________22________ | ||
179 | ___________________2222_ | ||
180 | _________111111111______ | ||
181 | _____________________11_ | ||
182 | _________________4______ | ||
183 | |||
184 | Sanitized equivalent (no overlap): | ||
185 | 1_______________________ | ||
186 | _44_____________________ | ||
187 | ___1____________________ | ||
188 | ____22__________________ | ||
189 | ______11________________ | ||
190 | _________1______________ | ||
191 | __________3_____________ | ||
192 | ___________44___________ | ||
193 | _____________33_________ | ||
194 | _______________2________ | ||
195 | ________________1_______ | ||
196 | _________________4______ | ||
197 | ___________________2____ | ||
198 | ____________________33__ | ||
199 | ______________________4_ | ||
200 | */ | ||
201 | /* if there's only one memory region, don't bother */ | ||
202 | if (*pnr_map < 2) | ||
203 | return -1; | ||
204 | |||
205 | old_nr = *pnr_map; | ||
206 | |||
207 | /* bail out if we find any unreasonable addresses in memmap */ | ||
208 | for (i = 0; i < old_nr; i++) | ||
209 | if (map[i].addr + map[i].size < map[i].addr) | ||
210 | return -1; | ||
211 | |||
212 | /* create pointers for initial change-point information (for sorting) */ | ||
213 | for (i = 0; i < 2*old_nr; i++) | ||
214 | change_point[i] = &change_point_list[i]; | ||
215 | |||
216 | /* record all known change-points (starting and ending addresses), | ||
217 | omitting those that are for empty memory regions */ | ||
218 | chgidx = 0; | ||
219 | for (i = 0; i < old_nr; i++) { | ||
220 | if (map[i].size != 0) { | ||
221 | change_point[chgidx]->addr = map[i].addr; | ||
222 | change_point[chgidx++]->pentry = &map[i]; | ||
223 | change_point[chgidx]->addr = map[i].addr + map[i].size; | ||
224 | change_point[chgidx++]->pentry = &map[i]; | ||
225 | } | ||
226 | } | ||
227 | chg_nr = chgidx; /* true number of change-points */ | ||
228 | |||
229 | /* sort change-point list by memory addresses (low -> high) */ | ||
230 | still_changing = 1; | ||
231 | while (still_changing) { | ||
232 | still_changing = 0; | ||
233 | for (i = 1; i < chg_nr; i++) { | ||
234 | /* if <current_addr> > <last_addr>, swap */ | ||
235 | /* or, if current=<start_addr> & last=<end_addr>, swap */ | ||
236 | if ((change_point[i]->addr < change_point[i-1]->addr) || | ||
237 | ((change_point[i]->addr == change_point[i-1]->addr) && | ||
238 | (change_point[i]->addr == change_point[i]->pentry->addr) && | ||
239 | (change_point[i-1]->addr != change_point[i-1]->pentry->addr)) | ||
240 | ) { | ||
241 | change_tmp = change_point[i]; | ||
242 | change_point[i] = change_point[i-1]; | ||
243 | change_point[i-1] = change_tmp; | ||
244 | still_changing = 1; | ||
245 | } | ||
246 | } | ||
247 | } | ||
248 | |||
249 | /* create a new memmap, removing overlaps */ | ||
250 | overlap_entries = 0; /* number of entries in the overlap table */ | ||
251 | new_entry = 0; /* index for creating new memmap entries */ | ||
252 | last_type = 0; /* start with undefined memory type */ | ||
253 | last_addr = 0; /* start with 0 as last starting address */ | ||
254 | /* loop through change-points, determining affect on the new memmap */ | ||
255 | for (chgidx = 0; chgidx < chg_nr; chgidx++) { | ||
256 | /* keep track of all overlapping memmap entries */ | ||
257 | if (change_point[chgidx]->addr == change_point[chgidx]->pentry->addr) { | ||
258 | /* add map entry to overlap list (> 1 entry implies an overlap) */ | ||
259 | overlap_list[overlap_entries++] = change_point[chgidx]->pentry; | ||
260 | } else { | ||
261 | /* remove entry from list (order independent, so swap with last) */ | ||
262 | for (i = 0; i < overlap_entries; i++) { | ||
263 | if (overlap_list[i] == change_point[chgidx]->pentry) | ||
264 | overlap_list[i] = overlap_list[overlap_entries-1]; | ||
265 | } | ||
266 | overlap_entries--; | ||
267 | } | ||
268 | /* if there are overlapping entries, decide which "type" to use */ | ||
269 | /* (larger value takes precedence -- 1=usable, 2,3,4,4+=unusable) */ | ||
270 | current_type = 0; | ||
271 | for (i = 0; i < overlap_entries; i++) | ||
272 | if (overlap_list[i]->type > current_type) | ||
273 | current_type = overlap_list[i]->type; | ||
274 | /* continue building up new memmap based on this information */ | ||
275 | if (current_type != last_type) { | ||
276 | if (last_type != 0) { | ||
277 | new_map[new_entry].size = | ||
278 | change_point[chgidx]->addr - last_addr; | ||
279 | /* move forward only if the new size was non-zero */ | ||
280 | if (new_map[new_entry].size != 0) | ||
281 | if (++new_entry >= BFIN_MEMMAP_MAX) | ||
282 | break; /* no more space left for new entries */ | ||
283 | } | ||
284 | if (current_type != 0) { | ||
285 | new_map[new_entry].addr = change_point[chgidx]->addr; | ||
286 | new_map[new_entry].type = current_type; | ||
287 | last_addr = change_point[chgidx]->addr; | ||
288 | } | ||
289 | last_type = current_type; | ||
290 | } | ||
291 | } | ||
292 | new_nr = new_entry; /* retain count for new entries */ | ||
293 | |||
294 | /* copy new mapping into original location */ | ||
295 | memcpy(map, new_map, new_nr*sizeof(struct bfin_memmap_entry)); | ||
296 | *pnr_map = new_nr; | ||
297 | |||
298 | return 0; | ||
299 | } | ||
300 | |||
301 | static void __init print_memory_map(char *who) | ||
302 | { | ||
303 | int i; | ||
304 | |||
305 | for (i = 0; i < bfin_memmap.nr_map; i++) { | ||
306 | printk(KERN_DEBUG " %s: %016Lx - %016Lx ", who, | ||
307 | bfin_memmap.map[i].addr, | ||
308 | bfin_memmap.map[i].addr + bfin_memmap.map[i].size); | ||
309 | switch (bfin_memmap.map[i].type) { | ||
310 | case BFIN_MEMMAP_RAM: | ||
311 | printk("(usable)\n"); | ||
312 | break; | ||
313 | case BFIN_MEMMAP_RESERVED: | ||
314 | printk("(reserved)\n"); | ||
315 | break; | ||
316 | default: printk("type %lu\n", bfin_memmap.map[i].type); | ||
317 | break; | ||
318 | } | ||
319 | } | ||
320 | } | ||
321 | |||
322 | static __init int parse_memmap(char *arg) | ||
323 | { | ||
324 | unsigned long long start_at, mem_size; | ||
325 | |||
326 | if (!arg) | ||
327 | return -EINVAL; | ||
328 | |||
329 | mem_size = memparse(arg, &arg); | ||
330 | if (*arg == '@') { | ||
331 | start_at = memparse(arg+1, &arg); | ||
332 | add_memory_region(start_at, mem_size, BFIN_MEMMAP_RAM); | ||
333 | } else if (*arg == '$') { | ||
334 | start_at = memparse(arg+1, &arg); | ||
335 | add_memory_region(start_at, mem_size, BFIN_MEMMAP_RESERVED); | ||
336 | } | ||
337 | |||
338 | return 0; | ||
339 | } | ||
340 | |||
126 | /* | 341 | /* |
127 | * Initial parsing of the command line. Currently, we support: | 342 | * Initial parsing of the command line. Currently, we support: |
128 | * - Controlling the linux memory size: mem=xxx[KMG] | 343 | * - Controlling the linux memory size: mem=xxx[KMG] |
129 | * - Controlling the physical memory size: max_mem=xxx[KMG][$][#] | 344 | * - Controlling the physical memory size: max_mem=xxx[KMG][$][#] |
130 | * $ -> reserved memory is dcacheable | 345 | * $ -> reserved memory is dcacheable |
131 | * # -> reserved memory is icacheable | 346 | * # -> reserved memory is icacheable |
347 | * - "memmap=XXX[KkmM][@][$]XXX[KkmM]" defines a memory region | ||
348 | * @ from <start> to <start>+<mem>, type RAM | ||
349 | * $ from <start> to <start>+<mem>, type RESERVED | ||
350 | * | ||
132 | */ | 351 | */ |
133 | static __init void parse_cmdline_early(char *cmdline_p) | 352 | static __init void parse_cmdline_early(char *cmdline_p) |
134 | { | 353 | { |
@@ -136,7 +355,6 @@ static __init void parse_cmdline_early(char *cmdline_p) | |||
136 | unsigned int memsize; | 355 | unsigned int memsize; |
137 | for (;;) { | 356 | for (;;) { |
138 | if (c == ' ') { | 357 | if (c == ' ') { |
139 | |||
140 | if (!memcmp(to, "mem=", 4)) { | 358 | if (!memcmp(to, "mem=", 4)) { |
141 | to += 4; | 359 | to += 4; |
142 | memsize = memparse(to, &to); | 360 | memsize = memparse(to, &to); |
@@ -162,6 +380,9 @@ static __init void parse_cmdline_early(char *cmdline_p) | |||
162 | } else if (!memcmp(to, "earlyprintk=", 12)) { | 380 | } else if (!memcmp(to, "earlyprintk=", 12)) { |
163 | to += 12; | 381 | to += 12; |
164 | setup_early_printk(to); | 382 | setup_early_printk(to); |
383 | } else if (!memcmp(to, "memmap=", 7)) { | ||
384 | to += 7; | ||
385 | parse_memmap(to); | ||
165 | } | 386 | } |
166 | } | 387 | } |
167 | c = *(to++); | 388 | c = *(to++); |
@@ -170,75 +391,36 @@ static __init void parse_cmdline_early(char *cmdline_p) | |||
170 | } | 391 | } |
171 | } | 392 | } |
172 | 393 | ||
173 | void __init setup_arch(char **cmdline_p) | 394 | /* |
395 | * Setup memory defaults from user config. | ||
396 | * The physical memory layout looks like: | ||
397 | * | ||
398 | * [_rambase, _ramstart]: kernel image | ||
399 | * [memory_start, memory_end]: dynamic memory managed by kernel | ||
400 | * [memory_end, _ramend]: reserved memory | ||
401 | * [meory_mtd_start(memory_end), | ||
402 | * memory_mtd_start + mtd_size]: rootfs (if any) | ||
403 | * [_ramend - DMA_UNCACHED_REGION, | ||
404 | * _ramend]: uncached DMA region | ||
405 | * [_ramend, physical_mem_end]: memory not managed by kernel | ||
406 | * | ||
407 | */ | ||
408 | static __init void memory_setup(void) | ||
174 | { | 409 | { |
175 | int bootmap_size; | ||
176 | unsigned long l1_length, sclk, cclk; | ||
177 | #ifdef CONFIG_MTD_UCLINUX | 410 | #ifdef CONFIG_MTD_UCLINUX |
178 | unsigned long mtd_phys = 0; | 411 | unsigned long mtd_phys = 0; |
179 | #endif | 412 | #endif |
180 | 413 | ||
181 | #ifdef CONFIG_DUMMY_CONSOLE | 414 | _rambase = (unsigned long)_stext; |
182 | conswitchp = &dummy_con; | 415 | _ramstart = (unsigned long)_end; |
183 | #endif | ||
184 | |||
185 | #if defined(CONFIG_CMDLINE_BOOL) | ||
186 | strncpy(&command_line[0], CONFIG_CMDLINE, sizeof(command_line)); | ||
187 | command_line[sizeof(command_line) - 1] = 0; | ||
188 | #endif | ||
189 | |||
190 | /* Keep a copy of command line */ | ||
191 | *cmdline_p = &command_line[0]; | ||
192 | memcpy(boot_command_line, command_line, COMMAND_LINE_SIZE); | ||
193 | boot_command_line[COMMAND_LINE_SIZE - 1] = '\0'; | ||
194 | |||
195 | /* setup memory defaults from the user config */ | ||
196 | physical_mem_end = 0; | ||
197 | _ramend = CONFIG_MEM_SIZE * 1024 * 1024; | ||
198 | |||
199 | parse_cmdline_early(&command_line[0]); | ||
200 | |||
201 | cclk = get_cclk(); | ||
202 | sclk = get_sclk(); | ||
203 | |||
204 | #if !defined(CONFIG_BFIN_KERNEL_CLOCK) | ||
205 | if (ANOMALY_05000273 && cclk == sclk) | ||
206 | panic("ANOMALY 05000273, SCLK can not be same as CCLK"); | ||
207 | #endif | ||
208 | 416 | ||
209 | #ifdef BF561_FAMILY | 417 | if (DMA_UNCACHED_REGION > (_ramend - _ramstart)) { |
210 | if (ANOMALY_05000266) { | 418 | console_init(); |
211 | bfin_read_IMDMA_D0_IRQ_STATUS(); | 419 | panic("DMA region exceeds memory limit: %lu.\n", |
212 | bfin_read_IMDMA_D1_IRQ_STATUS(); | 420 | _ramend - _ramstart); |
213 | } | 421 | } |
214 | #endif | ||
215 | |||
216 | printk(KERN_INFO "Hardware Trace "); | ||
217 | if (bfin_read_TBUFCTL() & 0x1 ) | ||
218 | printk("Active "); | ||
219 | else | ||
220 | printk("Off "); | ||
221 | if (bfin_read_TBUFCTL() & 0x2) | ||
222 | printk("and Enabled\n"); | ||
223 | else | ||
224 | printk("and Disabled\n"); | ||
225 | |||
226 | |||
227 | #if defined(CONFIG_CHR_DEV_FLASH) || defined(CONFIG_BLK_DEV_FLASH) | ||
228 | /* we need to initialize the Flashrom device here since we might | ||
229 | * do things with flash early on in the boot | ||
230 | */ | ||
231 | flash_probe(); | ||
232 | #endif | ||
233 | |||
234 | if (physical_mem_end == 0) | ||
235 | physical_mem_end = _ramend; | ||
236 | |||
237 | /* by now the stack is part of the init task */ | ||
238 | memory_end = _ramend - DMA_UNCACHED_REGION; | 422 | memory_end = _ramend - DMA_UNCACHED_REGION; |
239 | 423 | ||
240 | _ramstart = (unsigned long)__bss_stop; | ||
241 | _rambase = (unsigned long)_stext; | ||
242 | #ifdef CONFIG_MPU | 424 | #ifdef CONFIG_MPU |
243 | /* Round up to multiple of 4MB. */ | 425 | /* Round up to multiple of 4MB. */ |
244 | memory_start = (_ramstart + 0x3fffff) & ~0x3fffff; | 426 | memory_start = (_ramstart + 0x3fffff) & ~0x3fffff; |
@@ -292,7 +474,7 @@ void __init setup_arch(char **cmdline_p) | |||
292 | } | 474 | } |
293 | 475 | ||
294 | /* Relocate MTD image to the top of memory after the uncached memory area */ | 476 | /* Relocate MTD image to the top of memory after the uncached memory area */ |
295 | dma_memcpy((char *)memory_end, __bss_stop, mtd_size); | 477 | dma_memcpy((char *)memory_end, _end, mtd_size); |
296 | 478 | ||
297 | memory_mtd_start = memory_end; | 479 | memory_mtd_start = memory_end; |
298 | _ebss = memory_mtd_start; /* define _ebss for compatible */ | 480 | _ebss = memory_mtd_start; /* define _ebss for compatible */ |
@@ -319,13 +501,175 @@ void __init setup_arch(char **cmdline_p) | |||
319 | #endif | 501 | #endif |
320 | 502 | ||
321 | #if !defined(CONFIG_MTD_UCLINUX) | 503 | #if !defined(CONFIG_MTD_UCLINUX) |
322 | memory_end -= SIZE_4K; /*In case there is no valid CPLB behind memory_end make sure we don't get to close*/ | 504 | /*In case there is no valid CPLB behind memory_end make sure we don't get to close*/ |
505 | memory_end -= SIZE_4K; | ||
323 | #endif | 506 | #endif |
507 | |||
324 | init_mm.start_code = (unsigned long)_stext; | 508 | init_mm.start_code = (unsigned long)_stext; |
325 | init_mm.end_code = (unsigned long)_etext; | 509 | init_mm.end_code = (unsigned long)_etext; |
326 | init_mm.end_data = (unsigned long)_edata; | 510 | init_mm.end_data = (unsigned long)_edata; |
327 | init_mm.brk = (unsigned long)0; | 511 | init_mm.brk = (unsigned long)0; |
328 | 512 | ||
513 | printk(KERN_INFO "Board Memory: %ldMB\n", physical_mem_end >> 20); | ||
514 | printk(KERN_INFO "Kernel Managed Memory: %ldMB\n", _ramend >> 20); | ||
515 | |||
516 | printk(KERN_INFO "Memory map:\n" | ||
517 | KERN_INFO " text = 0x%p-0x%p\n" | ||
518 | KERN_INFO " rodata = 0x%p-0x%p\n" | ||
519 | KERN_INFO " bss = 0x%p-0x%p\n" | ||
520 | KERN_INFO " data = 0x%p-0x%p\n" | ||
521 | KERN_INFO " stack = 0x%p-0x%p\n" | ||
522 | KERN_INFO " init = 0x%p-0x%p\n" | ||
523 | KERN_INFO " available = 0x%p-0x%p\n" | ||
524 | #ifdef CONFIG_MTD_UCLINUX | ||
525 | KERN_INFO " rootfs = 0x%p-0x%p\n" | ||
526 | #endif | ||
527 | #if DMA_UNCACHED_REGION > 0 | ||
528 | KERN_INFO " DMA Zone = 0x%p-0x%p\n" | ||
529 | #endif | ||
530 | , _stext, _etext, | ||
531 | __start_rodata, __end_rodata, | ||
532 | __bss_start, __bss_stop, | ||
533 | _sdata, _edata, | ||
534 | (void *)&init_thread_union, | ||
535 | (void *)((int)(&init_thread_union) + 0x2000), | ||
536 | __init_begin, __init_end, | ||
537 | (void *)_ramstart, (void *)memory_end | ||
538 | #ifdef CONFIG_MTD_UCLINUX | ||
539 | , (void *)memory_mtd_start, (void *)(memory_mtd_start + mtd_size) | ||
540 | #endif | ||
541 | #if DMA_UNCACHED_REGION > 0 | ||
542 | , (void *)(_ramend - DMA_UNCACHED_REGION), (void *)(_ramend) | ||
543 | #endif | ||
544 | ); | ||
545 | } | ||
546 | |||
547 | static __init void setup_bootmem_allocator(void) | ||
548 | { | ||
549 | int bootmap_size; | ||
550 | int i; | ||
551 | unsigned long min_pfn, max_pfn; | ||
552 | unsigned long curr_pfn, last_pfn, size; | ||
553 | |||
554 | /* mark memory between memory_start and memory_end usable */ | ||
555 | add_memory_region(memory_start, | ||
556 | memory_end - memory_start, BFIN_MEMMAP_RAM); | ||
557 | /* sanity check for overlap */ | ||
558 | sanitize_memmap(bfin_memmap.map, &bfin_memmap.nr_map); | ||
559 | print_memory_map("boot memmap"); | ||
560 | |||
561 | min_pfn = PAGE_OFFSET >> PAGE_SHIFT; | ||
562 | max_pfn = memory_end >> PAGE_SHIFT; | ||
563 | |||
564 | /* | ||
565 | * give all the memory to the bootmap allocator, tell it to put the | ||
566 | * boot mem_map at the start of memory. | ||
567 | */ | ||
568 | bootmap_size = init_bootmem_node(NODE_DATA(0), | ||
569 | memory_start >> PAGE_SHIFT, /* map goes here */ | ||
570 | min_pfn, max_pfn); | ||
571 | |||
572 | /* register the memmap regions with the bootmem allocator */ | ||
573 | for (i = 0; i < bfin_memmap.nr_map; i++) { | ||
574 | /* | ||
575 | * Reserve usable memory | ||
576 | */ | ||
577 | if (bfin_memmap.map[i].type != BFIN_MEMMAP_RAM) | ||
578 | continue; | ||
579 | /* | ||
580 | * We are rounding up the start address of usable memory: | ||
581 | */ | ||
582 | curr_pfn = PFN_UP(bfin_memmap.map[i].addr); | ||
583 | if (curr_pfn >= max_pfn) | ||
584 | continue; | ||
585 | /* | ||
586 | * ... and at the end of the usable range downwards: | ||
587 | */ | ||
588 | last_pfn = PFN_DOWN(bfin_memmap.map[i].addr + | ||
589 | bfin_memmap.map[i].size); | ||
590 | |||
591 | if (last_pfn > max_pfn) | ||
592 | last_pfn = max_pfn; | ||
593 | |||
594 | /* | ||
595 | * .. finally, did all the rounding and playing | ||
596 | * around just make the area go away? | ||
597 | */ | ||
598 | if (last_pfn <= curr_pfn) | ||
599 | continue; | ||
600 | |||
601 | size = last_pfn - curr_pfn; | ||
602 | free_bootmem(PFN_PHYS(curr_pfn), PFN_PHYS(size)); | ||
603 | } | ||
604 | |||
605 | /* reserve memory before memory_start, including bootmap */ | ||
606 | reserve_bootmem(PAGE_OFFSET, | ||
607 | memory_start + bootmap_size + PAGE_SIZE - 1 - PAGE_OFFSET, | ||
608 | BOOTMEM_DEFAULT); | ||
609 | } | ||
610 | |||
611 | void __init setup_arch(char **cmdline_p) | ||
612 | { | ||
613 | unsigned long l1_length, sclk, cclk; | ||
614 | |||
615 | #ifdef CONFIG_DUMMY_CONSOLE | ||
616 | conswitchp = &dummy_con; | ||
617 | #endif | ||
618 | |||
619 | #if defined(CONFIG_CMDLINE_BOOL) | ||
620 | strncpy(&command_line[0], CONFIG_CMDLINE, sizeof(command_line)); | ||
621 | command_line[sizeof(command_line) - 1] = 0; | ||
622 | #endif | ||
623 | |||
624 | /* Keep a copy of command line */ | ||
625 | *cmdline_p = &command_line[0]; | ||
626 | memcpy(boot_command_line, command_line, COMMAND_LINE_SIZE); | ||
627 | boot_command_line[COMMAND_LINE_SIZE - 1] = '\0'; | ||
628 | |||
629 | /* setup memory defaults from the user config */ | ||
630 | physical_mem_end = 0; | ||
631 | _ramend = CONFIG_MEM_SIZE * 1024 * 1024; | ||
632 | |||
633 | memset(&bfin_memmap, 0, sizeof(bfin_memmap)); | ||
634 | |||
635 | parse_cmdline_early(&command_line[0]); | ||
636 | |||
637 | if (physical_mem_end == 0) | ||
638 | physical_mem_end = _ramend; | ||
639 | |||
640 | memory_setup(); | ||
641 | |||
642 | cclk = get_cclk(); | ||
643 | sclk = get_sclk(); | ||
644 | |||
645 | #if !defined(CONFIG_BFIN_KERNEL_CLOCK) | ||
646 | if (ANOMALY_05000273 && cclk == sclk) | ||
647 | panic("ANOMALY 05000273, SCLK can not be same as CCLK"); | ||
648 | #endif | ||
649 | |||
650 | #ifdef BF561_FAMILY | ||
651 | if (ANOMALY_05000266) { | ||
652 | bfin_read_IMDMA_D0_IRQ_STATUS(); | ||
653 | bfin_read_IMDMA_D1_IRQ_STATUS(); | ||
654 | } | ||
655 | #endif | ||
656 | printk(KERN_INFO "Hardware Trace "); | ||
657 | if (bfin_read_TBUFCTL() & 0x1) | ||
658 | printk("Active "); | ||
659 | else | ||
660 | printk("Off "); | ||
661 | if (bfin_read_TBUFCTL() & 0x2) | ||
662 | printk("and Enabled\n"); | ||
663 | else | ||
664 | printk("and Disabled\n"); | ||
665 | |||
666 | #if defined(CONFIG_CHR_DEV_FLASH) || defined(CONFIG_BLK_DEV_FLASH) | ||
667 | /* we need to initialize the Flashrom device here since we might | ||
668 | * do things with flash early on in the boot | ||
669 | */ | ||
670 | flash_probe(); | ||
671 | #endif | ||
672 | |||
329 | _bfin_swrst = bfin_read_SWRST(); | 673 | _bfin_swrst = bfin_read_SWRST(); |
330 | 674 | ||
331 | if (_bfin_swrst & RESET_DOUBLE) | 675 | if (_bfin_swrst & RESET_DOUBLE) |
@@ -335,7 +679,7 @@ void __init setup_arch(char **cmdline_p) | |||
335 | else if (_bfin_swrst & RESET_SOFTWARE) | 679 | else if (_bfin_swrst & RESET_SOFTWARE) |
336 | printk(KERN_NOTICE "Reset caused by Software reset\n"); | 680 | printk(KERN_NOTICE "Reset caused by Software reset\n"); |
337 | 681 | ||
338 | printk(KERN_INFO "Blackfin support (C) 2004-2007 Analog Devices, Inc.\n"); | 682 | printk(KERN_INFO "Blackfin support (C) 2004-2008 Analog Devices, Inc.\n"); |
339 | if (bfin_compiled_revid() == 0xffff) | 683 | if (bfin_compiled_revid() == 0xffff) |
340 | printk(KERN_INFO "Compiled for ADSP-%s Rev any\n", CPU); | 684 | printk(KERN_INFO "Compiled for ADSP-%s Rev any\n", CPU); |
341 | else if (bfin_compiled_revid() == -1) | 685 | else if (bfin_compiled_revid() == -1) |
@@ -361,55 +705,8 @@ void __init setup_arch(char **cmdline_p) | |||
361 | if (ANOMALY_05000273 && (cclk >> 1) <= sclk) | 705 | if (ANOMALY_05000273 && (cclk >> 1) <= sclk) |
362 | printk("\n\n\nANOMALY_05000273: CCLK must be >= 2*SCLK !!!\n\n\n"); | 706 | printk("\n\n\nANOMALY_05000273: CCLK must be >= 2*SCLK !!!\n\n\n"); |
363 | 707 | ||
364 | printk(KERN_INFO "Board Memory: %ldMB\n", physical_mem_end >> 20); | 708 | setup_bootmem_allocator(); |
365 | printk(KERN_INFO "Kernel Managed Memory: %ldMB\n", _ramend >> 20); | ||
366 | |||
367 | printk(KERN_INFO "Memory map:\n" | ||
368 | KERN_INFO " text = 0x%p-0x%p\n" | ||
369 | KERN_INFO " rodata = 0x%p-0x%p\n" | ||
370 | KERN_INFO " data = 0x%p-0x%p\n" | ||
371 | KERN_INFO " stack = 0x%p-0x%p\n" | ||
372 | KERN_INFO " init = 0x%p-0x%p\n" | ||
373 | KERN_INFO " bss = 0x%p-0x%p\n" | ||
374 | KERN_INFO " available = 0x%p-0x%p\n" | ||
375 | #ifdef CONFIG_MTD_UCLINUX | ||
376 | KERN_INFO " rootfs = 0x%p-0x%p\n" | ||
377 | #endif | ||
378 | #if DMA_UNCACHED_REGION > 0 | ||
379 | KERN_INFO " DMA Zone = 0x%p-0x%p\n" | ||
380 | #endif | ||
381 | , _stext, _etext, | ||
382 | __start_rodata, __end_rodata, | ||
383 | _sdata, _edata, | ||
384 | (void *)&init_thread_union, (void *)((int)(&init_thread_union) + 0x2000), | ||
385 | __init_begin, __init_end, | ||
386 | __bss_start, __bss_stop, | ||
387 | (void *)_ramstart, (void *)memory_end | ||
388 | #ifdef CONFIG_MTD_UCLINUX | ||
389 | , (void *)memory_mtd_start, (void *)(memory_mtd_start + mtd_size) | ||
390 | #endif | ||
391 | #if DMA_UNCACHED_REGION > 0 | ||
392 | , (void *)(_ramend - DMA_UNCACHED_REGION), (void *)(_ramend) | ||
393 | #endif | ||
394 | ); | ||
395 | 709 | ||
396 | /* | ||
397 | * give all the memory to the bootmap allocator, tell it to put the | ||
398 | * boot mem_map at the start of memory | ||
399 | */ | ||
400 | bootmap_size = init_bootmem_node(NODE_DATA(0), memory_start >> PAGE_SHIFT, /* map goes here */ | ||
401 | PAGE_OFFSET >> PAGE_SHIFT, | ||
402 | memory_end >> PAGE_SHIFT); | ||
403 | /* | ||
404 | * free the usable memory, we have to make sure we do not free | ||
405 | * the bootmem bitmap so we then reserve it after freeing it :-) | ||
406 | */ | ||
407 | free_bootmem(memory_start, memory_end - memory_start); | ||
408 | |||
409 | reserve_bootmem(memory_start, bootmap_size, BOOTMEM_DEFAULT); | ||
410 | /* | ||
411 | * get kmalloc into gear | ||
412 | */ | ||
413 | paging_init(); | 710 | paging_init(); |
414 | 711 | ||
415 | /* check the size of the l1 area */ | 712 | /* check the size of the l1 area */ |
@@ -450,15 +747,15 @@ void __init setup_arch(char **cmdline_p) | |||
450 | 747 | ||
451 | static int __init topology_init(void) | 748 | static int __init topology_init(void) |
452 | { | 749 | { |
453 | #if defined (CONFIG_BF561) | 750 | int cpu; |
454 | static struct cpu cpu[2]; | 751 | |
455 | register_cpu(&cpu[0], 0); | 752 | for_each_possible_cpu(cpu) { |
456 | register_cpu(&cpu[1], 1); | 753 | struct cpu *c = &per_cpu(cpu_devices, cpu); |
754 | |||
755 | register_cpu(c, cpu); | ||
756 | } | ||
757 | |||
457 | return 0; | 758 | return 0; |
458 | #else | ||
459 | static struct cpu cpu[1]; | ||
460 | return register_cpu(cpu, 0); | ||
461 | #endif | ||
462 | } | 759 | } |
463 | 760 | ||
464 | subsys_initcall(topology_init); | 761 | subsys_initcall(topology_init); |
diff --git a/arch/blackfin/kernel/traps.c b/arch/blackfin/kernel/traps.c index 66b5f3e3ae2a..58717cb19707 100644 --- a/arch/blackfin/kernel/traps.c +++ b/arch/blackfin/kernel/traps.c | |||
@@ -649,7 +649,7 @@ void dump_bfin_process(struct pt_regs *fp) | |||
649 | if (context & 0x0020 && (fp->seqstat & SEQSTAT_EXCAUSE) == VEC_HWERR) | 649 | if (context & 0x0020 && (fp->seqstat & SEQSTAT_EXCAUSE) == VEC_HWERR) |
650 | printk(KERN_NOTICE "HW Error context\n"); | 650 | printk(KERN_NOTICE "HW Error context\n"); |
651 | else if (context & 0x0020) | 651 | else if (context & 0x0020) |
652 | printk(KERN_NOTICE "Defered Exception context\n"); | 652 | printk(KERN_NOTICE "Deferred Exception context\n"); |
653 | else if (context & 0x3FC0) | 653 | else if (context & 0x3FC0) |
654 | printk(KERN_NOTICE "Interrupt context\n"); | 654 | printk(KERN_NOTICE "Interrupt context\n"); |
655 | else if (context & 0x4000) | 655 | else if (context & 0x4000) |
diff --git a/arch/blackfin/kernel/vmlinux.lds.S b/arch/blackfin/kernel/vmlinux.lds.S index 858722421b40..aed832540b3b 100644 --- a/arch/blackfin/kernel/vmlinux.lds.S +++ b/arch/blackfin/kernel/vmlinux.lds.S | |||
@@ -41,6 +41,9 @@ _jiffies = _jiffies_64; | |||
41 | SECTIONS | 41 | SECTIONS |
42 | { | 42 | { |
43 | . = CONFIG_BOOT_LOAD; | 43 | . = CONFIG_BOOT_LOAD; |
44 | /* Neither the text, ro_data or bss section need to be aligned | ||
45 | * So pack them back to back | ||
46 | */ | ||
44 | .text : | 47 | .text : |
45 | { | 48 | { |
46 | __text = .; | 49 | __text = .; |
@@ -58,22 +61,25 @@ SECTIONS | |||
58 | *(__ex_table) | 61 | *(__ex_table) |
59 | ___stop___ex_table = .; | 62 | ___stop___ex_table = .; |
60 | 63 | ||
61 | . = ALIGN(4); | ||
62 | __etext = .; | 64 | __etext = .; |
63 | } | 65 | } |
64 | 66 | ||
65 | RO_DATA(PAGE_SIZE) | 67 | /* Just in case the first read only is a 32-bit access */ |
68 | RO_DATA(4) | ||
69 | |||
70 | .bss : | ||
71 | { | ||
72 | . = ALIGN(4); | ||
73 | ___bss_start = .; | ||
74 | *(.bss .bss.*) | ||
75 | *(COMMON) | ||
76 | ___bss_stop = .; | ||
77 | } | ||
66 | 78 | ||
67 | .data : | 79 | .data : |
68 | { | 80 | { |
69 | /* make sure the init_task is aligned to the | ||
70 | * kernel thread size so we can locate the kernel | ||
71 | * stack properly and quickly. | ||
72 | */ | ||
73 | __sdata = .; | 81 | __sdata = .; |
74 | . = ALIGN(THREAD_SIZE); | 82 | /* This gets done first, so the glob doesn't suck it in */ |
75 | *(.data.init_task) | ||
76 | |||
77 | . = ALIGN(32); | 83 | . = ALIGN(32); |
78 | *(.data.cacheline_aligned) | 84 | *(.data.cacheline_aligned) |
79 | 85 | ||
@@ -81,10 +87,22 @@ SECTIONS | |||
81 | *(.data.*) | 87 | *(.data.*) |
82 | CONSTRUCTORS | 88 | CONSTRUCTORS |
83 | 89 | ||
90 | /* make sure the init_task is aligned to the | ||
91 | * kernel thread size so we can locate the kernel | ||
92 | * stack properly and quickly. | ||
93 | */ | ||
84 | . = ALIGN(THREAD_SIZE); | 94 | . = ALIGN(THREAD_SIZE); |
95 | *(.init_task.data) | ||
96 | |||
85 | __edata = .; | 97 | __edata = .; |
86 | } | 98 | } |
87 | 99 | ||
100 | /* The init section should be last, so when we free it, it goes into | ||
101 | * the general memory pool, and (hopefully) will decrease fragmentation | ||
102 | * a tiny bit. The init section has a _requirement_ that it be | ||
103 | * PAGE_SIZE aligned | ||
104 | */ | ||
105 | . = ALIGN(PAGE_SIZE); | ||
88 | ___init_begin = .; | 106 | ___init_begin = .; |
89 | 107 | ||
90 | .init.text : | 108 | .init.text : |
@@ -179,16 +197,7 @@ SECTIONS | |||
179 | . = ALIGN(PAGE_SIZE); | 197 | . = ALIGN(PAGE_SIZE); |
180 | ___init_end = .; | 198 | ___init_end = .; |
181 | 199 | ||
182 | .bss : | 200 | __end =.; |
183 | { | ||
184 | . = ALIGN(4); | ||
185 | ___bss_start = .; | ||
186 | *(.bss .bss.*) | ||
187 | *(COMMON) | ||
188 | . = ALIGN(4); | ||
189 | ___bss_stop = .; | ||
190 | __end = .; | ||
191 | } | ||
192 | 201 | ||
193 | STABS_DEBUG | 202 | STABS_DEBUG |
194 | 203 | ||
diff --git a/arch/blackfin/mach-bf527/boards/ezkit.c b/arch/blackfin/mach-bf527/boards/ezkit.c index 1795aab79064..337515fba612 100644 --- a/arch/blackfin/mach-bf527/boards/ezkit.c +++ b/arch/blackfin/mach-bf527/boards/ezkit.c | |||
@@ -41,7 +41,9 @@ | |||
41 | #include <linux/irq.h> | 41 | #include <linux/irq.h> |
42 | #include <linux/interrupt.h> | 42 | #include <linux/interrupt.h> |
43 | #include <linux/usb/sl811.h> | 43 | #include <linux/usb/sl811.h> |
44 | #if defined(CONFIG_USB_MUSB_HDRC) || defined(CONFIG_USB_MUSB_HDRC_MODULE) | ||
44 | #include <linux/usb/musb.h> | 45 | #include <linux/usb/musb.h> |
46 | #endif | ||
45 | #include <asm/cplb.h> | 47 | #include <asm/cplb.h> |
46 | #include <asm/dma.h> | 48 | #include <asm/dma.h> |
47 | #include <asm/bfin5xx_spi.h> | 49 | #include <asm/bfin5xx_spi.h> |
@@ -517,6 +519,14 @@ static struct bfin5xx_spi_chip spi_wm8731_chip_info = { | |||
517 | .bits_per_word = 16, | 519 | .bits_per_word = 16, |
518 | }; | 520 | }; |
519 | #endif | 521 | #endif |
522 | |||
523 | #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) | ||
524 | static struct bfin5xx_spi_chip spidev_chip_info = { | ||
525 | .enable_dma = 0, | ||
526 | .bits_per_word = 8, | ||
527 | }; | ||
528 | #endif | ||
529 | |||
520 | static struct spi_board_info bfin_spi_board_info[] __initdata = { | 530 | static struct spi_board_info bfin_spi_board_info[] __initdata = { |
521 | #if defined(CONFIG_MTD_M25P80) \ | 531 | #if defined(CONFIG_MTD_M25P80) \ |
522 | || defined(CONFIG_MTD_M25P80_MODULE) | 532 | || defined(CONFIG_MTD_M25P80_MODULE) |
@@ -634,6 +644,15 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
634 | .mode = SPI_MODE_0, | 644 | .mode = SPI_MODE_0, |
635 | }, | 645 | }, |
636 | #endif | 646 | #endif |
647 | #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) | ||
648 | { | ||
649 | .modalias = "spidev", | ||
650 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | ||
651 | .bus_num = 0, | ||
652 | .chip_select = 1, | ||
653 | .controller_data = &spidev_chip_info, | ||
654 | }, | ||
655 | #endif | ||
637 | }; | 656 | }; |
638 | 657 | ||
639 | /* SPI controller data */ | 658 | /* SPI controller data */ |
diff --git a/arch/blackfin/mach-bf533/boards/ezkit.c b/arch/blackfin/mach-bf533/boards/ezkit.c index 4026c2f3ab4e..2b09aa39f565 100644 --- a/arch/blackfin/mach-bf533/boards/ezkit.c +++ b/arch/blackfin/mach-bf533/boards/ezkit.c | |||
@@ -34,7 +34,9 @@ | |||
34 | #include <linux/mtd/partitions.h> | 34 | #include <linux/mtd/partitions.h> |
35 | #include <linux/spi/spi.h> | 35 | #include <linux/spi/spi.h> |
36 | #include <linux/spi/flash.h> | 36 | #include <linux/spi/flash.h> |
37 | #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) | ||
37 | #include <linux/usb/isp1362.h> | 38 | #include <linux/usb/isp1362.h> |
39 | #endif | ||
38 | #include <linux/ata_platform.h> | 40 | #include <linux/ata_platform.h> |
39 | #include <linux/irq.h> | 41 | #include <linux/irq.h> |
40 | #include <asm/dma.h> | 42 | #include <asm/dma.h> |
@@ -134,6 +136,13 @@ static struct bfin5xx_spi_chip ad1836_spi_chip_info = { | |||
134 | }; | 136 | }; |
135 | #endif | 137 | #endif |
136 | 138 | ||
139 | #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) | ||
140 | static struct bfin5xx_spi_chip spidev_chip_info = { | ||
141 | .enable_dma = 0, | ||
142 | .bits_per_word = 8, | ||
143 | }; | ||
144 | #endif | ||
145 | |||
137 | static struct spi_board_info bfin_spi_board_info[] __initdata = { | 146 | static struct spi_board_info bfin_spi_board_info[] __initdata = { |
138 | #if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE) | 147 | #if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE) |
139 | { | 148 | { |
@@ -168,6 +177,15 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
168 | .controller_data = &ad1836_spi_chip_info, | 177 | .controller_data = &ad1836_spi_chip_info, |
169 | }, | 178 | }, |
170 | #endif | 179 | #endif |
180 | #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) | ||
181 | { | ||
182 | .modalias = "spidev", | ||
183 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | ||
184 | .bus_num = 0, | ||
185 | .chip_select = 1, | ||
186 | .controller_data = &spidev_chip_info, | ||
187 | }, | ||
188 | #endif | ||
171 | }; | 189 | }; |
172 | 190 | ||
173 | /* SPI (0) */ | 191 | /* SPI (0) */ |
diff --git a/arch/blackfin/mach-bf533/boards/stamp.c b/arch/blackfin/mach-bf533/boards/stamp.c index 0185350feacc..a645f6fd091b 100644 --- a/arch/blackfin/mach-bf533/boards/stamp.c +++ b/arch/blackfin/mach-bf533/boards/stamp.c | |||
@@ -226,6 +226,13 @@ static struct bfin5xx_spi_chip spi_mmc_chip_info = { | |||
226 | }; | 226 | }; |
227 | #endif | 227 | #endif |
228 | 228 | ||
229 | #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) | ||
230 | static struct bfin5xx_spi_chip spidev_chip_info = { | ||
231 | .enable_dma = 0, | ||
232 | .bits_per_word = 8, | ||
233 | }; | ||
234 | #endif | ||
235 | |||
229 | static struct spi_board_info bfin_spi_board_info[] __initdata = { | 236 | static struct spi_board_info bfin_spi_board_info[] __initdata = { |
230 | #if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE) | 237 | #if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE) |
231 | { | 238 | { |
@@ -312,6 +319,15 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
312 | .mode = SPI_MODE_2, | 319 | .mode = SPI_MODE_2, |
313 | }, | 320 | }, |
314 | #endif | 321 | #endif |
322 | #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) | ||
323 | { | ||
324 | .modalias = "spidev", | ||
325 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | ||
326 | .bus_num = 0, | ||
327 | .chip_select = 1, | ||
328 | .controller_data = &spidev_chip_info, | ||
329 | }, | ||
330 | #endif | ||
315 | }; | 331 | }; |
316 | 332 | ||
317 | /* SPI (0) */ | 333 | /* SPI (0) */ |
@@ -423,9 +439,9 @@ static struct platform_device bfin_pata_device = { | |||
423 | #include <linux/gpio_keys.h> | 439 | #include <linux/gpio_keys.h> |
424 | 440 | ||
425 | static struct gpio_keys_button bfin_gpio_keys_table[] = { | 441 | static struct gpio_keys_button bfin_gpio_keys_table[] = { |
426 | {BTN_0, GPIO_PF5, 1, "gpio-keys: BTN0"}, | 442 | {BTN_0, GPIO_PF5, 0, "gpio-keys: BTN0"}, |
427 | {BTN_1, GPIO_PF6, 1, "gpio-keys: BTN1"}, | 443 | {BTN_1, GPIO_PF6, 0, "gpio-keys: BTN1"}, |
428 | {BTN_2, GPIO_PF8, 1, "gpio-keys: BTN2"}, | 444 | {BTN_2, GPIO_PF8, 0, "gpio-keys: BTN2"}, |
429 | }; | 445 | }; |
430 | 446 | ||
431 | static struct gpio_keys_platform_data bfin_gpio_keys_data = { | 447 | static struct gpio_keys_platform_data bfin_gpio_keys_data = { |
diff --git a/arch/blackfin/mach-bf537/boards/stamp.c b/arch/blackfin/mach-bf537/boards/stamp.c index 119e6ea83384..9e2277e0d25c 100644 --- a/arch/blackfin/mach-bf537/boards/stamp.c +++ b/arch/blackfin/mach-bf537/boards/stamp.c | |||
@@ -487,6 +487,13 @@ static const struct ad7877_platform_data bfin_ad7877_ts_info = { | |||
487 | }; | 487 | }; |
488 | #endif | 488 | #endif |
489 | 489 | ||
490 | #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) | ||
491 | static struct bfin5xx_spi_chip spidev_chip_info = { | ||
492 | .enable_dma = 0, | ||
493 | .bits_per_word = 8, | ||
494 | }; | ||
495 | #endif | ||
496 | |||
490 | static struct spi_board_info bfin_spi_board_info[] __initdata = { | 497 | static struct spi_board_info bfin_spi_board_info[] __initdata = { |
491 | #if defined(CONFIG_MTD_M25P80) \ | 498 | #if defined(CONFIG_MTD_M25P80) \ |
492 | || defined(CONFIG_MTD_M25P80_MODULE) | 499 | || defined(CONFIG_MTD_M25P80_MODULE) |
@@ -593,6 +600,15 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
593 | .controller_data = &spi_ad7877_chip_info, | 600 | .controller_data = &spi_ad7877_chip_info, |
594 | }, | 601 | }, |
595 | #endif | 602 | #endif |
603 | #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) | ||
604 | { | ||
605 | .modalias = "spidev", | ||
606 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | ||
607 | .bus_num = 0, | ||
608 | .chip_select = 1, | ||
609 | .controller_data = &spidev_chip_info, | ||
610 | }, | ||
611 | #endif | ||
596 | }; | 612 | }; |
597 | 613 | ||
598 | /* SPI controller data */ | 614 | /* SPI controller data */ |
diff --git a/arch/blackfin/mach-bf548/boards/ezkit.c b/arch/blackfin/mach-bf548/boards/ezkit.c index 14860f04d1bd..916e963e83ba 100644 --- a/arch/blackfin/mach-bf548/boards/ezkit.c +++ b/arch/blackfin/mach-bf548/boards/ezkit.c | |||
@@ -37,7 +37,9 @@ | |||
37 | #include <linux/spi/flash.h> | 37 | #include <linux/spi/flash.h> |
38 | #include <linux/irq.h> | 38 | #include <linux/irq.h> |
39 | #include <linux/interrupt.h> | 39 | #include <linux/interrupt.h> |
40 | #if defined(CONFIG_USB_MUSB_HDRC) || defined(CONFIG_USB_MUSB_HDRC_MODULE) | ||
40 | #include <linux/usb/musb.h> | 41 | #include <linux/usb/musb.h> |
42 | #endif | ||
41 | #include <asm/bfin5xx_spi.h> | 43 | #include <asm/bfin5xx_spi.h> |
42 | #include <asm/cplb.h> | 44 | #include <asm/cplb.h> |
43 | #include <asm/dma.h> | 45 | #include <asm/dma.h> |
@@ -420,6 +422,13 @@ static const struct ad7877_platform_data bfin_ad7877_ts_info = { | |||
420 | }; | 422 | }; |
421 | #endif | 423 | #endif |
422 | 424 | ||
425 | #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) | ||
426 | static struct bfin5xx_spi_chip spidev_chip_info = { | ||
427 | .enable_dma = 0, | ||
428 | .bits_per_word = 8, | ||
429 | }; | ||
430 | #endif | ||
431 | |||
423 | static struct spi_board_info bf54x_spi_board_info[] __initdata = { | 432 | static struct spi_board_info bf54x_spi_board_info[] __initdata = { |
424 | #if defined(CONFIG_MTD_M25P80) \ | 433 | #if defined(CONFIG_MTD_M25P80) \ |
425 | || defined(CONFIG_MTD_M25P80_MODULE) | 434 | || defined(CONFIG_MTD_M25P80_MODULE) |
@@ -445,6 +454,15 @@ static struct spi_board_info bf54x_spi_board_info[] __initdata = { | |||
445 | .controller_data = &spi_ad7877_chip_info, | 454 | .controller_data = &spi_ad7877_chip_info, |
446 | }, | 455 | }, |
447 | #endif | 456 | #endif |
457 | #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) | ||
458 | { | ||
459 | .modalias = "spidev", | ||
460 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | ||
461 | .bus_num = 0, | ||
462 | .chip_select = 1, | ||
463 | .controller_data = &spidev_chip_info, | ||
464 | }, | ||
465 | #endif | ||
448 | }; | 466 | }; |
449 | 467 | ||
450 | /* SPI (0) */ | 468 | /* SPI (0) */ |
@@ -631,7 +649,7 @@ static struct platform_device *ezkit_devices[] __initdata = { | |||
631 | &ezkit_flash_device, | 649 | &ezkit_flash_device, |
632 | }; | 650 | }; |
633 | 651 | ||
634 | static int __init stamp_init(void) | 652 | static int __init ezkit_init(void) |
635 | { | 653 | { |
636 | printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); | 654 | printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); |
637 | platform_add_devices(ezkit_devices, ARRAY_SIZE(ezkit_devices)); | 655 | platform_add_devices(ezkit_devices, ARRAY_SIZE(ezkit_devices)); |
@@ -644,4 +662,4 @@ static int __init stamp_init(void) | |||
644 | return 0; | 662 | return 0; |
645 | } | 663 | } |
646 | 664 | ||
647 | arch_initcall(stamp_init); | 665 | arch_initcall(ezkit_init); |
diff --git a/arch/blackfin/mach-bf548/dma.c b/arch/blackfin/mach-bf548/dma.c index 957bf1366eff..374803a8d2e8 100644 --- a/arch/blackfin/mach-bf548/dma.c +++ b/arch/blackfin/mach-bf548/dma.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * File: arch/blackfin/mach-bf561/dma.c | 2 | * File: arch/blackfin/mach-bf548/dma.c |
3 | * Based on: | 3 | * Based on: |
4 | * Author: | 4 | * Author: |
5 | * | 5 | * |
@@ -7,7 +7,7 @@ | |||
7 | * Description: This file contains the simple DMA Implementation for Blackfin | 7 | * Description: This file contains the simple DMA Implementation for Blackfin |
8 | * | 8 | * |
9 | * Modified: | 9 | * Modified: |
10 | * Copyright 2004-2007 Analog Devices Inc. | 10 | * Copyright 2004-2008 Analog Devices Inc. |
11 | * | 11 | * |
12 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | 12 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ |
13 | * | 13 | * |
diff --git a/arch/blackfin/mach-bf561/boards/ezkit.c b/arch/blackfin/mach-bf561/boards/ezkit.c index ed863ce9a2d8..43c1b0982819 100644 --- a/arch/blackfin/mach-bf561/boards/ezkit.c +++ b/arch/blackfin/mach-bf561/boards/ezkit.c | |||
@@ -92,6 +92,68 @@ void __exit bfin_isp1761_exit(void) | |||
92 | arch_initcall(bfin_isp1761_init); | 92 | arch_initcall(bfin_isp1761_init); |
93 | #endif | 93 | #endif |
94 | 94 | ||
95 | #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) | ||
96 | #include <linux/usb/isp1362.h> | ||
97 | |||
98 | static struct resource isp1362_hcd_resources[] = { | ||
99 | { | ||
100 | .start = 0x2c060000, | ||
101 | .end = 0x2c060000, | ||
102 | .flags = IORESOURCE_MEM, | ||
103 | }, { | ||
104 | .start = 0x2c060004, | ||
105 | .end = 0x2c060004, | ||
106 | .flags = IORESOURCE_MEM, | ||
107 | }, { | ||
108 | .start = IRQ_PF8, | ||
109 | .end = IRQ_PF8, | ||
110 | .flags = IORESOURCE_IRQ, | ||
111 | }, | ||
112 | }; | ||
113 | |||
114 | static struct isp1362_platform_data isp1362_priv = { | ||
115 | .sel15Kres = 1, | ||
116 | .clknotstop = 0, | ||
117 | .oc_enable = 0, | ||
118 | .int_act_high = 0, | ||
119 | .int_edge_triggered = 0, | ||
120 | .remote_wakeup_connected = 0, | ||
121 | .no_power_switching = 1, | ||
122 | .power_switching_mode = 0, | ||
123 | }; | ||
124 | |||
125 | static struct platform_device isp1362_hcd_device = { | ||
126 | .name = "isp1362-hcd", | ||
127 | .id = 0, | ||
128 | .dev = { | ||
129 | .platform_data = &isp1362_priv, | ||
130 | }, | ||
131 | .num_resources = ARRAY_SIZE(isp1362_hcd_resources), | ||
132 | .resource = isp1362_hcd_resources, | ||
133 | }; | ||
134 | #endif | ||
135 | |||
136 | #if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE) | ||
137 | static struct resource net2272_bfin_resources[] = { | ||
138 | { | ||
139 | .start = 0x2C000000, | ||
140 | .end = 0x2C000000 + 0x7F, | ||
141 | .flags = IORESOURCE_MEM, | ||
142 | }, { | ||
143 | .start = IRQ_PF10, | ||
144 | .end = IRQ_PF10, | ||
145 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL, | ||
146 | }, | ||
147 | }; | ||
148 | |||
149 | static struct platform_device net2272_bfin_device = { | ||
150 | .name = "net2272", | ||
151 | .id = -1, | ||
152 | .num_resources = ARRAY_SIZE(net2272_bfin_resources), | ||
153 | .resource = net2272_bfin_resources, | ||
154 | }; | ||
155 | #endif | ||
156 | |||
95 | /* | 157 | /* |
96 | * USB-LAN EzExtender board | 158 | * USB-LAN EzExtender board |
97 | * Driver needs to know address, irq and flag pin. | 159 | * Driver needs to know address, irq and flag pin. |
@@ -204,6 +266,13 @@ static struct bfin5xx_spi_chip ad1836_spi_chip_info = { | |||
204 | .bits_per_word = 16, | 266 | .bits_per_word = 16, |
205 | }; | 267 | }; |
206 | #endif | 268 | #endif |
269 | |||
270 | #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) | ||
271 | static struct bfin5xx_spi_chip spidev_chip_info = { | ||
272 | .enable_dma = 0, | ||
273 | .bits_per_word = 8, | ||
274 | }; | ||
275 | #endif | ||
207 | #endif | 276 | #endif |
208 | 277 | ||
209 | /* SPI (0) */ | 278 | /* SPI (0) */ |
@@ -248,6 +317,15 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
248 | .controller_data = &ad1836_spi_chip_info, | 317 | .controller_data = &ad1836_spi_chip_info, |
249 | }, | 318 | }, |
250 | #endif | 319 | #endif |
320 | #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) | ||
321 | { | ||
322 | .modalias = "spidev", | ||
323 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | ||
324 | .bus_num = 0, | ||
325 | .chip_select = 1, | ||
326 | .controller_data = &spidev_chip_info, | ||
327 | }, | ||
328 | #endif | ||
251 | }; | 329 | }; |
252 | 330 | ||
253 | #if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE) | 331 | #if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE) |
@@ -340,6 +418,10 @@ static struct platform_device *ezkit_devices[] __initdata = { | |||
340 | &ax88180_device, | 418 | &ax88180_device, |
341 | #endif | 419 | #endif |
342 | 420 | ||
421 | #if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE) | ||
422 | &net2272_bfin_device, | ||
423 | #endif | ||
424 | |||
343 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | 425 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) |
344 | &bfin_spi0_device, | 426 | &bfin_spi0_device, |
345 | #endif | 427 | #endif |
@@ -359,6 +441,11 @@ static struct platform_device *ezkit_devices[] __initdata = { | |||
359 | #if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE) | 441 | #if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE) |
360 | &i2c_gpio_device, | 442 | &i2c_gpio_device, |
361 | #endif | 443 | #endif |
444 | |||
445 | #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) | ||
446 | &isp1362_hcd_device, | ||
447 | #endif | ||
448 | |||
362 | &ezkit_flash_device, | 449 | &ezkit_flash_device, |
363 | }; | 450 | }; |
364 | 451 | ||
diff --git a/arch/blackfin/mach-common/Makefile b/arch/blackfin/mach-common/Makefile index 8636d4284bdb..15e33ca1ce80 100644 --- a/arch/blackfin/mach-common/Makefile +++ b/arch/blackfin/mach-common/Makefile | |||
@@ -4,8 +4,6 @@ | |||
4 | 4 | ||
5 | obj-y := \ | 5 | obj-y := \ |
6 | cache.o cacheinit.o entry.o \ | 6 | cache.o cacheinit.o entry.o \ |
7 | interrupt.o lock.o irqpanic.o arch_checks.o | 7 | interrupt.o lock.o irqpanic.o arch_checks.o ints-priority.o |
8 | 8 | ||
9 | obj-$(CONFIG_BFIN_SINGLE_CORE) += ints-priority-sc.o | ||
10 | obj-$(CONFIG_BFIN_DUAL_CORE) += ints-priority-dc.o | ||
11 | obj-$(CONFIG_PM) += pm.o dpmc.o | 9 | obj-$(CONFIG_PM) += pm.o dpmc.o |
diff --git a/arch/blackfin/mach-common/dpmc.S b/arch/blackfin/mach-common/dpmc.S index b82c096e1980..b80ddd8b232d 100644 --- a/arch/blackfin/mach-common/dpmc.S +++ b/arch/blackfin/mach-common/dpmc.S | |||
@@ -191,6 +191,9 @@ ENTRY(_sleep_mode) | |||
191 | call _test_pll_locked; | 191 | call _test_pll_locked; |
192 | 192 | ||
193 | R0 = IWR_ENABLE(0); | 193 | R0 = IWR_ENABLE(0); |
194 | R1 = IWR_DISABLE_ALL; | ||
195 | R2 = IWR_DISABLE_ALL; | ||
196 | |||
194 | call _set_sic_iwr; | 197 | call _set_sic_iwr; |
195 | 198 | ||
196 | P0.H = hi(PLL_CTL); | 199 | P0.H = hi(PLL_CTL); |
@@ -237,6 +240,10 @@ ENTRY(_deep_sleep) | |||
237 | 240 | ||
238 | CLI R4; | 241 | CLI R4; |
239 | 242 | ||
243 | R0 = IWR_ENABLE(0); | ||
244 | R1 = IWR_DISABLE_ALL; | ||
245 | R2 = IWR_DISABLE_ALL; | ||
246 | |||
240 | call _set_sic_iwr; | 247 | call _set_sic_iwr; |
241 | 248 | ||
242 | call _set_dram_srfs; | 249 | call _set_dram_srfs; |
@@ -261,6 +268,9 @@ ENTRY(_deep_sleep) | |||
261 | call _test_pll_locked; | 268 | call _test_pll_locked; |
262 | 269 | ||
263 | R0 = IWR_ENABLE(0); | 270 | R0 = IWR_ENABLE(0); |
271 | R1 = IWR_DISABLE_ALL; | ||
272 | R2 = IWR_DISABLE_ALL; | ||
273 | |||
264 | call _set_sic_iwr; | 274 | call _set_sic_iwr; |
265 | 275 | ||
266 | P0.H = hi(PLL_CTL); | 276 | P0.H = hi(PLL_CTL); |
@@ -286,7 +296,13 @@ ENTRY(_sleep_deeper) | |||
286 | CLI R4; | 296 | CLI R4; |
287 | 297 | ||
288 | P3 = R0; | 298 | P3 = R0; |
299 | P4 = R1; | ||
300 | P5 = R2; | ||
301 | |||
289 | R0 = IWR_ENABLE(0); | 302 | R0 = IWR_ENABLE(0); |
303 | R1 = IWR_DISABLE_ALL; | ||
304 | R2 = IWR_DISABLE_ALL; | ||
305 | |||
290 | call _set_sic_iwr; | 306 | call _set_sic_iwr; |
291 | call _set_dram_srfs; /* Set SDRAM Self Refresh */ | 307 | call _set_dram_srfs; /* Set SDRAM Self Refresh */ |
292 | 308 | ||
@@ -327,6 +343,8 @@ ENTRY(_sleep_deeper) | |||
327 | call _test_pll_locked; | 343 | call _test_pll_locked; |
328 | 344 | ||
329 | R0 = P3; | 345 | R0 = P3; |
346 | R1 = P4; | ||
347 | R3 = P5; | ||
330 | call _set_sic_iwr; /* Set Awake from IDLE */ | 348 | call _set_sic_iwr; /* Set Awake from IDLE */ |
331 | 349 | ||
332 | P0.H = hi(PLL_CTL); | 350 | P0.H = hi(PLL_CTL); |
@@ -340,6 +358,9 @@ ENTRY(_sleep_deeper) | |||
340 | call _test_pll_locked; | 358 | call _test_pll_locked; |
341 | 359 | ||
342 | R0 = IWR_ENABLE(0); | 360 | R0 = IWR_ENABLE(0); |
361 | R1 = IWR_DISABLE_ALL; | ||
362 | R2 = IWR_DISABLE_ALL; | ||
363 | |||
343 | call _set_sic_iwr; /* Set Awake from IDLE PLL */ | 364 | call _set_sic_iwr; /* Set Awake from IDLE PLL */ |
344 | 365 | ||
345 | P0.H = hi(VR_CTL); | 366 | P0.H = hi(VR_CTL); |
@@ -417,14 +438,23 @@ ENTRY(_unset_dram_srfs) | |||
417 | RTS; | 438 | RTS; |
418 | 439 | ||
419 | ENTRY(_set_sic_iwr) | 440 | ENTRY(_set_sic_iwr) |
420 | #if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) | 441 | #if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) || defined(CONFIG_BF561) |
421 | P0.H = hi(SIC_IWR0); | 442 | P0.H = hi(SIC_IWR0); |
422 | P0.L = lo(SIC_IWR0); | 443 | P0.L = lo(SIC_IWR0); |
444 | P1.H = hi(SIC_IWR1); | ||
445 | P1.L = lo(SIC_IWR1); | ||
446 | [P1] = R1; | ||
447 | #if defined(CONFIG_BF54x) | ||
448 | P1.H = hi(SIC_IWR2); | ||
449 | P1.L = lo(SIC_IWR2); | ||
450 | [P1] = R2; | ||
451 | #endif | ||
423 | #else | 452 | #else |
424 | P0.H = hi(SIC_IWR); | 453 | P0.H = hi(SIC_IWR); |
425 | P0.L = lo(SIC_IWR); | 454 | P0.L = lo(SIC_IWR); |
426 | #endif | 455 | #endif |
427 | [P0] = R0; | 456 | [P0] = R0; |
457 | |||
428 | SSYNC; | 458 | SSYNC; |
429 | RTS; | 459 | RTS; |
430 | 460 | ||
diff --git a/arch/blackfin/mach-common/entry.S b/arch/blackfin/mach-common/entry.S index fdd9bf43361e..2cbb7a0bc38e 100644 --- a/arch/blackfin/mach-common/entry.S +++ b/arch/blackfin/mach-common/entry.S | |||
@@ -121,6 +121,7 @@ ENTRY(_ex_icplb_miss) | |||
121 | (R7:6,P5:4) = [sp++]; | 121 | (R7:6,P5:4) = [sp++]; |
122 | ASTAT = [sp++]; | 122 | ASTAT = [sp++]; |
123 | SAVE_ALL_SYS | 123 | SAVE_ALL_SYS |
124 | DEBUG_HWTRACE_SAVE(p5, r7) | ||
124 | #ifdef CONFIG_MPU | 125 | #ifdef CONFIG_MPU |
125 | R0 = SEQSTAT; | 126 | R0 = SEQSTAT; |
126 | R1 = SP; | 127 | R1 = SP; |
@@ -132,14 +133,13 @@ ENTRY(_ex_icplb_miss) | |||
132 | #else | 133 | #else |
133 | call __cplb_hdr; | 134 | call __cplb_hdr; |
134 | #endif | 135 | #endif |
135 | DEBUG_START_HWTRACE(p5, r7) | 136 | DEBUG_HWTRACE_RESTORE(p5, r7) |
136 | RESTORE_ALL_SYS | 137 | RESTORE_ALL_SYS |
137 | SP = EX_SCRATCH_REG; | 138 | SP = EX_SCRATCH_REG; |
138 | rtx; | 139 | rtx; |
139 | ENDPROC(_ex_icplb_miss) | 140 | ENDPROC(_ex_icplb_miss) |
140 | 141 | ||
141 | ENTRY(_ex_syscall) | 142 | ENTRY(_ex_syscall) |
142 | DEBUG_START_HWTRACE(p5, r7) | ||
143 | (R7:6,P5:4) = [sp++]; | 143 | (R7:6,P5:4) = [sp++]; |
144 | ASTAT = [sp++]; | 144 | ASTAT = [sp++]; |
145 | raise 15; /* invoked by TRAP #0, for sys call */ | 145 | raise 15; /* invoked by TRAP #0, for sys call */ |
@@ -178,7 +178,6 @@ ENTRY(_ex_single_step) | |||
178 | ENDPROC(_ex_single_step) | 178 | ENDPROC(_ex_single_step) |
179 | 179 | ||
180 | ENTRY(_bfin_return_from_exception) | 180 | ENTRY(_bfin_return_from_exception) |
181 | DEBUG_START_HWTRACE(p5, r7) | ||
182 | #if ANOMALY_05000257 | 181 | #if ANOMALY_05000257 |
183 | R7=LC0; | 182 | R7=LC0; |
184 | LC0=R7; | 183 | LC0=R7; |
@@ -200,10 +199,9 @@ ENTRY(_handle_bad_cplb) | |||
200 | * need to make a CPLB exception look like a normal exception | 199 | * need to make a CPLB exception look like a normal exception |
201 | */ | 200 | */ |
202 | 201 | ||
203 | DEBUG_START_HWTRACE(p5, r7) | ||
204 | RESTORE_ALL_SYS | 202 | RESTORE_ALL_SYS |
205 | [--sp] = ASTAT; | 203 | [--sp] = ASTAT; |
206 | [--sp] = (R7:6, P5:4); | 204 | [--sp] = (R7:6,P5:4); |
207 | 205 | ||
208 | ENTRY(_ex_replaceable) | 206 | ENTRY(_ex_replaceable) |
209 | nop; | 207 | nop; |
@@ -253,7 +251,6 @@ ENTRY(_ex_trap_c) | |||
253 | R6 = SEQSTAT; | 251 | R6 = SEQSTAT; |
254 | [P5] = R6; | 252 | [P5] = R6; |
255 | 253 | ||
256 | DEBUG_START_HWTRACE(p5, r7) | ||
257 | (R7:6,P5:4) = [sp++]; | 254 | (R7:6,P5:4) = [sp++]; |
258 | ASTAT = [sp++]; | 255 | ASTAT = [sp++]; |
259 | SP = EX_SCRATCH_REG; | 256 | SP = EX_SCRATCH_REG; |
@@ -382,8 +379,7 @@ ENTRY(_trap) /* Exception: 4th entry into system event table(supervisor mode)*/ | |||
382 | sp.h = _exception_stack_top; | 379 | sp.h = _exception_stack_top; |
383 | /* Try to deal with syscalls quickly. */ | 380 | /* Try to deal with syscalls quickly. */ |
384 | [--sp] = ASTAT; | 381 | [--sp] = ASTAT; |
385 | [--sp] = (R7:6, P5:4); | 382 | [--sp] = (R7:6,P5:4); |
386 | DEBUG_STOP_HWTRACE(p5, r7) | ||
387 | r7 = SEQSTAT; /* reason code is in bit 5:0 */ | 383 | r7 = SEQSTAT; /* reason code is in bit 5:0 */ |
388 | r6.l = lo(SEQSTAT_EXCAUSE); | 384 | r6.l = lo(SEQSTAT_EXCAUSE); |
389 | r6.h = hi(SEQSTAT_EXCAUSE); | 385 | r6.h = hi(SEQSTAT_EXCAUSE); |
diff --git a/arch/blackfin/mach-common/ints-priority-dc.c b/arch/blackfin/mach-common/ints-priority-dc.c deleted file mode 100644 index 8d18d6b163bb..000000000000 --- a/arch/blackfin/mach-common/ints-priority-dc.c +++ /dev/null | |||
@@ -1,484 +0,0 @@ | |||
1 | /* | ||
2 | * File: arch/blackfin/mach-common/ints-priority-dc.c | ||
3 | * Based on: | ||
4 | * Author: | ||
5 | * | ||
6 | * Created: ? | ||
7 | * Description: Set up the interrupt priorities | ||
8 | * | ||
9 | * Modified: | ||
10 | * 1996 Roman Zippel | ||
11 | * 1999 D. Jeff Dionne <jeff@uclinux.org> | ||
12 | * 2000-2001 Lineo, Inc. D. Jefff Dionne <jeff@lineo.ca> | ||
13 | * 2002 Arcturus Networks Inc. MaTed <mated@sympatico.ca> | ||
14 | * 2003 Metrowerks/Motorola | ||
15 | * 2003 Bas Vermeulen <bas@buyways.nl> | ||
16 | * Copyright 2004-2006 Analog Devices Inc. | ||
17 | * | ||
18 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | ||
19 | * | ||
20 | * This program is free software; you can redistribute it and/or modify | ||
21 | * it under the terms of the GNU General Public License as published by | ||
22 | * the Free Software Foundation; either version 2 of the License, or | ||
23 | * (at your option) any later version. | ||
24 | * | ||
25 | * This program is distributed in the hope that it will be useful, | ||
26 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
27 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
28 | * GNU General Public License for more details. | ||
29 | * | ||
30 | * You should have received a copy of the GNU General Public License | ||
31 | * along with this program; if not, see the file COPYING, or write | ||
32 | * to the Free Software Foundation, Inc., | ||
33 | * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
34 | */ | ||
35 | |||
36 | #include <linux/module.h> | ||
37 | #include <linux/kernel_stat.h> | ||
38 | #include <linux/seq_file.h> | ||
39 | #include <linux/irq.h> | ||
40 | #ifdef CONFIG_KGDB | ||
41 | #include <linux/kgdb.h> | ||
42 | #endif | ||
43 | #include <asm/traps.h> | ||
44 | #include <asm/blackfin.h> | ||
45 | #include <asm/gpio.h> | ||
46 | #include <asm/irq_handler.h> | ||
47 | |||
48 | /* | ||
49 | * NOTES: | ||
50 | * - we have separated the physical Hardware interrupt from the | ||
51 | * levels that the LINUX kernel sees (see the description in irq.h) | ||
52 | * - | ||
53 | */ | ||
54 | |||
55 | /* Initialize this to an actual value to force it into the .data | ||
56 | * section so that we know it is properly initialized at entry into | ||
57 | * the kernel but before bss is initialized to zero (which is where | ||
58 | * it would live otherwise). The 0x1f magic represents the IRQs we | ||
59 | * cannot actually mask out in hardware. | ||
60 | */ | ||
61 | unsigned long irq_flags = 0x1f; | ||
62 | |||
63 | /* The number of spurious interrupts */ | ||
64 | atomic_t num_spurious; | ||
65 | |||
66 | struct ivgx { | ||
67 | /* irq number for request_irq, available in mach-bf561/irq.h */ | ||
68 | int irqno; | ||
69 | /* corresponding bit in the SICA_ISR0 register */ | ||
70 | int isrflag0; | ||
71 | /* corresponding bit in the SICA_ISR1 register */ | ||
72 | int isrflag1; | ||
73 | } ivg_table[NR_PERI_INTS]; | ||
74 | |||
75 | struct ivg_slice { | ||
76 | /* position of first irq in ivg_table for given ivg */ | ||
77 | struct ivgx *ifirst; | ||
78 | struct ivgx *istop; | ||
79 | } ivg7_13[IVG13 - IVG7 + 1]; | ||
80 | |||
81 | static void search_IAR(void); | ||
82 | |||
83 | /* | ||
84 | * Search SIC_IAR and fill tables with the irqvalues | ||
85 | * and their positions in the SIC_ISR register. | ||
86 | */ | ||
87 | static void __init search_IAR(void) | ||
88 | { | ||
89 | unsigned ivg, irq_pos = 0; | ||
90 | for (ivg = 0; ivg <= IVG13 - IVG7; ivg++) { | ||
91 | int irqn; | ||
92 | |||
93 | ivg7_13[ivg].istop = ivg7_13[ivg].ifirst = &ivg_table[irq_pos]; | ||
94 | |||
95 | for (irqn = 0; irqn < NR_PERI_INTS; irqn++) { | ||
96 | int iar_shift = (irqn & 7) * 4; | ||
97 | if (ivg == | ||
98 | (0xf & | ||
99 | bfin_read32((unsigned long *)SICA_IAR0 + | ||
100 | (irqn >> 3)) >> iar_shift)) { | ||
101 | ivg_table[irq_pos].irqno = IVG7 + irqn; | ||
102 | ivg_table[irq_pos].isrflag0 = | ||
103 | (irqn < 32 ? (1 << irqn) : 0); | ||
104 | ivg_table[irq_pos].isrflag1 = | ||
105 | (irqn < 32 ? 0 : (1 << (irqn - 32))); | ||
106 | ivg7_13[ivg].istop++; | ||
107 | irq_pos++; | ||
108 | } | ||
109 | } | ||
110 | } | ||
111 | } | ||
112 | |||
113 | /* | ||
114 | * This is for BF561 internal IRQs | ||
115 | */ | ||
116 | |||
117 | static void ack_noop(unsigned int irq) | ||
118 | { | ||
119 | /* Dummy function. */ | ||
120 | } | ||
121 | |||
122 | static void bf561_core_mask_irq(unsigned int irq) | ||
123 | { | ||
124 | irq_flags &= ~(1 << irq); | ||
125 | if (!irqs_disabled()) | ||
126 | local_irq_enable(); | ||
127 | } | ||
128 | |||
129 | static void bf561_core_unmask_irq(unsigned int irq) | ||
130 | { | ||
131 | irq_flags |= 1 << irq; | ||
132 | /* | ||
133 | * If interrupts are enabled, IMASK must contain the same value | ||
134 | * as irq_flags. Make sure that invariant holds. If interrupts | ||
135 | * are currently disabled we need not do anything; one of the | ||
136 | * callers will take care of setting IMASK to the proper value | ||
137 | * when reenabling interrupts. | ||
138 | * local_irq_enable just does "STI irq_flags", so it's exactly | ||
139 | * what we need. | ||
140 | */ | ||
141 | if (!irqs_disabled()) | ||
142 | local_irq_enable(); | ||
143 | return; | ||
144 | } | ||
145 | |||
146 | static void bf561_internal_mask_irq(unsigned int irq) | ||
147 | { | ||
148 | unsigned long irq_mask; | ||
149 | if ((irq - (IRQ_CORETMR + 1)) < 32) { | ||
150 | irq_mask = (1 << (irq - (IRQ_CORETMR + 1))); | ||
151 | bfin_write_SICA_IMASK0(bfin_read_SICA_IMASK0() & ~irq_mask); | ||
152 | } else { | ||
153 | irq_mask = (1 << (irq - (IRQ_CORETMR + 1) - 32)); | ||
154 | bfin_write_SICA_IMASK1(bfin_read_SICA_IMASK1() & ~irq_mask); | ||
155 | } | ||
156 | } | ||
157 | |||
158 | static void bf561_internal_unmask_irq(unsigned int irq) | ||
159 | { | ||
160 | unsigned long irq_mask; | ||
161 | |||
162 | if ((irq - (IRQ_CORETMR + 1)) < 32) { | ||
163 | irq_mask = (1 << (irq - (IRQ_CORETMR + 1))); | ||
164 | bfin_write_SICA_IMASK0(bfin_read_SICA_IMASK0() | irq_mask); | ||
165 | } else { | ||
166 | irq_mask = (1 << (irq - (IRQ_CORETMR + 1) - 32)); | ||
167 | bfin_write_SICA_IMASK1(bfin_read_SICA_IMASK1() | irq_mask); | ||
168 | } | ||
169 | SSYNC(); | ||
170 | } | ||
171 | |||
172 | static struct irq_chip bf561_core_irqchip = { | ||
173 | .ack = ack_noop, | ||
174 | .mask = bf561_core_mask_irq, | ||
175 | .unmask = bf561_core_unmask_irq, | ||
176 | }; | ||
177 | |||
178 | static struct irq_chip bf561_internal_irqchip = { | ||
179 | .ack = ack_noop, | ||
180 | .mask = bf561_internal_mask_irq, | ||
181 | .unmask = bf561_internal_unmask_irq, | ||
182 | }; | ||
183 | |||
184 | static unsigned short gpio_enabled[gpio_bank(MAX_BLACKFIN_GPIOS)]; | ||
185 | static unsigned short gpio_edge_triggered[gpio_bank(MAX_BLACKFIN_GPIOS)]; | ||
186 | |||
187 | static void bf561_gpio_ack_irq(unsigned int irq) | ||
188 | { | ||
189 | u16 gpionr = irq - IRQ_PF0; | ||
190 | |||
191 | if (gpio_edge_triggered[gpio_bank(gpionr)] & gpio_bit(gpionr)) { | ||
192 | set_gpio_data(gpionr, 0); | ||
193 | SSYNC(); | ||
194 | } | ||
195 | } | ||
196 | |||
197 | static void bf561_gpio_mask_ack_irq(unsigned int irq) | ||
198 | { | ||
199 | u16 gpionr = irq - IRQ_PF0; | ||
200 | |||
201 | if (gpio_edge_triggered[gpio_bank(gpionr)] & gpio_bit(gpionr)) { | ||
202 | set_gpio_data(gpionr, 0); | ||
203 | SSYNC(); | ||
204 | } | ||
205 | |||
206 | set_gpio_maska(gpionr, 0); | ||
207 | SSYNC(); | ||
208 | } | ||
209 | |||
210 | static void bf561_gpio_mask_irq(unsigned int irq) | ||
211 | { | ||
212 | set_gpio_maska(irq - IRQ_PF0, 0); | ||
213 | SSYNC(); | ||
214 | } | ||
215 | |||
216 | static void bf561_gpio_unmask_irq(unsigned int irq) | ||
217 | { | ||
218 | set_gpio_maska(irq - IRQ_PF0, 1); | ||
219 | SSYNC(); | ||
220 | } | ||
221 | |||
222 | static unsigned int bf561_gpio_irq_startup(unsigned int irq) | ||
223 | { | ||
224 | unsigned int ret; | ||
225 | char buf[8]; | ||
226 | u16 gpionr = irq - IRQ_PF0; | ||
227 | |||
228 | if (!(gpio_enabled[gpio_bank(gpionr)] & gpio_bit(gpionr))) { | ||
229 | snprintf(buf, sizeof buf, "IRQ %d", irq); | ||
230 | ret = gpio_request(gpionr, buf); | ||
231 | if (ret) | ||
232 | return ret; | ||
233 | |||
234 | } | ||
235 | |||
236 | gpio_enabled[gpio_bank(gpionr)] |= gpio_bit(gpionr); | ||
237 | bf561_gpio_unmask_irq(irq); | ||
238 | |||
239 | return ret; | ||
240 | |||
241 | } | ||
242 | |||
243 | static void bf561_gpio_irq_shutdown(unsigned int irq) | ||
244 | { | ||
245 | bf561_gpio_mask_irq(irq); | ||
246 | gpio_free(irq - IRQ_PF0); | ||
247 | gpio_enabled[gpio_bank(irq - IRQ_PF0)] &= ~gpio_bit(irq - IRQ_PF0); | ||
248 | } | ||
249 | |||
250 | static int bf561_gpio_irq_type(unsigned int irq, unsigned int type) | ||
251 | { | ||
252 | |||
253 | unsigned int ret; | ||
254 | char buf[8]; | ||
255 | u16 gpionr = irq - IRQ_PF0; | ||
256 | |||
257 | |||
258 | if (type == IRQ_TYPE_PROBE) { | ||
259 | /* only probe unenabled GPIO interrupt lines */ | ||
260 | if (gpio_enabled[gpio_bank(gpionr)] & gpio_bit(gpionr)) | ||
261 | return 0; | ||
262 | type = IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING; | ||
263 | |||
264 | } | ||
265 | |||
266 | if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING | | ||
267 | IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_LEVEL_LOW)) { | ||
268 | |||
269 | if (!(gpio_enabled[gpio_bank(gpionr)] & gpio_bit(gpionr))) { | ||
270 | snprintf(buf, sizeof buf, "IRQ %d", irq); | ||
271 | ret = gpio_request(gpionr, buf); | ||
272 | if (ret) | ||
273 | return ret; | ||
274 | |||
275 | } | ||
276 | |||
277 | gpio_enabled[gpio_bank(gpionr)] |= gpio_bit(gpionr); | ||
278 | } else { | ||
279 | gpio_enabled[gpio_bank(gpionr)] &= ~gpio_bit(gpionr); | ||
280 | return 0; | ||
281 | } | ||
282 | |||
283 | |||
284 | set_gpio_dir(gpionr, 0); | ||
285 | set_gpio_inen(gpionr, 1); | ||
286 | |||
287 | |||
288 | if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) { | ||
289 | gpio_edge_triggered[gpio_bank(gpionr)] |= gpio_bit(gpionr); | ||
290 | set_gpio_edge(gpionr, 1); | ||
291 | } else { | ||
292 | set_gpio_edge(gpionr, 0); | ||
293 | gpio_edge_triggered[gpio_bank(gpionr)] &= ~gpio_bit(gpionr); | ||
294 | } | ||
295 | |||
296 | if ((type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) | ||
297 | == (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) | ||
298 | set_gpio_both(gpionr, 1); | ||
299 | else | ||
300 | set_gpio_both(gpionr, 0); | ||
301 | |||
302 | if ((type & (IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_LEVEL_LOW))) | ||
303 | set_gpio_polar(gpionr, 1); /* low or falling edge denoted by one */ | ||
304 | else | ||
305 | set_gpio_polar(gpionr, 0); /* high or rising edge denoted by zero */ | ||
306 | |||
307 | SSYNC(); | ||
308 | |||
309 | if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) | ||
310 | set_irq_handler(irq, handle_edge_irq); | ||
311 | else | ||
312 | set_irq_handler(irq, handle_level_irq); | ||
313 | |||
314 | return 0; | ||
315 | } | ||
316 | |||
317 | static struct irq_chip bf561_gpio_irqchip = { | ||
318 | .ack = bf561_gpio_ack_irq, | ||
319 | .mask = bf561_gpio_mask_irq, | ||
320 | .mask_ack = bf561_gpio_mask_ack_irq, | ||
321 | .unmask = bf561_gpio_unmask_irq, | ||
322 | .set_type = bf561_gpio_irq_type, | ||
323 | .startup = bf561_gpio_irq_startup, | ||
324 | .shutdown = bf561_gpio_irq_shutdown | ||
325 | }; | ||
326 | |||
327 | static void bf561_demux_gpio_irq(unsigned int inta_irq, | ||
328 | struct irq_desc *intb_desc) | ||
329 | { | ||
330 | int irq, flag_d, mask; | ||
331 | u16 gpio; | ||
332 | |||
333 | switch (inta_irq) { | ||
334 | case IRQ_PROG0_INTA: | ||
335 | irq = IRQ_PF0; | ||
336 | break; | ||
337 | case IRQ_PROG1_INTA: | ||
338 | irq = IRQ_PF16; | ||
339 | break; | ||
340 | case IRQ_PROG2_INTA: | ||
341 | irq = IRQ_PF32; | ||
342 | break; | ||
343 | default: | ||
344 | dump_stack(); | ||
345 | return; | ||
346 | } | ||
347 | |||
348 | gpio = irq - IRQ_PF0; | ||
349 | |||
350 | flag_d = get_gpiop_data(gpio); | ||
351 | mask = flag_d & (gpio_enabled[gpio_bank(gpio)] & | ||
352 | get_gpiop_maska(gpio)); | ||
353 | |||
354 | do { | ||
355 | if (mask & 1) { | ||
356 | struct irq_desc *desc = irq_desc + irq; | ||
357 | desc->handle_irq(irq, desc); | ||
358 | } | ||
359 | irq++; | ||
360 | mask >>= 1; | ||
361 | } while (mask); | ||
362 | |||
363 | |||
364 | } | ||
365 | |||
366 | void __init init_exception_vectors(void) | ||
367 | { | ||
368 | SSYNC(); | ||
369 | |||
370 | /* cannot program in software: | ||
371 | * evt0 - emulation (jtag) | ||
372 | * evt1 - reset | ||
373 | */ | ||
374 | bfin_write_EVT2(evt_nmi); | ||
375 | bfin_write_EVT3(trap); | ||
376 | bfin_write_EVT5(evt_ivhw); | ||
377 | bfin_write_EVT6(evt_timer); | ||
378 | bfin_write_EVT7(evt_evt7); | ||
379 | bfin_write_EVT8(evt_evt8); | ||
380 | bfin_write_EVT9(evt_evt9); | ||
381 | bfin_write_EVT10(evt_evt10); | ||
382 | bfin_write_EVT11(evt_evt11); | ||
383 | bfin_write_EVT12(evt_evt12); | ||
384 | bfin_write_EVT13(evt_evt13); | ||
385 | bfin_write_EVT14(evt14_softirq); | ||
386 | bfin_write_EVT15(evt_system_call); | ||
387 | CSYNC(); | ||
388 | } | ||
389 | |||
390 | /* | ||
391 | * This function should be called during kernel startup to initialize | ||
392 | * the BFin IRQ handling routines. | ||
393 | */ | ||
394 | int __init init_arch_irq(void) | ||
395 | { | ||
396 | int irq; | ||
397 | unsigned long ilat = 0; | ||
398 | /* Disable all the peripheral intrs - page 4-29 HW Ref manual */ | ||
399 | bfin_write_SICA_IMASK0(SIC_UNMASK_ALL); | ||
400 | bfin_write_SICA_IMASK1(SIC_UNMASK_ALL); | ||
401 | SSYNC(); | ||
402 | |||
403 | bfin_write_SICA_IWR0(IWR_ENABLE_ALL); | ||
404 | bfin_write_SICA_IWR1(IWR_ENABLE_ALL); | ||
405 | |||
406 | local_irq_disable(); | ||
407 | |||
408 | init_exception_buff(); | ||
409 | |||
410 | for (irq = 0; irq <= SYS_IRQS; irq++) { | ||
411 | if (irq <= IRQ_CORETMR) | ||
412 | set_irq_chip(irq, &bf561_core_irqchip); | ||
413 | else | ||
414 | set_irq_chip(irq, &bf561_internal_irqchip); | ||
415 | |||
416 | if ((irq != IRQ_PROG0_INTA) && | ||
417 | (irq != IRQ_PROG1_INTA) && | ||
418 | (irq != IRQ_PROG2_INTA)) | ||
419 | set_irq_handler(irq, handle_simple_irq); | ||
420 | else | ||
421 | set_irq_chained_handler(irq, bf561_demux_gpio_irq); | ||
422 | } | ||
423 | |||
424 | for (irq = IRQ_PF0; irq <= IRQ_PF47; irq++) { | ||
425 | set_irq_chip(irq, &bf561_gpio_irqchip); | ||
426 | /* if configured as edge, then will be changed to do_edge_IRQ */ | ||
427 | set_irq_handler(irq, handle_level_irq); | ||
428 | } | ||
429 | |||
430 | bfin_write_IMASK(0); | ||
431 | CSYNC(); | ||
432 | ilat = bfin_read_ILAT(); | ||
433 | CSYNC(); | ||
434 | bfin_write_ILAT(ilat); | ||
435 | CSYNC(); | ||
436 | |||
437 | printk(KERN_INFO "Configuring Blackfin Priority Driven Interrupts\n"); | ||
438 | /* IMASK=xxx is equivalent to STI xx or irq_flags=xx, | ||
439 | * local_irq_enable() | ||
440 | */ | ||
441 | program_IAR(); | ||
442 | /* Therefore it's better to setup IARs before interrupts enabled */ | ||
443 | search_IAR(); | ||
444 | |||
445 | /* Enable interrupts IVG7-15 */ | ||
446 | irq_flags = irq_flags | IMASK_IVG15 | | ||
447 | IMASK_IVG14 | IMASK_IVG13 | IMASK_IVG12 | IMASK_IVG11 | | ||
448 | IMASK_IVG10 | IMASK_IVG9 | IMASK_IVG8 | IMASK_IVG7 | IMASK_IVGHW; | ||
449 | |||
450 | return 0; | ||
451 | } | ||
452 | |||
453 | #ifdef CONFIG_DO_IRQ_L1 | ||
454 | __attribute__((l1_text)) | ||
455 | #endif | ||
456 | void do_irq(int vec, struct pt_regs *fp) | ||
457 | { | ||
458 | if (vec == EVT_IVTMR_P) { | ||
459 | vec = IRQ_CORETMR; | ||
460 | } else { | ||
461 | struct ivgx *ivg = ivg7_13[vec - IVG7].ifirst; | ||
462 | struct ivgx *ivg_stop = ivg7_13[vec - IVG7].istop; | ||
463 | unsigned long sic_status0, sic_status1; | ||
464 | |||
465 | SSYNC(); | ||
466 | sic_status0 = bfin_read_SICA_IMASK0() & bfin_read_SICA_ISR0(); | ||
467 | sic_status1 = bfin_read_SICA_IMASK1() & bfin_read_SICA_ISR1(); | ||
468 | |||
469 | for (;; ivg++) { | ||
470 | if (ivg >= ivg_stop) { | ||
471 | atomic_inc(&num_spurious); | ||
472 | return; | ||
473 | } else if ((sic_status0 & ivg->isrflag0) || | ||
474 | (sic_status1 & ivg->isrflag1)) | ||
475 | break; | ||
476 | } | ||
477 | vec = ivg->irqno; | ||
478 | } | ||
479 | asm_do_IRQ(vec, fp); | ||
480 | |||
481 | #ifdef CONFIG_KGDB | ||
482 | kgdb_process_breakpoint(); | ||
483 | #endif | ||
484 | } | ||
diff --git a/arch/blackfin/mach-common/ints-priority-sc.c b/arch/blackfin/mach-common/ints-priority.c index dec42acb5de0..880595afe98d 100644 --- a/arch/blackfin/mach-common/ints-priority-sc.c +++ b/arch/blackfin/mach-common/ints-priority.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * File: arch/blackfin/mach-common/ints-priority-sc.c | 2 | * File: arch/blackfin/mach-common/ints-priority.c |
3 | * Based on: | 3 | * Based on: |
4 | * Author: | 4 | * Author: |
5 | * | 5 | * |
@@ -13,7 +13,7 @@ | |||
13 | * 2002 Arcturus Networks Inc. MaTed <mated@sympatico.ca> | 13 | * 2002 Arcturus Networks Inc. MaTed <mated@sympatico.ca> |
14 | * 2003 Metrowerks/Motorola | 14 | * 2003 Metrowerks/Motorola |
15 | * 2003 Bas Vermeulen <bas@buyways.nl> | 15 | * 2003 Bas Vermeulen <bas@buyways.nl> |
16 | * Copyright 2004-2007 Analog Devices Inc. | 16 | * Copyright 2004-2008 Analog Devices Inc. |
17 | * | 17 | * |
18 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | 18 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ |
19 | * | 19 | * |
@@ -69,6 +69,10 @@ unsigned long irq_flags = 0x1f; | |||
69 | /* The number of spurious interrupts */ | 69 | /* The number of spurious interrupts */ |
70 | atomic_t num_spurious; | 70 | atomic_t num_spurious; |
71 | 71 | ||
72 | #ifdef CONFIG_PM | ||
73 | unsigned long bfin_sic_iwr[3]; /* Up to 3 SIC_IWRx registers */ | ||
74 | #endif | ||
75 | |||
72 | struct ivgx { | 76 | struct ivgx { |
73 | /* irq number for request_irq, available in mach-bf533/irq.h */ | 77 | /* irq number for request_irq, available in mach-bf533/irq.h */ |
74 | unsigned int irqno; | 78 | unsigned int irqno; |
@@ -98,8 +102,7 @@ static void __init search_IAR(void) | |||
98 | 102 | ||
99 | for (irqn = 0; irqn < NR_PERI_INTS; irqn++) { | 103 | for (irqn = 0; irqn < NR_PERI_INTS; irqn++) { |
100 | int iar_shift = (irqn & 7) * 4; | 104 | int iar_shift = (irqn & 7) * 4; |
101 | if (ivg == | 105 | if (ivg == (0xf & |
102 | (0xf & | ||
103 | #ifndef CONFIG_BF52x | 106 | #ifndef CONFIG_BF52x |
104 | bfin_read32((unsigned long *)SIC_IAR0 + | 107 | bfin_read32((unsigned long *)SIC_IAR0 + |
105 | (irqn >> 3)) >> iar_shift)) { | 108 | (irqn >> 3)) >> iar_shift)) { |
@@ -179,6 +182,27 @@ static void bfin_internal_unmask_irq(unsigned int irq) | |||
179 | SSYNC(); | 182 | SSYNC(); |
180 | } | 183 | } |
181 | 184 | ||
185 | #ifdef CONFIG_PM | ||
186 | int bfin_internal_set_wake(unsigned int irq, unsigned int state) | ||
187 | { | ||
188 | unsigned bank, bit; | ||
189 | unsigned long flags; | ||
190 | bank = (irq - (IRQ_CORETMR + 1)) / 32; | ||
191 | bit = (irq - (IRQ_CORETMR + 1)) % 32; | ||
192 | |||
193 | local_irq_save(flags); | ||
194 | |||
195 | if (state) | ||
196 | bfin_sic_iwr[bank] |= (1 << bit); | ||
197 | else | ||
198 | bfin_sic_iwr[bank] &= ~(1 << bit); | ||
199 | |||
200 | local_irq_restore(flags); | ||
201 | |||
202 | return 0; | ||
203 | } | ||
204 | #endif | ||
205 | |||
182 | static struct irq_chip bfin_core_irqchip = { | 206 | static struct irq_chip bfin_core_irqchip = { |
183 | .ack = ack_noop, | 207 | .ack = ack_noop, |
184 | .mask = bfin_core_mask_irq, | 208 | .mask = bfin_core_mask_irq, |
@@ -189,6 +213,9 @@ static struct irq_chip bfin_internal_irqchip = { | |||
189 | .ack = ack_noop, | 213 | .ack = ack_noop, |
190 | .mask = bfin_internal_mask_irq, | 214 | .mask = bfin_internal_mask_irq, |
191 | .unmask = bfin_internal_unmask_irq, | 215 | .unmask = bfin_internal_unmask_irq, |
216 | #ifdef CONFIG_PM | ||
217 | .set_wake = bfin_internal_set_wake, | ||
218 | #endif | ||
192 | }; | 219 | }; |
193 | 220 | ||
194 | #ifdef BF537_GENERIC_ERROR_INT_DEMUX | 221 | #ifdef BF537_GENERIC_ERROR_INT_DEMUX |
@@ -206,8 +233,7 @@ static void bfin_generic_error_mask_irq(unsigned int irq) | |||
206 | if (!error_int_mask) { | 233 | if (!error_int_mask) { |
207 | local_irq_disable(); | 234 | local_irq_disable(); |
208 | bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() & | 235 | bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() & |
209 | ~(1 << | 236 | ~(1 << (IRQ_GENERIC_ERROR - |
210 | (IRQ_GENERIC_ERROR - | ||
211 | (IRQ_CORETMR + 1)))); | 237 | (IRQ_CORETMR + 1)))); |
212 | SSYNC(); | 238 | SSYNC(); |
213 | local_irq_enable(); | 239 | local_irq_enable(); |
@@ -232,7 +258,7 @@ static struct irq_chip bfin_generic_error_irqchip = { | |||
232 | }; | 258 | }; |
233 | 259 | ||
234 | static void bfin_demux_error_irq(unsigned int int_err_irq, | 260 | static void bfin_demux_error_irq(unsigned int int_err_irq, |
235 | struct irq_desc *intb_desc) | 261 | struct irq_desc *inta_desc) |
236 | { | 262 | { |
237 | int irq = 0; | 263 | int irq = 0; |
238 | 264 | ||
@@ -404,16 +430,8 @@ static int bfin_gpio_irq_type(unsigned int irq, unsigned int type) | |||
404 | return 0; | 430 | return 0; |
405 | } | 431 | } |
406 | 432 | ||
433 | set_gpio_inen(gpionr, 0); | ||
407 | set_gpio_dir(gpionr, 0); | 434 | set_gpio_dir(gpionr, 0); |
408 | set_gpio_inen(gpionr, 1); | ||
409 | |||
410 | if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) { | ||
411 | gpio_edge_triggered[gpio_bank(gpionr)] |= gpio_bit(gpionr); | ||
412 | set_gpio_edge(gpionr, 1); | ||
413 | } else { | ||
414 | set_gpio_edge(gpionr, 0); | ||
415 | gpio_edge_triggered[gpio_bank(gpionr)] &= ~gpio_bit(gpionr); | ||
416 | } | ||
417 | 435 | ||
418 | if ((type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) | 436 | if ((type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) |
419 | == (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) | 437 | == (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) |
@@ -426,6 +444,18 @@ static int bfin_gpio_irq_type(unsigned int irq, unsigned int type) | |||
426 | else | 444 | else |
427 | set_gpio_polar(gpionr, 0); /* high or rising edge denoted by zero */ | 445 | set_gpio_polar(gpionr, 0); /* high or rising edge denoted by zero */ |
428 | 446 | ||
447 | if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) { | ||
448 | set_gpio_edge(gpionr, 1); | ||
449 | set_gpio_inen(gpionr, 1); | ||
450 | gpio_edge_triggered[gpio_bank(gpionr)] |= gpio_bit(gpionr); | ||
451 | set_gpio_data(gpionr, 0); | ||
452 | |||
453 | } else { | ||
454 | set_gpio_edge(gpionr, 0); | ||
455 | gpio_edge_triggered[gpio_bank(gpionr)] &= ~gpio_bit(gpionr); | ||
456 | set_gpio_inen(gpionr, 1); | ||
457 | } | ||
458 | |||
429 | SSYNC(); | 459 | SSYNC(); |
430 | 460 | ||
431 | if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) | 461 | if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) |
@@ -436,6 +466,20 @@ static int bfin_gpio_irq_type(unsigned int irq, unsigned int type) | |||
436 | return 0; | 466 | return 0; |
437 | } | 467 | } |
438 | 468 | ||
469 | #ifdef CONFIG_PM | ||
470 | int bfin_gpio_set_wake(unsigned int irq, unsigned int state) | ||
471 | { | ||
472 | unsigned gpio = irq_to_gpio(irq); | ||
473 | |||
474 | if (state) | ||
475 | gpio_pm_wakeup_request(gpio, PM_WAKE_IGNORE); | ||
476 | else | ||
477 | gpio_pm_wakeup_free(gpio); | ||
478 | |||
479 | return 0; | ||
480 | } | ||
481 | #endif | ||
482 | |||
439 | static struct irq_chip bfin_gpio_irqchip = { | 483 | static struct irq_chip bfin_gpio_irqchip = { |
440 | .ack = bfin_gpio_ack_irq, | 484 | .ack = bfin_gpio_ack_irq, |
441 | .mask = bfin_gpio_mask_irq, | 485 | .mask = bfin_gpio_mask_irq, |
@@ -443,30 +487,87 @@ static struct irq_chip bfin_gpio_irqchip = { | |||
443 | .unmask = bfin_gpio_unmask_irq, | 487 | .unmask = bfin_gpio_unmask_irq, |
444 | .set_type = bfin_gpio_irq_type, | 488 | .set_type = bfin_gpio_irq_type, |
445 | .startup = bfin_gpio_irq_startup, | 489 | .startup = bfin_gpio_irq_startup, |
446 | .shutdown = bfin_gpio_irq_shutdown | 490 | .shutdown = bfin_gpio_irq_shutdown, |
491 | #ifdef CONFIG_PM | ||
492 | .set_wake = bfin_gpio_set_wake, | ||
493 | #endif | ||
447 | }; | 494 | }; |
448 | 495 | ||
449 | static void bfin_demux_gpio_irq(unsigned int intb_irq, | 496 | static void bfin_demux_gpio_irq(unsigned int inta_irq, |
450 | struct irq_desc *intb_desc) | 497 | struct irq_desc *desc) |
451 | { | 498 | { |
452 | u16 i; | 499 | unsigned int i, gpio, mask, irq, search = 0; |
453 | struct irq_desc *desc; | ||
454 | 500 | ||
455 | for (i = 0; i < MAX_BLACKFIN_GPIOS; i += 16) { | 501 | switch (inta_irq) { |
456 | int irq = IRQ_PF0 + i; | 502 | #if defined(CONFIG_BF53x) |
457 | int flag_d = get_gpiop_data(i); | 503 | case IRQ_PROG_INTA: |
458 | int mask = | 504 | irq = IRQ_PF0; |
459 | flag_d & (gpio_enabled[gpio_bank(i)] & get_gpiop_maska(i)); | 505 | search = 1; |
506 | break; | ||
507 | # if defined(BF537_FAMILY) && !(defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)) | ||
508 | case IRQ_MAC_RX: | ||
509 | irq = IRQ_PH0; | ||
510 | break; | ||
511 | # endif | ||
512 | #elif defined(CONFIG_BF52x) | ||
513 | case IRQ_PORTF_INTA: | ||
514 | irq = IRQ_PF0; | ||
515 | break; | ||
516 | case IRQ_PORTG_INTA: | ||
517 | irq = IRQ_PG0; | ||
518 | break; | ||
519 | case IRQ_PORTH_INTA: | ||
520 | irq = IRQ_PH0; | ||
521 | break; | ||
522 | #elif defined(CONFIG_BF561) | ||
523 | case IRQ_PROG0_INTA: | ||
524 | irq = IRQ_PF0; | ||
525 | break; | ||
526 | case IRQ_PROG1_INTA: | ||
527 | irq = IRQ_PF16; | ||
528 | break; | ||
529 | case IRQ_PROG2_INTA: | ||
530 | irq = IRQ_PF32; | ||
531 | break; | ||
532 | #endif | ||
533 | default: | ||
534 | BUG(); | ||
535 | return; | ||
536 | } | ||
460 | 537 | ||
461 | while (mask) { | 538 | if (search) { |
462 | if (mask & 1) { | 539 | for (i = 0; i < MAX_BLACKFIN_GPIOS; i += GPIO_BANKSIZE) { |
463 | desc = irq_desc + irq; | 540 | irq += i; |
464 | desc->handle_irq(irq, desc); | 541 | |
542 | mask = get_gpiop_data(i) & | ||
543 | (gpio_enabled[gpio_bank(i)] & | ||
544 | get_gpiop_maska(i)); | ||
545 | |||
546 | while (mask) { | ||
547 | if (mask & 1) { | ||
548 | desc = irq_desc + irq; | ||
549 | desc->handle_irq(irq, desc); | ||
550 | } | ||
551 | irq++; | ||
552 | mask >>= 1; | ||
465 | } | 553 | } |
466 | irq++; | ||
467 | mask >>= 1; | ||
468 | } | 554 | } |
555 | } else { | ||
556 | gpio = irq_to_gpio(irq); | ||
557 | mask = get_gpiop_data(gpio) & | ||
558 | (gpio_enabled[gpio_bank(gpio)] & | ||
559 | get_gpiop_maska(gpio)); | ||
560 | |||
561 | do { | ||
562 | if (mask & 1) { | ||
563 | desc = irq_desc + irq; | ||
564 | desc->handle_irq(irq, desc); | ||
565 | } | ||
566 | irq++; | ||
567 | mask >>= 1; | ||
568 | } while (mask); | ||
469 | } | 569 | } |
570 | |||
470 | } | 571 | } |
471 | 572 | ||
472 | #else /* CONFIG_BF54x */ | 573 | #else /* CONFIG_BF54x */ |
@@ -711,6 +812,74 @@ static int bfin_gpio_irq_type(unsigned int irq, unsigned int type) | |||
711 | return 0; | 812 | return 0; |
712 | } | 813 | } |
713 | 814 | ||
815 | #ifdef CONFIG_PM | ||
816 | u32 pint_saved_masks[NR_PINT_SYS_IRQS]; | ||
817 | u32 pint_wakeup_masks[NR_PINT_SYS_IRQS]; | ||
818 | |||
819 | int bfin_gpio_set_wake(unsigned int irq, unsigned int state) | ||
820 | { | ||
821 | u32 pint_irq; | ||
822 | u8 pint_val = irq2pint_lut[irq - SYS_IRQS]; | ||
823 | u32 bank = PINT_2_BANK(pint_val); | ||
824 | u32 pintbit = PINT_BIT(pint_val); | ||
825 | |||
826 | switch (bank) { | ||
827 | case 0: | ||
828 | pint_irq = IRQ_PINT0; | ||
829 | break; | ||
830 | case 2: | ||
831 | pint_irq = IRQ_PINT2; | ||
832 | break; | ||
833 | case 3: | ||
834 | pint_irq = IRQ_PINT3; | ||
835 | break; | ||
836 | case 1: | ||
837 | pint_irq = IRQ_PINT1; | ||
838 | break; | ||
839 | default: | ||
840 | return -EINVAL; | ||
841 | } | ||
842 | |||
843 | bfin_internal_set_wake(pint_irq, state); | ||
844 | |||
845 | if (state) | ||
846 | pint_wakeup_masks[bank] |= pintbit; | ||
847 | else | ||
848 | pint_wakeup_masks[bank] &= ~pintbit; | ||
849 | |||
850 | return 0; | ||
851 | } | ||
852 | |||
853 | u32 bfin_pm_setup(void) | ||
854 | { | ||
855 | u32 val, i; | ||
856 | |||
857 | for (i = 0; i < NR_PINT_SYS_IRQS; i++) { | ||
858 | val = pint[i]->mask_clear; | ||
859 | pint_saved_masks[i] = val; | ||
860 | if (val ^ pint_wakeup_masks[i]) { | ||
861 | pint[i]->mask_clear = val; | ||
862 | pint[i]->mask_set = pint_wakeup_masks[i]; | ||
863 | } | ||
864 | } | ||
865 | |||
866 | return 0; | ||
867 | } | ||
868 | |||
869 | void bfin_pm_restore(void) | ||
870 | { | ||
871 | u32 i, val; | ||
872 | |||
873 | for (i = 0; i < NR_PINT_SYS_IRQS; i++) { | ||
874 | val = pint_saved_masks[i]; | ||
875 | if (val ^ pint_wakeup_masks[i]) { | ||
876 | pint[i]->mask_clear = pint[i]->mask_clear; | ||
877 | pint[i]->mask_set = val; | ||
878 | } | ||
879 | } | ||
880 | } | ||
881 | #endif | ||
882 | |||
714 | static struct irq_chip bfin_gpio_irqchip = { | 883 | static struct irq_chip bfin_gpio_irqchip = { |
715 | .ack = bfin_gpio_ack_irq, | 884 | .ack = bfin_gpio_ack_irq, |
716 | .mask = bfin_gpio_mask_irq, | 885 | .mask = bfin_gpio_mask_irq, |
@@ -718,17 +887,19 @@ static struct irq_chip bfin_gpio_irqchip = { | |||
718 | .unmask = bfin_gpio_unmask_irq, | 887 | .unmask = bfin_gpio_unmask_irq, |
719 | .set_type = bfin_gpio_irq_type, | 888 | .set_type = bfin_gpio_irq_type, |
720 | .startup = bfin_gpio_irq_startup, | 889 | .startup = bfin_gpio_irq_startup, |
721 | .shutdown = bfin_gpio_irq_shutdown | 890 | .shutdown = bfin_gpio_irq_shutdown, |
891 | #ifdef CONFIG_PM | ||
892 | .set_wake = bfin_gpio_set_wake, | ||
893 | #endif | ||
722 | }; | 894 | }; |
723 | 895 | ||
724 | static void bfin_demux_gpio_irq(unsigned int intb_irq, | 896 | static void bfin_demux_gpio_irq(unsigned int inta_irq, |
725 | struct irq_desc *intb_desc) | 897 | struct irq_desc *desc) |
726 | { | 898 | { |
727 | u8 bank, pint_val; | 899 | u8 bank, pint_val; |
728 | u32 request, irq; | 900 | u32 request, irq; |
729 | struct irq_desc *desc; | ||
730 | 901 | ||
731 | switch (intb_irq) { | 902 | switch (inta_irq) { |
732 | case IRQ_PINT0: | 903 | case IRQ_PINT0: |
733 | bank = 0; | 904 | bank = 0; |
734 | break; | 905 | break; |
@@ -795,7 +966,7 @@ int __init init_arch_irq(void) | |||
795 | int irq; | 966 | int irq; |
796 | unsigned long ilat = 0; | 967 | unsigned long ilat = 0; |
797 | /* Disable all the peripheral intrs - page 4-29 HW Ref manual */ | 968 | /* Disable all the peripheral intrs - page 4-29 HW Ref manual */ |
798 | #if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) | 969 | #if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) || defined(CONFIG_BF561) |
799 | bfin_write_SIC_IMASK0(SIC_UNMASK_ALL); | 970 | bfin_write_SIC_IMASK0(SIC_UNMASK_ALL); |
800 | bfin_write_SIC_IMASK1(SIC_UNMASK_ALL); | 971 | bfin_write_SIC_IMASK1(SIC_UNMASK_ALL); |
801 | bfin_write_SIC_IWR0(IWR_ENABLE_ALL); | 972 | bfin_write_SIC_IWR0(IWR_ENABLE_ALL); |
@@ -812,6 +983,8 @@ int __init init_arch_irq(void) | |||
812 | 983 | ||
813 | local_irq_disable(); | 984 | local_irq_disable(); |
814 | 985 | ||
986 | init_exception_buff(); | ||
987 | |||
815 | #ifdef CONFIG_BF54x | 988 | #ifdef CONFIG_BF54x |
816 | # ifdef CONFIG_PINTx_REASSIGN | 989 | # ifdef CONFIG_PINTx_REASSIGN |
817 | pint[0]->assign = CONFIG_PINT0_ASSIGN; | 990 | pint[0]->assign = CONFIG_PINT0_ASSIGN; |
@@ -874,6 +1047,19 @@ int __init init_arch_irq(void) | |||
874 | set_irq_chained_handler(irq, | 1047 | set_irq_chained_handler(irq, |
875 | bfin_demux_gpio_irq); | 1048 | bfin_demux_gpio_irq); |
876 | break; | 1049 | break; |
1050 | #elif defined(CONFIG_BF561) | ||
1051 | case IRQ_PROG0_INTA: | ||
1052 | set_irq_chained_handler(irq, | ||
1053 | bfin_demux_gpio_irq); | ||
1054 | break; | ||
1055 | case IRQ_PROG1_INTA: | ||
1056 | set_irq_chained_handler(irq, | ||
1057 | bfin_demux_gpio_irq); | ||
1058 | break; | ||
1059 | case IRQ_PROG2_INTA: | ||
1060 | set_irq_chained_handler(irq, | ||
1061 | bfin_demux_gpio_irq); | ||
1062 | break; | ||
877 | #endif | 1063 | #endif |
878 | default: | 1064 | default: |
879 | set_irq_handler(irq, handle_simple_irq); | 1065 | set_irq_handler(irq, handle_simple_irq); |
@@ -893,11 +1079,8 @@ int __init init_arch_irq(void) | |||
893 | } | 1079 | } |
894 | #endif | 1080 | #endif |
895 | 1081 | ||
896 | #ifndef CONFIG_BF54x | 1082 | for (irq = GPIO_IRQ_BASE; irq < NR_IRQS; irq++) { |
897 | for (irq = IRQ_PF0; irq < NR_IRQS; irq++) { | 1083 | |
898 | #else | ||
899 | for (irq = IRQ_PA0; irq < NR_IRQS; irq++) { | ||
900 | #endif | ||
901 | set_irq_chip(irq, &bfin_gpio_irqchip); | 1084 | set_irq_chip(irq, &bfin_gpio_irqchip); |
902 | /* if configured as edge, then will be changed to do_edge_IRQ */ | 1085 | /* if configured as edge, then will be changed to do_edge_IRQ */ |
903 | set_irq_handler(irq, handle_level_irq); | 1086 | set_irq_handler(irq, handle_level_irq); |
@@ -936,7 +1119,7 @@ void do_irq(int vec, struct pt_regs *fp) | |||
936 | } else { | 1119 | } else { |
937 | struct ivgx *ivg = ivg7_13[vec - IVG7].ifirst; | 1120 | struct ivgx *ivg = ivg7_13[vec - IVG7].ifirst; |
938 | struct ivgx *ivg_stop = ivg7_13[vec - IVG7].istop; | 1121 | struct ivgx *ivg_stop = ivg7_13[vec - IVG7].istop; |
939 | #if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) | 1122 | #if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) || defined(CONFIG_BF561) |
940 | unsigned long sic_status[3]; | 1123 | unsigned long sic_status[3]; |
941 | 1124 | ||
942 | SSYNC(); | 1125 | SSYNC(); |
diff --git a/arch/blackfin/mach-common/pm.c b/arch/blackfin/mach-common/pm.c index 81930f7d06f1..0be805ca423f 100644 --- a/arch/blackfin/mach-common/pm.c +++ b/arch/blackfin/mach-common/pm.c | |||
@@ -4,7 +4,7 @@ | |||
4 | * Author: Cliff Brake <cbrake@accelent.com> Copyright (c) 2001 | 4 | * Author: Cliff Brake <cbrake@accelent.com> Copyright (c) 2001 |
5 | * | 5 | * |
6 | * Created: 2001 | 6 | * Created: 2001 |
7 | * Description: Power management for the bfin | 7 | * Description: Blackfin power management |
8 | * | 8 | * |
9 | * Modified: Nicolas Pitre - PXA250 support | 9 | * Modified: Nicolas Pitre - PXA250 support |
10 | * Copyright (c) 2002 Monta Vista Software, Inc. | 10 | * Copyright (c) 2002 Monta Vista Software, Inc. |
@@ -12,7 +12,7 @@ | |||
12 | * Copyright (c) 2002 Monta Vista Software, Inc. | 12 | * Copyright (c) 2002 Monta Vista Software, Inc. |
13 | * Dirk Behme <dirk.behme@de.bosch.com> - OMAP1510/1610 | 13 | * Dirk Behme <dirk.behme@de.bosch.com> - OMAP1510/1610 |
14 | * Copyright 2004 | 14 | * Copyright 2004 |
15 | * Copyright 2004-2006 Analog Devices Inc. | 15 | * Copyright 2004-2008 Analog Devices Inc. |
16 | * | 16 | * |
17 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | 17 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ |
18 | * | 18 | * |
@@ -67,42 +67,30 @@ void bfin_pm_suspend_standby_enter(void) | |||
67 | gpio_pm_wakeup_request(CONFIG_PM_WAKEUP_GPIO_NUMBER, WAKEUP_TYPE); | 67 | gpio_pm_wakeup_request(CONFIG_PM_WAKEUP_GPIO_NUMBER, WAKEUP_TYPE); |
68 | #endif | 68 | #endif |
69 | 69 | ||
70 | #if defined(CONFIG_PM_WAKEUP_BY_GPIO) || defined(CONFIG_PM_WAKEUP_GPIO_API) | 70 | u32 flags; |
71 | { | ||
72 | u32 flags; | ||
73 | 71 | ||
74 | local_irq_save(flags); | 72 | local_irq_save(flags); |
73 | bfin_pm_setup(); | ||
75 | 74 | ||
76 | sleep_deeper(gpio_pm_setup()); /*Goto Sleep*/ | 75 | #ifdef CONFIG_PM_BFIN_SLEEP_DEEPER |
77 | 76 | sleep_deeper(bfin_sic_iwr[0], bfin_sic_iwr[1], bfin_sic_iwr[2]); | |
78 | gpio_pm_restore(); | ||
79 | |||
80 | #if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) | ||
81 | bfin_write_SIC_IWR0(IWR_ENABLE_ALL); | ||
82 | bfin_write_SIC_IWR1(IWR_ENABLE_ALL); | ||
83 | # ifdef CONFIG_BF54x | ||
84 | bfin_write_SIC_IWR2(IWR_ENABLE_ALL); | ||
85 | # endif | ||
86 | #else | 77 | #else |
87 | bfin_write_SIC_IWR(IWR_ENABLE_ALL); | 78 | sleep_mode(bfin_sic_iwr[0], bfin_sic_iwr[1], bfin_sic_iwr[2]); |
88 | #endif | 79 | #endif |
89 | 80 | ||
90 | local_irq_restore(flags); | 81 | bfin_pm_restore(); |
91 | } | ||
92 | #endif | ||
93 | 82 | ||
94 | #if defined(CONFIG_PM_WAKEUP_GPIO_BY_SIC_IWR) | 83 | #if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) || defined(CONFIG_BF561) |
95 | sleep_deeper(CONFIG_PM_WAKEUP_SIC_IWR); | ||
96 | # if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) | ||
97 | bfin_write_SIC_IWR0(IWR_ENABLE_ALL); | 84 | bfin_write_SIC_IWR0(IWR_ENABLE_ALL); |
98 | bfin_write_SIC_IWR1(IWR_ENABLE_ALL); | 85 | bfin_write_SIC_IWR1(IWR_ENABLE_ALL); |
99 | # ifdef CONFIG_BF54x | 86 | # ifdef CONFIG_BF54x |
100 | bfin_write_SIC_IWR2(IWR_ENABLE_ALL); | 87 | bfin_write_SIC_IWR2(IWR_ENABLE_ALL); |
101 | # endif | ||
102 | # else | ||
103 | bfin_write_SIC_IWR(IWR_ENABLE_ALL); | ||
104 | # endif | 88 | # endif |
105 | #endif /* CONFIG_PM_WAKEUP_GPIO_BY_SIC_IWR */ | 89 | #else |
90 | bfin_write_SIC_IWR(IWR_ENABLE_ALL); | ||
91 | #endif | ||
92 | |||
93 | local_irq_restore(flags); | ||
106 | } | 94 | } |
107 | 95 | ||
108 | /* | 96 | /* |
diff --git a/arch/blackfin/mm/init.c b/arch/blackfin/mm/init.c index eb1a12ac9e33..1f516c55bde6 100644 --- a/arch/blackfin/mm/init.c +++ b/arch/blackfin/mm/init.c | |||
@@ -138,8 +138,7 @@ void __init mem_init(void) | |||
138 | 138 | ||
139 | start_mem = PAGE_ALIGN(start_mem); | 139 | start_mem = PAGE_ALIGN(start_mem); |
140 | max_mapnr = num_physpages = MAP_NR(high_memory); | 140 | max_mapnr = num_physpages = MAP_NR(high_memory); |
141 | printk(KERN_INFO "Kernel managed physical pages: %lu\n", | 141 | printk(KERN_DEBUG "Kernel managed physical pages: %lu\n", num_physpages); |
142 | num_physpages); | ||
143 | 142 | ||
144 | /* This will put all memory onto the freelists. */ | 143 | /* This will put all memory onto the freelists. */ |
145 | totalram_pages = free_all_bootmem(); | 144 | totalram_pages = free_all_bootmem(); |
@@ -153,8 +152,7 @@ void __init mem_init(void) | |||
153 | /* do not count in kernel image between _rambase and _ramstart */ | 152 | /* do not count in kernel image between _rambase and _ramstart */ |
154 | reservedpages -= (_ramstart - _rambase) >> PAGE_SHIFT; | 153 | reservedpages -= (_ramstart - _rambase) >> PAGE_SHIFT; |
155 | #if (defined(CONFIG_BFIN_ICACHE) && ANOMALY_05000263) | 154 | #if (defined(CONFIG_BFIN_ICACHE) && ANOMALY_05000263) |
156 | reservedpages += (_ramend - memory_end - DMA_UNCACHED_REGION) >> | 155 | reservedpages += (_ramend - memory_end - DMA_UNCACHED_REGION) >> PAGE_SHIFT; |
157 | PAGE_SHIFT; | ||
158 | #endif | 156 | #endif |
159 | 157 | ||
160 | codek = (_etext - _stext) >> 10; | 158 | codek = (_etext - _stext) >> 10; |
@@ -163,11 +161,9 @@ void __init mem_init(void) | |||
163 | 161 | ||
164 | printk(KERN_INFO | 162 | printk(KERN_INFO |
165 | "Memory available: %luk/%luk RAM, " | 163 | "Memory available: %luk/%luk RAM, " |
166 | "(%uk init code, %uk kernel code, " | 164 | "(%uk init code, %uk kernel code, %uk data, %uk dma, %uk reserved)\n", |
167 | "%uk data, %uk dma, %uk reserved)\n", | ||
168 | (unsigned long) freepages << (PAGE_SHIFT-10), _ramend >> 10, | 165 | (unsigned long) freepages << (PAGE_SHIFT-10), _ramend >> 10, |
169 | initk, codek, datak, DMA_UNCACHED_REGION >> 10, | 166 | initk, codek, datak, DMA_UNCACHED_REGION >> 10, (reservedpages << (PAGE_SHIFT-10))); |
170 | (reservedpages << (PAGE_SHIFT-10))); | ||
171 | 167 | ||
172 | /* Initialize the blackfin L1 Memory. */ | 168 | /* Initialize the blackfin L1 Memory. */ |
173 | l1sram_init(); | 169 | l1sram_init(); |
diff --git a/include/asm-blackfin/bfin-global.h b/include/asm-blackfin/bfin-global.h index 6ae0619d7696..5dba3a735596 100644 --- a/include/asm-blackfin/bfin-global.h +++ b/include/asm-blackfin/bfin-global.h | |||
@@ -70,6 +70,7 @@ extern void program_IAR(void); | |||
70 | extern void evt14_softirq(void); | 70 | extern void evt14_softirq(void); |
71 | extern asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs); | 71 | extern asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs); |
72 | extern void bfin_gpio_interrupt_setup(int irq, int irq_pfx, int type); | 72 | extern void bfin_gpio_interrupt_setup(int irq, int irq_pfx, int type); |
73 | extern int bfin_internal_set_wake(unsigned int irq, unsigned int state); | ||
73 | 74 | ||
74 | extern asmlinkage void finish_atomic_sections (struct pt_regs *regs); | 75 | extern asmlinkage void finish_atomic_sections (struct pt_regs *regs); |
75 | extern char fixed_code_start; | 76 | extern char fixed_code_start; |
@@ -121,6 +122,7 @@ extern unsigned long dpdt_swapcount_table[]; | |||
121 | 122 | ||
122 | extern unsigned long table_start, table_end; | 123 | extern unsigned long table_start, table_end; |
123 | 124 | ||
125 | extern unsigned long bfin_sic_iwr[]; | ||
124 | extern u16 _bfin_swrst; /* shadow for Software Reset Register (SWRST) */ | 126 | extern u16 _bfin_swrst; /* shadow for Software Reset Register (SWRST) */ |
125 | extern struct file_operations dpmc_fops; | 127 | extern struct file_operations dpmc_fops; |
126 | extern char _start; | 128 | extern char _start; |
diff --git a/include/asm-blackfin/bfin5xx_spi.h b/include/asm-blackfin/bfin5xx_spi.h index 1a0b57f6a3d4..9fa19158e38d 100644 --- a/include/asm-blackfin/bfin5xx_spi.h +++ b/include/asm-blackfin/bfin5xx_spi.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /************************************************************ | 1 | /************************************************************ |
2 | * | 2 | |
3 | * Copyright (C) 2004, Analog Devices. All Rights Reserved | 3 | * Copyright (C) 2006-2008, Analog Devices. All Rights Reserved |
4 | * | 4 | * |
5 | * FILE bfin5xx_spi.h | 5 | * FILE bfin5xx_spi.h |
6 | * PROGRAMMER(S): Luke Yang (Analog Devices Inc.) | 6 | * PROGRAMMER(S): Luke Yang (Analog Devices Inc.) |
@@ -32,42 +32,6 @@ | |||
32 | #define SPI_BAUD_OFF 0x14 | 32 | #define SPI_BAUD_OFF 0x14 |
33 | #define SPI_SHAW_OFF 0x18 | 33 | #define SPI_SHAW_OFF 0x18 |
34 | 34 | ||
35 | #define CMD_SPI_OUT_ENABLE 1 | ||
36 | #define CMD_SPI_SET_BAUDRATE 2 | ||
37 | #define CMD_SPI_SET_POLAR 3 | ||
38 | #define CMD_SPI_SET_PHASE 4 | ||
39 | #define CMD_SPI_SET_MASTER 5 | ||
40 | #define CMD_SPI_SET_SENDOPT 6 | ||
41 | #define CMD_SPI_SET_RECVOPT 7 | ||
42 | #define CMD_SPI_SET_ORDER 8 | ||
43 | #define CMD_SPI_SET_LENGTH16 9 | ||
44 | #define CMD_SPI_GET_STAT 11 | ||
45 | #define CMD_SPI_GET_CFG 12 | ||
46 | #define CMD_SPI_SET_CSAVAIL 13 | ||
47 | #define CMD_SPI_SET_CSHIGH 14 /* CS unavail */ | ||
48 | #define CMD_SPI_SET_CSLOW 15 /* CS avail */ | ||
49 | #define CMD_SPI_MISO_ENABLE 16 | ||
50 | #define CMD_SPI_SET_CSENABLE 17 | ||
51 | #define CMD_SPI_SET_CSDISABLE 18 | ||
52 | |||
53 | #define CMD_SPI_SET_TRIGGER_MODE 19 | ||
54 | #define CMD_SPI_SET_TRIGGER_SENSE 20 | ||
55 | #define CMD_SPI_SET_TRIGGER_EDGE 21 | ||
56 | #define CMD_SPI_SET_TRIGGER_LEVEL 22 | ||
57 | |||
58 | #define CMD_SPI_SET_TIME_SPS 23 | ||
59 | #define CMD_SPI_SET_TIME_SAMPLES 24 | ||
60 | #define CMD_SPI_GET_SYSTEMCLOCK 25 | ||
61 | |||
62 | #define CMD_SPI_SET_WRITECONTINUOUS 26 | ||
63 | #define CMD_SPI_SET_SKFS 27 | ||
64 | |||
65 | #define CMD_SPI_GET_ALLCONFIG 32 /* For debug */ | ||
66 | |||
67 | #define SPI_DEFAULT_BARD 0x0100 | ||
68 | |||
69 | #define SPI0_IRQ_NUM IRQ_SPI | ||
70 | #define SPI_ERR_TRIG -1 | ||
71 | 35 | ||
72 | #define BIT_CTL_ENABLE 0x4000 | 36 | #define BIT_CTL_ENABLE 0x4000 |
73 | #define BIT_CTL_OPENDRAIN 0x2000 | 37 | #define BIT_CTL_OPENDRAIN 0x2000 |
@@ -148,6 +112,10 @@ | |||
148 | #define CFG_SPI_CS6VALUE 6 | 112 | #define CFG_SPI_CS6VALUE 6 |
149 | #define CFG_SPI_CS7VALUE 7 | 113 | #define CFG_SPI_CS7VALUE 7 |
150 | 114 | ||
115 | #define CMD_SPI_SET_BAUDRATE 2 | ||
116 | #define CMD_SPI_GET_SYSTEMCLOCK 25 | ||
117 | #define CMD_SPI_SET_WRITECONTINUOUS 26 | ||
118 | |||
151 | /* device.platform_data for SSP controller devices */ | 119 | /* device.platform_data for SSP controller devices */ |
152 | struct bfin5xx_spi_master { | 120 | struct bfin5xx_spi_master { |
153 | u16 num_chipselect; | 121 | u16 num_chipselect; |
diff --git a/include/asm-blackfin/dpmc.h b/include/asm-blackfin/dpmc.h index f162edb23033..686cf83a5269 100644 --- a/include/asm-blackfin/dpmc.h +++ b/include/asm-blackfin/dpmc.h | |||
@@ -53,10 +53,10 @@ unsigned long get_pll_status(void); | |||
53 | void change_baud(int baud); | 53 | void change_baud(int baud); |
54 | void fullon_mode(void); | 54 | void fullon_mode(void); |
55 | void active_mode(void); | 55 | void active_mode(void); |
56 | void sleep_mode(u32 sic_iwr); | 56 | void sleep_mode(u32 sic_iwr0, u32 sic_iwr1, u32 sic_iwr2); |
57 | void deep_sleep(u32 sic_iwr); | 57 | void deep_sleep(u32 sic_iwr0, u32 sic_iwr1, u32 sic_iwr2); |
58 | void hibernate_mode(u32 sic_iwr); | 58 | void hibernate_mode(u32 sic_iwr0, u32 sic_iwr1, u32 sic_iwr2); |
59 | void sleep_deeper(u32 sic_iwr); | 59 | void sleep_deeper(u32 sic_iwr0, u32 sic_iwr1, u32 sic_iwr2); |
60 | void program_wdog_timer(unsigned long); | 60 | void program_wdog_timer(unsigned long); |
61 | void unmask_wdog_wakeup_evt(void); | 61 | void unmask_wdog_wakeup_evt(void); |
62 | void clear_wdog_wakeup_evt(void); | 62 | void clear_wdog_wakeup_evt(void); |
diff --git a/include/asm-blackfin/gpio.h b/include/asm-blackfin/gpio.h index d0426c108262..27ff532a806c 100644 --- a/include/asm-blackfin/gpio.h +++ b/include/asm-blackfin/gpio.h | |||
@@ -376,16 +376,19 @@ struct gpio_port_t { | |||
376 | #endif | 376 | #endif |
377 | 377 | ||
378 | #ifdef CONFIG_PM | 378 | #ifdef CONFIG_PM |
379 | unsigned int bfin_pm_setup(void); | ||
380 | void bfin_pm_restore(void); | ||
381 | |||
382 | #ifndef CONFIG_BF54x | ||
379 | #define PM_WAKE_RISING 0x1 | 383 | #define PM_WAKE_RISING 0x1 |
380 | #define PM_WAKE_FALLING 0x2 | 384 | #define PM_WAKE_FALLING 0x2 |
381 | #define PM_WAKE_HIGH 0x4 | 385 | #define PM_WAKE_HIGH 0x4 |
382 | #define PM_WAKE_LOW 0x8 | 386 | #define PM_WAKE_LOW 0x8 |
383 | #define PM_WAKE_BOTH_EDGES (PM_WAKE_RISING | PM_WAKE_FALLING) | 387 | #define PM_WAKE_BOTH_EDGES (PM_WAKE_RISING | PM_WAKE_FALLING) |
388 | #define PM_WAKE_IGNORE 0xF0 | ||
384 | 389 | ||
385 | int gpio_pm_wakeup_request(unsigned gpio, unsigned char type); | 390 | int gpio_pm_wakeup_request(unsigned gpio, unsigned char type); |
386 | void gpio_pm_wakeup_free(unsigned gpio); | 391 | void gpio_pm_wakeup_free(unsigned gpio); |
387 | unsigned int gpio_pm_setup(void); | ||
388 | void gpio_pm_restore(void); | ||
389 | 392 | ||
390 | struct gpio_port_s { | 393 | struct gpio_port_s { |
391 | unsigned short data; | 394 | unsigned short data; |
@@ -409,6 +412,7 @@ struct gpio_port_s { | |||
409 | unsigned short fer; | 412 | unsigned short fer; |
410 | unsigned short reserved; | 413 | unsigned short reserved; |
411 | }; | 414 | }; |
415 | #endif /*CONFIG_BF54x*/ | ||
412 | #endif /*CONFIG_PM*/ | 416 | #endif /*CONFIG_PM*/ |
413 | 417 | ||
414 | /*********************************************************** | 418 | /*********************************************************** |
diff --git a/include/asm-blackfin/mach-bf548/blackfin.h b/include/asm-blackfin/mach-bf548/blackfin.h index 19e84dd4c99c..3bd67da86053 100644 --- a/include/asm-blackfin/mach-bf548/blackfin.h +++ b/include/asm-blackfin/mach-bf548/blackfin.h | |||
@@ -46,6 +46,10 @@ | |||
46 | #include "defBF544.h" | 46 | #include "defBF544.h" |
47 | #endif | 47 | #endif |
48 | 48 | ||
49 | #ifdef CONFIG_BF547 | ||
50 | #include "defBF547.h" | ||
51 | #endif | ||
52 | |||
49 | #ifdef CONFIG_BF548 | 53 | #ifdef CONFIG_BF548 |
50 | #include "defBF548.h" | 54 | #include "defBF548.h" |
51 | #endif | 55 | #endif |
@@ -58,10 +62,12 @@ | |||
58 | #ifdef CONFIG_BF542 | 62 | #ifdef CONFIG_BF542 |
59 | #include "cdefBF542.h" | 63 | #include "cdefBF542.h" |
60 | #endif | 64 | #endif |
61 | |||
62 | #ifdef CONFIG_BF544 | 65 | #ifdef CONFIG_BF544 |
63 | #include "cdefBF544.h" | 66 | #include "cdefBF544.h" |
64 | #endif | 67 | #endif |
68 | #ifdef CONFIG_BF547 | ||
69 | #include "cdefBF547.h" | ||
70 | #endif | ||
65 | #ifdef CONFIG_BF548 | 71 | #ifdef CONFIG_BF548 |
66 | #include "cdefBF548.h" | 72 | #include "cdefBF548.h" |
67 | #endif | 73 | #endif |
diff --git a/include/asm-blackfin/mach-bf548/cdefBF547.h b/include/asm-blackfin/mach-bf548/cdefBF547.h new file mode 100644 index 000000000000..d0a200b08abd --- /dev/null +++ b/include/asm-blackfin/mach-bf548/cdefBF547.h | |||
@@ -0,0 +1,865 @@ | |||
1 | /* | ||
2 | * File: include/asm-blackfin/mach-bf548/cdefBF547.h | ||
3 | * Based on: | ||
4 | * Author: | ||
5 | * | ||
6 | * Created: | ||
7 | * Description: | ||
8 | * | ||
9 | * Rev: | ||
10 | * | ||
11 | * Modified: | ||
12 | * | ||
13 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | ||
14 | * | ||
15 | * This program is free software; you can redistribute it and/or modify | ||
16 | * it under the terms of the GNU General Public License as published by | ||
17 | * the Free Software Foundation; either version 2, or (at your option) | ||
18 | * any later version. | ||
19 | * | ||
20 | * This program is distributed in the hope that it will be useful, | ||
21 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
22 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
23 | * GNU General Public License for more details. | ||
24 | * | ||
25 | * You should have received a copy of the GNU General Public License | ||
26 | * along with this program; see the file COPYING. | ||
27 | * If not, write to the Free Software Foundation, | ||
28 | * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
29 | */ | ||
30 | |||
31 | #ifndef _CDEF_BF548_H | ||
32 | #define _CDEF_BF548_H | ||
33 | |||
34 | /* include all Core registers and bit definitions */ | ||
35 | #include "defBF548.h" | ||
36 | |||
37 | /* include core sbfin_read_()ecific register pointer definitions */ | ||
38 | #include <asm/mach-common/cdef_LPBlackfin.h> | ||
39 | |||
40 | /* SYSTEM & MMR ADDRESS DEFINITIONS FOR ADSP-BF548 */ | ||
41 | |||
42 | /* include cdefBF54x_base.h for the set of #defines that are common to all ADSP-BF54x bfin_read_()rocessors */ | ||
43 | #include "cdefBF54x_base.h" | ||
44 | |||
45 | /* The following are the #defines needed by ADSP-BF548 that are not in the common header */ | ||
46 | |||
47 | /* Timer Registers */ | ||
48 | |||
49 | #define bfin_read_TIMER8_CONFIG() bfin_read16(TIMER8_CONFIG) | ||
50 | #define bfin_write_TIMER8_CONFIG(val) bfin_write16(TIMER8_CONFIG, val) | ||
51 | #define bfin_read_TIMER8_COUNTER() bfin_read32(TIMER8_COUNTER) | ||
52 | #define bfin_write_TIMER8_COUNTER(val) bfin_write32(TIMER8_COUNTER, val) | ||
53 | #define bfin_read_TIMER8_PERIOD() bfin_read32(TIMER8_PERIOD) | ||
54 | #define bfin_write_TIMER8_PERIOD(val) bfin_write32(TIMER8_PERIOD, val) | ||
55 | #define bfin_read_TIMER8_WIDTH() bfin_read32(TIMER8_WIDTH) | ||
56 | #define bfin_write_TIMER8_WIDTH(val) bfin_write32(TIMER8_WIDTH, val) | ||
57 | #define bfin_read_TIMER9_CONFIG() bfin_read16(TIMER9_CONFIG) | ||
58 | #define bfin_write_TIMER9_CONFIG(val) bfin_write16(TIMER9_CONFIG, val) | ||
59 | #define bfin_read_TIMER9_COUNTER() bfin_read32(TIMER9_COUNTER) | ||
60 | #define bfin_write_TIMER9_COUNTER(val) bfin_write32(TIMER9_COUNTER, val) | ||
61 | #define bfin_read_TIMER9_PERIOD() bfin_read32(TIMER9_PERIOD) | ||
62 | #define bfin_write_TIMER9_PERIOD(val) bfin_write32(TIMER9_PERIOD, val) | ||
63 | #define bfin_read_TIMER9_WIDTH() bfin_read32(TIMER9_WIDTH) | ||
64 | #define bfin_write_TIMER9_WIDTH(val) bfin_write32(TIMER9_WIDTH, val) | ||
65 | #define bfin_read_TIMER10_CONFIG() bfin_read16(TIMER10_CONFIG) | ||
66 | #define bfin_write_TIMER10_CONFIG(val) bfin_write16(TIMER10_CONFIG, val) | ||
67 | #define bfin_read_TIMER10_COUNTER() bfin_read32(TIMER10_COUNTER) | ||
68 | #define bfin_write_TIMER10_COUNTER(val) bfin_write32(TIMER10_COUNTER, val) | ||
69 | #define bfin_read_TIMER10_PERIOD() bfin_read32(TIMER10_PERIOD) | ||
70 | #define bfin_write_TIMER10_PERIOD(val) bfin_write32(TIMER10_PERIOD, val) | ||
71 | #define bfin_read_TIMER10_WIDTH() bfin_read32(TIMER10_WIDTH) | ||
72 | #define bfin_write_TIMER10_WIDTH(val) bfin_write32(TIMER10_WIDTH, val) | ||
73 | |||
74 | /* Timer Groubfin_read_() of 3 */ | ||
75 | |||
76 | #define bfin_read_TIMER_ENABLE1() bfin_read16(TIMER_ENABLE1) | ||
77 | #define bfin_write_TIMER_ENABLE1(val) bfin_write16(TIMER_ENABLE1, val) | ||
78 | #define bfin_read_TIMER_DISABLE1() bfin_read16(TIMER_DISABLE1) | ||
79 | #define bfin_write_TIMER_DISABLE1(val) bfin_write16(TIMER_DISABLE1, val) | ||
80 | #define bfin_read_TIMER_STATUS1() bfin_read32(TIMER_STATUS1) | ||
81 | #define bfin_write_TIMER_STATUS1(val) bfin_write32(TIMER_STATUS1, val) | ||
82 | |||
83 | /* SPORT0 Registers */ | ||
84 | |||
85 | #define bfin_read_SPORT0_TCR1() bfin_read16(SPORT0_TCR1) | ||
86 | #define bfin_write_SPORT0_TCR1(val) bfin_write16(SPORT0_TCR1, val) | ||
87 | #define bfin_read_SPORT0_TCR2() bfin_read16(SPORT0_TCR2) | ||
88 | #define bfin_write_SPORT0_TCR2(val) bfin_write16(SPORT0_TCR2, val) | ||
89 | #define bfin_read_SPORT0_TCLKDIV() bfin_read16(SPORT0_TCLKDIV) | ||
90 | #define bfin_write_SPORT0_TCLKDIV(val) bfin_write16(SPORT0_TCLKDIV, val) | ||
91 | #define bfin_read_SPORT0_TFSDIV() bfin_read16(SPORT0_TFSDIV) | ||
92 | #define bfin_write_SPORT0_TFSDIV(val) bfin_write16(SPORT0_TFSDIV, val) | ||
93 | #define bfin_read_SPORT0_TX() bfin_read32(SPORT0_TX) | ||
94 | #define bfin_write_SPORT0_TX(val) bfin_write32(SPORT0_TX, val) | ||
95 | #define bfin_read_SPORT0_RX() bfin_read32(SPORT0_RX) | ||
96 | #define bfin_write_SPORT0_RX(val) bfin_write32(SPORT0_RX, val) | ||
97 | #define bfin_read_SPORT0_RCR1() bfin_read16(SPORT0_RCR1) | ||
98 | #define bfin_write_SPORT0_RCR1(val) bfin_write16(SPORT0_RCR1, val) | ||
99 | #define bfin_read_SPORT0_RCR2() bfin_read16(SPORT0_RCR2) | ||
100 | #define bfin_write_SPORT0_RCR2(val) bfin_write16(SPORT0_RCR2, val) | ||
101 | #define bfin_read_SPORT0_RCLKDIV() bfin_read16(SPORT0_RCLKDIV) | ||
102 | #define bfin_write_SPORT0_RCLKDIV(val) bfin_write16(SPORT0_RCLKDIV, val) | ||
103 | #define bfin_read_SPORT0_RFSDIV() bfin_read16(SPORT0_RFSDIV) | ||
104 | #define bfin_write_SPORT0_RFSDIV(val) bfin_write16(SPORT0_RFSDIV, val) | ||
105 | #define bfin_read_SPORT0_STAT() bfin_read16(SPORT0_STAT) | ||
106 | #define bfin_write_SPORT0_STAT(val) bfin_write16(SPORT0_STAT, val) | ||
107 | #define bfin_read_SPORT0_CHNL() bfin_read16(SPORT0_CHNL) | ||
108 | #define bfin_write_SPORT0_CHNL(val) bfin_write16(SPORT0_CHNL, val) | ||
109 | #define bfin_read_SPORT0_MCMC1() bfin_read16(SPORT0_MCMC1) | ||
110 | #define bfin_write_SPORT0_MCMC1(val) bfin_write16(SPORT0_MCMC1, val) | ||
111 | #define bfin_read_SPORT0_MCMC2() bfin_read16(SPORT0_MCMC2) | ||
112 | #define bfin_write_SPORT0_MCMC2(val) bfin_write16(SPORT0_MCMC2, val) | ||
113 | #define bfin_read_SPORT0_MTCS0() bfin_read32(SPORT0_MTCS0) | ||
114 | #define bfin_write_SPORT0_MTCS0(val) bfin_write32(SPORT0_MTCS0, val) | ||
115 | #define bfin_read_SPORT0_MTCS1() bfin_read32(SPORT0_MTCS1) | ||
116 | #define bfin_write_SPORT0_MTCS1(val) bfin_write32(SPORT0_MTCS1, val) | ||
117 | #define bfin_read_SPORT0_MTCS2() bfin_read32(SPORT0_MTCS2) | ||
118 | #define bfin_write_SPORT0_MTCS2(val) bfin_write32(SPORT0_MTCS2, val) | ||
119 | #define bfin_read_SPORT0_MTCS3() bfin_read32(SPORT0_MTCS3) | ||
120 | #define bfin_write_SPORT0_MTCS3(val) bfin_write32(SPORT0_MTCS3, val) | ||
121 | #define bfin_read_SPORT0_MRCS0() bfin_read32(SPORT0_MRCS0) | ||
122 | #define bfin_write_SPORT0_MRCS0(val) bfin_write32(SPORT0_MRCS0, val) | ||
123 | #define bfin_read_SPORT0_MRCS1() bfin_read32(SPORT0_MRCS1) | ||
124 | #define bfin_write_SPORT0_MRCS1(val) bfin_write32(SPORT0_MRCS1, val) | ||
125 | #define bfin_read_SPORT0_MRCS2() bfin_read32(SPORT0_MRCS2) | ||
126 | #define bfin_write_SPORT0_MRCS2(val) bfin_write32(SPORT0_MRCS2, val) | ||
127 | #define bfin_read_SPORT0_MRCS3() bfin_read32(SPORT0_MRCS3) | ||
128 | #define bfin_write_SPORT0_MRCS3(val) bfin_write32(SPORT0_MRCS3, val) | ||
129 | |||
130 | /* EPPI0 Registers */ | ||
131 | |||
132 | #define bfin_read_EPPI0_STATUS() bfin_read16(EPPI0_STATUS) | ||
133 | #define bfin_write_EPPI0_STATUS(val) bfin_write16(EPPI0_STATUS, val) | ||
134 | #define bfin_read_EPPI0_HCOUNT() bfin_read16(EPPI0_HCOUNT) | ||
135 | #define bfin_write_EPPI0_HCOUNT(val) bfin_write16(EPPI0_HCOUNT, val) | ||
136 | #define bfin_read_EPPI0_HDELAY() bfin_read16(EPPI0_HDELAY) | ||
137 | #define bfin_write_EPPI0_HDELAY(val) bfin_write16(EPPI0_HDELAY, val) | ||
138 | #define bfin_read_EPPI0_VCOUNT() bfin_read16(EPPI0_VCOUNT) | ||
139 | #define bfin_write_EPPI0_VCOUNT(val) bfin_write16(EPPI0_VCOUNT, val) | ||
140 | #define bfin_read_EPPI0_VDELAY() bfin_read16(EPPI0_VDELAY) | ||
141 | #define bfin_write_EPPI0_VDELAY(val) bfin_write16(EPPI0_VDELAY, val) | ||
142 | #define bfin_read_EPPI0_FRAME() bfin_read16(EPPI0_FRAME) | ||
143 | #define bfin_write_EPPI0_FRAME(val) bfin_write16(EPPI0_FRAME, val) | ||
144 | #define bfin_read_EPPI0_LINE() bfin_read16(EPPI0_LINE) | ||
145 | #define bfin_write_EPPI0_LINE(val) bfin_write16(EPPI0_LINE, val) | ||
146 | #define bfin_read_EPPI0_CLKDIV() bfin_read16(EPPI0_CLKDIV) | ||
147 | #define bfin_write_EPPI0_CLKDIV(val) bfin_write16(EPPI0_CLKDIV, val) | ||
148 | #define bfin_read_EPPI0_CONTROL() bfin_read32(EPPI0_CONTROL) | ||
149 | #define bfin_write_EPPI0_CONTROL(val) bfin_write32(EPPI0_CONTROL, val) | ||
150 | #define bfin_read_EPPI0_FS1W_HBL() bfin_read32(EPPI0_FS1W_HBL) | ||
151 | #define bfin_write_EPPI0_FS1W_HBL(val) bfin_write32(EPPI0_FS1W_HBL, val) | ||
152 | #define bfin_read_EPPI0_FS1P_AVPL() bfin_read32(EPPI0_FS1P_AVPL) | ||
153 | #define bfin_write_EPPI0_FS1P_AVPL(val) bfin_write32(EPPI0_FS1P_AVPL, val) | ||
154 | #define bfin_read_EPPI0_FS2W_LVB() bfin_read32(EPPI0_FS2W_LVB) | ||
155 | #define bfin_write_EPPI0_FS2W_LVB(val) bfin_write32(EPPI0_FS2W_LVB, val) | ||
156 | #define bfin_read_EPPI0_FS2P_LAVF() bfin_read32(EPPI0_FS2P_LAVF) | ||
157 | #define bfin_write_EPPI0_FS2P_LAVF(val) bfin_write32(EPPI0_FS2P_LAVF, val) | ||
158 | #define bfin_read_EPPI0_CLIP() bfin_read32(EPPI0_CLIP) | ||
159 | #define bfin_write_EPPI0_CLIP(val) bfin_write32(EPPI0_CLIP, val) | ||
160 | |||
161 | /* UART2 Registers */ | ||
162 | |||
163 | #define bfin_read_UART2_DLL() bfin_read16(UART2_DLL) | ||
164 | #define bfin_write_UART2_DLL(val) bfin_write16(UART2_DLL, val) | ||
165 | #define bfin_read_UART2_DLH() bfin_read16(UART2_DLH) | ||
166 | #define bfin_write_UART2_DLH(val) bfin_write16(UART2_DLH, val) | ||
167 | #define bfin_read_UART2_GCTL() bfin_read16(UART2_GCTL) | ||
168 | #define bfin_write_UART2_GCTL(val) bfin_write16(UART2_GCTL, val) | ||
169 | #define bfin_read_UART2_LCR() bfin_read16(UART2_LCR) | ||
170 | #define bfin_write_UART2_LCR(val) bfin_write16(UART2_LCR, val) | ||
171 | #define bfin_read_UART2_MCR() bfin_read16(UART2_MCR) | ||
172 | #define bfin_write_UART2_MCR(val) bfin_write16(UART2_MCR, val) | ||
173 | #define bfin_read_UART2_LSR() bfin_read16(UART2_LSR) | ||
174 | #define bfin_write_UART2_LSR(val) bfin_write16(UART2_LSR, val) | ||
175 | #define bfin_read_UART2_MSR() bfin_read16(UART2_MSR) | ||
176 | #define bfin_write_UART2_MSR(val) bfin_write16(UART2_MSR, val) | ||
177 | #define bfin_read_UART2_SCR() bfin_read16(UART2_SCR) | ||
178 | #define bfin_write_UART2_SCR(val) bfin_write16(UART2_SCR, val) | ||
179 | #define bfin_read_UART2_IER_SET() bfin_read16(UART2_IER_SET) | ||
180 | #define bfin_write_UART2_IER_SET(val) bfin_write16(UART2_IER_SET, val) | ||
181 | #define bfin_read_UART2_IER_CLEAR() bfin_read16(UART2_IER_CLEAR) | ||
182 | #define bfin_write_UART2_IER_CLEAR(val) bfin_write16(UART2_IER_CLEAR, val) | ||
183 | #define bfin_read_UART2_RBR() bfin_read16(UART2_RBR) | ||
184 | #define bfin_write_UART2_RBR(val) bfin_write16(UART2_RBR, val) | ||
185 | |||
186 | /* Two Wire Interface Registers (TWI1) */ | ||
187 | |||
188 | #define bfin_read_TWI1_CLKDIV() bfin_read16(TWI1_CLKDIV) | ||
189 | #define bfin_write_TWI1_CLKDIV(val) bfin_write16(TWI1_CLKDIV, val) | ||
190 | #define bfin_read_TWI1_CONTROL() bfin_read16(TWI1_CONTROL) | ||
191 | #define bfin_write_TWI1_CONTROL(val) bfin_write16(TWI1_CONTROL, val) | ||
192 | #define bfin_read_TWI1_SLAVE_CTRL() bfin_read16(TWI1_SLAVE_CTRL) | ||
193 | #define bfin_write_TWI1_SLAVE_CTRL(val) bfin_write16(TWI1_SLAVE_CTRL, val) | ||
194 | #define bfin_read_TWI1_SLAVE_STAT() bfin_read16(TWI1_SLAVE_STAT) | ||
195 | #define bfin_write_TWI1_SLAVE_STAT(val) bfin_write16(TWI1_SLAVE_STAT, val) | ||
196 | #define bfin_read_TWI1_SLAVE_ADDR() bfin_read16(TWI1_SLAVE_ADDR) | ||
197 | #define bfin_write_TWI1_SLAVE_ADDR(val) bfin_write16(TWI1_SLAVE_ADDR, val) | ||
198 | #define bfin_read_TWI1_MASTER_CTRL() bfin_read16(TWI1_MASTER_CTRL) | ||
199 | #define bfin_write_TWI1_MASTER_CTRL(val) bfin_write16(TWI1_MASTER_CTRL, val) | ||
200 | #define bfin_read_TWI1_MASTER_STAT() bfin_read16(TWI1_MASTER_STAT) | ||
201 | #define bfin_write_TWI1_MASTER_STAT(val) bfin_write16(TWI1_MASTER_STAT, val) | ||
202 | #define bfin_read_TWI1_MASTER_ADDR() bfin_read16(TWI1_MASTER_ADDR) | ||
203 | #define bfin_write_TWI1_MASTER_ADDR(val) bfin_write16(TWI1_MASTER_ADDR, val) | ||
204 | #define bfin_read_TWI1_INT_STAT() bfin_read16(TWI1_INT_STAT) | ||
205 | #define bfin_write_TWI1_INT_STAT(val) bfin_write16(TWI1_INT_STAT, val) | ||
206 | #define bfin_read_TWI1_INT_MASK() bfin_read16(TWI1_INT_MASK) | ||
207 | #define bfin_write_TWI1_INT_MASK(val) bfin_write16(TWI1_INT_MASK, val) | ||
208 | #define bfin_read_TWI1_FIFO_CTRL() bfin_read16(TWI1_FIFO_CTRL) | ||
209 | #define bfin_write_TWI1_FIFO_CTRL(val) bfin_write16(TWI1_FIFO_CTRL, val) | ||
210 | #define bfin_read_TWI1_FIFO_STAT() bfin_read16(TWI1_FIFO_STAT) | ||
211 | #define bfin_write_TWI1_FIFO_STAT(val) bfin_write16(TWI1_FIFO_STAT, val) | ||
212 | #define bfin_read_TWI1_XMT_DATA8() bfin_read16(TWI1_XMT_DATA8) | ||
213 | #define bfin_write_TWI1_XMT_DATA8(val) bfin_write16(TWI1_XMT_DATA8, val) | ||
214 | #define bfin_read_TWI1_XMT_DATA16() bfin_read16(TWI1_XMT_DATA16) | ||
215 | #define bfin_write_TWI1_XMT_DATA16(val) bfin_write16(TWI1_XMT_DATA16, val) | ||
216 | #define bfin_read_TWI1_RCV_DATA8() bfin_read16(TWI1_RCV_DATA8) | ||
217 | #define bfin_write_TWI1_RCV_DATA8(val) bfin_write16(TWI1_RCV_DATA8, val) | ||
218 | #define bfin_read_TWI1_RCV_DATA16() bfin_read16(TWI1_RCV_DATA16) | ||
219 | #define bfin_write_TWI1_RCV_DATA16(val) bfin_write16(TWI1_RCV_DATA16, val) | ||
220 | |||
221 | /* SPI2 Registers */ | ||
222 | |||
223 | #define bfin_read_SPI2_CTL() bfin_read16(SPI2_CTL) | ||
224 | #define bfin_write_SPI2_CTL(val) bfin_write16(SPI2_CTL, val) | ||
225 | #define bfin_read_SPI2_FLG() bfin_read16(SPI2_FLG) | ||
226 | #define bfin_write_SPI2_FLG(val) bfin_write16(SPI2_FLG, val) | ||
227 | #define bfin_read_SPI2_STAT() bfin_read16(SPI2_STAT) | ||
228 | #define bfin_write_SPI2_STAT(val) bfin_write16(SPI2_STAT, val) | ||
229 | #define bfin_read_SPI2_TDBR() bfin_read16(SPI2_TDBR) | ||
230 | #define bfin_write_SPI2_TDBR(val) bfin_write16(SPI2_TDBR, val) | ||
231 | #define bfin_read_SPI2_RDBR() bfin_read16(SPI2_RDBR) | ||
232 | #define bfin_write_SPI2_RDBR(val) bfin_write16(SPI2_RDBR, val) | ||
233 | #define bfin_read_SPI2_BAUD() bfin_read16(SPI2_BAUD) | ||
234 | #define bfin_write_SPI2_BAUD(val) bfin_write16(SPI2_BAUD, val) | ||
235 | #define bfin_read_SPI2_SHADOW() bfin_read16(SPI2_SHADOW) | ||
236 | #define bfin_write_SPI2_SHADOW(val) bfin_write16(SPI2_SHADOW, val) | ||
237 | |||
238 | /* ATAPI Registers */ | ||
239 | |||
240 | #define bfin_read_ATAPI_CONTROL() bfin_read16(ATAPI_CONTROL) | ||
241 | #define bfin_write_ATAPI_CONTROL(val) bfin_write16(ATAPI_CONTROL, val) | ||
242 | #define bfin_read_ATAPI_STATUS() bfin_read16(ATAPI_STATUS) | ||
243 | #define bfin_write_ATAPI_STATUS(val) bfin_write16(ATAPI_STATUS, val) | ||
244 | #define bfin_read_ATAPI_DEV_ADDR() bfin_read16(ATAPI_DEV_ADDR) | ||
245 | #define bfin_write_ATAPI_DEV_ADDR(val) bfin_write16(ATAPI_DEV_ADDR, val) | ||
246 | #define bfin_read_ATAPI_DEV_TXBUF() bfin_read16(ATAPI_DEV_TXBUF) | ||
247 | #define bfin_write_ATAPI_DEV_TXBUF(val) bfin_write16(ATAPI_DEV_TXBUF, val) | ||
248 | #define bfin_read_ATAPI_DEV_RXBUF() bfin_read16(ATAPI_DEV_RXBUF) | ||
249 | #define bfin_write_ATAPI_DEV_RXBUF(val) bfin_write16(ATAPI_DEV_RXBUF, val) | ||
250 | #define bfin_read_ATAPI_INT_MASK() bfin_read16(ATAPI_INT_MASK) | ||
251 | #define bfin_write_ATAPI_INT_MASK(val) bfin_write16(ATAPI_INT_MASK, val) | ||
252 | #define bfin_read_ATAPI_INT_STATUS() bfin_read16(ATAPI_INT_STATUS) | ||
253 | #define bfin_write_ATAPI_INT_STATUS(val) bfin_write16(ATAPI_INT_STATUS, val) | ||
254 | #define bfin_read_ATAPI_XFER_LEN() bfin_read16(ATAPI_XFER_LEN) | ||
255 | #define bfin_write_ATAPI_XFER_LEN(val) bfin_write16(ATAPI_XFER_LEN, val) | ||
256 | #define bfin_read_ATAPI_LINE_STATUS() bfin_read16(ATAPI_LINE_STATUS) | ||
257 | #define bfin_write_ATAPI_LINE_STATUS(val) bfin_write16(ATAPI_LINE_STATUS, val) | ||
258 | #define bfin_read_ATAPI_SM_STATE() bfin_read16(ATAPI_SM_STATE) | ||
259 | #define bfin_write_ATAPI_SM_STATE(val) bfin_write16(ATAPI_SM_STATE, val) | ||
260 | #define bfin_read_ATAPI_TERMINATE() bfin_read16(ATAPI_TERMINATE) | ||
261 | #define bfin_write_ATAPI_TERMINATE(val) bfin_write16(ATAPI_TERMINATE, val) | ||
262 | #define bfin_read_ATAPI_PIO_TFRCNT() bfin_read16(ATAPI_PIO_TFRCNT) | ||
263 | #define bfin_write_ATAPI_PIO_TFRCNT(val) bfin_write16(ATAPI_PIO_TFRCNT, val) | ||
264 | #define bfin_read_ATAPI_DMA_TFRCNT() bfin_read16(ATAPI_DMA_TFRCNT) | ||
265 | #define bfin_write_ATAPI_DMA_TFRCNT(val) bfin_write16(ATAPI_DMA_TFRCNT, val) | ||
266 | #define bfin_read_ATAPI_UMAIN_TFRCNT() bfin_read16(ATAPI_UMAIN_TFRCNT) | ||
267 | #define bfin_write_ATAPI_UMAIN_TFRCNT(val) bfin_write16(ATAPI_UMAIN_TFRCNT, val) | ||
268 | #define bfin_read_ATAPI_UDMAOUT_TFRCNT() bfin_read16(ATAPI_UDMAOUT_TFRCNT) | ||
269 | #define bfin_write_ATAPI_UDMAOUT_TFRCNT(val) bfin_write16(ATAPI_UDMAOUT_TFRCNT, val) | ||
270 | #define bfin_read_ATAPI_REG_TIM_0() bfin_read16(ATAPI_REG_TIM_0) | ||
271 | #define bfin_write_ATAPI_REG_TIM_0(val) bfin_write16(ATAPI_REG_TIM_0, val) | ||
272 | #define bfin_read_ATAPI_PIO_TIM_0() bfin_read16(ATAPI_PIO_TIM_0) | ||
273 | #define bfin_write_ATAPI_PIO_TIM_0(val) bfin_write16(ATAPI_PIO_TIM_0, val) | ||
274 | #define bfin_read_ATAPI_PIO_TIM_1() bfin_read16(ATAPI_PIO_TIM_1) | ||
275 | #define bfin_write_ATAPI_PIO_TIM_1(val) bfin_write16(ATAPI_PIO_TIM_1, val) | ||
276 | #define bfin_read_ATAPI_MULTI_TIM_0() bfin_read16(ATAPI_MULTI_TIM_0) | ||
277 | #define bfin_write_ATAPI_MULTI_TIM_0(val) bfin_write16(ATAPI_MULTI_TIM_0, val) | ||
278 | #define bfin_read_ATAPI_MULTI_TIM_1() bfin_read16(ATAPI_MULTI_TIM_1) | ||
279 | #define bfin_write_ATAPI_MULTI_TIM_1(val) bfin_write16(ATAPI_MULTI_TIM_1, val) | ||
280 | #define bfin_read_ATAPI_MULTI_TIM_2() bfin_read16(ATAPI_MULTI_TIM_2) | ||
281 | #define bfin_write_ATAPI_MULTI_TIM_2(val) bfin_write16(ATAPI_MULTI_TIM_2, val) | ||
282 | #define bfin_read_ATAPI_ULTRA_TIM_0() bfin_read16(ATAPI_ULTRA_TIM_0) | ||
283 | #define bfin_write_ATAPI_ULTRA_TIM_0(val) bfin_write16(ATAPI_ULTRA_TIM_0, val) | ||
284 | #define bfin_read_ATAPI_ULTRA_TIM_1() bfin_read16(ATAPI_ULTRA_TIM_1) | ||
285 | #define bfin_write_ATAPI_ULTRA_TIM_1(val) bfin_write16(ATAPI_ULTRA_TIM_1, val) | ||
286 | #define bfin_read_ATAPI_ULTRA_TIM_2() bfin_read16(ATAPI_ULTRA_TIM_2) | ||
287 | #define bfin_write_ATAPI_ULTRA_TIM_2(val) bfin_write16(ATAPI_ULTRA_TIM_2, val) | ||
288 | #define bfin_read_ATAPI_ULTRA_TIM_3() bfin_read16(ATAPI_ULTRA_TIM_3) | ||
289 | #define bfin_write_ATAPI_ULTRA_TIM_3(val) bfin_write16(ATAPI_ULTRA_TIM_3, val) | ||
290 | |||
291 | /* SDH Registers */ | ||
292 | |||
293 | #define bfin_read_SDH_PWR_CTL() bfin_read16(SDH_PWR_CTL) | ||
294 | #define bfin_write_SDH_PWR_CTL(val) bfin_write16(SDH_PWR_CTL, val) | ||
295 | #define bfin_read_SDH_CLK_CTL() bfin_read16(SDH_CLK_CTL) | ||
296 | #define bfin_write_SDH_CLK_CTL(val) bfin_write16(SDH_CLK_CTL, val) | ||
297 | #define bfin_read_SDH_ARGUMENT() bfin_read32(SDH_ARGUMENT) | ||
298 | #define bfin_write_SDH_ARGUMENT(val) bfin_write32(SDH_ARGUMENT, val) | ||
299 | #define bfin_read_SDH_COMMAND() bfin_read16(SDH_COMMAND) | ||
300 | #define bfin_write_SDH_COMMAND(val) bfin_write16(SDH_COMMAND, val) | ||
301 | #define bfin_read_SDH_RESP_CMD() bfin_read16(SDH_RESP_CMD) | ||
302 | #define bfin_write_SDH_RESP_CMD(val) bfin_write16(SDH_RESP_CMD, val) | ||
303 | #define bfin_read_SDH_RESPONSE0() bfin_read32(SDH_RESPONSE0) | ||
304 | #define bfin_write_SDH_RESPONSE0(val) bfin_write32(SDH_RESPONSE0, val) | ||
305 | #define bfin_read_SDH_RESPONSE1() bfin_read32(SDH_RESPONSE1) | ||
306 | #define bfin_write_SDH_RESPONSE1(val) bfin_write32(SDH_RESPONSE1, val) | ||
307 | #define bfin_read_SDH_RESPONSE2() bfin_read32(SDH_RESPONSE2) | ||
308 | #define bfin_write_SDH_RESPONSE2(val) bfin_write32(SDH_RESPONSE2, val) | ||
309 | #define bfin_read_SDH_RESPONSE3() bfin_read32(SDH_RESPONSE3) | ||
310 | #define bfin_write_SDH_RESPONSE3(val) bfin_write32(SDH_RESPONSE3, val) | ||
311 | #define bfin_read_SDH_DATA_TIMER() bfin_read32(SDH_DATA_TIMER) | ||
312 | #define bfin_write_SDH_DATA_TIMER(val) bfin_write32(SDH_DATA_TIMER, val) | ||
313 | #define bfin_read_SDH_DATA_LGTH() bfin_read16(SDH_DATA_LGTH) | ||
314 | #define bfin_write_SDH_DATA_LGTH(val) bfin_write16(SDH_DATA_LGTH, val) | ||
315 | #define bfin_read_SDH_DATA_CTL() bfin_read16(SDH_DATA_CTL) | ||
316 | #define bfin_write_SDH_DATA_CTL(val) bfin_write16(SDH_DATA_CTL, val) | ||
317 | #define bfin_read_SDH_DATA_CNT() bfin_read16(SDH_DATA_CNT) | ||
318 | #define bfin_write_SDH_DATA_CNT(val) bfin_write16(SDH_DATA_CNT, val) | ||
319 | #define bfin_read_SDH_STATUS() bfin_read32(SDH_STATUS) | ||
320 | #define bfin_write_SDH_STATUS(val) bfin_write32(SDH_STATUS, val) | ||
321 | #define bfin_read_SDH_STATUS_CLR() bfin_read16(SDH_STATUS_CLR) | ||
322 | #define bfin_write_SDH_STATUS_CLR(val) bfin_write16(SDH_STATUS_CLR, val) | ||
323 | #define bfin_read_SDH_MASK0() bfin_read32(SDH_MASK0) | ||
324 | #define bfin_write_SDH_MASK0(val) bfin_write32(SDH_MASK0, val) | ||
325 | #define bfin_read_SDH_MASK1() bfin_read32(SDH_MASK1) | ||
326 | #define bfin_write_SDH_MASK1(val) bfin_write32(SDH_MASK1, val) | ||
327 | #define bfin_read_SDH_FIFO_CNT() bfin_read16(SDH_FIFO_CNT) | ||
328 | #define bfin_write_SDH_FIFO_CNT(val) bfin_write16(SDH_FIFO_CNT, val) | ||
329 | #define bfin_read_SDH_FIFO() bfin_read32(SDH_FIFO) | ||
330 | #define bfin_write_SDH_FIFO(val) bfin_write32(SDH_FIFO, val) | ||
331 | #define bfin_read_SDH_E_STATUS() bfin_read16(SDH_E_STATUS) | ||
332 | #define bfin_write_SDH_E_STATUS(val) bfin_write16(SDH_E_STATUS, val) | ||
333 | #define bfin_read_SDH_E_MASK() bfin_read16(SDH_E_MASK) | ||
334 | #define bfin_write_SDH_E_MASK(val) bfin_write16(SDH_E_MASK, val) | ||
335 | #define bfin_read_SDH_CFG() bfin_read16(SDH_CFG) | ||
336 | #define bfin_write_SDH_CFG(val) bfin_write16(SDH_CFG, val) | ||
337 | #define bfin_read_SDH_RD_WAIT_EN() bfin_read16(SDH_RD_WAIT_EN) | ||
338 | #define bfin_write_SDH_RD_WAIT_EN(val) bfin_write16(SDH_RD_WAIT_EN, val) | ||
339 | #define bfin_read_SDH_PID0() bfin_read16(SDH_PID0) | ||
340 | #define bfin_write_SDH_PID0(val) bfin_write16(SDH_PID0, val) | ||
341 | #define bfin_read_SDH_PID1() bfin_read16(SDH_PID1) | ||
342 | #define bfin_write_SDH_PID1(val) bfin_write16(SDH_PID1, val) | ||
343 | #define bfin_read_SDH_PID2() bfin_read16(SDH_PID2) | ||
344 | #define bfin_write_SDH_PID2(val) bfin_write16(SDH_PID2, val) | ||
345 | #define bfin_read_SDH_PID3() bfin_read16(SDH_PID3) | ||
346 | #define bfin_write_SDH_PID3(val) bfin_write16(SDH_PID3, val) | ||
347 | #define bfin_read_SDH_PID4() bfin_read16(SDH_PID4) | ||
348 | #define bfin_write_SDH_PID4(val) bfin_write16(SDH_PID4, val) | ||
349 | #define bfin_read_SDH_PID5() bfin_read16(SDH_PID5) | ||
350 | #define bfin_write_SDH_PID5(val) bfin_write16(SDH_PID5, val) | ||
351 | #define bfin_read_SDH_PID6() bfin_read16(SDH_PID6) | ||
352 | #define bfin_write_SDH_PID6(val) bfin_write16(SDH_PID6, val) | ||
353 | #define bfin_read_SDH_PID7() bfin_read16(SDH_PID7) | ||
354 | #define bfin_write_SDH_PID7(val) bfin_write16(SDH_PID7, val) | ||
355 | |||
356 | /* HOST Port Registers */ | ||
357 | |||
358 | #define bfin_read_HOST_CONTROL() bfin_read16(HOST_CONTROL) | ||
359 | #define bfin_write_HOST_CONTROL(val) bfin_write16(HOST_CONTROL, val) | ||
360 | #define bfin_read_HOST_STATUS() bfin_read16(HOST_STATUS) | ||
361 | #define bfin_write_HOST_STATUS(val) bfin_write16(HOST_STATUS, val) | ||
362 | #define bfin_read_HOST_TIMEOUT() bfin_read16(HOST_TIMEOUT) | ||
363 | #define bfin_write_HOST_TIMEOUT(val) bfin_write16(HOST_TIMEOUT, val) | ||
364 | |||
365 | /* USB Control Registers */ | ||
366 | |||
367 | #define bfin_read_USB_FADDR() bfin_read16(USB_FADDR) | ||
368 | #define bfin_write_USB_FADDR(val) bfin_write16(USB_FADDR, val) | ||
369 | #define bfin_read_USB_POWER() bfin_read16(USB_POWER) | ||
370 | #define bfin_write_USB_POWER(val) bfin_write16(USB_POWER, val) | ||
371 | #define bfin_read_USB_INTRTX() bfin_read16(USB_INTRTX) | ||
372 | #define bfin_write_USB_INTRTX(val) bfin_write16(USB_INTRTX, val) | ||
373 | #define bfin_read_USB_INTRRX() bfin_read16(USB_INTRRX) | ||
374 | #define bfin_write_USB_INTRRX(val) bfin_write16(USB_INTRRX, val) | ||
375 | #define bfin_read_USB_INTRTXE() bfin_read16(USB_INTRTXE) | ||
376 | #define bfin_write_USB_INTRTXE(val) bfin_write16(USB_INTRTXE, val) | ||
377 | #define bfin_read_USB_INTRRXE() bfin_read16(USB_INTRRXE) | ||
378 | #define bfin_write_USB_INTRRXE(val) bfin_write16(USB_INTRRXE, val) | ||
379 | #define bfin_read_USB_INTRUSB() bfin_read16(USB_INTRUSB) | ||
380 | #define bfin_write_USB_INTRUSB(val) bfin_write16(USB_INTRUSB, val) | ||
381 | #define bfin_read_USB_INTRUSBE() bfin_read16(USB_INTRUSBE) | ||
382 | #define bfin_write_USB_INTRUSBE(val) bfin_write16(USB_INTRUSBE, val) | ||
383 | #define bfin_read_USB_FRAME() bfin_read16(USB_FRAME) | ||
384 | #define bfin_write_USB_FRAME(val) bfin_write16(USB_FRAME, val) | ||
385 | #define bfin_read_USB_INDEX() bfin_read16(USB_INDEX) | ||
386 | #define bfin_write_USB_INDEX(val) bfin_write16(USB_INDEX, val) | ||
387 | #define bfin_read_USB_TESTMODE() bfin_read16(USB_TESTMODE) | ||
388 | #define bfin_write_USB_TESTMODE(val) bfin_write16(USB_TESTMODE, val) | ||
389 | #define bfin_read_USB_GLOBINTR() bfin_read16(USB_GLOBINTR) | ||
390 | #define bfin_write_USB_GLOBINTR(val) bfin_write16(USB_GLOBINTR, val) | ||
391 | #define bfin_read_USB_GLOBAL_CTL() bfin_read16(USB_GLOBAL_CTL) | ||
392 | #define bfin_write_USB_GLOBAL_CTL(val) bfin_write16(USB_GLOBAL_CTL, val) | ||
393 | |||
394 | /* USB Packet Control Registers */ | ||
395 | |||
396 | #define bfin_read_USB_TX_MAX_PACKET() bfin_read16(USB_TX_MAX_PACKET) | ||
397 | #define bfin_write_USB_TX_MAX_PACKET(val) bfin_write16(USB_TX_MAX_PACKET, val) | ||
398 | #define bfin_read_USB_CSR0() bfin_read16(USB_CSR0) | ||
399 | #define bfin_write_USB_CSR0(val) bfin_write16(USB_CSR0, val) | ||
400 | #define bfin_read_USB_TXCSR() bfin_read16(USB_TXCSR) | ||
401 | #define bfin_write_USB_TXCSR(val) bfin_write16(USB_TXCSR, val) | ||
402 | #define bfin_read_USB_RX_MAX_PACKET() bfin_read16(USB_RX_MAX_PACKET) | ||
403 | #define bfin_write_USB_RX_MAX_PACKET(val) bfin_write16(USB_RX_MAX_PACKET, val) | ||
404 | #define bfin_read_USB_RXCSR() bfin_read16(USB_RXCSR) | ||
405 | #define bfin_write_USB_RXCSR(val) bfin_write16(USB_RXCSR, val) | ||
406 | #define bfin_read_USB_COUNT0() bfin_read16(USB_COUNT0) | ||
407 | #define bfin_write_USB_COUNT0(val) bfin_write16(USB_COUNT0, val) | ||
408 | #define bfin_read_USB_RXCOUNT() bfin_read16(USB_RXCOUNT) | ||
409 | #define bfin_write_USB_RXCOUNT(val) bfin_write16(USB_RXCOUNT, val) | ||
410 | #define bfin_read_USB_TXTYPE() bfin_read16(USB_TXTYPE) | ||
411 | #define bfin_write_USB_TXTYPE(val) bfin_write16(USB_TXTYPE, val) | ||
412 | #define bfin_read_USB_NAKLIMIT0() bfin_read16(USB_NAKLIMIT0) | ||
413 | #define bfin_write_USB_NAKLIMIT0(val) bfin_write16(USB_NAKLIMIT0, val) | ||
414 | #define bfin_read_USB_TXINTERVAL() bfin_read16(USB_TXINTERVAL) | ||
415 | #define bfin_write_USB_TXINTERVAL(val) bfin_write16(USB_TXINTERVAL, val) | ||
416 | #define bfin_read_USB_RXTYPE() bfin_read16(USB_RXTYPE) | ||
417 | #define bfin_write_USB_RXTYPE(val) bfin_write16(USB_RXTYPE, val) | ||
418 | #define bfin_read_USB_RXINTERVAL() bfin_read16(USB_RXINTERVAL) | ||
419 | #define bfin_write_USB_RXINTERVAL(val) bfin_write16(USB_RXINTERVAL, val) | ||
420 | #define bfin_read_USB_TXCOUNT() bfin_read16(USB_TXCOUNT) | ||
421 | #define bfin_write_USB_TXCOUNT(val) bfin_write16(USB_TXCOUNT, val) | ||
422 | |||
423 | /* USB Endbfin_read_()oint FIFO Registers */ | ||
424 | |||
425 | #define bfin_read_USB_EP0_FIFO() bfin_read16(USB_EP0_FIFO) | ||
426 | #define bfin_write_USB_EP0_FIFO(val) bfin_write16(USB_EP0_FIFO, val) | ||
427 | #define bfin_read_USB_EP1_FIFO() bfin_read16(USB_EP1_FIFO) | ||
428 | #define bfin_write_USB_EP1_FIFO(val) bfin_write16(USB_EP1_FIFO, val) | ||
429 | #define bfin_read_USB_EP2_FIFO() bfin_read16(USB_EP2_FIFO) | ||
430 | #define bfin_write_USB_EP2_FIFO(val) bfin_write16(USB_EP2_FIFO, val) | ||
431 | #define bfin_read_USB_EP3_FIFO() bfin_read16(USB_EP3_FIFO) | ||
432 | #define bfin_write_USB_EP3_FIFO(val) bfin_write16(USB_EP3_FIFO, val) | ||
433 | #define bfin_read_USB_EP4_FIFO() bfin_read16(USB_EP4_FIFO) | ||
434 | #define bfin_write_USB_EP4_FIFO(val) bfin_write16(USB_EP4_FIFO, val) | ||
435 | #define bfin_read_USB_EP5_FIFO() bfin_read16(USB_EP5_FIFO) | ||
436 | #define bfin_write_USB_EP5_FIFO(val) bfin_write16(USB_EP5_FIFO, val) | ||
437 | #define bfin_read_USB_EP6_FIFO() bfin_read16(USB_EP6_FIFO) | ||
438 | #define bfin_write_USB_EP6_FIFO(val) bfin_write16(USB_EP6_FIFO, val) | ||
439 | #define bfin_read_USB_EP7_FIFO() bfin_read16(USB_EP7_FIFO) | ||
440 | #define bfin_write_USB_EP7_FIFO(val) bfin_write16(USB_EP7_FIFO, val) | ||
441 | |||
442 | /* USB OTG Control Registers */ | ||
443 | |||
444 | #define bfin_read_USB_OTG_DEV_CTL() bfin_read16(USB_OTG_DEV_CTL) | ||
445 | #define bfin_write_USB_OTG_DEV_CTL(val) bfin_write16(USB_OTG_DEV_CTL, val) | ||
446 | #define bfin_read_USB_OTG_VBUS_IRQ() bfin_read16(USB_OTG_VBUS_IRQ) | ||
447 | #define bfin_write_USB_OTG_VBUS_IRQ(val) bfin_write16(USB_OTG_VBUS_IRQ, val) | ||
448 | #define bfin_read_USB_OTG_VBUS_MASK() bfin_read16(USB_OTG_VBUS_MASK) | ||
449 | #define bfin_write_USB_OTG_VBUS_MASK(val) bfin_write16(USB_OTG_VBUS_MASK, val) | ||
450 | |||
451 | /* USB Phy Control Registers */ | ||
452 | |||
453 | #define bfin_read_USB_LINKINFO() bfin_read16(USB_LINKINFO) | ||
454 | #define bfin_write_USB_LINKINFO(val) bfin_write16(USB_LINKINFO, val) | ||
455 | #define bfin_read_USB_VPLEN() bfin_read16(USB_VPLEN) | ||
456 | #define bfin_write_USB_VPLEN(val) bfin_write16(USB_VPLEN, val) | ||
457 | #define bfin_read_USB_HS_EOF1() bfin_read16(USB_HS_EOF1) | ||
458 | #define bfin_write_USB_HS_EOF1(val) bfin_write16(USB_HS_EOF1, val) | ||
459 | #define bfin_read_USB_FS_EOF1() bfin_read16(USB_FS_EOF1) | ||
460 | #define bfin_write_USB_FS_EOF1(val) bfin_write16(USB_FS_EOF1, val) | ||
461 | #define bfin_read_USB_LS_EOF1() bfin_read16(USB_LS_EOF1) | ||
462 | #define bfin_write_USB_LS_EOF1(val) bfin_write16(USB_LS_EOF1, val) | ||
463 | |||
464 | /* (APHY_CNTRL is for ADI usage only) */ | ||
465 | |||
466 | #define bfin_read_USB_APHY_CNTRL() bfin_read16(USB_APHY_CNTRL) | ||
467 | #define bfin_write_USB_APHY_CNTRL(val) bfin_write16(USB_APHY_CNTRL, val) | ||
468 | |||
469 | /* (APHY_CALIB is for ADI usage only) */ | ||
470 | |||
471 | #define bfin_read_USB_APHY_CALIB() bfin_read16(USB_APHY_CALIB) | ||
472 | #define bfin_write_USB_APHY_CALIB(val) bfin_write16(USB_APHY_CALIB, val) | ||
473 | #define bfin_read_USB_APHY_CNTRL2() bfin_read16(USB_APHY_CNTRL2) | ||
474 | #define bfin_write_USB_APHY_CNTRL2(val) bfin_write16(USB_APHY_CNTRL2, val) | ||
475 | |||
476 | /* (PHY_TEST is for ADI usage only) */ | ||
477 | |||
478 | #define bfin_read_USB_PHY_TEST() bfin_read16(USB_PHY_TEST) | ||
479 | #define bfin_write_USB_PHY_TEST(val) bfin_write16(USB_PHY_TEST, val) | ||
480 | #define bfin_read_USB_PLLOSC_CTRL() bfin_read16(USB_PLLOSC_CTRL) | ||
481 | #define bfin_write_USB_PLLOSC_CTRL(val) bfin_write16(USB_PLLOSC_CTRL, val) | ||
482 | #define bfin_read_USB_SRP_CLKDIV() bfin_read16(USB_SRP_CLKDIV) | ||
483 | #define bfin_write_USB_SRP_CLKDIV(val) bfin_write16(USB_SRP_CLKDIV, val) | ||
484 | |||
485 | /* USB Endbfin_read_()oint 0 Control Registers */ | ||
486 | |||
487 | #define bfin_read_USB_EP_NI0_TXMAXP() bfin_read16(USB_EP_NI0_TXMAXP) | ||
488 | #define bfin_write_USB_EP_NI0_TXMAXP(val) bfin_write16(USB_EP_NI0_TXMAXP, val) | ||
489 | #define bfin_read_USB_EP_NI0_TXCSR() bfin_read16(USB_EP_NI0_TXCSR) | ||
490 | #define bfin_write_USB_EP_NI0_TXCSR(val) bfin_write16(USB_EP_NI0_TXCSR, val) | ||
491 | #define bfin_read_USB_EP_NI0_RXMAXP() bfin_read16(USB_EP_NI0_RXMAXP) | ||
492 | #define bfin_write_USB_EP_NI0_RXMAXP(val) bfin_write16(USB_EP_NI0_RXMAXP, val) | ||
493 | #define bfin_read_USB_EP_NI0_RXCSR() bfin_read16(USB_EP_NI0_RXCSR) | ||
494 | #define bfin_write_USB_EP_NI0_RXCSR(val) bfin_write16(USB_EP_NI0_RXCSR, val) | ||
495 | #define bfin_read_USB_EP_NI0_RXCOUNT() bfin_read16(USB_EP_NI0_RXCOUNT) | ||
496 | #define bfin_write_USB_EP_NI0_RXCOUNT(val) bfin_write16(USB_EP_NI0_RXCOUNT, val) | ||
497 | #define bfin_read_USB_EP_NI0_TXTYPE() bfin_read16(USB_EP_NI0_TXTYPE) | ||
498 | #define bfin_write_USB_EP_NI0_TXTYPE(val) bfin_write16(USB_EP_NI0_TXTYPE, val) | ||
499 | #define bfin_read_USB_EP_NI0_TXINTERVAL() bfin_read16(USB_EP_NI0_TXINTERVAL) | ||
500 | #define bfin_write_USB_EP_NI0_TXINTERVAL(val) bfin_write16(USB_EP_NI0_TXINTERVAL, val) | ||
501 | #define bfin_read_USB_EP_NI0_RXTYPE() bfin_read16(USB_EP_NI0_RXTYPE) | ||
502 | #define bfin_write_USB_EP_NI0_RXTYPE(val) bfin_write16(USB_EP_NI0_RXTYPE, val) | ||
503 | #define bfin_read_USB_EP_NI0_RXINTERVAL() bfin_read16(USB_EP_NI0_RXINTERVAL) | ||
504 | #define bfin_write_USB_EP_NI0_RXINTERVAL(val) bfin_write16(USB_EP_NI0_RXINTERVAL, val) | ||
505 | |||
506 | /* USB Endbfin_read_()oint 1 Control Registers */ | ||
507 | |||
508 | #define bfin_read_USB_EP_NI0_TXCOUNT() bfin_read16(USB_EP_NI0_TXCOUNT) | ||
509 | #define bfin_write_USB_EP_NI0_TXCOUNT(val) bfin_write16(USB_EP_NI0_TXCOUNT, val) | ||
510 | #define bfin_read_USB_EP_NI1_TXMAXP() bfin_read16(USB_EP_NI1_TXMAXP) | ||
511 | #define bfin_write_USB_EP_NI1_TXMAXP(val) bfin_write16(USB_EP_NI1_TXMAXP, val) | ||
512 | #define bfin_read_USB_EP_NI1_TXCSR() bfin_read16(USB_EP_NI1_TXCSR) | ||
513 | #define bfin_write_USB_EP_NI1_TXCSR(val) bfin_write16(USB_EP_NI1_TXCSR, val) | ||
514 | #define bfin_read_USB_EP_NI1_RXMAXP() bfin_read16(USB_EP_NI1_RXMAXP) | ||
515 | #define bfin_write_USB_EP_NI1_RXMAXP(val) bfin_write16(USB_EP_NI1_RXMAXP, val) | ||
516 | #define bfin_read_USB_EP_NI1_RXCSR() bfin_read16(USB_EP_NI1_RXCSR) | ||
517 | #define bfin_write_USB_EP_NI1_RXCSR(val) bfin_write16(USB_EP_NI1_RXCSR, val) | ||
518 | #define bfin_read_USB_EP_NI1_RXCOUNT() bfin_read16(USB_EP_NI1_RXCOUNT) | ||
519 | #define bfin_write_USB_EP_NI1_RXCOUNT(val) bfin_write16(USB_EP_NI1_RXCOUNT, val) | ||
520 | #define bfin_read_USB_EP_NI1_TXTYPE() bfin_read16(USB_EP_NI1_TXTYPE) | ||
521 | #define bfin_write_USB_EP_NI1_TXTYPE(val) bfin_write16(USB_EP_NI1_TXTYPE, val) | ||
522 | #define bfin_read_USB_EP_NI1_TXINTERVAL() bfin_read16(USB_EP_NI1_TXINTERVAL) | ||
523 | #define bfin_write_USB_EP_NI1_TXINTERVAL(val) bfin_write16(USB_EP_NI1_TXINTERVAL, val) | ||
524 | #define bfin_read_USB_EP_NI1_RXTYPE() bfin_read16(USB_EP_NI1_RXTYPE) | ||
525 | #define bfin_write_USB_EP_NI1_RXTYPE(val) bfin_write16(USB_EP_NI1_RXTYPE, val) | ||
526 | #define bfin_read_USB_EP_NI1_RXINTERVAL() bfin_read16(USB_EP_NI1_RXINTERVAL) | ||
527 | #define bfin_write_USB_EP_NI1_RXINTERVAL(val) bfin_write16(USB_EP_NI1_RXINTERVAL, val) | ||
528 | |||
529 | /* USB Endbfin_read_()oint 2 Control Registers */ | ||
530 | |||
531 | #define bfin_read_USB_EP_NI1_TXCOUNT() bfin_read16(USB_EP_NI1_TXCOUNT) | ||
532 | #define bfin_write_USB_EP_NI1_TXCOUNT(val) bfin_write16(USB_EP_NI1_TXCOUNT, val) | ||
533 | #define bfin_read_USB_EP_NI2_TXMAXP() bfin_read16(USB_EP_NI2_TXMAXP) | ||
534 | #define bfin_write_USB_EP_NI2_TXMAXP(val) bfin_write16(USB_EP_NI2_TXMAXP, val) | ||
535 | #define bfin_read_USB_EP_NI2_TXCSR() bfin_read16(USB_EP_NI2_TXCSR) | ||
536 | #define bfin_write_USB_EP_NI2_TXCSR(val) bfin_write16(USB_EP_NI2_TXCSR, val) | ||
537 | #define bfin_read_USB_EP_NI2_RXMAXP() bfin_read16(USB_EP_NI2_RXMAXP) | ||
538 | #define bfin_write_USB_EP_NI2_RXMAXP(val) bfin_write16(USB_EP_NI2_RXMAXP, val) | ||
539 | #define bfin_read_USB_EP_NI2_RXCSR() bfin_read16(USB_EP_NI2_RXCSR) | ||
540 | #define bfin_write_USB_EP_NI2_RXCSR(val) bfin_write16(USB_EP_NI2_RXCSR, val) | ||
541 | #define bfin_read_USB_EP_NI2_RXCOUNT() bfin_read16(USB_EP_NI2_RXCOUNT) | ||
542 | #define bfin_write_USB_EP_NI2_RXCOUNT(val) bfin_write16(USB_EP_NI2_RXCOUNT, val) | ||
543 | #define bfin_read_USB_EP_NI2_TXTYPE() bfin_read16(USB_EP_NI2_TXTYPE) | ||
544 | #define bfin_write_USB_EP_NI2_TXTYPE(val) bfin_write16(USB_EP_NI2_TXTYPE, val) | ||
545 | #define bfin_read_USB_EP_NI2_TXINTERVAL() bfin_read16(USB_EP_NI2_TXINTERVAL) | ||
546 | #define bfin_write_USB_EP_NI2_TXINTERVAL(val) bfin_write16(USB_EP_NI2_TXINTERVAL, val) | ||
547 | #define bfin_read_USB_EP_NI2_RXTYPE() bfin_read16(USB_EP_NI2_RXTYPE) | ||
548 | #define bfin_write_USB_EP_NI2_RXTYPE(val) bfin_write16(USB_EP_NI2_RXTYPE, val) | ||
549 | #define bfin_read_USB_EP_NI2_RXINTERVAL() bfin_read16(USB_EP_NI2_RXINTERVAL) | ||
550 | #define bfin_write_USB_EP_NI2_RXINTERVAL(val) bfin_write16(USB_EP_NI2_RXINTERVAL, val) | ||
551 | |||
552 | /* USB Endbfin_read_()oint 3 Control Registers */ | ||
553 | |||
554 | #define bfin_read_USB_EP_NI2_TXCOUNT() bfin_read16(USB_EP_NI2_TXCOUNT) | ||
555 | #define bfin_write_USB_EP_NI2_TXCOUNT(val) bfin_write16(USB_EP_NI2_TXCOUNT, val) | ||
556 | #define bfin_read_USB_EP_NI3_TXMAXP() bfin_read16(USB_EP_NI3_TXMAXP) | ||
557 | #define bfin_write_USB_EP_NI3_TXMAXP(val) bfin_write16(USB_EP_NI3_TXMAXP, val) | ||
558 | #define bfin_read_USB_EP_NI3_TXCSR() bfin_read16(USB_EP_NI3_TXCSR) | ||
559 | #define bfin_write_USB_EP_NI3_TXCSR(val) bfin_write16(USB_EP_NI3_TXCSR, val) | ||
560 | #define bfin_read_USB_EP_NI3_RXMAXP() bfin_read16(USB_EP_NI3_RXMAXP) | ||
561 | #define bfin_write_USB_EP_NI3_RXMAXP(val) bfin_write16(USB_EP_NI3_RXMAXP, val) | ||
562 | #define bfin_read_USB_EP_NI3_RXCSR() bfin_read16(USB_EP_NI3_RXCSR) | ||
563 | #define bfin_write_USB_EP_NI3_RXCSR(val) bfin_write16(USB_EP_NI3_RXCSR, val) | ||
564 | #define bfin_read_USB_EP_NI3_RXCOUNT() bfin_read16(USB_EP_NI3_RXCOUNT) | ||
565 | #define bfin_write_USB_EP_NI3_RXCOUNT(val) bfin_write16(USB_EP_NI3_RXCOUNT, val) | ||
566 | #define bfin_read_USB_EP_NI3_TXTYPE() bfin_read16(USB_EP_NI3_TXTYPE) | ||
567 | #define bfin_write_USB_EP_NI3_TXTYPE(val) bfin_write16(USB_EP_NI3_TXTYPE, val) | ||
568 | #define bfin_read_USB_EP_NI3_TXINTERVAL() bfin_read16(USB_EP_NI3_TXINTERVAL) | ||
569 | #define bfin_write_USB_EP_NI3_TXINTERVAL(val) bfin_write16(USB_EP_NI3_TXINTERVAL, val) | ||
570 | #define bfin_read_USB_EP_NI3_RXTYPE() bfin_read16(USB_EP_NI3_RXTYPE) | ||
571 | #define bfin_write_USB_EP_NI3_RXTYPE(val) bfin_write16(USB_EP_NI3_RXTYPE, val) | ||
572 | #define bfin_read_USB_EP_NI3_RXINTERVAL() bfin_read16(USB_EP_NI3_RXINTERVAL) | ||
573 | #define bfin_write_USB_EP_NI3_RXINTERVAL(val) bfin_write16(USB_EP_NI3_RXINTERVAL, val) | ||
574 | |||
575 | /* USB Endbfin_read_()oint 4 Control Registers */ | ||
576 | |||
577 | #define bfin_read_USB_EP_NI3_TXCOUNT() bfin_read16(USB_EP_NI3_TXCOUNT) | ||
578 | #define bfin_write_USB_EP_NI3_TXCOUNT(val) bfin_write16(USB_EP_NI3_TXCOUNT, val) | ||
579 | #define bfin_read_USB_EP_NI4_TXMAXP() bfin_read16(USB_EP_NI4_TXMAXP) | ||
580 | #define bfin_write_USB_EP_NI4_TXMAXP(val) bfin_write16(USB_EP_NI4_TXMAXP, val) | ||
581 | #define bfin_read_USB_EP_NI4_TXCSR() bfin_read16(USB_EP_NI4_TXCSR) | ||
582 | #define bfin_write_USB_EP_NI4_TXCSR(val) bfin_write16(USB_EP_NI4_TXCSR, val) | ||
583 | #define bfin_read_USB_EP_NI4_RXMAXP() bfin_read16(USB_EP_NI4_RXMAXP) | ||
584 | #define bfin_write_USB_EP_NI4_RXMAXP(val) bfin_write16(USB_EP_NI4_RXMAXP, val) | ||
585 | #define bfin_read_USB_EP_NI4_RXCSR() bfin_read16(USB_EP_NI4_RXCSR) | ||
586 | #define bfin_write_USB_EP_NI4_RXCSR(val) bfin_write16(USB_EP_NI4_RXCSR, val) | ||
587 | #define bfin_read_USB_EP_NI4_RXCOUNT() bfin_read16(USB_EP_NI4_RXCOUNT) | ||
588 | #define bfin_write_USB_EP_NI4_RXCOUNT(val) bfin_write16(USB_EP_NI4_RXCOUNT, val) | ||
589 | #define bfin_read_USB_EP_NI4_TXTYPE() bfin_read16(USB_EP_NI4_TXTYPE) | ||
590 | #define bfin_write_USB_EP_NI4_TXTYPE(val) bfin_write16(USB_EP_NI4_TXTYPE, val) | ||
591 | #define bfin_read_USB_EP_NI4_TXINTERVAL() bfin_read16(USB_EP_NI4_TXINTERVAL) | ||
592 | #define bfin_write_USB_EP_NI4_TXINTERVAL(val) bfin_write16(USB_EP_NI4_TXINTERVAL, val) | ||
593 | #define bfin_read_USB_EP_NI4_RXTYPE() bfin_read16(USB_EP_NI4_RXTYPE) | ||
594 | #define bfin_write_USB_EP_NI4_RXTYPE(val) bfin_write16(USB_EP_NI4_RXTYPE, val) | ||
595 | #define bfin_read_USB_EP_NI4_RXINTERVAL() bfin_read16(USB_EP_NI4_RXINTERVAL) | ||
596 | #define bfin_write_USB_EP_NI4_RXINTERVAL(val) bfin_write16(USB_EP_NI4_RXINTERVAL, val) | ||
597 | |||
598 | /* USB Endbfin_read_()oint 5 Control Registers */ | ||
599 | |||
600 | #define bfin_read_USB_EP_NI4_TXCOUNT() bfin_read16(USB_EP_NI4_TXCOUNT) | ||
601 | #define bfin_write_USB_EP_NI4_TXCOUNT(val) bfin_write16(USB_EP_NI4_TXCOUNT, val) | ||
602 | #define bfin_read_USB_EP_NI5_TXMAXP() bfin_read16(USB_EP_NI5_TXMAXP) | ||
603 | #define bfin_write_USB_EP_NI5_TXMAXP(val) bfin_write16(USB_EP_NI5_TXMAXP, val) | ||
604 | #define bfin_read_USB_EP_NI5_TXCSR() bfin_read16(USB_EP_NI5_TXCSR) | ||
605 | #define bfin_write_USB_EP_NI5_TXCSR(val) bfin_write16(USB_EP_NI5_TXCSR, val) | ||
606 | #define bfin_read_USB_EP_NI5_RXMAXP() bfin_read16(USB_EP_NI5_RXMAXP) | ||
607 | #define bfin_write_USB_EP_NI5_RXMAXP(val) bfin_write16(USB_EP_NI5_RXMAXP, val) | ||
608 | #define bfin_read_USB_EP_NI5_RXCSR() bfin_read16(USB_EP_NI5_RXCSR) | ||
609 | #define bfin_write_USB_EP_NI5_RXCSR(val) bfin_write16(USB_EP_NI5_RXCSR, val) | ||
610 | #define bfin_read_USB_EP_NI5_RXCOUNT() bfin_read16(USB_EP_NI5_RXCOUNT) | ||
611 | #define bfin_write_USB_EP_NI5_RXCOUNT(val) bfin_write16(USB_EP_NI5_RXCOUNT, val) | ||
612 | #define bfin_read_USB_EP_NI5_TXTYPE() bfin_read16(USB_EP_NI5_TXTYPE) | ||
613 | #define bfin_write_USB_EP_NI5_TXTYPE(val) bfin_write16(USB_EP_NI5_TXTYPE, val) | ||
614 | #define bfin_read_USB_EP_NI5_TXINTERVAL() bfin_read16(USB_EP_NI5_TXINTERVAL) | ||
615 | #define bfin_write_USB_EP_NI5_TXINTERVAL(val) bfin_write16(USB_EP_NI5_TXINTERVAL, val) | ||
616 | #define bfin_read_USB_EP_NI5_RXTYPE() bfin_read16(USB_EP_NI5_RXTYPE) | ||
617 | #define bfin_write_USB_EP_NI5_RXTYPE(val) bfin_write16(USB_EP_NI5_RXTYPE, val) | ||
618 | #define bfin_read_USB_EP_NI5_RXINTERVAL() bfin_read16(USB_EP_NI5_RXINTERVAL) | ||
619 | #define bfin_write_USB_EP_NI5_RXINTERVAL(val) bfin_write16(USB_EP_NI5_RXINTERVAL, val) | ||
620 | |||
621 | /* USB Endbfin_read_()oint 6 Control Registers */ | ||
622 | |||
623 | #define bfin_read_USB_EP_NI5_TXCOUNT() bfin_read16(USB_EP_NI5_TXCOUNT) | ||
624 | #define bfin_write_USB_EP_NI5_TXCOUNT(val) bfin_write16(USB_EP_NI5_TXCOUNT, val) | ||
625 | #define bfin_read_USB_EP_NI6_TXMAXP() bfin_read16(USB_EP_NI6_TXMAXP) | ||
626 | #define bfin_write_USB_EP_NI6_TXMAXP(val) bfin_write16(USB_EP_NI6_TXMAXP, val) | ||
627 | #define bfin_read_USB_EP_NI6_TXCSR() bfin_read16(USB_EP_NI6_TXCSR) | ||
628 | #define bfin_write_USB_EP_NI6_TXCSR(val) bfin_write16(USB_EP_NI6_TXCSR, val) | ||
629 | #define bfin_read_USB_EP_NI6_RXMAXP() bfin_read16(USB_EP_NI6_RXMAXP) | ||
630 | #define bfin_write_USB_EP_NI6_RXMAXP(val) bfin_write16(USB_EP_NI6_RXMAXP, val) | ||
631 | #define bfin_read_USB_EP_NI6_RXCSR() bfin_read16(USB_EP_NI6_RXCSR) | ||
632 | #define bfin_write_USB_EP_NI6_RXCSR(val) bfin_write16(USB_EP_NI6_RXCSR, val) | ||
633 | #define bfin_read_USB_EP_NI6_RXCOUNT() bfin_read16(USB_EP_NI6_RXCOUNT) | ||
634 | #define bfin_write_USB_EP_NI6_RXCOUNT(val) bfin_write16(USB_EP_NI6_RXCOUNT, val) | ||
635 | #define bfin_read_USB_EP_NI6_TXTYPE() bfin_read16(USB_EP_NI6_TXTYPE) | ||
636 | #define bfin_write_USB_EP_NI6_TXTYPE(val) bfin_write16(USB_EP_NI6_TXTYPE, val) | ||
637 | #define bfin_read_USB_EP_NI6_TXINTERVAL() bfin_read16(USB_EP_NI6_TXINTERVAL) | ||
638 | #define bfin_write_USB_EP_NI6_TXINTERVAL(val) bfin_write16(USB_EP_NI6_TXINTERVAL, val) | ||
639 | #define bfin_read_USB_EP_NI6_RXTYPE() bfin_read16(USB_EP_NI6_RXTYPE) | ||
640 | #define bfin_write_USB_EP_NI6_RXTYPE(val) bfin_write16(USB_EP_NI6_RXTYPE, val) | ||
641 | #define bfin_read_USB_EP_NI6_RXINTERVAL() bfin_read16(USB_EP_NI6_RXINTERVAL) | ||
642 | #define bfin_write_USB_EP_NI6_RXINTERVAL(val) bfin_write16(USB_EP_NI6_RXINTERVAL, val) | ||
643 | |||
644 | /* USB Endbfin_read_()oint 7 Control Registers */ | ||
645 | |||
646 | #define bfin_read_USB_EP_NI6_TXCOUNT() bfin_read16(USB_EP_NI6_TXCOUNT) | ||
647 | #define bfin_write_USB_EP_NI6_TXCOUNT(val) bfin_write16(USB_EP_NI6_TXCOUNT, val) | ||
648 | #define bfin_read_USB_EP_NI7_TXMAXP() bfin_read16(USB_EP_NI7_TXMAXP) | ||
649 | #define bfin_write_USB_EP_NI7_TXMAXP(val) bfin_write16(USB_EP_NI7_TXMAXP, val) | ||
650 | #define bfin_read_USB_EP_NI7_TXCSR() bfin_read16(USB_EP_NI7_TXCSR) | ||
651 | #define bfin_write_USB_EP_NI7_TXCSR(val) bfin_write16(USB_EP_NI7_TXCSR, val) | ||
652 | #define bfin_read_USB_EP_NI7_RXMAXP() bfin_read16(USB_EP_NI7_RXMAXP) | ||
653 | #define bfin_write_USB_EP_NI7_RXMAXP(val) bfin_write16(USB_EP_NI7_RXMAXP, val) | ||
654 | #define bfin_read_USB_EP_NI7_RXCSR() bfin_read16(USB_EP_NI7_RXCSR) | ||
655 | #define bfin_write_USB_EP_NI7_RXCSR(val) bfin_write16(USB_EP_NI7_RXCSR, val) | ||
656 | #define bfin_read_USB_EP_NI7_RXCOUNT() bfin_read16(USB_EP_NI7_RXCOUNT) | ||
657 | #define bfin_write_USB_EP_NI7_RXCOUNT(val) bfin_write16(USB_EP_NI7_RXCOUNT, val) | ||
658 | #define bfin_read_USB_EP_NI7_TXTYPE() bfin_read16(USB_EP_NI7_TXTYPE) | ||
659 | #define bfin_write_USB_EP_NI7_TXTYPE(val) bfin_write16(USB_EP_NI7_TXTYPE, val) | ||
660 | #define bfin_read_USB_EP_NI7_TXINTERVAL() bfin_read16(USB_EP_NI7_TXINTERVAL) | ||
661 | #define bfin_write_USB_EP_NI7_TXINTERVAL(val) bfin_write16(USB_EP_NI7_TXINTERVAL, val) | ||
662 | #define bfin_read_USB_EP_NI7_RXTYPE() bfin_read16(USB_EP_NI7_RXTYPE) | ||
663 | #define bfin_write_USB_EP_NI7_RXTYPE(val) bfin_write16(USB_EP_NI7_RXTYPE, val) | ||
664 | #define bfin_read_USB_EP_NI7_RXINTERVAL() bfin_read16(USB_EP_NI7_RXINTERVAL) | ||
665 | #define bfin_write_USB_EP_NI7_RXINTERVAL(val) bfin_write16(USB_EP_NI7_RXINTERVAL, val) | ||
666 | #define bfin_read_USB_EP_NI7_TXCOUNT() bfin_read16(USB_EP_NI7_TXCOUNT) | ||
667 | #define bfin_write_USB_EP_NI7_TXCOUNT(val) bfin_write16(USB_EP_NI7_TXCOUNT, val) | ||
668 | #define bfin_read_USB_DMA_INTERRUPT() bfin_read16(USB_DMA_INTERRUPT) | ||
669 | #define bfin_write_USB_DMA_INTERRUPT(val) bfin_write16(USB_DMA_INTERRUPT, val) | ||
670 | |||
671 | /* USB Channel 0 Config Registers */ | ||
672 | |||
673 | #define bfin_read_USB_DMA0CONTROL() bfin_read16(USB_DMA0CONTROL) | ||
674 | #define bfin_write_USB_DMA0CONTROL(val) bfin_write16(USB_DMA0CONTROL, val) | ||
675 | #define bfin_read_USB_DMA0ADDRLOW() bfin_read16(USB_DMA0ADDRLOW) | ||
676 | #define bfin_write_USB_DMA0ADDRLOW(val) bfin_write16(USB_DMA0ADDRLOW, val) | ||
677 | #define bfin_read_USB_DMA0ADDRHIGH() bfin_read16(USB_DMA0ADDRHIGH) | ||
678 | #define bfin_write_USB_DMA0ADDRHIGH(val) bfin_write16(USB_DMA0ADDRHIGH, val) | ||
679 | #define bfin_read_USB_DMA0COUNTLOW() bfin_read16(USB_DMA0COUNTLOW) | ||
680 | #define bfin_write_USB_DMA0COUNTLOW(val) bfin_write16(USB_DMA0COUNTLOW, val) | ||
681 | #define bfin_read_USB_DMA0COUNTHIGH() bfin_read16(USB_DMA0COUNTHIGH) | ||
682 | #define bfin_write_USB_DMA0COUNTHIGH(val) bfin_write16(USB_DMA0COUNTHIGH, val) | ||
683 | |||
684 | /* USB Channel 1 Config Registers */ | ||
685 | |||
686 | #define bfin_read_USB_DMA1CONTROL() bfin_read16(USB_DMA1CONTROL) | ||
687 | #define bfin_write_USB_DMA1CONTROL(val) bfin_write16(USB_DMA1CONTROL, val) | ||
688 | #define bfin_read_USB_DMA1ADDRLOW() bfin_read16(USB_DMA1ADDRLOW) | ||
689 | #define bfin_write_USB_DMA1ADDRLOW(val) bfin_write16(USB_DMA1ADDRLOW, val) | ||
690 | #define bfin_read_USB_DMA1ADDRHIGH() bfin_read16(USB_DMA1ADDRHIGH) | ||
691 | #define bfin_write_USB_DMA1ADDRHIGH(val) bfin_write16(USB_DMA1ADDRHIGH, val) | ||
692 | #define bfin_read_USB_DMA1COUNTLOW() bfin_read16(USB_DMA1COUNTLOW) | ||
693 | #define bfin_write_USB_DMA1COUNTLOW(val) bfin_write16(USB_DMA1COUNTLOW, val) | ||
694 | #define bfin_read_USB_DMA1COUNTHIGH() bfin_read16(USB_DMA1COUNTHIGH) | ||
695 | #define bfin_write_USB_DMA1COUNTHIGH(val) bfin_write16(USB_DMA1COUNTHIGH, val) | ||
696 | |||
697 | /* USB Channel 2 Config Registers */ | ||
698 | |||
699 | #define bfin_read_USB_DMA2CONTROL() bfin_read16(USB_DMA2CONTROL) | ||
700 | #define bfin_write_USB_DMA2CONTROL(val) bfin_write16(USB_DMA2CONTROL, val) | ||
701 | #define bfin_read_USB_DMA2ADDRLOW() bfin_read16(USB_DMA2ADDRLOW) | ||
702 | #define bfin_write_USB_DMA2ADDRLOW(val) bfin_write16(USB_DMA2ADDRLOW, val) | ||
703 | #define bfin_read_USB_DMA2ADDRHIGH() bfin_read16(USB_DMA2ADDRHIGH) | ||
704 | #define bfin_write_USB_DMA2ADDRHIGH(val) bfin_write16(USB_DMA2ADDRHIGH, val) | ||
705 | #define bfin_read_USB_DMA2COUNTLOW() bfin_read16(USB_DMA2COUNTLOW) | ||
706 | #define bfin_write_USB_DMA2COUNTLOW(val) bfin_write16(USB_DMA2COUNTLOW, val) | ||
707 | #define bfin_read_USB_DMA2COUNTHIGH() bfin_read16(USB_DMA2COUNTHIGH) | ||
708 | #define bfin_write_USB_DMA2COUNTHIGH(val) bfin_write16(USB_DMA2COUNTHIGH, val) | ||
709 | |||
710 | /* USB Channel 3 Config Registers */ | ||
711 | |||
712 | #define bfin_read_USB_DMA3CONTROL() bfin_read16(USB_DMA3CONTROL) | ||
713 | #define bfin_write_USB_DMA3CONTROL(val) bfin_write16(USB_DMA3CONTROL, val) | ||
714 | #define bfin_read_USB_DMA3ADDRLOW() bfin_read16(USB_DMA3ADDRLOW) | ||
715 | #define bfin_write_USB_DMA3ADDRLOW(val) bfin_write16(USB_DMA3ADDRLOW, val) | ||
716 | #define bfin_read_USB_DMA3ADDRHIGH() bfin_read16(USB_DMA3ADDRHIGH) | ||
717 | #define bfin_write_USB_DMA3ADDRHIGH(val) bfin_write16(USB_DMA3ADDRHIGH, val) | ||
718 | #define bfin_read_USB_DMA3COUNTLOW() bfin_read16(USB_DMA3COUNTLOW) | ||
719 | #define bfin_write_USB_DMA3COUNTLOW(val) bfin_write16(USB_DMA3COUNTLOW, val) | ||
720 | #define bfin_read_USB_DMA3COUNTHIGH() bfin_read16(USB_DMA3COUNTHIGH) | ||
721 | #define bfin_write_USB_DMA3COUNTHIGH(val) bfin_write16(USB_DMA3COUNTHIGH, val) | ||
722 | |||
723 | /* USB Channel 4 Config Registers */ | ||
724 | |||
725 | #define bfin_read_USB_DMA4CONTROL() bfin_read16(USB_DMA4CONTROL) | ||
726 | #define bfin_write_USB_DMA4CONTROL(val) bfin_write16(USB_DMA4CONTROL, val) | ||
727 | #define bfin_read_USB_DMA4ADDRLOW() bfin_read16(USB_DMA4ADDRLOW) | ||
728 | #define bfin_write_USB_DMA4ADDRLOW(val) bfin_write16(USB_DMA4ADDRLOW, val) | ||
729 | #define bfin_read_USB_DMA4ADDRHIGH() bfin_read16(USB_DMA4ADDRHIGH) | ||
730 | #define bfin_write_USB_DMA4ADDRHIGH(val) bfin_write16(USB_DMA4ADDRHIGH, val) | ||
731 | #define bfin_read_USB_DMA4COUNTLOW() bfin_read16(USB_DMA4COUNTLOW) | ||
732 | #define bfin_write_USB_DMA4COUNTLOW(val) bfin_write16(USB_DMA4COUNTLOW, val) | ||
733 | #define bfin_read_USB_DMA4COUNTHIGH() bfin_read16(USB_DMA4COUNTHIGH) | ||
734 | #define bfin_write_USB_DMA4COUNTHIGH(val) bfin_write16(USB_DMA4COUNTHIGH, val) | ||
735 | |||
736 | /* USB Channel 5 Config Registers */ | ||
737 | |||
738 | #define bfin_read_USB_DMA5CONTROL() bfin_read16(USB_DMA5CONTROL) | ||
739 | #define bfin_write_USB_DMA5CONTROL(val) bfin_write16(USB_DMA5CONTROL, val) | ||
740 | #define bfin_read_USB_DMA5ADDRLOW() bfin_read16(USB_DMA5ADDRLOW) | ||
741 | #define bfin_write_USB_DMA5ADDRLOW(val) bfin_write16(USB_DMA5ADDRLOW, val) | ||
742 | #define bfin_read_USB_DMA5ADDRHIGH() bfin_read16(USB_DMA5ADDRHIGH) | ||
743 | #define bfin_write_USB_DMA5ADDRHIGH(val) bfin_write16(USB_DMA5ADDRHIGH, val) | ||
744 | #define bfin_read_USB_DMA5COUNTLOW() bfin_read16(USB_DMA5COUNTLOW) | ||
745 | #define bfin_write_USB_DMA5COUNTLOW(val) bfin_write16(USB_DMA5COUNTLOW, val) | ||
746 | #define bfin_read_USB_DMA5COUNTHIGH() bfin_read16(USB_DMA5COUNTHIGH) | ||
747 | #define bfin_write_USB_DMA5COUNTHIGH(val) bfin_write16(USB_DMA5COUNTHIGH, val) | ||
748 | |||
749 | /* USB Channel 6 Config Registers */ | ||
750 | |||
751 | #define bfin_read_USB_DMA6CONTROL() bfin_read16(USB_DMA6CONTROL) | ||
752 | #define bfin_write_USB_DMA6CONTROL(val) bfin_write16(USB_DMA6CONTROL, val) | ||
753 | #define bfin_read_USB_DMA6ADDRLOW() bfin_read16(USB_DMA6ADDRLOW) | ||
754 | #define bfin_write_USB_DMA6ADDRLOW(val) bfin_write16(USB_DMA6ADDRLOW, val) | ||
755 | #define bfin_read_USB_DMA6ADDRHIGH() bfin_read16(USB_DMA6ADDRHIGH) | ||
756 | #define bfin_write_USB_DMA6ADDRHIGH(val) bfin_write16(USB_DMA6ADDRHIGH, val) | ||
757 | #define bfin_read_USB_DMA6COUNTLOW() bfin_read16(USB_DMA6COUNTLOW) | ||
758 | #define bfin_write_USB_DMA6COUNTLOW(val) bfin_write16(USB_DMA6COUNTLOW, val) | ||
759 | #define bfin_read_USB_DMA6COUNTHIGH() bfin_read16(USB_DMA6COUNTHIGH) | ||
760 | #define bfin_write_USB_DMA6COUNTHIGH(val) bfin_write16(USB_DMA6COUNTHIGH, val) | ||
761 | |||
762 | /* USB Channel 7 Config Registers */ | ||
763 | |||
764 | #define bfin_read_USB_DMA7CONTROL() bfin_read16(USB_DMA7CONTROL) | ||
765 | #define bfin_write_USB_DMA7CONTROL(val) bfin_write16(USB_DMA7CONTROL, val) | ||
766 | #define bfin_read_USB_DMA7ADDRLOW() bfin_read16(USB_DMA7ADDRLOW) | ||
767 | #define bfin_write_USB_DMA7ADDRLOW(val) bfin_write16(USB_DMA7ADDRLOW, val) | ||
768 | #define bfin_read_USB_DMA7ADDRHIGH() bfin_read16(USB_DMA7ADDRHIGH) | ||
769 | #define bfin_write_USB_DMA7ADDRHIGH(val) bfin_write16(USB_DMA7ADDRHIGH, val) | ||
770 | #define bfin_read_USB_DMA7COUNTLOW() bfin_read16(USB_DMA7COUNTLOW) | ||
771 | #define bfin_write_USB_DMA7COUNTLOW(val) bfin_write16(USB_DMA7COUNTLOW, val) | ||
772 | #define bfin_read_USB_DMA7COUNTHIGH() bfin_read16(USB_DMA7COUNTHIGH) | ||
773 | #define bfin_write_USB_DMA7COUNTHIGH(val) bfin_write16(USB_DMA7COUNTHIGH, val) | ||
774 | |||
775 | /* Keybfin_read_()ad Registers */ | ||
776 | |||
777 | #define bfin_read_KPAD_CTL() bfin_read16(KPAD_CTL) | ||
778 | #define bfin_write_KPAD_CTL(val) bfin_write16(KPAD_CTL, val) | ||
779 | #define bfin_read_KPAD_PRESCALE() bfin_read16(KPAD_PRESCALE) | ||
780 | #define bfin_write_KPAD_PRESCALE(val) bfin_write16(KPAD_PRESCALE, val) | ||
781 | #define bfin_read_KPAD_MSEL() bfin_read16(KPAD_MSEL) | ||
782 | #define bfin_write_KPAD_MSEL(val) bfin_write16(KPAD_MSEL, val) | ||
783 | #define bfin_read_KPAD_ROWCOL() bfin_read16(KPAD_ROWCOL) | ||
784 | #define bfin_write_KPAD_ROWCOL(val) bfin_write16(KPAD_ROWCOL, val) | ||
785 | #define bfin_read_KPAD_STAT() bfin_read16(KPAD_STAT) | ||
786 | #define bfin_write_KPAD_STAT(val) bfin_write16(KPAD_STAT, val) | ||
787 | #define bfin_read_KPAD_SOFTEVAL() bfin_read16(KPAD_SOFTEVAL) | ||
788 | #define bfin_write_KPAD_SOFTEVAL(val) bfin_write16(KPAD_SOFTEVAL, val) | ||
789 | |||
790 | /* Pixel Combfin_read_()ositor (PIXC) Registers */ | ||
791 | |||
792 | #define bfin_read_PIXC_CTL() bfin_read16(PIXC_CTL) | ||
793 | #define bfin_write_PIXC_CTL(val) bfin_write16(PIXC_CTL, val) | ||
794 | #define bfin_read_PIXC_PPL() bfin_read16(PIXC_PPL) | ||
795 | #define bfin_write_PIXC_PPL(val) bfin_write16(PIXC_PPL, val) | ||
796 | #define bfin_read_PIXC_LPF() bfin_read16(PIXC_LPF) | ||
797 | #define bfin_write_PIXC_LPF(val) bfin_write16(PIXC_LPF, val) | ||
798 | #define bfin_read_PIXC_AHSTART() bfin_read16(PIXC_AHSTART) | ||
799 | #define bfin_write_PIXC_AHSTART(val) bfin_write16(PIXC_AHSTART, val) | ||
800 | #define bfin_read_PIXC_AHEND() bfin_read16(PIXC_AHEND) | ||
801 | #define bfin_write_PIXC_AHEND(val) bfin_write16(PIXC_AHEND, val) | ||
802 | #define bfin_read_PIXC_AVSTART() bfin_read16(PIXC_AVSTART) | ||
803 | #define bfin_write_PIXC_AVSTART(val) bfin_write16(PIXC_AVSTART, val) | ||
804 | #define bfin_read_PIXC_AVEND() bfin_read16(PIXC_AVEND) | ||
805 | #define bfin_write_PIXC_AVEND(val) bfin_write16(PIXC_AVEND, val) | ||
806 | #define bfin_read_PIXC_ATRANSP() bfin_read16(PIXC_ATRANSP) | ||
807 | #define bfin_write_PIXC_ATRANSP(val) bfin_write16(PIXC_ATRANSP, val) | ||
808 | #define bfin_read_PIXC_BHSTART() bfin_read16(PIXC_BHSTART) | ||
809 | #define bfin_write_PIXC_BHSTART(val) bfin_write16(PIXC_BHSTART, val) | ||
810 | #define bfin_read_PIXC_BHEND() bfin_read16(PIXC_BHEND) | ||
811 | #define bfin_write_PIXC_BHEND(val) bfin_write16(PIXC_BHEND, val) | ||
812 | #define bfin_read_PIXC_BVSTART() bfin_read16(PIXC_BVSTART) | ||
813 | #define bfin_write_PIXC_BVSTART(val) bfin_write16(PIXC_BVSTART, val) | ||
814 | #define bfin_read_PIXC_BVEND() bfin_read16(PIXC_BVEND) | ||
815 | #define bfin_write_PIXC_BVEND(val) bfin_write16(PIXC_BVEND, val) | ||
816 | #define bfin_read_PIXC_BTRANSP() bfin_read16(PIXC_BTRANSP) | ||
817 | #define bfin_write_PIXC_BTRANSP(val) bfin_write16(PIXC_BTRANSP, val) | ||
818 | #define bfin_read_PIXC_INTRSTAT() bfin_read16(PIXC_INTRSTAT) | ||
819 | #define bfin_write_PIXC_INTRSTAT(val) bfin_write16(PIXC_INTRSTAT, val) | ||
820 | #define bfin_read_PIXC_RYCON() bfin_read32(PIXC_RYCON) | ||
821 | #define bfin_write_PIXC_RYCON(val) bfin_write32(PIXC_RYCON, val) | ||
822 | #define bfin_read_PIXC_GUCON() bfin_read32(PIXC_GUCON) | ||
823 | #define bfin_write_PIXC_GUCON(val) bfin_write32(PIXC_GUCON, val) | ||
824 | #define bfin_read_PIXC_BVCON() bfin_read32(PIXC_BVCON) | ||
825 | #define bfin_write_PIXC_BVCON(val) bfin_write32(PIXC_BVCON, val) | ||
826 | #define bfin_read_PIXC_CCBIAS() bfin_read32(PIXC_CCBIAS) | ||
827 | #define bfin_write_PIXC_CCBIAS(val) bfin_write32(PIXC_CCBIAS, val) | ||
828 | #define bfin_read_PIXC_TC() bfin_read32(PIXC_TC) | ||
829 | #define bfin_write_PIXC_TC(val) bfin_write32(PIXC_TC, val) | ||
830 | |||
831 | /* Handshake MDMA 0 Registers */ | ||
832 | |||
833 | #define bfin_read_HMDMA0_CONTROL() bfin_read16(HMDMA0_CONTROL) | ||
834 | #define bfin_write_HMDMA0_CONTROL(val) bfin_write16(HMDMA0_CONTROL, val) | ||
835 | #define bfin_read_HMDMA0_ECINIT() bfin_read16(HMDMA0_ECINIT) | ||
836 | #define bfin_write_HMDMA0_ECINIT(val) bfin_write16(HMDMA0_ECINIT, val) | ||
837 | #define bfin_read_HMDMA0_BCINIT() bfin_read16(HMDMA0_BCINIT) | ||
838 | #define bfin_write_HMDMA0_BCINIT(val) bfin_write16(HMDMA0_BCINIT, val) | ||
839 | #define bfin_read_HMDMA0_ECURGENT() bfin_read16(HMDMA0_ECURGENT) | ||
840 | #define bfin_write_HMDMA0_ECURGENT(val) bfin_write16(HMDMA0_ECURGENT, val) | ||
841 | #define bfin_read_HMDMA0_ECOVERFLOW() bfin_read16(HMDMA0_ECOVERFLOW) | ||
842 | #define bfin_write_HMDMA0_ECOVERFLOW(val) bfin_write16(HMDMA0_ECOVERFLOW, val) | ||
843 | #define bfin_read_HMDMA0_ECOUNT() bfin_read16(HMDMA0_ECOUNT) | ||
844 | #define bfin_write_HMDMA0_ECOUNT(val) bfin_write16(HMDMA0_ECOUNT, val) | ||
845 | #define bfin_read_HMDMA0_BCOUNT() bfin_read16(HMDMA0_BCOUNT) | ||
846 | #define bfin_write_HMDMA0_BCOUNT(val) bfin_write16(HMDMA0_BCOUNT, val) | ||
847 | |||
848 | /* Handshake MDMA 1 Registers */ | ||
849 | |||
850 | #define bfin_read_HMDMA1_CONTROL() bfin_read16(HMDMA1_CONTROL) | ||
851 | #define bfin_write_HMDMA1_CONTROL(val) bfin_write16(HMDMA1_CONTROL, val) | ||
852 | #define bfin_read_HMDMA1_ECINIT() bfin_read16(HMDMA1_ECINIT) | ||
853 | #define bfin_write_HMDMA1_ECINIT(val) bfin_write16(HMDMA1_ECINIT, val) | ||
854 | #define bfin_read_HMDMA1_BCINIT() bfin_read16(HMDMA1_BCINIT) | ||
855 | #define bfin_write_HMDMA1_BCINIT(val) bfin_write16(HMDMA1_BCINIT, val) | ||
856 | #define bfin_read_HMDMA1_ECURGENT() bfin_read16(HMDMA1_ECURGENT) | ||
857 | #define bfin_write_HMDMA1_ECURGENT(val) bfin_write16(HMDMA1_ECURGENT, val) | ||
858 | #define bfin_read_HMDMA1_ECOVERFLOW() bfin_read16(HMDMA1_ECOVERFLOW) | ||
859 | #define bfin_write_HMDMA1_ECOVERFLOW(val) bfin_write16(HMDMA1_ECOVERFLOW, val) | ||
860 | #define bfin_read_HMDMA1_ECOUNT() bfin_read16(HMDMA1_ECOUNT) | ||
861 | #define bfin_write_HMDMA1_ECOUNT(val) bfin_write16(HMDMA1_ECOUNT, val) | ||
862 | #define bfin_read_HMDMA1_BCOUNT() bfin_read16(HMDMA1_BCOUNT) | ||
863 | #define bfin_write_HMDMA1_BCOUNT(val) bfin_write16(HMDMA1_BCOUNT, val) | ||
864 | |||
865 | #endif /* _CDEF_BF548_H */ | ||
diff --git a/include/asm-blackfin/mach-bf548/defBF547.h b/include/asm-blackfin/mach-bf548/defBF547.h new file mode 100644 index 000000000000..3a3a18ebb10e --- /dev/null +++ b/include/asm-blackfin/mach-bf548/defBF547.h | |||
@@ -0,0 +1,1244 @@ | |||
1 | /* | ||
2 | * File: include/asm-blackfin/mach-bf548/defBF547.h | ||
3 | * Based on: | ||
4 | * Author: | ||
5 | * | ||
6 | * Created: | ||
7 | * Description: | ||
8 | * | ||
9 | * Rev: | ||
10 | * | ||
11 | * Modified: | ||
12 | * | ||
13 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | ||
14 | * | ||
15 | * This program is free software; you can redistribute it and/or modify | ||
16 | * it under the terms of the GNU General Public License as published by | ||
17 | * the Free Software Foundation; either version 2, or (at your option) | ||
18 | * any later version. | ||
19 | * | ||
20 | * This program is distributed in the hope that it will be useful, | ||
21 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
22 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
23 | * GNU General Public License for more details. | ||
24 | * | ||
25 | * You should have received a copy of the GNU General Public License | ||
26 | * along with this program; see the file COPYING. | ||
27 | * If not, write to the Free Software Foundation, | ||
28 | * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
29 | */ | ||
30 | |||
31 | #ifndef _DEF_BF548_H | ||
32 | #define _DEF_BF548_H | ||
33 | |||
34 | /* Include all Core registers and bit definitions */ | ||
35 | #include <asm/mach-common/def_LPBlackfin.h> | ||
36 | |||
37 | /* SYSTEM & MMR ADDRESS DEFINITIONS FOR ADSP-BF548 */ | ||
38 | |||
39 | /* Include defBF54x_base.h for the set of #defines that are common to all ADSP-BF54x processors */ | ||
40 | #include "defBF54x_base.h" | ||
41 | |||
42 | /* The following are the #defines needed by ADSP-BF548 that are not in the common header */ | ||
43 | |||
44 | /* Timer Registers */ | ||
45 | |||
46 | #define TIMER8_CONFIG 0xffc00600 /* Timer 8 Configuration Register */ | ||
47 | #define TIMER8_COUNTER 0xffc00604 /* Timer 8 Counter Register */ | ||
48 | #define TIMER8_PERIOD 0xffc00608 /* Timer 8 Period Register */ | ||
49 | #define TIMER8_WIDTH 0xffc0060c /* Timer 8 Width Register */ | ||
50 | #define TIMER9_CONFIG 0xffc00610 /* Timer 9 Configuration Register */ | ||
51 | #define TIMER9_COUNTER 0xffc00614 /* Timer 9 Counter Register */ | ||
52 | #define TIMER9_PERIOD 0xffc00618 /* Timer 9 Period Register */ | ||
53 | #define TIMER9_WIDTH 0xffc0061c /* Timer 9 Width Register */ | ||
54 | #define TIMER10_CONFIG 0xffc00620 /* Timer 10 Configuration Register */ | ||
55 | #define TIMER10_COUNTER 0xffc00624 /* Timer 10 Counter Register */ | ||
56 | #define TIMER10_PERIOD 0xffc00628 /* Timer 10 Period Register */ | ||
57 | #define TIMER10_WIDTH 0xffc0062c /* Timer 10 Width Register */ | ||
58 | |||
59 | /* Timer Group of 3 Registers */ | ||
60 | |||
61 | #define TIMER_ENABLE1 0xffc00640 /* Timer Group of 3 Enable Register */ | ||
62 | #define TIMER_DISABLE1 0xffc00644 /* Timer Group of 3 Disable Register */ | ||
63 | #define TIMER_STATUS1 0xffc00648 /* Timer Group of 3 Status Register */ | ||
64 | |||
65 | /* SPORT0 Registers */ | ||
66 | |||
67 | #define SPORT0_TCR1 0xffc00800 /* SPORT0 Transmit Configuration 1 Register */ | ||
68 | #define SPORT0_TCR2 0xffc00804 /* SPORT0 Transmit Configuration 2 Register */ | ||
69 | #define SPORT0_TCLKDIV 0xffc00808 /* SPORT0 Transmit Serial Clock Divider Register */ | ||
70 | #define SPORT0_TFSDIV 0xffc0080c /* SPORT0 Transmit Frame Sync Divider Register */ | ||
71 | #define SPORT0_TX 0xffc00810 /* SPORT0 Transmit Data Register */ | ||
72 | #define SPORT0_RX 0xffc00818 /* SPORT0 Receive Data Register */ | ||
73 | #define SPORT0_RCR1 0xffc00820 /* SPORT0 Receive Configuration 1 Register */ | ||
74 | #define SPORT0_RCR2 0xffc00824 /* SPORT0 Receive Configuration 2 Register */ | ||
75 | #define SPORT0_RCLKDIV 0xffc00828 /* SPORT0 Receive Serial Clock Divider Register */ | ||
76 | #define SPORT0_RFSDIV 0xffc0082c /* SPORT0 Receive Frame Sync Divider Register */ | ||
77 | #define SPORT0_STAT 0xffc00830 /* SPORT0 Status Register */ | ||
78 | #define SPORT0_CHNL 0xffc00834 /* SPORT0 Current Channel Register */ | ||
79 | #define SPORT0_MCMC1 0xffc00838 /* SPORT0 Multi channel Configuration Register 1 */ | ||
80 | #define SPORT0_MCMC2 0xffc0083c /* SPORT0 Multi channel Configuration Register 2 */ | ||
81 | #define SPORT0_MTCS0 0xffc00840 /* SPORT0 Multi channel Transmit Select Register 0 */ | ||
82 | #define SPORT0_MTCS1 0xffc00844 /* SPORT0 Multi channel Transmit Select Register 1 */ | ||
83 | #define SPORT0_MTCS2 0xffc00848 /* SPORT0 Multi channel Transmit Select Register 2 */ | ||
84 | #define SPORT0_MTCS3 0xffc0084c /* SPORT0 Multi channel Transmit Select Register 3 */ | ||
85 | #define SPORT0_MRCS0 0xffc00850 /* SPORT0 Multi channel Receive Select Register 0 */ | ||
86 | #define SPORT0_MRCS1 0xffc00854 /* SPORT0 Multi channel Receive Select Register 1 */ | ||
87 | #define SPORT0_MRCS2 0xffc00858 /* SPORT0 Multi channel Receive Select Register 2 */ | ||
88 | #define SPORT0_MRCS3 0xffc0085c /* SPORT0 Multi channel Receive Select Register 3 */ | ||
89 | |||
90 | /* EPPI0 Registers */ | ||
91 | |||
92 | #define EPPI0_STATUS 0xffc01000 /* EPPI0 Status Register */ | ||
93 | #define EPPI0_HCOUNT 0xffc01004 /* EPPI0 Horizontal Transfer Count Register */ | ||
94 | #define EPPI0_HDELAY 0xffc01008 /* EPPI0 Horizontal Delay Count Register */ | ||
95 | #define EPPI0_VCOUNT 0xffc0100c /* EPPI0 Vertical Transfer Count Register */ | ||
96 | #define EPPI0_VDELAY 0xffc01010 /* EPPI0 Vertical Delay Count Register */ | ||
97 | #define EPPI0_FRAME 0xffc01014 /* EPPI0 Lines per Frame Register */ | ||
98 | #define EPPI0_LINE 0xffc01018 /* EPPI0 Samples per Line Register */ | ||
99 | #define EPPI0_CLKDIV 0xffc0101c /* EPPI0 Clock Divide Register */ | ||
100 | #define EPPI0_CONTROL 0xffc01020 /* EPPI0 Control Register */ | ||
101 | #define EPPI0_FS1W_HBL 0xffc01024 /* EPPI0 FS1 Width Register / EPPI0 Horizontal Blanking Samples Per Line Register */ | ||
102 | #define EPPI0_FS1P_AVPL 0xffc01028 /* EPPI0 FS1 Period Register / EPPI0 Active Video Samples Per Line Register */ | ||
103 | #define EPPI0_FS2W_LVB 0xffc0102c /* EPPI0 FS2 Width Register / EPPI0 Lines of Vertical Blanking Register */ | ||
104 | #define EPPI0_FS2P_LAVF 0xffc01030 /* EPPI0 FS2 Period Register/ EPPI0 Lines of Active Video Per Field Register */ | ||
105 | #define EPPI0_CLIP 0xffc01034 /* EPPI0 Clipping Register */ | ||
106 | |||
107 | /* UART2 Registers */ | ||
108 | |||
109 | #define UART2_DLL 0xffc02100 /* Divisor Latch Low Byte */ | ||
110 | #define UART2_DLH 0xffc02104 /* Divisor Latch High Byte */ | ||
111 | #define UART2_GCTL 0xffc02108 /* Global Control Register */ | ||
112 | #define UART2_LCR 0xffc0210c /* Line Control Register */ | ||
113 | #define UART2_MCR 0xffc02110 /* Modem Control Register */ | ||
114 | #define UART2_LSR 0xffc02114 /* Line Status Register */ | ||
115 | #define UART2_MSR 0xffc02118 /* Modem Status Register */ | ||
116 | #define UART2_SCR 0xffc0211c /* Scratch Register */ | ||
117 | #define UART2_IER_SET 0xffc02120 /* Interrupt Enable Register Set */ | ||
118 | #define UART2_IER_CLEAR 0xffc02124 /* Interrupt Enable Register Clear */ | ||
119 | #define UART2_RBR 0xffc0212c /* Receive Buffer Register */ | ||
120 | |||
121 | /* Two Wire Interface Registers (TWI1) */ | ||
122 | |||
123 | #define TWI1_REGBASE 0xffc02200 | ||
124 | #define TWI1_CLKDIV 0xffc02200 /* Clock Divider Register */ | ||
125 | #define TWI1_CONTROL 0xffc02204 /* TWI Control Register */ | ||
126 | #define TWI1_SLAVE_CTRL 0xffc02208 /* TWI Slave Mode Control Register */ | ||
127 | #define TWI1_SLAVE_STAT 0xffc0220c /* TWI Slave Mode Status Register */ | ||
128 | #define TWI1_SLAVE_ADDR 0xffc02210 /* TWI Slave Mode Address Register */ | ||
129 | #define TWI1_MASTER_CTRL 0xffc02214 /* TWI Master Mode Control Register */ | ||
130 | #define TWI1_MASTER_STAT 0xffc02218 /* TWI Master Mode Status Register */ | ||
131 | #define TWI1_MASTER_ADDR 0xffc0221c /* TWI Master Mode Address Register */ | ||
132 | #define TWI1_INT_STAT 0xffc02220 /* TWI Interrupt Status Register */ | ||
133 | #define TWI1_INT_MASK 0xffc02224 /* TWI Interrupt Mask Register */ | ||
134 | #define TWI1_FIFO_CTRL 0xffc02228 /* TWI FIFO Control Register */ | ||
135 | #define TWI1_FIFO_STAT 0xffc0222c /* TWI FIFO Status Register */ | ||
136 | #define TWI1_XMT_DATA8 0xffc02280 /* TWI FIFO Transmit Data Single Byte Register */ | ||
137 | #define TWI1_XMT_DATA16 0xffc02284 /* TWI FIFO Transmit Data Double Byte Register */ | ||
138 | #define TWI1_RCV_DATA8 0xffc02288 /* TWI FIFO Receive Data Single Byte Register */ | ||
139 | #define TWI1_RCV_DATA16 0xffc0228c /* TWI FIFO Receive Data Double Byte Register */ | ||
140 | |||
141 | /* SPI2 Registers */ | ||
142 | |||
143 | #define SPI2_REGBASE 0xffc02400 | ||
144 | #define SPI2_CTL 0xffc02400 /* SPI2 Control Register */ | ||
145 | #define SPI2_FLG 0xffc02404 /* SPI2 Flag Register */ | ||
146 | #define SPI2_STAT 0xffc02408 /* SPI2 Status Register */ | ||
147 | #define SPI2_TDBR 0xffc0240c /* SPI2 Transmit Data Buffer Register */ | ||
148 | #define SPI2_RDBR 0xffc02410 /* SPI2 Receive Data Buffer Register */ | ||
149 | #define SPI2_BAUD 0xffc02414 /* SPI2 Baud Rate Register */ | ||
150 | #define SPI2_SHADOW 0xffc02418 /* SPI2 Receive Data Buffer Shadow Register */ | ||
151 | |||
152 | /* ATAPI Registers */ | ||
153 | |||
154 | #define ATAPI_CONTROL 0xffc03800 /* ATAPI Control Register */ | ||
155 | #define ATAPI_STATUS 0xffc03804 /* ATAPI Status Register */ | ||
156 | #define ATAPI_DEV_ADDR 0xffc03808 /* ATAPI Device Register Address */ | ||
157 | #define ATAPI_DEV_TXBUF 0xffc0380c /* ATAPI Device Register Write Data */ | ||
158 | #define ATAPI_DEV_RXBUF 0xffc03810 /* ATAPI Device Register Read Data */ | ||
159 | #define ATAPI_INT_MASK 0xffc03814 /* ATAPI Interrupt Mask Register */ | ||
160 | #define ATAPI_INT_STATUS 0xffc03818 /* ATAPI Interrupt Status Register */ | ||
161 | #define ATAPI_XFER_LEN 0xffc0381c /* ATAPI Length of Transfer */ | ||
162 | #define ATAPI_LINE_STATUS 0xffc03820 /* ATAPI Line Status */ | ||
163 | #define ATAPI_SM_STATE 0xffc03824 /* ATAPI State Machine Status */ | ||
164 | #define ATAPI_TERMINATE 0xffc03828 /* ATAPI Host Terminate */ | ||
165 | #define ATAPI_PIO_TFRCNT 0xffc0382c /* ATAPI PIO mode transfer count */ | ||
166 | #define ATAPI_DMA_TFRCNT 0xffc03830 /* ATAPI DMA mode transfer count */ | ||
167 | #define ATAPI_UMAIN_TFRCNT 0xffc03834 /* ATAPI UDMAIN transfer count */ | ||
168 | #define ATAPI_UDMAOUT_TFRCNT 0xffc03838 /* ATAPI UDMAOUT transfer count */ | ||
169 | #define ATAPI_REG_TIM_0 0xffc03840 /* ATAPI Register Transfer Timing 0 */ | ||
170 | #define ATAPI_PIO_TIM_0 0xffc03844 /* ATAPI PIO Timing 0 Register */ | ||
171 | #define ATAPI_PIO_TIM_1 0xffc03848 /* ATAPI PIO Timing 1 Register */ | ||
172 | #define ATAPI_MULTI_TIM_0 0xffc03850 /* ATAPI Multi-DMA Timing 0 Register */ | ||
173 | #define ATAPI_MULTI_TIM_1 0xffc03854 /* ATAPI Multi-DMA Timing 1 Register */ | ||
174 | #define ATAPI_MULTI_TIM_2 0xffc03858 /* ATAPI Multi-DMA Timing 2 Register */ | ||
175 | #define ATAPI_ULTRA_TIM_0 0xffc03860 /* ATAPI Ultra-DMA Timing 0 Register */ | ||
176 | #define ATAPI_ULTRA_TIM_1 0xffc03864 /* ATAPI Ultra-DMA Timing 1 Register */ | ||
177 | #define ATAPI_ULTRA_TIM_2 0xffc03868 /* ATAPI Ultra-DMA Timing 2 Register */ | ||
178 | #define ATAPI_ULTRA_TIM_3 0xffc0386c /* ATAPI Ultra-DMA Timing 3 Register */ | ||
179 | |||
180 | /* SDH Registers */ | ||
181 | |||
182 | #define SDH_PWR_CTL 0xffc03900 /* SDH Power Control */ | ||
183 | #define SDH_CLK_CTL 0xffc03904 /* SDH Clock Control */ | ||
184 | #define SDH_ARGUMENT 0xffc03908 /* SDH Argument */ | ||
185 | #define SDH_COMMAND 0xffc0390c /* SDH Command */ | ||
186 | #define SDH_RESP_CMD 0xffc03910 /* SDH Response Command */ | ||
187 | #define SDH_RESPONSE0 0xffc03914 /* SDH Response0 */ | ||
188 | #define SDH_RESPONSE1 0xffc03918 /* SDH Response1 */ | ||
189 | #define SDH_RESPONSE2 0xffc0391c /* SDH Response2 */ | ||
190 | #define SDH_RESPONSE3 0xffc03920 /* SDH Response3 */ | ||
191 | #define SDH_DATA_TIMER 0xffc03924 /* SDH Data Timer */ | ||
192 | #define SDH_DATA_LGTH 0xffc03928 /* SDH Data Length */ | ||
193 | #define SDH_DATA_CTL 0xffc0392c /* SDH Data Control */ | ||
194 | #define SDH_DATA_CNT 0xffc03930 /* SDH Data Counter */ | ||
195 | #define SDH_STATUS 0xffc03934 /* SDH Status */ | ||
196 | #define SDH_STATUS_CLR 0xffc03938 /* SDH Status Clear */ | ||
197 | #define SDH_MASK0 0xffc0393c /* SDH Interrupt0 Mask */ | ||
198 | #define SDH_MASK1 0xffc03940 /* SDH Interrupt1 Mask */ | ||
199 | #define SDH_FIFO_CNT 0xffc03948 /* SDH FIFO Counter */ | ||
200 | #define SDH_FIFO 0xffc03980 /* SDH Data FIFO */ | ||
201 | #define SDH_E_STATUS 0xffc039c0 /* SDH Exception Status */ | ||
202 | #define SDH_E_MASK 0xffc039c4 /* SDH Exception Mask */ | ||
203 | #define SDH_CFG 0xffc039c8 /* SDH Configuration */ | ||
204 | #define SDH_RD_WAIT_EN 0xffc039cc /* SDH Read Wait Enable */ | ||
205 | #define SDH_PID0 0xffc039d0 /* SDH Peripheral Identification0 */ | ||
206 | #define SDH_PID1 0xffc039d4 /* SDH Peripheral Identification1 */ | ||
207 | #define SDH_PID2 0xffc039d8 /* SDH Peripheral Identification2 */ | ||
208 | #define SDH_PID3 0xffc039dc /* SDH Peripheral Identification3 */ | ||
209 | #define SDH_PID4 0xffc039e0 /* SDH Peripheral Identification4 */ | ||
210 | #define SDH_PID5 0xffc039e4 /* SDH Peripheral Identification5 */ | ||
211 | #define SDH_PID6 0xffc039e8 /* SDH Peripheral Identification6 */ | ||
212 | #define SDH_PID7 0xffc039ec /* SDH Peripheral Identification7 */ | ||
213 | |||
214 | /* HOST Port Registers */ | ||
215 | |||
216 | #define HOST_CONTROL 0xffc03a00 /* HOST Control Register */ | ||
217 | #define HOST_STATUS 0xffc03a04 /* HOST Status Register */ | ||
218 | #define HOST_TIMEOUT 0xffc03a08 /* HOST Acknowledge Mode Timeout Register */ | ||
219 | |||
220 | /* USB Control Registers */ | ||
221 | |||
222 | #define USB_FADDR 0xffc03c00 /* Function address register */ | ||
223 | #define USB_POWER 0xffc03c04 /* Power management register */ | ||
224 | #define USB_INTRTX 0xffc03c08 /* Interrupt register for endpoint 0 and Tx endpoint 1 to 7 */ | ||
225 | #define USB_INTRRX 0xffc03c0c /* Interrupt register for Rx endpoints 1 to 7 */ | ||
226 | #define USB_INTRTXE 0xffc03c10 /* Interrupt enable register for IntrTx */ | ||
227 | #define USB_INTRRXE 0xffc03c14 /* Interrupt enable register for IntrRx */ | ||
228 | #define USB_INTRUSB 0xffc03c18 /* Interrupt register for common USB interrupts */ | ||
229 | #define USB_INTRUSBE 0xffc03c1c /* Interrupt enable register for IntrUSB */ | ||
230 | #define USB_FRAME 0xffc03c20 /* USB frame number */ | ||
231 | #define USB_INDEX 0xffc03c24 /* Index register for selecting the indexed endpoint registers */ | ||
232 | #define USB_TESTMODE 0xffc03c28 /* Enabled USB 20 test modes */ | ||
233 | #define USB_GLOBINTR 0xffc03c2c /* Global Interrupt Mask register and Wakeup Exception Interrupt */ | ||
234 | #define USB_GLOBAL_CTL 0xffc03c30 /* Global Clock Control for the core */ | ||
235 | |||
236 | /* USB Packet Control Registers */ | ||
237 | |||
238 | #define USB_TX_MAX_PACKET 0xffc03c40 /* Maximum packet size for Host Tx endpoint */ | ||
239 | #define USB_CSR0 0xffc03c44 /* Control Status register for endpoint 0 and Control Status register for Host Tx endpoint */ | ||
240 | #define USB_TXCSR 0xffc03c44 /* Control Status register for endpoint 0 and Control Status register for Host Tx endpoint */ | ||
241 | #define USB_RX_MAX_PACKET 0xffc03c48 /* Maximum packet size for Host Rx endpoint */ | ||
242 | #define USB_RXCSR 0xffc03c4c /* Control Status register for Host Rx endpoint */ | ||
243 | #define USB_COUNT0 0xffc03c50 /* Number of bytes received in endpoint 0 FIFO and Number of bytes received in Host Tx endpoint */ | ||
244 | #define USB_RXCOUNT 0xffc03c50 /* Number of bytes received in endpoint 0 FIFO and Number of bytes received in Host Tx endpoint */ | ||
245 | #define USB_TXTYPE 0xffc03c54 /* Sets the transaction protocol and peripheral endpoint number for the Host Tx endpoint */ | ||
246 | #define USB_NAKLIMIT0 0xffc03c58 /* Sets the NAK response timeout on Endpoint 0 and on Bulk transfers for Host Tx endpoint */ | ||
247 | #define USB_TXINTERVAL 0xffc03c58 /* Sets the NAK response timeout on Endpoint 0 and on Bulk transfers for Host Tx endpoint */ | ||
248 | #define USB_RXTYPE 0xffc03c5c /* Sets the transaction protocol and peripheral endpoint number for the Host Rx endpoint */ | ||
249 | #define USB_RXINTERVAL 0xffc03c60 /* Sets the polling interval for Interrupt and Isochronous transfers or the NAK response timeout on Bulk transfers */ | ||
250 | #define USB_TXCOUNT 0xffc03c68 /* Number of bytes to be written to the selected endpoint Tx FIFO */ | ||
251 | |||
252 | /* USB Endpoint FIFO Registers */ | ||
253 | |||
254 | #define USB_EP0_FIFO 0xffc03c80 /* Endpoint 0 FIFO */ | ||
255 | #define USB_EP1_FIFO 0xffc03c88 /* Endpoint 1 FIFO */ | ||
256 | #define USB_EP2_FIFO 0xffc03c90 /* Endpoint 2 FIFO */ | ||
257 | #define USB_EP3_FIFO 0xffc03c98 /* Endpoint 3 FIFO */ | ||
258 | #define USB_EP4_FIFO 0xffc03ca0 /* Endpoint 4 FIFO */ | ||
259 | #define USB_EP5_FIFO 0xffc03ca8 /* Endpoint 5 FIFO */ | ||
260 | #define USB_EP6_FIFO 0xffc03cb0 /* Endpoint 6 FIFO */ | ||
261 | #define USB_EP7_FIFO 0xffc03cb8 /* Endpoint 7 FIFO */ | ||
262 | |||
263 | /* USB OTG Control Registers */ | ||
264 | |||
265 | #define USB_OTG_DEV_CTL 0xffc03d00 /* OTG Device Control Register */ | ||
266 | #define USB_OTG_VBUS_IRQ 0xffc03d04 /* OTG VBUS Control Interrupts */ | ||
267 | #define USB_OTG_VBUS_MASK 0xffc03d08 /* VBUS Control Interrupt Enable */ | ||
268 | |||
269 | /* USB Phy Control Registers */ | ||
270 | |||
271 | #define USB_LINKINFO 0xffc03d48 /* Enables programming of some PHY-side delays */ | ||
272 | #define USB_VPLEN 0xffc03d4c /* Determines duration of VBUS pulse for VBUS charging */ | ||
273 | #define USB_HS_EOF1 0xffc03d50 /* Time buffer for High-Speed transactions */ | ||
274 | #define USB_FS_EOF1 0xffc03d54 /* Time buffer for Full-Speed transactions */ | ||
275 | #define USB_LS_EOF1 0xffc03d58 /* Time buffer for Low-Speed transactions */ | ||
276 | |||
277 | /* (APHY_CNTRL is for ADI usage only) */ | ||
278 | |||
279 | #define USB_APHY_CNTRL 0xffc03de0 /* Register that increases visibility of Analog PHY */ | ||
280 | |||
281 | /* (APHY_CALIB is for ADI usage only) */ | ||
282 | |||
283 | #define USB_APHY_CALIB 0xffc03de4 /* Register used to set some calibration values */ | ||
284 | #define USB_APHY_CNTRL2 0xffc03de8 /* Register used to prevent re-enumeration once Moab goes into hibernate mode */ | ||
285 | |||
286 | /* (PHY_TEST is for ADI usage only) */ | ||
287 | |||
288 | #define USB_PHY_TEST 0xffc03dec /* Used for reducing simulation time and simplifies FIFO testability */ | ||
289 | #define USB_PLLOSC_CTRL 0xffc03df0 /* Used to program different parameters for USB PLL and Oscillator */ | ||
290 | #define USB_SRP_CLKDIV 0xffc03df4 /* Used to program clock divide value for the clock fed to the SRP detection logic */ | ||
291 | |||
292 | /* USB Endpoint 0 Control Registers */ | ||
293 | |||
294 | #define USB_EP_NI0_TXMAXP 0xffc03e00 /* Maximum packet size for Host Tx endpoint0 */ | ||
295 | #define USB_EP_NI0_TXCSR 0xffc03e04 /* Control Status register for endpoint 0 */ | ||
296 | #define USB_EP_NI0_RXMAXP 0xffc03e08 /* Maximum packet size for Host Rx endpoint0 */ | ||
297 | #define USB_EP_NI0_RXCSR 0xffc03e0c /* Control Status register for Host Rx endpoint0 */ | ||
298 | #define USB_EP_NI0_RXCOUNT 0xffc03e10 /* Number of bytes received in endpoint 0 FIFO */ | ||
299 | #define USB_EP_NI0_TXTYPE 0xffc03e14 /* Sets the transaction protocol and peripheral endpoint number for the Host Tx endpoint0 */ | ||
300 | #define USB_EP_NI0_TXINTERVAL 0xffc03e18 /* Sets the NAK response timeout on Endpoint 0 */ | ||
301 | #define USB_EP_NI0_RXTYPE 0xffc03e1c /* Sets the transaction protocol and peripheral endpoint number for the Host Rx endpoint0 */ | ||
302 | #define USB_EP_NI0_RXINTERVAL 0xffc03e20 /* Sets the polling interval for Interrupt/Isochronous transfers or the NAK response timeout on Bulk transfers for Host Rx endpoint0 */ | ||
303 | |||
304 | /* USB Endpoint 1 Control Registers */ | ||
305 | |||
306 | #define USB_EP_NI0_TXCOUNT 0xffc03e28 /* Number of bytes to be written to the endpoint0 Tx FIFO */ | ||
307 | #define USB_EP_NI1_TXMAXP 0xffc03e40 /* Maximum packet size for Host Tx endpoint1 */ | ||
308 | #define USB_EP_NI1_TXCSR 0xffc03e44 /* Control Status register for endpoint1 */ | ||
309 | #define USB_EP_NI1_RXMAXP 0xffc03e48 /* Maximum packet size for Host Rx endpoint1 */ | ||
310 | #define USB_EP_NI1_RXCSR 0xffc03e4c /* Control Status register for Host Rx endpoint1 */ | ||
311 | #define USB_EP_NI1_RXCOUNT 0xffc03e50 /* Number of bytes received in endpoint1 FIFO */ | ||
312 | #define USB_EP_NI1_TXTYPE 0xffc03e54 /* Sets the transaction protocol and peripheral endpoint number for the Host Tx endpoint1 */ | ||
313 | #define USB_EP_NI1_TXINTERVAL 0xffc03e58 /* Sets the NAK response timeout on Endpoint1 */ | ||
314 | #define USB_EP_NI1_RXTYPE 0xffc03e5c /* Sets the transaction protocol and peripheral endpoint number for the Host Rx endpoint1 */ | ||
315 | #define USB_EP_NI1_RXINTERVAL 0xffc03e60 /* Sets the polling interval for Interrupt/Isochronous transfers or the NAK response timeout on Bulk transfers for Host Rx endpoint1 */ | ||
316 | |||
317 | /* USB Endpoint 2 Control Registers */ | ||
318 | |||
319 | #define USB_EP_NI1_TXCOUNT 0xffc03e68 /* Number of bytes to be written to the+H102 endpoint1 Tx FIFO */ | ||
320 | #define USB_EP_NI2_TXMAXP 0xffc03e80 /* Maximum packet size for Host Tx endpoint2 */ | ||
321 | #define USB_EP_NI2_TXCSR 0xffc03e84 /* Control Status register for endpoint2 */ | ||
322 | #define USB_EP_NI2_RXMAXP 0xffc03e88 /* Maximum packet size for Host Rx endpoint2 */ | ||
323 | #define USB_EP_NI2_RXCSR 0xffc03e8c /* Control Status register for Host Rx endpoint2 */ | ||
324 | #define USB_EP_NI2_RXCOUNT 0xffc03e90 /* Number of bytes received in endpoint2 FIFO */ | ||
325 | #define USB_EP_NI2_TXTYPE 0xffc03e94 /* Sets the transaction protocol and peripheral endpoint number for the Host Tx endpoint2 */ | ||
326 | #define USB_EP_NI2_TXINTERVAL 0xffc03e98 /* Sets the NAK response timeout on Endpoint2 */ | ||
327 | #define USB_EP_NI2_RXTYPE 0xffc03e9c /* Sets the transaction protocol and peripheral endpoint number for the Host Rx endpoint2 */ | ||
328 | #define USB_EP_NI2_RXINTERVAL 0xffc03ea0 /* Sets the polling interval for Interrupt/Isochronous transfers or the NAK response timeout on Bulk transfers for Host Rx endpoint2 */ | ||
329 | |||
330 | /* USB Endpoint 3 Control Registers */ | ||
331 | |||
332 | #define USB_EP_NI2_TXCOUNT 0xffc03ea8 /* Number of bytes to be written to the endpoint2 Tx FIFO */ | ||
333 | #define USB_EP_NI3_TXMAXP 0xffc03ec0 /* Maximum packet size for Host Tx endpoint3 */ | ||
334 | #define USB_EP_NI3_TXCSR 0xffc03ec4 /* Control Status register for endpoint3 */ | ||
335 | #define USB_EP_NI3_RXMAXP 0xffc03ec8 /* Maximum packet size for Host Rx endpoint3 */ | ||
336 | #define USB_EP_NI3_RXCSR 0xffc03ecc /* Control Status register for Host Rx endpoint3 */ | ||
337 | #define USB_EP_NI3_RXCOUNT 0xffc03ed0 /* Number of bytes received in endpoint3 FIFO */ | ||
338 | #define USB_EP_NI3_TXTYPE 0xffc03ed4 /* Sets the transaction protocol and peripheral endpoint number for the Host Tx endpoint3 */ | ||
339 | #define USB_EP_NI3_TXINTERVAL 0xffc03ed8 /* Sets the NAK response timeout on Endpoint3 */ | ||
340 | #define USB_EP_NI3_RXTYPE 0xffc03edc /* Sets the transaction protocol and peripheral endpoint number for the Host Rx endpoint3 */ | ||
341 | #define USB_EP_NI3_RXINTERVAL 0xffc03ee0 /* Sets the polling interval for Interrupt/Isochronous transfers or the NAK response timeout on Bulk transfers for Host Rx endpoint3 */ | ||
342 | |||
343 | /* USB Endpoint 4 Control Registers */ | ||
344 | |||
345 | #define USB_EP_NI3_TXCOUNT 0xffc03ee8 /* Number of bytes to be written to the H124endpoint3 Tx FIFO */ | ||
346 | #define USB_EP_NI4_TXMAXP 0xffc03f00 /* Maximum packet size for Host Tx endpoint4 */ | ||
347 | #define USB_EP_NI4_TXCSR 0xffc03f04 /* Control Status register for endpoint4 */ | ||
348 | #define USB_EP_NI4_RXMAXP 0xffc03f08 /* Maximum packet size for Host Rx endpoint4 */ | ||
349 | #define USB_EP_NI4_RXCSR 0xffc03f0c /* Control Status register for Host Rx endpoint4 */ | ||
350 | #define USB_EP_NI4_RXCOUNT 0xffc03f10 /* Number of bytes received in endpoint4 FIFO */ | ||
351 | #define USB_EP_NI4_TXTYPE 0xffc03f14 /* Sets the transaction protocol and peripheral endpoint number for the Host Tx endpoint4 */ | ||
352 | #define USB_EP_NI4_TXINTERVAL 0xffc03f18 /* Sets the NAK response timeout on Endpoint4 */ | ||
353 | #define USB_EP_NI4_RXTYPE 0xffc03f1c /* Sets the transaction protocol and peripheral endpoint number for the Host Rx endpoint4 */ | ||
354 | #define USB_EP_NI4_RXINTERVAL 0xffc03f20 /* Sets the polling interval for Interrupt/Isochronous transfers or the NAK response timeout on Bulk transfers for Host Rx endpoint4 */ | ||
355 | |||
356 | /* USB Endpoint 5 Control Registers */ | ||
357 | |||
358 | #define USB_EP_NI4_TXCOUNT 0xffc03f28 /* Number of bytes to be written to the endpoint4 Tx FIFO */ | ||
359 | #define USB_EP_NI5_TXMAXP 0xffc03f40 /* Maximum packet size for Host Tx endpoint5 */ | ||
360 | #define USB_EP_NI5_TXCSR 0xffc03f44 /* Control Status register for endpoint5 */ | ||
361 | #define USB_EP_NI5_RXMAXP 0xffc03f48 /* Maximum packet size for Host Rx endpoint5 */ | ||
362 | #define USB_EP_NI5_RXCSR 0xffc03f4c /* Control Status register for Host Rx endpoint5 */ | ||
363 | #define USB_EP_NI5_RXCOUNT 0xffc03f50 /* Number of bytes received in endpoint5 FIFO */ | ||
364 | #define USB_EP_NI5_TXTYPE 0xffc03f54 /* Sets the transaction protocol and peripheral endpoint number for the Host Tx endpoint5 */ | ||
365 | #define USB_EP_NI5_TXINTERVAL 0xffc03f58 /* Sets the NAK response timeout on Endpoint5 */ | ||
366 | #define USB_EP_NI5_RXTYPE 0xffc03f5c /* Sets the transaction protocol and peripheral endpoint number for the Host Rx endpoint5 */ | ||
367 | #define USB_EP_NI5_RXINTERVAL 0xffc03f60 /* Sets the polling interval for Interrupt/Isochronous transfers or the NAK response timeout on Bulk transfers for Host Rx endpoint5 */ | ||
368 | |||
369 | /* USB Endpoint 6 Control Registers */ | ||
370 | |||
371 | #define USB_EP_NI5_TXCOUNT 0xffc03f68 /* Number of bytes to be written to the H145endpoint5 Tx FIFO */ | ||
372 | #define USB_EP_NI6_TXMAXP 0xffc03f80 /* Maximum packet size for Host Tx endpoint6 */ | ||
373 | #define USB_EP_NI6_TXCSR 0xffc03f84 /* Control Status register for endpoint6 */ | ||
374 | #define USB_EP_NI6_RXMAXP 0xffc03f88 /* Maximum packet size for Host Rx endpoint6 */ | ||
375 | #define USB_EP_NI6_RXCSR 0xffc03f8c /* Control Status register for Host Rx endpoint6 */ | ||
376 | #define USB_EP_NI6_RXCOUNT 0xffc03f90 /* Number of bytes received in endpoint6 FIFO */ | ||
377 | #define USB_EP_NI6_TXTYPE 0xffc03f94 /* Sets the transaction protocol and peripheral endpoint number for the Host Tx endpoint6 */ | ||
378 | #define USB_EP_NI6_TXINTERVAL 0xffc03f98 /* Sets the NAK response timeout on Endpoint6 */ | ||
379 | #define USB_EP_NI6_RXTYPE 0xffc03f9c /* Sets the transaction protocol and peripheral endpoint number for the Host Rx endpoint6 */ | ||
380 | #define USB_EP_NI6_RXINTERVAL 0xffc03fa0 /* Sets the polling interval for Interrupt/Isochronous transfers or the NAK response timeout on Bulk transfers for Host Rx endpoint6 */ | ||
381 | |||
382 | /* USB Endpoint 7 Control Registers */ | ||
383 | |||
384 | #define USB_EP_NI6_TXCOUNT 0xffc03fa8 /* Number of bytes to be written to the endpoint6 Tx FIFO */ | ||
385 | #define USB_EP_NI7_TXMAXP 0xffc03fc0 /* Maximum packet size for Host Tx endpoint7 */ | ||
386 | #define USB_EP_NI7_TXCSR 0xffc03fc4 /* Control Status register for endpoint7 */ | ||
387 | #define USB_EP_NI7_RXMAXP 0xffc03fc8 /* Maximum packet size for Host Rx endpoint7 */ | ||
388 | #define USB_EP_NI7_RXCSR 0xffc03fcc /* Control Status register for Host Rx endpoint7 */ | ||
389 | #define USB_EP_NI7_RXCOUNT 0xffc03fd0 /* Number of bytes received in endpoint7 FIFO */ | ||
390 | #define USB_EP_NI7_TXTYPE 0xffc03fd4 /* Sets the transaction protocol and peripheral endpoint number for the Host Tx endpoint7 */ | ||
391 | #define USB_EP_NI7_TXINTERVAL 0xffc03fd8 /* Sets the NAK response timeout on Endpoint7 */ | ||
392 | #define USB_EP_NI7_RXTYPE 0xffc03fdc /* Sets the transaction protocol and peripheral endpoint number for the Host Rx endpoint7 */ | ||
393 | #define USB_EP_NI7_RXINTERVAL 0xffc03ff0 /* Sets the polling interval for Interrupt/Isochronous transfers or the NAK response timeout on Bulk transfers for Host Rx endpoint7 */ | ||
394 | #define USB_EP_NI7_TXCOUNT 0xffc03ff8 /* Number of bytes to be written to the endpoint7 Tx FIFO */ | ||
395 | #define USB_DMA_INTERRUPT 0xffc04000 /* Indicates pending interrupts for the DMA channels */ | ||
396 | |||
397 | /* USB Channel 0 Config Registers */ | ||
398 | |||
399 | #define USB_DMA0CONTROL 0xffc04004 /* DMA master channel 0 configuration */ | ||
400 | #define USB_DMA0ADDRLOW 0xffc04008 /* Lower 16-bits of memory source/destination address for DMA master channel 0 */ | ||
401 | #define USB_DMA0ADDRHIGH 0xffc0400c /* Upper 16-bits of memory source/destination address for DMA master channel 0 */ | ||
402 | #define USB_DMA0COUNTLOW 0xffc04010 /* Lower 16-bits of byte count of DMA transfer for DMA master channel 0 */ | ||
403 | #define USB_DMA0COUNTHIGH 0xffc04014 /* Upper 16-bits of byte count of DMA transfer for DMA master channel 0 */ | ||
404 | |||
405 | /* USB Channel 1 Config Registers */ | ||
406 | |||
407 | #define USB_DMA1CONTROL 0xffc04024 /* DMA master channel 1 configuration */ | ||
408 | #define USB_DMA1ADDRLOW 0xffc04028 /* Lower 16-bits of memory source/destination address for DMA master channel 1 */ | ||
409 | #define USB_DMA1ADDRHIGH 0xffc0402c /* Upper 16-bits of memory source/destination address for DMA master channel 1 */ | ||
410 | #define USB_DMA1COUNTLOW 0xffc04030 /* Lower 16-bits of byte count of DMA transfer for DMA master channel 1 */ | ||
411 | #define USB_DMA1COUNTHIGH 0xffc04034 /* Upper 16-bits of byte count of DMA transfer for DMA master channel 1 */ | ||
412 | |||
413 | /* USB Channel 2 Config Registers */ | ||
414 | |||
415 | #define USB_DMA2CONTROL 0xffc04044 /* DMA master channel 2 configuration */ | ||
416 | #define USB_DMA2ADDRLOW 0xffc04048 /* Lower 16-bits of memory source/destination address for DMA master channel 2 */ | ||
417 | #define USB_DMA2ADDRHIGH 0xffc0404c /* Upper 16-bits of memory source/destination address for DMA master channel 2 */ | ||
418 | #define USB_DMA2COUNTLOW 0xffc04050 /* Lower 16-bits of byte count of DMA transfer for DMA master channel 2 */ | ||
419 | #define USB_DMA2COUNTHIGH 0xffc04054 /* Upper 16-bits of byte count of DMA transfer for DMA master channel 2 */ | ||
420 | |||
421 | /* USB Channel 3 Config Registers */ | ||
422 | |||
423 | #define USB_DMA3CONTROL 0xffc04064 /* DMA master channel 3 configuration */ | ||
424 | #define USB_DMA3ADDRLOW 0xffc04068 /* Lower 16-bits of memory source/destination address for DMA master channel 3 */ | ||
425 | #define USB_DMA3ADDRHIGH 0xffc0406c /* Upper 16-bits of memory source/destination address for DMA master channel 3 */ | ||
426 | #define USB_DMA3COUNTLOW 0xffc04070 /* Lower 16-bits of byte count of DMA transfer for DMA master channel 3 */ | ||
427 | #define USB_DMA3COUNTHIGH 0xffc04074 /* Upper 16-bits of byte count of DMA transfer for DMA master channel 3 */ | ||
428 | |||
429 | /* USB Channel 4 Config Registers */ | ||
430 | |||
431 | #define USB_DMA4CONTROL 0xffc04084 /* DMA master channel 4 configuration */ | ||
432 | #define USB_DMA4ADDRLOW 0xffc04088 /* Lower 16-bits of memory source/destination address for DMA master channel 4 */ | ||
433 | #define USB_DMA4ADDRHIGH 0xffc0408c /* Upper 16-bits of memory source/destination address for DMA master channel 4 */ | ||
434 | #define USB_DMA4COUNTLOW 0xffc04090 /* Lower 16-bits of byte count of DMA transfer for DMA master channel 4 */ | ||
435 | #define USB_DMA4COUNTHIGH 0xffc04094 /* Upper 16-bits of byte count of DMA transfer for DMA master channel 4 */ | ||
436 | |||
437 | /* USB Channel 5 Config Registers */ | ||
438 | |||
439 | #define USB_DMA5CONTROL 0xffc040a4 /* DMA master channel 5 configuration */ | ||
440 | #define USB_DMA5ADDRLOW 0xffc040a8 /* Lower 16-bits of memory source/destination address for DMA master channel 5 */ | ||
441 | #define USB_DMA5ADDRHIGH 0xffc040ac /* Upper 16-bits of memory source/destination address for DMA master channel 5 */ | ||
442 | #define USB_DMA5COUNTLOW 0xffc040b0 /* Lower 16-bits of byte count of DMA transfer for DMA master channel 5 */ | ||
443 | #define USB_DMA5COUNTHIGH 0xffc040b4 /* Upper 16-bits of byte count of DMA transfer for DMA master channel 5 */ | ||
444 | |||
445 | /* USB Channel 6 Config Registers */ | ||
446 | |||
447 | #define USB_DMA6CONTROL 0xffc040c4 /* DMA master channel 6 configuration */ | ||
448 | #define USB_DMA6ADDRLOW 0xffc040c8 /* Lower 16-bits of memory source/destination address for DMA master channel 6 */ | ||
449 | #define USB_DMA6ADDRHIGH 0xffc040cc /* Upper 16-bits of memory source/destination address for DMA master channel 6 */ | ||
450 | #define USB_DMA6COUNTLOW 0xffc040d0 /* Lower 16-bits of byte count of DMA transfer for DMA master channel 6 */ | ||
451 | #define USB_DMA6COUNTHIGH 0xffc040d4 /* Upper 16-bits of byte count of DMA transfer for DMA master channel 6 */ | ||
452 | |||
453 | /* USB Channel 7 Config Registers */ | ||
454 | |||
455 | #define USB_DMA7CONTROL 0xffc040e4 /* DMA master channel 7 configuration */ | ||
456 | #define USB_DMA7ADDRLOW 0xffc040e8 /* Lower 16-bits of memory source/destination address for DMA master channel 7 */ | ||
457 | #define USB_DMA7ADDRHIGH 0xffc040ec /* Upper 16-bits of memory source/destination address for DMA master channel 7 */ | ||
458 | #define USB_DMA7COUNTLOW 0xffc040f0 /* Lower 16-bits of byte count of DMA transfer for DMA master channel 7 */ | ||
459 | #define USB_DMA7COUNTHIGH 0xffc040f4 /* Upper 16-bits of byte count of DMA transfer for DMA master channel 7 */ | ||
460 | |||
461 | /* Keypad Registers */ | ||
462 | |||
463 | #define KPAD_CTL 0xffc04100 /* Controls keypad module enable and disable */ | ||
464 | #define KPAD_PRESCALE 0xffc04104 /* Establish a time base for programing the KPAD_MSEL register */ | ||
465 | #define KPAD_MSEL 0xffc04108 /* Selects delay parameters for keypad interface sensitivity */ | ||
466 | #define KPAD_ROWCOL 0xffc0410c /* Captures the row and column output values of the keys pressed */ | ||
467 | #define KPAD_STAT 0xffc04110 /* Holds and clears the status of the keypad interface interrupt */ | ||
468 | #define KPAD_SOFTEVAL 0xffc04114 /* Lets software force keypad interface to check for keys being pressed */ | ||
469 | |||
470 | /* Pixel Compositor (PIXC) Registers */ | ||
471 | |||
472 | #define PIXC_CTL 0xffc04400 /* Overlay enable, resampling mode, I/O data format, transparency enable, watermark level, FIFO status */ | ||
473 | #define PIXC_PPL 0xffc04404 /* Holds the number of pixels per line of the display */ | ||
474 | #define PIXC_LPF 0xffc04408 /* Holds the number of lines per frame of the display */ | ||
475 | #define PIXC_AHSTART 0xffc0440c /* Contains horizontal start pixel information of the overlay data (set A) */ | ||
476 | #define PIXC_AHEND 0xffc04410 /* Contains horizontal end pixel information of the overlay data (set A) */ | ||
477 | #define PIXC_AVSTART 0xffc04414 /* Contains vertical start pixel information of the overlay data (set A) */ | ||
478 | #define PIXC_AVEND 0xffc04418 /* Contains vertical end pixel information of the overlay data (set A) */ | ||
479 | #define PIXC_ATRANSP 0xffc0441c /* Contains the transparency ratio (set A) */ | ||
480 | #define PIXC_BHSTART 0xffc04420 /* Contains horizontal start pixel information of the overlay data (set B) */ | ||
481 | #define PIXC_BHEND 0xffc04424 /* Contains horizontal end pixel information of the overlay data (set B) */ | ||
482 | #define PIXC_BVSTART 0xffc04428 /* Contains vertical start pixel information of the overlay data (set B) */ | ||
483 | #define PIXC_BVEND 0xffc0442c /* Contains vertical end pixel information of the overlay data (set B) */ | ||
484 | #define PIXC_BTRANSP 0xffc04430 /* Contains the transparency ratio (set B) */ | ||
485 | #define PIXC_INTRSTAT 0xffc0443c /* Overlay interrupt configuration/status */ | ||
486 | #define PIXC_RYCON 0xffc04440 /* Color space conversion matrix register. Contains the R/Y conversion coefficients */ | ||
487 | #define PIXC_GUCON 0xffc04444 /* Color space conversion matrix register. Contains the G/U conversion coefficients */ | ||
488 | #define PIXC_BVCON 0xffc04448 /* Color space conversion matrix register. Contains the B/V conversion coefficients */ | ||
489 | #define PIXC_CCBIAS 0xffc0444c /* Bias values for the color space conversion matrix */ | ||
490 | #define PIXC_TC 0xffc04450 /* Holds the transparent color value */ | ||
491 | |||
492 | /* Handshake MDMA 0 Registers */ | ||
493 | |||
494 | #define HMDMA0_CONTROL 0xffc04500 /* Handshake MDMA0 Control Register */ | ||
495 | #define HMDMA0_ECINIT 0xffc04504 /* Handshake MDMA0 Initial Edge Count Register */ | ||
496 | #define HMDMA0_BCINIT 0xffc04508 /* Handshake MDMA0 Initial Block Count Register */ | ||
497 | #define HMDMA0_ECURGENT 0xffc0450c /* Handshake MDMA0 Urgent Edge Count Threshhold Register */ | ||
498 | #define HMDMA0_ECOVERFLOW 0xffc04510 /* Handshake MDMA0 Edge Count Overflow Interrupt Register */ | ||
499 | #define HMDMA0_ECOUNT 0xffc04514 /* Handshake MDMA0 Current Edge Count Register */ | ||
500 | #define HMDMA0_BCOUNT 0xffc04518 /* Handshake MDMA0 Current Block Count Register */ | ||
501 | |||
502 | /* Handshake MDMA 1 Registers */ | ||
503 | |||
504 | #define HMDMA1_CONTROL 0xffc04540 /* Handshake MDMA1 Control Register */ | ||
505 | #define HMDMA1_ECINIT 0xffc04544 /* Handshake MDMA1 Initial Edge Count Register */ | ||
506 | #define HMDMA1_BCINIT 0xffc04548 /* Handshake MDMA1 Initial Block Count Register */ | ||
507 | #define HMDMA1_ECURGENT 0xffc0454c /* Handshake MDMA1 Urgent Edge Count Threshhold Register */ | ||
508 | #define HMDMA1_ECOVERFLOW 0xffc04550 /* Handshake MDMA1 Edge Count Overflow Interrupt Register */ | ||
509 | #define HMDMA1_ECOUNT 0xffc04554 /* Handshake MDMA1 Current Edge Count Register */ | ||
510 | #define HMDMA1_BCOUNT 0xffc04558 /* Handshake MDMA1 Current Block Count Register */ | ||
511 | |||
512 | |||
513 | /* ********************************************************** */ | ||
514 | /* SINGLE BIT MACRO PAIRS (bit mask and negated one) */ | ||
515 | /* and MULTI BIT READ MACROS */ | ||
516 | /* ********************************************************** */ | ||
517 | |||
518 | /* Bit masks for PIXC_CTL */ | ||
519 | |||
520 | #define PIXC_EN 0x1 /* Pixel Compositor Enable */ | ||
521 | #define OVR_A_EN 0x2 /* Overlay A Enable */ | ||
522 | #define OVR_B_EN 0x4 /* Overlay B Enable */ | ||
523 | #define IMG_FORM 0x8 /* Image Data Format */ | ||
524 | #define OVR_FORM 0x10 /* Overlay Data Format */ | ||
525 | #define OUT_FORM 0x20 /* Output Data Format */ | ||
526 | #define UDS_MOD 0x40 /* Resampling Mode */ | ||
527 | #define TC_EN 0x80 /* Transparent Color Enable */ | ||
528 | #define IMG_STAT 0x300 /* Image FIFO Status */ | ||
529 | #define OVR_STAT 0xc00 /* Overlay FIFO Status */ | ||
530 | #define WM_LVL 0x3000 /* FIFO Watermark Level */ | ||
531 | |||
532 | /* Bit masks for PIXC_AHSTART */ | ||
533 | |||
534 | #define A_HSTART 0xfff /* Horizontal Start Coordinates */ | ||
535 | |||
536 | /* Bit masks for PIXC_AHEND */ | ||
537 | |||
538 | #define A_HEND 0xfff /* Horizontal End Coordinates */ | ||
539 | |||
540 | /* Bit masks for PIXC_AVSTART */ | ||
541 | |||
542 | #define A_VSTART 0x3ff /* Vertical Start Coordinates */ | ||
543 | |||
544 | /* Bit masks for PIXC_AVEND */ | ||
545 | |||
546 | #define A_VEND 0x3ff /* Vertical End Coordinates */ | ||
547 | |||
548 | /* Bit masks for PIXC_ATRANSP */ | ||
549 | |||
550 | #define A_TRANSP 0xf /* Transparency Value */ | ||
551 | |||
552 | /* Bit masks for PIXC_BHSTART */ | ||
553 | |||
554 | #define B_HSTART 0xfff /* Horizontal Start Coordinates */ | ||
555 | |||
556 | /* Bit masks for PIXC_BHEND */ | ||
557 | |||
558 | #define B_HEND 0xfff /* Horizontal End Coordinates */ | ||
559 | |||
560 | /* Bit masks for PIXC_BVSTART */ | ||
561 | |||
562 | #define B_VSTART 0x3ff /* Vertical Start Coordinates */ | ||
563 | |||
564 | /* Bit masks for PIXC_BVEND */ | ||
565 | |||
566 | #define B_VEND 0x3ff /* Vertical End Coordinates */ | ||
567 | |||
568 | /* Bit masks for PIXC_BTRANSP */ | ||
569 | |||
570 | #define B_TRANSP 0xf /* Transparency Value */ | ||
571 | |||
572 | /* Bit masks for PIXC_INTRSTAT */ | ||
573 | |||
574 | #define OVR_INT_EN 0x1 /* Interrupt at End of Last Valid Overlay */ | ||
575 | #define FRM_INT_EN 0x2 /* Interrupt at End of Frame */ | ||
576 | #define OVR_INT_STAT 0x4 /* Overlay Interrupt Status */ | ||
577 | #define FRM_INT_STAT 0x8 /* Frame Interrupt Status */ | ||
578 | |||
579 | /* Bit masks for PIXC_RYCON */ | ||
580 | |||
581 | #define A11 0x3ff /* A11 in the Coefficient Matrix */ | ||
582 | #define A12 0xffc00 /* A12 in the Coefficient Matrix */ | ||
583 | #define A13 0x3ff00000 /* A13 in the Coefficient Matrix */ | ||
584 | #define RY_MULT4 0x40000000 /* Multiply Row by 4 */ | ||
585 | |||
586 | /* Bit masks for PIXC_GUCON */ | ||
587 | |||
588 | #define A21 0x3ff /* A21 in the Coefficient Matrix */ | ||
589 | #define A22 0xffc00 /* A22 in the Coefficient Matrix */ | ||
590 | #define A23 0x3ff00000 /* A23 in the Coefficient Matrix */ | ||
591 | #define GU_MULT4 0x40000000 /* Multiply Row by 4 */ | ||
592 | |||
593 | /* Bit masks for PIXC_BVCON */ | ||
594 | |||
595 | #define A31 0x3ff /* A31 in the Coefficient Matrix */ | ||
596 | #define A32 0xffc00 /* A32 in the Coefficient Matrix */ | ||
597 | #define A33 0x3ff00000 /* A33 in the Coefficient Matrix */ | ||
598 | #define BV_MULT4 0x40000000 /* Multiply Row by 4 */ | ||
599 | |||
600 | /* Bit masks for PIXC_CCBIAS */ | ||
601 | |||
602 | #define A14 0x3ff /* A14 in the Bias Vector */ | ||
603 | #define A24 0xffc00 /* A24 in the Bias Vector */ | ||
604 | #define A34 0x3ff00000 /* A34 in the Bias Vector */ | ||
605 | |||
606 | /* Bit masks for PIXC_TC */ | ||
607 | |||
608 | #define RY_TRANS 0xff /* Transparent Color - R/Y Component */ | ||
609 | #define GU_TRANS 0xff00 /* Transparent Color - G/U Component */ | ||
610 | #define BV_TRANS 0xff0000 /* Transparent Color - B/V Component */ | ||
611 | |||
612 | /* Bit masks for HOST_CONTROL */ | ||
613 | |||
614 | #define HOST_EN 0x1 /* Host Enable */ | ||
615 | #define HOST_END 0x2 /* Host Endianess */ | ||
616 | #define DATA_SIZE 0x4 /* Data Size */ | ||
617 | #define HOST_RST 0x8 /* Host Reset */ | ||
618 | #define HRDY_OVR 0x20 /* Host Ready Override */ | ||
619 | #define INT_MODE 0x40 /* Interrupt Mode */ | ||
620 | #define BT_EN 0x80 /* Bus Timeout Enable */ | ||
621 | #define EHW 0x100 /* Enable Host Write */ | ||
622 | #define EHR 0x200 /* Enable Host Read */ | ||
623 | #define BDR 0x400 /* Burst DMA Requests */ | ||
624 | |||
625 | /* Bit masks for HOST_STATUS */ | ||
626 | |||
627 | #define DMA_READY 0x1 /* DMA Ready */ | ||
628 | #define FIFOFULL 0x2 /* FIFO Full */ | ||
629 | #define FIFOEMPTY 0x4 /* FIFO Empty */ | ||
630 | #define DMA_COMPLETE 0x8 /* DMA Complete */ | ||
631 | #define HSHK 0x10 /* Host Handshake */ | ||
632 | #define HSTIMEOUT 0x20 /* Host Timeout */ | ||
633 | #define HIRQ 0x40 /* Host Interrupt Request */ | ||
634 | #define ALLOW_CNFG 0x80 /* Allow New Configuration */ | ||
635 | #define DMA_DIR 0x100 /* DMA Direction */ | ||
636 | #define BTE 0x200 /* Bus Timeout Enabled */ | ||
637 | |||
638 | /* Bit masks for HOST_TIMEOUT */ | ||
639 | |||
640 | #define COUNT_TIMEOUT 0x7ff /* Host Timeout count */ | ||
641 | |||
642 | /* Bit masks for KPAD_CTL */ | ||
643 | |||
644 | #define KPAD_EN 0x1 /* Keypad Enable */ | ||
645 | #define KPAD_IRQMODE 0x6 /* Key Press Interrupt Enable */ | ||
646 | #define KPAD_ROWEN 0x1c00 /* Row Enable Width */ | ||
647 | #define KPAD_COLEN 0xe000 /* Column Enable Width */ | ||
648 | |||
649 | /* Bit masks for KPAD_PRESCALE */ | ||
650 | |||
651 | #define KPAD_PRESCALE_VAL 0x3f /* Key Prescale Value */ | ||
652 | |||
653 | /* Bit masks for KPAD_MSEL */ | ||
654 | |||
655 | #define DBON_SCALE 0xff /* Debounce Scale Value */ | ||
656 | #define COLDRV_SCALE 0xff00 /* Column Driver Scale Value */ | ||
657 | |||
658 | /* Bit masks for KPAD_ROWCOL */ | ||
659 | |||
660 | #define KPAD_ROW 0xff /* Rows Pressed */ | ||
661 | #define KPAD_COL 0xff00 /* Columns Pressed */ | ||
662 | |||
663 | /* Bit masks for KPAD_STAT */ | ||
664 | |||
665 | #define KPAD_IRQ 0x1 /* Keypad Interrupt Status */ | ||
666 | #define KPAD_MROWCOL 0x6 /* Multiple Row/Column Keypress Status */ | ||
667 | #define KPAD_PRESSED 0x8 /* Key press current status */ | ||
668 | |||
669 | /* Bit masks for KPAD_SOFTEVAL */ | ||
670 | |||
671 | #define KPAD_SOFTEVAL_E 0x2 /* Software Programmable Force Evaluate */ | ||
672 | |||
673 | /* Bit masks for SDH_COMMAND */ | ||
674 | |||
675 | #define CMD_IDX 0x3f /* Command Index */ | ||
676 | #define CMD_RSP 0x40 /* Response */ | ||
677 | #define CMD_L_RSP 0x80 /* Long Response */ | ||
678 | #define CMD_INT_E 0x100 /* Command Interrupt */ | ||
679 | #define CMD_PEND_E 0x200 /* Command Pending */ | ||
680 | #define CMD_E 0x400 /* Command Enable */ | ||
681 | |||
682 | /* Bit masks for SDH_PWR_CTL */ | ||
683 | |||
684 | #define PWR_ON 0x3 /* Power On */ | ||
685 | #if 0 | ||
686 | #define TBD 0x3c /* TBD */ | ||
687 | #endif | ||
688 | #define SD_CMD_OD 0x40 /* Open Drain Output */ | ||
689 | #define ROD_CTL 0x80 /* Rod Control */ | ||
690 | |||
691 | /* Bit masks for SDH_CLK_CTL */ | ||
692 | |||
693 | #define CLKDIV 0xff /* MC_CLK Divisor */ | ||
694 | #define CLK_E 0x100 /* MC_CLK Bus Clock Enable */ | ||
695 | #define PWR_SV_E 0x200 /* Power Save Enable */ | ||
696 | #define CLKDIV_BYPASS 0x400 /* Bypass Divisor */ | ||
697 | #define WIDE_BUS 0x800 /* Wide Bus Mode Enable */ | ||
698 | |||
699 | /* Bit masks for SDH_RESP_CMD */ | ||
700 | |||
701 | #define RESP_CMD 0x3f /* Response Command */ | ||
702 | |||
703 | /* Bit masks for SDH_DATA_CTL */ | ||
704 | |||
705 | #define DTX_E 0x1 /* Data Transfer Enable */ | ||
706 | #define DTX_DIR 0x2 /* Data Transfer Direction */ | ||
707 | #define DTX_MODE 0x4 /* Data Transfer Mode */ | ||
708 | #define DTX_DMA_E 0x8 /* Data Transfer DMA Enable */ | ||
709 | #define DTX_BLK_LGTH 0xf0 /* Data Transfer Block Length */ | ||
710 | |||
711 | /* Bit masks for SDH_STATUS */ | ||
712 | |||
713 | #define CMD_CRC_FAIL 0x1 /* CMD CRC Fail */ | ||
714 | #define DAT_CRC_FAIL 0x2 /* Data CRC Fail */ | ||
715 | #define CMD_TIME_OUT 0x4 /* CMD Time Out */ | ||
716 | #define DAT_TIME_OUT 0x8 /* Data Time Out */ | ||
717 | #define TX_UNDERRUN 0x10 /* Transmit Underrun */ | ||
718 | #define RX_OVERRUN 0x20 /* Receive Overrun */ | ||
719 | #define CMD_RESP_END 0x40 /* CMD Response End */ | ||
720 | #define CMD_SENT 0x80 /* CMD Sent */ | ||
721 | #define DAT_END 0x100 /* Data End */ | ||
722 | #define START_BIT_ERR 0x200 /* Start Bit Error */ | ||
723 | #define DAT_BLK_END 0x400 /* Data Block End */ | ||
724 | #define CMD_ACT 0x800 /* CMD Active */ | ||
725 | #define TX_ACT 0x1000 /* Transmit Active */ | ||
726 | #define RX_ACT 0x2000 /* Receive Active */ | ||
727 | #define TX_FIFO_STAT 0x4000 /* Transmit FIFO Status */ | ||
728 | #define RX_FIFO_STAT 0x8000 /* Receive FIFO Status */ | ||
729 | #define TX_FIFO_FULL 0x10000 /* Transmit FIFO Full */ | ||
730 | #define RX_FIFO_FULL 0x20000 /* Receive FIFO Full */ | ||
731 | #define TX_FIFO_ZERO 0x40000 /* Transmit FIFO Empty */ | ||
732 | #define RX_DAT_ZERO 0x80000 /* Receive FIFO Empty */ | ||
733 | #define TX_DAT_RDY 0x100000 /* Transmit Data Available */ | ||
734 | #define RX_FIFO_RDY 0x200000 /* Receive Data Available */ | ||
735 | |||
736 | /* Bit masks for SDH_STATUS_CLR */ | ||
737 | |||
738 | #define CMD_CRC_FAIL_STAT 0x1 /* CMD CRC Fail Status */ | ||
739 | #define DAT_CRC_FAIL_STAT 0x2 /* Data CRC Fail Status */ | ||
740 | #define CMD_TIMEOUT_STAT 0x4 /* CMD Time Out Status */ | ||
741 | #define DAT_TIMEOUT_STAT 0x8 /* Data Time Out status */ | ||
742 | #define TX_UNDERRUN_STAT 0x10 /* Transmit Underrun Status */ | ||
743 | #define RX_OVERRUN_STAT 0x20 /* Receive Overrun Status */ | ||
744 | #define CMD_RESP_END_STAT 0x40 /* CMD Response End Status */ | ||
745 | #define CMD_SENT_STAT 0x80 /* CMD Sent Status */ | ||
746 | #define DAT_END_STAT 0x100 /* Data End Status */ | ||
747 | #define START_BIT_ERR_STAT 0x200 /* Start Bit Error Status */ | ||
748 | #define DAT_BLK_END_STAT 0x400 /* Data Block End Status */ | ||
749 | |||
750 | /* Bit masks for SDH_MASK0 */ | ||
751 | |||
752 | #define CMD_CRC_FAIL_MASK 0x1 /* CMD CRC Fail Mask */ | ||
753 | #define DAT_CRC_FAIL_MASK 0x2 /* Data CRC Fail Mask */ | ||
754 | #define CMD_TIMEOUT_MASK 0x4 /* CMD Time Out Mask */ | ||
755 | #define DAT_TIMEOUT_MASK 0x8 /* Data Time Out Mask */ | ||
756 | #define TX_UNDERRUN_MASK 0x10 /* Transmit Underrun Mask */ | ||
757 | #define RX_OVERRUN_MASK 0x20 /* Receive Overrun Mask */ | ||
758 | #define CMD_RESP_END_MASK 0x40 /* CMD Response End Mask */ | ||
759 | #define CMD_SENT_MASK 0x80 /* CMD Sent Mask */ | ||
760 | #define DAT_END_MASK 0x100 /* Data End Mask */ | ||
761 | #define START_BIT_ERR_MASK 0x200 /* Start Bit Error Mask */ | ||
762 | #define DAT_BLK_END_MASK 0x400 /* Data Block End Mask */ | ||
763 | #define CMD_ACT_MASK 0x800 /* CMD Active Mask */ | ||
764 | #define TX_ACT_MASK 0x1000 /* Transmit Active Mask */ | ||
765 | #define RX_ACT_MASK 0x2000 /* Receive Active Mask */ | ||
766 | #define TX_FIFO_STAT_MASK 0x4000 /* Transmit FIFO Status Mask */ | ||
767 | #define RX_FIFO_STAT_MASK 0x8000 /* Receive FIFO Status Mask */ | ||
768 | #define TX_FIFO_FULL_MASK 0x10000 /* Transmit FIFO Full Mask */ | ||
769 | #define RX_FIFO_FULL_MASK 0x20000 /* Receive FIFO Full Mask */ | ||
770 | #define TX_FIFO_ZERO_MASK 0x40000 /* Transmit FIFO Empty Mask */ | ||
771 | #define RX_DAT_ZERO_MASK 0x80000 /* Receive FIFO Empty Mask */ | ||
772 | #define TX_DAT_RDY_MASK 0x100000 /* Transmit Data Available Mask */ | ||
773 | #define RX_FIFO_RDY_MASK 0x200000 /* Receive Data Available Mask */ | ||
774 | |||
775 | /* Bit masks for SDH_FIFO_CNT */ | ||
776 | |||
777 | #define FIFO_COUNT 0x7fff /* FIFO Count */ | ||
778 | |||
779 | /* Bit masks for SDH_E_STATUS */ | ||
780 | |||
781 | #define SDIO_INT_DET 0x2 /* SDIO Int Detected */ | ||
782 | #define SD_CARD_DET 0x10 /* SD Card Detect */ | ||
783 | |||
784 | /* Bit masks for SDH_E_MASK */ | ||
785 | |||
786 | #define SDIO_MSK 0x2 /* Mask SDIO Int Detected */ | ||
787 | #define SCD_MSK 0x40 /* Mask Card Detect */ | ||
788 | |||
789 | /* Bit masks for SDH_CFG */ | ||
790 | |||
791 | #define CLKS_EN 0x1 /* Clocks Enable */ | ||
792 | #define SD4E 0x4 /* SDIO 4-Bit Enable */ | ||
793 | #define MWE 0x8 /* Moving Window Enable */ | ||
794 | #define SD_RST 0x10 /* SDMMC Reset */ | ||
795 | #define PUP_SDDAT 0x20 /* Pull-up SD_DAT */ | ||
796 | #define PUP_SDDAT3 0x40 /* Pull-up SD_DAT3 */ | ||
797 | #define PD_SDDAT3 0x80 /* Pull-down SD_DAT3 */ | ||
798 | |||
799 | /* Bit masks for SDH_RD_WAIT_EN */ | ||
800 | |||
801 | #define RWR 0x1 /* Read Wait Request */ | ||
802 | |||
803 | /* Bit masks for ATAPI_CONTROL */ | ||
804 | |||
805 | #define PIO_START 0x1 /* Start PIO/Reg Op */ | ||
806 | #define MULTI_START 0x2 /* Start Multi-DMA Op */ | ||
807 | #define ULTRA_START 0x4 /* Start Ultra-DMA Op */ | ||
808 | #define XFER_DIR 0x8 /* Transfer Direction */ | ||
809 | #define IORDY_EN 0x10 /* IORDY Enable */ | ||
810 | #define FIFO_FLUSH 0x20 /* Flush FIFOs */ | ||
811 | #define SOFT_RST 0x40 /* Soft Reset */ | ||
812 | #define DEV_RST 0x80 /* Device Reset */ | ||
813 | #define TFRCNT_RST 0x100 /* Trans Count Reset */ | ||
814 | #define END_ON_TERM 0x200 /* End/Terminate Select */ | ||
815 | #define PIO_USE_DMA 0x400 /* PIO-DMA Enable */ | ||
816 | #define UDMAIN_FIFO_THRS 0xf000 /* Ultra DMA-IN FIFO Threshold */ | ||
817 | |||
818 | /* Bit masks for ATAPI_STATUS */ | ||
819 | |||
820 | #define PIO_XFER_ON 0x1 /* PIO transfer in progress */ | ||
821 | #define MULTI_XFER_ON 0x2 /* Multi-word DMA transfer in progress */ | ||
822 | #define ULTRA_XFER_ON 0x4 /* Ultra DMA transfer in progress */ | ||
823 | #define ULTRA_IN_FL 0xf0 /* Ultra DMA Input FIFO Level */ | ||
824 | |||
825 | /* Bit masks for ATAPI_DEV_ADDR */ | ||
826 | |||
827 | #define DEV_ADDR 0x1f /* Device Address */ | ||
828 | |||
829 | /* Bit masks for ATAPI_INT_MASK */ | ||
830 | |||
831 | #define ATAPI_DEV_INT_MASK 0x1 /* Device interrupt mask */ | ||
832 | #define PIO_DONE_MASK 0x2 /* PIO transfer done interrupt mask */ | ||
833 | #define MULTI_DONE_MASK 0x4 /* Multi-DMA transfer done interrupt mask */ | ||
834 | #define UDMAIN_DONE_MASK 0x8 /* Ultra-DMA in transfer done interrupt mask */ | ||
835 | #define UDMAOUT_DONE_MASK 0x10 /* Ultra-DMA out transfer done interrupt mask */ | ||
836 | #define HOST_TERM_XFER_MASK 0x20 /* Host terminate current transfer interrupt mask */ | ||
837 | #define MULTI_TERM_MASK 0x40 /* Device terminate Multi-DMA transfer interrupt mask */ | ||
838 | #define UDMAIN_TERM_MASK 0x80 /* Device terminate Ultra-DMA-in transfer interrupt mask */ | ||
839 | #define UDMAOUT_TERM_MASK 0x100 /* Device terminate Ultra-DMA-out transfer interrupt mask */ | ||
840 | |||
841 | /* Bit masks for ATAPI_INT_STATUS */ | ||
842 | |||
843 | #define ATAPI_DEV_INT 0x1 /* Device interrupt status */ | ||
844 | #define PIO_DONE_INT 0x2 /* PIO transfer done interrupt status */ | ||
845 | #define MULTI_DONE_INT 0x4 /* Multi-DMA transfer done interrupt status */ | ||
846 | #define UDMAIN_DONE_INT 0x8 /* Ultra-DMA in transfer done interrupt status */ | ||
847 | #define UDMAOUT_DONE_INT 0x10 /* Ultra-DMA out transfer done interrupt status */ | ||
848 | #define HOST_TERM_XFER_INT 0x20 /* Host terminate current transfer interrupt status */ | ||
849 | #define MULTI_TERM_INT 0x40 /* Device terminate Multi-DMA transfer interrupt status */ | ||
850 | #define UDMAIN_TERM_INT 0x80 /* Device terminate Ultra-DMA-in transfer interrupt status */ | ||
851 | #define UDMAOUT_TERM_INT 0x100 /* Device terminate Ultra-DMA-out transfer interrupt status */ | ||
852 | |||
853 | /* Bit masks for ATAPI_LINE_STATUS */ | ||
854 | |||
855 | #define ATAPI_INTR 0x1 /* Device interrupt to host line status */ | ||
856 | #define ATAPI_DASP 0x2 /* Device dasp to host line status */ | ||
857 | #define ATAPI_CS0N 0x4 /* ATAPI chip select 0 line status */ | ||
858 | #define ATAPI_CS1N 0x8 /* ATAPI chip select 1 line status */ | ||
859 | #define ATAPI_ADDR 0x70 /* ATAPI address line status */ | ||
860 | #define ATAPI_DMAREQ 0x80 /* ATAPI DMA request line status */ | ||
861 | #define ATAPI_DMAACKN 0x100 /* ATAPI DMA acknowledge line status */ | ||
862 | #define ATAPI_DIOWN 0x200 /* ATAPI write line status */ | ||
863 | #define ATAPI_DIORN 0x400 /* ATAPI read line status */ | ||
864 | #define ATAPI_IORDY 0x800 /* ATAPI IORDY line status */ | ||
865 | |||
866 | /* Bit masks for ATAPI_SM_STATE */ | ||
867 | |||
868 | #define PIO_CSTATE 0xf /* PIO mode state machine current state */ | ||
869 | #define DMA_CSTATE 0xf0 /* DMA mode state machine current state */ | ||
870 | #define UDMAIN_CSTATE 0xf00 /* Ultra DMA-In mode state machine current state */ | ||
871 | #define UDMAOUT_CSTATE 0xf000 /* ATAPI IORDY line status */ | ||
872 | |||
873 | /* Bit masks for ATAPI_TERMINATE */ | ||
874 | |||
875 | #define ATAPI_HOST_TERM 0x1 /* Host terminationation */ | ||
876 | |||
877 | /* Bit masks for ATAPI_REG_TIM_0 */ | ||
878 | |||
879 | #define T2_REG 0xff /* End of cycle time for register access transfers */ | ||
880 | #define TEOC_REG 0xff00 /* Selects DIOR/DIOW pulsewidth */ | ||
881 | |||
882 | /* Bit masks for ATAPI_PIO_TIM_0 */ | ||
883 | |||
884 | #define T1_REG 0xf /* Time from address valid to DIOR/DIOW */ | ||
885 | #define T2_REG_PIO 0xff0 /* DIOR/DIOW pulsewidth */ | ||
886 | #define T4_REG 0xf000 /* DIOW data hold */ | ||
887 | |||
888 | /* Bit masks for ATAPI_PIO_TIM_1 */ | ||
889 | |||
890 | #define TEOC_REG_PIO 0xff /* End of cycle time for PIO access transfers. */ | ||
891 | |||
892 | /* Bit masks for ATAPI_MULTI_TIM_0 */ | ||
893 | |||
894 | #define TD 0xff /* DIOR/DIOW asserted pulsewidth */ | ||
895 | #define TM 0xff00 /* Time from address valid to DIOR/DIOW */ | ||
896 | |||
897 | /* Bit masks for ATAPI_MULTI_TIM_1 */ | ||
898 | |||
899 | #define TKW 0xff /* Selects DIOW negated pulsewidth */ | ||
900 | #define TKR 0xff00 /* Selects DIOR negated pulsewidth */ | ||
901 | |||
902 | /* Bit masks for ATAPI_MULTI_TIM_2 */ | ||
903 | |||
904 | #define TH 0xff /* Selects DIOW data hold */ | ||
905 | #define TEOC 0xff00 /* Selects end of cycle for DMA */ | ||
906 | |||
907 | /* Bit masks for ATAPI_ULTRA_TIM_0 */ | ||
908 | |||
909 | #define TACK 0xff /* Selects setup and hold times for TACK */ | ||
910 | #define TENV 0xff00 /* Selects envelope time */ | ||
911 | |||
912 | /* Bit masks for ATAPI_ULTRA_TIM_1 */ | ||
913 | |||
914 | #define TDVS 0xff /* Selects data valid setup time */ | ||
915 | #define TCYC_TDVS 0xff00 /* Selects cycle time - TDVS time */ | ||
916 | |||
917 | /* Bit masks for ATAPI_ULTRA_TIM_2 */ | ||
918 | |||
919 | #define TSS 0xff /* Selects time from STROBE edge to negation of DMARQ or assertion of STOP */ | ||
920 | #define TMLI 0xff00 /* Selects interlock time */ | ||
921 | |||
922 | /* Bit masks for ATAPI_ULTRA_TIM_3 */ | ||
923 | |||
924 | #define TZAH 0xff /* Selects minimum delay required for output */ | ||
925 | #define READY_PAUSE 0xff00 /* Selects ready to pause */ | ||
926 | |||
927 | /* Bit masks for TIMER_ENABLE1 */ | ||
928 | |||
929 | #define TIMEN8 0x1 /* Timer 8 Enable */ | ||
930 | #define TIMEN9 0x2 /* Timer 9 Enable */ | ||
931 | #define TIMEN10 0x4 /* Timer 10 Enable */ | ||
932 | |||
933 | /* Bit masks for TIMER_DISABLE1 */ | ||
934 | |||
935 | #define TIMDIS8 0x1 /* Timer 8 Disable */ | ||
936 | #define TIMDIS9 0x2 /* Timer 9 Disable */ | ||
937 | #define TIMDIS10 0x4 /* Timer 10 Disable */ | ||
938 | |||
939 | /* Bit masks for TIMER_STATUS1 */ | ||
940 | |||
941 | #define TIMIL8 0x1 /* Timer 8 Interrupt */ | ||
942 | #define TIMIL9 0x2 /* Timer 9 Interrupt */ | ||
943 | #define TIMIL10 0x4 /* Timer 10 Interrupt */ | ||
944 | #define TOVF_ERR8 0x10 /* Timer 8 Counter Overflow */ | ||
945 | #define TOVF_ERR9 0x20 /* Timer 9 Counter Overflow */ | ||
946 | #define TOVF_ERR10 0x40 /* Timer 10 Counter Overflow */ | ||
947 | #define TRUN8 0x1000 /* Timer 8 Slave Enable Status */ | ||
948 | #define TRUN9 0x2000 /* Timer 9 Slave Enable Status */ | ||
949 | #define TRUN10 0x4000 /* Timer 10 Slave Enable Status */ | ||
950 | |||
951 | /* Bit masks for EPPI0 are obtained from common base header for EPPIx (EPPI1 and EPPI2) */ | ||
952 | |||
953 | /* Bit masks for USB_FADDR */ | ||
954 | |||
955 | #define FUNCTION_ADDRESS 0x7f /* Function address */ | ||
956 | |||
957 | /* Bit masks for USB_POWER */ | ||
958 | |||
959 | #define ENABLE_SUSPENDM 0x1 /* enable SuspendM output */ | ||
960 | #define SUSPEND_MODE 0x2 /* Suspend Mode indicator */ | ||
961 | #define RESUME_MODE 0x4 /* DMA Mode */ | ||
962 | #define RESET 0x8 /* Reset indicator */ | ||
963 | #define HS_MODE 0x10 /* High Speed mode indicator */ | ||
964 | #define HS_ENABLE 0x20 /* high Speed Enable */ | ||
965 | #define SOFT_CONN 0x40 /* Soft connect */ | ||
966 | #define ISO_UPDATE 0x80 /* Isochronous update */ | ||
967 | |||
968 | /* Bit masks for USB_INTRTX */ | ||
969 | |||
970 | #define EP0_TX 0x1 /* Tx Endpoint 0 interrupt */ | ||
971 | #define EP1_TX 0x2 /* Tx Endpoint 1 interrupt */ | ||
972 | #define EP2_TX 0x4 /* Tx Endpoint 2 interrupt */ | ||
973 | #define EP3_TX 0x8 /* Tx Endpoint 3 interrupt */ | ||
974 | #define EP4_TX 0x10 /* Tx Endpoint 4 interrupt */ | ||
975 | #define EP5_TX 0x20 /* Tx Endpoint 5 interrupt */ | ||
976 | #define EP6_TX 0x40 /* Tx Endpoint 6 interrupt */ | ||
977 | #define EP7_TX 0x80 /* Tx Endpoint 7 interrupt */ | ||
978 | |||
979 | /* Bit masks for USB_INTRRX */ | ||
980 | |||
981 | #define EP1_RX 0x2 /* Rx Endpoint 1 interrupt */ | ||
982 | #define EP2_RX 0x4 /* Rx Endpoint 2 interrupt */ | ||
983 | #define EP3_RX 0x8 /* Rx Endpoint 3 interrupt */ | ||
984 | #define EP4_RX 0x10 /* Rx Endpoint 4 interrupt */ | ||
985 | #define EP5_RX 0x20 /* Rx Endpoint 5 interrupt */ | ||
986 | #define EP6_RX 0x40 /* Rx Endpoint 6 interrupt */ | ||
987 | #define EP7_RX 0x80 /* Rx Endpoint 7 interrupt */ | ||
988 | |||
989 | /* Bit masks for USB_INTRTXE */ | ||
990 | |||
991 | #define EP0_TX_E 0x1 /* Endpoint 0 interrupt Enable */ | ||
992 | #define EP1_TX_E 0x2 /* Tx Endpoint 1 interrupt Enable */ | ||
993 | #define EP2_TX_E 0x4 /* Tx Endpoint 2 interrupt Enable */ | ||
994 | #define EP3_TX_E 0x8 /* Tx Endpoint 3 interrupt Enable */ | ||
995 | #define EP4_TX_E 0x10 /* Tx Endpoint 4 interrupt Enable */ | ||
996 | #define EP5_TX_E 0x20 /* Tx Endpoint 5 interrupt Enable */ | ||
997 | #define EP6_TX_E 0x40 /* Tx Endpoint 6 interrupt Enable */ | ||
998 | #define EP7_TX_E 0x80 /* Tx Endpoint 7 interrupt Enable */ | ||
999 | |||
1000 | /* Bit masks for USB_INTRRXE */ | ||
1001 | |||
1002 | #define EP1_RX_E 0x2 /* Rx Endpoint 1 interrupt Enable */ | ||
1003 | #define EP2_RX_E 0x4 /* Rx Endpoint 2 interrupt Enable */ | ||
1004 | #define EP3_RX_E 0x8 /* Rx Endpoint 3 interrupt Enable */ | ||
1005 | #define EP4_RX_E 0x10 /* Rx Endpoint 4 interrupt Enable */ | ||
1006 | #define EP5_RX_E 0x20 /* Rx Endpoint 5 interrupt Enable */ | ||
1007 | #define EP6_RX_E 0x40 /* Rx Endpoint 6 interrupt Enable */ | ||
1008 | #define EP7_RX_E 0x80 /* Rx Endpoint 7 interrupt Enable */ | ||
1009 | |||
1010 | /* Bit masks for USB_INTRUSB */ | ||
1011 | |||
1012 | #define SUSPEND_B 0x1 /* Suspend indicator */ | ||
1013 | #define RESUME_B 0x2 /* Resume indicator */ | ||
1014 | #define RESET_OR_BABLE_B 0x4 /* Reset/babble indicator */ | ||
1015 | #define SOF_B 0x8 /* Start of frame */ | ||
1016 | #define CONN_B 0x10 /* Connection indicator */ | ||
1017 | #define DISCON_B 0x20 /* Disconnect indicator */ | ||
1018 | #define SESSION_REQ_B 0x40 /* Session Request */ | ||
1019 | #define VBUS_ERROR_B 0x80 /* Vbus threshold indicator */ | ||
1020 | |||
1021 | /* Bit masks for USB_INTRUSBE */ | ||
1022 | |||
1023 | #define SUSPEND_BE 0x1 /* Suspend indicator int enable */ | ||
1024 | #define RESUME_BE 0x2 /* Resume indicator int enable */ | ||
1025 | #define RESET_OR_BABLE_BE 0x4 /* Reset/babble indicator int enable */ | ||
1026 | #define SOF_BE 0x8 /* Start of frame int enable */ | ||
1027 | #define CONN_BE 0x10 /* Connection indicator int enable */ | ||
1028 | #define DISCON_BE 0x20 /* Disconnect indicator int enable */ | ||
1029 | #define SESSION_REQ_BE 0x40 /* Session Request int enable */ | ||
1030 | #define VBUS_ERROR_BE 0x80 /* Vbus threshold indicator int enable */ | ||
1031 | |||
1032 | /* Bit masks for USB_FRAME */ | ||
1033 | |||
1034 | #define FRAME_NUMBER 0x7ff /* Frame number */ | ||
1035 | |||
1036 | /* Bit masks for USB_INDEX */ | ||
1037 | |||
1038 | #define SELECTED_ENDPOINT 0xf /* selected endpoint */ | ||
1039 | |||
1040 | /* Bit masks for USB_GLOBAL_CTL */ | ||
1041 | |||
1042 | #define GLOBAL_ENA 0x1 /* enables USB module */ | ||
1043 | #define EP1_TX_ENA 0x2 /* Transmit endpoint 1 enable */ | ||
1044 | #define EP2_TX_ENA 0x4 /* Transmit endpoint 2 enable */ | ||
1045 | #define EP3_TX_ENA 0x8 /* Transmit endpoint 3 enable */ | ||
1046 | #define EP4_TX_ENA 0x10 /* Transmit endpoint 4 enable */ | ||
1047 | #define EP5_TX_ENA 0x20 /* Transmit endpoint 5 enable */ | ||
1048 | #define EP6_TX_ENA 0x40 /* Transmit endpoint 6 enable */ | ||
1049 | #define EP7_TX_ENA 0x80 /* Transmit endpoint 7 enable */ | ||
1050 | #define EP1_RX_ENA 0x100 /* Receive endpoint 1 enable */ | ||
1051 | #define EP2_RX_ENA 0x200 /* Receive endpoint 2 enable */ | ||
1052 | #define EP3_RX_ENA 0x400 /* Receive endpoint 3 enable */ | ||
1053 | #define EP4_RX_ENA 0x800 /* Receive endpoint 4 enable */ | ||
1054 | #define EP5_RX_ENA 0x1000 /* Receive endpoint 5 enable */ | ||
1055 | #define EP6_RX_ENA 0x2000 /* Receive endpoint 6 enable */ | ||
1056 | #define EP7_RX_ENA 0x4000 /* Receive endpoint 7 enable */ | ||
1057 | |||
1058 | /* Bit masks for USB_OTG_DEV_CTL */ | ||
1059 | |||
1060 | #define SESSION 0x1 /* session indicator */ | ||
1061 | #define HOST_REQ 0x2 /* Host negotiation request */ | ||
1062 | #define HOST_MODE 0x4 /* indicates USBDRC is a host */ | ||
1063 | #define VBUS0 0x8 /* Vbus level indicator[0] */ | ||
1064 | #define VBUS1 0x10 /* Vbus level indicator[1] */ | ||
1065 | #define LSDEV 0x20 /* Low-speed indicator */ | ||
1066 | #define FSDEV 0x40 /* Full or High-speed indicator */ | ||
1067 | #define B_DEVICE 0x80 /* A' or 'B' device indicator */ | ||
1068 | |||
1069 | /* Bit masks for USB_OTG_VBUS_IRQ */ | ||
1070 | |||
1071 | #define DRIVE_VBUS_ON 0x1 /* indicator to drive VBUS control circuit */ | ||
1072 | #define DRIVE_VBUS_OFF 0x2 /* indicator to shut off charge pump */ | ||
1073 | #define CHRG_VBUS_START 0x4 /* indicator for external circuit to start charging VBUS */ | ||
1074 | #define CHRG_VBUS_END 0x8 /* indicator for external circuit to end charging VBUS */ | ||
1075 | #define DISCHRG_VBUS_START 0x10 /* indicator to start discharging VBUS */ | ||
1076 | #define DISCHRG_VBUS_END 0x20 /* indicator to stop discharging VBUS */ | ||
1077 | |||
1078 | /* Bit masks for USB_OTG_VBUS_MASK */ | ||
1079 | |||
1080 | #define DRIVE_VBUS_ON_ENA 0x1 /* enable DRIVE_VBUS_ON interrupt */ | ||
1081 | #define DRIVE_VBUS_OFF_ENA 0x2 /* enable DRIVE_VBUS_OFF interrupt */ | ||
1082 | #define CHRG_VBUS_START_ENA 0x4 /* enable CHRG_VBUS_START interrupt */ | ||
1083 | #define CHRG_VBUS_END_ENA 0x8 /* enable CHRG_VBUS_END interrupt */ | ||
1084 | #define DISCHRG_VBUS_START_ENA 0x10 /* enable DISCHRG_VBUS_START interrupt */ | ||
1085 | #define DISCHRG_VBUS_END_ENA 0x20 /* enable DISCHRG_VBUS_END interrupt */ | ||
1086 | |||
1087 | /* Bit masks for USB_CSR0 */ | ||
1088 | |||
1089 | #define RXPKTRDY 0x1 /* data packet receive indicator */ | ||
1090 | #define TXPKTRDY 0x2 /* data packet in FIFO indicator */ | ||
1091 | #define STALL_SENT 0x4 /* STALL handshake sent */ | ||
1092 | #define DATAEND 0x8 /* Data end indicator */ | ||
1093 | #define SETUPEND 0x10 /* Setup end */ | ||
1094 | #define SENDSTALL 0x20 /* Send STALL handshake */ | ||
1095 | #define SERVICED_RXPKTRDY 0x40 /* used to clear the RxPktRdy bit */ | ||
1096 | #define SERVICED_SETUPEND 0x80 /* used to clear the SetupEnd bit */ | ||
1097 | #define FLUSHFIFO 0x100 /* flush endpoint FIFO */ | ||
1098 | #define STALL_RECEIVED_H 0x4 /* STALL handshake received host mode */ | ||
1099 | #define SETUPPKT_H 0x8 /* send Setup token host mode */ | ||
1100 | #define ERROR_H 0x10 /* timeout error indicator host mode */ | ||
1101 | #define REQPKT_H 0x20 /* Request an IN transaction host mode */ | ||
1102 | #define STATUSPKT_H 0x40 /* Status stage transaction host mode */ | ||
1103 | #define NAK_TIMEOUT_H 0x80 /* EP0 halted after a NAK host mode */ | ||
1104 | |||
1105 | /* Bit masks for USB_COUNT0 */ | ||
1106 | |||
1107 | #define EP0_RX_COUNT 0x7f /* number of received bytes in EP0 FIFO */ | ||
1108 | |||
1109 | /* Bit masks for USB_NAKLIMIT0 */ | ||
1110 | |||
1111 | #define EP0_NAK_LIMIT 0x1f /* number of frames/micro frames after which EP0 timeouts */ | ||
1112 | |||
1113 | /* Bit masks for USB_TX_MAX_PACKET */ | ||
1114 | |||
1115 | #define MAX_PACKET_SIZE_T 0x7ff /* maximum data pay load in a frame */ | ||
1116 | |||
1117 | /* Bit masks for USB_RX_MAX_PACKET */ | ||
1118 | |||
1119 | #define MAX_PACKET_SIZE_R 0x7ff /* maximum data pay load in a frame */ | ||
1120 | |||
1121 | /* Bit masks for USB_TXCSR */ | ||
1122 | |||
1123 | #define TXPKTRDY_T 0x1 /* data packet in FIFO indicator */ | ||
1124 | #define FIFO_NOT_EMPTY_T 0x2 /* FIFO not empty */ | ||
1125 | #define UNDERRUN_T 0x4 /* TxPktRdy not set for an IN token */ | ||
1126 | #define FLUSHFIFO_T 0x8 /* flush endpoint FIFO */ | ||
1127 | #define STALL_SEND_T 0x10 /* issue a Stall handshake */ | ||
1128 | #define STALL_SENT_T 0x20 /* Stall handshake transmitted */ | ||
1129 | #define CLEAR_DATATOGGLE_T 0x40 /* clear endpoint data toggle */ | ||
1130 | #define INCOMPTX_T 0x80 /* indicates that a large packet is split */ | ||
1131 | #define DMAREQMODE_T 0x400 /* DMA mode (0 or 1) selection */ | ||
1132 | #define FORCE_DATATOGGLE_T 0x800 /* Force data toggle */ | ||
1133 | #define DMAREQ_ENA_T 0x1000 /* Enable DMA request for Tx EP */ | ||
1134 | #define ISO_T 0x4000 /* enable Isochronous transfers */ | ||
1135 | #define AUTOSET_T 0x8000 /* allows TxPktRdy to be set automatically */ | ||
1136 | #define ERROR_TH 0x4 /* error condition host mode */ | ||
1137 | #define STALL_RECEIVED_TH 0x20 /* Stall handshake received host mode */ | ||
1138 | #define NAK_TIMEOUT_TH 0x80 /* NAK timeout host mode */ | ||
1139 | |||
1140 | /* Bit masks for USB_TXCOUNT */ | ||
1141 | |||
1142 | #define TX_COUNT 0x1fff /* Number of bytes to be written to the selected endpoint Tx FIFO */ | ||
1143 | |||
1144 | /* Bit masks for USB_RXCSR */ | ||
1145 | |||
1146 | #define RXPKTRDY_R 0x1 /* data packet in FIFO indicator */ | ||
1147 | #define FIFO_FULL_R 0x2 /* FIFO not empty */ | ||
1148 | #define OVERRUN_R 0x4 /* TxPktRdy not set for an IN token */ | ||
1149 | #define DATAERROR_R 0x8 /* Out packet cannot be loaded into Rx FIFO */ | ||
1150 | #define FLUSHFIFO_R 0x10 /* flush endpoint FIFO */ | ||
1151 | #define STALL_SEND_R 0x20 /* issue a Stall handshake */ | ||
1152 | #define STALL_SENT_R 0x40 /* Stall handshake transmitted */ | ||
1153 | #define CLEAR_DATATOGGLE_R 0x80 /* clear endpoint data toggle */ | ||
1154 | #define INCOMPRX_R 0x100 /* indicates that a large packet is split */ | ||
1155 | #define DMAREQMODE_R 0x800 /* DMA mode (0 or 1) selection */ | ||
1156 | #define DISNYET_R 0x1000 /* disable Nyet handshakes */ | ||
1157 | #define DMAREQ_ENA_R 0x2000 /* Enable DMA request for Tx EP */ | ||
1158 | #define ISO_R 0x4000 /* enable Isochronous transfers */ | ||
1159 | #define AUTOCLEAR_R 0x8000 /* allows TxPktRdy to be set automatically */ | ||
1160 | #define ERROR_RH 0x4 /* TxPktRdy not set for an IN token host mode */ | ||
1161 | #define REQPKT_RH 0x20 /* request an IN transaction host mode */ | ||
1162 | #define STALL_RECEIVED_RH 0x40 /* Stall handshake received host mode */ | ||
1163 | #define INCOMPRX_RH 0x100 /* indicates that a large packet is split host mode */ | ||
1164 | #define DMAREQMODE_RH 0x800 /* DMA mode (0 or 1) selection host mode */ | ||
1165 | #define AUTOREQ_RH 0x4000 /* sets ReqPkt automatically host mode */ | ||
1166 | |||
1167 | /* Bit masks for USB_RXCOUNT */ | ||
1168 | |||
1169 | #define RX_COUNT 0x1fff /* Number of received bytes in the packet in the Rx FIFO */ | ||
1170 | |||
1171 | /* Bit masks for USB_TXTYPE */ | ||
1172 | |||
1173 | #define TARGET_EP_NO_T 0xf /* EP number */ | ||
1174 | #define PROTOCOL_T 0xc /* transfer type */ | ||
1175 | |||
1176 | /* Bit masks for USB_TXINTERVAL */ | ||
1177 | |||
1178 | #define TX_POLL_INTERVAL 0xff /* polling interval for selected Tx EP */ | ||
1179 | |||
1180 | /* Bit masks for USB_RXTYPE */ | ||
1181 | |||
1182 | #define TARGET_EP_NO_R 0xf /* EP number */ | ||
1183 | #define PROTOCOL_R 0xc /* transfer type */ | ||
1184 | |||
1185 | /* Bit masks for USB_RXINTERVAL */ | ||
1186 | |||
1187 | #define RX_POLL_INTERVAL 0xff /* polling interval for selected Rx EP */ | ||
1188 | |||
1189 | /* Bit masks for USB_DMA_INTERRUPT */ | ||
1190 | |||
1191 | #define DMA0_INT 0x1 /* DMA0 pending interrupt */ | ||
1192 | #define DMA1_INT 0x2 /* DMA1 pending interrupt */ | ||
1193 | #define DMA2_INT 0x4 /* DMA2 pending interrupt */ | ||
1194 | #define DMA3_INT 0x8 /* DMA3 pending interrupt */ | ||
1195 | #define DMA4_INT 0x10 /* DMA4 pending interrupt */ | ||
1196 | #define DMA5_INT 0x20 /* DMA5 pending interrupt */ | ||
1197 | #define DMA6_INT 0x40 /* DMA6 pending interrupt */ | ||
1198 | #define DMA7_INT 0x80 /* DMA7 pending interrupt */ | ||
1199 | |||
1200 | /* Bit masks for USB_DMAxCONTROL */ | ||
1201 | |||
1202 | #define DMA_ENA 0x1 /* DMA enable */ | ||
1203 | #define DIRECTION 0x2 /* direction of DMA transfer */ | ||
1204 | #define MODE 0x4 /* DMA Bus error */ | ||
1205 | #define INT_ENA 0x8 /* Interrupt enable */ | ||
1206 | #define EPNUM 0xf0 /* EP number */ | ||
1207 | #define BUSERROR 0x100 /* DMA Bus error */ | ||
1208 | |||
1209 | /* Bit masks for USB_DMAxADDRHIGH */ | ||
1210 | |||
1211 | #define DMA_ADDR_HIGH 0xffff /* Upper 16-bits of memory source/destination address for the DMA master channel */ | ||
1212 | |||
1213 | /* Bit masks for USB_DMAxADDRLOW */ | ||
1214 | |||
1215 | #define DMA_ADDR_LOW 0xffff /* Lower 16-bits of memory source/destination address for the DMA master channel */ | ||
1216 | |||
1217 | /* Bit masks for USB_DMAxCOUNTHIGH */ | ||
1218 | |||
1219 | #define DMA_COUNT_HIGH 0xffff /* Upper 16-bits of byte count of DMA transfer for DMA master channel */ | ||
1220 | |||
1221 | /* Bit masks for USB_DMAxCOUNTLOW */ | ||
1222 | |||
1223 | #define DMA_COUNT_LOW 0xffff /* Lower 16-bits of byte count of DMA transfer for DMA master channel */ | ||
1224 | |||
1225 | /* Bit masks for HMDMAx_CONTROL */ | ||
1226 | |||
1227 | #define HMDMAEN 0x1 /* Handshake MDMA Enable */ | ||
1228 | #define REP 0x2 /* Handshake MDMA Request Polarity */ | ||
1229 | #define UTE 0x8 /* Urgency Threshold Enable */ | ||
1230 | #define OIE 0x10 /* Overflow Interrupt Enable */ | ||
1231 | #define BDIE 0x20 /* Block Done Interrupt Enable */ | ||
1232 | #define MBDI 0x40 /* Mask Block Done Interrupt */ | ||
1233 | #define DRQ 0x300 /* Handshake MDMA Request Type */ | ||
1234 | #define RBC 0x1000 /* Force Reload of BCOUNT */ | ||
1235 | #define PS 0x2000 /* Pin Status */ | ||
1236 | #define OI 0x4000 /* Overflow Interrupt Generated */ | ||
1237 | #define BDI 0x8000 /* Block Done Interrupt Generated */ | ||
1238 | |||
1239 | /* ******************************************* */ | ||
1240 | /* MULTI BIT MACRO ENUMERATIONS */ | ||
1241 | /* ******************************************* */ | ||
1242 | |||
1243 | |||
1244 | #endif /* _DEF_BF548_H */ | ||
diff --git a/include/asm-blackfin/mach-bf548/defBF548.h b/include/asm-blackfin/mach-bf548/defBF548.h index e46f56891e6a..1d7c96edb038 100644 --- a/include/asm-blackfin/mach-bf548/defBF548.h +++ b/include/asm-blackfin/mach-bf548/defBF548.h | |||
@@ -1010,9 +1010,9 @@ | |||
1010 | #define DMA_READY 0x1 /* DMA Ready */ | 1010 | #define DMA_READY 0x1 /* DMA Ready */ |
1011 | #define FIFOFULL 0x2 /* FIFO Full */ | 1011 | #define FIFOFULL 0x2 /* FIFO Full */ |
1012 | #define FIFOEMPTY 0x4 /* FIFO Empty */ | 1012 | #define FIFOEMPTY 0x4 /* FIFO Empty */ |
1013 | #define COMPLETE 0x8 /* DMA Complete */ | 1013 | #define DMA_COMPLETE 0x8 /* DMA Complete */ |
1014 | #define HSHK 0x10 /* Host Handshake */ | 1014 | #define HSHK 0x10 /* Host Handshake */ |
1015 | #define TIMEOUT 0x20 /* Host Timeout */ | 1015 | #define HSTIMEOUT 0x20 /* Host Timeout */ |
1016 | #define HIRQ 0x40 /* Host Interrupt Request */ | 1016 | #define HIRQ 0x40 /* Host Interrupt Request */ |
1017 | #define ALLOW_CNFG 0x80 /* Allow New Configuration */ | 1017 | #define ALLOW_CNFG 0x80 /* Allow New Configuration */ |
1018 | #define DMA_DIR 0x100 /* DMA Direction */ | 1018 | #define DMA_DIR 0x100 /* DMA Direction */ |
diff --git a/include/asm-blackfin/mach-bf548/dma.h b/include/asm-blackfin/mach-bf548/dma.h index 4d97d3aa97cd..46ff31f20ae5 100644 --- a/include/asm-blackfin/mach-bf548/dma.h +++ b/include/asm-blackfin/mach-bf548/dma.h | |||
@@ -51,9 +51,13 @@ | |||
51 | #define CH_PIXC_OVERLAY 16 | 51 | #define CH_PIXC_OVERLAY 16 |
52 | #define CH_PIXC_OUTPUT 17 | 52 | #define CH_PIXC_OUTPUT 17 |
53 | #define CH_SPORT2_RX 18 | 53 | #define CH_SPORT2_RX 18 |
54 | #define CH_UART2_RX 18 | ||
54 | #define CH_SPORT2_TX 19 | 55 | #define CH_SPORT2_TX 19 |
56 | #define CH_UART2_TX 19 | ||
55 | #define CH_SPORT3_RX 20 | 57 | #define CH_SPORT3_RX 20 |
58 | #define CH_UART3_RX 20 | ||
56 | #define CH_SPORT3_TX 21 | 59 | #define CH_SPORT3_TX 21 |
60 | #define CH_UART3_TX 21 | ||
57 | #define CH_SDH 22 | 61 | #define CH_SDH 22 |
58 | #define CH_NFC 22 | 62 | #define CH_NFC 22 |
59 | #define CH_SPI2 23 | 63 | #define CH_SPI2 23 |
diff --git a/include/asm-blackfin/mach-bf548/irq.h b/include/asm-blackfin/mach-bf548/irq.h index c34507a3f1df..ad380d1f5872 100644 --- a/include/asm-blackfin/mach-bf548/irq.h +++ b/include/asm-blackfin/mach-bf548/irq.h | |||
@@ -99,9 +99,13 @@ Events (highest priority) EMU 0 | |||
99 | #define IRQ_UART2_ERROR BFIN_IRQ(31) /* UART2 Status (Error) Interrupt */ | 99 | #define IRQ_UART2_ERROR BFIN_IRQ(31) /* UART2 Status (Error) Interrupt */ |
100 | #define IRQ_CAN0_ERROR BFIN_IRQ(32) /* CAN0 Status (Error) Interrupt */ | 100 | #define IRQ_CAN0_ERROR BFIN_IRQ(32) /* CAN0 Status (Error) Interrupt */ |
101 | #define IRQ_SPORT2_RX BFIN_IRQ(33) /* SPORT2 RX (DMA18) Interrupt */ | 101 | #define IRQ_SPORT2_RX BFIN_IRQ(33) /* SPORT2 RX (DMA18) Interrupt */ |
102 | #define IRQ_UART2_RX BFIN_IRQ(33) /* UART2 RX (DMA18) Interrupt */ | ||
102 | #define IRQ_SPORT2_TX BFIN_IRQ(34) /* SPORT2 TX (DMA19) Interrupt */ | 103 | #define IRQ_SPORT2_TX BFIN_IRQ(34) /* SPORT2 TX (DMA19) Interrupt */ |
104 | #define IRQ_UART2_TX BFIN_IRQ(34) /* UART2 TX (DMA19) Interrupt */ | ||
103 | #define IRQ_SPORT3_RX BFIN_IRQ(35) /* SPORT3 RX (DMA20) Interrupt */ | 105 | #define IRQ_SPORT3_RX BFIN_IRQ(35) /* SPORT3 RX (DMA20) Interrupt */ |
106 | #define IRQ_UART3_RX BFIN_IRQ(35) /* UART3 RX (DMA20) Interrupt */ | ||
104 | #define IRQ_SPORT3_TX BFIN_IRQ(36) /* SPORT3 TX (DMA21) Interrupt */ | 107 | #define IRQ_SPORT3_TX BFIN_IRQ(36) /* SPORT3 TX (DMA21) Interrupt */ |
108 | #define IRQ_UART3_TX BFIN_IRQ(36) /* UART3 TX (DMA21) Interrupt */ | ||
105 | #define IRQ_EPPI1 BFIN_IRQ(37) /* EPP1 (DMA13) Interrupt */ | 109 | #define IRQ_EPPI1 BFIN_IRQ(37) /* EPP1 (DMA13) Interrupt */ |
106 | #define IRQ_EPPI2 BFIN_IRQ(38) /* EPP2 (DMA14) Interrupt */ | 110 | #define IRQ_EPPI2 BFIN_IRQ(38) /* EPP2 (DMA14) Interrupt */ |
107 | #define IRQ_SPI1 BFIN_IRQ(39) /* SPI1 (DMA5) Interrupt */ | 111 | #define IRQ_SPI1 BFIN_IRQ(39) /* SPI1 (DMA5) Interrupt */ |
@@ -421,9 +425,13 @@ Events (highest priority) EMU 0 | |||
421 | /* IAR4 BIT FILEDS */ | 425 | /* IAR4 BIT FILEDS */ |
422 | #define IRQ_CAN0_ERR_POS 0 | 426 | #define IRQ_CAN0_ERR_POS 0 |
423 | #define IRQ_SPORT2_RX_POS 4 | 427 | #define IRQ_SPORT2_RX_POS 4 |
428 | #define IRQ_UART2_RX_POS 4 | ||
424 | #define IRQ_SPORT2_TX_POS 8 | 429 | #define IRQ_SPORT2_TX_POS 8 |
430 | #define IRQ_UART2_TX_POS 8 | ||
425 | #define IRQ_SPORT3_RX_POS 12 | 431 | #define IRQ_SPORT3_RX_POS 12 |
432 | #define IRQ_UART3_RX_POS 12 | ||
426 | #define IRQ_SPORT3_TX_POS 16 | 433 | #define IRQ_SPORT3_TX_POS 16 |
434 | #define IRQ_UART3_TX_POS 16 | ||
427 | #define IRQ_EPPI1_POS 20 | 435 | #define IRQ_EPPI1_POS 20 |
428 | #define IRQ_EPPI2_POS 24 | 436 | #define IRQ_EPPI2_POS 24 |
429 | #define IRQ_SPI1_POS 28 | 437 | #define IRQ_SPI1_POS 28 |
diff --git a/include/asm-blackfin/mach-bf561/blackfin.h b/include/asm-blackfin/mach-bf561/blackfin.h index 562aee39895c..362617f93845 100644 --- a/include/asm-blackfin/mach-bf561/blackfin.h +++ b/include/asm-blackfin/mach-bf561/blackfin.h | |||
@@ -49,4 +49,24 @@ | |||
49 | #define bfin_read_FIO_INEN() bfin_read_FIO0_INEN() | 49 | #define bfin_read_FIO_INEN() bfin_read_FIO0_INEN() |
50 | #define bfin_write_FIO_INEN(val) bfin_write_FIO0_INEN(val) | 50 | #define bfin_write_FIO_INEN(val) bfin_write_FIO0_INEN(val) |
51 | 51 | ||
52 | |||
53 | #define SIC_IAR0 SICA_IAR0 | ||
54 | #define bfin_write_SIC_IMASK0 bfin_write_SICA_IMASK0 | ||
55 | #define bfin_write_SIC_IMASK1 bfin_write_SICA_IMASK1 | ||
56 | #define bfin_write_SIC_IWR0 bfin_write_SICA_IWR0 | ||
57 | #define bfin_write_SIC_IWR1 bfin_write_SICA_IWR1 | ||
58 | |||
59 | #define bfin_read_SIC_IMASK0 bfin_read_SICA_IMASK0 | ||
60 | #define bfin_read_SIC_IMASK1 bfin_read_SICA_IMASK1 | ||
61 | #define bfin_read_SIC_IWR0 bfin_read_SICA_IWR0 | ||
62 | #define bfin_read_SIC_IWR1 bfin_read_SICA_IWR1 | ||
63 | #define bfin_read_SIC_ISR0 bfin_read_SICA_ISR0 | ||
64 | #define bfin_read_SIC_ISR1 bfin_read_SICA_ISR1 | ||
65 | |||
66 | #define bfin_read_SIC_IMASK(x) bfin_read32(SICA_IMASK0 + (x << 2)) | ||
67 | #define bfin_write_SIC_IMASK(x, val) bfin_write32((SICA_IMASK0 + (x << 2)), val) | ||
68 | #define bfin_read_SIC_ISR(x) bfin_read32(SICA_ISR0 + (x << 2)) | ||
69 | #define bfin_write_SIC_ISR(x, val) bfin_write32((SICA_ISR0 + (x << 2)), val) | ||
70 | |||
71 | |||
52 | #endif /* _MACH_BLACKFIN_H_ */ | 72 | #endif /* _MACH_BLACKFIN_H_ */ |
diff --git a/include/asm-blackfin/termios.h b/include/asm-blackfin/termios.h index e31fe859650b..d50d063c605a 100644 --- a/include/asm-blackfin/termios.h +++ b/include/asm-blackfin/termios.h | |||
@@ -39,24 +39,6 @@ struct termio { | |||
39 | 39 | ||
40 | /* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */ | 40 | /* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */ |
41 | 41 | ||
42 | /* line disciplines */ | ||
43 | #define N_TTY 0 | ||
44 | #define N_SLIP 1 | ||
45 | #define N_MOUSE 2 | ||
46 | #define N_PPP 3 | ||
47 | #define N_STRIP 4 | ||
48 | #define N_AX25 5 | ||
49 | #define N_X25 6 /* X.25 async */ | ||
50 | #define N_6PACK 7 | ||
51 | #define N_MASC 8 /* Reserved for Mobitex module <kaz@cafe.net> */ | ||
52 | #define N_R3964 9 /* Reserved for Simatic R3964 module */ | ||
53 | #define N_PROFIBUS_FDL 10 /* Reserved for Profibus <Dave@mvhi.com> */ | ||
54 | #define N_IRDA 11 /* Linux IR - http://irda.sourceforge.net/ */ | ||
55 | #define N_SMSBLOCK 12 /* SMS block mode - for talking to GSM data cards about SMS messages */ | ||
56 | #define N_HDLC 13 /* synchronous HDLC */ | ||
57 | #define N_SYNC_PPP 14 /* synchronous PPP */ | ||
58 | #define N_HCI 15 /* Bluetooth HCI UART */ | ||
59 | |||
60 | #ifdef __KERNEL__ | 42 | #ifdef __KERNEL__ |
61 | 43 | ||
62 | /* intr=^C quit=^\ erase=del kill=^U | 44 | /* intr=^C quit=^\ erase=del kill=^U |
diff --git a/include/asm-blackfin/trace.h b/include/asm-blackfin/trace.h index 6313aace9d59..ef18afbc2101 100644 --- a/include/asm-blackfin/trace.h +++ b/include/asm-blackfin/trace.h | |||
@@ -46,42 +46,47 @@ extern unsigned long software_trace_buff[]; | |||
46 | 46 | ||
47 | #ifdef CONFIG_DEBUG_BFIN_HWTRACE_ON | 47 | #ifdef CONFIG_DEBUG_BFIN_HWTRACE_ON |
48 | 48 | ||
49 | #define TRACE_BUFFER_START(preg, dreg) trace_buffer_start(preg, dreg) | ||
50 | #define TRACE_BUFFER_STOP(preg, dreg) trace_buffer_stop(preg, dreg) | ||
51 | |||
52 | #define trace_buffer_stop(preg, dreg) \ | 49 | #define trace_buffer_stop(preg, dreg) \ |
53 | preg.L = LO(TBUFCTL); \ | 50 | preg.L = LO(TBUFCTL); \ |
54 | preg.H = HI(TBUFCTL); \ | 51 | preg.H = HI(TBUFCTL); \ |
55 | dreg = 0x1; \ | 52 | dreg = 0x1; \ |
56 | [preg] = dreg; | 53 | [preg] = dreg; |
57 | 54 | ||
58 | #define trace_buffer_start(preg, dreg) \ | ||
59 | preg.L = LO(TBUFCTL); \ | ||
60 | preg.H = HI(TBUFCTL); \ | ||
61 | dreg = BFIN_TRACE_ON; \ | ||
62 | [preg] = dreg; | ||
63 | |||
64 | #define trace_buffer_init(preg, dreg) \ | 55 | #define trace_buffer_init(preg, dreg) \ |
65 | preg.L = LO(TBUFCTL); \ | 56 | preg.L = LO(TBUFCTL); \ |
66 | preg.H = HI(TBUFCTL); \ | 57 | preg.H = HI(TBUFCTL); \ |
67 | dreg = BFIN_TRACE_INIT; \ | 58 | dreg = BFIN_TRACE_INIT; \ |
68 | [preg] = dreg; | 59 | [preg] = dreg; |
69 | 60 | ||
61 | #define trace_buffer_save(preg, dreg) \ | ||
62 | preg.L = LO(TBUFCTL); \ | ||
63 | preg.H = HI(TBUFCTL); \ | ||
64 | dreg = [preg]; \ | ||
65 | [sp++] = dreg; \ | ||
66 | dreg = 0x1; \ | ||
67 | [preg] = dreg; | ||
68 | |||
69 | #define trace_buffer_restore(preg, dreg) \ | ||
70 | preg.L = LO(TBUFCTL); \ | ||
71 | preg.H = HI(TBUFCTL); \ | ||
72 | dreg = [sp--]; \ | ||
73 | [preg] = dreg; | ||
74 | |||
70 | #else /* CONFIG_DEBUG_BFIN_HWTRACE_ON */ | 75 | #else /* CONFIG_DEBUG_BFIN_HWTRACE_ON */ |
71 | 76 | ||
72 | #define trace_buffer_stop(preg, dreg) | 77 | #define trace_buffer_stop(preg, dreg) |
73 | #define trace_buffer_start(preg, dreg) | ||
74 | #define trace_buffer_init(preg, dreg) | 78 | #define trace_buffer_init(preg, dreg) |
79 | #define trace_buffer_save(preg, dreg) | ||
80 | #define trace_buffer_restore(preg, dreg) | ||
75 | 81 | ||
76 | #endif /* CONFIG_DEBUG_BFIN_HWTRACE_ON */ | 82 | #endif /* CONFIG_DEBUG_BFIN_HWTRACE_ON */ |
77 | 83 | ||
78 | #ifdef CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE | 84 | #ifdef CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE |
79 | # define DEBUG_START_HWTRACE(preg, dreg) trace_buffer_start(preg, dreg) | 85 | # define DEBUG_HWTRACE_SAVE(preg, dreg) trace_buffer_save(preg, dreg) |
80 | # define DEBUG_STOP_HWTRACE(preg, dreg) trace_buffer_stop(preg, dreg) | 86 | # define DEBUG_HWTRACE_RESTORE(preg, dreg) trace_buffer_restore(preg, dreg) |
81 | |||
82 | #else | 87 | #else |
83 | # define DEBUG_START_HWTRACE(preg, dreg) | 88 | # define DEBUG_HWTRACE_SAVE(preg, dreg) |
84 | # define DEBUG_STOP_HWTRACE(preg, dreg) | 89 | # define DEBUG_HWTRACE_RESTORE(preg, dreg) |
85 | #endif | 90 | #endif |
86 | 91 | ||
87 | #endif /* __ASSEMBLY__ */ | 92 | #endif /* __ASSEMBLY__ */ |