Commit 84b9a774 authored by Linus Torvalds's avatar Linus Torvalds

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: (35 commits)
  Blackfin Serial Driver: Fix bug - Only insert UART rx char in timer task.
  Blackfin Serial Driver: Fix bug - update tx dma buffer tail before wake up processes.
  Blackfin Serial Driver: Fix bug - Increase buffer tail immediately before starting tx dma.
  [Blackfin] serial driver: Add flow control support to bf54x
  [Blackfin] serial driver: Fix bug Poll RTS/CTS status in DMA mode as well
  [Blackfin] serial driver: ADSP-BF52x arch/mach support
  [Blackfin] serial driver: use simpler comment headers and strip out information that is maintained in the scm's log
  [Blackfin] serial driver: rework break flood anomaly handling to be more robust/realistic about what we can actually work around
  [Blackfin] serial driver: fix bug - cache the bits of the LSR on systems where the LSR is read-to-clear
  [Blackfin] serial driver: fix bug - should not wait for the TFI bit, just clear it when tx stop.
  [Blackfin] serial driver: Fix bug serial driver in DMA mode spams history to console on shell restart
  [Blackfin] serial driver: Fix bug Free rx dma buffer in shutdown.
  [Blackfin] serial driver: Clean up UART DMA code.
  Blackfin Serial driver: Fix bug - serial driver in PIO mode cant handle input very quickly
  [Blackfin] arch: kill section mismatch warnings
  [Blackfin] arch: handle the most common L1 shrinkage case (L1 does not exist for a part) so that any parts labeled for L1 instead get placed into external memory sections
  [Blackfin] arch: add bfin_clear_PPIx_STATUS() helper funcs like we have for other parts
  [Blackfin] arch: make sure we have proper description/copyright/license lines
  [Blackfin] arch: Fix CONFIG_PM support for BF561
  [Blackfin] arch: Remove DPMC char driver option
  ...
parents 3cf9460a 0aef4564
...@@ -767,14 +767,14 @@ S: Maintained ...@@ -767,14 +767,14 @@ S: Maintained
BLACKFIN ARCHITECTURE BLACKFIN ARCHITECTURE
P: Bryan Wu P: Bryan Wu
M: bryan.wu@analog.com M: cooloney@kernel.org
L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only) L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
W: http://blackfin.uclinux.org W: http://blackfin.uclinux.org
S: Supported S: Supported
BLACKFIN EMAC DRIVER BLACKFIN EMAC DRIVER
P: Bryan Wu P: Bryan Wu
M: bryan.wu@analog.com M: cooloney@kernel.org
L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only) L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
W: http://blackfin.uclinux.org W: http://blackfin.uclinux.org
S: Supported S: Supported
......
...@@ -98,8 +98,11 @@ drivers-$(CONFIG_OPROFILE) += arch/$(ARCH)/oprofile/ ...@@ -98,8 +98,11 @@ drivers-$(CONFIG_OPROFILE) += arch/$(ARCH)/oprofile/
# them changed. We use .mach to indicate when they were updated # them changed. We use .mach to indicate when they were updated
# last, otherwise make uses the target directory mtime. # last, otherwise make uses the target directory mtime.
show_mach_symlink = :
quiet_show_mach_symlink = echo ' SYMLINK include/asm-$(ARCH)/mach-$(MACHINE) -> include/asm-$(ARCH)/mach'
silent_show_mach_symlink = :
include/asm-blackfin/.mach: $(wildcard include/config/arch/*.h) include/config/auto.conf include/asm-blackfin/.mach: $(wildcard include/config/arch/*.h) include/config/auto.conf
@echo ' SYMLINK include/asm-$(ARCH)/mach-$(MACHINE) -> include/asm-$(ARCH)/mach' @$($(quiet)show_mach_symlink)
ifneq ($(KBUILD_SRC),) ifneq ($(KBUILD_SRC),)
$(Q)mkdir -p include/asm-$(ARCH) $(Q)mkdir -p include/asm-$(ARCH)
$(Q)ln -fsn $(srctree)/include/asm-$(ARCH)/mach-$(MACHINE) include/asm-$(ARCH)/mach $(Q)ln -fsn $(srctree)/include/asm-$(ARCH)/mach-$(MACHINE) include/asm-$(ARCH)/mach
......
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.22.14 # Linux kernel version: 2.6.22.16
# Thu Nov 29 17:32:47 2007
# #
# CONFIG_MMU is not set # CONFIG_MMU is not set
# CONFIG_FPU is not set # CONFIG_FPU is not set
...@@ -116,7 +115,10 @@ CONFIG_PREEMPT_VOLUNTARY=y ...@@ -116,7 +115,10 @@ CONFIG_PREEMPT_VOLUNTARY=y
# Processor and Board Settings # Processor and Board Settings
# #
# CONFIG_BF522 is not set # CONFIG_BF522 is not set
# CONFIG_BF523 is not set
# CONFIG_BF524 is not set
# CONFIG_BF525 is not set # CONFIG_BF525 is not set
# CONFIG_BF526 is not set
CONFIG_BF527=y CONFIG_BF527=y
# CONFIG_BF531 is not set # CONFIG_BF531 is not set
# CONFIG_BF532 is not set # CONFIG_BF532 is not set
...@@ -306,6 +308,7 @@ CONFIG_BFIN_DCACHE=y ...@@ -306,6 +308,7 @@ CONFIG_BFIN_DCACHE=y
# CONFIG_BFIN_WB is not set # CONFIG_BFIN_WB is not set
CONFIG_BFIN_WT=y CONFIG_BFIN_WT=y
CONFIG_L1_MAX_PIECE=16 CONFIG_L1_MAX_PIECE=16
# CONFIG_MPU is not set
# #
# Asynchonous Memory Configuration # Asynchonous Memory Configuration
...@@ -354,6 +357,7 @@ CONFIG_BINFMT_ZFLAT=y ...@@ -354,6 +357,7 @@ CONFIG_BINFMT_ZFLAT=y
# Power management options # Power management options
# #
# CONFIG_PM is not set # CONFIG_PM is not set
# CONFIG_PM_WAKEUP_BY_GPIO is not set
# #
# Networking # Networking
...@@ -496,7 +500,6 @@ CONFIG_MTD_CFI_I2=y ...@@ -496,7 +500,6 @@ CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_INTELEXT is not set # CONFIG_MTD_CFI_INTELEXT is not set
# CONFIG_MTD_CFI_AMDSTD is not set # CONFIG_MTD_CFI_AMDSTD is not set
# CONFIG_MTD_CFI_STAA is not set # CONFIG_MTD_CFI_STAA is not set
CONFIG_MTD_MW320D=m
CONFIG_MTD_RAM=y CONFIG_MTD_RAM=y
CONFIG_MTD_ROM=m CONFIG_MTD_ROM=m
# CONFIG_MTD_ABSENT is not set # CONFIG_MTD_ABSENT is not set
...@@ -506,9 +509,6 @@ CONFIG_MTD_ROM=m ...@@ -506,9 +509,6 @@ CONFIG_MTD_ROM=m
# #
CONFIG_MTD_COMPLEX_MAPPINGS=y CONFIG_MTD_COMPLEX_MAPPINGS=y
# CONFIG_MTD_PHYSMAP is not set # CONFIG_MTD_PHYSMAP is not set
CONFIG_MTD_BF5xx=m
CONFIG_BFIN_FLASH_SIZE=0x400000
CONFIG_EBIU_FLASH_BASE=0x20000000
# CONFIG_MTD_UCLINUX is not set # CONFIG_MTD_UCLINUX is not set
# CONFIG_MTD_PLATRAM is not set # CONFIG_MTD_PLATRAM is not set
...@@ -684,7 +684,6 @@ CONFIG_INPUT_MISC=y ...@@ -684,7 +684,6 @@ CONFIG_INPUT_MISC=y
# CONFIG_INPUT_POWERMATE is not set # CONFIG_INPUT_POWERMATE is not set
# CONFIG_INPUT_YEALINK is not set # CONFIG_INPUT_YEALINK is not set
# CONFIG_INPUT_UINPUT is not set # CONFIG_INPUT_UINPUT is not set
# CONFIG_BF53X_PFBUTTONS is not set
# CONFIG_TWI_KEYPAD is not set # CONFIG_TWI_KEYPAD is not set
# #
...@@ -702,12 +701,12 @@ CONFIG_INPUT_MISC=y ...@@ -702,12 +701,12 @@ CONFIG_INPUT_MISC=y
# CONFIG_BF5xx_PPIFCD is not set # CONFIG_BF5xx_PPIFCD is not set
# CONFIG_BFIN_SIMPLE_TIMER is not set # CONFIG_BFIN_SIMPLE_TIMER is not set
# CONFIG_BF5xx_PPI is not set # CONFIG_BF5xx_PPI is not set
CONFIG_BFIN_OTP=y
# CONFIG_BFIN_OTP_WRITE_ENABLE is not set
# CONFIG_BFIN_SPORT is not set # CONFIG_BFIN_SPORT is not set
# CONFIG_BFIN_TIMER_LATENCY is not set # CONFIG_BFIN_TIMER_LATENCY is not set
# CONFIG_TWI_LCD is not set # CONFIG_TWI_LCD is not set
# CONFIG_AD5304 is not set # CONFIG_AD5304 is not set
# CONFIG_BF5xx_TEA5764 is not set
# CONFIG_BF5xx_FBDMA is not set
# CONFIG_VT is not set # CONFIG_VT is not set
# CONFIG_SERIAL_NONSTANDARD is not set # CONFIG_SERIAL_NONSTANDARD is not set
...@@ -772,7 +771,6 @@ CONFIG_I2C_CHARDEV=m ...@@ -772,7 +771,6 @@ CONFIG_I2C_CHARDEV=m
# #
# I2C Hardware Bus support # I2C Hardware Bus support
# #
# CONFIG_I2C_BLACKFIN_GPIO is not set
CONFIG_I2C_BLACKFIN_TWI=m CONFIG_I2C_BLACKFIN_TWI=m
CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=50 CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=50
# CONFIG_I2C_GPIO is not set # CONFIG_I2C_GPIO is not set
......
...@@ -322,10 +322,9 @@ CONFIG_PM=y ...@@ -322,10 +322,9 @@ CONFIG_PM=y
# CONFIG_PM_LEGACY is not set # CONFIG_PM_LEGACY is not set
# CONFIG_PM_DEBUG is not set # CONFIG_PM_DEBUG is not set
# CONFIG_PM_SYSFS_DEPRECATED is not set # CONFIG_PM_SYSFS_DEPRECATED is not set
CONFIG_PM_WAKEUP_GPIO_BY_SIC_IWR=y CONFIG_PM_BFIN_SLEEP_DEEPER=y
# CONFIG_PM_BFIN_SLEEP is not set
# CONFIG_PM_WAKEUP_BY_GPIO is not set # CONFIG_PM_WAKEUP_BY_GPIO is not set
# CONFIG_PM_WAKEUP_GPIO_API is not set
CONFIG_PM_WAKEUP_SIC_IWR=0x80
# #
# CPU Frequency scaling # CPU Frequency scaling
...@@ -697,7 +696,6 @@ CONFIG_SERIAL_BFIN_DMA=y ...@@ -697,7 +696,6 @@ CONFIG_SERIAL_BFIN_DMA=y
# CONFIG_SERIAL_BFIN_PIO is not set # CONFIG_SERIAL_BFIN_PIO is not set
CONFIG_SERIAL_BFIN_UART0=y CONFIG_SERIAL_BFIN_UART0=y
# CONFIG_BFIN_UART0_CTSRTS is not set # CONFIG_BFIN_UART0_CTSRTS is not set
# CONFIG_SERIAL_BFIN_UART1 is not set
CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_BFIN_SPORT is not set # CONFIG_SERIAL_BFIN_SPORT is not set
......
...@@ -323,10 +323,9 @@ CONFIG_PM=y ...@@ -323,10 +323,9 @@ CONFIG_PM=y
# CONFIG_PM_LEGACY is not set # CONFIG_PM_LEGACY is not set
# CONFIG_PM_DEBUG is not set # CONFIG_PM_DEBUG is not set
# CONFIG_PM_SYSFS_DEPRECATED is not set # CONFIG_PM_SYSFS_DEPRECATED is not set
CONFIG_PM_WAKEUP_GPIO_BY_SIC_IWR=y CONFIG_PM_BFIN_SLEEP_DEEPER=y
# CONFIG_PM_BFIN_SLEEP is not set
# CONFIG_PM_WAKEUP_BY_GPIO is not set # CONFIG_PM_WAKEUP_BY_GPIO is not set
# CONFIG_PM_WAKEUP_GPIO_API is not set
CONFIG_PM_WAKEUP_SIC_IWR=0x80
# #
# CPU Frequency scaling # CPU Frequency scaling
...@@ -714,7 +713,6 @@ CONFIG_SERIAL_BFIN_DMA=y ...@@ -714,7 +713,6 @@ CONFIG_SERIAL_BFIN_DMA=y
# CONFIG_SERIAL_BFIN_PIO is not set # CONFIG_SERIAL_BFIN_PIO is not set
CONFIG_SERIAL_BFIN_UART0=y CONFIG_SERIAL_BFIN_UART0=y
# CONFIG_BFIN_UART0_CTSRTS is not set # CONFIG_BFIN_UART0_CTSRTS is not set
# CONFIG_SERIAL_BFIN_UART1 is not set
CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_BFIN_SPORT is not set # CONFIG_SERIAL_BFIN_SPORT is not set
......
...@@ -330,10 +330,9 @@ CONFIG_PM=y ...@@ -330,10 +330,9 @@ CONFIG_PM=y
# CONFIG_PM_LEGACY is not set # CONFIG_PM_LEGACY is not set
# CONFIG_PM_DEBUG is not set # CONFIG_PM_DEBUG is not set
# CONFIG_PM_SYSFS_DEPRECATED is not set # CONFIG_PM_SYSFS_DEPRECATED is not set
CONFIG_PM_WAKEUP_GPIO_BY_SIC_IWR=y CONFIG_PM_BFIN_SLEEP_DEEPER=y
# CONFIG_PM_BFIN_SLEEP is not set
# CONFIG_PM_WAKEUP_BY_GPIO is not set # CONFIG_PM_WAKEUP_BY_GPIO is not set
# CONFIG_PM_WAKEUP_GPIO_API is not set
CONFIG_PM_WAKEUP_SIC_IWR=0x8
# #
# CPU Frequency scaling # CPU Frequency scaling
...@@ -1013,6 +1012,7 @@ CONFIG_SND_BFIN_AD73311_SE=4 ...@@ -1013,6 +1012,7 @@ CONFIG_SND_BFIN_AD73311_SE=4
CONFIG_SND_SOC_AC97_BUS=y CONFIG_SND_SOC_AC97_BUS=y
CONFIG_SND_SOC=m CONFIG_SND_SOC=m
CONFIG_SND_BF5XX_SOC=m CONFIG_SND_BF5XX_SOC=m
CONFIG_SND_MMAP_SUPPORT=y
CONFIG_SND_BF5XX_SOC_AC97=m CONFIG_SND_BF5XX_SOC_AC97=m
# CONFIG_SND_BF5XX_SOC_WM8750 is not set # CONFIG_SND_BF5XX_SOC_WM8750 is not set
# CONFIG_SND_BF5XX_SOC_WM8731 is not set # CONFIG_SND_BF5XX_SOC_WM8731 is not set
......
...@@ -396,6 +396,7 @@ CONFIG_BINFMT_ZFLAT=y ...@@ -396,6 +396,7 @@ CONFIG_BINFMT_ZFLAT=y
# Power management options # Power management options
# #
# CONFIG_PM is not set # CONFIG_PM is not set
# CONFIG_PM_WAKEUP_BY_GPIO is not set
# #
# CPU Frequency scaling # CPU Frequency scaling
...@@ -1075,6 +1076,7 @@ CONFIG_SND_VERBOSE_PROCFS=y ...@@ -1075,6 +1076,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
CONFIG_SND_SOC_AC97_BUS=y CONFIG_SND_SOC_AC97_BUS=y
CONFIG_SND_SOC=y CONFIG_SND_SOC=y
CONFIG_SND_BF5XX_SOC=y CONFIG_SND_BF5XX_SOC=y
CONFIG_SND_MMAP_SUPPORT=y
CONFIG_SND_BF5XX_SOC_AC97=y CONFIG_SND_BF5XX_SOC_AC97=y
CONFIG_SND_BF5XX_SOC_BF548_EZKIT=y CONFIG_SND_BF5XX_SOC_BF548_EZKIT=y
# CONFIG_SND_BF5XX_SOC_WM8750 is not set # CONFIG_SND_BF5XX_SOC_WM8750 is not set
......
...@@ -367,6 +367,7 @@ CONFIG_BINFMT_ZFLAT=y ...@@ -367,6 +367,7 @@ CONFIG_BINFMT_ZFLAT=y
# Power management options # Power management options
# #
# CONFIG_PM is not set # CONFIG_PM is not set
# CONFIG_PM_WAKEUP_BY_GPIO is not set
# #
# Networking # Networking
......
...@@ -105,13 +105,14 @@ int request_dma(unsigned int channel, char *device_id) ...@@ -105,13 +105,14 @@ int request_dma(unsigned int channel, char *device_id)
mutex_unlock(&(dma_ch[channel].dmalock)); mutex_unlock(&(dma_ch[channel].dmalock));
#ifdef CONFIG_BF54x #ifdef CONFIG_BF54x
if (channel >= CH_UART2_RX && channel <= CH_UART3_TX && if (channel >= CH_UART2_RX && channel <= CH_UART3_TX) {
strncmp(device_id, "BFIN_UART", 9) == 0) if (strncmp(device_id, "BFIN_UART", 9) == 0)
dma_ch[channel].regs->peripheral_map |= dma_ch[channel].regs->peripheral_map |=
(channel - CH_UART2_RX + 0xC); (channel - CH_UART2_RX + 0xC);
else else
dma_ch[channel].regs->peripheral_map |= dma_ch[channel].regs->peripheral_map |=
(channel - CH_UART2_RX + 0x6); (channel - CH_UART2_RX + 0x6);
}
#endif #endif
dma_ch[channel].device_id = device_id; dma_ch[channel].device_id = device_id;
......
/* /*
* bfin_gptimers.c - derived from bf53x_timers.c * gptimers.c - Blackfin General Purpose Timer core API
* Driver for General Purpose Timer functions on the Blackfin processor
* *
* Copyright (C) 2005 John DeHority * Copyright (c) 2005-2008 Analog Devices Inc.
* Copyright (C) 2006 Hella Aglaia GmbH (awe@aglaia-gmbh.de) * Copyright (C) 2005 John DeHority
* Copyright (C) 2006 Hella Aglaia GmbH (awe@aglaia-gmbh.de)
* *
* Licensed under the GPLv2. * Licensed under the GPLv2.
*/ */
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
static DEFINE_PER_CPU(struct cpu, cpu_devices); static DEFINE_PER_CPU(struct cpu, cpu_devices);
u16 _bfin_swrst; u16 _bfin_swrst;
EXPORT_SYMBOL(_bfin_swrst);
unsigned long memory_start, memory_end, physical_mem_end; unsigned long memory_start, memory_end, physical_mem_end;
unsigned long reserved_mem_dcache_on; unsigned long reserved_mem_dcache_on;
...@@ -514,6 +515,7 @@ static __init void memory_setup(void) ...@@ -514,6 +515,7 @@ static __init void memory_setup(void)
printk(KERN_INFO "Kernel Managed Memory: %ldMB\n", _ramend >> 20); printk(KERN_INFO "Kernel Managed Memory: %ldMB\n", _ramend >> 20);
printk(KERN_INFO "Memory map:\n" printk(KERN_INFO "Memory map:\n"
KERN_INFO " fixedcode = 0x%p-0x%p\n"
KERN_INFO " text = 0x%p-0x%p\n" KERN_INFO " text = 0x%p-0x%p\n"
KERN_INFO " rodata = 0x%p-0x%p\n" KERN_INFO " rodata = 0x%p-0x%p\n"
KERN_INFO " bss = 0x%p-0x%p\n" KERN_INFO " bss = 0x%p-0x%p\n"
...@@ -527,7 +529,8 @@ static __init void memory_setup(void) ...@@ -527,7 +529,8 @@ static __init void memory_setup(void)
#if DMA_UNCACHED_REGION > 0 #if DMA_UNCACHED_REGION > 0
KERN_INFO " DMA Zone = 0x%p-0x%p\n" KERN_INFO " DMA Zone = 0x%p-0x%p\n"
#endif #endif
, _stext, _etext, , (void *)FIXED_CODE_START, (void *)FIXED_CODE_END,
_stext, _etext,
__start_rodata, __end_rodata, __start_rodata, __end_rodata,
__bss_start, __bss_stop, __bss_start, __bss_stop,
_sdata, _edata, _sdata, _edata,
......
...@@ -147,44 +147,64 @@ SECTIONS ...@@ -147,44 +147,64 @@ SECTIONS
__l1_lma_start = .; __l1_lma_start = .;
#if L1_CODE_LENGTH
# define LDS_L1_CODE *(.l1.text)
#else
# define LDS_L1_CODE
#endif
.text_l1 L1_CODE_START : AT(LOADADDR(.init.ramfs) + SIZEOF(.init.ramfs)) .text_l1 L1_CODE_START : AT(LOADADDR(.init.ramfs) + SIZEOF(.init.ramfs))
{ {
. = ALIGN(4); . = ALIGN(4);
__stext_l1 = .; __stext_l1 = .;
*(.l1.text) LDS_L1_CODE
. = ALIGN(4); . = ALIGN(4);
__etext_l1 = .; __etext_l1 = .;
} }
#if L1_DATA_A_LENGTH
# define LDS_L1_A_DATA *(.l1.data)
# define LDS_L1_A_BSS *(.l1.bss)
# define LDS_L1_A_CACHE *(.data_l1.cacheline_aligned)
#else
# define LDS_L1_A_DATA
# define LDS_L1_A_BSS
# define LDS_L1_A_CACHE
#endif
.data_l1 L1_DATA_A_START : AT(LOADADDR(.text_l1) + SIZEOF(.text_l1)) .data_l1 L1_DATA_A_START : AT(LOADADDR(.text_l1) + SIZEOF(.text_l1))
{ {
. = ALIGN(4); . = ALIGN(4);
__sdata_l1 = .; __sdata_l1 = .;
*(.l1.data) LDS_L1_A_DATA
__edata_l1 = .; __edata_l1 = .;
. = ALIGN(4); . = ALIGN(4);
__sbss_l1 = .; __sbss_l1 = .;
*(.l1.bss) LDS_L1_A_BSS
. = ALIGN(32); . = ALIGN(32);
*(.data_l1.cacheline_aligned) LDS_L1_A_CACHE
. = ALIGN(4); . = ALIGN(4);
__ebss_l1 = .; __ebss_l1 = .;
} }
#if L1_DATA_B_LENGTH
# define LDS_L1_B_DATA *(.l1.data.B)
# define LDS_L1_B_BSS *(.l1.bss.B)
#else
# define LDS_L1_B_DATA
# define LDS_L1_B_BSS
#endif
.data_b_l1 L1_DATA_B_START : AT(LOADADDR(.data_l1) + SIZEOF(.data_l1)) .data_b_l1 L1_DATA_B_START : AT(LOADADDR(.data_l1) + SIZEOF(.data_l1))
{ {
. = ALIGN(4); . = ALIGN(4);
__sdata_b_l1 = .; __sdata_b_l1 = .;
*(.l1.data.B) LDS_L1_B_DATA
__edata_b_l1 = .; __edata_b_l1 = .;
. = ALIGN(4); . = ALIGN(4);
__sbss_b_l1 = .; __sbss_b_l1 = .;
*(.l1.bss.B) LDS_L1_B_BSS
. = ALIGN(4); . = ALIGN(4);
__ebss_b_l1 = .; __ebss_b_l1 = .;
......
...@@ -180,8 +180,8 @@ static struct mtd_partition partition_info[] = { ...@@ -180,8 +180,8 @@ static struct mtd_partition partition_info[] = {
}, },
{ {
.name = "File System", .name = "File System",
.offset = 4 * SIZE_1M, .offset = MTDPART_OFS_APPEND,
.size = (256 - 4) * SIZE_1M, .size = MTDPART_SIZ_FULL,
}, },
}; };
...@@ -422,11 +422,11 @@ static struct mtd_partition bfin_spi_flash_partitions[] = { ...@@ -422,11 +422,11 @@ static struct mtd_partition bfin_spi_flash_partitions[] = {
}, { }, {
.name = "kernel", .name = "kernel",
.size = 0xe0000, .size = 0xe0000,
.offset = 0x20000 .offset = MTDPART_OFS_APPEND,
}, { }, {
.name = "file system", .name = "file system",
.size = 0x700000, .size = MTDPART_SIZ_FULL,
.offset = 0x00100000, .offset = MTDPART_OFS_APPEND,
} }
}; };
...@@ -484,13 +484,6 @@ static struct bfin5xx_spi_chip spi_si3xxx_chip_info = { ...@@ -484,13 +484,6 @@ static struct bfin5xx_spi_chip spi_si3xxx_chip_info = {
}; };
#endif #endif
#if defined(CONFIG_AD5304) || defined(CONFIG_AD5304_MODULE)
static struct bfin5xx_spi_chip ad5304_chip_info = {
.enable_dma = 0,
.bits_per_word = 16,
};
#endif
#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE) #if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
static struct bfin5xx_spi_chip spi_ad7877_chip_info = { static struct bfin5xx_spi_chip spi_ad7877_chip_info = {
.enable_dma = 0, .enable_dma = 0,
...@@ -611,17 +604,6 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -611,17 +604,6 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
.mode = SPI_MODE_3, .mode = SPI_MODE_3,
}, },
#endif #endif
#if defined(CONFIG_AD5304) || defined(CONFIG_AD5304_MODULE)
{
.modalias = "ad5304_spi",
.max_speed_hz = 1250000, /* max spi clock (SCK) speed in HZ */
.bus_num = 0,
.chip_select = 2,
.platform_data = NULL,
.controller_data = &ad5304_chip_info,
.mode = SPI_MODE_2,
},
#endif
#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE) #if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
{ {
.modalias = "ad7877", .modalias = "ad7877",
...@@ -818,6 +800,19 @@ static struct platform_device bfin_device_gpiokeys = { ...@@ -818,6 +800,19 @@ static struct platform_device bfin_device_gpiokeys = {
}; };
#endif #endif
static struct resource bfin_gpios_resources = {
.start = 0,
.end = MAX_BLACKFIN_GPIOS - 1,
.flags = IORESOURCE_IRQ,
};
static struct platform_device bfin_gpios_device = {
.name = "simple-gpio",
.id = -1,
.num_resources = 1,
.resource = &bfin_gpios_resources,
};
static struct platform_device *stamp_devices[] __initdata = { static struct platform_device *stamp_devices[] __initdata = {
#if defined(CONFIG_MTD_NAND_BF5XX) || defined(CONFIG_MTD_NAND_BF5XX_MODULE) #if defined(CONFIG_MTD_NAND_BF5XX) || defined(CONFIG_MTD_NAND_BF5XX_MODULE)
&bf5xx_nand_device, &bf5xx_nand_device,
...@@ -895,6 +890,8 @@ static struct platform_device *stamp_devices[] __initdata = { ...@@ -895,6 +890,8 @@ static struct platform_device *stamp_devices[] __initdata = {
#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) #if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
&bfin_device_gpiokeys, &bfin_device_gpiokeys,
#endif #endif
&bfin_gpios_device,
}; };
static int __init stamp_init(void) static int __init stamp_init(void)
...@@ -921,13 +918,18 @@ void native_machine_restart(char *cmd) ...@@ -921,13 +918,18 @@ void native_machine_restart(char *cmd)
bfin_gpio_reset_spi0_ssel1(); bfin_gpio_reset_spi0_ssel1();
} }
/*
* Currently the MAC address is saved in Flash by U-Boot
*/
#define FLASH_MAC 0x203f0000
void bfin_get_ether_addr(char *addr) void bfin_get_ether_addr(char *addr)
{ {
*(u32 *)(&(addr[0])) = bfin_read32(FLASH_MAC); /* the MAC is stored in OTP memory page 0xDF */
*(u16 *)(&(addr[4])) = bfin_read16(FLASH_MAC + 4); u32 ret;
u64 otp_mac;
u32 (*otp_read)(u32 page, u32 flags, u64 *page_content) = (void *)0xEF00001A;
ret = otp_read(0xDF, 0x00, &otp_mac);
if (!(ret & 0x1)) {
char *otp_mac_p = (char *)&otp_mac;
for (ret = 0; ret < 6; ++ret)
addr[ret] = otp_mac_p[5 - ret];
}
} }
EXPORT_SYMBOL(bfin_get_ether_addr); EXPORT_SYMBOL(bfin_get_ether_addr);
...@@ -99,11 +99,11 @@ static struct mtd_partition bfin_spi_flash_partitions[] = { ...@@ -99,11 +99,11 @@ static struct mtd_partition bfin_spi_flash_partitions[] = {
}, { }, {
.name = "kernel", .name = "kernel",
.size = 0xe0000, .size = 0xe0000,
.offset = 0x20000 .offset = MTDPART_OFS_APPEND,
}, { }, {
.name = "file system", .name = "file system",
.size = 0x700000, .size = MTDPART_SIZ_FULL,
.offset = 0x00100000, .offset = MTDPART_OFS_APPEND,
} }
}; };
...@@ -298,6 +298,19 @@ static struct platform_device bfin_device_gpiokeys = { ...@@ -298,6 +298,19 @@ static struct platform_device bfin_device_gpiokeys = {
}; };
#endif #endif
static struct resource bfin_gpios_resources = {
.start = 0,
.end = MAX_BLACKFIN_GPIOS - 1,
.flags = IORESOURCE_IRQ,
};
static struct platform_device bfin_gpios_device = {
.name = "simple-gpio",
.id = -1,
.num_resources = 1,
.resource = &bfin_gpios_resources,
};
#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE) #if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE)
#include <linux/i2c-gpio.h> #include <linux/i2c-gpio.h>
...@@ -350,6 +363,8 @@ static struct platform_device *ezkit_devices[] __initdata = { ...@@ -350,6 +363,8 @@ static struct platform_device *ezkit_devices[] __initdata = {
#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE) #if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE)
&i2c_gpio_device, &i2c_gpio_device,
#endif #endif
&bfin_gpios_device,
}; };
static int __init ezkit_init(void) static int __init ezkit_init(void)
......
...@@ -112,7 +112,7 @@ static struct platform_device net2272_bfin_device = { ...@@ -112,7 +112,7 @@ static struct platform_device net2272_bfin_device = {
static struct mtd_partition stamp_partitions[] = { static struct mtd_partition stamp_partitions[] = {
{ {
.name = "Bootloader", .name = "Bootloader",
.size = 0x20000, .size = 0x40000,
.offset = 0, .offset = 0,
}, { }, {
.name = "Kernel", .name = "Kernel",
...@@ -160,17 +160,17 @@ static struct platform_device stamp_flash_device = { ...@@ -160,17 +160,17 @@ static struct platform_device stamp_flash_device = {
static struct mtd_partition bfin_spi_flash_partitions[] = { static struct mtd_partition bfin_spi_flash_partitions[] = {
{ {
.name = "bootloader", .name = "bootloader",
.size = 0x00020000, .size = 0x00040000,
.offset = 0, .offset = 0,
.mask_flags = MTD_CAP_ROM .mask_flags = MTD_CAP_ROM
}, { }, {
.name = "kernel", .name = "kernel",
.size = 0xe0000, .size = 0xe0000,
.offset = 0x20000 .offset = MTDPART_OFS_APPEND,
}, { }, {
.name = "file system", .name = "file system",
.size = 0x700000, .size = MTDPART_SIZ_FULL,
.offset = 0x00100000, .offset = MTDPART_OFS_APPEND,
} }
}; };
...@@ -212,13 +212,6 @@ static struct bfin5xx_spi_chip spi_si3xxx_chip_info = { ...@@ -212,13 +212,6 @@ static struct bfin5xx_spi_chip spi_si3xxx_chip_info = {
}; };
#endif #endif
#if defined(CONFIG_AD5304) || defined(CONFIG_AD5304_MODULE)
static struct bfin5xx_spi_chip ad5304_chip_info = {
.enable_dma = 0,
.bits_per_word = 16,
};
#endif
#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE) #if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
static struct bfin5xx_spi_chip spi_mmc_chip_info = { static struct bfin5xx_spi_chip spi_mmc_chip_info = {
.enable_dma = 1, .enable_dma = 1,
...@@ -308,17 +301,6 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -308,17 +301,6 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
}, },
#endif #endif
#if defined(CONFIG_AD5304) || defined(CONFIG_AD5304_MODULE)
{
.modalias = "ad5304_spi",
.max_speed_hz = 1000000, /* max spi clock (SCK) speed in HZ */
.bus_num = 0,
.chip_select = 2,
.platform_data = NULL,
.controller_data = &ad5304_chip_info,
.mode = SPI_MODE_2,
},
#endif
#if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) #if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE)
{ {
.modalias = "spidev", .modalias = "spidev",
...@@ -457,6 +439,19 @@ static struct platform_device bfin_device_gpiokeys = { ...@@ -457,6 +439,19 @@ static struct platform_device bfin_device_gpiokeys = {
}; };
#endif #endif
static struct resource bfin_gpios_resources = {
.start = 0,
.end = MAX_BLACKFIN_GPIOS - 1,
.flags = IORESOURCE_IRQ,
};
static struct platform_device bfin_gpios_device = {
.name = "simple-gpio",
.id = -1,
.num_resources = 1,
.resource = &bfin_gpios_resources,
};
#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE) #if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE)
#include <linux/i2c-gpio.h> #include <linux/i2c-gpio.h>
...@@ -518,6 +513,8 @@ static struct platform_device *stamp_devices[] __initdata = { ...@@ -518,6 +513,8 @@ static struct platform_device *stamp_devices[] __initdata = {
#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE) #if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE)
&i2c_gpio_device, &i2c_gpio_device,
#endif #endif
&bfin_gpios_device,
&stamp_flash_device, &stamp_flash_device,
}; };
......
...@@ -371,13 +371,6 @@ static struct bfin5xx_spi_chip spi_si3xxx_chip_info = { ...@@ -371,13 +371,6 @@ static struct bfin5xx_spi_chip spi_si3xxx_chip_info = {
}; };
#endif #endif
#if defined(CONFIG_AD5304) || defined(CONFIG_AD5304_MODULE)
static struct bfin5xx_spi_chip ad5304_chip_info = {
.enable_dma = 0,
.bits_per_word = 16,
};
#endif
#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE) #if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
static struct bfin5xx_spi_chip spi_ad7877_chip_info = { static struct bfin5xx_spi_chip spi_ad7877_chip_info = {
.enable_dma = 0, .enable_dma = 0,
...@@ -483,17 +476,6 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -483,17 +476,6 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
.mode = SPI_MODE_3, .mode = SPI_MODE_3,
}, },
#endif #endif
#if defined(CONFIG_AD5304) || defined(CONFIG_AD5304_MODULE)
{
.modalias = "ad5304_spi",
.max_speed_hz = 1250000, /* max spi clock (SCK) speed in HZ */
.bus_num = 0,
.chip_select = 2,
.platform_data = NULL,
.controller_data = &ad5304_chip_info,
.mode = SPI_MODE_2,
},
#endif
#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE) #if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
{ {
.modalias = "ad7877", .modalias = "ad7877",
......
...@@ -128,6 +128,19 @@ static struct platform_device bfin_device_gpiokeys = { ...@@ -128,6 +128,19 @@ static struct platform_device bfin_device_gpiokeys = {
}; };
#endif #endif
static struct resource bfin_gpios_resources = {
.start = 0,
.end = MAX_BLACKFIN_GPIOS - 1,
.flags = IORESOURCE_IRQ,
};
static struct platform_device bfin_gpios_device = {
.name = "simple-gpio",
.id = -1,
.num_resources = 1,
.resource = &bfin_gpios_resources,
};
#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE) #if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE)
static struct resource bfin_pcmcia_cf_resources[] = { static struct resource bfin_pcmcia_cf_resources[] = {
{ {
...@@ -343,7 +356,7 @@ static struct platform_device net2272_bfin_device = { ...@@ -343,7 +356,7 @@ static struct platform_device net2272_bfin_device = {
static struct mtd_partition stamp_partitions[] = { static struct mtd_partition stamp_partitions[] = {
{ {
.name = "Bootloader", .name = "Bootloader",
.size = 0x20000, .size = 0x40000,
.offset = 0, .offset = 0,
}, { }, {
.name = "Kernel", .name = "Kernel",
...@@ -351,7 +364,7 @@ static struct mtd_partition stamp_partitions[] = { ...@@ -351,7 +364,7 @@ static struct mtd_partition stamp_partitions[] = {
.offset = MTDPART_OFS_APPEND, .offset = MTDPART_OFS_APPEND,
}, { }, {
.name = "RootFS", .name = "RootFS",
.size = 0x400000 - 0x20000 - 0xE0000 - 0x10000, .size = 0x400000 - 0x40000 - 0xE0000 - 0x10000,
.offset = MTDPART_OFS_APPEND, .offset = MTDPART_OFS_APPEND,
}, { }, {
.name = "MAC Address", .name = "MAC Address",
...@@ -391,17 +404,17 @@ static struct platform_device stamp_flash_device = { ...@@ -391,17 +404,17 @@ static struct platform_device stamp_flash_device = {
static struct mtd_partition bfin_spi_flash_partitions[] = { static struct mtd_partition bfin_spi_flash_partitions[] = {
{ {
.name = "bootloader", .name = "bootloader",
.size = 0x00020000, .size = 0x00040000,
.offset = 0, .offset = 0,
.mask_flags = MTD_CAP_ROM .mask_flags = MTD_CAP_ROM
}, { }, {
.name = "kernel", .name = "kernel",
.size = 0xe0000, .size = 0xe0000,
.offset = 0x20000 .offset = MTDPART_OFS_APPEND,
}, { }, {
.name = "file system", .name = "file system",
.size = 0x700000, .size = MTDPART_SIZ_FULL,
.offset = 0x00100000, .offset = MTDPART_OFS_APPEND,
} }
}; };
...@@ -459,13 +472,6 @@ static struct bfin5xx_spi_chip spi_si3xxx_chip_info = { ...@@ -459,13 +472,6 @@ static struct bfin5xx_spi_chip spi_si3xxx_chip_info = {
}; };
#endif #endif
#if defined(CONFIG_AD5304) || defined(CONFIG_AD5304_MODULE)
static struct bfin5xx_spi_chip ad5304_chip_info = {
.enable_dma = 0,
.bits_per_word = 16,
};
#endif
#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE) #if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
static struct bfin5xx_spi_chip spi_ad7877_chip_info = { static struct bfin5xx_spi_chip spi_ad7877_chip_info = {
.enable_dma = 0, .enable_dma = 0,
...@@ -578,17 +584,6 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -578,17 +584,6 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
.mode = SPI_MODE_3, .mode = SPI_MODE_3,
}, },
#endif #endif
#if defined(CONFIG_AD5304) || defined(CONFIG_AD5304_MODULE)
{
.modalias = "ad5304_spi",
.max_speed_hz = 1250000, /* max spi clock (SCK) speed in HZ */
.bus_num = 0,
.chip_select = 2,
.platform_data = NULL,
.controller_data = &ad5304_chip_info,
.mode = SPI_MODE_2,
},
#endif
#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE) #if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
{ {
.modalias = "ad7877", .modalias = "ad7877",
...@@ -821,6 +816,8 @@ static struct platform_device *stamp_devices[] __initdata = { ...@@ -821,6 +816,8 @@ static struct platform_device *stamp_devices[] __initdata = {
#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) #if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
&bfin_device_gpiokeys, &bfin_device_gpiokeys,
#endif #endif
&bfin_gpios_device,
&stamp_flash_device, &stamp_flash_device,
}; };
......
...@@ -285,8 +285,8 @@ static struct mtd_partition partition_info[] = { ...@@ -285,8 +285,8 @@ static struct mtd_partition partition_info[] = {
}, },
{ {
.name = "File System", .name = "File System",
.offset = 4 * SIZE_1M, .offset = MTDPART_OFS_APPEND,
.size = (256 - 4) * SIZE_1M, .size = MTDPART_SIZ_FULL,
}, },
}; };
...@@ -333,7 +333,7 @@ static struct platform_device bf54x_sdh_device = { ...@@ -333,7 +333,7 @@ static struct platform_device bf54x_sdh_device = {
static struct mtd_partition ezkit_partitions[] = { static struct mtd_partition ezkit_partitions[] = {
{ {
.name = "Bootloader", .name = "Bootloader",
.size = 0x20000, .size = 0x40000,
.offset = 0, .offset = 0,
}, { }, {
.name = "Kernel", .name = "Kernel",
...@@ -381,8 +381,8 @@ static struct mtd_partition bfin_spi_flash_partitions[] = { ...@@ -381,8 +381,8 @@ static struct mtd_partition bfin_spi_flash_partitions[] = {
.mask_flags = MTD_CAP_ROM .mask_flags = MTD_CAP_ROM
}, { }, {
.name = "linux kernel", .name = "linux kernel",
.size = 0x1c0000, .size = MTDPART_SIZ_FULL,
.offset = 0x40000 .offset = MTDPART_OFS_APPEND,
} }
}; };
...@@ -594,6 +594,19 @@ static struct platform_device bfin_device_gpiokeys = { ...@@ -594,6 +594,19 @@ static struct platform_device bfin_device_gpiokeys = {
}; };
#endif #endif
static struct resource bfin_gpios_resources = {
.start = 0,
.end = MAX_BLACKFIN_GPIOS - 1,
.flags = IORESOURCE_IRQ,
};
static struct platform_device bfin_gpios_device = {
.name = "simple-gpio",
.id = -1,
.num_resources = 1,
.resource = &bfin_gpios_resources,
};
static struct platform_device *ezkit_devices[] __initdata = { static struct platform_device *ezkit_devices[] __initdata = {
#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
&rtc_device, &rtc_device,
...@@ -646,6 +659,8 @@ static struct platform_device *ezkit_devices[] __initdata = { ...@@ -646,6 +659,8 @@ static struct platform_device *ezkit_devices[] __initdata = {
#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) #if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
&bfin_device_gpiokeys, &bfin_device_gpiokeys,
#endif #endif
&bfin_gpios_device,
&ezkit_flash_device, &ezkit_flash_device,
}; };
......
...@@ -27,6 +27,8 @@ ...@@ -27,6 +27,8 @@
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/ */
#include <linux/module.h>
#include <asm/blackfin.h> #include <asm/blackfin.h>
#include <asm/dma.h> #include <asm/dma.h>
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
*/ */
#include <linux/linkage.h> #include <linux/linkage.h>
#include <linux/init.h>
#include <asm/blackfin.h> #include <asm/blackfin.h>
#include <asm/trace.h> #include <asm/trace.h>
#if CONFIG_BFIN_KERNEL_CLOCK #if CONFIG_BFIN_KERNEL_CLOCK
...@@ -44,10 +45,9 @@ ...@@ -44,10 +45,9 @@
#define INITIAL_STACK 0xFFB01000 #define INITIAL_STACK 0xFFB01000
.text __INIT
ENTRY(__start) ENTRY(__start)
ENTRY(__stext)
/* R0: argument of command line string, passed from uboot, save it */ /* R0: argument of command line string, passed from uboot, save it */
R7 = R0; R7 = R0;
/* Enable Cycle Counter and Nesting Of Interrupts */ /* Enable Cycle Counter and Nesting Of Interrupts */
...@@ -213,6 +213,7 @@ ENTRY(__stext) ...@@ -213,6 +213,7 @@ ENTRY(__stext)
.LWAIT_HERE: .LWAIT_HERE:
jump .LWAIT_HERE; jump .LWAIT_HERE;
ENDPROC(__start)
ENTRY(_real_start) ENTRY(_real_start)
[ -- sp ] = reti; [ -- sp ] = reti;
...@@ -285,6 +286,9 @@ ENTRY(_real_start) ...@@ -285,6 +286,9 @@ ENTRY(_real_start)
call _start_kernel; call _start_kernel;
.L_exit: .L_exit:
jump.s .L_exit; jump.s .L_exit;
ENDPROC(_real_start)
__FINIT
.section .l1.text .section .l1.text
#if CONFIG_BFIN_KERNEL_CLOCK #if CONFIG_BFIN_KERNEL_CLOCK
...@@ -450,6 +454,7 @@ ENTRY(_start_dma_code) ...@@ -450,6 +454,7 @@ ENTRY(_start_dma_code)
SSYNC; SSYNC;
RTS; RTS;
ENDPROC(_start_dma_code)
#endif /* CONFIG_BFIN_KERNEL_CLOCK */ #endif /* CONFIG_BFIN_KERNEL_CLOCK */
.data .data
......
...@@ -223,7 +223,7 @@ static struct platform_device bfin_uart_device = { ...@@ -223,7 +223,7 @@ static struct platform_device bfin_uart_device = {
static struct mtd_partition ezkit_partitions[] = { static struct mtd_partition ezkit_partitions[] = {
{ {
.name = "Bootloader", .name = "Bootloader",
.size = 0x20000, .size = 0x40000,
.offset = 0, .offset = 0,
}, { }, {
.name = "Kernel", .name = "Kernel",
...@@ -389,6 +389,19 @@ static struct platform_device bfin_device_gpiokeys = { ...@@ -389,6 +389,19 @@ static struct platform_device bfin_device_gpiokeys = {
}; };
#endif #endif
static struct resource bfin_gpios_resources = {
.start = 0,
.end = MAX_BLACKFIN_GPIOS - 1,
.flags = IORESOURCE_IRQ,
};
static struct platform_device bfin_gpios_device = {
.name = "simple-gpio",
.id = -1,
.num_resources = 1,
.resource = &bfin_gpios_resources,
};
#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE) #if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE)
#include <linux/i2c-gpio.h> #include <linux/i2c-gpio.h>
...@@ -446,6 +459,7 @@ static struct platform_device *ezkit_devices[] __initdata = { ...@@ -446,6 +459,7 @@ static struct platform_device *ezkit_devices[] __initdata = {
&isp1362_hcd_device, &isp1362_hcd_device,
#endif #endif
&bfin_gpios_device,
&ezkit_flash_device, &ezkit_flash_device,
}; };
......
...@@ -31,140 +31,6 @@ ...@@ -31,140 +31,6 @@
#include <asm/blackfin.h> #include <asm/blackfin.h>
#include <asm/mach/irq.h> #include <asm/mach/irq.h>
.text
ENTRY(_unmask_wdog_wakeup_evt)
[--SP] = ( R7:0, P5:0 );
#if defined(CONFIG_BF561)
P0.H = hi(SICA_IWR1);
P0.L = lo(SICA_IWR1);
#elif defined(CONFIG_BF54x) || defined(CONFIG_BF52x)
P0.h = HI(SIC_IWR0);
P0.l = LO(SIC_IWR0);
#else
P0.h = HI(SIC_IWR);
P0.l = LO(SIC_IWR);
#endif
R7 = [P0];
#if defined(CONFIG_BF561)
BITSET(R7, 27);
#else
BITSET(R7,(IRQ_WATCH - IVG7));
#endif
[P0] = R7;
SSYNC;
( R7:0, P5:0 ) = [SP++];
RTS;
.LWRITE_TO_STAT:
/* When watch dog timer is enabled, a write to STAT will load the
* contents of CNT to STAT
*/
R7 = 0x0000(z);
#if defined(CONFIG_BF561)
P0.h = HI(WDOGA_STAT);
P0.l = LO(WDOGA_STAT);
#else
P0.h = HI(WDOG_STAT);
P0.l = LO(WDOG_STAT);
#endif
[P0] = R7;
SSYNC;
JUMP .LSKIP_WRITE_TO_STAT;
ENTRY(_program_wdog_timer)
[--SP] = ( R7:0, P5:0 );
#if defined(CONFIG_BF561)
P0.h = HI(WDOGA_CNT);
P0.l = LO(WDOGA_CNT);
#else
P0.h = HI(WDOG_CNT);
P0.l = LO(WDOG_CNT);
#endif
[P0] = R0;
SSYNC;
#if defined(CONFIG_BF561)
P0.h = HI(WDOGA_CTL);
P0.l = LO(WDOGA_CTL);
#else
P0.h = HI(WDOG_CTL);
P0.l = LO(WDOG_CTL);
#endif
R7 = W[P0](Z);
CC = BITTST(R7,1);
if !CC JUMP .LWRITE_TO_STAT;
CC = BITTST(R7,2);
if !CC JUMP .LWRITE_TO_STAT;
.LSKIP_WRITE_TO_STAT:
#if defined(CONFIG_BF561)
P0.h = HI(WDOGA_CTL);
P0.l = LO(WDOGA_CTL);
#else
P0.h = HI(WDOG_CTL);
P0.l = LO(WDOG_CTL);
#endif
R7 = W[P0](Z);
BITCLR(R7,1); /* Enable GP event */
BITSET(R7,2);
W[P0] = R7.L;
SSYNC;
NOP;
R7 = W[P0](Z);
BITCLR(R7,4); /* Enable the wdog counter */
W[P0] = R7.L;
SSYNC;
( R7:0, P5:0 ) = [SP++];
RTS;
ENTRY(_clear_wdog_wakeup_evt)
[--SP] = ( R7:0, P5:0 );
#if defined(CONFIG_BF561)
P0.h = HI(WDOGA_CTL);
P0.l = LO(WDOGA_CTL);
#else
P0.h = HI(WDOG_CTL);
P0.l = LO(WDOG_CTL);
#endif
R7 = 0x0AD6(Z);
W[P0] = R7.L;
SSYNC;
R7 = W[P0](Z);
BITSET(R7,15);
W[P0] = R7.L;
SSYNC;
R7 = W[P0](Z);
BITSET(R7,1);
BITSET(R7,2);
W[P0] = R7.L;
SSYNC;
( R7:0, P5:0 ) = [SP++];
RTS;
ENTRY(_disable_wdog_timer)
[--SP] = ( R7:0, P5:0 );
#if defined(CONFIG_BF561)
P0.h = HI(WDOGA_CTL);
P0.l = LO(WDOGA_CTL);
#else
P0.h = HI(WDOG_CTL);
P0.l = LO(WDOG_CTL);
#endif
R7 = 0xAD6(Z);
W[P0] = R7.L;
SSYNC;
( R7:0, P5:0 ) = [SP++];
RTS;
#if !defined(CONFIG_BF561)
.section .l1.text .section .l1.text
...@@ -459,10 +325,12 @@ ENTRY(_set_sic_iwr) ...@@ -459,10 +325,12 @@ ENTRY(_set_sic_iwr)
RTS; RTS;
ENTRY(_set_rtc_istat) ENTRY(_set_rtc_istat)
#ifndef CONFIG_BF561
P0.H = hi(RTC_ISTAT); P0.H = hi(RTC_ISTAT);
P0.L = lo(RTC_ISTAT); P0.L = lo(RTC_ISTAT);
w[P0] = R0.L; w[P0] = R0.L;
SSYNC; SSYNC;
#endif
RTS; RTS;
ENTRY(_test_pll_locked) ENTRY(_test_pll_locked)
...@@ -473,4 +341,3 @@ ENTRY(_test_pll_locked) ...@@ -473,4 +341,3 @@ ENTRY(_test_pll_locked)
CC = BITTST(R0,5); CC = BITTST(R0,5);
IF !CC JUMP 1b; IF !CC JUMP 1b;
RTS; RTS;
#endif
...@@ -74,7 +74,7 @@ unsigned long bfin_sic_iwr[3]; /* Up to 3 SIC_IWRx registers */ ...@@ -74,7 +74,7 @@ unsigned long bfin_sic_iwr[3]; /* Up to 3 SIC_IWRx registers */
#endif #endif
struct ivgx { struct ivgx {
/* irq number for request_irq, available in mach-bf533/irq.h */ /* irq number for request_irq, available in mach-bf5xx/irq.h */
unsigned int irqno; unsigned int irqno;
/* corresponding bit in the SIC_ISR register */ /* corresponding bit in the SIC_ISR register */
unsigned int isrflag; unsigned int isrflag;
...@@ -86,7 +86,6 @@ struct ivg_slice { ...@@ -86,7 +86,6 @@ struct ivg_slice {
struct ivgx *istop; struct ivgx *istop;
} ivg7_13[IVG13 - IVG7 + 1]; } ivg7_13[IVG13 - IVG7 + 1];
static void search_IAR(void);
/* /*
* Search SIC_IAR and fill tables with the irqvalues * Search SIC_IAR and fill tables with the irqvalues
...@@ -120,10 +119,10 @@ static void __init search_IAR(void) ...@@ -120,10 +119,10 @@ static void __init search_IAR(void)
} }
/* /*
* This is for BF533 internal IRQs * This is for core internal IRQs
*/ */
static void ack_noop(unsigned int irq) static void bfin_ack_noop(unsigned int irq)
{ {
/* Dummy function. */ /* Dummy function. */
} }
...@@ -156,11 +155,11 @@ static void bfin_internal_mask_irq(unsigned int irq) ...@@ -156,11 +155,11 @@ static void bfin_internal_mask_irq(unsigned int irq)
{ {
#ifdef CONFIG_BF53x #ifdef CONFIG_BF53x
bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() & bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() &
~(1 << (irq - (IRQ_CORETMR + 1)))); ~(1 << SIC_SYSIRQ(irq)));
#else #else
unsigned mask_bank, mask_bit; unsigned mask_bank, mask_bit;
mask_bank = (irq - (IRQ_CORETMR + 1)) / 32; mask_bank = SIC_SYSIRQ(irq) / 32;
mask_bit = (irq - (IRQ_CORETMR + 1)) % 32; mask_bit = SIC_SYSIRQ(irq) % 32;
bfin_write_SIC_IMASK(mask_bank, bfin_read_SIC_IMASK(mask_bank) & bfin_write_SIC_IMASK(mask_bank, bfin_read_SIC_IMASK(mask_bank) &
~(1 << mask_bit)); ~(1 << mask_bit));
#endif #endif
...@@ -171,11 +170,11 @@ static void bfin_internal_unmask_irq(unsigned int irq) ...@@ -171,11 +170,11 @@ static void bfin_internal_unmask_irq(unsigned int irq)
{ {
#ifdef CONFIG_BF53x #ifdef CONFIG_BF53x
bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() | bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() |
(1 << (irq - (IRQ_CORETMR + 1)))); (1 << SIC_SYSIRQ(irq)));
#else #else
unsigned mask_bank, mask_bit; unsigned mask_bank, mask_bit;
mask_bank = (irq - (IRQ_CORETMR + 1)) / 32; mask_bank = SIC_SYSIRQ(irq) / 32;
mask_bit = (irq - (IRQ_CORETMR + 1)) % 32; mask_bit = SIC_SYSIRQ(irq) % 32;
bfin_write_SIC_IMASK(mask_bank, bfin_read_SIC_IMASK(mask_bank) | bfin_write_SIC_IMASK(mask_bank, bfin_read_SIC_IMASK(mask_bank) |
(1 << mask_bit)); (1 << mask_bit));
#endif #endif
...@@ -187,8 +186,8 @@ int bfin_internal_set_wake(unsigned int irq, unsigned int state) ...@@ -187,8 +186,8 @@ int bfin_internal_set_wake(unsigned int irq, unsigned int state)
{ {
unsigned bank, bit; unsigned bank, bit;
unsigned long flags; unsigned long flags;
bank = (irq - (IRQ_CORETMR + 1)) / 32; bank = SIC_SYSIRQ(irq) / 32;
bit = (irq - (IRQ_CORETMR + 1)) % 32; bit = SIC_SYSIRQ(irq) % 32;
local_irq_save(flags); local_irq_save(flags);
...@@ -204,15 +203,18 @@ int bfin_internal_set_wake(unsigned int irq, unsigned int state) ...@@ -204,15 +203,18 @@ int bfin_internal_set_wake(unsigned int irq, unsigned int state)
#endif #endif
static struct irq_chip bfin_core_irqchip = { static struct irq_chip bfin_core_irqchip = {
.ack = ack_noop, .ack = bfin_ack_noop,
.mask = bfin_core_mask_irq, .mask = bfin_core_mask_irq,
.unmask = bfin_core_unmask_irq, .unmask = bfin_core_unmask_irq,
}; };
static struct irq_chip bfin_internal_irqchip = { static struct irq_chip bfin_internal_irqchip = {
.ack = ack_noop, .ack = bfin_ack_noop,
.mask = bfin_internal_mask_irq, .mask = bfin_internal_mask_irq,
.unmask = bfin_internal_unmask_irq, .unmask = bfin_internal_unmask_irq,
.mask_ack = bfin_internal_mask_irq,
.disable = bfin_internal_mask_irq,
.enable = bfin_internal_unmask_irq,
#ifdef CONFIG_PM #ifdef CONFIG_PM
.set_wake = bfin_internal_set_wake, .set_wake = bfin_internal_set_wake,
#endif #endif
...@@ -221,38 +223,23 @@ static struct irq_chip bfin_internal_irqchip = { ...@@ -221,38 +223,23 @@ static struct irq_chip bfin_internal_irqchip = {
#ifdef BF537_GENERIC_ERROR_INT_DEMUX #ifdef BF537_GENERIC_ERROR_INT_DEMUX
static int error_int_mask; static int error_int_mask;
static void bfin_generic_error_ack_irq(unsigned int irq)
{
}
static void bfin_generic_error_mask_irq(unsigned int irq) static void bfin_generic_error_mask_irq(unsigned int irq)
{ {
error_int_mask &= ~(1L << (irq - IRQ_PPI_ERROR)); error_int_mask &= ~(1L << (irq - IRQ_PPI_ERROR));
if (!error_int_mask) { if (!error_int_mask)
local_irq_disable(); bfin_internal_mask_irq(IRQ_GENERIC_ERROR);
bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() &
~(1 << (IRQ_GENERIC_ERROR -
(IRQ_CORETMR + 1))));
SSYNC();
local_irq_enable();
}
} }
static void bfin_generic_error_unmask_irq(unsigned int irq) static void bfin_generic_error_unmask_irq(unsigned int irq)
{ {
local_irq_disable(); bfin_internal_unmask_irq(IRQ_GENERIC_ERROR);
bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() | 1 <<
(IRQ_GENERIC_ERROR - (IRQ_CORETMR + 1)));
SSYNC();
local_irq_enable();
error_int_mask |= 1L << (irq - IRQ_PPI_ERROR); error_int_mask |= 1L << (irq - IRQ_PPI_ERROR);
} }
static struct irq_chip bfin_generic_error_irqchip = { static struct irq_chip bfin_generic_error_irqchip = {
.ack = bfin_generic_error_ack_irq, .ack = bfin_ack_noop,
.mask_ack = bfin_generic_error_mask_irq,
.mask = bfin_generic_error_mask_irq, .mask = bfin_generic_error_mask_irq,
.unmask = bfin_generic_error_unmask_irq, .unmask = bfin_generic_error_unmask_irq,
}; };
...@@ -608,7 +595,7 @@ static struct pin_int_t *pint[NR_PINT_SYS_IRQS] = { ...@@ -608,7 +595,7 @@ static struct pin_int_t *pint[NR_PINT_SYS_IRQS] = {
(struct pin_int_t *)PINT3_MASK_SET, (struct pin_int_t *)PINT3_MASK_SET,
}; };
unsigned short get_irq_base(u8 bank, u8 bmap) inline unsigned short get_irq_base(u8 bank, u8 bmap)
{ {
u16 irq_base; u16 irq_base;
...@@ -969,17 +956,12 @@ int __init init_arch_irq(void) ...@@ -969,17 +956,12 @@ int __init init_arch_irq(void)
#if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) || defined(CONFIG_BF561) #if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) || defined(CONFIG_BF561)
bfin_write_SIC_IMASK0(SIC_UNMASK_ALL); bfin_write_SIC_IMASK0(SIC_UNMASK_ALL);
bfin_write_SIC_IMASK1(SIC_UNMASK_ALL); bfin_write_SIC_IMASK1(SIC_UNMASK_ALL);
bfin_write_SIC_IWR0(IWR_ENABLE_ALL);
bfin_write_SIC_IWR1(IWR_ENABLE_ALL);
# ifdef CONFIG_BF54x # ifdef CONFIG_BF54x
bfin_write_SIC_IMASK2(SIC_UNMASK_ALL); bfin_write_SIC_IMASK2(SIC_UNMASK_ALL);
bfin_write_SIC_IWR2(IWR_ENABLE_ALL);
# endif # endif
#else #else
bfin_write_SIC_IMASK(SIC_UNMASK_ALL); bfin_write_SIC_IMASK(SIC_UNMASK_ALL);
bfin_write_SIC_IWR(IWR_ENABLE_ALL);
#endif #endif
SSYNC();
local_irq_disable(); local_irq_disable();
...@@ -1001,90 +983,53 @@ int __init init_arch_irq(void) ...@@ -1001,90 +983,53 @@ int __init init_arch_irq(void)
set_irq_chip(irq, &bfin_core_irqchip); set_irq_chip(irq, &bfin_core_irqchip);
else else
set_irq_chip(irq, &bfin_internal_irqchip); set_irq_chip(irq, &bfin_internal_irqchip);
#ifdef BF537_GENERIC_ERROR_INT_DEMUX
if (irq != IRQ_GENERIC_ERROR) {
#endif
switch (irq) { switch (irq) {
#if defined(CONFIG_BF53x) #if defined(CONFIG_BF53x)
case IRQ_PROG_INTA: case IRQ_PROG_INTA:
set_irq_chained_handler(irq,
bfin_demux_gpio_irq);
break;
# if defined(BF537_FAMILY) && !(defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)) # if defined(BF537_FAMILY) && !(defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE))
case IRQ_MAC_RX: case IRQ_MAC_RX:
set_irq_chained_handler(irq,
bfin_demux_gpio_irq);
break;
# endif # endif
#elif defined(CONFIG_BF54x) #elif defined(CONFIG_BF54x)
case IRQ_PINT0: case IRQ_PINT0:
set_irq_chained_handler(irq, case IRQ_PINT1:
bfin_demux_gpio_irq); case IRQ_PINT2:
break; case IRQ_PINT3:
case IRQ_PINT1:
set_irq_chained_handler(irq,
bfin_demux_gpio_irq);
break;
case IRQ_PINT2:
set_irq_chained_handler(irq,
bfin_demux_gpio_irq);
break;
case IRQ_PINT3:
set_irq_chained_handler(irq,
bfin_demux_gpio_irq);
break;
#elif defined(CONFIG_BF52x) #elif defined(CONFIG_BF52x)
case IRQ_PORTF_INTA: case IRQ_PORTF_INTA:
set_irq_chained_handler(irq, case IRQ_PORTG_INTA:
bfin_demux_gpio_irq); case IRQ_PORTH_INTA:
break;
case IRQ_PORTG_INTA:
set_irq_chained_handler(irq,
bfin_demux_gpio_irq);
break;
case IRQ_PORTH_INTA:
set_irq_chained_handler(irq,
bfin_demux_gpio_irq);
break;
#elif defined(CONFIG_BF561) #elif defined(CONFIG_BF561)
case IRQ_PROG0_INTA: case IRQ_PROG0_INTA:
set_irq_chained_handler(irq, case IRQ_PROG1_INTA:
bfin_demux_gpio_irq); case IRQ_PROG2_INTA:
break;
case IRQ_PROG1_INTA:
set_irq_chained_handler(irq,
bfin_demux_gpio_irq);
break;
case IRQ_PROG2_INTA:
set_irq_chained_handler(irq,
bfin_demux_gpio_irq);
break;
#endif #endif
default: set_irq_chained_handler(irq,
set_irq_handler(irq, handle_simple_irq); bfin_demux_gpio_irq);
break; break;
}
#ifdef BF537_GENERIC_ERROR_INT_DEMUX #ifdef BF537_GENERIC_ERROR_INT_DEMUX
} else { case IRQ_GENERIC_ERROR:
set_irq_handler(irq, bfin_demux_error_irq); set_irq_handler(irq, bfin_demux_error_irq);
}
break;
#endif #endif
default:
set_irq_handler(irq, handle_simple_irq);
break;
}
} }
#ifdef BF537_GENERIC_ERROR_INT_DEMUX #ifdef BF537_GENERIC_ERROR_INT_DEMUX
for (irq = IRQ_PPI_ERROR; irq <= IRQ_UART1_ERROR; irq++) { for (irq = IRQ_PPI_ERROR; irq <= IRQ_UART1_ERROR; irq++)
set_irq_chip(irq, &bfin_generic_error_irqchip); set_irq_chip_and_handler(irq, &bfin_generic_error_irqchip,
set_irq_handler(irq, handle_level_irq); handle_level_irq);
}
#endif #endif
for (irq = GPIO_IRQ_BASE; irq < NR_IRQS; irq++) { /* if configured as edge, then will be changed to do_edge_IRQ */
for (irq = GPIO_IRQ_BASE; irq < NR_IRQS; irq++)
set_irq_chip_and_handler(irq, &bfin_gpio_irqchip,
handle_level_irq);
set_irq_chip(irq, &bfin_gpio_irqchip);
/* if configured as edge, then will be changed to do_edge_IRQ */
set_irq_handler(irq, handle_level_irq);
}
bfin_write_IMASK(0); bfin_write_IMASK(0);
CSYNC(); CSYNC();
...@@ -1106,6 +1051,16 @@ int __init init_arch_irq(void) ...@@ -1106,6 +1051,16 @@ int __init init_arch_irq(void)
IMASK_IVG14 | IMASK_IVG13 | IMASK_IVG12 | IMASK_IVG11 | IMASK_IVG14 | IMASK_IVG13 | IMASK_IVG12 | IMASK_IVG11 |
IMASK_IVG10 | IMASK_IVG9 | IMASK_IVG8 | IMASK_IVG7 | IMASK_IVGHW; IMASK_IVG10 | IMASK_IVG9 | IMASK_IVG8 | IMASK_IVG7 | IMASK_IVGHW;
#if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) || defined(CONFIG_BF561)
bfin_write_SIC_IWR0(IWR_ENABLE_ALL);
bfin_write_SIC_IWR1(IWR_ENABLE_ALL);
# ifdef CONFIG_BF54x
bfin_write_SIC_IWR2(IWR_ENABLE_ALL);
# endif
#else
bfin_write_SIC_IWR(IWR_ENABLE_ALL);
#endif
return 0; return 0;
} }
...@@ -1122,7 +1077,6 @@ void do_irq(int vec, struct pt_regs *fp) ...@@ -1122,7 +1077,6 @@ void do_irq(int vec, struct pt_regs *fp)
#if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) || defined(CONFIG_BF561) #if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) || defined(CONFIG_BF561)
unsigned long sic_status[3]; unsigned long sic_status[3];
SSYNC();
sic_status[0] = bfin_read_SIC_ISR0() & bfin_read_SIC_IMASK0(); sic_status[0] = bfin_read_SIC_ISR0() & bfin_read_SIC_IMASK0();
sic_status[1] = bfin_read_SIC_ISR1() & bfin_read_SIC_IMASK1(); sic_status[1] = bfin_read_SIC_ISR1() & bfin_read_SIC_IMASK1();
#ifdef CONFIG_BF54x #ifdef CONFIG_BF54x
...@@ -1138,7 +1092,7 @@ void do_irq(int vec, struct pt_regs *fp) ...@@ -1138,7 +1092,7 @@ void do_irq(int vec, struct pt_regs *fp)
} }
#else #else
unsigned long sic_status; unsigned long sic_status;
SSYNC();
sic_status = bfin_read_SIC_IMASK() & bfin_read_SIC_ISR(); sic_status = bfin_read_SIC_IMASK() & bfin_read_SIC_ISR();
for (;; ivg++) { for (;; ivg++) {
......
...@@ -181,7 +181,7 @@ void __init mem_init(void) ...@@ -181,7 +181,7 @@ void __init mem_init(void)
} }
} }
static __init void free_init_pages(const char *what, unsigned long begin, unsigned long end) static void __init free_init_pages(const char *what, unsigned long begin, unsigned long end)
{ {
unsigned long addr; unsigned long addr;
/* next to check that the page we free is not a partial page */ /* next to check that the page we free is not a partial page */
...@@ -203,7 +203,7 @@ void __init free_initrd_mem(unsigned long start, unsigned long end) ...@@ -203,7 +203,7 @@ void __init free_initrd_mem(unsigned long start, unsigned long end)
} }
#endif #endif
void __init free_initmem(void) void __init_refok free_initmem(void)
{ {
#if defined CONFIG_RAMKERNEL && !defined CONFIG_MPU #if defined CONFIG_RAMKERNEL && !defined CONFIG_MPU
free_init_pages("unused kernel memory", free_init_pages("unused kernel memory",
......
...@@ -686,7 +686,7 @@ config UART0_RTS_PIN ...@@ -686,7 +686,7 @@ config UART0_RTS_PIN
config SERIAL_BFIN_UART1 config SERIAL_BFIN_UART1
bool "Enable UART1" bool "Enable UART1"
depends on SERIAL_BFIN && (BF534 || BF536 || BF537 || BF54x) depends on SERIAL_BFIN && (!BF531 && !BF532 && !BF533 && !BF561)
help help
Enable UART1 Enable UART1
...@@ -699,14 +699,14 @@ config BFIN_UART1_CTSRTS ...@@ -699,14 +699,14 @@ config BFIN_UART1_CTSRTS
config UART1_CTS_PIN config UART1_CTS_PIN
int "UART1 CTS pin" int "UART1 CTS pin"
depends on BFIN_UART1_CTSRTS && (BF53x || BF561) depends on BFIN_UART1_CTSRTS && !BF54x
default -1 default -1
help help
Refer to ./include/asm-blackfin/gpio.h to see the GPIO map. Refer to ./include/asm-blackfin/gpio.h to see the GPIO map.
config UART1_RTS_PIN config UART1_RTS_PIN
int "UART1 RTS pin" int "UART1 RTS pin"
depends on BFIN_UART1_CTSRTS && (BF53x || BF561) depends on BFIN_UART1_CTSRTS && !BF54x
default -1 default -1
help help
Refer to ./include/asm-blackfin/gpio.h to see the GPIO map. Refer to ./include/asm-blackfin/gpio.h to see the GPIO map.
......
This diff is collapsed.
/* /*
* include/asm/bf5xx_timers.h * gptimers.h - Blackfin General Purpose Timer structs/defines/prototypes
*
* This file contains the major Data structures and constants
* used for General Purpose Timer Implementation in BF5xx
* *
* Copyright (c) 2005-2008 Analog Devices Inc.
* Copyright (C) 2005 John DeHority * Copyright (C) 2005 John DeHority
* Copyright (C) 2006 Hella Aglaia GmbH (awe@aglaia-gmbh.de) * Copyright (C) 2006 Hella Aglaia GmbH (awe@aglaia-gmbh.de)
* *
* Licensed under the GPL-2.
*/ */
#ifndef _BLACKFIN_TIMERS_H_ #ifndef _BLACKFIN_TIMERS_H_
......
...@@ -67,4 +67,6 @@ static __inline__ int irq_canonicalize(int irq) ...@@ -67,4 +67,6 @@ static __inline__ int irq_canonicalize(int irq)
#define NO_IRQ ((unsigned int)(-1)) #define NO_IRQ ((unsigned int)(-1))
#endif #endif
#define SIC_SYSIRQ(irq) (irq - (IRQ_CORETMR + 1))
#endif /* _BFIN_IRQ_H_ */ #endif /* _BFIN_IRQ_H_ */
...@@ -23,7 +23,6 @@ ...@@ -23,7 +23,6 @@
#define UART_GET_DLH(uart) bfin_read16(((uart)->port.membase + OFFSET_DLH)) #define UART_GET_DLH(uart) bfin_read16(((uart)->port.membase + OFFSET_DLH))
#define UART_GET_IIR(uart) bfin_read16(((uart)->port.membase + OFFSET_IIR)) #define UART_GET_IIR(uart) bfin_read16(((uart)->port.membase + OFFSET_IIR))
#define UART_GET_LCR(uart) bfin_read16(((uart)->port.membase + OFFSET_LCR)) #define UART_GET_LCR(uart) bfin_read16(((uart)->port.membase + OFFSET_LCR))
#define UART_GET_LSR(uart) bfin_read16(((uart)->port.membase + OFFSET_LSR))
#define UART_GET_GCTL(uart) bfin_read16(((uart)->port.membase + OFFSET_GCTL)) #define UART_GET_GCTL(uart) bfin_read16(((uart)->port.membase + OFFSET_GCTL))
#define UART_PUT_CHAR(uart, v) bfin_write16(((uart)->port.membase + OFFSET_THR), v) #define UART_PUT_CHAR(uart, v) bfin_write16(((uart)->port.membase + OFFSET_THR), v)
...@@ -58,6 +57,7 @@ ...@@ -58,6 +57,7 @@
struct bfin_serial_port { struct bfin_serial_port {
struct uart_port port; struct uart_port port;
unsigned int old_status; unsigned int old_status;
unsigned int lsr;
#ifdef CONFIG_SERIAL_BFIN_DMA #ifdef CONFIG_SERIAL_BFIN_DMA
int tx_done; int tx_done;
int tx_count; int tx_count;
...@@ -67,15 +67,31 @@ struct bfin_serial_port { ...@@ -67,15 +67,31 @@ struct bfin_serial_port {
unsigned int tx_dma_channel; unsigned int tx_dma_channel;
unsigned int rx_dma_channel; unsigned int rx_dma_channel;
struct work_struct tx_dma_workqueue; struct work_struct tx_dma_workqueue;
#else
struct work_struct cts_workqueue;
#endif #endif
#ifdef CONFIG_SERIAL_BFIN_CTSRTS #ifdef CONFIG_SERIAL_BFIN_CTSRTS
struct work_struct cts_workqueue;
int cts_pin; int cts_pin;
int rts_pin; int rts_pin;
#endif #endif
}; };
/* The hardware clears the LSR bits upon read, so we need to cache
* some of the more fun bits in software so they don't get lost
* when checking the LSR in other code paths (TX).
*/
static inline unsigned int UART_GET_LSR(struct bfin_serial_port *uart)
{
unsigned int lsr = bfin_read16(uart->port.membase + OFFSET_LSR);
uart->lsr |= (lsr & (BI|FE|PE|OE));
return lsr | uart->lsr;
}
static inline void UART_CLEAR_LSR(struct bfin_serial_port *uart)
{
uart->lsr = 0;
bfin_write16(uart->port.membase + OFFSET_LSR, -1);
}
struct bfin_serial_port bfin_serial_ports[NR_PORTS]; struct bfin_serial_port bfin_serial_ports[NR_PORTS];
struct bfin_serial_res { struct bfin_serial_res {
unsigned long uart_base_addr; unsigned long uart_base_addr;
......
...@@ -23,7 +23,6 @@ ...@@ -23,7 +23,6 @@
#define UART_GET_DLH(uart) bfin_read16(((uart)->port.membase + OFFSET_DLH)) #define UART_GET_DLH(uart) bfin_read16(((uart)->port.membase + OFFSET_DLH))
#define UART_GET_IIR(uart) bfin_read16(((uart)->port.membase + OFFSET_IIR)) #define UART_GET_IIR(uart) bfin_read16(((uart)->port.membase + OFFSET_IIR))
#define UART_GET_LCR(uart) bfin_read16(((uart)->port.membase + OFFSET_LCR)) #define UART_GET_LCR(uart) bfin_read16(((uart)->port.membase + OFFSET_LCR))
#define UART_GET_LSR(uart) bfin_read16(((uart)->port.membase + OFFSET_LSR))
#define UART_GET_GCTL(uart) bfin_read16(((uart)->port.membase + OFFSET_GCTL)) #define UART_GET_GCTL(uart) bfin_read16(((uart)->port.membase + OFFSET_GCTL))
#define UART_PUT_CHAR(uart,v) bfin_write16(((uart)->port.membase + OFFSET_THR),v) #define UART_PUT_CHAR(uart,v) bfin_write16(((uart)->port.membase + OFFSET_THR),v)
...@@ -46,6 +45,7 @@ ...@@ -46,6 +45,7 @@
struct bfin_serial_port { struct bfin_serial_port {
struct uart_port port; struct uart_port port;
unsigned int old_status; unsigned int old_status;
unsigned int lsr;
#ifdef CONFIG_SERIAL_BFIN_DMA #ifdef CONFIG_SERIAL_BFIN_DMA
int tx_done; int tx_done;
int tx_count; int tx_count;
...@@ -56,14 +56,34 @@ struct bfin_serial_port { ...@@ -56,14 +56,34 @@ struct bfin_serial_port {
unsigned int rx_dma_channel; unsigned int rx_dma_channel;
struct work_struct tx_dma_workqueue; struct work_struct tx_dma_workqueue;
#else #else
struct work_struct cts_workqueue; # if ANOMALY_05000230
unsigned int anomaly_threshold;
# endif
#endif #endif
#ifdef CONFIG_SERIAL_BFIN_CTSRTS #ifdef CONFIG_SERIAL_BFIN_CTSRTS
struct work_struct cts_workqueue;
int cts_pin; int cts_pin;
int rts_pin; int rts_pin;
#endif #endif
}; };
/* The hardware clears the LSR bits upon read, so we need to cache
* some of the more fun bits in software so they don't get lost
* when checking the LSR in other code paths (TX).
*/
static inline unsigned int UART_GET_LSR(struct bfin_serial_port *uart)
{
unsigned int lsr = bfin_read16(uart->port.membase + OFFSET_LSR);
uart->lsr |= (lsr & (BI|FE|PE|OE));
return lsr | uart->lsr;
}
static inline void UART_CLEAR_LSR(struct bfin_serial_port *uart)
{
uart->lsr = 0;
bfin_write16(uart->port.membase + OFFSET_LSR, -1);
}
struct bfin_serial_port bfin_serial_ports[NR_PORTS]; struct bfin_serial_port bfin_serial_ports[NR_PORTS];
struct bfin_serial_res { struct bfin_serial_res {
unsigned long uart_base_addr; unsigned long uart_base_addr;
......
...@@ -23,7 +23,6 @@ ...@@ -23,7 +23,6 @@
#define UART_GET_DLH(uart) bfin_read16(((uart)->port.membase + OFFSET_DLH)) #define UART_GET_DLH(uart) bfin_read16(((uart)->port.membase + OFFSET_DLH))
#define UART_GET_IIR(uart) bfin_read16(((uart)->port.membase + OFFSET_IIR)) #define UART_GET_IIR(uart) bfin_read16(((uart)->port.membase + OFFSET_IIR))
#define UART_GET_LCR(uart) bfin_read16(((uart)->port.membase + OFFSET_LCR)) #define UART_GET_LCR(uart) bfin_read16(((uart)->port.membase + OFFSET_LCR))
#define UART_GET_LSR(uart) bfin_read16(((uart)->port.membase + OFFSET_LSR))
#define UART_GET_GCTL(uart) bfin_read16(((uart)->port.membase + OFFSET_GCTL)) #define UART_GET_GCTL(uart) bfin_read16(((uart)->port.membase + OFFSET_GCTL))
#define UART_PUT_CHAR(uart,v) bfin_write16(((uart)->port.membase + OFFSET_THR),v) #define UART_PUT_CHAR(uart,v) bfin_write16(((uart)->port.membase + OFFSET_THR),v)
...@@ -58,6 +57,7 @@ ...@@ -58,6 +57,7 @@
struct bfin_serial_port { struct bfin_serial_port {
struct uart_port port; struct uart_port port;
unsigned int old_status; unsigned int old_status;
unsigned int lsr;
#ifdef CONFIG_SERIAL_BFIN_DMA #ifdef CONFIG_SERIAL_BFIN_DMA
int tx_done; int tx_done;
int tx_count; int tx_count;
...@@ -67,15 +67,31 @@ struct bfin_serial_port { ...@@ -67,15 +67,31 @@ struct bfin_serial_port {
unsigned int tx_dma_channel; unsigned int tx_dma_channel;
unsigned int rx_dma_channel; unsigned int rx_dma_channel;
struct work_struct tx_dma_workqueue; struct work_struct tx_dma_workqueue;
#else
struct work_struct cts_workqueue;
#endif #endif
#ifdef CONFIG_SERIAL_BFIN_CTSRTS #ifdef CONFIG_SERIAL_BFIN_CTSRTS
struct work_struct cts_workqueue;
int cts_pin; int cts_pin;
int rts_pin; int rts_pin;
#endif #endif
}; };
/* The hardware clears the LSR bits upon read, so we need to cache
* some of the more fun bits in software so they don't get lost
* when checking the LSR in other code paths (TX).
*/
static inline unsigned int UART_GET_LSR(struct bfin_serial_port *uart)
{
unsigned int lsr = bfin_read16(uart->port.membase + OFFSET_LSR);
uart->lsr |= (lsr & (BI|FE|PE|OE));
return lsr | uart->lsr;
}
static inline void UART_CLEAR_LSR(struct bfin_serial_port *uart)
{
uart->lsr = 0;
bfin_write16(uart->port.membase + OFFSET_LSR, -1);
}
struct bfin_serial_port bfin_serial_ports[NR_PORTS]; struct bfin_serial_port bfin_serial_ports[NR_PORTS];
struct bfin_serial_res { struct bfin_serial_res {
unsigned long uart_base_addr; unsigned long uart_base_addr;
......
...@@ -24,6 +24,8 @@ ...@@ -24,6 +24,8 @@
#define UART_GET_LCR(uart) bfin_read16(((uart)->port.membase + OFFSET_LCR)) #define UART_GET_LCR(uart) bfin_read16(((uart)->port.membase + OFFSET_LCR))
#define UART_GET_LSR(uart) bfin_read16(((uart)->port.membase + OFFSET_LSR)) #define UART_GET_LSR(uart) bfin_read16(((uart)->port.membase + OFFSET_LSR))
#define UART_GET_GCTL(uart) bfin_read16(((uart)->port.membase + OFFSET_GCTL)) #define UART_GET_GCTL(uart) bfin_read16(((uart)->port.membase + OFFSET_GCTL))
#define UART_GET_MSR(uart) bfin_read16(((uart)->port.membase + OFFSET_MSR))
#define UART_GET_MCR(uart) bfin_read16(((uart)->port.membase + OFFSET_MCR))
#define UART_PUT_CHAR(uart,v) bfin_write16(((uart)->port.membase + OFFSET_THR),v) #define UART_PUT_CHAR(uart,v) bfin_write16(((uart)->port.membase + OFFSET_THR),v)
#define UART_PUT_DLL(uart,v) bfin_write16(((uart)->port.membase + OFFSET_DLL),v) #define UART_PUT_DLL(uart,v) bfin_write16(((uart)->port.membase + OFFSET_DLL),v)
...@@ -32,7 +34,9 @@ ...@@ -32,7 +34,9 @@
#define UART_PUT_DLH(uart,v) bfin_write16(((uart)->port.membase + OFFSET_DLH),v) #define UART_PUT_DLH(uart,v) bfin_write16(((uart)->port.membase + OFFSET_DLH),v)
#define UART_PUT_LSR(uart,v) bfin_write16(((uart)->port.membase + OFFSET_LSR),v) #define UART_PUT_LSR(uart,v) bfin_write16(((uart)->port.membase + OFFSET_LSR),v)
#define UART_PUT_LCR(uart,v) bfin_write16(((uart)->port.membase + OFFSET_LCR),v) #define UART_PUT_LCR(uart,v) bfin_write16(((uart)->port.membase + OFFSET_LCR),v)
#define UART_CLEAR_LSR(uart) bfin_write16(((uart)->port.membase + OFFSET_LSR), -1)
#define UART_PUT_GCTL(uart,v) bfin_write16(((uart)->port.membase + OFFSET_GCTL),v) #define UART_PUT_GCTL(uart,v) bfin_write16(((uart)->port.membase + OFFSET_GCTL),v)
#define UART_PUT_MCR(uart,v) bfin_write16(((uart)->port.membase + OFFSET_MCR),v)
#if defined(CONFIG_BFIN_UART0_CTSRTS) || defined(CONFIG_BFIN_UART1_CTSRTS) #if defined(CONFIG_BFIN_UART0_CTSRTS) || defined(CONFIG_BFIN_UART1_CTSRTS)
# define CONFIG_SERIAL_BFIN_CTSRTS # define CONFIG_SERIAL_BFIN_CTSRTS
...@@ -68,10 +72,9 @@ struct bfin_serial_port { ...@@ -68,10 +72,9 @@ struct bfin_serial_port {
unsigned int tx_dma_channel; unsigned int tx_dma_channel;
unsigned int rx_dma_channel; unsigned int rx_dma_channel;
struct work_struct tx_dma_workqueue; struct work_struct tx_dma_workqueue;
#else
struct work_struct cts_workqueue;
#endif #endif
#ifdef CONFIG_SERIAL_BFIN_CTSRTS #ifdef CONFIG_SERIAL_BFIN_CTSRTS
struct work_struct cts_workqueue;
int cts_pin; int cts_pin;
int rts_pin; int rts_pin;
#endif #endif
......
...@@ -23,7 +23,6 @@ ...@@ -23,7 +23,6 @@
#define UART_GET_DLH(uart) bfin_read16(((uart)->port.membase + OFFSET_DLH)) #define UART_GET_DLH(uart) bfin_read16(((uart)->port.membase + OFFSET_DLH))
#define UART_GET_IIR(uart) bfin_read16(((uart)->port.membase + OFFSET_IIR)) #define UART_GET_IIR(uart) bfin_read16(((uart)->port.membase + OFFSET_IIR))
#define UART_GET_LCR(uart) bfin_read16(((uart)->port.membase + OFFSET_LCR)) #define UART_GET_LCR(uart) bfin_read16(((uart)->port.membase + OFFSET_LCR))
#define UART_GET_LSR(uart) bfin_read16(((uart)->port.membase + OFFSET_LSR))
#define UART_GET_GCTL(uart) bfin_read16(((uart)->port.membase + OFFSET_GCTL)) #define UART_GET_GCTL(uart) bfin_read16(((uart)->port.membase + OFFSET_GCTL))
#define UART_PUT_CHAR(uart,v) bfin_write16(((uart)->port.membase + OFFSET_THR),v) #define UART_PUT_CHAR(uart,v) bfin_write16(((uart)->port.membase + OFFSET_THR),v)
...@@ -46,6 +45,7 @@ ...@@ -46,6 +45,7 @@
struct bfin_serial_port { struct bfin_serial_port {
struct uart_port port; struct uart_port port;
unsigned int old_status; unsigned int old_status;
unsigned int lsr;
#ifdef CONFIG_SERIAL_BFIN_DMA #ifdef CONFIG_SERIAL_BFIN_DMA
int tx_done; int tx_done;
int tx_count; int tx_count;
...@@ -56,14 +56,34 @@ struct bfin_serial_port { ...@@ -56,14 +56,34 @@ struct bfin_serial_port {
unsigned int rx_dma_channel; unsigned int rx_dma_channel;
struct work_struct tx_dma_workqueue; struct work_struct tx_dma_workqueue;
#else #else
struct work_struct cts_workqueue; # if ANOMALY_05000230
unsigned int anomaly_threshold;
# endif
#endif #endif
#ifdef CONFIG_SERIAL_BFIN_CTSRTS #ifdef CONFIG_SERIAL_BFIN_CTSRTS
struct work_struct cts_workqueue;
int cts_pin; int cts_pin;
int rts_pin; int rts_pin;
#endif #endif
}; };
/* The hardware clears the LSR bits upon read, so we need to cache
* some of the more fun bits in software so they don't get lost
* when checking the LSR in other code paths (TX).
*/
static inline unsigned int UART_GET_LSR(struct bfin_serial_port *uart)
{
unsigned int lsr = bfin_read16(uart->port.membase + OFFSET_LSR);
uart->lsr |= (lsr & (BI|FE|PE|OE));
return lsr | uart->lsr;
}
static inline void UART_CLEAR_LSR(struct bfin_serial_port *uart)
{
uart->lsr = 0;
bfin_write16(uart->port.membase + OFFSET_LSR, -1);
}
struct bfin_serial_port bfin_serial_ports[NR_PORTS]; struct bfin_serial_port bfin_serial_ports[NR_PORTS];
struct bfin_serial_res { struct bfin_serial_res {
unsigned long uart_base_addr; unsigned long uart_base_addr;
......
...@@ -49,7 +49,8 @@ ...@@ -49,7 +49,8 @@
#define bfin_read_FIO_INEN() bfin_read_FIO0_INEN() #define bfin_read_FIO_INEN() bfin_read_FIO0_INEN()
#define bfin_write_FIO_INEN(val) bfin_write_FIO0_INEN(val) #define bfin_write_FIO_INEN(val) bfin_write_FIO0_INEN(val)
#define SIC_IWR0 SICA_IWR0
#define SIC_IWR1 SICA_IWR1
#define SIC_IAR0 SICA_IAR0 #define SIC_IAR0 SICA_IAR0
#define bfin_write_SIC_IMASK0 bfin_write_SICA_IMASK0 #define bfin_write_SIC_IMASK0 bfin_write_SICA_IMASK0
#define bfin_write_SIC_IMASK1 bfin_write_SICA_IMASK1 #define bfin_write_SIC_IMASK1 bfin_write_SICA_IMASK1
......
...@@ -559,6 +559,7 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val) ...@@ -559,6 +559,7 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val)
#define bfin_write_PPI0_CONTROL(val) bfin_write16(PPI0_CONTROL,val) #define bfin_write_PPI0_CONTROL(val) bfin_write16(PPI0_CONTROL,val)
#define bfin_read_PPI0_STATUS() bfin_read16(PPI0_STATUS) #define bfin_read_PPI0_STATUS() bfin_read16(PPI0_STATUS)
#define bfin_write_PPI0_STATUS(val) bfin_write16(PPI0_STATUS,val) #define bfin_write_PPI0_STATUS(val) bfin_write16(PPI0_STATUS,val)
#define bfin_clear_PPI0_STATUS() bfin_read_PPI0_STATUS()
#define bfin_read_PPI0_COUNT() bfin_read16(PPI0_COUNT) #define bfin_read_PPI0_COUNT() bfin_read16(PPI0_COUNT)
#define bfin_write_PPI0_COUNT(val) bfin_write16(PPI0_COUNT,val) #define bfin_write_PPI0_COUNT(val) bfin_write16(PPI0_COUNT,val)
#define bfin_read_PPI0_DELAY() bfin_read16(PPI0_DELAY) #define bfin_read_PPI0_DELAY() bfin_read16(PPI0_DELAY)
...@@ -570,6 +571,7 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val) ...@@ -570,6 +571,7 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val)
#define bfin_write_PPI1_CONTROL(val) bfin_write16(PPI1_CONTROL,val) #define bfin_write_PPI1_CONTROL(val) bfin_write16(PPI1_CONTROL,val)
#define bfin_read_PPI1_STATUS() bfin_read16(PPI1_STATUS) #define bfin_read_PPI1_STATUS() bfin_read16(PPI1_STATUS)
#define bfin_write_PPI1_STATUS(val) bfin_write16(PPI1_STATUS,val) #define bfin_write_PPI1_STATUS(val) bfin_write16(PPI1_STATUS,val)
#define bfin_clear_PPI1_STATUS() bfin_read_PPI1_STATUS()
#define bfin_read_PPI1_COUNT() bfin_read16(PPI1_COUNT) #define bfin_read_PPI1_COUNT() bfin_read16(PPI1_COUNT)
#define bfin_write_PPI1_COUNT(val) bfin_write16(PPI1_COUNT,val) #define bfin_write_PPI1_COUNT(val) bfin_write16(PPI1_COUNT,val)
#define bfin_read_PPI1_DELAY() bfin_read16(PPI1_DELAY) #define bfin_read_PPI1_DELAY() bfin_read16(PPI1_DELAY)
......
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