Commit 525995d7 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin: (88 commits)
  Blackfin: Convert BUG() to use unreachable()
  Blackfin: define __NR_recvmmsg
  Blackfin: drop duplicate sched_clock
  Blackfin: NOMPU: skip DMA ICPLB hole when it is redundant
  Blackfin: MPU: add missing __init markings
  Blackfin: add support for TIF_NOTIFY_RESUME
  Blackfin: kgdb_test: clean up code a bit
  Blackfin: convert kgdbtest to proc_fops
  Blackfin: convert cyc2ns() to clocksource_cyc2ns()
  Blackfin: ip0x: pull in asm/portmux.h for P_xxx defines
  Blackfin: drop unused ax88180 resources
  Blackfin: bf537-stamp: add ADF702x network driver resources
  Blackfin: bf537-stamp: add CAN resources
  Blackfin: bf537-stamp: add AD5258 i2c address
  Blackfin: bf537-stamp: add adau1761 i2c address
  Blackfin: bf537-stamp: add adau1371 i2c address
  Blackfin: bf537-stamp: add ADP8870 resources
  Blackfin: bf537-stamp: kill AD714x board-specific Kconfigs
  Blackfin: bf537-stamp: update ADP5520 resources
  Blackfin: bf537-stamp: add ADXL346 orientation sensing support
  ...
parents e4bdda1b 64a2b168
00-INDEX 00-INDEX
- This file - This file
cache-lock.txt
- HOWTO for blackfin cache locking.
cachefeatures.txt cachefeatures.txt
- Supported cache features. - Supported cache features.
......
obj-m := gptimers-example.o
all: modules
modules clean:
$(MAKE) -C ../.. SUBDIRS=$(PWD) $@
/*
* File: Documentation/blackfin/cache-lock.txt
* Based on:
* Author:
*
* Created:
* Description: This file contains the simple DMA Implementation for Blackfin
*
* Rev: $Id: cache-lock.txt 2384 2006-11-01 04:12:43Z magicyang $
*
* Modified:
* Copyright 2004-2006 Analog Devices Inc.
*
* Bugs: Enter bugs at http://blackfin.uclinux.org/
*
*/
How to lock your code in cache in uClinux/blackfin
--------------------------------------------------
There are only a few steps required to lock your code into the cache.
Currently you can lock the code by Way.
Below are the interface provided for locking the cache.
1. cache_grab_lock(int Ways);
This function grab the lock for locking your code into the cache specified
by Ways.
2. cache_lock(int Ways);
This function should be called after your critical code has been executed.
Once the critical code exits, the code is now loaded into the cache. This
function locks the code into the cache.
So, the example sequence will be:
cache_grab_lock(WAY0_L); /* Grab the lock */
critical_code(); /* Execute the code of interest */
cache_lock(WAY0_L); /* Lock the cache */
Where WAY0_L signifies WAY0 locking.
...@@ -41,16 +41,6 @@ ...@@ -41,16 +41,6 @@
icplb_flush(); icplb_flush();
dcplb_flush(); dcplb_flush();
- Locking the cache.
cache_grab_lock();
cache_lock();
Please refer linux-2.6.x/Documentation/blackfin/cache-lock.txt for how to
lock the cache.
Locking the cache is optional feature.
- Miscellaneous cache functions. - Miscellaneous cache functions.
flush_cache_all(); flush_cache_all();
......
/*
* Simple gptimers example
* http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:drivers:gptimers
*
* Copyright 2007-2009 Analog Devices Inc.
*
* Licensed under the GPL-2 or later.
*/
#include <linux/interrupt.h>
#include <linux/module.h>
#include <asm/gptimers.h>
#include <asm/portmux.h>
/* ... random driver includes ... */
#define DRIVER_NAME "gptimer_example"
struct gptimer_data {
uint32_t period, width;
};
static struct gptimer_data data;
/* ... random driver state ... */
static irqreturn_t gptimer_example_irq(int irq, void *dev_id)
{
struct gptimer_data *data = dev_id;
/* make sure it was our timer which caused the interrupt */
if (!get_gptimer_intr(TIMER5_id))
return IRQ_NONE;
/* read the width/period values that were captured for the waveform */
data->width = get_gptimer_pwidth(TIMER5_id);
data->period = get_gptimer_period(TIMER5_id);
/* acknowledge the interrupt */
clear_gptimer_intr(TIMER5_id);
/* tell the upper layers we took care of things */
return IRQ_HANDLED;
}
/* ... random driver code ... */
static int __init gptimer_example_init(void)
{
int ret;
/* grab the peripheral pins */
ret = peripheral_request(P_TMR5, DRIVER_NAME);
if (ret) {
printk(KERN_NOTICE DRIVER_NAME ": peripheral request failed\n");
return ret;
}
/* grab the IRQ for the timer */
ret = request_irq(IRQ_TIMER5, gptimer_example_irq, IRQF_SHARED, DRIVER_NAME, &data);
if (ret) {
printk(KERN_NOTICE DRIVER_NAME ": IRQ request failed\n");
peripheral_free(P_TMR5);
return ret;
}
/* setup the timer and enable it */
set_gptimer_config(TIMER5_id, WDTH_CAP | PULSE_HI | PERIOD_CNT | IRQ_ENA);
enable_gptimers(TIMER5bit);
return 0;
}
module_init(gptimer_example_init);
static void __exit gptimer_example_exit(void)
{
disable_gptimers(TIMER5bit);
free_irq(IRQ_TIMER5, &data);
peripheral_free(P_TMR5);
}
module_exit(gptimer_example_exit);
MODULE_LICENSE("BSD");
...@@ -32,6 +32,9 @@ config BLACKFIN ...@@ -32,6 +32,9 @@ config BLACKFIN
select HAVE_OPROFILE select HAVE_OPROFILE
select ARCH_WANT_OPTIONAL_GPIOLIB select ARCH_WANT_OPTIONAL_GPIOLIB
config GENERIC_CSUM
def_bool y
config GENERIC_BUG config GENERIC_BUG
def_bool y def_bool y
depends on BUG depends on BUG
...@@ -177,7 +180,7 @@ config BF539 ...@@ -177,7 +180,7 @@ config BF539
help help
BF539 Processor Support. BF539 Processor Support.
config BF542 config BF542_std
bool "BF542" bool "BF542"
help help
BF542 Processor Support. BF542 Processor Support.
...@@ -187,7 +190,7 @@ config BF542M ...@@ -187,7 +190,7 @@ config BF542M
help help
BF542 Processor Support. BF542 Processor Support.
config BF544 config BF544_std
bool "BF544" bool "BF544"
help help
BF544 Processor Support. BF544 Processor Support.
...@@ -197,7 +200,7 @@ config BF544M ...@@ -197,7 +200,7 @@ config BF544M
help help
BF544 Processor Support. BF544 Processor Support.
config BF547 config BF547_std
bool "BF547" bool "BF547"
help help
BF547 Processor Support. BF547 Processor Support.
...@@ -207,7 +210,7 @@ config BF547M ...@@ -207,7 +210,7 @@ config BF547M
help help
BF547 Processor Support. BF547 Processor Support.
config BF548 config BF548_std
bool "BF548" bool "BF548"
help help
BF548 Processor Support. BF548 Processor Support.
...@@ -217,7 +220,7 @@ config BF548M ...@@ -217,7 +220,7 @@ config BF548M
help help
BF548 Processor Support. BF548 Processor Support.
config BF549 config BF549_std
bool "BF549" bool "BF549"
help help
BF549 Processor Support. BF549 Processor Support.
...@@ -311,31 +314,11 @@ config BF_REV_NONE ...@@ -311,31 +314,11 @@ config BF_REV_NONE
endchoice endchoice
config BF51x
bool
depends on (BF512 || BF514 || BF516 || BF518)
default y
config BF52x
bool
depends on (BF522 || BF523 || BF524 || BF525 || BF526 || BF527)
default y
config BF53x config BF53x
bool bool
depends on (BF531 || BF532 || BF533 || BF534 || BF536 || BF537) depends on (BF531 || BF532 || BF533 || BF534 || BF536 || BF537)
default y default y
config BF54xM
bool
depends on (BF542M || BF544M || BF547M || BF548M || BF549M)
default y
config BF54x
bool
depends on (BF542 || BF544 || BF547 || BF548 || BF549 || BF54xM)
default y
config MEM_GENERIC_BOARD config MEM_GENERIC_BOARD
bool bool
depends on GENERIC_BOARD depends on GENERIC_BOARD
...@@ -917,6 +900,12 @@ config DMA_UNCACHED_2M ...@@ -917,6 +900,12 @@ config DMA_UNCACHED_2M
bool "Enable 2M DMA region" bool "Enable 2M DMA region"
config DMA_UNCACHED_1M config DMA_UNCACHED_1M
bool "Enable 1M DMA region" bool "Enable 1M DMA region"
config DMA_UNCACHED_512K
bool "Enable 512K DMA region"
config DMA_UNCACHED_256K
bool "Enable 256K DMA region"
config DMA_UNCACHED_128K
bool "Enable 128K DMA region"
config DMA_UNCACHED_NONE config DMA_UNCACHED_NONE
bool "Disable DMA region" bool "Disable DMA region"
endchoice endchoice
...@@ -1278,6 +1267,8 @@ source "net/Kconfig" ...@@ -1278,6 +1267,8 @@ source "net/Kconfig"
source "drivers/Kconfig" source "drivers/Kconfig"
source "drivers/firmware/Kconfig"
source "fs/Kconfig" source "fs/Kconfig"
source "arch/blackfin/Kconfig.debug" source "arch/blackfin/Kconfig.debug"
......
...@@ -16,6 +16,7 @@ GZFLAGS := -9 ...@@ -16,6 +16,7 @@ GZFLAGS := -9
KBUILD_CFLAGS += $(call cc-option,-mno-fdpic) KBUILD_CFLAGS += $(call cc-option,-mno-fdpic)
KBUILD_AFLAGS += $(call cc-option,-mno-fdpic) KBUILD_AFLAGS += $(call cc-option,-mno-fdpic)
CFLAGS_MODULE += -mlong-calls CFLAGS_MODULE += -mlong-calls
LDFLAGS_MODULE += -m elf32bfin
KALLSYMS += --symbol-prefix=_ KALLSYMS += --symbol-prefix=_
KBUILD_DEFCONFIG := BF537-STAMP_defconfig KBUILD_DEFCONFIG := BF537-STAMP_defconfig
...@@ -137,7 +138,7 @@ archclean: ...@@ -137,7 +138,7 @@ archclean:
INSTALL_PATH ?= /tftpboot INSTALL_PATH ?= /tftpboot
boot := arch/$(ARCH)/boot boot := arch/$(ARCH)/boot
BOOT_TARGETS = vmImage vmImage.bz2 vmImage.gz vmImage.lzma BOOT_TARGETS = vmImage vmImage.bin vmImage.bz2 vmImage.gz vmImage.lzma
PHONY += $(BOOT_TARGETS) install PHONY += $(BOOT_TARGETS) install
KBUILD_IMAGE := $(boot)/vmImage KBUILD_IMAGE := $(boot)/vmImage
...@@ -151,6 +152,7 @@ install: ...@@ -151,6 +152,7 @@ install:
define archhelp define archhelp
echo '* vmImage - Alias to selected kernel format (vmImage.gz by default)' echo '* vmImage - Alias to selected kernel format (vmImage.gz by default)'
echo ' vmImage.bin - Uncompressed Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage.bin)'
echo ' vmImage.bz2 - Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage.bz2)' echo ' vmImage.bz2 - Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage.bz2)'
echo '* vmImage.gz - Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage.gz)' echo '* vmImage.gz - Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage.gz)'
echo ' vmImage.lzma - Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage.lzma)' echo ' vmImage.lzma - Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage.lzma)'
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
MKIMAGE := $(srctree)/scripts/mkuboot.sh MKIMAGE := $(srctree)/scripts/mkuboot.sh
targets := vmImage vmImage.bz2 vmImage.gz vmImage.lzma targets := vmImage vmImage.bin vmImage.bz2 vmImage.gz vmImage.lzma
extra-y += vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma extra-y += vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma
quiet_cmd_uimage = UIMAGE $@ quiet_cmd_uimage = UIMAGE $@
...@@ -29,6 +29,9 @@ $(obj)/vmlinux.bin.bz2: $(obj)/vmlinux.bin FORCE ...@@ -29,6 +29,9 @@ $(obj)/vmlinux.bin.bz2: $(obj)/vmlinux.bin FORCE
$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FORCE $(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FORCE
$(call if_changed,lzma) $(call if_changed,lzma)
$(obj)/vmImage.bin: $(obj)/vmlinux.bin
$(call if_changed,uimage,none)
$(obj)/vmImage.bz2: $(obj)/vmlinux.bin.bz2 $(obj)/vmImage.bz2: $(obj)/vmlinux.bin.bz2
$(call if_changed,uimage,bzip2) $(call if_changed,uimage,bzip2)
...@@ -38,6 +41,7 @@ $(obj)/vmImage.gz: $(obj)/vmlinux.bin.gz ...@@ -38,6 +41,7 @@ $(obj)/vmImage.gz: $(obj)/vmlinux.bin.gz
$(obj)/vmImage.lzma: $(obj)/vmlinux.bin.lzma $(obj)/vmImage.lzma: $(obj)/vmlinux.bin.lzma
$(call if_changed,uimage,lzma) $(call if_changed,uimage,lzma)
suffix-y := bin
suffix-$(CONFIG_KERNEL_GZIP) := gz suffix-$(CONFIG_KERNEL_GZIP) := gz
suffix-$(CONFIG_KERNEL_BZIP2) := bz2 suffix-$(CONFIG_KERNEL_BZIP2) := bz2
suffix-$(CONFIG_KERNEL_LZMA) := lzma suffix-$(CONFIG_KERNEL_LZMA) := lzma
......
...@@ -67,6 +67,7 @@ CONFIG_COMPAT_BRK=y ...@@ -67,6 +67,7 @@ CONFIG_COMPAT_BRK=y
CONFIG_SLAB=y CONFIG_SLAB=y
# CONFIG_SLUB is not set # CONFIG_SLUB is not set
# CONFIG_SLOB is not set # CONFIG_SLOB is not set
CONFIG_MMAP_ALLOW_UNINITIALIZED=y
# CONFIG_PROFILING is not set # CONFIG_PROFILING is not set
# CONFIG_MARKERS is not set # CONFIG_MARKERS is not set
CONFIG_HAVE_OPROFILE=y CONFIG_HAVE_OPROFILE=y
...@@ -316,6 +317,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 ...@@ -316,6 +317,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_PHYS_ADDR_T_64BIT is not set # CONFIG_PHYS_ADDR_T_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1 CONFIG_ZONE_DMA_FLAG=1
CONFIG_VIRT_TO_BUS=y CONFIG_VIRT_TO_BUS=y
CONFIG_NOMMU_INITIAL_TRIM_EXCESS=0
CONFIG_BFIN_GPTIMERS=m CONFIG_BFIN_GPTIMERS=m
# CONFIG_DMA_UNCACHED_4M is not set # CONFIG_DMA_UNCACHED_4M is not set
# CONFIG_DMA_UNCACHED_2M is not set # CONFIG_DMA_UNCACHED_2M is not set
...@@ -438,17 +440,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" ...@@ -438,17 +440,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TIPC is not set # CONFIG_TIPC is not set
# CONFIG_ATM is not set # CONFIG_ATM is not set
# CONFIG_BRIDGE is not set # CONFIG_BRIDGE is not set
CONFIG_NET_DSA=y # CONFIG_NET_DSA is not set
# CONFIG_NET_DSA_TAG_DSA is not set
# CONFIG_NET_DSA_TAG_EDSA is not set
# CONFIG_NET_DSA_TAG_TRAILER is not set
CONFIG_NET_DSA_TAG_STPID=y
# CONFIG_NET_DSA_MV88E6XXX is not set
# CONFIG_NET_DSA_MV88E6060 is not set
# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set
# CONFIG_NET_DSA_MV88E6131 is not set
# CONFIG_NET_DSA_MV88E6123_61_65 is not set
CONFIG_NET_DSA_KSZ8893M=y
# CONFIG_VLAN_8021Q is not set # CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set # CONFIG_DECNET is not set
# CONFIG_LLC2 is not set # CONFIG_LLC2 is not set
......
...@@ -67,6 +67,7 @@ CONFIG_COMPAT_BRK=y ...@@ -67,6 +67,7 @@ CONFIG_COMPAT_BRK=y
CONFIG_SLAB=y CONFIG_SLAB=y
# CONFIG_SLUB is not set # CONFIG_SLUB is not set
# CONFIG_SLOB is not set # CONFIG_SLOB is not set
CONFIG_MMAP_ALLOW_UNINITIALIZED=y
# CONFIG_PROFILING is not set # CONFIG_PROFILING is not set
# CONFIG_MARKERS is not set # CONFIG_MARKERS is not set
CONFIG_HAVE_OPROFILE=y CONFIG_HAVE_OPROFILE=y
...@@ -321,6 +322,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 ...@@ -321,6 +322,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_PHYS_ADDR_T_64BIT is not set # CONFIG_PHYS_ADDR_T_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1 CONFIG_ZONE_DMA_FLAG=1
CONFIG_VIRT_TO_BUS=y CONFIG_VIRT_TO_BUS=y
CONFIG_NOMMU_INITIAL_TRIM_EXCESS=0
CONFIG_BFIN_GPTIMERS=m CONFIG_BFIN_GPTIMERS=m
# CONFIG_DMA_UNCACHED_4M is not set # CONFIG_DMA_UNCACHED_4M is not set
# CONFIG_DMA_UNCACHED_2M is not set # CONFIG_DMA_UNCACHED_2M is not set
......
...@@ -67,6 +67,7 @@ CONFIG_COMPAT_BRK=y ...@@ -67,6 +67,7 @@ CONFIG_COMPAT_BRK=y
CONFIG_SLAB=y CONFIG_SLAB=y
# CONFIG_SLUB is not set # CONFIG_SLUB is not set
# CONFIG_SLOB is not set # CONFIG_SLOB is not set
CONFIG_MMAP_ALLOW_UNINITIALIZED=y
# CONFIG_PROFILING is not set # CONFIG_PROFILING is not set
# CONFIG_MARKERS is not set # CONFIG_MARKERS is not set
CONFIG_HAVE_OPROFILE=y CONFIG_HAVE_OPROFILE=y
...@@ -321,6 +322,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 ...@@ -321,6 +322,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_PHYS_ADDR_T_64BIT is not set # CONFIG_PHYS_ADDR_T_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1 CONFIG_ZONE_DMA_FLAG=1
CONFIG_VIRT_TO_BUS=y CONFIG_VIRT_TO_BUS=y
CONFIG_NOMMU_INITIAL_TRIM_EXCESS=0
CONFIG_BFIN_GPTIMERS=y CONFIG_BFIN_GPTIMERS=y
# CONFIG_DMA_UNCACHED_4M is not set # CONFIG_DMA_UNCACHED_4M is not set
# CONFIG_DMA_UNCACHED_2M is not set # CONFIG_DMA_UNCACHED_2M is not set
......
...@@ -67,6 +67,7 @@ CONFIG_COMPAT_BRK=y ...@@ -67,6 +67,7 @@ CONFIG_COMPAT_BRK=y
CONFIG_SLAB=y CONFIG_SLAB=y
# CONFIG_SLUB is not set # CONFIG_SLUB is not set
# CONFIG_SLOB is not set # CONFIG_SLOB is not set
CONFIG_MMAP_ALLOW_UNINITIALIZED=y
# CONFIG_PROFILING is not set # CONFIG_PROFILING is not set
# CONFIG_MARKERS is not set # CONFIG_MARKERS is not set
CONFIG_HAVE_OPROFILE=y CONFIG_HAVE_OPROFILE=y
...@@ -283,6 +284,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 ...@@ -283,6 +284,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_PHYS_ADDR_T_64BIT is not set # CONFIG_PHYS_ADDR_T_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1 CONFIG_ZONE_DMA_FLAG=1
CONFIG_VIRT_TO_BUS=y CONFIG_VIRT_TO_BUS=y
CONFIG_NOMMU_INITIAL_TRIM_EXCESS=0
CONFIG_BFIN_GPTIMERS=m CONFIG_BFIN_GPTIMERS=m
# CONFIG_DMA_UNCACHED_4M is not set # CONFIG_DMA_UNCACHED_4M is not set
# CONFIG_DMA_UNCACHED_2M is not set # CONFIG_DMA_UNCACHED_2M is not set
......
...@@ -67,6 +67,7 @@ CONFIG_COMPAT_BRK=y ...@@ -67,6 +67,7 @@ CONFIG_COMPAT_BRK=y
CONFIG_SLAB=y CONFIG_SLAB=y
# CONFIG_SLUB is not set # CONFIG_SLUB is not set
# CONFIG_SLOB is not set # CONFIG_SLOB is not set
CONFIG_MMAP_ALLOW_UNINITIALIZED=y
# CONFIG_PROFILING is not set # CONFIG_PROFILING is not set
# CONFIG_MARKERS is not set # CONFIG_MARKERS is not set
CONFIG_HAVE_OPROFILE=y CONFIG_HAVE_OPROFILE=y
...@@ -283,6 +284,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 ...@@ -283,6 +284,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_PHYS_ADDR_T_64BIT is not set # CONFIG_PHYS_ADDR_T_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1 CONFIG_ZONE_DMA_FLAG=1
CONFIG_VIRT_TO_BUS=y CONFIG_VIRT_TO_BUS=y
CONFIG_NOMMU_INITIAL_TRIM_EXCESS=0
CONFIG_BFIN_GPTIMERS=m CONFIG_BFIN_GPTIMERS=m
# CONFIG_DMA_UNCACHED_4M is not set # CONFIG_DMA_UNCACHED_4M is not set
# CONFIG_DMA_UNCACHED_2M is not set # CONFIG_DMA_UNCACHED_2M is not set
......
...@@ -67,6 +67,7 @@ CONFIG_COMPAT_BRK=y ...@@ -67,6 +67,7 @@ CONFIG_COMPAT_BRK=y
CONFIG_SLAB=y CONFIG_SLAB=y
# CONFIG_SLUB is not set # CONFIG_SLUB is not set
# CONFIG_SLOB is not set # CONFIG_SLOB is not set
CONFIG_MMAP_ALLOW_UNINITIALIZED=y
# CONFIG_PROFILING is not set # CONFIG_PROFILING is not set
# CONFIG_MARKERS is not set # CONFIG_MARKERS is not set
CONFIG_HAVE_OPROFILE=y CONFIG_HAVE_OPROFILE=y
...@@ -290,6 +291,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 ...@@ -290,6 +291,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_PHYS_ADDR_T_64BIT is not set # CONFIG_PHYS_ADDR_T_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1 CONFIG_ZONE_DMA_FLAG=1
CONFIG_VIRT_TO_BUS=y CONFIG_VIRT_TO_BUS=y
CONFIG_NOMMU_INITIAL_TRIM_EXCESS=0
CONFIG_BFIN_GPTIMERS=m CONFIG_BFIN_GPTIMERS=m
# CONFIG_DMA_UNCACHED_4M is not set # CONFIG_DMA_UNCACHED_4M is not set
# CONFIG_DMA_UNCACHED_2M is not set # CONFIG_DMA_UNCACHED_2M is not set
...@@ -704,10 +706,7 @@ CONFIG_CONFIG_INPUT_PCF8574=m ...@@ -704,10 +706,7 @@ CONFIG_CONFIG_INPUT_PCF8574=m
# #
# Hardware I/O ports # Hardware I/O ports
# #
CONFIG_SERIO=y # CONFIG_SERIO is not set
CONFIG_SERIO_SERPORT=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_RAW is not set
# CONFIG_GAMEPORT is not set # CONFIG_GAMEPORT is not set
# #
......
...@@ -67,6 +67,7 @@ CONFIG_COMPAT_BRK=y ...@@ -67,6 +67,7 @@ CONFIG_COMPAT_BRK=y
CONFIG_SLAB=y CONFIG_SLAB=y
# CONFIG_SLUB is not set # CONFIG_SLUB is not set
# CONFIG_SLOB is not set # CONFIG_SLOB is not set
CONFIG_MMAP_ALLOW_UNINITIALIZED=y
# CONFIG_PROFILING is not set # CONFIG_PROFILING is not set
# CONFIG_MARKERS is not set # CONFIG_MARKERS is not set
CONFIG_HAVE_OPROFILE=y CONFIG_HAVE_OPROFILE=y
...@@ -301,6 +302,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 ...@@ -301,6 +302,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_PHYS_ADDR_T_64BIT is not set # CONFIG_PHYS_ADDR_T_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1 CONFIG_ZONE_DMA_FLAG=1
CONFIG_VIRT_TO_BUS=y CONFIG_VIRT_TO_BUS=y
CONFIG_NOMMU_INITIAL_TRIM_EXCESS=0
CONFIG_BFIN_GPTIMERS=m CONFIG_BFIN_GPTIMERS=m
# CONFIG_DMA_UNCACHED_4M is not set # CONFIG_DMA_UNCACHED_4M is not set
# CONFIG_DMA_UNCACHED_2M is not set # CONFIG_DMA_UNCACHED_2M is not set
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -66,6 +66,7 @@ CONFIG_VM_EVENT_COUNTERS=y ...@@ -66,6 +66,7 @@ CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLAB=y CONFIG_SLAB=y
# CONFIG_SLUB is not set # CONFIG_SLUB is not set
# CONFIG_SLOB is not set # CONFIG_SLOB is not set
CONFIG_MMAP_ALLOW_UNINITIALIZED=y
# CONFIG_PROFILING is not set # CONFIG_PROFILING is not set
# CONFIG_MARKERS is not set # CONFIG_MARKERS is not set
CONFIG_HAVE_OPROFILE=y CONFIG_HAVE_OPROFILE=y
...@@ -275,6 +276,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 ...@@ -275,6 +276,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_RESOURCES_64BIT is not set # CONFIG_RESOURCES_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1 CONFIG_ZONE_DMA_FLAG=1
CONFIG_VIRT_TO_BUS=y CONFIG_VIRT_TO_BUS=y
CONFIG_NOMMU_INITIAL_TRIM_EXCESS=0
CONFIG_BFIN_GPTIMERS=y CONFIG_BFIN_GPTIMERS=y
# CONFIG_DMA_UNCACHED_4M is not set # CONFIG_DMA_UNCACHED_4M is not set
# CONFIG_DMA_UNCACHED_2M is not set # CONFIG_DMA_UNCACHED_2M is not set
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -67,6 +67,7 @@ CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 ...@@ -67,6 +67,7 @@ CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3
CONFIG_SLAB=y CONFIG_SLAB=y
# CONFIG_SLUB is not set # CONFIG_SLUB is not set
# CONFIG_SLOB is not set # CONFIG_SLOB is not set
CONFIG_MMAP_ALLOW_UNINITIALIZED=y
CONFIG_RT_MUTEXES=y CONFIG_RT_MUTEXES=y
CONFIG_TINY_SHMEM=y CONFIG_TINY_SHMEM=y
CONFIG_BASE_SMALL=0 CONFIG_BASE_SMALL=0
...@@ -249,6 +250,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 ...@@ -249,6 +250,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_RESOURCES_64BIT is not set # CONFIG_RESOURCES_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1 CONFIG_ZONE_DMA_FLAG=1
CONFIG_LARGE_ALLOCS=y CONFIG_LARGE_ALLOCS=y
CONFIG_NOMMU_INITIAL_TRIM_EXCESS=0
CONFIG_BFIN_GPTIMERS=y CONFIG_BFIN_GPTIMERS=y
# CONFIG_DMA_UNCACHED_2M is not set # CONFIG_DMA_UNCACHED_2M is not set
CONFIG_DMA_UNCACHED_1M=y CONFIG_DMA_UNCACHED_1M=y
......
...@@ -68,6 +68,7 @@ CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 ...@@ -68,6 +68,7 @@ CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3
CONFIG_SLAB=y CONFIG_SLAB=y
# CONFIG_SLUB is not set # CONFIG_SLUB is not set
# CONFIG_SLOB is not set # CONFIG_SLOB is not set
CONFIG_MMAP_ALLOW_UNINITIALIZED=y
CONFIG_RT_MUTEXES=y CONFIG_RT_MUTEXES=y
CONFIG_TINY_SHMEM=y CONFIG_TINY_SHMEM=y
CONFIG_BASE_SMALL=0 CONFIG_BASE_SMALL=0
...@@ -261,6 +262,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 ...@@ -261,6 +262,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_RESOURCES_64BIT is not set # CONFIG_RESOURCES_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1 CONFIG_ZONE_DMA_FLAG=1
CONFIG_LARGE_ALLOCS=y CONFIG_LARGE_ALLOCS=y
CONFIG_NOMMU_INITIAL_TRIM_EXCESS=0
# CONFIG_BFIN_GPTIMERS is not set # CONFIG_BFIN_GPTIMERS is not set
# CONFIG_DMA_UNCACHED_2M is not set # CONFIG_DMA_UNCACHED_2M is not set
CONFIG_DMA_UNCACHED_1M=y CONFIG_DMA_UNCACHED_1M=y
......
...@@ -63,6 +63,7 @@ CONFIG_COMPAT_BRK=y ...@@ -63,6 +63,7 @@ CONFIG_COMPAT_BRK=y
CONFIG_SLAB=y CONFIG_SLAB=y
# CONFIG_SLUB is not set # CONFIG_SLUB is not set
# CONFIG_SLOB is not set # CONFIG_SLOB is not set
CONFIG_MMAP_ALLOW_UNINITIALIZED=y
# CONFIG_PROFILING is not set # CONFIG_PROFILING is not set
# CONFIG_MARKERS is not set # CONFIG_MARKERS is not set
CONFIG_HAVE_OPROFILE=y CONFIG_HAVE_OPROFILE=y
...@@ -285,6 +286,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 ...@@ -285,6 +286,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_PHYS_ADDR_T_64BIT is not set # CONFIG_PHYS_ADDR_T_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1 CONFIG_ZONE_DMA_FLAG=1
CONFIG_VIRT_TO_BUS=y CONFIG_VIRT_TO_BUS=y
CONFIG_NOMMU_INITIAL_TRIM_EXCESS=0
CONFIG_BFIN_GPTIMERS=y CONFIG_BFIN_GPTIMERS=y
# CONFIG_DMA_UNCACHED_4M is not set # CONFIG_DMA_UNCACHED_4M is not set
# CONFIG_DMA_UNCACHED_2M is not set # CONFIG_DMA_UNCACHED_2M is not set
......
...@@ -72,6 +72,7 @@ CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 ...@@ -72,6 +72,7 @@ CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3
CONFIG_SLAB=y CONFIG_SLAB=y
# CONFIG_SLUB is not set # CONFIG_SLUB is not set
# CONFIG_SLOB is not set # CONFIG_SLOB is not set
CONFIG_MMAP_ALLOW_UNINITIALIZED=y
CONFIG_RT_MUTEXES=y CONFIG_RT_MUTEXES=y
CONFIG_TINY_SHMEM=y CONFIG_TINY_SHMEM=y
CONFIG_BASE_SMALL=0 CONFIG_BASE_SMALL=0
...@@ -271,6 +272,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 ...@@ -271,6 +272,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_RESOURCES_64BIT is not set # CONFIG_RESOURCES_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1 CONFIG_ZONE_DMA_FLAG=1
CONFIG_LARGE_ALLOCS=y CONFIG_LARGE_ALLOCS=y
CONFIG_NOMMU_INITIAL_TRIM_EXCESS=0
CONFIG_DMA_UNCACHED_2M=y CONFIG_DMA_UNCACHED_2M=y
# CONFIG_DMA_UNCACHED_1M is not set # CONFIG_DMA_UNCACHED_1M is not set
# CONFIG_DMA_UNCACHED_NONE is not set # CONFIG_DMA_UNCACHED_NONE is not set
...@@ -700,7 +702,7 @@ CONFIG_INPUT_MISC=y ...@@ -700,7 +702,7 @@ CONFIG_INPUT_MISC=y
# CONFIG_INPUT_YEALINK is not set # CONFIG_INPUT_YEALINK is not set
CONFIG_INPUT_UINPUT=y CONFIG_INPUT_UINPUT=y
# CONFIG_BF53X_PFBUTTONS is not set # CONFIG_BF53X_PFBUTTONS is not set
# CONFIG_TWI_KEYPAD is not set # CONFIG_INPUT_PCF8574 is not set
# #
# Hardware I/O ports # Hardware I/O ports
......
This diff is collapsed.
...@@ -11,9 +11,6 @@ ...@@ -11,9 +11,6 @@
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
#include <asm/sections.h>
#include <asm/ptrace.h>
#include <asm/user.h>
#include <linux/linkage.h> #include <linux/linkage.h>
#include <linux/types.h> #include <linux/types.h>
...@@ -23,6 +20,12 @@ ...@@ -23,6 +20,12 @@
# define DMA_UNCACHED_REGION (2 * 1024 * 1024) # define DMA_UNCACHED_REGION (2 * 1024 * 1024)
#elif defined(CONFIG_DMA_UNCACHED_1M) #elif defined(CONFIG_DMA_UNCACHED_1M)
# define DMA_UNCACHED_REGION (1024 * 1024) # define DMA_UNCACHED_REGION (1024 * 1024)
#elif defined(CONFIG_DMA_UNCACHED_512K)
# define DMA_UNCACHED_REGION (512 * 1024)
#elif defined(CONFIG_DMA_UNCACHED_256K)
# define DMA_UNCACHED_REGION (256 * 1024)
#elif defined(CONFIG_DMA_UNCACHED_128K)
# define DMA_UNCACHED_REGION (128 * 1024)
#else #else
# define DMA_UNCACHED_REGION (0) # define DMA_UNCACHED_REGION (0)
#endif #endif
...@@ -35,6 +38,7 @@ extern unsigned long get_sclk(void); ...@@ -35,6 +38,7 @@ extern unsigned long get_sclk(void);
extern unsigned long sclk_to_usecs(unsigned long sclk); extern unsigned long sclk_to_usecs(unsigned long sclk);
extern unsigned long usecs_to_sclk(unsigned long usecs); extern unsigned long usecs_to_sclk(unsigned long usecs);
struct pt_regs;
extern void dump_bfin_process(struct pt_regs *regs); extern void dump_bfin_process(struct pt_regs *regs);
extern void dump_bfin_mem(struct pt_regs *regs); extern void dump_bfin_mem(struct pt_regs *regs);
extern void dump_bfin_trace_buffer(void); extern void dump_bfin_trace_buffer(void);
......
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
#define BUG() \ #define BUG() \
do { \ do { \
_BUG_OR_WARN(0); \ _BUG_OR_WARN(0); \
for (;;); \ unreachable(); \
} while (0) } while (0)
#define WARN_ON(condition) \ #define WARN_ON(condition) \
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#define _BLACKFIN_CACHEFLUSH_H #define _BLACKFIN_CACHEFLUSH_H
#include <asm/blackfin.h> /* for SSYNC() */ #include <asm/blackfin.h> /* for SSYNC() */
#include <asm/sections.h> /* for _ramend */
extern void blackfin_icache_flush_range(unsigned long start_address, unsigned long end_address); extern void blackfin_icache_flush_range(unsigned long start_address, unsigned long end_address);
extern void blackfin_dcache_flush_range(unsigned long start_address, unsigned long end_address); extern void blackfin_dcache_flush_range(unsigned long start_address, unsigned long end_address);
......
...@@ -8,64 +8,13 @@ ...@@ -8,64 +8,13 @@
#ifndef _BFIN_CHECKSUM_H #ifndef _BFIN_CHECKSUM_H
#define _BFIN_CHECKSUM_H #define _BFIN_CHECKSUM_H
/*
* computes the checksum of a memory block at buff, length len,
* and adds in "sum" (32-bit)
*
* returns a 32-bit number suitable for feeding into itself
* or csum_tcpudp_magic
*
* this function must be called with even lengths, except
* for the last fragment, which may be odd
*
* it's best to have buff aligned on a 32-bit boundary
*/
__wsum csum_partial(const void *buff, int len, __wsum sum);
/*
* the same as csum_partial, but copies from src while it
* checksums
*
* here even more important to align src and dst on a 32-bit (or even
* better 64-bit) boundary
*/
__wsum csum_partial_copy(const void *src, void *dst,
int len, __wsum sum);
/*
* the same as csum_partial_copy, but copies from user space.
*
* here even more important to align src and dst on a 32-bit (or even
* better 64-bit) boundary
*/
extern __wsum csum_partial_copy_from_user(const void __user *src, void *dst,
int len, __wsum sum, int *csum_err);
#define csum_partial_copy_nocheck(src, dst, len, sum) \
csum_partial_copy((src), (dst), (len), (sum))
__sum16 ip_fast_csum(unsigned char *iph, unsigned int ihl);
/*
* Fold a partial checksum
*/
static inline __sum16 csum_fold(__wsum sum)
{
while (sum >> 16)
sum = (sum & 0xffff) + (sum >> 16);
return ((~(sum << 16)) >> 16);
}
/* /*
* computes the checksum of the TCP/UDP pseudo-header * computes the checksum of the TCP/UDP pseudo-header
* returns a 16-bit checksum, already complemented * returns a 16-bit checksum, already complemented
*/ */
static inline __wsum static inline __wsum
csum_tcpudp_nofold(__be32 saddr, __be32 daddr, unsigned short len, __csum_tcpudp_nofold(__be32 saddr, __be32 daddr, unsigned short len,
unsigned short proto, __wsum sum) unsigned short proto, __wsum sum)
{ {
unsigned int carry; unsigned int carry;
...@@ -88,19 +37,8 @@ csum_tcpudp_nofold(__be32 saddr, __be32 daddr, unsigned short len, ...@@ -88,19 +37,8 @@ csum_tcpudp_nofold(__be32 saddr, __be32 daddr, unsigned short len,
return (sum); return (sum);
} }
#define csum_tcpudp_nofold __csum_tcpudp_nofold
static inline __sum16 #include <asm-generic/checksum.h>
csum_tcpudp_magic(__be32 saddr, __be32 daddr, unsigned short len,
unsigned short proto, __wsum sum)
{
return csum_fold(csum_tcpudp_nofold(saddr, daddr, len, proto, sum));
}
/*
* this routine is used for miscellaneous IP-like checksums, mainly
* in icmp.c
*/
extern __sum16 ip_compute_csum(const void *buff, int len);
#endif /* _BFIN_CHECKSUM_H */ #endif
...@@ -9,6 +9,8 @@ ...@@ -9,6 +9,8 @@
#ifndef _BFIN_CLOCKS_H #ifndef _BFIN_CLOCKS_H
#define _BFIN_CLOCKS_H #define _BFIN_CLOCKS_H
#include <asm/dpmc.h>
#ifdef CONFIG_CCLK_DIV_1 #ifdef CONFIG_CCLK_DIV_1
# define CONFIG_CCLK_ACT_DIV CCLK_DIV1 # define CONFIG_CCLK_ACT_DIV CCLK_DIV1
# define CONFIG_CCLK_DIV 1 # define CONFIG_CCLK_DIV 1
......
...@@ -7,9 +7,9 @@ ...@@ -7,9 +7,9 @@
#ifndef _BLACKFIN_DMA_MAPPING_H #ifndef _BLACKFIN_DMA_MAPPING_H
#define _BLACKFIN_DMA_MAPPING_H #define _BLACKFIN_DMA_MAPPING_H
#include <asm/scatterlist.h> #include <asm/cacheflush.h>
struct scatterlist;
void dma_alloc_init(unsigned long start, unsigned long end);
void *dma_alloc_coherent(struct device *dev, size_t size, void *dma_alloc_coherent(struct device *dev, size_t size,
dma_addr_t *dma_handle, gfp_t gfp); dma_addr_t *dma_handle, gfp_t gfp);
void dma_free_coherent(struct device *dev, size_t size, void *vaddr, void dma_free_coherent(struct device *dev, size_t size, void *vaddr,
...@@ -20,13 +20,51 @@ void dma_free_coherent(struct device *dev, size_t size, void *vaddr, ...@@ -20,13 +20,51 @@ void dma_free_coherent(struct device *dev, size_t size, void *vaddr,
*/ */
#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f) #define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f)
#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h) #define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
#define dma_supported(d, m) (1)
#define dma_get_cache_alignment() (32)
#define dma_is_consistent(d, h) (1)
static inline static inline int
int dma_mapping_error(struct device *dev, dma_addr_t dma_addr) dma_set_mask(struct device *dev, u64 dma_mask)
{
if (!dev->dma_mask || !dma_supported(dev, dma_mask))
return -EIO;
*dev->dma_mask = dma_mask;
return 0;
}
static inline int
dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
{ {
return 0; return 0;
} }
extern void
__dma_sync(dma_addr_t addr, size_t size, enum dma_data_direction dir);
static inline void
_dma_sync(dma_addr_t addr, size_t size, enum dma_data_direction dir)
{
if (!__builtin_constant_p(dir)) {
__dma_sync(addr, size, dir);
return;
}
switch (dir) {
case DMA_NONE:
BUG();
case DMA_TO_DEVICE: /* writeback only */
flush_dcache_range(addr, addr + size);
break;
case DMA_FROM_DEVICE: /* invalidate only */
case DMA_BIDIRECTIONAL: /* flush and invalidate */
/* Blackfin has no dedicated invalidate (it includes a flush) */
invalidate_dcache_range(addr, addr + size);
break;
}
}
/* /*
* Map a single buffer of the indicated size for DMA in streaming mode. * Map a single buffer of the indicated size for DMA in streaming mode.
* The 32-bit bus address to use is returned. * The 32-bit bus address to use is returned.
...@@ -34,8 +72,13 @@ int dma_mapping_error(struct device *dev, dma_addr_t dma_addr) ...@@ -34,8 +72,13 @@ int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
* Once the device is given the dma address, the device owns this memory * Once the device is given the dma address, the device owns this memory
* until either pci_unmap_single or pci_dma_sync_single is performed. * until either pci_unmap_single or pci_dma_sync_single is performed.
*/ */
extern dma_addr_t dma_map_single(struct device *dev, void *ptr, size_t size, static inline dma_addr_t
enum dma_data_direction direction); dma_map_single(struct device *dev, void *ptr, size_t size,
enum dma_data_direction dir)
{
_dma_sync((dma_addr_t)ptr, size, dir);
return (dma_addr_t) ptr;
}
static inline dma_addr_t static inline dma_addr_t
dma_map_page(struct device *dev, struct page *page, dma_map_page(struct device *dev, struct page *page,
...@@ -53,8 +96,12 @@ dma_map_page(struct device *dev, struct page *page, ...@@ -53,8 +96,12 @@ dma_map_page(struct device *dev, struct page *page,
* After this call, reads by the cpu to the buffer are guarenteed to see * After this call, reads by the cpu to the buffer are guarenteed to see
* whatever the device wrote there. * whatever the device wrote there.
*/ */
extern void dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size, static inline void
enum dma_data_direction direction); dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size,
enum dma_data_direction dir)
{
BUG_ON(!valid_dma_direction(dir));
}
static inline void static inline void
dma_unmap_page(struct device *dev, dma_addr_t dma_addr, size_t size, dma_unmap_page(struct device *dev, dma_addr_t dma_addr, size_t size,
...@@ -80,38 +127,66 @@ dma_unmap_page(struct device *dev, dma_addr_t dma_addr, size_t size, ...@@ -80,38 +127,66 @@ dma_unmap_page(struct device *dev, dma_addr_t dma_addr, size_t size,
* the same here. * the same here.
*/ */
extern int dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, extern int dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
enum dma_data_direction direction); enum dma_data_direction dir);
/* /*
* Unmap a set of streaming mode DMA translations. * Unmap a set of streaming mode DMA translations.
* Again, cpu read rules concerning calls here are the same as for * Again, cpu read rules concerning calls here are the same as for
* pci_unmap_single() above. * pci_unmap_single() above.
*/ */
extern void dma_unmap_sg(struct device *dev, struct scatterlist *sg, static inline void
int nhwentries, enum dma_data_direction direction); dma_unmap_sg(struct device *dev, struct scatterlist *sg,
int nhwentries, enum dma_data_direction dir)
{
BUG_ON(!valid_dma_direction(dir));
}
static inline void
dma_sync_single_range_for_cpu(struct device *dev, dma_addr_t handle,
unsigned long offset, size_t size,
enum dma_data_direction dir)
{
BUG_ON(!valid_dma_direction(dir));
}
static inline void
dma_sync_single_range_for_device(struct device *dev, dma_addr_t handle,
unsigned long offset, size_t size,
enum dma_data_direction dir)
{
_dma_sync(handle + offset, size, dir);
}
static inline void dma_sync_single_for_cpu(struct device *dev, static inline void
dma_addr_t handle, size_t size, dma_sync_single_for_cpu(struct device *dev, dma_addr_t handle, size_t size,
enum dma_data_direction dir) enum dma_data_direction dir)
{ {
dma_sync_single_range_for_cpu(dev, handle, 0, size, dir);
} }
static inline void dma_sync_single_for_device(struct device *dev, static inline void
dma_addr_t handle, size_t size, dma_sync_single_for_device(struct device *dev, dma_addr_t handle, size_t size,
enum dma_data_direction dir) enum dma_data_direction dir)
{ {
dma_sync_single_range_for_device(dev, handle, 0, size, dir);
} }
static inline void dma_sync_sg_for_cpu(struct device *dev, static inline void
struct scatterlist *sg, dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nents,
int nents, enum dma_data_direction dir) enum dma_data_direction dir)
{ {
BUG_ON(!valid_dma_direction(dir));
} }
static inline void dma_sync_sg_for_device(struct device *dev, extern void
struct scatterlist *sg, dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg,
int nents, enum dma_data_direction dir) int nents, enum dma_data_direction dir);
static inline void
dma_cache_sync(struct device *dev, void *vaddr, size_t size,
enum dma_data_direction dir)
{ {
_dma_sync((dma_addr_t)vaddr, size, dir);
} }
#endif /* _BLACKFIN_DMA_MAPPING_H */ #endif /* _BLACKFIN_DMA_MAPPING_H */
...@@ -10,20 +10,44 @@ ...@@ -10,20 +10,44 @@
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <mach/dma.h> #include <mach/dma.h>
#include <asm/atomic.h>
#include <asm/blackfin.h> #include <asm/blackfin.h>
#include <asm/page.h> #include <asm/page.h>
#include <asm-generic/dma.h>
#define MAX_DMA_ADDRESS PAGE_OFFSET
/* DMA_CONFIG Masks */
/***************************************************************************** #define DMAEN 0x0001 /* DMA Channel Enable */
* Generic DMA Declarations #define WNR 0x0002 /* Channel Direction (W/R*) */
* #define WDSIZE_8 0x0000 /* Transfer Word Size = 8 */
****************************************************************************/ #define WDSIZE_16 0x0004 /* Transfer Word Size = 16 */
enum dma_chan_status { #define WDSIZE_32 0x0008 /* Transfer Word Size = 32 */
DMA_CHANNEL_FREE, #define DMA2D 0x0010 /* DMA Mode (2D/1D*) */
DMA_CHANNEL_REQUESTED, #define RESTART 0x0020 /* DMA Buffer Clear */
DMA_CHANNEL_ENABLED, #define DI_SEL 0x0040 /* Data Interrupt Timing Select */
}; #define DI_EN 0x0080 /* Data Interrupt Enable */
#define NDSIZE_0 0x0000 /* Next Descriptor Size = 0 (Stop/Autobuffer) */
#define NDSIZE_1 0x0100 /* Next Descriptor Size = 1 */
#define NDSIZE_2 0x0200 /* Next Descriptor Size = 2 */
#define NDSIZE_3 0x0300 /* Next Descriptor Size = 3 */
#define NDSIZE_4 0x0400 /* Next Descriptor Size = 4 */
#define NDSIZE_5 0x0500 /* Next Descriptor Size = 5 */
#define NDSIZE_6 0x0600 /* Next Descriptor Size = 6 */
#define NDSIZE_7 0x0700 /* Next Descriptor Size = 7 */
#define NDSIZE_8 0x0800 /* Next Descriptor Size = 8 */
#define NDSIZE_9 0x0900 /* Next Descriptor Size = 9 */
#define NDSIZE 0x0f00 /* Next Descriptor Size */
#define DMAFLOW 0x7000 /* Flow Control */
#define DMAFLOW_STOP 0x0000 /* Stop Mode */
#define DMAFLOW_AUTO 0x1000 /* Autobuffer Mode */
#define DMAFLOW_ARRAY 0x4000 /* Descriptor Array Mode */
#define DMAFLOW_SMALL 0x6000 /* Small Model Descriptor List Mode */
#define DMAFLOW_LARGE 0x7000 /* Large Model Descriptor List Mode */
/* DMA_IRQ_STATUS Masks */
#define DMA_DONE 0x0001 /* DMA Completion Interrupt Status */
#define DMA_ERR 0x0002 /* DMA Error Interrupt Status */
#define DFETCH 0x0004 /* DMA Descriptor Fetch Indicator */
#define DMA_RUN 0x0008 /* DMA Channel Running Indicator */
/*------------------------- /*-------------------------
* config reg bits value * config reg bits value
...@@ -104,11 +128,9 @@ struct dma_register { ...@@ -104,11 +128,9 @@ struct dma_register {
}; };
struct mutex;
struct dma_channel { struct dma_channel {
struct mutex dmalock;
const char *device_id; const char *device_id;
enum dma_chan_status chan_status; atomic_t chan_status;
volatile struct dma_register *regs; volatile struct dma_register *regs;
struct dmasg *sg; /* large mode descriptor */ struct dmasg *sg; /* large mode descriptor */
unsigned int irq; unsigned int irq;
...@@ -220,27 +242,20 @@ static inline void set_dma_sg(unsigned int channel, struct dmasg *sg, int ndsize ...@@ -220,27 +242,20 @@ static inline void set_dma_sg(unsigned int channel, struct dmasg *sg, int ndsize
static inline int dma_channel_active(unsigned int channel) static inline int dma_channel_active(unsigned int channel)
{ {
if (dma_ch[channel].chan_status == DMA_CHANNEL_FREE) return atomic_read(&dma_ch[channel].chan_status);
return 0;
else
return 1;
} }
static inline void disable_dma(unsigned int channel) static inline void disable_dma(unsigned int channel)
{ {
dma_ch[channel].regs->cfg &= ~DMAEN; dma_ch[channel].regs->cfg &= ~DMAEN;
SSYNC(); SSYNC();
dma_ch[channel].chan_status = DMA_CHANNEL_REQUESTED;
} }
static inline void enable_dma(unsigned int channel) static inline void enable_dma(unsigned int channel)
{ {
dma_ch[channel].regs->curr_x_count = 0; dma_ch[channel].regs->curr_x_count = 0;
dma_ch[channel].regs->curr_y_count = 0; dma_ch[channel].regs->curr_y_count = 0;
dma_ch[channel].regs->cfg |= DMAEN; dma_ch[channel].regs->cfg |= DMAEN;
dma_ch[channel].chan_status = DMA_CHANNEL_ENABLED;
} }
void free_dma(unsigned int channel);
int request_dma(unsigned int channel, const char *device_id);
int set_dma_callback(unsigned int channel, irq_handler_t callback, void *data); int set_dma_callback(unsigned int channel, irq_handler_t callback, void *data);
static inline void dma_disable_irq(unsigned int channel) static inline void dma_disable_irq(unsigned int channel)
......
This diff is collapsed.
...@@ -159,6 +159,11 @@ struct gpio_port_t { ...@@ -159,6 +159,11 @@ struct gpio_port_t {
}; };
#endif #endif
#ifdef BFIN_SPECIAL_GPIO_BANKS
void bfin_special_gpio_free(unsigned gpio);
int bfin_special_gpio_request(unsigned gpio, const char *label);
#endif
#ifdef CONFIG_PM #ifdef CONFIG_PM
unsigned int bfin_pm_standby_setup(void); unsigned int bfin_pm_standby_setup(void);
......
...@@ -172,25 +172,25 @@ ...@@ -172,25 +172,25 @@
/* The actual gptimer API */ /* The actual gptimer API */
void set_gptimer_pwidth(int timer_id, uint32_t width); void set_gptimer_pwidth(unsigned int timer_id, uint32_t width);
uint32_t get_gptimer_pwidth(int timer_id); uint32_t get_gptimer_pwidth(unsigned int timer_id);
void set_gptimer_period(int timer_id, uint32_t period); void set_gptimer_period(unsigned int timer_id, uint32_t period);
uint32_t get_gptimer_period(int timer_id); uint32_t get_gptimer_period(unsigned int timer_id);
uint32_t get_gptimer_count(int timer_id); uint32_t get_gptimer_count(unsigned int timer_id);
int get_gptimer_intr(int timer_id); int get_gptimer_intr(unsigned int timer_id);
void clear_gptimer_intr(int timer_id); void clear_gptimer_intr(unsigned int timer_id);
int get_gptimer_over(int timer_id); int get_gptimer_over(unsigned int timer_id);
void clear_gptimer_over(int timer_id); void clear_gptimer_over(unsigned int timer_id);
void set_gptimer_config(int timer_id, uint16_t config); void set_gptimer_config(unsigned int timer_id, uint16_t config);
uint16_t get_gptimer_config(int timer_id); uint16_t get_gptimer_config(unsigned int timer_id);
int get_gptimer_run(int timer_id); int get_gptimer_run(unsigned int timer_id);
void set_gptimer_pulse_hi(int timer_id); void set_gptimer_pulse_hi(unsigned int timer_id);
void clear_gptimer_pulse_hi(int timer_id); void clear_gptimer_pulse_hi(unsigned int timer_id);
void enable_gptimers(uint16_t mask); void enable_gptimers(uint16_t mask);
void disable_gptimers(uint16_t mask); void disable_gptimers(uint16_t mask);
void disable_gptimers_sync(uint16_t mask); void disable_gptimers_sync(uint16_t mask);
uint16_t get_enabled_gptimers(void); uint16_t get_enabled_gptimers(void);
uint32_t get_gptimer_status(int group); uint32_t get_gptimer_status(unsigned int group);
void set_gptimer_status(int group, uint32_t value); void set_gptimer_status(unsigned int group, uint32_t value);
#endif #endif
This diff is collapsed.
...@@ -35,9 +35,9 @@ ...@@ -35,9 +35,9 @@
#include <asm/atomic.h> #include <asm/atomic.h>
#include <asm/traps.h> #include <asm/traps.h>
#define IPIPE_ARCH_STRING "1.11-00" #define IPIPE_ARCH_STRING "1.12-00"
#define IPIPE_MAJOR_NUMBER 1 #define IPIPE_MAJOR_NUMBER 1
#define IPIPE_MINOR_NUMBER 11 #define IPIPE_MINOR_NUMBER 12
#define IPIPE_PATCH_NUMBER 0 #define IPIPE_PATCH_NUMBER 0
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
...@@ -124,16 +124,6 @@ static inline int __ipipe_check_tickdev(const char *devname) ...@@ -124,16 +124,6 @@ static inline int __ipipe_check_tickdev(const char *devname)
return 1; return 1;
} }
static inline void __ipipe_lock_root(void)
{
set_bit(IPIPE_SYNCDEFER_FLAG, &ipipe_root_cpudom_var(status));
}
static inline void __ipipe_unlock_root(void)
{
clear_bit(IPIPE_SYNCDEFER_FLAG, &ipipe_root_cpudom_var(status));
}
void __ipipe_enable_pipeline(void); void __ipipe_enable_pipeline(void);
#define __ipipe_hook_critical_ipi(ipd) do { } while (0) #define __ipipe_hook_critical_ipi(ipd) do { } while (0)
......
...@@ -51,23 +51,15 @@ ...@@ -51,23 +51,15 @@
extern unsigned long __ipipe_root_status; /* Alias to ipipe_root_cpudom_var(status) */ extern unsigned long __ipipe_root_status; /* Alias to ipipe_root_cpudom_var(status) */
#define __ipipe_stall_root() \ void __ipipe_stall_root(void);
do { \
volatile unsigned long *p = &__ipipe_root_status; \ unsigned long __ipipe_test_and_stall_root(void);
set_bit(0, p); \
} while (0) unsigned long __ipipe_test_root(void);
#define __ipipe_test_and_stall_root() \ void __ipipe_lock_root(void);
({ \
volatile unsigned long *p = &__ipipe_root_status; \ void __ipipe_unlock_root(void);
test_and_set_bit(0, p); \
})
#define __ipipe_test_root() \
({ \
const unsigned long *p = &__ipipe_root_status; \
test_bit(0, p); \
})
#endif /* !__ASSEMBLY__ */ #endif /* !__ASSEMBLY__ */
......
This diff is collapsed.
...@@ -10,9 +10,6 @@ ...@@ -10,9 +10,6 @@
#include <linux/ptrace.h> #include <linux/ptrace.h>
/* gdb locks */
#define KGDB_MAX_NO_CPUS 8
/* /*
* BUFMAX defines the maximum number of characters in inbound/outbound buffers. * BUFMAX defines the maximum number of characters in inbound/outbound buffers.
* At least NUMREGBYTES*2 are needed for register packets. * At least NUMREGBYTES*2 are needed for register packets.
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment