Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
70103814
Commit
70103814
authored
Sep 12, 2009
by
Russell King
Committed by
Russell King
Sep 12, 2009
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'nomadik' into devel-stable
parents
4abf27ad
c2b45547
Changes
29
Hide whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
2958 additions
and
2 deletions
+2958
-2
arch/arm/Kconfig
arch/arm/Kconfig
+16
-0
arch/arm/Makefile
arch/arm/Makefile
+1
-0
arch/arm/common/vic.c
arch/arm/common/vic.c
+98
-1
arch/arm/configs/nhk8815_defconfig
arch/arm/configs/nhk8815_defconfig
+1316
-0
arch/arm/mach-nomadik/Kconfig
arch/arm/mach-nomadik/Kconfig
+21
-0
arch/arm/mach-nomadik/Makefile
arch/arm/mach-nomadik/Makefile
+19
-0
arch/arm/mach-nomadik/Makefile.boot
arch/arm/mach-nomadik/Makefile.boot
+4
-0
arch/arm/mach-nomadik/board-nhk8815.c
arch/arm/mach-nomadik/board-nhk8815.c
+111
-0
arch/arm/mach-nomadik/clock.c
arch/arm/mach-nomadik/clock.c
+45
-0
arch/arm/mach-nomadik/clock.h
arch/arm/mach-nomadik/clock.h
+14
-0
arch/arm/mach-nomadik/cpu-8815.c
arch/arm/mach-nomadik/cpu-8815.c
+139
-0
arch/arm/mach-nomadik/gpio.c
arch/arm/mach-nomadik/gpio.c
+396
-0
arch/arm/mach-nomadik/i2c-8815nhk.c
arch/arm/mach-nomadik/i2c-8815nhk.c
+65
-0
arch/arm/mach-nomadik/include/mach/clkdev.h
arch/arm/mach-nomadik/include/mach/clkdev.h
+7
-0
arch/arm/mach-nomadik/include/mach/debug-macro.S
arch/arm/mach-nomadik/include/mach/debug-macro.S
+22
-0
arch/arm/mach-nomadik/include/mach/entry-macro.S
arch/arm/mach-nomadik/include/mach/entry-macro.S
+43
-0
arch/arm/mach-nomadik/include/mach/gpio.h
arch/arm/mach-nomadik/include/mach/gpio.h
+71
-0
arch/arm/mach-nomadik/include/mach/hardware.h
arch/arm/mach-nomadik/include/mach/hardware.h
+90
-0
arch/arm/mach-nomadik/include/mach/io.h
arch/arm/mach-nomadik/include/mach/io.h
+22
-0
arch/arm/mach-nomadik/include/mach/irqs.h
arch/arm/mach-nomadik/include/mach/irqs.h
+82
-0
arch/arm/mach-nomadik/include/mach/memory.h
arch/arm/mach-nomadik/include/mach/memory.h
+28
-0
arch/arm/mach-nomadik/include/mach/mtu.h
arch/arm/mach-nomadik/include/mach/mtu.h
+45
-0
arch/arm/mach-nomadik/include/mach/setup.h
arch/arm/mach-nomadik/include/mach/setup.h
+22
-0
arch/arm/mach-nomadik/include/mach/system.h
arch/arm/mach-nomadik/include/mach/system.h
+45
-0
arch/arm/mach-nomadik/include/mach/timex.h
arch/arm/mach-nomadik/include/mach/timex.h
+6
-0
arch/arm/mach-nomadik/include/mach/uncompress.h
arch/arm/mach-nomadik/include/mach/uncompress.h
+63
-0
arch/arm/mach-nomadik/include/mach/vmalloc.h
arch/arm/mach-nomadik/include/mach/vmalloc.h
+2
-0
arch/arm/mach-nomadik/timer.c
arch/arm/mach-nomadik/timer.c
+164
-0
arch/arm/mm/Kconfig
arch/arm/mm/Kconfig
+1
-1
No files found.
arch/arm/Kconfig
View file @
70103814
...
...
@@ -338,6 +338,20 @@ config ARCH_H720X
help
This enables support for systems based on the Hynix HMS720x
config ARCH_NOMADIK
bool "STMicroelectronics Nomadik"
select ARM_AMBA
select ARM_VIC
select CPU_ARM926T
select HAVE_CLK
select COMMON_CLKDEV
select GENERIC_TIME
select GENERIC_CLOCKEVENTS
select GENERIC_GPIO
select ARCH_REQUIRE_GPIOLIB
help
Support for the Nomadik platform by ST-Ericsson
config ARCH_IOP13XX
bool "IOP13xx-based"
depends on MMU
...
...
@@ -745,6 +759,8 @@ source "arch/arm/mach-at91/Kconfig"
source "arch/arm/plat-mxc/Kconfig"
source "arch/arm/mach-nomadik/Kconfig"
source "arch/arm/mach-netx/Kconfig"
source "arch/arm/mach-ns9xxx/Kconfig"
...
...
arch/arm/Makefile
View file @
70103814
...
...
@@ -145,6 +145,7 @@ machine-$(CONFIG_ARCH_MX2) := mx2
machine-$(CONFIG_ARCH_MX25)
:=
mx25
machine-$(CONFIG_ARCH_MX3)
:=
mx3
machine-$(CONFIG_ARCH_NETX)
:=
netx
machine-$(CONFIG_ARCH_NOMADIK)
:=
nomadik
machine-$(CONFIG_ARCH_NS9XXX)
:=
ns9xxx
machine-$(CONFIG_ARCH_OMAP1)
:=
omap1
machine-$(CONFIG_ARCH_OMAP2)
:=
omap2
...
...
arch/arm/common/vic.c
View file @
70103814
...
...
@@ -26,6 +26,15 @@
#include <asm/mach/irq.h>
#include <asm/hardware/vic.h>
static
void
vic_ack_irq
(
unsigned
int
irq
)
{
void
__iomem
*
base
=
get_irq_chip_data
(
irq
);
irq
&=
31
;
writel
(
1
<<
irq
,
base
+
VIC_INT_ENABLE_CLEAR
);
/* moreover, clear the soft-triggered, in case it was the reason */
writel
(
1
<<
irq
,
base
+
VIC_INT_SOFT_CLEAR
);
}
static
void
vic_mask_irq
(
unsigned
int
irq
)
{
void
__iomem
*
base
=
get_irq_chip_data
(
irq
);
...
...
@@ -253,12 +262,21 @@ static inline void vic_pm_register(void __iomem *base, unsigned int irq, u32 arg
static
struct
irq_chip
vic_chip
=
{
.
name
=
"VIC"
,
.
ack
=
vic_
mas
k_irq
,
.
ack
=
vic_
ac
k_irq
,
.
mask
=
vic_mask_irq
,
.
unmask
=
vic_unmask_irq
,
.
set_wake
=
vic_set_wake
,
};
/* The PL190 cell from ARM has been modified by ST, so handle both here */
static
void
vik_init_st
(
void
__iomem
*
base
,
unsigned
int
irq_start
,
u32
vic_sources
);
enum
vic_vendor
{
VENDOR_ARM
=
0x41
,
VENDOR_ST
=
0x80
,
};
/**
* vic_init - initialise a vectored interrupt controller
* @base: iomem base address
...
...
@@ -270,6 +288,28 @@ void __init vic_init(void __iomem *base, unsigned int irq_start,
u32
vic_sources
,
u32
resume_sources
)
{
unsigned
int
i
;
u32
cellid
=
0
;
enum
vic_vendor
vendor
;
/* Identify which VIC cell this one is, by reading the ID */
for
(
i
=
0
;
i
<
4
;
i
++
)
{
u32
addr
=
((
u32
)
base
&
PAGE_MASK
)
+
0xfe0
+
(
i
*
4
);
cellid
|=
(
readl
(
addr
)
&
0xff
)
<<
(
8
*
i
);
}
vendor
=
(
cellid
>>
12
)
&
0xff
;
printk
(
KERN_INFO
"VIC @%p: id 0x%08x, vendor 0x%02x
\n
"
,
base
,
cellid
,
vendor
);
switch
(
vendor
)
{
case
VENDOR_ST
:
vik_init_st
(
base
,
irq_start
,
vic_sources
);
return
;
default:
printk
(
KERN_WARNING
"VIC: unknown vendor, continuing anyways
\n
"
);
/* fall through */
case
VENDOR_ARM
:
break
;
}
/* Disable all interrupts initially. */
...
...
@@ -306,3 +346,60 @@ void __init vic_init(void __iomem *base, unsigned int irq_start,
vic_pm_register
(
base
,
irq_start
,
resume_sources
);
}
/*
* The PL190 cell from ARM has been modified by ST to handle 64 interrupts.
* The original cell has 32 interrupts, while the modified one has 64,
* replocating two blocks 0x00..0x1f in 0x20..0x3f. In that case
* the probe function is called twice, with base set to offset 000
* and 020 within the page. We call this "second block".
*/
static
void
__init
vik_init_st
(
void
__iomem
*
base
,
unsigned
int
irq_start
,
u32
vic_sources
)
{
unsigned
int
i
;
int
vic_2nd_block
=
((
unsigned
long
)
base
&
~
PAGE_MASK
)
!=
0
;
/* Disable all interrupts initially. */
writel
(
0
,
base
+
VIC_INT_SELECT
);
writel
(
0
,
base
+
VIC_INT_ENABLE
);
writel
(
~
0
,
base
+
VIC_INT_ENABLE_CLEAR
);
writel
(
0
,
base
+
VIC_IRQ_STATUS
);
writel
(
0
,
base
+
VIC_ITCR
);
writel
(
~
0
,
base
+
VIC_INT_SOFT_CLEAR
);
/*
* Make sure we clear all existing interrupts. The vector registers
* in this cell are after the second block of general registers,
* so we can address them using standard offsets, but only from
* the second base address, which is 0x20 in the page
*/
if
(
vic_2nd_block
)
{
writel
(
0
,
base
+
VIC_PL190_VECT_ADDR
);
for
(
i
=
0
;
i
<
19
;
i
++
)
{
unsigned
int
value
;
value
=
readl
(
base
+
VIC_PL190_VECT_ADDR
);
writel
(
value
,
base
+
VIC_PL190_VECT_ADDR
);
}
/* ST has 16 vectors as well, but we don't enable them by now */
for
(
i
=
0
;
i
<
16
;
i
++
)
{
void
__iomem
*
reg
=
base
+
VIC_VECT_CNTL0
+
(
i
*
4
);
writel
(
0
,
reg
);
}
writel
(
32
,
base
+
VIC_PL190_DEF_VECT_ADDR
);
}
for
(
i
=
0
;
i
<
32
;
i
++
)
{
if
(
vic_sources
&
(
1
<<
i
))
{
unsigned
int
irq
=
irq_start
+
i
;
set_irq_chip
(
irq
,
&
vic_chip
);
set_irq_chip_data
(
irq
,
base
);
set_irq_handler
(
irq
,
handle_level_irq
);
set_irq_flags
(
irq
,
IRQF_VALID
|
IRQF_PROBE
);
}
}
}
arch/arm/configs/nhk8815_defconfig
0 → 100644
View file @
70103814
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.30
# Tue Jun 23 22:57:16 2009
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
CONFIG_GENERIC_GPIO=y
CONFIG_GENERIC_TIME=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_MMU=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_HARDIRQS_SW_RESEND=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
CONFIG_VECTORS_BASE=0xffff0000
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
CONFIG_CONSTRUCTORS=y
#
# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
# CONFIG_SWAP is not set
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
# CONFIG_POSIX_MQUEUE is not set
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set
# CONFIG_AUDIT is not set
#
# RCU Subsystem
#
CONFIG_CLASSIC_RCU=y
# CONFIG_TREE_RCU is not set
# CONFIG_PREEMPT_RCU is not set
# CONFIG_TREE_RCU_TRACE is not set
# CONFIG_PREEMPT_RCU_TRACE is not set
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=14
# CONFIG_GROUP_SCHED is not set
# CONFIG_CGROUPS is not set
CONFIG_SYSFS_DEPRECATED=y
CONFIG_SYSFS_DEPRECATED_V2=y
# CONFIG_RELAY is not set
# CONFIG_NAMESPACES is not set
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_RD_GZIP=y
# CONFIG_RD_BZIP2 is not set
# CONFIG_RD_LZMA is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_ANON_INODES=y
CONFIG_EMBEDDED=y
CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_AIO=y
#
# Performance Counters
#
CONFIG_VM_EVENT_COUNTERS=y
# CONFIG_STRIP_ASM_SYMS is not set
CONFIG_COMPAT_BRK=y
CONFIG_SLAB=y
# CONFIG_SLUB is not set
# CONFIG_SLOB is not set
# CONFIG_PROFILING is not set
# CONFIG_MARKERS is not set
CONFIG_HAVE_OPROFILE=y
# CONFIG_KPROBES is not set
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_CLK=y
#
# GCOV-based kernel profiling
#
# CONFIG_SLOW_WORK is not set
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
# CONFIG_MODULE_FORCE_LOAD is not set
CONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not set
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_BLOCK=y
CONFIG_LBDAF=y
# CONFIG_BLK_DEV_BSG is not set
# CONFIG_BLK_DEV_INTEGRITY is not set
#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
CONFIG_DEFAULT_AS=y
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="anticipatory"
CONFIG_FREEZER=y
#
# System Type
#
# CONFIG_ARCH_AAEC2000 is not set
# CONFIG_ARCH_INTEGRATOR is not set
# CONFIG_ARCH_REALVIEW is not set
# CONFIG_ARCH_VERSATILE is not set
# CONFIG_ARCH_AT91 is not set
# CONFIG_ARCH_CLPS711X is not set
# CONFIG_ARCH_GEMINI is not set
# CONFIG_ARCH_EBSA110 is not set
# CONFIG_ARCH_EP93XX is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
# CONFIG_ARCH_MXC is not set
# CONFIG_ARCH_STMP3XXX is not set
# CONFIG_ARCH_NETX is not set
# CONFIG_ARCH_H720X is not set
CONFIG_ARCH_NOMADIK=y
# CONFIG_ARCH_IOP13XX is not set
# CONFIG_ARCH_IOP32X is not set
# CONFIG_ARCH_IOP33X is not set
# CONFIG_ARCH_IXP23XX is not set
# CONFIG_ARCH_IXP2000 is not set
# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_L7200 is not set
# CONFIG_ARCH_KIRKWOOD is not set
# CONFIG_ARCH_LOKI is not set
# CONFIG_ARCH_MV78XX0 is not set
# CONFIG_ARCH_ORION5X is not set
# CONFIG_ARCH_MMP is not set
# CONFIG_ARCH_KS8695 is not set
# CONFIG_ARCH_NS9XXX is not set
# CONFIG_ARCH_W90X900 is not set
# CONFIG_ARCH_PNX4008 is not set
# CONFIG_ARCH_PXA is not set
# CONFIG_ARCH_MSM is not set
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_SA1100 is not set
# CONFIG_ARCH_S3C2410 is not set
# CONFIG_ARCH_S3C64XX is not set
# CONFIG_ARCH_SHARK is not set
# CONFIG_ARCH_LH7A40X is not set
# CONFIG_ARCH_U300 is not set
# CONFIG_ARCH_DAVINCI is not set
# CONFIG_ARCH_OMAP is not set
#
# Nomadik boards
#
CONFIG_MACH_NOMADIK_8815NHK=y
CONFIG_NOMADIK_8815=y
CONFIG_I2C_BITBANG_8815NHK=y
#
# Processor Type
#
CONFIG_CPU_32=y
CONFIG_CPU_ARM926T=y
CONFIG_CPU_32v5=y
CONFIG_CPU_ABRT_EV5TJ=y
CONFIG_CPU_PABRT_NOIFAR=y
CONFIG_CPU_CACHE_VIVT=y
CONFIG_CPU_COPY_V4WB=y
CONFIG_CPU_TLB_V4WBI=y
CONFIG_CPU_CP15=y
CONFIG_CPU_CP15_MMU=y
#
# Processor Features
#
CONFIG_ARM_THUMB=y
# CONFIG_CPU_ICACHE_DISABLE is not set
# CONFIG_CPU_DCACHE_DISABLE is not set
# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
CONFIG_OUTER_CACHE=y
CONFIG_CACHE_L2X0=y
CONFIG_ARM_VIC=y
CONFIG_ARM_VIC_NR=2
CONFIG_COMMON_CLKDEV=y
#
# Bus support
#
CONFIG_ARM_AMBA=y
# CONFIG_PCI_SYSCALL is not set
# CONFIG_ARCH_SUPPORTS_MSI is not set
# CONFIG_PCCARD is not set
#
# Kernel Features
#
# CONFIG_NO_HZ is not set
# CONFIG_HIGH_RES_TIMERS is not set
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_VMSPLIT_3G=y
# CONFIG_VMSPLIT_2G is not set
# CONFIG_VMSPLIT_1G is not set
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_PREEMPT=y
CONFIG_HZ=100
CONFIG_AEABI=y
CONFIG_OABI_COMPAT=y
# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
# CONFIG_HIGHMEM is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
# CONFIG_DISCONTIGMEM_MANUAL is not set
# CONFIG_SPARSEMEM_MANUAL is not set
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_SPLIT_PTLOCK_CPUS=4096
# CONFIG_PHYS_ADDR_T_64BIT is not set
CONFIG_ZONE_DMA_FLAG=0
CONFIG_VIRT_TO_BUS=y
CONFIG_HAVE_MLOCK=y
CONFIG_HAVE_MLOCKED_PAGE_BIT=y
CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
CONFIG_ALIGNMENT_TRAP=y
# CONFIG_UACCESS_WITH_MEMCPY is not set
#
# Boot options
#
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE=""
# CONFIG_XIP_KERNEL is not set
# CONFIG_KEXEC is not set
#
# CPU Power Management
#
# CONFIG_CPU_IDLE is not set
#
# Floating point emulation
#
#
# At least one emulation must be selected
#
CONFIG_FPE_NWFPE=y
# CONFIG_FPE_NWFPE_XP is not set
# CONFIG_FPE_FASTFPE is not set
# CONFIG_VFP is not set
#
# Userspace binary formats
#
CONFIG_BINFMT_ELF=y
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
CONFIG_HAVE_AOUT=y
# CONFIG_BINFMT_AOUT is not set
# CONFIG_BINFMT_MISC is not set
#
# Power management options
#
CONFIG_PM=y
# CONFIG_PM_DEBUG is not set
CONFIG_PM_SLEEP=y
CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y
# CONFIG_APM_EMULATION is not set
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_NET=y
#
# Networking options
#
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
CONFIG_UNIX=y
CONFIG_XFRM=y
# CONFIG_XFRM_USER is not set
# CONFIG_XFRM_SUB_POLICY is not set
# CONFIG_XFRM_MIGRATE is not set
# CONFIG_XFRM_STATISTICS is not set
CONFIG_NET_KEY=y
# CONFIG_NET_KEY_MIGRATE is not set
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_ASK_IP_FIB_HASH=y
# CONFIG_IP_FIB_TRIE is not set
CONFIG_IP_FIB_HASH=y
# CONFIG_IP_MULTIPLE_TABLES is not set
# CONFIG_IP_ROUTE_MULTIPATH is not set
# CONFIG_IP_ROUTE_VERBOSE is not set
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set
CONFIG_NET_IPIP=y
CONFIG_NET_IPGRE=y
CONFIG_NET_IPGRE_BROADCAST=y
CONFIG_IP_MROUTE=y
# CONFIG_IP_PIMSM_V1 is not set
# CONFIG_IP_PIMSM_V2 is not set
# CONFIG_ARPD is not set
# CONFIG_SYN_COOKIES is not set
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_XFRM_TUNNEL is not set
CONFIG_INET_TUNNEL=y
CONFIG_INET_XFRM_MODE_TRANSPORT=y
CONFIG_INET_XFRM_MODE_TUNNEL=y
CONFIG_INET_XFRM_MODE_BEET=y
# CONFIG_INET_LRO is not set
CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
# CONFIG_IPV6 is not set
# CONFIG_NETWORK_SECMARK is not set
# CONFIG_NETFILTER is not set
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_NET_DSA is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_PHONET is not set
# CONFIG_IEEE802154 is not set
# CONFIG_NET_SCHED is not set
# CONFIG_DCB is not set
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_CAN is not set
# CONFIG_IRDA is not set
CONFIG_BT=m
CONFIG_BT_L2CAP=m
CONFIG_BT_SCO=m
CONFIG_BT_RFCOMM=m
CONFIG_BT_RFCOMM_TTY=y
CONFIG_BT_BNEP=m
CONFIG_BT_BNEP_MC_FILTER=y
CONFIG_BT_BNEP_PROTO_FILTER=y
CONFIG_BT_HIDP=m
#
# Bluetooth device drivers
#
CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_H4=y
CONFIG_BT_HCIUART_BCSP=y
# CONFIG_BT_HCIUART_LL is not set
CONFIG_BT_HCIVHCI=m
# CONFIG_AF_RXRPC is not set
CONFIG_WIRELESS=y
# CONFIG_CFG80211 is not set
CONFIG_WIRELESS_OLD_REGULATORY=y
# CONFIG_WIRELESS_EXT is not set
# CONFIG_LIB80211 is not set
#
# CFG80211 needs to be enabled for MAC80211
#
CONFIG_MAC80211_DEFAULT_PS_VALUE=0
# CONFIG_WIMAX is not set
# CONFIG_RFKILL is not set
# CONFIG_NET_9P is not set
#
# Device Drivers
#
#
# Generic Driver Options
#
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y
CONFIG_FIRMWARE_IN_KERNEL=y
CONFIG_EXTRA_FIRMWARE=""
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
# CONFIG_SYS_HYPERVISOR is not set
# CONFIG_CONNECTOR is not set
CONFIG_MTD=y
# CONFIG_MTD_DEBUG is not set
# CONFIG_MTD_CONCAT is not set
CONFIG_MTD_PARTITIONS=y
CONFIG_MTD_TESTS=m
# CONFIG_MTD_REDBOOT_PARTS is not set
# CONFIG_MTD_CMDLINE_PARTS is not set
# CONFIG_MTD_AFS_PARTS is not set
# CONFIG_MTD_AR7_PARTS is not set
#
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLKDEVS=y
CONFIG_MTD_BLOCK=y
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set
# CONFIG_RFD_FTL is not set
# CONFIG_SSFDC is not set
# CONFIG_MTD_OOPS is not set
#
# RAM/ROM/Flash chip drivers
#
# CONFIG_MTD_CFI is not set
# CONFIG_MTD_JEDECPROBE is not set
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_I4 is not set
# CONFIG_MTD_CFI_I8 is not set
# CONFIG_MTD_RAM is not set
# CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set
#
# Mapping drivers for chip access
#
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
# CONFIG_MTD_PLATRAM is not set
#
# Self-contained MTD device drivers
#
# CONFIG_MTD_SLRAM is not set
# CONFIG_MTD_PHRAM is not set
# CONFIG_MTD_MTDRAM is not set
# CONFIG_MTD_BLOCK2MTD is not set
#
# Disk-On-Chip Device Drivers
#
# CONFIG_MTD_DOC2000 is not set
# CONFIG_MTD_DOC2001 is not set
# CONFIG_MTD_DOC2001PLUS is not set
CONFIG_MTD_NAND=y
CONFIG_MTD_NAND_VERIFY_WRITE=y
# CONFIG_MTD_NAND_ECC_SMC is not set
# CONFIG_MTD_NAND_MUSEUM_IDS is not set
# CONFIG_MTD_NAND_GPIO is not set
CONFIG_MTD_NAND_IDS=y
# CONFIG_MTD_NAND_DISKONCHIP is not set
# CONFIG_MTD_NAND_NANDSIM is not set
# CONFIG_MTD_NAND_PLATFORM is not set
CONFIG_MTD_NAND_NOMADIK=y
CONFIG_MTD_ONENAND=y
CONFIG_MTD_ONENAND_VERIFY_WRITE=y
CONFIG_MTD_ONENAND_GENERIC=y
# CONFIG_MTD_ONENAND_OTP is not set
# CONFIG_MTD_ONENAND_2X_PROGRAM is not set
# CONFIG_MTD_ONENAND_SIM is not set
#
# LPDDR flash memory drivers
#
# CONFIG_MTD_LPDDR is not set
#
# UBI - Unsorted block images
#
# CONFIG_MTD_UBI is not set
# CONFIG_PARPORT is not set
CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_CRYPTOLOOP=y
# CONFIG_BLK_DEV_NBD is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=4096
# CONFIG_BLK_DEV_XIP is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
# CONFIG_MG_DISK is not set
CONFIG_MISC_DEVICES=y
# CONFIG_ICS932S401 is not set
# CONFIG_ENCLOSURE_SERVICES is not set
# CONFIG_ISL29003 is not set
# CONFIG_C2PORT is not set
#
# EEPROM support
#
# CONFIG_EEPROM_AT24 is not set
# CONFIG_EEPROM_LEGACY is not set
# CONFIG_EEPROM_MAX6875 is not set
# CONFIG_EEPROM_93CX6 is not set
CONFIG_HAVE_IDE=y
# CONFIG_IDE is not set
#
# SCSI device support
#
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
# CONFIG_SCSI_TGT is not set
# CONFIG_SCSI_NETLINK is not set
CONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
CONFIG_CHR_DEV_SG=y
# CONFIG_CHR_DEV_SCH is not set
CONFIG_SCSI_MULTI_LUN=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y
CONFIG_SCSI_SCAN_ASYNC=y
CONFIG_SCSI_WAIT_SCAN=m
#
# SCSI Transports
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_SRP_ATTRS is not set
CONFIG_SCSI_LOWLEVEL=y
# CONFIG_ISCSI_TCP is not set
# CONFIG_LIBFC is not set
# CONFIG_LIBFCOE is not set
# CONFIG_SCSI_DEBUG is not set
# CONFIG_SCSI_DH is not set
# CONFIG_SCSI_OSD_INITIATOR is not set
# CONFIG_ATA is not set
# CONFIG_MD is not set
CONFIG_NETDEVICES=y
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_MACVLAN is not set
# CONFIG_EQUALIZER is not set
CONFIG_TUN=y
# CONFIG_VETH is not set
# CONFIG_PHYLIB is not set
CONFIG_NET_ETHERNET=y
CONFIG_MII=y
# CONFIG_AX88796 is not set
CONFIG_SMC91X=y
# CONFIG_DM9000 is not set
# CONFIG_ETHOC is not set
# CONFIG_SMC911X is not set
# CONFIG_SMSC911X is not set
# CONFIG_DNET is not set
# CONFIG_IBM_NEW_EMAC_ZMII is not set
# CONFIG_IBM_NEW_EMAC_RGMII is not set
# CONFIG_IBM_NEW_EMAC_TAH is not set
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
# CONFIG_B44 is not set
# CONFIG_KS8842 is not set
CONFIG_NETDEV_1000=y
CONFIG_NETDEV_10000=y
#
# Wireless LAN
#
# CONFIG_WLAN_PRE80211 is not set
# CONFIG_WLAN_80211 is not set
#
# Enable WiMAX (Networking options) to see the WiMAX drivers
#
# CONFIG_WAN is not set
CONFIG_PPP=m
# CONFIG_PPP_MULTILINK is not set
# CONFIG_PPP_FILTER is not set
CONFIG_PPP_ASYNC=m
CONFIG_PPP_SYNC_TTY=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
CONFIG_PPP_MPPE=m
CONFIG_PPPOE=m
# CONFIG_PPPOL2TP is not set
# CONFIG_SLIP is not set
CONFIG_SLHC=m
CONFIG_NETCONSOLE=m
# CONFIG_NETCONSOLE_DYNAMIC is not set
CONFIG_NETPOLL=y
# CONFIG_NETPOLL_TRAP is not set
CONFIG_NET_POLL_CONTROLLER=y
# CONFIG_ISDN is not set
#
# Input device support
#
CONFIG_INPUT=y
# CONFIG_INPUT_FF_MEMLESS is not set
# CONFIG_INPUT_POLLDEV is not set
#
# Userland interfaces
#
# CONFIG_INPUT_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set
#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
# CONFIG_KEYBOARD_ATKBD is not set
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
# CONFIG_KEYBOARD_GPIO is not set
CONFIG_INPUT_MOUSE=y
# CONFIG_MOUSE_PS2 is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_BCM5974 is not set
# CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_MOUSE_GPIO is not set
# CONFIG_MOUSE_SYNAPTICS_I2C is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set
#
# Hardware I/O ports
#
# CONFIG_SERIO is not set
# CONFIG_GAMEPORT is not set
#
# Character devices
#
CONFIG_VT=y
CONFIG_CONSOLE_TRANSLATIONS=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_VT_HW_CONSOLE_BINDING is not set
CONFIG_DEVKMEM=y
# CONFIG_SERIAL_NONSTANDARD is not set
#
# Serial drivers
#
# CONFIG_SERIAL_8250 is not set
#
# Non-8250 serial port support
#
# CONFIG_SERIAL_AMBA_PL010 is not set
CONFIG_SERIAL_AMBA_PL011=y
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
# CONFIG_LEGACY_PTYS is not set
# CONFIG_IPMI_HANDLER is not set
# CONFIG_HW_RANDOM is not set
# CONFIG_R3964 is not set
# CONFIG_RAW_DRIVER is not set
# CONFIG_TCG_TPM is not set
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_HELPER_AUTO=y
CONFIG_I2C_ALGOBIT=y
#
# I2C Hardware Bus support
#
#
# I2C system bus drivers (mostly embedded / system-on-chip)
#
CONFIG_I2C_GPIO=y
# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_SIMTEC is not set
#
# External I2C/SMBus adapter drivers
#
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_TAOS_EVM is not set
#
# Other I2C/SMBus bus drivers
#
# CONFIG_I2C_PCA_PLATFORM is not set
# CONFIG_I2C_STUB is not set
#
# Miscellaneous I2C Chip support
#
# CONFIG_DS1682 is not set
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_PCF8575 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_TSL2550 is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
# CONFIG_SPI is not set
CONFIG_ARCH_REQUIRE_GPIOLIB=y
CONFIG_GPIOLIB=y
CONFIG_DEBUG_GPIO=y
# CONFIG_GPIO_SYSFS is not set
#
# Memory mapped GPIO expanders:
#
# CONFIG_GPIO_PL061 is not set
#
# I2C GPIO expanders:
#
# CONFIG_GPIO_MAX732X is not set
# CONFIG_GPIO_PCA953X is not set
# CONFIG_GPIO_PCF857X is not set
#
# PCI GPIO expanders:
#
#
# SPI GPIO expanders:
#
# CONFIG_W1 is not set
# CONFIG_POWER_SUPPLY is not set
# CONFIG_HWMON is not set
# CONFIG_THERMAL is not set
# CONFIG_THERMAL_HWMON is not set
# CONFIG_WATCHDOG is not set
CONFIG_SSB_POSSIBLE=y
#
# Sonics Silicon Backplane
#
# CONFIG_SSB is not set
#
# Multifunction device drivers
#
# CONFIG_MFD_CORE is not set
# CONFIG_MFD_SM501 is not set
# CONFIG_MFD_ASIC3 is not set
# CONFIG_HTC_EGPIO is not set
# CONFIG_HTC_PASIC3 is not set
# CONFIG_TPS65010 is not set
# CONFIG_TWL4030_CORE is not set
# CONFIG_MFD_TMIO is not set
# CONFIG_MFD_T7L66XB is not set
# CONFIG_MFD_TC6387XB is not set
# CONFIG_MFD_TC6393XB is not set
# CONFIG_PMIC_DA903X is not set
# CONFIG_MFD_WM8400 is not set
# CONFIG_MFD_WM8350_I2C is not set
# CONFIG_MFD_PCF50633 is not set
# CONFIG_AB3100_CORE is not set
# CONFIG_MEDIA_SUPPORT is not set
#
# Graphics support
#
# CONFIG_VGASTATE is not set
# CONFIG_VIDEO_OUTPUT_CONTROL is not set
# CONFIG_FB is not set
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
#
# Display device support
#
# CONFIG_DISPLAY_SUPPORT is not set
#
# Console display driver support
#
# CONFIG_VGA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
# CONFIG_SOUND is not set
CONFIG_HID_SUPPORT=y
CONFIG_HID=y
# CONFIG_HID_DEBUG is not set
# CONFIG_HIDRAW is not set
# CONFIG_HID_PID is not set
#
# Special HID drivers
#
# CONFIG_HID_APPLE is not set
# CONFIG_HID_WACOM is not set
CONFIG_USB_SUPPORT=y
CONFIG_USB_ARCH_HAS_HCD=y
# CONFIG_USB_ARCH_HAS_OHCI is not set
# CONFIG_USB_ARCH_HAS_EHCI is not set
# CONFIG_USB is not set
# CONFIG_USB_OTG_WHITELIST is not set
# CONFIG_USB_OTG_BLACKLIST_HUB is not set
#
# Enable Host or Gadget support to see Inventra options
#
#
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
#
# CONFIG_USB_GADGET is not set
#
# OTG and related infrastructure
#
# CONFIG_MMC is not set
# CONFIG_MEMSTICK is not set
# CONFIG_ACCESSIBILITY is not set
# CONFIG_NEW_LEDS is not set
CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
# CONFIG_RTC_DEBUG is not set
#
# RTC interfaces
#
CONFIG_RTC_INTF_SYSFS=y
CONFIG_RTC_INTF_PROC=y
CONFIG_RTC_INTF_DEV=y
# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
# CONFIG_RTC_DRV_TEST is not set
#
# I2C RTC drivers
#
# CONFIG_RTC_DRV_DS1307 is not set
# CONFIG_RTC_DRV_DS1374 is not set
# CONFIG_RTC_DRV_DS1672 is not set
# CONFIG_RTC_DRV_MAX6900 is not set
# CONFIG_RTC_DRV_RS5C372 is not set
# CONFIG_RTC_DRV_ISL1208 is not set
# CONFIG_RTC_DRV_X1205 is not set
# CONFIG_RTC_DRV_PCF8563 is not set
# CONFIG_RTC_DRV_PCF8583 is not set
# CONFIG_RTC_DRV_M41T80 is not set
# CONFIG_RTC_DRV_S35390A is not set
# CONFIG_RTC_DRV_FM3130 is not set
# CONFIG_RTC_DRV_RX8581 is not set
# CONFIG_RTC_DRV_RX8025 is not set
#
# SPI RTC drivers
#
#
# Platform RTC drivers
#
# CONFIG_RTC_DRV_CMOS is not set
# CONFIG_RTC_DRV_DS1286 is not set
# CONFIG_RTC_DRV_DS1511 is not set
# CONFIG_RTC_DRV_DS1553 is not set
# CONFIG_RTC_DRV_DS1742 is not set
# CONFIG_RTC_DRV_STK17TA8 is not set
# CONFIG_RTC_DRV_M48T86 is not set
# CONFIG_RTC_DRV_M48T35 is not set
# CONFIG_RTC_DRV_M48T59 is not set
# CONFIG_RTC_DRV_BQ4802 is not set
# CONFIG_RTC_DRV_V3020 is not set
#
# on-CPU RTC drivers
#
# CONFIG_RTC_DRV_PL030 is not set
# CONFIG_RTC_DRV_PL031 is not set
# CONFIG_DMADEVICES is not set
# CONFIG_AUXDISPLAY is not set
# CONFIG_REGULATOR is not set
# CONFIG_UIO is not set
# CONFIG_STAGING is not set
#
# File systems
#
CONFIG_EXT2_FS=y
# CONFIG_EXT2_FS_XATTR is not set
# CONFIG_EXT2_FS_XIP is not set
CONFIG_EXT3_FS=y
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
CONFIG_EXT3_FS_XATTR=y
# CONFIG_EXT3_FS_POSIX_ACL is not set
# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4_FS is not set
CONFIG_JBD=y
CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y
# CONFIG_XFS_FS is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_BTRFS_FS is not set
CONFIG_FILE_LOCKING=y
CONFIG_FSNOTIFY=y
CONFIG_DNOTIFY=y
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set
CONFIG_FUSE_FS=y
# CONFIG_CUSE is not set
#
# Caches
#
# CONFIG_FSCACHE is not set
#
# CD-ROM/DVD Filesystems
#
# CONFIG_ISO9660_FS is not set
# CONFIG_UDF_FS is not set
#
# DOS/FAT/NT Filesystems
#
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# CONFIG_NTFS_FS is not set
#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_SYSCTL=y
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
# CONFIG_CONFIGFS_FS is not set
CONFIG_MISC_FILESYSTEMS=y
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_WRITEBUFFER=y
# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
# CONFIG_JFFS2_SUMMARY is not set
# CONFIG_JFFS2_FS_XATTR is not set
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
CONFIG_JFFS2_ZLIB=y
# CONFIG_JFFS2_LZO is not set
CONFIG_JFFS2_RTIME=y
# CONFIG_JFFS2_RUBIN is not set
# CONFIG_CRAMFS is not set
# CONFIG_SQUASHFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_OMFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
# CONFIG_NILFS2_FS is not set
CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
CONFIG_NFS_V3_ACL=y
# CONFIG_NFS_V4 is not set
CONFIG_ROOT_NFS=y
# CONFIG_NFSD is not set
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_NFS_ACL_SUPPORT=y
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
CONFIG_SMB_FS=m
# CONFIG_SMB_NLS_DEFAULT is not set
CONFIG_CIFS=m
# CONFIG_CIFS_STATS is not set
CONFIG_CIFS_WEAK_PW_HASH=y
# CONFIG_CIFS_XATTR is not set
# CONFIG_CIFS_DEBUG2 is not set
# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
CONFIG_NLS_CODEPAGE_437=y
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
# CONFIG_NLS_CODEPAGE_850 is not set
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1250 is not set
# CONFIG_NLS_CODEPAGE_1251 is not set
CONFIG_NLS_ASCII=y
CONFIG_NLS_ISO8859_1=y
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
CONFIG_NLS_ISO8859_15=y
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set
# CONFIG_NLS_UTF8 is not set
# CONFIG_DLM is not set
#
# Kernel hacking
#
# CONFIG_PRINTK_TIME is not set
CONFIG_ENABLE_WARN_DEPRECATED=y
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_FRAME_WARN=1024
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
# CONFIG_DEBUG_FS is not set
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
CONFIG_DETECT_HUNG_TASK=y
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
# CONFIG_SCHED_DEBUG is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_TIMER_STATS is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_KMEMLEAK is not set
# CONFIG_DEBUG_PREEMPT is not set
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_MUTEXES is not set
# CONFIG_DEBUG_LOCK_ALLOC is not set
# CONFIG_PROVE_LOCKING is not set
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_BUGVERBOSE is not set
CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_WRITECOUNT is not set
# CONFIG_DEBUG_MEMORY_INIT is not set
# CONFIG_DEBUG_LIST is not set
# CONFIG_DEBUG_SG is not set
# CONFIG_DEBUG_NOTIFIERS is not set
# CONFIG_BOOT_PRINTK_DELAY is not set
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
# CONFIG_BACKTRACE_SELF_TEST is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
# CONFIG_FAULT_INJECTION is not set
# CONFIG_LATENCYTOP is not set
# CONFIG_SYSCTL_SYSCALL_CHECK is not set
# CONFIG_PAGE_POISONING is not set
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_TRACING_SUPPORT=y
CONFIG_FTRACE=y
# CONFIG_FUNCTION_TRACER is not set
# CONFIG_IRQSOFF_TRACER is not set
# CONFIG_PREEMPT_TRACER is not set
# CONFIG_SCHED_TRACER is not set
# CONFIG_ENABLE_DEFAULT_TRACERS is not set
# CONFIG_BOOT_TRACER is not set
CONFIG_BRANCH_PROFILE_NONE=y
# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
# CONFIG_PROFILE_ALL_BRANCHES is not set
# CONFIG_STACK_TRACER is not set
# CONFIG_KMEMTRACE is not set
# CONFIG_WORKQUEUE_TRACER is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
# CONFIG_SAMPLES is not set
CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
CONFIG_ARM_UNWIND=y
# CONFIG_DEBUG_USER is not set
# CONFIG_DEBUG_ERRORS is not set
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_LL is not set
#
# Security options
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set
# CONFIG_SECURITYFS is not set
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
CONFIG_CRYPTO=y
#
# Crypto core or helper
#
# CONFIG_CRYPTO_FIPS is not set
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
CONFIG_CRYPTO_AEAD2=y
CONFIG_CRYPTO_BLKCIPHER=y
CONFIG_CRYPTO_BLKCIPHER2=y
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_HASH2=y
CONFIG_CRYPTO_RNG2=y
CONFIG_CRYPTO_PCOMP=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
# CONFIG_CRYPTO_GF128MUL is not set
# CONFIG_CRYPTO_NULL is not set
CONFIG_CRYPTO_WORKQUEUE=y
# CONFIG_CRYPTO_CRYPTD is not set
# CONFIG_CRYPTO_AUTHENC is not set
# CONFIG_CRYPTO_TEST is not set
#
# Authenticated Encryption with Associated Data
#
# CONFIG_CRYPTO_CCM is not set
# CONFIG_CRYPTO_GCM is not set
# CONFIG_CRYPTO_SEQIV is not set
#
# Block modes
#
CONFIG_CRYPTO_CBC=y
# CONFIG_CRYPTO_CTR is not set
# CONFIG_CRYPTO_CTS is not set
CONFIG_CRYPTO_ECB=m
# CONFIG_CRYPTO_LRW is not set
# CONFIG_CRYPTO_PCBC is not set
# CONFIG_CRYPTO_XTS is not set
#
# Hash modes
#
# CONFIG_CRYPTO_HMAC is not set
# CONFIG_CRYPTO_XCBC is not set
#
# Digest
#
# CONFIG_CRYPTO_CRC32C is not set
# CONFIG_CRYPTO_MD4 is not set
CONFIG_CRYPTO_MD5=y
# CONFIG_CRYPTO_MICHAEL_MIC is not set
# CONFIG_CRYPTO_RMD128 is not set
# CONFIG_CRYPTO_RMD160 is not set
# CONFIG_CRYPTO_RMD256 is not set
# CONFIG_CRYPTO_RMD320 is not set
CONFIG_CRYPTO_SHA1=y
# CONFIG_CRYPTO_SHA256 is not set
# CONFIG_CRYPTO_SHA512 is not set
# CONFIG_CRYPTO_TGR192 is not set
# CONFIG_CRYPTO_WP512 is not set
#
# Ciphers
#
# CONFIG_CRYPTO_AES is not set
# CONFIG_CRYPTO_ANUBIS is not set
CONFIG_CRYPTO_ARC4=m
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
CONFIG_CRYPTO_DES=y
# CONFIG_CRYPTO_FCRYPT is not set
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_SALSA20 is not set
# CONFIG_CRYPTO_SEED is not set
# CONFIG_CRYPTO_SERPENT is not set
# CONFIG_CRYPTO_TEA is not set
# CONFIG_CRYPTO_TWOFISH is not set
#
# Compression
#
# CONFIG_CRYPTO_DEFLATE is not set
# CONFIG_CRYPTO_ZLIB is not set
# CONFIG_CRYPTO_LZO is not set
#
# Random Number Generation
#
# CONFIG_CRYPTO_ANSI_CPRNG is not set
CONFIG_CRYPTO_HW=y
# CONFIG_BINARY_PRINTF is not set
#
# Library routines
#
CONFIG_BITREVERSE=y
CONFIG_GENERIC_FIND_LAST_BIT=y
CONFIG_CRC_CCITT=m
# CONFIG_CRC16 is not set
# CONFIG_CRC_T10DIF is not set
# CONFIG_CRC_ITU_T is not set
CONFIG_CRC32=y
# CONFIG_CRC7 is not set
# CONFIG_LIBCRC32C is not set
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_DECOMPRESS_GZIP=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y
CONFIG_NLATTR=y
arch/arm/mach-nomadik/Kconfig
0 → 100644
View file @
70103814
if ARCH_NOMADIK
menu "Nomadik boards"
config MACH_NOMADIK_8815NHK
bool "ST 8815 Nomadik Hardware Kit (evaluation board)"
select NOMADIK_8815
endmenu
config NOMADIK_8815
bool
config I2C_BITBANG_8815NHK
tristate "Driver for bit-bang busses found on the 8815 NHK"
depends on I2C && MACH_NOMADIK_8815NHK
select I2C_ALGOBIT
default y
endif
arch/arm/mach-nomadik/Makefile
0 → 100644
View file @
70103814
#
# Makefile for the linux kernel.
#
# Note! Dependencies are done automagically by 'make dep', which also
# removes any old dependencies. DON'T put your own dependencies here
# unless it's something special (ie not a .c file).
# Object file lists.
obj-y
+=
clock.o timer.o gpio.o
# Cpu revision
obj-$(CONFIG_NOMADIK_8815)
+=
cpu-8815.o
# Specific board support
obj-$(CONFIG_MACH_NOMADIK_8815NHK)
+=
board-nhk8815.o
# Nomadik extra devices
obj-$(CONFIG_I2C_BITBANG_8815NHK)
+=
i2c-8815nhk.o
arch/arm/mach-nomadik/Makefile.boot
0 → 100644
View file @
70103814
zreladdr-y
:=
0x00008000
params_phys-y
:=
0x00000100
initrd_phys-y
:=
0x00800000
arch/arm/mach-nomadik/board-nhk8815.c
0 → 100644
View file @
70103814
/*
* linux/arch/arm/mach-nomadik/board-8815nhk.c
*
* Copyright (C) STMicroelectronics
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2, as
* published by the Free Software Foundation.
*
* NHK15 board specifc driver definition
*/
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/amba/bus.h>
#include <linux/interrupt.h>
#include <linux/gpio.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/mach/irq.h>
#include <mach/setup.h>
#include "clock.h"
#define __MEM_4K_RESOURCE(x) \
.res = {.start = (x), .end = (x) + SZ_4K - 1, .flags = IORESOURCE_MEM}
static
struct
amba_device
uart0_device
=
{
.
dev
=
{
.
init_name
=
"uart0"
},
__MEM_4K_RESOURCE
(
NOMADIK_UART0_BASE
),
.
irq
=
{
IRQ_UART0
,
NO_IRQ
},
};
static
struct
amba_device
uart1_device
=
{
.
dev
=
{
.
init_name
=
"uart1"
},
__MEM_4K_RESOURCE
(
NOMADIK_UART1_BASE
),
.
irq
=
{
IRQ_UART1
,
NO_IRQ
},
};
static
struct
amba_device
*
amba_devs
[]
__initdata
=
{
&
uart0_device
,
&
uart1_device
,
};
/* We have a fixed clock alone, by now */
static
struct
clk
nhk8815_clk_48
=
{
.
rate
=
48
*
1000
*
1000
,
};
static
struct
resource
nhk8815_eth_resources
[]
=
{
{
.
name
=
"smc91x-regs"
,
.
start
=
0x34000000
+
0x300
,
.
end
=
0x34000000
+
SZ_64K
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
NOMADIK_GPIO_TO_IRQ
(
115
),
.
end
=
NOMADIK_GPIO_TO_IRQ
(
115
),
.
flags
=
IORESOURCE_IRQ
|
IRQF_TRIGGER_RISING
,
}
};
static
struct
platform_device
nhk8815_eth_device
=
{
.
name
=
"smc91x"
,
.
resource
=
nhk8815_eth_resources
,
.
num_resources
=
ARRAY_SIZE
(
nhk8815_eth_resources
),
};
static
int
__init
nhk8815_eth_init
(
void
)
{
int
gpio_nr
=
115
;
/* hardwired in the board */
int
err
;
err
=
gpio_request
(
gpio_nr
,
"eth_irq"
);
if
(
!
err
)
err
=
nmk_gpio_set_mode
(
gpio_nr
,
NMK_GPIO_ALT_GPIO
);
if
(
!
err
)
err
=
gpio_direction_input
(
gpio_nr
);
if
(
err
)
pr_err
(
"Error %i in %s
\n
"
,
err
,
__func__
);
return
err
;
}
device_initcall
(
nhk8815_eth_init
);
static
struct
platform_device
*
nhk8815_platform_devices
[]
__initdata
=
{
&
nhk8815_eth_device
,
/* will add more devices */
};
static
void
__init
nhk8815_platform_init
(
void
)
{
int
i
;
cpu8815_platform_init
();
platform_add_devices
(
nhk8815_platform_devices
,
ARRAY_SIZE
(
nhk8815_platform_devices
));
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
amba_devs
);
i
++
)
{
nmdk_clk_create
(
&
nhk8815_clk_48
,
amba_devs
[
i
]
->
dev
.
init_name
);
amba_device_register
(
amba_devs
[
i
],
&
iomem_resource
);
}
}
MACHINE_START
(
NOMADIK
,
"NHK8815"
)
/* Maintainer: ST MicroElectronics */
.
phys_io
=
NOMADIK_UART0_BASE
,
.
io_pg_offst
=
(
IO_ADDRESS
(
NOMADIK_UART0_BASE
)
>>
18
)
&
0xfffc
,
.
boot_params
=
0x100
,
.
map_io
=
cpu8815_map_io
,
.
init_irq
=
cpu8815_init_irq
,
.
timer
=
&
nomadik_timer
,
.
init_machine
=
nhk8815_platform_init
,
MACHINE_END
arch/arm/mach-nomadik/clock.c
0 → 100644
View file @
70103814
/*
* linux/arch/arm/mach-nomadik/clock.c
*
* Copyright (C) 2009 Alessandro Rubini
*/
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/errno.h>
#include <linux/clk.h>
#include <asm/clkdev.h>
#include "clock.h"
/*
* The nomadik board uses generic clocks, but the serial pl011 file
* calls clk_enable(), clk_disable(), clk_get_rate(), so we provide them
*/
unsigned
long
clk_get_rate
(
struct
clk
*
clk
)
{
return
clk
->
rate
;
}
EXPORT_SYMBOL
(
clk_get_rate
);
/* enable and disable do nothing */
int
clk_enable
(
struct
clk
*
clk
)
{
return
0
;
}
EXPORT_SYMBOL
(
clk_enable
);
void
clk_disable
(
struct
clk
*
clk
)
{
}
EXPORT_SYMBOL
(
clk_disable
);
/* Create a clock structure with the given name */
int
nmdk_clk_create
(
struct
clk
*
clk
,
const
char
*
dev_id
)
{
struct
clk_lookup
*
clkdev
;
clkdev
=
clkdev_alloc
(
clk
,
NULL
,
dev_id
);
if
(
!
clkdev
)
return
-
ENOMEM
;
clkdev_add
(
clkdev
);
return
0
;
}
arch/arm/mach-nomadik/clock.h
0 → 100644
View file @
70103814
/*
* linux/arch/arm/mach-nomadik/clock.h
*
* Copyright (C) 2009 Alessandro Rubini
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
struct
clk
{
unsigned
long
rate
;
};
extern
int
nmdk_clk_create
(
struct
clk
*
clk
,
const
char
*
dev_id
);
arch/arm/mach-nomadik/cpu-8815.c
0 → 100644
View file @
70103814
/*
* Copyright STMicroelectronics, 2007.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <linux/types.h>
#include <linux/init.h>
#include <linux/device.h>
#include <linux/amba/bus.h>
#include <linux/gpio.h>
#include <mach/hardware.h>
#include <mach/irqs.h>
#include <asm/mach/map.h>
#include <asm/hardware/vic.h>
#include <asm/cacheflush.h>
#include <asm/hardware/cache-l2x0.h>
/* The 8815 has 4 GPIO blocks, let's register them immediately */
static
struct
nmk_gpio_platform_data
cpu8815_gpio
[]
=
{
{
.
name
=
"GPIO-0-31"
,
.
first_gpio
=
0
,
.
first_irq
=
NOMADIK_GPIO_TO_IRQ
(
0
),
.
parent_irq
=
IRQ_GPIO0
,
},
{
.
name
=
"GPIO-32-63"
,
.
first_gpio
=
32
,
.
first_irq
=
NOMADIK_GPIO_TO_IRQ
(
32
),
.
parent_irq
=
IRQ_GPIO1
,
},
{
.
name
=
"GPIO-64-95"
,
.
first_gpio
=
64
,
.
first_irq
=
NOMADIK_GPIO_TO_IRQ
(
64
),
.
parent_irq
=
IRQ_GPIO2
,
},
{
.
name
=
"GPIO-96-127"
,
/* 124..127 not routed to pin */
.
first_gpio
=
96
,
.
first_irq
=
NOMADIK_GPIO_TO_IRQ
(
96
),
.
parent_irq
=
IRQ_GPIO3
,
}
};
#define __MEM_4K_RESOURCE(x) \
.res = {.start = (x), .end = (x) + SZ_4K - 1, .flags = IORESOURCE_MEM}
static
struct
amba_device
cpu8815_amba_gpio
[]
=
{
{
.
dev
=
{
.
init_name
=
"gpio0"
,
.
platform_data
=
cpu8815_gpio
+
0
,
},
__MEM_4K_RESOURCE
(
NOMADIK_GPIO0_BASE
),
},
{
.
dev
=
{
.
init_name
=
"gpio1"
,
.
platform_data
=
cpu8815_gpio
+
1
,
},
__MEM_4K_RESOURCE
(
NOMADIK_GPIO1_BASE
),
},
{
.
dev
=
{
.
init_name
=
"gpio2"
,
.
platform_data
=
cpu8815_gpio
+
2
,
},
__MEM_4K_RESOURCE
(
NOMADIK_GPIO2_BASE
),
},
{
.
dev
=
{
.
init_name
=
"gpio3"
,
.
platform_data
=
cpu8815_gpio
+
3
,
},
__MEM_4K_RESOURCE
(
NOMADIK_GPIO3_BASE
),
},
};
static
struct
amba_device
*
amba_devs
[]
__initdata
=
{
cpu8815_amba_gpio
+
0
,
cpu8815_amba_gpio
+
1
,
cpu8815_amba_gpio
+
2
,
cpu8815_amba_gpio
+
3
,
};
static
int
__init
cpu8815_init
(
void
)
{
int
i
;
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
amba_devs
);
i
++
)
amba_device_register
(
amba_devs
[
i
],
&
iomem_resource
);
return
0
;
}
arch_initcall
(
cpu8815_init
);
/* All SoC devices live in the same area (see hardware.h) */
static
struct
map_desc
nomadik_io_desc
[]
__initdata
=
{
{
.
virtual
=
NOMADIK_IO_VIRTUAL
,
.
pfn
=
__phys_to_pfn
(
NOMADIK_IO_PHYSICAL
),
.
length
=
NOMADIK_IO_SIZE
,
.
type
=
MT_DEVICE
,
}
/* static ram and secured ram may be added later */
};
void
__init
cpu8815_map_io
(
void
)
{
iotable_init
(
nomadik_io_desc
,
ARRAY_SIZE
(
nomadik_io_desc
));
}
void
__init
cpu8815_init_irq
(
void
)
{
/* This modified VIC cell has two register blocks, at 0 and 0x20 */
vic_init
(
io_p2v
(
NOMADIK_IC_BASE
+
0x00
),
IRQ_VIC_START
+
0
,
~
0
,
0
);
vic_init
(
io_p2v
(
NOMADIK_IC_BASE
+
0x20
),
IRQ_VIC_START
+
32
,
~
0
,
0
);
}
/*
* This function is called from the board init ("init_machine").
*/
void
__init
cpu8815_platform_init
(
void
)
{
#ifdef CONFIG_CACHE_L2X0
/* At full speed latency must be >=2, so 0x249 in low bits */
l2x0_init
(
io_p2v
(
NOMADIK_L2CC_BASE
),
0x00730249
,
0xfe000fff
);
#endif
return
;
}
arch/arm/mach-nomadik/gpio.c
0 → 100644
View file @
70103814
/*
* Generic GPIO driver for logic cells found in the Nomadik SoC
*
* Copyright (C) 2008,2009 STMicroelectronics
* Copyright (C) 2009 Alessandro Rubini <rubini@unipv.it>
* Rewritten based on work by Prafulla WADASKAR <prafulla.wadaskar@st.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/device.h>
#include <linux/amba/bus.h>
#include <linux/io.h>
#include <linux/gpio.h>
#include <linux/spinlock.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <mach/hardware.h>
#include <mach/gpio.h>
/*
* The GPIO module in the Nomadik family of Systems-on-Chip is an
* AMBA device, managing 32 pins and alternate functions. The logic block
* is currently only used in the Nomadik.
*
* Symbols in this file are called "nmk_gpio" for "nomadik gpio"
*/
#define NMK_GPIO_PER_CHIP 32
struct
nmk_gpio_chip
{
struct
gpio_chip
chip
;
void
__iomem
*
addr
;
unsigned
int
parent_irq
;
spinlock_t
*
lock
;
/* Keep track of configured edges */
u32
edge_rising
;
u32
edge_falling
;
};
/* Mode functions */
int
nmk_gpio_set_mode
(
int
gpio
,
int
gpio_mode
)
{
struct
nmk_gpio_chip
*
nmk_chip
;
unsigned
long
flags
;
u32
afunc
,
bfunc
,
bit
;
nmk_chip
=
get_irq_chip_data
(
NOMADIK_GPIO_TO_IRQ
(
gpio
));
if
(
!
nmk_chip
)
return
-
EINVAL
;
bit
=
1
<<
(
gpio
-
nmk_chip
->
chip
.
base
);
spin_lock_irqsave
(
&
nmk_chip
->
lock
,
flags
);
afunc
=
readl
(
nmk_chip
->
addr
+
NMK_GPIO_AFSLA
)
&
~
bit
;
bfunc
=
readl
(
nmk_chip
->
addr
+
NMK_GPIO_AFSLB
)
&
~
bit
;
if
(
gpio_mode
&
NMK_GPIO_ALT_A
)
afunc
|=
bit
;
if
(
gpio_mode
&
NMK_GPIO_ALT_B
)
bfunc
|=
bit
;
writel
(
afunc
,
nmk_chip
->
addr
+
NMK_GPIO_AFSLA
);
writel
(
bfunc
,
nmk_chip
->
addr
+
NMK_GPIO_AFSLB
);
spin_unlock_irqrestore
(
&
nmk_chip
->
lock
,
flags
);
return
0
;
}
EXPORT_SYMBOL
(
nmk_gpio_set_mode
);
int
nmk_gpio_get_mode
(
int
gpio
)
{
struct
nmk_gpio_chip
*
nmk_chip
;
u32
afunc
,
bfunc
,
bit
;
nmk_chip
=
get_irq_chip_data
(
NOMADIK_GPIO_TO_IRQ
(
gpio
));
if
(
!
nmk_chip
)
return
-
EINVAL
;
bit
=
1
<<
(
gpio
-
nmk_chip
->
chip
.
base
);
afunc
=
readl
(
nmk_chip
->
addr
+
NMK_GPIO_AFSLA
)
&
bit
;
bfunc
=
readl
(
nmk_chip
->
addr
+
NMK_GPIO_AFSLB
)
&
bit
;
return
(
afunc
?
NMK_GPIO_ALT_A
:
0
)
|
(
bfunc
?
NMK_GPIO_ALT_B
:
0
);
}
EXPORT_SYMBOL
(
nmk_gpio_get_mode
);
/* IRQ functions */
static
inline
int
nmk_gpio_get_bitmask
(
int
gpio
)
{
return
1
<<
(
gpio
%
32
);
}
static
void
nmk_gpio_irq_ack
(
unsigned
int
irq
)
{
int
gpio
;
struct
nmk_gpio_chip
*
nmk_chip
;
gpio
=
NOMADIK_IRQ_TO_GPIO
(
irq
);
nmk_chip
=
get_irq_chip_data
(
irq
);
if
(
!
nmk_chip
)
return
;
writel
(
nmk_gpio_get_bitmask
(
gpio
),
nmk_chip
->
addr
+
NMK_GPIO_IC
);
}
static
void
nmk_gpio_irq_mask
(
unsigned
int
irq
)
{
int
gpio
;
struct
nmk_gpio_chip
*
nmk_chip
;
unsigned
long
flags
;
u32
bitmask
,
reg
;
gpio
=
NOMADIK_IRQ_TO_GPIO
(
irq
);
nmk_chip
=
get_irq_chip_data
(
irq
);
bitmask
=
nmk_gpio_get_bitmask
(
gpio
);
if
(
!
nmk_chip
)
return
;
/* we must individually clear the two edges */
spin_lock_irqsave
(
&
nmk_chip
->
lock
,
flags
);
if
(
nmk_chip
->
edge_rising
&
bitmask
)
{
reg
=
readl
(
nmk_chip
->
addr
+
NMK_GPIO_RWIMSC
);
reg
&=
~
bitmask
;
writel
(
reg
,
nmk_chip
->
addr
+
NMK_GPIO_RWIMSC
);
}
if
(
nmk_chip
->
edge_falling
&
bitmask
)
{
reg
=
readl
(
nmk_chip
->
addr
+
NMK_GPIO_FWIMSC
);
reg
&=
~
bitmask
;
writel
(
reg
,
nmk_chip
->
addr
+
NMK_GPIO_FWIMSC
);
}
spin_unlock_irqrestore
(
&
nmk_chip
->
lock
,
flags
);
};
static
void
nmk_gpio_irq_unmask
(
unsigned
int
irq
)
{
int
gpio
;
struct
nmk_gpio_chip
*
nmk_chip
;
unsigned
long
flags
;
u32
bitmask
,
reg
;
gpio
=
NOMADIK_IRQ_TO_GPIO
(
irq
);
nmk_chip
=
get_irq_chip_data
(
irq
);
bitmask
=
nmk_gpio_get_bitmask
(
gpio
);
if
(
!
nmk_chip
)
return
;
/* we must individually set the two edges */
spin_lock_irqsave
(
&
nmk_chip
->
lock
,
flags
);
if
(
nmk_chip
->
edge_rising
&
bitmask
)
{
reg
=
readl
(
nmk_chip
->
addr
+
NMK_GPIO_RWIMSC
);
reg
|=
bitmask
;
writel
(
reg
,
nmk_chip
->
addr
+
NMK_GPIO_RWIMSC
);
}
if
(
nmk_chip
->
edge_falling
&
bitmask
)
{
reg
=
readl
(
nmk_chip
->
addr
+
NMK_GPIO_FWIMSC
);
reg
|=
bitmask
;
writel
(
reg
,
nmk_chip
->
addr
+
NMK_GPIO_FWIMSC
);
}
spin_unlock_irqrestore
(
&
nmk_chip
->
lock
,
flags
);
}
static
int
nmk_gpio_irq_set_type
(
unsigned
int
irq
,
unsigned
int
type
)
{
int
gpio
;
struct
nmk_gpio_chip
*
nmk_chip
;
unsigned
long
flags
;
u32
bitmask
;
gpio
=
NOMADIK_IRQ_TO_GPIO
(
irq
);
nmk_chip
=
get_irq_chip_data
(
irq
);
bitmask
=
nmk_gpio_get_bitmask
(
gpio
);
if
(
!
nmk_chip
)
return
-
EINVAL
;
if
(
type
&
IRQ_TYPE_LEVEL_HIGH
)
return
-
EINVAL
;
if
(
type
&
IRQ_TYPE_LEVEL_LOW
)
return
-
EINVAL
;
spin_lock_irqsave
(
&
nmk_chip
->
lock
,
flags
);
nmk_chip
->
edge_rising
&=
~
bitmask
;
if
(
type
&
IRQ_TYPE_EDGE_RISING
)
nmk_chip
->
edge_rising
|=
bitmask
;
writel
(
nmk_chip
->
edge_rising
,
nmk_chip
->
addr
+
NMK_GPIO_RIMSC
);
nmk_chip
->
edge_falling
&=
~
bitmask
;
if
(
type
&
IRQ_TYPE_EDGE_FALLING
)
nmk_chip
->
edge_falling
|=
bitmask
;
writel
(
nmk_chip
->
edge_falling
,
nmk_chip
->
addr
+
NMK_GPIO_FIMSC
);
spin_unlock_irqrestore
(
&
nmk_chip
->
lock
,
flags
);
nmk_gpio_irq_unmask
(
irq
);
return
0
;
}
static
struct
irq_chip
nmk_gpio_irq_chip
=
{
.
name
=
"Nomadik-GPIO"
,
.
ack
=
nmk_gpio_irq_ack
,
.
mask
=
nmk_gpio_irq_mask
,
.
unmask
=
nmk_gpio_irq_unmask
,
.
set_type
=
nmk_gpio_irq_set_type
,
};
static
void
nmk_gpio_irq_handler
(
unsigned
int
irq
,
struct
irq_desc
*
desc
)
{
struct
nmk_gpio_chip
*
nmk_chip
;
struct
irq_chip
*
host_chip
;
unsigned
int
gpio_irq
;
u32
pending
;
unsigned
int
first_irq
;
nmk_chip
=
get_irq_data
(
irq
);
first_irq
=
NOMADIK_GPIO_TO_IRQ
(
nmk_chip
->
chip
.
base
);
while
(
(
pending
=
readl
(
nmk_chip
->
addr
+
NMK_GPIO_IS
))
)
{
gpio_irq
=
first_irq
+
__ffs
(
pending
);
generic_handle_irq
(
gpio_irq
);
}
if
(
0
)
{
/* don't ack parent irq, as ack == disable */
host_chip
=
get_irq_chip
(
irq
);
host_chip
->
ack
(
irq
);
}
}
static
int
nmk_gpio_init_irq
(
struct
nmk_gpio_chip
*
nmk_chip
)
{
unsigned
int
first_irq
;
int
i
;
first_irq
=
NOMADIK_GPIO_TO_IRQ
(
nmk_chip
->
chip
.
base
);
for
(
i
=
first_irq
;
i
<
first_irq
+
NMK_GPIO_PER_CHIP
;
i
++
)
{
set_irq_chip
(
i
,
&
nmk_gpio_irq_chip
);
set_irq_handler
(
i
,
handle_edge_irq
);
set_irq_flags
(
i
,
IRQF_VALID
);
set_irq_chip_data
(
i
,
nmk_chip
);
}
set_irq_chained_handler
(
nmk_chip
->
parent_irq
,
nmk_gpio_irq_handler
);
set_irq_data
(
nmk_chip
->
parent_irq
,
nmk_chip
);
return
0
;
}
/* I/O Functions */
static
int
nmk_gpio_make_input
(
struct
gpio_chip
*
chip
,
unsigned
offset
)
{
struct
nmk_gpio_chip
*
nmk_chip
=
container_of
(
chip
,
struct
nmk_gpio_chip
,
chip
);
writel
(
1
<<
offset
,
nmk_chip
->
addr
+
NMK_GPIO_DIRC
);
return
0
;
}
static
int
nmk_gpio_make_output
(
struct
gpio_chip
*
chip
,
unsigned
offset
,
int
val
)
{
struct
nmk_gpio_chip
*
nmk_chip
=
container_of
(
chip
,
struct
nmk_gpio_chip
,
chip
);
writel
(
1
<<
offset
,
nmk_chip
->
addr
+
NMK_GPIO_DIRS
);
return
0
;
}
static
int
nmk_gpio_get_input
(
struct
gpio_chip
*
chip
,
unsigned
offset
)
{
struct
nmk_gpio_chip
*
nmk_chip
=
container_of
(
chip
,
struct
nmk_gpio_chip
,
chip
);
u32
bit
=
1
<<
offset
;
return
(
readl
(
nmk_chip
->
addr
+
NMK_GPIO_DAT
)
&
bit
)
!=
0
;
}
static
void
nmk_gpio_set_output
(
struct
gpio_chip
*
chip
,
unsigned
offset
,
int
val
)
{
struct
nmk_gpio_chip
*
nmk_chip
=
container_of
(
chip
,
struct
nmk_gpio_chip
,
chip
);
u32
bit
=
1
<<
offset
;
if
(
val
)
writel
(
bit
,
nmk_chip
->
addr
+
NMK_GPIO_DATS
);
else
writel
(
bit
,
nmk_chip
->
addr
+
NMK_GPIO_DATC
);
}
/* This structure is replicated for each GPIO block allocated at probe time */
static
struct
gpio_chip
nmk_gpio_template
=
{
.
direction_input
=
nmk_gpio_make_input
,
.
get
=
nmk_gpio_get_input
,
.
direction_output
=
nmk_gpio_make_output
,
.
set
=
nmk_gpio_set_output
,
.
ngpio
=
NMK_GPIO_PER_CHIP
,
.
can_sleep
=
0
,
};
static
int
__init
nmk_gpio_probe
(
struct
amba_device
*
dev
,
struct
amba_id
*
id
)
{
struct
nmk_gpio_platform_data
*
pdata
;
struct
nmk_gpio_chip
*
nmk_chip
;
struct
gpio_chip
*
chip
;
int
ret
;
pdata
=
dev
->
dev
.
platform_data
;
ret
=
amba_request_regions
(
dev
,
pdata
->
name
);
if
(
ret
)
return
ret
;
nmk_chip
=
kzalloc
(
sizeof
(
*
nmk_chip
),
GFP_KERNEL
);
if
(
!
nmk_chip
)
{
ret
=
-
ENOMEM
;
goto
out_amba
;
}
/*
* The virt address in nmk_chip->addr is in the nomadik register space,
* so we can simply convert the resource address, without remapping
*/
nmk_chip
->
addr
=
io_p2v
(
dev
->
res
.
start
);
nmk_chip
->
chip
=
nmk_gpio_template
;
nmk_chip
->
parent_irq
=
pdata
->
parent_irq
;
chip
=
&
nmk_chip
->
chip
;
chip
->
base
=
pdata
->
first_gpio
;
chip
->
label
=
pdata
->
name
;
chip
->
dev
=
&
dev
->
dev
;
chip
->
owner
=
THIS_MODULE
;
ret
=
gpiochip_add
(
&
nmk_chip
->
chip
);
if
(
ret
)
goto
out_free
;
amba_set_drvdata
(
dev
,
nmk_chip
);
nmk_gpio_init_irq
(
nmk_chip
);
dev_info
(
&
dev
->
dev
,
"Bits %i-%i at address %p
\n
"
,
nmk_chip
->
chip
.
base
,
nmk_chip
->
chip
.
base
+
31
,
nmk_chip
->
addr
);
return
0
;
out_free:
kfree
(
nmk_chip
);
out_amba:
amba_release_regions
(
dev
);
dev_err
(
&
dev
->
dev
,
"Failure %i for GPIO %i-%i
\n
"
,
ret
,
pdata
->
first_gpio
,
pdata
->
first_gpio
+
31
);
return
ret
;
}
static
int
nmk_gpio_remove
(
struct
amba_device
*
dev
)
{
struct
nmk_gpio_chip
*
nmk_chip
;
nmk_chip
=
amba_get_drvdata
(
dev
);
gpiochip_remove
(
&
nmk_chip
->
chip
);
kfree
(
nmk_chip
);
amba_release_regions
(
dev
);
return
0
;
}
/* We have 0x1f080060 and 0x1f180060, accept both using the mask */
static
struct
amba_id
nmk_gpio_ids
[]
=
{
{
.
id
=
0x1f080060
,
.
mask
=
0xffefffff
,
},
{
0
,
0
},
};
static
struct
amba_driver
nmk_gpio_driver
=
{
.
drv
=
{
.
owner
=
THIS_MODULE
,
.
name
=
"gpio"
,
},
.
probe
=
nmk_gpio_probe
,
.
remove
=
nmk_gpio_remove
,
.
suspend
=
NULL
,
/* to be done */
.
resume
=
NULL
,
.
id_table
=
nmk_gpio_ids
,
};
static
int
__init
nmk_gpio_init
(
void
)
{
return
amba_driver_register
(
&
nmk_gpio_driver
);
}
arch_initcall
(
nmk_gpio_init
);
MODULE_AUTHOR
(
"Prafulla WADASKAR and Alessandro Rubini"
);
MODULE_DESCRIPTION
(
"Nomadik GPIO Driver"
);
MODULE_LICENSE
(
"GPL"
);
arch/arm/mach-nomadik/i2c-8815nhk.c
0 → 100644
View file @
70103814
#include <linux/module.h>
#include <linux/init.h>
#include <linux/i2c.h>
#include <linux/i2c-algo-bit.h>
#include <linux/i2c-gpio.h>
#include <linux/gpio.h>
#include <linux/platform_device.h>
/*
* There are two busses in the 8815NHK.
* They could, in theory, be driven by the hardware component, but we
* use bit-bang through GPIO by now, to keep things simple
*/
static
struct
i2c_gpio_platform_data
nhk8815_i2c_data0
=
{
/* keep defaults for timeouts; pins are push-pull bidirectional */
.
scl_pin
=
62
,
.
sda_pin
=
63
,
};
static
struct
i2c_gpio_platform_data
nhk8815_i2c_data1
=
{
/* keep defaults for timeouts; pins are push-pull bidirectional */
.
scl_pin
=
53
,
.
sda_pin
=
54
,
};
/* first bus: GPIO XX and YY */
static
struct
platform_device
nhk8815_i2c_dev0
=
{
.
name
=
"i2c-gpio"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
nhk8815_i2c_data0
,
},
};
/* second bus: GPIO XX and YY */
static
struct
platform_device
nhk8815_i2c_dev1
=
{
.
name
=
"i2c-gpio"
,
.
id
=
1
,
.
dev
=
{
.
platform_data
=
&
nhk8815_i2c_data1
,
},
};
static
int
__init
nhk8815_i2c_init
(
void
)
{
nmk_gpio_set_mode
(
nhk8815_i2c_data0
.
scl_pin
,
NMK_GPIO_ALT_GPIO
);
nmk_gpio_set_mode
(
nhk8815_i2c_data0
.
sda_pin
,
NMK_GPIO_ALT_GPIO
);
platform_device_register
(
&
nhk8815_i2c_dev0
);
nmk_gpio_set_mode
(
nhk8815_i2c_data1
.
scl_pin
,
NMK_GPIO_ALT_GPIO
);
nmk_gpio_set_mode
(
nhk8815_i2c_data1
.
sda_pin
,
NMK_GPIO_ALT_GPIO
);
platform_device_register
(
&
nhk8815_i2c_dev1
);
return
0
;
}
static
void
__exit
nhk8815_i2c_exit
(
void
)
{
platform_device_unregister
(
&
nhk8815_i2c_dev0
);
platform_device_unregister
(
&
nhk8815_i2c_dev1
);
return
;
}
module_init
(
nhk8815_i2c_init
);
module_exit
(
nhk8815_i2c_exit
);
arch/arm/mach-nomadik/include/mach/clkdev.h
0 → 100644
View file @
70103814
#ifndef __ASM_MACH_CLKDEV_H
#define __ASM_MACH_CLKDEV_H
#define __clk_get(clk) ({ 1; })
#define __clk_put(clk) do { } while (0)
#endif
arch/arm/mach-nomadik/include/mach/debug-macro.S
0 → 100644
View file @
70103814
/*
*
Debugging
macro
include
header
*
*
Copyright
(
C
)
1994
-
1999
Russell
King
*
Moved
from
linux
/
arch
/
arm
/
kernel
/
debug
.
S
by
Ben
Dooks
*
*
This
program
is
free
software
; you can redistribute it and/or modify
*
it
under
the
terms
of
the
GNU
General
Public
License
version
2
as
*
published
by
the
Free
Software
Foundation
.
*
*/
.
macro
addruart
,
rx
mrc
p15
,
0
,
\
rx
,
c1
,
c0
tst
\
rx
,
#
1
@
MMU
enabled
?
moveq
\
rx
,
#
0x10000000
@
physical
base
address
movne
\
rx
,
#
0xf0000000
@
virtual
base
add
\
rx
,
\
rx
,
#
0x00100000
add
\
rx
,
\
rx
,
#
0x000fb000
.
endm
#include <asm/hardware/debug-pl01x.S>
arch/arm/mach-nomadik/include/mach/entry-macro.S
0 → 100644
View file @
70103814
/*
*
Low
-
level
IRQ
helper
macros
for
Nomadik
platforms
*
*
This
file
is
licensed
under
the
terms
of
the
GNU
General
Public
*
License
version
2
.
This
program
is
licensed
"as is"
without
any
*
warranty
of
any
kind
,
whether
express
or
implied
.
*/
#include <mach/hardware.h>
#include <mach/irqs.h>
.
macro
disable_fiq
.
endm
.
macro
get_irqnr_preamble
,
base
,
tmp
ldr
\
base
,
=
IO_ADDRESS
(
NOMADIK_IC_BASE
)
.
endm
.
macro
arch_ret_to_user
,
tmp1
,
tmp2
.
endm
.
macro
get_irqnr_and_base
,
irqnr
,
irqstat
,
base
,
tmp
/
*
This
stanza
gets
the
irq
mask
from
one
of
two
status
registers
*/
mov
\
irqnr
,
#
0
ldr
\
irqstat
,
[
\
base
,
#
VIC_REG_IRQSR0
]
@
get
masked
status
cmp
\
irqstat
,
#
0
bne
1001
f
add
\
irqnr
,
\
irqnr
,
#
32
ldr
\
irqstat
,
[
\
base
,
#
VIC_REG_IRQSR1
]
@
get
masked
status
1001
:
tst
\
irqstat
,
#
15
bne
1002
f
add
\
irqnr
,
\
irqnr
,
#
4
movs
\
irqstat
,
\
irqstat
,
lsr
#
4
bne
1001
b
1002
:
tst
\
irqstat
,
#
1
bne
1003
f
add
\
irqnr
,
\
irqnr
,
#
1
movs
\
irqstat
,
\
irqstat
,
lsr
#
1
bne
1002
b
1003
:
/
*
EQ
will
be
set
if
no
irqs
pending
*/
.
endm
arch/arm/mach-nomadik/include/mach/gpio.h
0 → 100644
View file @
70103814
/*
* Structures and registers for GPIO access in the Nomadik SoC
*
* Copyright (C) 2008 STMicroelectronics
* Author: Prafulla WADASKAR <prafulla.wadaskar@st.com>
* Copyright (C) 2009 Alessandro Rubini <rubini@unipv.it>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#ifndef __ASM_ARCH_GPIO_H
#define __ASM_ARCH_GPIO_H
#include <asm-generic/gpio.h>
/*
* These currently cause a function call to happen, they may be optimized
* if needed by adding cpu-specific defines to identify blocks
* (see mach-pxa/include/mach/gpio.h as an example using GPLR etc)
*/
#define gpio_get_value __gpio_get_value
#define gpio_set_value __gpio_set_value
#define gpio_cansleep __gpio_cansleep
#define gpio_to_irq __gpio_to_irq
/*
* "nmk_gpio" and "NMK_GPIO" stand for "Nomadik GPIO", leaving
* the "gpio" namespace for generic and cross-machine functions
*/
/* Register in the logic block */
#define NMK_GPIO_DAT 0x00
#define NMK_GPIO_DATS 0x04
#define NMK_GPIO_DATC 0x08
#define NMK_GPIO_PDIS 0x0c
#define NMK_GPIO_DIR 0x10
#define NMK_GPIO_DIRS 0x14
#define NMK_GPIO_DIRC 0x18
#define NMK_GPIO_SLPC 0x1c
#define NMK_GPIO_AFSLA 0x20
#define NMK_GPIO_AFSLB 0x24
#define NMK_GPIO_RIMSC 0x40
#define NMK_GPIO_FIMSC 0x44
#define NMK_GPIO_IS 0x48
#define NMK_GPIO_IC 0x4c
#define NMK_GPIO_RWIMSC 0x50
#define NMK_GPIO_FWIMSC 0x54
#define NMK_GPIO_WKS 0x58
/* Alternate functions: function C is set in hw by setting both A and B */
#define NMK_GPIO_ALT_GPIO 0
#define NMK_GPIO_ALT_A 1
#define NMK_GPIO_ALT_B 2
#define NMK_GPIO_ALT_C (NMK_GPIO_ALT_A | NMK_GPIO_ALT_B)
extern
int
nmk_gpio_set_mode
(
int
gpio
,
int
gpio_mode
);
extern
int
nmk_gpio_get_mode
(
int
gpio
);
/*
* Platform data to register a block: only the initial gpio/irq number.
*/
struct
nmk_gpio_platform_data
{
char
*
name
;
int
first_gpio
;
int
first_irq
;
int
parent_irq
;
};
#endif
/* __ASM_ARCH_GPIO_H */
arch/arm/mach-nomadik/include/mach/hardware.h
0 → 100644
View file @
70103814
/*
* This file contains the hardware definitions of the Nomadik.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* YOU should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __ASM_ARCH_HARDWARE_H
#define __ASM_ARCH_HARDWARE_H
/* Nomadik registers live from 0x1000.0000 to 0x1023.0000 -- currently */
#define NOMADIK_IO_VIRTUAL 0xF0000000
/* VA of IO */
#define NOMADIK_IO_PHYSICAL 0x10000000
/* PA of IO */
#define NOMADIK_IO_SIZE 0x00300000
/* 3MB for all regs */
/* used in C code, so cast to proper type */
#define io_p2v(x) ((void __iomem *)(x) \
- NOMADIK_IO_PHYSICAL + NOMADIK_IO_VIRTUAL)
#define io_v2p(x) ((unsigned long)(x) \
- NOMADIK_IO_VIRTUAL + NOMADIK_IO_PHYSICAL)
/* used in asm code, so no casts */
#define IO_ADDRESS(x) ((x) - NOMADIK_IO_PHYSICAL + NOMADIK_IO_VIRTUAL)
/*
* Base address defination for Nomadik Onchip Logic Block
*/
#define NOMADIK_FSMC_BASE 0x10100000
/* FSMC registers */
#define NOMADIK_SDRAMC_BASE 0x10110000
/* SDRAM Controller */
#define NOMADIK_CLCDC_BASE 0x10120000
/* CLCD Controller */
#define NOMADIK_MDIF_BASE 0x10120000
/* MDIF */
#define NOMADIK_DMA0_BASE 0x10130000
/* DMA0 Controller */
#define NOMADIK_IC_BASE 0x10140000
/* Vectored Irq Controller */
#define NOMADIK_DMA1_BASE 0x10150000
/* DMA1 Controller */
#define NOMADIK_USB_BASE 0x10170000
/* USB-OTG conf reg base */
#define NOMADIK_CRYP_BASE 0x10180000
/* Crypto processor */
#define NOMADIK_SHA1_BASE 0x10190000
/* SHA-1 Processor */
#define NOMADIK_XTI_BASE 0x101A0000
/* XTI */
#define NOMADIK_RNG_BASE 0x101B0000
/* Random number generator */
#define NOMADIK_SRC_BASE 0x101E0000
/* SRC base */
#define NOMADIK_WDOG_BASE 0x101E1000
/* Watchdog */
#define NOMADIK_MTU0_BASE 0x101E2000
/* Multiple Timer 0 */
#define NOMADIK_MTU1_BASE 0x101E3000
/* Multiple Timer 1 */
#define NOMADIK_GPIO0_BASE 0x101E4000
/* GPIO0 */
#define NOMADIK_GPIO1_BASE 0x101E5000
/* GPIO1 */
#define NOMADIK_GPIO2_BASE 0x101E6000
/* GPIO2 */
#define NOMADIK_GPIO3_BASE 0x101E7000
/* GPIO3 */
#define NOMADIK_RTC_BASE 0x101E8000
/* Real Time Clock base */
#define NOMADIK_PMU_BASE 0x101E9000
/* Power Management Unit */
#define NOMADIK_OWM_BASE 0x101EA000
/* One wire master */
#define NOMADIK_SCR_BASE 0x101EF000
/* Secure Control registers */
#define NOMADIK_MSP2_BASE 0x101F0000
/* MSP 2 interface */
#define NOMADIK_MSP1_BASE 0x101F1000
/* MSP 1 interface */
#define NOMADIK_UART2_BASE 0x101F2000
/* UART 2 interface */
#define NOMADIK_SSIRx_BASE 0x101F3000
/* SSI 8-ch rx interface */
#define NOMADIK_SSITx_BASE 0x101F4000
/* SSI 8-ch tx interface */
#define NOMADIK_MSHC_BASE 0x101F5000
/* Memory Stick(Pro) Host */
#define NOMADIK_SDI_BASE 0x101F6000
/* SD-card/MM-Card */
#define NOMADIK_I2C1_BASE 0x101F7000
/* I2C1 interface */
#define NOMADIK_I2C0_BASE 0x101F8000
/* I2C0 interface */
#define NOMADIK_MSP0_BASE 0x101F9000
/* MSP 0 interface */
#define NOMADIK_FIRDA_BASE 0x101FA000
/* FIrDA interface */
#define NOMADIK_UART1_BASE 0x101FB000
/* UART 1 interface */
#define NOMADIK_SSP_BASE 0x101FC000
/* SSP interface */
#define NOMADIK_UART0_BASE 0x101FD000
/* UART 0 interface */
#define NOMADIK_SGA_BASE 0x101FE000
/* SGA interface */
#define NOMADIK_L2CC_BASE 0x10210000
/* L2 Cache controller */
/* Other ranges, not for p2v/v2p */
#define NOMADIK_BACKUP_RAM 0x80010000
#define NOMADIK_EBROM 0x80000000
/* Embedded boot ROM */
#define NOMADIK_HAMACV_DMEM_BASE 0xA0100000
/* HAMACV Data Memory Start */
#define NOMADIK_HAMACV_DMEM_END 0xA01FFFFF
/* HAMACV Data Memory End */
#define NOMADIK_HAMACA_DMEM 0xA0200000
/* HAMACA Data Memory Space */
#define NOMADIK_FSMC_VA IO_ADDRESS(NOMADIK_FSMC_BASE)
#define NOMADIK_MTU0_VA IO_ADDRESS(NOMADIK_MTU0_BASE)
#define NOMADIK_MTU1_VA IO_ADDRESS(NOMADIK_MTU1_BASE)
#endif
/* __ASM_ARCH_HARDWARE_H */
arch/arm/mach-nomadik/include/mach/io.h
0 → 100644
View file @
70103814
/*
* arch/arm/mach-nomadik/include/mach/io.h (copied from mach-sa1100)
*
* Copyright (C) 1997-1999 Russell King
*
* Modifications:
* 06-12-1997 RMK Created.
* 07-04-1999 RMK Major cleanup
*/
#ifndef __ASM_ARM_ARCH_IO_H
#define __ASM_ARM_ARCH_IO_H
#define IO_SPACE_LIMIT 0xffffffff
/*
* We don't actually have real ISA nor PCI buses, but there is so many
* drivers out there that might just work if we fake them...
*/
#define __io(a) __typesafe_io(a)
#define __mem_pci(a) (a)
#endif
arch/arm/mach-nomadik/include/mach/irqs.h
0 → 100644
View file @
70103814
/*
* mach-nomadik/include/mach/irqs.h
*
* Copyright (C) ST Microelectronics
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __ASM_ARCH_IRQS_H
#define __ASM_ARCH_IRQS_H
#include <mach/hardware.h>
#define IRQ_VIC_START 0
/* first VIC interrupt is 0 */
/*
* Interrupt numbers generic for all Nomadik Chip cuts
*/
#define IRQ_WATCHDOG 0
#define IRQ_SOFTINT 1
#define IRQ_CRYPTO 2
#define IRQ_OWM 3
#define IRQ_MTU0 4
#define IRQ_MTU1 5
#define IRQ_GPIO0 6
#define IRQ_GPIO1 7
#define IRQ_GPIO2 8
#define IRQ_GPIO3 9
#define IRQ_RTC_RTT 10
#define IRQ_SSP 11
#define IRQ_UART0 12
#define IRQ_DMA1 13
#define IRQ_CLCD_MDIF 14
#define IRQ_DMA0 15
#define IRQ_PWRFAIL 16
#define IRQ_UART1 17
#define IRQ_FIRDA 18
#define IRQ_MSP0 19
#define IRQ_I2C0 20
#define IRQ_I2C1 21
#define IRQ_SDMMC 22
#define IRQ_USBOTG 23
#define IRQ_SVA_IT0 24
#define IRQ_SVA_IT1 25
#define IRQ_SAA_IT0 26
#define IRQ_SAA_IT1 27
#define IRQ_UART2 28
#define IRQ_MSP2 31
#define IRQ_L2CC 48
#define IRQ_HPI 49
#define IRQ_SKE 50
#define IRQ_KP 51
#define IRQ_MEMST 54
#define IRQ_SGA_IT 58
#define IRQ_USBM 60
#define IRQ_MSP1 62
#define NOMADIK_SOC_NR_IRQS 64
/* After chip-specific IRQ numbers we have the GPIO ones */
#define NOMADIK_NR_GPIO 128
/* last 4 not wired to pins */
#define NOMADIK_GPIO_TO_IRQ(gpio) ((gpio) + NOMADIK_SOC_NR_IRQS)
#define NOMADIK_IRQ_TO_GPIO(irq) ((irq) - NOMADIK_SOC_NR_IRQS)
#define NR_IRQS NOMADIK_GPIO_TO_IRQ(NOMADIK_NR_GPIO)
/* Following two are used by entry_macro.S, to access our dual-vic */
#define VIC_REG_IRQSR0 0
#define VIC_REG_IRQSR1 0x20
#endif
/* __ASM_ARCH_IRQS_H */
arch/arm/mach-nomadik/include/mach/memory.h
0 → 100644
View file @
70103814
/*
* mach-nomadik/include/mach/memory.h
*
* Copyright (C) 1999 ARM Limited
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __ASM_ARCH_MEMORY_H
#define __ASM_ARCH_MEMORY_H
/*
* Physical DRAM offset.
*/
#define PHYS_OFFSET UL(0x00000000)
#endif
arch/arm/mach-nomadik/include/mach/mtu.h
0 → 100644
View file @
70103814
#ifndef __ASM_ARCH_MTU_H
#define __ASM_ARCH_MTU_H
/*
* The MTU device hosts four different counters, with 4 set of
* registers. These are register names.
*/
#define MTU_IMSC 0x00
/* Interrupt mask set/clear */
#define MTU_RIS 0x04
/* Raw interrupt status */
#define MTU_MIS 0x08
/* Masked interrupt status */
#define MTU_ICR 0x0C
/* Interrupt clear register */
/* per-timer registers take 0..3 as argument */
#define MTU_LR(x) (0x10 + 0x10 * (x) + 0x00)
/* Load value */
#define MTU_VAL(x) (0x10 + 0x10 * (x) + 0x04)
/* Current value */
#define MTU_CR(x) (0x10 + 0x10 * (x) + 0x08)
/* Control reg */
#define MTU_BGLR(x) (0x10 + 0x10 * (x) + 0x0c)
/* At next overflow */
/* bits for the control register */
#define MTU_CRn_ENA 0x80
#define MTU_CRn_PERIODIC 0x40
/* if 0 = free-running */
#define MTU_CRn_PRESCALE_MASK 0x0c
#define MTU_CRn_PRESCALE_1 0x00
#define MTU_CRn_PRESCALE_16 0x04
#define MTU_CRn_PRESCALE_256 0x08
#define MTU_CRn_32BITS 0x02
#define MTU_CRn_ONESHOT 0x01
/* if 0 = wraps reloading from BGLR*/
/* Other registers are usual amba/primecell registers, currently not used */
#define MTU_ITCR 0xff0
#define MTU_ITOP 0xff4
#define MTU_PERIPH_ID0 0xfe0
#define MTU_PERIPH_ID1 0xfe4
#define MTU_PERIPH_ID2 0xfe8
#define MTU_PERIPH_ID3 0xfeC
#define MTU_PCELL0 0xff0
#define MTU_PCELL1 0xff4
#define MTU_PCELL2 0xff8
#define MTU_PCELL3 0xffC
#endif
/* __ASM_ARCH_MTU_H */
arch/arm/mach-nomadik/include/mach/setup.h
0 → 100644
View file @
70103814
/*
* These symbols are needed for board-specific files to call their
* own cpu-specific files
*/
#ifndef __ASM_ARCH_SETUP_H
#define __ASM_ARCH_SETUP_H
#include <asm/mach/time.h>
#include <linux/init.h>
#ifdef CONFIG_NOMADIK_8815
extern
void
cpu8815_map_io
(
void
);
extern
void
cpu8815_platform_init
(
void
);
extern
void
cpu8815_init_irq
(
void
);
extern
struct
sys_timer
nomadik_timer
;
#endif
/* NOMADIK_8815 */
#endif
/* __ASM_ARCH_SETUP_H */
arch/arm/mach-nomadik/include/mach/system.h
0 → 100644
View file @
70103814
/*
* mach-nomadik/include/mach/system.h
*
* Copyright (C) 2008 STMicroelectronics
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __ASM_ARCH_SYSTEM_H
#define __ASM_ARCH_SYSTEM_H
#include <linux/io.h>
#include <mach/hardware.h>
static
inline
void
arch_idle
(
void
)
{
/*
* This should do all the clock switching
* and wait for interrupt tricks
*/
cpu_do_idle
();
}
static
inline
void
arch_reset
(
char
mode
,
const
char
*
cmd
)
{
void
__iomem
*
src_rstsr
=
io_p2v
(
NOMADIK_SRC_BASE
+
0x18
);
/* FIXME: use egpio when implemented */
/* Write anything to Reset status register */
writel
(
1
,
src_rstsr
);
}
#endif
arch/arm/mach-nomadik/include/mach/timex.h
0 → 100644
View file @
70103814
#ifndef __ASM_ARCH_TIMEX_H
#define __ASM_ARCH_TIMEX_H
#define CLOCK_TICK_RATE 2400000
#endif
arch/arm/mach-nomadik/include/mach/uncompress.h
0 → 100644
View file @
70103814
/*
* Copyright (C) 2008 STMicroelectronics
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __ASM_ARCH_UNCOMPRESS_H
#define __ASM_ARCH_UNCOMPRESS_H
#include <asm/setup.h>
#include <asm/io.h>
#include <mach/hardware.h>
/* we need the constants in amba/serial.h, but it refers to amba_device */
struct
amba_device
;
#include <linux/amba/serial.h>
#define NOMADIK_UART_DR 0x101FB000
#define NOMADIK_UART_LCRH 0x101FB02c
#define NOMADIK_UART_CR 0x101FB030
#define NOMADIK_UART_FR 0x101FB018
static
void
putc
(
const
char
c
)
{
/* Do nothing if the UART is not enabled. */
if
(
!
(
readb
(
NOMADIK_UART_CR
)
&
UART01x_CR_UARTEN
))
return
;
if
(
c
==
'\n'
)
putc
(
'\r'
);
while
(
readb
(
NOMADIK_UART_FR
)
&
UART01x_FR_TXFF
)
barrier
();
writeb
(
c
,
NOMADIK_UART_DR
);
}
static
void
flush
(
void
)
{
if
(
!
(
readb
(
NOMADIK_UART_CR
)
&
UART01x_CR_UARTEN
))
return
;
while
(
readb
(
NOMADIK_UART_FR
)
&
UART01x_FR_BUSY
)
barrier
();
}
static
inline
void
arch_decomp_setup
(
void
)
{
}
#define arch_decomp_wdog()
/* nothing to do here */
#endif
/* __ASM_ARCH_UNCOMPRESS_H */
arch/arm/mach-nomadik/include/mach/vmalloc.h
0 → 100644
View file @
70103814
#define VMALLOC_END 0xe8000000
arch/arm/mach-nomadik/timer.c
0 → 100644
View file @
70103814
/*
* linux/arch/arm/mach-nomadik/timer.c
*
* Copyright (C) 2008 STMicroelectronics
* Copyright (C) 2009 Alessandro Rubini, somewhat based on at91sam926x
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2, as
* published by the Free Software Foundation.
*/
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/io.h>
#include <linux/clockchips.h>
#include <linux/jiffies.h>
#include <asm/mach/time.h>
#include <mach/mtu.h>
#define TIMER_CTRL 0x80
/* No divisor */
#define TIMER_PERIODIC 0x40
#define TIMER_SZ32BIT 0x02
/* Initial value for SRC control register: all timers use MXTAL/8 source */
#define SRC_CR_INIT_MASK 0x00007fff
#define SRC_CR_INIT_VAL 0x2aaa8000
static
u32
nmdk_count
;
/* accumulated count */
static
u32
nmdk_cycle
;
/* write-once */
static
__iomem
void
*
mtu_base
;
/*
* clocksource: the MTU device is a decrementing counters, so we negate
* the value being read.
*/
static
cycle_t
nmdk_read_timer
(
struct
clocksource
*
cs
)
{
u32
count
=
readl
(
mtu_base
+
MTU_VAL
(
0
));
return
nmdk_count
+
nmdk_cycle
-
count
;
}
static
struct
clocksource
nmdk_clksrc
=
{
.
name
=
"mtu_0"
,
.
rating
=
120
,
.
read
=
nmdk_read_timer
,
.
shift
=
20
,
.
flags
=
CLOCK_SOURCE_IS_CONTINUOUS
,
};
/*
* Clockevent device: currently only periodic mode is supported
*/
static
void
nmdk_clkevt_mode
(
enum
clock_event_mode
mode
,
struct
clock_event_device
*
dev
)
{
unsigned
long
flags
;
switch
(
mode
)
{
case
CLOCK_EVT_MODE_PERIODIC
:
/* enable interrupts -- and count current value? */
raw_local_irq_save
(
flags
);
writel
(
readl
(
mtu_base
+
MTU_IMSC
)
|
1
,
mtu_base
+
MTU_IMSC
);
raw_local_irq_restore
(
flags
);
break
;
case
CLOCK_EVT_MODE_ONESHOT
:
BUG
();
/* Not supported, yet */
/* FALLTHROUGH */
case
CLOCK_EVT_MODE_SHUTDOWN
:
case
CLOCK_EVT_MODE_UNUSED
:
/* disable irq */
raw_local_irq_save
(
flags
);
writel
(
readl
(
mtu_base
+
MTU_IMSC
)
&
~
1
,
mtu_base
+
MTU_IMSC
);
raw_local_irq_restore
(
flags
);
break
;
case
CLOCK_EVT_MODE_RESUME
:
break
;
}
}
static
struct
clock_event_device
nmdk_clkevt
=
{
.
name
=
"mtu_0"
,
.
features
=
CLOCK_EVT_FEAT_PERIODIC
,
.
shift
=
32
,
.
rating
=
100
,
.
set_mode
=
nmdk_clkevt_mode
,
};
/*
* IRQ Handler for the timer 0 of the MTU block. The irq is not shared
* as we are the only users of mtu0 by now.
*/
static
irqreturn_t
nmdk_timer_interrupt
(
int
irq
,
void
*
dev_id
)
{
/* ack: "interrupt clear register" */
writel
(
1
<<
0
,
mtu_base
+
MTU_ICR
);
/* we can't count lost ticks, unfortunately */
nmdk_count
+=
nmdk_cycle
;
nmdk_clkevt
.
event_handler
(
&
nmdk_clkevt
);
return
IRQ_HANDLED
;
}
/*
* Set up timer interrupt, and return the current time in seconds.
*/
static
struct
irqaction
nmdk_timer_irq
=
{
.
name
=
"Nomadik Timer Tick"
,
.
flags
=
IRQF_DISABLED
|
IRQF_TIMER
,
.
handler
=
nmdk_timer_interrupt
,
};
static
void
nmdk_timer_reset
(
void
)
{
u32
cr
;
writel
(
0
,
mtu_base
+
MTU_CR
(
0
));
/* off */
/* configure load and background-load, and fire it up */
writel
(
nmdk_cycle
,
mtu_base
+
MTU_LR
(
0
));
writel
(
nmdk_cycle
,
mtu_base
+
MTU_BGLR
(
0
));
cr
=
MTU_CRn_PERIODIC
|
MTU_CRn_PRESCALE_1
|
MTU_CRn_32BITS
;
writel
(
cr
,
mtu_base
+
MTU_CR
(
0
));
writel
(
cr
|
MTU_CRn_ENA
,
mtu_base
+
MTU_CR
(
0
));
}
static
void
__init
nmdk_timer_init
(
void
)
{
u32
src_cr
;
unsigned
long
rate
;
int
bits
;
rate
=
CLOCK_TICK_RATE
;
/* 2.4MHz */
nmdk_cycle
=
(
rate
+
HZ
/
2
)
/
HZ
;
/* Configure timer sources in "system reset controller" ctrl reg */
src_cr
=
readl
(
io_p2v
(
NOMADIK_SRC_BASE
));
src_cr
&=
SRC_CR_INIT_MASK
;
src_cr
|=
SRC_CR_INIT_VAL
;
writel
(
src_cr
,
io_p2v
(
NOMADIK_SRC_BASE
));
/* Save global pointer to mtu, used by functions above */
mtu_base
=
io_p2v
(
NOMADIK_MTU0_BASE
);
/* Init the timer and register clocksource */
nmdk_timer_reset
();
nmdk_clksrc
.
mult
=
clocksource_hz2mult
(
rate
,
nmdk_clksrc
.
shift
);
bits
=
8
*
sizeof
(
nmdk_count
);
nmdk_clksrc
.
mask
=
CLOCKSOURCE_MASK
(
bits
);
clocksource_register
(
&
nmdk_clksrc
);
/* Register irq and clockevents */
setup_irq
(
IRQ_MTU0
,
&
nmdk_timer_irq
);
nmdk_clkevt
.
mult
=
div_sc
(
rate
,
NSEC_PER_SEC
,
nmdk_clkevt
.
shift
);
nmdk_clkevt
.
cpumask
=
cpumask_of
(
0
);
clockevents_register_device
(
&
nmdk_clkevt
);
}
struct
sys_timer
nomadik_timer
=
{
.
init
=
nmdk_timer_init
,
};
arch/arm/mm/Kconfig
View file @
70103814
...
...
@@ -758,7 +758,7 @@ config CACHE_FEROCEON_L2_WRITETHROUGH
config CACHE_L2X0
bool "Enable the L2x0 outer cache controller"
depends on REALVIEW_EB_ARM11MP || MACH_REALVIEW_PB11MP || MACH_REALVIEW_PB1176 || \
REALVIEW_EB_A9MP || ARCH_MX35 || ARCH_MX31 || MACH_REALVIEW_PBX
REALVIEW_EB_A9MP || ARCH_MX35 || ARCH_MX31 || MACH_REALVIEW_PBX
|| ARCH_NOMADIK
default y
select OUTER_CACHE
help
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment