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
...

+3187 -868
+28 -19
arch/blackfin/Kconfig
··· 544 544 default y 545 545 help 546 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 548 (less latency) 549 549 550 550 config DO_IRQ_L1 ··· 904 904 depends on !SMP 905 905 906 906 choice 907 - prompt "Select PM Wakeup Event Source" 908 - default PM_WAKEUP_GPIO_BY_SIC_IWR 907 + prompt "Default Power Saving Mode" 909 908 depends on PM 909 + default PM_BFIN_SLEEP_DEEPER 910 + config PM_BFIN_SLEEP_DEEPER 911 + bool "Sleep Deeper" 910 912 help 911 - If you have a GPIO already configured as input with the corresponding PORTx_MASK 912 - bit set - "Specify Wakeup Event by SIC_IWR value" 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. 913 925 914 - config PM_WAKEUP_GPIO_BY_SIC_IWR 915 - bool "Specify Wakeup Event by SIC_IWR value" 916 - config PM_WAKEUP_BY_GPIO 917 - bool "Cause Wakeup Event by GPIO" 918 - config PM_WAKEUP_GPIO_API 919 - bool "Configure Wakeup Event by PM GPIO API" 920 - 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. 921 935 endchoice 922 936 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) 937 + config PM_WAKEUP_BY_GPIO 938 + bool "Cause Wakeup Event by GPIO" 930 939 931 940 config PM_WAKEUP_GPIO_NUMBER 932 941 int "Wakeup GPIO number"
+1 -1
arch/blackfin/Kconfig.debug
··· 164 164 config CPLB_INFO 165 165 bool "Display the CPLB information" 166 166 help 167 - Display the CPLB information. 167 + Display the CPLB information via /proc/cplbinfo. 168 168 169 169 config ACCESS_CHECK 170 170 bool "Check the user pointer address"
+1
arch/blackfin/Makefile
··· 119 119 $(Q)$(MAKE) $(clean)=$(boot) 120 120 121 121 122 + INSTALL_PATH ?= /tftpboot 122 123 boot := arch/$(ARCH)/boot 123 124 BOOT_TARGETS = vmImage 124 125 PHONY += $(BOOT_TARGETS) install
+10 -6
arch/blackfin/configs/BF533-STAMP_defconfig
··· 216 216 CONFIG_MEM_ADD_WIDTH=11 217 217 CONFIG_ENET_FLASH_PIN=0 218 218 CONFIG_BOOT_LOAD=0x1000 219 - 220 - 221 219 CONFIG_BFIN_SCRATCH_REG_RETN=y 222 220 # CONFIG_BFIN_SCRATCH_REG_RETE is not set 223 221 # CONFIG_BFIN_SCRATCH_REG_CYCLES is not set ··· 481 483 # CONFIG_MTD_CONCAT is not set 482 484 CONFIG_MTD_PARTITIONS=y 483 485 # CONFIG_MTD_REDBOOT_PARTS is not set 484 - # CONFIG_MTD_CMDLINE_PARTS is not set 486 + CONFIG_MTD_CMDLINE_PARTS=y 485 487 486 488 # 487 489 # User Modules And Translation Layers ··· 498 500 # 499 501 # RAM/ROM/Flash chip drivers 500 502 # 501 - # CONFIG_MTD_CFI is not set 502 - CONFIG_MTD_JEDECPROBE=m 503 + CONFIG_MTD_CFI=m 504 + # CONFIG_MTD_JEDECPROBE is not set 503 505 CONFIG_MTD_GEN_PROBE=m 504 506 # CONFIG_MTD_CFI_ADV_OPTIONS is not set 505 507 CONFIG_MTD_MAP_BANK_WIDTH_1=y ··· 513 515 # CONFIG_MTD_CFI_I4 is not set 514 516 # CONFIG_MTD_CFI_I8 is not set 515 517 # CONFIG_MTD_CFI_INTELEXT is not set 516 - # CONFIG_MTD_CFI_AMDSTD is not set 518 + CONFIG_MTD_CFI_AMDSTD=m 517 519 # CONFIG_MTD_CFI_STAA is not set 520 + CONFIG_MTD_CFI_UTIL=m 518 521 CONFIG_MTD_RAM=y 519 522 CONFIG_MTD_ROM=m 520 523 # CONFIG_MTD_ABSENT is not set ··· 525 526 # 526 527 CONFIG_MTD_COMPLEX_MAPPINGS=y 527 528 # CONFIG_MTD_PHYSMAP is not set 529 + CONFIG_MTD_BF5xx=m 530 + CONFIG_BFIN_FLASH_BANK_0=0x7BB0 531 + CONFIG_BFIN_FLASH_BANK_1=0x7BB0 532 + CONFIG_BFIN_FLASH_BANK_2=0x7BB0 533 + CONFIG_BFIN_FLASH_BANK_3=0x7BB0 528 534 # CONFIG_MTD_UCLINUX is not set 529 535 # CONFIG_MTD_PLATRAM is not set 530 536
+10
arch/blackfin/kernel/bfin_dma_5xx.c
··· 104 104 105 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 117 dma_ch[channel].device_id = device_id; 108 118 dma_ch[channel].irq_callback = NULL; 109 119
+8 -12
arch/blackfin/kernel/bfin_gpio.c
··· 186 186 char name[RESOURCE_LABEL_SIZE]; 187 187 } str_ident[MAX_RESOURCES]; 188 188 189 - #ifdef CONFIG_PM 189 + #if defined(CONFIG_PM) && !defined(CONFIG_BF54x) 190 190 static unsigned short wakeup_map[gpio_bank(MAX_BLACKFIN_GPIOS)]; 191 191 static unsigned char wakeup_flags_map[MAX_BLACKFIN_GPIOS]; 192 192 static struct gpio_port_s gpio_bank_saved[gpio_bank(MAX_BLACKFIN_GPIOS)]; ··· 696 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 701 u16 bank, mask, i, gpio; 703 702 704 703 for (i = 0; i < MAX_BLACKFIN_GPIOS; i += GPIO_BANKSIZE) { ··· 722 723 gpio = i; 723 724 724 725 while (mask) { 725 - if (mask & 1) { 726 + if ((mask & 1) && (wakeup_flags_map[gpio] != 727 + PM_WAKE_IGNORE)) { 726 728 reserved_gpio_map[gpio_bank(gpio)] |= 727 729 gpio_bit(gpio); 728 730 bfin_gpio_wakeup_type(gpio, ··· 734 734 mask >>= 1; 735 735 } 736 736 737 - sic_iwr |= 1 << 738 - (sic_iwr_irqs[bank] - (IRQ_CORETMR + 1)); 737 + bfin_internal_set_wake(sic_iwr_irqs[bank], 1); 739 738 gpio_bankb[bank]->maskb_set = wakeup_map[gpio_bank(i)]; 740 739 } 741 740 } 742 741 743 742 AWA_DUMMY_READ(maskb_set); 744 743 745 - if (sic_iwr) 746 - return sic_iwr; 747 - else 748 - return IWR_ENABLE_ALL; 744 + return 0; 749 745 } 750 746 751 - void gpio_pm_restore(void) 747 + void bfin_pm_restore(void) 752 748 { 753 749 u16 bank, mask, i; 754 750 ··· 764 768 765 769 reserved_gpio_map[bank] = 766 770 gpio_bank_saved[bank].reserved; 767 - 771 + bfin_internal_set_wake(sic_iwr_irqs[bank], 0); 768 772 } 769 773 770 774 gpio_bankb[bank]->maskb = gpio_bank_saved[bank].maskb;
+4
arch/blackfin/kernel/cplb-mpu/cplbinit.c
··· 26 26 #include <asm/cplb.h> 27 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 33 struct cplb_entry icplb_tbl[MAX_CPLBS]; 30 34 struct cplb_entry dcplb_tbl[MAX_CPLBS]; 31 35
+1 -1
arch/blackfin/kernel/init_task.c
··· 57 57 * "init_task" linker map entry. 58 58 */ 59 59 union thread_union init_thread_union 60 - __attribute__ ((__section__(".data.init_task"))) = { 60 + __attribute__ ((__section__(".init_task.data"))) = { 61 61 INIT_THREAD_INFO(init_task)};
+440 -143
arch/blackfin/kernel/setup.c
··· 1 1 /* 2 - * File: arch/blackfin/kernel/setup.c 3 - * Based on: 4 - * Author: 2 + * arch/blackfin/kernel/setup.c 5 3 * 6 - * Created: 7 - * Description: 4 + * Copyright 2004-2006 Analog Devices Inc. 8 5 * 9 - * Modified: 10 - * Copyright 2004-2006 Analog Devices Inc. 6 + * Enter bugs at http://blackfin.uclinux.org/ 11 7 * 12 - * Bugs: Enter bugs at http://blackfin.uclinux.org/ 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 8 + * Licensed under the GPL-2 or later. 28 9 */ 29 10 30 11 #include <linux/delay.h> ··· 15 34 #include <linux/cpu.h> 16 35 #include <linux/module.h> 17 36 #include <linux/tty.h> 37 + #include <linux/pfn.h> 18 38 19 39 #include <linux/ext2_fs.h> 20 40 #include <linux/cramfs_fs.h> ··· 28 46 #include <asm/div64.h> 29 47 #include <asm/fixed_code.h> 30 48 #include <asm/early_printk.h> 49 + 50 + static DEFINE_PER_CPU(struct cpu, cpu_devices); 31 51 32 52 u16 _bfin_swrst; 33 53 ··· 50 66 #endif 51 67 52 68 char __initdata command_line[COMMAND_LINE_SIZE]; 69 + 70 + /* boot memmap, for parsing "memmap=" */ 71 + #define BFIN_MEMMAP_MAX 128 /* number of entries in bfin_memmap */ 72 + #define BFIN_MEMMAP_RAM 1 73 + #define BFIN_MEMMAP_RESERVED 2 74 + struct bfin_memmap { 75 + int nr_map; 76 + struct bfin_memmap_entry { 77 + unsigned long long addr; /* start of memory segment */ 78 + unsigned long long size; 79 + unsigned long type; 80 + } map[BFIN_MEMMAP_MAX]; 81 + } bfin_memmap __initdata; 82 + 83 + /* for memmap sanitization */ 84 + struct change_member { 85 + struct bfin_memmap_entry *pentry; /* pointer to original entry */ 86 + unsigned long long addr; /* address for this change point */ 87 + }; 88 + static struct change_member change_point_list[2*BFIN_MEMMAP_MAX] __initdata; 89 + static struct change_member *change_point[2*BFIN_MEMMAP_MAX] __initdata; 90 + static struct bfin_memmap_entry *overlap_list[BFIN_MEMMAP_MAX] __initdata; 91 + static struct bfin_memmap_entry new_map[BFIN_MEMMAP_MAX] __initdata; 53 92 54 93 void __init bf53x_cache_init(void) 55 94 { ··· 130 123 131 124 } 132 125 126 + /* add_memory_region to memmap */ 127 + static void __init add_memory_region(unsigned long long start, 128 + unsigned long long size, int type) 129 + { 130 + int i; 131 + 132 + i = bfin_memmap.nr_map; 133 + 134 + if (i == BFIN_MEMMAP_MAX) { 135 + printk(KERN_ERR "Ooops! Too many entries in the memory map!\n"); 136 + return; 137 + } 138 + 139 + bfin_memmap.map[i].addr = start; 140 + bfin_memmap.map[i].size = size; 141 + bfin_memmap.map[i].type = type; 142 + bfin_memmap.nr_map++; 143 + } 144 + 145 + /* 146 + * Sanitize the boot memmap, removing overlaps. 147 + */ 148 + static int __init sanitize_memmap(struct bfin_memmap_entry *map, int *pnr_map) 149 + { 150 + struct change_member *change_tmp; 151 + unsigned long current_type, last_type; 152 + unsigned long long last_addr; 153 + int chgidx, still_changing; 154 + int overlap_entries; 155 + int new_entry; 156 + int old_nr, new_nr, chg_nr; 157 + int i; 158 + 159 + /* 160 + Visually we're performing the following (1,2,3,4 = memory types) 161 + 162 + Sample memory map (w/overlaps): 163 + ____22__________________ 164 + ______________________4_ 165 + ____1111________________ 166 + _44_____________________ 167 + 11111111________________ 168 + ____________________33__ 169 + ___________44___________ 170 + __________33333_________ 171 + ______________22________ 172 + ___________________2222_ 173 + _________111111111______ 174 + _____________________11_ 175 + _________________4______ 176 + 177 + Sanitized equivalent (no overlap): 178 + 1_______________________ 179 + _44_____________________ 180 + ___1____________________ 181 + ____22__________________ 182 + ______11________________ 183 + _________1______________ 184 + __________3_____________ 185 + ___________44___________ 186 + _____________33_________ 187 + _______________2________ 188 + ________________1_______ 189 + _________________4______ 190 + ___________________2____ 191 + ____________________33__ 192 + ______________________4_ 193 + */ 194 + /* if there's only one memory region, don't bother */ 195 + if (*pnr_map < 2) 196 + return -1; 197 + 198 + old_nr = *pnr_map; 199 + 200 + /* bail out if we find any unreasonable addresses in memmap */ 201 + for (i = 0; i < old_nr; i++) 202 + if (map[i].addr + map[i].size < map[i].addr) 203 + return -1; 204 + 205 + /* create pointers for initial change-point information (for sorting) */ 206 + for (i = 0; i < 2*old_nr; i++) 207 + change_point[i] = &change_point_list[i]; 208 + 209 + /* record all known change-points (starting and ending addresses), 210 + omitting those that are for empty memory regions */ 211 + chgidx = 0; 212 + for (i = 0; i < old_nr; i++) { 213 + if (map[i].size != 0) { 214 + change_point[chgidx]->addr = map[i].addr; 215 + change_point[chgidx++]->pentry = &map[i]; 216 + change_point[chgidx]->addr = map[i].addr + map[i].size; 217 + change_point[chgidx++]->pentry = &map[i]; 218 + } 219 + } 220 + chg_nr = chgidx; /* true number of change-points */ 221 + 222 + /* sort change-point list by memory addresses (low -> high) */ 223 + still_changing = 1; 224 + while (still_changing) { 225 + still_changing = 0; 226 + for (i = 1; i < chg_nr; i++) { 227 + /* if <current_addr> > <last_addr>, swap */ 228 + /* or, if current=<start_addr> & last=<end_addr>, swap */ 229 + if ((change_point[i]->addr < change_point[i-1]->addr) || 230 + ((change_point[i]->addr == change_point[i-1]->addr) && 231 + (change_point[i]->addr == change_point[i]->pentry->addr) && 232 + (change_point[i-1]->addr != change_point[i-1]->pentry->addr)) 233 + ) { 234 + change_tmp = change_point[i]; 235 + change_point[i] = change_point[i-1]; 236 + change_point[i-1] = change_tmp; 237 + still_changing = 1; 238 + } 239 + } 240 + } 241 + 242 + /* create a new memmap, removing overlaps */ 243 + overlap_entries = 0; /* number of entries in the overlap table */ 244 + new_entry = 0; /* index for creating new memmap entries */ 245 + last_type = 0; /* start with undefined memory type */ 246 + last_addr = 0; /* start with 0 as last starting address */ 247 + /* loop through change-points, determining affect on the new memmap */ 248 + for (chgidx = 0; chgidx < chg_nr; chgidx++) { 249 + /* keep track of all overlapping memmap entries */ 250 + if (change_point[chgidx]->addr == change_point[chgidx]->pentry->addr) { 251 + /* add map entry to overlap list (> 1 entry implies an overlap) */ 252 + overlap_list[overlap_entries++] = change_point[chgidx]->pentry; 253 + } else { 254 + /* remove entry from list (order independent, so swap with last) */ 255 + for (i = 0; i < overlap_entries; i++) { 256 + if (overlap_list[i] == change_point[chgidx]->pentry) 257 + overlap_list[i] = overlap_list[overlap_entries-1]; 258 + } 259 + overlap_entries--; 260 + } 261 + /* if there are overlapping entries, decide which "type" to use */ 262 + /* (larger value takes precedence -- 1=usable, 2,3,4,4+=unusable) */ 263 + current_type = 0; 264 + for (i = 0; i < overlap_entries; i++) 265 + if (overlap_list[i]->type > current_type) 266 + current_type = overlap_list[i]->type; 267 + /* continue building up new memmap based on this information */ 268 + if (current_type != last_type) { 269 + if (last_type != 0) { 270 + new_map[new_entry].size = 271 + change_point[chgidx]->addr - last_addr; 272 + /* move forward only if the new size was non-zero */ 273 + if (new_map[new_entry].size != 0) 274 + if (++new_entry >= BFIN_MEMMAP_MAX) 275 + break; /* no more space left for new entries */ 276 + } 277 + if (current_type != 0) { 278 + new_map[new_entry].addr = change_point[chgidx]->addr; 279 + new_map[new_entry].type = current_type; 280 + last_addr = change_point[chgidx]->addr; 281 + } 282 + last_type = current_type; 283 + } 284 + } 285 + new_nr = new_entry; /* retain count for new entries */ 286 + 287 + /* copy new mapping into original location */ 288 + memcpy(map, new_map, new_nr*sizeof(struct bfin_memmap_entry)); 289 + *pnr_map = new_nr; 290 + 291 + return 0; 292 + } 293 + 294 + static void __init print_memory_map(char *who) 295 + { 296 + int i; 297 + 298 + for (i = 0; i < bfin_memmap.nr_map; i++) { 299 + printk(KERN_DEBUG " %s: %016Lx - %016Lx ", who, 300 + bfin_memmap.map[i].addr, 301 + bfin_memmap.map[i].addr + bfin_memmap.map[i].size); 302 + switch (bfin_memmap.map[i].type) { 303 + case BFIN_MEMMAP_RAM: 304 + printk("(usable)\n"); 305 + break; 306 + case BFIN_MEMMAP_RESERVED: 307 + printk("(reserved)\n"); 308 + break; 309 + default: printk("type %lu\n", bfin_memmap.map[i].type); 310 + break; 311 + } 312 + } 313 + } 314 + 315 + static __init int parse_memmap(char *arg) 316 + { 317 + unsigned long long start_at, mem_size; 318 + 319 + if (!arg) 320 + return -EINVAL; 321 + 322 + mem_size = memparse(arg, &arg); 323 + if (*arg == '@') { 324 + start_at = memparse(arg+1, &arg); 325 + add_memory_region(start_at, mem_size, BFIN_MEMMAP_RAM); 326 + } else if (*arg == '$') { 327 + start_at = memparse(arg+1, &arg); 328 + add_memory_region(start_at, mem_size, BFIN_MEMMAP_RESERVED); 329 + } 330 + 331 + return 0; 332 + } 333 + 133 334 /* 134 335 * Initial parsing of the command line. Currently, we support: 135 336 * - Controlling the linux memory size: mem=xxx[KMG] 136 337 * - Controlling the physical memory size: max_mem=xxx[KMG][$][#] 137 338 * $ -> reserved memory is dcacheable 138 339 * # -> reserved memory is icacheable 340 + * - "memmap=XXX[KkmM][@][$]XXX[KkmM]" defines a memory region 341 + * @ from <start> to <start>+<mem>, type RAM 342 + * $ from <start> to <start>+<mem>, type RESERVED 343 + * 139 344 */ 140 345 static __init void parse_cmdline_early(char *cmdline_p) 141 346 { ··· 355 136 unsigned int memsize; 356 137 for (;;) { 357 138 if (c == ' ') { 358 - 359 139 if (!memcmp(to, "mem=", 4)) { 360 140 to += 4; 361 141 memsize = memparse(to, &to); ··· 380 162 } else if (!memcmp(to, "earlyprintk=", 12)) { 381 163 to += 12; 382 164 setup_early_printk(to); 165 + } else if (!memcmp(to, "memmap=", 7)) { 166 + to += 7; 167 + parse_memmap(to); 383 168 } 384 169 } 385 170 c = *(to++); ··· 391 170 } 392 171 } 393 172 394 - void __init setup_arch(char **cmdline_p) 173 + /* 174 + * Setup memory defaults from user config. 175 + * The physical memory layout looks like: 176 + * 177 + * [_rambase, _ramstart]: kernel image 178 + * [memory_start, memory_end]: dynamic memory managed by kernel 179 + * [memory_end, _ramend]: reserved memory 180 + * [meory_mtd_start(memory_end), 181 + * memory_mtd_start + mtd_size]: rootfs (if any) 182 + * [_ramend - DMA_UNCACHED_REGION, 183 + * _ramend]: uncached DMA region 184 + * [_ramend, physical_mem_end]: memory not managed by kernel 185 + * 186 + */ 187 + static __init void memory_setup(void) 395 188 { 396 - int bootmap_size; 397 - unsigned long l1_length, sclk, cclk; 398 189 #ifdef CONFIG_MTD_UCLINUX 399 190 unsigned long mtd_phys = 0; 400 191 #endif 401 192 402 - #ifdef CONFIG_DUMMY_CONSOLE 403 - conswitchp = &dummy_con; 404 - #endif 193 + _rambase = (unsigned long)_stext; 194 + _ramstart = (unsigned long)_end; 405 195 406 - #if defined(CONFIG_CMDLINE_BOOL) 407 - strncpy(&command_line[0], CONFIG_CMDLINE, sizeof(command_line)); 408 - command_line[sizeof(command_line) - 1] = 0; 409 - #endif 410 - 411 - /* Keep a copy of command line */ 412 - *cmdline_p = &command_line[0]; 413 - memcpy(boot_command_line, command_line, COMMAND_LINE_SIZE); 414 - boot_command_line[COMMAND_LINE_SIZE - 1] = '\0'; 415 - 416 - /* setup memory defaults from the user config */ 417 - physical_mem_end = 0; 418 - _ramend = CONFIG_MEM_SIZE * 1024 * 1024; 419 - 420 - parse_cmdline_early(&command_line[0]); 421 - 422 - cclk = get_cclk(); 423 - sclk = get_sclk(); 424 - 425 - #if !defined(CONFIG_BFIN_KERNEL_CLOCK) 426 - if (ANOMALY_05000273 && cclk == sclk) 427 - panic("ANOMALY 05000273, SCLK can not be same as CCLK"); 428 - #endif 429 - 430 - #ifdef BF561_FAMILY 431 - if (ANOMALY_05000266) { 432 - bfin_read_IMDMA_D0_IRQ_STATUS(); 433 - bfin_read_IMDMA_D1_IRQ_STATUS(); 196 + if (DMA_UNCACHED_REGION > (_ramend - _ramstart)) { 197 + console_init(); 198 + panic("DMA region exceeds memory limit: %lu.\n", 199 + _ramend - _ramstart); 434 200 } 435 - #endif 436 - 437 - printk(KERN_INFO "Hardware Trace "); 438 - if (bfin_read_TBUFCTL() & 0x1 ) 439 - printk("Active "); 440 - else 441 - printk("Off "); 442 - if (bfin_read_TBUFCTL() & 0x2) 443 - printk("and Enabled\n"); 444 - else 445 - printk("and Disabled\n"); 446 - 447 - 448 - #if defined(CONFIG_CHR_DEV_FLASH) || defined(CONFIG_BLK_DEV_FLASH) 449 - /* we need to initialize the Flashrom device here since we might 450 - * do things with flash early on in the boot 451 - */ 452 - flash_probe(); 453 - #endif 454 - 455 - if (physical_mem_end == 0) 456 - physical_mem_end = _ramend; 457 - 458 - /* by now the stack is part of the init task */ 459 201 memory_end = _ramend - DMA_UNCACHED_REGION; 460 202 461 - _ramstart = (unsigned long)__bss_stop; 462 - _rambase = (unsigned long)_stext; 463 203 #ifdef CONFIG_MPU 464 204 /* Round up to multiple of 4MB. */ 465 205 memory_start = (_ramstart + 0x3fffff) & ~0x3fffff; ··· 474 292 } 475 293 476 294 /* Relocate MTD image to the top of memory after the uncached memory area */ 477 - dma_memcpy((char *)memory_end, __bss_stop, mtd_size); 295 + dma_memcpy((char *)memory_end, _end, mtd_size); 478 296 479 297 memory_mtd_start = memory_end; 480 298 _ebss = memory_mtd_start; /* define _ebss for compatible */ ··· 501 319 #endif 502 320 503 321 #if !defined(CONFIG_MTD_UCLINUX) 504 - memory_end -= SIZE_4K; /*In case there is no valid CPLB behind memory_end make sure we don't get to close*/ 322 + /*In case there is no valid CPLB behind memory_end make sure we don't get to close*/ 323 + memory_end -= SIZE_4K; 505 324 #endif 325 + 506 326 init_mm.start_code = (unsigned long)_stext; 507 327 init_mm.end_code = (unsigned long)_etext; 508 328 init_mm.end_data = (unsigned long)_edata; 509 329 init_mm.brk = (unsigned long)0; 330 + 331 + printk(KERN_INFO "Board Memory: %ldMB\n", physical_mem_end >> 20); 332 + printk(KERN_INFO "Kernel Managed Memory: %ldMB\n", _ramend >> 20); 333 + 334 + printk(KERN_INFO "Memory map:\n" 335 + KERN_INFO " text = 0x%p-0x%p\n" 336 + KERN_INFO " rodata = 0x%p-0x%p\n" 337 + KERN_INFO " bss = 0x%p-0x%p\n" 338 + KERN_INFO " data = 0x%p-0x%p\n" 339 + KERN_INFO " stack = 0x%p-0x%p\n" 340 + KERN_INFO " init = 0x%p-0x%p\n" 341 + KERN_INFO " available = 0x%p-0x%p\n" 342 + #ifdef CONFIG_MTD_UCLINUX 343 + KERN_INFO " rootfs = 0x%p-0x%p\n" 344 + #endif 345 + #if DMA_UNCACHED_REGION > 0 346 + KERN_INFO " DMA Zone = 0x%p-0x%p\n" 347 + #endif 348 + , _stext, _etext, 349 + __start_rodata, __end_rodata, 350 + __bss_start, __bss_stop, 351 + _sdata, _edata, 352 + (void *)&init_thread_union, 353 + (void *)((int)(&init_thread_union) + 0x2000), 354 + __init_begin, __init_end, 355 + (void *)_ramstart, (void *)memory_end 356 + #ifdef CONFIG_MTD_UCLINUX 357 + , (void *)memory_mtd_start, (void *)(memory_mtd_start + mtd_size) 358 + #endif 359 + #if DMA_UNCACHED_REGION > 0 360 + , (void *)(_ramend - DMA_UNCACHED_REGION), (void *)(_ramend) 361 + #endif 362 + ); 363 + } 364 + 365 + static __init void setup_bootmem_allocator(void) 366 + { 367 + int bootmap_size; 368 + int i; 369 + unsigned long min_pfn, max_pfn; 370 + unsigned long curr_pfn, last_pfn, size; 371 + 372 + /* mark memory between memory_start and memory_end usable */ 373 + add_memory_region(memory_start, 374 + memory_end - memory_start, BFIN_MEMMAP_RAM); 375 + /* sanity check for overlap */ 376 + sanitize_memmap(bfin_memmap.map, &bfin_memmap.nr_map); 377 + print_memory_map("boot memmap"); 378 + 379 + min_pfn = PAGE_OFFSET >> PAGE_SHIFT; 380 + max_pfn = memory_end >> PAGE_SHIFT; 381 + 382 + /* 383 + * give all the memory to the bootmap allocator, tell it to put the 384 + * boot mem_map at the start of memory. 385 + */ 386 + bootmap_size = init_bootmem_node(NODE_DATA(0), 387 + memory_start >> PAGE_SHIFT, /* map goes here */ 388 + min_pfn, max_pfn); 389 + 390 + /* register the memmap regions with the bootmem allocator */ 391 + for (i = 0; i < bfin_memmap.nr_map; i++) { 392 + /* 393 + * Reserve usable memory 394 + */ 395 + if (bfin_memmap.map[i].type != BFIN_MEMMAP_RAM) 396 + continue; 397 + /* 398 + * We are rounding up the start address of usable memory: 399 + */ 400 + curr_pfn = PFN_UP(bfin_memmap.map[i].addr); 401 + if (curr_pfn >= max_pfn) 402 + continue; 403 + /* 404 + * ... and at the end of the usable range downwards: 405 + */ 406 + last_pfn = PFN_DOWN(bfin_memmap.map[i].addr + 407 + bfin_memmap.map[i].size); 408 + 409 + if (last_pfn > max_pfn) 410 + last_pfn = max_pfn; 411 + 412 + /* 413 + * .. finally, did all the rounding and playing 414 + * around just make the area go away? 415 + */ 416 + if (last_pfn <= curr_pfn) 417 + continue; 418 + 419 + size = last_pfn - curr_pfn; 420 + free_bootmem(PFN_PHYS(curr_pfn), PFN_PHYS(size)); 421 + } 422 + 423 + /* reserve memory before memory_start, including bootmap */ 424 + reserve_bootmem(PAGE_OFFSET, 425 + memory_start + bootmap_size + PAGE_SIZE - 1 - PAGE_OFFSET, 426 + BOOTMEM_DEFAULT); 427 + } 428 + 429 + void __init setup_arch(char **cmdline_p) 430 + { 431 + unsigned long l1_length, sclk, cclk; 432 + 433 + #ifdef CONFIG_DUMMY_CONSOLE 434 + conswitchp = &dummy_con; 435 + #endif 436 + 437 + #if defined(CONFIG_CMDLINE_BOOL) 438 + strncpy(&command_line[0], CONFIG_CMDLINE, sizeof(command_line)); 439 + command_line[sizeof(command_line) - 1] = 0; 440 + #endif 441 + 442 + /* Keep a copy of command line */ 443 + *cmdline_p = &command_line[0]; 444 + memcpy(boot_command_line, command_line, COMMAND_LINE_SIZE); 445 + boot_command_line[COMMAND_LINE_SIZE - 1] = '\0'; 446 + 447 + /* setup memory defaults from the user config */ 448 + physical_mem_end = 0; 449 + _ramend = CONFIG_MEM_SIZE * 1024 * 1024; 450 + 451 + memset(&bfin_memmap, 0, sizeof(bfin_memmap)); 452 + 453 + parse_cmdline_early(&command_line[0]); 454 + 455 + if (physical_mem_end == 0) 456 + physical_mem_end = _ramend; 457 + 458 + memory_setup(); 459 + 460 + cclk = get_cclk(); 461 + sclk = get_sclk(); 462 + 463 + #if !defined(CONFIG_BFIN_KERNEL_CLOCK) 464 + if (ANOMALY_05000273 && cclk == sclk) 465 + panic("ANOMALY 05000273, SCLK can not be same as CCLK"); 466 + #endif 467 + 468 + #ifdef BF561_FAMILY 469 + if (ANOMALY_05000266) { 470 + bfin_read_IMDMA_D0_IRQ_STATUS(); 471 + bfin_read_IMDMA_D1_IRQ_STATUS(); 472 + } 473 + #endif 474 + printk(KERN_INFO "Hardware Trace "); 475 + if (bfin_read_TBUFCTL() & 0x1) 476 + printk("Active "); 477 + else 478 + printk("Off "); 479 + if (bfin_read_TBUFCTL() & 0x2) 480 + printk("and Enabled\n"); 481 + else 482 + printk("and Disabled\n"); 483 + 484 + #if defined(CONFIG_CHR_DEV_FLASH) || defined(CONFIG_BLK_DEV_FLASH) 485 + /* we need to initialize the Flashrom device here since we might 486 + * do things with flash early on in the boot 487 + */ 488 + flash_probe(); 489 + #endif 510 490 511 491 _bfin_swrst = bfin_read_SWRST(); 512 492 ··· 679 335 else if (_bfin_swrst & RESET_SOFTWARE) 680 336 printk(KERN_NOTICE "Reset caused by Software reset\n"); 681 337 682 - printk(KERN_INFO "Blackfin support (C) 2004-2007 Analog Devices, Inc.\n"); 338 + printk(KERN_INFO "Blackfin support (C) 2004-2008 Analog Devices, Inc.\n"); 683 339 if (bfin_compiled_revid() == 0xffff) 684 340 printk(KERN_INFO "Compiled for ADSP-%s Rev any\n", CPU); 685 341 else if (bfin_compiled_revid() == -1) ··· 705 361 if (ANOMALY_05000273 && (cclk >> 1) <= sclk) 706 362 printk("\n\n\nANOMALY_05000273: CCLK must be >= 2*SCLK !!!\n\n\n"); 707 363 708 - printk(KERN_INFO "Board Memory: %ldMB\n", physical_mem_end >> 20); 709 - printk(KERN_INFO "Kernel Managed Memory: %ldMB\n", _ramend >> 20); 364 + setup_bootmem_allocator(); 710 365 711 - printk(KERN_INFO "Memory map:\n" 712 - KERN_INFO " text = 0x%p-0x%p\n" 713 - KERN_INFO " rodata = 0x%p-0x%p\n" 714 - KERN_INFO " data = 0x%p-0x%p\n" 715 - KERN_INFO " stack = 0x%p-0x%p\n" 716 - KERN_INFO " init = 0x%p-0x%p\n" 717 - KERN_INFO " bss = 0x%p-0x%p\n" 718 - KERN_INFO " available = 0x%p-0x%p\n" 719 - #ifdef CONFIG_MTD_UCLINUX 720 - KERN_INFO " rootfs = 0x%p-0x%p\n" 721 - #endif 722 - #if DMA_UNCACHED_REGION > 0 723 - KERN_INFO " DMA Zone = 0x%p-0x%p\n" 724 - #endif 725 - , _stext, _etext, 726 - __start_rodata, __end_rodata, 727 - _sdata, _edata, 728 - (void *)&init_thread_union, (void *)((int)(&init_thread_union) + 0x2000), 729 - __init_begin, __init_end, 730 - __bss_start, __bss_stop, 731 - (void *)_ramstart, (void *)memory_end 732 - #ifdef CONFIG_MTD_UCLINUX 733 - , (void *)memory_mtd_start, (void *)(memory_mtd_start + mtd_size) 734 - #endif 735 - #if DMA_UNCACHED_REGION > 0 736 - , (void *)(_ramend - DMA_UNCACHED_REGION), (void *)(_ramend) 737 - #endif 738 - ); 739 - 740 - /* 741 - * give all the memory to the bootmap allocator, tell it to put the 742 - * boot mem_map at the start of memory 743 - */ 744 - bootmap_size = init_bootmem_node(NODE_DATA(0), memory_start >> PAGE_SHIFT, /* map goes here */ 745 - PAGE_OFFSET >> PAGE_SHIFT, 746 - memory_end >> PAGE_SHIFT); 747 - /* 748 - * free the usable memory, we have to make sure we do not free 749 - * the bootmem bitmap so we then reserve it after freeing it :-) 750 - */ 751 - free_bootmem(memory_start, memory_end - memory_start); 752 - 753 - reserve_bootmem(memory_start, bootmap_size, BOOTMEM_DEFAULT); 754 - /* 755 - * get kmalloc into gear 756 - */ 757 366 paging_init(); 758 367 759 368 /* check the size of the l1 area */ ··· 747 450 748 451 static int __init topology_init(void) 749 452 { 750 - #if defined (CONFIG_BF561) 751 - static struct cpu cpu[2]; 752 - register_cpu(&cpu[0], 0); 753 - register_cpu(&cpu[1], 1); 453 + int cpu; 454 + 455 + for_each_possible_cpu(cpu) { 456 + struct cpu *c = &per_cpu(cpu_devices, cpu); 457 + 458 + register_cpu(c, cpu); 459 + } 460 + 754 461 return 0; 755 - #else 756 - static struct cpu cpu[1]; 757 - return register_cpu(cpu, 0); 758 - #endif 759 462 } 760 463 761 464 subsys_initcall(topology_init);
+1 -1
arch/blackfin/kernel/traps.c
··· 649 649 if (context & 0x0020 && (fp->seqstat & SEQSTAT_EXCAUSE) == VEC_HWERR) 650 650 printk(KERN_NOTICE "HW Error context\n"); 651 651 else if (context & 0x0020) 652 - printk(KERN_NOTICE "Defered Exception context\n"); 652 + printk(KERN_NOTICE "Deferred Exception context\n"); 653 653 else if (context & 0x3FC0) 654 654 printk(KERN_NOTICE "Interrupt context\n"); 655 655 else if (context & 0x4000)
+28 -19
arch/blackfin/kernel/vmlinux.lds.S
··· 41 41 SECTIONS 42 42 { 43 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 47 .text : 45 48 { 46 49 __text = .; ··· 61 58 *(__ex_table) 62 59 ___stop___ex_table = .; 63 60 64 - . = ALIGN(4); 65 61 __etext = .; 66 62 } 67 63 68 - RO_DATA(PAGE_SIZE) 64 + /* Just in case the first read only is a 32-bit access */ 65 + RO_DATA(4) 66 + 67 + .bss : 68 + { 69 + . = ALIGN(4); 70 + ___bss_start = .; 71 + *(.bss .bss.*) 72 + *(COMMON) 73 + ___bss_stop = .; 74 + } 69 75 70 76 .data : 71 77 { 72 - /* make sure the init_task is aligned to the 73 - * kernel thread size so we can locate the kernel 74 - * stack properly and quickly. 75 - */ 76 78 __sdata = .; 77 - . = ALIGN(THREAD_SIZE); 78 - *(.data.init_task) 79 - 79 + /* This gets done first, so the glob doesn't suck it in */ 80 80 . = ALIGN(32); 81 81 *(.data.cacheline_aligned) 82 82 ··· 87 81 *(.data.*) 88 82 CONSTRUCTORS 89 83 84 + /* make sure the init_task is aligned to the 85 + * kernel thread size so we can locate the kernel 86 + * stack properly and quickly. 87 + */ 90 88 . = ALIGN(THREAD_SIZE); 89 + *(.init_task.data) 90 + 91 91 __edata = .; 92 92 } 93 93 94 + /* The init section should be last, so when we free it, it goes into 95 + * the general memory pool, and (hopefully) will decrease fragmentation 96 + * a tiny bit. The init section has a _requirement_ that it be 97 + * PAGE_SIZE aligned 98 + */ 99 + . = ALIGN(PAGE_SIZE); 94 100 ___init_begin = .; 95 101 96 102 .init.text : ··· 197 179 . = ALIGN(PAGE_SIZE); 198 180 ___init_end = .; 199 181 200 - .bss : 201 - { 202 - . = ALIGN(4); 203 - ___bss_start = .; 204 - *(.bss .bss.*) 205 - *(COMMON) 206 - . = ALIGN(4); 207 - ___bss_stop = .; 208 - __end = .; 209 - } 182 + __end =.; 210 183 211 184 STABS_DEBUG 212 185
+19
arch/blackfin/mach-bf527/boards/ezkit.c
··· 41 41 #include <linux/irq.h> 42 42 #include <linux/interrupt.h> 43 43 #include <linux/usb/sl811.h> 44 + #if defined(CONFIG_USB_MUSB_HDRC) || defined(CONFIG_USB_MUSB_HDRC_MODULE) 44 45 #include <linux/usb/musb.h> 46 + #endif 45 47 #include <asm/cplb.h> 46 48 #include <asm/dma.h> 47 49 #include <asm/bfin5xx_spi.h> ··· 519 517 .bits_per_word = 16, 520 518 }; 521 519 #endif 520 + 521 + #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) 522 + static struct bfin5xx_spi_chip spidev_chip_info = { 523 + .enable_dma = 0, 524 + .bits_per_word = 8, 525 + }; 526 + #endif 527 + 522 528 static struct spi_board_info bfin_spi_board_info[] __initdata = { 523 529 #if defined(CONFIG_MTD_M25P80) \ 524 530 || defined(CONFIG_MTD_M25P80_MODULE) ··· 642 632 .chip_select = 5, 643 633 .controller_data = &spi_wm8731_chip_info, 644 634 .mode = SPI_MODE_0, 635 + }, 636 + #endif 637 + #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) 638 + { 639 + .modalias = "spidev", 640 + .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ 641 + .bus_num = 0, 642 + .chip_select = 1, 643 + .controller_data = &spidev_chip_info, 645 644 }, 646 645 #endif 647 646 };
+18
arch/blackfin/mach-bf533/boards/ezkit.c
··· 34 34 #include <linux/mtd/partitions.h> 35 35 #include <linux/spi/spi.h> 36 36 #include <linux/spi/flash.h> 37 + #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) 37 38 #include <linux/usb/isp1362.h> 39 + #endif 38 40 #include <linux/ata_platform.h> 39 41 #include <linux/irq.h> 40 42 #include <asm/dma.h> ··· 136 134 }; 137 135 #endif 138 136 137 + #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) 138 + static struct bfin5xx_spi_chip spidev_chip_info = { 139 + .enable_dma = 0, 140 + .bits_per_word = 8, 141 + }; 142 + #endif 143 + 139 144 static struct spi_board_info bfin_spi_board_info[] __initdata = { 140 145 #if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE) 141 146 { ··· 175 166 .bus_num = 0, 176 167 .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, 177 168 .controller_data = &ad1836_spi_chip_info, 169 + }, 170 + #endif 171 + #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) 172 + { 173 + .modalias = "spidev", 174 + .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ 175 + .bus_num = 0, 176 + .chip_select = 1, 177 + .controller_data = &spidev_chip_info, 178 178 }, 179 179 #endif 180 180 };
+19 -3
arch/blackfin/mach-bf533/boards/stamp.c
··· 226 226 }; 227 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 236 static struct spi_board_info bfin_spi_board_info[] __initdata = { 230 237 #if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE) 231 238 { ··· 317 310 .platform_data = NULL, 318 311 .controller_data = &ad5304_chip_info, 319 312 .mode = SPI_MODE_2, 313 + }, 314 + #endif 315 + #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) 316 + { 317 + .modalias = "spidev", 318 + .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ 319 + .bus_num = 0, 320 + .chip_select = 1, 321 + .controller_data = &spidev_chip_info, 320 322 }, 321 323 #endif 322 324 }; ··· 439 423 #include <linux/gpio_keys.h> 440 424 441 425 static struct gpio_keys_button bfin_gpio_keys_table[] = { 442 - {BTN_0, GPIO_PF5, 1, "gpio-keys: BTN0"}, 443 - {BTN_1, GPIO_PF6, 1, "gpio-keys: BTN1"}, 444 - {BTN_2, GPIO_PF8, 1, "gpio-keys: BTN2"}, 426 + {BTN_0, GPIO_PF5, 0, "gpio-keys: BTN0"}, 427 + {BTN_1, GPIO_PF6, 0, "gpio-keys: BTN1"}, 428 + {BTN_2, GPIO_PF8, 0, "gpio-keys: BTN2"}, 445 429 }; 446 430 447 431 static struct gpio_keys_platform_data bfin_gpio_keys_data = {
+16
arch/blackfin/mach-bf537/boards/stamp.c
··· 487 487 }; 488 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 497 static struct spi_board_info bfin_spi_board_info[] __initdata = { 491 498 #if defined(CONFIG_MTD_M25P80) \ 492 499 || defined(CONFIG_MTD_M25P80_MODULE) ··· 598 591 .bus_num = 0, 599 592 .chip_select = 1, 600 593 .controller_data = &spi_ad7877_chip_info, 594 + }, 595 + #endif 596 + #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) 597 + { 598 + .modalias = "spidev", 599 + .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ 600 + .bus_num = 0, 601 + .chip_select = 1, 602 + .controller_data = &spidev_chip_info, 601 603 }, 602 604 #endif 603 605 };
+20 -2
arch/blackfin/mach-bf548/boards/ezkit.c
··· 37 37 #include <linux/spi/flash.h> 38 38 #include <linux/irq.h> 39 39 #include <linux/interrupt.h> 40 + #if defined(CONFIG_USB_MUSB_HDRC) || defined(CONFIG_USB_MUSB_HDRC_MODULE) 40 41 #include <linux/usb/musb.h> 42 + #endif 41 43 #include <asm/bfin5xx_spi.h> 42 44 #include <asm/cplb.h> 43 45 #include <asm/dma.h> ··· 422 420 }; 423 421 #endif 424 422 423 + #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) 424 + static struct bfin5xx_spi_chip spidev_chip_info = { 425 + .enable_dma = 0, 426 + .bits_per_word = 8, 427 + }; 428 + #endif 429 + 425 430 static struct spi_board_info bf54x_spi_board_info[] __initdata = { 426 431 #if defined(CONFIG_MTD_M25P80) \ 427 432 || defined(CONFIG_MTD_M25P80_MODULE) ··· 453 444 .chip_select = 2, 454 445 .controller_data = &spi_ad7877_chip_info, 455 446 }, 447 + #endif 448 + #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) 449 + { 450 + .modalias = "spidev", 451 + .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ 452 + .bus_num = 0, 453 + .chip_select = 1, 454 + .controller_data = &spidev_chip_info, 455 + }, 456 456 #endif 457 457 }; 458 458 ··· 649 631 &ezkit_flash_device, 650 632 }; 651 633 652 - static int __init stamp_init(void) 634 + static int __init ezkit_init(void) 653 635 { 654 636 printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); 655 637 platform_add_devices(ezkit_devices, ARRAY_SIZE(ezkit_devices)); ··· 662 644 return 0; 663 645 } 664 646 665 - arch_initcall(stamp_init); 647 + arch_initcall(ezkit_init);
+2 -2
arch/blackfin/mach-bf548/dma.c
··· 1 1 /* 2 - * File: arch/blackfin/mach-bf561/dma.c 2 + * File: arch/blackfin/mach-bf548/dma.c 3 3 * Based on: 4 4 * Author: 5 5 * ··· 7 7 * Description: This file contains the simple DMA Implementation for Blackfin 8 8 * 9 9 * Modified: 10 - * Copyright 2004-2007 Analog Devices Inc. 10 + * Copyright 2004-2008 Analog Devices Inc. 11 11 * 12 12 * Bugs: Enter bugs at http://blackfin.uclinux.org/ 13 13 *
+87
arch/blackfin/mach-bf561/boards/ezkit.c
··· 92 92 arch_initcall(bfin_isp1761_init); 93 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 158 * USB-LAN EzExtender board 97 159 * Driver needs to know address, irq and flag pin. ··· 266 204 .bits_per_word = 16, 267 205 }; 268 206 #endif 207 + 208 + #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) 209 + static struct bfin5xx_spi_chip spidev_chip_info = { 210 + .enable_dma = 0, 211 + .bits_per_word = 8, 212 + }; 213 + #endif 269 214 #endif 270 215 271 216 /* SPI (0) */ ··· 315 246 .bus_num = 0, 316 247 .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, 317 248 .controller_data = &ad1836_spi_chip_info, 249 + }, 250 + #endif 251 + #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) 252 + { 253 + .modalias = "spidev", 254 + .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ 255 + .bus_num = 0, 256 + .chip_select = 1, 257 + .controller_data = &spidev_chip_info, 318 258 }, 319 259 #endif 320 260 }; ··· 418 340 &ax88180_device, 419 341 #endif 420 342 343 + #if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE) 344 + &net2272_bfin_device, 345 + #endif 346 + 421 347 #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) 422 348 &bfin_spi0_device, 423 349 #endif ··· 441 359 #if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE) 442 360 &i2c_gpio_device, 443 361 #endif 362 + 363 + #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) 364 + &isp1362_hcd_device, 365 + #endif 366 + 444 367 &ezkit_flash_device, 445 368 }; 446 369
+1 -3
arch/blackfin/mach-common/Makefile
··· 4 4 5 5 obj-y := \ 6 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 9 obj-$(CONFIG_PM) += pm.o dpmc.o
+31 -1
arch/blackfin/mach-common/dpmc.S
··· 191 191 call _test_pll_locked; 192 192 193 193 R0 = IWR_ENABLE(0); 194 + R1 = IWR_DISABLE_ALL; 195 + R2 = IWR_DISABLE_ALL; 196 + 194 197 call _set_sic_iwr; 195 198 196 199 P0.H = hi(PLL_CTL); ··· 240 237 241 238 CLI R4; 242 239 240 + R0 = IWR_ENABLE(0); 241 + R1 = IWR_DISABLE_ALL; 242 + R2 = IWR_DISABLE_ALL; 243 + 243 244 call _set_sic_iwr; 244 245 245 246 call _set_dram_srfs; ··· 268 261 call _test_pll_locked; 269 262 270 263 R0 = IWR_ENABLE(0); 264 + R1 = IWR_DISABLE_ALL; 265 + R2 = IWR_DISABLE_ALL; 266 + 271 267 call _set_sic_iwr; 272 268 273 269 P0.H = hi(PLL_CTL); ··· 296 286 CLI R4; 297 287 298 288 P3 = R0; 289 + P4 = R1; 290 + P5 = R2; 291 + 299 292 R0 = IWR_ENABLE(0); 293 + R1 = IWR_DISABLE_ALL; 294 + R2 = IWR_DISABLE_ALL; 295 + 300 296 call _set_sic_iwr; 301 297 call _set_dram_srfs; /* Set SDRAM Self Refresh */ 302 298 ··· 343 327 call _test_pll_locked; 344 328 345 329 R0 = P3; 330 + R1 = P4; 331 + R3 = P5; 346 332 call _set_sic_iwr; /* Set Awake from IDLE */ 347 333 348 334 P0.H = hi(PLL_CTL); ··· 358 340 call _test_pll_locked; 359 341 360 342 R0 = IWR_ENABLE(0); 343 + R1 = IWR_DISABLE_ALL; 344 + R2 = IWR_DISABLE_ALL; 345 + 361 346 call _set_sic_iwr; /* Set Awake from IDLE PLL */ 362 347 363 348 P0.H = hi(VR_CTL); ··· 438 417 RTS; 439 418 440 419 ENTRY(_set_sic_iwr) 441 - #if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) 420 + #if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) || defined(CONFIG_BF561) 442 421 P0.H = hi(SIC_IWR0); 443 422 P0.L = lo(SIC_IWR0); 423 + P1.H = hi(SIC_IWR1); 424 + P1.L = lo(SIC_IWR1); 425 + [P1] = R1; 426 + #if defined(CONFIG_BF54x) 427 + P1.H = hi(SIC_IWR2); 428 + P1.L = lo(SIC_IWR2); 429 + [P1] = R2; 430 + #endif 444 431 #else 445 432 P0.H = hi(SIC_IWR); 446 433 P0.L = lo(SIC_IWR); 447 434 #endif 448 435 [P0] = R0; 436 + 449 437 SSYNC; 450 438 RTS; 451 439
+4 -8
arch/blackfin/mach-common/entry.S
··· 121 121 (R7:6,P5:4) = [sp++]; 122 122 ASTAT = [sp++]; 123 123 SAVE_ALL_SYS 124 + DEBUG_HWTRACE_SAVE(p5, r7) 124 125 #ifdef CONFIG_MPU 125 126 R0 = SEQSTAT; 126 127 R1 = SP; ··· 133 132 #else 134 133 call __cplb_hdr; 135 134 #endif 136 - DEBUG_START_HWTRACE(p5, r7) 135 + DEBUG_HWTRACE_RESTORE(p5, r7) 137 136 RESTORE_ALL_SYS 138 137 SP = EX_SCRATCH_REG; 139 138 rtx; 140 139 ENDPROC(_ex_icplb_miss) 141 140 142 141 ENTRY(_ex_syscall) 143 - DEBUG_START_HWTRACE(p5, r7) 144 142 (R7:6,P5:4) = [sp++]; 145 143 ASTAT = [sp++]; 146 144 raise 15; /* invoked by TRAP #0, for sys call */ ··· 178 178 ENDPROC(_ex_single_step) 179 179 180 180 ENTRY(_bfin_return_from_exception) 181 - DEBUG_START_HWTRACE(p5, r7) 182 181 #if ANOMALY_05000257 183 182 R7=LC0; 184 183 LC0=R7; ··· 199 200 * need to make a CPLB exception look like a normal exception 200 201 */ 201 202 202 - DEBUG_START_HWTRACE(p5, r7) 203 203 RESTORE_ALL_SYS 204 204 [--sp] = ASTAT; 205 - [--sp] = (R7:6, P5:4); 205 + [--sp] = (R7:6,P5:4); 206 206 207 207 ENTRY(_ex_replaceable) 208 208 nop; ··· 251 253 R6 = SEQSTAT; 252 254 [P5] = R6; 253 255 254 - DEBUG_START_HWTRACE(p5, r7) 255 256 (R7:6,P5:4) = [sp++]; 256 257 ASTAT = [sp++]; 257 258 SP = EX_SCRATCH_REG; ··· 379 382 sp.h = _exception_stack_top; 380 383 /* Try to deal with syscalls quickly. */ 381 384 [--sp] = ASTAT; 382 - [--sp] = (R7:6, P5:4); 383 - DEBUG_STOP_HWTRACE(p5, r7) 385 + [--sp] = (R7:6,P5:4); 384 386 r7 = SEQSTAT; /* reason code is in bit 5:0 */ 385 387 r6.l = lo(SEQSTAT_EXCAUSE); 386 388 r6.h = hi(SEQSTAT_EXCAUSE);
-484
arch/blackfin/mach-common/ints-priority-dc.c
··· 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 - }
+230 -47
arch/blackfin/mach-common/ints-priority-sc.c arch/blackfin/mach-common/ints-priority.c
··· 1 1 /* 2 - * File: arch/blackfin/mach-common/ints-priority-sc.c 2 + * File: arch/blackfin/mach-common/ints-priority.c 3 3 * Based on: 4 4 * Author: 5 5 * ··· 13 13 * 2002 Arcturus Networks Inc. MaTed <mated@sympatico.ca> 14 14 * 2003 Metrowerks/Motorola 15 15 * 2003 Bas Vermeulen <bas@buyways.nl> 16 - * Copyright 2004-2007 Analog Devices Inc. 16 + * Copyright 2004-2008 Analog Devices Inc. 17 17 * 18 18 * Bugs: Enter bugs at http://blackfin.uclinux.org/ 19 19 * ··· 69 69 /* The number of spurious interrupts */ 70 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 76 struct ivgx { 73 77 /* irq number for request_irq, available in mach-bf533/irq.h */ 74 78 unsigned int irqno; ··· 102 98 103 99 for (irqn = 0; irqn < NR_PERI_INTS; irqn++) { 104 100 int iar_shift = (irqn & 7) * 4; 105 - if (ivg == 106 - (0xf & 101 + if (ivg == (0xf & 107 102 #ifndef CONFIG_BF52x 108 103 bfin_read32((unsigned long *)SIC_IAR0 + 109 104 (irqn >> 3)) >> iar_shift)) { ··· 182 179 SSYNC(); 183 180 } 184 181 182 + #ifdef CONFIG_PM 183 + int bfin_internal_set_wake(unsigned int irq, unsigned int state) 184 + { 185 + unsigned bank, bit; 186 + unsigned long flags; 187 + bank = (irq - (IRQ_CORETMR + 1)) / 32; 188 + bit = (irq - (IRQ_CORETMR + 1)) % 32; 189 + 190 + local_irq_save(flags); 191 + 192 + if (state) 193 + bfin_sic_iwr[bank] |= (1 << bit); 194 + else 195 + bfin_sic_iwr[bank] &= ~(1 << bit); 196 + 197 + local_irq_restore(flags); 198 + 199 + return 0; 200 + } 201 + #endif 202 + 185 203 static struct irq_chip bfin_core_irqchip = { 186 204 .ack = ack_noop, 187 205 .mask = bfin_core_mask_irq, ··· 213 189 .ack = ack_noop, 214 190 .mask = bfin_internal_mask_irq, 215 191 .unmask = bfin_internal_unmask_irq, 192 + #ifdef CONFIG_PM 193 + .set_wake = bfin_internal_set_wake, 194 + #endif 216 195 }; 217 196 218 197 #ifdef BF537_GENERIC_ERROR_INT_DEMUX ··· 233 206 if (!error_int_mask) { 234 207 local_irq_disable(); 235 208 bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() & 236 - ~(1 << 237 - (IRQ_GENERIC_ERROR - 209 + ~(1 << (IRQ_GENERIC_ERROR - 238 210 (IRQ_CORETMR + 1)))); 239 211 SSYNC(); 240 212 local_irq_enable(); ··· 258 232 }; 259 233 260 234 static void bfin_demux_error_irq(unsigned int int_err_irq, 261 - struct irq_desc *intb_desc) 235 + struct irq_desc *inta_desc) 262 236 { 263 237 int irq = 0; 264 238 ··· 430 404 return 0; 431 405 } 432 406 407 + set_gpio_inen(gpionr, 0); 433 408 set_gpio_dir(gpionr, 0); 434 - set_gpio_inen(gpionr, 1); 435 - 436 - if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) { 437 - gpio_edge_triggered[gpio_bank(gpionr)] |= gpio_bit(gpionr); 438 - set_gpio_edge(gpionr, 1); 439 - } else { 440 - set_gpio_edge(gpionr, 0); 441 - gpio_edge_triggered[gpio_bank(gpionr)] &= ~gpio_bit(gpionr); 442 - } 443 409 444 410 if ((type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) 445 411 == (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) ··· 444 426 else 445 427 set_gpio_polar(gpionr, 0); /* high or rising edge denoted by zero */ 446 428 429 + if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) { 430 + set_gpio_edge(gpionr, 1); 431 + set_gpio_inen(gpionr, 1); 432 + gpio_edge_triggered[gpio_bank(gpionr)] |= gpio_bit(gpionr); 433 + set_gpio_data(gpionr, 0); 434 + 435 + } else { 436 + set_gpio_edge(gpionr, 0); 437 + gpio_edge_triggered[gpio_bank(gpionr)] &= ~gpio_bit(gpionr); 438 + set_gpio_inen(gpionr, 1); 439 + } 440 + 447 441 SSYNC(); 448 442 449 443 if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) ··· 466 436 return 0; 467 437 } 468 438 439 + #ifdef CONFIG_PM 440 + int bfin_gpio_set_wake(unsigned int irq, unsigned int state) 441 + { 442 + unsigned gpio = irq_to_gpio(irq); 443 + 444 + if (state) 445 + gpio_pm_wakeup_request(gpio, PM_WAKE_IGNORE); 446 + else 447 + gpio_pm_wakeup_free(gpio); 448 + 449 + return 0; 450 + } 451 + #endif 452 + 469 453 static struct irq_chip bfin_gpio_irqchip = { 470 454 .ack = bfin_gpio_ack_irq, 471 455 .mask = bfin_gpio_mask_irq, ··· 487 443 .unmask = bfin_gpio_unmask_irq, 488 444 .set_type = bfin_gpio_irq_type, 489 445 .startup = bfin_gpio_irq_startup, 490 - .shutdown = bfin_gpio_irq_shutdown 446 + .shutdown = bfin_gpio_irq_shutdown, 447 + #ifdef CONFIG_PM 448 + .set_wake = bfin_gpio_set_wake, 449 + #endif 491 450 }; 492 451 493 - static void bfin_demux_gpio_irq(unsigned int intb_irq, 494 - struct irq_desc *intb_desc) 452 + static void bfin_demux_gpio_irq(unsigned int inta_irq, 453 + struct irq_desc *desc) 495 454 { 496 - u16 i; 497 - struct irq_desc *desc; 455 + unsigned int i, gpio, mask, irq, search = 0; 498 456 499 - for (i = 0; i < MAX_BLACKFIN_GPIOS; i += 16) { 500 - int irq = IRQ_PF0 + i; 501 - int flag_d = get_gpiop_data(i); 502 - int mask = 503 - flag_d & (gpio_enabled[gpio_bank(i)] & get_gpiop_maska(i)); 504 - 505 - while (mask) { 506 - if (mask & 1) { 507 - desc = irq_desc + irq; 508 - desc->handle_irq(irq, desc); 509 - } 510 - irq++; 511 - mask >>= 1; 512 - } 457 + switch (inta_irq) { 458 + #if defined(CONFIG_BF53x) 459 + case IRQ_PROG_INTA: 460 + irq = IRQ_PF0; 461 + search = 1; 462 + break; 463 + # if defined(BF537_FAMILY) && !(defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)) 464 + case IRQ_MAC_RX: 465 + irq = IRQ_PH0; 466 + break; 467 + # endif 468 + #elif defined(CONFIG_BF52x) 469 + case IRQ_PORTF_INTA: 470 + irq = IRQ_PF0; 471 + break; 472 + case IRQ_PORTG_INTA: 473 + irq = IRQ_PG0; 474 + break; 475 + case IRQ_PORTH_INTA: 476 + irq = IRQ_PH0; 477 + break; 478 + #elif defined(CONFIG_BF561) 479 + case IRQ_PROG0_INTA: 480 + irq = IRQ_PF0; 481 + break; 482 + case IRQ_PROG1_INTA: 483 + irq = IRQ_PF16; 484 + break; 485 + case IRQ_PROG2_INTA: 486 + irq = IRQ_PF32; 487 + break; 488 + #endif 489 + default: 490 + BUG(); 491 + return; 513 492 } 493 + 494 + if (search) { 495 + for (i = 0; i < MAX_BLACKFIN_GPIOS; i += GPIO_BANKSIZE) { 496 + irq += i; 497 + 498 + mask = get_gpiop_data(i) & 499 + (gpio_enabled[gpio_bank(i)] & 500 + get_gpiop_maska(i)); 501 + 502 + while (mask) { 503 + if (mask & 1) { 504 + desc = irq_desc + irq; 505 + desc->handle_irq(irq, desc); 506 + } 507 + irq++; 508 + mask >>= 1; 509 + } 510 + } 511 + } else { 512 + gpio = irq_to_gpio(irq); 513 + mask = get_gpiop_data(gpio) & 514 + (gpio_enabled[gpio_bank(gpio)] & 515 + get_gpiop_maska(gpio)); 516 + 517 + do { 518 + if (mask & 1) { 519 + desc = irq_desc + irq; 520 + desc->handle_irq(irq, desc); 521 + } 522 + irq++; 523 + mask >>= 1; 524 + } while (mask); 525 + } 526 + 514 527 } 515 528 516 529 #else /* CONFIG_BF54x */ ··· 812 711 return 0; 813 712 } 814 713 714 + #ifdef CONFIG_PM 715 + u32 pint_saved_masks[NR_PINT_SYS_IRQS]; 716 + u32 pint_wakeup_masks[NR_PINT_SYS_IRQS]; 717 + 718 + int bfin_gpio_set_wake(unsigned int irq, unsigned int state) 719 + { 720 + u32 pint_irq; 721 + u8 pint_val = irq2pint_lut[irq - SYS_IRQS]; 722 + u32 bank = PINT_2_BANK(pint_val); 723 + u32 pintbit = PINT_BIT(pint_val); 724 + 725 + switch (bank) { 726 + case 0: 727 + pint_irq = IRQ_PINT0; 728 + break; 729 + case 2: 730 + pint_irq = IRQ_PINT2; 731 + break; 732 + case 3: 733 + pint_irq = IRQ_PINT3; 734 + break; 735 + case 1: 736 + pint_irq = IRQ_PINT1; 737 + break; 738 + default: 739 + return -EINVAL; 740 + } 741 + 742 + bfin_internal_set_wake(pint_irq, state); 743 + 744 + if (state) 745 + pint_wakeup_masks[bank] |= pintbit; 746 + else 747 + pint_wakeup_masks[bank] &= ~pintbit; 748 + 749 + return 0; 750 + } 751 + 752 + u32 bfin_pm_setup(void) 753 + { 754 + u32 val, i; 755 + 756 + for (i = 0; i < NR_PINT_SYS_IRQS; i++) { 757 + val = pint[i]->mask_clear; 758 + pint_saved_masks[i] = val; 759 + if (val ^ pint_wakeup_masks[i]) { 760 + pint[i]->mask_clear = val; 761 + pint[i]->mask_set = pint_wakeup_masks[i]; 762 + } 763 + } 764 + 765 + return 0; 766 + } 767 + 768 + void bfin_pm_restore(void) 769 + { 770 + u32 i, val; 771 + 772 + for (i = 0; i < NR_PINT_SYS_IRQS; i++) { 773 + val = pint_saved_masks[i]; 774 + if (val ^ pint_wakeup_masks[i]) { 775 + pint[i]->mask_clear = pint[i]->mask_clear; 776 + pint[i]->mask_set = val; 777 + } 778 + } 779 + } 780 + #endif 781 + 815 782 static struct irq_chip bfin_gpio_irqchip = { 816 783 .ack = bfin_gpio_ack_irq, 817 784 .mask = bfin_gpio_mask_irq, ··· 887 718 .unmask = bfin_gpio_unmask_irq, 888 719 .set_type = bfin_gpio_irq_type, 889 720 .startup = bfin_gpio_irq_startup, 890 - .shutdown = bfin_gpio_irq_shutdown 721 + .shutdown = bfin_gpio_irq_shutdown, 722 + #ifdef CONFIG_PM 723 + .set_wake = bfin_gpio_set_wake, 724 + #endif 891 725 }; 892 726 893 - static void bfin_demux_gpio_irq(unsigned int intb_irq, 894 - struct irq_desc *intb_desc) 727 + static void bfin_demux_gpio_irq(unsigned int inta_irq, 728 + struct irq_desc *desc) 895 729 { 896 730 u8 bank, pint_val; 897 731 u32 request, irq; 898 - struct irq_desc *desc; 899 732 900 - switch (intb_irq) { 733 + switch (inta_irq) { 901 734 case IRQ_PINT0: 902 735 bank = 0; 903 736 break; ··· 966 795 int irq; 967 796 unsigned long ilat = 0; 968 797 /* Disable all the peripheral intrs - page 4-29 HW Ref manual */ 969 - #if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) 798 + #if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) || defined(CONFIG_BF561) 970 799 bfin_write_SIC_IMASK0(SIC_UNMASK_ALL); 971 800 bfin_write_SIC_IMASK1(SIC_UNMASK_ALL); 972 801 bfin_write_SIC_IWR0(IWR_ENABLE_ALL); ··· 982 811 SSYNC(); 983 812 984 813 local_irq_disable(); 814 + 815 + init_exception_buff(); 985 816 986 817 #ifdef CONFIG_BF54x 987 818 # ifdef CONFIG_PINTx_REASSIGN ··· 1047 874 set_irq_chained_handler(irq, 1048 875 bfin_demux_gpio_irq); 1049 876 break; 877 + #elif defined(CONFIG_BF561) 878 + case IRQ_PROG0_INTA: 879 + set_irq_chained_handler(irq, 880 + bfin_demux_gpio_irq); 881 + break; 882 + case IRQ_PROG1_INTA: 883 + set_irq_chained_handler(irq, 884 + bfin_demux_gpio_irq); 885 + break; 886 + case IRQ_PROG2_INTA: 887 + set_irq_chained_handler(irq, 888 + bfin_demux_gpio_irq); 889 + break; 1050 890 #endif 1051 891 default: 1052 892 set_irq_handler(irq, handle_simple_irq); ··· 1079 893 } 1080 894 #endif 1081 895 1082 - #ifndef CONFIG_BF54x 1083 - for (irq = IRQ_PF0; irq < NR_IRQS; irq++) { 1084 - #else 1085 - for (irq = IRQ_PA0; irq < NR_IRQS; irq++) { 1086 - #endif 896 + for (irq = GPIO_IRQ_BASE; irq < NR_IRQS; irq++) { 897 + 1087 898 set_irq_chip(irq, &bfin_gpio_irqchip); 1088 899 /* if configured as edge, then will be changed to do_edge_IRQ */ 1089 900 set_irq_handler(irq, handle_level_irq); ··· 1119 936 } else { 1120 937 struct ivgx *ivg = ivg7_13[vec - IVG7].ifirst; 1121 938 struct ivgx *ivg_stop = ivg7_13[vec - IVG7].istop; 1122 - #if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) 939 + #if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) || defined(CONFIG_BF561) 1123 940 unsigned long sic_status[3]; 1124 941 1125 942 SSYNC();
+16 -28
arch/blackfin/mach-common/pm.c
··· 4 4 * Author: Cliff Brake <cbrake@accelent.com> Copyright (c) 2001 5 5 * 6 6 * Created: 2001 7 - * Description: Power management for the bfin 7 + * Description: Blackfin power management 8 8 * 9 9 * Modified: Nicolas Pitre - PXA250 support 10 10 * Copyright (c) 2002 Monta Vista Software, Inc. ··· 12 12 * Copyright (c) 2002 Monta Vista Software, Inc. 13 13 * Dirk Behme <dirk.behme@de.bosch.com> - OMAP1510/1610 14 14 * Copyright 2004 15 - * Copyright 2004-2006 Analog Devices Inc. 15 + * Copyright 2004-2008 Analog Devices Inc. 16 16 * 17 17 * Bugs: Enter bugs at http://blackfin.uclinux.org/ 18 18 * ··· 67 67 gpio_pm_wakeup_request(CONFIG_PM_WAKEUP_GPIO_NUMBER, WAKEUP_TYPE); 68 68 #endif 69 69 70 - #if defined(CONFIG_PM_WAKEUP_BY_GPIO) || defined(CONFIG_PM_WAKEUP_GPIO_API) 71 - { 72 - u32 flags; 70 + 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*/ 77 - 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 75 + #ifdef CONFIG_PM_BFIN_SLEEP_DEEPER 76 + sleep_deeper(bfin_sic_iwr[0], bfin_sic_iwr[1], bfin_sic_iwr[2]); 86 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 79 #endif 89 80 90 - local_irq_restore(flags); 91 - } 92 - #endif 81 + bfin_pm_restore(); 93 82 94 - #if defined(CONFIG_PM_WAKEUP_GPIO_BY_SIC_IWR) 95 - sleep_deeper(CONFIG_PM_WAKEUP_SIC_IWR); 96 - # if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) 83 + #if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) || defined(CONFIG_BF561) 97 84 bfin_write_SIC_IWR0(IWR_ENABLE_ALL); 98 85 bfin_write_SIC_IWR1(IWR_ENABLE_ALL); 99 - # ifdef CONFIG_BF54x 86 + # ifdef CONFIG_BF54x 100 87 bfin_write_SIC_IWR2(IWR_ENABLE_ALL); 101 - # endif 102 - # else 103 - bfin_write_SIC_IWR(IWR_ENABLE_ALL); 104 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 /*
+4 -8
arch/blackfin/mm/init.c
··· 138 138 139 139 start_mem = PAGE_ALIGN(start_mem); 140 140 max_mapnr = num_physpages = MAP_NR(high_memory); 141 - printk(KERN_INFO "Kernel managed physical pages: %lu\n", 142 - num_physpages); 141 + printk(KERN_DEBUG "Kernel managed physical pages: %lu\n", num_physpages); 143 142 144 143 /* This will put all memory onto the freelists. */ 145 144 totalram_pages = free_all_bootmem(); ··· 152 153 /* do not count in kernel image between _rambase and _ramstart */ 153 154 reservedpages -= (_ramstart - _rambase) >> PAGE_SHIFT; 154 155 #if (defined(CONFIG_BFIN_ICACHE) && ANOMALY_05000263) 155 - reservedpages += (_ramend - memory_end - DMA_UNCACHED_REGION) >> 156 - PAGE_SHIFT; 156 + reservedpages += (_ramend - memory_end - DMA_UNCACHED_REGION) >> PAGE_SHIFT; 157 157 #endif 158 158 159 159 codek = (_etext - _stext) >> 10; ··· 161 163 162 164 printk(KERN_INFO 163 165 "Memory available: %luk/%luk RAM, " 164 - "(%uk init code, %uk kernel code, " 165 - "%uk data, %uk dma, %uk reserved)\n", 166 + "(%uk init code, %uk kernel code, %uk data, %uk dma, %uk reserved)\n", 166 167 (unsigned long) freepages << (PAGE_SHIFT-10), _ramend >> 10, 167 - initk, codek, datak, DMA_UNCACHED_REGION >> 10, 168 - (reservedpages << (PAGE_SHIFT-10))); 168 + initk, codek, datak, DMA_UNCACHED_REGION >> 10, (reservedpages << (PAGE_SHIFT-10))); 169 169 170 170 /* Initialize the blackfin L1 Memory. */ 171 171 l1sram_init();
+2
include/asm-blackfin/bfin-global.h
··· 70 70 extern void evt14_softirq(void); 71 71 extern asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs); 72 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 75 extern asmlinkage void finish_atomic_sections (struct pt_regs *regs); 75 76 extern char fixed_code_start; ··· 122 121 123 122 extern unsigned long table_start, table_end; 124 123 124 + extern unsigned long bfin_sic_iwr[]; 125 125 extern u16 _bfin_swrst; /* shadow for Software Reset Register (SWRST) */ 126 126 extern struct file_operations dpmc_fops; 127 127 extern char _start;
+6 -38
include/asm-blackfin/bfin5xx_spi.h
··· 1 1 /************************************************************ 2 - * 3 - * Copyright (C) 2004, Analog Devices. All Rights Reserved 2 + 3 + * Copyright (C) 2006-2008, Analog Devices. All Rights Reserved 4 4 * 5 5 * FILE bfin5xx_spi.h 6 6 * PROGRAMMER(S): Luke Yang (Analog Devices Inc.) ··· 32 32 #define SPI_BAUD_OFF 0x14 33 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 36 #define BIT_CTL_ENABLE 0x4000 73 37 #define BIT_CTL_OPENDRAIN 0x2000 ··· 111 147 #define CFG_SPI_CS5VALUE 5 112 148 #define CFG_SPI_CS6VALUE 6 113 149 #define CFG_SPI_CS7VALUE 7 150 + 151 + #define CMD_SPI_SET_BAUDRATE 2 152 + #define CMD_SPI_GET_SYSTEMCLOCK 25 153 + #define CMD_SPI_SET_WRITECONTINUOUS 26 114 154 115 155 /* device.platform_data for SSP controller devices */ 116 156 struct bfin5xx_spi_master {
+4 -4
include/asm-blackfin/dpmc.h
··· 53 53 void change_baud(int baud); 54 54 void fullon_mode(void); 55 55 void active_mode(void); 56 - void sleep_mode(u32 sic_iwr); 57 - void deep_sleep(u32 sic_iwr); 58 - void hibernate_mode(u32 sic_iwr); 59 - void sleep_deeper(u32 sic_iwr); 56 + void sleep_mode(u32 sic_iwr0, u32 sic_iwr1, u32 sic_iwr2); 57 + void deep_sleep(u32 sic_iwr0, u32 sic_iwr1, u32 sic_iwr2); 58 + void hibernate_mode(u32 sic_iwr0, u32 sic_iwr1, u32 sic_iwr2); 59 + void sleep_deeper(u32 sic_iwr0, u32 sic_iwr1, u32 sic_iwr2); 60 60 void program_wdog_timer(unsigned long); 61 61 void unmask_wdog_wakeup_evt(void); 62 62 void clear_wdog_wakeup_evt(void);
+6 -2
include/asm-blackfin/gpio.h
··· 376 376 #endif 377 377 378 378 #ifdef CONFIG_PM 379 + unsigned int bfin_pm_setup(void); 380 + void bfin_pm_restore(void); 381 + 382 + #ifndef CONFIG_BF54x 379 383 #define PM_WAKE_RISING 0x1 380 384 #define PM_WAKE_FALLING 0x2 381 385 #define PM_WAKE_HIGH 0x4 382 386 #define PM_WAKE_LOW 0x8 383 387 #define PM_WAKE_BOTH_EDGES (PM_WAKE_RISING | PM_WAKE_FALLING) 388 + #define PM_WAKE_IGNORE 0xF0 384 389 385 390 int gpio_pm_wakeup_request(unsigned gpio, unsigned char type); 386 391 void gpio_pm_wakeup_free(unsigned gpio); 387 - unsigned int gpio_pm_setup(void); 388 - void gpio_pm_restore(void); 389 392 390 393 struct gpio_port_s { 391 394 unsigned short data; ··· 412 409 unsigned short fer; 413 410 unsigned short reserved; 414 411 }; 412 + #endif /*CONFIG_BF54x*/ 415 413 #endif /*CONFIG_PM*/ 416 414 417 415 /***********************************************************
+7 -1
include/asm-blackfin/mach-bf548/blackfin.h
··· 46 46 #include "defBF544.h" 47 47 #endif 48 48 49 + #ifdef CONFIG_BF547 50 + #include "defBF547.h" 51 + #endif 52 + 49 53 #ifdef CONFIG_BF548 50 54 #include "defBF548.h" 51 55 #endif ··· 62 58 #ifdef CONFIG_BF542 63 59 #include "cdefBF542.h" 64 60 #endif 65 - 66 61 #ifdef CONFIG_BF544 67 62 #include "cdefBF544.h" 63 + #endif 64 + #ifdef CONFIG_BF547 65 + #include "cdefBF547.h" 68 66 #endif 69 67 #ifdef CONFIG_BF548 70 68 #include "cdefBF548.h"
+865
include/asm-blackfin/mach-bf548/cdefBF547.h
··· 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 */
+1244
include/asm-blackfin/mach-bf548/defBF547.h
··· 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 */
+2 -2
include/asm-blackfin/mach-bf548/defBF548.h
··· 1010 1010 #define DMA_READY 0x1 /* DMA Ready */ 1011 1011 #define FIFOFULL 0x2 /* FIFO Full */ 1012 1012 #define FIFOEMPTY 0x4 /* FIFO Empty */ 1013 - #define COMPLETE 0x8 /* DMA Complete */ 1013 + #define DMA_COMPLETE 0x8 /* DMA Complete */ 1014 1014 #define HSHK 0x10 /* Host Handshake */ 1015 - #define TIMEOUT 0x20 /* Host Timeout */ 1015 + #define HSTIMEOUT 0x20 /* Host Timeout */ 1016 1016 #define HIRQ 0x40 /* Host Interrupt Request */ 1017 1017 #define ALLOW_CNFG 0x80 /* Allow New Configuration */ 1018 1018 #define DMA_DIR 0x100 /* DMA Direction */
+4
include/asm-blackfin/mach-bf548/dma.h
··· 51 51 #define CH_PIXC_OVERLAY 16 52 52 #define CH_PIXC_OUTPUT 17 53 53 #define CH_SPORT2_RX 18 54 + #define CH_UART2_RX 18 54 55 #define CH_SPORT2_TX 19 56 + #define CH_UART2_TX 19 55 57 #define CH_SPORT3_RX 20 58 + #define CH_UART3_RX 20 56 59 #define CH_SPORT3_TX 21 60 + #define CH_UART3_TX 21 57 61 #define CH_SDH 22 58 62 #define CH_NFC 22 59 63 #define CH_SPI2 23
+8
include/asm-blackfin/mach-bf548/irq.h
··· 99 99 #define IRQ_UART2_ERROR BFIN_IRQ(31) /* UART2 Status (Error) Interrupt */ 100 100 #define IRQ_CAN0_ERROR BFIN_IRQ(32) /* CAN0 Status (Error) Interrupt */ 101 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 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 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 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 109 #define IRQ_EPPI1 BFIN_IRQ(37) /* EPP1 (DMA13) Interrupt */ 106 110 #define IRQ_EPPI2 BFIN_IRQ(38) /* EPP2 (DMA14) Interrupt */ 107 111 #define IRQ_SPI1 BFIN_IRQ(39) /* SPI1 (DMA5) Interrupt */ ··· 425 421 /* IAR4 BIT FILEDS */ 426 422 #define IRQ_CAN0_ERR_POS 0 427 423 #define IRQ_SPORT2_RX_POS 4 424 + #define IRQ_UART2_RX_POS 4 428 425 #define IRQ_SPORT2_TX_POS 8 426 + #define IRQ_UART2_TX_POS 8 429 427 #define IRQ_SPORT3_RX_POS 12 428 + #define IRQ_UART3_RX_POS 12 430 429 #define IRQ_SPORT3_TX_POS 16 430 + #define IRQ_UART3_TX_POS 16 431 431 #define IRQ_EPPI1_POS 20 432 432 #define IRQ_EPPI2_POS 24 433 433 #define IRQ_SPI1_POS 28
+20
include/asm-blackfin/mach-bf561/blackfin.h
··· 49 49 #define bfin_read_FIO_INEN() bfin_read_FIO0_INEN() 50 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 72 #endif /* _MACH_BLACKFIN_H_ */
-18
include/asm-blackfin/termios.h
··· 39 39 40 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 42 #ifdef __KERNEL__ 61 43 62 44 /* intr=^C quit=^\ erase=del kill=^U
+20 -15
include/asm-blackfin/trace.h
··· 46 46 47 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 49 #define trace_buffer_stop(preg, dreg) \ 53 50 preg.L = LO(TBUFCTL); \ 54 51 preg.H = HI(TBUFCTL); \ 55 52 dreg = 0x1; \ 56 - [preg] = dreg; 57 - 58 - #define trace_buffer_start(preg, dreg) \ 59 - preg.L = LO(TBUFCTL); \ 60 - preg.H = HI(TBUFCTL); \ 61 - dreg = BFIN_TRACE_ON; \ 62 53 [preg] = dreg; 63 54 64 55 #define trace_buffer_init(preg, dreg) \ ··· 58 67 dreg = BFIN_TRACE_INIT; \ 59 68 [preg] = dreg; 60 69 70 + #define trace_buffer_save(preg, dreg) \ 71 + preg.L = LO(TBUFCTL); \ 72 + preg.H = HI(TBUFCTL); \ 73 + dreg = [preg]; \ 74 + [sp++] = dreg; \ 75 + dreg = 0x1; \ 76 + [preg] = dreg; 77 + 78 + #define trace_buffer_restore(preg, dreg) \ 79 + preg.L = LO(TBUFCTL); \ 80 + preg.H = HI(TBUFCTL); \ 81 + dreg = [sp--]; \ 82 + [preg] = dreg; 83 + 61 84 #else /* CONFIG_DEBUG_BFIN_HWTRACE_ON */ 62 85 63 86 #define trace_buffer_stop(preg, dreg) 64 - #define trace_buffer_start(preg, dreg) 65 87 #define trace_buffer_init(preg, dreg) 88 + #define trace_buffer_save(preg, dreg) 89 + #define trace_buffer_restore(preg, dreg) 66 90 67 91 #endif /* CONFIG_DEBUG_BFIN_HWTRACE_ON */ 68 92 69 93 #ifdef CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE 70 - # define DEBUG_START_HWTRACE(preg, dreg) trace_buffer_start(preg, dreg) 71 - # define DEBUG_STOP_HWTRACE(preg, dreg) trace_buffer_stop(preg, dreg) 72 - 94 + # define DEBUG_HWTRACE_SAVE(preg, dreg) trace_buffer_save(preg, dreg) 95 + # define DEBUG_HWTRACE_RESTORE(preg, dreg) trace_buffer_restore(preg, dreg) 73 96 #else 74 - # define DEBUG_START_HWTRACE(preg, dreg) 75 - # define DEBUG_STOP_HWTRACE(preg, dreg) 97 + # define DEBUG_HWTRACE_SAVE(preg, dreg) 98 + # define DEBUG_HWTRACE_RESTORE(preg, dreg) 76 99 #endif 77 100 78 101 #endif /* __ASSEMBLY__ */